summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTony Jih <tonyjih@gmail.com>2024-01-17 15:06:40 +0800
committerGitHub <noreply@github.com>2024-01-17 15:06:40 +0800
commit9cd0ee49672628f41c5858745700b28a3a33eb2e (patch)
treeacaa3d6f15ca8ee16434078cc6a37db40248e47f /include
parent88338832f9403cc6a7e510b56caada70bbac3bc9 (diff)
parentb429a7b66f4b2cdc932099d201b3401cbdfce46b (diff)
Merge branch 'zeldaret:master' into master
Diffstat (limited to 'include')
-rw-r--r--include/area.h24
-rw-r--r--include/asm.h79
-rw-r--r--include/backgroundAnimations.h2
-rw-r--r--include/beanstalkSubtask.h26
-rw-r--r--include/collision.h22
-rw-r--r--include/common.h16
-rw-r--r--include/enemy/wizzrobe.h2
-rw-r--r--include/entity.h4
-rw-r--r--include/fileselect.h6
-rw-r--r--include/flags.h34
-rw-r--r--include/functions.h8
-rw-r--r--include/game.h19
-rw-r--r--include/gba/gba.h6
-rw-r--r--include/gba/io_reg.h4
-rw-r--r--include/kinstone.h4
-rw-r--r--include/main.h7
-rw-r--r--include/manager.h4
-rw-r--r--include/manager/bombableWallManager.h6
-rw-r--r--include/manager/diggingCaveEntranceManager.h35
-rw-r--r--include/manager/flameManager.h4
-rw-r--r--include/manager/hyruleTownTileSetManager.h (renamed from include/manager/hyruleTownTilesetManager.h)2
-rw-r--r--include/manager/manager29.h2
-rw-r--r--include/manager/minishVillageTileSetManager.h (renamed from include/manager/minishVillageTilesetManager.h)2
-rw-r--r--include/manager/miscManager.h4
-rw-r--r--include/manager/railIntersectionManager.h4
-rw-r--r--include/manager/tileChangeObserveManager.h2
-rw-r--r--include/map.h129
-rw-r--r--include/physics.h2
-rw-r--r--include/player.h42
-rw-r--r--include/room.h22
-rw-r--r--include/roomid.h6
-rw-r--r--include/screen.h4
-rw-r--r--include/script.h2
-rw-r--r--include/structures.h45
-rw-r--r--include/subtask.h4
-rw-r--r--include/tileMap.h13
-rw-r--r--include/tiles.h1812
37 files changed, 2202 insertions, 207 deletions
diff --git a/include/area.h b/include/area.h
index a21ee5b0..0bfbf919 100644
--- a/include/area.h
+++ b/include/area.h
@@ -2,6 +2,7 @@
#define AREA_H
#include "global.h"
+#include "map.h"
#include "transitions.h"
#define MAX_ROOMS 64
@@ -21,9 +22,9 @@ typedef struct {
u16 pixel_height;
u16 map_x;
u16 map_y;
- void* tileset;
- void* map;
- void* metatiles;
+ MapDataDefinition* tileSet;
+ MapDataDefinition* map;
+ MapDataDefinition* tiles;
void* bg_anim;
const Transition* exits;
void** properties;
@@ -81,7 +82,7 @@ typedef struct {
u16 map_y;
u16 pixel_width;
u16 pixel_height;
- u16 tileset_id;
+ u16 tileSet_id;
} FORCE_WORD_ALIGNED RoomHeader;
static_assert(sizeof(RoomHeader) == 0xa);
extern RoomHeader* gAreaRoomHeaders[];
@@ -90,9 +91,20 @@ typedef struct {
u8 flags;
u8 location;
u8 flag_bank;
- u8 _3;
+ u8 queueBgm;
} AreaHeader;
-extern AreaHeader gAreaMetadata[];
+extern const AreaHeader gAreaMetadata[];
+
+typedef enum {
+ AR_IS_OVERWORLD = 0x1,
+ AR_HAS_KEYS = 0x2,
+ AR_IS_DUNGEON = 0x4, /**< Causes the area to have a red name. */
+ AR_HAS_MAP = 0x8,
+ AR_HAS_ENEMIES = 0x10,
+ AR_IS_MOLE_CAVE = 0x20,
+ AR_HAS_NO_ENEMIES = 0x40,
+ AR_ALLOWS_WARP = 0x80, /**< Not used in EU. Allows to warp in areas that do not have AR_OVERWORLD set. */
+} AreaFlags;
typedef enum {
AREA_MINISH_WOODS,
diff --git a/include/asm.h b/include/asm.h
index d42458ee..c73f1c8d 100644
--- a/include/asm.h
+++ b/include/asm.h
@@ -6,14 +6,12 @@
extern u32 Random(void);
extern u32 GetRandomByWeight(const u8*);
extern void CloneTile(u32, u32, u32);
-extern u32 GetTileTypeByEntity(struct Entity_*);
-extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
-extern u32 GetTileType(u32 position, u32 layer);
-extern void SetBottomTile(u32 index, u32 position, u32 layer);
+
+extern void SetTile(u32 tileIndex, u32 tilePos, u32 layer);
+
extern void UpdateScrollVram(void);
-extern u32 sub_080B1B0C(struct Entity_*);
extern u32 sub_080B1BA4(u32, u32, u32);
-extern void LoadResourceAsync(const void*, u32, u32);
+extern void LoadResourceAsync(const void* src, u32 dest, u32 size);
extern void GenericConfused(struct Entity_*);
extern void sub_08001290(struct Entity_*, u32);
extern void GenericKnockback(struct Entity_*);
@@ -39,23 +37,72 @@ extern void ResetCollisionLayer(struct Entity_*);
extern void sub_08004596(struct Entity_*, u32);
extern u32 sub_080045B4(struct Entity_*, u32, u32);
extern u32 CalculateDirectionTo(u32, u32, u32, u32);
-extern u32 CalcOffsetAngle(s32, s32);
+extern u32 CalculateDirectionFromOffsets(s32, s32);
extern u32 sub_080086B4(u32, u32, const u8*);
extern u32 ResolveCollisionLayer(struct Entity_*);
extern void sub_0800417E(struct Entity_*, u32);
extern u32 sub_0800442E(struct Entity_*);
-extern u32 ActTileToTile(u32, const u16*);
extern void SoundReqClipped(struct Entity_*, u32);
extern u32 sub_0800132C(struct Entity_*, struct Entity_*);
-extern u32 sub_080B1B44(u32, u32);
-extern u32 sub_080B1A48(u32, u32, u32);
-extern u32 sub_080B1B18(s32, s32, u32);
-extern u32 sub_080B1AE0(u16, u8);
-extern u32 GetActTile(struct Entity_*);
+
extern u32 sub_0800445C(struct Entity_*);
-extern u32 sub_080B1AF0(struct Entity_*, s32, s32);
-extern u32 GetActTileRelative(struct Entity_*, u32, u32);
-extern bool32 sub_080B1B54(u32);
extern u32 CheckRectOnScreen(s32, s32, u32, u32);
+extern u32 GetTileTypeRelativeToEntity(struct Entity_* entity, s32 xOffset, s32 yOffset);
+extern u32 GetTileTypeAtEntity(struct Entity_* entity);
+extern u32 GetTileTypeAtWorldCoords(s32 worldX, s32 worldY, u32 layer);
+extern u32 GetTileTypeAtRoomCoords(u32 roomX, u32 roomY, u32 layer);
+extern u32 GetTileTypeAtTilePos(u32 tilePos, u32 layer);
+
+extern u32 GetActTileRelativeToEntity(struct Entity_* entity, s32 xOffset, s32 yOffset);
+extern u32 GetActTileAtEntity(struct Entity_* entity);
+extern u32 GetActTileAtWorldCoords(u32 worldX, u32 worldY, u32 layer);
+extern u32 GetActTileAtRoomCoords(u32 roomX, u32 roomY, u32 layer);
+extern u32 GetActTileAtRoomTile(u32 roomTileX, u32 roomTileY, u32 layer);
+extern u32 GetActTileAtTilePos(u16 tilePos, u8 layer);
+
+/**
+ * Sets actTile for a tilePos.
+ */
+extern void SetActTileAtTilePos(u32 actTile, u32 tilePos, u32 layer);
+
+// Get CollisionData for entity (relative to entity?)
+extern u32 GetCollisionDataRelativeTo(struct Entity_* entity, s32 xOffset, s32 yOffset);
+
+extern u32 GetCollisionDataAtEntity(struct Entity_* entity);
+/**
+ * Returns the collision data for one tile. (x, y in pixels relative to the world)
+ */
+extern u32 GetCollisionDataAtWorldCoords(u32 worldX, u32 worldY, u32 layer);
+/**
+ * Returns the collision data for one tile. (x, y in pixels relative to the room)
+ */
+extern u32 GetCollisionDataAtRoomCoords(u32 roomX, u32 roomY, u32 layer);
+/**
+ * Returns the collision data for one tile. (x, y in tiles relative to the room)
+ */
+extern u32 GetCollisionDataAtRoomTile(u32 roomTileX, u32 roomTileY, u32 layer);
+/**
+ * Returns the collision data for one tile.
+ */
+extern u32 GetCollisionDataAtTilePos(u32 tilePos, u32 layer);
+
+/**
+ * Sets the collision data for one tile.
+ */
+extern void SetCollisionData(u32 collisionData, u32 tilePos, u32 layer);
+
+extern u32 GetActTileForTileType(u32 tileType);
+
+typedef struct {
+ u16 key;
+ u16 value;
+} KeyValuePair ALIGNED(2);
+
+/**
+ * Searches for a KeyValuePair with the key in the keyValuePairList and returns its value.
+ * Returns 0 if the key is not found.
+ */
+extern u32 FindValueForKey(u32 key, const KeyValuePair* keyValuePairList);
+
#endif // ASM_H
diff --git a/include/backgroundAnimations.h b/include/backgroundAnimations.h
index 104044ed..4c3ad5c8 100644
--- a/include/backgroundAnimations.h
+++ b/include/backgroundAnimations.h
@@ -3,7 +3,7 @@
#include "global.h"
-enum {
+typedef enum {
BG_ANIM_DEFAULT = 0,
BG_ANIM_PALETTE = 16,
BG_ANIM_MULTIPLE = 128,
diff --git a/include/beanstalkSubtask.h b/include/beanstalkSubtask.h
index 3f7d452c..f7bebbaf 100644
--- a/include/beanstalkSubtask.h
+++ b/include/beanstalkSubtask.h
@@ -2,26 +2,30 @@
#define BEANSTALKSUBTASK_H
#include "global.h"
+#include "map.h"
/*
tiles 0x4000 and above create an entry here
- */
-#define MAX_0200B240 0x100
+*/
+#define MAX_SPECIAL_TILES 0x100
typedef struct {
- u16 position; // (layer << 0xc) | position
- u16 data;
-} struct_0200B240;
-extern struct_0200B240 gUnk_0200B240[MAX_0200B240];
+ u16 tilePosAndLayer; // (layer << 12) | position
+ u16 tileIndex;
+} SpecialTileEntry;
+extern SpecialTileEntry gTilesForSpecialTiles[MAX_SPECIAL_TILES];
typedef struct {
u16 collision;
u16 tileIndex;
} struct_080B44D0;
-typedef struct {
- u32 src;
- void* dest;
- u32 size;
-} struct_08109194;
+void LoadMapData(MapDataDefinition* dataDefinition);
+
+/**
+ * Renders a tileMap with 16x16 tiles into a subTileMap with 8x8 tiles.
+ *
+ * Takes into account the special tile indicess >= 0x4000 using GetTileSetIndexForSpecialTile.
+ */
+void RenderMapLayerToSubTileMap(u16* tileMap, MapLayer* mapLayer);
#endif // BEANSTALKSUBTASK_H
diff --git a/include/collision.h b/include/collision.h
index 465d3e9f..f2d50367 100644
--- a/include/collision.h
+++ b/include/collision.h
@@ -42,13 +42,29 @@ typedef enum {
RESULT_COLLISION_WITHOUT_SET = 2,
} CollisionResult;
-bool32 IsTileCollision(const u8*, s32, s32, u32);
+/**
+ * @brief
+ *
+ * @param collisionData
+ * @param x x world coordinate
+ * @param y y world coordinate
+ * @param collisionType @see CollisionType
+ * @return bool32
+ */
+bool32 IsTileCollision(const u8* collisionData, s32 x, s32 y, u32 collisionType);
bool32 IsColliding(Entity*, Entity*);
bool32 IsCollidingPlayer(Entity*);
-void CalculateEntityTileCollisions(Entity*, u32, u32);
+/**
+ * @brief Calculates the collisions with the tiles around the entity and stores the result in Entity.collisions.
+ *
+ * @param this
+ * @param direction
+ * @param collisionType @see CollisionType
+ */
+void CalculateEntityTileCollisions(Entity* this, u32 direction, u32 collisionType);
bool32 ProcessMovementInternal(Entity*, s32, s32, u32);
u32 sub_080176E4(Entity*);
-extern const u8 gUnk_080B37A0[]; // unkData3 for tileType?
+extern const u8 gMapTileTypeToActTile[]; // actTile for tileType?
#endif // COLLISION_H
diff --git a/include/common.h b/include/common.h
index c9200c98..5f620c23 100644
--- a/include/common.h
+++ b/include/common.h
@@ -127,12 +127,20 @@ u32 sub_0801DB94(void);
u32 GetRandomSharedFusion(u8*);
typedef struct {
- u8 unk_0;
- u8 unk_1;
+ u8 numFloors;
+ u8 highestFloor;
u8 unk_2;
// u8 pad;
-} struct_080C9C6C;
+} DungeonFloorMetadata;
-extern const struct_080C9C6C gUnk_080C9C6C[];
+extern const DungeonFloorMetadata gDungeonFloorMetadatas[];
+
+typedef struct {
+ u8 area;
+ u8 room;
+ u8 unk_2; // TODO u16 pad?
+ u8 unk_3;
+ u32 mapDataOffset;
+} DungeonLayout;
#endif // COMMON_H
diff --git a/include/enemy/wizzrobe.h b/include/enemy/wizzrobe.h
index 0c8e0f0a..0677b161 100644
--- a/include/enemy/wizzrobe.h
+++ b/include/enemy/wizzrobe.h
@@ -17,7 +17,7 @@ typedef struct {
/*0x81*/ u8 timer1;
/*0x82*/ u8 timer2;
/*0x83*/ u8 unk_83;
- /*0x84*/ u16 tilePosition;
+ /*0x84*/ u16 tilePos;
/*0x86*/ u16 tileIndex;
} WizzrobeEntity;
diff --git a/include/entity.h b/include/entity.h
index 455761c0..d1d08517 100644
--- a/include/entity.h
+++ b/include/entity.h
@@ -222,7 +222,7 @@ typedef struct Entity_ {
/*0x24*/ s16 speed; /**< Magnitude of speed. */
/*0x26*/ u8 spriteAnimation[3];
/*0x29*/ SpritePriority spritePriority;
- /*0x2a*/ u16 collisions; /**< Collision flags for each direction. */
+ /*0x2a*/ u16 collisions; /**< Collision flags for each direction. @see Collisions*/
/*0x2c*/ union SplitWord x; /**< X position, fixed point Q16.16. */
/*0x30*/ union SplitWord y; /**< Y position, fixed point Q16.16. */
/*0x34*/ union SplitWord z; /**< Z position, fixed point Q16.16. */
@@ -558,6 +558,8 @@ extern u8 gManagerCount;
/** @name Tile Macros */ /// @{
#define TILE(x, y) (((((x)-gRoomControls.origin_x) >> 4) & 0x3F) | ((((y)-gRoomControls.origin_y) >> 4) & 0x3F) << 6)
+// Calculate tilePos from x and y coordinates where x and y are already relative to the current room.
+#define TILE_LOCAL(x, y) ((((x) >> 4) & 0x3F) | (((y) >> 4) & 0x3F) << 6)
#define TILE_POS(x, y) (x + (y << 6))
#define TILE_POS_X_COMPONENT 0x3f
#define TILE_POS_Y_COMPONENT 0xfc0
diff --git a/include/fileselect.h b/include/fileselect.h
index 9c17bad7..704fb1b1 100644
--- a/include/fileselect.h
+++ b/include/fileselect.h
@@ -49,11 +49,11 @@ typedef struct {
/*0x0b*/ SaveFile saves[3];
} struct_02019EE0;
extern struct_02019EE0 gMapDataBottomSpecial;
-// TODO size: 0x8000 from ClearTilemaps?
+// TODO size: 0x8000 from ClearTileMaps?
extern void sub_08056FEC(u32, struct_020227E8*);
extern u32 ShowTextBox(u32 textIndexOrPtr, const Font* font);
-extern void ClearTilemaps(void);
+extern void ClearTileMaps(void);
extern void ResetSaveFile(u32);
extern WStruct* sub_0805F2C8(void);
extern u32 sub_0805F7DC(u32, WStruct*);
@@ -66,8 +66,6 @@ extern void CreateDialogBox(u32, u32);
extern const Font gUnk_080FC844;
extern const u16 gUnk_080FC85C[][3];
extern void (*const gUnk_080FC908[])(void);
-extern const u8 gGlobalGfxAndPalettes[];
-extern u32 gUsedPalettes;
extern u8 gTextGfxBuffer[];
#endif // FILESELECT_H \ No newline at end of file
diff --git a/include/flags.h b/include/flags.h
index fd176a55..acafabee 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -5,27 +5,27 @@
// clang-format off
-bool32 CheckFlags(u32);
-bool32 CheckGlobalFlag(u32);
-bool32 CheckGlobalFlags(u32, u32);
+bool32 CheckFlags(u32 flags);
+bool32 CheckGlobalFlag(u32 flag);
+bool32 CheckGlobalFlags(u32 flag, u32 count);
extern bool32 CheckLocalFlag(u32 flag);
extern bool32 CheckLocalFlagByBank(u32 bank, u32 flag);
-bool32 CheckLocalFlags(u32, u32);
-bool32 CheckLocalFlagsByBank(u32, u32, u32);
-bool32 CheckRoomFlag(u32);
-bool32 CheckRoomFlags(u32, u32);
+bool32 CheckLocalFlags(u32 flag, u32 count);
+bool32 CheckLocalFlagsByBank(u32 offset, u32 flag, u32 count);
+bool32 CheckRoomFlag(u32 flag);
+bool32 CheckRoomFlags(u32 flag, u32 count);
-void ClearFlag(u32);
-void ClearGlobalFlag(u32);
-void ClearLocalFlag(u32);
-void ClearLocalFlagByBank(u32, u32);
-void ClearRoomFlag(u32);
+void ClearFlag(u32 flag);
+void ClearGlobalFlag(u32 flag);
+void ClearLocalFlag(u32 flag);
+void ClearLocalFlagByBank(u32 offset, u32 flag);
+void ClearRoomFlag(u32 flag);
-void SetFlag(u32);
-void SetGlobalFlag(u32);
-void SetLocalFlag(u32);
-void SetLocalFlagByBank(u32, u32);
-void SetRoomFlag(u32);
+void SetFlag(u32 flag);
+void SetGlobalFlag(u32 flag);
+void SetLocalFlag(u32 flag);
+void SetLocalFlagByBank(u32 offset, u32 flag);
+void SetRoomFlag(u32 flag);
extern u32 ReadBit(void*, u32);
extern u32 CheckBits(void*, u32, u32);
diff --git a/include/functions.h b/include/functions.h
index 5d4b01fe..d0eace75 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -23,9 +23,7 @@ extern void CreateMinishEntrance(u32 tile);
extern u32 CreateRandomItemDrop(Entity*, u32);
extern void DrawDirect(u32 spriteIndex, u32 frameIndex);
extern void DrawEntities(void);
-extern bool32 EntityWithinDistance(Entity*, s32, s32, s32);
extern void FlushSprites(void);
-extern LayerStruct* GetTileBuffer(u32);
extern u32 GetTileIndex(u32 tilePos, u32 layer);
extern u32 GiveItem(u32, u32);
extern bool32 LoadFixedGFX(Entity*, u32);
@@ -49,12 +47,6 @@ extern void ClearBgAnimations(void);
extern void SetBGDefaults(void);
// Unidentified
-extern void sub_08000148(u32, u32, u32);
-extern u32 sub_080B1A0C(Entity*, s32, s32);
-extern u32 sub_080B1AE0(u16, u8);
-extern u32 sub_080B1AF0(Entity*, s32, s32);
-extern u32 sub_080B1B18(s32, s32, u32);
-extern u32 sub_080B1B44(u32, u32);
extern s32 sub_080012DC(Entity*);
extern void sub_08001318(Entity*);
extern void LinearMoveDirectionOLD(Entity*, u32, u32);
diff --git a/include/game.h b/include/game.h
index 62584fe1..9e1bc655 100644
--- a/include/game.h
+++ b/include/game.h
@@ -212,7 +212,7 @@ void RoomExitCallback(void);
*
* @param a1
*/
-void RestoreGameTask(u32 a1);
+void RestoreGameTask(bool32 loadGfx);
/**
* Check if an Ezlo message can be displayed.
@@ -290,14 +290,15 @@ typedef enum {
} EGameMainState;
typedef struct {
- u8 _0;
- u8 _1;
- u8 _2;
- u8 _3;
- u8 _4;
- u16 _6;
-} struct_08127F94;
-extern struct_08127F94 gUnk_08127F94[];
+ u8 minX;
+ u8 minY;
+ u8 maxX;
+ u8 maxY;
+ u8 windcrestId; /**< Id to set in gSave.windcrests when the user entered a room in the boundaries specified above.*/
+ // u8 pad;
+ u16 textIndex; /**< The text to show for this area.*/
+} OverworldLocation;
+extern const OverworldLocation gOverworldLocations[];
typedef struct {
const Font* font;
diff --git a/include/gba/gba.h b/include/gba/gba.h
index 259bb9c8..dc3c3f87 100644
--- a/include/gba/gba.h
+++ b/include/gba/gba.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_GBA_GBA_H
-#define GUARD_GBA_GBA_H
+#ifndef GBA_H
+#define GBA_H
#include <string.h>
#include "defines.h"
@@ -10,4 +10,4 @@
#include "macro.h"
#include "isagbprint.h"
-#endif // GUARD_GBA_GBA_H
+#endif // GBA_H
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index a66467f0..acd985e9 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -529,11 +529,11 @@
// BGCNT
#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
-#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
+#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for sub tile pixel data.
#define BGCNT_MOSAIC 0x0040
#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
-#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
+#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for sub tile map.
#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
#define BGCNT_TXT512x256 0x4000
diff --git a/include/kinstone.h b/include/kinstone.h
index 18910ee3..c50ba857 100644
--- a/include/kinstone.h
+++ b/include/kinstone.h
@@ -227,8 +227,8 @@ typedef struct {
u16 offsetY; /**< Scroll offset Y from the room origin. */
u16 x; /**< X position of the actual event. */
u16 y; /**< Y position of the actual event. */
- u16 _c; // see sub_080A6A80, related to _0 and _2 of gUnk_08127F94
- u16 _e; // see sub_080A6A80, related to _1 and _3 of gUnk_08127F94
+ u16 _c; // see GetOverworldLocation, related to _0 and _2 of gOverworldLocations
+ u16 _e; // see GetOverworldLocation, related to _1 and _3 of gOverworldLocations
u8 condition; // TODO some sort of flag determining what type the bank&flag are? see UpdateVisibleFusionMapMarkers
u8 bank; /**< @see LocalBanks */
u16 flag;
diff --git a/include/main.h b/include/main.h
index 4d70beb7..f2a229ea 100644
--- a/include/main.h
+++ b/include/main.h
@@ -64,13 +64,14 @@ typedef struct {
u8 pauseFrames; /**< Number of frames to pause. */
u8 pauseCount; /**< Number of pauses to make. */
u8 pauseInterval; /**< Number of frames to play between each pause. */
- u8 pad;
- u16 ticks; /**< Current time. */
+ u8 pad; // TODO actually used in CopyOAM()
+ u16 ticks; /**< Current time. */
} Main;
/**
* HUD structure.
*/
+// TODO Rather a structure more generally about gfx?
typedef struct {
/*0x000*/ u8 nextToLoad;
/*0x001*/ u8 _1;
@@ -78,7 +79,7 @@ typedef struct {
/*0x003*/ u8 field_0x3;
/*0x004*/ u8 state;
/*0x005*/ u8 field_0x5;
- /*0x006*/ u8 field_0x6;
+ /*0x006*/ bool8 loadGfxOnRestore; // used in Subtask_FadeOut to determine the loadGfx parameter of RestoreGameTask.
/*0x007*/ u8 pauseFadeIn;
/*0x008*/ u16 fadeType;
/*0x00A*/ u16 fadeInTime;
diff --git a/include/manager.h b/include/manager.h
index f95029b0..c96a1785 100644
--- a/include/manager.h
+++ b/include/manager.h
@@ -96,7 +96,7 @@ extern void MinishPortalManager_Main();
extern void DiggingCaveEntranceManager_Main();
extern void BridgeManager_Main();
extern void SpecialWarpManager_Main();
-extern void MinishVillageTilesetManager_Main();
+extern void MinishVillageTileSetManager_Main();
extern void HorizontalMinishPathBackgroundManager_Main();
extern void MinishRaftersBackgroundManager_Main();
extern void EzloHintManager_Main();
@@ -107,7 +107,7 @@ extern void EntitySpawnManager_Main();
extern void MiscManager_Main();
extern void WeatherChangeManager_Main();
extern void FlagAndOperatorManager_Main();
-extern void HyruleTownTilesetManager_Main();
+extern void HyruleTownTileSetManager_Main();
extern void HouseSignManager_Main();
extern void SteamOverlayManager_Main();
extern void TempleOfDropletsManager_Main();
diff --git a/include/manager/bombableWallManager.h b/include/manager/bombableWallManager.h
index 8d41bde4..c024f532 100644
--- a/include/manager/bombableWallManager.h
+++ b/include/manager/bombableWallManager.h
@@ -6,13 +6,13 @@
typedef struct {
Manager base;
u8 field_0x20[0x15];
- u8 field_0x35;
+ u8 layer;
u8 field_0x36;
u8 field_0x37;
s16 x;
u16 y;
- u16 tile;
- u16 field_0x3e;
+ u16 tilePos;
+ u16 flag;
} BombableWallManager;
#endif // BOMBABLEWALLMANAGER_H
diff --git a/include/manager/diggingCaveEntranceManager.h b/include/manager/diggingCaveEntranceManager.h
index 6f9c8914..3c8c7090 100644
--- a/include/manager/diggingCaveEntranceManager.h
+++ b/include/manager/diggingCaveEntranceManager.h
@@ -7,13 +7,36 @@ typedef struct {
Manager base;
} DiggingCaveEntranceManager;
+enum DiggingCaveEntranceType {
+ CAVE_LAKE_WOODS_ENTER,
+ CAVE_LAKE_WOODS_LEAVE,
+ CAVE_HYRULE_TOWN_ENTER,
+ CAVE_HYRULE_TOWN_LEAVE,
+ CAVE_EASTERN_HILL_ENTER,
+ CAVE_EASTERN_HILL_LEAVE,
+ CAVE_CRENEL_ENTER,
+ CAVE_CRENEL_LEAVE,
+ CAVE_VEIL_FALLS_ENTER,
+ CAVE_VEIL_FALLS_LEAVE,
+ CAVE_TRILBY_HIGHLANDS_ENTER,
+ CAVE_TRILBY_HIGHLANDS_LEAVE,
+ CAVE_CASTOR_WILDS_ENTER,
+ CAVE_CASTOR_WILDS_LEAVE,
+ CAVE_LAKE_HYLIA_NORTH_ENTER,
+ CAVE_LAKE_HYLIA_NORTH_LEAVE,
+ CAVE_LON_LON_RANCH_ENTER,
+ CAVE_LON_LON_RANCH_LEAVE,
+ CAVE_LAKE_HYLIA_CENTER_ENTER,
+ CAVE_LAKE_HYLIA_CENTER_LEAVE,
+};
+
typedef struct {
- u16 sourceTilePosition; /**< Tile position for the entrance in the source room. */
- u8 sourceRoom;
- u8 type; // TODO some sort of type that is used to index gUnk_08109194
- u8 targetArea;
- u8 targetRoom;
- u16 targetTilePosition; /**< Tile position for the entrance in the target room. */
+ u16 sourceTilePos; /**< Tile position for the entrance in the source room. */
+ u8 sourceRoom; /**< @see RoomID */
+ u8 type; /**< @see DiggingCaveEntranceType */
+ u8 targetArea; /**< @see AreaID */
+ u8 targetRoom; /**< @see RoomID */
+ u16 targetTilePos; /**< Tile position for the entrance in the target room. */
} DiggingCaveEntrance;
typedef struct {
diff --git a/include/manager/flameManager.h b/include/manager/flameManager.h
index 2c5ebe7c..d5749cbb 100644
--- a/include/manager/flameManager.h
+++ b/include/manager/flameManager.h
@@ -6,8 +6,8 @@
typedef struct {
struct Manager base;
u8 field_0x20[0x18];
- s16 field_0x38;
- s16 field_0x3a;
+ s16 x; // After loading this stores the tilePos.
+ s16 y;
} FlameManager;
#endif // FLAMEMANAGER_H
diff --git a/include/manager/hyruleTownTilesetManager.h b/include/manager/hyruleTownTileSetManager.h
index 8e269355..ee908238 100644
--- a/include/manager/hyruleTownTilesetManager.h
+++ b/include/manager/hyruleTownTileSetManager.h
@@ -8,6 +8,6 @@ typedef struct {
u8 field_0x20;
u8 field_0x21;
u8 field_0x22;
-} HyruleTownTilesetManager;
+} HyruleTownTileSetManager;
#endif // HYRULETOWNTILESETMANAGER_H
diff --git a/include/manager/manager29.h b/include/manager/manager29.h
index a26f291c..c7d99b69 100644
--- a/include/manager/manager29.h
+++ b/include/manager/manager29.h
@@ -9,7 +9,7 @@ typedef struct {
u16* unk_28;
u16* unk_2c;
u8 filler[0x4];
- u8 unk_34;
+ u8 layer;
u8 unk_35;
u8 unk_36;
u8 unk_37;
diff --git a/include/manager/minishVillageTilesetManager.h b/include/manager/minishVillageTileSetManager.h
index 50c01f54..748be3c5 100644
--- a/include/manager/minishVillageTilesetManager.h
+++ b/include/manager/minishVillageTileSetManager.h
@@ -7,6 +7,6 @@ typedef struct {
Manager base;
u8 unk_20;
u8 unk_21[0x1F];
-} MinishVillageTilesetManager;
+} MinishVillageTileSetManager;
#endif // MINISHVILLAGETILESETMANAGER_H
diff --git a/include/manager/miscManager.h b/include/manager/miscManager.h
index bde8388b..44047584 100644
--- a/include/manager/miscManager.h
+++ b/include/manager/miscManager.h
@@ -6,8 +6,8 @@
typedef struct {
Manager base;
u8 unk_20[0x18];
- s16 unk_38;
- s16 unk_3a;
+ s16 x;
+ s16 y;
u16 unk_3c;
u16 flags;
} MiscManager;
diff --git a/include/manager/railIntersectionManager.h b/include/manager/railIntersectionManager.h
index 9de3c0ad..9717c363 100644
--- a/include/manager/railIntersectionManager.h
+++ b/include/manager/railIntersectionManager.h
@@ -6,9 +6,9 @@
typedef struct {
Manager base;
u8 field_0x20[0x16];
- u8 field_0x36;
+ u8 layer;
u8 field_0x37;
- s16 field_0x38;
+ s16 tilePos;
u16 field_0x3a;
u8 field_0x3c;
u8 field_0x3d;
diff --git a/include/manager/tileChangeObserveManager.h b/include/manager/tileChangeObserveManager.h
index fda2c35a..c56864ff 100644
--- a/include/manager/tileChangeObserveManager.h
+++ b/include/manager/tileChangeObserveManager.h
@@ -25,7 +25,7 @@ typedef struct {
u8 field_0x35;
u8 field_0x36;
u8 field_0x37;
- u16 tilePosition;
+ u16 tilePos;
u16 field_0x3a;
u8 field_0x3c;
u8 field_0x3d;
diff --git a/include/map.h b/include/map.h
index 9859fa39..42008f6b 100644
--- a/include/map.h
+++ b/include/map.h
@@ -1,23 +1,124 @@
#ifndef MAP_H
#define MAP_H
-#include "global.h"
#include "screen.h"
+/**
+ * @page TileMap Tile Map
+ * @brief The map consists of tiles to create the world.
+ *
+ * GBA graphics are made out of tiles with a size of 8px by 8px. We call those tiles *subTiles*.
+ * Four of those subTiles are combined together to form a bigger 16px by 16px tile (usually called metaTile). We call
+ * these *tiles*.
+ *
+ * Each map can be up to 64 * 64 tiles big. The map consists of two layers of tiles gMapTop and gMapBottom.
+ * To access the map array the tilePos index can be used which goes from 0 to 64 * 64 = 4096.
+ * Each value in the MapLayer.mapData is a tileIndex which defined which tile of the tileSet should be used.
+ * The tileSet contains tiles from 0 to 2048. Special tileIndex from 0x4000 to 0x4096 can be used to denote special
+ * tiles.
+ *
+ * A tile is created from four subTiles. The subTiles for each tile in the tileSet are stored in MapLayer.subTiles. This
+ * is loaded for the current area from gAreaTileSets_*. The subTiles can also be flipped or the palette changed. This is
+ * stored in bits 0xa to 0xf, see https://www.coranac.com/tonc/text/regbg.htm#sec-map.
+ *
+ * Each tile in the tileSet also has a tileType defined. This is stored in MapLayer.tileTypes and loaded from
+ * gAreaTileSetTypes_*. The inverse dictionary from tileType to tileIndex is stored in MapLayer.tileIndices.
+ *
+ * The map also stores the collision for each tile in the tileMap layer in MapLayer.collisionData. By default this is
+ * filled from gMapTileTypeToCollisionData based on the tileType of the tiles. But it can also be loaded from
+ * gRoomCollisionMap_*. In MapLayer.actTiles some additional type for each tile is stored which is filled from
+ * gMapTileTypeToActTile based on the tileType of the tiles.
+ */
+
+// Maximum width or height of a map in tiles.
+#define MAX_MAP_SIZE 64
+// Maximum amount of tiles in a tileSet.
+#define TILESET_SIZE 2048
+
+/**
+ * @brief Layer of the TileMap.
+ * @ingroup TileMap
+ */
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 mapDataOriginal[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
-} LayerStruct;
-
-extern LayerStruct gMapTop;
-extern LayerStruct gMapBottom;
-
-LayerStruct* GetTileBuffer(u32);
+ /**
+ * tileIndex for each tile on the current layer.
+ */
+ /*0x0004*/ u16 mapData[MAX_MAP_SIZE * MAX_MAP_SIZE];
+ /**
+ * Collision data for each tile on the current layer.
+ * @see CollisionData
+ */
+ /*0x2004*/ u8 collisionData[MAX_MAP_SIZE * MAX_MAP_SIZE];
+ /**
+ * Copy of the map data.
+ * @see mapData
+ */
+ /*0x3004*/ u16 mapDataOriginal[MAX_MAP_SIZE * MAX_MAP_SIZE];
+ /**
+ * Maps from the tileIndex to the tileType.
+ * @see TileType
+ */
+ /*0x5004*/ u16 tileTypes[TILESET_SIZE];
+ /**
+ * Maps from a tileType to a tileIndex. Inverse of @see tileTypes.
+ * @see TileType
+ */
+ /*0x6004*/ u16 tileIndices[TILESET_SIZE];
+ /**
+ * Maps from a tile index to the four sub tiles (with attributes) it consists of.
+ * @see https://www.coranac.com/tonc/text/regbg.htm#sec-map
+ */
+ /*0x7004*/ u16 subTiles[TILESET_SIZE * 4];
+ /**
+ * Some sort of special behavior for tiles? Falling into holes or jumping off walls does not work when this is all
+ * zero.
+ * @see ActTile
+ */
+ /*0xb004*/ u8 actTiles[MAX_MAP_SIZE * MAX_MAP_SIZE];
+} MapLayer;
+
+extern MapLayer gMapTop;
+extern MapLayer gMapBottom;
+
+typedef enum {
+ LAYER_BOTTOM = 1,
+ LAYER_TOP = 2,
+} LayerIndex;
+
+/**
+ * Returns the MapLayer for a layer of the map.
+ *
+ * @param layer @see LayerIndex
+ */
+extern MapLayer* GetLayerByIndex(u32 layer);
+
+// There is another map data definition following.
+#define MAP_MULTIPLE 0x80000000
+// The src is compressed.
+#define MAP_COMPRESSED 0x80000000
+
+/**
+ * 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 {
+ /**
+ * @brief Source offset from gMapData.
+ *
+ * MAP_MULTIPLE bit is set if there is another MapDataDefinition following.
+ */
+ u32 src;
+ /**
+ * Target pointer where to load or decompress the map data to.
+ */
+ void* dest;
+ /**
+ * @brief Size of the map data in bytes.
+ *
+ * MAP_COMPRESSED bit is set if the map data is compressed.
+ */
+ u32 size;
+} MapDataDefinition;
#endif // MAP_H
diff --git a/include/physics.h b/include/physics.h
index 36b6e594..dc6460cc 100644
--- a/include/physics.h
+++ b/include/physics.h
@@ -21,7 +21,7 @@ void SortEntityBelow(Entity* above_ent, Entity* below_ent);
void LinearMoveDirection(Entity* ent, u32 a, u32 b);
void LinearMoveAngle(Entity* ent, u32 a, u32 b);
-bool32 EntityWithinDistance(Entity*, s32, s32, s32);
+bool32 EntityWithinDistance(Entity* entity, s32 x, s32 y, s32 distance);
u32 sub_0806FCA0(Entity*, Entity*);
u32 sub_0806F58C(Entity*, Entity*);
u32 PointInsideRadius(s32 x, s32 y, s32 radius);
diff --git a/include/player.h b/include/player.h
index dbd1f923..05f550d3 100644
--- a/include/player.h
+++ b/include/player.h
@@ -183,8 +183,8 @@ enum PlayerItemId {
typedef enum {
SURFACE_NORMAL,
SURFACE_PIT,
- SURFACE_2,
- SURFACE_3,
+ SURFACE_2, // nulled
+ SURFACE_3, // nulled
SURFACE_SLOPE_GNDGND_V,
SURFACE_SLOPE_GNDGND_H,
SURFACE_6,
@@ -194,10 +194,10 @@ typedef enum {
SURFACE_A,
SURFACE_B,
SURFACE_SLOPE_GNDWATER,
- SURFACE_D,
- SURFACE_E,
- SURFACE_F,
- SURFACE_10,
+ SURFACE_D, // SurfaceAction_ConveyerNorth
+ SURFACE_E, // SurfaceAction_ConveyerSouth
+ SURFACE_F, // SurfaceAction_ConveyerWest
+ SURFACE_10, // SurfaceAction_ConveyerEast
SURFACE_SWAMP,
SURFACE_DOOR,
SURFACE_DOOR_13,
@@ -214,18 +214,19 @@ typedef enum {
SURFACE_LADDER,
SURFACE_1F, // nulled
SURFACE_20,
- SURFACE_21,
+ SURFACE_21, // reuses SurfaceAction_16
SURFACE_22,
- SURFACE_EDGE,
- SURFACE_24,
+ SURFACE_EDGE, // reuses SurfaceAction_6
+ SURFACE_24, // reuses SurfaceAction_6
SURFACE_DUST,
SURFACE_26,
SURFACE_HOLE,
- SURFACE_LIGHT_GRADE,
- SURFACE_29,
+ SURFACE_LIGHT_GRADE, // reuses SurfaceAction_SlopeGndGndVertical
+ SURFACE_29, // reuses SurfaceAction_SlopeGndGndHorizontal
SURFACE_AUTO_LADDER,
SURFACE_CLIMB_WALL,
SURFACE_2C,
+ SURFACE_2D, // reuses SurfaceAction_Dust
SURFACE_FF = 0xff,
} SurfaceType;
@@ -256,8 +257,8 @@ typedef struct {
typedef struct {
u16 flags;
- u16 keys;
-} PlayerMacroEntry;
+ u16 keys; /**< GBA keys bitmask, see io_reg.h */
+} PlayerMacroEntry ALIGNED(2);
typedef enum {
INPUT_USE_ITEM1 = 0x1, // A
@@ -502,8 +503,8 @@ typedef struct {
/*0x0f*/ u8 hurtBlinkSpeed;
/*0x10*/ u8 field_0x10;
/*0x11*/ u8 surfacePositionSameTimer;
- /*0x12*/ u8 floor_type;
- /*0x13*/ u8 floor_type_last;
+ /*0x12*/ u8 floor_type; /**< @see SurfaceType */
+ /*0x13*/ u8 floor_type_last; /**< @see SurfaceType */
/*0x14*/ u8 field_0x14;
/*0x15*/ u8 field_0x15;
/*0x16*/ u16 startPosX;
@@ -515,7 +516,7 @@ typedef struct {
/*0x1e*/ u8 dash_state;
/*0x1f*/ u8 field_0x1f[2];
/*0x21*/ u8 bow_state;
- /*0x22*/ u16 tilePosition;
+ /*0x22*/ u16 tilePos;
/*0x24*/ u16 tileType;
/*0x26*/ u8 swim_state; /**< Is the player swimming? 0x80 for diving */
/*0x27*/ u8 field_0x27[5];
@@ -695,7 +696,7 @@ u32 sub_08079B24(void);
void sub_08079708(Entity*);
void sub_08079744(Entity*);
void PlayerUpdateSwimming(Entity*);
-u32 GetCollisionTileInFront(Entity*);
+u32 GetActTileInFront(Entity* player);
u32 sub_080797C4(void);
void CheckPlayerVelocity(void);
void sub_0807B068(Entity*);
@@ -717,14 +718,13 @@ void sub_08078D60(void);
void PlayerSetNormalAndCollide(void);
bool32 PlayerTryDropObject(ItemBehavior* arg0, u32 unk);
void InitItemGetSequence(u32, u32, u32);
-void sub_0807B7D8(u32, u32, u32);
+void sub_0807B7D8(u32 tileType, u32 tilePos, u32 layer);
void SetInteractableObjectCollision(Entity*, u32, u32, const void*);
void sub_08079D84(void);
u32 sub_0807953C(void);
void sub_0807BB68(const s16*, u32, u32);
-void sub_0807B9B8(u32, u32, u32);
-void sub_0807B7D8(u32, u32, u32);
-void RestorePrevTileEntity(u32, u32);
+void SetTileByIndex(u32 tileIndex, u32 tilePos, u32 layer);
+void RestorePrevTileEntity(u32 tilePos, u32 layer);
void UpdateItemAnim(ItemBehavior*);
void PlayerCancelHoldItem(ItemBehavior*, u32);
void RegisterCarryEntity(Entity*);
diff --git a/include/room.h b/include/room.h
index f9201826..09d2b2fb 100644
--- a/include/room.h
+++ b/include/room.h
@@ -1,9 +1,9 @@
#ifndef ROOM_H
#define ROOM_H
-#include "global.h"
#include "entity.h"
#include "droptables.h"
+#include "map.h"
enum RoomTransition {
TRANSITION_DEFAULT,
@@ -24,7 +24,7 @@ enum RoomReloadType {
};
typedef struct {
- /*0x00*/ u16 reload_flags;
+ /*0x00*/ u16 reload_flags; // anything except for 0x1 prevents the screen from reloading when tiles are changed.
/*0x02*/ u8 scrollAction;
/*0x03*/ u8 scrollSubAction;
/*0x04*/ u8 area;
@@ -34,7 +34,8 @@ typedef struct {
/*0x0A*/ s16 scroll_x;
/*0x0C*/ s16 scroll_y;
/*0x0E*/ u8 scrollSpeed; /**< Pixels per frame that the camera can scroll. */
- /*0x0F*/ u8 scroll_flags; // 0x2 = ??, 0x4 = camera scrolling
+ /*0x0F*/ u8 scroll_flags; // 0x2 = ?? (apply collision value on bottom map no matter the layer SetTileType is
+ // called for), 0x4 = camera scrolling
/*0x10*/ u8 scroll_direction;
/*0x11*/ s8 oam_offset_x;
/*0x12*/ s8 oam_offset_y;
@@ -45,8 +46,8 @@ typedef struct {
/*0x18*/ u16 unk_18; // progress during transition in same area?
/*0x1A*/ u16 unk_1a; // calculated from unk_18
/*0x1C*/ u16 unk_1c; // 0, 0xff
- /*0x1E*/ u16 width;
- /*0x20*/ u16 height;
+ /*0x1E*/ u16 width; /**< Width in pixels. */
+ /*0x20*/ u16 height; /**< Height in pixels. */
/*0x22*/ u16 unk_22; // so far always 0xffff
/*0x24*/ s8 aff_x;
/*0x25*/ s8 aff_y;
@@ -55,7 +56,7 @@ typedef struct {
/*0x28*/ union SplitWord bg3OffsetX;
/*0x2C*/ union SplitWord bg3OffsetY;
/*0x30*/ Entity* camera_target;
- /*0x34*/ u32 unk_34;
+ /*0x34*/ u32 tileSet; // TODO Should be MapDataDefinition*, but then LoadRoomTileSet does not match.
} RoomControls;
extern RoomControls gRoomControls;
@@ -72,7 +73,7 @@ typedef struct {
/* 0x09 */ u8 fight_bgm;
/* 0x0a */ u8 needHealthDrop;
/* 0x0c */ s16 lightLevel;
- /* 0x0e */ u16 tileEntityCount;
+ /* 0x0e */ u16 tileEntityCount; // Number of previous values for special tiles stored in gTilesForSpecialTiles
/* 0x10 */ u8 graphicsGroups[4];
/* 0x14 */ u8 flags[52];
/* 0x48 */ Droptable currentAreaDroptable;
@@ -88,7 +89,8 @@ typedef struct {
u8 area;
u8 room;
u16 unk_02;
- u32 enemyBits;
+ u32 enemyBits; /**< Flags that can be set on the tracked rooms. Used e.g. by the door mimic. (TODO probably to start
+ in the discovered state?)*/
} RoomMemory;
extern RoomMemory* gCurrentRoomMemory;
@@ -149,7 +151,7 @@ typedef struct {
/* 0x06 */ u16 field_0x6;
/* 0x08 */ bool8 transitioningOut;
/* 0x09 */ u8 type; // transition when changing areas
- /* 0x0a */ u16 stairs_idx; // seems to be a tile type
+ /* 0x0a */ u16 stairs_idx; // seems to be a tile type @see TileType, set in UpdateDoorTransition()
/* 0x0c */ PlayerRoomStatus player_status;
/* 0x2c */ u8 entity_update_type; // differentiates entity priority on kinstone menu?
/* 0x2d */ u8 field2d;
@@ -232,7 +234,7 @@ typedef enum {
extern void** gCurrentRoomProperties;
-void SetTileType(u32 tileType, u32 position, u32 layer);
+void SetTileType(u32 tileType, u32 tilePos, u32 layer);
void InitScreenShake(u32 time, u32 magnitude);
void CallRoomProp5And7(void);
diff --git a/include/roomid.h b/include/roomid.h
index 14bc46c9..84a64c39 100644
--- a/include/roomid.h
+++ b/include/roomid.h
@@ -14,9 +14,9 @@ typedef enum {
// AREA_HYRULE_FIELD
ROOM_HYRULE_FIELD_WESTERN_WOODS_SOUTH = 0,
ROOM_HYRULE_FIELD_SOUTH_HYRULE_FIELD,
- ROOM_HYRULE_FIELD_EASTERN_HILLLS_SOUTH,
- ROOM_HYRULE_FIELD_EASTERN_HILLLS_CENTER,
- ROOM_HYRULE_FIELD_EASTERN_HILLLS_NORTH,
+ ROOM_HYRULE_FIELD_EASTERN_HILLS_SOUTH,
+ ROOM_HYRULE_FIELD_EASTERN_HILLS_CENTER,
+ ROOM_HYRULE_FIELD_EASTERN_HILLS_NORTH,
ROOM_HYRULE_FIELD_LON_LON_RANCH,
ROOM_HYRULE_FIELD_NORTH_HYRULE_FIELD,
ROOM_HYRULE_FIELD_TRILBY_HIGHLANDS,
diff --git a/include/screen.h b/include/screen.h
index f6eedfd4..a1391401 100644
--- a/include/screen.h
+++ b/include/screen.h
@@ -16,7 +16,7 @@ typedef struct {
u16 xOffset;
u16 yOffset;
u16 updated;
- void* tilemap;
+ void* subTileMap;
} BgSettings;
typedef struct {
@@ -24,7 +24,7 @@ typedef struct {
s16 xOffset;
s16 yOffset;
u16 updated;
- void* tilemap;
+ void* subTileMap;
} BgAffSettings;
typedef struct {
diff --git a/include/script.h b/include/script.h
index 4fbb2eef..6a0688d6 100644
--- a/include/script.h
+++ b/include/script.h
@@ -54,7 +54,7 @@ void StartPlayerScript(Script* script);
void InitScriptForNPC(Entity* entity);
void sub_0807DD64(Entity* entity);
void sub_0807DD80(Entity* entity, Script* script);
-void sub_0807DEDC(Entity*, ScriptExecutionContext*, u32, u32);
+void LookAt(Entity*, ScriptExecutionContext*, u32, u32);
ScriptExecutionContext* StartCutscene(Entity* entity, Script* script);
void ExecuteScriptForEntity(Entity* entity, void (*postScriptCallback)(Entity*, ScriptExecutionContext*));
diff --git a/include/structures.h b/include/structures.h
index f4dc51cd..97233eea 100644
--- a/include/structures.h
+++ b/include/structures.h
@@ -90,9 +90,23 @@ typedef struct {
u32* firstTile;
} UIElement;
+typedef enum {
+ HUD_HIDE_NONE,
+ HUD_HIDE_1 = 0x1, // A
+ HUD_HIDE_2 = 0x2, // B
+ HUD_HIDE_4 = 0x4, // R
+ HUD_HIDE_8 = 0x8,
+ HUD_HIDE_HEARTS = 0x10,
+ HUD_HIDE_CHARGE_BAR = 0x20,
+ HUD_HIDE_RUPEES = 0x40,
+ HUD_HIDE_KEYS = 0x80,
+
+ HUD_HIDE_ALL = 0xff
+} HUDHideFlags;
+
typedef struct {
u8 unk_0;
- u8 unk_1;
+ u8 hideFlags;
u8 unk_2;
u8 health;
u8 maxHealth;
@@ -124,8 +138,8 @@ typedef struct {
u8 buttonText[3];
u8 unk_33;
UIElement elements[MAX_UI_ELEMENTS];
-} struct_0200AF00;
-extern struct_0200AF00 gUnk_0200AF00;
+} HUD;
+extern HUD gHUD;
#define MAX_GFX_SLOTS 44
@@ -338,8 +352,8 @@ typedef struct {
extern struct_02018EB0 gUnk_02018EB0;
typedef struct {
- s16 tile;
- s16 position;
+ s16 tileIndex;
+ s16 tilePosOffset;
} TileData;
typedef struct {
@@ -360,4 +374,25 @@ typedef struct {
u8 frame;
u8 frameIndex;
} PACKED FrameStruct;
+
+typedef struct {
+ /*0x0*/ u8 menuType;
+ /*0x1*/ u16 font;
+ /*0x3*/ u8 unk_3; // TODO padding?
+ /*0x4*/ u16 transitionTimer;
+ /*0x6*/ u16 gfxEntry;
+ /*0x8*/ u16 bg2XOffset;
+ /*0xa*/ u16 sm_unk_14;
+} PACKED StaffrollEntry;
+
+static_assert(sizeof(StaffrollEntry) == 0xc);
+
+typedef struct {
+ u8 paletteGroup;
+ u8 gfxGroup;
+} PACKED StaffrollGfxEntry;
+
+extern const u8 gGlobalGfxAndPalettes[];
+extern u32 gUsedPalettes;
+
#endif // STRUCTURES_H
diff --git a/include/subtask.h b/include/subtask.h
index 73bf9bb9..e1d98a16 100644
--- a/include/subtask.h
+++ b/include/subtask.h
@@ -89,11 +89,11 @@ void sub_080A4DB8(u32);
void sub_080A6290(void);
void sub_080A66D0();
void sub_080A67C4(u32);
-void sub_080A6FB4(u32, u32);
+void ShowAreaName(u32 id, u32 type);
void sub_080A698C(u32 param_1, u32 param_2, u32 param_3, u32 param_4);
u32 sub_080A6F40();
s32 sub_080A69E0();
-struct_08127F94* sub_080A6A80(u32 param_1, u32 param_2);
+const OverworldLocation* GetOverworldLocation(u32 x, u32 y);
void sub_080A6498(void);
void sub_080A71F4(const ScreenTransitionData* exitTransition);
void sub_080A6F6C(u32 textIndexOrPtr);
diff --git a/include/tileMap.h b/include/tileMap.h
new file mode 100644
index 00000000..fb1fbc2e
--- /dev/null
+++ b/include/tileMap.h
@@ -0,0 +1,13 @@
+#ifndef TILEMAP_H
+#define TILEMAP_H
+
+#include "global.h"
+
+// gMapDataTopSpecial and gMapDataBottomSpecial are tileMaps of 8x8 pixels. But they are also reused for other data in
+// other parts of the game.
+
+// Rendered tileMaps https://www.coranac.com/tonc/text/regbg.htm#sec-map
+extern u16 gMapDataTopSpecial[0x4000];
+extern u16 gMapDataBottomSpecial[0x4000];
+
+#endif // TILEMAP_H
diff --git a/include/tiles.h b/include/tiles.h
index 2dd6783a..1c37ebff 100644
--- a/include/tiles.h
+++ b/include/tiles.h
@@ -2,43 +2,1783 @@
#define TILES_H
typedef enum {
- TILE_ACT_CUT = 0x0,
- TILE_ACT_ROCKBREAKER = 0x1,
- TILE_ACT_BOOMERANG = 0x2,
- TILE_ACT_BOMB = 0x3,
- TILE_ACT_ARROW = 0x4,
- TILE_ACT_GUST = 0x5,
- TILE_ACT_LIFT = 0x6,
- TILE_ACT_FIRE = 0x7,
- TILE_ACT_PLAYER_WALK = 0x8,
- TILE_ACT_ENEMY_WALK = 0x9,
- TILE_ACT_PACCI = 0xA,
- TILE_ACT_SWORDBEAM = 0xC,
- TILE_ACT_DIG = 0xD,
- TILE_ACT_MINIGUST = 0xE,
-} TileInteraction;
+ TILE_TYPE_0 = 0x0,
+ TILE_TYPE_1 = 0x1,
+ TILE_TYPE_2 = 0x2,
+ TILE_TYPE_3 = 0x3,
+ TILE_TYPE_4 = 0x4,
+ TILE_TYPE_5 = 0x5,
+ TILE_TYPE_6 = 0x6,
+ TILE_TYPE_7 = 0x7,
+ TILE_TYPE_8 = 0x8,
+ TILE_TYPE_9 = 0x9,
+ TILE_TYPE_10 = 0xa,
+ TILE_TYPE_11 = 0xb,
+ TILE_TYPE_12 = 0xc,
+ TILE_TYPE_13 = 0xd,
+ TILE_TYPE_14 = 0xe,
+ TILE_TYPE_15 = 0xf,
+ TILE_TYPE_16 = 0x10,
+ TILE_TYPE_17 = 0x11,
+ TILE_TYPE_18 = 0x12,
+ TILE_TYPE_19 = 0x13,
+ TILE_TYPE_20 = 0x14,
+ TILE_TYPE_21 = 0x15,
+ TILE_TYPE_22 = 0x16,
+ TILE_TYPE_23 = 0x17,
+ TILE_TYPE_24 = 0x18,
+ TILE_TYPE_25 = 0x19,
+ TILE_TYPE_26 = 0x1a,
+ TILE_TYPE_27 = 0x1b,
+ TILE_TYPE_28 = 0x1c, // CUT_BUSH
+ TILE_TYPE_29 = 0x1d, // CUT_GRASS
+ TILE_TYPE_30 = 0x1e, // CUT_SIGNPOST
+ TILE_TYPE_31 = 0x1f, // CUT_TREE
+ TILE_TYPE_32 = 0x20,
+ TILE_TYPE_33 = 0x21,
+ TILE_TYPE_34 = 0x22,
+ TILE_TYPE_35 = 0x23,
+ TILE_TYPE_36 = 0x24,
+ TILE_TYPE_37 = 0x25,
+ TILE_TYPE_38 = 0x26,
+ TILE_TYPE_39 = 0x27,
+ TILE_TYPE_40 = 0x28,
+ TILE_TYPE_41 = 0x29,
+ TILE_TYPE_42 = 0x2a,
+ TILE_TYPE_43 = 0x2b,
+ TILE_TYPE_44 = 0x2c,
+ TILE_TYPE_45 = 0x2d,
+ TILE_TYPE_46 = 0x2e,
+ TILE_TYPE_47 = 0x2f,
+ TILE_TYPE_48 = 0x30,
+ TILE_TYPE_49 = 0x31,
+ TILE_TYPE_50 = 0x32,
+ TILE_TYPE_51 = 0x33,
+ TILE_TYPE_52 = 0x34,
+ TILE_TYPE_53 = 0x35,
+ TILE_TYPE_54 = 0x36,
+ TILE_TYPE_55 = 0x37,
+ TILE_TYPE_56 = 0x38,
+ TILE_TYPE_57 = 0x39,
+ TILE_TYPE_58 = 0x3a,
+ TILE_TYPE_59 = 0x3b,
+ TILE_TYPE_60 = 0x3c,
+ TILE_TYPE_61 = 0x3d,
+ TILE_TYPE_62 = 0x3e,
+ TILE_TYPE_63 = 0x3f,
+ TILE_TYPE_64 = 0x40,
+ TILE_TYPE_65 = 0x41,
+ TILE_TYPE_66 = 0x42,
+ TILE_TYPE_67 = 0x43,
+ TILE_TYPE_68 = 0x44,
+ TILE_TYPE_69 = 0x45,
+ TILE_TYPE_70 = 0x46,
+ TILE_TYPE_71 = 0x47,
+ TILE_TYPE_72 = 0x48,
+ TILE_TYPE_73 = 0x49,
+ TILE_TYPE_74 = 0x4a,
+ TILE_TYPE_75 = 0x4b,
+ TILE_TYPE_76 = 0x4c,
+ TILE_TYPE_77 = 0x4d,
+ TILE_TYPE_78 = 0x4e,
+ TILE_TYPE_79 = 0x4f,
+ TILE_TYPE_80 = 0x50,
+ TILE_TYPE_81 = 0x51,
+ TILE_TYPE_82 = 0x52,
+ TILE_TYPE_83 = 0x53,
+ TILE_TYPE_84 = 0x54,
+ TILE_TYPE_85 = 0x55, // ROCK
+ TILE_TYPE_86 = 0x56,
+ TILE_TYPE_87 = 0x57,
+ TILE_TYPE_88 = 0x58,
+ TILE_TYPE_89 = 0x59,
+ TILE_TYPE_90 = 0x5a,
+ TILE_TYPE_91 = 0x5b,
+ TILE_TYPE_92 = 0x5c,
+ TILE_TYPE_93 = 0x5d,
+ TILE_TYPE_94 = 0x5e,
+ TILE_TYPE_95 = 0x5f,
+ TILE_TYPE_96 = 0x60,
+ TILE_TYPE_97 = 0x61,
+ TILE_TYPE_98 = 0x62,
+ TILE_TYPE_99 = 0x63,
+ TILE_TYPE_100 = 0x64,
+ TILE_TYPE_101 = 0x65,
+ TILE_TYPE_102 = 0x66,
+ TILE_TYPE_103 = 0x67,
+ TILE_TYPE_104 = 0x68,
+ TILE_TYPE_105 = 0x69,
+ TILE_TYPE_106 = 0x6a,
+ TILE_TYPE_107 = 0x6b,
+ TILE_TYPE_108 = 0x6c,
+ TILE_TYPE_109 = 0x6d,
+ TILE_TYPE_110 = 0x6e,
+ TILE_TYPE_111 = 0x6f,
+ TILE_TYPE_112 = 0x70,
+ TILE_TYPE_113 = 0x71,
+ TILE_TYPE_114 = 0x72,
+ TILE_TYPE_115 = 0x73, // CHEST
+ TILE_TYPE_116 = 0x74, // CHEST_OPEN
+ TILE_TYPE_117 = 0x75,
+ TILE_TYPE_118 = 0x76, // TORCH
+ TILE_TYPE_119 = 0x77, // TORCH_LIT
+ TILE_TYPE_120 = 0x78, // PRESSURE_BUTTON
+ TILE_TYPE_121 = 0x79, // PRESSURE_BUTTON_PRESSED
+ TILE_TYPE_122 = 0x7a, // PRESSURE_SQUARE
+ TILE_TYPE_123 = 0x7b, // PRESSURE_SQUARE_PRESSED
+ TILE_TYPE_124 = 0x7c,
+ TILE_TYPE_125 = 0x7d,
+ TILE_TYPE_126 = 0x7e,
+ TILE_TYPE_127 = 0x7f,
+ TILE_TYPE_128 = 0x80,
+ TILE_TYPE_129 = 0x81,
+ TILE_TYPE_130 = 0x82,
+ TILE_TYPE_131 = 0x83,
+ TILE_TYPE_132 = 0x84,
+ TILE_TYPE_133 = 0x85,
+ TILE_TYPE_134 = 0x86,
+ TILE_TYPE_135 = 0x87,
+ TILE_TYPE_136 = 0x88,
+ TILE_TYPE_137 = 0x89,
+ TILE_TYPE_138 = 0x8a,
+ TILE_TYPE_139 = 0x8b,
+ TILE_TYPE_140 = 0x8c,
+ TILE_TYPE_141 = 0x8d,
+ TILE_TYPE_142 = 0x8e,
+ TILE_TYPE_143 = 0x8f,
+ TILE_TYPE_144 = 0x90,
+ TILE_TYPE_145 = 0x91,
+ TILE_TYPE_146 = 0x92, // STAIRS_UP
+ TILE_TYPE_147 = 0x93, // STAIRS_DOWN
+ TILE_TYPE_148 = 0x94,
+ TILE_TYPE_149 = 0x95,
+ TILE_TYPE_150 = 0x96,
+ TILE_TYPE_151 = 0x97,
+ TILE_TYPE_152 = 0x98,
+ TILE_TYPE_153 = 0x99,
+ TILE_TYPE_154 = 0x9a,
+ TILE_TYPE_155 = 0x9b,
+ TILE_TYPE_156 = 0x9c,
+ TILE_TYPE_157 = 0x9d,
+ TILE_TYPE_158 = 0x9e,
+ TILE_TYPE_159 = 0x9f,
+ TILE_TYPE_160 = 0xa0,
+ TILE_TYPE_161 = 0xa1,
+ TILE_TYPE_162 = 0xa2,
+ TILE_TYPE_163 = 0xa3,
+ TILE_TYPE_164 = 0xa4,
+ TILE_TYPE_165 = 0xa5,
+ TILE_TYPE_166 = 0xa6,
+ TILE_TYPE_167 = 0xa7,
+ TILE_TYPE_168 = 0xa8,
+ TILE_TYPE_169 = 0xa9,
+ TILE_TYPE_170 = 0xaa,
+ TILE_TYPE_171 = 0xab,
+ TILE_TYPE_172 = 0xac,
+ TILE_TYPE_173 = 0xad,
+ TILE_TYPE_174 = 0xae,
+ TILE_TYPE_175 = 0xaf,
+ TILE_TYPE_176 = 0xb0,
+ TILE_TYPE_177 = 0xb1,
+ TILE_TYPE_178 = 0xb2,
+ TILE_TYPE_179 = 0xb3,
+ TILE_TYPE_180 = 0xb4,
+ TILE_TYPE_181 = 0xb5,
+ TILE_TYPE_182 = 0xb6,
+ TILE_TYPE_183 = 0xb7,
+ TILE_TYPE_184 = 0xb8,
+ TILE_TYPE_185 = 0xb9,
+ TILE_TYPE_186 = 0xba,
+ TILE_TYPE_187 = 0xbb,
+ TILE_TYPE_188 = 0xbc,
+ TILE_TYPE_189 = 0xbd,
+ TILE_TYPE_190 = 0xbe,
+ TILE_TYPE_191 = 0xbf,
+ TILE_TYPE_192 = 0xc0,
+ TILE_TYPE_193 = 0xc1,
+ TILE_TYPE_194 = 0xc2,
+ TILE_TYPE_195 = 0xc3,
+ TILE_TYPE_196 = 0xc4,
+ TILE_TYPE_197 = 0xc5,
+ TILE_TYPE_198 = 0xc6,
+ TILE_TYPE_199 = 0xc7,
+ TILE_TYPE_200 = 0xc8,
+ TILE_TYPE_201 = 0xc9,
+ TILE_TYPE_202 = 0xca,
+ TILE_TYPE_203 = 0xcb,
+ TILE_TYPE_204 = 0xcc,
+ TILE_TYPE_205 = 0xcd,
+ TILE_TYPE_206 = 0xce,
+ TILE_TYPE_207 = 0xcf,
+ TILE_TYPE_208 = 0xd0,
+ TILE_TYPE_209 = 0xd1,
+ TILE_TYPE_210 = 0xd2,
+ TILE_TYPE_211 = 0xd3,
+ TILE_TYPE_212 = 0xd4,
+ TILE_TYPE_213 = 0xd5,
+ TILE_TYPE_214 = 0xd6,
+ TILE_TYPE_215 = 0xd7,
+ TILE_TYPE_216 = 0xd8,
+ TILE_TYPE_217 = 0xd9,
+ TILE_TYPE_218 = 0xda,
+ TILE_TYPE_219 = 0xdb,
+ TILE_TYPE_220 = 0xdc,
+ TILE_TYPE_221 = 0xdd,
+ TILE_TYPE_222 = 0xde,
+ TILE_TYPE_223 = 0xdf,
+ TILE_TYPE_224 = 0xe0,
+ TILE_TYPE_225 = 0xe1,
+ TILE_TYPE_226 = 0xe2,
+ TILE_TYPE_227 = 0xe3,
+ TILE_TYPE_228 = 0xe4,
+ TILE_TYPE_229 = 0xe5,
+ TILE_TYPE_230 = 0xe6,
+ TILE_TYPE_231 = 0xe7,
+ TILE_TYPE_232 = 0xe8,
+ TILE_TYPE_233 = 0xe9,
+ TILE_TYPE_234 = 0xea,
+ TILE_TYPE_235 = 0xeb,
+ TILE_TYPE_236 = 0xec,
+ TILE_TYPE_237 = 0xed,
+ TILE_TYPE_238 = 0xee,
+ TILE_TYPE_239 = 0xef,
+ TILE_TYPE_240 = 0xf0,
+ TILE_TYPE_241 = 0xf1,
+ TILE_TYPE_242 = 0xf2,
+ TILE_TYPE_243 = 0xf3,
+ TILE_TYPE_244 = 0xf4,
+ TILE_TYPE_245 = 0xf5,
+ TILE_TYPE_246 = 0xf6,
+ TILE_TYPE_247 = 0xf7,
+ TILE_TYPE_248 = 0xf8,
+ TILE_TYPE_249 = 0xf9,
+ TILE_TYPE_250 = 0xfa,
+ TILE_TYPE_251 = 0xfb,
+ TILE_TYPE_252 = 0xfc,
+ TILE_TYPE_253 = 0xfd,
+ TILE_TYPE_254 = 0xfe,
+ TILE_TYPE_255 = 0xff,
+ TILE_TYPE_256 = 0x100,
+ TILE_TYPE_257 = 0x101,
+ TILE_TYPE_258 = 0x102,
+ TILE_TYPE_259 = 0x103,
+ TILE_TYPE_260 = 0x104,
+ TILE_TYPE_261 = 0x105,
+ TILE_TYPE_262 = 0x106,
+ TILE_TYPE_263 = 0x107,
+ TILE_TYPE_264 = 0x108,
+ TILE_TYPE_265 = 0x109,
+ TILE_TYPE_266 = 0x10a,
+ TILE_TYPE_267 = 0x10b,
+ TILE_TYPE_268 = 0x10c,
+ TILE_TYPE_269 = 0x10d,
+ TILE_TYPE_270 = 0x10e,
+ TILE_TYPE_271 = 0x10f,
+ TILE_TYPE_272 = 0x110,
+ TILE_TYPE_273 = 0x111,
+ TILE_TYPE_274 = 0x112,
+ TILE_TYPE_275 = 0x113,
+ TILE_TYPE_276 = 0x114,
+ TILE_TYPE_277 = 0x115,
+ TILE_TYPE_278 = 0x116,
+ TILE_TYPE_279 = 0x117,
+ TILE_TYPE_280 = 0x118,
+ TILE_TYPE_281 = 0x119,
+ TILE_TYPE_282 = 0x11a,
+ TILE_TYPE_283 = 0x11b,
+ TILE_TYPE_284 = 0x11c,
+ TILE_TYPE_285 = 0x11d,
+ TILE_TYPE_286 = 0x11e,
+ TILE_TYPE_287 = 0x11f,
+ TILE_TYPE_288 = 0x120,
+ TILE_TYPE_289 = 0x121,
+ TILE_TYPE_290 = 0x122,
+ TILE_TYPE_291 = 0x123,
+ TILE_TYPE_292 = 0x124,
+ TILE_TYPE_293 = 0x125,
+ TILE_TYPE_294 = 0x126,
+ TILE_TYPE_295 = 0x127,
+ TILE_TYPE_296 = 0x128,
+ TILE_TYPE_297 = 0x129,
+ TILE_TYPE_298 = 0x12a,
+ TILE_TYPE_299 = 0x12b,
+ TILE_TYPE_300 = 0x12c,
+ TILE_TYPE_301 = 0x12d,
+ TILE_TYPE_302 = 0x12e,
+ TILE_TYPE_303 = 0x12f,
+ TILE_TYPE_304 = 0x130,
+ TILE_TYPE_305 = 0x131,
+ TILE_TYPE_306 = 0x132,
+ TILE_TYPE_307 = 0x133,
+ TILE_TYPE_308 = 0x134,
+ TILE_TYPE_309 = 0x135,
+ TILE_TYPE_310 = 0x136,
+ TILE_TYPE_311 = 0x137,
+ TILE_TYPE_312 = 0x138,
+ TILE_TYPE_313 = 0x139,
+ TILE_TYPE_314 = 0x13a,
+ TILE_TYPE_315 = 0x13b,
+ TILE_TYPE_316 = 0x13c,
+ TILE_TYPE_317 = 0x13d,
+ TILE_TYPE_318 = 0x13e,
+ TILE_TYPE_319 = 0x13f,
+ TILE_TYPE_320 = 0x140,
+ TILE_TYPE_321 = 0x141,
+ TILE_TYPE_322 = 0x142,
+ TILE_TYPE_323 = 0x143,
+ TILE_TYPE_324 = 0x144,
+ TILE_TYPE_325 = 0x145,
+ TILE_TYPE_326 = 0x146,
+ TILE_TYPE_327 = 0x147,
+ TILE_TYPE_328 = 0x148,
+ TILE_TYPE_329 = 0x149,
+ TILE_TYPE_330 = 0x14a,
+ TILE_TYPE_331 = 0x14b,
+ TILE_TYPE_332 = 0x14c,
+ TILE_TYPE_333 = 0x14d,
+ TILE_TYPE_334 = 0x14e,
+ TILE_TYPE_335 = 0x14f,
+ TILE_TYPE_336 = 0x150,
+ TILE_TYPE_337 = 0x151,
+ TILE_TYPE_338 = 0x152,
+ TILE_TYPE_339 = 0x153,
+ TILE_TYPE_340 = 0x154,
+ TILE_TYPE_341 = 0x155,
+ TILE_TYPE_342 = 0x156,
+ TILE_TYPE_343 = 0x157,
+ TILE_TYPE_344 = 0x158,
+ TILE_TYPE_345 = 0x159,
+ TILE_TYPE_346 = 0x15a,
+ TILE_TYPE_347 = 0x15b,
+ TILE_TYPE_348 = 0x15c,
+ TILE_TYPE_349 = 0x15d,
+ TILE_TYPE_350 = 0x15e,
+ TILE_TYPE_351 = 0x15f,
+ TILE_TYPE_352 = 0x160,
+ TILE_TYPE_353 = 0x161,
+ TILE_TYPE_354 = 0x162,
+ TILE_TYPE_355 = 0x163,
+ TILE_TYPE_356 = 0x164,
+ TILE_TYPE_357 = 0x165,
+ TILE_TYPE_358 = 0x166,
+ TILE_TYPE_359 = 0x167,
+ TILE_TYPE_360 = 0x168,
+ TILE_TYPE_361 = 0x169,
+ TILE_TYPE_362 = 0x16a,
+ TILE_TYPE_363 = 0x16b,
+ TILE_TYPE_364 = 0x16c,
+ TILE_TYPE_365 = 0x16d,
+ TILE_TYPE_366 = 0x16e,
+ TILE_TYPE_367 = 0x16f,
+ TILE_TYPE_368 = 0x170,
+ TILE_TYPE_369 = 0x171,
+ TILE_TYPE_370 = 0x172,
+ TILE_TYPE_371 = 0x173,
+ TILE_TYPE_372 = 0x174,
+ TILE_TYPE_373 = 0x175,
+ TILE_TYPE_374 = 0x176, // SIGNPOST
+ TILE_TYPE_375 = 0x177,
+ TILE_TYPE_376 = 0x178,
+ TILE_TYPE_377 = 0x179,
+ TILE_TYPE_378 = 0x17a,
+ TILE_TYPE_379 = 0x17b,
+ TILE_TYPE_380 = 0x17c,
+ TILE_TYPE_381 = 0x17d,
+ TILE_TYPE_382 = 0x17e,
+ TILE_TYPE_383 = 0x17f,
+ TILE_TYPE_384 = 0x180,
+ TILE_TYPE_385 = 0x181,
+ TILE_TYPE_386 = 0x182,
+ TILE_TYPE_387 = 0x183,
+ TILE_TYPE_388 = 0x184,
+ TILE_TYPE_389 = 0x185,
+ TILE_TYPE_390 = 0x186,
+ TILE_TYPE_391 = 0x187,
+ TILE_TYPE_392 = 0x188,
+ TILE_TYPE_393 = 0x189,
+ TILE_TYPE_394 = 0x18a,
+ TILE_TYPE_395 = 0x18b,
+ TILE_TYPE_396 = 0x18c,
+ TILE_TYPE_397 = 0x18d,
+ TILE_TYPE_398 = 0x18e,
+ TILE_TYPE_399 = 0x18f,
+ TILE_TYPE_400 = 0x190,
+ TILE_TYPE_401 = 0x191,
+ TILE_TYPE_402 = 0x192,
+ TILE_TYPE_403 = 0x193,
+ TILE_TYPE_404 = 0x194,
+ TILE_TYPE_405 = 0x195,
+ TILE_TYPE_406 = 0x196,
+ TILE_TYPE_407 = 0x197,
+ TILE_TYPE_408 = 0x198,
+ TILE_TYPE_409 = 0x199,
+ TILE_TYPE_410 = 0x19a,
+ TILE_TYPE_411 = 0x19b,
+ TILE_TYPE_412 = 0x19c,
+ TILE_TYPE_413 = 0x19d,
+ TILE_TYPE_414 = 0x19e,
+ TILE_TYPE_415 = 0x19f,
+ TILE_TYPE_416 = 0x1a0,
+ TILE_TYPE_417 = 0x1a1,
+ TILE_TYPE_418 = 0x1a2,
+ TILE_TYPE_419 = 0x1a3,
+ TILE_TYPE_420 = 0x1a4,
+ TILE_TYPE_421 = 0x1a5,
+ TILE_TYPE_422 = 0x1a6,
+ TILE_TYPE_423 = 0x1a7,
+ TILE_TYPE_424 = 0x1a8,
+ TILE_TYPE_425 = 0x1a9,
+ TILE_TYPE_426 = 0x1aa,
+ TILE_TYPE_427 = 0x1ab,
+ TILE_TYPE_428 = 0x1ac,
+ TILE_TYPE_429 = 0x1ad,
+ TILE_TYPE_430 = 0x1ae,
+ TILE_TYPE_431 = 0x1af,
+ TILE_TYPE_432 = 0x1b0,
+ TILE_TYPE_433 = 0x1b1,
+ TILE_TYPE_434 = 0x1b2,
+ TILE_TYPE_435 = 0x1b3,
+ TILE_TYPE_436 = 0x1b4,
+ TILE_TYPE_437 = 0x1b5,
+ TILE_TYPE_438 = 0x1b6,
+ TILE_TYPE_439 = 0x1b7,
+ TILE_TYPE_440 = 0x1b8,
+ TILE_TYPE_441 = 0x1b9,
+ TILE_TYPE_442 = 0x1ba,
+ TILE_TYPE_443 = 0x1bb,
+ TILE_TYPE_444 = 0x1bc,
+ TILE_TYPE_445 = 0x1bd,
+ TILE_TYPE_446 = 0x1be,
+ TILE_TYPE_447 = 0x1bf,
+ TILE_TYPE_448 = 0x1c0,
+ TILE_TYPE_449 = 0x1c1,
+ TILE_TYPE_450 = 0x1c2,
+ TILE_TYPE_451 = 0x1c3,
+ TILE_TYPE_452 = 0x1c4,
+ TILE_TYPE_453 = 0x1c5,
+ TILE_TYPE_454 = 0x1c6,
+ TILE_TYPE_455 = 0x1c7,
+ TILE_TYPE_456 = 0x1c8,
+ TILE_TYPE_457 = 0x1c9,
+ TILE_TYPE_458 = 0x1ca,
+ TILE_TYPE_459 = 0x1cb,
+ TILE_TYPE_460 = 0x1cc,
+ TILE_TYPE_461 = 0x1cd,
+ TILE_TYPE_462 = 0x1ce,
+ TILE_TYPE_463 = 0x1cf,
+ TILE_TYPE_464 = 0x1d0,
+ TILE_TYPE_465 = 0x1d1,
+ TILE_TYPE_466 = 0x1d2,
+ TILE_TYPE_467 = 0x1d3, // PERMA_ROCK
+ TILE_TYPE_468 = 0x1d4, // PERMA_ROCK2
+ TILE_TYPE_469 = 0x1d5, // PERMA_ROCK3
+ TILE_TYPE_470 = 0x1d6, // PERMA_ROCK4
+ TILE_TYPE_471 = 0x1d7,
+ TILE_TYPE_472 = 0x1d8,
+ TILE_TYPE_473 = 0x1d9,
+ TILE_TYPE_474 = 0x1da,
+ TILE_TYPE_475 = 0x1db,
+ TILE_TYPE_476 = 0x1dc,
+ TILE_TYPE_477 = 0x1dd,
+ TILE_TYPE_478 = 0x1de,
+ TILE_TYPE_479 = 0x1df,
+ TILE_TYPE_480 = 0x1e0,
+ TILE_TYPE_481 = 0x1e1,
+ TILE_TYPE_482 = 0x1e2,
+ TILE_TYPE_483 = 0x1e3,
+ TILE_TYPE_484 = 0x1e4,
+ TILE_TYPE_485 = 0x1e5,
+ TILE_TYPE_486 = 0x1e6,
+ TILE_TYPE_487 = 0x1e7,
+ TILE_TYPE_488 = 0x1e8,
+ TILE_TYPE_489 = 0x1e9,
+ TILE_TYPE_490 = 0x1ea,
+ TILE_TYPE_491 = 0x1eb,
+ TILE_TYPE_492 = 0x1ec,
+ TILE_TYPE_493 = 0x1ed,
+ TILE_TYPE_494 = 0x1ee,
+ TILE_TYPE_495 = 0x1ef,
+ TILE_TYPE_496 = 0x1f0,
+ TILE_TYPE_497 = 0x1f1,
+ TILE_TYPE_498 = 0x1f2,
+ TILE_TYPE_499 = 0x1f3,
+ TILE_TYPE_500 = 0x1f4,
+ TILE_TYPE_501 = 0x1f5,
+ TILE_TYPE_502 = 0x1f6,
+ TILE_TYPE_503 = 0x1f7,
+ TILE_TYPE_504 = 0x1f8,
+ TILE_TYPE_505 = 0x1f9,
+ TILE_TYPE_506 = 0x1fa,
+ TILE_TYPE_507 = 0x1fb,
+ TILE_TYPE_508 = 0x1fc,
+ TILE_TYPE_509 = 0x1fd,
+ TILE_TYPE_510 = 0x1fe,
+ TILE_TYPE_511 = 0x1ff,
+ TILE_TYPE_512 = 0x200,
+ TILE_TYPE_513 = 0x201,
+ TILE_TYPE_514 = 0x202,
+ TILE_TYPE_515 = 0x203,
+ TILE_TYPE_516 = 0x204,
+ TILE_TYPE_517 = 0x205,
+ TILE_TYPE_518 = 0x206,
+ TILE_TYPE_519 = 0x207,
+ TILE_TYPE_520 = 0x208,
+ TILE_TYPE_521 = 0x209,
+ TILE_TYPE_522 = 0x20a,
+ TILE_TYPE_523 = 0x20b,
+ TILE_TYPE_524 = 0x20c,
+ TILE_TYPE_525 = 0x20d,
+ TILE_TYPE_526 = 0x20e,
+ TILE_TYPE_527 = 0x20f,
+ TILE_TYPE_528 = 0x210,
+ TILE_TYPE_529 = 0x211,
+ TILE_TYPE_530 = 0x212,
+ TILE_TYPE_531 = 0x213,
+ TILE_TYPE_532 = 0x214,
+ TILE_TYPE_533 = 0x215,
+ TILE_TYPE_534 = 0x216,
+ TILE_TYPE_535 = 0x217,
+ TILE_TYPE_536 = 0x218,
+ TILE_TYPE_537 = 0x219,
+ TILE_TYPE_538 = 0x21a,
+ TILE_TYPE_539 = 0x21b,
+ TILE_TYPE_540 = 0x21c,
+ TILE_TYPE_541 = 0x21d,
+ TILE_TYPE_542 = 0x21e,
+ TILE_TYPE_543 = 0x21f,
+ TILE_TYPE_544 = 0x220,
+ TILE_TYPE_545 = 0x221,
+ TILE_TYPE_546 = 0x222,
+ TILE_TYPE_547 = 0x223,
+ TILE_TYPE_548 = 0x224,
+ TILE_TYPE_549 = 0x225,
+ TILE_TYPE_550 = 0x226,
+ TILE_TYPE_551 = 0x227,
+ TILE_TYPE_552 = 0x228,
+ TILE_TYPE_553 = 0x229,
+ TILE_TYPE_554 = 0x22a,
+ TILE_TYPE_555 = 0x22b,
+ TILE_TYPE_556 = 0x22c,
+ TILE_TYPE_557 = 0x22d,
+ TILE_TYPE_558 = 0x22e,
+ TILE_TYPE_559 = 0x22f,
+ TILE_TYPE_560 = 0x230,
+ TILE_TYPE_561 = 0x231,
+ TILE_TYPE_562 = 0x232,
+ TILE_TYPE_563 = 0x233,
+ TILE_TYPE_564 = 0x234,
+ TILE_TYPE_565 = 0x235,
+ TILE_TYPE_566 = 0x236,
+ TILE_TYPE_567 = 0x237,
+ TILE_TYPE_568 = 0x238,
+ TILE_TYPE_569 = 0x239,
+ TILE_TYPE_570 = 0x23a,
+ TILE_TYPE_571 = 0x23b,
+ TILE_TYPE_572 = 0x23c,
+ TILE_TYPE_573 = 0x23d,
+ TILE_TYPE_574 = 0x23e,
+ TILE_TYPE_575 = 0x23f,
+ TILE_TYPE_576 = 0x240,
+ TILE_TYPE_577 = 0x241,
+ TILE_TYPE_578 = 0x242,
+ TILE_TYPE_579 = 0x243,
+ TILE_TYPE_580 = 0x244,
+ TILE_TYPE_581 = 0x245,
+ TILE_TYPE_582 = 0x246,
+ TILE_TYPE_583 = 0x247,
+ TILE_TYPE_584 = 0x248,
+ TILE_TYPE_585 = 0x249,
+ TILE_TYPE_586 = 0x24a,
+ TILE_TYPE_587 = 0x24b,
+ TILE_TYPE_588 = 0x24c,
+ TILE_TYPE_589 = 0x24d,
+ TILE_TYPE_590 = 0x24e,
+ TILE_TYPE_591 = 0x24f,
+ TILE_TYPE_592 = 0x250,
+ TILE_TYPE_593 = 0x251,
+ TILE_TYPE_594 = 0x252,
+ TILE_TYPE_595 = 0x253,
+ TILE_TYPE_596 = 0x254,
+ TILE_TYPE_597 = 0x255,
+ TILE_TYPE_598 = 0x256,
+ TILE_TYPE_599 = 0x257,
+ TILE_TYPE_600 = 0x258,
+ TILE_TYPE_601 = 0x259,
+ TILE_TYPE_602 = 0x25a,
+ TILE_TYPE_603 = 0x25b,
+ TILE_TYPE_604 = 0x25c,
+ TILE_TYPE_605 = 0x25d,
+ TILE_TYPE_606 = 0x25e,
+ TILE_TYPE_607 = 0x25f,
+ TILE_TYPE_608 = 0x260,
+ TILE_TYPE_609 = 0x261,
+ TILE_TYPE_610 = 0x262,
+ TILE_TYPE_611 = 0x263,
+ TILE_TYPE_612 = 0x264,
+ TILE_TYPE_613 = 0x265,
+ TILE_TYPE_614 = 0x266,
+ TILE_TYPE_615 = 0x267,
+ TILE_TYPE_616 = 0x268,
+ TILE_TYPE_617 = 0x269,
+ TILE_TYPE_618 = 0x26a,
+ TILE_TYPE_619 = 0x26b,
+ TILE_TYPE_620 = 0x26c,
+ TILE_TYPE_621 = 0x26d,
+ TILE_TYPE_622 = 0x26e,
+ TILE_TYPE_623 = 0x26f,
+ TILE_TYPE_624 = 0x270,
+ TILE_TYPE_625 = 0x271,
+ TILE_TYPE_626 = 0x272,
+ TILE_TYPE_627 = 0x273,
+ TILE_TYPE_628 = 0x274,
+ TILE_TYPE_629 = 0x275,
+ TILE_TYPE_630 = 0x276,
+ TILE_TYPE_631 = 0x277,
+ TILE_TYPE_632 = 0x278,
+ TILE_TYPE_633 = 0x279,
+ TILE_TYPE_634 = 0x27a,
+ TILE_TYPE_635 = 0x27b,
+ TILE_TYPE_636 = 0x27c,
+ TILE_TYPE_637 = 0x27d,
+ TILE_TYPE_638 = 0x27e,
+ TILE_TYPE_639 = 0x27f,
+ TILE_TYPE_640 = 0x280,
+ TILE_TYPE_641 = 0x281,
+ TILE_TYPE_642 = 0x282,
+ TILE_TYPE_643 = 0x283,
+ TILE_TYPE_644 = 0x284,
+ TILE_TYPE_645 = 0x285,
+ TILE_TYPE_646 = 0x286,
+ TILE_TYPE_647 = 0x287,
+ TILE_TYPE_648 = 0x288,
+ TILE_TYPE_649 = 0x289,
+ TILE_TYPE_650 = 0x28a,
+ TILE_TYPE_651 = 0x28b,
+ TILE_TYPE_652 = 0x28c,
+ TILE_TYPE_653 = 0x28d,
+ TILE_TYPE_654 = 0x28e,
+ TILE_TYPE_655 = 0x28f,
+ TILE_TYPE_656 = 0x290,
+ TILE_TYPE_657 = 0x291,
+ TILE_TYPE_658 = 0x292,
+ TILE_TYPE_659 = 0x293,
+ TILE_TYPE_660 = 0x294,
+ TILE_TYPE_661 = 0x295,
+ TILE_TYPE_662 = 0x296,
+ TILE_TYPE_663 = 0x297,
+ TILE_TYPE_664 = 0x298,
+ TILE_TYPE_665 = 0x299,
+ TILE_TYPE_666 = 0x29a,
+ TILE_TYPE_667 = 0x29b,
+ TILE_TYPE_668 = 0x29c,
+ TILE_TYPE_669 = 0x29d,
+ TILE_TYPE_670 = 0x29e,
+ TILE_TYPE_671 = 0x29f,
+ TILE_TYPE_672 = 0x2a0,
+ TILE_TYPE_673 = 0x2a1,
+ TILE_TYPE_674 = 0x2a2,
+ TILE_TYPE_675 = 0x2a3,
+ TILE_TYPE_676 = 0x2a4,
+ TILE_TYPE_677 = 0x2a5,
+ TILE_TYPE_678 = 0x2a6,
+ TILE_TYPE_679 = 0x2a7,
+ TILE_TYPE_680 = 0x2a8,
+ TILE_TYPE_681 = 0x2a9,
+ TILE_TYPE_682 = 0x2aa,
+ TILE_TYPE_683 = 0x2ab,
+ TILE_TYPE_684 = 0x2ac,
+ TILE_TYPE_685 = 0x2ad,
+ TILE_TYPE_686 = 0x2ae,
+ TILE_TYPE_687 = 0x2af,
+ TILE_TYPE_688 = 0x2b0,
+ TILE_TYPE_689 = 0x2b1,
+ TILE_TYPE_690 = 0x2b2,
+ TILE_TYPE_691 = 0x2b3,
+ TILE_TYPE_692 = 0x2b4,
+ TILE_TYPE_693 = 0x2b5,
+ TILE_TYPE_694 = 0x2b6,
+ TILE_TYPE_695 = 0x2b7,
+ TILE_TYPE_696 = 0x2b8,
+ TILE_TYPE_697 = 0x2b9,
+ TILE_TYPE_698 = 0x2ba,
+ TILE_TYPE_699 = 0x2bb,
+ TILE_TYPE_700 = 0x2bc,
+ TILE_TYPE_701 = 0x2bd,
+ TILE_TYPE_702 = 0x2be,
+ TILE_TYPE_703 = 0x2bf,
+ TILE_TYPE_704 = 0x2c0,
+ TILE_TYPE_705 = 0x2c1,
+ TILE_TYPE_706 = 0x2c2,
+ TILE_TYPE_707 = 0x2c3,
+ TILE_TYPE_708 = 0x2c4,
+ TILE_TYPE_709 = 0x2c5,
+ TILE_TYPE_710 = 0x2c6,
+ TILE_TYPE_711 = 0x2c7,
+ TILE_TYPE_712 = 0x2c8,
+ TILE_TYPE_713 = 0x2c9,
+ TILE_TYPE_714 = 0x2ca,
+ TILE_TYPE_715 = 0x2cb,
+ TILE_TYPE_716 = 0x2cc,
+ TILE_TYPE_717 = 0x2cd,
+ TILE_TYPE_718 = 0x2ce,
+ TILE_TYPE_719 = 0x2cf,
+ TILE_TYPE_720 = 0x2d0,
+ TILE_TYPE_721 = 0x2d1,
+ TILE_TYPE_722 = 0x2d2,
+ TILE_TYPE_723 = 0x2d3,
+ TILE_TYPE_724 = 0x2d4,
+ TILE_TYPE_725 = 0x2d5,
+ TILE_TYPE_726 = 0x2d6,
+ TILE_TYPE_727 = 0x2d7,
+ TILE_TYPE_728 = 0x2d8,
+ TILE_TYPE_729 = 0x2d9,
+ TILE_TYPE_730 = 0x2da,
+ TILE_TYPE_731 = 0x2db,
+ TILE_TYPE_732 = 0x2dc,
+ TILE_TYPE_733 = 0x2dd,
+ TILE_TYPE_734 = 0x2de,
+ TILE_TYPE_735 = 0x2df,
+ TILE_TYPE_736 = 0x2e0,
+ TILE_TYPE_737 = 0x2e1,
+ TILE_TYPE_738 = 0x2e2,
+ TILE_TYPE_739 = 0x2e3,
+ TILE_TYPE_740 = 0x2e4,
+ TILE_TYPE_741 = 0x2e5,
+ TILE_TYPE_742 = 0x2e6,
+ TILE_TYPE_743 = 0x2e7,
+ TILE_TYPE_744 = 0x2e8,
+ TILE_TYPE_745 = 0x2e9,
+ TILE_TYPE_746 = 0x2ea,
+ TILE_TYPE_747 = 0x2eb,
+ TILE_TYPE_748 = 0x2ec,
+ TILE_TYPE_749 = 0x2ed,
+ TILE_TYPE_750 = 0x2ee,
+ TILE_TYPE_751 = 0x2ef,
+ TILE_TYPE_752 = 0x2f0,
+ TILE_TYPE_753 = 0x2f1,
+ TILE_TYPE_754 = 0x2f2,
+ TILE_TYPE_755 = 0x2f3,
+ TILE_TYPE_756 = 0x2f4,
+ TILE_TYPE_757 = 0x2f5,
+ TILE_TYPE_758 = 0x2f6,
+ TILE_TYPE_759 = 0x2f7,
+ TILE_TYPE_760 = 0x2f8,
+ TILE_TYPE_761 = 0x2f9,
+ TILE_TYPE_762 = 0x2fa,
+ TILE_TYPE_763 = 0x2fb,
+ TILE_TYPE_764 = 0x2fc,
+ TILE_TYPE_765 = 0x2fd,
+ TILE_TYPE_766 = 0x2fe,
+ TILE_TYPE_767 = 0x2ff,
+ TILE_TYPE_768 = 0x300,
+ TILE_TYPE_769 = 0x301,
+ TILE_TYPE_770 = 0x302,
+ TILE_TYPE_771 = 0x303,
+ TILE_TYPE_772 = 0x304,
+ TILE_TYPE_773 = 0x305,
+ TILE_TYPE_774 = 0x306,
+ TILE_TYPE_775 = 0x307,
+ TILE_TYPE_776 = 0x308,
+ TILE_TYPE_777 = 0x309,
+ TILE_TYPE_778 = 0x30a,
+ TILE_TYPE_779 = 0x30b,
+ TILE_TYPE_780 = 0x30c,
+ TILE_TYPE_781 = 0x30d,
+ TILE_TYPE_782 = 0x30e,
+ TILE_TYPE_783 = 0x30f,
+ TILE_TYPE_784 = 0x310,
+ TILE_TYPE_785 = 0x311,
+ TILE_TYPE_786 = 0x312,
+ TILE_TYPE_787 = 0x313,
+ TILE_TYPE_788 = 0x314,
+ TILE_TYPE_789 = 0x315,
+ TILE_TYPE_790 = 0x316,
+ TILE_TYPE_791 = 0x317, // RED_TILE
+ TILE_TYPE_792 = 0x318, // BLUE_TILE
+ TILE_TYPE_793 = 0x319,
+ TILE_TYPE_794 = 0x31a,
+ TILE_TYPE_795 = 0x31b,
+ TILE_TYPE_796 = 0x31c,
+ TILE_TYPE_797 = 0x31d,
+ TILE_TYPE_798 = 0x31e,
+ TILE_TYPE_799 = 0x31f,
+ TILE_TYPE_800 = 0x320,
+ TILE_TYPE_801 = 0x321,
+ TILE_TYPE_802 = 0x322,
+ TILE_TYPE_803 = 0x323,
+ TILE_TYPE_804 = 0x324,
+ TILE_TYPE_805 = 0x325,
+ TILE_TYPE_806 = 0x326,
+ TILE_TYPE_807 = 0x327,
+ TILE_TYPE_808 = 0x328,
+ TILE_TYPE_809 = 0x329,
+ TILE_TYPE_810 = 0x32a,
+ TILE_TYPE_811 = 0x32b,
+ TILE_TYPE_812 = 0x32c,
+ TILE_TYPE_813 = 0x32d,
+ TILE_TYPE_814 = 0x32e,
+ TILE_TYPE_815 = 0x32f,
+ TILE_TYPE_816 = 0x330,
+ TILE_TYPE_817 = 0x331,
+ TILE_TYPE_818 = 0x332,
+ TILE_TYPE_819 = 0x333,
+ TILE_TYPE_820 = 0x334,
+ TILE_TYPE_821 = 0x335,
+ TILE_TYPE_822 = 0x336,
+ TILE_TYPE_823 = 0x337,
+ TILE_TYPE_824 = 0x338,
+ TILE_TYPE_825 = 0x339,
+ TILE_TYPE_826 = 0x33a,
+ TILE_TYPE_827 = 0x33b,
+ TILE_TYPE_828 = 0x33c,
+ TILE_TYPE_829 = 0x33d,
+ TILE_TYPE_830 = 0x33e,
+ TILE_TYPE_831 = 0x33f,
+ TILE_TYPE_832 = 0x340,
+ TILE_TYPE_833 = 0x341,
+ TILE_TYPE_834 = 0x342,
+ TILE_TYPE_835 = 0x343,
+ TILE_TYPE_836 = 0x344,
+ TILE_TYPE_837 = 0x345,
+ TILE_TYPE_838 = 0x346,
+ TILE_TYPE_839 = 0x347,
+ TILE_TYPE_840 = 0x348,
+ TILE_TYPE_841 = 0x349,
+ TILE_TYPE_842 = 0x34a,
+ TILE_TYPE_843 = 0x34b,
+ TILE_TYPE_844 = 0x34c,
+ TILE_TYPE_845 = 0x34d,
+ TILE_TYPE_846 = 0x34e,
+ TILE_TYPE_847 = 0x34f,
+ TILE_TYPE_848 = 0x350,
+ TILE_TYPE_849 = 0x351,
+ TILE_TYPE_850 = 0x352,
+ TILE_TYPE_851 = 0x353,
+ TILE_TYPE_852 = 0x354,
+ TILE_TYPE_853 = 0x355,
+ TILE_TYPE_854 = 0x356,
+ TILE_TYPE_855 = 0x357,
+ TILE_TYPE_856 = 0x358,
+ TILE_TYPE_857 = 0x359,
+ TILE_TYPE_858 = 0x35a,
+ TILE_TYPE_859 = 0x35b,
+ TILE_TYPE_860 = 0x35c,
+ TILE_TYPE_861 = 0x35d,
+ TILE_TYPE_862 = 0x35e,
+ TILE_TYPE_863 = 0x35f,
+ TILE_TYPE_864 = 0x360,
+ TILE_TYPE_865 = 0x361,
+ TILE_TYPE_866 = 0x362,
+ TILE_TYPE_867 = 0x363,
+ TILE_TYPE_868 = 0x364,
+ TILE_TYPE_869 = 0x365,
+ TILE_TYPE_870 = 0x366,
+ TILE_TYPE_871 = 0x367,
+ TILE_TYPE_872 = 0x368,
+ TILE_TYPE_873 = 0x369,
+ TILE_TYPE_874 = 0x36a,
+ TILE_TYPE_875 = 0x36b,
+ TILE_TYPE_876 = 0x36c,
+ TILE_TYPE_877 = 0x36d,
+ TILE_TYPE_878 = 0x36e,
+ TILE_TYPE_879 = 0x36f,
+ TILE_TYPE_880 = 0x370,
+ TILE_TYPE_881 = 0x371,
+ TILE_TYPE_882 = 0x372,
+ TILE_TYPE_883 = 0x373,
+ TILE_TYPE_884 = 0x374,
+ TILE_TYPE_885 = 0x375,
+ TILE_TYPE_886 = 0x376,
+ TILE_TYPE_887 = 0x377,
+ TILE_TYPE_888 = 0x378,
+ TILE_TYPE_889 = 0x379,
+ TILE_TYPE_890 = 0x37a,
+ TILE_TYPE_891 = 0x37b,
+ TILE_TYPE_892 = 0x37c,
+ TILE_TYPE_893 = 0x37d,
+ TILE_TYPE_894 = 0x37e,
+ TILE_TYPE_895 = 0x37f,
+ TILE_TYPE_896 = 0x380,
+ TILE_TYPE_897 = 0x381,
+ TILE_TYPE_898 = 0x382,
+ TILE_TYPE_899 = 0x383,
+ TILE_TYPE_900 = 0x384,
+ TILE_TYPE_901 = 0x385,
+ TILE_TYPE_902 = 0x386,
+ TILE_TYPE_903 = 0x387,
+ TILE_TYPE_904 = 0x388,
+ TILE_TYPE_905 = 0x389,
+ TILE_TYPE_906 = 0x38a,
+ TILE_TYPE_907 = 0x38b,
+ TILE_TYPE_908 = 0x38c,
+ TILE_TYPE_909 = 0x38d,
+ TILE_TYPE_910 = 0x38e,
+ TILE_TYPE_911 = 0x38f,
+ TILE_TYPE_912 = 0x390,
+ TILE_TYPE_913 = 0x391,
+ TILE_TYPE_914 = 0x392,
+ TILE_TYPE_915 = 0x393,
+ TILE_TYPE_916 = 0x394,
+ TILE_TYPE_917 = 0x395,
+ TILE_TYPE_918 = 0x396,
+ TILE_TYPE_919 = 0x397,
+ TILE_TYPE_920 = 0x398,
+ TILE_TYPE_921 = 0x399,
+ TILE_TYPE_922 = 0x39a,
+ TILE_TYPE_923 = 0x39b,
+ TILE_TYPE_924 = 0x39c,
+ TILE_TYPE_925 = 0x39d,
+ TILE_TYPE_926 = 0x39e,
+ TILE_TYPE_927 = 0x39f,
+ TILE_TYPE_928 = 0x3a0,
+ TILE_TYPE_929 = 0x3a1,
+ TILE_TYPE_930 = 0x3a2,
+ TILE_TYPE_931 = 0x3a3,
+ TILE_TYPE_932 = 0x3a4,
+ TILE_TYPE_933 = 0x3a5,
+ TILE_TYPE_934 = 0x3a6,
+ TILE_TYPE_935 = 0x3a7,
+ TILE_TYPE_936 = 0x3a8,
+ TILE_TYPE_937 = 0x3a9,
+ TILE_TYPE_938 = 0x3aa,
+ TILE_TYPE_939 = 0x3ab,
+ TILE_TYPE_940 = 0x3ac,
+ TILE_TYPE_941 = 0x3ad,
+ TILE_TYPE_942 = 0x3ae,
+ TILE_TYPE_943 = 0x3af,
+ TILE_TYPE_944 = 0x3b0,
+ TILE_TYPE_945 = 0x3b1,
+ TILE_TYPE_946 = 0x3b2,
+ TILE_TYPE_947 = 0x3b3,
+ TILE_TYPE_948 = 0x3b4,
+ TILE_TYPE_949 = 0x3b5,
+ TILE_TYPE_950 = 0x3b6,
+ TILE_TYPE_951 = 0x3b7,
+ TILE_TYPE_952 = 0x3b8,
+ TILE_TYPE_953 = 0x3b9,
+ TILE_TYPE_954 = 0x3ba,
+ TILE_TYPE_955 = 0x3bb,
+ TILE_TYPE_956 = 0x3bc,
+ TILE_TYPE_957 = 0x3bd,
+ TILE_TYPE_958 = 0x3be,
+ TILE_TYPE_959 = 0x3bf,
+ TILE_TYPE_960 = 0x3c0,
+ TILE_TYPE_961 = 0x3c1,
+ TILE_TYPE_962 = 0x3c2,
+ TILE_TYPE_963 = 0x3c3,
+ TILE_TYPE_964 = 0x3c4,
+ TILE_TYPE_965 = 0x3c5,
+ TILE_TYPE_966 = 0x3c6,
+ TILE_TYPE_967 = 0x3c7,
+ TILE_TYPE_968 = 0x3c8,
+ TILE_TYPE_969 = 0x3c9,
+ TILE_TYPE_970 = 0x3ca,
+ TILE_TYPE_971 = 0x3cb,
+ TILE_TYPE_972 = 0x3cc,
+ TILE_TYPE_973 = 0x3cd,
+ TILE_TYPE_974 = 0x3ce,
+ TILE_TYPE_975 = 0x3cf,
+ TILE_TYPE_976 = 0x3d0,
+ TILE_TYPE_977 = 0x3d1,
+ TILE_TYPE_978 = 0x3d2,
+ TILE_TYPE_979 = 0x3d3,
+ TILE_TYPE_980 = 0x3d4,
+ TILE_TYPE_981 = 0x3d5,
+ TILE_TYPE_982 = 0x3d6,
+ TILE_TYPE_983 = 0x3d7,
+ TILE_TYPE_984 = 0x3d8,
+ TILE_TYPE_985 = 0x3d9,
+ TILE_TYPE_986 = 0x3da,
+ TILE_TYPE_987 = 0x3db,
+ TILE_TYPE_988 = 0x3dc,
+ TILE_TYPE_989 = 0x3dd,
+ TILE_TYPE_990 = 0x3de,
+ TILE_TYPE_991 = 0x3df,
+ TILE_TYPE_992 = 0x3e0,
+ TILE_TYPE_993 = 0x3e1,
+ TILE_TYPE_994 = 0x3e2,
+ TILE_TYPE_995 = 0x3e3,
+ TILE_TYPE_996 = 0x3e4,
+ TILE_TYPE_997 = 0x3e5,
+ TILE_TYPE_998 = 0x3e6,
+ TILE_TYPE_999 = 0x3e7,
+ TILE_TYPE_1000 = 0x3e8,
+ TILE_TYPE_1001 = 0x3e9,
+ TILE_TYPE_1002 = 0x3ea,
+ TILE_TYPE_1003 = 0x3eb,
+ TILE_TYPE_1004 = 0x3ec,
+ TILE_TYPE_1005 = 0x3ed,
+ TILE_TYPE_1006 = 0x3ee,
+ TILE_TYPE_1007 = 0x3ef,
+ TILE_TYPE_1008 = 0x3f0,
+ TILE_TYPE_1009 = 0x3f1,
+ TILE_TYPE_1010 = 0x3f2,
+ TILE_TYPE_1011 = 0x3f3,
+ TILE_TYPE_1012 = 0x3f4,
+ TILE_TYPE_1013 = 0x3f5,
+ TILE_TYPE_1014 = 0x3f6,
+ TILE_TYPE_1015 = 0x3f7,
+ TILE_TYPE_1016 = 0x3f8,
+ TILE_TYPE_1017 = 0x3f9,
+ TILE_TYPE_1018 = 0x3fa,
+ TILE_TYPE_1019 = 0x3fb,
+ TILE_TYPE_1020 = 0x3fc,
+ TILE_TYPE_1021 = 0x3fd,
+ TILE_TYPE_1022 = 0x3fe,
+ TILE_TYPE_1023 = 0x3ff,
+ TILE_TYPE_1024 = 0x400,
+ TILE_TYPE_1025 = 0x401,
+ TILE_TYPE_1026 = 0x402,
+ TILE_TYPE_1027 = 0x403,
+ TILE_TYPE_1028 = 0x404,
+ TILE_TYPE_1029 = 0x405,
+ TILE_TYPE_1030 = 0x406,
+ TILE_TYPE_1031 = 0x407,
+ TILE_TYPE_1032 = 0x408,
+ TILE_TYPE_1033 = 0x409,
+ TILE_TYPE_1034 = 0x40a,
+ TILE_TYPE_1035 = 0x40b,
+ TILE_TYPE_1036 = 0x40c,
+ TILE_TYPE_1037 = 0x40d,
+ TILE_TYPE_1038 = 0x40e,
+ TILE_TYPE_1039 = 0x40f,
+ TILE_TYPE_1040 = 0x410,
+ TILE_TYPE_1041 = 0x411,
+ TILE_TYPE_1042 = 0x412,
+ TILE_TYPE_1043 = 0x413,
+ TILE_TYPE_1044 = 0x414,
+ TILE_TYPE_1045 = 0x415,
+ TILE_TYPE_1046 = 0x416,
+ TILE_TYPE_1047 = 0x417,
+ TILE_TYPE_1048 = 0x418,
+ TILE_TYPE_1049 = 0x419,
+ TILE_TYPE_1050 = 0x41a,
+ TILE_TYPE_1051 = 0x41b,
+ TILE_TYPE_1052 = 0x41c,
+ TILE_TYPE_1053 = 0x41d,
+ TILE_TYPE_1054 = 0x41e,
+ TILE_TYPE_1055 = 0x41f,
+ TILE_TYPE_1056 = 0x420,
+ TILE_TYPE_1057 = 0x421,
+ TILE_TYPE_1058 = 0x422,
+ TILE_TYPE_1059 = 0x423,
+ TILE_TYPE_1060 = 0x424,
+ TILE_TYPE_1061 = 0x425,
+ TILE_TYPE_1062 = 0x426,
+ TILE_TYPE_1063 = 0x427,
+ TILE_TYPE_1064 = 0x428,
+ TILE_TYPE_1065 = 0x429,
+ TILE_TYPE_1066 = 0x42a,
+ TILE_TYPE_1067 = 0x42b,
+ TILE_TYPE_1068 = 0x42c,
+ TILE_TYPE_1069 = 0x42d,
+ TILE_TYPE_1070 = 0x42e,
+ TILE_TYPE_1071 = 0x42f,
+ TILE_TYPE_1072 = 0x430,
+ TILE_TYPE_1073 = 0x431,
+ TILE_TYPE_1074 = 0x432,
+ TILE_TYPE_1075 = 0x433,
+ TILE_TYPE_1076 = 0x434,
+ TILE_TYPE_1077 = 0x435,
+ TILE_TYPE_1078 = 0x436,
+ TILE_TYPE_1079 = 0x437,
+ TILE_TYPE_1080 = 0x438,
+ TILE_TYPE_1081 = 0x439,
+ TILE_TYPE_1082 = 0x43a,
+ TILE_TYPE_1083 = 0x43b,
+ TILE_TYPE_1084 = 0x43c,
+ TILE_TYPE_1085 = 0x43d,
+ TILE_TYPE_1086 = 0x43e,
+ TILE_TYPE_1087 = 0x43f,
+ TILE_TYPE_1088 = 0x440,
+ TILE_TYPE_1089 = 0x441,
+ TILE_TYPE_1090 = 0x442,
+ TILE_TYPE_1091 = 0x443,
+ TILE_TYPE_1092 = 0x444,
+ TILE_TYPE_1093 = 0x445,
+ TILE_TYPE_1094 = 0x446,
+ TILE_TYPE_1095 = 0x447,
+ TILE_TYPE_1096 = 0x448,
+ TILE_TYPE_1097 = 0x449,
+ TILE_TYPE_1098 = 0x44a,
+ TILE_TYPE_1099 = 0x44b,
+ TILE_TYPE_1100 = 0x44c,
+ TILE_TYPE_1101 = 0x44d,
+ TILE_TYPE_1102 = 0x44e,
+ TILE_TYPE_1103 = 0x44f,
+ TILE_TYPE_1104 = 0x450,
+ TILE_TYPE_1105 = 0x451,
+ TILE_TYPE_1106 = 0x452,
+ TILE_TYPE_1107 = 0x453,
+ TILE_TYPE_1108 = 0x454,
+ TILE_TYPE_1109 = 0x455,
+ TILE_TYPE_1110 = 0x456,
+ TILE_TYPE_1111 = 0x457,
+ TILE_TYPE_1112 = 0x458,
+ TILE_TYPE_1113 = 0x459,
+ TILE_TYPE_1114 = 0x45a,
+ TILE_TYPE_1115 = 0x45b,
+ TILE_TYPE_1116 = 0x45c,
+ TILE_TYPE_1117 = 0x45d,
+ TILE_TYPE_1118 = 0x45e,
+ TILE_TYPE_1119 = 0x45f,
+ TILE_TYPE_1120 = 0x460,
+ TILE_TYPE_1121 = 0x461,
+ TILE_TYPE_1122 = 0x462,
+ TILE_TYPE_1123 = 0x463,
+ TILE_TYPE_1124 = 0x464,
+ TILE_TYPE_1125 = 0x465,
+ TILE_TYPE_1126 = 0x466,
+ TILE_TYPE_1127 = 0x467,
+ TILE_TYPE_1128 = 0x468,
+ TILE_TYPE_1129 = 0x469,
+ TILE_TYPE_1130 = 0x46a,
+ TILE_TYPE_1131 = 0x46b,
+ TILE_TYPE_1132 = 0x46c,
+ TILE_TYPE_1133 = 0x46d,
+ TILE_TYPE_1134 = 0x46e,
+ TILE_TYPE_1135 = 0x46f,
+ TILE_TYPE_1136 = 0x470,
+ TILE_TYPE_1137 = 0x471,
+ TILE_TYPE_1138 = 0x472,
+ TILE_TYPE_1139 = 0x473,
+ TILE_TYPE_1140 = 0x474,
+ TILE_TYPE_1141 = 0x475,
+ TILE_TYPE_1142 = 0x476,
+ TILE_TYPE_1143 = 0x477,
+ TILE_TYPE_1144 = 0x478,
+ TILE_TYPE_1145 = 0x479,
+ TILE_TYPE_1146 = 0x47a,
+ TILE_TYPE_1147 = 0x47b,
+ TILE_TYPE_1148 = 0x47c,
+ TILE_TYPE_1149 = 0x47d,
+ TILE_TYPE_1150 = 0x47e,
+ TILE_TYPE_1151 = 0x47f,
+ TILE_TYPE_1152 = 0x480,
+ TILE_TYPE_1153 = 0x481,
+ TILE_TYPE_1154 = 0x482,
+ TILE_TYPE_1155 = 0x483,
+ TILE_TYPE_1156 = 0x484,
+ TILE_TYPE_1157 = 0x485,
+ TILE_TYPE_1158 = 0x486,
+ TILE_TYPE_1159 = 0x487,
+ TILE_TYPE_1160 = 0x488,
+ TILE_TYPE_1161 = 0x489,
+ TILE_TYPE_1162 = 0x48a,
+ TILE_TYPE_1163 = 0x48b,
+ TILE_TYPE_1164 = 0x48c,
+ TILE_TYPE_1165 = 0x48d,
+ TILE_TYPE_1166 = 0x48e,
+ TILE_TYPE_1167 = 0x48f,
+ TILE_TYPE_1168 = 0x490,
+ TILE_TYPE_1169 = 0x491,
+ TILE_TYPE_1170 = 0x492,
+ TILE_TYPE_1171 = 0x493,
+ TILE_TYPE_1172 = 0x494,
+ TILE_TYPE_1173 = 0x495,
+ TILE_TYPE_1174 = 0x496,
+ TILE_TYPE_1175 = 0x497,
+ TILE_TYPE_1176 = 0x498,
+ TILE_TYPE_1177 = 0x499,
+ TILE_TYPE_1178 = 0x49a,
+ TILE_TYPE_1179 = 0x49b,
+ TILE_TYPE_1180 = 0x49c,
+ TILE_TYPE_1181 = 0x49d,
+ TILE_TYPE_1182 = 0x49e,
+ TILE_TYPE_1183 = 0x49f,
+ TILE_TYPE_1184 = 0x4a0,
+ TILE_TYPE_1185 = 0x4a1,
+ TILE_TYPE_1186 = 0x4a2,
+ TILE_TYPE_1187 = 0x4a3,
+ TILE_TYPE_1188 = 0x4a4,
+ TILE_TYPE_1189 = 0x4a5,
+ TILE_TYPE_1190 = 0x4a6,
+ TILE_TYPE_1191 = 0x4a7,
+ TILE_TYPE_1192 = 0x4a8,
+ TILE_TYPE_1193 = 0x4a9,
+ TILE_TYPE_1194 = 0x4aa,
+ TILE_TYPE_1195 = 0x4ab,
+ TILE_TYPE_1196 = 0x4ac,
+ TILE_TYPE_1197 = 0x4ad,
+ TILE_TYPE_1198 = 0x4ae,
+ TILE_TYPE_1199 = 0x4af,
+ TILE_TYPE_1200 = 0x4b0,
+ TILE_TYPE_1201 = 0x4b1,
+ TILE_TYPE_1202 = 0x4b2,
+ TILE_TYPE_1203 = 0x4b3,
+ TILE_TYPE_1204 = 0x4b4,
+ TILE_TYPE_1205 = 0x4b5,
+ TILE_TYPE_1206 = 0x4b6,
+ TILE_TYPE_1207 = 0x4b7,
+ TILE_TYPE_1208 = 0x4b8,
+ TILE_TYPE_1209 = 0x4b9,
+ TILE_TYPE_1210 = 0x4ba,
+ TILE_TYPE_1211 = 0x4bb,
+ TILE_TYPE_1212 = 0x4bc,
+ TILE_TYPE_1213 = 0x4bd,
+ TILE_TYPE_1214 = 0x4be,
+ TILE_TYPE_1215 = 0x4bf,
+ TILE_TYPE_1216 = 0x4c0,
+ TILE_TYPE_1217 = 0x4c1,
+ TILE_TYPE_1218 = 0x4c2,
+ TILE_TYPE_1219 = 0x4c3,
+ TILE_TYPE_1220 = 0x4c4,
+ TILE_TYPE_1221 = 0x4c5,
+ TILE_TYPE_1222 = 0x4c6,
+ TILE_TYPE_1223 = 0x4c7,
+ TILE_TYPE_1224 = 0x4c8,
+ TILE_TYPE_1225 = 0x4c9,
+ TILE_TYPE_1226 = 0x4ca,
+ TILE_TYPE_1227 = 0x4cb,
+ TILE_TYPE_1228 = 0x4cc,
+ TILE_TYPE_1229 = 0x4cd,
+ TILE_TYPE_1230 = 0x4ce,
+ TILE_TYPE_1231 = 0x4cf,
+ TILE_TYPE_1232 = 0x4d0,
+ TILE_TYPE_1233 = 0x4d1,
+ TILE_TYPE_1234 = 0x4d2,
+ TILE_TYPE_1235 = 0x4d3,
+ TILE_TYPE_1236 = 0x4d4,
+ TILE_TYPE_1237 = 0x4d5,
+ TILE_TYPE_1238 = 0x4d6,
+ TILE_TYPE_1239 = 0x4d7,
+ TILE_TYPE_1240 = 0x4d8,
+ TILE_TYPE_1241 = 0x4d9,
+ TILE_TYPE_1242 = 0x4da,
+ TILE_TYPE_1243 = 0x4db,
+ TILE_TYPE_1244 = 0x4dc,
+ TILE_TYPE_1245 = 0x4dd,
+ TILE_TYPE_1246 = 0x4de,
+ TILE_TYPE_1247 = 0x4df,
+ TILE_TYPE_1248 = 0x4e0,
+ TILE_TYPE_1249 = 0x4e1,
+ TILE_TYPE_1250 = 0x4e2,
+ TILE_TYPE_1251 = 0x4e3,
+ TILE_TYPE_1252 = 0x4e4,
+ TILE_TYPE_1253 = 0x4e5,
+ TILE_TYPE_1254 = 0x4e6,
+ TILE_TYPE_1255 = 0x4e7,
+ TILE_TYPE_1256 = 0x4e8,
+ TILE_TYPE_1257 = 0x4e9,
+ TILE_TYPE_1258 = 0x4ea,
+ TILE_TYPE_1259 = 0x4eb,
+ TILE_TYPE_1260 = 0x4ec,
+ TILE_TYPE_1261 = 0x4ed,
+ TILE_TYPE_1262 = 0x4ee,
+ TILE_TYPE_1263 = 0x4ef,
+ TILE_TYPE_1264 = 0x4f0,
+ TILE_TYPE_1265 = 0x4f1,
+ TILE_TYPE_1266 = 0x4f2,
+ TILE_TYPE_1267 = 0x4f3,
+ TILE_TYPE_1268 = 0x4f4,
+ TILE_TYPE_1269 = 0x4f5,
+ TILE_TYPE_1270 = 0x4f6,
+ TILE_TYPE_1271 = 0x4f7,
+ TILE_TYPE_1272 = 0x4f8,
+ TILE_TYPE_1273 = 0x4f9,
+ TILE_TYPE_1274 = 0x4fa,
+ TILE_TYPE_1275 = 0x4fb,
+ TILE_TYPE_1276 = 0x4fc,
+ TILE_TYPE_1277 = 0x4fd,
+ TILE_TYPE_1278 = 0x4fe,
+ TILE_TYPE_1279 = 0x4ff,
+ TILE_TYPE_1280 = 0x500,
+ TILE_TYPE_1281 = 0x501,
+ TILE_TYPE_1282 = 0x502,
+ TILE_TYPE_1283 = 0x503,
+ TILE_TYPE_1284 = 0x504,
+ TILE_TYPE_1285 = 0x505,
+ TILE_TYPE_1286 = 0x506,
+ TILE_TYPE_1287 = 0x507,
+ TILE_TYPE_1288 = 0x508,
+ TILE_TYPE_1289 = 0x509,
+ TILE_TYPE_1290 = 0x50a,
+ TILE_TYPE_1291 = 0x50b,
+ TILE_TYPE_1292 = 0x50c,
+ TILE_TYPE_1293 = 0x50d,
+ TILE_TYPE_1294 = 0x50e,
+ TILE_TYPE_1295 = 0x50f,
+ TILE_TYPE_1296 = 0x510,
+ TILE_TYPE_1297 = 0x511,
+ TILE_TYPE_1298 = 0x512,
+ TILE_TYPE_1299 = 0x513,
+ TILE_TYPE_1300 = 0x514,
+ TILE_TYPE_1301 = 0x515,
+ TILE_TYPE_1302 = 0x516,
+ TILE_TYPE_1303 = 0x517,
+ TILE_TYPE_1304 = 0x518,
+ TILE_TYPE_1305 = 0x519,
+ TILE_TYPE_1306 = 0x51a,
+ TILE_TYPE_1307 = 0x51b,
+ TILE_TYPE_1308 = 0x51c,
+ TILE_TYPE_1309 = 0x51d,
+ TILE_TYPE_1310 = 0x51e,
+ TILE_TYPE_1311 = 0x51f,
+ TILE_TYPE_1312 = 0x520,
+ TILE_TYPE_1313 = 0x521,
+ TILE_TYPE_1314 = 0x522,
+ TILE_TYPE_1315 = 0x523,
+ TILE_TYPE_1316 = 0x524,
+ TILE_TYPE_1317 = 0x525,
+ TILE_TYPE_1318 = 0x526,
+ TILE_TYPE_1319 = 0x527,
+ TILE_TYPE_1320 = 0x528,
+ TILE_TYPE_1321 = 0x529,
+ TILE_TYPE_1322 = 0x52a,
+ TILE_TYPE_1323 = 0x52b,
+ TILE_TYPE_1324 = 0x52c,
+ TILE_TYPE_1325 = 0x52d,
+ TILE_TYPE_1326 = 0x52e,
+ TILE_TYPE_1327 = 0x52f,
+ TILE_TYPE_1328 = 0x530,
+ TILE_TYPE_1329 = 0x531,
+ TILE_TYPE_1330 = 0x532,
+ TILE_TYPE_1331 = 0x533,
+ TILE_TYPE_1332 = 0x534,
+ TILE_TYPE_1333 = 0x535,
+ TILE_TYPE_1334 = 0x536,
+ TILE_TYPE_1335 = 0x537,
+ TILE_TYPE_1336 = 0x538,
+ TILE_TYPE_1337 = 0x539,
+ TILE_TYPE_1338 = 0x53a,
+ TILE_TYPE_1339 = 0x53b,
+ TILE_TYPE_1340 = 0x53c,
+ TILE_TYPE_1341 = 0x53d,
+ TILE_TYPE_1342 = 0x53e,
+ TILE_TYPE_1343 = 0x53f,
+ TILE_TYPE_1344 = 0x540,
+ TILE_TYPE_1345 = 0x541,
+ TILE_TYPE_1346 = 0x542,
+ TILE_TYPE_1347 = 0x543,
+ TILE_TYPE_1348 = 0x544,
+ TILE_TYPE_1349 = 0x545,
+ TILE_TYPE_1350 = 0x546,
+ TILE_TYPE_1351 = 0x547,
+ TILE_TYPE_1352 = 0x548,
+ TILE_TYPE_1353 = 0x549,
+ TILE_TYPE_1354 = 0x54a,
+ TILE_TYPE_1355 = 0x54b,
+ TILE_TYPE_1356 = 0x54c,
+ TILE_TYPE_1357 = 0x54d,
+ TILE_TYPE_1358 = 0x54e,
+ TILE_TYPE_1359 = 0x54f,
+ TILE_TYPE_1360 = 0x550,
+ TILE_TYPE_1361 = 0x551,
+ TILE_TYPE_1362 = 0x552,
+ TILE_TYPE_1363 = 0x553,
+ TILE_TYPE_1364 = 0x554,
+ TILE_TYPE_1365 = 0x555,
+ TILE_TYPE_1366 = 0x556,
+ TILE_TYPE_1367 = 0x557,
+ TILE_TYPE_1368 = 0x558,
+ TILE_TYPE_1369 = 0x559,
+ TILE_TYPE_1370 = 0x55a,
+ TILE_TYPE_1371 = 0x55b,
+ TILE_TYPE_1372 = 0x55c,
+ TILE_TYPE_1373 = 0x55d,
+ TILE_TYPE_1374 = 0x55e,
+ TILE_TYPE_1375 = 0x55f,
+ TILE_TYPE_1376 = 0x560,
+ TILE_TYPE_1377 = 0x561,
+ TILE_TYPE_1378 = 0x562,
+ TILE_TYPE_1379 = 0x563,
+ TILE_TYPE_1380 = 0x564,
+ TILE_TYPE_1381 = 0x565,
+ TILE_TYPE_1382 = 0x566,
+ TILE_TYPE_1383 = 0x567,
+ TILE_TYPE_1384 = 0x568,
+ TILE_TYPE_1385 = 0x569,
+ TILE_TYPE_1386 = 0x56a,
+ TILE_TYPE_1387 = 0x56b,
+ TILE_TYPE_1388 = 0x56c,
+ TILE_TYPE_1389 = 0x56d,
+ TILE_TYPE_1390 = 0x56e,
+ TILE_TYPE_1391 = 0x56f,
+ TILE_TYPE_1392 = 0x570,
+ TILE_TYPE_1393 = 0x571,
+ TILE_TYPE_1394 = 0x572,
+ TILE_TYPE_1395 = 0x573,
+} TileType;
typedef enum {
- CUT_BUSH = 0x1C,
- CUT_GRASS = 0x1D,
- CUT_SIGNPOST = 0x1E,
- CUT_TREE = 0x1F,
- ROCK = 0x55,
- CHEST = 0x73,
- CHEST_OPEN = 0x74,
- TORCH = 0x76,
- TORCH_LIT = 0x77,
- PRESSURE_BUTTON = 0x78,
- PRESSURE_BUTTON_PRESSED = 0x79,
- PRESSURE_SQUARE = 0x7a,
- PRESSURE_SQUARE_PRESSED = 0x7b,
- STAIRS_UP = 0x92,
- STAIRS_DOWN = 0x93,
- SIGNPOST = 0x176,
- PERMA_ROCK = 0x1D3,
- PERMA_ROCK2 = 0x1D4,
- PERMA_ROCK3 = 0x1D5,
- PERMA_ROCK4 = 0x1D6,
-} Tile;
+ SPECIAL_TILE_0 = 0x4000, // Pots
+ SPECIAL_TILE_1 = 0x4001, // Move Pot Up
+ SPECIAL_TILE_2 = 0x4002, // Move Pot Right
+ SPECIAL_TILE_3 = 0x4003, // Move Pot Down
+ SPECIAL_TILE_4 = 0x4004, // Move Pot Left
+ SPECIAL_TILE_5 = 0x4005,
+ SPECIAL_TILE_6 = 0x4006,
+ SPECIAL_TILE_7 = 0x4007,
+ SPECIAL_TILE_8 = 0x4008,
+ SPECIAL_TILE_9 = 0x4009,
+ SPECIAL_TILE_10 = 0x400a,
+ SPECIAL_TILE_11 = 0x400b, // Statues/ Pillar Gates
+ SPECIAL_TILE_12 = 0x400c, // Move Statue Up
+ SPECIAL_TILE_13 = 0x400d, // Move Statue Right
+ SPECIAL_TILE_14 = 0x400e, // Move Statue Down
+ SPECIAL_TILE_15 = 0x400f, // Move Statue Left
+ SPECIAL_TILE_16 = 0x4010,
+ SPECIAL_TILE_17 = 0x4011,
+ SPECIAL_TILE_18 = 0x4012,
+ SPECIAL_TILE_19 = 0x4013,
+ SPECIAL_TILE_20 = 0x4014, // Beanstalk/Ladder Top (Transition)
+ SPECIAL_TILE_21 = 0x4015, // Boulder in Hole
+ SPECIAL_TILE_22 = 0x4016,
+ SPECIAL_TILE_23 = 0x4017, // Beanstalk/Ladder
+ SPECIAL_TILE_24 = 0x4018,
+ SPECIAL_TILE_25 = 0x4019,
+ SPECIAL_TILE_26 = 0x401a,
+ SPECIAL_TILE_27 = 0x401b, // Boulder
+ SPECIAL_TILE_28 = 0x401c, // Move Bolder Up
+ SPECIAL_TILE_29 = 0x401d, // Move Bolder Right
+ SPECIAL_TILE_30 = 0x401e, // Move Bolder Down
+ SPECIAL_TILE_31 = 0x401f, // Move Bolder Left
+ SPECIAL_TILE_32 = 0x4020, // Spring hole (Cane shot hole)
+ SPECIAL_TILE_33 = 0x4021,
+ SPECIAL_TILE_34 = 0x4022, // Furniture Center Locked Door/Frozen Element/Octo/O Shaped Ice (ToD) Big Chest
+ // Closed (ToD) Gust Jar Mushrooms (ToD) Perhaps this is just tiles that change on
+ // interaction?
+ SPECIAL_TILE_35 = 0x4023, // Object Top
+ SPECIAL_TILE_36 = 0x4024, // Object Left
+ SPECIAL_TILE_37 = 0x4025, // Object Right
+ SPECIAL_TILE_38 = 0x4026, // Object Bottom
+ SPECIAL_TILE_39 = 0x4027, // Object Top Left Corner
+ SPECIAL_TILE_40 = 0x4028, // Object Top Right Corner
+ SPECIAL_TILE_41 = 0x4029, // Object Bottom Left Corner
+ SPECIAL_TILE_42 = 0x402a, // Object Bottom Right Corner
+ SPECIAL_TILE_43 = 0x402b, // Push Object Either (1 off)
+ SPECIAL_TILE_44 = 0x402c, // Push Object Left (1 off)
+ SPECIAL_TILE_45 = 0x402d, // Push Object Right (1 off)
+ SPECIAL_TILE_46 = 0x402e, // Push Object Either
+ SPECIAL_TILE_47 = 0x402f,
+ SPECIAL_TILE_48 = 0x4030,
+ SPECIAL_TILE_49 = 0x4031, // Pushed Object
+ SPECIAL_TILE_50 = 0x4032, // Blue Bean in Hole
+ SPECIAL_TILE_51 = 0x4033,
+ SPECIAL_TILE_52 = 0x4034,
+ SPECIAL_TILE_53 = 0x4035,
+ SPECIAL_TILE_54 = 0x4036, // Pillar w/ Object
+ SPECIAL_TILE_55 = 0x4037, // Move pillar Up
+ SPECIAL_TILE_56 = 0x4038, // Move pillar Right
+ SPECIAL_TILE_57 = 0x4039, // Move pillar Down
+ SPECIAL_TILE_58 = 0x403a, // Move pillar Left
+ SPECIAL_TILE_59 = 0x403b, // Green Bean in Hole
+ SPECIAL_TILE_60 = 0x403c,
+ SPECIAL_TILE_61 = 0x403d, // Minish Path Under Stick, Stone over hole in light rooms (ToD), Object Blocking
+ // Town doors
+ SPECIAL_TILE_62 = 0x403e, // Grave
+ SPECIAL_TILE_63 = 0x403f,
+ SPECIAL_TILE_64 = 0x4040, // Portal Top Left
+ SPECIAL_TILE_65 = 0x4041, // Portal Top
+ SPECIAL_TILE_66 = 0x4042, // Portal Top Right
+ SPECIAL_TILE_67 = 0x4043, // Portal Left
+ SPECIAL_TILE_68 = 0x4044, // Portal Center
+ SPECIAL_TILE_69 = 0x4045, // Portal Right
+ SPECIAL_TILE_70 = 0x4046, // Portal Bottom Left
+ SPECIAL_TILE_71 = 0x4047, // Portal Bottom
+ SPECIAL_TILE_72 = 0x4048, // Portal Bottom Right
+ SPECIAL_TILE_73 = 0x4049,
+ SPECIAL_TILE_74 = 0x404a, // Push Box
+ SPECIAL_TILE_75 = 0x404b, // Move Block Up
+ SPECIAL_TILE_76 = 0x404c, // Move Block Right
+ SPECIAL_TILE_77 = 0x404d, // Move Block Down
+ SPECIAL_TILE_78 = 0x404e, // Push Box Locked
+ SPECIAL_TILE_79 = 0x404f,
+ SPECIAL_TILE_80 = 0x4050, // Impact Switch
+ SPECIAL_TILE_81 = 0x4051,
+ SPECIAL_TILE_82 = 0x4052, // Lever (facing left)
+ SPECIAL_TILE_83 = 0x4053, // Lever (facing up)
+ SPECIAL_TILE_84 = 0x4054, // After Lever push (facing left)
+ SPECIAL_TILE_85 = 0x4055, // Big lever (facing left inside)
+ SPECIAL_TILE_86 = 0x4056, // Big lever (facing left outside)
+ SPECIAL_TILE_87 = 0x4057, // Big lever (facing up inside)
+ SPECIAL_TILE_88 = 0x4058, // Big lever (facing up outside)
+ SPECIAL_TILE_89 = 0x4059,
+ SPECIAL_TILE_90 = 0x405a, // Ice Blocks
+ SPECIAL_TILE_91 = 0x405b, // Move Block Up
+ SPECIAL_TILE_92 = 0x405c, // Move Block Right
+ SPECIAL_TILE_93 = 0x405d, // Move Block Down
+ SPECIAL_TILE_94 = 0x405e, // Move Block Left
+ SPECIAL_TILE_95 = 0x405f,
+ SPECIAL_TILE_96 = 0x4060, // Skull
+ SPECIAL_TILE_97 = 0x4061, // Lit Fireplace
+ SPECIAL_TILE_98 = 0x4062,
+ SPECIAL_TILE_99 = 0x4063,
+ SPECIAL_TILE_100 = 0x4064,
+ SPECIAL_TILE_101 = 0x4065, // Tree Thorns Right
+ SPECIAL_TILE_102 = 0x4066, // Tree Thorns Left
+ SPECIAL_TILE_103 = 0x4067,
+ SPECIAL_TILE_104 = 0x4068, // Hot Ash Covering Objects
+ SPECIAL_TILE_105 = 0x4069, // Loading Zone
+ SPECIAL_TILE_106 = 0x406a,
+ SPECIAL_TILE_107 = 0x406b,
+ SPECIAL_TILE_108 = 0x406c, // Acorn Top Left
+ SPECIAL_TILE_109 = 0x406d, // Acorn Top Right
+ SPECIAL_TILE_110 = 0x406e, // Acorn Bottom Left
+ SPECIAL_TILE_111 = 0x406f, // Acorn Bottom Right
+ SPECIAL_TILE_112 = 0x4070, // Link in a hole
+ SPECIAL_TILE_113 = 0x4071,
+ SPECIAL_TILE_114 = 0x4072, // Blocking Library, all kinds of objects?
+ SPECIAL_TILE_115 = 0x4073,
+ SPECIAL_TILE_116 = 0x4074, // Leaf
+ SPECIAL_TILE_117 = 0x4075, // Chest Ice Block Top Left
+ SPECIAL_TILE_118 = 0x4076, // Chest Ice Block Top Right
+ SPECIAL_TILE_119 = 0x4077, // Chest Ice Block Top
+ SPECIAL_TILE_120 = 0x4078, // Chest Ice Block Bottom Left
+ SPECIAL_TILE_121 = 0x4079, // Chest Ice Block Left
+ SPECIAL_TILE_122 = 0x407a, // Chest Ice Block Bottom Right
+ SPECIAL_TILE_123 = 0x407b, // Chest Ice Block Right
+ SPECIAL_TILE_124 = 0x407c, // Chest Ice Block Bottom
+ SPECIAL_TILE_125 = 0x407d, // Town Well
+ SPECIAL_TILE_126 = 0x407e,
+ SPECIAL_TILE_127 = 0x407f,
+ SPECIAL_TILE_128 = 0x4080, // Dig Cave Outside
+ SPECIAL_TILE_129 = 0x4081,
+ SPECIAL_TILE_130 = 0x4082, // Bookshelf slider
+ SPECIAL_TILE_131 = 0x4083, // Minish House doorways
+ SPECIAL_TILE_132 = 0x4084,
+ SPECIAL_TILE_133 = 0x4085,
+ SPECIAL_TILE_134 = 0x4086,
+ SPECIAL_TILE_135 = 0x4087,
+ SPECIAL_TILE_136 = 0x4088,
+ SPECIAL_TILE_137 = 0x4089, // Shallow Water Outside ToD
+ SPECIAL_TILE_138 = 0x408a, // Shallow Water Outside ToD
+ SPECIAL_TILE_139 = 0x408b, // Shallow Water Outside ToD
+ SPECIAL_TILE_140 = 0x408c, // Shallow Water Outside ToD
+ SPECIAL_TILE_141 = 0x408d,
+ SPECIAL_TILE_142 = 0x408e, // Climb Wall Down, Library book ladder, Rock Boost
+ SPECIAL_TILE_143 = 0x408f, // Climb Wall Up, Rock Boost
+ SPECIAL_TILE_144 = 0x4090,
+ SPECIAL_TILE_145 = 0x4091, // Shallow Water Outside ToD
+ SPECIAL_TILE_146 = 0x4092, // Minish Pot Top Left Flipping
+ SPECIAL_TILE_147 = 0x4093, // Minish Pot Top Right Flipping
+ SPECIAL_TILE_148 = 0x4094, // Minish Pot Bottom Left Flipping
+ SPECIAL_TILE_149 = 0x4095, // Minish Pot Botom Right Flipping
+ SPECIAL_TILE_150 = 0x4096,
+} SpecialTile;
+typedef enum {
+ ACT_TILE_0 = 0x0, // TILE_ACT_CUT
+ ACT_TILE_1 = 0x1, // TILE_ACT_ROCKBREAKER
+ ACT_TILE_2 = 0x2, // TILE_ACT_BOOMERANG
+ ACT_TILE_3 = 0x3, // TILE_ACT_BOMB
+ ACT_TILE_4 = 0x4, // TILE_ACT_ARROW
+ ACT_TILE_5 = 0x5, // TILE_ACT_GUST
+ ACT_TILE_6 = 0x6, // TILE_ACT_LIFT
+ ACT_TILE_7 = 0x7, // TILE_ACT_FIRE
+ ACT_TILE_8 = 0x8, // TILE_ACT_PLAYER_WALK -> SURFACE_7
+ ACT_TILE_9 = 0x9, // TILE_ACT_ENEMY_WALK sub_0801FDE4(leever)
+ ACT_TILE_10 = 0xa, // TILE_ACT_PACCI sub_0801FDE4(leever), sub_08025AB8(puffstool)
+ ACT_TILE_11 = 0xb, // sub_0801FDE4(leever)
+ ACT_TILE_12 = 0xc, // TILE_ACT_SWORDBEAM sub_0801FDE4(leever)
+ ACT_TILE_13 =
+ 0xd, // TILE_ACT_DIG -> SURFACE_PIT, sub_08094E30(cutsceneMiscObject), sub_08085B40(lilypadLarge), Pot_Action1,
+ // sub_080AD040(playerItemHeldObject), UpdatePlayerCollision, sub_0807B434(playerUtils), FX_FALL_DOWN
+ ACT_TILE_14 = 0xe, // TILE_ACT_MINIGUST -> SURFACE_SLOPE_GNDWATER
+ ACT_TILE_15 = 0xf, // -> SURFACE_SHALLOW_WATER, SPECIAL_TILE_145
+ ACT_TILE_16 = 0x10, // -> SURFACE_WATER, CheckWaterTile(chuchu), PlayerItemBottle_UseEmptyBottle, SPECIAL_TILE_137 -
+ // 140, sub_080AD040(playerItemHeldObject), FX_WATER_SPLASH
+ ACT_TILE_17 =
+ 0x11, // -> SURFACE_14, sub_08085A44(lilypadLarge), sub_080AD040(playerItemHeldObject), FX_WATER_SPLASH
+ ACT_TILE_18 = 0x12, // -> SURFACE_ICE, SPECIAL_TILE_117 - 124
+ ACT_TILE_19 = 0x13, // -> SURFACE_SWAMP, sub_0803163C(rope), sub_080AD040(playerItemHeldObject), FX_GREEN_SPLASH
+ ACT_TILE_20 = 0x14,
+ ACT_TILE_21 = 0x15,
+ ACT_TILE_22 = 0x16, // -> SURFACE_DUST
+ ACT_TILE_23 = 0x17, // -> SURFACE_2D
+ ACT_TILE_24 = 0x18, // -> SURFACE_16
+ ACT_TILE_25 = 0x19, // -> SURFACE_HOLE, CrenelBeanSprout_Action1, sub_08097144(objectOnPillar),
+ // sub_0808A644(pushableRock), sub_080701F8(playerItemPacciCaneProjectile)
+ ACT_TILE_26 = 0x1a,
+ ACT_TILE_27 = 0x1b, // -> SURFACE_BUTTON
+ ACT_TILE_28 = 0x1c,
+ ACT_TILE_29 = 0x1d, // -> SURFACE_BUTTON
+ ACT_TILE_30 = 0x1e,
+ ACT_TILE_31 = 0x1f, // -> SURFACE_MINISH_DOOR_FRONT
+ ACT_TILE_32 = 0x20, // -> SURFACE_MINISH_DOOR_BACK
+ ACT_TILE_33 = 0x21, // -> SURFACE_A
+ ACT_TILE_34 = 0x22, // -> SURFACE_B
+ ACT_TILE_35 = 0x23, // SPECIAL_TILE_130
+ ACT_TILE_36 = 0x24,
+ ACT_TILE_37 = 0x25,
+ ACT_TILE_38 = 0x26, // -> SURFACE_SLOPE_GNDGND_V
+ ACT_TILE_39 = 0x27, // -> SURFACE_SLOPE_GNDGND_H
+ ACT_TILE_40 = 0x28, // -> SURFACE_DOOR_13, SPECIAL_TILE_105, sub_080732D0(player), UpdateDoorTransition
+ ACT_TILE_41 = 0x29, // -> SURFACE_DOOR, sub_08076DF4(itemGustJar), Minecart_Action3, sub_080896B0(pushableStatue),
+ // SPECIAL_TILE_128, SPECIAL_TILE_131 - 136, SPECIAL_TILE_141, sub_080724DC(player),
+ // UpdateDoorTransition
+ ACT_TILE_42 = 0x2a, // -> SURFACE_E, sub_080611D4(npc5)
+ ACT_TILE_43 = 0x2b, // -> SURFACE_D, sub_080611D4(npc5)
+ ACT_TILE_44 = 0x2c, // -> SURFACE_10, sub_080611D4(npc5)
+ ACT_TILE_45 = 0x2d, // -> SURFACE_F, sub_080611D4(npc5)
+ ACT_TILE_46 = 0x2e, // BombableWallManager_Action1, sub_080878CC(smokeParticle), sub_080A7A84(playerItemSword)
+ ACT_TILE_47 = 0x2f,
+ ACT_TILE_48 = 0x30, // -> SURFACE_22
+ ACT_TILE_49 = 0x31, // -> SURFACE_22
+ ACT_TILE_50 = 0x32, // -> SURFACE_22
+ ACT_TILE_51 = 0x33, // -> SURFACE_22
+ ACT_TILE_52 = 0x34, // -> SURFACE_LIGHT_GRADE
+ ACT_TILE_53 = 0x35, // -> SURFACE_29
+ ACT_TILE_54 = 0x36,
+ ACT_TILE_55 = 0x37,
+ ACT_TILE_56 = 0x38,
+ ACT_TILE_57 = 0x39,
+ ACT_TILE_58 = 0x3a, // SPECIAL_TILE_81
+ ACT_TILE_59 = 0x3b,
+ ACT_TILE_60 = 0x3c,
+ ACT_TILE_61 = 0x3d, // MinishPortalManager_Main, SPECIAL_TILE_64 - 72
+ ACT_TILE_62 = 0x3e, // sub_080AA544(removableDust)
+ ACT_TILE_63 = 0x3f, // -> SURFACE_AUTO_LADDER, FurnitureInit(for STAIRCASE), UpdateDoorTransition
+ ACT_TILE_64 = 0x40, // -> SURFACE_E
+ ACT_TILE_65 = 0x41, // -> SURFACE_D
+ ACT_TILE_66 = 0x42, // -> SURFACE_10
+ ACT_TILE_67 = 0x43, // -> SURFACE_F
+ ACT_TILE_68 = 0x44, // -> SURFACE_D
+ ACT_TILE_69 = 0x45, // -> SURFACE_E
+ ACT_TILE_70 = 0x46, // -> SURFACE_D
+ ACT_TILE_71 = 0x47, // -> SURFACE_E
+ ACT_TILE_72 = 0x48, // -> SURFACE_10
+ ACT_TILE_73 = 0x49, // -> SURFACE_D
+ ACT_TILE_74 = 0x4a, // -> SURFACE_E
+ ACT_TILE_75 = 0x4b, // -> SURFACE_D
+ ACT_TILE_76 = 0x4c,
+ ACT_TILE_77 = 0x4d,
+ ACT_TILE_78 = 0x4e,
+ ACT_TILE_79 = 0x4f,
+ ACT_TILE_80 = 0x50, // -> SURFACE_CLIMB_WALL, SPECIAL_TILE_142
+ ACT_TILE_81 = 0x51, // -> SURFACE_2C, SPECIAL_TILE_143
+ ACT_TILE_82 = 0x52, // -> SURFACE_26
+ ACT_TILE_83 = 0x53, // -> SURFACE_LADDER, SPECIAL_TILE_23
+ ACT_TILE_84 = 0x54, // TreeHidingPortal_Action1
+ ACT_TILE_85 = 0x55,
+ ACT_TILE_86 = 0x56, // sub_080774A0(itemMoleMitts), sub_0807B464(playerUtils)
+ ACT_TILE_87 = 0x57, // -> SURFACE_CLONE_TILE, sub_0806B0E0(townMinish)
+ ACT_TILE_88 = 0x58,
+ ACT_TILE_89 = 0x59,
+ ACT_TILE_90 = 0x5a, // -> SURFACE_1C, sub_080AD040(playerItemHeldObject), FX_LAVA_SPLASH
+ ACT_TILE_91 = 0x5b,
+ ACT_TILE_92 = 0x5c,
+ ACT_TILE_93 = 0x5d,
+ ACT_TILE_94 = 0x5e,
+ ACT_TILE_95 = 0x5f,
+ ACT_TILE_96 = 0x60,
+ ACT_TILE_97 = 0x61, // -> SURFACE_1B
+ ACT_TILE_98 = 0x62, // -> SURFACE_21
+ ACT_TILE_99 = 0x63, // -> SURFACE_24
+ ACT_TILE_100 = 0x64, // Minecart_Action3
+ ACT_TILE_101 = 0x65, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_102 = 0x66, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_103 = 0x67, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_104 = 0x68, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_105 = 0x69, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_106 = 0x6a, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_107 = 0x6b, // -> SURFACE_6
+ ACT_TILE_108 = 0x6c, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_109 = 0x6d, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_110 = 0x6e, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_111 = 0x6f, // -> SURFACE_6, Minecart_Action3
+ ACT_TILE_112 = 0x70,
+ ACT_TILE_113 = 0x71,
+ ACT_TILE_114 = 0x72,
+ ACT_TILE_115 = 0x73,
+ ACT_TILE_116 = 0x74, // -> SURFACE_EDGE, SPECIAL_TILE_126, SPECIAL_TILE_127, sub_08018E68(playerItemGustBig),
+ // sub_080AD040(playerItemHeldObject)
+ ACT_TILE_117 = 0x75,
+ ACT_TILE_240 = 0xf0, // -> SURFACE_HOLE, sub_0802F300(tektite), sub_0808A644(pushableRock), SPECIAL_TILE_32
+ ACT_TILE_241 = 0xf1, // -> SURFACE_LADDER, sub_0802F300(tektite), SPECIAL_TILE_20, UpdateDoorTransition
+ ACT_TILE_242 = 0xf2, // sub_0802F300(tektite), Minecart_Action3, SPECIAL_TILE_24
+ ACT_TILE_243 = 0xf3, // sub_0802F300(tektite), Minecart_Action3, SPECIAL_TILE_25
+ // up to ACT_TILE_255 -> sub_0802F300(tektite)
+} ActTile;
+
+typedef enum {
+ COLLISION_DATA_0 = 0x0,
+ COLLISION_DATA_1 = 0x1,
+ COLLISION_DATA_2 = 0x2,
+ COLLISION_DATA_3 = 0x3,
+ COLLISION_DATA_4 = 0x4,
+ COLLISION_DATA_5 = 0x5,
+ COLLISION_DATA_6 = 0x6,
+ COLLISION_DATA_7 = 0x7,
+ COLLISION_DATA_8 = 0x8,
+ COLLISION_DATA_9 = 0x9,
+ COLLISION_DATA_10 = 0xa,
+ COLLISION_DATA_11 = 0xb,
+ COLLISION_DATA_12 = 0xc,
+ COLLISION_DATA_13 = 0xd,
+ COLLISION_DATA_14 = 0xe,
+ COLLISION_DATA_15 = 0xf,
+ COLLISION_DATA_16 = 0x10,
+ COLLISION_DATA_17 = 0x11,
+ COLLISION_DATA_18 = 0x12,
+ COLLISION_DATA_19 = 0x13,
+ COLLISION_DATA_20 = 0x14,
+ COLLISION_DATA_21 = 0x15,
+ COLLISION_DATA_23 = 0x17,
+ COLLISION_DATA_24 = 0x18,
+ COLLISION_DATA_25 = 0x19,
+ COLLISION_DATA_26 = 0x1a,
+ COLLISION_DATA_27 = 0x1b,
+ COLLISION_DATA_28 = 0x1c,
+ COLLISION_DATA_29 = 0x1d,
+ COLLISION_DATA_32 = 0x20,
+ COLLISION_DATA_33 = 0x21, // FX_FALL_DOWN
+ COLLISION_DATA_34 = 0x22,
+ COLLISION_DATA_35 = 0x23,
+ COLLISION_DATA_36 = 0x24, // FX_WATER_SPLASH
+ COLLISION_DATA_37 = 0x25, // FX_LAVA_SPLASH
+ COLLISION_DATA_38 = 0x26,
+ COLLISION_DATA_39 = 0x27,
+ COLLISION_DATA_40 = 0x28,
+ COLLISION_DATA_41 = 0x29,
+ COLLISION_DATA_42 = 0x2a,
+ COLLISION_DATA_43 = 0x2b,
+ COLLISION_DATA_44 = 0x2c,
+ COLLISION_DATA_45 = 0x2d,
+ COLLISION_DATA_46 = 0x2e,
+ COLLISION_DATA_47 = 0x2f,
+ COLLISION_DATA_48 = 0x30, // FX_WATER_SPLASH
+ COLLISION_DATA_49 = 0x31,
+ COLLISION_DATA_50 = 0x32,
+ COLLISION_DATA_58 = 0x3a,
+ COLLISION_DATA_60 = 0x3c,
+ COLLISION_DATA_63 = 0x3f,
+ COLLISION_DATA_66 = 0x42,
+ COLLISION_DATA_67 = 0x43,
+ COLLISION_DATA_68 = 0x44,
+ COLLISION_DATA_69 = 0x45,
+ COLLISION_DATA_70 = 0x46,
+ COLLISION_DATA_71 = 0x47,
+ COLLISION_DATA_72 = 0x48,
+ COLLISION_DATA_74 = 0x4a,
+ COLLISION_DATA_75 = 0x4b,
+ COLLISION_DATA_80 = 0x50,
+ COLLISION_DATA_81 = 0x51,
+ COLLISION_DATA_82 = 0x52,
+ COLLISION_DATA_83 = 0x53,
+ COLLISION_DATA_84 = 0x54,
+ COLLISION_DATA_85 = 0x55,
+ COLLISION_DATA_87 = 0x57,
+ COLLISION_DATA_88 = 0x58,
+ COLLISION_DATA_89 = 0x59,
+ COLLISION_DATA_90 = 0x5a,
+ COLLISION_DATA_91 = 0x5b,
+ COLLISION_DATA_92 = 0x5c,
+ COLLISION_DATA_93 = 0x5d,
+ COLLISION_DATA_94 = 0x5e,
+ COLLISION_DATA_95 = 0x5f,
+ COLLISION_DATA_96 = 0x60,
+ COLLISION_DATA_97 = 0x61,
+ COLLISION_DATA_98 = 0x62,
+ COLLISION_DATA_99 = 0x63,
+ COLLISION_DATA_100 = 0x64,
+ COLLISION_DATA_101 = 0x65,
+ COLLISION_DATA_102 = 0x66,
+ COLLISION_DATA_103 = 0x67,
+ COLLISION_DATA_104 = 0x68,
+ COLLISION_DATA_105 = 0x69,
+ COLLISION_DATA_106 = 0x6a,
+ COLLISION_DATA_107 = 0x6b,
+ COLLISION_DATA_255 = 0xff,
+} CollisionData;
#endif // TILES_H