Back to Inindo

Tile data map

Partial map of the tile data section of the ROM.

Some of the bitmap data is compressed. There may be other data (code?) in the unknown (unk[]) blocks.

In many cases arrays of bitmaps are defined as taller bitmaps rather than as arrays within arrays as they should be.

#pragma pack(push)
#pragma pack(1)

template <int planes>
using tile = snes::tile_t<planes>;

template <int width, int height, typename T = snes::tile_t<4>>
using img = snes::image_t<width, height, T>;

struct tile_data_t
{
	// 640ca
	u16 unk1[27];

	// 64100
	array<42, img<6, 2>> text1;

	struct boss_t
	{
		// 68000
		u16 unk1[11782];
		// 6dc0c
		array<6, img<3, 2, img<2, 2>>> a;
		// 6ee0c
		array<1, img<3, 2, img<2, 2>>> ring;
		// 6f10c
		array<2, img<2, 8>> sprites0;
		// 6f50c
		array<3, img<2, 2>> sprites1;
		// 6f68c
		array<1, img<2, 16>> sprites2;
		// 6fa8c
		array<1, img<2, 2, img<2, 2>>> b;
		// 6fc8c
		array<1, img<3, 2, img<2, 2>>> nobunaga;
		// 6ff8c
		u16 unk2[58];
	} boss;
	
	// 70000
	u16 unk2[16384];

	struct magic_t
	{
		// 78000
		u08 unk1[4576];
		u08 unk2[24];
		// 791f8
		array<1, img<4, 2>> fire1;
		// 792f8
		array<1, img<16, 2>> fire2;
		// 796f8
		array<1, img<8, 1>> lines;
		// 797f8
		array<3, img<16, 2>> heal;
		// 7a3f8
		array<1, img<16, 4>> wind;
		// 7abf8
		array<1, img<16, 4>> spark;
		// 7b3f8
		array<1, img<2, 2>> star1;
		// 7b478
		array<1, img<2, 2>> scroll;
		// 7b4f8
		array<1, img<4, 2>> star2;
		// 7b5f8
		array<1, img<4, 1>> blank;
		// 7b678
		array<1, img<16, 4>> unk; // star, fire, smoke, orb, arrow
		// 7be78
		array<1, img<8, 2>> bomb;
		// 7c078
		array<1, img<3, 1>> bullet;
		// 7c0d8
		array<23, img<6, 1>> fire;
		// 7d218
		array<1, img<4, 29>> ring1;
		// 7e098
		array<3, img<2, 2>> ring2;
		// 7e218
		array<1, img<12, 12>> checkered;
		// 7f418
		array<2, img<2, 13>> lightning;
		// 7fa98
		array<1, img<4, 4>> weird;
		// 7fc98
		u08 unk3[616];
		// 7ff00
		u08 unk4[256];
	} magic;


	// 80000
	u08 unk3a[32768];
	
	// 88000
	u08 unk3b[32768];
	
	struct bingo_t
	{
		// 90000
		u08 unk1[20864];
		// 95180
		u08 unk2[18];
		// 95192
		array<25, img<3, 3>> number;
		array<6, img<3, 3>> special;
		// 97472
		array<1, img<3, 1>> bottom;
		// 974d2
		array<5, img<2, 2>> multiplier;
		// 97752
		array<1, img<3, 10>> left;
		// 97b12
		u08 unk3[96];
		// 97b72
		array<1, img<2, 3>> background;
		// 97c32
		array<1, img<2, 2>> star;
		// 97cb2
		array<16, img<1, 1>> frame;
		// 97eb2
		u08 unk4[320];
		// 97ff2
		u08 unk5[14];
	} bingo;

	struct dungeon_t
	{
		// 98000 pal 27
		array<620, img<1, 1>> world_tiles;
		// 9cd80 pal 31
		array<178, img<1, 1>> cave_tiles;
		// 9e3c0 pal 32
		array<178, img<1, 1>> fire_tiles;
		// 9fa00
		array<5, img<2, 2>> misplaced_bingo_tiles;
		// 9fc80
		u08 unk1[896];

		// a0000 pal 33
		array<178, img<1, 1>> blue_tiles;
		// a1640 pal 34
		array<178, img<1, 1>> mine1_tiles;
		// a2c80 pal 35
		array<178, img<1, 1>> mine2_tiles;
		// a42c0 pal 36
		array<178, img<1, 1>> sky_tiles;
		// a5900 pal 37
		array<178, img<1, 1>> tengu_tiles;
		// a6f40
		array<8, img<1, 1>> edge1;
		// a7040
		array<1, img<1, 1>> arrow_up_right;
		// a7060
		array<8, img<1, 1>> window_border1;
		// a7160
		array<2, img<2, 2>> arrow_up_down;
		array<2, img<1, 1>> angle;
		array<1, img<2, 2>> movement_circle;
		array<8, img<2, 2>> condition1;
		array<1, img<1, 1>> block;
		array<1, img<1, 1>> blank;
		array<8, img<1, 1>> window_border2;
		// a7860
		array<5, img<2, 2>> condition2;
		// a7ae0 background patterns
		array<10, img<1, 1>> bg_pattern;
		// a7c20
		array<1, img<3, 3>> box;
		// a7d40
		array<1, img<2, 2>> hundred;
		// a7dc0
		u08 unk2[576];

		// a8000
		array<178, img<1, 1>> maptile2;

