diff --git a/asm/beanstalkSubtask.s b/asm/beanstalkSubtask.s index 06ac16bb..8086e86e 100644 --- a/asm/beanstalkSubtask.s +++ b/asm/beanstalkSubtask.s @@ -3261,8 +3261,8 @@ _0801AF10: pop {r4, pc} .align 2, 0 - thumb_func_start sub_0801AF18 -sub_0801AF18: @ 0x0801AF18 + thumb_func_start SetMultipleTiles +SetMultipleTiles: @ 0x0801AF18 push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r6, r1, #0 diff --git a/asm/object/object74.s b/asm/object/object74.s deleted file mode 100644 index 8f81ac3b..00000000 --- a/asm/object/object74.s +++ /dev/null @@ -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 diff --git a/assets/assets.json b/assets/assets.json index 8cf067f0..595e079d 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -43357,21 +43357,6 @@ "size": 4, "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", "variants": [ @@ -44601,21 +44586,6 @@ "start": 1192728, "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", "start": 1192844, diff --git a/data/const/object/object74.s b/data/const/object/object74.s deleted file mode 100644 index db514b9c..00000000 --- a/data/const/object/object74.s +++ /dev/null @@ -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" diff --git a/include/functions.h b/include/functions.h index d895fef5..f6bc2bc4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -64,6 +64,14 @@ extern bool32 ProcessMovementInternal(Entity*, s32, s32, u32); extern void SetDirtTile(u32); /** @see Item */ 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 TryLoadPrologueHyruleTown(void); extern void UnloadGFXSlots(Entity*); diff --git a/include/object.h b/include/object.h index e7b66e3b..f6f7f5c5 100644 --- a/include/object.h +++ b/include/object.h @@ -226,198 +226,198 @@ typedef enum { OBJECT_C1, } Object; -void ItemOnGround(Entity*); -void DeathFx(Entity*); +void ItemOnGround(); +void DeathFx(); void ItemForSale(); -void Button(Entity*); -void MinishEmoticon(Entity*); -void Pot(Entity*); +void Button(); +void MinishEmoticon(); +void Pot(); void EzloCap(); void BlockPushed(); -void LockedDoor(Entity*); -void Object9(Entity*); -void ObjectA(Entity*); +void LockedDoor(); +void Object9(); +void ObjectA(); void ObjectB(); void ChestSpawner(); -void ObjectD(Entity*); -void ObjectE(Entity*); -void SpecialFx(Entity*); -void Object10(Entity*); +void ObjectD(); +void ObjectE(); +void SpecialFx(); +void Object10(); void Object11(); -void Object12(Entity*); -void Railtrack(Entity*); +void Object12(); +void Railtrack(); void LilypadLarge(); -void Object15(Entity*); -void FloatingPlatform(Entity*); -void Object17(Entity*); -void EvilSpirit(Entity*); -void HouseDoorExterior(Entity*); -void Rupee(Entity*); -void GreatFairy(Entity*); -void Object1C(Entity*); -void Object1D(Entity*); -void Object1E(Entity*); -void Object1F(Entity*); -void Object20(Entity*); +void Object15(); +void FloatingPlatform(); +void Object17(); +void EvilSpirit(); +void HouseDoorExterior(); +void Rupee(); +void GreatFairy(); +void Object1C(); +void Object1D(); +void Object1E(); +void Object1F(); +void Object20(); void Object21(); void FigurineDevice(); -void EyeSwitch(Entity*); +void EyeSwitch(); void PressurePlate(); -void BigBarrel(Entity*); -void BarrelInside(Entity*); +void BigBarrel(); +void BarrelInside(); void PushableStatue(); -void Object28(Entity*); -void AmbientClouds(Entity*); -void Object2A(Entity*); -void Object2B(Entity*); +void Object28(); +void AmbientClouds(); +void Object2A(); +void Object2B(); void Beanstalk(); -void Smoke(Entity*); +void Smoke(); void PushableRock(); void HittableLever(); -void Object30(Entity*); -void FrozenFlower(Entity*); +void Object30(); +void FrozenFlower(); void PullableMushroom(); -void Bollard(Entity*); -void WarpPoint(Entity*); +void Bollard(); +void WarpPoint(); void Object35(); -void Object36(Entity*); -void Object37(Entity*); -void JarPortal(Entity*); +void Object36(); +void Object37(); +void JarPortal(); void BossDoor(); void Object3A(); -void MacroMushromStalks(Entity*); -void MacroPlayer(Entity*); -void Object3D(Entity*); +void MacroMushromStalks(); +void MacroPlayer(); +void Object3D(); void Object3E(); -void GiantLeaf(Entity*); +void GiantLeaf(); void Fairy(); -void LadderUp(Entity*); -void Object42(Entity*); +void LadderUp(); +void Object42(); void Object43(); -void Object44(Entity*); -void Object45(Entity*); -void GiantBookLadder(Entity*); -void HeartContainer(Entity*); -void FileScreenObjects(Entity*); -void Object49(Entity*); -void BackgroundCloud(Entity*); -void Object4B(Entity*); +void Object44(); +void Object45(); +void GiantBookLadder(); +void HeartContainer(); +void FileScreenObjects(); +void Object49(); +void BackgroundCloud(); +void Object4B(); void PushableFurniture(); -void Furniture(Entity*); -void MinishSizedEntrance(Entity*); -void Archway(Entity*); -void GiantRock(Entity*); -void GiantRock2(Entity*); -void Object52(Entity*); -void Object53(Entity*); +void Furniture(); +void MinishSizedEntrance(); +void Archway(); +void GiantRock(); +void GiantRock2(); +void Object52(); +void Object53(); void PullableLever(); -void Minecart(Entity*); -void ThoughtBubble(Entity*); -void HiddenLadderDown(Entity*); -void GentariCurtain(Entity*); +void Minecart(); +void ThoughtBubble(); +void HiddenLadderDown(); +void GentariCurtain(); void LavaPlatform(); -void Paper(Entity*); -void Object5B(Entity*); -void Mask(Entity*); -void HouseDoorInterior(Entity*); -void Whirlwind(Entity*); -void ObjectBlockingStairs(Entity*); -void SwordsmanNewsletter(Entity*); +void Paper(); +void Object5B(); +void Mask(); +void HouseDoorInterior(); +void Whirlwind(); +void ObjectBlockingStairs(); +void SwordsmanNewsletter(); void Object61(); void GiantTwig(); -void Object63(Entity*); -void Object64(Entity*); -void LadderHoleInBookshelf(Entity*); -void Object66(Entity*); -void Object67(Entity*); +void Object63(); +void Object64(); +void LadderHoleInBookshelf(); +void Object66(); +void Object67(); void Object68(); -void Object69(Entity*); -void Object6A(Entity*); +void Object69(); +void Object6A(); void CrenelBeanSprout(); void MinecartDoor(); void ObjectOnPillar(); -void MineralWaterSource(Entity*); -void MinishSizedArchway(Entity*); -void Object70(Entity*); +void MineralWaterSource(); +void MinishSizedArchway(); +void Object70(); void PushableGrave(); -void StoneTablet(Entity*); -void LilypadSmall(Entity*); -void Object74(Entity*); -void Object75(Entity*); -void Object76(Entity*); -void Bell(Entity*); -void MacroDecoration(Entity*); -void Object79(Entity*); -void Steam(Entity*); +void StoneTablet(); +void LilypadSmall(); +void Object74(); +void Object75(); +void Object76(); +void Bell(); +void MacroDecoration(); +void Object79(); +void Steam(); void PushableLever(); -void MacroShoes(Entity*); +void MacroShoes(); void ObjectOnSpinyBeetle(); -void Object7E(Entity*); -void PicoBloom(Entity*); -void Board(Entity*); -void Object81(Entity*); -void BigVortex(Entity*); +void Object7E(); +void PicoBloom(); +void Board(); +void Object81(); +void BigVortex(); void BigPushableLever(); void SmallIceBlock(); void BigIceBlock(); -void Object86(Entity*); -void OctorokBossObject(Entity*); -void MacroBook(Entity*); -void MazaalBossObject(Entity*); -void CabinFurniture(Entity*); +void Object86(); +void OctorokBossObject(); +void MacroBook(); +void MazaalBossObject(); +void CabinFurniture(); void DoubleBookshelf(); -void Book(Entity*); -void Fireplace(Entity*); +void Book(); +void Fireplace(); void Object8E(); void FrozenWaterElement(); -void Object90(Entity*); +void Object90(); void FrozenOctorok(); -void BakerOven(Entity*); -void Lamp(Entity*); -void WindTribeFlag(Entity*); -void Bird(Entity*); -void Object96(Entity*); +void BakerOven(); +void Lamp(); +void WindTribeFlag(); +void Bird(); +void Object96(); void KeyStealingTakkuri(); -void Object98(Entity*); -void Object99(Entity*); -void MacroAcorn(Entity*); -void Object9B(Entity*); -void TreeHidingPortal(Entity*); -void LightableSwitch(Entity*); -void TreeThorns(Entity*); -void Fan(Entity*); -void AngryStatue(Entity*); -void PalaceArchway(Entity*); -void ObjectA2(Entity*); -void Cloud(Entity*); -void MinishLight(Entity*); -void FireballChain(Entity*); -void ObjectA6(Entity*); -void ObjectA7(Entity*); +void Object98(); +void Object99(); +void MacroAcorn(); +void Object9B(); +void TreeHidingPortal(); +void LightableSwitch(); +void TreeThorns(); +void Fan(); +void AngryStatue(); +void PalaceArchway(); +void ObjectA2(); +void Cloud(); +void MinishLight(); +void FireballChain(); +void ObjectA6(); +void ObjectA7(); void ObjectA8(); -void ObjectA9(Entity*); -void WaterfallOpening(Entity*); -void ObjectAB(Entity*); +void ObjectA9(); +void WaterfallOpening(); +void ObjectAB(); void FourElements(); -void ObjectAD(Entity*); -void FloatingBlock(Entity*); -void ObjectAF(Entity*); -void MetalDoor(Entity*); -void JailBars(Entity*); -void ObjectB2(Entity*); -void ObjectB3(Entity*); -void ObjectB4(Entity*); -void ObjectB5(Entity*); -void ObjectB6(Entity*); -void Well(Entity*); +void ObjectAD(); +void FloatingBlock(); +void ObjectAF(); +void MetalDoor(); +void JailBars(); +void ObjectB2(); +void ObjectB3(); +void ObjectB4(); +void ObjectB5(); +void ObjectB6(); +void Well(); void WindTribeTeleporter(); -void ObjectB9(Entity*); -void GyorgBossObject(Entity*); -void Windcrest(Entity*); -void LitArea(Entity*); -void ObjectBD(Entity*); -void Pinwheel(Entity*); -void ObjectBF(Entity*); +void ObjectB9(); +void GyorgBossObject(); +void Windcrest(); +void LitArea(); +void ObjectBD(); +void Pinwheel(); +void ObjectBF(); void EnemyItem(); void ObjectC1(); diff --git a/linker.ld b/linker.ld index dfb5806d..51c21733 100644 --- a/linker.ld +++ b/linker.ld @@ -740,7 +740,7 @@ SECTIONS { src/object/pushableGrave.o(.text); src/object/stoneTablet.o(.text); src/object/lilypadSmall.o(.text); - asm/object/object74.o(.text); + src/object/object74.o(.text); src/object/bell.o(.text); src/object/macroDecorations.o(.text); asm/object/object79.o(.text); @@ -1483,7 +1483,7 @@ SECTIONS { src/object/pushableGrave.o(.rodata); src/object/stoneTablet.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/animations/object/bell.o(.rodata); src/object/macroDecorations.o(.rodata); diff --git a/src/object/chestSpawner.c b/src/object/chestSpawner.c index 20016663..a7890edb 100644 --- a/src/object/chestSpawner.c +++ b/src/object/chestSpawner.c @@ -310,7 +310,7 @@ void sub_080842D8(ChestSpawnerEntity* this) { if ((super->y.HALF.HI & 8) != 0) { 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 }; diff --git a/src/object/jailBars.c b/src/object/jailBars.c index 7a36f0e2..9983eb1c 100644 --- a/src/object/jailBars.c +++ b/src/object/jailBars.c @@ -8,8 +8,8 @@ extern void sub_080A0960(Entity*, u32); extern void (*const gUnk_08124950[])(Entity*); -extern u8 gUnk_08124960; -extern u8 gUnk_0812497A; +extern u16 gUnk_08124960[]; +extern u16 gUnk_0812497A[]; void JailBars(Entity* this) { gUnk_08124950[this->action](this); @@ -49,11 +49,11 @@ void nullsub_127(Entity* this) { } void sub_080A0960(Entity* this, u32 arg1) { - u8* puVar1; + u16* puVar1; - puVar1 = &gUnk_08124960; + puVar1 = gUnk_08124960; if (arg1 == 1) { - puVar1 = &gUnk_0812497A; + puVar1 = gUnk_0812497A; } - sub_0801AF18(puVar1, COORD_TO_TILE(this), 1); + SetMultipleTiles(puVar1, COORD_TO_TILE(this), 1); } diff --git a/src/object/object74.c b/src/object/object74.c new file mode 100644 index 00000000..e3c4111c --- /dev/null +++ b/src/object/object74.c @@ -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); + } +} diff --git a/src/object/pushableGrave.c b/src/object/pushableGrave.c index 989f817e..a3421aa2 100644 --- a/src/object/pushableGrave.c +++ b/src/object/pushableGrave.c @@ -78,7 +78,7 @@ void PushableGrave_Init(PushableGraveEntity* this) { super->hitbox = (Hitbox*)&gUnk_080FD570; SetTile(tileIndex, tilePosition, super->collisionLayer); if (super->type2 == 2) { - sub_0801AF18((u8*)gUnk_081232C0, tilePosition, super->collisionLayer); + SetMultipleTiles((u16*)gUnk_081232C0, tilePosition, super->collisionLayer); } } } diff --git a/src/object/stoneTablet.c b/src/object/stoneTablet.c index 9216e9b8..ce0df01e 100644 --- a/src/object/stoneTablet.c +++ b/src/object/stoneTablet.c @@ -15,22 +15,17 @@ void StoneTablet(Entity* this) { } void sub_080979CC(Entity* this) { - static const u8 gUnk_081232EC[] = { - 0x22, 0x40, 0xFE, 0xFF, 0x22, 0x40, 0xFF, 0xFF, 0x22, 0x40, 0x0, 0x0, 0x22, 0x40, 0x1, 0x0, 0xFF, 0xFF, - }; - - 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, - }; + static const u16 gUnk_081232EC[] = { 0x4022, 0xfffe, 0x4022, 0xffff, 0x4022, 0x0, 0x4022, 0x1, 0xffff }; + static const u16 gUnk_081232FE[] = { 0x4065, 0xffbf, 0x4022, 0xffc0, 0x4066, 0xffc1, 0x4029, + 0xffff, 0x4026, 0x0, 0x402a, 0x1, 0xffff }; this->action = 1; this->spriteSettings.draw = 1; if (this->type == 3) { this->frameIndex = 0; - sub_0801AF18(gUnk_081232FE, COORD_TO_TILE(this), this->collisionLayer); + SetMultipleTiles((u16*)gUnk_081232FE, COORD_TO_TILE(this), this->collisionLayer); } else { this->frameIndex = this->type; - sub_0801AF18(gUnk_081232EC, COORD_TO_TILE(this), this->collisionLayer); + SetMultipleTiles((u16*)gUnk_081232EC, COORD_TO_TILE(this), this->collisionLayer); } }