Fix format

This commit is contained in:
octorock 2024-01-06 18:22:00 +01:00
parent 560dfa45b1
commit 1ecc23d534
46 changed files with 291 additions and 295 deletions

View File

@ -7,8 +7,6 @@ extern u32 Random(void);
extern u32 GetRandomByWeight(const u8*); extern u32 GetRandomByWeight(const u8*);
extern void CloneTile(u32, u32, u32); extern void CloneTile(u32, u32, u32);
extern void SetTile(u32 tileIndex, u32 tilePos, u32 layer); extern void SetTile(u32 tileIndex, u32 tilePos, u32 layer);
extern void UpdateScrollVram(void); extern void UpdateScrollVram(void);
@ -50,7 +48,6 @@ extern u32 sub_0800132C(struct Entity_*, struct Entity_*);
extern u32 sub_0800445C(struct Entity_*); extern u32 sub_0800445C(struct Entity_*);
extern u32 CheckRectOnScreen(s32, s32, u32, u32); extern u32 CheckRectOnScreen(s32, s32, u32, u32);
extern u32 GetTileTypeRelativeToEntity(struct Entity_* entity, s32 xOffset, s32 yOffset); extern u32 GetTileTypeRelativeToEntity(struct Entity_* entity, s32 xOffset, s32 yOffset);
extern u32 GetTileTypeAtEntity(struct Entity_* entity); extern u32 GetTileTypeAtEntity(struct Entity_* entity);
extern u32 GetTileTypeAtWorldCoords(s32 worldX, s32 worldY, u32 layer); extern u32 GetTileTypeAtWorldCoords(s32 worldX, s32 worldY, u32 layer);
@ -64,7 +61,6 @@ extern u32 GetActTileAtRoomCoords(u32 roomX, u32 roomY, u32 layer);
extern u32 GetActTileAtRoomTile(u32 roomTileX, u32 roomTileY, u32 layer); extern u32 GetActTileAtRoomTile(u32 roomTileX, u32 roomTileY, u32 layer);
extern u32 GetActTileAtTilePos(u16 tilePos, u8 layer); extern u32 GetActTileAtTilePos(u16 tilePos, u8 layer);
/** /**
* Sets actTile for a tilePos. * Sets actTile for a tilePos.
*/ */
@ -96,7 +92,6 @@ extern u32 GetCollisionDataAtTilePos(u32 tilePos, u32 layer);
*/ */
extern void SetCollisionData(u32 collisionData, u32 tilePos, u32 layer); extern void SetCollisionData(u32 collisionData, u32 tilePos, u32 layer);
extern u32 GetActTileForTileType(u32 tileType); extern u32 GetActTileForTileType(u32 tileType);
typedef struct { typedef struct {

View File

@ -78,8 +78,10 @@
#if NON_MATCHING #if NON_MATCHING
#define ASM_FUNC(path, decl) #define ASM_FUNC(path, decl)
#else #else
#define ASM_FUNC(path, decl) \ #define ASM_FUNC(path, decl) \
NAKED decl { asm(".include " #path); } NAKED decl { \
asm(".include " #path); \
}
#endif #endif
#if NON_MATCHING #if NON_MATCHING

View File

@ -32,10 +32,10 @@ enum DiggingCaveEntranceType {
typedef struct { typedef struct {
u16 sourceTilePos; /**< Tile position for the entrance in the source room. */ u16 sourceTilePos; /**< Tile position for the entrance in the source room. */
u8 sourceRoom; /**< @see RoomID */ u8 sourceRoom; /**< @see RoomID */
u8 type; /**< @see DiggingCaveEntranceType */ u8 type; /**< @see DiggingCaveEntranceType */
u8 targetArea; /**< @see AreaID */ u8 targetArea; /**< @see AreaID */
u8 targetRoom; /**< @see RoomID */ u8 targetRoom; /**< @see RoomID */
u16 targetTilePos; /**< Tile position for the entrance in the target room. */ u16 targetTilePos; /**< Tile position for the entrance in the target room. */
} DiggingCaveEntrance; } DiggingCaveEntrance;

View File

@ -6,8 +6,8 @@
typedef struct { typedef struct {
struct Manager base; struct Manager base;
u8 field_0x20[0x18]; u8 field_0x20[0x18];
s16 tilePos; // x s16 x; // After loading this stores the tilePos.
s16 field_0x3a; // y s16 y;
} FlameManager; } FlameManager;
#endif // FLAMEMANAGER_H #endif // FLAMEMANAGER_H

View File

@ -8,22 +8,26 @@
* @brief The map consists of tiles to create the world. * @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*. * 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*. * 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. * 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. * 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. * 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. * 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_*. * A tile is created from four subTiles. The subTiles for each tile in the tileSet are stored in MapLayer.subTiles. This
* 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. * 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_*. * Each tile in the tileSet also has a tileType defined. This is stored in MapLayer.tileTypes and loaded from
* The inverse dictionary from tileType to tileIndex is stored in MapLayer.tileIndices. * 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. * The map also stores the collision for each tile in the tileMap layer in MapLayer.collisionData. By default this is
* But it can also be loaded from gRoomCollisionMap_*. * filled from gMapTileTypeToCollisionData based on the tileType of the tiles. But it can also be loaded from
* In MapLayer.actTiles some additional type for each tile is stored which is filled from gMapTileTypeToActTile based on the tileType of the tiles. * 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. // Maximum width or height of a map in tiles.
@ -67,7 +71,8 @@ typedef struct {
*/ */
/*0x7004*/ u16 subTiles[TILESET_SIZE * 4]; /*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. * Some sort of special behavior for tiles? Falling into holes or jumping off walls does not work when this is all
* zero.
* @see ActTile * @see ActTile
*/ */
/*0xb004*/ u8 actTiles[MAX_MAP_SIZE * MAX_MAP_SIZE]; /*0xb004*/ u8 actTiles[MAX_MAP_SIZE * MAX_MAP_SIZE];

View File

@ -89,8 +89,8 @@ typedef struct {
u8 area; u8 area;
u8 room; u8 room;
u16 unk_02; u16 unk_02;
u32 enemyBits; /**< Flags that can be set on the tracked rooms. Used e.g. by the door mimic. (TODO probably to start in u32 enemyBits; /**< Flags that can be set on the tracked rooms. Used e.g. by the door mimic. (TODO probably to start
the discovered state?)*/ in the discovered state?)*/
} RoomMemory; } RoomMemory;
extern RoomMemory* gCurrentRoomMemory; extern RoomMemory* gCurrentRoomMemory;

View File

@ -1,7 +1,6 @@
#ifndef TILES_H #ifndef TILES_H
#define TILES_H #define TILES_H
typedef enum { typedef enum {
TILE_TYPE_0 = 0x0, TILE_TYPE_0 = 0x0,
TILE_TYPE_1 = 0x1, TILE_TYPE_1 = 0x1,
@ -1437,8 +1436,8 @@ typedef enum {
SPECIAL_TILE_32 = 0x4020, // Spring hole (Cane shot hole) SPECIAL_TILE_32 = 0x4020, // Spring hole (Cane shot hole)
SPECIAL_TILE_33 = 0x4021, SPECIAL_TILE_33 = 0x4021,
SPECIAL_TILE_34 = 0x4022, // Furniture Center Locked Door/Frozen Element/Octo/O Shaped Ice (ToD) Big Chest 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 // Closed (ToD) Gust Jar Mushrooms (ToD) Perhaps this is just tiles that change on
// interaction? // interaction?
SPECIAL_TILE_35 = 0x4023, // Object Top SPECIAL_TILE_35 = 0x4023, // Object Top
SPECIAL_TILE_36 = 0x4024, // Object Left SPECIAL_TILE_36 = 0x4024, // Object Left
SPECIAL_TILE_37 = 0x4025, // Object Right SPECIAL_TILE_37 = 0x4025, // Object Right
@ -1466,7 +1465,7 @@ typedef enum {
SPECIAL_TILE_59 = 0x403b, // Green Bean in Hole SPECIAL_TILE_59 = 0x403b, // Green Bean in Hole
SPECIAL_TILE_60 = 0x403c, SPECIAL_TILE_60 = 0x403c,
SPECIAL_TILE_61 = 0x403d, // Minish Path Under Stick, Stone over hole in light rooms (ToD), Object Blocking SPECIAL_TILE_61 = 0x403d, // Minish Path Under Stick, Stone over hole in light rooms (ToD), Object Blocking
// Town doors // Town doors
SPECIAL_TILE_62 = 0x403e, // Grave SPECIAL_TILE_62 = 0x403e, // Grave
SPECIAL_TILE_63 = 0x403f, SPECIAL_TILE_63 = 0x403f,
SPECIAL_TILE_64 = 0x4040, // Portal Top Left SPECIAL_TILE_64 = 0x4040, // Portal Top Left
@ -1559,26 +1558,28 @@ typedef enum {
} SpecialTile; } SpecialTile;
typedef enum { typedef enum {
ACT_TILE_0 = 0x0, // TILE_ACT_CUT ACT_TILE_0 = 0x0, // TILE_ACT_CUT
ACT_TILE_1 = 0x1, // TILE_ACT_ROCKBREAKER ACT_TILE_1 = 0x1, // TILE_ACT_ROCKBREAKER
ACT_TILE_2 = 0x2, // TILE_ACT_BOOMERANG ACT_TILE_2 = 0x2, // TILE_ACT_BOOMERANG
ACT_TILE_3 = 0x3, // TILE_ACT_BOMB ACT_TILE_3 = 0x3, // TILE_ACT_BOMB
ACT_TILE_4 = 0x4, // TILE_ACT_ARROW ACT_TILE_4 = 0x4, // TILE_ACT_ARROW
ACT_TILE_5 = 0x5, // TILE_ACT_GUST ACT_TILE_5 = 0x5, // TILE_ACT_GUST
ACT_TILE_6 = 0x6, // TILE_ACT_LIFT ACT_TILE_6 = 0x6, // TILE_ACT_LIFT
ACT_TILE_7 = 0x7, // TILE_ACT_FIRE ACT_TILE_7 = 0x7, // TILE_ACT_FIRE
ACT_TILE_8 = 0x8, // TILE_ACT_PLAYER_WALK -> SURFACE_7 ACT_TILE_8 = 0x8, // TILE_ACT_PLAYER_WALK -> SURFACE_7
ACT_TILE_9 = 0x9, // TILE_ACT_ENEMY_WALK sub_0801FDE4(leever) 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_10 = 0xa, // TILE_ACT_PACCI sub_0801FDE4(leever), sub_08025AB8(puffstool)
ACT_TILE_11 = 0xb, // sub_0801FDE4(leever) ACT_TILE_11 = 0xb, // sub_0801FDE4(leever)
ACT_TILE_12 = 0xc, // TILE_ACT_SWORDBEAM 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, ACT_TILE_13 =
// sub_080AD040(playerItemHeldObject), UpdatePlayerCollision, sub_0807B434(playerUtils), FX_FALL_DOWN 0xd, // TILE_ACT_DIG -> SURFACE_PIT, sub_08094E30(cutsceneMiscObject), sub_08085B40(lilypadLarge), Pot_Action1,
ACT_TILE_14 = 0xe, // TILE_ACT_MINIGUST -> SURFACE_SLOPE_GNDWATER // sub_080AD040(playerItemHeldObject), UpdatePlayerCollision, sub_0807B434(playerUtils), FX_FALL_DOWN
ACT_TILE_15 = 0xf, // -> SURFACE_SHALLOW_WATER, SPECIAL_TILE_145 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 - ACT_TILE_16 = 0x10, // -> SURFACE_WATER, CheckWaterTile(chuchu), PlayerItemBottle_UseEmptyBottle, SPECIAL_TILE_137 -
// 140, sub_080AD040(playerItemHeldObject), FX_WATER_SPLASH // 140, sub_080AD040(playerItemHeldObject), FX_WATER_SPLASH
ACT_TILE_17 = 0x11, // -> SURFACE_14, sub_08085A44(lilypadLarge), 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_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_19 = 0x13, // -> SURFACE_SWAMP, sub_0803163C(rope), sub_080AD040(playerItemHeldObject), FX_GREEN_SPLASH
ACT_TILE_20 = 0x14, ACT_TILE_20 = 0x14,
@ -1586,8 +1587,8 @@ typedef enum {
ACT_TILE_22 = 0x16, // -> SURFACE_DUST ACT_TILE_22 = 0x16, // -> SURFACE_DUST
ACT_TILE_23 = 0x17, // -> SURFACE_2D ACT_TILE_23 = 0x17, // -> SURFACE_2D
ACT_TILE_24 = 0x18, // -> SURFACE_16 ACT_TILE_24 = 0x18, // -> SURFACE_16
ACT_TILE_25 = 0x19, // -> SURFACE_HOLE, CrenelBeanSprout_Action1, sub_08097144(objectOnPillar), sub_0808A644(pushableRock), ACT_TILE_25 = 0x19, // -> SURFACE_HOLE, CrenelBeanSprout_Action1, sub_08097144(objectOnPillar),
// sub_080701F8(playerItemPacciCaneProjectile) // sub_0808A644(pushableRock), sub_080701F8(playerItemPacciCaneProjectile)
ACT_TILE_26 = 0x1a, ACT_TILE_26 = 0x1a,
ACT_TILE_27 = 0x1b, // -> SURFACE_BUTTON ACT_TILE_27 = 0x1b, // -> SURFACE_BUTTON
ACT_TILE_28 = 0x1c, ACT_TILE_28 = 0x1c,
@ -1604,8 +1605,8 @@ typedef enum {
ACT_TILE_39 = 0x27, // -> SURFACE_SLOPE_GNDGND_H ACT_TILE_39 = 0x27, // -> SURFACE_SLOPE_GNDGND_H
ACT_TILE_40 = 0x28, // -> SURFACE_DOOR_13, SPECIAL_TILE_105, sub_080732D0(player), UpdateDoorTransition 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), 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), // SPECIAL_TILE_128, SPECIAL_TILE_131 - 136, SPECIAL_TILE_141, sub_080724DC(player),
// UpdateDoorTransition // UpdateDoorTransition
ACT_TILE_42 = 0x2a, // -> SURFACE_E, sub_080611D4(npc5) ACT_TILE_42 = 0x2a, // -> SURFACE_E, sub_080611D4(npc5)
ACT_TILE_43 = 0x2b, // -> SURFACE_D, sub_080611D4(npc5) ACT_TILE_43 = 0x2b, // -> SURFACE_D, sub_080611D4(npc5)
ACT_TILE_44 = 0x2c, // -> SURFACE_10, sub_080611D4(npc5) ACT_TILE_44 = 0x2c, // -> SURFACE_10, sub_080611D4(npc5)
@ -1661,9 +1662,9 @@ typedef enum {
ACT_TILE_94 = 0x5e, ACT_TILE_94 = 0x5e,
ACT_TILE_95 = 0x5f, ACT_TILE_95 = 0x5f,
ACT_TILE_96 = 0x60, ACT_TILE_96 = 0x60,
ACT_TILE_97 = 0x61, // -> SURFACE_1B ACT_TILE_97 = 0x61, // -> SURFACE_1B
ACT_TILE_98 = 0x62, // -> SURFACE_21 ACT_TILE_98 = 0x62, // -> SURFACE_21
ACT_TILE_99 = 0x63, // -> SURFACE_24 ACT_TILE_99 = 0x63, // -> SURFACE_24
ACT_TILE_100 = 0x64, // Minecart_Action3 ACT_TILE_100 = 0x64, // Minecart_Action3
ACT_TILE_101 = 0x65, // -> SURFACE_6, Minecart_Action3 ACT_TILE_101 = 0x65, // -> SURFACE_6, Minecart_Action3
ACT_TILE_102 = 0x66, // -> SURFACE_6, Minecart_Action3 ACT_TILE_102 = 0x66, // -> SURFACE_6, Minecart_Action3
@ -1681,7 +1682,7 @@ typedef enum {
ACT_TILE_114 = 0x72, ACT_TILE_114 = 0x72,
ACT_TILE_115 = 0x73, ACT_TILE_115 = 0x73,
ACT_TILE_116 = 0x74, // -> SURFACE_EDGE, SPECIAL_TILE_126, SPECIAL_TILE_127, sub_08018E68(playerItemGustBig), ACT_TILE_116 = 0x74, // -> SURFACE_EDGE, SPECIAL_TILE_126, SPECIAL_TILE_127, sub_08018E68(playerItemGustBig),
// sub_080AD040(playerItemHeldObject) // sub_080AD040(playerItemHeldObject)
ACT_TILE_117 = 0x75, ACT_TILE_117 = 0x75,
ACT_TILE_240 = 0xf0, // -> SURFACE_HOLE, sub_0802F300(tektite), sub_0808A644(pushableRock), SPECIAL_TILE_32 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_241 = 0xf1, // -> SURFACE_LADDER, sub_0802F300(tektite), SPECIAL_TILE_20, UpdateDoorTransition

View File

@ -203,7 +203,7 @@ u32 UpdatePlayerCollision(void) {
if (index != 0xff && (gRoomControls.scroll_flags & 4) == 0) { if (index != 0xff && (gRoomControls.scroll_flags & 4) == 0) {
ptr1 = &gUnk_080B4490[index * 2]; ptr1 = &gUnk_080B4490[index * 2];
if (GetCollisionDataAtTilePos(COORD_TO_TILE_OFFSET(&gPlayerEntity.base, -ptr1[0], -ptr1[1]), if (GetCollisionDataAtTilePos(COORD_TO_TILE_OFFSET(&gPlayerEntity.base, -ptr1[0], -ptr1[1]),
gPlayerEntity.base.collisionLayer) == COLLISION_DATA_255) { gPlayerEntity.base.collisionLayer) == COLLISION_DATA_255) {
if ((((gPlayerState.flags & (PL_FLAGS10000 | PL_FLAGS2)) != 0) || if ((((gPlayerState.flags & (PL_FLAGS10000 | PL_FLAGS2)) != 0) ||
((gPlayerState.sword_state & 0x10) != 0)) || ((gPlayerState.sword_state & 0x10) != 0)) ||
((sub_080806BC(gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x, ((sub_080806BC(gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x,
@ -934,8 +934,8 @@ bool32 sub_0801A980(void) {
const s16* ptr; const s16* ptr;
GetLayerByIndex(gPlayerEntity.base.collisionLayer); // TODO result unused? GetLayerByIndex(gPlayerEntity.base.collisionLayer); // TODO result unused?
ptr = &gUnk_080B44A8[gPlayerEntity.base.animationState & 6]; ptr = &gUnk_080B44A8[gPlayerEntity.base.animationState & 6];
tileType = tileType = GetTileTypeAtTilePos(COORD_TO_TILE_OFFSET(&gPlayerEntity.base, -ptr[0], -ptr[1]),
GetTileTypeAtTilePos(COORD_TO_TILE_OFFSET(&gPlayerEntity.base, -ptr[0], -ptr[1]), gPlayerEntity.base.collisionLayer); gPlayerEntity.base.collisionLayer);
if (tileType < 0x4000) { if (tileType < 0x4000) {
GetActTileForTileType(tileType); GetActTileForTileType(tileType);
} }
@ -1277,10 +1277,8 @@ void UnregisterInteractTile(u32 tilePos, s32 layer) {
} }
const struct_080B44D0 gUnk_080B44D0[] = { const struct_080B44D0 gUnk_080B44D0[] = {
{ 0x67, SPECIAL_TILE_132 }, { 0x68, SPECIAL_TILE_133 }, { 0x67, SPECIAL_TILE_132 }, { 0x68, SPECIAL_TILE_133 }, { 0x69, SPECIAL_TILE_134 }, { 0x6a, SPECIAL_TILE_135 },
{ 0x69, SPECIAL_TILE_134 }, { 0x6a, SPECIAL_TILE_135 }, { 0x6b, SPECIAL_TILE_136 }, { 0x27, SPECIAL_TILE_131 }, { 0x23, SPECIAL_TILE_141 }, { 0x0, 0x0 },
{ 0x6b, SPECIAL_TILE_136 }, { 0x27, SPECIAL_TILE_131 },
{ 0x23, SPECIAL_TILE_141 }, { 0x0, 0x0 },
}; };
// used for minish houses, seems to overwrite all tiles with certain collision values on layer 1 for them? // used for minish houses, seems to overwrite all tiles with certain collision values on layer 1 for them?

View File

@ -425,7 +425,7 @@ bool32 sub_0803086C(ArmosEntity* this) {
centerY = super->y.HALF_U.HI - gRoomControls.origin_y; centerY = super->y.HALF_U.HI - gRoomControls.origin_y;
// TODO for some reason the 0x3f of COORD_TO_TILE(super) needs to be forced to r2 here. // TODO for some reason the 0x3f of COORD_TO_TILE(super) needs to be forced to r2 here.
tilePos = ((((((super)->x.HALF.HI) - gRoomControls.origin_x) >> 4) & (r2 = 0x3f)) | tilePos = ((((((super)->x.HALF.HI) - gRoomControls.origin_x) >> 4) & (r2 = 0x3f)) |
(((((super)->y.HALF.HI) - gRoomControls.origin_y) >> 4) & r2) << 6); (((((super)->y.HALF.HI) - gRoomControls.origin_y) >> 4) & r2) << 6);
if (GetTileTypeAtTilePos(tilePos, super->collisionLayer) == SPECIAL_TILE_73) { if (GetTileTypeAtTilePos(tilePos, super->collisionLayer) == SPECIAL_TILE_73) {
if (CheckPlayerInRegion(centerX, centerY, 2, 0xc) != 0) { if (CheckPlayerInRegion(centerX, centerY, 2, 0xc) != 0) {

View File

@ -15,7 +15,6 @@
#include "save.h" #include "save.h"
#include "tiles.h" #include "tiles.h"
struct SalesOffering { struct SalesOffering {
u8 field_0x0; u8 field_0x0;
u8 field_0x1; u8 field_0x1;

View File

@ -401,11 +401,10 @@ void sub_08031024(EyegoreEntity* this) {
} else { } else {
tmp2 = this->unk_7b >> 1; tmp2 = this->unk_7b >> 1;
uVar5 = GetTileTypeAtWorldCoords(super->x.HALF.HI + gUnk_080CE2C0[tmp2], uVar5 = GetTileTypeAtWorldCoords(super->x.HALF.HI + gUnk_080CE2C0[tmp2],
super->y.HALF.HI + gUnk_080CE2C0[tmp2 + 1], super->collisionLayer); super->y.HALF.HI + gUnk_080CE2C0[tmp2 + 1], super->collisionLayer);
uVar8 = GetTileTypeAtWorldCoords(super->x.HALF.HI + gUnk_080CE2C0[tmp2 + 2], uVar8 = GetTileTypeAtWorldCoords(super->x.HALF.HI + gUnk_080CE2C0[tmp2 + 2],
super->y.HALF.HI + gUnk_080CE2C0[tmp2 + 3], super->collisionLayer); super->y.HALF.HI + gUnk_080CE2C0[tmp2 + 3], super->collisionLayer);
if (!(((gMapTileTypeToCollisionData[uVar5] == 0) && if (!(((gMapTileTypeToCollisionData[uVar5] == 0) && (gMapTileTypeToCollisionData[uVar8] == 0)) ||
(gMapTileTypeToCollisionData[uVar8] == 0)) ||
((this->unk_7b | 1) & 1) == 0)) { ((this->unk_7b | 1) & 1) == 0)) {
if (super->direction >> 3 == super->animationState) { if (super->direction >> 3 == super->animationState) {
this->unk_78 |= 0x20; this->unk_78 |= 0x20;

View File

@ -1070,8 +1070,8 @@ void sub_08047EA4(GyorgMaleEntity* this, u32 unk1) {
if (this->unk_7c & 1) { if (this->unk_7c & 1) {
tmp2 = sub_08047F68(this) << 8; tmp2 = sub_08047F68(this) << 8;
dir = CalculateDirectionFromOffsets(gPlayerEntity.base.x.HALF.HI - super->x.HALF.HI, dir = CalculateDirectionFromOffsets(gPlayerEntity.base.x.HALF.HI - super->x.HALF.HI,
gPlayerEntity.base.y.HALF.HI - super->y.HALF.HI); gPlayerEntity.base.y.HALF.HI - super->y.HALF.HI);
tmp = dir - (tmp / 256); tmp = dir - (tmp / 256);
tmp &= 0xFF; tmp &= 0xFF;
gPlayerEntity.base.x.WORD += (gSineTable[tmp] - gSineTable[dir]) * tmp2; gPlayerEntity.base.x.WORD += (gSineTable[tmp] - gSineTable[dir]) * tmp2;

View File

@ -690,9 +690,9 @@ void OctorokBoss_Action1_AimTowardsPlayer(OctorokBossEntity* this) {
s32 tmp1; s32 tmp1;
s32 tmp2; s32 tmp2;
tmp1 = tmp1 = (u8)(CalculateDirectionFromOffsets(gPlayerEntity.base.x.WORD - super->x.WORD,
(u8)(CalculateDirectionFromOffsets(gPlayerEntity.base.x.WORD - super->x.WORD, gPlayerEntity.base.y.WORD - super->y.WORD) - gPlayerEntity.base.y.WORD - super->y.WORD) -
(((u8)(-this->angle.HALF.HI) ^ 0x80))); (((u8)(-this->angle.HALF.HI) ^ 0x80)));
if (IS_FROZEN(this) == FALSE) { if (IS_FROZEN(this) == FALSE) {
tmp2 = 8; tmp2 = 8;
} else { } else {
@ -900,8 +900,9 @@ void OctorokBoss_ExecuteAttackVacuum(OctorokBossEntity* this) {
if (this->unk_80 == 0) { if (this->unk_80 == 0) {
super->direction = super->direction =
CalculateDirectionFromOffsets(gPlayerEntity.base.x.WORD - super->x.WORD, gPlayerEntity.base.y.WORD - super->y.WORD); CalculateDirectionFromOffsets(gPlayerEntity.base.x.WORD - super->x.WORD,
gPlayerEntity.base.y.WORD - super->y.WORD);
tmp = ((u8) - (this->angle.HALF.HI + 0x80)) - super->direction; tmp = ((u8) - (this->angle.HALF.HI + 0x80)) - super->direction;
if (tmp < 0) { if (tmp < 0) {
tmp = -tmp; tmp = -tmp;

View File

@ -165,7 +165,7 @@ void sub_0802F300(TektiteEntity* this) {
} else if (super->collisions != COL_NONE) { } else if (super->collisions != COL_NONE) {
sub_0800417E(super, super->collisions); sub_0800417E(super, super->collisions);
} else if ((GetActTileAtEntity(super) & 0xf0) == 0x50) { // ACT_TILE_240 and ACT_TILE_241? } else if ((GetActTileAtEntity(super) & 0xf0) == 0x50) { // ACT_TILE_240 and ACT_TILE_241?
super->direction = (super->direction + 0x10) & (0x3 | DirectionNorthWest); super->direction = (super->direction + 0x10) & (0x3 | DirectionNorthWest);
} }
if (--super->timer == 0) { if (--super->timer == 0) {

View File

@ -180,7 +180,7 @@ s32 sub_080774A0(void) {
u32 tilePos; u32 tilePos;
tilePos = COORD_TO_TILE_OFFSET((&gPlayerEntity.base), -gUnk_0811BE1E[gPlayerEntity.base.animationState & 6], tilePos = COORD_TO_TILE_OFFSET((&gPlayerEntity.base), -gUnk_0811BE1E[gPlayerEntity.base.animationState & 6],
-gUnk_0811BE1E[(gPlayerEntity.base.animationState & 6) + 1]); -gUnk_0811BE1E[(gPlayerEntity.base.animationState & 6) + 1]);
collisionData = GetCollisionDataAtTilePos(tilePos, gPlayerEntity.base.collisionLayer); collisionData = GetCollisionDataAtTilePos(tilePos, gPlayerEntity.base.collisionLayer);

View File

@ -110,10 +110,10 @@ void DiggingCaveEntranceManager_EnterEntrance(DiggingCaveEntranceManager* this,
gRoomControls.area = entr->targetArea; gRoomControls.area = entr->targetArea;
gRoomControls.room = entr->targetRoom; gRoomControls.room = entr->targetRoom;
gDiggingCaveEntranceTransition.entrance = entr; gDiggingCaveEntranceTransition.entrance = entr;
gDiggingCaveEntranceTransition.offsetX = gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x - gDiggingCaveEntranceTransition.offsetX =
((entr->sourceTilePos & TILE_POS_X_COMPONENT) * 16); gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x - ((entr->sourceTilePos & TILE_POS_X_COMPONENT) * 16);
gDiggingCaveEntranceTransition.offsetY = gPlayerEntity.base.y.HALF.HI - gRoomControls.origin_y - gDiggingCaveEntranceTransition.offsetY =
((entr->sourceTilePos & TILE_POS_Y_COMPONENT) >> 2); gPlayerEntity.base.y.HALF.HI - gRoomControls.origin_y - ((entr->sourceTilePos & TILE_POS_Y_COMPONENT) >> 2);
#ifndef EU #ifndef EU
isDiggingCave = gDiggingCaveEntranceTransition.isDiggingCave; isDiggingCave = gDiggingCaveEntranceTransition.isDiggingCave;

View File

@ -14,20 +14,20 @@
void FlameManager_Main(FlameManager* this) { void FlameManager_Main(FlameManager* this) {
if (super->action == 0) { if (super->action == 0) {
this->tilePos = TILE(this->tilePos, this->field_0x3a); this->x = TILE(this->x, this->y);
if (GetTileTypeAtTilePos(this->tilePos, LAYER_TOP) == TILE_TYPE_117) { if (GetTileTypeAtTilePos(this->x, LAYER_TOP) == TILE_TYPE_117) {
super->action = 1; super->action = 1;
SetTile(SPECIAL_TILE_106, this->tilePos, LAYER_BOTTOM); SetTile(SPECIAL_TILE_106, this->x, LAYER_BOTTOM);
} else { } else {
DeleteThisEntity(); DeleteThisEntity();
} }
} }
if (GetTileTypeAtTilePos(this->tilePos, LAYER_BOTTOM) == SPECIAL_TILE_107) { if (GetTileTypeAtTilePos(this->x, LAYER_BOTTOM) == SPECIAL_TILE_107) {
sub_0807B7D8(TILE_TYPE_118, this->tilePos, LAYER_TOP); sub_0807B7D8(TILE_TYPE_118, this->x, LAYER_TOP);
DeleteThisEntity(); DeleteThisEntity();
} }
if (GetTileTypeAtTilePos(this->tilePos, LAYER_TOP) == TILE_TYPE_118) { if (GetTileTypeAtTilePos(this->x, LAYER_TOP) == TILE_TYPE_118) {
SetTile(SPECIAL_TILE_107, this->tilePos, LAYER_BOTTOM); SetTile(SPECIAL_TILE_107, this->x, LAYER_BOTTOM);
DeleteThisEntity(); DeleteThisEntity();
} }
} }

View File

@ -35,14 +35,14 @@ typedef struct struct_08108764 {
u16 unk_06; u16 unk_06;
u16 unk_08; u16 unk_08;
u16 unk_0a; u16 unk_0a;
}* unk_0c; } * unk_0c;
struct { struct {
u8 unk_00; u8 unk_00;
u8 unk_01; u8 unk_01;
u8 unk_02[2]; u8 unk_02[2];
u16 unk_04; u16 unk_04;
u16 unk_06; u16 unk_06;
}* unk_10; } * unk_10;
} struct_08108764; } struct_08108764;
extern struct_08108764 gUnk_08108764[]; extern struct_08108764 gUnk_08108764[];

View File

@ -115,14 +115,14 @@ void sub_08059B18(void) {
for (loopVar = 0; loopVar < 4; ++loopVar) { for (loopVar = 0; loopVar < 4; ++loopVar) {
for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) { for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
SetTileByIndex(loopVar * 0x10 + TILE_TYPE_1195 + innerLoopVar, SetTileByIndex(loopVar * 0x10 + TILE_TYPE_1195 + innerLoopVar,
COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1); COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1);
} }
} }
for (loopVar = 0; loopVar < 3; ++loopVar) { for (loopVar = 0; loopVar < 3; ++loopVar) {
for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) { for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
SetTileByIndex(loopVar * 0x10 + TILE_TYPE_1088 + innerLoopVar, SetTileByIndex(loopVar * 0x10 + TILE_TYPE_1088 + innerLoopVar,
COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 2); COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 2);
} }
} }
SetTileByIndex(TILE_TYPE_214, TILE_POS(2, 23), LAYER_TOP); SetTileByIndex(TILE_TYPE_214, TILE_POS(2, 23), LAYER_TOP);
@ -133,7 +133,7 @@ void sub_08059B18(void) {
for (loopVar = 0; loopVar < 5; ++loopVar) { for (loopVar = 0; loopVar < 5; ++loopVar) {
for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) { for (innerLoopVar = 0; innerLoopVar < 4; ++innerLoopVar) {
SetTileByIndex(loopVar * 0x10 + TILE_TYPE_1190 + innerLoopVar, SetTileByIndex(loopVar * 0x10 + TILE_TYPE_1190 + innerLoopVar,
COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1); COMMON(0x28 + 0x10 * innerLoopVar, loopVar * 0x10), 1);
} }
} }
SetTileByIndex(TILE_TYPE_1092, TILE_POS(2, 24), LAYER_TOP); SetTileByIndex(TILE_TYPE_1092, TILE_POS(2, 24), LAYER_TOP);

View File

@ -133,14 +133,14 @@ void LightLevelSetManager_Type3(LightLevelSetManager* this) {
void sub_0805BE70(LightLevelSetManager* this, u32 tileType) { void sub_0805BE70(LightLevelSetManager* this, u32 tileType) {
SetTileType(tileType, SetTileType(tileType,
((this->field_0x38 << 0x10) >> 0x14 & 0x3fU) | ((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6, ((this->field_0x38 << 0x10) >> 0x14 & 0x3fU) | ((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6,
super->type2); super->type2);
} }
void sub_0805BE94(LightLevelSetManager* this) { void sub_0805BE94(LightLevelSetManager* this) {
SetTileType(TILE_TYPE_118, SetTileType(TILE_TYPE_118,
((this->field_0x38 << 0x10) >> 0x14 & 0x3fU) | ((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6, ((this->field_0x38 << 0x10) >> 0x14 & 0x3fU) | ((this->field_0x3a << 0x10) >> 0x14 & 0x3fU) << 6,
super->type2); super->type2);
ChangeLightLevel(super->timer); ChangeLightLevel(super->timer);
DeleteThisEntity(); DeleteThisEntity();
} }

View File

@ -488,9 +488,7 @@ void sub_0805A9CC(TempleOfDropletsManager* this) {
gScreen.bg3.updated = 1; gScreen.bg3.updated = 1;
} }
extern struct { extern struct { u8 unk_00[0x20]; } gUnk_085A97A0[];
u8 unk_00[0x20];
} gUnk_085A97A0[];
void sub_0805AA58(TempleOfDropletsManager* this) { void sub_0805AA58(TempleOfDropletsManager* this) {
if (--super->timer == 0) { if (--super->timer == 0) {

View File

@ -531,7 +531,8 @@ u32 CalcJumpDirection(Entity* this) {
static const u8 sTable[] = { static const u8 sTable[] = {
// actTile, animationState // actTile, animationState
ACT_TILE_43, DirectionSouth, ACT_TILE_42, DirectionNorth, ACT_TILE_45, DirectionEast, ACT_TILE_44, DirectionWest, 0x0, ACT_TILE_43, DirectionSouth, ACT_TILE_42, DirectionNorth, ACT_TILE_45, DirectionEast,
ACT_TILE_44, DirectionWest, 0x0,
}; };
u32 actTile; u32 actTile;

View File

@ -180,9 +180,11 @@ const NPCDefinition gNPCDefinition_52[] = {
}; };
#endif #endif
#define MULTI_FORM(definition_ptr) \ #define MULTI_FORM(definition_ptr) \
{ \ { \
{ 2, 0, 0, 0, 0, 0, 0 }, { .definition = (definition_ptr) } \ { 2, 0, 0, 0, 0, 0, 0 }, { \
.definition = (definition_ptr) \
} \
} }
const NPCDefinition gNPCDefinitions[] = { const NPCDefinition gNPCDefinitions[] = {

View File

@ -43,7 +43,7 @@ void Button_Init(ButtonEntity* this) {
super->collisionLayer = this->unk_84; super->collisionLayer = this->unk_84;
} }
this->tilePos = (((super->x.HALF.HI - gRoomControls.origin_x) >> 4) & 0x3F) | this->tilePos = (((super->x.HALF.HI - gRoomControls.origin_x) >> 4) & 0x3F) |
((((super->y.HALF.HI - gRoomControls.origin_y) >> 4) & 0x3F) << 6); ((((super->y.HALF.HI - gRoomControls.origin_y) >> 4) & 0x3F) << 6);
this->unk_72 = GetTileTypeAtTilePos(this->tilePos, super->collisionLayer); this->unk_72 = GetTileTypeAtTilePos(this->tilePos, super->collisionLayer);
if (super->type == 0 && CheckFlags(this->unk_86)) { if (super->type == 0 && CheckFlags(this->unk_86)) {
super->action = 5; super->action = 5;

View File

@ -188,10 +188,9 @@ void sub_0809B334(DoubleBookshelfEntity* this) {
} }
void sub_0809B358(DoubleBookshelfEntity* this) { void sub_0809B358(DoubleBookshelfEntity* this) {
static const u16 gUnk_08123D68[] = { SPECIAL_TILE_34, SPECIAL_TILE_34, SPECIAL_TILE_116, static const u16 gUnk_08123D68[] = { SPECIAL_TILE_34, SPECIAL_TILE_34, SPECIAL_TILE_116, SPECIAL_TILE_38,
SPECIAL_TILE_38, SPECIAL_TILE_116, SPECIAL_TILE_116, SPECIAL_TILE_116, SPECIAL_TILE_116, SPECIAL_TILE_38, SPECIAL_TILE_116,
SPECIAL_TILE_38, SPECIAL_TILE_116, SPECIAL_TILE_34, SPECIAL_TILE_34, SPECIAL_TILE_34 };
SPECIAL_TILE_34 };
s32 index; s32 index;
const u16* array = &gUnk_08123D68[this->unk_84]; const u16* array = &gUnk_08123D68[this->unk_84];
u32 tilePos = this->tilePos + TILE_POS(-2, -2); u32 tilePos = this->tilePos + TILE_POS(-2, -2);

View File

@ -82,11 +82,13 @@ void EvilSpirit_Action1(EvilSpiritEntity* this) {
this->unk76 = this->unk7c; this->unk76 = this->unk7c;
this->unk7a = this->unk7c; this->unk7a = this->unk7c;
super->speed = 0x300; super->speed = 0x300;
super->direction = super->direction = CalculateDirectionFromOffsets(super->parent->x.WORD - super->x.WORD,
CalculateDirectionFromOffsets(super->parent->x.WORD - super->x.WORD, super->parent->y.WORD - super->y.WORD) ^ 0x80; super->parent->y.WORD - super->y.WORD) ^
0x80;
} else { } else {
super->speed = 0x600; super->speed = 0x600;
dir = CalculateDirectionFromOffsets(gPlayerEntity.base.x.WORD - super->x.WORD, gPlayerEntity.base.y.WORD - super->y.WORD) ^ dir = CalculateDirectionFromOffsets(gPlayerEntity.base.x.WORD - super->x.WORD,
gPlayerEntity.base.y.WORD - super->y.WORD) ^
0x80; 0x80;
if (dir != super->direction) { if (dir != super->direction) {
if ((u8)(dir - super->direction) > 0x80) { if ((u8)(dir - super->direction) > 0x80) {

View File

@ -338,8 +338,7 @@ static void FurnitureUpdate(FurnitureEntity* this) {
break; break;
case 0x80: case 0x80:
if (gPlayerEntity.base.y.HALF.HI < super->y.HALF.HI + 8) { if (gPlayerEntity.base.y.HALF.HI < super->y.HALF.HI + 8) {
if (gPlayerState.floor_type != SURFACE_LADDER && if (gPlayerState.floor_type != SURFACE_LADDER && GetTileTypeAtEntity(super) == SPECIAL_TILE_23) {
GetTileTypeAtEntity(super) == SPECIAL_TILE_23) {
SetTile(SPECIAL_TILE_38, this->tilePos, super->collisionLayer); SetTile(SPECIAL_TILE_38, this->tilePos, super->collisionLayer);
SetTile(SPECIAL_TILE_61, this->tilePos + TILE_POS(0, -1), super->collisionLayer); SetTile(SPECIAL_TILE_61, this->tilePos + TILE_POS(0, -1), super->collisionLayer);
SetTile(SPECIAL_TILE_61, this->tilePos + TILE_POS(0, -2), super->collisionLayer); SetTile(SPECIAL_TILE_61, this->tilePos + TILE_POS(0, -2), super->collisionLayer);

View File

@ -284,8 +284,7 @@ void sub_080812A0(ItemOnGroundEntity* this) {
} }
void sub_080812A8(ItemOnGroundEntity* this) { void sub_080812A8(ItemOnGroundEntity* this) {
if (GetCollisionDataAtEntity(super) != COLLISION_DATA_15 && if (GetCollisionDataAtEntity(super) != COLLISION_DATA_15 && this->unk_6e != GetTileTypeAtEntity(super)) {
this->unk_6e != GetTileTypeAtEntity(super)) {
super->direction = 0; super->direction = 0;
super->speed = 0; super->speed = 0;
super->spriteSettings.draw = 1; super->spriteSettings.draw = 1;

View File

@ -66,8 +66,7 @@ void LadderUp(Entity* this) {
default: default:
if (this->type2 == 0) { if (this->type2 == 0) {
if (gPlayerEntity.base.y.HALF.HI < this->y.HALF.HI) { if (gPlayerEntity.base.y.HALF.HI < this->y.HALF.HI) {
if (gPlayerState.floor_type != SURFACE_LADDER && if (gPlayerState.floor_type != SURFACE_LADDER && (GetTileTypeAtEntity(this) == SPECIAL_TILE_23)) {
(GetTileTypeAtEntity(this) == SPECIAL_TILE_23)) {
SetTile(SPECIAL_TILE_35, COORD_TO_TILE(this), this->collisionLayer); SetTile(SPECIAL_TILE_35, COORD_TO_TILE(this), this->collisionLayer);
RestorePrevTileEntity(COORD_TO_TILE_OFFSET(this, 0, 16), this->collisionLayer); RestorePrevTileEntity(COORD_TO_TILE_OFFSET(this, 0, 16), this->collisionLayer);
} }

View File

@ -120,7 +120,7 @@ void sub_08094980(LinkEmptyingBottleEntity* this, u32 searchTileIndex, u32 repla
yOffset = gUnk_08122A28[index + 1]; yOffset = gUnk_08122A28[index + 1];
if (searchTileIndex == GetTileTypeRelativeToEntity(super, xOffset, yOffset)) { if (searchTileIndex == GetTileTypeRelativeToEntity(super, xOffset, yOffset)) {
SetTile(replaceTileIndex, TILE(super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset), SetTile(replaceTileIndex, TILE(super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset),
super->collisionLayer); super->collisionLayer);
} }
index += 2; index += 2;
} }

View File

@ -15,7 +15,6 @@
#include "sound.h" #include "sound.h"
#include "tiles.h" #include "tiles.h"
typedef struct { typedef struct {
/*0x00*/ Entity base; /*0x00*/ Entity base;
/*0x68*/ u8 unused1[8]; /*0x68*/ u8 unused1[8];

View File

@ -82,16 +82,11 @@ void MacroDecoration_Action1(MacroDecorationEntity* this) {
void sub_08097EB8(MacroDecorationEntity* this) { void sub_08097EB8(MacroDecorationEntity* this) {
static const s16 tilePosArray[] = { static const s16 tilePosArray[] = {
0xff7e, SPECIAL_TILE_137, 0xff7f, SPECIAL_TILE_34, 0xff7e, SPECIAL_TILE_137, 0xff7f, SPECIAL_TILE_34, 0xff80, SPECIAL_TILE_34, 0xff81, SPECIAL_TILE_138,
0xff80, SPECIAL_TILE_34, 0xff81, SPECIAL_TILE_138, 0xffbe, SPECIAL_TILE_34, 0xffbf, SPECIAL_TILE_34, 0xffc0, SPECIAL_TILE_34, 0xffc1, SPECIAL_TILE_34,
0xffbe, SPECIAL_TILE_34, 0xffbf, SPECIAL_TILE_34, 0xfffe, SPECIAL_TILE_34, 0xffff, SPECIAL_TILE_34, 0, SPECIAL_TILE_34, 1, SPECIAL_TILE_34,
0xffc0, SPECIAL_TILE_34, 0xffc1, SPECIAL_TILE_34, 2, SPECIAL_TILE_139, 0x3e, SPECIAL_TILE_34, 0x3f, SPECIAL_TILE_34, 0x40, SPECIAL_TILE_38,
0xfffe, SPECIAL_TILE_34, 0xffff, SPECIAL_TILE_34, 0x41, SPECIAL_TILE_34, 0x7e, SPECIAL_TILE_140, 0x7f, SPECIAL_TILE_140, 0x7fff, 0xffff,
0, SPECIAL_TILE_34, 1, SPECIAL_TILE_34,
2, SPECIAL_TILE_139, 0x3e, SPECIAL_TILE_34,
0x3f, SPECIAL_TILE_34, 0x40, SPECIAL_TILE_38,
0x41, SPECIAL_TILE_34, 0x7e, SPECIAL_TILE_140,
0x7f, SPECIAL_TILE_140, 0x7fff, 0xffff,
}; };
const s16* tilePosPtr; const s16* tilePosPtr;
u16 tilePos = COORD_TO_TILE(super); u16 tilePos = COORD_TO_TILE(super);

View File

@ -164,7 +164,7 @@ void Minecart_Action3(MinecartEntity* this) {
} }
actTile = GetActTileRelativeToEntity(super, offsetCoords[super->animationState * 2], actTile = GetActTileRelativeToEntity(super, offsetCoords[super->animationState * 2],
offsetCoords[super->animationState * 2 + 1]); offsetCoords[super->animationState * 2 + 1]);
if (FindValueForKey(actTile, gUnk_081223D8[super->animationState]) == 0) { if (FindValueForKey(actTile, gUnk_081223D8[super->animationState]) == 0) {
super->direction = DirectionTurnAround(super->direction); super->direction = DirectionTurnAround(super->direction);
super->animationState = AnimationStateFlip90(super->animationState); super->animationState = AnimationStateFlip90(super->animationState);
@ -343,18 +343,22 @@ const KeyValuePair* const gUnk_081223D8[] = {
gUnk_08122436, gUnk_08122436,
}; };
const KeyValuePair gUnk_081223E8[] = { const KeyValuePair gUnk_081223E8[] = {
{ ACT_TILE_242, 1 }, { ACT_TILE_101, 1 }, { ACT_TILE_104, 1 }, { ACT_TILE_106, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 }, { ACT_TILE_242, 1 }, { ACT_TILE_101, 1 }, { ACT_TILE_104, 1 },
{ ACT_TILE_106, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 },
}; };
const u16 gUnk_081223E8End = 0; const u16 gUnk_081223E8End = 0;
const KeyValuePair gUnk_08122402[] = { const KeyValuePair gUnk_08122402[] = {
{ ACT_TILE_243, 1 }, { ACT_TILE_102, 1 }, { ACT_TILE_104, 1 }, { ACT_TILE_105, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 }, { ACT_TILE_243, 1 }, { ACT_TILE_102, 1 }, { ACT_TILE_104, 1 },
{ ACT_TILE_105, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 },
}; };
const u16 gUnk_08122402End = 0; const u16 gUnk_08122402End = 0;
const KeyValuePair gUnk_0812241C[] = { const KeyValuePair gUnk_0812241C[] = {
{ ACT_TILE_242, 1 }, { ACT_TILE_101, 1 }, { ACT_TILE_103, 1 }, { ACT_TILE_105, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 }, { ACT_TILE_242, 1 }, { ACT_TILE_101, 1 }, { ACT_TILE_103, 1 },
{ ACT_TILE_105, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 },
}; };
const u16 gUnk_0812241CEnd = 0; const u16 gUnk_0812241CEnd = 0;
const KeyValuePair gUnk_08122436[] = { const KeyValuePair gUnk_08122436[] = {
{ ACT_TILE_243, 1 }, { ACT_TILE_102, 1 }, { ACT_TILE_106, 1 }, { ACT_TILE_103, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 }, { ACT_TILE_243, 1 }, { ACT_TILE_102, 1 }, { ACT_TILE_106, 1 },
{ ACT_TILE_103, 1 }, { ACT_TILE_100, 1 }, { ACT_TILE_41, 1 },
}; };
const u16 gUnk_08122436End = 0; const u16 gUnk_08122436End = 0;

View File

@ -183,7 +183,7 @@ void OctorokBossObject_Action1(OctorokBossObjectEntity* this) {
case 1: case 1:
super->direction = super->direction =
CalculateDirectionFromOffsets(this->helper->tailObjects[super->timer]->x.WORD - super->x.WORD, CalculateDirectionFromOffsets(this->helper->tailObjects[super->timer]->x.WORD - super->x.WORD,
this->helper->tailObjects[super->timer]->y.WORD - super->y.WORD); this->helper->tailObjects[super->timer]->y.WORD - super->y.WORD);
LinearMoveAngle(super, super->speed, super->direction); LinearMoveAngle(super, super->speed, super->direction);
if (EntityInRectRadius(super, this->helper->tailObjects[super->timer], 2, 2) == 0) { if (EntityInRectRadius(super, this->helper->tailObjects[super->timer], 2, 2) == 0) {
return; return;
@ -352,7 +352,7 @@ bool32 sub_0809A6F8(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
if (gUnk_081238A0[param_3] != 0) { if (gUnk_081238A0[param_3] != 0) {
if ((param_4 & 1) != 0) { if ((param_4 & 1) != 0) {
SetTileByIndex(gUnk_081238A0[param_3], (param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, SetTileByIndex(gUnk_081238A0[param_3], (param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6,
LAYER_BOTTOM); LAYER_BOTTOM);
} else { } else {
RestorePrevTileEntity((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, 1); RestorePrevTileEntity((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, 1);
} }

View File

@ -191,8 +191,8 @@ void sub_08084CAC(PlayerCloneEntity* this) {
if (((PlayerCloneEntity*)gPlayerClones[super->type])->unk70 == 0) { if (((PlayerCloneEntity*)gPlayerClones[super->type])->unk70 == 0) {
ptr = &gUnk_080B4468[super->animationState & 6]; ptr = &gUnk_080B4468[super->animationState & 6];
if (GetActTileForTileType( if (GetActTileForTileType(GetTileTypeAtTilePos(COORD_TO_TILE_OFFSET(super, -ptr[0], -ptr[1]),
GetTileTypeAtTilePos(COORD_TO_TILE_OFFSET(super, -ptr[0], -ptr[1]), super->collisionLayer)) == ACT_TILE_114) { super->collisionLayer)) == ACT_TILE_114) {
((PlayerCloneEntity*)gPlayerClones[0])->unk6c |= (1 << super->type); ((PlayerCloneEntity*)gPlayerClones[0])->unk6c |= (1 << super->type);
} else { } else {
((PlayerCloneEntity*)gPlayerClones[0])->unk6c &= ~(1 << super->type); ((PlayerCloneEntity*)gPlayerClones[0])->unk6c &= ~(1 << super->type);

View File

@ -618,8 +618,7 @@ void (*const PushableFurniture_Actions[])(PushableFurnitureEntity*) = {
PushableFurniture_Action2, PushableFurniture_Action2,
}; };
const u16 gUnk_08121EE4[] = { const u16 gUnk_08121EE4[] = {
SPECIAL_TILE_43, SPECIAL_TILE_34, SPECIAL_TILE_44, SPECIAL_TILE_43, SPECIAL_TILE_34, SPECIAL_TILE_44, SPECIAL_TILE_36, SPECIAL_TILE_45, SPECIAL_TILE_37,
SPECIAL_TILE_36, SPECIAL_TILE_45, SPECIAL_TILE_37,
}; };
const u16 gUnk_08121EF0[] = { const u16 gUnk_08121EF0[] = {
SPECIAL_TILE_38, SPECIAL_TILE_38,

View File

@ -27,19 +27,8 @@ void StoneTablet_Init(Entity* this) {
SPECIAL_TILE_34, -2, SPECIAL_TILE_34, -1, SPECIAL_TILE_34, 0, SPECIAL_TILE_34, 1, 0xffff, SPECIAL_TILE_34, -2, SPECIAL_TILE_34, -1, SPECIAL_TILE_34, 0, SPECIAL_TILE_34, 1, 0xffff,
}; };
static const u16 gUnk_081232FE[] = { static const u16 gUnk_081232FE[] = {
SPECIAL_TILE_101, SPECIAL_TILE_101, -65, SPECIAL_TILE_34, -64, SPECIAL_TILE_102, -63, SPECIAL_TILE_41, -1,
-65, SPECIAL_TILE_38, 0, SPECIAL_TILE_42, 1, 0xffff,
SPECIAL_TILE_34,
-64,
SPECIAL_TILE_102,
-63,
SPECIAL_TILE_41,
-1,
SPECIAL_TILE_38,
0,
SPECIAL_TILE_42,
1,
0xffff,
}; };
this->action = 1; this->action = 1;
this->spriteSettings.draw = 1; this->spriteSettings.draw = 1;

View File

@ -1431,9 +1431,11 @@ const ObjectDefinition gObjectDefinition_0[] = {
}; };
#endif #endif
#define MULTI_FORM(definition_ptr) \ #define MULTI_FORM(definition_ptr) \
{ \ { \
{ 2, 0, 0, 0, 0, 0, 0 }, { .definition = definition_ptr } \ { 2, 0, 0, 0, 0, 0, 0 }, { \
.definition = definition_ptr \
} \
} }
const ObjectDefinition gObjectDefinitions[] = { const ObjectDefinition gObjectDefinitions[] = {
MULTI_FORM(gObjectDefinition_0), MULTI_FORM(gObjectDefinition_0),

View File

@ -19,70 +19,70 @@ typedef struct {
// actTile for specialTile // actTile for specialTile
const u8 gMapSpecialTileToActTile[] = { const u8 gMapSpecialTileToActTile[] = {
0, // SPECIAL_TILE_0 0, // SPECIAL_TILE_0
0, // SPECIAL_TILE_1 0, // SPECIAL_TILE_1
0, // SPECIAL_TILE_2 0, // SPECIAL_TILE_2
0, // SPECIAL_TILE_3 0, // SPECIAL_TILE_3
0, // SPECIAL_TILE_4 0, // SPECIAL_TILE_4
0, // SPECIAL_TILE_5 0, // SPECIAL_TILE_5
0, // SPECIAL_TILE_6 0, // SPECIAL_TILE_6
0, // SPECIAL_TILE_7 0, // SPECIAL_TILE_7
0, // SPECIAL_TILE_8 0, // SPECIAL_TILE_8
0, // SPECIAL_TILE_9 0, // SPECIAL_TILE_9
0, // SPECIAL_TILE_10 0, // SPECIAL_TILE_10
0, // SPECIAL_TILE_11 0, // SPECIAL_TILE_11
0, // SPECIAL_TILE_12 0, // SPECIAL_TILE_12
0, // SPECIAL_TILE_13 0, // SPECIAL_TILE_13
0, // SPECIAL_TILE_14 0, // SPECIAL_TILE_14
0, // SPECIAL_TILE_15 0, // SPECIAL_TILE_15
0, // SPECIAL_TILE_16 0, // SPECIAL_TILE_16
0, // SPECIAL_TILE_17 0, // SPECIAL_TILE_17
0, // SPECIAL_TILE_18 0, // SPECIAL_TILE_18
0, // SPECIAL_TILE_19 0, // SPECIAL_TILE_19
ACT_TILE_241, // SPECIAL_TILE_20 ACT_TILE_241, // SPECIAL_TILE_20
0, // SPECIAL_TILE_21 0, // SPECIAL_TILE_21
0, // SPECIAL_TILE_22 0, // SPECIAL_TILE_22
ACT_TILE_83, // SPECIAL_TILE_23 ACT_TILE_83, // SPECIAL_TILE_23
ACT_TILE_242, // SPECIAL_TILE_24 ACT_TILE_242, // SPECIAL_TILE_24
ACT_TILE_243, // SPECIAL_TILE_25 ACT_TILE_243, // SPECIAL_TILE_25
0, // SPECIAL_TILE_26 0, // SPECIAL_TILE_26
0, // SPECIAL_TILE_27 0, // SPECIAL_TILE_27
0, // SPECIAL_TILE_28 0, // SPECIAL_TILE_28
0, // SPECIAL_TILE_29 0, // SPECIAL_TILE_29
0, // SPECIAL_TILE_30 0, // SPECIAL_TILE_30
0, // SPECIAL_TILE_31 0, // SPECIAL_TILE_31
ACT_TILE_240, // SPECIAL_TILE_32 ACT_TILE_240, // SPECIAL_TILE_32
0, // SPECIAL_TILE_33 0, // SPECIAL_TILE_33
0, // SPECIAL_TILE_34 0, // SPECIAL_TILE_34
0, // SPECIAL_TILE_35 0, // SPECIAL_TILE_35
0, // SPECIAL_TILE_36 0, // SPECIAL_TILE_36
0, // SPECIAL_TILE_37 0, // SPECIAL_TILE_37
0, // SPECIAL_TILE_38 0, // SPECIAL_TILE_38
0, // SPECIAL_TILE_39 0, // SPECIAL_TILE_39
0, // SPECIAL_TILE_40 0, // SPECIAL_TILE_40
0, // SPECIAL_TILE_41 0, // SPECIAL_TILE_41
0, // SPECIAL_TILE_42 0, // SPECIAL_TILE_42
0, // SPECIAL_TILE_43 0, // SPECIAL_TILE_43
0, // SPECIAL_TILE_44 0, // SPECIAL_TILE_44
0, // SPECIAL_TILE_45 0, // SPECIAL_TILE_45
0, // SPECIAL_TILE_46 0, // SPECIAL_TILE_46
0, // SPECIAL_TILE_47 0, // SPECIAL_TILE_47
0, // SPECIAL_TILE_48 0, // SPECIAL_TILE_48
0, // SPECIAL_TILE_49 0, // SPECIAL_TILE_49
0, // SPECIAL_TILE_50 0, // SPECIAL_TILE_50
0, // SPECIAL_TILE_51 0, // SPECIAL_TILE_51
0, // SPECIAL_TILE_52 0, // SPECIAL_TILE_52
0, // SPECIAL_TILE_53 0, // SPECIAL_TILE_53
0, // SPECIAL_TILE_54 0, // SPECIAL_TILE_54
0, // SPECIAL_TILE_55 0, // SPECIAL_TILE_55
0, // SPECIAL_TILE_56 0, // SPECIAL_TILE_56
0, // SPECIAL_TILE_57 0, // SPECIAL_TILE_57
0, // SPECIAL_TILE_58 0, // SPECIAL_TILE_58
0, // SPECIAL_TILE_59 0, // SPECIAL_TILE_59
0, // SPECIAL_TILE_60 0, // SPECIAL_TILE_60
0, // SPECIAL_TILE_61 0, // SPECIAL_TILE_61
0, // SPECIAL_TILE_62 0, // SPECIAL_TILE_62
0, // SPECIAL_TILE_63 0, // SPECIAL_TILE_63
ACT_TILE_61, // SPECIAL_TILE_64 ACT_TILE_61, // SPECIAL_TILE_64
ACT_TILE_61, // SPECIAL_TILE_65 ACT_TILE_61, // SPECIAL_TILE_65
ACT_TILE_61, // SPECIAL_TILE_66 ACT_TILE_61, // SPECIAL_TILE_66
@ -92,50 +92,50 @@ const u8 gMapSpecialTileToActTile[] = {
ACT_TILE_61, // SPECIAL_TILE_70 ACT_TILE_61, // SPECIAL_TILE_70
ACT_TILE_61, // SPECIAL_TILE_71 ACT_TILE_61, // SPECIAL_TILE_71
ACT_TILE_61, // SPECIAL_TILE_72 ACT_TILE_61, // SPECIAL_TILE_72
0, // SPECIAL_TILE_73 0, // SPECIAL_TILE_73
0, // SPECIAL_TILE_74 0, // SPECIAL_TILE_74
0, // SPECIAL_TILE_75 0, // SPECIAL_TILE_75
0, // SPECIAL_TILE_76 0, // SPECIAL_TILE_76
0, // SPECIAL_TILE_77 0, // SPECIAL_TILE_77
0, // SPECIAL_TILE_78 0, // SPECIAL_TILE_78
0, // SPECIAL_TILE_79 0, // SPECIAL_TILE_79
0, // SPECIAL_TILE_80 0, // SPECIAL_TILE_80
ACT_TILE_58, // SPECIAL_TILE_81 ACT_TILE_58, // SPECIAL_TILE_81
0, // SPECIAL_TILE_82 0, // SPECIAL_TILE_82
0, // SPECIAL_TILE_83 0, // SPECIAL_TILE_83
0, // SPECIAL_TILE_84 0, // SPECIAL_TILE_84
0, // SPECIAL_TILE_85 0, // SPECIAL_TILE_85
0, // SPECIAL_TILE_86 0, // SPECIAL_TILE_86
0, // SPECIAL_TILE_87 0, // SPECIAL_TILE_87
0, // SPECIAL_TILE_88 0, // SPECIAL_TILE_88
0, // SPECIAL_TILE_89 0, // SPECIAL_TILE_89
0, // SPECIAL_TILE_90 0, // SPECIAL_TILE_90
0, // SPECIAL_TILE_91 0, // SPECIAL_TILE_91
0, // SPECIAL_TILE_92 0, // SPECIAL_TILE_92
0, // SPECIAL_TILE_93 0, // SPECIAL_TILE_93
0, // SPECIAL_TILE_94 0, // SPECIAL_TILE_94
0, // SPECIAL_TILE_95 0, // SPECIAL_TILE_95
0, // SPECIAL_TILE_96 0, // SPECIAL_TILE_96
0, // SPECIAL_TILE_97 0, // SPECIAL_TILE_97
0, // SPECIAL_TILE_98 0, // SPECIAL_TILE_98
0, // SPECIAL_TILE_99 0, // SPECIAL_TILE_99
0, // SPECIAL_TILE_100 0, // SPECIAL_TILE_100
0, // SPECIAL_TILE_101 0, // SPECIAL_TILE_101
0, // SPECIAL_TILE_102 0, // SPECIAL_TILE_102
0, // SPECIAL_TILE_103 0, // SPECIAL_TILE_103
0, // SPECIAL_TILE_104 0, // SPECIAL_TILE_104
ACT_TILE_40, // SPECIAL_TILE_105 ACT_TILE_40, // SPECIAL_TILE_105
0, // SPECIAL_TILE_106 0, // SPECIAL_TILE_106
0, // SPECIAL_TILE_107 0, // SPECIAL_TILE_107
0, // SPECIAL_TILE_108 0, // SPECIAL_TILE_108
0, // SPECIAL_TILE_109 0, // SPECIAL_TILE_109
0, // SPECIAL_TILE_110 0, // SPECIAL_TILE_110
0, // SPECIAL_TILE_111 0, // SPECIAL_TILE_111
0, // SPECIAL_TILE_112 0, // SPECIAL_TILE_112
0, // SPECIAL_TILE_113 0, // SPECIAL_TILE_113
0, // SPECIAL_TILE_114 0, // SPECIAL_TILE_114
0, // SPECIAL_TILE_115 0, // SPECIAL_TILE_115
0, // SPECIAL_TILE_116 0, // SPECIAL_TILE_116
ACT_TILE_18, // SPECIAL_TILE_117 ACT_TILE_18, // SPECIAL_TILE_117
ACT_TILE_18, // SPECIAL_TILE_118 ACT_TILE_18, // SPECIAL_TILE_118
ACT_TILE_18, // SPECIAL_TILE_119 ACT_TILE_18, // SPECIAL_TILE_119
@ -144,11 +144,11 @@ const u8 gMapSpecialTileToActTile[] = {
ACT_TILE_18, // SPECIAL_TILE_122 ACT_TILE_18, // SPECIAL_TILE_122
ACT_TILE_18, // SPECIAL_TILE_123 ACT_TILE_18, // SPECIAL_TILE_123
ACT_TILE_18, // SPECIAL_TILE_124 ACT_TILE_18, // SPECIAL_TILE_124
0, // SPECIAL_TILE_125 0, // SPECIAL_TILE_125
ACT_TILE_116, // SPECIAL_TILE_126 ACT_TILE_116, // SPECIAL_TILE_126
ACT_TILE_116, // SPECIAL_TILE_127 ACT_TILE_116, // SPECIAL_TILE_127
ACT_TILE_41, // SPECIAL_TILE_128 ACT_TILE_41, // SPECIAL_TILE_128
0, // SPECIAL_TILE_129 0, // SPECIAL_TILE_129
ACT_TILE_35, // SPECIAL_TILE_130 ACT_TILE_35, // SPECIAL_TILE_130
ACT_TILE_41, // SPECIAL_TILE_131 ACT_TILE_41, // SPECIAL_TILE_131
ACT_TILE_41, // SPECIAL_TILE_132 ACT_TILE_41, // SPECIAL_TILE_132
@ -163,13 +163,13 @@ const u8 gMapSpecialTileToActTile[] = {
ACT_TILE_41, // SPECIAL_TILE_141 ACT_TILE_41, // SPECIAL_TILE_141
ACT_TILE_80, // SPECIAL_TILE_142 ACT_TILE_80, // SPECIAL_TILE_142
ACT_TILE_81, // SPECIAL_TILE_143 ACT_TILE_81, // SPECIAL_TILE_143
0, // SPECIAL_TILE_144 0, // SPECIAL_TILE_144
ACT_TILE_15, // SPECIAL_TILE_145 ACT_TILE_15, // SPECIAL_TILE_145
0, // SPECIAL_TILE_146 0, // SPECIAL_TILE_146
0, // SPECIAL_TILE_147 0, // SPECIAL_TILE_147
0, // SPECIAL_TILE_148 0, // SPECIAL_TILE_148
0, // SPECIAL_TILE_149 0, // SPECIAL_TILE_149
0, // SPECIAL_TILE_150 0, // SPECIAL_TILE_150
}; };
// collisionData for specialTile // collisionData for specialTile
@ -342,18 +342,20 @@ void PlayerItemCellOverwriteSet(PlayerItemCellOverwriteSetEntity* this) {
Entity* player = &gPlayerEntity.base; Entity* player = &gPlayerEntity.base;
if (super->action == 0) { if (super->action == 0) {
this->tileType = GetTileTypeAtTilePos(TILE(player->x.HALF.HI + offsetByDirection[player->animationState & 0xe], this->tileType =
player->y.HALF.HI + offsetByDirection[(player->animationState & 0xe) + 1]), GetTileTypeAtTilePos(TILE(player->x.HALF.HI + offsetByDirection[player->animationState & 0xe],
super->collisionLayer); player->y.HALF.HI + offsetByDirection[(player->animationState & 0xe) + 1]),
super->collisionLayer);
super->action++; super->action++;
} }
gPlayerState.mobility |= 0x80; gPlayerState.mobility |= 0x80;
tmp = gInput.heldKeys & R_BUTTON; tmp = gInput.heldKeys & R_BUTTON;
if ((gInput.heldKeys & A_BUTTON) != 0) { if ((gInput.heldKeys & A_BUTTON) != 0) {
if ((gInput.newKeys & R_BUTTON) != 0) { if ((gInput.newKeys & R_BUTTON) != 0) {
this->tileType = GetTileTypeAtTilePos(TILE(player->x.HALF.HI + offsetByDirection[player->animationState & 0xe], this->tileType =
player->y.HALF.HI + offsetByDirection[(player->animationState & 0xe) + 1]), GetTileTypeAtTilePos(TILE(player->x.HALF.HI + offsetByDirection[player->animationState & 0xe],
super->collisionLayer); player->y.HALF.HI + offsetByDirection[(player->animationState & 0xe) + 1]),
super->collisionLayer);
} }
if ((gInput.heldKeys & R_BUTTON) != 0) { if ((gInput.heldKeys & R_BUTTON) != 0) {
player->iframes = 2; player->iframes = 2;
@ -387,13 +389,17 @@ void PlayerItemCellOverwriteSet(PlayerItemCellOverwriteSetEntity* this) {
DeleteThisEntity(); DeleteThisEntity();
} }
if ((gInput.heldKeys & B_BUTTON) != 0) { if ((gInput.heldKeys & B_BUTTON) != 0) {
sub_0807B7D8(this->tileType, TILE(player->x.HALF.HI + offsetByDirection[0], player->y.HALF.HI + offsetByDirection[1]), sub_0807B7D8(this->tileType,
TILE(player->x.HALF.HI + offsetByDirection[0], player->y.HALF.HI + offsetByDirection[1]),
super->collisionLayer); super->collisionLayer);
sub_0807B7D8(this->tileType, TILE(player->x.HALF.HI + offsetByDirection[2], player->y.HALF.HI + offsetByDirection[3]), sub_0807B7D8(this->tileType,
TILE(player->x.HALF.HI + offsetByDirection[2], player->y.HALF.HI + offsetByDirection[3]),
super->collisionLayer); super->collisionLayer);
sub_0807B7D8(this->tileType, TILE(player->x.HALF.HI + offsetByDirection[4], player->y.HALF.HI + offsetByDirection[5]), sub_0807B7D8(this->tileType,
TILE(player->x.HALF.HI + offsetByDirection[4], player->y.HALF.HI + offsetByDirection[5]),
super->collisionLayer); super->collisionLayer);
sub_0807B7D8(this->tileType, TILE(player->x.HALF.HI + offsetByDirection[6], player->y.HALF.HI + offsetByDirection[7]), sub_0807B7D8(this->tileType,
TILE(player->x.HALF.HI + offsetByDirection[6], player->y.HALF.HI + offsetByDirection[7]),
super->collisionLayer); super->collisionLayer);
} }
} }

View File

@ -123,7 +123,7 @@ void PlayerItemHeldObject_SubAction2(PlayerItemHeldObjectEntity* this) {
super->knockbackDuration = 0; super->knockbackDuration = 0;
} }
if (GetActTileRelativeToEntity(super, gUnk_081320C4[super->direction >> 2], if (GetActTileRelativeToEntity(super, gUnk_081320C4[super->direction >> 2],
gUnk_081320C4[(super->direction >> 2) + 1]) == ACT_TILE_116) { gUnk_081320C4[(super->direction >> 2) + 1]) == ACT_TILE_116) {
LinearMoveUpdate(super); LinearMoveUpdate(super);
} else { } else {
data = GetCollisionDataAtEntity(super); data = GetCollisionDataAtEntity(super);

View File

@ -897,8 +897,10 @@ void sub_08077F84(void) {
Entity* obj; Entity* obj;
if ((gPlayerEntity.base.collisionLayer & 2) == 0) { if ((gPlayerEntity.base.collisionLayer & 2) == 0) {
u32 tileType = GetTileTypeAtWorldCoords(gPlayerEntity.base.x.HALF.HI, gPlayerEntity.base.y.HALF.HI - 12, LAYER_TOP); u32 tileType =
if (tileType == TILE_TYPE_835 || tileType == TILE_TYPE_836 || tileType == TILE_TYPE_837 || tileType == TILE_TYPE_838) { GetTileTypeAtWorldCoords(gPlayerEntity.base.x.HALF.HI, gPlayerEntity.base.y.HALF.HI - 12, LAYER_TOP);
if (tileType == TILE_TYPE_835 || tileType == TILE_TYPE_836 || tileType == TILE_TYPE_837 ||
tileType == TILE_TYPE_838) {
sub_0807AA80(&gPlayerEntity.base); sub_0807AA80(&gPlayerEntity.base);
gPlayerState.jump_status |= 8; gPlayerState.jump_status |= 8;
obj = CreateObject(ROTATING_TRAPDOOR, 0, 0); obj = CreateObject(ROTATING_TRAPDOOR, 0, 0);
@ -1968,7 +1970,8 @@ void RespawnPlayer(void) {
} else { } else {
u32 i; u32 i;
for (i = 0; i <= 0xf && gPlayerState.path_memory[i] != -1; i++) { for (i = 0; i <= 0xf && gPlayerState.path_memory[i] != -1; i++) {
if (GetCollisionDataAtTilePos((u16)gPlayerState.path_memory[i], gPlayerState.path_memory[i] >> 0x1e) != COLLISION_DATA_15) { if (GetCollisionDataAtTilePos((u16)gPlayerState.path_memory[i], gPlayerState.path_memory[i] >> 0x1e) !=
COLLISION_DATA_15) {
gPlayerEntity.base.collisionLayer = gPlayerState.path_memory[i] >> 0x1e; gPlayerEntity.base.collisionLayer = gPlayerState.path_memory[i] >> 0x1e;
gPlayerEntity.base.x.HALF.HI = gPlayerEntity.base.x.HALF.HI =
gRoomControls.origin_x + (gPlayerState.path_memory[i] & 0x3f) * 16 + 8; gRoomControls.origin_x + (gPlayerState.path_memory[i] & 0x3f) * 16 + 8;
@ -2354,13 +2357,16 @@ bool32 sub_08079C30(Entity* player) {
return TRUE; return TRUE;
} }
if (gPlayerState.floor_type != FindValueForKey(GetActTileRelativeToEntity(player, 0, -1), gMapActTileToSurfaceType)) if (gPlayerState.floor_type !=
FindValueForKey(GetActTileRelativeToEntity(player, 0, -1), gMapActTileToSurfaceType))
return FALSE; return FALSE;
if (gPlayerState.floor_type != FindValueForKey(GetActTileRelativeToEntity(player, 2, 0), gMapActTileToSurfaceType)) if (gPlayerState.floor_type !=
FindValueForKey(GetActTileRelativeToEntity(player, 2, 0), gMapActTileToSurfaceType))
return FALSE; return FALSE;
if (gPlayerState.floor_type == FindValueForKey(GetActTileRelativeToEntity(player, -2, 0), gMapActTileToSurfaceType)) { if (gPlayerState.floor_type ==
FindValueForKey(GetActTileRelativeToEntity(player, -2, 0), gMapActTileToSurfaceType)) {
return TRUE; return TRUE;
} }
} }
@ -2593,7 +2599,8 @@ void UpdateFloorType(void) {
SurfaceType GetSurfaceCalcType(Entity* param_1, s32 x, s32 y) { SurfaceType GetSurfaceCalcType(Entity* param_1, s32 x, s32 y) {
u32 position = TILE(param_1->x.HALF.HI + (u32)x, param_1->y.HALF.HI + y); u32 position = TILE(param_1->x.HALF.HI + (u32)x, param_1->y.HALF.HI + y);
u32 tileType = GetTileTypeAtWorldCoords(param_1->x.HALF.HI + x, param_1->y.HALF.HI + y, gPlayerEntity.base.collisionLayer); u32 tileType =
GetTileTypeAtWorldCoords(param_1->x.HALF.HI + x, param_1->y.HALF.HI + y, gPlayerEntity.base.collisionLayer);
if (tileType != gPlayerState.tileType) { if (tileType != gPlayerState.tileType) {
gPlayerState.surfaceTimer = 0; gPlayerState.surfaceTimer = 0;
} }
@ -2656,7 +2663,7 @@ u32 sub_0807A2F8(u32 param_1) {
uVar2 = sub_08004202(&gPlayerEntity.base, auStack36, uVar2); uVar2 = sub_08004202(&gPlayerEntity.base, auStack36, uVar2);
if (GetCollisionDataAtTilePos(uVar2 >> 1, LAYER_BOTTOM)) { if (GetCollisionDataAtTilePos(uVar2 >> 1, LAYER_BOTTOM)) {
if (!FindValueForKey((u16)GetActTileAtTilePos((u16)(uVar2 >> 1), gPlayerEntity.base.collisionLayer), if (!FindValueForKey((u16)GetActTileAtTilePos((u16)(uVar2 >> 1), gPlayerEntity.base.collisionLayer),
gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) { gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) {
break; break;
} }
} else { } else {
@ -2666,7 +2673,7 @@ u32 sub_0807A2F8(u32 param_1) {
uVar1 = sub_08004202(&gPlayerEntity.base, auStack36, uVar1); uVar1 = sub_08004202(&gPlayerEntity.base, auStack36, uVar1);
if (GetCollisionDataAtTilePos(uVar1 >> 1, LAYER_BOTTOM)) { if (GetCollisionDataAtTilePos(uVar1 >> 1, LAYER_BOTTOM)) {
if (!FindValueForKey((u16)GetActTileAtTilePos((uVar1 >> 1), gPlayerEntity.base.collisionLayer), if (!FindValueForKey((u16)GetActTileAtTilePos((uVar1 >> 1), gPlayerEntity.base.collisionLayer),
gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) { gUnk_0811C1D8[gPlayerEntity.base.animationState >> 1])) {
break; break;
} }
} else { } else {
@ -2798,7 +2805,7 @@ void sub_0807A750(u32 param_1, u32 param_2, const u8* param_3, u32 param_4) {
} }
if ((index != 0) && (index != 0xf)) { if ((index != 0) && (index != 0xf)) {
uVar2 = GetCollisionDataAtTilePos((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6, uVar2 = GetCollisionDataAtTilePos((param_1 >> 4 & 0x3f) | (param_2 >> 4 & 0x3f) << 6,
gPlayerEntity.base.collisionLayer); gPlayerEntity.base.collisionLayer);
if (uVar2 > 0xf) { if (uVar2 > 0xf) {
if (uVar2 != 0xff) { if (uVar2 != 0xff) {
uVar2 = param_3[uVar2 - 0x10]; uVar2 = param_3[uVar2 - 0x10];

View File

@ -40,7 +40,7 @@ void Projectile5_OnCollision(Entity* this) {
if ((((Projectile5Entity*)this->parent)->unk_83 & 0x3f) == 3) { if ((((Projectile5Entity*)this->parent)->unk_83 & 0x3f) == 3) {
if (gPlayerState.hurtBlinkSpeed != 0) { if (gPlayerState.hurtBlinkSpeed != 0) {
if (GetCollisionDataAtTilePos(TILE(this->x.HALF.HI, this->y.HALF.HI), if (GetCollisionDataAtTilePos(TILE(this->x.HALF.HI, this->y.HALF.HI),
gPlayerEntity.base.collisionLayer) == 0) { gPlayerEntity.base.collisionLayer) == 0) {
if (this->contactFlags == CONTACT_NOW) { if (this->contactFlags == CONTACT_NOW) {
*pbVar2 = *pbVar2 & 0x7f; *pbVar2 = *pbVar2 & 0x7f;
DeleteThisEntity(); DeleteThisEntity();

View File

@ -246,8 +246,7 @@ void sub_080AA9E0(Entity* this) {
} }
void sub_080AAA68(Entity* this) { void sub_080AAA68(Entity* this) {
static const u16 typeTiles[] = { SPECIAL_TILE_35, SPECIAL_TILE_37, SPECIAL_TILE_38, static const u16 typeTiles[] = { SPECIAL_TILE_35, SPECIAL_TILE_37, SPECIAL_TILE_38, SPECIAL_TILE_36 };
SPECIAL_TILE_36 };
SetTile(typeTiles[this->type], TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); SetTile(typeTiles[this->type], TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer);
} }

View File

@ -201,9 +201,8 @@ static void sub_0804B058(EntityData* dat) {
if (EnemyEnableRespawn(uVar2) != 0) { if (EnemyEnableRespawn(uVar2) != 0) {
ent = LoadRoomEntity(dat); ent = LoadRoomEntity(dat);
if ((ent != NULL) && (ent->kind == ENEMY)) { if ((ent != NULL) && (ent->kind == ENEMY)) {
((Enemy*)ent)->idx = ((Enemy*)ent)->idx = uVar2 | 0x80; // TODO Set the room tracker flag that can be set by the
uVar2 | 0x80; // TODO Set the room tracker flag that can be set by the enemy so it does not // enemy so it does not appear next time the room is visited?
// appear next time the room is visited?
} }
} }
} else { } else {

View File

@ -629,8 +629,7 @@ void ButtonUIElement_Action1(UIElement* element) {
MAX_MOVEMENT = (!element->type2) ? 4 : 8; MAX_MOVEMENT = (!element->type2) ? 4 : 8;
if (element->type2 == 0 && if (element->type2 == 0 && (((gHUD.hideFlags >> element->type) & 1) || (gMessage.state & MESSAGE_ACTIVE) != 0)) {
(((gHUD.hideFlags >> element->type) & 1) || (gMessage.state & MESSAGE_ACTIVE) != 0)) {
y = (s16)gHUD.buttonY[element->type] - 0x28; y = (s16)gHUD.buttonY[element->type] - 0x28;
} else { } else {
y = (s16)gHUD.buttonY[element->type]; y = (s16)gHUD.buttonY[element->type];

View File

@ -61,8 +61,7 @@ void sub_08055994(void) {
layer = LAYER_BOTTOM; layer = LAYER_BOTTOM;
} }
SetTileType(TILE_TYPE_115, SetTileType(TILE_TYPE_115,
(*(u16*)(gMenu.field_0xc + 8) >> 4 & 0x3f) | (*(u16*)(gMenu.field_0xc + 10) >> 4 & 0x3f) << 6, (*(u16*)(gMenu.field_0xc + 8) >> 4 & 0x3f) | (*(u16*)(gMenu.field_0xc + 10) >> 4 & 0x3f) << 6, layer);
layer);
sub_080553E0((u32)gMenu.field_0x4); sub_080553E0((u32)gMenu.field_0x4);
SoundReq(SFX_SECRET_BIG); SoundReq(SFX_SECRET_BIG);
} }