		u16 unk3[10700];
		// ae9d8
		array<21, img<2, 2>> objects;
		// af458
		u16 unk4[1492];
	} dungeon;

	struct combat_t
	{
		struct ally_t
		{
			// b0000
			array<13, img<3, 9>> a;
			// b2be0
			array<3, img<3, 6>> b;
		} ally;

		struct monster_t
		{
			// b32a0
			array<17, img<3, 12>> a;

			// b7f20
			u08 unk1[224];

			// b8000
			array<3, img<3, 12>> b;
			// b8d80
			array<7, img<3, 8>> c;
			// ba280
			array<15, img<4, 9>> d;
			// be600
			array<8, img<4, 6>> e;
			// bfe00
			u08 unk2[512];

			// c0000
			array<5, img<4, 6>> f;
			// c0f00
			array<12, img<5, 15>> g;
			// c7f80
			u08 unk3[128];

			// c8000
			array<4, img<5, 15>> h;
			// ca580
			array<3, img<5, 10>> i;
		} monster;
	} combat;

	struct warfare_t
	{
		// cb840
		array<1, img<8, 2>> sprites1;
		// cba40
		array<1, img<16, 2>> sprites2;
		// cbe40
		array<1, img<16, 4>> dragon;
		array<1, img<16, 4>> ogre;
		array<1, img<16, 4>> tiger;
		array<1, img<16, 4>> giant;
		array<1, img<16, 4>> magic;
		// ce640
		array<1, img<3, 9>> flame1;
		// ce9a0
		u08 unk1[128];
		// cea20
		array<1, img<3, 10>> flame2;
		// cede0
		array<2, img<3, 3>> explosion;

		// cf020
		array<1, img<11, 5>> lightning;
		// cf700
		array<1, img<10, 1>> numbers;
		// cf840
		u08 unk2[1984];
	} warfare;

	struct town_t
	{
		// d0000
		array<9, img<3, 4>> location;

		// d0d80
		array<1, img<3, 4>> tea;
		array<1, img<3, 4>> inn;
		array<1, img<3, 4>> guild;
		array<1, img<3, 4>> bingo;
		array<1, img<3, 4>> castle;

		// d1500
		array<1, img<3, 4>> hero;
		array<1, img<3, 4>> iga;
		array<1, img<3, 4>> koga;
		array<1, img<3, 4>> female;

		array<1, img<3, 4>> negoro;
		array<1, img<3, 4>> fuma;
		array<1, img<3, 4>> mendicant;
		array<1, img<3, 4>> sohei;

		array<1, img<3, 4>> hermit;
		array<1, img<3, 4>> sage;
		array<1, img<3, 4>> sorcerer;
		array<1, img<3, 4>> magician;

		array<1, img<3, 4>> mystic;
		array<1, img<3, 4>> samurai;
		array<1, img<3, 4>> ronin;
		array<1, img<3, 4>> swordsman;

		// d2d00
		array<12, img<16, 2>> sprites1;
		// d5d00
		array<2, img<4, 2>> sprites2;
		// d5f00
		array<7, img<16, 2>> sprites3;
		// d7b00
		array<4, img<2, 2>> cards;
		// d7d00
		u08 unk1[768];

		// d8000
		array<182, tile<4>> building_tiles;
		// d96c0
		u08 unk2[26944];
	} town;

	struct e_t
	{
		// e0000
		u08 unk1[30926];

		// e78ce
		// ninja climbing animation (spy/sabotage)
		array<4, img<2, 2>> spy;
		// e7ace
		img<2, 4> three_bales;
		// e7bce
		img<2, 4> shelf;
		// e7cce
		u08 unk2[834];
		// e8010
		// numbers 0 - 9
		array<10, tile<2>> numbers;

		// e80b0
		u08 unk3[32592];
	} e;

	// f0000
	array<76, img<6, 2>> text2;

	// f7200
	u08 unk4[3584];

	struct bg_t
	{
		// f8000
		u08 unk1[32];
		// f8020 combat background tiles
		// palettes from senmap.pal2 at 197ea
		array<1, img<11, 1>> sky1;
		array<1, img<11, 1>> sky2;
		array<1, img<3, 1>> tree1;
		array<1, img<5, 1>> tree2;
		array<1, img<9, 1>> grass;
		snes::tile_t<4> gap1;
		array<1, img<4, 6>> cave_wall_floor;
		array<1, img<1, 1>> cave_floor;
		snes::tile_t<4> gap2;
		// f8860
		array<1, img<3, 8>> blue_wall_floor;
		snes::tile_t<4> gap3;
		// f8b80
		array<1, img<6, 6>> wood_wall_floor;
		snes::tile_t<4> gap4;
		// f9020
		array<1, img<11, 1>> cloud1;
		array<1, img<11, 1>> cloud2;
		// f92e0
		array<1, img<4, 3>> brick;
		snes::tile_t<4> gap5;
		// f9480
		array<3, img<4, 1>> top;
		array<1, img<4, 1>> mid1;
		array<1, img<3, 1>> mid2;
		array<1, img<4, 1>> mid3;
		array<3, img<4, 1>> low1;
		array<1, img<3, 1>> low2;
		// f9940
		array<1, img<4, 1>> bottom;
		// f99c0
		array<1, img<4, 1>> board1;
		array<1, img<3, 1>> board2;
		// f9aa0
		array<1, img<12, 1>> wood_floor;

		// f9c20
		u08 unk2[25568];
	} bg;
};

#pragma pack(pop)