Decompile Object74

This commit is contained in:
octorock 2022-02-28 23:35:23 +01:00
parent 241c0312d9
commit cffa1024ca
12 changed files with 289 additions and 498 deletions

View File

@ -3261,8 +3261,8 @@ _0801AF10:
pop {r4, pc} pop {r4, pc}
.align 2, 0 .align 2, 0
thumb_func_start sub_0801AF18 thumb_func_start SetMultipleTiles
sub_0801AF18: @ 0x0801AF18 SetMultipleTiles: @ 0x0801AF18
push {r4, r5, r6, r7, lr} push {r4, r5, r6, r7, lr}
adds r4, r0, #0 adds r4, r0, #0
adds r6, r1, #0 adds r6, r1, #0

View File

@ -1,277 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object74
Object74: @ 0x08097B6C
push {lr}
ldr r2, _08097B80 @ =gUnk_08123330
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08097B80: .4byte gUnk_08123330
thumb_func_start sub_08097B84
sub_08097B84: @ 0x08097B84
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
ldr r0, _08097BCC @ =gUnk_08123328
str r0, [r4, #0x48]
adds r2, #0x5d
ldrh r1, [r2]
ldr r0, _08097BD0 @ =0x0000FFFF
cmp r1, r0
beq _08097BB0
adds r0, r1, #0
bl CheckFlags
cmp r0, #0
beq _08097BD4
_08097BB0:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #4
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_08097CFC
b _08097BD8
.align 2, 0
_08097BCC: .4byte gUnk_08123328
_08097BD0: .4byte 0x0000FFFF
_08097BD4:
bl sub_0805BC4C
_08097BD8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08097BDC
sub_08097BDC: @ 0x08097BDC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _08097C10
movs r0, #1
bl SetPlayerControl
ldr r0, _08097C14 @ =gUnk_02034490
movs r1, #1
strb r1, [r0]
adds r0, r4, #0
movs r1, #0x1e
bl RequestPriorityDuration
adds r0, r4, #0
bl sub_08097CB0
cmp r0, #0
bne _08097C10
adds r0, r4, #0
bl sub_08097CB4
_08097C10:
pop {r4, pc}
.align 2, 0
_08097C14: .4byte gUnk_02034490
thumb_func_start sub_08097C18
sub_08097C18: @ 0x08097C18
bx lr
.align 2, 0
thumb_func_start sub_08097C1C
sub_08097C1C: @ 0x08097C1C
bx lr
.align 2, 0
thumb_func_start sub_08097C20
sub_08097C20: @ 0x08097C20
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #0x1e
bl SetPriorityTimer
adds r0, r4, #0
bl sub_0800445C
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl CreateMagicSparkles
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _08097CA6
movs r0, #8
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
adds r0, #1
strb r0, [r4, #0xf]
ands r1, r0
ldr r6, _08097CA8 @ =gScreen
movs r0, #0x10
subs r0, r0, r1
lsls r0, r0, #8
orrs r0, r1
adds r1, r6, #0
adds r1, #0x68
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x10
bne _08097CA6
movs r0, #0
bl SetPlayerControl
ldr r1, _08097CAC @ =gUnk_02034490
movs r0, #0
strb r0, [r1]
adds r0, r6, #0
adds r0, #0x66
strh r5, [r0]
adds r0, r4, #0
bl sub_08097CFC
movs r0, #4
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x19]
subs r0, #0x11
ands r0, r1
strb r0, [r4, #0x19]
movs r0, #0x72
bl SoundReq
movs r0, #0x63
bl SetGlobalFlag
_08097CA6:
pop {r4, r5, r6, pc}
.align 2, 0
_08097CA8: .4byte gScreen
_08097CAC: .4byte gUnk_02034490
thumb_func_start sub_08097CB0
sub_08097CB0: @ 0x08097CB0
movs r0, #0
bx lr
thumb_func_start sub_08097CB4
sub_08097CB4: @ 0x08097CB4
push {lr}
movs r3, #0
movs r1, #3
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #7
ands r1, r2
movs r2, #1
orrs r1, r2
strb r1, [r0, #0x18]
ldrb r2, [r0, #0x19]
movs r1, #0xd
rsbs r1, r1, #0
ands r1, r2
movs r2, #4
orrs r1, r2
strb r1, [r0, #0x19]
movs r1, #0x1e
strb r1, [r0, #0xe]
strb r3, [r0, #0xf]
ldr r1, _08097CF8 @ =gScreen
adds r2, r1, #0
adds r2, #0x66
movs r0, #0xf4
lsls r0, r0, #4
strh r0, [r2]
adds r1, #0x68
adds r0, #0xc0
strh r0, [r1]
movs r0, #0xa5
lsls r0, r0, #1
bl SoundReq
pop {pc}
.align 2, 0
_08097CF8: .4byte gScreen
thumb_func_start sub_08097CFC
sub_08097CFC: @ 0x08097CFC
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrh r1, [r5, #0x2e]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _08097D40
ldr r0, _08097D38 @ =gUnk_0812336A
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08097D3C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0801AF18
b _08097D6C
.align 2, 0
_08097D38: .4byte gUnk_0812336A
_08097D3C: .4byte gRoomControls
_08097D40:
ldr r0, _08097D70 @ =gUnk_08123344
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08097D74 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0801AF18
_08097D6C:
pop {r4, r5, r6, pc}
.align 2, 0
_08097D70: .4byte gUnk_08123344
_08097D74: .4byte gRoomControls

View File

@ -43357,21 +43357,6 @@
"size": 4, "size": 4,
"type": "animation" "type": "animation"
}, },
{
"path": "object3A/gUnk_081215E8.bin",
"start": 1185256,
"size": 80
},
{
"path": "object3A/gUnk_08121648.bin",
"start": 1185352,
"size": 32
},
{
"path": "macroPlayer/gUnk_081216B4.bin",
"start": 1185460,
"size": 8
},
{ {
"path": "object3D/gUnk_081216C8_EU.bin", "path": "object3D/gUnk_081216C8_EU.bin",
"variants": [ "variants": [
@ -44601,21 +44586,6 @@
"start": 1192728, "start": 1192728,
"size": 16 "size": 16
}, },
{
"path": "object74/gUnk_08123328.bin",
"start": 1192744,
"size": 8
},
{
"path": "object74/gUnk_08123344.bin",
"start": 1192772,
"size": 38
},
{
"path": "object74/gUnk_0812336A.bin",
"start": 1192810,
"size": 26
},
{ {
"path": "animations/gSpriteAnimations_Bell_0.bin", "path": "animations/gSpriteAnimations_Bell_0.bin",
"start": 1192844, "start": 1192844,

View File

@ -1,21 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08123328:: @ 08123328
.incbin "object74/gUnk_08123328.bin"
gUnk_08123330:: @ 08123330
.4byte sub_08097B84
.4byte sub_08097BDC
.4byte sub_08097C18
.4byte sub_08097C20
.4byte sub_08097C1C
gUnk_08123344:: @ 08123344
.incbin "object74/gUnk_08123344.bin"
gUnk_0812336A:: @ 0812336A
.incbin "object74/gUnk_0812336A.bin"

View File

@ -64,6 +64,14 @@ extern bool32 ProcessMovementInternal(Entity*, s32, s32, u32);
extern void SetDirtTile(u32); extern void SetDirtTile(u32);
/** @see Item */ /** @see Item */
extern void SetInventoryValue(u32, u32); extern void SetInventoryValue(u32, u32);
/**
* @brief Sets multiple tiles at once
*
* @param tileData [u16 tileIndex, s16 positionOffset], ends with 0xffff
* @param basePosition the position the offsets in tileData are based on
* @param layer the tile layer
*/
extern void SetMultipleTiles(u16* tileData, u32 basePosition, u32 layer);
extern void SoundReqClipped(Entity*, u32); extern void SoundReqClipped(Entity*, u32);
extern void TryLoadPrologueHyruleTown(void); extern void TryLoadPrologueHyruleTown(void);
extern void UnloadGFXSlots(Entity*); extern void UnloadGFXSlots(Entity*);

View File

@ -226,198 +226,198 @@ typedef enum {
OBJECT_C1, OBJECT_C1,
} Object; } Object;
void ItemOnGround(Entity*); void ItemOnGround();
void DeathFx(Entity*); void DeathFx();
void ItemForSale(); void ItemForSale();
void Button(Entity*); void Button();
void MinishEmoticon(Entity*); void MinishEmoticon();
void Pot(Entity*); void Pot();
void EzloCap(); void EzloCap();
void BlockPushed(); void BlockPushed();
void LockedDoor(Entity*); void LockedDoor();
void Object9(Entity*); void Object9();
void ObjectA(Entity*); void ObjectA();
void ObjectB(); void ObjectB();
void ChestSpawner(); void ChestSpawner();
void ObjectD(Entity*); void ObjectD();
void ObjectE(Entity*); void ObjectE();
void SpecialFx(Entity*); void SpecialFx();
void Object10(Entity*); void Object10();
void Object11(); void Object11();
void Object12(Entity*); void Object12();
void Railtrack(Entity*); void Railtrack();
void LilypadLarge(); void LilypadLarge();
void Object15(Entity*); void Object15();
void FloatingPlatform(Entity*); void FloatingPlatform();
void Object17(Entity*); void Object17();
void EvilSpirit(Entity*); void EvilSpirit();
void HouseDoorExterior(Entity*); void HouseDoorExterior();
void Rupee(Entity*); void Rupee();
void GreatFairy(Entity*); void GreatFairy();
void Object1C(Entity*); void Object1C();
void Object1D(Entity*); void Object1D();
void Object1E(Entity*); void Object1E();
void Object1F(Entity*); void Object1F();
void Object20(Entity*); void Object20();
void Object21(); void Object21();
void FigurineDevice(); void FigurineDevice();
void EyeSwitch(Entity*); void EyeSwitch();
void PressurePlate(); void PressurePlate();
void BigBarrel(Entity*); void BigBarrel();
void BarrelInside(Entity*); void BarrelInside();
void PushableStatue(); void PushableStatue();
void Object28(Entity*); void Object28();
void AmbientClouds(Entity*); void AmbientClouds();
void Object2A(Entity*); void Object2A();
void Object2B(Entity*); void Object2B();
void Beanstalk(); void Beanstalk();
void Smoke(Entity*); void Smoke();
void PushableRock(); void PushableRock();
void HittableLever(); void HittableLever();
void Object30(Entity*); void Object30();
void FrozenFlower(Entity*); void FrozenFlower();
void PullableMushroom(); void PullableMushroom();
void Bollard(Entity*); void Bollard();
void WarpPoint(Entity*); void WarpPoint();
void Object35(); void Object35();
void Object36(Entity*); void Object36();
void Object37(Entity*); void Object37();
void JarPortal(Entity*); void JarPortal();
void BossDoor(); void BossDoor();
void Object3A(); void Object3A();
void MacroMushromStalks(Entity*); void MacroMushromStalks();
void MacroPlayer(Entity*); void MacroPlayer();
void Object3D(Entity*); void Object3D();
void Object3E(); void Object3E();
void GiantLeaf(Entity*); void GiantLeaf();
void Fairy(); void Fairy();
void LadderUp(Entity*); void LadderUp();
void Object42(Entity*); void Object42();
void Object43(); void Object43();
void Object44(Entity*); void Object44();
void Object45(Entity*); void Object45();
void GiantBookLadder(Entity*); void GiantBookLadder();
void HeartContainer(Entity*); void HeartContainer();
void FileScreenObjects(Entity*); void FileScreenObjects();
void Object49(Entity*); void Object49();
void BackgroundCloud(Entity*); void BackgroundCloud();
void Object4B(Entity*); void Object4B();
void PushableFurniture(); void PushableFurniture();
void Furniture(Entity*); void Furniture();
void MinishSizedEntrance(Entity*); void MinishSizedEntrance();
void Archway(Entity*); void Archway();
void GiantRock(Entity*); void GiantRock();
void GiantRock2(Entity*); void GiantRock2();
void Object52(Entity*); void Object52();
void Object53(Entity*); void Object53();
void PullableLever(); void PullableLever();
void Minecart(Entity*); void Minecart();
void ThoughtBubble(Entity*); void ThoughtBubble();
void HiddenLadderDown(Entity*); void HiddenLadderDown();
void GentariCurtain(Entity*); void GentariCurtain();
void LavaPlatform(); void LavaPlatform();
void Paper(Entity*); void Paper();
void Object5B(Entity*); void Object5B();
void Mask(Entity*); void Mask();
void HouseDoorInterior(Entity*); void HouseDoorInterior();
void Whirlwind(Entity*); void Whirlwind();
void ObjectBlockingStairs(Entity*); void ObjectBlockingStairs();
void SwordsmanNewsletter(Entity*); void SwordsmanNewsletter();
void Object61(); void Object61();
void GiantTwig(); void GiantTwig();
void Object63(Entity*); void Object63();
void Object64(Entity*); void Object64();
void LadderHoleInBookshelf(Entity*); void LadderHoleInBookshelf();
void Object66(Entity*); void Object66();
void Object67(Entity*); void Object67();
void Object68(); void Object68();
void Object69(Entity*); void Object69();
void Object6A(Entity*); void Object6A();
void CrenelBeanSprout(); void CrenelBeanSprout();
void MinecartDoor(); void MinecartDoor();
void ObjectOnPillar(); void ObjectOnPillar();
void MineralWaterSource(Entity*); void MineralWaterSource();
void MinishSizedArchway(Entity*); void MinishSizedArchway();
void Object70(Entity*); void Object70();
void PushableGrave(); void PushableGrave();
void StoneTablet(Entity*); void StoneTablet();
void LilypadSmall(Entity*); void LilypadSmall();
void Object74(Entity*); void Object74();
void Object75(Entity*); void Object75();
void Object76(Entity*); void Object76();
void Bell(Entity*); void Bell();
void MacroDecoration(Entity*); void MacroDecoration();
void Object79(Entity*); void Object79();
void Steam(Entity*); void Steam();
void PushableLever(); void PushableLever();
void MacroShoes(Entity*); void MacroShoes();
void ObjectOnSpinyBeetle(); void ObjectOnSpinyBeetle();
void Object7E(Entity*); void Object7E();
void PicoBloom(Entity*); void PicoBloom();
void Board(Entity*); void Board();
void Object81(Entity*); void Object81();
void BigVortex(Entity*); void BigVortex();
void BigPushableLever(); void BigPushableLever();
void SmallIceBlock(); void SmallIceBlock();
void BigIceBlock(); void BigIceBlock();
void Object86(Entity*); void Object86();
void OctorokBossObject(Entity*); void OctorokBossObject();
void MacroBook(Entity*); void MacroBook();
void MazaalBossObject(Entity*); void MazaalBossObject();
void CabinFurniture(Entity*); void CabinFurniture();
void DoubleBookshelf(); void DoubleBookshelf();
void Book(Entity*); void Book();
void Fireplace(Entity*); void Fireplace();
void Object8E(); void Object8E();
void FrozenWaterElement(); void FrozenWaterElement();
void Object90(Entity*); void Object90();
void FrozenOctorok(); void FrozenOctorok();
void BakerOven(Entity*); void BakerOven();
void Lamp(Entity*); void Lamp();
void WindTribeFlag(Entity*); void WindTribeFlag();
void Bird(Entity*); void Bird();
void Object96(Entity*); void Object96();
void KeyStealingTakkuri(); void KeyStealingTakkuri();
void Object98(Entity*); void Object98();
void Object99(Entity*); void Object99();
void MacroAcorn(Entity*); void MacroAcorn();
void Object9B(Entity*); void Object9B();
void TreeHidingPortal(Entity*); void TreeHidingPortal();
void LightableSwitch(Entity*); void LightableSwitch();
void TreeThorns(Entity*); void TreeThorns();
void Fan(Entity*); void Fan();
void AngryStatue(Entity*); void AngryStatue();
void PalaceArchway(Entity*); void PalaceArchway();
void ObjectA2(Entity*); void ObjectA2();
void Cloud(Entity*); void Cloud();
void MinishLight(Entity*); void MinishLight();
void FireballChain(Entity*); void FireballChain();
void ObjectA6(Entity*); void ObjectA6();
void ObjectA7(Entity*); void ObjectA7();
void ObjectA8(); void ObjectA8();
void ObjectA9(Entity*); void ObjectA9();
void WaterfallOpening(Entity*); void WaterfallOpening();
void ObjectAB(Entity*); void ObjectAB();
void FourElements(); void FourElements();
void ObjectAD(Entity*); void ObjectAD();
void FloatingBlock(Entity*); void FloatingBlock();
void ObjectAF(Entity*); void ObjectAF();
void MetalDoor(Entity*); void MetalDoor();
void JailBars(Entity*); void JailBars();
void ObjectB2(Entity*); void ObjectB2();
void ObjectB3(Entity*); void ObjectB3();
void ObjectB4(Entity*); void ObjectB4();
void ObjectB5(Entity*); void ObjectB5();
void ObjectB6(Entity*); void ObjectB6();
void Well(Entity*); void Well();
void WindTribeTeleporter(); void WindTribeTeleporter();
void ObjectB9(Entity*); void ObjectB9();
void GyorgBossObject(Entity*); void GyorgBossObject();
void Windcrest(Entity*); void Windcrest();
void LitArea(Entity*); void LitArea();
void ObjectBD(Entity*); void ObjectBD();
void Pinwheel(Entity*); void Pinwheel();
void ObjectBF(Entity*); void ObjectBF();
void EnemyItem(); void EnemyItem();
void ObjectC1(); void ObjectC1();

View File

@ -740,7 +740,7 @@ SECTIONS {
src/object/pushableGrave.o(.text); src/object/pushableGrave.o(.text);
src/object/stoneTablet.o(.text); src/object/stoneTablet.o(.text);
src/object/lilypadSmall.o(.text); src/object/lilypadSmall.o(.text);
asm/object/object74.o(.text); src/object/object74.o(.text);
src/object/bell.o(.text); src/object/bell.o(.text);
src/object/macroDecorations.o(.text); src/object/macroDecorations.o(.text);
asm/object/object79.o(.text); asm/object/object79.o(.text);
@ -1483,7 +1483,7 @@ SECTIONS {
src/object/pushableGrave.o(.rodata); src/object/pushableGrave.o(.rodata);
src/object/stoneTablet.o(.rodata); src/object/stoneTablet.o(.rodata);
data/const/object/lilypadSmall.o(.rodata); data/const/object/lilypadSmall.o(.rodata);
data/const/object/object74.o(.rodata); src/object/object74.o(.rodata);
data/const/object/bell.o(.rodata); data/const/object/bell.o(.rodata);
data/animations/object/bell.o(.rodata); data/animations/object/bell.o(.rodata);
src/object/macroDecorations.o(.rodata); src/object/macroDecorations.o(.rodata);

View File

@ -310,7 +310,7 @@ void sub_080842D8(ChestSpawnerEntity* this) {
if ((super->y.HALF.HI & 8) != 0) { if ((super->y.HALF.HI & 8) != 0) {
index += 2; index += 2;
} }
sub_0801AF18((u8*)gUnk_0811F898[index], COORD_TO_TILE(super), super->collisionLayer); SetMultipleTiles((u16*)gUnk_0811F898[index], COORD_TO_TILE(super), super->collisionLayer);
} }
const Hitbox gUnk_0811F8A8 = { 0, -3, { 0, 0, 0, 0 }, 6, 6 }; const Hitbox gUnk_0811F8A8 = { 0, -3, { 0, 0, 0, 0 }, 6, 6 };

View File

@ -8,8 +8,8 @@
extern void sub_080A0960(Entity*, u32); extern void sub_080A0960(Entity*, u32);
extern void (*const gUnk_08124950[])(Entity*); extern void (*const gUnk_08124950[])(Entity*);
extern u8 gUnk_08124960; extern u16 gUnk_08124960[];
extern u8 gUnk_0812497A; extern u16 gUnk_0812497A[];
void JailBars(Entity* this) { void JailBars(Entity* this) {
gUnk_08124950[this->action](this); gUnk_08124950[this->action](this);
@ -49,11 +49,11 @@ void nullsub_127(Entity* this) {
} }
void sub_080A0960(Entity* this, u32 arg1) { void sub_080A0960(Entity* this, u32 arg1) {
u8* puVar1; u16* puVar1;
puVar1 = &gUnk_08124960; puVar1 = gUnk_08124960;
if (arg1 == 1) { if (arg1 == 1) {
puVar1 = &gUnk_0812497A; puVar1 = gUnk_0812497A;
} }
sub_0801AF18(puVar1, COORD_TO_TILE(this), 1); SetMultipleTiles(puVar1, COORD_TO_TILE(this), 1);
} }

116
src/object/object74.c Normal file
View File

@ -0,0 +1,116 @@
/**
* @file object74.c
* @ingroup Objects
*
* @brief Object74 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "screen.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x1e];
/*0x86*/ u16 unk_86;
} Object74Entity;
void sub_08097B84(Object74Entity*);
void sub_08097BDC(Object74Entity*);
void sub_08097C18(Object74Entity*);
void sub_08097C20(Object74Entity*);
void sub_08097C1C(Object74Entity*);
void sub_08097CFC(Object74Entity*);
bool32 sub_08097CB0(Object74Entity*);
void sub_08097CB4(Object74Entity*);
const Hitbox gUnk_08123328 = { 0, 0, { 4, 0, 0, 4 }, 18, 18 };
void Object74(Object74Entity* this) {
static void (*const gUnk_08123330[])(Object74Entity*) = {
sub_08097B84, sub_08097BDC, sub_08097C18, sub_08097C20, sub_08097C1C,
};
gUnk_08123330[super->action](this);
}
void sub_08097B84(Object74Entity* this) {
super->action = 1;
super->spritePriority.b0 = 7;
super->hitbox = (Hitbox*)&gUnk_08123328;
if ((this->unk_86 == 0xffff) || (CheckFlags(this->unk_86))) {
super->spriteSettings.draw = 1;
super->action = 4;
sub_08097CFC(this);
} else {
sub_0805BC4C();
}
}
void sub_08097BDC(Object74Entity* this) {
if (CheckFlags(this->unk_86)) {
SetPlayerControl(CONTROL_1);
gUnk_02034490.unk0 = 1;
RequestPriorityDuration(super, 0x1e);
if (sub_08097CB0(this) == FALSE) {
sub_08097CB4(this);
}
}
}
void sub_08097C18(Object74Entity* this) {
}
void sub_08097C1C(Object74Entity* this) {
}
void sub_08097C20(Object74Entity* this) {
u32 tmp;
SetPriorityTimer(0x1e);
sub_0800445C(super);
CreateMagicSparkles(super->x.HALF.HI, super->y.HALF.HI, super->collisionLayer);
if (--super->actionDelay == 0) {
super->actionDelay = 8;
tmp = ++super->field_0xf;
gScreen.controls.alphaBlend = (((0x10 - tmp) * 0x100)) | tmp;
if (gScreen.controls.alphaBlend == 0x10) {
SetPlayerControl(CONTROL_ENABLED);
gUnk_02034490.unk0 = 0;
gScreen.controls.layerFXControl = 0;
sub_08097CFC(this);
super->action = 4;
super->spriteRendering.alphaBlend = 0;
SoundReq(SFX_SECRET);
SetGlobalFlag(TINY_ENTRANCE);
}
}
}
bool32 sub_08097CB0(Object74Entity* this) {
return FALSE;
}
void sub_08097CB4(Object74Entity* this) {
super->action = 3;
super->spriteSettings.draw = 1;
super->spriteRendering.alphaBlend = 1;
super->actionDelay = 0x1e;
super->field_0xf = 0;
gScreen.controls.layerFXControl = 0xf40;
gScreen.controls.alphaBlend = 0x1000;
SoundReq(SFX_14A);
}
void sub_08097CFC(Object74Entity* this) {
static const u16 gUnk_08123344[] = { 16448, 65471, 16449, 65472, 16450, 65473, 16451, 65535, 16452, 0,
16453, 1, 16454, 63, 16455, 64, 16456, 65, 65535 };
static const u16 gUnk_0812336A[] = {
16449, 65471, 16449, 65472, 16452, 65535, 16452, 0, 16455, 63, 16455, 64, 65535
};
if ((super->x.HALF.HI & 0xf) == 0) {
SetMultipleTiles((u16*)gUnk_0812336A, COORD_TO_TILE(super), super->collisionLayer);
} else {
SetMultipleTiles((u16*)gUnk_08123344, COORD_TO_TILE(super), super->collisionLayer);
}
}

View File

@ -78,7 +78,7 @@ void PushableGrave_Init(PushableGraveEntity* this) {
super->hitbox = (Hitbox*)&gUnk_080FD570; super->hitbox = (Hitbox*)&gUnk_080FD570;
SetTile(tileIndex, tilePosition, super->collisionLayer); SetTile(tileIndex, tilePosition, super->collisionLayer);
if (super->type2 == 2) { if (super->type2 == 2) {
sub_0801AF18((u8*)gUnk_081232C0, tilePosition, super->collisionLayer); SetMultipleTiles((u16*)gUnk_081232C0, tilePosition, super->collisionLayer);
} }
} }
} }

View File

@ -15,22 +15,17 @@ void StoneTablet(Entity* this) {
} }
void sub_080979CC(Entity* this) { void sub_080979CC(Entity* this) {
static const u8 gUnk_081232EC[] = { static const u16 gUnk_081232EC[] = { 0x4022, 0xfffe, 0x4022, 0xffff, 0x4022, 0x0, 0x4022, 0x1, 0xffff };
0x22, 0x40, 0xFE, 0xFF, 0x22, 0x40, 0xFF, 0xFF, 0x22, 0x40, 0x0, 0x0, 0x22, 0x40, 0x1, 0x0, 0xFF, 0xFF, static const u16 gUnk_081232FE[] = { 0x4065, 0xffbf, 0x4022, 0xffc0, 0x4066, 0xffc1, 0x4029,
}; 0xffff, 0x4026, 0x0, 0x402a, 0x1, 0xffff };
static const u8 gUnk_081232FE[] = {
0x65, 0x40, 0xBF, 0xFF, 0x22, 0x40, 0xC0, 0xFF, 0x66, 0x40, 0xC1, 0xFF, 0x29,
0x40, 0xFF, 0xFF, 0x26, 0x40, 0x0, 0x0, 0x2A, 0x40, 0x1, 0x0, 0xFF, 0xFF,
};
this->action = 1; this->action = 1;
this->spriteSettings.draw = 1; this->spriteSettings.draw = 1;
if (this->type == 3) { if (this->type == 3) {
this->frameIndex = 0; this->frameIndex = 0;
sub_0801AF18(gUnk_081232FE, COORD_TO_TILE(this), this->collisionLayer); SetMultipleTiles((u16*)gUnk_081232FE, COORD_TO_TILE(this), this->collisionLayer);
} else { } else {
this->frameIndex = this->type; this->frameIndex = this->type;
sub_0801AF18(gUnk_081232EC, COORD_TO_TILE(this), this->collisionLayer); SetMultipleTiles((u16*)gUnk_081232EC, COORD_TO_TILE(this), this->collisionLayer);
} }
} }