summaryrefslogtreecommitdiff
path: root/include/map.h
diff options
context:
space:
mode:
authoroctorock <79596758+octorock@users.noreply.github.com>2022-12-11 12:07:48 +0100
committeroctorock <79596758+octorock@users.noreply.github.com>2022-12-11 12:07:48 +0100
commit1d741c182dec03c6c7a6ea337f351eedf7d6eb65 (patch)
tree7a1fc484cc98a123a562ed5bb2e03e85b6f28e95 /include/map.h
parent017eb5a65efe06ab338f7d6a3bdd1188fcca6c3e (diff)
Extract dungeon maps
Diffstat (limited to 'include/map.h')
-rw-r--r--include/map.h44
1 files changed, 37 insertions, 7 deletions
diff --git a/include/map.h b/include/map.h
index b943ca2e..201346e9 100644
--- a/include/map.h
+++ b/include/map.h
@@ -6,18 +6,48 @@
typedef struct {
/*0x0000*/ BgSettings* bgSettings;
- /*0x0004*/ u16 mapData[0x1000]; // tilemap data? <-- gMapDataTop / gMapDataBottom
- /*0x2004*/ u8 collisionData[0x1000]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4
- /*0x3004*/ u16 mapDataClone[0x1000]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4
- /*0x5004*/ u16 metatileTypes[0x800]; // gMetatileTypesTop, gMetatileTypesBottom
- /*0x6004*/ u16 unkData2[0x800]; // gUnk_02011654,gUnk_0202BEB4
- /*0x7004*/ u16 metatiles[0x2000]; // gMetatilesTop, gMetatilesBottom
- /*0xb004*/ u8 unkData3[0x1000]; // gUnk_02016654, gUnk_02030EB4
+ /*0x0004*/ u16 mapData[0x40*0x40]; /**< MetaTileIndex for each tile on the current layer. */ // tilemap data? <-- gMapDataTop / gMapDataBottom
+ /*0x2004*/ u8 collisionData[0x40*0x40]; // more tilemap data? <-- gUnk_0200D654 / gUnk_02027EB4
+ /*0x3004*/ u16 mapDataClone[0x40*0x40]; // more tilemap data? <-- gUnk_0200E654 / gUnk_02028EB4
+ // Tileset
+ /*0x5004*/ u16 metatileTypes[0x800]; /**< Maps from the MetaTileIndex to the MetaTileType. */ // gMetatileTypesTop, gMetatileTypesBottom
+ /*0x6004*/ u16 unkData2[0x800]; /**< Maps from a MetaTileType to a MetaTileIndex. */ // gUnk_02011654,gUnk_0202BEB4 // TODO metatile index for the metatile type??
+ /*0x7004*/ u16 metatiles[0x800 * 4]; /**< Mapping from a metatile to the four tile_attrs it consists of.*/ // gMetatilesTop, gMetatilesBottom
+
+
+ /*0xb004*/ u8 unkData3[0x40*0x40]; /**< Some sort of special behavior for tiles? Falling into holes or jumping off walls does not work when this is all zero.*/ // gUnk_02016654, gUnk_02030EB4
+ // TODO check with debugger what accesses this
+ // 0x637
+ // 0x2030eb4 + 0x637
+ // 0x20314eb
+ // e.g. sub_080B1AE0 accesses this
+ // TODO check whether this also affects sound played when walking?
+ /*
+ 0x10: water
+ 0x12: ice
+ 0x57: cloning pad
+ */
} LayerStruct;
extern LayerStruct gMapTop;
extern LayerStruct gMapBottom;
+// Rendered tilemaps https://www.coranac.com/tonc/text/regbg.htm#sec-map
+//extern u16 gMapDataTopSpecial[0x4000];
+//extern u16 gMapDataBottomSpecial[0x4000];
+
LayerStruct* GetLayerByIndex(u32);
+
+/*
+Definition where some map data is found and where it should be copied to.
+Defined using the map_data asm macro, e.g. in map_headers.s
+*/
+typedef struct {
+ u32 src;
+ void* dest;
+ u32 size;
+} MapDataDefinition;
+
+
#endif // MAP_H