From d6c379cb3e9dfe45a87e9531573e3397083099f6 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Tue, 9 Mar 2021 04:22:03 +0100 Subject: [PATCH 01/21] big cleanup part 1 --- asm/bigGoron.s | 2 +- asm/code_08018500.s | 2 +- asm/code_0801C370.s | 6 +-- asm/code_0801CEC0.s | 2 +- asm/code_0801D79C.s | 24 +++++----- asm/code_0804B9F8.s | 4 +- asm/code_080526F8.s | 16 +++---- asm/code_08056418.s | 6 +-- asm/code_0805E3B0.s | 6 +-- asm/code_0805EC04.s | 8 ++-- asm/code_0806ED78.s | 2 +- asm/code_0806FA6C.s | 6 +-- asm/code_080732D0.s | 2 +- asm/code_08077B98.s | 2 +- asm/code_08078778.s | 4 +- asm/code_0807B9B8.s | 26 +++++------ asm/code_0807F0D8.s | 8 ++-- asm/code_080A29BC.s | 2 +- asm/code_080A3480.s | 10 ++--- asm/code_080A3BD0.s | 26 +++++------ asm/code_080A5574.s | 24 +++++----- asm/code_080AD90C.s | 8 ++-- asm/fileScreen.s | 14 +++--- asm/gyorgFemale.s | 10 ++--- asm/manager10.s | 2 +- asm/manager2C.s | 2 +- asm/non_matching/arm_proxy/ItemInit.inc | 2 +- asm/non_matching/arm_proxy/sub_08017530.inc | 2 +- asm/non_matching/arm_proxy/sub_0801766C.inc | 2 +- asm/non_matching/arm_proxy/sub_080176E4.inc | 2 +- asm/non_matching/arm_proxy/sub_08017744.inc | 2 +- asm/non_matching/arm_proxy/sub_080177A0.inc | 2 +- asm/non_matching/fileScreen/sub_08050EF4.inc | 2 +- asm/non_matching/fileScreen/sub_08051738.inc | 2 +- asm/non_matching/fileScreen/sub_080517B4.inc | 2 +- asm/non_matching/fileScreen/sub_080610B8.inc | 2 +- asm/non_matching/game/sub_08052418.inc | 4 +- asm/non_matching/gibdo/sub_080376D0.inc | 2 +- asm/non_matching/gibdo/sub_08037810.inc | 2 +- asm/non_matching/gibdo/sub_0803797C.inc | 2 +- asm/non_matching/save/sub_08050B3C.inc | 2 +- asm/non_matching/sub_080560B8.inc | 2 +- asm/non_matching/textbox/sub_080564EC.inc | 8 ++-- asm/object3D.s | 2 +- include/dma.h | 9 ++++ include/enemy.h | 1 - include/entity.h | 17 +++---- include/functions.h | 23 ---------- include/gba/macro.h | 14 +++--- include/global.h | 8 ++-- include/greatFairy.h | 25 ++--------- include/item.h | 17 ------- include/npc.h | 4 -- include/structures.h | 3 +- src/arm_proxy.c | 5 ++- src/code_080300AC.c | 7 ++- src/code_0804AA84.c | 5 +-- src/code_0805F9A0.c | 3 +- src/code_08077DF4.c | 3 +- src/code_0808091C.c | 3 -- src/createEnemy.c | 4 +- src/createNPC.c | 22 +++++---- src/createObject.c | 23 +++++----- src/dma.c | 33 +++++++------- src/enemy/acroBandits.c | 4 -- src/enemy/beetle.c | 2 +- src/enemy/bladeTrap.c | 3 +- src/enemy/bombPeahat.c | 3 -- src/enemy/bowMoblin.c | 8 ++-- src/enemy/chuchuBoss.c | 4 -- src/enemy/gyorgMale.c | 1 - src/enemy/keaton.c | 8 ++-- src/enemy/keese.c | 7 --- src/enemy/lakitu.c | 47 -------------------- src/enemy/lakituCloud.c | 10 +---- src/enemy/leever.c | 6 --- src/enemy/likeLike.c | 1 - src/enemy/miniFireballGuy.c | 4 -- src/enemy/miniSlime.c | 3 -- src/enemy/octorok.c | 8 ---- src/enemy/pesto.c | 2 - src/enemy/puffstool.c | 1 - src/enemy/slime.c | 3 -- src/enemy/smallPesto.c | 15 ++----- src/enemy/spearMoblin.c | 1 - src/enemy/tektite.c | 4 -- src/enemy/vaatiBall.c | 2 - src/enemy/wallMaster2.c | 1 - src/entity.c | 10 ++--- src/fileScreen.c | 26 +++++------ src/game.c | 10 ++--- src/intro.c | 6 +-- src/item.c | 5 +-- src/item11.c | 3 +- src/loadRoom.c | 3 +- src/main.c | 7 +-- src/manager/manager1.c | 3 +- src/manager/manager15.c | 2 - src/manager/manager1A.c | 5 +-- src/manager/manager1E.c | 1 - src/manager/manager2.c | 2 +- src/manager/manager20.c | 5 +-- src/manager/manager27.c | 1 - src/manager/manager28.c | 1 - src/manager/manager30.c | 2 - src/manager/manager39.c | 7 ++- src/manager/manager4.c | 5 +-- src/manager/manager5.c | 2 - src/manager/manager6.c | 7 +-- src/manager/manager7.c | 3 -- src/manager/manager8.c | 2 - src/manager/manager9.c | 1 - src/manager/managerA.c | 9 +--- src/manager/managerB.c | 3 +- src/manager/managerC.c | 5 +-- src/manager/managerE.c | 8 +--- src/npc/anju.c | 12 ++--- src/npc/bigGoron.c | 6 --- src/npc/carlov.c | 3 +- src/npc/carpenter.c | 12 +---- src/npc/cow.c | 11 ----- src/npc/dampe.c | 9 +--- src/npc/emma.c | 23 +++------- src/npc/ezloCap.c | 1 - src/npc/festari.c | 4 -- src/npc/forestMinish.c | 10 ----- src/npc/gentari.c | 10 +---- src/npc/guard.c | 18 ++------ src/npc/mailbox.c | 2 +- src/npc/malon.c | 2 - src/npc/mayorHagen.c | 8 ---- src/npc/melari.c | 11 ----- src/npc/milkCart.c | 3 +- src/npc/moblinLady.c | 4 +- src/npc/mutoh.c | 9 ---- src/npc/npc9.c | 6 +-- src/npc/percy.c | 1 - src/npc/postman.c | 12 ----- src/npc/rem.c | 2 - src/npc/simon.c | 3 -- src/npc/smith.c | 12 ----- src/npc/stamp.c | 6 --- src/npc/syrup.c | 12 ++--- src/npc/teachers.c | 7 --- src/npc/townMinish.c | 5 --- src/npc/townsperson.c | 11 ----- src/npc/wheaton.c | 6 +-- src/npc/windTribespeople.c | 9 ---- src/npc/zelda.c | 9 ---- src/object/archway.c | 3 +- src/object/bell.c | 2 +- src/object/button.c | 7 +-- src/object/cloud.c | 13 ------ src/object/fileScreenObjects.c | 3 -- src/object/giantLeaf.c | 3 +- src/object/greatFairy.c | 3 +- src/object/heartContainer.c | 3 -- src/object/jailBars.c | 2 +- src/object/lightableSwitch.c | 3 -- src/object/mask.c | 22 +++------ src/object/metalDoor.c | 5 +-- src/object/minecart.c | 1 - src/object/minishSizedEntrance.c | 5 +-- src/object/object1C.c | 1 - src/object/object1D.c | 2 - src/object/object49.c | 1 - src/object/object7E.c | 2 +- src/object/object86.c | 3 +- src/object/object9E.c | 4 +- src/object/objectA8.c | 8 +--- src/object/objectAF.c | 1 + src/object/objectB2.c | 2 +- src/object/pinwheel.c | 3 +- src/object/pot.c | 2 - src/object/railtrack.c | 3 +- src/object/smoke.c | 2 - src/object/thoughtBubble.c | 6 +-- src/object/treeHidingPortal.c | 8 ++-- src/object/well.c | 6 +-- src/object/windcrest.c | 4 -- src/playerItem.c | 4 +- src/room.c | 15 ------- src/screenDebug.c | 9 ++-- src/script.c | 13 +++--- src/sub_0801D754.c | 1 + src/sub_0804AFF4.c | 37 +++------------ src/sub_08050008.c | 16 +++---- src/sub_08050024.c | 4 -- src/sub_08055E08.c | 1 - src/sub_0805E374.c | 6 ++- src/sub_0806F9EC.c | 14 +++--- src/sub_0806FA04.c | 8 +--- src/sub_0806FA24.c | 10 ----- src/sub_0807B7D8.c | 7 +-- src/sub_0807B820.c | 8 +--- src/sub_0807B8A8.c | 8 +--- src/sub_0807B930.c | 8 +--- src/textbox.c | 21 ++++----- 198 files changed, 398 insertions(+), 973 deletions(-) create mode 100644 include/dma.h delete mode 100644 src/sub_0806FA24.c diff --git a/asm/bigGoron.s b/asm/bigGoron.s index a83c056b..2c6fdfdc 100644 --- a/asm/bigGoron.s +++ b/asm/bigGoron.s @@ -95,7 +95,7 @@ sub_0806D0B0: @ 0x0806D0B0 movs r1, #0x80 lsls r1, r1, #6 adds r0, r5, #0 - bl MemClear32 + bl MemClear cmp r4, #0 beq _0806D0DA adds r0, r4, #0 diff --git a/asm/code_08018500.s b/asm/code_08018500.s index 182c60f8..bec8ac59 100644 --- a/asm/code_08018500.s +++ b/asm/code_08018500.s @@ -58,7 +58,7 @@ sub_0801855C: @ 0x0801855C ldr r4, _08018570 @ =gUnk_02033AB8 adds r0, r4, #0 movs r1, #0x14 - bl MemClear32 + bl MemClear adds r5, r4, #0 ldr r4, _08018574 @ =gUnk_080B3D20 movs r6, #0 diff --git a/asm/code_0801C370.s b/asm/code_0801C370.s index 8ca381af..88b5614f 100644 --- a/asm/code_0801C370.s +++ b/asm/code_0801C370.s @@ -32,7 +32,7 @@ _0801C398: movs r1, #0xcd lsls r1, r1, #2 adds r0, r5, #0 - bl MemClear32 + bl MemClear strb r6, [r5, #3] strh r4, [r5, #0xe] ldr r0, _0801C474 @ =gSave @@ -48,7 +48,7 @@ _0801C398: movs r1, #0x80 lsls r1, r1, #4 adds r0, r4, #0 - bl MemClear32 + bl MemClear ldr r1, _0801C47C @ =gScreen str r4, [r1, #0x10] ldr r0, _0801C480 @ =0x00001F0C @@ -93,7 +93,7 @@ _0801C398: adds r0, #0x34 movs r1, #0xc0 lsls r1, r1, #2 - bl MemClear32 + bl MemClear movs r0, #5 movs r1, #9 bl sub_0801CA6C diff --git a/asm/code_0801CEC0.s b/asm/code_0801CEC0.s index 95184820..bfdab8a3 100644 --- a/asm/code_0801CEC0.s +++ b/asm/code_0801CEC0.s @@ -12,7 +12,7 @@ sub_0801CFA8: @ 0x0801CFA8 adds r5, r0, #0 ldr r0, _0801CFCC @ =gUnk_02001A00 movs r1, #0x40 - bl MemClear32 + bl MemClear movs r4, #0 _0801CFB6: adds r0, r4, #0 diff --git a/asm/code_0801D79C.s b/asm/code_0801D79C.s index 6ac7a011..f1aab2ca 100644 --- a/asm/code_0801D79C.s +++ b/asm/code_0801D79C.s @@ -203,7 +203,7 @@ _0801D9D8: strh r0, [r3] adds r0, r4, #0 mov r1, ip - bl MemClear32 + bl MemClear adds r0, r4, #0 b _0801DA02 .align 2, 0 @@ -282,7 +282,7 @@ zMallocInit: @ 0x0801DA7C ldr r0, _0801DA8C @ =gzHeap movs r1, #0x80 lsls r1, r1, #5 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _0801DA8C: .4byte gzHeap @@ -323,11 +323,11 @@ sub_0801DA90: @ 0x0801DA90 bl sub_0801DB34 ldr r0, _0801DB08 @ =0x0600C000 movs r1, #0x20 - bl MemClear32 + bl MemClear ldr r0, _0801DB0C @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear strh r4, [r5, #0xe] pop {r4, r5, pc} .align 2, 0 @@ -369,7 +369,7 @@ sub_0801DB34: @ 0x0801DB34 ldr r4, _0801DB6C @ =gScreen adds r0, r4, #0 movs r1, #0x7c - bl MemClear32 + bl MemClear ldr r0, _0801DB70 @ =gBG0Buffer str r0, [r4, #0x10] ldr r0, _0801DB74 @ =0x00001F0C @@ -424,7 +424,7 @@ sub_0801DBA0: @ 0x0801DBA0 adds r5, r1, #0 adds r1, r2, #0 adds r0, r5, #0 - bl MemClear32 + bl MemClear movs r0, #1 strb r0, [r5] ldr r2, _0801DBE4 @ =gScreenTransition @@ -699,7 +699,7 @@ _0801DDB8: ldr r0, _0801DDE0 @ =gUnk_02019EE0 movs r1, #0x80 lsls r1, r1, #8 - bl MemClear32 + bl MemClear b _0801DEE2 .align 2, 0 _0801DDD8: .4byte gUnk_080C9C50 @@ -968,7 +968,7 @@ sub_0801DFB4: @ 0x0801DFB4 ldr r7, _0801E004 @ =gUnk_02022740 adds r0, r7, #0 movs r1, #0x10 - bl MemClear32 + bl MemClear strh r4, [r7, #6] strh r5, [r7, #8] strh r6, [r7, #0xa] @@ -1209,7 +1209,7 @@ sub_0801E160: @ 0x0801E160 adds r0, r0, r4 movs r1, #0xa0 lsls r1, r1, #4 - bl MemClear32 + bl MemClear adds r0, r6, #0 mov r1, r8 mov r2, sb @@ -1279,7 +1279,7 @@ sub_0801E1EC: @ 0x0801E1EC adds r0, r0, r5 movs r1, #0xa0 lsls r1, r1, #4 - bl MemClear32 + bl MemClear adds r0, r4, #0 movs r1, #0 bl sub_0801E24C @@ -1443,7 +1443,7 @@ sub_0801E31C: @ 0x0801E31C adds r0, r0, r1 movs r1, #0xa0 lsls r1, r1, #4 - bl MemClear32 + bl MemClear cmp sl, sb bge _0801E3DC movs r6, #0 @@ -1738,7 +1738,7 @@ sub_0801E49C: @ 0x0801E49C adds r0, r0, r6 movs r1, #0xa0 lsls r1, r1, #4 - bl MemClear32 + bl MemClear ldr r2, _0801E5E8 @ =gUnk_02018EE0 ldrb r1, [r5] lsls r0, r1, #2 diff --git a/asm/code_0804B9F8.s b/asm/code_0804B9F8.s index 6ee254e6..a564376f 100644 --- a/asm/code_0804B9F8.s +++ b/asm/code_0804B9F8.s @@ -50,10 +50,10 @@ sub_0804FFE4: @ 0x0804FFE4 ldr r4, _08050000 @ =gFadeControl adds r0, r4, #0 movs r1, #0x1c - bl MemClear32 + bl MemClear ldr r0, _08050004 @ =gUnk_020354C0 movs r1, #0x80 - bl MemClear32 + bl MemClear movs r0, #1 rsbs r0, r0, #0 str r0, [r4, #4] diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index 9f1662ed..f48e865c 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -791,7 +791,7 @@ sub_08052CFC: @ 0x08052CFC ldr r4, _08052D44 @ =gArea ldr r1, _08052D48 @ =0x00000894 adds r0, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _08052D4C @ =gRoomControls ldrb r1, [r0, #4] lsls r1, r1, #2 @@ -996,7 +996,7 @@ sub_08052EA0: @ 0x08052EA0 ldr r4, _08052EE4 @ =gRoomVars adds r0, r4, #0 movs r1, #0xcc - bl MemClear32 + bl MemClear movs r0, #0xff strb r0, [r4, #0x10] strb r0, [r4, #0x11] @@ -1178,7 +1178,7 @@ sub_08052FF4: @ 0x08052FF4 ldr r5, _08053074 @ =gUnk_020342CC adds r0, r5, #0 movs r1, #0x20 - bl MemClear32 + bl MemClear str r5, [r5, #0x20] ldr r0, _08053078 @ =gAreaRoomHeaders lsls r6, r6, #2 @@ -1570,17 +1570,17 @@ sub_08053320: @ 0x08053320 movs r4, #0x80 lsls r4, r4, #4 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _08053380 @ =gBG1Buffer adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _08053384 @ =gBG2Buffer adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _08053388 @ =gBG3Buffer movs r1, #0x80 lsls r1, r1, #5 - bl MemClear32 + bl MemClear movs r0, #0x10 bl LoadGfxGroup movs r0, #0x17 @@ -2222,7 +2222,7 @@ sub_08053800: @ 0x08053800 ldr r0, _08053888 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear ldr r0, _0805388C @ =0x00000F01 adds r5, r5, r0 ldr r1, [r4] diff --git a/asm/code_08056418.s b/asm/code_08056418.s index 97457697..144005f4 100644 --- a/asm/code_08056418.s +++ b/asm/code_08056418.s @@ -267,11 +267,11 @@ _080568B2: beq _080568D2 adds r0, r6, #0 movs r1, #4 - bl MemClear32 + bl MemClear ldr r4, _08056910 @ =gUnk_02024030 adds r0, r4, #0 movs r1, #0x18 - bl MemClear32 + bl MemClear movs r0, #1 strb r0, [r4] strb r0, [r6] @@ -472,7 +472,7 @@ _08056A30: movs r1, #3 strb r1, [r2] movs r1, #0x18 - bl MemClear32 + bl MemClear movs r0, #0x6a bl SoundReq adds r1, r6, #0 diff --git a/asm/code_0805E3B0.s b/asm/code_0805E3B0.s index ba150ef6..5a0336df 100644 --- a/asm/code_0805E3B0.s +++ b/asm/code_0805E3B0.s @@ -360,15 +360,15 @@ EraseAllEntities: @ 0x0805E60C bl DeleteAllEntities ldr r0, _0805E654 @ =gUnk_03003DC0 movs r1, #0xc - bl MemClear32 + bl MemClear ldr r0, _0805E658 @ =gPlayerEntity movs r1, #0xaa lsls r1, r1, #6 - bl MemClear32 + bl MemClear ldr r0, _0805E65C @ =gUnk_02033290 movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear bl sub_0805E98C ldr r0, _0805E660 @ =gEntCount movs r1, #0 diff --git a/asm/code_0805EC04.s b/asm/code_0805EC04.s index 45cad29a..6c8dc59f 100644 --- a/asm/code_0805EC04.s +++ b/asm/code_0805EC04.s @@ -751,7 +751,7 @@ _0805F2D0: bne _0805F2F0 adds r0, r5, #0 movs r1, #0xc - bl MemClear32 + bl MemClear ldrb r0, [r4] movs r1, #1 orrs r0, r1 @@ -781,7 +781,7 @@ _0805F308: cmp r0, r2 bne _0805F318 movs r1, #0xc - bl MemClear32 + bl MemClear b _0805F320 .align 2, 0 _0805F314: .4byte gUnk_02036540 @@ -944,7 +944,7 @@ sub_0805F440: @ 0x0805F440 adds r4, r0, #0 adds r5, r1, #0 movs r1, #0x30 - bl MemClear32 + bl MemClear ldr r0, _0805F45C @ =0x0000FFFF cmp r5, r0 bls _0805F460 @@ -1122,7 +1122,7 @@ _0805F596: _0805F59E: ldr r0, _0805F5C8 @ =gUnk_02034330 movs r1, #0x18 - bl MemClear32 + bl MemClear _0805F5A6: mov r0, sb mov r1, sp diff --git a/asm/code_0806ED78.s b/asm/code_0806ED78.s index 264756c7..17534c87 100644 --- a/asm/code_0806ED78.s +++ b/asm/code_0806ED78.s @@ -842,7 +842,7 @@ sub_0806F364: @ 0x0806F364 adds r1, r2, r3 adds r0, r0, r1 movs r1, #0x10 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _0806F384: .4byte gArea diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index 81ff4789..aaccef6b 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -385,7 +385,7 @@ sub_0806FD8C: @ 0x0806FD8C ldr r0, _0806FD9C @ =gUnk_020000C0 movs r1, #0xc0 lsls r1, r1, #4 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _0806FD9C: .4byte gUnk_020000C0 @@ -534,7 +534,7 @@ _0806FE9E: bls _0806FE9E adds r0, r6, #0 movs r1, #0x40 - bl MemClear32 + bl MemClear _0806FEB4: pop {r4, r5, r6, pc} .align 2, 0 @@ -1454,7 +1454,7 @@ sub_0807059C: @ 0x0807059C push {lr} ldr r0, _080705A8 @ =gUnk_02034490 movs r1, #0x18 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _080705A8: .4byte gUnk_02034490 diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s index 9ce6bf12..351c8adf 100644 --- a/asm/code_080732D0.s +++ b/asm/code_080732D0.s @@ -4198,7 +4198,7 @@ sub_080751E8: @ 0x080751E8 ldr r4, _08075230 @ =gPlayerScriptExecutionContext adds r0, r4, #0 movs r1, #0x24 - bl MemClear32 + bl MemClear str r6, [r4] ldr r0, _08075234 @ =gPlayerEntity adds r0, #0x84 diff --git a/asm/code_08077B98.s b/asm/code_08077B98.s index b6c78cf4..75eb2a4b 100644 --- a/asm/code_08077B98.s +++ b/asm/code_08077B98.s @@ -642,7 +642,7 @@ sub_080784C8: @ 0x080784C8 movs r1, #0xc4 lsls r1, r1, #1 adds r0, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _080784E0 @ =gUnk_0811C000 str r0, [r4, #4] pop {r4, pc} diff --git a/asm/code_08078778.s b/asm/code_08078778.s index e1ddb07e..4ddd1109 100644 --- a/asm/code_08078778.s +++ b/asm/code_08078778.s @@ -70,7 +70,7 @@ sub_080788E0: @ 0x080788E0 ldr r1, _08078900 @ =gUnk_03003DF8 adds r0, r0, r1 movs r1, #0xc - bl MemClear32 + bl MemClear _080788FC: pop {pc} .align 2, 0 @@ -542,7 +542,7 @@ sub_08078C24: @ 0x08078C24 ldr r0, _08078CB0 @ =gUnk_03003DF0 movs r1, #0xc4 lsls r1, r1, #1 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _08078CAC: .4byte gPlayerState diff --git a/asm/code_0807B9B8.s b/asm/code_0807B9B8.s index 393c255c..59896509 100644 --- a/asm/code_0807B9B8.s +++ b/asm/code_0807B9B8.s @@ -948,19 +948,19 @@ sub_0807C0DC: @ 0x0807C0DC lsls r6, r6, #6 adds r0, r5, #0 adds r1, r6, #0 - bl MemClear32 + bl MemClear adds r0, r5, r6 movs r1, #0x80 lsls r1, r1, #5 - bl MemClear32 + bl MemClear ldr r0, _0807C160 @ =gUnk_02019EE0 movs r4, #0x80 lsls r4, r4, #8 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _0807C164 @ =gMapDataTopSpecial adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _0807C168 @ =gArea ldr r1, _0807C16C @ =0x0000085C adds r0, r0, r1 @@ -999,7 +999,7 @@ _0807C174: .4byte 0x0000FFFF _0807C178: adds r0, r2, #4 adds r1, r6, #0 - bl MemClear32 + bl MemClear movs r3, #1 mov sb, r3 _0807C184: @@ -1167,7 +1167,7 @@ _0807C2E4: bl sub_0807C5F4 adds r0, r5, #0 adds r1, r6, #0 - bl MemClear32 + bl MemClear ldr r4, _0807C350 @ =gMapDataTopSpecial adds r5, r4, r6 adds r0, r4, #0 @@ -1179,7 +1179,7 @@ _0807C2E4: bl sub_0807C5F4 adds r0, r5, #0 adds r1, r6, #0 - bl MemClear32 + bl MemClear _0807C326: mov r1, sb cmp r1, #0 @@ -1406,10 +1406,10 @@ sub_0807C4F8: @ 0x0807C4F8 movs r4, #0x80 lsls r4, r4, #8 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _0807C59C @ =gMapDataTopSpecial adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r5, _0807C5A0 @ =gUnk_02022830 ldr r0, _0807C5A4 @ =gArea ldr r1, _0807C5A8 @ =0x0000085C @@ -1455,7 +1455,7 @@ _0807C54A: bl sub_0807C5F4 adds r0, r5, #0 adds r1, r6, #0 - bl MemClear32 + bl MemClear ldr r4, _0807C59C @ =gMapDataTopSpecial adds r5, r4, r6 adds r0, r4, #0 @@ -1467,7 +1467,7 @@ _0807C54A: bl sub_0807C5F4 adds r0, r5, #0 adds r1, r6, #0 - bl MemClear32 + bl MemClear _0807C592: pop {r4, r5, r6, pc} .align 2, 0 @@ -1694,7 +1694,7 @@ _0807C710: _0807C726: adds r0, r4, #0 movs r1, #0x40 - bl MemClear32 + bl MemClear adds r4, #0x40 adds r5, #1 cmp r5, r7 @@ -1984,7 +1984,7 @@ _0807C92E: _0807C946: adds r0, r4, #0 movs r1, #0x80 - bl MemClear32 + bl MemClear adds r4, #0x80 adds r5, #1 cmp r5, r6 diff --git a/asm/code_0807F0D8.s b/asm/code_0807F0D8.s index 11f24fbc..58926192 100644 --- a/asm/code_0807F0D8.s +++ b/asm/code_0807F0D8.s @@ -2934,11 +2934,11 @@ sub_08080668: @ 0x08080668 ldr r5, _080806A4 @ =gRoomControls adds r0, r5, #0 movs r1, #0x38 - bl MemClear32 + bl MemClear ldr r4, _080806A8 @ =gUnk_03004030 adds r0, r4, #0 movs r1, #0xc - bl MemClear32 + bl MemClear ldr r0, _080806AC @ =0x0000FFFF strh r0, [r5, #0x22] movs r0, #0xff @@ -2950,10 +2950,10 @@ sub_08080668: @ 0x08080668 movs r4, #0x80 lsls r4, r4, #8 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _080806B8 @ =gMapDataTopSpecial adds r1, r4, #0 - bl MemClear32 + bl MemClear pop {r4, r5, pc} .align 2, 0 _080806A4: .4byte gRoomControls diff --git a/asm/code_080A29BC.s b/asm/code_080A29BC.s index e5f4bf59..09c4ea72 100644 --- a/asm/code_080A29BC.s +++ b/asm/code_080A29BC.s @@ -995,7 +995,7 @@ sub_080A3210: @ 0x080A3210 ldr r4, _080A3230 @ =gUnk_02021EE0 adds r0, r4, #0 movs r1, #0x18 - bl MemClear32 + bl MemClear bl sub_080A35C8 movs r0, #0x80 lsls r0, r0, #1 diff --git a/asm/code_080A3480.s b/asm/code_080A3480.s index a8e21e41..a30dd9c2 100644 --- a/asm/code_080A3480.s +++ b/asm/code_080A3480.s @@ -354,7 +354,7 @@ sub_080A36F8: @ 0x080A36F8 ldr r0, _080A3760 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear ldr r1, _080A3764 @ =gScreen movs r2, #0 movs r0, #1 @@ -410,7 +410,7 @@ _080A378A: ldr r0, _080A37B8 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear movs r1, #0x10 ldrsh r0, [r4, r1] ldr r2, _080A37BC @ =gUnk_081272E0 @@ -580,7 +580,7 @@ sub_080A38D0: @ 0x080A38D0 movs r6, #0x80 lsls r6, r6, #4 adds r1, r6, #0 - bl MemClear32 + bl MemClear ldr r4, _080A3924 @ =gScreen movs r0, #0 mov r8, r0 @@ -588,7 +588,7 @@ sub_080A38D0: @ 0x080A38D0 strh r5, [r4, #0x1a] ldr r0, _080A3928 @ =gBG2Buffer adds r1, r6, #0 - bl MemClear32 + bl MemClear strh r5, [r4, #0x26] adds r4, #0x68 movs r0, #0x80 @@ -712,7 +712,7 @@ _080A39C8: movs r0, #0xc0 lsls r0, r0, #0x13 movs r1, #0x20 - bl MemClear32 + bl MemClear movs r0, #0 movs r1, #0 bl sub_08052418 diff --git a/asm/code_080A3BD0.s b/asm/code_080A3BD0.s index 18beb360..08159cb0 100644 --- a/asm/code_080A3BD0.s +++ b/asm/code_080A3BD0.s @@ -935,7 +935,7 @@ sub_080A4398: @ 0x080A4398 push {lr} ldr r0, _080A43A4 @ =gUnk_02019EE0 movs r1, #0x40 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _080A43A4: .4byte gUnk_02019EE0 @@ -1119,7 +1119,7 @@ sub_080A44E0: @ 0x080A44E0 mov r8, r0 ldr r0, [r4, #8] mov r1, r8 - bl MemClear32 + bl MemClear adds r0, r6, #0 adds r1, r4, #0 bl sub_0805F76C @@ -1269,11 +1269,11 @@ sub_080A4608: @ 0x080A4608 ldr r0, _080A46A4 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear ldr r0, _080A46A8 @ =gBG3Buffer movs r1, #0x80 lsls r1, r1, #5 - bl MemClear32 + bl MemClear ldr r2, _080A46AC @ =gScreen adds r1, r2, #0 adds r1, #0x58 @@ -1976,7 +1976,7 @@ sub_080A4BA0: @ 0x080A4BA0 adds r6, r1, #0 add r0, sp, #0x18 movs r1, #0x30 - bl MemClear32 + bl MemClear ldr r0, _080A4C08 @ =gUnk_0812816C mov r1, sp movs r2, #0x18 @@ -2123,7 +2123,7 @@ sub_080A4CBC: @ 0x080A4CBC lsls r5, r5, #4 adds r0, r4, #0 adds r1, r5, #0 - bl MemClear32 + bl MemClear ldr r1, _080A4D14 @ =0x0600E000 adds r0, r4, #0 adds r2, r5, #0 @@ -2217,7 +2217,7 @@ sub_080A4D88: @ 0x080A4D88 push {lr} ldr r0, _080A4DA4 @ =gUnk_020344A0 movs r1, #8 - bl MemClear32 + bl MemClear movs r0, #1 movs r1, #0 bl MenuFadeIn @@ -2245,21 +2245,21 @@ sub_080A4DB8: @ 0x080A4DB8 movs r4, #0x80 lsls r4, r4, #4 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _080A4E5C @ =gBG1Buffer adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _080A4E60 @ =gBG2Buffer adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _080A4E64 @ =gUnk_0200AF34 movs r1, #0xc0 lsls r1, r1, #2 - bl MemClear32 + bl MemClear ldr r4, _080A4E68 @ =gMenu adds r0, r4, #0 movs r1, #0x30 - bl MemClear32 + bl MemClear ldr r0, _080A4E6C @ =0x0000FFFF strh r0, [r4, #0x2e] ldr r0, _080A4E70 @ =gUnk_02034490 @@ -2580,7 +2580,7 @@ _080A5080: ldr r0, _080A5098 @ =gBG0Buffer movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear ldr r1, _080A509C @ =gScreen movs r0, #1 strh r0, [r1, #0xe] diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index cbe07816..a4a9cf4c 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -2442,7 +2442,7 @@ _080A6886: ldr r0, _080A68D0 @ =gUnk_02019EE0 movs r1, #0x80 lsls r1, r1, #3 - bl MemClear32 + bl MemClear pop {r4, r5, r6, r7, pc} .align 2, 0 _080A68AC: .4byte gUnk_02032EC0 @@ -3307,7 +3307,7 @@ sub_080A6F6C: @ 0x080A6F6C ldr r0, _080A6FA8 @ =gUnk_020350F0 movs r1, #0x80 lsls r1, r1, #1 - bl MemClear32 + bl MemClear movs r0, #0xff ands r0, r4 cmp r0, #0 @@ -3376,7 +3376,7 @@ _080A6FFA: ldr r0, _080A7038 @ =gUnk_020350F0 movs r1, #0x80 lsls r1, r1, #1 - bl MemClear32 + bl MemClear movs r0, #0xff ands r0, r4 cmp r0, #0 @@ -3413,7 +3413,7 @@ sub_080A7040: @ 0x080A7040 movs r1, #0xc0 lsls r1, r1, #2 adds r0, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _080A7098 @ =0xFFFFFE00 adds r4, r4, r0 ldr r1, _080A709C @ =0x0600E000 @@ -3456,7 +3456,7 @@ sub_080A70AC: @ 0x080A70AC movs r1, #0xc0 lsls r1, r1, #2 adds r0, r4, #0 - bl MemClear32 + bl MemClear adds r2, r4, #0 subs r2, #0x34 movs r0, #0x7f @@ -3519,7 +3519,7 @@ sub_080A7124: @ 0x080A7124 ldr r0, _080A7134 @ =gUnk_02032EC0 movs r1, #0xed lsls r1, r1, #2 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _080A7134: .4byte gUnk_02032EC0 @@ -3536,7 +3536,7 @@ MenuFadeIn: @ 0x080A7138 movs r1, #0xed lsls r1, r1, #2 adds r0, r4, #0 - bl MemClear32 + bl MemClear strb r5, [r4, #2] strb r6, [r4, #3] ldr r0, _080A7160 @ =gMain @@ -3767,18 +3767,18 @@ sub_080A7328: @ 0x080A7328 bl DeleteAllEntities ldr r0, _080A738C @ =gMenu movs r1, #0x30 - bl MemClear32 + bl MemClear ldr r0, _080A7390 @ =gRoomControls movs r1, #0x38 - bl MemClear32 + bl MemClear ldr r0, _080A7394 @ =gUnk_03000420 movs r1, #0x80 lsls r1, r1, #1 - bl MemClear32 + bl MemClear ldr r4, _080A7398 @ =gUnk_02033280 adds r0, r4, #0 movs r1, #0xc - bl MemClear32 + bl MemClear movs r0, #8 strb r0, [r4, #8] movs r0, #1 @@ -4943,7 +4943,7 @@ sub_080A7C7C: @ 0x080A7C7C push {lr} ldr r0, _080A7C88 @ =gUnk_02017660 movs r1, #0x40 - bl MemClear32 + bl MemClear pop {pc} .align 2, 0 _080A7C88: .4byte gUnk_02017660 diff --git a/asm/code_080AD90C.s b/asm/code_080AD90C.s index d08c7ef4..54509736 100644 --- a/asm/code_080AD90C.s +++ b/asm/code_080AD90C.s @@ -567,7 +567,7 @@ sub_080ADD30: @ 0x080ADD30 movs r1, #0x85 lsls r1, r1, #2 adds r0, r4, #0 - bl MemClear32 + bl MemClear movs r5, #0 adds r4, #4 movs r0, #0x10 @@ -718,7 +718,7 @@ _080ADE54: .4byte gUnk_02024494 _080ADE58: adds r0, r1, #0 movs r1, #0xc - bl MemClear32 + bl MemClear _080ADE60: adds r5, #0xc adds r4, #1 @@ -1084,7 +1084,7 @@ sub_080AE104: @ 0x080AE104 adds r1, r1, r5 lsls r1, r1, #2 adds r0, r4, #0 - bl MemClear32 + bl MemClear strb r5, [r4, #1] strh r6, [r4, #4] adds r0, r4, #0 @@ -1396,7 +1396,7 @@ _080AE350: stm r0!, {r2, r3, r7} adds r0, r6, #0 movs r1, #0xc - bl MemClear32 + bl MemClear adds r6, #0xc adds r5, #0xc movs r0, #0xc diff --git a/asm/fileScreen.s b/asm/fileScreen.s index 341bfde7..287c9992 100755 --- a/asm/fileScreen.s +++ b/asm/fileScreen.s @@ -41,7 +41,7 @@ sub_080519B0: @ 0x080519B0 ldr r4, _08051A08 @ =gScreenTransition adds r0, r4, #0 movs r1, #0xb0 - bl MemClear32 + bl MemClear bl sub_08049CD4 bl sub_080300AC bl sub_0807CA18 @@ -76,11 +76,11 @@ sub_08051A14: @ 0x08051A14 str r0, [r1, #4] ldr r0, _08051A74 @ =gUnk_03000000 ldr r1, _08051A78 @ =0x00000B74 - bl MemClear32 + bl MemClear ldr r0, _08051A7C @ =gUnk_02032EC0 movs r1, #0xed lsls r1, r1, #2 - bl MemClear32 + bl MemClear bl EraseAllEntities bl sub_080197AC bl sub_08080668 @@ -734,10 +734,10 @@ sub_08052010: @ 0x08052010 movs r4, #0x80 lsls r4, r4, #4 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _08052080 @ =gBG2Buffer adds r1, r4, #0 - bl MemClear32 + bl MemClear bl sub_080A4D34 movs r0, #0xa bl LoadPaletteGroup @@ -749,10 +749,10 @@ sub_08052010: @ 0x08052010 movs r0, #0xc0 lsls r0, r0, #0x13 movs r1, #0x20 - bl MemClear32 + bl MemClear ldr r0, _08052084 @ =gMenu movs r1, #0x30 - bl MemClear32 + bl MemClear ldr r1, _08052088 @ =gScreen ldrh r2, [r1] movs r3, #0x80 diff --git a/asm/gyorgFemale.s b/asm/gyorgFemale.s index 14d08573..daba4aa9 100644 --- a/asm/gyorgFemale.s +++ b/asm/gyorgFemale.s @@ -112,10 +112,10 @@ sub_0804614C: @ 0x0804614C movs r4, #0x80 lsls r4, r4, #8 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _08046250 @ =gMapDataTopSpecial adds r1, r4, #0 - bl MemClear32 + bl MemClear adds r0, r6, #0 movs r1, #0 bl sub_0804660C @@ -445,10 +445,10 @@ sub_08046498: @ 0x08046498 movs r4, #0x80 lsls r4, r4, #8 adds r1, r4, #0 - bl MemClear32 + bl MemClear ldr r0, _080464BC @ =gMapDataTopSpecial adds r1, r4, #0 - bl MemClear32 + bl MemClear adds r0, r5, #0 bl sub_080464C0 pop {r4, r5, pc} @@ -486,7 +486,7 @@ _080464DE: ldr r0, _0804650C @ =gUnk_02019EE0 movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear ldr r1, _08046514 @ =gUnk_02000070 movs r0, #1 strb r0, [r1] diff --git a/asm/manager10.s b/asm/manager10.s index 2826845f..f0d19df0 100644 --- a/asm/manager10.s +++ b/asm/manager10.s @@ -338,7 +338,7 @@ _08059800: lsls r5, r5, #4 adds r0, r4, #0 adds r1, r5, #0 - bl MemClear32 + bl MemClear ldr r1, _08059820 @ =0x0600E800 adds r0, r4, #0 adds r2, r5, #0 diff --git a/asm/manager2C.s b/asm/manager2C.s index 4da87eb7..123784c0 100644 --- a/asm/manager2C.s +++ b/asm/manager2C.s @@ -44,7 +44,7 @@ _0805D184: ldr r4, _0805D1F8 @ =gUnk_030010AC adds r0, r4, #0 movs r1, #0x20 - bl MemClear32 + bl MemClear subs r4, #0xc movs r1, #0 movs r0, #1 diff --git a/asm/non_matching/arm_proxy/ItemInit.inc b/asm/non_matching/arm_proxy/ItemInit.inc index e48870ae..efdae83e 100644 --- a/asm/non_matching/arm_proxy/ItemInit.inc +++ b/asm/non_matching/arm_proxy/ItemInit.inc @@ -127,4 +127,4 @@ _08017438: .align 2, 0 _0801749C: .4byte 0x000003FF _080174A0: .4byte gPlayerEntity - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/arm_proxy/sub_08017530.inc b/asm/non_matching/arm_proxy/sub_08017530.inc index 4c2b9134..278daa48 100644 --- a/asm/non_matching/arm_proxy/sub_08017530.inc +++ b/asm/non_matching/arm_proxy/sub_08017530.inc @@ -87,4 +87,4 @@ _080175D8: .4byte gUnk_020342F8 _080175DC: .4byte gNPCFunctions _080175E0: .4byte gUnk_02031EC0 _080175E4: .4byte gRoomControls - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/arm_proxy/sub_0801766C.inc b/asm/non_matching/arm_proxy/sub_0801766C.inc index 6ef38554..239a6506 100644 --- a/asm/non_matching/arm_proxy/sub_0801766C.inc +++ b/asm/non_matching/arm_proxy/sub_0801766C.inc @@ -65,4 +65,4 @@ _080176DE: pop {r4} pop {r1} bx r1 - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/arm_proxy/sub_080176E4.inc b/asm/non_matching/arm_proxy/sub_080176E4.inc index 5000774e..e8a48278 100644 --- a/asm/non_matching/arm_proxy/sub_080176E4.inc +++ b/asm/non_matching/arm_proxy/sub_080176E4.inc @@ -51,4 +51,4 @@ _0801773A: bx r1 .align 2, 0 _08017740: .4byte gUnk_03003C70 - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/arm_proxy/sub_08017744.inc b/asm/non_matching/arm_proxy/sub_08017744.inc index 2d47df2c..e5e245ec 100644 --- a/asm/non_matching/arm_proxy/sub_08017744.inc +++ b/asm/non_matching/arm_proxy/sub_08017744.inc @@ -47,4 +47,4 @@ _0801779A: pop {r4, r5, r6, r7} pop {r0} bx r0 - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/arm_proxy/sub_080177A0.inc b/asm/non_matching/arm_proxy/sub_080177A0.inc index 99962e08..da64049f 100644 --- a/asm/non_matching/arm_proxy/sub_080177A0.inc +++ b/asm/non_matching/arm_proxy/sub_080177A0.inc @@ -92,4 +92,4 @@ _0801784A: pop {r4, r5, r6} pop {r1} bx r1 - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/fileScreen/sub_08050EF4.inc b/asm/non_matching/fileScreen/sub_08050EF4.inc index 1ef73ae0..dbad9f1e 100644 --- a/asm/non_matching/fileScreen/sub_08050EF4.inc +++ b/asm/non_matching/fileScreen/sub_08050EF4.inc @@ -135,4 +135,4 @@ _08050FF4: mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/fileScreen/sub_08051738.inc b/asm/non_matching/fileScreen/sub_08051738.inc index bde5ca42..16ca61e3 100644 --- a/asm/non_matching/fileScreen/sub_08051738.inc +++ b/asm/non_matching/fileScreen/sub_08051738.inc @@ -62,4 +62,4 @@ _080517A2: pop {r4, r5, r6, r7, pc} .align 2, 0 _080517B0: .4byte gMenu - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/fileScreen/sub_080517B4.inc b/asm/non_matching/fileScreen/sub_080517B4.inc index 45bc25e3..f9bef9e7 100644 --- a/asm/non_matching/fileScreen/sub_080517B4.inc +++ b/asm/non_matching/fileScreen/sub_080517B4.inc @@ -29,4 +29,4 @@ _080517DE: .align 2, 0 _080517E4: .4byte gUnk_02019EE0 _080517E8: .4byte gUnk_02000090 - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/fileScreen/sub_080610B8.inc b/asm/non_matching/fileScreen/sub_080610B8.inc index f7b6721c..037a8765 100644 --- a/asm/non_matching/fileScreen/sub_080610B8.inc +++ b/asm/non_matching/fileScreen/sub_080610B8.inc @@ -345,4 +345,4 @@ _0805134C: .align 2, 0 _08051350: .4byte gSave _08051354: .4byte gMenu - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/game/sub_08052418.inc b/asm/non_matching/game/sub_08052418.inc index 179cce1d..bd30db21 100644 --- a/asm/non_matching/game/sub_08052418.inc +++ b/asm/non_matching/game/sub_08052418.inc @@ -6,7 +6,7 @@ ldr r0, _08052494 @ =gBG1Buffer movs r1, #0x80 lsls r1, r1, #4 - bl MemClear32 + bl MemClear ldr r0, _08052498 @ =gUnk_020227E8 movs r1, #0xf str r1, [r0] @@ -63,4 +63,4 @@ _08052498: .4byte gUnk_020227E8 _0805249C: .4byte gUnk_080FCA8C _080524A0: .4byte gUnk_080FCAA4 _080524A4: .4byte gScreen - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/gibdo/sub_080376D0.inc b/asm/non_matching/gibdo/sub_080376D0.inc index c6c76bd6..8c07e3dc 100644 --- a/asm/non_matching/gibdo/sub_080376D0.inc +++ b/asm/non_matching/gibdo/sub_080376D0.inc @@ -54,4 +54,4 @@ _0803772C: _0803773A: pop {r4, pc} - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/gibdo/sub_08037810.inc b/asm/non_matching/gibdo/sub_08037810.inc index 42f4ed8c..b4ce2803 100644 --- a/asm/non_matching/gibdo/sub_08037810.inc +++ b/asm/non_matching/gibdo/sub_08037810.inc @@ -83,4 +83,4 @@ _080378AC: _080378AE: pop {r4, r5, r6, pc} - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/gibdo/sub_0803797C.inc b/asm/non_matching/gibdo/sub_0803797C.inc index 47da634a..4e0ecf7a 100644 --- a/asm/non_matching/gibdo/sub_0803797C.inc +++ b/asm/non_matching/gibdo/sub_0803797C.inc @@ -36,4 +36,4 @@ _080379BA: pop {r4, r5, pc} - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/save/sub_08050B3C.inc b/asm/non_matching/save/sub_08050B3C.inc index a3b5b6b3..356b8a6c 100644 --- a/asm/non_matching/save/sub_08050B3C.inc +++ b/asm/non_matching/save/sub_08050B3C.inc @@ -122,4 +122,4 @@ _08050C1C: .4byte 0x0000F24C _08050C20: .4byte 0x040000D4 _08050C24: .4byte gUnk_080FC914 _08050C28: .4byte 0xFFFFF24D - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/non_matching/sub_080560B8.inc b/asm/non_matching/sub_080560B8.inc index 29ca150f..73872d2a 100644 --- a/asm/non_matching/sub_080560B8.inc +++ b/asm/non_matching/sub_080560B8.inc @@ -54,7 +54,7 @@ _08056112: ldr r4, _0805612C @ =gUnk_02000010 adds r0, r4, #0 movs r1, #0x20 - bl MemClear32 + bl MemClear ldr r0, _08056130 @ =0x4D435A33 str r0, [r4] _08056124: diff --git a/asm/non_matching/textbox/sub_080564EC.inc b/asm/non_matching/textbox/sub_080564EC.inc index 4c3fdf84..e76e5fa6 100644 --- a/asm/non_matching/textbox/sub_080564EC.inc +++ b/asm/non_matching/textbox/sub_080564EC.inc @@ -2,14 +2,14 @@ push {r4, lr} ldr r0, _08056598 @ =gUnk_02036A40 movs r1, #8 - bl MemClear32 + bl MemClear ldr r0, _0805659C @ =gUnk_02024030 movs r1, #0x18 - bl MemClear32 + bl MemClear ldr r4, _080565A0 @ =gUnk_02022780 adds r0, r4, #0 movs r1, #0xa8 - bl MemClear32 + bl MemClear ldr r0, _080565A4 @ =gTextBox adds r1, r4, #0 movs r2, #0x20 @@ -87,4 +87,4 @@ _080565A4: .4byte gTextBox _080565A8: .4byte gSave _080565AC: .4byte gUnk_08107BE0 _080565B0: .4byte gUnk_02000D00 - .syntax divided \ No newline at end of file + .syntax divided diff --git a/asm/object3D.s b/asm/object3D.s index a6dbf01d..07297cfa 100644 --- a/asm/object3D.s +++ b/asm/object3D.s @@ -170,7 +170,7 @@ sub_0808D030: @ 0x0808D030 adds r0, r4, #0 subs r0, #0x20 ldr r1, _0808D05C @ =0x00000B74 - bl MemClear32 + bl MemClear movs r1, #0xa8 lsls r1, r1, #2 adds r0, r1, #0 diff --git a/include/dma.h b/include/dma.h new file mode 100644 index 00000000..168c870e --- /dev/null +++ b/include/dma.h @@ -0,0 +1,9 @@ +#ifndef DMA_H +#define DMA_H + +void MemFill16(u32 value, void* dest, u32 size); +void MemFill32(u32 value, void* dest, u32 size); +void MemClear(void* dest, u32 size); +void MemCopy(const void* src, void* dest, u32 size); + +#endif // DMA_H diff --git a/include/enemy.h b/include/enemy.h index b12a54e8..22a62f78 100644 --- a/include/enemy.h +++ b/include/enemy.h @@ -89,7 +89,6 @@ extern void VaatiWrath(Entity*); extern void VaatiArm(Entity*); extern void Dust(Entity*); extern void VaatiBall(Entity*); -extern void Octorok(Entity*); extern void Slime(Entity*); extern void MiniSlime(Entity*); extern void FireballGuy(Entity*); diff --git a/include/entity.h b/include/entity.h index a1dd6d93..6f1b5e72 100644 --- a/include/entity.h +++ b/include/entity.h @@ -166,14 +166,14 @@ extern LinkedList gUnk_03003D90; extern LinkedList gUnk_03003DA0; #define TILE(x, y) \ - ((((x - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \ - (((y - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) + (((((x) - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \ + ((((y) - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6) #define COORD_TO_TILE(entity) \ - TILE(entity->x.HALF.HI, entity->y.HALF.HI) + TILE((entity)->x.HALF.HI, (entity)->y.HALF.HI) #define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \ - TILE(entity->x.HALF.HI - xOff, entity->y.HALF.HI - yOff) + TILE((entity)->x.HALF.HI - (xOff), (entity)->y.HALF.HI - (yOff)) extern Entity* CreateEnemy(u32 subtype, u32 form); extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter); @@ -194,9 +194,10 @@ extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); extern u32 GetFacingDirection(Entity*, Entity*); extern void DeleteThisEntity(void); -extern void CopyPosition(Entity*, Entity*); extern void DeleteEntity(Entity*); -extern void PositionRelative(Entity*, Entity*, s32, s32); + +Entity* FindEntityInListBySubtype(u32 type, u32 subtype, u32 listIndex); +Entity* FindEntityInListByForm(u32 type, u32 subtype, u32 listIndex, u32 form, u32 parameter); enum { DirectionNorth = 0x00, @@ -211,12 +212,12 @@ enum { #define DirectionIsVertical(expr) ((expr) & 0x10) #define DirectionTurnAround(expr) (DirectionRoundUp(expr) ^ 0x10) #define DirectionToAnimationState(expr) (DirectionRoundUp(expr) >> 3) -#define DirectionFromAnimationState(expr) (expr << 3) +#define DirectionFromAnimationState(expr) ((expr) << 3) #define Direction8Round(expr) ((expr) & 0x1c) #define Direction8RoundUp(expr) Direction8Round((expr) + 2) #define Direction8TurnAround(expr) (Direction8RoundUp(expr) ^ 0x10) #define Direction8ToAnimationState(expr) (Direction8RoundUp(expr) >> 2) -#define Direction8FromAnimationState(expr) (expr << 2) +#define Direction8FromAnimationState(expr) (((expr) << 2) #endif diff --git a/include/functions.h b/include/functions.h index ecf438fb..34e79e08 100644 --- a/include/functions.h +++ b/include/functions.h @@ -15,24 +15,18 @@ extern u32 Random(void); extern void SoundReq(u32); extern void ShowNPCDialogue(Entity*, Dialog*); extern u32 UpdateFuseInteraction(); -extern void DeleteEntity(Entity*); extern u32 __modsi3(u32, u32); extern void DoFade(u32, u32); -extern u32 GetInventoryValue(u32); extern u32 CheckKinstoneFused(u32); extern void ForceEquipItem(u32, u8); extern void LoadRoomEntityList(); -void CopyPosition(Entity*, Entity*); -extern void ResolveEntityOnTop(Entity*, Entity*); extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*)); extern u32 GetAnimationState(Entity*); extern void SetChildOffset(Entity*, s32, s32, s32); -extern u32 GetFacingDirection(Entity*, Entity*); extern Entity* CreatePlayerItem(u32, u32, u32, u32); extern Entity* GetEmptyEntity(void); extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer); extern u32 GetTileType(u32 pos, u32 layer); -extern void MemClear32(void* src, u32 count); extern void EraseAllEntities(void); extern void SetTile(u32, u32, u32); extern void SetDirtTile(u32); @@ -42,13 +36,8 @@ extern void UpdateAnimationVariableFrames(Entity*, u32); extern void CopyPositionAndSpriteOffset(Entity*, Entity*); extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32); extern u32 LoadFixedGFX(Entity*, u32); -extern void MemFill32(u32, void*, u32); extern Entity* CreateItemEntity(u32, u32, u32); -void MemCopy(const void* src, void* dst, u32 size); extern u32 ProcessMovement(Entity*); -extern Entity* FindEntityInListBySubtype(u32, u32, u32); -extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32); -extern void MemClear32(void*, u32); extern void MenuFadeIn(u32, u32); extern void LoadResourceAsync(const void*, u32, u32); extern void LoadPaletteGroup(u32); @@ -78,7 +67,6 @@ extern void sub_0806F118(Entity*); extern void sub_080791D0(); extern void sub_0805EC9C(); extern void sub_0805EC60(); -extern void sub_080873D0(); extern u32 sub_080045D4(s16, s16, u32, u32); extern void sub_0806F69C(Entity*); extern void sub_0805E3A0(void*, u32); @@ -94,17 +82,11 @@ extern void sub_0807000C(Entity*); extern void sub_0805E47C(Entity*); extern void sub_0805E584(Entity*); extern void sub_08068BEC(Entity*, u32); -extern void sub_08078778(Entity*); -extern s32 sub_0806ED9C(Entity*, u32, u32); extern s32 sub_0806F078(Entity*, s32); extern void sub_0801D2B4(Entity*, u32); extern void sub_0806FD3C(Entity*); -extern u32 sub_0801E99C(Entity*); -extern void sub_0807DD50(Entity*); -extern void sub_0806F118(Entity*); extern void sub_0805ED14(u32*); extern void sub_080A7C18(u32, u32, u32); -extern void sub_08068BEC(Entity*, u32); extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*)); extern Entity* sub_0804A9FC(Entity*, u32); extern void sub_0804A720(Entity*); @@ -159,8 +141,6 @@ extern void sub_080530C8(void); extern void sub_0805B4D0(u32); extern void sub_0804D0B4(void); extern void sub_0805308C(u32); -extern void sub_0805AF60(); -extern void sub_0805D3C8(u32); extern void sub_080534AC(); extern void sub_0807BA8C(u32, u32); extern void sub_0804D9B0(); @@ -174,7 +154,6 @@ extern void sub_08054564(); extern void sub_0801DD58(u32, u32); extern void sub_0804ED18(); extern void sub_080AF2E4(void); -extern void sub_0805ADD8(u32); extern void sub_0804F578(void); extern void sub_08059994(void); extern s32 sub_0801CFA8(u32); @@ -266,7 +245,6 @@ u32 sub_0806FCB8(Entity*, u32, u32, u32); extern Entity* sub_080A7EE0(u32); extern void sub_080A1D70(Entity*, u32); extern void sub_0806F62C(Entity*, u32, u32); -extern u32 sub_08079F8C(void); extern void sub_080A1ED0(u32, u32, u32); extern u32 sub_0806F5B0(u32); extern void sub_0801DFB4(Entity*, u32, u32, u32); @@ -292,7 +270,6 @@ extern void sub_080791BC9(); extern void sub_080791BC(); extern void sub_08056360(); extern u32 sub_080542AC(u32); -extern void sub_0807A108(); extern u32 sub_08079FC4(u32); extern void sub_0800455E(Entity*); extern void sub_08008790(Entity*, u32); diff --git a/include/gba/macro.h b/include/gba/macro.h index b08ed921..53f03071 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -4,13 +4,13 @@ #define CPU_FILL(value, dest, size, bit) \ { \ vu##bit tmp = (vu##bit)(value); \ - CpuSet((void*)&tmp, dest, CPU_SET_##bit##BIT | CPU_SET_SRC_FIXED | ((size) / (bit / 8) & 0x1FFFFF)); \ + CpuSet((void*)&tmp, dest, CPU_SET_##bit##BIT | CPU_SET_SRC_FIXED | ((size) / ((bit) / 8) & 0x1FFFFF)); \ } #define CpuFill16(value, dest, size) CPU_FILL(value, dest, size, 16) #define CpuFill32(value, dest, size) CPU_FILL(value, dest, size, 32) -#define CPU_COPY(src, dest, size, bit) CpuSet(src, dest, CPU_SET_##bit##BIT | ((size) / (bit / 8) & 0x1FFFFF)) +#define CPU_COPY(src, dest, size, bit) CpuSet(src, dest, CPU_SET_##bit##BIT | ((size) / ((bit) / 8) & 0x1FFFFF)) #define CpuCopy16(src, dest, size) CPU_COPY(src, dest, size, 16) #define CpuCopy32(src, dest, size) CPU_COPY(src, dest, size, 32) @@ -42,7 +42,7 @@ vu##bit tmp = (vu##bit)(value); \ DmaSet(dmaNum, &tmp, dest, \ (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_FIXED | DMA_DEST_INC) << 16 | \ - ((size) / (bit / 8))); \ + ((size) / ((bit) / 8))); \ } #define DmaFill16(dmaNum, value, dest, size) DMA_FILL(dmaNum, value, dest, size, 16) @@ -65,7 +65,7 @@ #define DMA_COPY(dmaNum, src, dest, size, bit) \ DmaSet(dmaNum, src, dest, \ - (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 | ((size) / (bit / 8))) + (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 | ((size) / ((bit) / 8))) #define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16) #define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32) @@ -112,7 +112,7 @@ #define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ { \ - void* _dest = (void*)dest; \ + void* _dest = (void*)(dest); \ u32 _size = size; \ while (1) { \ DmaFill##bit(dmaNum, value, _dest, (block)); \ @@ -149,7 +149,7 @@ #define DmaFillDefvars(dmaNum, value, dest, size, bit) \ { \ - void* _dest = (void*)dest; \ + void* _dest = (void*)(dest); \ u32 _size = size; \ DmaFill##bit(dmaNum, value, _dest, _size); \ } @@ -180,7 +180,7 @@ \ imeTemp = REG_IME; \ REG_IME = 0; \ - REG_IE |= flags; \ + REG_IE |= (flags); \ REG_IME = imeTemp; \ } diff --git a/include/global.h b/include/global.h index de47c6ac..f45ee218 100644 --- a/include/global.h +++ b/include/global.h @@ -31,9 +31,9 @@ #define SWAP(a, b, temp) \ { \ - temp = a; \ - a = b; \ - b = temp; \ + (temp) = a; \ + (a) = b; \ + (b) = temp; \ } // useful math macros @@ -47,7 +47,7 @@ #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) >= (b) ? (a) : (b)) -#define BOOLCAST(x) ((-x | x) >> 31) +#define BOOLCAST(x) ((-(x) | (x)) >> 31) #define static_assert(cond) extern char assertion[(cond) ? 1 : -1] #if NON_MATCHING diff --git a/include/greatFairy.h b/include/greatFairy.h index 31a37c99..e9c5dfb9 100644 --- a/include/greatFairy.h +++ b/include/greatFairy.h @@ -3,23 +3,9 @@ #include "screen.h" -extern u32 __modsi3(u32, u32); -extern void InitializeAnimation(Entity*, u32); -extern void GreatFairy_InitializeAnimation(Entity*); -extern u32 CheckRoomFlag(); -extern Entity* GreatFairy_CreateForm(Entity*, u32, u32); -extern void PositionRelative(); -extern void CopyPosition(); -extern void DoFade(); -extern void SoundReq(); -extern void GetNextFrame(); -extern void sub_0805EC9C(); -extern void sub_0805EC60(); -extern void sub_080873D0(); -extern void DeleteEntity(); -extern void sub_0806F69C(); -extern Entity* FindEntityInListBySubtype(u32, u32, u32); -extern void sub_080791D0(); +void GreatFairy_InitializeAnimation(Entity*); +Entity* GreatFairy_CreateForm(Entity*, u32, u32); +void sub_080873D0(); extern void (*const GreatFairy_Main[])(Entity*); extern void (*const GreatFairy_Behaviors[])(Entity*); extern void (*const GreatFairy_WingsBehaviors[])(Entity*); @@ -35,13 +21,8 @@ extern void (*const GreatFairy_Form2Behaviors[])(Entity*); extern void (*const gUnk_081207A4[])(Entity*); extern u32 gUnk_0810C2E4; -extern RoomControls gRoomControls; -extern Entity gPlayerEntity; extern const s16 GreatFairy_RippleOffsets[10]; extern u32 gUnk_02034350; -extern RoomVars gRoomVars; -extern Screen gScreen; -extern struct_02033280 gUnk_02033280; extern u8 gUnk_0812079C[8]; extern s16 gSineTable[]; extern s8 gUnk_081207AC[]; diff --git a/include/item.h b/include/item.h index e0dc4bbb..0f9fd6f2 100644 --- a/include/item.h +++ b/include/item.h @@ -7,36 +7,19 @@ extern void DebugItem(ItemBehavior*, u32); extern void Sword(ItemBehavior*, u32); -extern void Sword(ItemBehavior*, u32); -extern void Sword(ItemBehavior*, u32); -extern void Sword(ItemBehavior*, u32); -extern void Sword(ItemBehavior*, u32); -extern void Sword(ItemBehavior*, u32); -extern void Bomb(ItemBehavior*, u32); extern void Bomb(ItemBehavior*, u32); extern void Bow(ItemBehavior*, u32); -extern void Bow(ItemBehavior*, u32); -extern void sub_08075D14(ItemBehavior*, u32); extern void sub_08075D14(ItemBehavior*, u32); extern void Shield(ItemBehavior*, u32); -extern void Shield(ItemBehavior*, u32); -extern void Lantern(ItemBehavior*, u32); extern void Lantern(ItemBehavior*, u32); extern void GustJar(ItemBehavior*, u32); extern void PacciCane(ItemBehavior*, u32); extern void MoleMitts(ItemBehavior*, u32); extern void RocsCape(ItemBehavior*, u32); extern void sub_08076800(ItemBehavior*, u32); -extern void DebugItem(ItemBehavior*, u32); extern void Ocarina(ItemBehavior*, u32); -extern void DebugItem(ItemBehavior*, u32); -extern void DebugItem(ItemBehavior*, u32); -extern void DebugItem(ItemBehavior*, u32); extern void TryPickupObject(ItemBehavior*, u32); extern void JarEmpty(ItemBehavior*, u32); -extern void JarEmpty(ItemBehavior*, u32); -extern void JarEmpty(ItemBehavior*, u32); -extern void JarEmpty(ItemBehavior*, u32); /* On hold until naming conflicts are resolved */ /* diff --git a/include/npc.h b/include/npc.h index b27a82f9..ec7fc861 100644 --- a/include/npc.h +++ b/include/npc.h @@ -42,10 +42,6 @@ extern void SittingPerson_Head(Entity*); extern void SittingPerson_Fusion(Entity*); extern void Pina(Entity*); extern void Pina_Fusion(Entity*); -extern void Guard(Entity*); -extern void Guard_Head(Entity*); -extern void Maid(Entity*); -extern void Maid_Head(Entity*); extern void Din(Entity*); extern void Din_Fusion(Entity*); extern void Nayru(Entity*); diff --git a/include/structures.h b/include/structures.h index 59811d6f..a7e4902f 100644 --- a/include/structures.h +++ b/include/structures.h @@ -39,8 +39,7 @@ typedef struct { u8 field_0x4[0x4]; bool8 transitioningOut; u8 transitionType; // transition when changing areas - u8 field_0xa; // seems to be a tile type - u8 field_0xb; + u16 field_0xa; // seems to be a tile type u8 areaID; u8 roomID; u8 playerState; diff --git a/src/arm_proxy.c b/src/arm_proxy.c index e18e4a1c..d86cf0ef 100644 --- a/src/arm_proxy.c +++ b/src/arm_proxy.c @@ -8,6 +8,7 @@ #include "functions.h" #include "object.h" #include "manager.h" +#include "dma.h" #include "npc.h" extern u8 gUnk_03003DE0; @@ -263,7 +264,7 @@ void sub_080171F0(void) { gPlayerState.field_0x1a[0] = 0; gPlayerState.field_0x80 = 0; gPlayerState.field_0xaa = 0; - MemClear32(&gUnk_03003BE0, 0x8c); + MemClear(&gUnk_03003BE0, 0x8c); gPlayerEntity.spriteOffsetY = gPlayerState.field_0x3f; gPlayerState.field_0x3f = 0; sub_0807B0C8(); @@ -403,7 +404,7 @@ void CollisionMain(void) { } void RegisterPlayerHitbox(void) { - MemClear32(&gUnk_03003C70, sizeof(gUnk_03003C70)); + MemClear(&gUnk_03003C70, sizeof(gUnk_03003C70)); gUnk_02018EA0 = (LinkedList2*)&gUnk_03003C70[0].last; gUnk_03003C70[0].last = &gUnk_03003C70[0].last; gUnk_03003C70[0].first = &gUnk_03003C70[0].last; diff --git a/src/code_080300AC.c b/src/code_080300AC.c index 12564596..5f33b435 100644 --- a/src/code_080300AC.c +++ b/src/code_080300AC.c @@ -1,9 +1,8 @@ #include "global.h" #include "entity.h" +#include "dma.h" #include "functions.h" -// extern void DmaZero(void*, u32); - typedef struct { u16 unk0; u16 filler2[32]; @@ -13,13 +12,13 @@ typedef struct { extern struct_0300110C gUnk_0300110C; void sub_080300AC(void) { - MemClear32(&gUnk_0300110C.unk0, 0x44); + MemClear(&gUnk_0300110C.unk0, 0x44); gUnk_0300110C.unk66 = 0xff; } void sub_080300C4(void) { if (gScreenTransition.field_0xae == 0xff) { gScreenTransition.field_0xac = 0; - MemClear32(&gScreenTransition.field_0x4c[32], 0x40); + MemClear(&gScreenTransition.field_0x4c[32], 0x40); } } diff --git a/src/code_0804AA84.c b/src/code_0804AA84.c index 59485d74..9985952c 100644 --- a/src/code_0804AA84.c +++ b/src/code_0804AA84.c @@ -2,6 +2,7 @@ #include "entity.h" #include "area.h" #include "main.h" +#include "dma.h" #include "functions.h" #include "screen.h" @@ -10,8 +11,6 @@ typedef struct { u32 unk; } struct_02018EB0; -extern void sub_0805E5A8(); - extern void (*const gUnk_080D4120[])(); extern void (*const gUnk_080D412C[])(); @@ -37,7 +36,7 @@ void sub_0804AAB8(void) { } void sub_0804AAD4(void) { - MemClear32((void*)&gUnk_02018EB0, 0x28); + MemClear(&gUnk_02018EB0, 0x28); gUnk_02018EB0.unk = 0; EraseAllEntities(); CreateObject(0x3d, gArea.field_0x17, 0); diff --git a/src/code_0805F9A0.c b/src/code_0805F9A0.c index 33f037ad..d1c9af64 100644 --- a/src/code_0805F9A0.c +++ b/src/code_0805F9A0.c @@ -1,6 +1,7 @@ #include "global.h" -#include "functions.h" +#include "dma.h" #include "structures.h" +#include "functions.h" extern u16 gUnk_081092D4; extern u8 gUnk_02036AD8; diff --git a/src/code_08077DF4.c b/src/code_08077DF4.c index 1697ecb0..4743db55 100644 --- a/src/code_08077DF4.c +++ b/src/code_08077DF4.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "player.h" +#include "dma.h" #include "functions.h" typedef struct { @@ -57,7 +58,7 @@ void sub_08077E78(void* arg0, u32 bits) { not = ~not ; gPlayerState.field_0xa &= not ; gPlayerState.keepFacing &= not ; - MemClear32(arg0, 0x1c); + MemClear(arg0, 0x1c); } u32 sub_08077EC8(Unk_struct* arg0) { diff --git a/src/code_0808091C.c b/src/code_0808091C.c index 1916869c..0ea3dbcf 100644 --- a/src/code_0808091C.c +++ b/src/code_0808091C.c @@ -4,16 +4,13 @@ #include "functions.h" #include "room.h" -extern void sub_0805E5A8(); extern void sub_08080BC4(void); -extern RoomControls gRoomControls; extern u32 gUnk_0200B650; extern u32 gUnk_02025EB0; extern u8 gUnk_02000070; extern void DoExitTransition(ScreenTransitionData*); -extern void sub_080809D4(); void sub_080808D8(void) { gScreenTransition.transitionType = 0; diff --git a/src/createEnemy.c b/src/createEnemy.c index 5ce7af89..d2c08c81 100644 --- a/src/createEnemy.c +++ b/src/createEnemy.c @@ -1,8 +1,6 @@ #include "entity.h" #include "global.h" - -extern Entity* GetEmptyEntity(); -extern void AppendEntityToList(Entity*, u8); +#include "functions.h" Entity* CreateEnemy(u32 subtype, u32 form) { Entity* enemy; diff --git a/src/createNPC.c b/src/createNPC.c index b8a30fdf..6289166f 100644 --- a/src/createNPC.c +++ b/src/createNPC.c @@ -1,19 +1,17 @@ #include "global.h" #include "entity.h" - -extern Entity* GetEmptyEntity(); -extern void AppendEntityToList(Entity*, u8); +#include "functions.h" Entity* CreateNPC(u32 subtype, u32 form, u32 parameter) { - Entity* pEVar1; + Entity* entity; - pEVar1 = GetEmptyEntity(); - if (pEVar1 != NULL) { - pEVar1->kind = 7; - pEVar1->id = subtype; - pEVar1->type = form; - pEVar1->type2 = parameter; - AppendEntityToList(pEVar1, 7); + entity = GetEmptyEntity(); + if (entity != NULL) { + entity->kind = 7; + entity->id = subtype; + entity->type = form; + entity->type2 = parameter; + AppendEntityToList(entity, 7); } - return pEVar1; + return entity; } diff --git a/src/createObject.c b/src/createObject.c index 62c67062..f0a79d43 100644 --- a/src/createObject.c +++ b/src/createObject.c @@ -1,22 +1,21 @@ #include "global.h" #include "entity.h" +#include "position.h" #include "room.h" - -extern Entity* GetEmptyEntity(); -extern void AppendEntityToList(Entity*, u8); +#include "functions.h" Entity* CreateObject(u32 subtype, u32 form, u32 parameter) { - Entity* ent; + Entity* entity; - ent = GetEmptyEntity(); - if (ent != NULL) { - ent->kind = 6; - ent->id = subtype; - ent->type = form; - ent->type2 = parameter; - AppendEntityToList(ent, 6); + entity = GetEmptyEntity(); + if (entity != NULL) { + entity->kind = 6; + entity->id = subtype; + entity->type = form; + entity->type2 = parameter; + AppendEntityToList(entity, 6); } - return ent; + return entity; } Entity* CreateObjectWithParent(Entity* parentEnt, u32 subtype, u32 form, u32 parameter) { diff --git a/src/dma.c b/src/dma.c index 4c79f72e..426b09dc 100644 --- a/src/dma.c +++ b/src/dma.c @@ -1,49 +1,46 @@ #include "global.h" -#include "entity.h" +#include "dma.h" -void MemFill32(u32, u8*, u32); -void MemFill16(u32, u8*, u32); - -void MemFill16(u32 value, u8* dest, u32 size) { +void MemFill16(u32 value, void* dest, u32 size) { DmaFill16(3, value, dest, size); } -void MemFill32(u32 value, u8* dest, u32 size) { +void MemFill32(u32 value, void* dest, u32 size) { DmaFill32(3, value, dest, size); } -void MemClear32(u8* src, u32 size) { +void MemClear(void* dest, u32 size) { u32 zero = 0; - switch (((u32)src | size) & 3) { + switch (((u32)dest | size) & 3) { case 0: - MemFill32(0, src, size); + MemFill32(0, dest, size); break; case 2: - MemFill16(0, src, size); + MemFill16(0, dest, size); break; default: do { - *src = zero; - src++; + *(u8*)dest = zero; + dest++; size--; } while (size != 0); } } -void MemCopy(const u8* src, u8* dst, u32 size) { - switch (((u32)src | (u32)dst | size) & 3) { +void MemCopy(const void* src, void* dest, u32 size) { + switch (((u32)src | (u32)dest | size) & 3) { case 0: - DmaCopy32(3, src, dst, size); + DmaCopy32(3, src, dest, size); break; case 2: - DmaCopy16(3, src, dst, size); + DmaCopy16(3, src, dest, size); break; default: do { - *dst = *src; + *(u8*)dest = *(u8*)src; src++; - dst++; + dest++; } while (--size); } } diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index 3344b5b5..fff1cb50 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -4,7 +4,6 @@ extern u32 sub_080002D4(s32, s32, u32); extern s32 sub_080012DC(Entity*); -extern u32 sub_080044EC(Entity*, u32); extern u32 sub_08031E04(Entity*); extern void sub_08031E48(Entity*, Entity*); extern void sub_08032290(Entity*); @@ -12,10 +11,7 @@ extern u32 sub_080322A4(Entity*); void sub_080322E8(Entity*); extern void sub_08032338(Entity*); extern Entity* sub_08049DF4(u32); -extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*)); -extern u32 sub_0806FCB8(Entity*, u32, u32, u32); extern u32 GetNextFunction(Entity*); -extern void SetChildOffset(Entity*, s32, s32, s32); extern Entity* gUnk_020000B0; extern u8 gEntCount; diff --git a/src/enemy/beetle.c b/src/enemy/beetle.c index 6f888658..61e54b6a 100644 --- a/src/enemy/beetle.c +++ b/src/enemy/beetle.c @@ -5,7 +5,7 @@ extern u32 PlayerInRange(Entity*, u32, u32); u32 sub_08021D00(); -void sub_08021D44(Entity* this, u32 param_2); +void sub_08021D44(Entity* this, u32 direction); extern void (*const gUnk_080CB590[])(Entity*); extern void (*const gUnk_080CB5A8[])(Entity*); diff --git a/src/enemy/bladeTrap.c b/src/enemy/bladeTrap.c index 95d2d8d4..9f89f8f0 100644 --- a/src/enemy/bladeTrap.c +++ b/src/enemy/bladeTrap.c @@ -1,10 +1,9 @@ #include "global.h" #include "entity.h" #include "room.h" +#include "functions.h" extern void sub_080A2CC0(); -extern void sub_0806F69C(); -extern void EnqueueSFX(); void BladeTrap(Entity* this) { if (this->action == 0) { diff --git a/src/enemy/bombPeahat.c b/src/enemy/bombPeahat.c index b8dc9575..58e1ed51 100644 --- a/src/enemy/bombPeahat.c +++ b/src/enemy/bombPeahat.c @@ -4,14 +4,11 @@ #include "player.h" extern void sub_08078954(Entity*); -extern u32 sub_0800442E(Entity*); extern void sub_08078930(Entity*); extern s32 sub_080012DC(Entity*); extern u32 GetNextFunction(Entity*); -extern void sub_0806F4E8(Entity*); extern Entity* sub_08049DF4(u32); extern void sub_08079BD8(Entity*); -extern u32 GetTileTypeByEntity(Entity*); void sub_0802AD1C(Entity*, u32); void sub_0802AD54(Entity*); diff --git a/src/enemy/bowMoblin.c b/src/enemy/bowMoblin.c index e29d6177..893d7618 100644 --- a/src/enemy/bowMoblin.c +++ b/src/enemy/bowMoblin.c @@ -1,10 +1,8 @@ #include "global.h" #include "entity.h" +#include "enemy.h" +#include "functions.h" -extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*)); -extern void SetChildOffset(Entity*, u32, u32, u32); -extern void sub_0804A9FC(Entity*, u32); -extern void sub_0804AA30(Entity*, void (*const funcs[][])(Entity*)); extern void sub_0803C5F0(Entity*); extern void (*const gUnk_080CFF78[])(Entity*); @@ -25,7 +23,7 @@ void sub_0803C198(Entity* this) { if (this->field_0x43 != 0) { sub_0804A9FC(this, 0x1c); } - sub_0804AA30(this, &gUnk_080CFF78); + sub_0804AA30(this, gUnk_080CFF78); if ((this->bitfield & 0x80) != 0) { sub_0803C5F0(this); pEVar1 = this->attachedEntity; diff --git a/src/enemy/chuchuBoss.c b/src/enemy/chuchuBoss.c index 674e8774..4127be53 100644 --- a/src/enemy/chuchuBoss.c +++ b/src/enemy/chuchuBoss.c @@ -2,8 +2,6 @@ #include "entity.h" #include "functions.h" -extern void sub_08078B48(void); - void sub_08027870(Entity*); extern void (*const gUnk_080CC19C[])(Entity*); @@ -36,13 +34,11 @@ void sub_08025CBC(Entity* this) { void sub_08025DC0(Entity*); void sub_08025CD4(Entity*); -void sub_08001242(Entity*); void sub_08025DD8(Entity*); void sub_08026060(Entity*); void sub_08026110(Entity*); void sub_080272D4(Entity*); void sub_0802720C(Entity*); -void sub_0802720C(Entity*); void sub_08026090(Entity*); void sub_0802626C(Entity*); void sub_08026580(Entity*); diff --git a/src/enemy/gyorgMale.c b/src/enemy/gyorgMale.c index 330e68b8..c7d26607 100644 --- a/src/enemy/gyorgMale.c +++ b/src/enemy/gyorgMale.c @@ -26,7 +26,6 @@ const u8 gUnk_080D1C44[0xC]; const u16 gUnk_080D1C50[8]; const u16 gUnk_080D1C60[8]; -void GyorgMale(Entity*); void sub_08046898(Entity*); // action 0 void sub_08046910(Entity*); // action 1 void sub_08046930(Entity*); // action 1 previousActionFlag 0 diff --git a/src/enemy/keaton.c b/src/enemy/keaton.c index 18b4f87e..a011fcb7 100644 --- a/src/enemy/keaton.c +++ b/src/enemy/keaton.c @@ -164,17 +164,17 @@ void sub_08032650(Entity* this) { sub_0803269C(this, this->direction); } -void sub_0803269C(Entity* this, u32 param_2) { +void sub_0803269C(Entity* this, u32 direction) { u32 uVar1; - if (((param_2 - 3) & 7) < 3) { - uVar1 = DirectionToAnimationState(param_2); + if (((direction - 3) & 7) < 3) { + uVar1 = DirectionToAnimationState(direction); if (((this->animationState - uVar1) & 3) > 1) { this->animationState = uVar1; InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1); } } else { - uVar1 = DirectionToAnimationState(param_2); + uVar1 = DirectionToAnimationState(direction); if (uVar1 != this->animationState) { this->animationState = uVar1; InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1); diff --git a/src/enemy/keese.c b/src/enemy/keese.c index 0462b254..2c5dc02b 100644 --- a/src/enemy/keese.c +++ b/src/enemy/keese.c @@ -5,16 +5,9 @@ #include "functions.h" extern void sub_08001328(Entity*); -extern u32 sub_0806F520(Entity*); -extern void sub_0806F4E8(Entity*); -extern u32 sub_0806F3E4(Entity*); -extern void sub_0804A7D4(Entity*); -extern void sub_0804A720(Entity*); extern void Keese_StartFly(Entity*); extern void sub_080AEFB4(Entity*); extern void sub_08021F24(Entity*); -extern u32 sub_08049FA0(Entity*); -extern u32 sub_08049EE4(Entity*); extern void (*const gKeeseFunctions[])(Entity*); extern void (*const gKeeseActions[])(Entity*); diff --git a/src/enemy/lakitu.c b/src/enemy/lakitu.c index 163ec9e1..00e220cc 100644 --- a/src/enemy/lakitu.c +++ b/src/enemy/lakitu.c @@ -7,51 +7,6 @@ extern void (*const LakituActionFuncs[])(Entity*); -// Lakitu -extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*)); - -// sub_0803C784 -extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*)); - -// sub_0803C820 -extern u32 sub_0806F520(Entity*); - -// sub_0803C850 -extern void sub_0806F4E8(Entity*); - -// Lakitu_Initialize -extern void sub_0804A720(Entity*); - -// Lakitu_Cloudless -extern u32 sub_08003FC4(Entity*, u32); - -// sub_0803CA4C -extern u32 sub_080041A0(Entity*, Entity*, u32, u32); - -// sub_0803CAD0 -extern u32 sub_080AEFE0(Entity*); - -// Lakitu_SpawnLightning -void PositionRelative(Entity*, Entity*, s32, s32); -extern void EnqueueSFX(u32); - -// sub_0803CC08 -extern void DeleteEntity(Entity*); - -// Part of function tables -extern void sub_08001324(Entity*); -extern void sub_0804A7D4(Entity*); -extern void sub_08001242(Entity*); - -// Used in multiple functions -extern Entity* CreateFx(Entity*, u32, u32); -extern Entity* sub_0804A98C(Entity* positionEntity, u8 subtype, - u8 form); // Creates a projectile positioned at the given entity -extern void UpdateAnimationSingleFrame(Entity*); -extern void InitAnimationForceUpdate(Entity*, u32); -extern u32 sub_0806FCB8(Entity*, u32, u32, u32); -extern u32 GetFacingDirection(Entity*, Entity*); - // Forward references to functions in lakitu.c extern void sub_0803CAD0(Entity*); extern void sub_0803CBAC(Entity*); @@ -78,8 +33,6 @@ typedef struct { s8 y; } PACKED OffsetCoords; -// sub_0803CC08 -extern void DeleteEntity(Entity*); // Variables extern void (*const gUnk_080D0110[])(Entity*); diff --git a/src/enemy/lakituCloud.c b/src/enemy/lakituCloud.c index 80679029..a4809991 100644 --- a/src/enemy/lakituCloud.c +++ b/src/enemy/lakituCloud.c @@ -1,25 +1,17 @@ #include "global.h" #include "entity.h" #include "player.h" +#include "functions.h" extern u32 GetNextFunction(Entity*); -extern void sub_0804A7D4(Entity*); -extern void sub_08001242(Entity*); - extern void (*const gUnk_080D0418[6])(Entity*); extern void (*const gUnk_080D0430[3])(Entity*); extern void (*const gUnk_080D043C[3])(Entity*); -extern bool32 sub_0806F3E4(Entity*); -extern bool32 sub_0806F520(Entity*); - extern void sub_0800449C(Entity*, u32); extern void sub_0803CE14(Entity*); extern void sub_0803CE3C(Entity*); -extern Entity* GetCurrentRoomProperty(u8); -extern void sub_0806F4E8(Entity*); -extern void sub_0806F69C(Entity*); extern void sub_08079D84(void); extern void sub_080A2CC0(Entity*, Entity**, u16*); diff --git a/src/enemy/leever.c b/src/enemy/leever.c index 5ce12ee5..7e2f0774 100644 --- a/src/enemy/leever.c +++ b/src/enemy/leever.c @@ -3,14 +3,8 @@ #include "enemy.h" #include "functions.h" -extern void SetChildOffset(Entity*, s32, s32, s32); -extern void sub_0804AA30(Entity*, void (*const func[])(Entity*)); -extern void sub_0804A7D4(Entity*); -extern Entity* CreateDeathFx(Entity*, u32, u32); -extern void sub_0804A720(Entity*); extern u32 sub_080002D4(s32, s32, u32); extern u32 sub_080002BC(s32, s32, u32); -extern u32 sub_08049FDC(Entity*, u32); extern Entity* gUnk_020000B0; extern s16 gSineTable[]; diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c index 60a7b7b7..b5596a55 100644 --- a/src/enemy/likeLike.c +++ b/src/enemy/likeLike.c @@ -5,7 +5,6 @@ #include "save.h" extern bool32 sub_080544B4(u32); -extern void sub_0807CAA0(u32, u32); void sub_0802810C(Entity*); void sub_080281A0(Entity*); diff --git a/src/enemy/miniFireballGuy.c b/src/enemy/miniFireballGuy.c index d5d7b0e6..c0114ff1 100644 --- a/src/enemy/miniFireballGuy.c +++ b/src/enemy/miniFireballGuy.c @@ -2,10 +2,6 @@ #include "entity.h" #include "functions.h" -extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*)); -extern void sub_0804A7D4(Entity*); -extern void sub_0804A720(Entity*); -extern void sub_08045678(Entity*); extern void sub_08045678(Entity*); extern void (*const gUnk_080D1868[])(Entity*); diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c index 08c94fa7..993d7666 100644 --- a/src/enemy/miniSlime.c +++ b/src/enemy/miniSlime.c @@ -6,11 +6,8 @@ void sub_08045374(Entity*); extern u32 sub_0806FA04(u32, u32); -extern void sub_0804A720(); extern void sub_080452E4(); -extern void sub_0804AA30(); extern void ReplaceMonitoredEntity(Entity*, Entity*); -extern void sub_0804A7D4(Entity*); extern void (*const gUnk_080D17C0[])(Entity*); extern void (*const gUnk_080D17D8[])(Entity*); diff --git a/src/enemy/octorok.c b/src/enemy/octorok.c index d89e4e65..199742bc 100644 --- a/src/enemy/octorok.c +++ b/src/enemy/octorok.c @@ -2,14 +2,6 @@ #include "entity.h" #include "functions.h" -extern void EnemyFunctionHandler(); -extern void SetChildOffset(); -extern void sub_0804AA30(); -extern void sub_0804A7D4(); -extern u32 sub_0806F520(); -extern void sub_0806F4E8(); -extern void UpdateAnimationVariableFrames(); -extern void sub_0804A720(); extern Entity* sub_08049DF4(u32); void Octorok_Pause(); diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c index c3e67cc8..a22dd53b 100644 --- a/src/enemy/pesto.c +++ b/src/enemy/pesto.c @@ -3,10 +3,8 @@ #include "functions.h" extern u32 sub_080002E0(u16, u32); -extern u32 CheckIsDungeon(void); extern void sub_0800449C(Entity*, u32); extern u32 sub_08049F1C(Entity*, Entity*, u32); -extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*)); extern u32 PlayerInRange(Entity*, u32, u32); extern void sub_080AEFB4(Entity*); extern Entity* FindNextEntityOfSameSubtype(Entity* ent, int listIndex); diff --git a/src/enemy/puffstool.c b/src/enemy/puffstool.c index 08908191..80c98278 100644 --- a/src/enemy/puffstool.c +++ b/src/enemy/puffstool.c @@ -8,7 +8,6 @@ extern u16 sub_080002A8(u32, u32, u32); extern u16 sub_080002D4(u32, u32, u32); extern void sub_0804AA1C(Entity*); extern Entity* sub_08049DF4(u32); -extern void sub_0807B7D8(u32, u32, u32); extern u8 gUnk_080B37A0[]; extern u8 gUnk_080B3E80[]; diff --git a/src/enemy/slime.c b/src/enemy/slime.c index 13782f7a..6ef1e9fa 100644 --- a/src/enemy/slime.c +++ b/src/enemy/slime.c @@ -16,10 +16,7 @@ typedef struct { void sub_08044FF8(Entity*); void sub_08045178(Entity*, Entity*, int, int); -extern void sub_0804A720(Entity*); extern u32 sub_0806FA04(u32, u32); -extern u32 sub_08049FA0(Entity*); -extern u32 sub_08049EE4(Entity*); extern void sub_0804A4E4(Entity*, Entity*); extern u32 sub_080002CC(Entity*, s32, s32); diff --git a/src/enemy/smallPesto.c b/src/enemy/smallPesto.c index f1b039f4..d39712ef 100644 --- a/src/enemy/smallPesto.c +++ b/src/enemy/smallPesto.c @@ -1,17 +1,10 @@ #include "global.h" #include "entity.h" +#include "position.h" +#include "functions.h" extern u32 GetNextFunction(Entity*); -extern u32 sub_0806F520(Entity*); -extern void sub_0806F4E8(Entity*); -extern u32 sub_0806F3E4(); -extern void sub_0804A7D4(Entity*); -extern void sub_0804A720(Entity*); extern void sub_080317F8(Entity*); -extern u32 sub_08049FA0(Entity*); -extern u32 Random(); -extern u32 sub_08049EE4(Entity*); -extern void sub_0806F69C(Entity*); extern void (*gUnk_080CE530[])(Entity*); extern void (*gUnk_080CE548[])(Entity*); @@ -19,7 +12,6 @@ extern void (*gUnk_080CE554[])(Entity*); void sub_080317B4(Entity*); void sub_080317E0(Entity*); -void sub_080317F8(Entity*); void sub_08031840(Entity*); extern Hitbox gUnk_080CE560; @@ -61,7 +53,7 @@ void sub_080316E8(Entity* this) { } void sub_080316F0(Entity* this) { - if (sub_0806F3E4()) { + if (sub_0806F3E4(this)) { sub_0804A7D4(this); } } @@ -101,7 +93,6 @@ void sub_08031770(Entity* this) { this->attachedEntity = NULL; } } - return; } void sub_080317B4(Entity* this) { diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c index 24009c34..c206edd2 100644 --- a/src/enemy/spearMoblin.c +++ b/src/enemy/spearMoblin.c @@ -3,7 +3,6 @@ #include "functions.h" extern bool32 sub_0806FC80(Entity*, Entity*, u32); -extern Entity* sub_080A7EE0(u32); extern Entity* sub_08049DF4(u32); void sub_08028604(Entity*); diff --git a/src/enemy/tektite.c b/src/enemy/tektite.c index 66d2ca82..a738d82a 100644 --- a/src/enemy/tektite.c +++ b/src/enemy/tektite.c @@ -62,8 +62,6 @@ void sub_0802F1F0(Entity* this) { } } -extern u8 gUnk_080CDEF8[]; - void sub_0802F210(Entity* this) { u32 temp; u32 temp2; @@ -106,8 +104,6 @@ void sub_0802F284(Entity* this) { } } -extern u8 gUnk_080CDEF8[]; - void sub_0802F300(Entity* this) { s32 temp; u32 rand; diff --git a/src/enemy/vaatiBall.c b/src/enemy/vaatiBall.c index 02bf4e39..ded83908 100644 --- a/src/enemy/vaatiBall.c +++ b/src/enemy/vaatiBall.c @@ -136,8 +136,6 @@ void sub_080447E0(Entity* this) { } } -extern u32 sub_080045B4(); -extern u32 sub_0806FCB8(Entity*, u32, u32, u32); extern void sub_08044DEC(); void sub_08044868(Entity* this) { diff --git a/src/enemy/wallMaster2.c b/src/enemy/wallMaster2.c index a788ad58..ffe1d1e9 100644 --- a/src/enemy/wallMaster2.c +++ b/src/enemy/wallMaster2.c @@ -3,7 +3,6 @@ #include "area.h" extern void sub_08001328(Entity*); -extern u32 sub_0806FCB8(Entity*, u32, u32, u32); extern void DoExitTransition(u32*); extern Entity* gUnk_020000B0; diff --git a/src/entity.c b/src/entity.c index cb81ae21..47acc2dc 100644 --- a/src/entity.c +++ b/src/entity.c @@ -54,7 +54,6 @@ void DeleteThisEntity(void) { _call_via_r0((u32*)&_EntUpdate); } -void DeleteEntity(Entity*); void DeleteManager(OtherEntity*); typedef void (*Deleter)(void*); @@ -122,7 +121,6 @@ void ClearAllDeletedEntities(void) { ClearDeletedEntity(ent); } } while (ent++, ent < (&gPlayerEntity + 80)); - return; } extern u8 gEntCount; @@ -161,7 +159,7 @@ OtherEntity* GetEmptyManager(void) { return NULL; } -extern void MemClear32(void*, u32); +extern void MemClear(void*, u32); extern u8 gManagerCount; void DeleteManager(OtherEntity* ent) { @@ -170,7 +168,7 @@ void DeleteManager(OtherEntity* ent) { sub_0805E92C(ent); UnlinkEntity(ent); - MemClear32(ent, sizeof(OtherEntity)); + MemClear(ent, sizeof(OtherEntity)); gManagerCount--; } @@ -290,7 +288,7 @@ bool32 DoesSimilarEntityExist(Entity* ent) { return FALSE; } -Entity* FindEntityInListBySubtype(int type, int subtype, int listIndex) { +Entity* FindEntityInListBySubtype(u32 type, u32 subtype, u32 listIndex) { Entity* it; LinkedList* list; @@ -302,7 +300,7 @@ Entity* FindEntityInListBySubtype(int type, int subtype, int listIndex) { return NULL; } -Entity* FindEntityInListByForm(int type, int subtype, int listIndex, int form, int parameter) { +Entity* FindEntityInListByForm(u32 type, u32 subtype, u32 listIndex, u32 form, u32 parameter) { Entity* i; LinkedList* list; diff --git a/src/fileScreen.c b/src/fileScreen.c index 58fe323f..1862bdb6 100644 --- a/src/fileScreen.c +++ b/src/fileScreen.c @@ -1,4 +1,5 @@ #include "fileScreen.h" +#include "dma.h" // copy, erase, start #define NUM_FILE_OPERATIONS 3 @@ -105,7 +106,7 @@ void CreateDialogBox(u32 arg0, u32 arg1) { void sub_08050384(void) { sub_0801C4A0(0, 0); - MemClear32(&gBG0Buffer, sizeof(gBG0Buffer)); + MemClear(&gBG0Buffer, sizeof(gBG0Buffer)); gScreen.bg.bg0Updated = 1; } @@ -117,8 +118,8 @@ void sub_080503A8(u32 gfxGroup) { void SetFileSelectState(FileSelectState mode) { gUnk_02032EC0.state = mode; - MemClear32(&gBG0Buffer, sizeof(gBG0Buffer)); - MemClear32(&gBG1Buffer, sizeof(gBG1Buffer)); + MemClear(&gBG0Buffer, sizeof(gBG0Buffer)); + MemClear(&gBG1Buffer, sizeof(gBG1Buffer)); } void LoadOptionsFromSave(u32 idx) { @@ -159,7 +160,7 @@ void HandleChooseFileScreen(void) { gScreen.bg.bg1yOffset = 0; gScreen.affine.bg2xOffset = 0; gScreen.affine.bg2yOffset = 0; - MemClear32(&gChooseFileState, sizeof(gChooseFileState)); + MemClear(&gChooseFileState, sizeof(gChooseFileState)); } HideButtonR(); @@ -184,17 +185,17 @@ static void HandleFileScreenEnter(void) { sub_0801DA90(1); sub_080A3210(); - MemClear32((void*)VRAM, 0x80); // clear palettes + MemClear((void*)VRAM, 0x80); // clear palettes MessageInitialize(); EraseAllEntities(); sub_08080668(); sub_080ADD30(); sub_0801CFA8(0); - MemClear32(&gUnk_0200AF00, sizeof(gUnk_0200AF00)); - MemClear32(&gUnk_02019EE0, sizeof(gUnk_02019EE0)); + MemClear(&gUnk_0200AF00, sizeof(gUnk_0200AF00)); + MemClear(&gUnk_02019EE0, sizeof(gUnk_02019EE0)); gUnk_02019EE0.unk3 = 7; gUnk_02019EE0.unk6 = gUnk_02000000->gameLanguage > LANGUAGE_EN ? 3 : 0; - MemClear32(&gUnk_02032EC0, sizeof(gUnk_02032EC0)); + MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0)); gUnk_02032EC0.lastState = 8; SetFileSelectState(STATE_NONE); InitDMA(); @@ -284,7 +285,7 @@ void sub_0805070C(void) { var0->unk8 = gUnk_02000D00; for (i = 0; i < NUM_SAVE_SLOTS; i++) { var0->unk6 = 0; - MemClear32(var0->unk8, 0x200); + MemClear(var0->unk8, 0x200); playerName = &gUnk_02019EE0.saves[i].playerName[0]; for (j = 0; j < FILENAME_LENGTH; j++) { sub_0805F7DC(playerName[j], var0); @@ -489,7 +490,7 @@ void sub_08050B3C(u16*); void sub_08050AFC(u32 idx) { SetActiveSave(idx); - MemClear32(&gBG1Buffer, sizeof(gBG1Buffer)); + MemClear(&gBG1Buffer, sizeof(gBG1Buffer)); if (gUnk_02019EE0.saveStatus[idx] == SAVE_VALID) { sub_08050B3C(&gBG1Buffer.unk29C); } @@ -645,7 +646,7 @@ void HandleFileLanguageSelect(void) { } void sub_08050DB8(void) { - MemClear32(&gBG2Buffer, sizeof(gBG2Buffer)); + MemClear(&gBG2Buffer, sizeof(gBG2Buffer)); sub_080503A8(0xc); gMenu.field_0x4 = gUnk_02000000->gameLanguage; sub_080A7114(1); @@ -980,7 +981,6 @@ u32 sub_080514BC(u32 a1) { switch (a1) { default: case 0x0: - return c - 0x33; case 0xe: return c - 0x33; case 0xf: @@ -1186,7 +1186,7 @@ void sub_0805194C(u32 save_idx) { gUnk_02019EE0.saveStatus[save_idx] = 0; save = &gUnk_02019EE0.saves[save_idx]; - MemClear32(save, sizeof(*save)); + MemClear(save, sizeof(*save)); save->messageSpeed = 1; save->brightnessPref = 1; save->stats.health = 24; diff --git a/src/game.c b/src/game.c index db28c2ab..bf44ea66 100644 --- a/src/game.c +++ b/src/game.c @@ -1,6 +1,7 @@ #include "global.h" #include "screen.h" #include "structures.h" +#include "dma.h" #include "functions.h" #include "screen.h" #include "entity.h" @@ -12,7 +13,6 @@ #include "fileScreen.h" extern u8 gArea; -extern Entity gPlayerEntity; extern u32 gUnk_03000B80; extern u32 gUnk_03003FC0; @@ -219,7 +219,7 @@ NONMATCH("asm/non_matching/game/sub_08052418.inc", void sub_08052418(int param_1 int i; struct_080FCA8C temp; - MemClear32(&gBG1Buffer, 0x800); + MemClear(&gBG1Buffer, 0x800); gUnk_020227E8._0[0].WORD = 0xf; gUnk_020227E8._0[2].WORD = 0xf; gUnk_020227E8._0[4].WORD = 0xf; @@ -238,12 +238,12 @@ void InitializePlayer(void) { Entity* pl; sub_080784C8(); - MemClear32((void*)&gUnk_03000B80, 0x70); - MemClear32((void*)&gPlayerState, 0xb0); + MemClear((void*)&gUnk_03000B80, 0x70); + MemClear((void*)&gPlayerState, 0xb0); MemFill32(0xffffffff, &gPlayerState.field_0x40, 0x40); pl = &gPlayerEntity; - MemClear32((void*)pl, 0x88); + MemClear((void*)pl, 0x88); gRoomControls.cameraTarget = pl; gPlayerState.playerAction = gUnk_080FCAC8[gScreenTransition.field_0xf]; if (!CheckGlobalFlag(0x14)) { diff --git a/src/intro.c b/src/intro.c index 9bc22124..a0eb8db7 100644 --- a/src/intro.c +++ b/src/intro.c @@ -2,6 +2,7 @@ #include "menu.h" #include "main.h" #include "entity.h" +#include "dma.h" #include "functions.h" #include "readKeyInput.h" #include "screen.h" @@ -55,7 +56,7 @@ static const u16 sLightRaysAlphaBlends[] = { static u32 AdvanceIntroSequence(u32 transition) { gUnk_02032EC0.lastState = transition; gMain.funcIndex = 2; - MemClear32(&gIntroState, sizeof(gIntroState)); + MemClear(&gIntroState, sizeof(gIntroState)); DoFade(7, 8); } @@ -64,7 +65,7 @@ void HandleIntroScreen(void) { switch (gMain.funcIndex) { case 0: MessageInitialize(); - MemClear32(&gUnk_02032EC0, sizeof(gUnk_02032EC0)); + MemClear(&gUnk_02032EC0, sizeof(gUnk_02032EC0)); AdvanceIntroSequence(0); break; case 1: @@ -212,7 +213,6 @@ static void UpdatePressStartIcon(void) { gOamCmd.x = 120; gOamCmd.y = 152; sub_080ADA14(511, 1); - return; } static void UpdateSwordBgAffineData(void) { diff --git a/src/item.c b/src/item.c index ad7a419b..fa23bd31 100644 --- a/src/item.c +++ b/src/item.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "item.h" +#include "functions.h" // TODO - How does this relate to PlayerItemFunctions? Is this just a lookup table? void (*const gItemFunctions[])(ItemBehavior*, u32) = { @@ -11,7 +12,6 @@ void (*const gItemFunctions[])(ItemBehavior*, u32) = { }; extern void sub_08077E78(ItemBehavior*, u32); -extern void SoundReq(u32); extern void sub_08078F60(void); extern void sub_08077D38(ItemBehavior*, u32); extern void sub_0805E544(void); @@ -28,7 +28,6 @@ extern void (*const gUnk_0811BDE0[])(ItemBehavior* beh, u32); extern void (*const gUnk_0811BDE8[])(ItemBehavior* beh, u32); extern void (*const gUnk_0811BDF4[])(ItemBehavior* beh, u32); -extern u8 gUnk_02034490; #if 0 void Ocarina(ItemBehavior* beh, u32 inputFlags) { gOcarinaStates[beh->stateID](beh, inputFlags); @@ -50,7 +49,7 @@ void OcarinaUse(ItemBehavior *beh, u32 arg1) gPlayerEntity.field_0x7a = 2; gPlayerState.flags.all |= 0x10000000; gPlayerState.field_0x27[0] = 0xff; - gUnk_02034490 = 1; + gUnk_02034490[0] = 1; bVar1 = (8 >> arg1); gPlayerState.field_0xa |= bVar1; gPlayerState.keepFacing |= bVar1; diff --git a/src/item11.c b/src/item11.c index 5821d0b5..5365582e 100644 --- a/src/item11.c +++ b/src/item11.c @@ -1,11 +1,10 @@ #include "global.h" #include "entity.h" #include "player.h" +#include "functions.h" -extern void DeleteThisEntity(); extern void sub_08078CD0(Entity*); extern void sub_08018FA0(Entity*); -extern u32 sub_0801766C(Entity*); extern void sub_08018F6C(Entity*); extern void (*const gUnk_080B3DD0[])(Entity*); diff --git a/src/loadRoom.c b/src/loadRoom.c index 04b8e02c..e5f9e636 100644 --- a/src/loadRoom.c +++ b/src/loadRoom.c @@ -1,10 +1,9 @@ #include "global.h" #include "room.h" #include "flags.h" +#include "functions.h" -void LoadRoomEntityList(EntityData* dat); extern void sub_0804B058(EntityData* dat); -extern void LoadRoomTileEntities(EntityData* dat); extern void sub_0801AC98(); extern u32 sub_08049D1C(u32); extern Entity* LoadRoomEntity(EntityData*); diff --git a/src/main.c b/src/main.c index 71c1347b..c05d9945 100644 --- a/src/main.c +++ b/src/main.c @@ -1,4 +1,5 @@ #include "global.h" +#include "dma.h" #include "functions.h" #include "structures.h" #include "main.h" @@ -36,7 +37,7 @@ void MainLoop(void) { MessageInitialize(); sub_080ADD30(); gRand = 0x1234567; - MemClear32(&gMain, sizeof(gMain)); + MemClear(&gMain, sizeof(gMain)); InitScreen(SCREEN_INTRO); while (1) { ReadKeyInput(); @@ -92,7 +93,7 @@ static void sub_08055F70(void) { *(vu16*)BG_PLTT = 0x7FFF; REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3; size = 0x3FFD0; - MemClear32(gUnk_02000030, size); + MemClear(gUnk_02000030, size); size = (u32)gUnk_080B2CD8 - (u32)sub_080B197C; if (size != 0) { MemCopy(sub_080B197C, gUnk_030056F0, size); @@ -185,7 +186,7 @@ NONMATCH("asm/non_matching/sub_080560B8.inc", void sub_080560B8(void)) { b = 1; } if (b != 0) { - MemClear32((u8*)&gUnk_02000010.signature, 0x20); + MemClear((u8*)&gUnk_02000010.signature, 0x20); gUnk_02000010.signature = SIGNATURE; } } diff --git a/src/manager/manager1.c b/src/manager/manager1.c index 2b06a48f..45e1b000 100644 --- a/src/manager/manager1.c +++ b/src/manager/manager1.c @@ -1,12 +1,11 @@ #include "global.h" #include "entity.h" #include "screen.h" +#include "functions.h" -extern void LoadGfxGroup(u32); extern void sub_08056250(void); extern void sub_080570B8(Entity*); void sub_080570F8(void); -extern void sub_08052D74(void*, void*, void*); extern void (*const gUnk_08107C5C[])(Entity*); extern void (*const gUnk_08107C48[])(Entity*); diff --git a/src/manager/manager15.c b/src/manager/manager15.c index 87135c56..60ca8f5a 100644 --- a/src/manager/manager15.c +++ b/src/manager/manager15.c @@ -295,7 +295,6 @@ void sub_0805A758(Manager15* this) { } extern void sub_0805E4E0(Manager*, u32); -extern void sub_08077B20(void); void sub_0805A76C(Manager15* this) { if ((gPlayerEntity.currentHealth != 0) && (gPlayerEntity.height.HALF.HI == 0) && (!gPlayerState.field_0x2c)) { @@ -364,7 +363,6 @@ void sub_0805A804(Manager15* this) { } void sub_0805AAC8(Manager15*); -extern void sub_08052D74(void*, void*, void*); void sub_0805A89C(Manager15* this) { sub_0805E3A0(this, 6); diff --git a/src/manager/manager1A.c b/src/manager/manager1A.c index 19a1dbca..fc08d6cc 100644 --- a/src/manager/manager1A.c +++ b/src/manager/manager1A.c @@ -4,6 +4,7 @@ #include "entity.h" #include "room.h" #include "screen.h" +#include "dma.h" #include "functions.h" typedef struct { @@ -29,7 +30,6 @@ void sub_0805B030(Manager1A* this) { gUnk_08108668[this->manager.action](this); } -extern void sub_08052D74(void*, void*, void*); extern u32 sub_0806FBFC(u32, u32, u32, u32); typedef struct struct_08108764 { @@ -65,13 +65,12 @@ u32 sub_0805B1CC(Manager1A*); void sub_0805B210(Manager1A*); void sub_0805B2B0(Manager1A*); void sub_0805B328(Manager1A*); -void sub_0805BC4C(void); void sub_0805B048(Manager1A* this) { struct_08108764* tmp; Entity* obj; sub_0805E3A0(&this->manager, 6); - MemClear32(&this->unk_20, 0x20); + MemClear(&this->unk_20, 0x20); this->manager.action = 1; this->unk_3f = gRoomControls.roomID; tmp = &gUnk_08108764[this->manager.unk_0a]; diff --git a/src/manager/manager1E.c b/src/manager/manager1E.c index 363c3113..298e7860 100644 --- a/src/manager/manager1E.c +++ b/src/manager/manager1E.c @@ -17,7 +17,6 @@ typedef struct { enum Manager1E_State { Init, ObserveRegion }; -void Manager1E_Handler(Manager1E*); void Manager1E_Init(Manager1E*); void Manager1E_ObserveRegion(Manager1E*); diff --git a/src/manager/manager2.c b/src/manager/manager2.c index 56c81310..b6e0eef7 100644 --- a/src/manager/manager2.c +++ b/src/manager/manager2.c @@ -1,9 +1,9 @@ #include "global.h" #include "entity.h" #include "screen.h" +#include "functions.h" extern void sub_080576A0(); -extern void sub_08052D74(); extern void sub_0805754C(Entity*); void Manager2(Entity* this) { diff --git a/src/manager/manager20.c b/src/manager/manager20.c index b8a20f5f..f7ca8a0b 100644 --- a/src/manager/manager20.c +++ b/src/manager/manager20.c @@ -3,6 +3,7 @@ #include "flags.h" #include "entity.h" #include "room.h" +#include "functions.h" typedef struct { Manager manager; @@ -17,8 +18,6 @@ typedef struct { u16 unk_3e; } Manager20; -extern void DeleteManager(Manager20*); - void sub_0805B7A0(Manager20* this) { Entity* tmp = CreateObject(this->manager.unk_0e, this->manager.unk_0a, this->manager.unk_0b); if (!tmp) @@ -35,5 +34,5 @@ void sub_0805B7A0(Manager20* this) { } tmp->x.HALF.HI += gRoomControls.roomOriginX; tmp->y.HALF.HI += gRoomControls.roomOriginY; - DeleteManager(this); + DeleteManager((Manager*)this); } diff --git a/src/manager/manager27.c b/src/manager/manager27.c index b2e0e15a..5ef41a57 100644 --- a/src/manager/manager27.c +++ b/src/manager/manager27.c @@ -4,7 +4,6 @@ #include "functions.h" extern u32 sub_0805C920(Entity*); -extern void LoadPaletteGroup(u32); void sub_0805C874(Entity*); void sub_0805C894(Entity*); diff --git a/src/manager/manager28.c b/src/manager/manager28.c index af59e09e..f60541e2 100644 --- a/src/manager/manager28.c +++ b/src/manager/manager28.c @@ -11,7 +11,6 @@ typedef struct { } d; } Manager28; -void Manager28_Entry(Manager28*); void Manager28_Init(Manager28*); void Manager28_Main(Manager28*); u32 Manager28_FindMatchingEntities(Manager28*); diff --git a/src/manager/manager30.c b/src/manager/manager30.c index 8cfde746..84101118 100644 --- a/src/manager/manager30.c +++ b/src/manager/manager30.c @@ -19,8 +19,6 @@ typedef struct Manager30 { u16 flag_reset; } Manager30; -extern void sub_0807B7D8(u32, u32, u32); - enum { INIT, IN_PROGRESS, FAILED, SUCCEEDED }; /* diff --git a/src/manager/manager39.c b/src/manager/manager39.c index 31cbda7e..8c1c1532 100644 --- a/src/manager/manager39.c +++ b/src/manager/manager39.c @@ -3,6 +3,7 @@ #include "screen.h" #include "area.h" #include "textbox.h" +#include "dma.h" #include "functions.h" typedef struct { @@ -25,9 +26,7 @@ extern const u8 gUnk_08108E30[0x18]; extern const u8 gUnk_08108E48[0x18]; extern const u8 gUnk_08108E60[]; -extern void MemCopy(const void* src, void* dest, u32 size); extern void sub_0805F46C(void*, const void*); -extern u32 CheckIsDungeon(void); extern void sub_0805E5B4(void); void sub_0805E140(Manager39*); @@ -68,7 +67,7 @@ void sub_0805E18C(Manager39* this) { } void sub_0805E1D8(Manager39* this) { - MemClear32(&gUnk_02034DF0, 0x80); + MemClear(&gUnk_02034DF0, 0x80); gScreen.bg.bg0Updated = 1; DeleteThisEntity(); } @@ -81,7 +80,7 @@ void sub_0805E1F8(u32 unk0, u32 unk1) { u8 unk_06[3]; } PACKED tmp; const u8* tmp2; - MemClear32(&gUnk_02034DF0, 0x80); + MemClear(&gUnk_02034DF0, 0x80); MemCopy(gUnk_08108E60, &tmp, sizeof(tmp)); tmp.unk_04 = unk0 >> 8; tmp.unk_05 = unk0; diff --git a/src/manager/manager4.c b/src/manager/manager4.c index 2ebdf7d3..3d396682 100644 --- a/src/manager/manager4.c +++ b/src/manager/manager4.c @@ -3,6 +3,7 @@ #include "room.h" #include "manager.h" #include "structures.h" +#include "functions.h" extern void (*gUnk_08107C70[])(Manager*); @@ -12,8 +13,6 @@ void sub_08057854(Manager* this) { extern void sub_080805F8(void); -extern void SetTile(u32, u32, u32); - extern DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance*, int); void sub_0805786C(Manager* this) { @@ -101,8 +100,6 @@ u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) { } #endif -extern void sub_0805E5A8(void); -extern void DeleteManager(Manager*); extern void sub_08080930(); void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { diff --git a/src/manager/manager5.c b/src/manager/manager5.c index ec7ee400..4681e754 100644 --- a/src/manager/manager5.c +++ b/src/manager/manager5.c @@ -34,8 +34,6 @@ void sub_08057AD0(Manager5* this) { void sub_08057CA4(Manager5*, u32, u32); -extern void DeleteManager(Manager*); - void sub_08057AE8(Manager5* this) { u32 tmp; tmp = (this->manager.unk_0b & 0x3) << 1; diff --git a/src/manager/manager6.c b/src/manager/manager6.c index aa5cb48a..a17fd16b 100644 --- a/src/manager/manager6.c +++ b/src/manager/manager6.c @@ -1,12 +1,9 @@ #include "global.h" -#include "entity.h" #include "player.h" #include "manager.h" +#include "functions.h" -extern void* GetCurrentRoomProperty(u8); -extern u32 CheckPlayerInRegion(u16, u16, u8, u8); extern void DoExitTransition(void*); -extern void DeleteManager(Entity*); void sub_08057CB4(Manager6* this) { u32 tmp; @@ -15,7 +12,7 @@ void sub_08057CB4(Manager6* this) { this->manager.action = 1; this->warpList = GetCurrentRoomProperty(this->manager.unk_0a); if (!this->warpList) { - DeleteManager((Entity*)this); + DeleteManager((Manager*)this); return; } } diff --git a/src/manager/manager7.c b/src/manager/manager7.c index 3a2cbb1a..089dab1b 100644 --- a/src/manager/manager7.c +++ b/src/manager/manager7.c @@ -12,12 +12,9 @@ typedef struct { void sub_08057E30(); u32 sub_08057E40(); -void sub_08057E64(); void sub_08057E7C(u32); -extern void sub_08052D74(); extern u32 sub_08056300(const u16*); -extern void sub_0805E3A0(); extern const u8 gGlobalGfxAndPalettes[]; diff --git a/src/manager/manager8.c b/src/manager/manager8.c index c6cd5075..aa80b627 100644 --- a/src/manager/manager8.c +++ b/src/manager/manager8.c @@ -17,8 +17,6 @@ void sub_08057EFC(); void sub_08058034(void); void sub_08058084(u16*, u16*); -extern void sub_08052D74(void*, void*, void*); - extern u16 gMapDataTopSpecial[]; void sub_08057ED0(Manager8* this) { diff --git a/src/manager/manager9.c b/src/manager/manager9.c index 70d117fb..aebc9a96 100644 --- a/src/manager/manager9.c +++ b/src/manager/manager9.c @@ -15,7 +15,6 @@ void sub_08058210(Manager9*); u32 sub_08058244(int); void sub_080582A0(u32, u32*, u8*); void sub_080582F8(u8*, u8*); -void sub_08058324(); extern u32 gUnk_02006F00[]; extern u8 gBG3Buffer[]; diff --git a/src/manager/managerA.c b/src/manager/managerA.c index 3033dd21..4b4a2ce4 100644 --- a/src/manager/managerA.c +++ b/src/manager/managerA.c @@ -4,6 +4,7 @@ #include "manager.h" #include "flags.h" #include "area.h" +#include "functions.h" void sub_08058398(ManagerA*); void sub_080583EC(ManagerA*); @@ -17,8 +18,6 @@ void sub_08058380(ManagerA* this) { gUnk_081081F4[this->manager.action](this); } -extern void sub_0805E3A0(Manager*, u32); - void sub_08058398(ManagerA* this) { if (CheckFlags(this->unk_3c) != 0) { @@ -36,8 +35,6 @@ void sub_08058398(ManagerA* this) { } } -void sub_08058408(ManagerA*); - void sub_080583EC(ManagerA* this) { if (CheckFlags(this->unk_3e) != 0) { this->manager.action = 2; @@ -45,12 +42,8 @@ void sub_080583EC(ManagerA* this) { } } -extern u32 CheckPlayerInRegion(u32, u32, u32, u32); extern void sub_0805E544(void); -extern void sub_08078A90(u32); -extern void sub_08078AA8(u32, u32); extern void sub_080186C0(u16); -extern void sub_08078B48(void); u32 sub_0805848C(ManagerA*); void sub_080585DC(ManagerA*); diff --git a/src/manager/managerB.c b/src/manager/managerB.c index e6e43a12..cfa48775 100644 --- a/src/manager/managerB.c +++ b/src/manager/managerB.c @@ -4,6 +4,7 @@ #include "entity.h" #include "room.h" #include "area.h" +#include "dma.h" #include "functions.h" /* @@ -128,7 +129,7 @@ ManagerBHelper* CreateHelper(Manager* this) { extra->manager.unk_0a = 1; extra->manager.parent = this; this->unk_0e++; - MemClear32(&extra->enemies, 0x20); + MemClear(&extra->enemies, 0x20); AppendEntityToList(extra, 8); } return extra; diff --git a/src/manager/managerC.c b/src/manager/managerC.c index 72529c2f..972fc67b 100644 --- a/src/manager/managerC.c +++ b/src/manager/managerC.c @@ -40,12 +40,9 @@ void sub_08058A04(ManagerC*); void sub_080588F8(ManagerC*); u32 sub_08058B08(ManagerC*, u32, u32, const struct_08108228*); void sub_08058B5C(ManagerC*, u32); -void sub_08058D34(void); extern void sub_0805622C(struct BgAffineDstData*, u32, u32); -extern void sub_08052D74(void*, void*, void*); extern void sub_080044AE(Entity*, u32, u32); -extern void MemCopy(const void* src, void* dest, u32 size); extern u8 gUnk_03003DE4[0xC]; @@ -88,7 +85,7 @@ void sub_080588CC(ManagerC* this) { void nullsub_108(ManagerC* this) { } -#define ABS_DIFF_GT(a, b, c) (signed)a - b >= 0 ? a - b > c : b - a > c +#define ABS_DIFF_GT(a, b, c) ((signed)(a) - (b) >= 0 ? (a) - (b) > (c) : (b) - (a) > (c)) void sub_080588F8(ManagerC* this) { if (this->manager.unk_0f == 0) { diff --git a/src/manager/managerE.c b/src/manager/managerE.c index 0f5e9328..44bfb5a7 100644 --- a/src/manager/managerE.c +++ b/src/manager/managerE.c @@ -3,13 +3,7 @@ #include "manager.h" #include "flags.h" #include "room.h" - -extern void LoadRoomEntityList(Entity*); -extern void DeleteThisEntity(void); -extern void DeleteManager(Manager*); -extern void sub_08078A90(u32); -extern void sub_08078B48(void); -extern void SoundReq(u32); +#include "functions.h" void sub_08058E60(ManagerE* this) { if (!this->manager.action) { diff --git a/src/npc/anju.c b/src/npc/anju.c index b0b0ee91..3e52d5a0 100644 --- a/src/npc/anju.c +++ b/src/npc/anju.c @@ -6,14 +6,8 @@ #include "sprite.h" #include "textbox.h" #include "npc.h" - -extern void sub_0805E3A0(Entity*, u32); -extern void sub_0807DD50(Entity*); -extern u32 sub_0806F5A4(u32); -extern void sub_0806F118(Entity*); -extern void sub_0807DD94(Entity*, u32); -extern u32 sub_0801E99C(void); -extern void sub_08078784(Entity*, u32); +#include "script.h" +#include "functions.h" void Anju(Entity* this) { switch (this->action) { @@ -43,7 +37,7 @@ void Anju(Entity* this) { } void sub_0806C354(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(); + this->field_0x68.HALF.LO = sub_0801E99C(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 2874115f..25b5b50d 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -8,12 +8,6 @@ extern void (*gUnk_081140D4[])(Entity*); extern u16 gUnk_081140CC[]; -extern void sub_0806D0B0(Entity*); -extern void sub_0807DD64(Entity*); -extern void sub_0807DDE4(Entity*); -extern void SoundReq(u32); -extern void sub_0806D02C(Entity*); -extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32); void BigGoron(Entity* this) { gUnk_081140D4[this->type](this); diff --git a/src/npc/carlov.c b/src/npc/carlov.c index d3824e78..305e48e3 100644 --- a/src/npc/carlov.c +++ b/src/npc/carlov.c @@ -7,10 +7,9 @@ #include "textbox.h" #include "npc.h" #include "structures.h" +#include "functions.h" -extern void sub_0807DD50(Entity*); extern void sub_0807DD94(Entity*, u32); -extern void EnqueueSFX(u32); void Carlov(Entity* this) { if (this->action == 0) { diff --git a/src/npc/carpenter.c b/src/npc/carpenter.c index f4bdb04a..53e719f8 100644 --- a/src/npc/carpenter.c +++ b/src/npc/carpenter.c @@ -2,20 +2,10 @@ #include "entity.h" #include "sprite.h" #include "player.h" +#include "functions.h" -extern void DeleteThisEntity(); -extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*); extern SpriteLoadData gUnk_08110CA8[]; -extern void sub_0805E3A0(Entity*, u32); -extern void sub_0807DD64(Entity*); -extern u32 GetFacingDirection(Entity*, Entity*); -extern void sub_0806F118(Entity*); extern void sub_0807DDAC(Entity*, u32); -extern void sub_0807DDE4(Entity*); -extern u32 UpdateFuseInteraction(Entity*); -extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); -extern void sub_0807000C(Entity*); -extern u32 sub_0806F5A4(); void Carpenter(Entity* this) { if (*(u32*)&this->cutsceneBeh == 0) { diff --git a/src/npc/cow.c b/src/npc/cow.c index aeb62982..18e18927 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -3,20 +3,9 @@ #include "player.h" #include "functions.h" -extern void sub_0806920C(Entity*); -extern u32 sub_0805ACC0(Entity*); -extern u32 sub_0801E99C(Entity*); -extern void sub_0806924C(Entity*); -extern void sub_08078778(Entity*); -extern void sub_080787A8(Entity*, u32); -extern void sub_0806F118(Entity*); -extern void sub_080791D0(); extern void (*gUnk_08111914[])(Entity*); extern void (*gUnk_08111928[])(Entity*); extern Dialog gUnk_08111938[]; -extern void SoundReq(u32); -extern u32 UpdateFuseInteraction(Entity*); -extern PlayerState gPlayerState; void Cow(Entity* ent) { gUnk_08111914[ent->action](ent); diff --git a/src/npc/dampe.c b/src/npc/dampe.c index f424c1d8..447fd069 100644 --- a/src/npc/dampe.c +++ b/src/npc/dampe.c @@ -6,14 +6,9 @@ #include "sprite.h" #include "textbox.h" #include "npc.h" +#include "functions.h" -extern void sub_0805E3A0(Entity*, u32); -extern void sub_0807DD50(Entity*); -extern u32 sub_0806F5A4(u32); -extern void sub_0806F118(Entity*); extern void sub_0807DD94(Entity*, u32); -extern u32 sub_0801E99C(void); -extern void sub_08078784(Entity*, u32); extern u16 gUnk_08113344[]; extern u16 gUnk_0811334A[]; @@ -52,7 +47,7 @@ void Dampe(Entity* this) { } void sub_0806BE3C(Entity* this) { - this->field_0x68.HALF.LO = sub_0801E99C(); + this->field_0x68.HALF.LO = sub_0801E99C(this); sub_08078784(this, this->field_0x68.HALF.LO); } diff --git a/src/npc/emma.c b/src/npc/emma.c index c43b961c..cee0b683 100644 --- a/src/npc/emma.c +++ b/src/npc/emma.c @@ -1,18 +1,15 @@ #include "global.h" #include "entity.h" +#include "functions.h" extern u32 gUnk_0813AD10; extern u32 gUnk_0813AD24; extern u32 gUnk_0813AD38; -extern void sub_0805E3A0(Entity*, u32); -extern void sub_0807DD50(Entity*); extern void sub_0807DD94(Entity*, u32); extern void DoExitTransition(u32*); -void Emma(Entity* param_1) - -{ +void Emma(Entity* param_1) { if (param_1->action == 0) { param_1->action += 1; sub_0805E3A0(param_1, 2); @@ -20,26 +17,16 @@ void Emma(Entity* param_1) } else { sub_0807DD94(param_1, 0); } - return; } -void sub_0806C578(void) - -{ +void sub_0806C578(void) { DoExitTransition(&gUnk_0813AD10); - return; } -void sub_0806C588(void) - -{ +void sub_0806C588(void) { DoExitTransition(&gUnk_0813AD24); - return; } -void FUN_0806c598(void) - -{ +void FUN_0806c598(void) { DoExitTransition(&gUnk_0813AD38); - return; } diff --git a/src/npc/ezloCap.c b/src/npc/ezloCap.c index 13ecd8f9..715dcf2f 100644 --- a/src/npc/ezloCap.c +++ b/src/npc/ezloCap.c @@ -342,7 +342,6 @@ extern ScreenTransitionData gUnk_0813ACAC; extern ScreenTransitionData gUnk_0813ACC0; extern ScreenTransitionData gUnk_0813ACD4; extern ScreenTransitionData gUnk_0813ACE8; -extern ScreenTransitionData gUnk_0813AC5C; extern ScreenTransitionData gUnk_0813ACFC; // Array of pointers to ScreenTransitionData const ScreenTransitionData* const gUnk_081141A4[] = { &gUnk_0813AB6C, &gUnk_0813ABBC, &gUnk_0813ABE4, &gUnk_0813ABF8, diff --git a/src/npc/festari.c b/src/npc/festari.c index ad1635bd..2cbe44c6 100644 --- a/src/npc/festari.c +++ b/src/npc/festari.c @@ -5,10 +5,6 @@ #include "player.h" #include "script.h" -extern u32 sub_0801E99C(Entity*); -extern void sub_08078784(Entity*, u32); -extern void sub_0807DD50(Entity*); -extern void sub_0806F118(Entity*); extern void sub_0805FF2C(Entity*, void*); extern void (*const gUnk_08109BBC[])(Entity*); diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index ce829a81..a44f413b 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -9,19 +9,9 @@ #include "save.h" #include "script.h" -extern void sub_0807DD50(Entity*); -extern void sub_0806F118(Entity*); -extern void sub_0807DDE4(Entity*); extern void sub_080600F0(Entity*); extern s32 sub_0806EDD8(Entity*, u32, u32); -extern u32 sub_0806F5B0(u32); -extern u32 sub_0801E99C(Entity*); -extern void sub_08078784(Entity*, u32); -extern void sub_0807000C(Entity*); extern void sub_08060158(Entity*); -extern u32 CheckKinstoneFused(u32); -extern Entity* FindEntityInListBySubtype(u32, u32, u32); -extern void DeleteEntity(Entity*); extern void ModBombs(s32); extern SpriteLoadData gUnk_0810A348; diff --git a/src/npc/gentari.c b/src/npc/gentari.c index b7387777..cc086d8a 100644 --- a/src/npc/gentari.c +++ b/src/npc/gentari.c @@ -2,14 +2,8 @@ #include "entity.h" #include "npc.h" #include "player.h" - -extern void sub_0805E3A0(Entity*, u32); -extern u32 sub_0801E99C(Entity*); -extern void sub_08078784(Entity*, u32); -extern void sub_0807DD50(Entity*); -extern u32 sub_0806F5A4(u32); -extern void sub_0806F118(Entity*); -extern void sub_0807DD94(Entity*, u32); +#include "script.h" +#include "functions.h" void Gentari(Entity* this) { switch (this->action) { diff --git a/src/npc/guard.c b/src/npc/guard.c index 782253ee..052fa98f 100644 --- a/src/npc/guard.c +++ b/src/npc/guard.c @@ -4,36 +4,24 @@ #include "flags.h" #include "textbox.h" #include "room.h" +#include "structures.h" +#include "functions.h" typedef struct { u32 unk; u32 entityCount; } struct_03003DB8; -typedef struct { - u8 filler[8]; - u8 unk; -} ScreenTransition; - typedef struct { u32 unk; u32 unk2; } struct_08064050; extern void sub_08063D24(Entity*); -extern void sub_0806ED78(Entity*); -extern u32 GetFacingDirection(Entity*, Entity*); -extern u32 sub_0806F5A4(u32); extern void sub_0806EE20(Entity*); extern void sub_08064428(Entity*); -extern u32 sub_0805ACC0(Entity*); extern void sub_0807DDAC(Entity*, u32); -extern void sub_0807DDE4(Entity*); -extern void sub_0807000C(Entity*); extern void sub_0806EE04(Entity*, void*, u32); -extern Entity* sub_080A7EE0(int); -extern void sub_08078778(Entity*); -extern void sub_0807DD64(Entity*); void sub_08063DC8(Entity*); void sub_08063F20(Entity*); @@ -220,7 +208,7 @@ void sub_08064030(Entity* arg0, Entity* arg1) { } void sub_08064044(void) { - gScreenTransition.unk = 1; + gScreenTransition.transitioningOut = 1; } void sub_08064050(Entity* arg0, struct_08064050* arg1) { diff --git a/src/npc/mailbox.c b/src/npc/mailbox.c index 6ccdd0a8..bab9a8ba 100644 --- a/src/npc/mailbox.c +++ b/src/npc/mailbox.c @@ -1,8 +1,8 @@ #include "global.h" #include "entity.h" #include "textbox.h" +#include "functions.h" -extern void sub_0806ED78(Entity*); extern void sub_08063280(); extern void (*gMailboxBehaviors[4])(Entity*); diff --git a/src/npc/malon.c b/src/npc/malon.c index ca6d6eab..47052160 100644 --- a/src/npc/malon.c +++ b/src/npc/malon.c @@ -3,8 +3,6 @@ #include "entity.h" #include "script.h" -extern Entity gPlayerEntity; - extern void (*gUnk_0810FF5C[])(Entity* this); extern void (*gUnk_0810FF64[])(Entity* this); diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index df7366dd..0af6cdf9 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -11,17 +11,9 @@ #include "save.h" #include "script.h" -extern void sub_0807DD50(Entity*); -extern u32 sub_0806F5A4(u32); -extern void sub_0806F118(Entity*); -extern void sub_08078784(Entity*, u32); -extern void sub_0807DDE4(Entity*); extern void sub_08078850(); extern u32 gUnk_08113F44; extern Dialog gUnk_08113F48[]; -extern u32 GetInventoryValue(u32); -extern u32 CheckLocalFlag(u32); -extern void SetLocalFlag(); void MayorHagen(Entity* this) { u32 v; diff --git a/src/npc/melari.c b/src/npc/melari.c index 38bc4e54..9758c20d 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -6,18 +6,7 @@ #include "script.h" extern void sub_08068780(Entity*); -extern void sub_08078778(Entity*); -extern void sub_0807DD50(Entity*); -extern void sub_0806F118(Entity*); -extern void sub_0807DDE4(Entity*); -extern u32 sub_080040A8(Entity*); -extern void EnqueueSFX(u32); -extern u32 sub_0801E99C(Entity*); -extern void sub_08078784(Entity*, u32); -extern void sub_0807000C(Entity*); extern s32 sub_0806EDD8(Entity*, u32, u32); -extern void sub_080A7C18(u32, u32, u32); -extern void sub_0807CAA0(u32, u32); extern void (*const gUnk_08111530[])(Entity*); diff --git a/src/npc/milkCart.c b/src/npc/milkCart.c index b423dca7..29481848 100644 --- a/src/npc/milkCart.c +++ b/src/npc/milkCart.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" - -extern void sub_0806ED78(); +#include "functions.h" extern void (*gMilkCartBehaviors[2])(Entity*); diff --git a/src/npc/moblinLady.c b/src/npc/moblinLady.c index 640c09d9..79152daf 100644 --- a/src/npc/moblinLady.c +++ b/src/npc/moblinLady.c @@ -6,8 +6,8 @@ #include "sprite.h" #include "textbox.h" #include "npc.h" -extern void sub_0807DD50(); -extern void sub_0807DD94(); +#include "script.h" +#include "functions.h" void MoblinLady(Entity* this) { if (this->action == 0) { diff --git a/src/npc/mutoh.c b/src/npc/mutoh.c index 998a54a6..5391ac8d 100644 --- a/src/npc/mutoh.c +++ b/src/npc/mutoh.c @@ -9,15 +9,6 @@ #include "save.h" #include "script.h" -extern void sub_0807DD50(Entity*); -extern u32 GetFacingDirection(Entity*, Entity*); -extern u32 sub_0806F5A4(u32); -extern void sub_0806F118(Entity*); -extern u32 UpdateFuseInteraction(Entity*); -extern void sub_0807000C(Entity*); -extern u32 sub_0801E99C(Entity*); -extern void sub_08078784(Entity*, u32); - extern SpriteLoadData gUnk_08110C00; extern u16 gUnk_08110C0C[]; extern Dialog gUnk_08110C10[]; diff --git a/src/npc/npc9.c b/src/npc/npc9.c index 47cc501b..23a0bd3e 100644 --- a/src/npc/npc9.c +++ b/src/npc/npc9.c @@ -1,11 +1,7 @@ #include "global.h" #include "entity.h" #include "textbox.h" - -extern void sub_08078778(Entity*); -extern void sub_0805E47C(Entity*); -extern void sub_0806ED78(Entity*); -extern void sub_0805E584(Entity*); +#include "functions.h" extern void (*const gUnk_0810C290[])(Entity*); diff --git a/src/npc/percy.c b/src/npc/percy.c index a2a8fcd8..3c5c8a01 100644 --- a/src/npc/percy.c +++ b/src/npc/percy.c @@ -10,7 +10,6 @@ extern void sub_0806B41C(Entity*); extern void sub_0806B3CC(Entity*); extern u32 sub_08002632(Entity*); -extern void sub_0801DFB4(Entity*, u32, u32, u32); extern u16* gUnk_08001A7C[40]; extern u16 gUnk_08112E54[4]; diff --git a/src/npc/postman.c b/src/npc/postman.c index 532f129f..6331461f 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -10,23 +10,11 @@ #include "script.h" extern void sub_08060528(Entity*); -extern void* GetCurrentRoomProperty(u32); extern void sub_0806EE04(Entity*, void*, u32); extern void sub_080604DC(Entity*); -extern s32 sub_0806ED9C(Entity*, u32, u32); extern void sub_0806EE20(Entity*); -extern u32 sub_080040A8(Entity*); -extern u32 sub_0801E99C(Entity*); -extern void sub_0807DD50(Entity*); -extern void sub_0806F118(Entity*); -extern u32 sub_0806F5A4(u32); -extern u32 GetFacingDirection(Entity*, Entity*); extern void sub_080606D8(Entity*); -extern void sub_080788E0(Entity*); -extern void EnqueueSFX(u32); extern void sub_080606C0(Entity*); -extern void sub_0800451C(Entity*); -extern void sub_08078784(Entity*, u32); typedef struct { s16 x; diff --git a/src/npc/rem.c b/src/npc/rem.c index a0b87267..a2ba4598 100644 --- a/src/npc/rem.c +++ b/src/npc/rem.c @@ -3,8 +3,6 @@ #include "entity.h" #include "script.h" -extern void sub_0807DDE4(Entity*); -extern void SoundReq(u32); extern void sub_0806A8C8(Entity*); extern void (*gUnk_08112260[])(Entity*); diff --git a/src/npc/simon.c b/src/npc/simon.c index 35397e80..bfcb19af 100644 --- a/src/npc/simon.c +++ b/src/npc/simon.c @@ -11,9 +11,6 @@ typedef struct { } struct_0806C2A0; extern void DoExitTransition(void*); -extern void SetTileType(u32, u32, u32); -extern void DoExitTransition(void*); -extern void DoFade(u32, u32); extern void gUnk_0813AD60; extern void gUnk_0813AD74; diff --git a/src/npc/smith.c b/src/npc/smith.c index 3502d8bf..ac3a9d4c 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -5,19 +5,7 @@ #include "save.h" #include "script.h" -extern u32 GetFacingDirection(Entity*, Entity*); -extern u32 sub_0806F5A4(u32); -extern void sub_0806F118(Entity*); -extern Entity* CreateFx(Entity*, u32, u32); -extern void SoundReq(u32); -extern void sub_0807000C(Entity*); -extern u32 sub_0801E99C(Entity*); -extern void sub_0807DD50(Entity*); -extern void sub_0807DDE4(Entity*); -extern u32 UpdateFuseInteraction(Entity*); -extern u32 GetAnimationState(Entity*); extern void sub_08078850(u32, u32, u32, u32*); -extern void sub_08078784(Entity*, u32); extern void (*const gUnk_08110360[])(Entity*); extern void (*const gUnk_0811036C[])(Entity*); diff --git a/src/npc/stamp.c b/src/npc/stamp.c index a30d31ad..92deb07b 100644 --- a/src/npc/stamp.c +++ b/src/npc/stamp.c @@ -4,13 +4,7 @@ #include "functions.h" #include "script.h" -extern void sub_08078778(Entity*); -extern void sub_0805E47C(Entity*); -extern void sub_0805E584(); -extern void sub_0807DD64(); extern void sub_08062CA4(); -extern void sub_0807DDE4(); -extern u32 CheckKinstoneFused(); extern void (*gStampBehaviors1[4])(Entity*); extern void (*gStampBehaviors2[2])(Entity*); diff --git a/src/npc/syrup.c b/src/npc/syrup.c index 307c75bd..54e28b30 100644 --- a/src/npc/syrup.c +++ b/src/npc/syrup.c @@ -1,19 +1,15 @@ #include "global.h" #include "entity.h" #include "npc.h" - -extern void sub_0807DD50(Entity*); -extern void sub_0806ED78(Entity*); -extern void sub_0805E3A0(Entity*, u32); +#include "script.h" +#include "functions.h" extern void (*gUnk_081121D4[])(Entity*); extern SpriteLoadData gUnk_081121C4; extern SpriteLoadData gUnk_081121B4; -extern u32 gScreenTransition; -extern void sub_0807DD94(Entity*, u32); + extern void sub_0806A26C(Entity*); -extern void sub_080042BA(Entity*, u32); void Syrup(Entity* this) { gUnk_081121D4[this->action](this); @@ -38,7 +34,7 @@ void sub_0806A1F8(Entity* this) { void sub_0806A234(Entity* this) { sub_0807DD94(this, 0); if ((this->field_0x82.HWORD & 4) != 0) { - if ((gScreenTransition & 7) == 0) { + if ((gScreenTransition.frameCount & 7) == 0) { sub_0806A26C(this); } sub_080042BA(this, 2); diff --git a/src/npc/teachers.c b/src/npc/teachers.c index eaae979d..87fb3180 100644 --- a/src/npc/teachers.c +++ b/src/npc/teachers.c @@ -6,13 +6,6 @@ #include "script.h" extern SpriteLoadData gUnk_08113910[]; -extern void sub_0807DD50(Entity*); -extern u32 GetFacingDirection(Entity*, Entity*); -extern u32 sub_0806F5A4(u32); -extern void sub_0806F118(Entity*); -extern void sub_08078784(Entity*, u32); -extern u32 UpdateFuseInteraction(Entity*); -extern void sub_0807000C(Entity*); extern Dialog gUnk_08113930[]; diff --git a/src/npc/townMinish.c b/src/npc/townMinish.c index 3f97b540..bcc3c6fc 100644 --- a/src/npc/townMinish.c +++ b/src/npc/townMinish.c @@ -7,17 +7,12 @@ #include "save.h" #include "script.h" -extern void InitializeAnimation(Entity*, u32); -extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*); - extern u32 sub_080002C0(); extern void sub_0806ACC4(Entity*); extern void sub_0806AEA8(); extern void sub_0806AEE4(Entity*); extern void sub_0806AFE8(Entity*, s32*); extern s32 sub_0806EDD8(Entity*, u32, u32); -extern u32 sub_0806F5B0(u32); -extern void sub_08078784(Entity*, u32); extern void sub_08078850(Entity*, u32, u32, u32*); extern u8 gUnk_081125F4[12]; diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index dbc50909..7f87dd41 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -24,19 +24,8 @@ typedef struct { extern void (*const gUnk_0810B774[])(Entity*); extern void (*const gUnk_0810B77C[])(Entity*); extern void sub_08061CB4(Entity*, u32); -extern u32 sub_0805ACC0(Entity*); -extern u32 sub_0801E99C(Entity*); -extern void sub_0807DD64(Entity*); extern void sub_08061D64(Entity*); -extern void sub_0806F118(Entity*); -extern u32 sub_0806F5A4(u32); -extern u32 GetFacingDirection(Entity*, Entity*); -extern void sub_0807DDE4(Entity*); extern void sub_08062048(Entity*); -extern void sub_08078784(Entity*, u32); -extern void sub_08078778(Entity*); -extern u32 sub_0806F5B0(u32); -extern void ResolveEntityOnTop(Entity*, Entity*); extern void sub_08078850(Entity*, u32, u8, u32*); extern SpriteLoadData* gUnk_0810B6EC[]; diff --git a/src/npc/wheaton.c b/src/npc/wheaton.c index 2edbc69c..1d2170a8 100644 --- a/src/npc/wheaton.c +++ b/src/npc/wheaton.c @@ -1,11 +1,9 @@ #include "global.h" #include "entity.h" +#include "script.h" +#include "functions.h" -extern void sub_0805E3A0(Entity*, u32); -extern void ResolveEntityOnTop(Entity*, Entity*); extern Hitbox gUnk_0810C3C0; -extern void sub_0807DD64(Entity*); -extern void sub_0807DD94(Entity*, u32); void Wheaton(Entity* this) { if (this->action == 0) { diff --git a/src/npc/windTribespeople.c b/src/npc/windTribespeople.c index 9429ccd6..312e09de 100644 --- a/src/npc/windTribespeople.c +++ b/src/npc/windTribespeople.c @@ -8,17 +8,8 @@ #include "save.h" #include "script.h" -extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*); -extern void sub_0807DD50(Entity*); extern void sub_0806C7D4(Entity*); -extern void sub_0806F118(Entity*); extern void sub_0807DD80(Entity*, u32*); -extern u32 sub_0801E99C(); -extern void sub_08078784(Entity*, u32); -extern void SetExtraSpriteFrame(Entity*, u32, u32); -extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); -extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); -extern void sub_0807000C(Entity*); extern void (*const gUnk_08113A7C[])(Entity*); extern void (*const gUnk_08113A8C[])(Entity*, Entity*); diff --git a/src/npc/zelda.c b/src/npc/zelda.c index 90a40fc0..62672012 100644 --- a/src/npc/zelda.c +++ b/src/npc/zelda.c @@ -6,20 +6,11 @@ #include "script.h" extern void PrependEntityToList(Entity*, u32); -extern void sub_0807DD50(Entity*); extern Entity* FindEntityBySubtype(u32, u32); -void CopyPosition(Entity*, Entity*); void sub_08068680(Entity*, Entity*); void sub_08068694(Entity*, Entity*); -u32 GetAnimationState(Entity* ent); -void DeleteThisEntity(void); extern Entity* GetEntityByType(u32, u32); extern void sub_080686C4(Entity*, Entity*); -extern void SoundReq(u32); -extern void SetTileType(u32, u32, u32); - -extern Entity gPlayerEntity; -extern RoomControls gRoomControls; extern void (*gUnk_08110BD8[])(Entity* ent); extern u16 gUnk_08110BE0[]; diff --git a/src/object/archway.c b/src/object/archway.c index 39975ee7..a33b7dd3 100644 --- a/src/object/archway.c +++ b/src/object/archway.c @@ -1,8 +1,7 @@ #include "global.h" #include "entity.h" #include "sprite.h" - -extern u32 CheckIsDungeon(); +#include "functions.h" void Archway(Entity* this) { u32 v1; diff --git a/src/object/bell.c b/src/object/bell.c index 072b0798..3a1e7d41 100644 --- a/src/object/bell.c +++ b/src/object/bell.c @@ -1,5 +1,5 @@ -#include "entity.h" #include "global.h" +#include "entity.h" extern void (*gUnk_08123384[])(Entity*); diff --git a/src/object/button.c b/src/object/button.c index 23a2ee8d..968838e8 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -105,7 +105,6 @@ void sub_08081C98(Entity* this) { } Entity* sub_08081D74(Entity*); -void sub_0807B7D8(u32, u32, u32); u32 sub_080001DA(u32, u32); u32 sub_08081CB0(Entity* this) { @@ -142,8 +141,7 @@ u32 sub_08081D28(Entity* this) { } extern u32 sub_080002E0(u32, u32); -extern Entity* gUnk_03004040[]; -extern u32 sub_080041A0(Entity*, Entity*, u32, u32); +extern Entity* gUnk_03004040[3]; u32 sub_08081E0C(Entity*); Entity* sub_08081D74(Entity* this) { @@ -171,8 +169,6 @@ Entity* sub_08081D74(Entity* this) { return ent; } -extern u32 sub_08079F8C(); - u32 sub_08081E0C(Entity* this) { Entity* tmp = &gPlayerEntity; if (tmp->height.HALF.HI != 0 || !sub_08079F8C()) { @@ -273,7 +269,6 @@ u32 sub_08081F7C(Entity* this, u32 r7) { return 1; } -extern Entity* gUnk_03004040[3]; extern void sub_080044AE(Entity*, u32, u32); void sub_08081FF8(Entity* this) { diff --git a/src/object/cloud.c b/src/object/cloud.c index a2637b6b..de6aa165 100644 --- a/src/object/cloud.c +++ b/src/object/cloud.c @@ -7,25 +7,12 @@ #include "structures.h" extern void sub_0809F7BC(Entity*); -extern void SoundReq(u32); -extern void sub_0809F814(u32); extern void sub_0809F7F4(Entity*); -extern void LoadRoomEntityList(); -extern void DeleteThisEntity(); -extern u32 CheckRoomFlag(u32); -extern void sub_08078A90(u32); -extern void sub_08078B48(void); -extern void sub_0806F69C(Entity*); extern void (*gUnk_08124798[])(Entity*); extern void (*gUnk_081247A0[])(Entity*); extern void (*gUnk_081247AC[])(Entity*); -extern Entity* CreateObject(u32, u32, u32); -extern void PositionEntityOnTop(Entity*, Entity*); -extern void sub_0807BB68(u32*, u32, u32); extern void* gUnk_080DD750; -extern Entity gPlayerEntity; -extern PlayerState gPlayerState; extern u8 gUnk_081247C0[]; extern u16 gUnk_081247C8[]; extern u32 gUnk_081247D0; diff --git a/src/object/fileScreenObjects.c b/src/object/fileScreenObjects.c index 51403761..a35ea276 100644 --- a/src/object/fileScreenObjects.c +++ b/src/object/fileScreenObjects.c @@ -10,9 +10,7 @@ #include "fileScreen.h" extern int sub_0807A094(int); -extern void LoadPalettes(const u8*, int, int); extern u32 sub_080041EC(int, int); -extern u32 sub_080045DA(int, int); static bool32 sub_0808E950(void); static void sub_0808EABC(Entity*); @@ -39,7 +37,6 @@ typedef struct { extern void (*const gUnk_08121C64[])(Entity*); extern void (*const gUnk_08121CCC[])(Entity*); extern const int gUnk_08133368[]; -extern const u8 gGlobalGfxAndPalettes[]; extern const struct_08121CD4 gUnk_08121CD4[][4]; extern const u8 gUnk_08121D10[]; extern const u8 gUnk_08121D38[][8]; diff --git a/src/object/giantLeaf.c b/src/object/giantLeaf.c index cf2fb1df..9badc65b 100644 --- a/src/object/giantLeaf.c +++ b/src/object/giantLeaf.c @@ -1,11 +1,10 @@ #include "global.h" #include "entity.h" #include "room.h" +#include "functions.h" -void SetTile(u32 tileIndex, s32 tilePosition, s32 layerIndex); void sub_0808D618(Entity* ent); -extern RoomControls gRoomControls; extern s16 gUnk_08121750[]; extern s16 gUnk_0812176A[]; diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index e71ddfc6..85d7474b 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -4,8 +4,9 @@ #include "screen.h" #include "structures.h" #include "greatFairy.h" -#include "functions.h" +#include "flags.h" #include "save.h" +#include "functions.h" enum { BEHAVIORS, diff --git a/src/object/heartContainer.c b/src/object/heartContainer.c index f6858b50..501bb7d7 100644 --- a/src/object/heartContainer.c +++ b/src/object/heartContainer.c @@ -3,9 +3,6 @@ #include "flags.h" #include "functions.h" -extern void DeleteThisEntity(); -extern void sub_08080CB4(Entity*); -extern u32 sub_08017850(Entity*); static void sub_0808E6A0(Entity*); static void sub_0808E6E4(Entity*); static void sub_0808E714(Entity*); diff --git a/src/object/jailBars.c b/src/object/jailBars.c index d046c822..505ca8e2 100644 --- a/src/object/jailBars.c +++ b/src/object/jailBars.c @@ -2,9 +2,9 @@ #include "entity.h" #include "flags.h" #include "room.h" +#include "functions.h" extern void sub_080A0960(Entity*, u32); -extern void SoundReq(u32); extern void sub_0801AF18(u8*, u32, u32); extern void (*const gUnk_08124950[])(Entity*); diff --git a/src/object/lightableSwitch.c b/src/object/lightableSwitch.c index cfbf0ba5..cbeafdd7 100644 --- a/src/object/lightableSwitch.c +++ b/src/object/lightableSwitch.c @@ -7,10 +7,7 @@ extern void sub_0809EB30(Entity*); extern void sub_0809EAD8(Entity*); extern void sub_0809EABC(Entity*); -extern void EnqueueSFX(u32); extern void sub_080A2CC0(Entity*, Entity**, u16*); -extern void SetTile(u32, u32, u32); -extern void sub_0806F69C(Entity*); extern void (*const gUnk_081243B4[])(Entity*); extern void (*const gUnk_081243BC[])(Entity*); diff --git a/src/object/mask.c b/src/object/mask.c index e405df5f..ffe931b1 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -2,26 +2,18 @@ #include "entity.h" #include "room.h" #include "random.h" +#include "structures.h" +#include "player.h" +#include "flags.h" +#include "functions.h" -extern Entity gPlayerEntity; -extern u16 gScreenTransition[]; extern void (*MaskActionFuncs[])(Entity*); -extern void DeleteThisEntity(); - -extern bool32 CheckFlags(u16); -extern void SetFlag(u16); -extern void ClearFlag(u16); - -extern void SetTile(u32, u16, u32); - extern void sub_08000148(u16, u16, u32); extern s16 sub_080001DA(u16, u32); extern u16 sub_080002E0(u16, u32); -extern void EnqueueSFX(u32); -extern void sub_080044EC(Entity*, u16); extern void sub_0805457C(Entity*, s32); void Mask(Entity* this) { @@ -35,7 +27,7 @@ void sub_080929A4(Entity* this) { switch (this->type2 & 0xC0) { case 0x40: - field_0x0a = gScreenTransition[0x5]; + field_0x0a = gScreenTransition.field_0xa; switch (field_0x0a) { case 0x44D ... 0x44F: @@ -69,7 +61,7 @@ void sub_080929A4(Entity* this) { this->field_0x7a.HWORD = sub_080002E0(this->field_0x7c.HALF.HI, 1); - SetTile(0x4022, this->field_0x7c.HALF.HI, 1); + SetTile(0x4022, this->field_0x7c.HALF_U.HI, 1); } // Probably related to knocking it down @@ -94,7 +86,7 @@ void sub_08092A94(Entity* this) { } // Presumably, make the mask fall - SetTile((u16)this->field_0x7c.HALF.LO, this->field_0x7c.HALF.HI, 1); + SetTile(this->field_0x7c.HALF_U.LO, this->field_0x7c.HALF_U.HI, 1); sub_08000148(this->field_0x7a.HWORD, this->field_0x7c.HALF.HI, 1); diff --git a/src/object/metalDoor.c b/src/object/metalDoor.c index 55c8b261..0fc2c3ac 100644 --- a/src/object/metalDoor.c +++ b/src/object/metalDoor.c @@ -2,15 +2,12 @@ #include "entity.h" #include "room.h" #include "flags.h" +#include "functions.h" extern u32 sub_08083734(Entity*, u32); extern void sub_080A080C(Entity*); -extern void sub_0806F69C(Entity*); -extern void EnqueueSFX(u32); extern void sub_080A0870(Entity*); -extern void SoundReq(u32); extern u32 sub_080001DA(u32, u32); -extern void SetTile(u32, u32, u32); extern void (*const gUnk_0812493C[])(Entity*); diff --git a/src/object/minecart.c b/src/object/minecart.c index 53d1ff82..311ea368 100644 --- a/src/object/minecart.c +++ b/src/object/minecart.c @@ -7,7 +7,6 @@ extern u32 sub_08091DDC(Entity*); extern u32 sub_080002B4(Entity*, u32, u32); extern u32 sub_08007DD6(u32, u32); extern void sub_08017744(Entity*); -extern u32 sub_080002B8(Entity*); extern void sub_08091C0C(Entity*); typedef struct { diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index 78410c6c..804772b7 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -1,9 +1,6 @@ #include "global.h" #include "entity.h" - -extern bool32 CheckIsDungeon(); -extern void sub_080AE068(Entity*); -extern void LoadFixedGFX(Entity*, u32); +#include "functions.h" extern void (*const gUnk_08122254[])(Entity*); diff --git a/src/object/object1C.c b/src/object/object1C.c index c12a6c1d..0c80735a 100644 --- a/src/object/object1C.c +++ b/src/object/object1C.c @@ -2,7 +2,6 @@ #include "entity.h" extern u32 CheckRectOnScreen(s16, s16, u32, u32); -extern void DeleteThisEntity(); void Object1C(Entity* this) { s32 iVar1; diff --git a/src/object/object1D.c b/src/object/object1D.c index 8442b227..f7343fbe 100644 --- a/src/object/object1D.c +++ b/src/object/object1D.c @@ -1,8 +1,6 @@ #include "global.h" #include "entity.h" -void DeleteThisEntity(); - extern void (*gUnk_081208A0[])(Entity*); void Object1D(Entity* this) { diff --git a/src/object/object49.c b/src/object/object49.c index 16bf7bb9..e8475de8 100644 --- a/src/object/object49.c +++ b/src/object/object49.c @@ -11,7 +11,6 @@ static void sub_0808F244(Entity*); extern void sub_0806FCF4(Entity*, u32, u32, u32); extern void sub_0808F5EC(Entity*); -extern bool32 sub_0806F3E4(Entity*); extern void (*const gUnk_08121E5C[])(Entity*); extern void (*const gUnk_08121E88[])(Entity*); diff --git a/src/object/object7E.c b/src/object/object7E.c index 6c89947e..4a128e63 100644 --- a/src/object/object7E.c +++ b/src/object/object7E.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "functions.h" +#include "position.h" void Object7E(Entity* this) { diff --git a/src/object/object86.c b/src/object/object86.c index 9706e040..19159de4 100644 --- a/src/object/object86.c +++ b/src/object/object86.c @@ -1,9 +1,10 @@ #include "global.h" #include "entity.h" +#include "position.h" #include "player.h" #include "flags.h" +#include "functions.h" -extern u32 sub_080041A0(Entity*, Entity*, u32, u32); void sub_08099ECC(Entity*); extern void sub_0805E4E0(Entity*, u32); extern void sub_0805B390(u32); diff --git a/src/object/object9E.c b/src/object/object9E.c index 858ee01b..321945b2 100644 --- a/src/object/object9E.c +++ b/src/object/object9E.c @@ -1,11 +1,11 @@ #include "global.h" #include "entity.h" +#include "position.h" #include "room.h" +#include "functions.h" extern Hitbox gUnk_080FD168; -extern void SetTile(u32, u32, u32); - void Object9E(Entity* this) { Entity* ent; u32 tilePos; diff --git a/src/object/objectA8.c b/src/object/objectA8.c index 4cca37f2..c1a5193a 100644 --- a/src/object/objectA8.c +++ b/src/object/objectA8.c @@ -1,14 +1,10 @@ #include "global.h" #include "entity.h" - -extern Entity* CreateItemEntity(u32, u32, u32); -extern void DeleteThisEntity(); -extern void sub_08080CB4(Entity*); +#include "player.h" +#include "functions.h" extern void (*gUnk_08124824[])(Entity*); -extern Entity gPlayerEntity; - void ObjectA8(Entity* this) { if ((this->bitfield & 0x80) != 0) { switch (this->bitfield & 0x7f) { diff --git a/src/object/objectAF.c b/src/object/objectAF.c index c1d32b60..ad13952e 100644 --- a/src/object/objectAF.c +++ b/src/object/objectAF.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "position.h" extern void sub_080A0640(Entity*); diff --git a/src/object/objectB2.c b/src/object/objectB2.c index 4722d2e9..71c7e4b5 100644 --- a/src/object/objectB2.c +++ b/src/object/objectB2.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" +#include "functions.h" -extern void sub_0806F69C(Entity*); extern u32 sub_080AE4CC(Entity*, u32, u32, u32); extern void* gUnk_02027EB4; diff --git a/src/object/pinwheel.c b/src/object/pinwheel.c index d6a24471..7fcbb9a0 100644 --- a/src/object/pinwheel.c +++ b/src/object/pinwheel.c @@ -1,10 +1,9 @@ #include "global.h" #include "entity.h" +#include "flags.h" #include "functions.h" extern u32 ReadBit(u32*, u32); -extern void DeleteThisEntity(); -extern u32 CheckLocalFlag(u32); extern u32 gUnk_020342F8; extern u16 gUnk_08125050[]; diff --git a/src/object/pot.c b/src/object/pot.c index cd73f9a8..ceea4011 100644 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -16,10 +16,8 @@ extern void (*const gUnk_0811F0C4[])(Entity*); extern Hitbox gUnk_080FD338; // TODO: should be const extern Hitbox gUnk_080FD340; // TODO: should be const -extern u32 sub_08016A30(Entity*); extern u32 sub_080001DA(u32, u32); extern void sub_08078930(Entity*); -extern u32 sub_080002B8(Entity*); extern void sub_08016A6C(Entity*); void Pot(Entity* this) { diff --git a/src/object/railtrack.c b/src/object/railtrack.c index 2e3a3d66..52a74bc3 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -2,13 +2,12 @@ #include "entity.h" #include "room.h" #include "flags.h" +#include "functions.h" extern u32* GetLayerByIndex(u32); extern void sub_08085394(Entity*); extern void sub_0808543C(Entity*); -extern void EnqueueSFX(u32); extern u32 sub_080854A8(Entity*); -extern void SetTile(u32, u32, u32); extern void (*const gUnk_081205D0[])(Entity*); diff --git a/src/object/smoke.c b/src/object/smoke.c index 5ec708b9..679894a8 100644 --- a/src/object/smoke.c +++ b/src/object/smoke.c @@ -2,8 +2,6 @@ #include "entity.h" #include "functions.h" -extern void sub_0806F69C(Entity*); - extern void (*const gUnk_08121060[])(Entity*); extern void (*const gUnk_08121070[])(Entity*); diff --git a/src/object/thoughtBubble.c b/src/object/thoughtBubble.c index 596cb382..5e77d9e1 100644 --- a/src/object/thoughtBubble.c +++ b/src/object/thoughtBubble.c @@ -1,10 +1,6 @@ #include "global.h" #include "entity.h" - -extern void InitializeAnimation(Entity*, u32); -extern void SoundReq(u32); -extern void DeleteThisEntity(); -extern void GetNextFrame(Entity*); +#include "functions.h" extern void (*const ThoughtBubble_Behaviors[])(Entity*); diff --git a/src/object/treeHidingPortal.c b/src/object/treeHidingPortal.c index 912003b9..20833f0f 100644 --- a/src/object/treeHidingPortal.c +++ b/src/object/treeHidingPortal.c @@ -3,19 +3,17 @@ #include "flags.h" #include "player.h" #include "room.h" +#include "structures.h" +#include "functions.h" extern void sub_0809E96C(Entity*); -extern u32 sub_0800419C(Entity*, Entity*, u32, u32); extern void CreateSparkle(Entity*); extern u32 sub_0809E9A0(void); -extern void sub_08078A90(u32); extern void sub_0809E918(Entity*); -extern void SoundReq(u32); extern void CreateMinishEntrance(u32 tile); extern void (*const gUnk_08124354[])(Entity*); -extern u32 gScreenTransition; extern s16 gUnk_08124364[]; void TreeHidingPortal(Entity* this) { @@ -36,7 +34,7 @@ void sub_0809E86C(Entity* this) { if (sub_0800419C(this, &gPlayerEntity, 0x30, 0x30)) { if (CheckGlobalFlag(EZERO_1ST)) { - if (((gScreenTransition & 3) == 0)) { + if (((gScreenTransition.frameCount & 3) == 0)) { CreateSparkle(this); } } diff --git a/src/object/well.c b/src/object/well.c index fda35fed..86710ac6 100644 --- a/src/object/well.c +++ b/src/object/well.c @@ -2,11 +2,7 @@ #include "entity.h" #include "room.h" #include "player.h" - -void SetTile(u32 tileIndex, s32 tilePosition, s32 layerIndex); -s32 GetTileType(s32 tilePosition, s32 layerIndex); -void sub_08078B48(); -void DeleteThisEntity(); +#include "functions.h" extern void (*gUnk_08124C08[])(Entity*); diff --git a/src/object/windcrest.c b/src/object/windcrest.c index efc11dc4..0ce28743 100644 --- a/src/object/windcrest.c +++ b/src/object/windcrest.c @@ -4,11 +4,7 @@ #include "save.h" #include "script.h" -extern void sub_0807DD64(Entity*); -extern void sub_0807DDE4(Entity*); extern void sub_08078850(Entity*, u32, u32, u8*); -extern void SoundReq(u32); -extern Entity* CreateFx(Entity*, u32, u32); extern u8 gUnk_08125010; diff --git a/src/playerItem.c b/src/playerItem.c index 364502d0..7eca5211 100644 --- a/src/playerItem.c +++ b/src/playerItem.c @@ -1,4 +1,6 @@ -extern void DeleteEntity(); +#include "global.h" +#include "functions.h" + extern void sub_080A7544(); extern void sub_0801B188(); extern void sub_0801B45C(); diff --git a/src/room.c b/src/room.c index f400ce7f..0af93d77 100644 --- a/src/room.c +++ b/src/room.c @@ -440,8 +440,6 @@ u32 sub_0804B8B0(void) { return 1; } -extern void* gUnk_08010A5C[]; - void sub_0804B8F0(void) { if (CheckLocalFlag(0x91)) { ClearLocalFlag(0x91); @@ -4307,8 +4305,6 @@ void LoadHyruleTown(void) { } } -extern EntityData gUnk_080EEBAC; - void sub_0804E130(void) { if ((gSave.windcrests & 0x8000000) == 0) { LoadRoomEntityList(&gUnk_080EEBAC); @@ -4773,7 +4769,6 @@ u32 sub_0804E7D8() { } extern EntityData gUnk_080F31D8; -extern u8 gUnk_02000070; extern u32 gUnk_08009B30; void sub_0804E7DC(void) { @@ -5072,8 +5067,6 @@ void sub_0804EC00(void) { } } -extern EntityData gUnk_080F4E10; - void sub_0804EC98(void) { if ((s32)gSave.windcrests > -1) { LoadRoomEntityList(&gUnk_080F4E10); @@ -5207,8 +5200,6 @@ extern EntityData gUnk_080F5828; extern EntityData gUnk_080F5848; extern EntityData gUnk_080F5788; -extern u8 gBombBagSizes[]; - void sub_0804EEBC(void) { LoadRoomEntityList(&gUnk_080F5758); if (!GetInventoryValue(0x36) && CheckLocalFlagByOffset(0x200, 0x8f)) { @@ -5516,8 +5507,6 @@ void sub_0804F25C(void) { } } -extern EntityData gUnk_080F70D8; - void sub_0804F2C8(void) { if ((gSave.windcrests & 0x40000000) == 0) { LoadRoomEntityList(&gUnk_080F70D8); @@ -6031,8 +6020,6 @@ void sub_0804FBBC(void) { } } -extern EntityData gUnk_080F9304; - void sub_0804FBDC(void) { if ((gSave.windcrests & 0x2000000) == 0) { LoadRoomEntityList(&gUnk_080F9304); @@ -6449,8 +6436,6 @@ void sub_0804FE58(void) { } } -extern EntityData gUnk_080FB004; - void sub_0804FEAC(void) { if ((gSave.windcrests & 0x1000000) == 0) { LoadRoomEntityList(&gUnk_080FB004); diff --git a/src/screenDebug.c b/src/screenDebug.c index 2271e2b7..b0ce1fa6 100644 --- a/src/screenDebug.c +++ b/src/screenDebug.c @@ -1,4 +1,5 @@ #include "global.h" +#include "dma.h" #include "functions.h" #include "main.h" #include "menu.h" @@ -23,8 +24,8 @@ void HandleDebugTextScreen() { void sub_0805FA04(void) { sub_0801DA90(1); - MemClear32((void*)&gBG0Buffer, sizeof(BGBuffer)); - MemClear32((void*)&gBG3Buffer, 0x1000); + MemClear(&gBG0Buffer, sizeof(BGBuffer)); + MemClear(&gBG3Buffer, 0x1000); gScreen.lcd.displayControl = 0x940; gScreen.bg.bg0xOffset = 0; gScreen.bg.bg0yOffset = 0; @@ -33,8 +34,8 @@ void sub_0805FA04(void) { gScreen.affine.bg3Control = 0x1e0f; gScreen.affine.bg3Updated = 1; MessageInitialize(); - MemClear32((void*)&gUnk_02032EC0, sizeof(UI)); - MemClear32((void*)&gMenu, sizeof(Menu)); + MemClear((void*)&gUnk_02032EC0, sizeof(UI)); + MemClear((void*)&gMenu, sizeof(Menu)); gMenu.unk16 = gUnk_02000000->gameLanguage; sub_08053320(); sub_0801D79C(0, 0x1144); diff --git a/src/script.c b/src/script.c index 494e0ae5..a686b371 100644 --- a/src/script.c +++ b/src/script.c @@ -5,6 +5,7 @@ #include "script.h" #include "structures.h" #include "textbox.h" +#include "dma.h" #include "functions.h" #include "save.h" @@ -187,9 +188,9 @@ extern ScriptExecutionContext gPlayerScriptExecutionContext; extern ScriptExecutionContext gScriptExecutionContextArray[0x20]; void sub_0807DA70(void) { - MemClear32(&gUnk_02033280, sizeof(gUnk_02033280)); - MemClear32(&gScriptExecutionContextArray, sizeof(gScriptExecutionContextArray)); - MemClear32(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext)); + MemClear(&gUnk_02033280, sizeof(gUnk_02033280)); + MemClear(&gScriptExecutionContextArray, sizeof(gScriptExecutionContextArray)); + MemClear(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext)); gUnk_02033280.unk_08 = 8; } @@ -207,7 +208,7 @@ ScriptExecutionContext* CreateScriptExecutionContext(void) { } void DestroyScriptExecutionContext(ScriptExecutionContext* context) { - MemClear32(context, sizeof(ScriptExecutionContext)); + MemClear(context, sizeof(ScriptExecutionContext)); } ScriptExecutionContext* StartCutscene(Entity* entity, u16* unk_2) { @@ -237,7 +238,7 @@ void UnloadCutsceneData(Entity* entity) { void StartPlayerScript(u16* unk1) { Entity* player; - MemClear32(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext)); + MemClear(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext)); gPlayerScriptExecutionContext.unk_00 = unk1; player = &gPlayerEntity; *(ScriptExecutionContext**)&player->cutsceneBeh = &gPlayerScriptExecutionContext; @@ -260,7 +261,7 @@ ScriptExecutionContext* sub_0807DB68(Entity* entity, u16* unk1) { } void sub_0807DB88(ScriptExecutionContext* context, u16* unk1) { - MemClear32(context, sizeof(ScriptExecutionContext)); + MemClear(context, sizeof(ScriptExecutionContext)); context->unk_00 = unk1; } diff --git a/src/sub_0801D754.c b/src/sub_0801D754.c index 8b1b2b20..a6f103f5 100644 --- a/src/sub_0801D754.c +++ b/src/sub_0801D754.c @@ -1,4 +1,5 @@ #include "global.h" +#include "functions.h" extern const u8 gUnk_020176E0[]; diff --git a/src/sub_0804AFF4.c b/src/sub_0804AFF4.c index a7108fd6..bdd0cf50 100644 --- a/src/sub_0804AFF4.c +++ b/src/sub_0804AFF4.c @@ -2,42 +2,19 @@ extern void sub_080186EC(); extern u32* GetCurrentRoomProperty(u8); -extern u32 _call_via_r0(u32*); extern void sub_0804B16C(); void sub_0804AFF4(void) { - u32* func; + void(*func)(); sub_080186EC(); - func = GetCurrentRoomProperty(5); - if (func != NULL) { - _call_via_r0(func); + func = (void(*)())GetCurrentRoomProperty(5); + if (func) { + func(); } - func = GetCurrentRoomProperty(7); - if (func != NULL) { - _call_via_r0(func); + func = (void(*)())GetCurrentRoomProperty(7); + if (func) { + func(); } sub_0804B16C(); - return; } - -/* - thumb_func_start sub_0804AFF4 -sub_0804AFF4: @ 0x0804AFF4 - push {lr} - bl sub_080186EC - movs r0, #5 - bl GetCurrentRoomProperty - cmp r0, #0 - beq _0804B008 - bl _call_via_r0 -_0804B008: - movs r0, #7 - bl GetCurrentRoomProperty - cmp r0, #0 - beq _0804B016 - bl _call_via_r0 -_0804B016: - bl sub_0804B16C - pop {pc} - */ diff --git a/src/sub_08050008.c b/src/sub_08050008.c index 4fe0e197..59ace866 100644 --- a/src/sub_08050008.c +++ b/src/sub_08050008.c @@ -1,16 +1,10 @@ #include "global.h" +#include "dma.h" +#include "structures.h" extern u32 gUnk_020354C0; -extern s32 gFadeControl; -extern void MemClear32(u32, u32, u32); -void sub_08050008(u32 param_1, u32 param_2, u32 param_3) { - s32* unk; - - MemClear32((u32)&gUnk_020354C0, 128, param_3); - - unk = &gFadeControl; - *(unk + 1) = -1; - - return; +void sub_08050008() { + MemClear(&gUnk_020354C0, 128); + gFadeControl.field_0x4 = -1; } diff --git a/src/sub_08050024.c b/src/sub_08050024.c index b6915ab9..fe77e3d0 100644 --- a/src/sub_08050024.c +++ b/src/sub_08050024.c @@ -12,13 +12,9 @@ extern struct_03000000 gUnk_03000000; extern u32 gUsedPalettes; -extern void sub_0801E104(); -extern void DoFade(u32, u32); - void sub_08050024() { sub_0801E104(); DoFade(5, 0x80 << 1); - return; } void sub_08050038(u32 arg0) { diff --git a/src/sub_08055E08.c b/src/sub_08055E08.c index 40c1f812..1b97f26f 100644 --- a/src/sub_08055E08.c +++ b/src/sub_08055E08.c @@ -3,7 +3,6 @@ #include "room.h" #include "functions.h" -extern u32* _call_via_r0(u32* func); extern void (*const gUnk_080FF420[])(); extern void sub_0804B0B0(u32, u32); extern void sub_08055B70(u32, u32, u32, u32); diff --git a/src/sub_0805E374.c b/src/sub_0805E374.c index 5767e6da..e035ce07 100644 --- a/src/sub_0805E374.c +++ b/src/sub_0805E374.c @@ -1,10 +1,12 @@ #include "entity.h" +#include "structures.h" + extern Entity* sub_0805E3A0(Entity*, u32); -extern u8 gScreenTransition[]; extern u8 gUnk_081091F8[]; extern u8 gUnk_081091EE[]; + Entity* sub_0805E374(Entity* param_1) { - u8 r3 = gScreenTransition[0x2C]; + u8 r3 = gScreenTransition.field_0x24[8]; u8* array = gUnk_081091F8; if (r3 != '\x02') { diff --git a/src/sub_0806F9EC.c b/src/sub_0806F9EC.c index 9f029530..8c3f17fb 100644 --- a/src/sub_0806F9EC.c +++ b/src/sub_0806F9EC.c @@ -1,13 +1,11 @@ #include "global.h" -s32 sub_0806F9EC(s16 param_1, s16 param_2) +s32 sub_0806F9EC(s16 unk_1, s16 unk_2) { + int temp; -{ - int iVar1; - - iVar1 = (s32)param_1 * (s32)param_2; - if (iVar1 < 0) { - iVar1 = iVar1 + 255; + temp = (s32)unk_1 * (s32)unk_2; + if (temp < 0) { + temp = temp + 255; } - return (iVar1 << 8) >> 16; + return (temp << 8) >> 16; } diff --git a/src/sub_0806FA04.c b/src/sub_0806FA04.c index a7eb191a..75d421be 100644 --- a/src/sub_0806FA04.c +++ b/src/sub_0806FA04.c @@ -1,15 +1,11 @@ #include "global.h" -extern s32 __divsi3(s32, s32); - -s16 sub_0806FA04(s16 param_1, s16 param_2) - -{ +s16 sub_0806FA04(s16 param_1, s16 param_2) { s16 sVar1; s32 iVar2; if (param_2 != 0) { - sVar1 = __divsi3((param_1 << 16) >> 8, param_2); + sVar1 = ((param_1 << 16) >> 8) / param_2; iVar2 = sVar1; } else { iVar2 = 0; diff --git a/src/sub_0806FA24.c b/src/sub_0806FA24.c deleted file mode 100644 index de614717..00000000 --- a/src/sub_0806FA24.c +++ /dev/null @@ -1,10 +0,0 @@ - -#include "global.h" -#include "entity.h" -void PositionRelative(Entity*, Entity*, s32, s32); - -void CopyPosition(Entity* param_1, Entity* param_2) - -{ - PositionRelative(param_1, param_2, 0, 0); -} diff --git a/src/sub_0807B7D8.c b/src/sub_0807B7D8.c index 7ef8b080..7a8a68fc 100644 --- a/src/sub_0807B7D8.c +++ b/src/sub_0807B7D8.c @@ -1,12 +1,10 @@ #include "global.h" +#include "functions.h" extern void sub_08000152(u32); extern void sub_0807B778(u32, u32); -extern void SetTileType(u32, u32, u32); -void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) - -{ +void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) { if (param_1 == 53) { sub_08000152(53); sub_0807B778(param_2, param_3); @@ -17,5 +15,4 @@ void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) } else { SetTileType(param_1, param_2, param_3); } - return; } diff --git a/src/sub_0807B820.c b/src/sub_0807B820.c index b8ae309d..54b94849 100644 --- a/src/sub_0807B820.c +++ b/src/sub_0807B820.c @@ -1,10 +1,7 @@ #include "global.h" +#include "functions.h" -extern void SetTileType(u32, u32, u32); - -void sub_0807B820(u32 param_1) - -{ +void sub_0807B820(u32 param_1) { SetTileType(620, param_1 + -65, 1); SetTileType(627, param_1 + -65, 2); SetTileType(621, param_1 + -64, 1); @@ -14,5 +11,4 @@ void sub_0807B820(u32 param_1) SetTileType(623, param_1 + -1, 1); SetTileType(624, param_1, 1); SetTileType(626, param_1 + 1, 1); - return; } diff --git a/src/sub_0807B8A8.c b/src/sub_0807B8A8.c index 5c008ad2..f0524685 100644 --- a/src/sub_0807B8A8.c +++ b/src/sub_0807B8A8.c @@ -1,10 +1,7 @@ #include "global.h" +#include "functions.h" -extern void SetTileType(u32, u32, u32); - -void sub_0807B8A8(u32 param_1) - -{ +void sub_0807B8A8(u32 param_1) { SetTileType(636, param_1 + -65, 1); SetTileType(643, param_1 + -65, 2); SetTileType(637, param_1 + -64, 1); @@ -14,5 +11,4 @@ void sub_0807B8A8(u32 param_1) SetTileType(639, param_1 + -1, 1); SetTileType(640, param_1, 1); SetTileType(642, param_1 + 1, 1); - return; } diff --git a/src/sub_0807B930.c b/src/sub_0807B930.c index aae0472c..6ad13448 100644 --- a/src/sub_0807B930.c +++ b/src/sub_0807B930.c @@ -1,10 +1,7 @@ #include "global.h" +#include "functions.h" -extern void SetTileType(u32, u32, u32); - -void sub_0807B930(int param_1) - -{ +void sub_0807B930(int param_1) { SetTileType(652, param_1 + -65, 1); SetTileType(659, param_1 + -65, 2); SetTileType(653, param_1 + -64, 1); @@ -14,5 +11,4 @@ void sub_0807B930(int param_1) SetTileType(655, param_1 + -1, 1); SetTileType(656, param_1, 1); SetTileType(658, param_1 + 1, 1); - return; } diff --git a/src/textbox.c b/src/textbox.c index 8e962960..262560c4 100644 --- a/src/textbox.c +++ b/src/textbox.c @@ -1,6 +1,7 @@ #include "global.h" #include "room.h" #include "entity.h" +#include "dma.h" #include "functions.h" #include "textbox.h" #include "structures.h" @@ -83,7 +84,7 @@ void TextboxAtPosition(u32 index, u32 x, u32 y) { } void ShowTextbox(u32 index) { - MemClear32(&gTextBox, 32); + MemClear(&gTextBox, 32); gTextBox.textIndex = index; gTextBox.textSpeed = 99; gTextBox.textWindowWidth = 26; @@ -94,18 +95,18 @@ void ShowTextbox(u32 index) { } void MessageInitialize(void) { - MemClear32(&gTextBox, 32); - MemClear32(&gUnk_02022780, 168); - MemClear32(&gUnk_02036A40, 8); - MemClear32(&gUnk_02036A38, 8); - MemClear32(&gUnk_02000040, 4); + MemClear(&gTextBox, 32); + MemClear(&gUnk_02022780, 168); + MemClear(&gUnk_02036A40, 8); + MemClear(&gUnk_02036A38, 8); + MemClear(&gUnk_02000040, 4); } void MessageUpdate(void) { int iVar1; if (gTextBox.doTextBox == 1) { - MemClear32((u32*)&gUnk_02022780, sizeof(gUnk_02022780)); + MemClear((u32*)&gUnk_02022780, sizeof(gUnk_02022780)); sub_080564C8(1); } @@ -141,9 +142,9 @@ NONMATCH("asm/non_matching/textbox/sub_080564EC.inc", u32 sub_080564EC(void)) { u32 i; char c; - MemClear32((void*)&gUnk_02036A40, 8); - MemClear32((void*)&gUnk_02024030, 0x18); - MemClear32((void*)&gUnk_02022780, 0xa8); + MemClear((void*)&gUnk_02036A40, 8); + MemClear((void*)&gUnk_02024030, 0x18); + MemClear((void*)&gUnk_02022780, 0xa8); MemCopy(&gTextBox, &gUnk_02022780, 32); if (gUnk_02022780._2 == 0x63) { gUnk_02022780._2 = gUnk_02000000->messageSpeed; From 9eee02fd7c8bf7ba79f9deaacb18b940e14a5dee Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 00:32:19 -0700 Subject: [PATCH 02/21] Update progress.py --- progress.py | 74 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/progress.py b/progress.py index e7a9956b..f2e83eb0 100644 --- a/progress.py +++ b/progress.py @@ -1,6 +1,6 @@ -import csv, git, re - +import csv, git, re, argparse, os +from itertools import chain map = open("tmc.map", "r") src = 0 @@ -8,6 +8,63 @@ asm = 0 srcData = 0 data = 0 +parser = argparse.ArgumentParser() +parser.add_argument("-m", "--matching", dest='matching', action='store_true', help="Output matching progress instead of decompilation progress") +args = parser.parse_args() +matching = args.matching + +NON_MATCHING_PATTERN = r'((?<=NONMATCH\(")asm/non_matching/.*\.inc)|((?<=NONMATCH\(")asm/non_matching/.*\.s)' +NON_ASM_PATTERN = r'(^\w+:)|(^\s@)|(^\s*\.)|(^\s*thumb_func_start)' + +#def remInvalid(x): + +def GetNonMatchingFunctions(files): + functions = [] + + for file in files: + with open(file) as f: + functions += re.findall(NON_MATCHING_PATTERN, f.read()) + + #functions = map(lambda x: x != "", functions) + return functions + +def ReadAllLines(fileName): + lineList = list() + with open(fileName) as f: + lineList = f.readlines() + + return lineList + +def GetFiles(path, ext): + files = [] + for r, d, f in os.walk(path): + for file in f: + if file.endswith(ext): + files.append(os.path.join(r, file)) + + return files + +nonMatchingFunctions = GetNonMatchingFunctions(GetFiles("src", ".c")) if not args.matching else [] + +# this is actually the size of all non matching asm, not (total - non matching) +def GetNonMatchingSize(path): + size = 0 + + asmFiles = GetFiles(path, ".s") + GetFiles(path, ".inc") + + for asmFilePath in asmFiles: + for x in nonMatchingFunctions: # stupid tuple + if asmFilePath in x: + asmLines = ReadAllLines(asmFilePath) + + for asmLine in asmLines: + if len(re.findall(NON_ASM_PATTERN, asmLine, re.DOTALL)) == 0: + size += 4 + + return size + +nonMatchingASM = GetNonMatchingSize("asm/non_matching") + for line in map: reg = re.compile(r"^ \.(\w+)\s+0x[0-9a-f]+\s+(0x[0-9a-f]+) (\w+)\/(.+)\.o") matches = reg.split(line) @@ -20,7 +77,7 @@ for line in map: direc = matches[3] basename = matches[4] - # From original script, not sure what this is doing... + # alignment? idk if (size & 3): size += 4 - (size % 3) @@ -38,8 +95,13 @@ for line in map: total = src + asm dataTotal = srcData + data -srcPct = "%.4f" % (100 * src / total) -asmPct = "%.4f" % (100 * asm / total) +if matching: + srcPct = "%.4f" % (100 * (src) / total) + asmPct = "%.4f" % (100 * (asm) / total) +else: + srcPct = "%.4f" % (100 * (src + nonMatchingASM) / total) + asmPct = "%.4f" % (100 * (asm - nonMatchingASM) / total) + srcDataPct = "%.4f" % (100 * srcData / dataTotal) dataPct = "%.4f" % (100 * data / dataTotal) @@ -53,4 +115,4 @@ git_hash = git_object.hexsha csv_list = [str(version), timestamp, git_hash, str(srcPct), str(asmPct), str(srcDataPct), str(dataPct)] -print(",".join(csv_list)) \ No newline at end of file +print(",".join(csv_list)) From 78784ec28105c0ce2b77790d3fb5affd1224c464 Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 01:33:22 -0700 Subject: [PATCH 03/21] Update Jenkinsfile --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 155fb875..166706c0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -19,8 +19,8 @@ pipeline { branch 'master' } steps { - sh 'python3 progress.py -c >> /var/www/html/reports/progress.csv' - sh 'python3 progress.py -mc >> /var/www/html/reports/progress_matching.csv' + sh 'python3 progress.py >> /var/www/html/reports/progress_tmc.csv' + sh 'python3 progress.py -m >> /var/www/html/reports/progress_tmc_matching.csv' } } } From edbf14b80e460a8a5b866b5a21418cb2b7d12a01 Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 02:25:17 -0700 Subject: [PATCH 04/21] Update Jenkinsfile --- Jenkinsfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 166706c0..85204900 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,6 +7,12 @@ pipeline { echo 'Setting up...' sh 'cp /usr/local/etc/roms/baserom_tmc.gba baserom.gba' sh 'make -j setup' + git clone https://github.com/zeldaret/tmc + git clone https://github.com/pret/agbcc + + cd ./agbcc + sh build.sh + sh install.sh ../tmc } } stage('Build') { From 5c773740f6044e3d74beee8b89821f4a0f96a570 Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 02:26:05 -0700 Subject: [PATCH 05/21] Update Jenkinsfile --- Jenkinsfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 85204900..17e7bec6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,13 +6,12 @@ pipeline { steps { echo 'Setting up...' sh 'cp /usr/local/etc/roms/baserom_tmc.gba baserom.gba' - sh 'make -j setup' git clone https://github.com/zeldaret/tmc git clone https://github.com/pret/agbcc - cd ./agbcc sh build.sh sh install.sh ../tmc + sh 'make -j setup' } } stage('Build') { From 1dd4abd3ed1ad1aab3c17dca8d9510f36413e811 Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 02:26:42 -0700 Subject: [PATCH 06/21] Update Jenkinsfile --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 17e7bec6..8acebc12 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -11,6 +11,7 @@ pipeline { cd ./agbcc sh build.sh sh install.sh ../tmc + cd ../tmc sh 'make -j setup' } } From 1b6a427e1a036771d73e43f6bdbcf7c06a2b406b Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 02:31:43 -0700 Subject: [PATCH 07/21] Update Jenkinsfile --- Jenkinsfile | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8acebc12..123cd358 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,13 +5,10 @@ pipeline { stage('Setup') { steps { echo 'Setting up...' - sh 'cp /usr/local/etc/roms/baserom_tmc.gba baserom.gba' git clone https://github.com/zeldaret/tmc - git clone https://github.com/pret/agbcc - cd ./agbcc - sh build.sh - sh install.sh ../tmc - cd ../tmc + cd ./tmc + sh /var/www/jenkins/agbcc/install.sh . + sh 'cp /usr/local/etc/roms/baserom_tmc.gba baserom.gba' sh 'make -j setup' } } From 8d0610f44942aca7dd70a333ff6357be6a65a0c8 Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 02:34:54 -0700 Subject: [PATCH 08/21] Update Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 123cd358..c7a3e502 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,7 +7,7 @@ pipeline { echo 'Setting up...' git clone https://github.com/zeldaret/tmc cd ./tmc - sh /var/www/jenkins/agbcc/install.sh . + sh ${env.AGBCC}/install.sh . sh 'cp /usr/local/etc/roms/baserom_tmc.gba baserom.gba' sh 'make -j setup' } From 0d44e695a3fce1cd9625aa49de9857c1a4af031a Mon Sep 17 00:00:00 2001 From: notyourav <65437533+notyourav@users.noreply.github.com> Date: Mon, 15 Mar 2021 02:45:30 -0700 Subject: [PATCH 09/21] Update Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index c7a3e502..0de49ce0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,7 +8,7 @@ pipeline { git clone https://github.com/zeldaret/tmc cd ./tmc sh ${env.AGBCC}/install.sh . - sh 'cp /usr/local/etc/roms/baserom_tmc.gba baserom.gba' + sh 'cp /usr/local/etc/roms/tmc.us.gba baserom.gba' sh 'make -j setup' } } From fc5401137a4cd8cb09a8fdc181f5e8e13c359486 Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Mon, 15 Mar 2021 18:53:12 +0900 Subject: [PATCH 10/21] Testing jenkins --- Jenkinsfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0de49ce0..fbfe89ef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,9 +5,7 @@ pipeline { stage('Setup') { steps { echo 'Setting up...' - git clone https://github.com/zeldaret/tmc - cd ./tmc - sh ${env.AGBCC}/install.sh . + sh 'cd ${AGBCC} && ./install.sh ${WORKSPACE} && cd ${WORKSPACE}' sh 'cp /usr/local/etc/roms/tmc.us.gba baserom.gba' sh 'make -j setup' } From aac7eb743646634c1476141ba5d07da53ab56193 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Mon, 15 Mar 2021 22:22:59 +0100 Subject: [PATCH 11/21] more cleanup --- include/entity.h | 8 +++++-- include/fileScreen.h | 6 ----- include/functions.h | 5 ----- include/gba/macro.h | 14 ++++++------ include/global.h | 6 ++--- include/structures.h | 2 +- src/enemy/acroBandits.c | 1 + src/enemy/beetle.c | 4 +++- src/enemy/bobomb.c | 1 + src/enemy/bombPeahat.c | 3 ++- src/enemy/businessScrub.c | 6 +++-- src/enemy/chuchu.c | 1 + src/enemy/cuccoChickAggr.c | 1 + src/enemy/darkNut.c | 2 ++ src/enemy/fallingBoulder.c | 1 + src/enemy/fireballGuy.c | 2 ++ src/enemy/gibdo.c | 3 ++- src/enemy/gyorgMale.c | 3 ++- src/enemy/hangingSeed.c | 1 + src/enemy/helmasaur.c | 1 + src/enemy/keaton.c | 2 ++ src/enemy/keese.c | 1 + src/enemy/lakitu.c | 2 +- src/enemy/leever.c | 1 + src/enemy/likeLike.c | 3 ++- src/enemy/madderpillar.c | 1 + src/enemy/miniFireballGuy.c | 2 ++ src/enemy/miniSlime.c | 2 ++ src/enemy/moldorm.c | 1 + src/enemy/moldworm.c | 1 + src/enemy/octorok.c | 2 ++ src/enemy/peahat.c | 2 ++ src/enemy/pesto.c | 1 + src/enemy/puffstool.c | 1 + src/enemy/rockChuchu.c | 1 + src/enemy/rollobite.c | 2 ++ src/enemy/rope.c | 3 ++- src/enemy/slime.c | 2 ++ src/enemy/sluggula.c | 1 + src/enemy/smallPesto.c | 1 + src/enemy/spearMoblin.c | 1 + src/enemy/spikedBeetle.c | 1 + src/enemy/spinyChuchu.c | 1 + src/enemy/tektite.c | 1 + src/enemy/tektiteGolden.c | 3 ++- src/enemy/wallMaster.c | 3 ++- src/enemy/wallMaster2.c | 3 ++- src/enemy/waterDrop.c | 3 ++- src/enemy/wisp.c | 3 ++- src/entity.c | 40 ++++++++++++++++------------------ src/fileScreen.c | 6 +++++ src/game.c | 3 ++- src/manager/manager1A.c | 2 +- src/manager/manager28.c | 2 +- src/manager/manager3.c | 1 + src/manager/managerB.c | 2 +- src/npc/bigGoron.c | 3 ++- src/npc/bladeBrothers.c | 5 +++-- src/npc/carpenter.c | 1 + src/npc/cow.c | 2 ++ src/npc/epona.c | 3 ++- src/npc/forestMinish.c | 5 +++-- src/npc/goronMerchant.c | 2 +- src/npc/malon.c | 3 ++- src/npc/melari.c | 3 ++- src/npc/smith.c | 4 +++- src/npc/talon.c | 6 +++-- src/npc/teachers.c | 3 ++- src/npc/townsperson.c | 5 +++-- src/npc/zelda.c | 1 - src/object/backgroundCloud.c | 1 + src/object/bird.c | 3 ++- src/object/cloud.c | 1 + src/object/fileScreenObjects.c | 5 +++-- src/object/greatFairy.c | 3 ++- src/object/lilypadSmall.c | 3 ++- src/object/mask.c | 1 - src/object/object1A.c | 1 + src/object/objectA2.c | 1 + src/object/smoke.c | 1 + src/object/windTribeFlag.c | 1 + src/room.c | 3 ++- src/script.c | 3 ++- src/sub_0804AFF4.c | 6 ++--- 84 files changed, 167 insertions(+), 90 deletions(-) diff --git a/include/entity.h b/include/entity.h index 6f1b5e72..e40b281f 100644 --- a/include/entity.h +++ b/include/entity.h @@ -175,6 +175,7 @@ extern LinkedList gUnk_03003DA0; #define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \ TILE((entity)->x.HALF.HI - (xOff), (entity)->y.HALF.HI - (yOff)) +Entity* GetEmptyEntity(void); extern Entity* CreateEnemy(u32 subtype, u32 form); extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter); extern Entity* CreateNPC(u32 subtype, u32 form, u32 parameter); @@ -193,8 +194,11 @@ extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); extern u32 GetFacingDirection(Entity*, Entity*); -extern void DeleteThisEntity(void); -extern void DeleteEntity(Entity*); +void DeleteThisEntity(void); +void DeleteEntity(Entity*); + +void AppendEntityToList(Entity* entity, u32 listIndex); +void PrependEntityToList(Entity* entity, int listIndex); Entity* FindEntityInListBySubtype(u32 type, u32 subtype, u32 listIndex); Entity* FindEntityInListByForm(u32 type, u32 subtype, u32 listIndex, u32 form, u32 parameter); diff --git a/include/fileScreen.h b/include/fileScreen.h index b5782093..8f11aaef 100644 --- a/include/fileScreen.h +++ b/include/fileScreen.h @@ -2,12 +2,6 @@ #define FILESELECT_H #include "global.h" -#include "functions.h" -#include "main.h" -#include "player.h" -#include "readKeyInput.h" -#include "screen.h" -#include "menu.h" #include "save.h" typedef struct { diff --git a/include/functions.h b/include/functions.h index 34e79e08..08e8c90e 100644 --- a/include/functions.h +++ b/include/functions.h @@ -11,20 +11,16 @@ #include "room.h" // Identified - to be sorted into header files -extern u32 Random(void); extern void SoundReq(u32); extern void ShowNPCDialogue(Entity*, Dialog*); -extern u32 UpdateFuseInteraction(); extern u32 __modsi3(u32, u32); extern void DoFade(u32, u32); extern u32 CheckKinstoneFused(u32); extern void ForceEquipItem(u32, u8); extern void LoadRoomEntityList(); -extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*)); extern u32 GetAnimationState(Entity*); extern void SetChildOffset(Entity*, s32, s32, s32); extern Entity* CreatePlayerItem(u32, u32, u32, u32); -extern Entity* GetEmptyEntity(void); extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer); extern u32 GetTileType(u32 pos, u32 layer); extern void EraseAllEntities(void); @@ -43,7 +39,6 @@ extern void LoadResourceAsync(const void*, u32, u32); extern void LoadPaletteGroup(u32); extern void TryLoadPrologueHyruleTown(void); extern Manager* GetEmptyManager(void); -extern void AppendEntityToList(void*, u32); extern void LoadGfxGroup(u32); extern void EnqueueSFX(u32); extern void ResetPlayer(void); diff --git a/include/gba/macro.h b/include/gba/macro.h index 53f03071..f142d5c0 100644 --- a/include/gba/macro.h +++ b/include/gba/macro.h @@ -1,9 +1,9 @@ #ifndef GUARD_GBA_MACRO_H #define GUARD_GBA_MACRO_H -#define CPU_FILL(value, dest, size, bit) \ - { \ - vu##bit tmp = (vu##bit)(value); \ +#define CPU_FILL(value, dest, size, bit) \ + { \ + vu##bit tmp = (vu##bit)(value); \ CpuSet((void*)&tmp, dest, CPU_SET_##bit##BIT | CPU_SET_SRC_FIXED | ((size) / ((bit) / 8) & 0x1FFFFF)); \ } @@ -42,7 +42,7 @@ vu##bit tmp = (vu##bit)(value); \ DmaSet(dmaNum, &tmp, dest, \ (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_FIXED | DMA_DEST_INC) << 16 | \ - ((size) / ((bit) / 8))); \ + ((size) / ((bit) / 8))); \ } #define DmaFill16(dmaNum, value, dest, size) DMA_FILL(dmaNum, value, dest, size, 16) @@ -112,7 +112,7 @@ #define DmaFillLarge(dmaNum, value, dest, size, block, bit) \ { \ - void* _dest = (void*)(dest); \ + void* _dest = (void*)(dest); \ u32 _size = size; \ while (1) { \ DmaFill##bit(dmaNum, value, _dest, (block)); \ @@ -149,7 +149,7 @@ #define DmaFillDefvars(dmaNum, value, dest, size, bit) \ { \ - void* _dest = (void*)(dest); \ + void* _dest = (void*)(dest); \ u32 _size = size; \ DmaFill##bit(dmaNum, value, _dest, _size); \ } @@ -180,7 +180,7 @@ \ imeTemp = REG_IME; \ REG_IME = 0; \ - REG_IE |= (flags); \ + REG_IE |= (flags); \ REG_IME = imeTemp; \ } diff --git a/include/global.h b/include/global.h index f45ee218..74e38a45 100644 --- a/include/global.h +++ b/include/global.h @@ -31,9 +31,9 @@ #define SWAP(a, b, temp) \ { \ - (temp) = a; \ - (a) = b; \ - (b) = temp; \ + (temp) = a; \ + (a) = b; \ + (b) = temp; \ } // useful math macros diff --git a/include/structures.h b/include/structures.h index a7e4902f..66c2a6b6 100644 --- a/include/structures.h +++ b/include/structures.h @@ -39,7 +39,7 @@ typedef struct { u8 field_0x4[0x4]; bool8 transitioningOut; u8 transitionType; // transition when changing areas - u16 field_0xa; // seems to be a tile type + u16 field_0xa; // seems to be a tile type u8 areaID; u8 roomID; u8 playerState; diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index fff1cb50..142b4010 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "random.h" #include "functions.h" extern u32 sub_080002D4(s32, s32, u32); diff --git a/src/enemy/beetle.c b/src/enemy/beetle.c index 61e54b6a..a55b0f7f 100644 --- a/src/enemy/beetle.c +++ b/src/enemy/beetle.c @@ -1,6 +1,8 @@ #include "entity.h" -#include "functions.h" +#include "enemy.h" #include "player.h" +#include "random.h" +#include "functions.h" extern u32 PlayerInRange(Entity*, u32, u32); diff --git a/src/enemy/bobomb.c b/src/enemy/bobomb.c index bf4b4372..e5716276 100644 --- a/src/enemy/bobomb.c +++ b/src/enemy/bobomb.c @@ -1,4 +1,5 @@ #include "enemy.h" +#include "random.h" #include "functions.h" extern void CreateDustSmall(Entity*); diff --git a/src/enemy/bombPeahat.c b/src/enemy/bombPeahat.c index 58e1ed51..caaf98b0 100644 --- a/src/enemy/bombPeahat.c +++ b/src/enemy/bombPeahat.c @@ -1,7 +1,8 @@ #include "global.h" #include "entity.h" -#include "functions.h" #include "player.h" +#include "random.h" +#include "functions.h" extern void sub_08078954(Entity*); extern void sub_08078930(Entity*); diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index 49ba9ea1..30e95a2b 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -1,9 +1,11 @@ #include "enemy.h" #include "entity.h" #include "flags.h" -#include "functions.h" #include "textbox.h" #include "save.h" +#include "random.h" +#include "npc.h" +#include "functions.h" extern void sub_0801D040(Entity*, u32); extern Entity* sub_08049DF4(u32); @@ -326,7 +328,7 @@ void sub_08028E40(Entity* this) { } void sub_08028E84(Entity* this) { - if (UpdateFuseInteraction()) { + if (UpdateFuseInteraction(this)) { this->action = 4; this->actionDelay = 1; } diff --git a/src/enemy/chuchu.c b/src/enemy/chuchu.c index 99a9160a..625fab9b 100644 --- a/src/enemy/chuchu.c +++ b/src/enemy/chuchu.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern s32 sub_080012DC(Entity*); diff --git a/src/enemy/cuccoChickAggr.c b/src/enemy/cuccoChickAggr.c index de87165a..0b894e09 100644 --- a/src/enemy/cuccoChickAggr.c +++ b/src/enemy/cuccoChickAggr.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern Entity* sub_08049DF4(u32); diff --git a/src/enemy/darkNut.c b/src/enemy/darkNut.c index 49acb71d..82f1d53a 100644 --- a/src/enemy/darkNut.c +++ b/src/enemy/darkNut.c @@ -1,4 +1,6 @@ #include "entity.h" +#include "enemy.h" +#include "random.h" #include "functions.h" typedef struct { diff --git a/src/enemy/fallingBoulder.c b/src/enemy/fallingBoulder.c index 4b469258..570c3715 100644 --- a/src/enemy/fallingBoulder.c +++ b/src/enemy/fallingBoulder.c @@ -1,4 +1,5 @@ #include "enemy.h" +#include "random.h" #include "functions.h" void sub_0802C4B0(Entity*); diff --git a/src/enemy/fireballGuy.c b/src/enemy/fireballGuy.c index 3a4e4148..c77281a7 100644 --- a/src/enemy/fireballGuy.c +++ b/src/enemy/fireballGuy.c @@ -1,5 +1,7 @@ #include "global.h" #include "entity.h" +#include "enemy.h" +#include "random.h" #include "functions.h" typedef struct { diff --git a/src/enemy/gibdo.c b/src/enemy/gibdo.c index a1a9833d..02b7f327 100644 --- a/src/enemy/gibdo.c +++ b/src/enemy/gibdo.c @@ -1,8 +1,9 @@ #include "global.h" #include "entity.h" #include "sprite.h" -#include "functions.h" #include "enemy.h" +#include "random.h" +#include "functions.h" // Gibudo void sub_08037794(); void sub_08037B10(); diff --git a/src/enemy/gyorgMale.c b/src/enemy/gyorgMale.c index c7d26607..86939a3c 100644 --- a/src/enemy/gyorgMale.c +++ b/src/enemy/gyorgMale.c @@ -4,8 +4,9 @@ #include "room.h" #include "trig.h" #include "structures.h" -#include "functions.h" #include "fileScreen.h" +#include "random.h" +#include "functions.h" void (*const gUnk_080D1AFC[8])(Entity*); void (*const gUnk_080D1B1C[7])(Entity*); diff --git a/src/enemy/hangingSeed.c b/src/enemy/hangingSeed.c index fc09db31..fe6fe0fc 100644 --- a/src/enemy/hangingSeed.c +++ b/src/enemy/hangingSeed.c @@ -1,4 +1,5 @@ #include "entity.h" +#include "enemy.h" #include "functions.h" extern void (*const gHangingSeedFunctions[])(Entity*); diff --git a/src/enemy/helmasaur.c b/src/enemy/helmasaur.c index 64a97b39..c36db42b 100644 --- a/src/enemy/helmasaur.c +++ b/src/enemy/helmasaur.c @@ -1,4 +1,5 @@ #include "enemy.h" +#include "random.h" #include "functions.h" extern void sub_08008796(Entity*, u32, u32, u32); diff --git a/src/enemy/keaton.c b/src/enemy/keaton.c index a011fcb7..0da3cb57 100644 --- a/src/enemy/keaton.c +++ b/src/enemy/keaton.c @@ -1,5 +1,7 @@ #include "global.h" #include "entity.h" +#include "enemy.h" +#include "random.h" #include "functions.h" extern Entity* gUnk_020000B0; diff --git a/src/enemy/keese.c b/src/enemy/keese.c index 2c5dc02b..0f3a090f 100644 --- a/src/enemy/keese.c +++ b/src/enemy/keese.c @@ -2,6 +2,7 @@ #include "entity.h" #include "enemy.h" #include "player.h" +#include "random.h" #include "functions.h" extern void sub_08001328(Entity*); diff --git a/src/enemy/lakitu.c b/src/enemy/lakitu.c index 00e220cc..ccf93784 100644 --- a/src/enemy/lakitu.c +++ b/src/enemy/lakitu.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "enemy.h" #include "functions.h" #include "trig.h" #include "random.h" @@ -33,7 +34,6 @@ typedef struct { s8 y; } PACKED OffsetCoords; - // Variables extern void (*const gUnk_080D0110[])(Entity*); extern void (*const gUnk_080D0128[])(Entity*); diff --git a/src/enemy/leever.c b/src/enemy/leever.c index 7e2f0774..4e6fb823 100644 --- a/src/enemy/leever.c +++ b/src/enemy/leever.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "enemy.h" +#include "random.h" #include "functions.h" extern u32 sub_080002D4(s32, s32, u32); diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c index b5596a55..fb16c1ee 100644 --- a/src/enemy/likeLike.c +++ b/src/enemy/likeLike.c @@ -1,8 +1,9 @@ #include "enemy.h" #include "entity.h" -#include "functions.h" #include "textbox.h" #include "save.h" +#include "random.h" +#include "functions.h" extern bool32 sub_080544B4(u32); diff --git a/src/enemy/madderpillar.c b/src/enemy/madderpillar.c index cea511b4..bca381f6 100644 --- a/src/enemy/madderpillar.c +++ b/src/enemy/madderpillar.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern u8 gEntCount; diff --git a/src/enemy/miniFireballGuy.c b/src/enemy/miniFireballGuy.c index c0114ff1..50a10eec 100644 --- a/src/enemy/miniFireballGuy.c +++ b/src/enemy/miniFireballGuy.c @@ -1,5 +1,7 @@ #include "global.h" #include "entity.h" +#include "enemy.h" +#include "random.h" #include "functions.h" extern void sub_08045678(Entity*); diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c index 993d7666..ad880319 100644 --- a/src/enemy/miniSlime.c +++ b/src/enemy/miniSlime.c @@ -1,6 +1,8 @@ #include "global.h" #include "entity.h" +#include "enemy.h" #include "room.h" +#include "random.h" #include "functions.h" void sub_08045374(Entity*); diff --git a/src/enemy/moldorm.c b/src/enemy/moldorm.c index 186bee30..8061aff7 100644 --- a/src/enemy/moldorm.c +++ b/src/enemy/moldorm.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" void sub_08022EAC(Entity*); diff --git a/src/enemy/moldworm.c b/src/enemy/moldworm.c index 3bf68715..62c75be4 100644 --- a/src/enemy/moldworm.c +++ b/src/enemy/moldworm.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern void sub_0800449C(Entity*, u32); diff --git a/src/enemy/octorok.c b/src/enemy/octorok.c index 199742bc..ec102485 100644 --- a/src/enemy/octorok.c +++ b/src/enemy/octorok.c @@ -1,5 +1,7 @@ #include "global.h" #include "entity.h" +#include "enemy.h" +#include "random.h" #include "functions.h" extern Entity* sub_08049DF4(u32); diff --git a/src/enemy/peahat.c b/src/enemy/peahat.c index 165bf1eb..b2d27d02 100644 --- a/src/enemy/peahat.c +++ b/src/enemy/peahat.c @@ -1,4 +1,6 @@ #include "entity.h" +#include "enemy.h" +#include "random.h" #include "functions.h" extern void (*const gPeahatFunctions[])(Entity*); diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c index a22dd53b..8d8e39fa 100644 --- a/src/enemy/pesto.c +++ b/src/enemy/pesto.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern u32 sub_080002E0(u16, u32); diff --git a/src/enemy/puffstool.c b/src/enemy/puffstool.c index 80c98278..8daec1d7 100644 --- a/src/enemy/puffstool.c +++ b/src/enemy/puffstool.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern u32 sub_080002E0(u32, u32); diff --git a/src/enemy/rockChuchu.c b/src/enemy/rockChuchu.c index 01a0c9c7..91d2a66c 100644 --- a/src/enemy/rockChuchu.c +++ b/src/enemy/rockChuchu.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern void sub_0804A4E4(Entity*, Entity*); diff --git a/src/enemy/rollobite.c b/src/enemy/rollobite.c index 7ef108b4..474f3849 100644 --- a/src/enemy/rollobite.c +++ b/src/enemy/rollobite.c @@ -1,4 +1,6 @@ #include "entity.h" +#include "enemy.h" +#include "random.h" #include "functions.h" extern void (*const gRollobiteFunctions[])(Entity*); diff --git a/src/enemy/rope.c b/src/enemy/rope.c index e76f8ec1..44a955b1 100644 --- a/src/enemy/rope.c +++ b/src/enemy/rope.c @@ -1,8 +1,9 @@ #include "global.h" #include "entity.h" #include "sprite.h" -#include "functions.h" #include "enemy.h" +#include "random.h" +#include "functions.h" extern void (*const gRope[6])(Entity*); extern void (*const gUnk_080CE460[4])(Entity*); diff --git a/src/enemy/slime.c b/src/enemy/slime.c index 6ef1e9fa..2235bcf9 100644 --- a/src/enemy/slime.c +++ b/src/enemy/slime.c @@ -1,6 +1,8 @@ #include "global.h" #include "entity.h" +#include "enemy.h" #include "room.h" +#include "random.h" #include "functions.h" typedef struct { diff --git a/src/enemy/sluggula.c b/src/enemy/sluggula.c index 86b90864..436baf3c 100644 --- a/src/enemy/sluggula.c +++ b/src/enemy/sluggula.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern s32 sub_080012DC(Entity*); diff --git a/src/enemy/smallPesto.c b/src/enemy/smallPesto.c index d39712ef..8eb16b63 100644 --- a/src/enemy/smallPesto.c +++ b/src/enemy/smallPesto.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "position.h" +#include "random.h" #include "functions.h" extern u32 GetNextFunction(Entity*); diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c index c206edd2..d15068a6 100644 --- a/src/enemy/spearMoblin.c +++ b/src/enemy/spearMoblin.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern bool32 sub_0806FC80(Entity*, Entity*, u32); diff --git a/src/enemy/spikedBeetle.c b/src/enemy/spikedBeetle.c index e1c32ce0..57d11579 100644 --- a/src/enemy/spikedBeetle.c +++ b/src/enemy/spikedBeetle.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern u32 sub_0804A024(Entity*, u32, u32); diff --git a/src/enemy/spinyChuchu.c b/src/enemy/spinyChuchu.c index 873962c9..7a2f50fa 100644 --- a/src/enemy/spinyChuchu.c +++ b/src/enemy/spinyChuchu.c @@ -1,5 +1,6 @@ #include "enemy.h" #include "entity.h" +#include "random.h" #include "functions.h" extern void sub_08001318(Entity*); diff --git a/src/enemy/tektite.c b/src/enemy/tektite.c index a738d82a..f8af6e9d 100644 --- a/src/enemy/tektite.c +++ b/src/enemy/tektite.c @@ -1,6 +1,7 @@ #include "global.h" #include "entity.h" #include "enemy.h" +#include "random.h" #include "functions.h" extern void (*const gUnk_080CDED0[])(Entity*); diff --git a/src/enemy/tektiteGolden.c b/src/enemy/tektiteGolden.c index 3bf14e34..d3f5f0b5 100644 --- a/src/enemy/tektiteGolden.c +++ b/src/enemy/tektiteGolden.c @@ -1,8 +1,9 @@ #include "global.h" #include "entity.h" #include "enemy.h" -#include "functions.h" #include "flags.h" +#include "random.h" +#include "functions.h" extern void sub_08038168(Entity*); diff --git a/src/enemy/wallMaster.c b/src/enemy/wallMaster.c index 1ba24a96..394e8620 100644 --- a/src/enemy/wallMaster.c +++ b/src/enemy/wallMaster.c @@ -1,7 +1,8 @@ #include "enemy.h" #include "entity.h" -#include "functions.h" #include "area.h" +#include "random.h" +#include "functions.h" extern void sub_08001328(Entity*); extern Entity* sub_08049DF4(u32); diff --git a/src/enemy/wallMaster2.c b/src/enemy/wallMaster2.c index ffe1d1e9..7023c024 100644 --- a/src/enemy/wallMaster2.c +++ b/src/enemy/wallMaster2.c @@ -1,6 +1,7 @@ #include "enemy.h" -#include "functions.h" #include "area.h" +#include "random.h" +#include "functions.h" extern void sub_08001328(Entity*); extern void DoExitTransition(u32*); diff --git a/src/enemy/waterDrop.c b/src/enemy/waterDrop.c index 87b80940..017eb2b9 100644 --- a/src/enemy/waterDrop.c +++ b/src/enemy/waterDrop.c @@ -1,7 +1,8 @@ #include "enemy.h" #include "entity.h" -#include "functions.h" #include "screen.h" +#include "random.h" +#include "functions.h" void sub_0802A39C(Entity*); void sub_0802A334(Entity*); diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c index 10463258..195838af 100644 --- a/src/enemy/wisp.c +++ b/src/enemy/wisp.c @@ -3,8 +3,9 @@ #include "enemy.h" #include "structures.h" #include "player.h" -#include "functions.h" #include "save.h" +#include "random.h" +#include "functions.h" extern void (*const gUnk_080CEB74[])(Entity*); extern void (*const gUnk_080CEB8C[])(Entity*); diff --git a/src/entity.c b/src/entity.c index 47acc2dc..cef327b6 100644 --- a/src/entity.c +++ b/src/entity.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "dma.h" typedef struct OtherEntity { struct OtherEntity* prev; @@ -22,8 +23,7 @@ Entity* sub_0805E744(void) { return NULL; } -extern Entity* GetEmptyEntity(); -OtherEntity* GetEmptyManager(); +OtherEntity* GetEmptyManager(void); typedef void* (*Getter)(void); @@ -47,7 +47,7 @@ typedef struct { extern struct_03003DD0 gUnk_03003DD0; extern u32 _call_via_r0(u32*); extern u32 _EntUpdate; -extern void DeleteEntityAny(Entity*); +void DeleteEntityAny(Entity*); void DeleteThisEntity(void) { DeleteEntityAny(gUnk_03003DD0.field_0x8); @@ -80,7 +80,7 @@ extern void UnloadCutsceneData(); extern void UnloadHitbox(); extern void sub_0801DA0C(); extern void sub_0804AA1C(); -extern void UnlinkEntity(); // Unlink +void UnlinkEntity(); void DeleteEntity(Entity* ent) { if (ent->next) { @@ -159,7 +159,6 @@ OtherEntity* GetEmptyManager(void) { return NULL; } -extern void MemClear(void*, u32); extern u8 gManagerCount; void DeleteManager(OtherEntity* ent) { @@ -183,8 +182,7 @@ void sub_0805E92C(u32 param_1) { } extern Entity gUnk_020369F0; -extern void MemCopy(const void* src, void* dest, size_t size); // dma copy -extern void sub_0805E98C(void); +void sub_0805E98C(void); void sub_0805E958(void) { MemCopy(&gEntityLists, &gUnk_020369F0, 0x48); @@ -236,32 +234,32 @@ void sub_0805E9F4(void) { extern void sub_0805E374(Entity*); -void AppendEntityToList(Entity* ent, int listIndex) { +void AppendEntityToList(Entity* entity, u32 listIndex) { LinkedList* list; list = &gEntityLists[listIndex]; - ent->next = (Entity*)list; - ent->prev = list->last; - list->last->next = ent; - list->last = ent; - if (ent->kind != 9) { - ent->spritePriority.b0 = 4; + entity->next = (Entity*)list; + entity->prev = list->last; + list->last->next = entity; + list->last = entity; + if (entity->kind != 9) { + entity->spritePriority.b0 = 4; gEntCount++; } else { gManagerCount++; } - sub_0805E374(ent); + sub_0805E374(entity); } -void PrependEntityToList(Entity* ent, int listIndex) { +void PrependEntityToList(Entity* entity, int listIndex) { LinkedList* list; - UnlinkEntity(ent); + UnlinkEntity(entity); list = &gEntityLists[listIndex]; - ent->prev = (Entity*)list; - ent->next = list->first; - list->first->prev = ent; - list->first = ent; + entity->prev = (Entity*)list; + entity->next = list->first; + list->first->prev = entity; + list->first = entity; } void UnlinkEntity(Entity* ent) { diff --git a/src/fileScreen.c b/src/fileScreen.c index 1862bdb6..78ed7e91 100644 --- a/src/fileScreen.c +++ b/src/fileScreen.c @@ -1,5 +1,11 @@ #include "fileScreen.h" +#include "main.h" +#include "player.h" +#include "readKeyInput.h" +#include "screen.h" +#include "menu.h" #include "dma.h" +#include "random.h" // copy, erase, start #define NUM_FILE_OPERATIONS 3 diff --git a/src/game.c b/src/game.c index bf44ea66..4ae96174 100644 --- a/src/game.c +++ b/src/game.c @@ -2,7 +2,6 @@ #include "screen.h" #include "structures.h" #include "dma.h" -#include "functions.h" #include "screen.h" #include "entity.h" #include "player.h" @@ -10,7 +9,9 @@ #include "main.h" #include "flags.h" #include "save.h" +#include "readKeyInput.h" #include "fileScreen.h" +#include "functions.h" extern u8 gArea; extern u32 gUnk_03000B80; diff --git a/src/manager/manager1A.c b/src/manager/manager1A.c index fc08d6cc..d9912a7e 100644 --- a/src/manager/manager1A.c +++ b/src/manager/manager1A.c @@ -223,5 +223,5 @@ void sub_0805B390(u32 unk1) { tmp->type = 0x9; tmp->subtype = 0x1A; tmp->unk_0a = unk1; - AppendEntityToList(tmp, 6); + AppendEntityToList((Entity*)tmp, 6); } diff --git a/src/manager/manager28.c b/src/manager/manager28.c index f60541e2..f6790624 100644 --- a/src/manager/manager28.c +++ b/src/manager/manager28.c @@ -46,7 +46,7 @@ void Manager28_Init(Manager28* this) { /* tmp3->enemies[tmp4] = this->enemies[tmp4]; */ /* } */ tmp3->d = this->d; - AppendEntityToList(tmp3, 6); + AppendEntityToList((Entity*)tmp3, 6); } } DeleteManager(&this->manager); diff --git a/src/manager/manager3.c b/src/manager/manager3.c index 5234f149..d4053961 100644 --- a/src/manager/manager3.c +++ b/src/manager/manager3.c @@ -4,6 +4,7 @@ #include "area.h" #include "room.h" #include "player.h" +#include "random.h" #include "functions.h" typedef struct { diff --git a/src/manager/managerB.c b/src/manager/managerB.c index cfa48775..6ea279dc 100644 --- a/src/manager/managerB.c +++ b/src/manager/managerB.c @@ -130,7 +130,7 @@ ManagerBHelper* CreateHelper(Manager* this) { extra->manager.parent = this; this->unk_0e++; MemClear(&extra->enemies, 0x20); - AppendEntityToList(extra, 8); + AppendEntityToList((Entity*)extra, 8); } return extra; } diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 25b5b50d..f7251ac0 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -2,8 +2,9 @@ #include "entity.h" #include "player.h" #include "structures.h" -#include "functions.h" #include "script.h" +#include "random.h" +#include "functions.h" extern void (*gUnk_081140D4[])(Entity*); diff --git a/src/npc/bladeBrothers.c b/src/npc/bladeBrothers.c index 913f30cc..4e2e47fb 100644 --- a/src/npc/bladeBrothers.c +++ b/src/npc/bladeBrothers.c @@ -1,12 +1,13 @@ #include "global.h" #include "entity.h" -#include "functions.h" #include "flags.h" #include "player.h" #include "room.h" #include "textbox.h" #include "save.h" #include "script.h" +#include "npc.h" +#include "functions.h" extern void (*gUnk_081115C0[])(Entity*); extern void (*gUnk_081115D0[])(Entity*); @@ -132,7 +133,7 @@ void FUN_08068b2c(Entity* this) { } void sub_08068B70(Entity* this) { - if (UpdateFuseInteraction()) { + if (UpdateFuseInteraction(this)) { this->action = 1; } } diff --git a/src/npc/carpenter.c b/src/npc/carpenter.c index 53e719f8..83ac3bfc 100644 --- a/src/npc/carpenter.c +++ b/src/npc/carpenter.c @@ -2,6 +2,7 @@ #include "entity.h" #include "sprite.h" #include "player.h" +#include "npc.h" #include "functions.h" extern SpriteLoadData gUnk_08110CA8[]; diff --git a/src/npc/cow.c b/src/npc/cow.c index 18e18927..f942b424 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -1,6 +1,8 @@ #include "global.h" #include "entity.h" #include "player.h" +#include "random.h" +#include "npc.h" #include "functions.h" extern void (*gUnk_08111914[])(Entity*); diff --git a/src/npc/epona.c b/src/npc/epona.c index a79ccd48..a3e8536f 100644 --- a/src/npc/epona.c +++ b/src/npc/epona.c @@ -2,6 +2,7 @@ #include "entity.h" #include "textbox.h" #include "player.h" +#include "npc.h" #include "functions.h" void sub_08065A64(Entity* this); @@ -43,7 +44,7 @@ void sub_08065A10(Entity* this) { } void sub_08065A34(Entity* this) { - if (UpdateFuseInteraction() != 0) { + if (UpdateFuseInteraction(this) != 0) { this->action = 1; InitAnimationForceUpdate(this, this->animationState / 2); } diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index a44f413b..73044b47 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -4,10 +4,11 @@ #include "flags.h" #include "textbox.h" #include "player.h" -#include "structures.h" -#include "functions.h" #include "save.h" #include "script.h" +#include "random.h" +#include "structures.h" +#include "functions.h" extern void sub_080600F0(Entity*); extern s32 sub_0806EDD8(Entity*, u32, u32); diff --git a/src/npc/goronMerchant.c b/src/npc/goronMerchant.c index 9fd402c5..b4a44355 100644 --- a/src/npc/goronMerchant.c +++ b/src/npc/goronMerchant.c @@ -89,7 +89,7 @@ void sub_08069684(void) { if (mgr != NULL) { mgr->type = 9; mgr->subtype = 0x31; - AppendEntityToList(mgr, 8); + AppendEntityToList((Entity*)mgr, 8); } } } diff --git a/src/npc/malon.c b/src/npc/malon.c index 47052160..0799e8b3 100644 --- a/src/npc/malon.c +++ b/src/npc/malon.c @@ -1,7 +1,8 @@ #include "global.h" -#include "functions.h" #include "entity.h" #include "script.h" +#include "npc.h" +#include "functions.h" extern void (*gUnk_0810FF5C[])(Entity* this); extern void (*gUnk_0810FF64[])(Entity* this); diff --git a/src/npc/melari.c b/src/npc/melari.c index 9758c20d..8e9077e3 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -2,8 +2,9 @@ #include "entity.h" #include "npc.h" #include "textbox.h" -#include "functions.h" #include "script.h" +#include "random.h" +#include "functions.h" extern void sub_08068780(Entity*); extern s32 sub_0806EDD8(Entity*, u32, u32); diff --git a/src/npc/smith.c b/src/npc/smith.c index ac3a9d4c..c7e4b1e8 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -1,9 +1,11 @@ #include "global.h" #include "entity.h" #include "textbox.h" -#include "functions.h" #include "save.h" #include "script.h" +#include "random.h" +#include "npc.h" +#include "functions.h" extern void sub_08078850(u32, u32, u32, u32*); diff --git a/src/npc/talon.c b/src/npc/talon.c index 24380fc9..d7d6f857 100644 --- a/src/npc/talon.c +++ b/src/npc/talon.c @@ -1,9 +1,11 @@ #include "global.h" #include "entity.h" #include "textbox.h" -#include "functions.h" #include "player.h" #include "script.h" +#include "npc.h" +#include "random.h" +#include "functions.h" extern void (*gUnk_0810FEC4[])(Entity* this); extern void (*gUnk_0810FEBC[])(Entity* this); @@ -83,7 +85,7 @@ void sub_08065648(Entity* this) { } void sub_08065680(Entity* this) { - if (UpdateFuseInteraction() != 0) { + if (UpdateFuseInteraction(this) != 0) { this->action = this->field_0x68.HALF.HI; InitAnimationForceUpdate(this, this->field_0x6a.HALF.LO); } diff --git a/src/npc/teachers.c b/src/npc/teachers.c index 87fb3180..bf7e6983 100644 --- a/src/npc/teachers.c +++ b/src/npc/teachers.c @@ -1,9 +1,10 @@ #include "global.h" #include "entity.h" #include "player.h" -#include "functions.h" #include "save.h" #include "script.h" +#include "npc.h" +#include "functions.h" extern SpriteLoadData gUnk_08113910[]; diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index 7f87dd41..fcea0ff4 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -4,10 +4,11 @@ #include "player.h" #include "textbox.h" #include "flags.h" -#include "structures.h" -#include "functions.h" #include "save.h" #include "script.h" +#include "random.h" +#include "structures.h" +#include "functions.h" typedef struct { u8 frame1; diff --git a/src/npc/zelda.c b/src/npc/zelda.c index 62672012..4704b5bb 100644 --- a/src/npc/zelda.c +++ b/src/npc/zelda.c @@ -5,7 +5,6 @@ #include "flags.h" #include "script.h" -extern void PrependEntityToList(Entity*, u32); extern Entity* FindEntityBySubtype(u32, u32); void sub_08068680(Entity*, Entity*); void sub_08068694(Entity*, Entity*); diff --git a/src/object/backgroundCloud.c b/src/object/backgroundCloud.c index ceebf3d7..1ee11b67 100644 --- a/src/object/backgroundCloud.c +++ b/src/object/backgroundCloud.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "random.h" #include "functions.h" extern void (*const gUnk_08121EA4[])(Entity*); diff --git a/src/object/bird.c b/src/object/bird.c index 2b6f194b..9d21f708 100644 --- a/src/object/bird.c +++ b/src/object/bird.c @@ -1,8 +1,9 @@ #include "global.h" #include "entity.h" #include "flags.h" -#include "functions.h" #include "save.h" +#include "random.h" +#include "functions.h" extern void (*const gUnk_08123EC0[])(Entity*); extern void (*const gUnk_08123EEC[])(Entity*); diff --git a/src/object/cloud.c b/src/object/cloud.c index de6aa165..674c1d73 100644 --- a/src/object/cloud.c +++ b/src/object/cloud.c @@ -3,6 +3,7 @@ #include "room.h" #include "player.h" #include "flags.h" +#include "random.h" #include "functions.h" #include "structures.h" diff --git a/src/object/fileScreenObjects.c b/src/object/fileScreenObjects.c index a35ea276..4424032d 100644 --- a/src/object/fileScreenObjects.c +++ b/src/object/fileScreenObjects.c @@ -1,13 +1,14 @@ #include "global.h" #include "entity.h" #include "flags.h" -#include "functions.h" #include "main.h" #include "menu.h" #include "npc.h" #include "position.h" -#include "structures.h" #include "fileScreen.h" +#include "readKeyInput.h" +#include "structures.h" +#include "functions.h" extern int sub_0807A094(int); extern u32 sub_080041EC(int, int); diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 85d7474b..886fdf43 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -2,10 +2,11 @@ #include "entity.h" #include "room.h" #include "screen.h" -#include "structures.h" #include "greatFairy.h" #include "flags.h" #include "save.h" +#include "random.h" +#include "structures.h" #include "functions.h" enum { diff --git a/src/object/lilypadSmall.c b/src/object/lilypadSmall.c index a96c49ad..ce0d8c08 100644 --- a/src/object/lilypadSmall.c +++ b/src/object/lilypadSmall.c @@ -1,7 +1,8 @@ #include "global.h" #include "entity.h" -#include "functions.h" #include "player.h" +#include "random.h" +#include "functions.h" extern void sub_080A2CC0(Entity*, Entity**, u16*); diff --git a/src/object/mask.c b/src/object/mask.c index ffe931b1..b6d06206 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -7,7 +7,6 @@ #include "flags.h" #include "functions.h" - extern void (*MaskActionFuncs[])(Entity*); extern void sub_08000148(u16, u16, u32); diff --git a/src/object/object1A.c b/src/object/object1A.c index 26ece918..7b8fbcb2 100644 --- a/src/object/object1A.c +++ b/src/object/object1A.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "random.h" #include "functions.h" extern void sub_08086A6C(); diff --git a/src/object/objectA2.c b/src/object/objectA2.c index 01fd9fa6..89a2041c 100644 --- a/src/object/objectA2.c +++ b/src/object/objectA2.c @@ -1,6 +1,7 @@ #include "global.h" #include "object.h" #include "menu.h" +#include "random.h" #include "structures.h" #include "functions.h" diff --git a/src/object/smoke.c b/src/object/smoke.c index 679894a8..4c2739dd 100644 --- a/src/object/smoke.c +++ b/src/object/smoke.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "random.h" #include "functions.h" extern void (*const gUnk_08121060[])(Entity*); diff --git a/src/object/windTribeFlag.c b/src/object/windTribeFlag.c index 9c769808..14f64fba 100644 --- a/src/object/windTribeFlag.c +++ b/src/object/windTribeFlag.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "random.h" #include "functions.h" void WindTribeFlag(Entity* this) { diff --git a/src/room.c b/src/room.c index 0af93d77..f79da48d 100644 --- a/src/room.c +++ b/src/room.c @@ -2,7 +2,6 @@ #include "entity.h" #include "area.h" #include "room.h" -#include "functions.h" #include "flags.h" #include "npc.h" #include "player.h" @@ -10,6 +9,8 @@ #include "main.h" #include "structures.h" #include "save.h" +#include "random.h" +#include "functions.h" void sub_0804B3C4(void* arg0) { sub_0804B29C(arg0); diff --git a/src/script.c b/src/script.c index a686b371..3033d528 100644 --- a/src/script.c +++ b/src/script.c @@ -6,8 +6,9 @@ #include "structures.h" #include "textbox.h" #include "dma.h" -#include "functions.h" #include "save.h" +#include "random.h" +#include "functions.h" void sub_0807DAF0(Entity*, ScriptExecutionContext*, u16*); void sub_0807DB88(ScriptExecutionContext*, u16*); diff --git a/src/sub_0804AFF4.c b/src/sub_0804AFF4.c index bdd0cf50..b2555120 100644 --- a/src/sub_0804AFF4.c +++ b/src/sub_0804AFF4.c @@ -5,14 +5,14 @@ extern u32* GetCurrentRoomProperty(u8); extern void sub_0804B16C(); void sub_0804AFF4(void) { - void(*func)(); + void (*func)(); sub_080186EC(); - func = (void(*)())GetCurrentRoomProperty(5); + func = (void (*)())GetCurrentRoomProperty(5); if (func) { func(); } - func = (void(*)())GetCurrentRoomProperty(7); + func = (void (*)())GetCurrentRoomProperty(7); if (func) { func(); } From a563bfbc285a24be6b17a32364aa3236170acc60 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Mon, 15 Mar 2021 23:40:11 +0100 Subject: [PATCH 12/21] more cleanup --- include/createObject.h | 8 ++++++++ include/enemy.h | 1 - include/functions.h | 9 ++------- include/game.h | 6 ++++++ include/position.h | 1 + src/code_08018C58.c | 1 - src/code_080300AC.c | 1 - src/code_0805436C.c | 1 - src/createEnemy.c | 3 +-- src/createNPC.c | 1 - src/createObject.c | 2 +- src/enemy/bobomb.c | 2 +- src/enemy/gyorgMale.c | 1 - src/enemy/likeLike.c | 1 + src/enemy/miniSlime.c | 1 - src/enemy/pesto.c | 2 ++ src/enemy/rope.c | 1 - src/enemy/rupeeLike.c | 4 ++-- src/enemy/vaatiBall.c | 3 ++- src/enemy/wisp.c | 2 +- src/ezloNag.c | 1 - src/flags.c | 1 - src/game.c | 2 +- src/input.c | 1 - src/intro.c | 1 - src/manager/manager15.c | 2 +- src/manager/manager1E.c | 1 - src/manager/manager39.c | 1 + src/manager/managerC.c | 1 - src/npc.c | 1 - src/npc/anju.c | 4 ---- src/npc/carlov.c | 8 +------- src/npc/cow.c | 3 +++ src/npc/dampe.c | 1 - src/npc/forestMinish.c | 1 + src/npc/mayorHagen.c | 3 --- src/npc/moblinLady.c | 6 ------ src/npc/smith.c | 2 +- src/object/archway.c | 3 +-- src/object/chestSpawner.c | 1 - src/object/cloud.c | 2 +- src/object/floatingBlock.c | 1 - src/object/minishSizedEntrance.c | 1 + src/object/objectA.c | 1 + src/object/pinwheel.c | 2 +- src/object/windTribeFlag.c | 1 - src/player.c | 3 ++- src/position.c | 1 - src/room.c | 2 +- src/script.c | 2 +- src/sub_0801D754.c | 1 - src/sub_0807C998.c | 1 - 52 files changed, 46 insertions(+), 67 deletions(-) create mode 100644 include/createObject.h create mode 100644 include/game.h diff --git a/include/createObject.h b/include/createObject.h new file mode 100644 index 00000000..03f3632e --- /dev/null +++ b/include/createObject.h @@ -0,0 +1,8 @@ +#ifndef CREATEOBJECT_H +#define CREATEOBJECT_H + +// maybe a dedicated (create)Effect.h/c +void CreateDust(Entity* parent); +void CreateDustSmall(Entity* parent); + +#endif // CREATEOBJECT_H diff --git a/include/enemy.h b/include/enemy.h index 22a62f78..0b3e8ecb 100644 --- a/include/enemy.h +++ b/include/enemy.h @@ -109,6 +109,5 @@ extern void Enemy66(Entity*); extern u32 GetNextFunction(Entity*); extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*)); -extern void sub_0804AA30(Entity*, void (*const func[])(Entity*)); extern void sub_08001324(Entity*); #endif diff --git a/include/functions.h b/include/functions.h index 48bcdd13..2b7a7888 100644 --- a/include/functions.h +++ b/include/functions.h @@ -7,8 +7,8 @@ #include "manager.h" #include "position.h" #include "player.h" -#include "structures.h" #include "room.h" +#include "structures.h" // Identified - to be sorted into header files extern void SoundReq(u32); @@ -17,7 +17,7 @@ extern u32 __modsi3(u32, u32); extern void DoFade(u32, u32); extern u32 CheckKinstoneFused(u32); extern void ForceEquipItem(u32, u8); -extern void LoadRoomEntityList(); +extern void LoadRoomEntityList(EntityData* listPtr); extern u32 GetAnimationState(Entity*); extern void SetChildOffset(Entity*, s32, s32, s32); extern Entity* CreatePlayerItem(u32, u32, u32, u32); @@ -29,7 +29,6 @@ extern void SetDirtTile(u32); extern void LoadRoomTileEntities(); // tba extern Entity* CreateDeathFx(Entity*, u32, u32); extern void UpdateAnimationVariableFrames(Entity*, u32); -extern void CopyPositionAndSpriteOffset(Entity*, Entity*); extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32); extern u32 LoadFixedGFX(Entity*, u32); extern Entity* CreateItemEntity(u32, u32, u32); @@ -42,19 +41,15 @@ extern Manager* GetEmptyManager(void); extern void LoadGfxGroup(u32); extern void EnqueueSFX(u32); extern void ResetPlayer(void); -extern void CreateDust(Entity*); extern u32 IsItemEquipped(u32); extern void DeleteManager(Manager*); extern bool32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY); -extern u32 CheckIsDungeon(); extern u32 GetTileTypeByEntity(Entity*); // Unidentified extern u32 sub_0806ED78(Entity*); -extern void sub_0806920C(Entity*); extern u32 sub_0805ACC0(Entity*); extern u32 sub_0801E99C(Entity*); -extern void sub_0806924C(Entity*); extern Entity* sub_080873AC(Entity*, u32, u32); extern void sub_08078778(Entity*); extern void sub_080787A8(Entity*, u32); diff --git a/include/game.h b/include/game.h new file mode 100644 index 00000000..dec15e21 --- /dev/null +++ b/include/game.h @@ -0,0 +1,6 @@ +#ifndef GAME_H +#define GAME_H + +u32 CheckIsDungeon(void); + +#endif // GAME_H diff --git a/include/position.h b/include/position.h index 4635a097..87d5b128 100644 --- a/include/position.h +++ b/include/position.h @@ -7,6 +7,7 @@ void CopyPosition(Entity*, Entity*); void PositionEntityOnTop(Entity*, Entity*); void PositionRelative(Entity*, Entity*, s32, s32); +void CopyPositionAndSpriteOffset(Entity* param_1, Entity* param_2); void sub_0806FA90(Entity*, Entity*, s32, s32); void ResolveEntityOnTop(Entity*, Entity*); void sub_0806FAD8(Entity*, Entity*); diff --git a/src/code_08018C58.c b/src/code_08018C58.c index fd918e31..14caf9cd 100644 --- a/src/code_08018C58.c +++ b/src/code_08018C58.c @@ -1,5 +1,4 @@ #include "global.h" -#include "entity.h" extern u32 SetTileType(u32 tileID, u32 tilePos, u32 layerID); diff --git a/src/code_080300AC.c b/src/code_080300AC.c index 5f33b435..16514810 100644 --- a/src/code_080300AC.c +++ b/src/code_080300AC.c @@ -1,5 +1,4 @@ #include "global.h" -#include "entity.h" #include "dma.h" #include "functions.h" diff --git a/src/code_0805436C.c b/src/code_0805436C.c index be879f99..1361e996 100644 --- a/src/code_0805436C.c +++ b/src/code_0805436C.c @@ -1,5 +1,4 @@ #include "global.h" -#include "entity.h" #include "player.h" #include "room.h" #include "menu.h" diff --git a/src/createEnemy.c b/src/createEnemy.c index d2c08c81..73eb5e5c 100644 --- a/src/createEnemy.c +++ b/src/createEnemy.c @@ -1,6 +1,5 @@ -#include "entity.h" #include "global.h" -#include "functions.h" +#include "entity.h" Entity* CreateEnemy(u32 subtype, u32 form) { Entity* enemy; diff --git a/src/createNPC.c b/src/createNPC.c index 6289166f..7e57e92e 100644 --- a/src/createNPC.c +++ b/src/createNPC.c @@ -1,6 +1,5 @@ #include "global.h" #include "entity.h" -#include "functions.h" Entity* CreateNPC(u32 subtype, u32 form, u32 parameter) { Entity* entity; diff --git a/src/createObject.c b/src/createObject.c index f0a79d43..dc8de778 100644 --- a/src/createObject.c +++ b/src/createObject.c @@ -2,7 +2,7 @@ #include "entity.h" #include "position.h" #include "room.h" -#include "functions.h" +#include "createObject.h" Entity* CreateObject(u32 subtype, u32 form, u32 parameter) { Entity* entity; diff --git a/src/enemy/bobomb.c b/src/enemy/bobomb.c index 43b1a2c2..99cb1f3c 100644 --- a/src/enemy/bobomb.c +++ b/src/enemy/bobomb.c @@ -1,8 +1,8 @@ #include "enemy.h" #include "random.h" +#include "createObject.h" #include "functions.h" -extern void CreateDustSmall(Entity*); extern void sub_08078930(Entity*); extern void sub_08078954(Entity*); diff --git a/src/enemy/gyorgMale.c b/src/enemy/gyorgMale.c index 66752186..8ee6aaa2 100644 --- a/src/enemy/gyorgMale.c +++ b/src/enemy/gyorgMale.c @@ -3,7 +3,6 @@ #include "player.h" #include "room.h" #include "trig.h" -#include "structures.h" #include "fileScreen.h" #include "random.h" #include "functions.h" diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c index fb16c1ee..2175ad92 100644 --- a/src/enemy/likeLike.c +++ b/src/enemy/likeLike.c @@ -3,6 +3,7 @@ #include "textbox.h" #include "save.h" #include "random.h" +#include "createObject.h" #include "functions.h" extern bool32 sub_080544B4(u32); diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c index 6df8075a..7fba14ed 100644 --- a/src/enemy/miniSlime.c +++ b/src/enemy/miniSlime.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" #include "enemy.h" -#include "room.h" #include "random.h" #include "functions.h" diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c index 50826bc9..e778ebe4 100644 --- a/src/enemy/pesto.c +++ b/src/enemy/pesto.c @@ -1,6 +1,8 @@ #include "enemy.h" #include "entity.h" #include "random.h" +#include "createObject.h" +#include "game.h" #include "functions.h" extern u32 sub_080002E0(u16, u32); diff --git a/src/enemy/rope.c b/src/enemy/rope.c index d270c688..877f87c6 100644 --- a/src/enemy/rope.c +++ b/src/enemy/rope.c @@ -1,6 +1,5 @@ #include "global.h" #include "entity.h" -#include "sprite.h" #include "enemy.h" #include "random.h" #include "functions.h" diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 64584892..be13ab0b 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -1,11 +1,11 @@ #include "global.h" #include "entity.h" #include "enemy.h" -#include "functions.h" #include "npc.h" -#include "structures.h" #include "player.h" #include "save.h" +#include "createObject.h" +#include "functions.h" extern void sub_080293DC(Entity*); extern void sub_080296D8(Entity*); diff --git a/src/enemy/vaatiBall.c b/src/enemy/vaatiBall.c index e2223166..3907e270 100644 --- a/src/enemy/vaatiBall.c +++ b/src/enemy/vaatiBall.c @@ -1,7 +1,8 @@ #include "entity.h" #include "player.h" -#include "functions.h" #include "screen.h" +#include "createObject.h" +#include "functions.h" typedef struct { s8 h, v; diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c index 195838af..0c37302c 100644 --- a/src/enemy/wisp.c +++ b/src/enemy/wisp.c @@ -1,10 +1,10 @@ #include "global.h" #include "entity.h" #include "enemy.h" -#include "structures.h" #include "player.h" #include "save.h" #include "random.h" +#include "createObject.h" #include "functions.h" extern void (*const gUnk_080CEB74[])(Entity*); diff --git a/src/ezloNag.c b/src/ezloNag.c index 7d537a44..46c94d43 100644 --- a/src/ezloNag.c +++ b/src/ezloNag.c @@ -1,5 +1,4 @@ #include "global.h" -#include "entity.h" #include "functions.h" #include "textbox.h" #include "structures.h" diff --git a/src/flags.c b/src/flags.c index 6f1d5d56..2129ae01 100644 --- a/src/flags.c +++ b/src/flags.c @@ -2,7 +2,6 @@ #include "room.h" #include "flags.h" #include "area.h" -#include "room.h" extern u32 ReadBit(u32*, u32); extern u32 CheckBits(u32*, u32, u32); diff --git a/src/game.c b/src/game.c index 3db89d90..0b6488a5 100644 --- a/src/game.c +++ b/src/game.c @@ -300,7 +300,7 @@ u32 sub_08052654() { return (gArea >> 7) & 1; } -u32 CheckIsDungeon() { +u32 CheckIsDungeon(void) { return (gArea >> 2) & 1; } diff --git a/src/input.c b/src/input.c index c187d598..6c1179f4 100644 --- a/src/input.c +++ b/src/input.c @@ -1,5 +1,4 @@ #include "global.h" -#include "entity.h" #include "readKeyInput.h" static void StoreKeyInput(Input*, u32); diff --git a/src/intro.c b/src/intro.c index a0eb8db7..4fd85e48 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1,5 +1,4 @@ #include "global.h" -#include "menu.h" #include "main.h" #include "entity.h" #include "dma.h" diff --git a/src/manager/manager15.c b/src/manager/manager15.c index 60ca8f5a..f1de0895 100644 --- a/src/manager/manager15.c +++ b/src/manager/manager15.c @@ -78,7 +78,7 @@ extern Entity gUnk_080E4C08; void sub_0805A370(Manager15* this) { if (this->manager.unk_0d) { - LoadRoomEntityList(&gUnk_080E4C08); + LoadRoomEntityList((EntityData*)&gUnk_080E4C08); this->manager.action = 3; SoundReq(0x80100000); } diff --git a/src/manager/manager1E.c b/src/manager/manager1E.c index 298e7860..fad34ef4 100644 --- a/src/manager/manager1E.c +++ b/src/manager/manager1E.c @@ -1,7 +1,6 @@ #include "global.h" #include "manager.h" #include "flags.h" -#include "player.h" #include "functions.h" typedef struct { diff --git a/src/manager/manager39.c b/src/manager/manager39.c index 8c1c1532..b8bd327c 100644 --- a/src/manager/manager39.c +++ b/src/manager/manager39.c @@ -4,6 +4,7 @@ #include "area.h" #include "textbox.h" #include "dma.h" +#include "game.h" #include "functions.h" typedef struct { diff --git a/src/manager/managerC.c b/src/manager/managerC.c index 972fc67b..5cf482c5 100644 --- a/src/manager/managerC.c +++ b/src/manager/managerC.c @@ -3,7 +3,6 @@ #include "flags.h" #include "structures.h" #include "room.h" -#include "area.h" #include "screen.h" #include "trig.h" #include "functions.h" diff --git a/src/npc.c b/src/npc.c index d7f38b6a..4a94399b 100644 --- a/src/npc.c +++ b/src/npc.c @@ -1,5 +1,4 @@ #include "global.h" -#include "functions.h" #include "entity.h" #include "npc.h" diff --git a/src/npc/anju.c b/src/npc/anju.c index e21afba1..e0fb08c8 100644 --- a/src/npc/anju.c +++ b/src/npc/anju.c @@ -1,10 +1,6 @@ #include "global.h" #include "entity.h" #include "player.h" -#include "room.h" -#include "flags.h" -#include "sprite.h" -#include "textbox.h" #include "npc.h" #include "script.h" #include "functions.h" diff --git a/src/npc/carlov.c b/src/npc/carlov.c index a96b916e..92d632ed 100644 --- a/src/npc/carlov.c +++ b/src/npc/carlov.c @@ -1,15 +1,9 @@ #include "global.h" #include "entity.h" -#include "player.h" #include "room.h" -#include "flags.h" -#include "sprite.h" -#include "textbox.h" #include "npc.h" -#include "structures.h" -#include "functions.h" #include "script.h" - +#include "functions.h" void Carlov(Entity* this) { if (this->action == 0) { diff --git a/src/npc/cow.c b/src/npc/cow.c index aed9ff0a..9eb67a7b 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -5,6 +5,9 @@ #include "npc.h" #include "functions.h" +void sub_0806920C(Entity* ent); +void sub_0806924C(Entity* ent); + extern void (*gUnk_08111914[])(Entity*); extern void (*gUnk_08111928[])(Entity*); extern Dialog gUnk_08111938[]; diff --git a/src/npc/dampe.c b/src/npc/dampe.c index ab2fa586..150acbe1 100644 --- a/src/npc/dampe.c +++ b/src/npc/dampe.c @@ -3,7 +3,6 @@ #include "player.h" #include "room.h" #include "flags.h" -#include "sprite.h" #include "textbox.h" #include "npc.h" #include "functions.h" diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index 0f997c34..27d0df3d 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -7,6 +7,7 @@ #include "save.h" #include "script.h" #include "random.h" +#include "createObject.h" #include "structures.h" #include "functions.h" diff --git a/src/npc/mayorHagen.c b/src/npc/mayorHagen.c index 1f5d36af..ae5f1e0e 100644 --- a/src/npc/mayorHagen.c +++ b/src/npc/mayorHagen.c @@ -1,10 +1,7 @@ #include "global.h" #include "entity.h" #include "player.h" -#include "room.h" #include "flags.h" -#include "sprite.h" -#include "textbox.h" #include "npc.h" #include "structures.h" #include "functions.h" diff --git a/src/npc/moblinLady.c b/src/npc/moblinLady.c index 79152daf..d63d4d87 100644 --- a/src/npc/moblinLady.c +++ b/src/npc/moblinLady.c @@ -1,13 +1,7 @@ #include "global.h" #include "entity.h" -#include "player.h" -#include "room.h" -#include "flags.h" -#include "sprite.h" -#include "textbox.h" #include "npc.h" #include "script.h" -#include "functions.h" void MoblinLady(Entity* this) { if (this->action == 0) { diff --git a/src/npc/smith.c b/src/npc/smith.c index 477e7383..6b55c1f7 100644 --- a/src/npc/smith.c +++ b/src/npc/smith.c @@ -7,7 +7,7 @@ #include "npc.h" #include "functions.h" -extern void sub_08078850(u32, u32, u32, u32*); +extern void sub_08078850(Entity*, u32, u32, u32*); extern void (*const gUnk_08110360[])(Entity*); extern void (*const gUnk_0811036C[])(Entity*); diff --git a/src/object/archway.c b/src/object/archway.c index a33b7dd3..2f1124ca 100644 --- a/src/object/archway.c +++ b/src/object/archway.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" -#include "sprite.h" -#include "functions.h" +#include "game.h" void Archway(Entity* this) { u32 v1; diff --git a/src/object/chestSpawner.c b/src/object/chestSpawner.c index 790d1251..3f7e6006 100644 --- a/src/object/chestSpawner.c +++ b/src/object/chestSpawner.c @@ -1,6 +1,5 @@ #include "global.h" #include "entity.h" -#include "flags.h" extern void sub_080842D8(Entity*); extern void sub_08078828(Entity*); diff --git a/src/object/cloud.c b/src/object/cloud.c index 45616754..0b7e7c0a 100644 --- a/src/object/cloud.c +++ b/src/object/cloud.c @@ -60,7 +60,7 @@ void sub_0809F5B0(Entity* this) { if (--this->actionDelay == 0) { SoundReq(115); SetGlobalFlag(KUMOTATSUMAKI); - LoadRoomEntityList(&gUnk_080DD750); + LoadRoomEntityList((EntityData*)&gUnk_080DD750); DeleteThisEntity(); } } diff --git a/src/object/floatingBlock.c b/src/object/floatingBlock.c index 661cec72..7e1ad599 100644 --- a/src/object/floatingBlock.c +++ b/src/object/floatingBlock.c @@ -1,6 +1,5 @@ #include "global.h" #include "entity.h" -#include "functions.h" void FloatingBlock(Entity* this) { if (this->action == 0) { diff --git a/src/object/minishSizedEntrance.c b/src/object/minishSizedEntrance.c index 804772b7..2f08f996 100644 --- a/src/object/minishSizedEntrance.c +++ b/src/object/minishSizedEntrance.c @@ -1,5 +1,6 @@ #include "global.h" #include "entity.h" +#include "game.h" #include "functions.h" extern void (*const gUnk_08122254[])(Entity*); diff --git a/src/object/objectA.c b/src/object/objectA.c index 3679e4bb..0e63b26f 100644 --- a/src/object/objectA.c +++ b/src/object/objectA.c @@ -2,6 +2,7 @@ #include "entity.h" #include "room.h" #include "flags.h" +#include "createObject.h" #include "functions.h" extern Hitbox gUnk_080FD170; diff --git a/src/object/pinwheel.c b/src/object/pinwheel.c index 7fcbb9a0..7de61338 100644 --- a/src/object/pinwheel.c +++ b/src/object/pinwheel.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" #include "flags.h" -#include "functions.h" +#include "createObject.h" extern u32 ReadBit(u32*, u32); diff --git a/src/object/windTribeFlag.c b/src/object/windTribeFlag.c index 14f64fba..bc9d0fa3 100644 --- a/src/object/windTribeFlag.c +++ b/src/object/windTribeFlag.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" #include "random.h" -#include "functions.h" void WindTribeFlag(Entity* this) { if (this->action == 0) { diff --git a/src/player.c b/src/player.c index 7dfcbb93..d6359f59 100644 --- a/src/player.c +++ b/src/player.c @@ -2,10 +2,11 @@ #include "entity.h" #include "player.h" #include "textbox.h" -#include "functions.h" #include "readKeyInput.h" #include "area.h" #include "save.h" +#include "game.h" +#include "functions.h" extern const void (*const gUnk_0811B9E0[])(Entity*); extern const void (*const gUnk_0811BA60[])(Entity*); diff --git a/src/position.c b/src/position.c index 628042c3..b5f83468 100644 --- a/src/position.c +++ b/src/position.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" #include "position.h" -#include "functions.h" extern u8 gUnk_08114F78[]; extern u8 gUnk_08114F80[]; diff --git a/src/room.c b/src/room.c index 55625d0a..9c94aa9f 100644 --- a/src/room.c +++ b/src/room.c @@ -4497,7 +4497,7 @@ void sub_0804E3C4() { } r = Random(); index = gUnk_080F0D58[index][r & 0x1f]; - LoadRoomEntityList(gUnk_080F0CB8[index & 0xF]); + LoadRoomEntityList((EntityData*)gUnk_080F0CB8[index & 0xF]); index >>= 4; r >>= 8; index = gUnk_080F0E08[index][r & 0x1F]; diff --git a/src/script.c b/src/script.c index 26aff076..8e9c6c75 100644 --- a/src/script.c +++ b/src/script.c @@ -703,7 +703,7 @@ void ScriptCommand_CallWithArg(Entity* entity, ScriptExecutionContext* context) } void ScriptCommand_LoadRoomEntityList(Entity* entity, ScriptExecutionContext* context) { - LoadRoomEntityList(GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer)); + LoadRoomEntityList((EntityData*)GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer)); } void ScriptCommand_TestBit(Entity* entity, ScriptExecutionContext* context) { diff --git a/src/sub_0801D754.c b/src/sub_0801D754.c index a6f103f5..8b1b2b20 100644 --- a/src/sub_0801D754.c +++ b/src/sub_0801D754.c @@ -1,5 +1,4 @@ #include "global.h" -#include "functions.h" extern const u8 gUnk_020176E0[]; diff --git a/src/sub_0807C998.c b/src/sub_0807C998.c index 7c2afd37..608f7680 100644 --- a/src/sub_0807C998.c +++ b/src/sub_0807C998.c @@ -1,5 +1,4 @@ #include "global.h" -#include "entity.h" extern void sub_0807C960(); extern u16 gMetatilesBottom[]; From fe4a39b74f2a43e9bc00062e351e2b5432bf60c2 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Mon, 15 Mar 2021 23:44:00 +0100 Subject: [PATCH 13/21] missed formatting on this one --- src/npc/dampe.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/npc/dampe.c b/src/npc/dampe.c index 150acbe1..6293bcd7 100644 --- a/src/npc/dampe.c +++ b/src/npc/dampe.c @@ -8,7 +8,6 @@ #include "functions.h" #include "script.h" - extern u16 gUnk_08113344[]; extern u16 gUnk_0811334A[]; From af98f5f9a30e7276ffe9c21c903cc6f1a866e39c Mon Sep 17 00:00:00 2001 From: theo3 Date: Mon, 15 Mar 2021 21:17:25 -0700 Subject: [PATCH 14/21] several more player functions done --- CONTRIBUTING.md | 4 +- asm/bigBarrel.s | 4 +- asm/bigGoron.s | 4 +- asm/code_0800857C.s | 2 +- asm/code_0806FA6C.s | 4 +- asm/code_08070698.s | 1349 +----------------------- asm/code_080732D0.s | 10 +- asm/code_08078778.s | 14 +- asm/jarPortal.s | 2 +- asm/non_matching/player/sub_08071634.s | 172 +++ asm/objectB.s | 2 +- data/data_08114208.s | 138 --- data/data_0811B9E0.s | 140 +++ include/area.h | 13 +- include/entity.h | 4 +- include/functions.h | 2 +- include/global.h | 14 +- include/player.h | 41 +- include/structures.h | 16 + linker.ld | 2 + src/arm_proxy.c | 33 +- src/code_0804AA84.c | 8 +- src/code_0805436C.c | 2 +- src/code_08077DF4.c | 2 +- src/enemy/acroBandits.c | 6 +- src/enemy/beetle.c | 12 +- src/enemy/bobomb.c | 14 +- src/enemy/bombPeahat.c | 18 +- src/enemy/businessScrub.c | 28 +- src/enemy/darkNut.c | 2 +- src/enemy/doorMimic.c | 4 +- src/enemy/fireballGuy.c | 2 +- src/enemy/gibdo.c | 10 +- src/enemy/gyorgMale.c | 200 ++-- src/enemy/helmasaur.c | 14 +- src/enemy/keese.c | 4 +- src/enemy/lakitu.c | 4 +- src/enemy/lakituCloud.c | 6 +- src/enemy/likeLike.c | 6 +- src/enemy/madderpillar.c | 4 +- src/enemy/moldorm.c | 6 +- src/enemy/moldworm.c | 16 +- src/enemy/octorok.c | 6 +- src/enemy/peahat.c | 12 +- src/enemy/pesto.c | 14 +- src/enemy/puffstool.c | 8 +- src/enemy/rockChuchu.c | 4 +- src/enemy/rollobite.c | 10 +- src/enemy/rope.c | 10 +- src/enemy/rupeeLike.c | 6 +- src/enemy/slime.c | 9 +- src/enemy/smallPesto.c | 6 +- src/enemy/spark.c | 2 +- src/enemy/spearMoblin.c | 4 +- src/enemy/spikedBeetle.c | 2 +- src/enemy/spinyChuchu.c | 6 +- src/enemy/tektite.c | 10 +- src/enemy/tektiteGolden.c | 10 +- src/enemy/wisp.c | 6 +- src/game.c | 3 +- src/item.c | 1 - src/item11.c | 4 +- src/manager/manager15.c | 6 +- src/manager/manager1A.c | 4 +- src/manager/manager3.c | 18 +- src/npc/beedle.c | 2 +- src/npc/bigGoron.c | 4 +- src/npc/cow.c | 24 +- src/object/backgroundCloud.c | 10 +- src/object/bakerOven.c | 4 +- src/object/bird.c | 4 +- src/object/button.c | 2 +- src/object/houseDoorExterior.c | 6 +- src/object/itemOnGround.c | 6 +- src/object/object2A.c | 2 +- src/object/object49.c | 4 +- src/object/object86.c | 8 +- src/object/pot.c | 12 +- src/player.c | 695 ++++++++++-- src/script.c | 4 +- 80 files changed, 1366 insertions(+), 1920 deletions(-) create mode 100644 asm/non_matching/player/sub_08071634.s create mode 100644 data/data_0811B9E0.s diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0a438e7d..8b9e3fe5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -182,7 +182,7 @@ typedef struct Entity u32 * field_0x4; EntityType entityType; u8 action; - u8 previousActionFlag; + u8 subAction; u8 actionDelay; u8 field_0xf; u8 flags; @@ -199,7 +199,7 @@ What's the 12th byte in this struct? u32 * field_0x4; //4-7 EntityType entityType; //8-11 u8 action; //12 - u8 previousActionFlag; //13 + u8 subAction; //13 ``` --- diff --git a/asm/bigBarrel.s b/asm/bigBarrel.s index e7390c31..f721b772 100644 --- a/asm/bigBarrel.s +++ b/asm/bigBarrel.s @@ -176,7 +176,7 @@ _08088B82: subs r1, #0x50 movs r2, #0xa0 movs r3, #0x30 - bl sub_0806FBFC + bl CheckPlayerProximity cmp r0, #0 beq _08088BBA ldrb r0, [r5] @@ -194,7 +194,7 @@ _08088BBA: adds r1, #0x30 movs r2, #0xa0 movs r3, #0x30 - bl sub_0806FBFC + bl CheckPlayerProximity cmp r0, #0 beq _08088BDE ldrb r0, [r5] diff --git a/asm/bigGoron.s b/asm/bigGoron.s index 439e2cd7..4713c398 100644 --- a/asm/bigGoron.s +++ b/asm/bigGoron.s @@ -583,7 +583,7 @@ _0806D46C: ldrsh r1, [r4, r2] movs r2, #0x40 movs r3, #0x40 - bl sub_0806FBFC + bl CheckPlayerProximity cmp r0, #0 beq _0806D4AC adds r2, r4, #0 @@ -724,7 +724,7 @@ _0806D540: ldrsh r1, [r4, r2] movs r2, #0x18 movs r3, #0x40 - bl sub_0806FBFC + bl CheckPlayerProximity cmp r0, #0 beq _0806D5B4 _0806D590: diff --git a/asm/code_0800857C.s b/asm/code_0800857C.s index 3522fc17..c4a611b9 100644 --- a/asm/code_0800857C.s +++ b/asm/code_0800857C.s @@ -719,7 +719,7 @@ sub_08008AC6: @ 0x08008AC6 movs r3, #0xe2 movs r2, #0x3d strb r3, [r0, r2] - bl sub_08079458 + bl RespawnPlayer _08008AEC: pop {r0, pc} diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index 81ff4789..438a5157 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -144,8 +144,8 @@ UnloadHitbox: @ 0x0806FBEC str r0, [r4, #0x48] pop {r4, pc} - thumb_func_start sub_0806FBFC -sub_0806FBFC: @ 0x0806FBFC + thumb_func_start CheckPlayerProximity +CheckPlayerProximity: @ 0x0806FBFC push {r4, r5, r6, lr} adds r5, r3, #0 ldr r4, _0806FC20 @ =gPlayerEntity diff --git a/asm/code_08070698.s b/asm/code_08070698.s index 10b20c3e..69452e1c 100644 --- a/asm/code_08070698.s +++ b/asm/code_08070698.s @@ -6,1322 +6,9 @@ .text - thumb_func_start sub_080714A8 -sub_080714A8: @ 0x080714A8 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _08071524 @ =gArea - ldrb r0, [r0, #0x17] - cmp r0, #5 - bgt _080714BE - cmp r0, #4 - blt _080714BE - ldr r0, _08071528 @ =gPlayerEntity - bl sub_0806F948 -_080714BE: - ldr r3, _0807152C @ =gPlayerState - ldrb r1, [r3, #0xd] - movs r0, #0x84 - ands r0, r1 - cmp r0, #0 - bne _0807153E - ldrb r0, [r4, #0x15] - cmp r0, r1 - beq _080714D4 - movs r0, #8 - strb r0, [r4, #0xe] -_080714D4: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - bne _08071538 - ldrb r0, [r3, #0xd] - strb r0, [r4, #0x15] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x1a - strb r0, [r4, #0x14] - movs r0, #0x80 - lsls r0, r0, #0xa - str r0, [r4, #0x20] - movs r1, #0 - movs r0, #0x80 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - movs r0, #9 - strb r0, [r4, #0xc] - movs r0, #7 - strb r0, [r4, #0xd] - strb r1, [r4, #0xf] - ldr r1, [r3, #0x30] - movs r0, #8 - ands r0, r1 - ldr r4, _08071530 @ =0x0000080C - adds r2, r4, #0 - cmp r0, #0 - beq _08071516 - ldr r0, _08071534 @ =0x0000041C - adds r2, r0, #0 -_08071516: - strh r2, [r3, #8] - movs r0, #0x21 - rsbs r0, r0, #0 - ands r1, r0 - str r1, [r3, #0x30] - b _0807156A - .align 2, 0 -_08071524: .4byte gArea -_08071528: .4byte gPlayerEntity -_0807152C: .4byte gPlayerState -_08071530: .4byte 0x0000080C -_08071534: .4byte 0x0000041C -_08071538: - ldrb r0, [r3, #0xd] - strb r0, [r4, #0x15] - b _08071542 -_0807153E: - movs r0, #8 - strb r0, [r4, #0xe] -_08071542: - ldr r0, _0807155C @ =gArea - ldrb r0, [r0, #0x17] - cmp r0, #4 - bne _08071560 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #0 - bne _08071566 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - b _0807156A - .align 2, 0 -_0807155C: .4byte gArea -_08071560: - adds r0, r4, #0 - bl sub_08077698 -_08071566: - bl sub_08079938 -_0807156A: - pop {r4, pc} - thumb_func_start sub_0807156C -sub_0807156C: @ 0x0807156C - push {lr} - ldr r2, _080715A0 @ =gRoomControls - movs r1, #0 - str r1, [r2, #0x30] - ldr r2, _080715A4 @ =gUnk_02034490 - movs r1, #1 - strb r1, [r2] - movs r1, #3 - strb r1, [r0, #0xd] - movs r1, #0x1e - strb r1, [r0, #0xf] - ldr r2, _080715A8 @ =gPlayerState - movs r1, #0xe7 - lsls r1, r1, #3 - strh r1, [r2, #8] - movs r1, #6 - movs r2, #1 - movs r3, #0 - bl CreateObjectWithParent - bl sub_08077B20 - bl sub_0805E544 - pop {pc} - .align 2, 0 -_080715A0: .4byte gRoomControls -_080715A4: .4byte gUnk_02034490 -_080715A8: .4byte gPlayerState - - thumb_func_start sub_080715AC -sub_080715AC: @ 0x080715AC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _080715CC - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - ldr r0, _080715D0 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080715CC - movs r0, #4 - strb r0, [r4, #0xd] -_080715CC: - pop {r4, pc} - .align 2, 0 -_080715D0: .4byte gPlayerState - - thumb_func_start sub_080715D4 -sub_080715D4: @ 0x080715D4 - push {lr} - adds r3, r0, #0 - movs r2, #0 - movs r0, #5 - strb r0, [r3, #0xd] - movs r0, #0x29 - adds r0, r0, r3 - mov ip, r0 - ldrb r1, [r0] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - mov r1, ip - strb r0, [r1] - strb r2, [r3, #0xf] - ldrb r0, [r3, #0x19] - movs r1, #3 - orrs r0, r1 - strb r0, [r3, #0x19] - adds r0, r3, #0 - adds r0, #0x80 - movs r2, #0x80 - lsls r2, r2, #1 - str r2, [r0] - adds r0, #4 - str r2, [r0] - adds r0, r3, #0 - adds r1, r2, #0 - movs r3, #0 - bl sub_0805EC9C - ldr r2, _08071628 @ =gPlayerState - ldr r0, _0807162C @ =0x000002C3 - strh r0, [r2, #8] - ldr r0, [r2, #0x30] - movs r1, #0x80 - orrs r0, r1 - str r0, [r2, #0x30] - ldr r0, _08071630 @ =0x0000016F - bl SoundReq - pop {pc} - .align 2, 0 -_08071628: .4byte gPlayerState -_0807162C: .4byte 0x000002C3 -_08071630: .4byte 0x0000016F - - thumb_func_start sub_08071634 -sub_08071634: @ 0x08071634 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _08071654 - adds r1, r5, #0 - adds r1, #0x80 - ldr r0, [r1] - adds r0, #0x80 - lsls r0, r0, #0x14 - lsrs r7, r0, #0x17 - adds r4, r1, #0 - b _0807166A -_08071654: - adds r4, r5, #0 - adds r4, #0x80 - ldrb r1, [r4] - lsrs r1, r1, #6 - movs r0, #3 - eors r1, r0 - adds r1, #1 - movs r0, #0x10 - bl __divsi3 - asrs r7, r0, #1 -_0807166A: - adds r0, r5, #0 - adds r0, #0x84 - ldr r3, [r0] - movs r1, #0x80 - lsls r1, r1, #1 - adds r2, r0, #0 - cmp r3, r1 - bls _08071684 - adds r0, r3, #0 - adds r0, #0x80 - lsls r0, r0, #0x14 - lsrs r3, r0, #0x17 - b _08071694 -_08071684: - cmp r3, r1 - bne _0807168C - movs r3, #0x10 - b _08071694 -_0807168C: - ldr r1, _080716B0 @ =gUnk_0811BABC - lsrs r0, r3, #5 - adds r0, r0, r1 - ldrb r3, [r0] -_08071694: - movs r0, #0x80 - lsls r0, r0, #9 - mov r8, r0 - adds r0, r5, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #2 - beq _080716EA - cmp r0, #2 - bgt _080716B4 - cmp r0, #1 - beq _080716BA - b _08071754 - .align 2, 0 -_080716B0: .4byte gUnk_0811BABC -_080716B4: - cmp r0, #3 - beq _0807171E - b _08071754 -_080716BA: - movs r1, #0x29 - adds r1, r1, r5 - mov ip, r1 - ldrb r1, [r1] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r1 - mov r1, ip - strb r0, [r1] - ldr r0, [r4] - cmp r0, #0x80 - bls _080716D6 - subs r0, r0, r7 - str r0, [r4] -_080716D6: - lsls r1, r3, #1 - ldr r0, [r2] - adds r0, r0, r1 - str r0, [r2] - mov r0, r8 - lsls r1, r0, #1 - ldr r0, [r5, #0x30] - adds r0, r0, r1 - str r0, [r5, #0x30] - b _08071754 -_080716EA: - ldr r0, [r4] - adds r0, r0, r7 - str r0, [r4] - ldr r1, [r2] - movs r6, #0x80 - lsls r6, r6, #1 - cmp r1, r6 - bls _08071710 - ldr r0, _0807170C @ =0x0000017F - cmp r1, r0 - bhi _08071702 - lsrs r3, r3, #1 -_08071702: - subs r0, r1, r3 - cmp r0, #0xff - bhi _08071716 - str r6, [r2] - b _08071718 - .align 2, 0 -_0807170C: .4byte 0x0000017F -_08071710: - cmp r1, #0x80 - bls _08071718 - subs r0, r1, r3 -_08071716: - str r0, [r2] -_08071718: - ldr r0, [r5, #0x34] - mov r1, r8 - b _08071750 -_0807171E: - ldr r0, [r4] - ldr r6, _08071740 @ =0x0000033F - cmp r0, r6 - bhi _0807172A - adds r0, r0, r7 - str r0, [r4] -_0807172A: - ldr r1, [r2] - cmp r1, r6 - bls _08071744 - movs r0, #8 - strb r0, [r5, #0xe] - movs r0, #0x1e - strb r0, [r5, #0xf] - movs r0, #6 - strb r0, [r5, #0xd] - b _0807174A - .align 2, 0 -_08071740: .4byte 0x0000033F -_08071744: - lsls r0, r3, #1 - adds r0, r1, r0 - str r0, [r2] -_0807174A: - mov r0, r8 - lsls r1, r0, #1 - ldr r0, [r5, #0x34] -_08071750: - subs r0, r0, r1 - str r0, [r5, #0x34] -_08071754: - ldr r1, [r4] - ldr r2, [r2] - adds r0, r5, #0 - movs r3, #0 - bl sub_0805EC9C - adds r0, r5, #0 - bl UpdateAnimationSingleFrame - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0807176C -sub_0807176C: @ 0x0807176C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _080717C6 - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080717CA - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - ldr r1, _080717AC @ =gArea - ldrb r0, [r1, #0x17] - cmp r0, #3 - bne _080717B0 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080717CA - adds r0, r4, #0 - bl sub_080717F8 - b _080717CA - .align 2, 0 -_080717AC: .4byte gArea -_080717B0: - cmp r0, #6 - bne _080717C0 - ldr r0, _080717BC @ =gUnk_0813AB58 - bl DoExitTransition - b _080717CA - .align 2, 0 -_080717BC: .4byte gUnk_0813AB58 -_080717C0: - movs r0, #1 - strb r0, [r1, #0x19] - b _080717CA -_080717C6: - subs r0, #1 - strb r0, [r4, #0xe] -_080717CA: - pop {r4, pc} - - thumb_func_start sub_080717CC -sub_080717CC: @ 0x080717CC - push {lr} - adds r1, r0, #0 - ldr r0, _080717E4 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080717F4 - ldrb r0, [r1, #0xe] - cmp r0, #0 - beq _080717E8 - subs r0, #1 - strb r0, [r1, #0xe] - b _080717F4 - .align 2, 0 -_080717E4: .4byte gFadeControl -_080717E8: - adds r0, r1, #0 - bl sub_080717F8 - movs r0, #0x10 - bl sub_080500F4 -_080717F4: - pop {pc} - .align 2, 0 - - thumb_func_start sub_080717F8 -sub_080717F8: @ 0x080717F8 - push {r4, lr} - ldr r2, _08071850 @ =gArea - ldrb r1, [r2, #0x16] - lsls r1, r1, #1 - strb r1, [r0, #0x14] - ldr r3, _08071854 @ =gUnk_0811BAC4 - ldrb r1, [r2, #0x16] - lsls r1, r1, #2 - adds r1, r1, r3 - ldrh r1, [r1] - ldrh r4, [r2, #0x12] - adds r1, r1, r4 - movs r4, #0 - strh r1, [r0, #0x2e] - ldrb r1, [r2, #0x16] - lsls r1, r1, #1 - adds r1, #1 - lsls r1, r1, #1 - adds r1, r1, r3 - ldrh r1, [r1] - ldrh r3, [r2, #0x14] - adds r1, r1, r3 - strh r1, [r0, #0x32] - movs r1, #0xb4 - strb r1, [r2, #0x1a] - ldr r1, _08071858 @ =gUnk_02034490 - strb r4, [r1] - movs r1, #9 - strb r1, [r0, #0xc] - strb r4, [r0, #0xd] - ldr r3, _0807185C @ =gPlayerState - ldr r1, [r3, #0x30] - movs r2, #0x21 - rsbs r2, r2, #0 - ands r1, r2 - movs r2, #0x80 - orrs r1, r2 - str r1, [r3, #0x30] - bl sub_0805EC60 - bl UnfreezeTime - pop {r4, pc} - .align 2, 0 -_08071850: .4byte gArea -_08071854: .4byte gUnk_0811BAC4 -_08071858: .4byte gUnk_02034490 -_0807185C: .4byte gPlayerState - - thumb_func_start sub_08071860 -sub_08071860: @ 0x08071860 - push {r4, lr} - adds r4, r0, #0 - bl sub_08078EFC - cmp r0, #0 - beq _08071876 - bl sub_08056360 - bl sub_08071A6C - b _08071896 -_08071876: - ldr r0, _08071898 @ =gPlayerState - adds r0, #0xa8 - movs r1, #0x13 - strb r1, [r0] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldr r1, _0807189C @ =gUnk_0811BAD4 - ldrb r0, [r4, #0xd] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 -_08071896: - pop {r4, pc} - .align 2, 0 -_08071898: .4byte gPlayerState -_0807189C: .4byte gUnk_0811BAD4 - - thumb_func_start sub_080718A0 -sub_080718A0: @ 0x080718A0 - push {r4, r5, lr} - adds r4, r0, #0 - bl ResetPlayer - ldr r0, _080718EC @ =gUnk_03000B80 - adds r0, #0x63 - movs r1, #0 - strb r1, [r0] - adds r0, r4, #0 - adds r0, #0x3d - strb r1, [r0] - ldr r1, _080718F0 @ =gUnk_03003DC0 - movs r2, #6 - movs r0, #6 - strb r0, [r1] - ldrb r1, [r4, #0x11] - subs r0, #0x16 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0x11] - ldr r5, _080718F4 @ =gPlayerState - ldr r0, [r5, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080718F8 - movs r0, #2 - strb r0, [r4, #0xd] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0x3b - ands r0, r1 - strb r0, [r2] - bl sub_08052BB8 - b _08071938 - .align 2, 0 -_080718EC: .4byte gUnk_03000B80 -_080718F0: .4byte gUnk_03003DC0 -_080718F4: .4byte gPlayerState -_080718F8: - ldrb r0, [r5, #2] - cmp r0, #0 - bne _08071928 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - ldrb r0, [r4, #0x14] - cmp r0, #2 - bne _08071914 - ldr r0, _08071910 @ =0x000003CA - b _08071916 - .align 2, 0 -_08071910: .4byte 0x000003CA -_08071914: - ldr r0, _08071924 @ =0x000003C6 -_08071916: - strh r0, [r5, #8] - ldrb r1, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - b _08071938 - .align 2, 0 -_08071924: .4byte 0x000003C6 -_08071928: - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _08071938 - strb r0, [r5, #2] -_08071938: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0807193C -sub_0807193C: @ 0x0807193C - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08071986 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - adds r0, r4, #0 - movs r1, #6 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - str r0, [r4, #0x54] - cmp r0, #0 - beq _08071986 - ldrb r0, [r4, #0x14] - cmp r0, #2 - bne _0807197C - ldr r1, _08071978 @ =gPlayerState - movs r0, #0xf3 - lsls r0, r0, #2 - b _08071980 - .align 2, 0 -_08071978: .4byte gPlayerState -_0807197C: - ldr r1, _08071988 @ =gPlayerState - ldr r0, _0807198C @ =0x000003C7 -_08071980: - strh r0, [r1, #8] - bl sub_08052BB8 -_08071986: - pop {r4, pc} - .align 2, 0 -_08071988: .4byte gPlayerState -_0807198C: .4byte 0x000003C7 - - thumb_func_start sub_08071990 -sub_08071990: @ 0x08071990 - push {r4, lr} - adds r2, r0, #0 - ldr r0, _080719C0 @ =gTextBox - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _080719E2 - ldrb r0, [r2, #0xd] - adds r0, #1 - strb r0, [r2, #0xd] - ldr r3, _080719C4 @ =gPlayerState - ldr r0, [r3, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - bne _080719D8 - ldrb r0, [r2, #0x14] - cmp r0, #2 - bne _080719CC - ldr r0, _080719C8 @ =0x000003CD - strh r0, [r3, #8] - b _08071A4A - .align 2, 0 -_080719C0: .4byte gTextBox -_080719C4: .4byte gPlayerState -_080719C8: .4byte 0x000003CD -_080719CC: - ldr r0, _080719D4 @ =0x000003C9 - strh r0, [r3, #8] - b _08071A4A - .align 2, 0 -_080719D4: .4byte 0x000003C9 -_080719D8: - bl sub_08071A6C - bl sub_08079258 - b _08071A4A -_080719E2: - ldr r4, _08071A20 @ =gPlayerState - ldr r0, [r4, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - bne _08071A4A - ldrb r0, [r2, #0x14] - movs r3, #0 - cmp r0, #2 - bne _080719F8 - movs r3, #4 -_080719F8: - ldr r0, [r2, #0x54] - ldrb r0, [r0, #0xe] - cmp r0, #0 - beq _08071A24 - adds r0, r3, #0 - adds r0, #0xc8 - adds r1, r2, #0 - adds r1, #0x58 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - ldrb r1, [r1] - cmp r0, r1 - beq _08071A44 - movs r1, #0xf2 - lsls r1, r1, #2 - adds r0, r1, #0 - adds r0, r3, r0 - strh r0, [r4, #8] - b _08071A4A - .align 2, 0 -_08071A20: .4byte gPlayerState -_08071A24: - adds r0, r3, #0 - adds r0, #0xc7 - adds r1, r2, #0 - adds r1, #0x58 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - ldrb r1, [r1] - cmp r0, r1 - beq _08071A44 - ldr r1, _08071A40 @ =0x000003C7 - adds r0, r3, r1 - strh r0, [r4, #8] - b _08071A4A - .align 2, 0 -_08071A40: .4byte 0x000003C7 -_08071A44: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_08071A4A: - pop {r4, pc} - - thumb_func_start sub_08071A4C -sub_08071A4C: @ 0x08071A4C - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08071A68 - bl sub_08071A6C - bl sub_0807921C -_08071A68: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08071A6C -sub_08071A6C: @ 0x08071A6C - ldr r1, _08071A84 @ =gUnk_03003DC0 - movs r0, #0 - strb r0, [r1] - ldr r3, _08071A88 @ =gPlayerEntity - ldrb r1, [r3, #0x11] - lsrs r2, r1, #4 - subs r0, #0x10 - ands r0, r1 - orrs r0, r2 - strb r0, [r3, #0x11] - bx lr - .align 2, 0 -_08071A84: .4byte gUnk_03003DC0 -_08071A88: .4byte gPlayerEntity - - thumb_func_start sub_08071A8C -sub_08071A8C: @ 0x08071A8C - push {lr} - ldr r1, _08071AA8 @ =gPlayerState - adds r1, #0xa8 - movs r2, #0x19 - strb r2, [r1] - ldr r2, _08071AAC @ =gUnk_0811BAE4 - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08071AA8: .4byte gPlayerState -_08071AAC: .4byte gUnk_0811BAE4 - - thumb_func_start sub_08071AB0 -sub_08071AB0: @ 0x08071AB0 - push {r4, lr} - adds r3, r0, #0 - ldrb r0, [r3, #0xd] - adds r0, #1 - strb r0, [r3, #0xd] - ldr r1, _08071AD8 @ =gPlayerState - ldr r2, [r1, #0x30] - movs r0, #1 - orrs r2, r0 - str r2, [r1, #0x30] - ldrb r4, [r3, #0xa] - cmp r4, #1 - bne _08071ADC - movs r1, #0 - movs r0, #0 - strh r0, [r3, #0x24] - strb r1, [r3, #0xe] - strb r4, [r3, #0xf] - b _08071AE8 - .align 2, 0 -_08071AD8: .4byte gPlayerState -_08071ADC: - movs r0, #0x80 - ands r2, r0 - cmp r2, #0 - beq _08071AE6 - movs r0, #0x40 -_08071AE6: - strh r0, [r3, #0x24] -_08071AE8: - adds r0, r3, #0 - bl sub_08071AF0 - pop {r4, pc} - - thumb_func_start sub_08071AF0 -sub_08071AF0: @ 0x08071AF0 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _08071B34 @ =gPlayerState - adds r0, r5, #0 - adds r0, #0x80 - movs r1, #0 - strh r1, [r0] - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _08071B44 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08071B58 - ldr r0, _08071B38 @ =gUnk_0811BAF0 - ldrb r1, [r4, #0xe] - lsls r1, r1, #2 - adds r1, r1, r0 - ldrb r2, [r1] - adds r0, r2, #0 - cmp r0, #0xff - beq _08071B3C - strb r2, [r4, #0xf] - ldrh r0, [r1, #2] - strh r0, [r4, #0x24] - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - b _08071B58 - .align 2, 0 -_08071B34: .4byte gPlayerState -_08071B38: .4byte gUnk_0811BAF0 -_08071B3C: - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b _08071B5C -_08071B44: - ldrb r0, [r5, #6] - subs r0, #1 - strb r0, [r5, #6] - movs r1, #0x7f - ands r0, r1 - cmp r0, #0 - bne _08071B58 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] -_08071B58: - bl sub_08079E08 -_08071B5C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08071B60 -sub_08071B60: @ 0x08071B60 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _08071BAC @ =gPlayerState - movs r2, #0 - movs r0, #2 - strb r0, [r5, #6] - ldr r0, [r5, #0x30] - movs r1, #2 - rsbs r1, r1, #0 - ands r0, r1 - str r0, [r5, #0x30] - strb r2, [r4, #0xa] - adds r0, r4, #0 - adds r0, #0x42 - strb r2, [r0] - adds r0, r4, #0 - bl sub_080728AC - movs r0, #6 - strb r0, [r4, #0xf] - ldr r0, [r5, #0x30] - movs r1, #0x80 - ands r0, r1 - cmp r0, #0 - bne _08071BA8 - movs r0, #0x82 - lsls r0, r0, #1 - strh r0, [r5, #8] - movs r0, #3 - strh r0, [r4, #0x12] - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r1, #0x3c - adds r0, r4, #0 - bl InitAnimationForceUpdate -_08071BA8: - pop {r4, r5, pc} - .align 2, 0 -_08071BAC: .4byte gPlayerState - - thumb_func_start sub_08071BB0 -sub_08071BB0: @ 0x08071BB0 - push {lr} - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - ldr r2, _08071BD4 @ =gUnk_0811BB2C - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - ldr r0, _08071BD8 @ =gPlayerState - adds r0, #0xa8 - movs r1, #0x12 - strb r1, [r0] - pop {pc} - .align 2, 0 -_08071BD4: .4byte gUnk_0811BB2C -_08071BD8: .4byte gPlayerState - - thumb_func_start sub_08071BDC -sub_08071BDC: @ 0x08071BDC - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _08071C10 @ =gPlayerState - ldr r0, [r5, #0x30] - movs r1, #0x88 - lsls r1, r1, #1 - ands r0, r1 - cmp r0, #0 - bne _08071C9C - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - beq _08071C1C - ldr r0, [r5, #0x30] - movs r1, #8 - ands r0, r1 - cmp r0, #0 - beq _08071C14 - movs r0, #0x84 - lsls r0, r0, #3 - strh r0, [r5, #8] - b _08071C9C - .align 2, 0 -_08071C10: .4byte gPlayerState -_08071C14: - movs r0, #0x81 - lsls r0, r0, #4 - strh r0, [r5, #8] - b _08071C9C -_08071C1C: - strb r0, [r5, #0xc] - ldr r1, [r5, #0x30] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08071C4C - ldrb r0, [r5, #0x12] - subs r0, #8 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #2 - bhi _08071C42 - adds r0, r4, #0 - bl sub_0807A298 - bl sub_08079458 - movs r0, #0xa - strb r0, [r4, #0xc] -_08071C42: - ldr r0, _08071C48 @ =0x00000C1A - b _08071C5A - .align 2, 0 -_08071C48: .4byte 0x00000C1A -_08071C4C: - movs r0, #8 - ands r1, r0 - movs r0, #0xde - lsls r0, r0, #1 - cmp r1, #0 - beq _08071C5A - ldr r0, _08071CA0 @ =0x00000459 -_08071C5A: - ldr r2, _08071CA4 @ =gPlayerState - movs r3, #0 - strh r0, [r2, #8] - ldr r0, [r2, #0x30] - ldr r1, _08071CA8 @ =0xFEDBF2FE - ands r0, r1 - str r0, [r2, #0x30] - movs r0, #1 - strb r0, [r4, #0xd] - movs r0, #4 - strb r0, [r4, #0x14] - adds r5, r4, #0 - adds r5, #0x29 - ldrb r1, [r5] - subs r0, #0x3d - ands r0, r1 - movs r1, #8 - orrs r0, r1 - strb r0, [r5] - ldrb r0, [r4, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x18] - strb r3, [r2, #2] - strb r3, [r2, #6] - adds r0, r4, #0 - bl sub_0800451C - bl ResetPlayer - movs r0, #0x87 - bl SoundReq -_08071C9C: - pop {r4, r5, pc} - .align 2, 0 -_08071CA0: .4byte 0x00000459 -_08071CA4: .4byte gPlayerState -_08071CA8: .4byte 0xFEDBF2FE - - thumb_func_start sub_08071CAC -sub_08071CAC: @ 0x08071CAC - push {r4, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r3, #0x80 - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _08071CFE - ldr r1, _08071CE0 @ =gPlayerState - ldr r2, [r1, #0x30] - adds r0, r2, #0 - ands r0, r3 - cmp r0, #0 - bne _08071CEC - movs r0, #8 - ands r2, r0 - ldr r0, _08071CE4 @ =0x000002BD - cmp r2, #0 - beq _08071CEE - ldr r0, _08071CE8 @ =0x0000045A - b _08071CEE - .align 2, 0 -_08071CE0: .4byte gPlayerState -_08071CE4: .4byte 0x000002BD -_08071CE8: .4byte 0x0000045A -_08071CEC: - ldr r0, _08071D00 @ =0x00000C1B -_08071CEE: - strh r0, [r1, #8] - movs r0, #2 - strb r0, [r4, #0xd] - movs r0, #0xf0 - strb r0, [r4, #0xe] - movs r0, #0x7b - bl SoundReq -_08071CFE: - pop {r4, pc} - .align 2, 0 -_08071D00: .4byte 0x00000C1B - - thumb_func_start sub_08071D04 -sub_08071D04: @ 0x08071D04 - push {r4, r5, lr} - adds r5, r0, #0 - bl UpdateAnimationSingleFrame - adds r0, r5, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #0 - beq _08071D7A - movs r4, #0 - movs r0, #0x28 - bl sub_080544DC - adds r1, r0, #0 - cmp r1, #0 - beq _08071D3A - ldr r0, _08071D6C @ =gSave - adds r0, r0, r1 - adds r0, #0xb5 - movs r1, #0x20 - strb r1, [r0] - movs r0, #0x40 - movs r1, #0x60 - movs r2, #2 - bl CreateObject - movs r4, #0x20 -_08071D3A: - cmp r4, #0 - beq _08071D74 - adds r0, r4, #0 - bl ModHealth - movs r2, #0 - movs r0, #3 - strb r0, [r5, #0xd] - ldr r1, _08071D70 @ =gPlayerState - adds r0, r1, #0 - adds r0, #0x3c - strb r2, [r0] - movs r0, #0xff - strb r0, [r5, #0x15] - movs r3, #0 - strh r2, [r5, #0x24] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r5, #0x20] - movs r0, #1 - strb r0, [r1, #2] - adds r1, #0x26 - strb r3, [r1] - b _08071D7A - .align 2, 0 -_08071D6C: .4byte gSave -_08071D70: .4byte gPlayerState -_08071D74: - ldr r1, _08071D7C @ =gScreenTransition - movs r0, #1 - strb r0, [r1, #5] -_08071D7A: - pop {r4, r5, pc} - .align 2, 0 -_08071D7C: .4byte gScreenTransition - - thumb_func_start sub_08071D80 -sub_08071D80: @ 0x08071D80 - push {r4, r5, lr} - adds r4, r0, #0 - bl UpdateAnimationSingleFrame - ldr r5, _08071DB4 @ =gPlayerState - movs r0, #1 - strb r0, [r5, #0x14] - adds r0, r4, #0 - bl sub_08073904 - ldrb r1, [r5, #2] - movs r0, #7 - ands r0, r1 - cmp r0, #3 - bne _08071DB2 - movs r0, #0 - strb r0, [r5, #2] - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0xe2 - strb r0, [r1] - bl UnfreezeTime - bl sub_080791D0 -_08071DB2: - pop {r4, r5, pc} - .align 2, 0 -_08071DB4: .4byte gPlayerState - - thumb_func_start sub_08071DB8 -sub_08071DB8: @ 0x08071DB8 - push {lr} - ldr r2, _08071DCC @ =gUnk_0811BB3C - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08071DCC: .4byte gUnk_0811BB3C - - thumb_func_start sub_08071DD0 -sub_08071DD0: @ 0x08071DD0 - push {lr} - adds r2, r0, #0 - ldr r1, _08071DF4 @ =gPlayerState - adds r0, r1, #0 - adds r0, #0x38 - ldrb r0, [r0] - strb r0, [r2, #0xe] - adds r3, r1, #0 - adds r3, #0x39 - ldrb r0, [r3] - cmp r0, #0 - beq _08071DF8 - movs r0, #0 - strb r0, [r3] - movs r0, #2 - strb r0, [r2, #0xd] - adds r0, #0xfe - b _08071E00 - .align 2, 0 -_08071DF4: .4byte gPlayerState -_08071DF8: - movs r0, #1 - strb r0, [r2, #0xd] - movs r0, #0x8a - lsls r0, r0, #1 -_08071E00: - strh r0, [r1, #8] - pop {pc} - - thumb_func_start sub_08071E04 -sub_08071E04: @ 0x08071E04 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x34] - cmp r0, #0 - beq _08071E38 - ldr r5, _08071E34 @ =gPlayerState - ldrb r0, [r5, #0x14] - cmp r0, #0 - bne _08071E38 - bl sub_0807A1B8 - ldrb r0, [r5, #0x12] - cmp r0, #1 - bne _08071E38 - movs r0, #7 - strb r0, [r5, #0x11] - ldr r0, [r5, #0x30] - movs r1, #0x80 - lsls r1, r1, #2 - orrs r0, r1 - str r0, [r5, #0x30] - bl sub_080791BC - b _08071E72 - .align 2, 0 -_08071E34: .4byte gPlayerState -_08071E38: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - bl sub_08079B24 - cmp r0, #0 - bne _08071E4E - adds r0, r4, #0 - bl sub_08079708 - b _08071E72 -_08071E4E: - bl sub_080792D8 - bl sub_0807953C - cmp r0, #0 - beq _08071E60 - ldrb r0, [r4, #0xe] - subs r0, #2 - b _08071E64 -_08071E60: - ldrb r0, [r4, #0xe] - subs r0, #1 -_08071E64: - strb r0, [r4, #0xe] - movs r0, #0xe - ldrsb r0, [r4, r0] - cmp r0, #0 - bgt _08071E72 - bl sub_080791BC -_08071E72: - pop {r4, r5, pc} - - thumb_func_start sub_08071E74 -sub_08071E74: @ 0x08071E74 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x80 - lsls r1, r1, #6 - bl sub_08003FC4 - bl sub_08079E08 - ldrb r0, [r4, #0xe] - adds r1, r0, #0 - adds r1, #0xff - strb r1, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08071E96 - bl sub_080791BC -_08071E96: - pop {r4, pc} - - thumb_func_start sub_08071E98 -sub_08071E98: @ 0x08071E98 + thumb_func_start PlayerEmptyBottle +PlayerEmptyBottle: @ 0x08071E98 push {lr} ldr r2, _08071EAC @ =gUnk_0811BB48 ldrb r1, [r0, #0xd] @@ -1403,8 +90,8 @@ _08071F32: .align 2, 0 _08071F34: .4byte gPlayerState - thumb_func_start sub_08071F38 -sub_08071F38: @ 0x08071F38 + thumb_func_start PlayerFrozen +PlayerFrozen: @ 0x08071F38 push {lr} ldr r2, _08071F4C @ =gUnk_0811BB50 ldrb r1, [r0, #0xd] @@ -1754,8 +441,8 @@ _080721DE: .align 2, 0 _080721E0: .4byte gPlayerState - thumb_func_start sub_080721E4 -sub_080721E4: @ 0x080721E4 + thumb_func_start PlayerPull +PlayerPull: @ 0x080721E4 push {lr} ldr r1, _08072208 @ =gPlayerState adds r1, #0xa8 @@ -1865,8 +552,8 @@ _080722B0: .align 2, 0 _080722B4: .4byte 0x00000944 - thumb_func_start sub_080722B8 -sub_080722B8: @ 0x080722B8 + thumb_func_start PlayerLava +PlayerLava: @ 0x080722B8 push {lr} ldr r1, _080722D4 @ =gPlayerState adds r1, #0xa8 @@ -2026,7 +713,7 @@ sub_080723D0: @ 0x080723D0 strb r0, [r1] subs r0, #0x16 bl ModHealth - bl sub_08079458 + bl RespawnPlayer _0807240A: pop {r4, pc} @@ -2059,7 +746,7 @@ sub_0807240C: @ 0x0807240C movs r0, #2 rsbs r0, r0, #0 bl ModHealth - bl sub_08079458 + bl RespawnPlayer _08072448: pop {pc} .align 2, 0 @@ -2125,8 +812,8 @@ _080724AE: _080724C2: pop {pc} - thumb_func_start sub_080724C4 -sub_080724C4: @ 0x080724C4 + thumb_func_start PlayerRoomTransition +PlayerRoomTransition: @ 0x080724C4 push {lr} ldr r2, _080724D8 @ =gUnk_0811BB88 ldrb r1, [r0, #0xd] @@ -2303,8 +990,8 @@ _08072620: _08072624: .4byte gPlayerState _08072628: .4byte gPlayerEntity - thumb_func_start sub_0807262C -sub_0807262C: @ 0x0807262C + thumb_func_start PlayerRoll +PlayerRoll: @ 0x0807262C push {lr} ldr r1, _08072648 @ =gPlayerState adds r1, #0xa8 @@ -2714,8 +1401,8 @@ _08072940: .4byte gPlayerState _08072944: .4byte gPlayerEntity _08072948: .4byte gRoomControls - thumb_func_start sub_0807294C -sub_0807294C: @ 0x0807294C + thumb_func_start PlayerInHole +PlayerInHole: @ 0x0807294C push {lr} ldr r1, _08072968 @ =gPlayerState adds r1, #0xa8 @@ -3776,8 +2463,8 @@ _080731A4: pop {r4, pc} .align 2, 0 - thumb_func_start sub_080731A8 -sub_080731A8: @ 0x080731A8 + thumb_func_start PlayerUseEntrance +PlayerUseEntrance: @ 0x080731A8 push {r4, lr} adds r4, r0, #0 ldr r0, _080731D0 @ =gPlayerState diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s index 45299238..a3a199e9 100644 --- a/asm/code_080732D0.s +++ b/asm/code_080732D0.s @@ -175,8 +175,8 @@ _08073418: .align 2, 0 _0807341C: .4byte gRoomControls - thumb_func_start sub_08073420 -sub_08073420: @ 0x08073420 + thumb_func_start PlayerParachute +PlayerParachute: @ 0x08073420 push {r4, lr} adds r4, r0, #0 bl sub_08078EFC @@ -1280,8 +1280,8 @@ _08073C58: _08073C66: pop {pc} - thumb_func_start sub_08073C68 -sub_08073C68: @ 0x08073C68 + thumb_func_start PlayerMinish +PlayerMinish: @ 0x08073C68 push {lr} ldr r2, _08073C7C @ =gUnk_0811BC60 ldrb r1, [r0, #0xd] @@ -2760,7 +2760,7 @@ _0807476C: strb r0, [r1] subs r0, #0x24 bl ModHealth - bl sub_08079458 + bl RespawnPlayer _08074792: pop {r4, pc} .align 2, 0 diff --git a/asm/code_08078778.s b/asm/code_08078778.s index e1ddb07e..28d49c0d 100644 --- a/asm/code_08078778.s +++ b/asm/code_08078778.s @@ -866,7 +866,7 @@ sub_08078EFC: @ 0x08078EFC strb r2, [r0, #0xc] strb r1, [r0, #0xd] strb r1, [r3, #0xc] - bl sub_08070680 + bl DoPlayerAction movs r0, #1 b _08078F22 .align 2, 0 @@ -1583,8 +1583,8 @@ _08079454: _08079456: pop {r4, r5, pc} - thumb_func_start sub_08079458 -sub_08079458: @ 0x08079458 + thumb_func_start RespawnPlayer +RespawnPlayer: @ 0x08079458 push {r4, r5, lr} ldr r4, _08079498 @ =gPlayerEntity movs r1, #0 @@ -1915,7 +1915,7 @@ _080796C8: strb r1, [r0, #0x10] movs r1, #0x81 strb r1, [r4, #2] - bl sub_08070680 + bl DoPlayerAction movs r0, #1 b _080796FE .align 2, 0 @@ -2537,7 +2537,7 @@ sub_08079B24: @ 0x08079B24 ldrb r0, [r0] cmp r0, #0 beq _08079B6C - bl sub_08079458 + bl RespawnPlayer b _08079BC0 .align 2, 0 _08079B60: .4byte gPlayerEntity @@ -5401,8 +5401,8 @@ sub_0807B0C8: @ 0x0807B0C8 .align 2, 0 _0807B0F8: .4byte gPlayerEntity - thumb_func_start sub_0807B0FC -sub_0807B0FC: @ 0x0807B0FC + thumb_func_start PlayerWarp +PlayerWarp: @ 0x0807B0FC push {lr} ldr r2, _0807B110 @ =gUnk_0811C27C ldrb r1, [r0, #0xd] diff --git a/asm/jarPortal.s b/asm/jarPortal.s index 09c48e54..8b057fc8 100644 --- a/asm/jarPortal.s +++ b/asm/jarPortal.s @@ -230,7 +230,7 @@ sub_0808C01C: @ 0x0808C01C subs r1, #0x18 movs r2, #0x30 movs r3, #0x30 - bl sub_0806FBFC + bl CheckPlayerProximity cmp r0, #0 beq _0808C0A6 ldr r2, _0808C06C @ =gArea diff --git a/asm/non_matching/player/sub_08071634.s b/asm/non_matching/player/sub_08071634.s new file mode 100644 index 00000000..96fd319c --- /dev/null +++ b/asm/non_matching/player/sub_08071634.s @@ -0,0 +1,172 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _08071654 + adds r1, r5, #0 + adds r1, #0x80 + ldr r0, [r1] + adds r0, #0x80 + lsls r0, r0, #0x14 + lsrs r7, r0, #0x17 + adds r4, r1, #0 + b _0807166A +_08071654: + adds r4, r5, #0 + adds r4, #0x80 + ldrb r1, [r4] + lsrs r1, r1, #6 + movs r0, #3 + eors r1, r0 + adds r1, #1 + movs r0, #0x10 + bl __divsi3 + asrs r7, r0, #1 +_0807166A: + adds r0, r5, #0 + adds r0, #0x84 + ldr r3, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r0, #0 + cmp r3, r1 + bls _08071684 + adds r0, r3, #0 + adds r0, #0x80 + lsls r0, r0, #0x14 + lsrs r3, r0, #0x17 + b _08071694 +_08071684: + cmp r3, r1 + bne _0807168C + movs r3, #0x10 + b _08071694 +_0807168C: + ldr r1, _080716B0 @ =gUnk_0811BABC + lsrs r0, r3, #5 + adds r0, r0, r1 + ldrb r3, [r0] +_08071694: + movs r0, #0x80 + lsls r0, r0, #9 + mov r8, r0 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #2 + beq _080716EA + cmp r0, #2 + bgt _080716B4 + cmp r0, #1 + beq _080716BA + b _08071754 + .align 2, 0 +_080716B0: .4byte gUnk_0811BABC +_080716B4: + cmp r0, #3 + beq _0807171E + b _08071754 +_080716BA: + movs r1, #0x29 + adds r1, r1, r5 + mov ip, r1 + ldrb r1, [r1] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + mov r1, ip + strb r0, [r1] + ldr r0, [r4] + cmp r0, #0x80 + bls _080716D6 + subs r0, r0, r7 + str r0, [r4] +_080716D6: + lsls r1, r3, #1 + ldr r0, [r2] + adds r0, r0, r1 + str r0, [r2] + mov r0, r8 + lsls r1, r0, #1 + ldr r0, [r5, #0x30] + adds r0, r0, r1 + str r0, [r5, #0x30] + b _08071754 +_080716EA: + ldr r0, [r4] + adds r0, r0, r7 + str r0, [r4] + ldr r1, [r2] + movs r6, #0x80 + lsls r6, r6, #1 + cmp r1, r6 + bls _08071710 + ldr r0, _0807170C @ =0x0000017F + cmp r1, r0 + bhi _08071702 + lsrs r3, r3, #1 +_08071702: + subs r0, r1, r3 + cmp r0, #0xff + bhi _08071716 + str r6, [r2] + b _08071718 + .align 2, 0 +_0807170C: .4byte 0x0000017F +_08071710: + cmp r1, #0x80 + bls _08071718 + subs r0, r1, r3 +_08071716: + str r0, [r2] +_08071718: + ldr r0, [r5, #0x34] + mov r1, r8 + b _08071750 +_0807171E: + ldr r0, [r4] + ldr r6, _08071740 @ =0x0000033F + cmp r0, r6 + bhi _0807172A + adds r0, r0, r7 + str r0, [r4] +_0807172A: + ldr r1, [r2] + cmp r1, r6 + bls _08071744 + movs r0, #8 + strb r0, [r5, #0xe] + movs r0, #0x1e + strb r0, [r5, #0xf] + movs r0, #6 + strb r0, [r5, #0xd] + b _0807174A + .align 2, 0 +_08071740: .4byte 0x0000033F +_08071744: + lsls r0, r3, #1 + adds r0, r1, r0 + str r0, [r2] +_0807174A: + mov r0, r8 + lsls r1, r0, #1 + ldr r0, [r5, #0x34] +_08071750: + subs r0, r0, r1 + str r0, [r5, #0x34] +_08071754: + ldr r1, [r4] + ldr r2, [r2] + adds r0, r5, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r5, #0 + bl UpdateAnimationSingleFrame + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .syntax divided \ No newline at end of file diff --git a/asm/objectB.s b/asm/objectB.s index e7f17d89..cfb07492 100644 --- a/asm/objectB.s +++ b/asm/objectB.s @@ -281,7 +281,7 @@ _08083DA0: _08083DA8: .4byte gSave _08083DAC: ldrb r0, [r4, #0xa] - bl sub_080544DC + bl GetBottleContaining adds r1, r0, #0 cmp r1, #0 beq _08083DC8 diff --git a/data/data_08114208.s b/data/data_08114208.s index 18307d1d..fc5876e7 100644 --- a/data/data_08114208.s +++ b/data/data_08114208.s @@ -708,141 +708,3 @@ gUnk_0811B9D0:: @ 0811B9D0 gUnk_0811B9D8:: @ 0811B9D8 .incbin "baserom.gba", 0x11B9D8, 0x0000008 - -gUnk_0811B9E0:: @ 0811B9E0 - .incbin "baserom.gba", 0x11B9E0, 0x0000080 - -gUnk_0811BA60:: @ 0811BA60 - .incbin "baserom.gba", 0x11BA60, 0x0000008 - -gUnk_0811BA68:: @ 0811BA68 - .incbin "baserom.gba", 0x11BA68, 0x000000C - -gUnk_0811BA74:: @ 0811BA74 - .incbin "baserom.gba", 0x11BA74, 0x0000008 - -gUnk_0811BA7C:: @ 0811BA7C - .incbin "baserom.gba", 0x11BA7C, 0x000000C - -gUnk_0811BA88:: @ 0811BA88 - .incbin "baserom.gba", 0x11BA88, 0x000000C - -gUnk_0811BA94:: @ 0811BA94 - .incbin "baserom.gba", 0x11BA94, 0x0000008 - -gUnk_0811BA9C:: @ 0811BA9C - .incbin "baserom.gba", 0x11BA9C, 0x0000020 - -gUnk_0811BABC:: @ 0811BABC - .incbin "baserom.gba", 0x11BABC, 0x0000008 - -gUnk_0811BAC4:: @ 0811BAC4 - .incbin "baserom.gba", 0x11BAC4, 0x0000010 - -gUnk_0811BAD4:: @ 0811BAD4 - .incbin "baserom.gba", 0x11BAD4, 0x0000010 - -gUnk_0811BAE4:: @ 0811BAE4 - .incbin "baserom.gba", 0x11BAE4, 0x000000C - -gUnk_0811BAF0:: @ 0811BAF0 - .incbin "baserom.gba", 0x11BAF0, 0x000003C - -gUnk_0811BB2C:: @ 0811BB2C - .incbin "baserom.gba", 0x11BB2C, 0x000000C - -gUnk_0811BB38:: @ 0811BB38 - .incbin "baserom.gba", 0x11BB38, 0x0000004 - -gUnk_0811BB3C:: @ 0811BB3C - .incbin "baserom.gba", 0x11BB3C, 0x000000C - -gUnk_0811BB48:: @ 0811BB48 - .incbin "baserom.gba", 0x11BB48, 0x0000008 - -gUnk_0811BB50:: @ 0811BB50 - .incbin "baserom.gba", 0x11BB50, 0x0000008 - -gUnk_0811BB58:: @ 0811BB58 - .incbin "baserom.gba", 0x11BB58, 0x0000008 - -gUnk_0811BB60:: @ 0811BB60 - .incbin "baserom.gba", 0x11BB60, 0x0000008 - -gUnk_0811BB68:: @ 0811BB68 - .incbin "baserom.gba", 0x11BB68, 0x0000008 - -gUnk_0811BB70:: @ 0811BB70 - .incbin "baserom.gba", 0x11BB70, 0x0000010 - -gUnk_0811BB80:: @ 0811BB80 - .incbin "baserom.gba", 0x11BB80, 0x0000008 - -gUnk_0811BB88:: @ 0811BB88 - .incbin "baserom.gba", 0x11BB88, 0x0000008 - -gUnk_0811BB90:: @ 0811BB90 - .incbin "baserom.gba", 0x11BB90, 0x0000008 - -gUnk_0811BB98:: @ 0811BB98 - .incbin "baserom.gba", 0x11BB98, 0x0000014 - -gUnk_0811BBAC:: @ 0811BBAC - .incbin "baserom.gba", 0x11BBAC, 0x0000010 - -gUnk_0811BBBC:: @ 0811BBBC - .incbin "baserom.gba", 0x11BBBC, 0x0000006 - -gUnk_0811BBC2:: @ 0811BBC2 - .incbin "baserom.gba", 0x11BBC2, 0x0000006 - -gUnk_0811BBC8:: @ 0811BBC8 - .incbin "baserom.gba", 0x11BBC8, 0x0000006 - -gUnk_0811BBCE:: @ 0811BBCE - .incbin "baserom.gba", 0x11BBCE, 0x0000006 - -gUnk_0811BBD4:: @ 0811BBD4 - .incbin "baserom.gba", 0x11BBD4, 0x0000010 - -gUnk_0811BBE4:: @ 0811BBE4 - .incbin "baserom.gba", 0x11BBE4, 0x0000008 - -gUnk_0811BBEC:: @ 0811BBEC - .incbin "baserom.gba", 0x11BBEC, 0x000000C - -gUnk_0811BBF8:: @ 0811BBF8 - .incbin "baserom.gba", 0x11BBF8, 0x0000010 - -gUnk_0811BC08:: @ 0811BC08 - .incbin "baserom.gba", 0x11BC08, 0x0000020 - -gUnk_0811BC28:: @ 0811BC28 - .incbin "baserom.gba", 0x11BC28, 0x0000008 - -gUnk_0811BC30:: @ 0811BC30 - .incbin "baserom.gba", 0x11BC30, 0x0000008 - -gUnk_0811BC38:: @ 0811BC38 - .incbin "baserom.gba", 0x11BC38, 0x0000008 - -gUnk_0811BC40:: @ 0811BC40 - .incbin "baserom.gba", 0x11BC40, 0x0000008 - -gUnk_0811BC48:: @ 0811BC48 - .incbin "baserom.gba", 0x11BC48, 0x0000018 - -gUnk_0811BC60:: @ 0811BC60 - .incbin "baserom.gba", 0x11BC60, 0x0000020 - -gUnk_0811BC80:: @ 0811BC80 - .incbin "baserom.gba", 0x11BC80, 0x0000008 - -gUnk_0811BC88:: @ 0811BC88 - .incbin "baserom.gba", 0x11BC88, 0x0000010 - -gUnk_0811BC98:: @ 0811BC98 - .incbin "baserom.gba", 0x11BC98, 0x000001C - -gUnk_0811BCB4:: @ 0811BCB4 - .incbin "baserom.gba", 0x11BCB4, 0x0000010 diff --git a/data/data_0811B9E0.s b/data/data_0811B9E0.s new file mode 100644 index 00000000..62216140 --- /dev/null +++ b/data/data_0811B9E0.s @@ -0,0 +1,140 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 + +gUnk_0811BA60:: @ 0811BA60 + .incbin "baserom.gba", 0x11BA60, 0x0000008 + +gUnk_0811BA68:: @ 0811BA68 + .incbin "baserom.gba", 0x11BA68, 0x000000C + +gUnk_0811BA74:: @ 0811BA74 + .incbin "baserom.gba", 0x11BA74, 0x0000008 + +gUnk_0811BA7C:: @ 0811BA7C + .incbin "baserom.gba", 0x11BA7C, 0x000000C + +gUnk_0811BA88:: @ 0811BA88 + .incbin "baserom.gba", 0x11BA88, 0x000000C + +gUnk_0811BA94:: @ 0811BA94 + .incbin "baserom.gba", 0x11BA94, 0x0000008 + +gUnk_0811BA9C:: @ 0811BA9C + .incbin "baserom.gba", 0x11BA9C, 0x0000020 + +gUnk_0811BABC:: @ 0811BABC + .incbin "baserom.gba", 0x11BABC, 0x0000008 + +gUnk_0811BAC4:: @ 0811BAC4 + .incbin "baserom.gba", 0x11BAC4, 0x0000010 + +gUnk_0811BAD4:: @ 0811BAD4 + .incbin "baserom.gba", 0x11BAD4, 0x0000010 + +gUnk_0811BAE4:: @ 0811BAE4 + .incbin "baserom.gba", 0x11BAE4, 0x000000C + +gUnk_0811BAF0:: @ 0811BAF0 + .incbin "baserom.gba", 0x11BAF0, 0x000003C + +gUnk_0811BB2C:: @ 0811BB2C + .incbin "baserom.gba", 0x11BB2C, 0x000000C + +gUnk_0811BB38:: @ 0811BB38 + .incbin "baserom.gba", 0x11BB38, 0x0000004 + +gUnk_0811BB3C:: @ 0811BB3C + .incbin "baserom.gba", 0x11BB3C, 0x000000C + +gUnk_0811BB48:: @ 0811BB48 + .incbin "baserom.gba", 0x11BB48, 0x0000008 + +gUnk_0811BB50:: @ 0811BB50 + .incbin "baserom.gba", 0x11BB50, 0x0000008 + +gUnk_0811BB58:: @ 0811BB58 + .incbin "baserom.gba", 0x11BB58, 0x0000008 + +gUnk_0811BB60:: @ 0811BB60 + .incbin "baserom.gba", 0x11BB60, 0x0000008 + +gUnk_0811BB68:: @ 0811BB68 + .incbin "baserom.gba", 0x11BB68, 0x0000008 + +gUnk_0811BB70:: @ 0811BB70 + .incbin "baserom.gba", 0x11BB70, 0x0000010 + +gUnk_0811BB80:: @ 0811BB80 + .incbin "baserom.gba", 0x11BB80, 0x0000008 + +gUnk_0811BB88:: @ 0811BB88 + .incbin "baserom.gba", 0x11BB88, 0x0000008 + +gUnk_0811BB90:: @ 0811BB90 + .incbin "baserom.gba", 0x11BB90, 0x0000008 + +gUnk_0811BB98:: @ 0811BB98 + .incbin "baserom.gba", 0x11BB98, 0x0000014 + +gUnk_0811BBAC:: @ 0811BBAC + .incbin "baserom.gba", 0x11BBAC, 0x0000010 + +gUnk_0811BBBC:: @ 0811BBBC + .incbin "baserom.gba", 0x11BBBC, 0x0000006 + +gUnk_0811BBC2:: @ 0811BBC2 + .incbin "baserom.gba", 0x11BBC2, 0x0000006 + +gUnk_0811BBC8:: @ 0811BBC8 + .incbin "baserom.gba", 0x11BBC8, 0x0000006 + +gUnk_0811BBCE:: @ 0811BBCE + .incbin "baserom.gba", 0x11BBCE, 0x0000006 + +gUnk_0811BBD4:: @ 0811BBD4 + .incbin "baserom.gba", 0x11BBD4, 0x0000010 + +gUnk_0811BBE4:: @ 0811BBE4 + .incbin "baserom.gba", 0x11BBE4, 0x0000008 + +gUnk_0811BBEC:: @ 0811BBEC + .incbin "baserom.gba", 0x11BBEC, 0x000000C + +gUnk_0811BBF8:: @ 0811BBF8 + .incbin "baserom.gba", 0x11BBF8, 0x0000010 + +gUnk_0811BC08:: @ 0811BC08 + .incbin "baserom.gba", 0x11BC08, 0x0000020 + +gUnk_0811BC28:: @ 0811BC28 + .incbin "baserom.gba", 0x11BC28, 0x0000008 + +gUnk_0811BC30:: @ 0811BC30 + .incbin "baserom.gba", 0x11BC30, 0x0000008 + +gUnk_0811BC38:: @ 0811BC38 + .incbin "baserom.gba", 0x11BC38, 0x0000008 + +gUnk_0811BC40:: @ 0811BC40 + .incbin "baserom.gba", 0x11BC40, 0x0000008 + +gUnk_0811BC48:: @ 0811BC48 + .incbin "baserom.gba", 0x11BC48, 0x0000018 + +gUnk_0811BC60:: @ 0811BC60 + .incbin "baserom.gba", 0x11BC60, 0x0000020 + +gUnk_0811BC80:: @ 0811BC80 + .incbin "baserom.gba", 0x11BC80, 0x0000008 + +gUnk_0811BC88:: @ 0811BC88 + .incbin "baserom.gba", 0x11BC88, 0x0000010 + +gUnk_0811BC98:: @ 0811BC98 + .incbin "baserom.gba", 0x11BC98, 0x000001C + +gUnk_0811BCB4:: @ 0811BCB4 + .incbin "baserom.gba", 0x11BCB4, 0x0000010 diff --git a/include/area.h b/include/area.h index 4d363a31..1c2ef424 100644 --- a/include/area.h +++ b/include/area.h @@ -11,14 +11,15 @@ typedef struct { u16 localFlagOffset; u8 filler[10]; u16 field_0x10; - u16 field_0x12; - u16 field_0x14; - u8 field_0x16; - u8 field_0x17; + u16 curPortalX; + u16 curPortalY; + u8 curPortalExitDirection; + u8 curPortalType; u8 field_0x18; // u8 filler3[7]; - u8 fadeOut; - u8 filler2[14]; + bool8 playShrinkSeq; + u8 unk1A; + u8 filler2[13]; u8 filler4[0x835]; u32 musicIndex; u32 pMusicIndex; diff --git a/include/entity.h b/include/entity.h index f3a76a68..929868b5 100644 --- a/include/entity.h +++ b/include/entity.h @@ -47,7 +47,7 @@ typedef struct Entity { /*0x0a*/ u8 type; // was: form /*0x0b*/ u8 type2; // was: parameter /*0x0c*/ u8 action; - /*0x0d*/ u8 previousActionFlag; + /*0x0d*/ u8 subAction; /*0x0e*/ u8 actionDelay; /*0x0f*/ u8 field_0xf; /*0x10*/ u8 flags; @@ -108,7 +108,7 @@ typedef struct Entity { /*0x3a*/ u8 field_0x3a; /*0x3b*/ u8 flags2; /*0x3c*/ u8 field_0x3c; - /*0x3d*/ s8 hurtBlinkTime; + /*0x3d*/ s8 iframes; /*0x3e*/ u8 field_0x3e; /*0x3f*/ u8 damageType; /*0x40*/ u8 field_0x40; diff --git a/include/functions.h b/include/functions.h index d6ce6fb3..ecd9b01c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -110,7 +110,7 @@ extern u32 sub_08049FDC(Entity*, u32); extern u32 sub_080041A0(Entity*, Entity*, u32, u32); extern u32 sub_08049EE4(Entity*); extern Entity* sub_0804A98C(Entity*, u8, u8); -extern u32 sub_080544DC(u32); +extern u32 GetBottleContaining(u32); extern void sub_08077E54(Entity*); extern void sub_080042BA(Entity*, u32); extern void sub_08077F24(ItemBehavior*, u32); diff --git a/include/global.h b/include/global.h index de47c6ac..6d7f2311 100644 --- a/include/global.h +++ b/include/global.h @@ -51,21 +51,21 @@ #define static_assert(cond) extern char assertion[(cond) ? 1 : -1] #if NON_MATCHING -#define asmfunc(prologue, path) +#define ASM_FUNC(path, decl) #else -#define asmfunc(prologue, path) \ - NAKED prologue { \ +#define ASM_FUNC(path, decl) \ + NAKED decl { \ asm(".include " #path); \ } #endif #if NON_MATCHING -#define NONMATCH(prologue, path) prologue +#define NONMATCH(path, decl) decl #define END_NONMATCH #else -#define NONMATCH(path, prologue) \ - NAKED prologue { \ - asm(".include " #path); \ +#define NONMATCH(path, decl) \ + NAKED decl { \ + asm(".include " #path); \ if (0) #define END_NONMATCH } #endif diff --git a/include/player.h b/include/player.h index e9d96665..da6f324b 100644 --- a/include/player.h +++ b/include/player.h @@ -6,6 +6,41 @@ #include "global.h" #include "entity.h" +enum { + PLAYER_INIT, + PLAYER_NORMAL, + PLAYER_DUMMY, + PLAYER_FALL, + PLAYER_JUMP, + PLAYER_PUSH, + PLAYER_BOUNCE, + PLAYER_08070E9C, + PLAYER_ITEMGET, + PLAYER_MINISH, + PLAYER_MINISHDIE, + PLAYER_08071DB8, + PLAYER_EMPTYBOTTLE, + PLAYER_FROZEN, + PLAYER_0807204C, + PLAYER_080720DC, + PLAYER_PULL, + PLAYER_LAVA, + PLAYER_WARP, + PLAYER_08072454, + PLAYER_DROWN, + PLAYER_USEPORTAL, + PLAYER_TALKEZLO, + PLAYER_ROOMTRANSITION, + PLAYER_ROLL, + PLAYER_080728AC, + PLAYER_INHOLE, + PLAYER_08072C9C, + PLAYER_08074C44, + PLAYER_08072F34, + PLAYER_USEENTRANCE, + PLAYER_PARACHUTE, +}; + typedef struct { /*0x00*/ u8 field_0x0[2]; /*0x02*/ u8 jumpStatus; @@ -17,12 +52,14 @@ typedef struct { /*0x0a*/ u8 field_0xa; /*0x0b*/ u8 keepFacing; /*0x0c*/ u8 playerAction; - /*0x0d*/ u8 field_0xd[2]; + /*0x0d*/ u8 field_0xd; + /*0x0e*/ u8 field_0xe; /*0x0f*/ u8 hurtBlinkSpeed; /*0x10*/ u8 field_0x10[4]; /*0x11*/ u8 field_0x14; /*0x11*/ u8 field_0x15; - /*0x14*/ u16 field_0x16[2]; + /*0x14*/ u16 startPosX; + /*0x16*/ u16 startPosY; /*0x1a*/ u8 field_0x1a[2]; /*0x1c*/ u8 field_0x1c; /*0x1d*/ u8 field_0x1d[5]; diff --git a/include/structures.h b/include/structures.h index 42e9d3ab..d6dfdd61 100644 --- a/include/structures.h +++ b/include/structures.h @@ -167,6 +167,22 @@ extern BG3Buffer gBG3Buffer; static_assert(sizeof(BG3Buffer) == 0x1000); */ +struct { + u8 filler[0x70]; +} extern gUnk_03000B80; +static_assert(sizeof(gUnk_03000B80) == 0x70); + +typedef struct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 freezeTime; + u8 unk9; +} EntityHandler; + +extern EntityHandler gUnk_03003DC0; + extern u8 gUnk_02022740[]; extern u8 gUnk_02034490[]; diff --git a/linker.ld b/linker.ld index 4a55674c..01c96243 100644 --- a/linker.ld +++ b/linker.ld @@ -1019,6 +1019,8 @@ SECTIONS { data/data_08108D30.o(.rodata); src/npc/ezloCap.o(.rodata); data/data_08114208.o(.rodata); + src/player.o(.rodata); + data/data_0811B9E0.o(.rodata); src/item.o(.rodata); data/data_0811BD44.o(.rodata); data/room_headers.o(.rodata); diff --git a/src/arm_proxy.c b/src/arm_proxy.c index e18e4a1c..05d5235f 100644 --- a/src/arm_proxy.c +++ b/src/arm_proxy.c @@ -30,7 +30,7 @@ extern void LoadResources(); extern void FadeMain(); extern u32 sub_0805E3B0(); extern void HandlePlayerLife(); -extern void sub_08070680(); +extern void DoPlayerAction(); extern void sub_080171F0(); extern void sub_08078FB0(); extern void DrawEntity(); @@ -68,17 +68,6 @@ typedef struct { } NPCStruct; extern NPCStruct gUnk_02031EC0[100]; -typedef struct { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 freezeTime; - u8 unk9; -} EntityHandler; - -extern EntityHandler gUnk_03003DC0; - typedef struct { void* last; void* first; @@ -156,7 +145,7 @@ void PlayerUpdate(Entity* this) { } } HandlePlayerLife(this); - sub_08070680(this); + DoPlayerAction(this); if ((this->height.WORD == 0) && (this->action == 1 || this->action == 9)) sub_08008790(this, 8); sub_080171F0(); @@ -174,7 +163,7 @@ void HandlePlayerLife(Entity* this) { gUnk_0200AF00.filler25[8] = 0; gUnk_0200AF00.filler25[9] = 0; - if ((gPlayerEntity.bitfield & 0x80) && (gPlayerEntity.hurtBlinkTime > 0)) + if ((gPlayerEntity.bitfield & 0x80) && (gPlayerEntity.iframes > 0)) SoundReq(SFX_86); gPlayerState.flags.all &= ~(0x2000000 | 0x200); @@ -278,7 +267,7 @@ void sub_080171F0(void) { sub_0807A8D8(&gPlayerEntity); if (gPlayerState.jumpStatus & 0xc0) - gPlayerEntity.hurtBlinkTime = 0xfe; + gPlayerEntity.iframes = 0xfe; if (gPlayerEntity.action != 0x17) { sub_08077FEC(gPlayerEntity.action); @@ -286,17 +275,17 @@ void sub_080171F0(void) { } void ItemUpdate(Entity* this) { - if ((this->flags & 1) == 0 && this->action == 0 && this->previousActionFlag == 0) + if ((this->flags & 1) == 0 && this->action == 0 && this->subAction == 0) ItemInit(this); if (!sub_0805E3B0(this)) { gPlayerItemFunctions[this->id](this); this->bitfield &= ~0x80; - if (this->hurtBlinkTime != 0) { - if (this->hurtBlinkTime > 0) - this->hurtBlinkTime--; + if (this->iframes != 0) { + if (this->iframes > 0) + this->iframes--; else - this->hurtBlinkTime++; + this->iframes++; } } DrawEntity(this); @@ -340,8 +329,8 @@ void ObjectUpdate(Entity* this) { if (((this->flags & 1) == 0) && (this->action == 0)) sub_080A2838(this); - if (this->hurtBlinkTime != 0) - this->hurtBlinkTime++; + if (this->iframes != 0) + this->iframes++; if (!sub_0805E3B0(this)) { gObjectFunctions[this->id](this); this->bitfield &= ~0x80; diff --git a/src/code_0804AA84.c b/src/code_0804AA84.c index 59485d74..406a513b 100644 --- a/src/code_0804AA84.c +++ b/src/code_0804AA84.c @@ -18,7 +18,7 @@ extern void (*const gUnk_080D412C[])(); extern struct_02018EB0 gUnk_02018EB0; u32 sub_0804AA84(void) { - if (gArea.fadeOut != 0) { + if (gArea.playShrinkSeq) { gMain.transition = 4; gArea.filler[8] = 0; gArea.filler[9] = 0; @@ -26,8 +26,8 @@ u32 sub_0804AA84(void) { sub_0805E5A8(); return 1; } else { - gArea.filler[18] = gArea.fadeOut; - *(vu8*)&gArea.fadeOut = gArea.fadeOut; + gArea.filler[18] = gArea.playShrinkSeq; + *(vu8*)&gArea.playShrinkSeq = gArea.playShrinkSeq; return 0; } } @@ -40,7 +40,7 @@ void sub_0804AAD4(void) { MemClear32((void*)&gUnk_02018EB0, 0x28); gUnk_02018EB0.unk = 0; EraseAllEntities(); - CreateObject(0x3d, gArea.field_0x17, 0); + CreateObject(0x3d, gArea.curPortalType, 0); gArea.filler[8]++; } diff --git a/src/code_0805436C.c b/src/code_0805436C.c index be879f99..20aee72e 100644 --- a/src/code_0805436C.c +++ b/src/code_0805436C.c @@ -133,7 +133,7 @@ u32 sub_080544C8(u32 arg0) { } } -u32 sub_080544DC(u32 arg0) { +u32 GetBottleContaining(u32 arg0) { if (arg0 == gSave.stats.bottles[0]) { return 1; } else if (arg0 == gSave.stats.bottles[1]) { diff --git a/src/code_08077DF4.c b/src/code_08077DF4.c index 1697ecb0..0dc90c4a 100644 --- a/src/code_08077DF4.c +++ b/src/code_08077DF4.c @@ -35,7 +35,7 @@ void sub_08077E3C(Entity* ent, u32 idx) { void sub_08077E54(Entity* ent) { ent->action = gPlayerEntity.animIndex; *(u8*)&ent->spriteIndex = gPlayerEntity.frameIndex; - ent->previousActionFlag = gPlayerEntity.frameDuration; + ent->subAction = gPlayerEntity.frameDuration; ent->actionDelay = gPlayerEntity.frames.all; } diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index 2825aed5..09463b1e 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -62,8 +62,8 @@ void sub_080318DC(Entity* this) { do { brother->action = 5; brother->spritePriority.b1 = 1; - if (brother->hurtBlinkTime == 0) - brother->hurtBlinkTime = -12; + if (brother->iframes == 0) + brother->iframes = -12; } while (brother = brother->attachedEntity, brother != NULL); } if (this->parent) { @@ -113,7 +113,7 @@ void sub_080318DC(Entity* this) { } void sub_08031A60(Entity* this) { - if (this->hurtBlinkTime > 0) + if (this->iframes > 0) sub_08003FC4(this, 0x1800); sub_08001324(this); diff --git a/src/enemy/beetle.c b/src/enemy/beetle.c index 5ba78755..0e9c9586 100644 --- a/src/enemy/beetle.c +++ b/src/enemy/beetle.c @@ -66,7 +66,7 @@ void sub_08021818(Entity* this) { void sub_08021848(Entity* this) { if (sub_0806F520(this)) { - gUnk_080CB5C8[this->previousActionFlag](this); + gUnk_080CB5C8[this->subAction](this); } else { this->action = 3; this->height.HALF.HI = 0; @@ -75,7 +75,7 @@ void sub_08021848(Entity* this) { } void sub_0802187C(Entity* this) { - this->previousActionFlag = 2; + this->subAction = 2; } void nullsub_130(Entity* this) { @@ -98,8 +98,8 @@ void sub_080218B4(Entity* this) { } void sub_080218CC(Entity* this) { - if (this->previousActionFlag == 0) { - this->previousActionFlag = 1; + if (this->subAction == 0) { + this->subAction = 1; this->spriteSettings.b.draw = 1; this->direction = ((sub_08049F84(this, 1) ^ 0x10) + gUnk_080CB5DC[Random() & 7]) & 0x1f; this->speed = 0x100; @@ -124,8 +124,8 @@ void sub_080218CC(Entity* this) { } void sub_08021984(Entity* this) { - if (this->previousActionFlag == 0) { - this->previousActionFlag = 1; + if (this->subAction == 0) { + this->subAction = 1; this->flags |= 0x80; this->spriteSettings.b.draw = 3; this->height.HALF.HI = -0x80; diff --git a/src/enemy/bobomb.c b/src/enemy/bobomb.c index d9c1a2a8..3d724227 100644 --- a/src/enemy/bobomb.c +++ b/src/enemy/bobomb.c @@ -63,8 +63,8 @@ void sub_0802C688(Entity* this) { } void sub_0802C7AC(Entity* this) { - if (this->previousActionFlag < 3 && !sub_0806F520(this)) { - this->previousActionFlag = 0; + if (this->subAction < 3 && !sub_0806F520(this)) { + this->subAction = 0; this->field_0xf = 1; this->height.HALF.HI = 0; if (this->field_0x82.HALF.LO != 2) { @@ -75,7 +75,7 @@ void sub_0802C7AC(Entity* this) { this->field_0x80.HALF.HI = 0; } else { this->height.HALF.HI = -1; - gUnk_080CD600[this->previousActionFlag](this); + gUnk_080CD600[this->subAction](this); if (this->actionDelay != 0) { GetNextFrame(this); } @@ -83,7 +83,7 @@ void sub_0802C7AC(Entity* this) { } void sub_0802C820(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; } @@ -180,11 +180,11 @@ void sub_0802C91C(Entity* this) { } void sub_0802C9B8(Entity* this) { - gUnk_080CD618[this->previousActionFlag](this); + gUnk_080CD618[this->subAction](this); } void sub_0802C9D0(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->flags &= ~0x80; this->spritePriority.b1 = 0; this->field_0x82.HALF.HI = 1; @@ -255,7 +255,7 @@ void nullsub_150(Entity* this) { void sub_0802CB68(Entity* this) { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->direction = Random() & 0x18; this->direction |= 4; this->flags |= 0x80; diff --git a/src/enemy/bombPeahat.c b/src/enemy/bombPeahat.c index 228855be..46c7d8b2 100644 --- a/src/enemy/bombPeahat.c +++ b/src/enemy/bombPeahat.c @@ -70,11 +70,11 @@ void sub_0802A8AC(Entity* this) { } void sub_0802A8C8(Entity* this) { - gUnk_080CD140[this->previousActionFlag](this); + gUnk_080CD140[this->subAction](this); } void sub_0802A8E0(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; } @@ -102,7 +102,7 @@ void sub_0802A91C(Entity* this) { void sub_0802A924(Entity* this) { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0; this->field_0xf = 0; this->hitbox = (Hitbox*)&gUnk_080CD16C; @@ -128,7 +128,7 @@ void sub_0802A9A8(Entity* this) { if (this->actionDelay) { if (--this->actionDelay == 0) { this->action = 2; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x40; sub_0802ACDC(this, 8); } @@ -254,7 +254,7 @@ void sub_0802AB40(Entity* this) { void sub_0802AC08(Entity* this) { if (this->frames.all & 0x80) { this->action = 2; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x40; this->speed = 0xc0; sub_0802ACDC(this, 8); @@ -386,7 +386,7 @@ void sub_0802AE68(Entity* this) { } void sub_0802AEBC(Entity* this) { - gUnk_080CD158[this->previousActionFlag](this); + gUnk_080CD158[this->subAction](this); } void sub_0802AED4(Entity* this) { @@ -407,7 +407,7 @@ void sub_0802AED4(Entity* this) { } void sub_0802AF28(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; sub_08079BD8(this); this->spritePriority.b1 = 2; GetNextFrame(this); @@ -424,7 +424,7 @@ void sub_0802AF58(Entity* this) { void sub_0802AF74(Entity* this) { this->action = 3; - this->previousActionFlag = 0; + this->subAction = 0; if (this->actionDelay > 60) { this->actionDelay = 60; } @@ -510,7 +510,7 @@ void sub_0802B048(Entity* this) { } else { if (this->field_0xf) { if (--this->field_0xf == 0) { - if (action == 2 && this->previousActionFlag == 1) { + if (action == 2 && this->subAction == 1) { gPlayerState.heldObject = 0; } sub_0805EC60(this); diff --git a/src/enemy/businessScrub.c b/src/enemy/businessScrub.c index 49ba9ea1..2c80b226 100644 --- a/src/enemy/businessScrub.c +++ b/src/enemy/businessScrub.c @@ -54,7 +54,7 @@ void sub_08028934(Entity* this) { if (this->damageType == 1 && (this->bitfield & 0x7f) == 0x42) { this->action = 3; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x28; this->flags &= ~0x80; sub_080290E0(this, 4); @@ -97,7 +97,7 @@ void sub_08028A48(Entity* this) { this->actionDelay--; } else if (sub_08028F98(this, 0)) { sub_08029078(this); - this->previousActionFlag = 0; + this->subAction = 0; this->field_0xf = 1; } } @@ -106,11 +106,11 @@ void sub_08028A74(Entity* this) { u32 unk; GetNextFrame(this); - switch (this->previousActionFlag) { + switch (this->subAction) { case 0: unk = 1; if (this->frames.all & 0x80) { - this->previousActionFlag = 1; + this->subAction = 1; this->actionDelay = 0x3c; this->field_0xf = 0x10; sub_08028FDC(this); @@ -120,7 +120,7 @@ void sub_08028A74(Entity* this) { case 1: unk = 1; if (--this->actionDelay == 0) { - this->previousActionFlag = 2; + this->subAction = 2; this->actionDelay = 0x20; this->field_0xf = 0; sub_08028FDC(this); @@ -141,14 +141,14 @@ void sub_08028A74(Entity* this) { ent->parent = this; ent->direction = this->direction; this->frames.all &= ~1; - this->previousActionFlag = 3; + this->subAction = 3; } } break; case 3: unk = 2; if (this->frames.all & 0x80) { - this->previousActionFlag = 4; + this->subAction = 4; this->actionDelay = 0x50; sub_080290E0(this, 1); } @@ -157,13 +157,13 @@ void sub_08028A74(Entity* this) { unk = 2; if (--this->actionDelay == 0) { if (sub_08028F98(this, 0)) { - this->previousActionFlag = 1; + this->subAction = 1; this->actionDelay = 0x3c; this->field_0xf = 0x10; sub_08028FDC(this); } else { sub_08028FFC(this); - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x50; this->field_0xf = 0; } @@ -174,7 +174,7 @@ void sub_08028A74(Entity* this) { if (!sub_08028F98(this, unk)) { sub_08028FFC(this); - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x50; this->field_0xf = 0; } @@ -183,11 +183,11 @@ void sub_08028A74(Entity* this) { void sub_08028BC4(Entity* this) { Entity* iVar1; - switch (this->previousActionFlag) { + switch (this->subAction) { case 0: if (this->actionDelay == 0) { if (this->frames.all & 0x80) { - this->previousActionFlag = 1; + this->subAction = 1; sub_08028FDC(this); sub_080290E0(this, 5); this->spritePriority.b1 = 1; @@ -199,7 +199,7 @@ void sub_08028BC4(Entity* this) { case 1: if (this->frames.all & 0x80) { this->action = 4; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x1e; this->field_0xf = 5; sub_080290E0(this, 0); @@ -314,7 +314,7 @@ void sub_08028E40(Entity* this) { struct SalesOffering* offer = (struct SalesOffering*)this->field_0x7c.WORD; this->action = 4; - this->previousActionFlag = gTextBox.doTextBox & 0x7f; + this->subAction = gTextBox.doTextBox & 0x7f; this->actionDelay = 1; if (CheckLocalFlag(offer->field_0xa) == 0) { SetLocalFlag(offer->field_0xa); diff --git a/src/enemy/darkNut.c b/src/enemy/darkNut.c index 83fa7296..18561e86 100644 --- a/src/enemy/darkNut.c +++ b/src/enemy/darkNut.c @@ -241,7 +241,7 @@ void sub_08020FAC(Entity* this) { if (this->field_0x7a.HALF.LO) { this->field_0x7a.HALF.LO--; } else { - this->hurtBlinkTime = -8; + this->iframes = -8; sub_08021390(this); } } else { diff --git a/src/enemy/doorMimic.c b/src/enemy/doorMimic.c index 27357c08..2bfc1fc4 100644 --- a/src/enemy/doorMimic.c +++ b/src/enemy/doorMimic.c @@ -4,7 +4,7 @@ extern s16 sub_080001DA(u32, u32); // ? extern void sub_08049CF4(); -extern u32 sub_0806FBFC(u32, u32, u32, u32); +extern u32 CheckPlayerProximity(u32, u32, u32, u32); void sub_080221C0(); typedef struct { @@ -54,7 +54,7 @@ void sub_08022034(Entity* this) { void sub_0802209C(Entity* this) { if (this->actionDelay == 0) { - if (sub_0806FBFC(this->field_0x78.HWORD, this->field_0x7a.HWORD, 0x10, 0x10)) { + if (CheckPlayerProximity(this->field_0x78.HWORD, this->field_0x7a.HWORD, 0x10, 0x10)) { this->action = 2; this->actionDelay = 0x12; InitializeAnimation(this, this->type2 + 4); diff --git a/src/enemy/fireballGuy.c b/src/enemy/fireballGuy.c index e2d8914d..c7bdbbe2 100644 --- a/src/enemy/fireballGuy.c +++ b/src/enemy/fireballGuy.c @@ -79,7 +79,7 @@ void sub_08045454(Entity* this) { tmp = 0; ent->type2 = 1; ent->height.HALF.HI = tmp; - ent->hurtBlinkTime = -0x10; + ent->iframes = -0x10; /* Set MiniFireballGuy offset relative to killed slime. */ sub_08045178(this, ent, off->h, off->v); diff --git a/src/enemy/gibdo.c b/src/enemy/gibdo.c index f3228707..bc338a94 100644 --- a/src/enemy/gibdo.c +++ b/src/enemy/gibdo.c @@ -337,12 +337,12 @@ NONMATCH("asm/non_matching/gibdo/sub_08037A58.inc", void sub_08037A58(Entity* th sub_08037ACC(this); this->action = 7; this->spritePriority.b0 = (this->spritePriority.b0 & 0xf8) | 4; - if (this->hurtBlinkTime == 0) { - this->hurtBlinkTime = 0xec; + if (this->iframes == 0) { + this->iframes = 0xec; } this->damageType = 0x26; this->flags2 |= 1; - this->hurtBlinkTime = 0xf4; + this->iframes = 0xf4; this->field_0x3e = (this->animationState << 3) ^ 0x10; this->field_0x42 = 8; this->field_0x46 = 0x180; @@ -354,7 +354,7 @@ END_NONMATCH void sub_08037ACC(Entity* this) { gPlayerState.flags.all &= 0xFFFFFEFF; gPlayerEntity.flags |= 0x80; - gPlayerEntity.hurtBlinkTime = 0x1e; + gPlayerEntity.iframes = 0x1e; gPlayerEntity.field_0x3e = DirectionFromAnimationState(this->animationState); gPlayerEntity.field_0x42 = 4; gPlayerEntity.field_0x46 = 0x180; @@ -362,7 +362,7 @@ void sub_08037ACC(Entity* this) { // Damage player maybe? void sub_08037B10(Entity* this) { u32 h; - gPlayerEntity.hurtBlinkTime = 0xc; + gPlayerEntity.iframes = 0xc; h = ModHealth(-8); sub_0800449C(&gPlayerEntity, 0x7a); if (h == 0) { diff --git a/src/enemy/gyorgMale.c b/src/enemy/gyorgMale.c index 1edbf4f9..f8a0b890 100644 --- a/src/enemy/gyorgMale.c +++ b/src/enemy/gyorgMale.c @@ -29,54 +29,54 @@ const u16 gUnk_080D1C60[8]; void GyorgMale(Entity*); void sub_08046898(Entity*); // action 0 void sub_08046910(Entity*); // action 1 -void sub_08046930(Entity*); // action 1 previousActionFlag 0 -void sub_0804696C(Entity*); // action 1 previousActionFlag 1 -void sub_080469CC(Entity*); // action 1 previousActionFlag 2 -void sub_080469F4(Entity*); // action 1 previousActionFlag 3 -void sub_08046A30(Entity*); // action 1 previousActionFlag 4 -void sub_08046A54(Entity*); // action 1 previousActionFlag 5 -void sub_08046A78(Entity*); // action 1 previousActionFlag 6 +void sub_08046930(Entity*); // action 1 subAction 0 +void sub_0804696C(Entity*); // action 1 subAction 1 +void sub_080469CC(Entity*); // action 1 subAction 2 +void sub_080469F4(Entity*); // action 1 subAction 3 +void sub_08046A30(Entity*); // action 1 subAction 4 +void sub_08046A54(Entity*); // action 1 subAction 5 +void sub_08046A78(Entity*); // action 1 subAction 6 void sub_08046A9C(Entity*); // action 2 -void sub_08046AE8(Entity*); // action 2 previousActionFlag 0 -void sub_08046B18(Entity*); // action 2 previousActionFlag 1 -void sub_08046B8C(Entity*); // action 2 previousActionFlag 2 -void sub_08046C04(Entity*); // action 2 previousActionFlag 3 -void sub_08046C88(Entity*); // action 2 previousActionFlag 4 +void sub_08046AE8(Entity*); // action 2 subAction 0 +void sub_08046B18(Entity*); // action 2 subAction 1 +void sub_08046B8C(Entity*); // action 2 subAction 2 +void sub_08046C04(Entity*); // action 2 subAction 3 +void sub_08046C88(Entity*); // action 2 subAction 4 void sub_08046CEC(Entity*); // action 3 -void sub_08046D44(Entity*); // action 3 previousActionFlag 0 -void sub_08046D98(Entity*); // action 3 previousActionFlag 1 -void sub_08046E0C(Entity*); // action 3 previousActionFlag 2 -void sub_08046E68(Entity*); // action 3 previousActionFlag 3 -void sub_08046EF4(Entity*); // action 3 previousActionFlag 4 +void sub_08046D44(Entity*); // action 3 subAction 0 +void sub_08046D98(Entity*); // action 3 subAction 1 +void sub_08046E0C(Entity*); // action 3 subAction 2 +void sub_08046E68(Entity*); // action 3 subAction 3 +void sub_08046EF4(Entity*); // action 3 subAction 4 void sub_08046F64(Entity*); // action 4 -void sub_08046FE8(Entity*); // action 4 previousActionFlag 0 -void sub_0804702C(Entity*); // action 4 previousActionFlag 1 -void sub_080470B4(Entity*); // action 4 previousActionFlag 2 -void sub_08047140(Entity*); // action 4 previousActionFlag 3 -void sub_0804717C(Entity*); // action 4 previousActionFlag 4 -void sub_080471C8(Entity*); // action 4 previousActionFlag 5 -void sub_0804723C(Entity*); // action 4 previousActionFlag 6 -void sub_08047284(Entity*); // action 4 previousActionFlag 7 -void sub_080472BC(Entity*); // action 4 previousActionFlag 8 -void sub_08047310(Entity*); // action 4 previousActionFlag 9 +void sub_08046FE8(Entity*); // action 4 subAction 0 +void sub_0804702C(Entity*); // action 4 subAction 1 +void sub_080470B4(Entity*); // action 4 subAction 2 +void sub_08047140(Entity*); // action 4 subAction 3 +void sub_0804717C(Entity*); // action 4 subAction 4 +void sub_080471C8(Entity*); // action 4 subAction 5 +void sub_0804723C(Entity*); // action 4 subAction 6 +void sub_08047284(Entity*); // action 4 subAction 7 +void sub_080472BC(Entity*); // action 4 subAction 8 +void sub_08047310(Entity*); // action 4 subAction 9 void sub_0804736C(Entity*); // action 5 -void sub_080473B8(Entity*); // action 5 previousActionFlag 0 -void sub_080473F0(Entity*); // action 5 previousActionFlag 1 -void sub_08047484(Entity*); // action 5 previousActionFlag 2 -void sub_08047508(Entity*); // action 5 previousActionFlag 3 -void sub_080475F4(Entity*); // action 5 previousActionFlag 4 -void sub_0804763C(Entity*); // action 5 previousActionFlag 5 -void sub_0804772C(Entity*); // action 5 previousActionFlag 6 +void sub_080473B8(Entity*); // action 5 subAction 0 +void sub_080473F0(Entity*); // action 5 subAction 1 +void sub_08047484(Entity*); // action 5 subAction 2 +void sub_08047508(Entity*); // action 5 subAction 3 +void sub_080475F4(Entity*); // action 5 subAction 4 +void sub_0804763C(Entity*); // action 5 subAction 5 +void sub_0804772C(Entity*); // action 5 subAction 6 void sub_08047778(Entity*); // action 6 -void sub_08047798(Entity*); // action 6 previousActionFlag 0 -void sub_080477F0(Entity*); // action 6 previousActionFlag 1 -void sub_08047914(Entity*); // action 6 previousActionFlag 2 -void sub_08047978(Entity*); // action 6 previousActionFlag 3 -void sub_08047B08(Entity*); // action 6 previousActionFlag 4 +void sub_08047798(Entity*); // action 6 subAction 0 +void sub_080477F0(Entity*); // action 6 subAction 1 +void sub_08047914(Entity*); // action 6 subAction 2 +void sub_08047978(Entity*); // action 6 subAction 3 +void sub_08047B08(Entity*); // action 6 subAction 4 void sub_08047B84(Entity*); // action 7 -void sub_08047BA4(Entity*); // action 7 previousActionFlag 0 -void sub_08047BF0(Entity*); // action 7 previousActionFlag 1, also called elsewhere -void sub_08047D24(Entity*); // action 7 previousActionFlag 2 +void sub_08047BA4(Entity*); // action 7 subAction 0 +void sub_08047BF0(Entity*); // action 7 subAction 1, also called elsewhere +void sub_08047D24(Entity*); // action 7 subAction 2 void sub_08047D88(Entity*); // void sub_08047DF0(Entity*, u32); void sub_08047E48(Entity*); // @@ -118,7 +118,7 @@ void sub_08046898(Entity* this) { tmp->parent = this; this->attachedEntity = tmp; this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->spriteRendering.b0 = 3; this->spriteSettings.b.draw = 1; this->spriteOrientation.flipY = 2; @@ -136,20 +136,20 @@ void (*const gUnk_080D1B1C[7])(Entity*) = { sub_08046930, sub_0804696C, sub_0804 sub_08046A30, sub_08046A54, sub_08046A78 }; void sub_08046910(Entity* this) { - gUnk_080D1B1C[this->previousActionFlag](this); + gUnk_080D1B1C[this->subAction](this); UpdateAnimationSingleFrame(this); } void sub_08046930(Entity* this) { if (this->type) { - this->previousActionFlag = 5; + this->subAction = 5; this->direction = 0x20; this->speed = 0x280; } sub_08047D88(this); if (this->field_0x7c.BYTES.byte0 == 0) return; - this->previousActionFlag = 1; + this->subAction = 1; this->actionDelay = 1; this->animationState = 0; this->direction = 0; @@ -159,7 +159,7 @@ void sub_08046930(Entity* this) { void sub_0804696C(Entity* this) { sub_08047E48(this); if (gRoomControls.roomOriginY + 0x130 > this->y.HALF.HI) { - this->previousActionFlag = 2; + this->subAction = 2; this->direction = 0x80; this->speed = 0x100; this->spriteOrientation.flipY = 3; @@ -177,7 +177,7 @@ void sub_0804696C(Entity* this) { void sub_080469CC(Entity* this) { sub_08047E48(this); if (gRoomControls.roomOriginY + 0x210 < this->y.HALF.HI) { - this->previousActionFlag = 3; + this->subAction = 3; this->direction = 0x90; } } @@ -185,7 +185,7 @@ void sub_080469CC(Entity* this) { void sub_080469F4(Entity* this) { sub_08047E48(this); if (gRoomControls.roomOriginY + 0x290 < this->y.HALF.HI) { - this->previousActionFlag = 4; + this->subAction = 4; this->spriteOrientation.flipY = 2; this->spriteRendering.b3 = 2; } @@ -195,14 +195,14 @@ void sub_08046A30(Entity* this) { sub_08047D88(this); if (((Entity*)this->myHeap)->prev->field_0x6c.HWORD & 1) { this->action = 2; - this->previousActionFlag = 0; + this->subAction = 0; } } void sub_08046A54(Entity* this) { sub_08047E48(this); if (gRoomControls.roomOriginX + 0x380 < this->x.HALF.HI) { - this->previousActionFlag = 6; + this->subAction = 6; } } @@ -210,7 +210,7 @@ void sub_08046A78(Entity* this) { sub_08047D88(this); if (((Entity*)this->myHeap)->prev->field_0x6c.HWORD & 0x10) { this->action = 3; - this->previousActionFlag = 0; + this->subAction = 0; } } @@ -222,16 +222,16 @@ void sub_08046A9C(Entity* this) { InitAnimationForceUpdate(this, 0); } } - gUnk_080D1B38[this->previousActionFlag](this); + gUnk_080D1B38[this->subAction](this); UpdateAnimationSingleFrame(this); if (this->field_0x7c.BYTES.byte0) { this->action = 6; - this->previousActionFlag = 0; + this->subAction = 0; } } void sub_08046AE8(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->speed = 0x180; sub_08048178(this, ((Entity*)this->myHeap)->next->animationState >> 5); this->field_0x76.HWORD = this->direction << 8; @@ -248,7 +248,7 @@ void sub_08046B18(Entity* this) { } this->direction = this->field_0x76.HWORD >> 8; } else { - this->previousActionFlag = 2; + this->subAction = 2; } sub_08047D88(this); sub_08047EA4(this, ((0x100 - this->direction) & 0xFF) << 8); @@ -256,7 +256,7 @@ void sub_08046B18(Entity* this) { void sub_08046B8C(Entity* this) { if (sub_0806FCB8(this, this->field_0x80.HWORD, this->field_0x82.HWORD, 4)) { - this->previousActionFlag = 3; + this->subAction = 3; this->field_0x76.HWORD = this->direction << 8; this->field_0x80.HWORD = gRoomControls.roomOriginX + 0x200; this->field_0x82.HWORD = gRoomControls.roomOriginY + 0x210; @@ -278,7 +278,7 @@ void sub_08046C04(Entity* this) { } this->direction = this->field_0x76.HWORD >> 8; } else { - this->previousActionFlag = 4; + this->subAction = 4; this->field_0x70.HALF.LO = ((tmp + 0x20) & 0xC0) >> 6; } sub_08047D88(this); @@ -287,7 +287,7 @@ void sub_08046C04(Entity* this) { void sub_08046C88(Entity* this) { if (sub_0806FCB8(this, this->field_0x80.HWORD, this->field_0x82.HWORD, 4)) { - this->previousActionFlag = 1; + this->subAction = 1; sub_08048178(this, sub_08048158(this->field_0x70.HALF_U.LO)); sub_08047D88(this); } else { @@ -305,11 +305,11 @@ void sub_08046CEC(Entity* this) { InitAnimationForceUpdate(this, 1); } } - gUnk_080D1B4C[this->previousActionFlag](this); + gUnk_080D1B4C[this->subAction](this); UpdateAnimationSingleFrame(this); if (((Entity*)this->myHeap)->prev->field_0x6c.HWORD & 2) { this->action = 2; - this->previousActionFlag = 0; + this->subAction = 0; this->animationState = this->speed; } } @@ -318,7 +318,7 @@ const u16 gUnk_080D1B60[8] = { 0x200, 0x184, 0x28C, 0x210, 0x200, 0x29C, 0x174, void sub_08046D44(Entity* this) { const u16* tmp; - this->previousActionFlag = 1; + this->subAction = 1; this->speed = 0x200; tmp = gUnk_080D1B60 + (((Entity*)this->myHeap)->next->animationState >> 5); this->field_0x80.HWORD = tmp[0] + gRoomControls.roomOriginX; @@ -337,7 +337,7 @@ void sub_08046D98(Entity* this) { } this->direction = this->field_0x76.HWORD >> 8; } else { - this->previousActionFlag = 2; + this->subAction = 2; } sub_08047D88(this); sub_08047EA4(this, ((0x100 - this->direction) & 0xFF) << 8); @@ -345,7 +345,7 @@ void sub_08046D98(Entity* this) { void sub_08046E0C(Entity* this) { if (sub_0806FCB8(this, this->field_0x80.HWORD, this->field_0x82.HWORD, 4)) { - this->previousActionFlag = 3; + this->subAction = 3; this->field_0x76.HWORD = this->direction << 8; sub_08047D88(this); } else { @@ -369,7 +369,7 @@ void sub_08046E68(Entity* this) { sub_08047D88(this); sub_08047EA4(this, ((0x100 - this->direction) & 0xFF) << 8); } else { - this->previousActionFlag = 4; + this->subAction = 4; this->actionDelay = 0x3F; this->field_0xf = 1; this->direction = (gUnk_080D1B70[Random() & 1] + tmp) & 0xC0; @@ -408,7 +408,7 @@ void sub_08046F64(Entity* this) { InitAnimationForceUpdate(this, 1); } } - gUnk_080D1B94[this->previousActionFlag](this); + gUnk_080D1B94[this->subAction](this); UpdateAnimationSingleFrame(this); if (--this->field_0x7c.HALF.HI == 0) { Entity* tmp; @@ -422,12 +422,12 @@ void sub_08046F64(Entity* this) { } if (((Entity*)this->myHeap)->prev->field_0x6c.HWORD & 4) { this->action = 5; - this->previousActionFlag = 0; + this->subAction = 0; } } void sub_08046FE8(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->speed = 0x1c0; this->field_0x7c.HALF.HI = 0x1e; this->field_0x80.HWORD = gRoomControls.roomOriginX + 0x290; @@ -446,7 +446,7 @@ void sub_0804702C(Entity* this) { } sub_08047DF0(this, ((0x100 - this->direction) & 0xFF) << 8); if (sub_0806FCB8(this, this->field_0x80.HWORD, this->field_0x82.HWORD, (this->speed >> 0x10) + 0x10)) { - this->previousActionFlag = 2; + this->subAction = 2; this->field_0x76.HWORD = this->direction << 8; this->speed = 0x280; } @@ -466,7 +466,7 @@ void sub_080470B4(Entity* this) { sub_08047D88(this); sub_08047EA4(this, ((0x100 - this->direction) & 0xFF) << 8); } else { - this->previousActionFlag = 3; + this->subAction = 3; this->speed = 0x200; this->field_0x76.HWORD = this->direction << 8; this->field_0x74.HWORD = gUnk_080D1BBC[Random() & 1]; @@ -479,7 +479,7 @@ void sub_08047140(Entity* this) { this->direction = this->field_0x76.HWORD >> 8; if (this->direction > 0xbf) { this->direction = 0xC0; - this->previousActionFlag = 4; + this->subAction = 4; } sub_08047DF0(this, ((0x100 - this->direction) & 0xFF) << 8); } @@ -490,7 +490,7 @@ void sub_0804717C(Entity* this) { } sub_08047DF0(this, ((0x100 - this->direction) & 0xFF) << 8); if (gRoomControls.roomOriginX + 0x200 > this->x.HALF.HI) { - this->previousActionFlag = 5; + this->subAction = 5; } } @@ -506,19 +506,19 @@ void sub_080471C8(Entity* this) { return; if (this->field_0x74.HWORD > 0x100) { if (Random() & 1) { - this->previousActionFlag = 6; + this->subAction = 6; } else { - this->previousActionFlag = 0; + this->subAction = 0; } } else { - this->previousActionFlag = 0; + this->subAction = 0; } } void sub_0804723C(Entity* this) { this->direction -= 2; if (this->direction < 0xc0) { - this->previousActionFlag = 7; + this->subAction = 7; this->speed = 0x200; this->direction = 0xc0; this->field_0x76.HWORD = 0xc000; @@ -532,7 +532,7 @@ void sub_08047284(Entity* this) { this->direction = this->field_0x76.HWORD >> 8; if (this->direction < 0x40) { this->direction = 0x40; - this->previousActionFlag = 8; + this->subAction = 8; } sub_08047DF0(this, ((0x100 - this->direction) & 0xFF) << 8); } @@ -544,7 +544,7 @@ void sub_080472BC(Entity* this) { sub_08047DF0(this, ((0x100 - this->direction) & 0xFF) << 8); if (gRoomControls.roomOriginX + 0x2B0 >= this->x.HALF.HI) return; - this->previousActionFlag = 9; + this->subAction = 9; this->field_0x76.HWORD = this->direction << 8; } @@ -556,7 +556,7 @@ void sub_08047310(Entity* this) { this->direction = this->field_0x76.HWORD >> 8; if ((u8)(this->direction + 0x7F) < 0x40) { this->direction = 0xC0; - this->previousActionFlag = 4; + this->subAction = 4; } sub_08047DF0(this, ((0x100 - this->direction) & 0xFF) << 8); } @@ -570,16 +570,16 @@ void sub_0804736C(Entity* this) { InitAnimationForceUpdate(this, 0); } } - gUnk_080D1BC0[this->previousActionFlag](this); + gUnk_080D1BC0[this->subAction](this); UpdateAnimationSingleFrame(this); if (this->currentHealth == 0) { this->action = 7; - this->previousActionFlag = 0; + this->subAction = 0; } } void sub_080473B8(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->speed = 0x120; this->field_0x80.HWORD = gRoomControls.roomOriginX + 0x200; this->field_0x82.HWORD = gRoomControls.roomOriginY + 0x1D0; @@ -606,7 +606,7 @@ void sub_080473F0(Entity* this) { } sub_08047DF0(this, ((0x100 - this->direction) & 0xFF) << 8); if (sub_0806FCB8(this, this->field_0x80.HWORD, this->field_0x82.HWORD, 8)) { - this->previousActionFlag = 2; + this->subAction = 2; this->field_0x76.HWORD = this->direction << 8; this->speed = 0x180; } @@ -624,7 +624,7 @@ void sub_08047484(Entity* this) { sub_08047D88(this); sub_08047EA4(this, ((0x100 - this->direction) & 0xFF) << 8); } else { - this->previousActionFlag = 3; + this->subAction = 3; this->speed = 0x200; this->direction = 0x40; this->field_0x76.HWORD = 0x4000; @@ -664,7 +664,7 @@ void sub_08047508(Entity* this) { } sub_08047E48(this); if (gRoomControls.roomOriginX + 0x280 < this->x.HALF.HI) { - this->previousActionFlag = 4; + this->subAction = 4; this->speed = 0x200; this->animationState = this->direction; this->field_0x76.HWORD = this->direction << 8; @@ -682,7 +682,7 @@ void sub_080475F4(Entity* this) { this->direction = this->field_0x76.HWORD >> 8; if (this->direction >= 0xc0) { this->direction = 0xc0; - this->previousActionFlag = 5; + this->subAction = 5; this->speed = 0x200; this->field_0x7c.HALF.HI = 0x3c; } @@ -719,7 +719,7 @@ void sub_0804763C(Entity* this) { } sub_08047E48(this); if (gRoomControls.roomOriginX + 0x180 > this->x.HALF.HI) { - this->previousActionFlag = 6; + this->subAction = 6; this->speed = 0x200; this->animationState = this->direction; this->field_0x76.HWORD = this->direction << 8; @@ -737,7 +737,7 @@ void sub_0804772C(Entity* this) { this->direction = this->field_0x76.HWORD >> 8; if (this->direction <= 0x40) { this->direction = 0x40; - this->previousActionFlag = 3; + this->subAction = 3; this->speed = 0x200; this->field_0x7c.HALF.HI = 0x1e; } @@ -747,12 +747,12 @@ void sub_0804772C(Entity* this) { void (*const gUnk_080D1BDC[5])(Entity*) = { sub_08047798, sub_080477F0, sub_08047914, sub_08047978, sub_08047B08 }; void sub_08047778(Entity* this) { - gUnk_080D1BDC[this->previousActionFlag](this); + gUnk_080D1BDC[this->subAction](this); UpdateAnimationSingleFrame(this); } void sub_08047798(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->speed = 0x80; if (this->x.HALF.HI - gRoomControls.roomOriginX < 0x1F8) { this->field_0x80.HWORD = 0xa8; @@ -774,7 +774,7 @@ void sub_080477F0(Entity* this) { sub_08047E48(this); if (!sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x80)) { this->action = 2; - this->previousActionFlag = 0; + this->subAction = 0; this->spriteOrientation.flipY = 2; this->spriteRendering.b3 = 2; this->direction = this->animationState; @@ -785,7 +785,7 @@ void sub_080477F0(Entity* this) { this->spriteRendering.b3 = 3; } if (sub_0806FCB8(this, this->field_0x80.HWORD, this->field_0x82.HWORD, 4)) { - this->previousActionFlag = 2; + this->subAction = 2; this->field_0x76.HWORD = this->animationState << 8; this->field_0x74.HWORD = gUnk_080D1BF0[Random() & 1]; if (((Entity*)this->myHeap)->prev->field_0x6c.HWORD & 1) { @@ -804,7 +804,7 @@ void sub_08047914(Entity* this) { this->animationState = this->field_0x76.HWORD >> 8; sub_08047EA4(this, ((0x100 - this->animationState) & 0xFF) << 8); } else { - this->previousActionFlag = 3; + this->subAction = 3; this->field_0x70.HALF.LO = 0x3C; this->field_0x7c.HALF.HI = ((this->type * 0xF) << 2) + 0x78; sub_080A1D70(((Entity*)this->myHeap)->prev, this->animationState); @@ -839,7 +839,7 @@ void sub_08047978(Entity* this) { } if (!sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x80)) { this->action = 2; - this->previousActionFlag = 0; + this->subAction = 0; this->spriteOrientation.flipY = 2; this->spriteRendering.b3 = 2; this->direction = this->animationState; @@ -848,7 +848,7 @@ void sub_08047978(Entity* this) { return; if (this->attachedEntity->action != 1) return; - this->previousActionFlag = 4; + this->subAction = 4; if (this->type == 0) { if ((((Entity*)this->myHeap)->next->animationState >> 6) == 1) { this->field_0x80.HWORD = gRoomControls.roomOriginX + 0x1C0; @@ -882,11 +882,11 @@ void sub_08047B08(Entity* this) { return; if (this->type == 0) { this->action = 7; - this->previousActionFlag = 0; + this->subAction = 0; this->direction ^= 0x80; } else { this->action = 4; - this->previousActionFlag = 0; + this->subAction = 0; this->spriteOrientation.flipY = 2; this->spriteRendering.b3 = 2; this->direction = this->animationState; @@ -896,12 +896,12 @@ void sub_08047B08(Entity* this) { void (*const gUnk_080D1BF4[3])(Entity*) = { sub_08047BA4, sub_08047BF0, sub_08047D24 }; void sub_08047B84(Entity* this) { - gUnk_080D1BF4[this->previousActionFlag](this); + gUnk_080D1BF4[this->subAction](this); UpdateAnimationSingleFrame(this); } void sub_08047BA4(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->actionDelay = 0x78; this->field_0xf = 0; if (gRoomControls.roomOriginX + 0x200 < this->x.HALF.HI) { @@ -937,7 +937,7 @@ void sub_08047BF0(Entity* this) { this->speed = 0x140; sub_08047E48(this); if (this->y.HALF.HI > gRoomControls.roomOriginY + 0x270) { - this->previousActionFlag = 2; + this->subAction = 2; this->field_0x7c.HALF.HI = 0xAA; SoundReq(0x12D); InitAnimationForceUpdate(this, 1); diff --git a/src/enemy/helmasaur.c b/src/enemy/helmasaur.c index 723050a4..ed7a71b8 100644 --- a/src/enemy/helmasaur.c +++ b/src/enemy/helmasaur.c @@ -62,16 +62,16 @@ void sub_0802BBC4(Entity* this) { void sub_0802BC20(Entity* this) { if (this->damageType != 0x19) { if (sub_0806F520(this)) { - gUnk_080CD42C[this->previousActionFlag](this); + gUnk_080CD42C[this->subAction](this); } - } else if (2 < this->previousActionFlag || sub_0806F520(this)) { - gUnk_080CD438[this->previousActionFlag](this); + } else if (2 < this->subAction || sub_0806F520(this)) { + gUnk_080CD438[this->subAction](this); } } void sub_0802BC74(Entity* this) { sub_0802C1C0(this); - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; this->animationState = (gPlayerEntity.animationState >> 1) ^ 2; InitializeAnimation(this, this->animationState); @@ -101,7 +101,7 @@ void sub_0802BCA8(Entity* this) { } void sub_0802BCFC(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; } @@ -259,7 +259,7 @@ void sub_0802BF78(Entity* this) { void sub_0802BF98(Entity* this) { if (sub_0806F520(this)) { - gUnk_080CD450[this->previousActionFlag](this); + gUnk_080CD450[this->subAction](this); } else { this->action = 2; this->actionDelay = 30; @@ -268,7 +268,7 @@ void sub_0802BF98(Entity* this) { } void sub_0802BFD0(Entity* this) { - this->previousActionFlag = 2; + this->subAction = 2; } void sub_0802BFD8(Entity* this) { diff --git a/src/enemy/keese.c b/src/enemy/keese.c index 0462b254..35904a3e 100644 --- a/src/enemy/keese.c +++ b/src/enemy/keese.c @@ -43,12 +43,12 @@ void sub_08021d98(Entity* this) { void sub_08021DA8(Entity* this) { if (sub_0806F520(this)) { - gUnk_080CB6C4[this->previousActionFlag](this); + gUnk_080CB6C4[this->subAction](this); } } void sub_08021DCC(Entity* this) { - this->previousActionFlag = 2; + this->subAction = 2; } void sub_08021DD4(Entity* this) { diff --git a/src/enemy/lakitu.c b/src/enemy/lakitu.c index 163ec9e1..5d6fcb6e 100644 --- a/src/enemy/lakitu.c +++ b/src/enemy/lakitu.c @@ -140,12 +140,12 @@ void sub_0803C784(Entity* this) { void sub_0803C820(Entity* this) { if (sub_0806F520(this)) { - gUnk_080D0148[this->previousActionFlag](this); + gUnk_080D0148[this->subAction](this); } } void sub_0803C844(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 0x3c; } diff --git a/src/enemy/lakituCloud.c b/src/enemy/lakituCloud.c index 80679029..467e273c 100644 --- a/src/enemy/lakituCloud.c +++ b/src/enemy/lakituCloud.c @@ -38,16 +38,16 @@ void sub_0803CCEC(Entity* this) { void sub_0803CCFC(Entity* this) { if (sub_0806F520(this) == 0) { - if (this->previousActionFlag == 2) { + if (this->subAction == 2) { sub_0803CE3C(this); } } else { - gUnk_080D043C[this->previousActionFlag](this); + gUnk_080D043C[this->subAction](this); } } void sub_0803CD2C(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 0x3c; } diff --git a/src/enemy/likeLike.c b/src/enemy/likeLike.c index 60a7b7b7..53af5aad 100644 --- a/src/enemy/likeLike.c +++ b/src/enemy/likeLike.c @@ -210,7 +210,7 @@ void sub_0802810C(Entity* this) { gPlayerState.flags.all &= 0xffffffef; gPlayerEntity.flags |= 0x80; gPlayerEntity.field_0x20 = 0x18000; - gPlayerEntity.hurtBlinkTime = -60; + gPlayerEntity.iframes = -60; gPlayerEntity.direction = gPlayerEntity.animationState << 2; gPlayerEntity.spritePriority.b1 = this->field_0x82.HALF.HI; gPlayerEntity.height.HALF.HI = gPlayerEntity.spriteOffsetY; @@ -219,8 +219,8 @@ void sub_0802810C(Entity* this) { this->actionDelay = 0x50; this->field_0xf = 0; this->flags2 |= 2; - if (this->hurtBlinkTime == 0) { - this->hurtBlinkTime = -18; + if (this->iframes == 0) { + this->iframes = -18; } } #else diff --git a/src/enemy/madderpillar.c b/src/enemy/madderpillar.c index 9c2d526f..012f5abf 100644 --- a/src/enemy/madderpillar.c +++ b/src/enemy/madderpillar.c @@ -460,12 +460,12 @@ void sub_0802A098(Entity* this) { void sub_0802A0F8(Entity* this) { if (this->currentHealth != 0) { - if ((this->bitfield & 0x80) && this->hurtBlinkTime != 0) { + if ((this->bitfield & 0x80) && this->iframes != 0) { Entity* ent = this; u32 i; for (i = 0; i < 6; i++) { ent = ent->attachedEntity; - ent->hurtBlinkTime = this->hurtBlinkTime; + ent->iframes = this->iframes; } } } else { diff --git a/src/enemy/moldorm.c b/src/enemy/moldorm.c index 186bee30..429905be 100644 --- a/src/enemy/moldorm.c +++ b/src/enemy/moldorm.c @@ -40,9 +40,9 @@ void sub_08022BEC(Entity* this) { this->animationState = ((this->direction + 2) & 0x1c) >> 2; this->frameIndex = this->animationState; - this->attachedEntity->hurtBlinkTime = this->hurtBlinkTime; - (*(Entity**)&this->field_0x7c)->hurtBlinkTime = this->hurtBlinkTime; - (*(Entity**)&this->field_0x80)->hurtBlinkTime = this->hurtBlinkTime; + this->attachedEntity->iframes = this->iframes; + (*(Entity**)&this->field_0x7c)->iframes = this->iframes; + (*(Entity**)&this->field_0x80)->iframes = this->iframes; sub_0804AA30(this, gUnk_080CBBA0); } diff --git a/src/enemy/moldworm.c b/src/enemy/moldworm.c index 3bf68715..2ac1af64 100644 --- a/src/enemy/moldworm.c +++ b/src/enemy/moldworm.c @@ -67,12 +67,12 @@ void sub_080230CC(Entity* this) { } void sub_080230E4(Entity* this) { - if (this->previousActionFlag == 0xff) { + if (this->subAction == 0xff) { this->action = 7; this->actionDelay = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->damageType = 0x85; - this->hurtBlinkTime = -8; + this->iframes = -8; this->field_0x7c.BYTES.byte3 = 0; this->field_0x7a.HALF.HI = 0; if (this->bitfield == 0x80 || this->bitfield == 0x9e) { @@ -90,7 +90,7 @@ void sub_080230E4(Entity* this) { gPlayerEntity.spriteSettings.b.draw = 1; gPlayerEntity.field_0x20 = 0x18000; gPlayerEntity.direction = 0xff; - gPlayerEntity.hurtBlinkTime = -0x14; + gPlayerEntity.iframes = -0x14; gPlayerState.jumpStatus = 0x41; gPlayerState.flags.all &= 0xfff7ffff; } @@ -410,7 +410,7 @@ void sub_08023894(Entity* this) { gPlayerEntity.y.HALF.HI = this->y.HALF.HI; gPlayerEntity.direction = DirectionRoundUp(GetFacingDirection(*(Entity**)&this->field_0x74, this)); gPlayerEntity.animationState = gPlayerEntity.direction >> 2; - gPlayerEntity.hurtBlinkTime = 12; + gPlayerEntity.iframes = 12; ModHealth(-0x10); sub_0800449C(&gPlayerEntity, 0x7a); } @@ -421,7 +421,7 @@ void sub_0802390C(Entity* this) { if (this->bitfield & 0x80) { Entity* ent = this->attachedEntity; do { - ent->hurtBlinkTime = this->hurtBlinkTime; + ent->iframes = this->iframes; } while (ent = ent->attachedEntity, ent != NULL); } else { Entity* ent = this->attachedEntity; @@ -431,7 +431,7 @@ void sub_0802390C(Entity* this) { if (bVar2 != 0) { u32 tmp; ent->currentHealth = 0xff; - tmp = (u8)ent->hurtBlinkTime; + tmp = (u8)ent->iframes; if (this->currentHealth >= bVar2) { this->currentHealth -= bVar2; } else { @@ -440,7 +440,7 @@ void sub_0802390C(Entity* this) { ent = this; do { - ent->hurtBlinkTime = tmp; + ent->iframes = tmp; } while (ent = ent->attachedEntity, ent != NULL); break; } diff --git a/src/enemy/octorok.c b/src/enemy/octorok.c index d89e4e65..4a021874 100644 --- a/src/enemy/octorok.c +++ b/src/enemy/octorok.c @@ -55,16 +55,16 @@ void sub_0801EB0C(Entity* this) { } void sub_0801EB2C(Entity* this) { - if (this->previousActionFlag < 3 && !sub_0806F520(this)) { + if (this->subAction < 3 && !sub_0806F520(this)) { Octorok_Pause(this); InitializeAnimation(this, this->animationState); } else { - gUnk_080CA158[this->previousActionFlag](this); + gUnk_080CA158[this->subAction](this); } } void sub_0801EB68(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; } diff --git a/src/enemy/peahat.c b/src/enemy/peahat.c index 07fd3f5a..85a38d74 100644 --- a/src/enemy/peahat.c +++ b/src/enemy/peahat.c @@ -58,14 +58,14 @@ void sub_0801FFDC(Entity* this) { this->animationState = PeahatAnimation_SlicedPropeller; this->action = 5; this->speed = 0x80; - this->hurtBlinkTime = -30; + this->iframes = -30; this->field_0x80.HALF.HI = 0; InitializeAnimation(this, this->animationState); } else if (this->bitfield == 0x9b) { this->animationState = PeahatAnimation_BrokenPropeller; this->action = 5; this->speed = 0x80; - this->hurtBlinkTime = -30; + this->iframes = -30; this->field_0x80.HALF.HI = 0; InitializeAnimation(this, this->animationState); } else if (this->bitfield == 0x80) { @@ -87,14 +87,14 @@ void sub_0801FFDC(Entity* this) { } void sub_08020088(Entity* this) { - if (2 >= this->previousActionFlag && !sub_0806F520(this)) + if (2 >= this->subAction && !sub_0806F520(this)) return; - gUnk_080CA5BC[this->previousActionFlag](this); + gUnk_080CA5BC[this->subAction](this); } void sub_080200B4(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; if (this->animationState == PeahatAnimation_Flying) { this->animationState = PeahatAnimation_BrokenPropeller; @@ -150,7 +150,7 @@ void Peahat_Fly(Entity* this) { if (sub_08049FDC(this, 1)) { if (this->field_0x82.HALF.HI == 0 && (this->field_0xf & 0xf) == 0 && sub_08049F1C(this, gUnk_020000B0, 0x30)) { this->action = 2; - this->previousActionFlag = Random() & 3; + this->subAction = Random() & 3; this->actionDelay = 60; this->speed = 160; } diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c index a8d24fa2..f34d439a 100644 --- a/src/enemy/pesto.c +++ b/src/enemy/pesto.c @@ -78,20 +78,20 @@ void sub_08023FE0(Entity* this) { } void sub_08023FF0(Entity* this) { - if (this->previousActionFlag < 3 && !sub_0806F520(this)) { + if (this->subAction < 3 && !sub_0806F520(this)) { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->flags |= 0x80; this->damageType = 0x77; this->actionDelay = 1; this->speed = 0x40; } else { - gUnk_080CBEF8[this->previousActionFlag](this); + gUnk_080CBEF8[this->subAction](this); } } void sub_08024038(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; GetNextFrame(this); } @@ -129,7 +129,7 @@ void sub_080240B8(Entity* this) { u32 direction = (Random() & 0xc0) >> 3; sub_0804A720(this); this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->field_0x80.HALF.LO = 0; if (direction & 8) { this->y.HALF.HI += (direction & 0x10) ? -0x20 : 0x20; @@ -829,7 +829,7 @@ void sub_08024E4C(Entity* this) { player->spritePriority.b1 = 0; if (this->field_0xf == 0) { (this->field_0x86.HALF.HI++; - player->hurtBlinkTime = 8; + player->iframes = 8; ModHealth(-2); sub_0800449C(player, 0x7a); } @@ -849,7 +849,7 @@ void sub_08024F50(Entity* this) { CopyPosition(this, &gPlayerEntity); gPlayerEntity.action = 1; gPlayerEntity.flags |= 0x80; - gPlayerEntity.hurtBlinkTime = -0x3c; + gPlayerEntity.iframes = -0x3c; gPlayerEntity.direction = gPlayerEntity.animationState << 2; gPlayerEntity.speed = 0; gPlayerEntity.spritePriority.b1 = this->cutsceneBeh.HALF.HI; diff --git a/src/enemy/puffstool.c b/src/enemy/puffstool.c index 08908191..aba4ff55 100644 --- a/src/enemy/puffstool.c +++ b/src/enemy/puffstool.c @@ -74,7 +74,7 @@ void sub_08025020(Entity* this) { if (0 < this->field_0x20) { this->field_0x20 = 0; } - this->hurtBlinkTime = -0xc; + this->iframes = -0xc; this->field_0x42 = 0; if (this->field_0x80.HALF.LO == 0) { this->animationState = (*(Entity**)&this->field_0x4c)->direction >> 3; @@ -84,7 +84,7 @@ void sub_08025020(Entity* this) { } break; default: - if (this->damageType == 0x82 && this->hurtBlinkTime < 0) { + if (this->damageType == 0x82 && this->iframes < 0) { Entity* ent = CreateObject(0x21, 2, 0); if (ent != NULL) { ent->spritePriority.b0 = 3; @@ -108,14 +108,14 @@ void sub_0802511C(Entity* this) { void sub_0802514C(Entity* this) { sub_08003FC4(this, 0x2000); if (sub_0806F520(this)) { - gUnk_080CBFEC[this->previousActionFlag](this); + gUnk_080CBFEC[this->subAction](this); } else { sub_08025C2C(this); } } void sub_08025180(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->actionDelay = Random(); this->animationState = (((*(Entity**)&this->field_0x4c)->direction ^ 0x10) >> 3); InitializeAnimation(this, this->animationState + 4); diff --git a/src/enemy/rockChuchu.c b/src/enemy/rockChuchu.c index 01a0c9c7..dd4d31c6 100644 --- a/src/enemy/rockChuchu.c +++ b/src/enemy/rockChuchu.c @@ -43,7 +43,7 @@ void sub_08022254(Entity* this) { ent = CreateEnemy(1, 1); if (ent) { ent->type2 = 1; - ent->hurtBlinkTime = -8; + ent->iframes = -8; sub_0804A4E4(this, ent); this->action = 2; this->flags &= ~0x80; @@ -96,7 +96,7 @@ void sub_080223E4(Entity* this) { ent = this->attachedEntity; if (ent) { ent->bitfield = 0x94; - ent->hurtBlinkTime = 0x10; + ent->iframes = 0x10; ent->field_0x42 = 0xc; ent->field_0x3e = this->direction; } diff --git a/src/enemy/rollobite.c b/src/enemy/rollobite.c index 263b5625..5928e62b 100644 --- a/src/enemy/rollobite.c +++ b/src/enemy/rollobite.c @@ -63,18 +63,18 @@ void sub_080206E0(Entity* this) { } void sub_08020734(Entity* this) { - if (this->previousActionFlag < 3 && !sub_0806F520(this)) { + if (this->subAction < 3 && !sub_0806F520(this)) { this->action = 4; this->flags |= 0x80; this->direction = 0xff; InitializeAnimation(this, this->animationState + 0x10); } else { - gUnk_080CA6A4[this->previousActionFlag](this); + gUnk_080CA6A4[this->subAction](this); } } void sub_0802077C(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 60; } @@ -132,11 +132,11 @@ void Rollobite_Walk(Entity* this) { } void sub_08020874(Entity* this) { - gUnk_080CA6BC[this->previousActionFlag](this); + gUnk_080CA6BC[this->subAction](this); } void sub_0802088C(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->flags &= ~0x80; this->cutsceneBeh.HALF.HI = gPlayerEntity.animationState; this->spritePriority.b1 = 0; diff --git a/src/enemy/rope.c b/src/enemy/rope.c index d1d73723..f6076324 100644 --- a/src/enemy/rope.c +++ b/src/enemy/rope.c @@ -36,12 +36,12 @@ void sub_080313AC(Entity* this) { void sub_080313E8(Entity* this) { if (sub_0806F520()) { - gUnk_080CE470[this->previousActionFlag](this); + gUnk_080CE470[this->subAction](this); } } void sub_0803140C(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 0x3c; } @@ -65,7 +65,7 @@ void sub_08031434(Entity* this) { sub_08031600(this); } else { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->spriteSettings.b.draw = (this->spriteSettings.b.draw & 0xfc); this->height.HALF.HI = -0x80; this->frameIndex = 0xff; @@ -73,13 +73,13 @@ void sub_08031434(Entity* this) { } void sub_08031480(Entity* this) { - if (this->previousActionFlag == 0) { + if (this->subAction == 0) { if (this->actionDelay != 0) { this->actionDelay--; } else { sub_08031600(this); this->action = 1; - this->previousActionFlag = 1; + this->subAction = 1; this->spriteSettings.b.draw = 3; this->spriteRendering.b3 = 1; this->spriteOrientation.flipY = 1; diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 64584892..b1aebc92 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -234,7 +234,7 @@ void sub_080296D8(Entity* this) { gPlayerState.flags.all &= 0xffffffef; gPlayerEntity.flags |= 0x80; gPlayerEntity.field_0x20 = 0x18000; - gPlayerEntity.hurtBlinkTime = 0xa6; + gPlayerEntity.iframes = 0xa6; gPlayerEntity.height.HALF.HI = -2; gPlayerEntity.direction = gPlayerEntity.animationState << 2; gPlayerEntity.spritePriority.b1 = this->field_0x80.HALF.LO; @@ -243,8 +243,8 @@ void sub_080296D8(Entity* this) { this->action = 5; this->field_0xf = 0x3c; this->flags2 |= 3; - if ((s8)this->hurtBlinkTime == 0) { - this->hurtBlinkTime = 0xf4; + if ((s8)this->iframes == 0) { + this->iframes = 0xf4; } } diff --git a/src/enemy/slime.c b/src/enemy/slime.c index 9609232d..f6ea1d7f 100644 --- a/src/enemy/slime.c +++ b/src/enemy/slime.c @@ -3,12 +3,6 @@ #include "room.h" #include "functions.h" -typedef struct { - void* field_0x0; - void* entityCount; - u8 freezeTime; -} EntityHandler; - typedef struct { s8 h, v; } PACKED PosOffset; @@ -29,7 +23,6 @@ extern u8 gUnk_080D16D0[4]; // Entity count per form extern PosOffset gUnk_080D16D4[4]; extern u8 gEntCount; -extern EntityHandler gHitboxCount; void Slime(Entity* this) { EnemyFunctionHandler(this, gUnk_080D16A4); @@ -117,7 +110,7 @@ void sub_080450A8(Entity* this) { ent->parent = entities[(i + count - 1) % count]; ent->type2 = 1; ent->height.HALF.HI = 0; - ent->hurtBlinkTime = -0x10; + ent->iframes = -0x10; /* Set MiniSlime offset relative to killed slime. */ sub_08045178(this, ent, off->h, off->v); diff --git a/src/enemy/smallPesto.c b/src/enemy/smallPesto.c index 7b6dbbfd..7d5aea83 100644 --- a/src/enemy/smallPesto.c +++ b/src/enemy/smallPesto.c @@ -42,17 +42,17 @@ void sub_0803169C(Entity* this) { iVar1 = sub_0806F520(this); if (iVar1 == 0) { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->flags = this->flags | 0x80; this->speed = 0x40; this->field_0xf = 1; } else { - gUnk_080CE554[this->previousActionFlag](this); + gUnk_080CE554[this->subAction](this); } } void sub_080316DC(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 0x3c; } diff --git a/src/enemy/spark.c b/src/enemy/spark.c index 210b8431..4a6541fa 100644 --- a/src/enemy/spark.c +++ b/src/enemy/spark.c @@ -19,7 +19,7 @@ void sub_0802B2E0(Entity* this) { if (this->bitfield & 0x80) { if ((this->bitfield & 0x7f) == 0x14) { this->flags &= ~0x80; - this->hurtBlinkTime = 0; + this->iframes = 0; this->spriteSettings.b.draw = 0; this->action = 2; ent = CreateFx(this, 2, 0); diff --git a/src/enemy/spearMoblin.c b/src/enemy/spearMoblin.c index 68e0fef5..8523ae91 100644 --- a/src/enemy/spearMoblin.c +++ b/src/enemy/spearMoblin.c @@ -56,7 +56,7 @@ void sub_08028284(Entity* this) { } } - this->attachedEntity->hurtBlinkTime = this->hurtBlinkTime; + this->attachedEntity->iframes = this->iframes; if (this->currentHealth == 0) { this->speed = 0; this->field_0x82.HALF.LO = 0; @@ -386,7 +386,7 @@ void sub_080288C0(Entity* this) { Entity* ent = this->attachedEntity; if (ent && (ent->bitfield & 0x80)) { this->field_0x3e = ent->field_0x3e; - this->hurtBlinkTime = -ent->hurtBlinkTime; + this->iframes = -ent->iframes; this->field_0x46 = ent->field_0x46; this->field_0x42 = ent->field_0x42; ent->field_0x42 = 0; diff --git a/src/enemy/spikedBeetle.c b/src/enemy/spikedBeetle.c index 503084e7..727243a2 100644 --- a/src/enemy/spikedBeetle.c +++ b/src/enemy/spikedBeetle.c @@ -52,7 +52,7 @@ void sub_0802B628(Entity* this) { this->speed = 0xc0; this->direction = this->field_0x3e; this->field_0x42 = 0; - this->hurtBlinkTime = -8; + this->iframes = -8; this->damageType = 100; InitializeAnimation(this, 9); } diff --git a/src/enemy/spinyChuchu.c b/src/enemy/spinyChuchu.c index 7bf39713..7b2424b8 100644 --- a/src/enemy/spinyChuchu.c +++ b/src/enemy/spinyChuchu.c @@ -117,11 +117,11 @@ void sub_080225EC(Entity* this) { } void sub_08022654(Entity* this) { - switch (this->previousActionFlag) { + switch (this->subAction) { case 0: if (--this->field_0xf) return; - this->previousActionFlag = 1; + this->subAction = 1; SoundReq(0x12d); InitializeAnimation(this, 0); /* fallthrough */ @@ -129,7 +129,7 @@ void sub_08022654(Entity* this) { if (sub_08003FC4(this, 0x1800)) return; - this->previousActionFlag = 2; + this->subAction = 2; this->spriteSettings.b.draw = 1; InitializeAnimation(this, 5); EnqueueSFX(0x7d); diff --git a/src/enemy/tektite.c b/src/enemy/tektite.c index 66d2ca82..506cd20f 100644 --- a/src/enemy/tektite.c +++ b/src/enemy/tektite.c @@ -29,7 +29,7 @@ void sub_0802F150(Entity* this) { switch (this->bitfield & 0x3f) { case 0x14: this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; if (this->type != 0) { this->actionDelay = 0xc0; } else { @@ -70,7 +70,7 @@ void sub_0802F210(Entity* this) { sub_0804A720(this); this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = gUnk_080CDEF8[Random() & 3]; this->actionDelay = (Random() & 0x1f) + this->actionDelay; this->field_0xf = 0; @@ -119,7 +119,7 @@ void sub_0802F300(Entity* this) { if (sub_080044EC(this, this->field_0x80.HWORD) == 1) { this->action = 3; - this->previousActionFlag = 0; + this->subAction = 0; if (this->type != 0) { rand = 0; } @@ -146,9 +146,9 @@ void sub_0802F300(Entity* this) { } } - if ((this->previousActionFlag == 0) && (temp < this->height.HALF.HI)) { + if ((this->subAction == 0) && (temp < this->height.HALF.HI)) { InitializeAnimation(this, 4); - this->previousActionFlag = 1; + this->subAction = 1; } if (temp < -0xc) { diff --git a/src/enemy/tektiteGolden.c b/src/enemy/tektiteGolden.c index 3bf14e34..35399b09 100644 --- a/src/enemy/tektiteGolden.c +++ b/src/enemy/tektiteGolden.c @@ -27,7 +27,7 @@ void sub_08037F00(Entity* this) { sub_0804AA30(this, &gUnk_080CF4A0); if (this->bitfield == 0x94) { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x14; this->field_0xf = 0; this->field_0x80.HALF.LO = 0; @@ -69,7 +69,7 @@ void sub_08037FA0(Entity* this) { } sub_0804A720(this); this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = (Random() & 0x1f) + 0x20; this->field_0xf = 0; this->field_0x80.HALF.LO = 0; @@ -106,7 +106,7 @@ void sub_08038048(Entity* this) { if (sub_080044EC(this, 0x3000) == 1) { this->action = 3; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0x14; InitializeAnimation(this, 3); return; @@ -121,9 +121,9 @@ void sub_08038048(Entity* this) { sub_08038168(this); } - if ((this->previousActionFlag == 0) && (temp < this->height.HALF.HI)) { + if ((this->subAction == 0) && (temp < this->height.HALF.HI)) { InitializeAnimation(this, 4); - this->previousActionFlag = 1; + this->subAction = 1; } if (temp < -0xc) { diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c index 10463258..d611c173 100644 --- a/src/enemy/wisp.c +++ b/src/enemy/wisp.c @@ -49,7 +49,7 @@ void sub_08033564(Entity* this) { break; case 0x14: this->flags &= 0x7f; - this->hurtBlinkTime = 0; + this->iframes = 0; this->spriteSettings.b.draw = FALSE; ent = CreateFx(this, 2, 0); if (ent != NULL) { @@ -64,12 +64,12 @@ void sub_08033564(Entity* this) { void sub_0803362C(Entity* this) { if (sub_0806F520() != 0) { - gUnk_080CEB98[this->previousActionFlag](this); + gUnk_080CEB98[this->subAction](this); } } void sub_08033650(Entity* this) { - this->previousActionFlag = 2; + this->subAction = 2; } void sub_08033658(Entity* this) { diff --git a/src/game.c b/src/game.c index 08d0198a..8d4654b0 100644 --- a/src/game.c +++ b/src/game.c @@ -13,7 +13,6 @@ extern u8 gArea; extern Entity gPlayerEntity; -extern u32 gUnk_03000B80; extern u32 gUnk_03003FC0; extern u16 gWalletSizes[4]; @@ -238,7 +237,7 @@ void InitializePlayer(void) { Entity* pl; sub_080784C8(); - MemClear32((void*)&gUnk_03000B80, 0x70); + MemClear32((void*)&gUnk_03000B80, sizeof(gUnk_03000B80)); MemClear32((void*)&gPlayerState, 0xb0); MemFill32(0xffffffff, &gPlayerState.field_0x40, 0x40); diff --git a/src/item.c b/src/item.c index ad7a419b..efe29411 100644 --- a/src/item.c +++ b/src/item.c @@ -28,7 +28,6 @@ extern void (*const gUnk_0811BDE0[])(ItemBehavior* beh, u32); extern void (*const gUnk_0811BDE8[])(ItemBehavior* beh, u32); extern void (*const gUnk_0811BDF4[])(ItemBehavior* beh, u32); -extern u8 gUnk_02034490; #if 0 void Ocarina(ItemBehavior* beh, u32 inputFlags) { gOcarinaStates[beh->stateID](beh, inputFlags); diff --git a/src/item11.c b/src/item11.c index 984d02e0..78d4168b 100644 --- a/src/item11.c +++ b/src/item11.c @@ -16,7 +16,7 @@ extern Hitbox* gUnk_080B3DE8[]; void Item11(Entity* this) { if (this->currentHealth) { - this->hurtBlinkTime = 0; + this->iframes = 0; gUnk_080B3DD0[this->action](this); } else { DeleteThisEntity(); @@ -82,7 +82,7 @@ void sub_08018DE8(Entity* this) { sub_08018F6C(this); break; case 5: - this->attachedEntity->previousActionFlag = 4; + this->attachedEntity->subAction = 4; this->flags = this->flags | 0x80; this->action = 2; this->spritePriority.b0 = 2; diff --git a/src/manager/manager15.c b/src/manager/manager15.c index 87135c56..66e92559 100644 --- a/src/manager/manager15.c +++ b/src/manager/manager15.c @@ -251,10 +251,10 @@ void sub_0805A664(Manager15* this) { sub_0805A68C(this); } -extern u32 sub_0806FBFC(u32, u32, u32, u32); +extern u32 CheckPlayerProximity(u32, u32, u32, u32); void sub_0805A68C(Manager15* this) { - if (sub_0806FBFC(this->unk_38 - 0x18, this->unk_3a - 0x18, 0x30, 0x30)) { + if (CheckPlayerProximity(this->unk_38 - 0x18, this->unk_3a - 0x18, 0x30, 0x30)) { if (this->unk_2c <= 0x1007) { gScreen.controls.alphaBlend = ++this->unk_2c; this->unk_22 = 0; @@ -285,7 +285,7 @@ void sub_0805A6E8(Manager15* this) { } u32 sub_0805A73C(Manager15* this) { - return sub_0806FBFC(this->unk_38 - 0x6, this->unk_3a - 0x6, 0xC, 0xC); + return CheckPlayerProximity(this->unk_38 - 0x6, this->unk_3a - 0x6, 0xC, 0xC); } void sub_0805A758(Manager15* this) { diff --git a/src/manager/manager1A.c b/src/manager/manager1A.c index 19a1dbca..46acfb2e 100644 --- a/src/manager/manager1A.c +++ b/src/manager/manager1A.c @@ -30,7 +30,7 @@ void sub_0805B030(Manager1A* this) { } extern void sub_08052D74(void*, void*, void*); -extern u32 sub_0806FBFC(u32, u32, u32, u32); +extern u32 CheckPlayerProximity(u32, u32, u32, u32); typedef struct struct_08108764 { u8 unk_00; @@ -138,7 +138,7 @@ void sub_0805B168(Manager1A* this) { u32 sub_0805B1CC(Manager1A* this) { u32 re = 0; - if (sub_0806FBFC(this->unk_20, this->unk_22, this->unk_24, this->unk_26)) { + if (CheckPlayerProximity(this->unk_20, this->unk_22, this->unk_24, this->unk_26)) { if ((gPlayerState.flags.all & 0x4) && (gPlayerState.flags.all & 0x1)) { gPlayerState.flags.all |= 0x8000; } else if (gPlayerState.flags.all & 0x8000) { diff --git a/src/manager/manager3.c b/src/manager/manager3.c index 5234f149..15676771 100644 --- a/src/manager/manager3.c +++ b/src/manager/manager3.c @@ -6,6 +6,8 @@ #include "player.h" #include "functions.h" +// Facilitates the usage of minish portals. + typedef struct { Manager manager; u32 unk_20; @@ -21,7 +23,7 @@ typedef struct { } Manager3; extern s8 gUnk_08107C6C[]; -extern u32 sub_0806FBFC(u32, u32, u32, u32); +extern u32 CheckPlayerProximity(u32, u32, u32, u32); extern u32 sub_08057810(void); extern u32 sub_080002C0(u16, u16, u8); extern void sub_080577AC(u32, u32, u32); @@ -34,14 +36,14 @@ void sub_080576C0(Manager3* this) { this->unk_24 = this->unk_3a + gRoomControls.roomOriginY - 0x20; return; } - if (sub_0806FBFC(this->unk_20, this->unk_24, 0x40, 0x40)) { - gArea.field_0x12 = this->unk_20 + 0x20; - gArea.field_0x14 = this->unk_24 + 0x20 + gUnk_08107C6C[this->manager.unk_0a]; - gArea.field_0x16 = this->unk_34; - gArea.field_0x17 = this->manager.unk_0a; + if (CheckPlayerProximity(this->unk_20, this->unk_24, 0x40, 0x40)) { + gArea.curPortalX = this->unk_20 + 0x20; + gArea.curPortalY = this->unk_24 + 0x20 + gUnk_08107C6C[this->manager.unk_0a]; + gArea.curPortalExitDirection = this->unk_34; + gArea.curPortalType = this->manager.unk_0a; if (!CheckGlobalFlag(EZERO_1ST)) { gArea.field_0x18 = 1; - gArea.field_0x17 = 5; + gArea.curPortalType = 5; } else { if ((gPlayerState.flags.all & 0x20) && gPlayerState.jumpStatus == 0) { gArea.field_0x18 = 2; @@ -90,7 +92,7 @@ void sub_080577AC(u32 baseX, u32 baseY, u32 layer) { } u32 sub_08057810(void) { - if ((gPlayerState.flags.all & 0x80) && !gPlayerState.field_0xaa && (gArea.field_0x17 != 0x6) && + if ((gPlayerState.flags.all & 0x80) && !gPlayerState.field_0xaa && (gArea.curPortalType != 0x6) && (gPlayerState.heldObject == 0)) { switch (gPlayerState.field_0xa8) { case 0: diff --git a/src/npc/beedle.c b/src/npc/beedle.c index 3e09302f..b4d25858 100644 --- a/src/npc/beedle.c +++ b/src/npc/beedle.c @@ -159,6 +159,6 @@ void sub_080634EC(Entity* this) { void sub_08063504(Entity* this, ScriptExecutionContext* context) { u32 uVar1; - uVar1 = sub_080544DC(gUnk_0810C88C[this->type2]); + uVar1 = GetBottleContaining(gUnk_0810C88C[this->type2]); context->condition = BOOLCAST(uVar1); } diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index d4896ce9..c51e4199 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -20,7 +20,7 @@ void BigGoron(Entity* this) { void sub_0806CF30(Entity* this) { if (this->action == 0) { this->action = 1; - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x68.HWORD = this->x.HALF.HI; sub_0805E3A0(this, 2); sub_0806D0B0(this); @@ -30,7 +30,7 @@ void sub_0806CF30(Entity* this) { HandleEntity0x82Actions(this); } - switch (this->previousActionFlag) { + switch (this->subAction) { case 0: case 1: if (gScreenTransition.frameCount % 4 == 0) { diff --git a/src/npc/cow.c b/src/npc/cow.c index d5e7988d..62d31597 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -56,8 +56,8 @@ void sub_08068FC0(Entity* ent) { void sub_08069018(Entity* ent) { s32 var0; - if (ent->previousActionFlag == 0) { - ent->previousActionFlag++; + if (ent->subAction == 0) { + ent->subAction++; ent->field_0xf = (Random() & 0x3F) + 0x3C; InitAnimationForceUpdate(ent, ent->animationState); } @@ -70,7 +70,7 @@ void sub_08069018(Entity* ent) { } else { ent->action = 3; } - ent->previousActionFlag = var0; + ent->subAction = var0; } sub_0806924C(ent); @@ -79,10 +79,10 @@ void sub_08069018(Entity* ent) { void sub_08069068(Entity* ent) { s32 var0; - if (ent->previousActionFlag == 0) { + if (ent->subAction == 0) { u32 anim; - ent->previousActionFlag++; + ent->subAction++; anim = (Random() & 2) - 1; anim = (anim + ent->animationState) & 3; @@ -126,7 +126,7 @@ void sub_08069068(Entity* ent) { var0 = --ent->field_0xf; if (var0 == 0) { ent->action = 3; - ent->previousActionFlag = var0; + ent->subAction = var0; } sub_0806924C(ent); @@ -134,7 +134,7 @@ void sub_08069068(Entity* ent) { void sub_08069124(Entity* ent) { UpdateAnimationSingleFrame(ent); - gUnk_08111928[ent->previousActionFlag](ent); + gUnk_08111928[ent->subAction](ent); sub_0806924C(ent); } @@ -142,13 +142,13 @@ void sub_08069148(Entity* ent) { u32 var0 = Random() & 3; var0 += 3; ent->field_0xf = var0; - ent->previousActionFlag = 1; + ent->subAction = 1; InitAnimationForceUpdate(ent, ent->animationState + 8); } void sub_08069168(Entity* ent) { if ((s8)ent->frames.all < 0) { - ent->previousActionFlag = 2; + ent->subAction = 2; InitAnimationForceUpdate(ent, ent->animationState + 12); } } @@ -160,14 +160,14 @@ void sub_08069188(Entity* ent) { if (((s8)--ent->field_0xf) != 0) return; - ent->previousActionFlag = 3; + ent->subAction = 3; InitAnimationForceUpdate(ent, ent->animationState + 16); } void sub_080691BC(Entity* ent) { if ((s8)ent->frames.all < 0) { ent->action = 1; - ent->previousActionFlag = 0; + ent->subAction = 0; InitAnimationForceUpdate(ent, ent->animationState + 4); } } @@ -175,7 +175,7 @@ void sub_080691BC(Entity* ent) { void sub_080691E0(Entity* ent) { if (UpdateFuseInteraction(ent) != 0) { ent->action = 1; - ent->previousActionFlag = 0; + ent->subAction = 0; } } diff --git a/src/object/backgroundCloud.c b/src/object/backgroundCloud.c index df2625a3..f47d276c 100644 --- a/src/object/backgroundCloud.c +++ b/src/object/backgroundCloud.c @@ -24,7 +24,7 @@ void sub_0808F658(Entity* this) { this->animationState = 0; this->x.HALF.HI += (Random() & 0xf) << 4; this->actionDelay = 0; - this->previousActionFlag = 0; + this->subAction = 0; } void sub_0808F6E0(Entity* this) { @@ -35,8 +35,8 @@ void sub_0808F6E0(Entity* this) { } void sub_0808F70C(Entity* this) { - if (this->previousActionFlag == 0) { - this->previousActionFlag = 1; + if (this->subAction == 0) { + this->subAction = 1; this->actionDelay = ((Random() & 7) << 3) + 31; if ((this->direction & 0x10)) { @@ -49,10 +49,10 @@ void sub_0808F70C(Entity* this) { this->y.HALF.HI = gUnk_08121EB3[this->type2 * 2 + (Random() & 1)]; } - if (this->previousActionFlag == 1) { + if (this->subAction == 1) { if (--this->actionDelay == 0) { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; } } } diff --git a/src/object/bakerOven.c b/src/object/bakerOven.c index a64217f1..12cbf897 100644 --- a/src/object/bakerOven.c +++ b/src/object/bakerOven.c @@ -59,12 +59,12 @@ void sub_0809CD0C(Entity* this) { } /* Damage minish link if he touches a steam cloud */ - if (this->field_0xf == 0 && gPlayerEntity.hurtBlinkTime == 0 && this->frameIndex && + if (this->field_0xf == 0 && gPlayerEntity.iframes == 0 && this->frameIndex && sub_0806FC80(this, &gPlayerEntity, 4)) { this->field_0xf++; ModHealth(-2); sub_0800449C(&gPlayerEntity, 0x7a); - gPlayerEntity.hurtBlinkTime = 16; + gPlayerEntity.iframes = 16; gPlayerEntity.field_0x3e = 16; gPlayerEntity.field_0x42 = 12; gPlayerEntity.field_0x46 = 16; diff --git a/src/object/bird.c b/src/object/bird.c index 6d126380..ca248b21 100644 --- a/src/object/bird.c +++ b/src/object/bird.c @@ -69,7 +69,7 @@ void sub_0809D048(Entity* this) { } void sub_0809D06C(Entity* this) { - gUnk_08123EFC[this->previousActionFlag](this); + gUnk_08123EFC[this->subAction](this); } void sub_0809D084(Entity* this) { @@ -80,7 +80,7 @@ void sub_0809D084(Entity* this) { if (temp != 0) { PositionRelative(this->parent, this, 0, 0x80000); } else { - this->previousActionFlag++; + this->subAction++; this->field_0x20 = temp; } } diff --git a/src/object/button.c b/src/object/button.c index 23a2ee8d..b98d6169 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -47,7 +47,7 @@ void sub_08081FF8(Entity*); void sub_08081BAC(Entity* this) { if (sub_08081CB0(this)) { - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 0xA; sub_0805E4E0(this, 0xA); sub_08081FF8(this); diff --git a/src/object/houseDoorExterior.c b/src/object/houseDoorExterior.c index 0d9b6e81..2b6edaae 100644 --- a/src/object/houseDoorExterior.c +++ b/src/object/houseDoorExterior.c @@ -61,7 +61,7 @@ void sub_080866D8(Entity* this) { entity->field_0x68.HWORD = prop->unk0; entity->field_0x6a.HWORD = prop->unk2; entity->collisionLayer = prop->unk4; - entity->previousActionFlag = prop->unk5; + entity->subAction = prop->unk5; UpdateSpriteForCollisionLayer(entity); *((u32*)(&this->field_0x68)) |= mask; if (prop->unk8) { @@ -98,7 +98,7 @@ static void sub_0808681C(Entity* this) { this->spriteSettings.b.draw = 1; this->frameIndex = 0; this->hitbox = &gUnk_081206AC; - if (this->previousActionFlag == 1) { + if (this->subAction == 1) { this->action = 2; this->frameIndex = 1; } @@ -158,7 +158,7 @@ void sub_0808692C(Entity* this) { this->flags &= 0xFD; this->type2 = 2; this->action = this->frameIndex == 0 ? 1 : 2; - this->previousActionFlag = 0; + this->subAction = 0; this->actionDelay = 8; } diff --git a/src/object/itemOnGround.c b/src/object/itemOnGround.c index b794b546..b30b1d33 100644 --- a/src/object/itemOnGround.c +++ b/src/object/itemOnGround.c @@ -162,7 +162,7 @@ static void sub_080810FC(Entity* this) { sub_08081598(this); } else { this->action = 2; - this->previousActionFlag = 0; + this->subAction = 0; this->flags |= 0x80; this->flags2 = 0x11; CopyPosition(&gPlayerEntity, this); @@ -304,11 +304,11 @@ void sub_0808136C(Entity* this) { } static void sub_080813BC(Entity* this) { - gUnk_0811E840[this->previousActionFlag](this); + gUnk_0811E840[this->subAction](this); } void sub_080813D4(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 1; this->spriteSettings.b.draw = 1; } diff --git a/src/object/object2A.c b/src/object/object2A.c index ffd00460..dca66978 100644 --- a/src/object/object2A.c +++ b/src/object/object2A.c @@ -31,7 +31,7 @@ void sub_08089B18(Entity* this) { case 4: if (!CheckFlags(this->field_0x86.HWORD)) { this->spriteSettings.b.draw = FALSE; - this->previousActionFlag = 1; + this->subAction = 1; return; } } diff --git a/src/object/object49.c b/src/object/object49.c index 16bf7bb9..7271d2d6 100644 --- a/src/object/object49.c +++ b/src/object/object49.c @@ -150,13 +150,13 @@ void sub_0808F2C0(Entity* this) { void sub_0808F370(Entity* this) { if (this->action == 0) { - if (this->parent->previousActionFlag == 1) { + if (this->parent->subAction == 1) { this->action = 1; this->field_0x70.WORD = 0; sub_0808F5EC(this); } } else { - u8 flag = this->parent->previousActionFlag - 1; + u8 flag = this->parent->subAction - 1; if (flag < 5) { if (this->field_0x70.WORD == 0) { if (--(*(u32*)&this->field_0x74) == -1) { diff --git a/src/object/object86.c b/src/object/object86.c index 9706e040..8aadd5ff 100644 --- a/src/object/object86.c +++ b/src/object/object86.c @@ -18,7 +18,7 @@ void sub_08099DD0(Entity* this) { this->collisionLayer = 1; this->spriteRendering.b3 = 3; this->spritePriority.b0 = 7; - this->previousActionFlag = 0; + this->subAction = 0; if (GetInventoryValue(0x46)) { this->action = 4; this->frameIndex = 0; @@ -31,7 +31,7 @@ void sub_08099DD0(Entity* this) { void sub_08099E10(Entity* this) { if (CheckLocalFlag(0x74)) { GetNextFrame(this); - if ((this->frames.all == 1) && (this->previousActionFlag == 0)) { + if ((this->frames.all == 1) && (this->subAction == 0)) { this->frames.all = 0; sub_08099ECC(this); } @@ -56,7 +56,7 @@ void sub_08099E58(Entity* this) { void sub_08099E8C(Entity* this) { if (sub_080041A0(this, &gPlayerEntity, 0xc, 0xc)) { - if (this->previousActionFlag == 0) { + if (this->subAction == 0) { sub_08099ECC(this); sub_0805E4E0(this, 0x1e); } @@ -70,7 +70,7 @@ void nullsub_534(Entity* this) { } void sub_08099ECC(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; CopyPosition(this, &gPlayerEntity); gPlayerState.playerAction = 3; gPlayerState.field_0x34[4] = 0; diff --git a/src/object/pot.c b/src/object/pot.c index f28fb9ee..1c44efef 100644 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -62,7 +62,7 @@ void sub_08082310(Entity* this) { switch (var0) { case 0x13: this->action = 3; - this->previousActionFlag = 0; + this->subAction = 0; break; case 0x1D: SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); @@ -114,7 +114,7 @@ void sub_08082310(Entity* this) { } void sub_080824F8(Entity* this) { - gUnk_0811F0A8[this->previousActionFlag](this); + gUnk_0811F0A8[this->subAction](this); } void sub_08082510(Entity* this) { @@ -125,7 +125,7 @@ void sub_08082510(Entity* this) { this->flags2 = gPlayerEntity.flags2; this->spriteOffsetY = 0; SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); - this->previousActionFlag++; + this->subAction++; } void nullsub_511(Entity* this) { @@ -166,7 +166,7 @@ void sub_080825F0(Entity* this) { static void sub_08082608(Entity* this) { this->action = 1; - this->previousActionFlag = 0; + this->subAction = 0; } void sub_08082614(Entity* this) { @@ -203,11 +203,11 @@ void sub_08082614(Entity* this) { } void sub_080826E4(Entity* this) { - gUnk_0811F0C4[this->previousActionFlag](this); + gUnk_0811F0C4[this->subAction](this); } void sub_080826FC(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->field_0x1d = 48; this->actionDelay = 0; } diff --git a/src/player.c b/src/player.c index 7dfcbb93..49949c20 100644 --- a/src/player.c +++ b/src/player.c @@ -7,34 +7,60 @@ #include "area.h" #include "save.h" -extern const void (*const gUnk_0811B9E0[])(Entity*); -extern const void (*const gUnk_0811BA60[])(Entity*); -extern const void (*const gUnk_0811BA68[])(Entity*); -extern const void (*const gUnk_0811BA74[])(Entity*); -extern const void (*const gUnk_0811BA7C[])(Entity*); -extern const void (*const gUnk_0811BA88[])(Entity*); -extern const void (*const gUnk_0811BA94[])(Entity*); -extern const void (*const gUnk_0811BA9C[])(Entity*); +static void (*const sPlayerActions[])(Entity*); +extern void (*const gUnk_0811BA60[])(Entity*); +extern void (*const gUnk_0811BA68[])(Entity*); +extern void (*const gUnk_0811BA74[])(Entity*); +extern void (*const gUnk_0811BA7C[])(Entity*); +extern void (*const gUnk_0811BA88[])(Entity*); +extern void (*const gUnk_0811BA94[])(Entity*); +extern void (*const gUnk_0811BA9C[])(Entity*); +extern void (*const gUnk_0811BAD4[])(Entity*); +extern void (*const gUnk_0811BAE4[])(Entity*); +extern void (*const gUnk_0811BB3C[])(Entity*); -extern void sub_08079458(); +extern void RespawnPlayer(); extern void sub_080797EC(); extern void sub_08079E08(); extern void sub_08078F60(); +extern void sub_0806F948(); +extern void sub_08077698(); +extern void sub_0805E544(); +extern void sub_080717F8(); +extern void DoExitTransition(); +extern void UnfreezeTime(); +extern void sub_08071A6C(); +extern void sub_08052BB8(); +extern void sub_08079258(); +extern void sub_08071AF0(); +extern void sub_080728AC(); +extern void sub_0807A298(); +extern u32 sub_08079B24(); +extern void sub_08079708(); +extern void sub_080792D8(); + +typedef struct { + u8 frame; + u8 dummy; + u16 speed; +} PushFrames; + +extern PushFrames gUnk_0811BAF0[]; extern Hitbox gUnk_08114F88; +extern ScreenTransitionData gUnk_0813AB58; -// inject -void sub_08070680(Entity* this) { - gUnk_0811B9E0[this->action](this); +void DoPlayerAction(Entity* this) { + sPlayerActions[this->action](this); } -void sub_08070698(Entity* this) { +void PlayerInit(Entity* this) { Entity* ent; gPlayerState.field_0x0[0] = 0xff; - gPlayerState.field_0x16[0] = gPlayerEntity.x.HALF.HI; - gPlayerState.field_0x16[1] = gPlayerEntity.y.HALF.HI; - this->flags = this->flags | 0x80; + gPlayerState.startPosX = gPlayerEntity.x.HALF.HI; + gPlayerState.startPosY = gPlayerEntity.y.HALF.HI; + this->flags |= 0x80; this->spritePriority.b0 = 0xc; this->spritePriority.b1 = 1; this->spriteSettings.b.shadow = 1; @@ -74,9 +100,7 @@ void sub_08070698(Entity* this) { } // PlayerState.flags need to be 100% before this one can reasonably be done -NONMATCH("asm/non_matching/player/sub_08070794.s", void sub_08070794(Entity* this)) { -} -END_NONMATCH +ASM_FUNC("asm/non_matching/player/sub_08070794.s", void PlayerNormal(Entity* this)) void sub_08070BEC(Entity* this, u32 r0) { if (r0 & 1) @@ -88,12 +112,12 @@ void sub_08070BEC(Entity* this, u32 r0) { sub_08079E08(); } -void sub_08070C10(Entity* this) { - gPlayerState.field_0xd[0] = 0xFF; +void PlayerFall(Entity* this) { + gPlayerState.field_0xd = 0xFF; gPlayerState.pushedObject = 0x80; gPlayerState.field_0xa8 = 10; - gUnk_0811BA60[this->previousActionFlag](this); + gUnk_0811BA60[this->subAction](this); } void sub_08070C3C(Entity* this) { @@ -111,7 +135,7 @@ void sub_08070C3C(Entity* this) { else gPlayerState.field_0x8 = 0x1b8; - this->previousActionFlag++; + this->subAction++; this->flags &= ~0x80; this->spritePriority.b1 = 0; ResetPlayer(); @@ -128,16 +152,16 @@ void sub_08070CB4(Entity* this) { this->spriteSettings.b.draw = 0; } else { gPlayerState.flags.all &= ~(0x4 | 0x8000); - sub_08079458(); + RespawnPlayer(); gPlayerState.field_0xa = 0; - this->hurtBlinkTime = 0x20; + this->iframes = 32; ModHealth(-2); } } } -void sub_08070D20(Entity* this) { - gUnk_0811BA68[this->previousActionFlag](this); +void PlayerBounce(Entity* this) { + gUnk_0811BA68[this->subAction](this); } void sub_08070D38(Entity* this) { @@ -145,7 +169,7 @@ void sub_08070D38(Entity* this) { this->direction = ((this->animationState & 0xe) << 2) ^ 0x10; this->speed = 0x100; this->field_0x42 = 0; - this->previousActionFlag++; + this->subAction++; this->actionDelay = gPlayerState.field_0x38; this->spriteIndex = 1; @@ -201,7 +225,7 @@ NONMATCH("asm/non_matching/player/sub_08070DC4.s", void sub_08070DC4(Entity* thi this->spriteIndex = 1; this->actionDelay = 8; - this->previousActionFlag++; + this->subAction++; if ((gPlayerState.flags.all & 0x80) == 0) gPlayerState.field_0x8 = 0x100; @@ -224,7 +248,7 @@ void sub_08070E9C(Entity* this) { gPlayerState.field_0x27[0] = 4; gPlayerState.field_0xa8 = 0x13; sub_0807A1B8(); - gUnk_0811BA74[this->previousActionFlag](this); + gUnk_0811BA74[this->subAction](this); } } @@ -232,7 +256,7 @@ void sub_08070EDC(Entity* this) { this->scriptedScene = 2; if ((gTextBox.doTextBox & 0x7f) != 0) - this->previousActionFlag = 1; + this->subAction = 1; if ((gPlayerState.flags.all & 0x80) == 0) sub_08079938(); @@ -248,13 +272,13 @@ void sub_08070f24(Entity* this) { } } -void sub_08070F50(Entity* this) { +void PlayerItemGet(Entity* this) { Entity* child; u8* temp; // todo: retype gPlayerState.field_0xa8 = 0x15; this->flags &= ~(0x80); - gUnk_0811BA7C[this->previousActionFlag](this); + gUnk_0811BA7C[this->subAction](this); child = this->attachedEntity; if (child != NULL) { @@ -275,7 +299,7 @@ void sub_08070FA4(Entity* this) { gPlayerState.jumpStatus = 0; if ((gPlayerState.flags.all & 0x80) == 0) { - if ((gPlayerState.flags.all & 0x8) != 0) { + if (gPlayerState.flags.all & 0x8) { if (sub_080542AC(gPlayerState.field_0x38)) { temp = 0x45e; } else { @@ -291,16 +315,15 @@ void sub_08070FA4(Entity* this) { gPlayerState.field_0x8 = temp; } - this->previousActionFlag = 1; + this->subAction = 1; ResetPlayer(); sub_08078F60(); } void sub_08071020(Entity* this) { UpdateAnimationSingleFrame(this); - if (this->frames.all != 0) { - this->previousActionFlag = 2; - } + if (this->frames.all != 0) + this->subAction = 2; } void sub_08071038(Entity* this) { @@ -310,24 +333,24 @@ void sub_08071038(Entity* this) { if (sub_08078EFC() || (gTextBox.doTextBox & 0x7f)) return; - if ((this->frames.all & 0x80) != 0) { + if (this->frames.all & 0x80) { this->attachedEntity = 0; this->field_0x42 = 0; - this->hurtBlinkTime = 0xf8; + this->iframes = 248; gPlayerState.jumpStatus = 0; sub_080791D0(); } } -void sub_08071084(Entity* this) { +void PlayerJump(Entity* this) { gPlayerState.field_0xa8 = 0xb; - gUnk_0811BA88[this->previousActionFlag](this); + gUnk_0811BA88[this->subAction](this); } void sub_080710A8(Entity* this) { u32 temp; - this->previousActionFlag++; + this->subAction++; gPlayerState.flags.all |= 1; gPlayerState.flags.all &= ~(0x400 | 0x800); @@ -353,7 +376,7 @@ void sub_080710A8(Entity* this) { asm("lsl r0, r0, #0x4"); this->field_0x20 = (temp - 4) * 64 * 64; - this->speed = 0x100; + this->speed = 256; sub_0807A108(); SoundReq(0x7c); SoundReq(0x78); @@ -367,7 +390,7 @@ void sub_08071130(Entity* this) { if (gPlayerState.field_0x1a[1] == 0) { UpdateAnimationSingleFrame(this); - if ((this->frames.all & 1)) + if (this->frames.all & 1) return; } @@ -401,7 +424,7 @@ void sub_08071130(Entity* this) { this->actionDelay = 6; if (((gPlayerState.heldObject | gPlayerState.keepFacing) == 0) && ((gPlayerState.flags.all & 0x80) == 0)) { - if ((gPlayerState.flags.all & 0x8) != 0) { + if (gPlayerState.flags.all & 0x8) { gPlayerState.field_0x8 = 0x424; } else { gPlayerState.field_0x8 = 0x820; @@ -409,7 +432,7 @@ void sub_08071130(Entity* this) { this->animIndex = 0xff; } - this->previousActionFlag++; + this->subAction++; sub_08078F60(); this->field_0x42 = 0; SoundReq(0x7d); @@ -428,33 +451,31 @@ void sub_08071208(Entity* this) { } } -void sub_08071248(Entity* this) { +void PlayerDrown(Entity* this) { gPlayerState.field_0xa8 = 0x16; gPlayerState.flags.all |= 4; this->flags &= ~0x80; - gUnk_0811BA94[this->previousActionFlag](this); + gUnk_0811BA94[this->subAction](this); } void sub_0807127C(Entity* this) { - this->previousActionFlag = 1; + this->subAction = 1; this->spritePriority.b1 = 0; - if ((gPlayerState.flags.all & 0x80) != 0) { + if (gPlayerState.flags.all & 0x80) { this->actionDelay = 0x3c; gPlayerState.field_0x8 = 0xc19; SoundReq(0x84); } else { - if ((gPlayerState.flags.all & 0x10000) == 0) { + if ((gPlayerState.flags.all & 0x10000) == 0) sub_08004168(this); - } CreateFx(this, 11, 0); - if ((gPlayerState.flags.all & 8) == 0) { + if ((gPlayerState.flags.all & 8) == 0) gPlayerState.field_0x8 = 0x72c; - } else { + else gPlayerState.field_0x8 = 0x44c; - } } ResetPlayer(); } @@ -480,28 +501,29 @@ void sub_080712F0(Entity* this) { return; this->field_0x42 = 0; - this->hurtBlinkTime = 0x20; + this->iframes = 32; this->spritePriority.b1 = 1; this->spriteSettings.b.draw = FALSE; - gPlayerState.flags.all &= ~(0x4); - sub_08079458(); + gPlayerState.flags.all &= ~0x4; + RespawnPlayer(); } -void sub_08071380(Entity* this) { +static void PlayerUsePortal(Entity* this) { gPlayerState.field_0xa8 = 0xe; - gUnk_0811BA9C[this->previousActionFlag](this); + gUnk_0811BA9C[this->subAction](this); - if ((this->previousActionFlag == 7) || (this->previousActionFlag < 3)) + // probably a switch + if ((this->subAction == 7) || (this->subAction < 3)) return; if ((gPlayerState.flags.all & 0x20) == 0) return; - if ((gInput.newKeys & 0x102) == 0) + if ((gInput.newKeys & (0x100 | 0x2)) == 0) return; - if (CheckIsDungeon() || gArea.field_0x17 == 3) { - this->previousActionFlag = 7; + if (CheckIsDungeon() || gArea.curPortalType == 3) { + this->subAction = 7; this->actionDelay = 30; DoFade(7, 16); SoundReq(0xf8); @@ -510,19 +532,19 @@ void sub_08071380(Entity* this) { } } -void sub_08071400(Entity* this) { +static void PortalJumpOnUpdate(Entity* this) { u16 x; u16 y; - this->flags &= ~(0x80); + this->flags &= ~0x80; this->field_0x42 = 0; - x = gArea.field_0x12; - y = gArea.field_0x14; + x = gArea.curPortalX; + y = gArea.curPortalY; if ((this->x.HALF.HI != x) || (this->y.HALF.HI != y)) { - this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, gArea.field_0x12, gArea.field_0x14); - this->speed = 0x100; + this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, gArea.curPortalX, gArea.curPortalY); + this->speed = 256; sub_08079E08(); } @@ -531,17 +553,542 @@ void sub_08071400(Entity* this) { if (gPlayerState.jumpStatus == 0) { gPlayerState.flags.all |= 0x20; - this->previousActionFlag = 1; + this->subAction = 1; this->animationState = 4; this->spriteSettings.b.flipX = FALSE; - if (gArea.field_0x17 == 4) { + if (gArea.curPortalType == 4) { gPlayerState.field_0x8 = 0x52c; } } this->actionDelay = 8; - if (gArea.field_0x17 != 3) { + if (gArea.curPortalType != 3) { this->spritePriority.b0 = 3; } } + +static void PortalStandUpdate(Entity* this) { + switch (gArea.curPortalType) { + case 4: + case 5: + sub_0806F948(&gPlayerEntity); + break; + } + + if ((gPlayerState.field_0xd & 0x84) == 0) { + if (this->direction != gPlayerState.field_0xd) { + this->actionDelay = 8; + } + if (--this->actionDelay == 0xff) { + this->direction = gPlayerState.field_0xd; + this->animationState = this->direction >> 2; + this->field_0x20 = 0x20000; + this->speed = 256; + this->action = 9; + this->subAction = 7; + this->field_0xf = 0; + gPlayerState.field_0x8 = (gPlayerState.flags.all & 8) ? 0x41C : 0x80C; + gPlayerState.flags.all &= ~0x20; + return; + } + this->direction = gPlayerState.field_0xd; + } else { + this->actionDelay = 8; + } + + if (gArea.curPortalType == 4) { + if (this->frames.all == 0) { + UpdateAnimationSingleFrame(this); + return; + } + } else { + sub_08077698(this); + } + sub_08079938(); +} + +static void PortalActivateInit(Entity* this) { + gRoomControls.cameraTarget = NULL; + gUnk_02034490[0] = 1; + this->subAction = 3; + this->field_0xf = 0x1e; + gPlayerState.field_0x8 = 0x738; + CreateObjectWithParent(this, 6, 1, 0); + sub_08077B20(); + sub_0805E544(); +} + +static void PortalActivateUpdate(Entity* this) { + if (this->field_0xf) + return; + + UpdateAnimationSingleFrame(this); + + if (gPlayerState.flags.all & 0x80) + this->subAction = 4; +} + +static void PortalShrinkInit(Entity* this) { + this->subAction = 5; + this->spritePriority.b1 = 0; + this->field_0xf = 0; + this->spriteRendering.b0 = 3; + *(u32*)&this->field_0x80.HWORD = 0x100; + *(u32*)&this->cutsceneBeh = 0x100; + sub_0805EC9C(this, 0x100, 0x100, 0); + gPlayerState.field_0x8 = 0x2c3; + gPlayerState.flags.all |= 0x80; + SoundReq(0x16f); +} + +// horrible +ASM_FUNC("asm/non_matching/player/sub_08071634.s", static void PortalShrinkUpdate(Entity* this)) + +static void PortalEnterUpdate(Entity* this) { + if (this->actionDelay == 0) { + if (sub_08003FC4(this, 0x2000)) + return; + + this->spriteSettings.b.draw = FALSE; + + if (gArea.curPortalType == 3) { + if (--this->field_0xf == 0) + sub_080717F8(this); + return; + } + if (gArea.curPortalType == 6) + DoExitTransition(&gUnk_0813AB58); + else + gArea.playShrinkSeq = 1; + + return; + } + this->actionDelay--; +} + +static void PortalUnknownUpdate(Entity* this) { + if (gFadeControl.active) + return; + + if (this->actionDelay != 0) { + this->actionDelay--; + return; + } + + sub_080717F8(this); + sub_080500F4(0x10); +} + +extern s16 gUnk_0811BAC4[]; + +void sub_080717F8(Entity* this) { + u32 x; + u32 y; + this->animationState = gArea.curPortalExitDirection << 1; + this->x.HALF.HI = gArea.curPortalX + gUnk_0811BAC4[gArea.curPortalExitDirection * 2]; + this->y.HALF.HI = gArea.curPortalY + gUnk_0811BAC4[gArea.curPortalExitDirection * 2 + 1]; + gArea.unk1A = 0xb4; + gUnk_02034490[0] = 0; + this->action = 9; + this->subAction = 0; + gPlayerState.flags.all = (gPlayerState.flags.all & ~0x20) | 0x80; + sub_0805EC60(this); + UnfreezeTime(); +} + +void PlayerTalkEzlo(Entity* this) { + if (sub_08078EFC()) { + sub_08056360(); + sub_08071A6C(); + } else { + gPlayerState.field_0xa8 = 0x13; + this->flags &= ~0x80; + gUnk_0811BAD4[this->subAction](this); + } +} + +void sub_080718A0(Entity* this) { + ResetPlayer(); + gUnk_03000B80.filler[0x63] = 0; + this->iframes = 0; + gUnk_03003DC0.unk0 = 6; + this->scriptedScene = 6; + + if (gPlayerState.flags.all & 0x80) { + this->subAction = 2; + this->spritePriority.b1 = 0; + sub_08052BB8(); + return; + } + + if (gPlayerState.jumpStatus == 0) { + this->subAction++; + + if (this->animationState == 2) + gPlayerState.field_0x8 = 0x3ca; + else + gPlayerState.field_0x8 = 0x3c6; + + this->spriteSettings.b.flipX = 0; + return; + } + + if (!sub_08003FC4(this, 0x2000)) + gPlayerState.jumpStatus = 0; +} + +void sub_0807193C(Entity* this) { + Entity* child; + + UpdateAnimationSingleFrame(this); + if (this->frames.all & 0x80) { + this->subAction++; + child = CreateObjectWithParent(this, 6, 0, 0); + this->attachedEntity = child; + if (child != NULL) { + if (this->animationState == 2) + gPlayerState.field_0x8 = 0x3cc; + else + gPlayerState.field_0x8 = 0x3c7; + sub_08052BB8(); + } + } +} + +void sub_08071990(Entity* this) { + u32 temp; + + if ((gTextBox.doTextBox & 0x7f) == 0) { + this->subAction++; + + if ((gPlayerState.flags.all & 0x80) == 0) { + if (this->animationState == 2) + gPlayerState.field_0x8 = 0x3cd; + else + gPlayerState.field_0x8 = 0x3c9; + } else { + sub_08071A6C(); + sub_08079258(); + } + return; + } + + if (gPlayerState.flags.all & 0x80) + return; + + if (this->animationState == 2) + temp = 4; + else + temp = 0; + + if (this->attachedEntity->actionDelay != 0) { + if ((u8)(temp + 200) != this->animIndex) { + gPlayerState.field_0x8 = temp + 0x3c8; + return; + } + } else { + if ((u8)(temp + 199) != this->animIndex) { + gPlayerState.field_0x8 = temp + 0x3c7; + return; + } + } + UpdateAnimationSingleFrame(this); +} + +void sub_08071A4C(Entity* this) { + UpdateAnimationSingleFrame(this); + if (this->frames.all & 0x80) { + sub_08071A6C(); + sub_0807921C(); + } +} + +void sub_08071A6C(void) { + gUnk_03003DC0.unk0 = 0; + gPlayerEntity.scriptedScene = gPlayerEntity.scriptedScene2; +} + +void PlayerPush(Entity* this) { + gPlayerState.field_0xa8 = 0x19; + gUnk_0811BAE4[this->subAction](this); +} + +void sub_08071AB0(Entity* this) { + u32 speed; + + this->subAction++; + gPlayerState.flags.all |= 1; + if (this->type == 1) { + this->speed = 0; + this->actionDelay = 0; + this->field_0xf = 1; + } else { + this->speed = (gPlayerState.flags.all & 0x80) ? 64 : 128; + } + sub_08071AF0(this); +} + +void sub_08071AF0(Entity* this) { + gPlayerState.field_0x80 = 0; + UpdateAnimationSingleFrame(this); + if (this->type == 1) { + if (--this->field_0xf == 0) { + if (gUnk_0811BAF0[this->actionDelay].frame != 0xff) { + this->field_0xf = gUnk_0811BAF0[this->actionDelay].frame; + this->speed = gUnk_0811BAF0[this->actionDelay].speed; + this->actionDelay++; + } else { + this->subAction++; + return; + } + } + } else { + gPlayerState.pushedObject--; + if ((gPlayerState.pushedObject & 0x7f) == 0) { + this->subAction++; + } + } + sub_08079E08(); +} + +void sub_08071B60(Entity* this) { + gPlayerState.pushedObject = 2; + gPlayerState.flags.all &= ~0x1; + this->type = 0; + this->field_0x42 = 0; + sub_080728AC(this); + this->field_0xf = 6; + if ((gPlayerState.flags.all & 0x80) == 0) { + gPlayerState.field_0x8 = 0x104; + this->spriteIndex = 3; + InitAnimationForceUpdate(this, (this->animationState >> 1) + 0x3c); + } +} + +extern void (*const gUnk_0811BB2C[])(Entity*); + +void PlayerMinishDie(Entity* this) { + this->flags &= ~0x80; + gUnk_0811BB2C[this->subAction](this); + gPlayerState.field_0xa8 = 0x12; +} + +void sub_08071BDC(Entity* this) { + u32 temp; + + if (gPlayerState.flags.all & (0x10 | 0x100)) + return; + + if (sub_08003FC4(this, 0x2000)) { + if ((gPlayerState.flags.all & 8) != 0) + gPlayerState.field_0x8 = 0x420; + else + gPlayerState.field_0x8 = 0x810; + return; + } + + gPlayerState.playerAction = 0; + if (gPlayerState.flags.all & 0x80) { + if ((u8)(gPlayerState.field_0x10[2] - 8) < 3) { + sub_0807A298(this); + RespawnPlayer(); + this->action = 10; + } + temp = 0xc1a; + } else { + temp = (gPlayerState.flags.all & 8) ? 0x459 : 0x1bc; + } + gPlayerState.field_0x8 = temp; + + gPlayerState.flags.all &= ~(0x1000000 | 0x200000 | 0x40000 | 0x800 | 0x400 | 0x100 | 0x1); + this->subAction = 1; + this->animationState = 4; + this->spritePriority.b1 = 1; + this->spriteSettings.b.draw = 3; + gPlayerState.jumpStatus = 0; + gPlayerState.pushedObject = 0; + sub_0800451C(this); + ResetPlayer(); + SoundReq(0x87); +} + +void sub_08071CAC(Entity* this) { + UpdateAnimationSingleFrame(this); + if (this->frames.all & 0x80) { + u32 temp; + if ((gPlayerState.flags.all & 0x80) == 0) + temp = (gPlayerState.flags.all & 8) ? 0x45a : 0x2bd; + else + temp = 0xc1b; + gPlayerState.field_0x8 = temp; + + this->subAction = 2; + this->actionDelay = 0xf0; + SoundReq(0x7b); + } +} + +void sub_08071D04(Entity* this) { + int idx; + int deltaHealth; + + UpdateAnimationSingleFrame(this); + if (this->frames.all == 0) + return; + + deltaHealth = 0; + idx = GetBottleContaining(0x28); + if (idx != 0) { + gSave.stats.bottles[idx - 1] = 0x20; + CreateObject(0x40, 0x60, 2); + deltaHealth = 32; + } + + if (deltaHealth != 0) { + ModHealth(deltaHealth); + this->subAction = 3; + gPlayerState.field_0x3c[0] = 0; + this->direction = 0xff; + this->speed = 0; + this->field_0x20 = 0x18000; + gPlayerState.jumpStatus = 1; + gPlayerState.swimState = 0; + return; + } + + gScreenTransition.field_0x4[1] = 1; +} + +void sub_08071D80(Entity* this) { + UpdateAnimationSingleFrame(this); + gPlayerState.field_0x14 = 1; + sub_08073904(this); + if ((gPlayerState.jumpStatus & 7) == 3) { + gPlayerState.jumpStatus = 0; + this->iframes = 226; + UnfreezeTime(); + sub_080791D0(); + } +} + +void sub_08071DB8(Entity* this) { + gUnk_0811BB3C[this->subAction](this); +} + +void sub_08071DD0(Entity* this) { + this->actionDelay = gPlayerState.field_0x38; + if (gPlayerState.field_0x39 != 0) { + gPlayerState.field_0x39 = 0; + this->subAction = 2; + gPlayerState.field_0x8 = 0x100; + } else { + this->subAction = 1; + gPlayerState.field_0x8 = 0x114; + } +} + +void sub_08071E04(Entity* this) { + if ((this->height.WORD != 0) && (gPlayerState.field_0x14 == '\0')) { + sub_0807A1B8(); + if (gPlayerState.field_0x10[2] == 1) { + gPlayerState.field_0x10[1] = 7; + gPlayerState.flags.all |= 0x200; + sub_080791BC(); + return; + } + } + + UpdateAnimationSingleFrame(this); + if (sub_08079B24() == 0) { + sub_08079708(this); + return; + } + + sub_080792D8(); + if (sub_0807953C()) + this->actionDelay -= 2; + else + this->actionDelay -= 1; + + if ((s8)this->actionDelay < 1) + sub_080791BC(); +} + +void sub_08071E74(Entity* this) { + u32 temp; + + sub_08003FC4(this, 0x2000); + sub_08079E08(); + temp = this->actionDelay--; + if (temp == 0) + sub_080791BC(); +} + +void PlayerInit(Entity*); +void PlayerNormal(Entity*); +void PlayerInit(Entity*); +void PlayerFall(Entity*); +void PlayerJump(Entity*); +void PlayerPush(Entity*); +void PlayerBounce(Entity*); +void sub_08070E9C(Entity*); +void PlayerItemGet(Entity*); +void PlayerMinish(Entity*); +void PlayerMinishDie(Entity*); +void sub_08071DB8(Entity*); +void PlayerEmptyBottle(Entity*); +void PlayerFrozen(Entity*); +void sub_0807204C(Entity*); +void sub_080720DC(Entity*); +void PlayerPull(Entity*); +void PlayerLava(Entity*); +void PlayerWarp(Entity*); +void sub_08072454(Entity*); +void PlayerDrown(Entity*); +void PlayerUsePortal(Entity*); +void PlayerTalkEzlo(Entity*); +void PlayerRoomTransition(Entity*); +void PlayerRoll(Entity*); +void sub_080728AC(Entity*); +void PlayerInHole(Entity*); +void sub_08072C9C(Entity*); +void sub_08074C44(Entity*); +void sub_08072F34(Entity*); +void PlayerUseEntrance(Entity*); +void PlayerParachute(Entity*); + +static void (*const sPlayerActions[])(Entity*) = { + [PLAYER_INIT] = PlayerInit, + [PLAYER_NORMAL] = PlayerNormal, + [PLAYER_DUMMY] = PlayerInit, + [PLAYER_FALL] = PlayerFall, + [PLAYER_JUMP] = PlayerJump, + [PLAYER_PUSH] = PlayerPush, + [PLAYER_BOUNCE] = PlayerBounce, + [PLAYER_08070E9C] = sub_08070E9C, + [PLAYER_ITEMGET] = PlayerItemGet, + [PLAYER_MINISH] = PlayerMinish, + [PLAYER_MINISHDIE] = PlayerMinishDie, + [PLAYER_08071DB8] = sub_08071DB8, + [PLAYER_EMPTYBOTTLE] = PlayerEmptyBottle, + [PLAYER_FROZEN] = PlayerFrozen, + [PLAYER_0807204C] = sub_0807204C, + [PLAYER_080720DC] = sub_080720DC, + [PLAYER_PULL] = PlayerPull, + [PLAYER_LAVA] = PlayerLava, + [PLAYER_WARP] = PlayerWarp, + [PLAYER_08072454] = sub_08072454, + [PLAYER_DROWN] = PlayerDrown, + [PLAYER_USEPORTAL] = PlayerUsePortal, + [PLAYER_TALKEZLO] = PlayerTalkEzlo, + [PLAYER_ROOMTRANSITION] = PlayerRoomTransition, + [PLAYER_ROLL] = PlayerRoll, + [PLAYER_080728AC] = sub_080728AC, + [PLAYER_INHOLE] = PlayerInHole, + [PLAYER_08072C9C] = sub_08072C9C, + [PLAYER_08074C44] = sub_08074C44, + [PLAYER_08072F34] = sub_08072F34, + [PLAYER_USEENTRANCE] = PlayerUseEntrance, + [PLAYER_PARACHUTE] = PlayerParachute, +}; diff --git a/src/script.c b/src/script.c index 6e4d577a..450ff8f9 100644 --- a/src/script.c +++ b/src/script.c @@ -853,7 +853,7 @@ void ScriptCommand_BuyItem(Entity* entity, ScriptExecutionContext* context) { } void ScriptCommand_0807E48C(Entity* entity, ScriptExecutionContext* context) { - context->condition = sub_080544DC(context->scriptInstructionPointer[1]); + context->condition = GetBottleContaining(context->scriptInstructionPointer[1]); gActiveScriptInfo.flags |= 1; } @@ -1085,7 +1085,7 @@ void ScriptCommand_0807E8E4(Entity* entity, ScriptExecutionContext* context) { void ScriptCommand_0807E908(Entity* entity, ScriptExecutionContext* context) { entity->action = context->scriptInstructionPointer[1]; - entity->previousActionFlag = 0; + entity->subAction = 0; } void ScriptCommand_SetIntVariable(Entity* entity, ScriptExecutionContext* context) { From 976b661017e79bfb75eb596d98475db90e6eb580 Mon Sep 17 00:00:00 2001 From: Henny022p Date: Tue, 16 Mar 2021 21:07:48 +0100 Subject: [PATCH 15/21] polymorphism stuff --- src/manager/manager6.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manager/manager6.c b/src/manager/manager6.c index a17fd16b..ff32b405 100644 --- a/src/manager/manager6.c +++ b/src/manager/manager6.c @@ -12,7 +12,7 @@ void sub_08057CB4(Manager6* this) { this->manager.action = 1; this->warpList = GetCurrentRoomProperty(this->manager.unk_0a); if (!this->warpList) { - DeleteManager((Manager*)this); + DeleteManager(&this->manager); return; } } From a39686c24c4b1acc2459088659c6f648b7dff80e Mon Sep 17 00:00:00 2001 From: theo3 Date: Wed, 17 Mar 2021 20:20:32 -0700 Subject: [PATCH 16/21] fix --- asm/non_matching/player/sub_08071634.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/asm/non_matching/player/sub_08071634.s b/asm/non_matching/player/sub_08071634.s index 96fd319c..3c377521 100644 --- a/asm/non_matching/player/sub_08071634.s +++ b/asm/non_matching/player/sub_08071634.s @@ -169,4 +169,4 @@ _08071754: pop {r3} mov r8, r3 pop {r4, r5, r6, r7, pc} - .syntax divided \ No newline at end of file + .syntax divided From 3b1f9e6aa76a769f07d7176215dc198c467b99e0 Mon Sep 17 00:00:00 2001 From: theo3 Date: Wed, 17 Mar 2021 20:26:41 -0700 Subject: [PATCH 17/21] fix2 --- src/game.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/game.c b/src/game.c index 4d02bdcb..4c06014b 100644 --- a/src/game.c +++ b/src/game.c @@ -15,7 +15,6 @@ extern u8 gArea; extern Entity gPlayerEntity; -extern u32 gUnk_03000B80; extern u32 gUnk_03003FC0; extern u16 gWalletSizes[4]; @@ -240,8 +239,8 @@ void InitializePlayer(void) { Entity* pl; sub_080784C8(); - MemClear32((void*)&gUnk_03000B80, sizeof(gUnk_03000B80)); - MemClear32((void*)&gPlayerState, 0xb0); + MemClear((void*)&gUnk_03000B80, sizeof(gUnk_03000B80)); + MemClear((void*)&gPlayerState, 0xb0); MemFill32(0xffffffff, &gPlayerState.field_0x40, 0x40); pl = &gPlayerEntity; From 282df6eb0bcea27b0129ba18845311aad5dc763a Mon Sep 17 00:00:00 2001 From: theo3 Date: Wed, 17 Mar 2021 20:53:22 -0700 Subject: [PATCH 18/21] rename defaults struct, fix default language --- src/main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index c05d9945..cc48f375 100644 --- a/src/main.c +++ b/src/main.c @@ -147,14 +147,14 @@ typedef struct { u8 name[6]; u8 _e; u8 _f; -} test; +} Defaults; -const test sDefaultSettings = { +const Defaults sDefaultSettings = { .signature = SIGNATURE, .saveFileId = 0, .messageSpeed = 1, .brightnessPref = 1, - .gameLanguage = LANGUAGE_EN, + .gameLanguage = GAME_LANGUAGE, .name = "LINK", ._e = 0, ._f = 0, From 69edec1eb92ff6e8e3185030dd498579e8b0f382 Mon Sep 17 00:00:00 2001 From: theo3 Date: Sun, 21 Mar 2021 18:39:45 -0700 Subject: [PATCH 19/21] main.c statics --- include/arm_proxy.h | 6 ++++++ include/main.h | 6 +----- include/textbox.h | 1 + src/fileScreen.c | 1 + src/intro.c | 1 + src/main.c | 6 +++++- 6 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 include/arm_proxy.h diff --git a/include/arm_proxy.h b/include/arm_proxy.h new file mode 100644 index 00000000..c07a649e --- /dev/null +++ b/include/arm_proxy.h @@ -0,0 +1,6 @@ +#ifndef ARM_PROXY_H +#define ARM_PROXY_H + +extern void PrepNextFrame(void); + +#endif diff --git a/include/main.h b/include/main.h index 39514ff7..32eceb8f 100644 --- a/include/main.h +++ b/include/main.h @@ -77,17 +77,13 @@ static_assert(sizeof(UI) == 0x3b4); extern Main gMain; extern UI gUnk_02032EC0; -void InitScreen(); +void InitScreen(u32 screen); extern void InitSound(void); -extern void sub_080560B8(void); extern void sub_08056208(void); extern void sub_0804FFE4(void); -extern void MessageInitialize(void); extern void sub_080ADD30(void); -extern void InitScreen(u32); -extern void PrepNextFrame(void); extern void ReadKeyInput(void); extern void DoSoftReset(void); extern void sub_08056260(void); diff --git a/include/textbox.h b/include/textbox.h index 4b0333a5..e6433cf2 100644 --- a/include/textbox.h +++ b/include/textbox.h @@ -56,6 +56,7 @@ typedef struct { extern struct_02022780 gUnk_02022780; static_assert(sizeof(struct_02022780) == 0xa8); +void MessageInitialize(void); void ShowTextbox(u32 index); void TextboxAtPosition(u32 index, u32 x, u32 y); void TextboxNoOverlap(u32 index, Entity* ent); diff --git a/src/fileScreen.c b/src/fileScreen.c index 78ed7e91..0e9eb13e 100644 --- a/src/fileScreen.c +++ b/src/fileScreen.c @@ -6,6 +6,7 @@ #include "menu.h" #include "dma.h" #include "random.h" +#include "textbox.h" // copy, erase, start #define NUM_FILE_OPERATIONS 3 diff --git a/src/intro.c b/src/intro.c index 4fd85e48..d4aaf119 100644 --- a/src/intro.c +++ b/src/intro.c @@ -6,6 +6,7 @@ #include "readKeyInput.h" #include "screen.h" #include "structures.h" +#include "textbox.h" typedef struct { u8 filler0[0x4]; diff --git a/src/main.c b/src/main.c index cc48f375..1d13b23b 100644 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,8 @@ #include "random.h" #include "readKeyInput.h" #include "save.h" +#include "textbox.h" +#include "arm_proxy.h" extern void HandleIntroScreen(void); extern void HandleChooseFileScreen(void); @@ -21,6 +23,8 @@ static void (*const sScreenHandlers[])(void) = { [SCREEN_CREDITS] = HandleCreditsScreen, [SCREEN_DEBUG_TEXT] = HandleDebugTextScreen, }; +static void sub_080560B8(void); + void MainLoop(void) { int var0; @@ -161,7 +165,7 @@ const Defaults sDefaultSettings = { }; // single misplaced ldr -NONMATCH("asm/non_matching/sub_080560B8.inc", void sub_080560B8(void)) { +NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) { u32 temp; u32 b; From bd50d449de5fc85ecb6f08f27a6ba0a45bfed6ec Mon Sep 17 00:00:00 2001 From: theo3 Date: Sun, 21 Mar 2021 20:51:08 -0700 Subject: [PATCH 20/21] collapse TUs --- asm/code_080011C4.s | 4 +- asm/code_0806ED78.s | 24 ++-- asm/code_080A29BC.s | 8 +- asm/evilSpirit.s | 16 +-- asm/gleerok.s | 12 +- asm/kid.s | 4 +- asm/lilypadLarge.s | 16 +-- asm/object87.s | 8 +- asm/object91.s | 8 +- asm/object97.s | 4 +- asm/octorokBoss.s | 40 +++--- asm/zeldaFollower.s | 4 +- include/{position.h => coord.h} | 6 + include/dma.h | 9 -- include/functions.h | 3 +- include/greatFairy.h | 1 - include/readKeyInput.h | 9 -- include/trig.h | 7 - include/utils.h | 19 +++ linker.ld | 20 +-- src/arm_proxy.c | 2 +- src/code_0801D714.c | 43 ------ src/code_0801D79C.c | 96 ------------- src/code_080300AC.c | 2 +- src/code_0804AA84.c | 2 +- src/code_0805F9A0.c | 2 +- src/code_08077DF4.c | 2 +- src/{trig.c => coord.c} | 69 ++++++++- src/createObject.c | 2 +- src/{screenDebug.c => debugScreen.c} | 11 +- src/dma.c | 46 ------ src/enemy/gyorgMale.c | 2 +- src/enemy/lakitu.c | 2 +- src/enemy/leever.c | 2 +- src/enemy/miniSlime.c | 4 +- src/enemy/slime.c | 4 +- src/enemy/smallPesto.c | 2 +- src/entity.c | 2 +- src/{sub_08050024.c => fade.c} | 0 src/fileScreen.c | 3 +- src/game.c | 3 +- src/input.c | 27 ---- src/intro.c | 3 +- src/loadRoom.c | 18 +++ src/main.c | 9 +- src/manager/manager1A.c | 2 +- src/manager/manager39.c | 2 +- src/manager/managerB.c | 2 +- src/manager/managerC.c | 2 +- src/object/fileScreenObjects.c | 4 +- src/object/greatFairy.c | 144 +++++++------------ src/object/object49.c | 2 +- src/object/object7E.c | 2 +- src/object/object86.c | 2 +- src/object/object9E.c | 2 +- src/object/objectAF.c | 2 +- src/player.c | 2 +- src/position.c | 50 ------- src/script.c | 2 +- src/sub_0801D754.c | 17 --- src/sub_0804AFF4.c | 20 --- src/sub_08050008.c | 2 +- src/sub_0806F9EC.c | 11 -- src/sub_0806FA04.c | 14 -- src/sub_0807B7D8.c | 18 --- src/sub_0807B820.c | 41 ++++++ src/sub_0807B8A8.c | 14 -- src/sub_0807B930.c | 14 -- src/sub_0807C998.c | 15 ++ src/textbox.c | 16 ++- src/utils.c | 204 +++++++++++++++++++++++++++ 71 files changed, 551 insertions(+), 635 deletions(-) rename include/{position.h => coord.h} (78%) delete mode 100644 include/dma.h delete mode 100644 include/readKeyInput.h delete mode 100644 include/trig.h create mode 100644 include/utils.h delete mode 100755 src/code_0801D714.c delete mode 100644 src/code_0801D79C.c rename src/{trig.c => coord.c} (88%) rename src/{screenDebug.c => debugScreen.c} (94%) delete mode 100644 src/dma.c rename src/{sub_08050024.c => fade.c} (100%) delete mode 100644 src/input.c delete mode 100644 src/position.c delete mode 100644 src/sub_0801D754.c delete mode 100644 src/sub_0804AFF4.c delete mode 100644 src/sub_0806F9EC.c delete mode 100644 src/sub_0806FA04.c delete mode 100644 src/sub_0807B7D8.c delete mode 100644 src/sub_0807B8A8.c delete mode 100644 src/sub_0807B930.c create mode 100644 src/utils.c diff --git a/asm/code_080011C4.s b/asm/code_080011C4.s index 94684d6e..b050d9e8 100644 --- a/asm/code_080011C4.s +++ b/asm/code_080011C4.s @@ -1238,7 +1238,7 @@ _08002812: cmp r0, #0 beq _08002834 adds r6, #1 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #8 _08002834: adds r4, r0, #0 @@ -1256,7 +1256,7 @@ _0800283E: cmp r0, #0 beq _08002856 adds r6, #2 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #8 _08002856: adds r4, r0, #0 diff --git a/asm/code_0806ED78.s b/asm/code_0806ED78.s index 17534c87..d6735892 100644 --- a/asm/code_0806ED78.s +++ b/asm/code_0806ED78.s @@ -1193,13 +1193,13 @@ sub_0806F5BC: @ 0x0806F5BC lsls r5, r1, #0x10 asrs r5, r5, #0x10 adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r6, #0x80 lsls r6, r6, #1 adds r1, r6, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r7, #0x2c] @@ -1211,11 +1211,11 @@ sub_0806F5BC: @ 0x0806F5BC movs r1, #0 ldrsh r0, [r4, r1] adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r6, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r7, #0x30] @@ -1248,13 +1248,13 @@ sub_0806F62C: @ 0x0806F62C lsls r5, r5, #0x10 asrs r5, r5, #0x10 adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 mov r8, r1 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r6, #0x2c] @@ -1266,11 +1266,11 @@ sub_0806F62C: @ 0x0806F62C movs r1, #0 ldrsh r0, [r4, r1] adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov r1, r8 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r6, #0x30] @@ -1300,13 +1300,13 @@ sub_0806F69C: @ 0x0806F69C ldrsh r0, [r0, r1] movs r2, #0x24 ldrsh r1, [r6, r2] - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r4, #0x80 lsls r4, r4, #1 adds r1, r4, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r6, #0x2c] @@ -1320,11 +1320,11 @@ sub_0806F69C: @ 0x0806F69C ldrsh r0, [r0, r1] movs r2, #0x24 ldrsh r1, [r6, r2] - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r4, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r6, #0x30] diff --git a/asm/code_080A29BC.s b/asm/code_080A29BC.s index 09c4ea72..c0b7228f 100644 --- a/asm/code_080A29BC.s +++ b/asm/code_080A29BC.s @@ -96,13 +96,13 @@ sub_080A2AF4: @ 0x080A2AF4 lsls r4, r4, #0x18 asrs r4, r4, #0x10 adds r1, r4, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r5, #0x80 lsls r5, r5, #1 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r6, #0x2c] @@ -115,11 +115,11 @@ sub_080A2AF4: @ 0x080A2AF4 movs r1, #0 ldrsh r0, [r0, r1] adds r1, r4, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r6, #0x30] diff --git a/asm/evilSpirit.s b/asm/evilSpirit.s index 79a69521..1baea3de 100644 --- a/asm/evilSpirit.s +++ b/asm/evilSpirit.s @@ -341,13 +341,13 @@ _080864EE: ldrsh r0, [r0, r1] movs r1, #0x80 lsls r1, r1, #6 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r4, #0x80 lsls r4, r4, #1 adds r1, r4, #0 - bl sub_0806FA04 + bl FixedDiv adds r1, r6, #0 adds r1, #0x80 lsls r0, r0, #0x10 @@ -363,11 +363,11 @@ _080864EE: ldrsh r0, [r0, r3] movs r1, #0x80 lsls r1, r1, #5 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r4, #0 - bl sub_0806FA04 + bl FixedDiv adds r1, r6, #0 adds r1, #0x84 lsls r0, r0, #0x10 @@ -520,13 +520,13 @@ _0808663A: ldrsh r0, [r0, r1] movs r1, #0x80 lsls r1, r1, #6 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r5, #0x80 lsls r5, r5, #1 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv adds r1, r7, #0 adds r1, #0x80 lsls r0, r0, #0x10 @@ -541,11 +541,11 @@ _0808663A: ldrsh r0, [r0, r1] movs r1, #0x80 lsls r1, r1, #5 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv adds r1, r7, #0 adds r1, #0x84 lsls r0, r0, #0x10 diff --git a/asm/gleerok.s b/asm/gleerok.s index d6272ec5..d8709272 100644 --- a/asm/gleerok.s +++ b/asm/gleerok.s @@ -2824,11 +2824,11 @@ _0802E580: ldrb r1, [r6] lsls r1, r1, #0x18 asrs r1, r1, #0x10 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r7, #0 - bl sub_0806FA04 + bl FixedDiv adds r1, r0, #0 ldrb r0, [r4, #1] lsls r0, r0, #4 @@ -2838,11 +2838,11 @@ _0802E580: ldrsh r0, [r0, r2] lsls r1, r1, #0x10 asrs r1, r1, #0x10 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r7, #0 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r5] lsls r0, r0, #0x10 asrs r0, r0, #8 @@ -2859,11 +2859,11 @@ _0802E580: ldrb r1, [r6] lsls r1, r1, #0x18 asrs r1, r1, #0x10 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r7, #0 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r5] lsls r0, r0, #0x10 asrs r0, r0, #8 diff --git a/asm/kid.s b/asm/kid.s index ccc90dd2..59d6b6e7 100644 --- a/asm/kid.s +++ b/asm/kid.s @@ -656,7 +656,7 @@ sub_0806252C: @ 0x0806252C lsls r0, r1, #0x10 asrs r0, r0, #0x10 movs r1, #0x14 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov sl, r0 @@ -664,7 +664,7 @@ sub_0806252C: @ 0x0806252C lsls r0, r2, #0x10 asrs r0, r0, #0x10 movs r1, #0x14 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov r8, r0 diff --git a/asm/lilypadLarge.s b/asm/lilypadLarge.s index 5202438a..c89575a1 100644 --- a/asm/lilypadLarge.s +++ b/asm/lilypadLarge.s @@ -349,13 +349,13 @@ _08085774: lsls r4, r4, #0x10 asrs r4, r4, #0x18 adds r1, r4, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r5, #0x80 lsls r5, r5, #1 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r7, #0x6c] @@ -368,11 +368,11 @@ _08085774: movs r2, #0 ldrsh r0, [r0, r2] adds r1, r4, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 ldr r1, [r7, #0x70] @@ -441,7 +441,7 @@ _0808581A: movs r4, #0x80 lsls r4, r4, #1 adds r1, r4, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 ldr r5, _080858A8 @ =gSineTable @@ -450,13 +450,13 @@ _0808581A: adds r1, r1, r5 movs r2, #0 ldrsh r1, [r1, r2] - bl sub_0806FA04 + bl FixedDiv strh r0, [r7, #0x24] ldr r0, [r7, #0x70] lsls r0, r0, #8 asrs r0, r0, #0x10 adds r1, r4, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 ldrb r1, [r7, #0x15] @@ -465,7 +465,7 @@ _0808581A: adds r1, r1, r5 movs r2, #0 ldrsh r1, [r1, r2] - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #0x10 rsbs r4, r0, #0 diff --git a/asm/object87.s b/asm/object87.s index f4bf6ed0..2af555eb 100644 --- a/asm/object87.s +++ b/asm/object87.s @@ -968,13 +968,13 @@ sub_0809A648: @ 0x0809A648 lsls r5, r5, #8 asrs r5, r5, #0x10 adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r4, #0x80 lsls r4, r4, #1 adds r1, r4, #0 - bl sub_0806FA04 + bl FixedDiv ldr r1, [r7, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 @@ -989,11 +989,11 @@ sub_0809A648: @ 0x0809A648 movs r2, #0 ldrsh r0, [r0, r2] adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r4, #0 - bl sub_0806FA04 + bl FixedDiv ldr r1, [r7, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 diff --git a/asm/object91.s b/asm/object91.s index 80fbd82d..35eb581d 100644 --- a/asm/object91.s +++ b/asm/object91.s @@ -1024,13 +1024,13 @@ sub_0809CB70: @ 0x0809CB70 lsls r5, r5, #0x10 asrs r5, r5, #0x10 adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 mov r8, r1 - bl sub_0806FA04 + bl FixedDiv ldr r1, [r6, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 @@ -1043,11 +1043,11 @@ sub_0809CB70: @ 0x0809CB70 movs r1, #0 ldrsh r0, [r4, r1] adds r1, r5, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov r1, r8 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r6, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 diff --git a/asm/object97.s b/asm/object97.s index 0da8dbe7..74fca837 100644 --- a/asm/object97.s +++ b/asm/object97.s @@ -1141,7 +1141,7 @@ sub_0809E238: @ 0x0809E238 adds r5, #0x6c movs r2, #0 ldrsh r1, [r5, r2] - bl sub_0806F9EC + bl FixedMul adds r4, r0, #0 lsls r4, r4, #0x10 asrs r4, r4, #0x10 @@ -1154,7 +1154,7 @@ sub_0809E238: @ 0x0809E238 ldrsh r0, [r0, r2] movs r2, #0 ldrsh r1, [r5, r2] - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r7, #0 diff --git a/asm/octorokBoss.s b/asm/octorokBoss.s index 419c15ac..e9a21351 100644 --- a/asm/octorokBoss.s +++ b/asm/octorokBoss.s @@ -597,13 +597,13 @@ _08035616: adds r1, r4, #0 ands r1, r2 lsls r1, r1, #8 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r5, #0x80 lsls r5, r5, #1 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv lsrs r0, r0, #8 adds r1, r7, #0 adds r1, #0x62 @@ -619,11 +619,11 @@ _08035616: ands r4, r1 lsls r4, r4, #8 adds r1, r4, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r5, #0 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #8 rsbs r0, r0, #0 @@ -3086,13 +3086,13 @@ sub_08036914: @ 0x08036914 lsls r6, r6, #0x10 asrs r6, r6, #0x10 adds r1, r6, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 mov r8, r1 - bl sub_0806FA04 + bl FixedDiv ldr r1, [r5, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 @@ -3105,11 +3105,11 @@ sub_08036914: @ 0x08036914 movs r1, #0 ldrsh r0, [r4, r1] adds r1, r6, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov r1, r8 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r5, #0x50] lsls r0, r0, #0x10 asrs r0, r0, #8 @@ -3270,11 +3270,11 @@ _08036A78: movs r1, #0 ldrsh r0, [r0, r1] adds r1, r6, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r7, #0 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r5] ldr r1, [r5, #4] lsls r0, r0, #0x10 @@ -3293,11 +3293,11 @@ _08036A78: movs r1, #0 ldrsh r0, [r0, r1] adds r1, r6, #0 - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 adds r1, r7, #0 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r5] ldr r1, [r5, #4] lsls r0, r0, #0x10 @@ -3386,12 +3386,12 @@ _08036B48: movs r3, #0 ldrsh r0, [r0, r3] mov r1, sl - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r5] ldr r1, [r6] lsls r0, r0, #0x10 @@ -3409,12 +3409,12 @@ _08036B48: movs r2, #0 ldrsh r0, [r0, r2] mov r1, sl - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r5] ldr r1, [r6] b _08036C6E @@ -3475,12 +3475,12 @@ _08036C0E: movs r2, #0 ldrsh r0, [r0, r2] mov r1, sl - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r4] adds r5, r6, r7 ldr r1, [r5] @@ -3499,12 +3499,12 @@ _08036C0E: movs r1, #0 ldrsh r0, [r0, r1] mov r1, sl - bl sub_0806F9EC + bl FixedMul lsls r0, r0, #0x10 asrs r0, r0, #0x10 movs r1, #0x80 lsls r1, r1, #1 - bl sub_0806FA04 + bl FixedDiv ldr r2, [r4] ldr r1, [r5] _08036C6E: diff --git a/asm/zeldaFollower.s b/asm/zeldaFollower.s index 34f0cbf1..51994bf1 100644 --- a/asm/zeldaFollower.s +++ b/asm/zeldaFollower.s @@ -378,7 +378,7 @@ sub_08068578: @ 0x08068578 lsls r0, r1, #0x10 asrs r0, r0, #0x10 movs r1, #0x14 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov sl, r0 @@ -386,7 +386,7 @@ sub_08068578: @ 0x08068578 lsls r0, r2, #0x10 asrs r0, r0, #0x10 movs r1, #0x14 - bl sub_0806FA04 + bl FixedDiv lsls r0, r0, #0x10 asrs r0, r0, #0x10 mov r8, r0 diff --git a/include/position.h b/include/coord.h similarity index 78% rename from include/position.h rename to include/coord.h index 87d5b128..b91c97b2 100644 --- a/include/position.h +++ b/include/coord.h @@ -4,6 +4,9 @@ #include "global.h" #include "entity.h" +s16 FixedMul(s16 r0, s16 r1); +s16 FixedDiv(s16 r0, s16 r1); + void CopyPosition(Entity*, Entity*); void PositionEntityOnTop(Entity*, Entity*); void PositionRelative(Entity*, Entity*, s32, s32); @@ -12,4 +15,7 @@ void sub_0806FA90(Entity*, Entity*, s32, s32); void ResolveEntityOnTop(Entity*, Entity*); void sub_0806FAD8(Entity*, Entity*); +const s16 gSineTable[64]; +const s16 gCosineTable[256]; + #endif diff --git a/include/dma.h b/include/dma.h deleted file mode 100644 index 168c870e..00000000 --- a/include/dma.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef DMA_H -#define DMA_H - -void MemFill16(u32 value, void* dest, u32 size); -void MemFill32(u32 value, void* dest, u32 size); -void MemClear(void* dest, u32 size); -void MemCopy(const void* src, void* dest, u32 size); - -#endif // DMA_H diff --git a/include/functions.h b/include/functions.h index 4711ec1e..049f3bd1 100644 --- a/include/functions.h +++ b/include/functions.h @@ -5,7 +5,7 @@ #include "global.h" #include "entity.h" #include "manager.h" -#include "position.h" +#include "coord.h" #include "player.h" #include "room.h" #include "structures.h" @@ -13,7 +13,6 @@ // Identified - to be sorted into header files extern void SoundReq(u32); extern void ShowNPCDialogue(Entity*, Dialog*); -extern u32 __modsi3(u32, u32); extern void DoFade(u32, u32); extern u32 CheckKinstoneFused(u32); extern void ForceEquipItem(u32, u8); diff --git a/include/greatFairy.h b/include/greatFairy.h index 6afb06dd..fd325b6c 100644 --- a/include/greatFairy.h +++ b/include/greatFairy.h @@ -24,7 +24,6 @@ extern u32 gUnk_0810C2E4; extern const s16 GreatFairy_RippleOffsets[10]; extern u32 gUnk_02034350; extern u8 gUnk_0812079C[8]; -extern s16 gSineTable[]; extern s8 gUnk_081207AC[]; #endif diff --git a/include/readKeyInput.h b/include/readKeyInput.h deleted file mode 100644 index 7961c2b6..00000000 --- a/include/readKeyInput.h +++ /dev/null @@ -1,9 +0,0 @@ -typedef struct { - u16 heldKeys; - u16 newKeys; - u16 unk4; - u8 unk6; - u8 unk7; -} Input; - -extern Input gInput; diff --git a/include/trig.h b/include/trig.h deleted file mode 100644 index 0e6e44a9..00000000 --- a/include/trig.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef TRIG_H -#define TRIG_H - -extern const s16 gSineTable[]; -extern const s16 gCosineTable[]; - -#endif diff --git a/include/utils.h b/include/utils.h new file mode 100644 index 00000000..1703c991 --- /dev/null +++ b/include/utils.h @@ -0,0 +1,19 @@ +typedef struct { + u16 heldKeys; + u16 newKeys; + u16 unk4; + u8 unk6; + u8 unk7; +} Input; + +extern Input gInput; + +void MemFill16(u32 value, void* dest, u32 size); +void MemFill32(u32 value, void* dest, u32 size); +void MemClear(void* dest, u32 size); +void MemCopy(const void* src, void* dest, u32 size); + +void ReadKeyInput(void); + +void LoadPalettes(const u8*, int, int); +void LoadPaletteGroup(u32 group); diff --git a/linker.ld b/linker.ld index 01c96243..ba362d8e 100644 --- a/linker.ld +++ b/linker.ld @@ -327,10 +327,7 @@ SECTIONS { asm/code_0801C85C.o(.text); src/ezloNag.o(.text); asm/code_0801CEC0.o(.text); - src/dma.o(.text); - src/input.o(.text); - src/code_0801D714.o(.text); - src/code_0801D79C.o(.text); + src/utils.o(.text); asm/code_0801D79C.o(.text); /* enemies */ src/enemy/octorok.o(.text); @@ -451,13 +448,12 @@ SECTIONS { src/loadRoomEntityList.o(.text); asm/loadRoomEntity.o(.text); asm/code_0804AEB0.o(.text); - src/sub_0804AFF4.o(.text); src/loadRoom.o(.text); asm/code_0804B058.o(.text); src/room.o(.text); asm/code_0804B9F8.o(.text); src/sub_08050008.o(.text); - src/sub_08050024.o(.text); + src/fade.o(.text); asm/code_08050038.o(.text); src/fileScreen.o(.text); asm/fileScreen.o(.text); @@ -540,7 +536,7 @@ SECTIONS { src/code_0805EC04.o(.text); asm/code_0805EC04.o(.text); src/code_0805F9A0.o(.text); - src/screenDebug.o(.text); + src/debugScreen.o(.text); src/item14.o(.text); /* npcs */ src/npc/gentari.o(.text); @@ -646,9 +642,7 @@ SECTIONS { asm/code_0806EC20.o(.text); src/createNPC.o(.text); asm/code_0806ED78.o(.text); - src/sub_0806F9EC.o(.text); - src/sub_0806FA04.o(.text); - src/position.o(.text); + src/coord.o(.text); asm/code_0806FA6C.o(.text); src/player.o(.text); asm/code_08070698.o(.text); @@ -663,13 +657,9 @@ SECTIONS { asm/code_08077B98.o(.text); src/code_08078778.o(.text); asm/code_08078778.o(.text); - src/sub_0807B7D8.o(.text); src/sub_0807B820.o(.text); - src/sub_0807B8A8.o(.text); - src/sub_0807B930.o(.text); asm/code_0807B9B8.o(.text); src/sub_0807C998.o(.text); - src/sub_0801D754.o(.text); /* ??? */ asm/sub_0807CA18.o(.text); asm/getInventoryValue.o(.text); asm/code_0807CAA0.o(.text); @@ -915,7 +905,7 @@ SECTIONS { src/manager.o(.rodata); src/npc.o(.rodata); data/data_080B3740.o(.rodata); - src/trig.o(.rodata); + src/coord.o(.rodata); data/data_080C93E0.o(.rodata); src/enemy/octorok.o(.rodata); data/animations/octorok.o(.rodata); diff --git a/src/arm_proxy.c b/src/arm_proxy.c index 7de78b39..4e153936 100644 --- a/src/arm_proxy.c +++ b/src/arm_proxy.c @@ -8,7 +8,7 @@ #include "functions.h" #include "object.h" #include "manager.h" -#include "dma.h" +#include "utils.h" #include "npc.h" extern u8 gUnk_03003DE0; diff --git a/src/code_0801D714.c b/src/code_0801D714.c deleted file mode 100755 index f3e59253..00000000 --- a/src/code_0801D714.c +++ /dev/null @@ -1,43 +0,0 @@ -#include "global.h" - -extern void LoadPalettes(const u8*, int, int); - -extern u32 gUsedPalettes; -extern u16 gPaletteBuffer[]; - -typedef struct { - u16 paletteId; - u8 destPaletteNum; - u8 numPalettes; -} PaletteGroup; - -extern const PaletteGroup* gPaletteGroups[]; -extern const u8 gGlobalGfxAndPalettes[]; - -void LoadPaletteGroup(u32 group) { - const PaletteGroup* paletteGroup = gPaletteGroups[group]; - while (1) { - u32 destPaletteNum = paletteGroup->destPaletteNum; - u32 numPalettes = paletteGroup->numPalettes & 0xF; - if (numPalettes == 0) { - numPalettes = 16; - } - LoadPalettes(&gGlobalGfxAndPalettes[paletteGroup->paletteId * 32], destPaletteNum, numPalettes); - if ((paletteGroup->numPalettes & 0x80) == 0) { - break; - } - paletteGroup++; - } -} - -void LoadPalettes(const u8* src, int destPaletteNum, int numPalettes) { - u16* dest; - u32 size = numPalettes * 32; - u32 usedPalettesMask = 1 << destPaletteNum; - while (--numPalettes > 0) { - usedPalettesMask |= (usedPalettesMask << 1); - } - gUsedPalettes |= usedPalettesMask; - dest = &gPaletteBuffer[destPaletteNum * 16]; - DmaCopy32(3, src, dest, size); -} diff --git a/src/code_0801D79C.c b/src/code_0801D79C.c deleted file mode 100644 index 8f085aae..00000000 --- a/src/code_0801D79C.c +++ /dev/null @@ -1,96 +0,0 @@ -#include "global.h" -#include "screen.h" -#include "structures.h" - -extern u16 gPaletteBuffer[]; -extern u32 gUsedPalettes; - -typedef struct { - union { - int raw; - struct { - u8 filler0[0x3]; - u8 unk3; - } bytes; - } unk0; - u32 dest; - u32 unk8; -} GfxItem; - -extern const GfxItem* gUnk_08100AA8[]; -extern const u8 gGlobalGfxAndPalettes[]; - -void sub_0801D79C(u32 colorIndex, u32 color) { - gPaletteBuffer[colorIndex] = color; - gUsedPalettes |= 1 << (colorIndex / 16); -} - -void sub_0801D7BC(u32 color, u32 arg1) { - if (arg1) { - gScreen.lcd.unk6 = 0xE0FF; - } else { - gScreen.lcd.unk6 = 0xFFFF; - } - sub_0801D79C(0, color); -} - -void LoadGfxGroup(u32 group) { - u32 terminator; - u32 dmaCtrl; - int gfxOffset; - const u8* src; - u32 dest; - int size; - const GfxItem* gfxItem = gUnk_08100AA8[group]; - while (1) { - u32 loadGfx = FALSE; - u32 ctrl = gfxItem->unk0.bytes.unk3; - ctrl &= 0xF; - switch (ctrl) { - case 0x7: - loadGfx = TRUE; - break; - case 0xD: - return; - case 0xE: - if (((struct_02000000*)0x2000000)->gameLanguage > 1) { - loadGfx = TRUE; - } - break; - case 0xF: - if (((struct_02000000*)0x2000000)->gameLanguage != 0) { - loadGfx = TRUE; - } - break; - default: - if (ctrl == ((struct_02000000*)0x2000000)->gameLanguage) { - loadGfx = TRUE; - } - break; - } - - if (loadGfx) { - gfxOffset = gfxItem->unk0.raw & 0xFFFFFF; - src = &gGlobalGfxAndPalettes[gfxOffset]; - dest = gfxItem->dest; - size = gfxItem->unk8; - dmaCtrl = 0x80000000; - if (size < 0) { - if (dest >= VRAM) { - LZ77UnCompVram(src, (void*)dest); - } else { - LZ77UnCompWram(src, (void*)dest); - } - } else { - DmaSet(3, src, dest, dmaCtrl | ((u32)size >> 1)); - } - } - - terminator = gfxItem->unk0.bytes.unk3; - terminator &= 0x80; - gfxItem++; - if (!terminator) { - break; - } - } -} diff --git a/src/code_080300AC.c b/src/code_080300AC.c index 16514810..993de6ee 100644 --- a/src/code_080300AC.c +++ b/src/code_080300AC.c @@ -1,5 +1,5 @@ #include "global.h" -#include "dma.h" +#include "utils.h" #include "functions.h" typedef struct { diff --git a/src/code_0804AA84.c b/src/code_0804AA84.c index 27c7c6c4..cdc00c3f 100644 --- a/src/code_0804AA84.c +++ b/src/code_0804AA84.c @@ -2,7 +2,7 @@ #include "entity.h" #include "area.h" #include "main.h" -#include "dma.h" +#include "utils.h" #include "functions.h" #include "screen.h" diff --git a/src/code_0805F9A0.c b/src/code_0805F9A0.c index d1c9af64..66ac2ba9 100644 --- a/src/code_0805F9A0.c +++ b/src/code_0805F9A0.c @@ -1,5 +1,5 @@ #include "global.h" -#include "dma.h" +#include "utils.h" #include "structures.h" #include "functions.h" diff --git a/src/code_08077DF4.c b/src/code_08077DF4.c index 23ba53f5..c25aa18e 100644 --- a/src/code_08077DF4.c +++ b/src/code_08077DF4.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" #include "player.h" -#include "dma.h" +#include "utils.h" #include "functions.h" typedef struct { diff --git a/src/trig.c b/src/coord.c similarity index 88% rename from src/trig.c rename to src/coord.c index bb53c2fe..28dda7c6 100644 --- a/src/trig.c +++ b/src/coord.c @@ -1,7 +1,71 @@ #include "global.h" +#include "entity.h" +#include "coord.h" + +extern u8 gUnk_08114F78[]; +extern u8 gUnk_08114F80[]; + +s16 FixedMul(s16 r0, s16 r1) { + s32 temp = r0 * r1; + if (temp < 0) + return (temp + 255) >> 8; + else + return temp >> 8; +} + +s16 FixedDiv(s16 r0, s16 r1) { + if (r1 == 0) + return 0; + else + return (r0 * 256) / r1; +} + +void CopyPosition(Entity* param_1, Entity* param_2) { + PositionRelative(param_1, param_2, 0, 0); +} + +void PositionEntityOnTop(Entity* ent, Entity* ent2) { + PositionRelative(ent, ent2, 0, 0); + ResolveEntityOnTop(ent, ent2); +} + +void PositionRelative(Entity* source, Entity* target, s32 offsetX, s32 offsetY) { // r0, r1, r2, r3 + s32 x; + s32 y; + + x = source->x.WORD; + target->x.WORD = x + offsetX; + + y = source->y.WORD; + target->y.WORD = y + offsetY; + + target->height = source->height; // ldr + target->collisionLayer = source->collisionLayer; + UpdateSpriteForCollisionLayer(target); +} + +void CopyPositionAndSpriteOffset(Entity* param_1, Entity* param_2) { + param_2->spriteOffsetX = param_1->spriteOffsetX; + param_2->spriteOffsetY = param_1->spriteOffsetY; + PositionRelative(param_1, param_2, 0, 0); +} + +void sub_0806FA90(Entity* param_1, Entity* param_2, s32 offsetX, s32 offsetY) { + param_2->spriteOffsetX = param_1->spriteOffsetX; + param_2->spriteOffsetY = param_1->spriteOffsetY; + PositionRelative(param_1, param_2, offsetX * 64 * 32 * 32, offsetY * 64 * 32 * 32); +} + +void ResolveEntityOnTop(Entity* param_1, Entity* param_2) { + param_2->spritePriority.b0 = gUnk_08114F78[param_1->spritePriority.b0]; +} + +void sub_0806FAD8(Entity* param_1, Entity* param_2) { + param_2->spritePriority.b0 = gUnk_08114F80[param_1->spritePriority.b0]; +} // Values of sin(x*(Ï€/128)) as Q8.8 fixed-point numbers from x = 0 to x = 319 -const s16 gSineTable[] = { +const s16 gSineTable[64] = { Q_8_8(0), // sin(0*(Ï€/128)) Q_8_8(0.0234375), // sin(1*(Ï€/128)) Q_8_8(0.046875), // sin(2*(Ï€/128)) @@ -68,8 +132,7 @@ const s16 gSineTable[] = { Q_8_8(0.99609375), // sin(63*(Ï€/128)) }; -const s16 gCosineTable[] = { - +const s16 gCosineTable[256] = { Q_8_8(1), // sin(64*(Ï€/128)) Q_8_8(0.99609375), // sin(65*(Ï€/128)) Q_8_8(0.99609375), // sin(66*(Ï€/128)) diff --git a/src/createObject.c b/src/createObject.c index dc8de778..16f5df16 100644 --- a/src/createObject.c +++ b/src/createObject.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "position.h" +#include "coord.h" #include "room.h" #include "createObject.h" diff --git a/src/screenDebug.c b/src/debugScreen.c similarity index 94% rename from src/screenDebug.c rename to src/debugScreen.c index b0ce1fa6..c5fcd45f 100644 --- a/src/screenDebug.c +++ b/src/debugScreen.c @@ -1,5 +1,5 @@ #include "global.h" -#include "dma.h" +#include "utils.h" #include "functions.h" #include "main.h" #include "menu.h" @@ -7,13 +7,6 @@ #include "structures.h" #include "textbox.h" -typedef struct { - u16 unk0; - u16 unk2; - u16 unk4; -} VStruct; - -extern VStruct gInput; extern u8 gBG3Buffer[]; extern void (*const gUnk_08109A30[])(); @@ -47,7 +40,7 @@ void sub_0805FA04(void) { void sub_0805FA98(void) { int iVar1; - switch (gInput.unk2) { + switch (gInput.newKeys) { case 0x40: gMenu.focusCoords[1] -= 1; break; diff --git a/src/dma.c b/src/dma.c deleted file mode 100644 index 426b09dc..00000000 --- a/src/dma.c +++ /dev/null @@ -1,46 +0,0 @@ -#include "global.h" -#include "dma.h" - -void MemFill16(u32 value, void* dest, u32 size) { - DmaFill16(3, value, dest, size); -} - -void MemFill32(u32 value, void* dest, u32 size) { - DmaFill32(3, value, dest, size); -} - -void MemClear(void* dest, u32 size) { - u32 zero = 0; - - switch (((u32)dest | size) & 3) { - case 0: - MemFill32(0, dest, size); - break; - case 2: - MemFill16(0, dest, size); - break; - default: - do { - *(u8*)dest = zero; - dest++; - size--; - } while (size != 0); - } -} - -void MemCopy(const void* src, void* dest, u32 size) { - switch (((u32)src | (u32)dest | size) & 3) { - case 0: - DmaCopy32(3, src, dest, size); - break; - case 2: - DmaCopy16(3, src, dest, size); - break; - default: - do { - *(u8*)dest = *(u8*)src; - src++; - dest++; - } while (--size); - } -} diff --git a/src/enemy/gyorgMale.c b/src/enemy/gyorgMale.c index b71ec8ff..83a832ee 100644 --- a/src/enemy/gyorgMale.c +++ b/src/enemy/gyorgMale.c @@ -2,7 +2,7 @@ #include "enemy.h" #include "player.h" #include "room.h" -#include "trig.h" +#include "coord.h" #include "fileScreen.h" #include "random.h" #include "functions.h" diff --git a/src/enemy/lakitu.c b/src/enemy/lakitu.c index 08b35c3e..cd9ce2b2 100644 --- a/src/enemy/lakitu.c +++ b/src/enemy/lakitu.c @@ -2,7 +2,7 @@ #include "entity.h" #include "enemy.h" #include "functions.h" -#include "trig.h" +#include "coord.h" #include "random.h" #include "player.h" diff --git a/src/enemy/leever.c b/src/enemy/leever.c index a4d5ffa9..d92e1d26 100644 --- a/src/enemy/leever.c +++ b/src/enemy/leever.c @@ -3,12 +3,12 @@ #include "enemy.h" #include "random.h" #include "functions.h" +#include "coord.h" extern u32 sub_080002D4(s32, s32, u32); extern u32 sub_080002BC(s32, s32, u32); extern Entity* gUnk_020000B0; -extern s16 gSineTable[]; bool32 Leever_PlayerInRange(Entity*, s32); void Leever_Move(Entity*); diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c index 7fba14ed..baa1e04e 100644 --- a/src/enemy/miniSlime.c +++ b/src/enemy/miniSlime.c @@ -6,7 +6,7 @@ void sub_08045374(Entity*); -extern u32 sub_0806FA04(u32, u32); +//extern u32 FixedDiv(u32, u32); extern void sub_080452E4(); extern void ReplaceMonitoredEntity(Entity*, Entity*); @@ -70,7 +70,7 @@ void sub_080452FC(Entity* this) { this->action = 3; this->actionDelay = 1; if (0 < this->speed) - this->actionDelay = sub_0806FA04(0x1000, this->speed) >> 0x8; + this->actionDelay = FixedDiv(0x1000, this->speed) >> 0x8; if (sub_08049FA0(this) == 0 && (Random() & 3)) { cVar2 = sub_08049EE4(this); diff --git a/src/enemy/slime.c b/src/enemy/slime.c index cef52043..95112c2c 100644 --- a/src/enemy/slime.c +++ b/src/enemy/slime.c @@ -12,7 +12,7 @@ typedef struct { void sub_08044FF8(Entity*); void sub_08045178(Entity*, Entity*, int, int); -extern u32 sub_0806FA04(u32, u32); +//extern u32 FixedDiv(u32, u32); extern void sub_0804A4E4(Entity*, Entity*); extern u32 sub_080002CC(Entity*, s32, s32); @@ -68,7 +68,7 @@ void sub_08045018(Entity* this) { this->action = 3; this->actionDelay = 1; if (0 < this->speed) { - this->actionDelay = sub_0806FA04(4096, this->speed) >> 8; + this->actionDelay = FixedDiv(4096, this->speed) >> 8; } if (sub_08049FA0(this) == 0 && (Random() & 3)) { this->direction = (sub_08049EE4(this) + 0xfc + (Random() & 8)) & 24; diff --git a/src/enemy/smallPesto.c b/src/enemy/smallPesto.c index cec3a3f7..a7d68131 100644 --- a/src/enemy/smallPesto.c +++ b/src/enemy/smallPesto.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "position.h" +#include "coord.h" #include "random.h" #include "functions.h" diff --git a/src/entity.c b/src/entity.c index 67620fb5..82f6a058 100644 --- a/src/entity.c +++ b/src/entity.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "dma.h" +#include "utils.h" #include "script.h" typedef struct OtherEntity { diff --git a/src/sub_08050024.c b/src/fade.c similarity index 100% rename from src/sub_08050024.c rename to src/fade.c diff --git a/src/fileScreen.c b/src/fileScreen.c index 0e9eb13e..3f0bec26 100644 --- a/src/fileScreen.c +++ b/src/fileScreen.c @@ -1,10 +1,9 @@ #include "fileScreen.h" #include "main.h" #include "player.h" -#include "readKeyInput.h" +#include "utils.h" #include "screen.h" #include "menu.h" -#include "dma.h" #include "random.h" #include "textbox.h" diff --git a/src/game.c b/src/game.c index 4c06014b..d4f21b67 100644 --- a/src/game.c +++ b/src/game.c @@ -1,7 +1,6 @@ #include "global.h" #include "screen.h" #include "structures.h" -#include "dma.h" #include "screen.h" #include "entity.h" #include "player.h" @@ -9,7 +8,7 @@ #include "main.h" #include "flags.h" #include "save.h" -#include "readKeyInput.h" +#include "utils.h" #include "fileScreen.h" #include "functions.h" diff --git a/src/input.c b/src/input.c deleted file mode 100644 index 6c1179f4..00000000 --- a/src/input.c +++ /dev/null @@ -1,27 +0,0 @@ -#include "global.h" -#include "readKeyInput.h" - -static void StoreKeyInput(Input*, u32); - -void ReadKeyInput(void) { - u32 keyInput = ~REG_KEYINPUT & KEYS_MASK; - StoreKeyInput(&gInput, keyInput); -} - -static void StoreKeyInput(Input* input, u32 keyInput) { - u32 heldKeys = input->heldKeys; - u32 difference = keyInput & ~heldKeys; - input->newKeys = difference; - if (keyInput == heldKeys) { - if (--input->unk7 == 0) { - input->unk7 = 4; - input->unk4 = keyInput; - } else { - input->unk4 = 0; - } - } else { - input->unk7 = 0x14; - input->unk4 = difference; - } - input->heldKeys = keyInput; -} diff --git a/src/intro.c b/src/intro.c index d4aaf119..899122dc 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1,9 +1,8 @@ #include "global.h" #include "main.h" #include "entity.h" -#include "dma.h" #include "functions.h" -#include "readKeyInput.h" +#include "utils.h" #include "screen.h" #include "structures.h" #include "textbox.h" diff --git a/src/loadRoom.c b/src/loadRoom.c index e5f9e636..6081af28 100644 --- a/src/loadRoom.c +++ b/src/loadRoom.c @@ -12,6 +12,24 @@ extern void* GetRoomProperty(u32, u32, u32); extern u32 gUnk_02017654; extern u32* gAreaEntities; +extern void sub_080186EC(); +extern void sub_0804B16C(); + +void sub_0804AFF4(void) { + void (*func)(); + + sub_080186EC(); + func = (void (*)())GetCurrentRoomProperty(5); + if (func) { + func(); + } + func = (void (*)())GetCurrentRoomProperty(7); + if (func) { + func(); + } + sub_0804B16C(); +} + void LoadRoom(void) { s32 iVar1; s32* dat; diff --git a/src/main.c b/src/main.c index 1d13b23b..9e60f6f4 100644 --- a/src/main.c +++ b/src/main.c @@ -1,11 +1,10 @@ #include "global.h" -#include "dma.h" #include "functions.h" #include "structures.h" #include "main.h" #include "screen.h" #include "random.h" -#include "readKeyInput.h" +#include "utils.h" #include "save.h" #include "textbox.h" #include "arm_proxy.h" @@ -187,9 +186,9 @@ NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) { b = BOOLCAST(temp); if ((gUnk_02000010.field_0x4 != 0) && (gUnk_02000010.field_0x4 != 0xc1)) { - b = 1; + b = TRUE; } - if (b != 0) { + if (b) { MemClear((u8*)&gUnk_02000010.signature, 0x20); gUnk_02000010.signature = SIGNATURE; } @@ -255,7 +254,7 @@ void sub_08056260(void) { temp2->field_0x1 = 0; } -// Convert in-game AABB to screen coordinates and check if it's within the viewport +// Convert AABB to screen coordinates and check if it's within the viewport u32 sub_080562CC(u32 x0, u32 y0, u32 x1, u32 y1) { u32 result; u32 x = ((gRoomControls.roomScrollX - gRoomControls.roomOriginX) - x0 + DISPLAY_WIDTH); diff --git a/src/manager/manager1A.c b/src/manager/manager1A.c index 7e1b0994..379ac5b9 100644 --- a/src/manager/manager1A.c +++ b/src/manager/manager1A.c @@ -4,7 +4,7 @@ #include "entity.h" #include "room.h" #include "screen.h" -#include "dma.h" +#include "utils.h" #include "functions.h" typedef struct { diff --git a/src/manager/manager39.c b/src/manager/manager39.c index b8bd327c..cdac7c61 100644 --- a/src/manager/manager39.c +++ b/src/manager/manager39.c @@ -3,7 +3,7 @@ #include "screen.h" #include "area.h" #include "textbox.h" -#include "dma.h" +#include "utils.h" #include "game.h" #include "functions.h" diff --git a/src/manager/managerB.c b/src/manager/managerB.c index 6ea279dc..ca298178 100644 --- a/src/manager/managerB.c +++ b/src/manager/managerB.c @@ -4,7 +4,7 @@ #include "entity.h" #include "room.h" #include "area.h" -#include "dma.h" +#include "utils.h" #include "functions.h" /* diff --git a/src/manager/managerC.c b/src/manager/managerC.c index 5cf482c5..5b564409 100644 --- a/src/manager/managerC.c +++ b/src/manager/managerC.c @@ -4,7 +4,7 @@ #include "structures.h" #include "room.h" #include "screen.h" -#include "trig.h" +#include "coord.h" #include "functions.h" #include "save.h" diff --git a/src/object/fileScreenObjects.c b/src/object/fileScreenObjects.c index 97cbfd5e..de79631a 100644 --- a/src/object/fileScreenObjects.c +++ b/src/object/fileScreenObjects.c @@ -4,9 +4,9 @@ #include "main.h" #include "menu.h" #include "npc.h" -#include "position.h" +#include "coord.h" #include "fileScreen.h" -#include "readKeyInput.h" +#include "utils.h" #include "structures.h" #include "functions.h" diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 3ad4a0bd..3a0157fc 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -25,11 +25,9 @@ enum { // Main void GreatFairy(Entity* this) { - u8 bVar1; - if (this->action == 0) { - bVar1 = __modsi3(this->type, 11); - this->type2 = bVar1; + s32 temp = 11; + this->type2 = this->type % temp; } GreatFairy_Main[this->type2](this); } @@ -68,20 +66,18 @@ void GreatFairy_DormantUpdate(Entity* this) { --*pFrame; } switch (*pFrame) { - case 0x96: - case 0x82: - goto e; - case 0x0: + case 0: this->action = 2; break; - e: - case 0xd2: - case 0xaa: - case 0x121: + case 130: + case 150: + case 170: + case 210: + case 289: ripple = GreatFairy_CreateForm(this, RIPPLE, 0); if (ripple) { - PositionRelative(this, ripple, (s32)GreatFairy_RippleOffsets[this->actionDelay] << 16, - (s32)GreatFairy_RippleOffsets[this->actionDelay + 1] << 16); + PositionRelative(this, ripple, (s32)GreatFairy_RippleOffsets[this->actionDelay] * 65536, + (s32)GreatFairy_RippleOffsets[this->actionDelay + 1] * 65536); this->actionDelay += 2; break; } @@ -110,9 +106,8 @@ void GreatFairy_SpawningUpdate(Entity* this) { DoFade(6, 4); SoundReq(325); this->action = 4; - this->actionDelay = 0x3c; - var = this->spriteSettings.raw & ~0x3; - this->spriteSettings.raw = (this->spriteSettings.raw & var) | 1; + this->actionDelay = 60; + this->spriteSettings.b.draw = 1; } } } @@ -166,10 +161,8 @@ void GreatFairy_WingsInit(Entity* this) { } void GreatFairy_WingsUpdate(Entity* this) { - s32 iVar1; - - iVar1 = this->speed -= 32; - if (iVar1 * 65536 >> 16 == 256) { + this->speed -= 32; + if (this->speed == 256) { this->action = 2; sub_0805EC60(this); gRoomVars.greatFairyState |= 32; @@ -237,7 +230,7 @@ void GreatFairy_MiniRisingUpdate(Entity* this) { void GreatFairy_MiniRemoveMe(Entity* this) { GetNextFrame(this); sub_080873D0(this); - if ((gRoomVars.greatFairyState & 1) != 0) { + if (gRoomVars.greatFairyState & 1) { DeleteEntity(this); } } @@ -270,15 +263,13 @@ void GreatFairy_MiniAffineInit2(Entity* this) { // Mini great fairy stretch void GreatFairy_MiniAffineUpdate(Entity* this) { - s32 iVar2; - if (--this->actionDelay == 0) { gRoomVars.greatFairyState |= 1; this->action = 3; sub_0805EC60(this); } else { - iVar2 = this->speed -= 24; - sub_0805EC9C(this, 256, iVar2 * 0x10000 >> 20, 0); + this->speed -= 24; + sub_0805EC9C(this, 256, this->speed >> 4, 0); } } @@ -297,7 +288,7 @@ void GreatFairy_DropletInit(Entity* this) { void GreatFairy_DropletUpdate(Entity* this) { GetNextFrame(this); - if (this->frames.b.f3) { + if (this->frames.all & 0x80) { DeleteEntity(this); } } @@ -314,7 +305,7 @@ void GreatFairy_RippleInit(Entity* this) { } void GreatFairy_RippleUpdate(Entity* this) { - if ((gRoomVars.greatFairyState & 2) != 0) { + if (gRoomVars.greatFairyState & 2) { DeleteEntity(this); } else { GetNextFrame(this); @@ -363,7 +354,7 @@ void GreatFairy_EnergyInit(Entity* this) { void GreatFairy_EnergyUpdate(Entity* this) { GetNextFrame(this); - if (this->frames.b.f3) { + if (this->frames.all & 0x80) { DeleteEntity(this); } } @@ -377,35 +368,25 @@ void sub_08087114(Entity* this) { } } -#ifdef NON_MATCHING -extern u8 gUnk_0812079C; - -void sub_08087150(Entity* this) { +NONMATCH("asm/greatFairy/sub_08087150.inc", void sub_08087150(Entity* this)) { u32 temp; - GreatFairy_InitializeAnimation(); + GreatFairy_InitializeAnimation(this); this->spriteSettings.b.draw = TRUE; this->spriteOrientation.flipY = 0; this->spriteRendering.b0 = 0; this->spritePriority.b0 = 3; - this->speed = 0x80; + this->speed = 128; this->direction = 0x10; - temp = gUnk_0812079C; + temp = gUnk_0812079C[0]; this->palette.raw = ((temp & 0xf) << 4) | 0xf; } -#else -NAKED -void sub_08087150(Entity* this) { - asm(".include \"asm/greatFairy/sub_08087150.inc\""); -} -#endif +END_NONMATCH void nullsub_516(Entity* this) { } void sub_080871A8(Entity* this) { - u32 bVar1; - if (--this->actionDelay == 0) { this->action = 3; this->actionDelay = 60; @@ -414,7 +395,6 @@ void sub_080871A8(Entity* this) { } void sub_080871D0(Entity* this) { - if (--this->actionDelay == 0) { gRoomVars.greatFairyState |= 8; DeleteEntity(this); @@ -424,16 +404,16 @@ void sub_080871D0(Entity* this) { void sub_080871F8(Entity* this) { Entity* temp = this->attachedEntity; - if ((temp->x.HALF.HI == this->x.HALF.HI) && (temp->y.HALF.HI - 0x20 == this->y.HALF.HI)) { + if ((temp->x.HALF.HI == this->x.HALF.HI) && (temp->y.HALF.HI - 32 == this->y.HALF.HI)) { this->action = 2; } else { - this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, temp->x.HALF.HI, temp->y.HALF.HI - 0x20); + this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, temp->x.HALF.HI, temp->y.HALF.HI - 32); sub_0806F69C(this); } } void sub_08087240(Entity* this) { - if ((gRoomVars.greatFairyState & 4) != 0) { + if (gRoomVars.greatFairyState & 4) { this->action = 3; this->actionDelay = 20; this->direction = 16; @@ -448,7 +428,6 @@ void sub_08087264(Entity* this) { } void sub_0808727C(Entity* this) { - if (--this->actionDelay == 0) { DeleteEntity(this); } @@ -479,17 +458,16 @@ void sub_080872F8(Entity* this) { sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, (s16)this->field_0x68.HWORD, (s16)this->field_0x6a.HWORD); this->direction = (this->direction + gUnk_081207AC[Random() & 3]) & 0x1f; } - temp = gSineTable[this->actionDelay + 0x40]; + temp = gSineTable[this->actionDelay + 64]; this->height.HALF.HI = (temp >> 6) - 8; this->actionDelay++; } void GreatFairy_InitializeAnimation(Entity* this) { - s32 temp; + s32 temp = 11; this->action = 1; - temp = this->type; - this->type2 = temp % 11; + this->type2 = this->type % temp; this->collisionLayer = 2; InitializeAnimation(this, this->type2); sub_0805E3A0(this, 2); @@ -515,7 +493,7 @@ void sub_080873D0(Entity* this) { ent = GreatFairy_CreateForm(this, 8, 0); if (ent != NULL) { CopyPosition(this, ent); - this->actionDelay = 0x30; + this->actionDelay = 48; } } } @@ -562,94 +540,80 @@ void sub_0808747C(Entity* this, ScriptExecutionContext* context) { context->condition = iVar1; } -// clang-format off void (*const GreatFairy_Main[])(Entity*) = { - GreatFairy_CallBehavior, + GreatFairy_CallBehavior, GreatFairy_WingsCallBehavior, GreatFairy_WakeCallBehavior, GreatFairy_MiniCallBehavior, - GreatFairy_MiniAffineCallBehavior, - GreatFairy_DropletCallBehavior, - GreatFairy_RippleCallBehavior, + GreatFairy_MiniAffineCallBehavior, + GreatFairy_DropletCallBehavior, + GreatFairy_RippleCallBehavior, GreatFairy_BigRippleCallBehavior, - GreatFairy_EnergyCallBehavior, - sub_08087114, - sub_08087294 + GreatFairy_EnergyCallBehavior, + sub_08087114, + sub_08087294, }; void (*const GreatFairy_Behaviors[])(Entity*) = { - GreatFairy_Init, - GreatFairy_DormantUpdate, - GreatFairy_CreateBigRipple, - GreatFairy_SpawningUpdate, - GreatFairy_MiniUpdate, - GreatFairy_FinalUpdate + GreatFairy_Init, GreatFairy_DormantUpdate, GreatFairy_CreateBigRipple, + GreatFairy_SpawningUpdate, GreatFairy_MiniUpdate, GreatFairy_FinalUpdate, }; const s16 GreatFairy_RippleOffsets[10] = { - 0, 0, - -32, -8, - 16, 20, - 24, -12, - -16, 24 + 0, 0, -32, -8, 16, 20, 24, -12, -16, 24, }; - -void (*const GreatFairy_WingsBehaviors[])(Entity*) = { +void (*const GreatFairy_WingsBehaviors[])(Entity*) = { GreatFairy_WingsInit, GreatFairy_WingsUpdate, - nullsub_116 + nullsub_116, }; void (*const GreatFairy_WakeBehaviors[])(Entity*) = { GreatFairy_WakeInit, - GreatFairy_WakeUpdate + GreatFairy_WakeUpdate, }; void (*const GreatFairy_MiniBehaviors[])(Entity*) = { GreatFairy_MiniInit, GreatFairy_MiniRisingUpdate, - GreatFairy_MiniRemoveMe + GreatFairy_MiniRemoveMe, }; void (*const GreatFairy_MiniAffineBehaviors[])(Entity*) = { GreatFairy_MiniAffineInit, GreatFairy_MiniAffineInit2, GreatFairy_MiniAffineUpdate, - DeleteEntity + DeleteEntity, }; void (*const GreatFairy_DropletBehaviors[])(Entity*) = { GreatFairy_DropletInit, - GreatFairy_DropletUpdate + GreatFairy_DropletUpdate, }; void (*const GreatFairy_RippleBehaviors[])(Entity*) = { GreatFairy_RippleInit, - GreatFairy_RippleUpdate + GreatFairy_RippleUpdate, }; void (*const GreatFairy_BigRippleBehaviors[])(Entity*) = { GreatFairy_BigRippleInit, - GreatFairy_BigRippleUpdate + GreatFairy_BigRippleUpdate, }; void (*const GreatFairy_EnergyBehaviors[])(Entity*) = { GreatFairy_EnergyInit, - GreatFairy_EnergyUpdate + GreatFairy_EnergyUpdate, }; + void (*const GreatFairy_Form1Behaviors[])(Entity*) = { sub_08087150, nullsub_516, sub_080871A8, - sub_080871D0 + sub_080871D0, }; void (*const GreatFairy_Form2Behaviors[])(Entity*) = { - sub_08087150, - sub_080871F8, - sub_08087240, - sub_08087264, - sub_0808727C + sub_08087150, sub_080871F8, sub_08087240, sub_08087264, sub_0808727C, }; -// clang-format on diff --git a/src/object/object49.c b/src/object/object49.c index 92e90b5c..b483e25a 100644 --- a/src/object/object49.c +++ b/src/object/object49.c @@ -1,7 +1,7 @@ #include "global.h" #include "entity.h" #include "functions.h" -#include "position.h" +#include "coord.h" #include "random.h" #include "structures.h" diff --git a/src/object/object7E.c b/src/object/object7E.c index 4a128e63..c456a841 100644 --- a/src/object/object7E.c +++ b/src/object/object7E.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "position.h" +#include "coord.h" void Object7E(Entity* this) { diff --git a/src/object/object86.c b/src/object/object86.c index dd6d5a41..02e0b480 100644 --- a/src/object/object86.c +++ b/src/object/object86.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "position.h" +#include "coord.h" #include "player.h" #include "flags.h" #include "functions.h" diff --git a/src/object/object9E.c b/src/object/object9E.c index 321945b2..f8e89b4e 100644 --- a/src/object/object9E.c +++ b/src/object/object9E.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "position.h" +#include "coord.h" #include "room.h" #include "functions.h" diff --git a/src/object/objectAF.c b/src/object/objectAF.c index ad13952e..b678d81b 100644 --- a/src/object/objectAF.c +++ b/src/object/objectAF.c @@ -1,6 +1,6 @@ #include "global.h" #include "entity.h" -#include "position.h" +#include "coord.h" extern void sub_080A0640(Entity*); diff --git a/src/player.c b/src/player.c index b9b5f765..1e0d32ae 100644 --- a/src/player.c +++ b/src/player.c @@ -2,7 +2,7 @@ #include "entity.h" #include "player.h" #include "textbox.h" -#include "readKeyInput.h" +#include "utils.h" #include "area.h" #include "save.h" #include "game.h" diff --git a/src/position.c b/src/position.c deleted file mode 100644 index b5f83468..00000000 --- a/src/position.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "global.h" -#include "entity.h" -#include "position.h" - -extern u8 gUnk_08114F78[]; -extern u8 gUnk_08114F80[]; - -void CopyPosition(Entity* param_1, Entity* param_2) { - PositionRelative(param_1, param_2, 0, 0); -} - -void PositionEntityOnTop(Entity* ent, Entity* ent2) { - PositionRelative(ent, ent2, 0, 0); - ResolveEntityOnTop(ent, ent2); -} - -void PositionRelative(Entity* source, Entity* target, s32 offsetX, s32 offsetY) { // r0, r1, r2, r3 - s32 x; - s32 y; - - x = source->x.WORD; - target->x.WORD = x + offsetX; - - y = source->y.WORD; - target->y.WORD = y + offsetY; - - target->height = source->height; // ldr - target->collisionLayer = source->collisionLayer; - UpdateSpriteForCollisionLayer(target); -} - -void CopyPositionAndSpriteOffset(Entity* param_1, Entity* param_2) { - param_2->spriteOffsetX = param_1->spriteOffsetX; - param_2->spriteOffsetY = param_1->spriteOffsetY; - PositionRelative(param_1, param_2, 0, 0); -} - -void sub_0806FA90(Entity* param_1, Entity* param_2, s32 offsetX, s32 offsetY) { - param_2->spriteOffsetX = param_1->spriteOffsetX; - param_2->spriteOffsetY = param_1->spriteOffsetY; - PositionRelative(param_1, param_2, offsetX * 64 * 32 * 32, offsetY * 64 * 32 * 32); -} - -void ResolveEntityOnTop(Entity* param_1, Entity* param_2) { - param_2->spritePriority.b0 = gUnk_08114F78[param_1->spritePriority.b0]; -} - -void sub_0806FAD8(Entity* param_1, Entity* param_2) { - param_2->spritePriority.b0 = gUnk_08114F80[param_1->spritePriority.b0]; -} diff --git a/src/script.c b/src/script.c index a6b59b23..3f19bf23 100644 --- a/src/script.c +++ b/src/script.c @@ -5,7 +5,7 @@ #include "script.h" #include "structures.h" #include "textbox.h" -#include "dma.h" +#include "utils.h" #include "save.h" #include "random.h" #include "functions.h" diff --git a/src/sub_0801D754.c b/src/sub_0801D754.c deleted file mode 100644 index 8b1b2b20..00000000 --- a/src/sub_0801D754.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "global.h" - -extern const u8 gUnk_020176E0[]; - -extern void sub_0807C960(); -extern void LoadPalettes(const u8*, int, int); - -void sub_0807C9D8(u32* a1) { - u32* v1; // r5@1 - - v1 = a1; - sub_0807C960(0x6004000, *a1); - sub_0807C960(0x6000000, v1[1]); - sub_0807C960(0x6008000, v1[2]); - sub_0807C960(gUnk_020176E0, v1[3]); - LoadPalettes(gUnk_020176E0, 2, 13); -} diff --git a/src/sub_0804AFF4.c b/src/sub_0804AFF4.c deleted file mode 100644 index b2555120..00000000 --- a/src/sub_0804AFF4.c +++ /dev/null @@ -1,20 +0,0 @@ -#include "global.h" - -extern void sub_080186EC(); -extern u32* GetCurrentRoomProperty(u8); -extern void sub_0804B16C(); - -void sub_0804AFF4(void) { - void (*func)(); - - sub_080186EC(); - func = (void (*)())GetCurrentRoomProperty(5); - if (func) { - func(); - } - func = (void (*)())GetCurrentRoomProperty(7); - if (func) { - func(); - } - sub_0804B16C(); -} diff --git a/src/sub_08050008.c b/src/sub_08050008.c index 59ace866..df79883a 100644 --- a/src/sub_08050008.c +++ b/src/sub_08050008.c @@ -1,5 +1,5 @@ #include "global.h" -#include "dma.h" +#include "utils.h" #include "structures.h" extern u32 gUnk_020354C0; diff --git a/src/sub_0806F9EC.c b/src/sub_0806F9EC.c deleted file mode 100644 index 8c3f17fb..00000000 --- a/src/sub_0806F9EC.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "global.h" - -s32 sub_0806F9EC(s16 unk_1, s16 unk_2) { - int temp; - - temp = (s32)unk_1 * (s32)unk_2; - if (temp < 0) { - temp = temp + 255; - } - return (temp << 8) >> 16; -} diff --git a/src/sub_0806FA04.c b/src/sub_0806FA04.c deleted file mode 100644 index 75d421be..00000000 --- a/src/sub_0806FA04.c +++ /dev/null @@ -1,14 +0,0 @@ -#include "global.h" - -s16 sub_0806FA04(s16 param_1, s16 param_2) { - s16 sVar1; - s32 iVar2; - - if (param_2 != 0) { - sVar1 = ((param_1 << 16) >> 8) / param_2; - iVar2 = sVar1; - } else { - iVar2 = 0; - } - return iVar2; -} diff --git a/src/sub_0807B7D8.c b/src/sub_0807B7D8.c deleted file mode 100644 index 7a8a68fc..00000000 --- a/src/sub_0807B7D8.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "global.h" -#include "functions.h" - -extern void sub_08000152(u32); -extern void sub_0807B778(u32, u32); - -void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) { - if (param_1 == 53) { - sub_08000152(53); - sub_0807B778(param_2, param_3); - sub_0807B778(param_2 + 1, param_3); - sub_0807B778(param_2 + -1, param_3); - sub_0807B778(param_2 + 64, param_3); - sub_0807B778(param_2 + -64, param_3); - } else { - SetTileType(param_1, param_2, param_3); - } -} diff --git a/src/sub_0807B820.c b/src/sub_0807B820.c index 54b94849..f26e6974 100644 --- a/src/sub_0807B820.c +++ b/src/sub_0807B820.c @@ -1,6 +1,22 @@ #include "global.h" #include "functions.h" +extern void sub_08000152(u32); +extern void sub_0807B778(u32, u32); + +void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) { + if (param_1 == 53) { + sub_08000152(53); + sub_0807B778(param_2, param_3); + sub_0807B778(param_2 + 1, param_3); + sub_0807B778(param_2 + -1, param_3); + sub_0807B778(param_2 + 64, param_3); + sub_0807B778(param_2 + -64, param_3); + } else { + SetTileType(param_1, param_2, param_3); + } +} + void sub_0807B820(u32 param_1) { SetTileType(620, param_1 + -65, 1); SetTileType(627, param_1 + -65, 2); @@ -12,3 +28,28 @@ void sub_0807B820(u32 param_1) { SetTileType(624, param_1, 1); SetTileType(626, param_1 + 1, 1); } + +void sub_0807B8A8(u32 param_1) { + SetTileType(636, param_1 + -65, 1); + SetTileType(643, param_1 + -65, 2); + SetTileType(637, param_1 + -64, 1); + SetTileType(644, param_1 + -64, 2); + SetTileType(638, param_1 + -63, 1); + SetTileType(645, param_1 + -63, 2); + SetTileType(639, param_1 + -1, 1); + SetTileType(640, param_1, 1); + SetTileType(642, param_1 + 1, 1); +} + + +void sub_0807B930(int param_1) { + SetTileType(652, param_1 + -65, 1); + SetTileType(659, param_1 + -65, 2); + SetTileType(653, param_1 + -64, 1); + SetTileType(660, param_1 + -64, 2); + SetTileType(654, param_1 + -63, 1); + SetTileType(661, param_1 + -63, 2); + SetTileType(655, param_1 + -1, 1); + SetTileType(656, param_1, 1); + SetTileType(658, param_1 + 1, 1); +} diff --git a/src/sub_0807B8A8.c b/src/sub_0807B8A8.c deleted file mode 100644 index f0524685..00000000 --- a/src/sub_0807B8A8.c +++ /dev/null @@ -1,14 +0,0 @@ -#include "global.h" -#include "functions.h" - -void sub_0807B8A8(u32 param_1) { - SetTileType(636, param_1 + -65, 1); - SetTileType(643, param_1 + -65, 2); - SetTileType(637, param_1 + -64, 1); - SetTileType(644, param_1 + -64, 2); - SetTileType(638, param_1 + -63, 1); - SetTileType(645, param_1 + -63, 2); - SetTileType(639, param_1 + -1, 1); - SetTileType(640, param_1, 1); - SetTileType(642, param_1 + 1, 1); -} diff --git a/src/sub_0807B930.c b/src/sub_0807B930.c deleted file mode 100644 index 6ad13448..00000000 --- a/src/sub_0807B930.c +++ /dev/null @@ -1,14 +0,0 @@ -#include "global.h" -#include "functions.h" - -void sub_0807B930(int param_1) { - SetTileType(652, param_1 + -65, 1); - SetTileType(659, param_1 + -65, 2); - SetTileType(653, param_1 + -64, 1); - SetTileType(660, param_1 + -64, 2); - SetTileType(654, param_1 + -63, 1); - SetTileType(661, param_1 + -63, 2); - SetTileType(655, param_1 + -1, 1); - SetTileType(656, param_1, 1); - SetTileType(658, param_1 + 1, 1); -} diff --git a/src/sub_0807C998.c b/src/sub_0807C998.c index 608f7680..7f3a05c9 100644 --- a/src/sub_0807C998.c +++ b/src/sub_0807C998.c @@ -1,10 +1,14 @@ #include "global.h" extern void sub_0807C960(); +extern void LoadPalettes(const u8*, s32, s32); + extern u16 gMetatilesBottom[]; extern u16 gMetatilesTop[]; extern u8 gUnk_08324AE4; +extern const u8 gUnk_020176E0[]; + void sub_0807C960(void* dest, u32 offset) { void* src; @@ -24,3 +28,14 @@ void sub_0807C998(u32* a1) { sub_0807C960(gMetatilesTop, a1[2]); sub_0807C960(gMetatilesTop - 0x1000, a1[3]); } + +void sub_0807C9D8(u32* a1) { + u32* v1; // r5@1 + + v1 = a1; + sub_0807C960((u8*)0x6004000, *a1); + sub_0807C960((u8*)0x6000000, v1[1]); + sub_0807C960((u8*)0x6008000, v1[2]); + sub_0807C960((u8*)gUnk_020176E0, v1[3]); + LoadPalettes(gUnk_020176E0, 2, 13); +} diff --git a/src/textbox.c b/src/textbox.c index 262560c4..3510e095 100644 --- a/src/textbox.c +++ b/src/textbox.c @@ -1,7 +1,7 @@ #include "global.h" #include "room.h" #include "entity.h" -#include "dma.h" +#include "utils.h" #include "functions.h" #include "textbox.h" #include "structures.h" @@ -14,11 +14,14 @@ u32 sub_080565B4(void); u32 sub_080565F8(void); u32 sub_08056640(void); -u32 (*const gUnk_08107BC8[])(void) = { sub_080564DC, sub_080564EC, sub_08056654, - sub_080565B4, sub_080565F8, sub_08056640 }; +u32 (*const gUnk_08107BC8[])(void) = { + sub_080564DC, sub_080564EC, sub_08056654, sub_080565B4, sub_080565F8, sub_08056640, +}; extern u8 gUnk_020227DC, gUnk_020227E8, gUnk_020227F0, gUnk_020227F8, gUnk_02022800; -u8* const gUnk_08107BE0[] = { &gUnk_020227DC, &gUnk_020227E8, &gUnk_020227F0, &gUnk_020227F8, &gUnk_02022800 }; +u8* const gUnk_08107BE0[] = { + &gUnk_020227DC, &gUnk_020227E8, &gUnk_020227F0, &gUnk_020227F8, &gUnk_02022800, +}; void sub_08056684(struct_02022780*); void sub_080566B8(struct_02022780*); @@ -27,8 +30,9 @@ void sub_08056B1C(struct_02022780*); void sub_08056B7C(struct_02022780*); void sub_080569D4(struct_02022780*); -void (*const gUnk_08107BF4[])(struct_02022780*) = { sub_08056684, sub_080566B8, sub_08056BA0, - sub_08056B1C, sub_08056B7C, sub_080569D4 }; +void (*const gUnk_08107BF4[])(struct_02022780*) = { + sub_08056684, sub_080566B8, sub_08056BA0, sub_08056B1C, sub_08056B7C, sub_080569D4, +}; extern u32 gUnk_02036A40; extern u32 gUnk_02036A38; diff --git a/src/utils.c b/src/utils.c new file mode 100644 index 00000000..b88fb9cd --- /dev/null +++ b/src/utils.c @@ -0,0 +1,204 @@ +#include "global.h" +#include "utils.h" +#include "structures.h" +#include "screen.h" + +static void StoreKeyInput(Input* input, u32 keyInput); + +typedef struct { + u16 paletteId; + u8 destPaletteNum; + u8 numPalettes; +} PaletteGroup; + +typedef struct { + union { + int raw; + struct { + u8 filler0[0x3]; + u8 unk3; + } bytes; + } unk0; + u32 dest; + u32 unk8; +} GfxItem; + +extern const PaletteGroup* gPaletteGroups[]; +extern const u8 gGlobalGfxAndPalettes[]; +extern u32 gUsedPalettes; +extern u16 gPaletteBuffer[]; +extern const GfxItem* gUnk_08100AA8[]; + +void MemFill16(u32 value, void* dest, u32 size) { + DmaFill16(3, value, dest, size); +} + +void MemFill32(u32 value, void* dest, u32 size) { + DmaFill32(3, value, dest, size); +} + +void MemClear(void* dest, u32 size) { + u32 zero = 0; + + switch (((u32)dest | size) & 3) { + case 0: + MemFill32(0, dest, size); + break; + case 2: + MemFill16(0, dest, size); + break; + default: + do { + *(u8*)dest = zero; + dest++; + size--; + } while (size != 0); + } +} + +void MemCopy(const void* src, void* dest, u32 size) { + switch (((u32)src | (u32)dest | size) & 3) { + case 0: + DmaCopy32(3, src, dest, size); + break; + case 2: + DmaCopy16(3, src, dest, size); + break; + default: + do { + *(u8*)dest = *(u8*)src; + src++; + dest++; + } while (--size); + } +} + +void ReadKeyInput(void) { + u32 keyInput = ~REG_KEYINPUT & KEYS_MASK; + StoreKeyInput(&gInput, keyInput); +} + +static void StoreKeyInput(Input* input, u32 keyInput) { + u32 heldKeys = input->heldKeys; + u32 difference = keyInput & ~heldKeys; + input->newKeys = difference; + if (keyInput == heldKeys) { + if (--input->unk7 == 0) { + input->unk7 = 4; + input->unk4 = keyInput; + } else { + input->unk4 = 0; + } + } else { + input->unk7 = 0x14; + input->unk4 = difference; + } + input->heldKeys = keyInput; +} + +void LoadPaletteGroup(u32 group) { + const PaletteGroup* paletteGroup = gPaletteGroups[group]; + while (1) { + u32 destPaletteNum = paletteGroup->destPaletteNum; + u32 numPalettes = paletteGroup->numPalettes & 0xF; + if (numPalettes == 0) { + numPalettes = 16; + } + LoadPalettes(&gGlobalGfxAndPalettes[paletteGroup->paletteId * 32], destPaletteNum, numPalettes); + if ((paletteGroup->numPalettes & 0x80) == 0) { + break; + } + paletteGroup++; + } +} + +void LoadPalettes(const u8* src, int destPaletteNum, int numPalettes) { + u16* dest; + u32 size = numPalettes * 32; + u32 usedPalettesMask = 1 << destPaletteNum; + while (--numPalettes > 0) { + usedPalettesMask |= (usedPalettesMask << 1); + } + gUsedPalettes |= usedPalettesMask; + dest = &gPaletteBuffer[destPaletteNum * 16]; + DmaCopy32(3, src, dest, size); +} + +void sub_0801D79C(u32 colorIndex, u32 color) { + gPaletteBuffer[colorIndex] = color; + gUsedPalettes |= 1 << (colorIndex / 16); +} + +void sub_0801D7BC(u32 color, u32 arg1) { + if (arg1) { + gScreen.lcd.unk6 = 0xE0FF; + } else { + gScreen.lcd.unk6 = 0xFFFF; + } + sub_0801D79C(0, color); +} + +void LoadGfxGroup(u32 group) { + u32 terminator; + u32 dmaCtrl; + int gfxOffset; + const u8* src; + u32 dest; + int size; + const GfxItem* gfxItem = gUnk_08100AA8[group]; + while (1) { + u32 loadGfx = FALSE; + u32 ctrl = gfxItem->unk0.bytes.unk3; + ctrl &= 0xF; + switch (ctrl) { + case 0x7: + loadGfx = TRUE; + break; + case 0xD: + return; + case 0xE: + if (gUnk_02000000->gameLanguage != 0 && gUnk_02000000->gameLanguage != 1) { + loadGfx = TRUE; + } + break; + case 0xF: + if (gUnk_02000000->gameLanguage != 0) { + loadGfx = TRUE; + } + break; + default: + if (ctrl == gUnk_02000000->gameLanguage) { + loadGfx = TRUE; + } + break; + } + + if (loadGfx) { + gfxOffset = gfxItem->unk0.raw & 0xFFFFFF; + src = &gGlobalGfxAndPalettes[gfxOffset]; + dest = gfxItem->dest; + size = gfxItem->unk8; + dmaCtrl = 0x80000000; + if (size < 0) { + if (dest >= VRAM) { + LZ77UnCompVram(src, (void*)dest); + } else { + LZ77UnCompWram(src, (void*)dest); + } + } else { + DmaSet(3, src, dest, dmaCtrl | ((u32)size >> 1)); + } + } + + terminator = gfxItem->unk0.bytes.unk3; + terminator &= 0x80; + gfxItem++; + if (!terminator) { + break; + } + } +} + +/* TODO: + clear OAM, zMalloc, etc. +*/ From f0d610f385dcbac0973a3c4b2f48621417492b5a Mon Sep 17 00:00:00 2001 From: theo3 Date: Sun, 21 Mar 2021 22:00:07 -0700 Subject: [PATCH 21/21] fix entity.c search prototypes, add documentation --- asm/bigGoron.s | 22 +++++----- asm/bird.s | 2 +- asm/book.s | 2 +- asm/code_0801D79C.s | 14 +++--- asm/code_0804AA84.s | 2 +- asm/code_080526F8.s | 12 ++--- asm/code_0805436C.s | 4 +- asm/code_0806EC20.s | 2 +- asm/code_0806FA6C.s | 2 +- asm/code_080732D0.s | 6 +-- asm/code_08078778.s | 2 +- asm/code_0807F0D8.s | 2 +- asm/code_080A3480.s | 4 +- asm/code_080A5574.s | 2 +- asm/dust.s | 2 +- asm/fileScreen.s | 8 ++-- asm/fourElements.s | 2 +- asm/guardWithSpear.s | 2 +- asm/lilypadLarge.s | 4 +- asm/loadRoomEntity.s | 4 +- asm/macroBook.s | 4 +- asm/manager14.s | 2 +- asm/manager1B.s | 2 +- asm/manager22.s | 2 +- asm/manager36.s | 2 +- asm/managerF.s | 2 +- asm/object3E.s | 4 +- asm/object6A.s | 12 ++--- asm/object97.s | 4 +- asm/pina.s | 10 ++--- asm/rem.s | 6 +-- include/entity.h | 97 +++++++++++++++++++++++++++++------------ include/functions.h | 2 +- include/main.h | 1 - include/textbox.h | 30 +++++++++++++ include/utils.h | 45 +++++++++++++++++++ src/code_08077B98.c | 2 +- src/createEntity.c | 8 ++-- src/debugScreen.c | 2 +- src/enemy/miniSlime.c | 1 - src/enemy/pesto.c | 10 ++--- src/enemy/slime.c | 1 - src/entity.c | 38 ++++++++-------- src/fileScreen.c | 2 +- src/intro.c | 4 +- src/main.c | 2 +- src/manager/manager15.c | 2 +- src/npc/bigGoron.c | 2 +- src/npc/forestMinish.c | 2 +- src/npc/goronMerchant.c | 2 +- src/npc/malon.c | 4 +- src/npc/zelda.c | 6 +-- src/object/greatFairy.c | 4 +- src/player.c | 2 +- src/room.c | 2 +- src/sub_0807B820.c | 1 - 56 files changed, 266 insertions(+), 156 deletions(-) diff --git a/asm/bigGoron.s b/asm/bigGoron.s index f2926a00..8e59000e 100644 --- a/asm/bigGoron.s +++ b/asm/bigGoron.s @@ -120,7 +120,7 @@ sub_0806D0F8: @ 0x0806D0F8 movs r0, #7 movs r1, #0x4c movs r2, #7 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 beq _0806D10C bl sub_0806D0B0 @@ -928,7 +928,7 @@ sub_0806D6D0: @ 0x0806D6D0 movs r1, #0x4c movs r2, #7 movs r3, #2 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0806D6EE @@ -940,7 +940,7 @@ _0806D6EE: movs r1, #0x4c movs r2, #7 movs r3, #1 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0806D706 @@ -961,7 +961,7 @@ sub_0806D70C: @ 0x0806D70C movs r1, #0x4c movs r2, #7 movs r3, #2 - bl FindEntityInListByForm + bl FindEntity adds r2, r0, #0 cmp r2, #0 beq _0806D728 @@ -972,7 +972,7 @@ _0806D728: movs r1, #0x4c movs r2, #7 movs r3, #1 - bl FindEntityInListByForm + bl FindEntity adds r2, r0, #0 cmp r2, #0 beq _0806D746 @@ -996,7 +996,7 @@ sub_0806D74C: @ 0x0806D74C movs r1, #0x4c movs r2, #7 movs r3, #2 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0806D76A @@ -1008,7 +1008,7 @@ _0806D76A: movs r1, #0x4c movs r2, #7 movs r3, #1 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0806D782 @@ -1029,7 +1029,7 @@ sub_0806D788: @ 0x0806D788 movs r1, #0x4c movs r2, #7 movs r3, #2 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0806D7A6 @@ -1041,7 +1041,7 @@ _0806D7A6: movs r1, #0x4c movs r2, #7 movs r3, #1 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0806D7BE @@ -1070,7 +1070,7 @@ sub_0806D7C4: @ 0x0806D7C4 movs r1, #0x4c movs r2, #7 movs r3, #2 - bl FindEntityInListByForm + bl FindEntity cmp r0, #0 beq _0806D7FC movs r1, #0x2e @@ -1098,7 +1098,7 @@ sub_0806D804: @ 0x0806D804 movs r1, #0x4c movs r2, #7 movs r3, #2 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0806D83A diff --git a/asm/bird.s b/asm/bird.s index fed030cc..a6c53b75 100644 --- a/asm/bird.s +++ b/asm/bird.s @@ -639,7 +639,7 @@ CreateBird: @ 0x0809D700 movs r1, #0x95 movs r2, #6 movs r3, #8 - bl FindEntityInListByForm + bl FindEntity adds r4, r0, #0 cmp r4, #0 bne _0809D732 diff --git a/asm/book.s b/asm/book.s index 325205d1..fe75a238 100644 --- a/asm/book.s +++ b/asm/book.s @@ -327,7 +327,7 @@ _0809B606: movs r0, #7 movs r1, #0x1a movs r2, #7 - bl FindEntityInListBySubtype + bl FindEntityByID adds r2, r0, #0 cmp r2, #0 beq _0809B682 diff --git a/asm/code_0801D79C.s b/asm/code_0801D79C.s index f1aab2ca..4cbc3a6f 100644 --- a/asm/code_0801D79C.s +++ b/asm/code_0801D79C.s @@ -217,8 +217,8 @@ _0801DA02: mov sl, r5 pop {r4, r5, r6, r7, pc} - thumb_func_start sub_0801DA0C -sub_0801DA0C: @ 0x0801DA0C + thumb_func_start zFree +zFree: @ 0x0801DA0C push {r4, r5, lr} ldr r3, _0801DA44 @ =gzHeap subs r1, r0, r3 @@ -287,8 +287,8 @@ zMallocInit: @ 0x0801DA7C .align 2, 0 _0801DA8C: .4byte gzHeap - thumb_func_start sub_0801DA90 -sub_0801DA90: @ 0x0801DA90 + thumb_func_start DispReset +DispReset: @ 0x0801DA90 push {r4, r5, lr} adds r4, r0, #0 ldr r1, _0801DAEC @ =gMain @@ -319,7 +319,7 @@ sub_0801DA90: @ 0x0801DA90 movs r0, #0x80 lsls r0, r0, #0x13 strh r3, [r0] - bl sub_0801DB10 + bl ClearOAM bl sub_0801DB34 ldr r0, _0801DB08 @ =0x0600C000 movs r1, #0x20 @@ -341,8 +341,8 @@ _0801DB04: .4byte 0x00007FFF _0801DB08: .4byte 0x0600C000 _0801DB0C: .4byte gBG0Buffer - thumb_func_start sub_0801DB10 -sub_0801DB10: @ 0x0801DB10 + thumb_func_start ClearOAM +ClearOAM: @ 0x0801DB10 push {r4, lr} ldr r3, _0801DB30 @ =gUnk_03000020 movs r1, #0xe0 diff --git a/asm/code_0804AA84.s b/asm/code_0804AA84.s index c6424780..3174946c 100644 --- a/asm/code_0804AA84.s +++ b/asm/code_0804AA84.s @@ -9,7 +9,7 @@ sub_0804AB70: @ 0x0804AB70 push {r4, r5, lr} movs r0, #0 - bl sub_0801DA90 + bl DispReset ldr r1, _0804ABF8 @ =gScreen movs r2, #0 movs r0, #0x92 diff --git a/asm/code_080526F8.s b/asm/code_080526F8.s index a6574bbf..150d4fea 100644 --- a/asm/code_080526F8.s +++ b/asm/code_080526F8.s @@ -2013,7 +2013,7 @@ sub_0805368C: @ 0x0805368C movs r0, #6 movs r1, #0x5d movs r2, #6 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 beq _080536A6 bl DeleteEntity @@ -2139,7 +2139,7 @@ sub_08053758: @ 0x08053758 strh r2, [r0, #0xa] bl sub_0801B170 movs r0, #0 - bl sub_0801DA90 + bl DispReset ldr r2, _080537F0 @ =gScreen movs r0, #0x99 lsls r0, r0, #6 @@ -2380,7 +2380,7 @@ sub_08053974: @ 0x08053974 bne _080539A8 bl sub_0804FFE4 movs r0, #1 - bl sub_0801DA90 + bl DispReset bl sub_080197AC bl sub_08051F78 ldr r0, _080539B0 @ =gUnk_080FCBC4 @@ -2437,7 +2437,7 @@ sub_080539F4: @ 0x080539F4 cmp r0, #0 bne _08053A10 movs r0, #1 - bl sub_0801DA90 + bl DispReset ldr r0, _08053A18 @ =gMenu ldrb r1, [r0, #6] adds r1, #1 @@ -2587,7 +2587,7 @@ sub_08053B10: @ 0x08053B10 adds r1, #1 strb r1, [r0, #5] movs r0, #1 - bl sub_0801DA90 + bl DispReset movs r1, #0x80 lsls r1, r1, #1 movs r0, #4 @@ -2673,7 +2673,7 @@ sub_08053BBC: @ 0x08053BBC adds r1, #1 strb r1, [r0, #5] movs r0, #1 - bl sub_0801DA90 + bl DispReset movs r1, #0x80 lsls r1, r1, #1 movs r0, #4 diff --git a/asm/code_0805436C.s b/asm/code_0805436C.s index 4ab2c097..6e6c053a 100644 --- a/asm/code_0805436C.s +++ b/asm/code_0805436C.s @@ -33,7 +33,7 @@ sub_0805488C: @ 0x0805488C lsls r0, r0, #1 strh r0, [r2, #8] movs r0, #0 - bl sub_0801DA90 + bl DispReset ldrb r0, [r4, #3] movs r1, #1 bl sub_08054974 @@ -2571,7 +2571,7 @@ _08055C6C: movs r1, #0x9e movs r2, #6 movs r3, #0 - bl FindEntityInListByForm + bl FindEntity adds r4, r0, #0 cmp r4, #0 beq _08055C8C diff --git a/asm/code_0806EC20.s b/asm/code_0806EC20.s index 293d4e87..ff7f71a1 100644 --- a/asm/code_0806EC20.s +++ b/asm/code_0806EC20.s @@ -27,7 +27,7 @@ sub_0806EC38: @ 0x0806EC38 movs r0, #7 movs r1, #0x58 movs r2, #7 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 beq _0806EC4C bl DeleteEntity diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index 347c2fa1..f006651f 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -139,7 +139,7 @@ UnloadHitbox: @ 0x0806FBEC push {r4, lr} adds r4, r0, #0 ldr r0, [r4, #0x48] - bl sub_0801DA0C + bl zFree movs r0, #0 str r0, [r4, #0x48] pop {r4, pc} diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s index ef443c26..f2e7f6fa 100644 --- a/asm/code_080732D0.s +++ b/asm/code_080732D0.s @@ -4592,7 +4592,7 @@ _080754F2: movs r0, #8 movs r1, #0xf movs r2, #2 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 bne _08075538 adds r0, r4, #0 @@ -6017,7 +6017,7 @@ sub_08075FF8: @ 0x08075FF8 movs r0, #8 movs r1, #2 movs r2, #2 - bl FindEntityInListBySubtype + bl FindEntityByID b _08076026 .align 2, 0 _08076018: .4byte gPlayerState @@ -6025,7 +6025,7 @@ _0807601C: adds r5, #1 adds r0, r4, #0 movs r1, #2 - bl FindNextEntityOfSameSubtype + bl FindNextDuplicateID _08076026: adds r4, r0, #0 cmp r4, #0 diff --git a/asm/code_08078778.s b/asm/code_08078778.s index fe9f34f1..323f2c4f 100644 --- a/asm/code_08078778.s +++ b/asm/code_08078778.s @@ -44,7 +44,7 @@ _080788BA: movs r0, #6 movs r1, #9 movs r2, #6 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 bne _080788D6 movs r0, #9 diff --git a/asm/code_0807F0D8.s b/asm/code_0807F0D8.s index 16552c65..22e915bf 100644 --- a/asm/code_0807F0D8.s +++ b/asm/code_0807F0D8.s @@ -1228,7 +1228,7 @@ sub_0807F950: @ 0x0807F950 movs r1, #0x56 movs r2, #6 movs r3, #0 - bl FindEntityInListByForm + bl FindEntity cmp r0, #0 beq _0807F96C bl DeleteEntity diff --git a/asm/code_080A3480.s b/asm/code_080A3480.s index a30dd9c2..879e0852 100644 --- a/asm/code_080A3480.s +++ b/asm/code_080A3480.s @@ -266,7 +266,7 @@ _080A365C: _080A365E: str r0, [r2, #0xc] movs r0, #0 - bl sub_0801DA90 + bl DispReset movs r0, #0xb bl LoadPaletteGroup movs r0, #0xc @@ -699,7 +699,7 @@ _080A39C8: strh r0, [r2, #8] strb r4, [r2, #3] movs r0, #1 - bl sub_0801DA90 + bl DispReset bl sub_080A3210 bl sub_080A4D34 movs r0, #0xa diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index 6a218289..05b47ec9 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -3782,7 +3782,7 @@ sub_080A7328: @ 0x080A7328 movs r0, #8 strb r0, [r4, #8] movs r0, #1 - bl sub_0801DA90 + bl DispReset bl MessageInitialize bl sub_080ADD30 movs r0, #0 diff --git a/asm/dust.s b/asm/dust.s index 2a5392c6..f010f3dc 100644 --- a/asm/dust.s +++ b/asm/dust.s @@ -160,7 +160,7 @@ _080441F2: cmp r2, #0 bne _08044248 ldr r0, [r4, #0x64] - bl sub_0801DA0C + bl zFree b _0804429A .align 2, 0 _08044244: .4byte 0x000001EB diff --git a/asm/fileScreen.s b/asm/fileScreen.s index 287c9992..ba7813d0 100755 --- a/asm/fileScreen.s +++ b/asm/fileScreen.s @@ -33,7 +33,7 @@ sub_080519B0: @ 0x080519B0 cmp r5, #0 bne _08051A02 movs r0, #1 - bl sub_0801DA90 + bl DispReset bl sub_080A3210 bl zMallocInit bl sub_080A7124 @@ -69,7 +69,7 @@ _08051A10: .4byte gMain sub_08051A14: @ 0x08051A14 push {lr} movs r0, #1 - bl sub_0801DA90 + bl DispReset ldr r1, _08051A70 @ =gFadeControl movs r0, #1 rsbs r0, r0, #0 @@ -368,7 +368,7 @@ sub_08051CF0: @ 0x08051CF0 cmp r4, #0 bne _08051D1E movs r0, #1 - bl sub_0801DA90 + bl DispReset strb r6, [r5, #3] strb r4, [r5, #4] ldr r0, _08051D28 @ =gScreenTransition @@ -729,7 +729,7 @@ sub_08052010: @ 0x08052010 bl sub_080A3210 bl MessageInitialize movs r0, #1 - bl sub_0801DA90 + bl DispReset ldr r0, _0805207C @ =gBG1Buffer movs r4, #0x80 lsls r4, r4, #4 diff --git a/asm/fourElements.s b/asm/fourElements.s index 42e2badb..dd5ffa82 100644 --- a/asm/fourElements.s +++ b/asm/fourElements.s @@ -355,7 +355,7 @@ sub_080A0464: @ 0x080A0464 movs r0, #6 movs r1, #0xac movs r2, #6 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 beq _080A048A movs r1, #0x2e diff --git a/asm/guardWithSpear.s b/asm/guardWithSpear.s index 14da7633..4d328260 100644 --- a/asm/guardWithSpear.s +++ b/asm/guardWithSpear.s @@ -153,7 +153,7 @@ sub_08064180: @ 0x08064180 movs r0, #7 movs r1, #0x15 movs r2, #7 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 beq _08064194 bl DeleteEntity diff --git a/asm/lilypadLarge.s b/asm/lilypadLarge.s index c89575a1..4d2e643d 100644 --- a/asm/lilypadLarge.s +++ b/asm/lilypadLarge.s @@ -73,7 +73,7 @@ _08085566: b _0808557A _0808556C: adds r0, r4, #0 - bl DoesSimilarEntityExist + bl EntityHasDuplicateID cmp r0, #0 beq _0808557A bl DeleteThisEntity @@ -1072,7 +1072,7 @@ _08085D0C: sub_08085D10: @ 0x08085D10 push {r4, lr} adds r4, r0, #0 - bl DoesSimilarEntityExist + bl EntityHasDuplicateID cmp r0, #0 beq _08085D26 ldrb r0, [r4, #0xb] diff --git a/asm/loadRoomEntity.s b/asm/loadRoomEntity.s index 81a81688..50933176 100644 --- a/asm/loadRoomEntity.s +++ b/asm/loadRoomEntity.s @@ -19,14 +19,14 @@ LoadRoomEntity: @ 0x0804ADF8 bne _0804AE1C ldrb r1, [r4, #2] adds r0, r6, #0 - bl FindEntityBySubtype + bl DeepFindEntityByID cmp r0, #0 beq _0804AE1C movs r0, #0 b _0804AEAC _0804AE1C: adds r0, r6, #0 - bl GetEmptyEntityByType + bl GetEmptyEntityByKind adds r5, r0, #0 cmp r5, #0 beq _0804AEAA diff --git a/asm/macroBook.s b/asm/macroBook.s index 7836e99b..654f182a 100644 --- a/asm/macroBook.s +++ b/asm/macroBook.s @@ -360,7 +360,7 @@ sub_0809AA00: @ 0x0809AA00 movs r0, #7 movs r1, #0x38 movs r2, #7 - bl FindEntityInListBySubtype + bl FindEntityByID adds r4, r0, #0 adds r7, r5, #0 adds r7, #0x78 @@ -380,7 +380,7 @@ _0809AA30: _0809AA3A: adds r0, r4, #0 movs r1, #7 - bl FindNextEntityOfSameSubtype + bl FindNextDuplicateID adds r4, r0, #0 cmp r4, #0 bne _0809AA30 diff --git a/asm/manager14.s b/asm/manager14.s index cfdf3e17..cae54bf4 100644 --- a/asm/manager14.s +++ b/asm/manager14.s @@ -30,7 +30,7 @@ _08059E7C: .4byte gUnk_081085A4 sub_08059E80: @ 0x08059E80 push {r4, r5, lr} adds r4, r0, #0 - bl DoesSimilarEntityExist + bl EntityHasDuplicateID cmp r0, #0 beq _08059E90 bl DeleteThisEntity diff --git a/asm/manager1B.s b/asm/manager1B.s index c591eaa4..31e610bc 100644 --- a/asm/manager1B.s +++ b/asm/manager1B.s @@ -10,7 +10,7 @@ sub_0805B3B4: @ 0x0805B3B4 push {r4, r5, lr} adds r4, r0, #0 - bl DoesSimilarEntityExist + bl EntityHasDuplicateID cmp r0, #0 beq _0805B3C4 bl DeleteThisEntity diff --git a/asm/manager22.s b/asm/manager22.s index 4159a42b..aae066dc 100644 --- a/asm/manager22.s +++ b/asm/manager22.s @@ -342,7 +342,7 @@ _0805BB82: strh r1, [r2, #0xc] movs r0, #9 movs r1, #0x22 - bl FindEntityBySubtype + bl DeepFindEntityByID cmp r0, #0 beq _0805BBAE bl sub_0805B8EC diff --git a/asm/manager36.s b/asm/manager36.s index 5245d37b..e4fae5aa 100644 --- a/asm/manager36.s +++ b/asm/manager36.s @@ -72,7 +72,7 @@ sub_0805DE18: @ 0x0805DE18 movs r0, #9 movs r1, #0x36 movs r2, #6 - bl FindEntityInListByForm + bl FindEntity cmp r0, #0 beq _0805DE34 bl DeleteEntityAny diff --git a/asm/managerF.s b/asm/managerF.s index b9d9444a..1e268250 100644 --- a/asm/managerF.s +++ b/asm/managerF.s @@ -492,7 +492,7 @@ sub_08059278: @ 0x08059278 movs r0, #9 movs r1, #0xf movs r2, #6 - bl FindEntityInListBySubtype + bl FindEntityByID cmp r0, #0 beq _0805928C bl sub_08058ECC diff --git a/asm/object3E.s b/asm/object3E.s index 786ee7ba..ee4b5d42 100644 --- a/asm/object3E.s +++ b/asm/object3E.s @@ -247,7 +247,7 @@ sub_0808D280: @ 0x0808D280 movs r1, #0x3e movs r2, #6 movs r3, #9 - bl FindEntityInListByForm + bl FindEntity adds r2, r0, #0 cmp r2, #0 beq _0808D2C4 @@ -287,7 +287,7 @@ sub_0808D2CC: @ 0x0808D2CC movs r1, #0x3e movs r2, #6 movs r3, #1 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _0808D2F2 diff --git a/asm/object6A.s b/asm/object6A.s index 761e95e4..fb464dcb 100644 --- a/asm/object6A.s +++ b/asm/object6A.s @@ -235,7 +235,7 @@ sub_08094BE0: @ 0x08094BE0 movs r1, #0x6a movs r2, #6 movs r3, #0x22 - bl FindEntityInListByForm + bl FindEntity adds r4, r0, #0 cmp r4, #0 beq _08094C22 @@ -390,7 +390,7 @@ sub_08094D10: @ 0x08094D10 movs r1, #0x6a movs r2, #6 movs r3, #3 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _08094D2E @@ -442,7 +442,7 @@ sub_08094D70: @ 0x08094D70 movs r1, #0x6a movs r2, #6 movs r3, #0x15 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _08094D8E @@ -527,7 +527,7 @@ sub_08094E0C: @ 0x08094E0C movs r1, #0x6a movs r2, #6 movs r3, #4 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _08094E2A @@ -951,7 +951,7 @@ sub_08095164: @ 0x08095164 movs r1, #0x6a movs r2, #6 movs r3, #8 - bl FindEntityInListByForm + bl FindEntity cmp r0, #0 beq _08095182 movs r1, #3 @@ -2103,7 +2103,7 @@ sub_08095A68: @ 0x08095A68 movs r1, #0x6a movs r2, #6 movs r3, #0x16 - bl FindEntityInListByForm + bl FindEntity adds r1, r0, #0 cmp r1, #0 beq _08095A86 diff --git a/asm/object97.s b/asm/object97.s index 74fca837..380c921b 100644 --- a/asm/object97.s +++ b/asm/object97.s @@ -62,7 +62,7 @@ sub_0809D9D8: @ 0x0809D9D8 bl InitAnimationForceUpdate adds r0, r4, #0 movs r1, #6 - bl FindNextEntityOfSameSubtype + bl FindNextDuplicateID cmp r0, #0 beq _0809DA1E str r4, [r0, #0x50] @@ -436,7 +436,7 @@ sub_0809DC80: @ 0x0809DC80 bl InitAnimationForceUpdate adds r0, r4, #0 movs r1, #6 - bl FindNextEntityOfSameSubtype + bl FindNextDuplicateID cmp r0, #0 beq _0809DD00 str r4, [r0, #0x50] diff --git a/asm/pina.s b/asm/pina.s index 39aeaf15..c92b8889 100644 --- a/asm/pina.s +++ b/asm/pina.s @@ -235,7 +235,7 @@ sub_08063C14: @ 0x08063C14 push {lr} movs r0, #7 movs r1, #0x14 - bl FindEntityBySubtype + bl DeepFindEntityByID cmp r0, #0 beq _08063C28 movs r1, #8 @@ -249,7 +249,7 @@ sub_08063C2C: @ 0x08063C2C push {lr} movs r0, #7 movs r1, #0x14 - bl FindEntityBySubtype + bl DeepFindEntityByID cmp r0, #0 beq _08063C40 movs r1, #4 @@ -263,7 +263,7 @@ sub_08063C44: @ 0x08063C44 push {lr} movs r0, #7 movs r1, #0x14 - bl FindEntityBySubtype + bl DeepFindEntityByID cmp r0, #0 beq _08063C58 movs r1, #0 @@ -277,7 +277,7 @@ sub_08063C5C: @ 0x08063C5C push {lr} movs r0, #7 movs r1, #0x14 - bl FindEntityBySubtype + bl DeepFindEntityByID cmp r0, #0 beq _08063C70 movs r1, #9 @@ -291,7 +291,7 @@ sub_08063C74: @ 0x08063C74 push {lr} movs r0, #7 movs r1, #0x14 - bl FindEntityBySubtype + bl DeepFindEntityByID cmp r0, #0 beq _08063C8C movs r2, #0x18 diff --git a/asm/rem.s b/asm/rem.s index a4906475..4f86ff07 100644 --- a/asm/rem.s +++ b/asm/rem.s @@ -938,7 +938,7 @@ _0806AAEE: adds r0, #0xac ldr r0, [r0] movs r1, #7 - bl FindNextEntityOfSameSubtype + bl FindNextDuplicateID adds r1, r0, #0 adds r0, r4, #0 adds r0, #0xb0 @@ -948,7 +948,7 @@ _0806AB02: adds r0, #0xb0 ldr r0, [r0] movs r1, #7 - bl FindNextEntityOfSameSubtype + bl FindNextDuplicateID adds r1, r0, #0 mov r0, r8 adds r0, #0xb4 @@ -1041,7 +1041,7 @@ sub_0806AB9C: @ 0x0806AB9C movs r1, #0x37 movs r2, #7 movs r3, #1 - bl FindEntityInListByForm + bl FindEntity cmp r0, #0 beq _0806ABBC bl DeleteEntity diff --git a/include/entity.h b/include/entity.h index 10867f53..f19e0876 100644 --- a/include/entity.h +++ b/include/entity.h @@ -175,34 +175,6 @@ extern LinkedList gUnk_03003DA0; #define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \ TILE((entity)->x.HALF.HI - (xOff), (entity)->y.HALF.HI - (yOff)) -Entity* GetEmptyEntity(void); -extern Entity* CreateEnemy(u32 subtype, u32 form); -extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter); -extern Entity* CreateNPC(u32 subtype, u32 form, u32 parameter); -extern Entity* CreateObjectWithParent(Entity* parent, u32 subtype, u32 form, u32 parameter); -extern Entity* CreateFx(Entity* parent, u32 form, u32 parameter); - -extern void InitializeAnimation(Entity*, u32); -extern void InitAnimationForceUpdate(Entity*, u32); -extern void UpdateAnimationSingleFrame(Entity*); -extern void UpdateSpriteForCollisionLayer(Entity*); -extern void GetNextFrame(Entity*); -extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*); -extern void SetExtraSpriteFrame(Entity*, u32, u32); -extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); -extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); - -extern u32 GetFacingDirection(Entity*, Entity*); - -void DeleteThisEntity(void); -void DeleteEntity(Entity*); - -void AppendEntityToList(Entity* entity, u32 listIndex); -void PrependEntityToList(Entity* entity, int listIndex); - -Entity* FindEntityInListBySubtype(u32 type, u32 subtype, u32 listIndex); -Entity* FindEntityInListByForm(u32 type, u32 subtype, u32 listIndex, u32 form, u32 parameter); - enum { DirectionNorth = 0x00, DirectionEast = 0x08, @@ -224,4 +196,73 @@ enum { #define Direction8ToAnimationState(expr) (Direction8RoundUp(expr) >> 2) #define Direction8FromAnimationState(expr) (((expr) << 2) +Entity* GetEmptyEntity(void); +extern Entity* CreateEnemy(u32 id, u32 type); +extern Entity* CreateNPC(u32 id, u32 type, u32 type2); +extern Entity* CreateObject(u32 id, u32 type, u32 type2); +extern Entity* CreateObjectWithParent(Entity* parent, u32 id, u32 type, u32 type2); +extern Entity* CreateFx(Entity* parent, u32 type, u32 type2); + +extern void InitializeAnimation(Entity*, u32); +extern void InitAnimationForceUpdate(Entity*, u32); +extern void UpdateAnimationSingleFrame(Entity*); +extern void UpdateSpriteForCollisionLayer(Entity*); +extern void GetNextFrame(Entity*); +extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*); +extern void SetExtraSpriteFrame(Entity*, u32, u32); +extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32); +extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); + +extern u32 GetFacingDirection(Entity*, Entity*); + +/** + * @brief Delete the entity currently in execution. + */ +void DeleteThisEntity(void); + +/** + * @brief Delete an entity. + */ +void DeleteEntity(Entity*); + +/** + * @brief Append entity to linked list. + */ +void AppendEntityToList(Entity* entity, u32 listIndex); + +/** + * @brief Prepend entity to linked list. + */ +void PrependEntityToList(Entity* entity, u32 listIndex); + +/** + * @brief Find an entity for a given kind and ID. + * @return Entity* First result or NULL if none found + */ +Entity* FindEntityByID(u32 kind, u32 id, u32 listIndex); + +/** + * @brief Search all lists for an entity of same kind and id. + * @return Entity* First result or NULL if none found + */ +Entity* DeepFindEntityByID(u32 kind, u32 id); + +/** + * @brief Search all lists for entity of same kind and id. + * @return bool32 Duplicate was entity found + */ +bool32 EntityHasDuplicateID(Entity* ent); + +/** + * @brief Find an entity of same kind and id in list. + * @return Entity* First result or NULL if none found + */ +Entity* FindNextDuplicateID(Entity* ent, int listIndex); + +/** + * @brief Find Entity with full identifiers. + * @return Entity* First result or NULL if none found + */ +Entity* FindEntity(u32 kind, u32 id, u32 listIndex, u32 type, u32 type2); + #endif diff --git a/include/functions.h b/include/functions.h index 049f3bd1..5c62cced 100644 --- a/include/functions.h +++ b/include/functions.h @@ -119,7 +119,7 @@ extern u32 sub_08060354(void); extern void sub_08057E64(void); extern void sub_0809F814(u32); extern void sub_080300E8(void); -extern void sub_0801DA90(u32); +extern void DispReset(u32); extern void sub_08058D34(void); extern void sub_0807AABC(Entity*); extern void sub_08078A90(u32); diff --git a/include/main.h b/include/main.h index 32eceb8f..1653a40e 100644 --- a/include/main.h +++ b/include/main.h @@ -84,7 +84,6 @@ extern void sub_08056208(void); extern void sub_0804FFE4(void); extern void sub_080ADD30(void); -extern void ReadKeyInput(void); extern void DoSoftReset(void); extern void sub_08056260(void); extern void VBlankIntrWait(); diff --git a/include/textbox.h b/include/textbox.h index e6433cf2..817d50a0 100644 --- a/include/textbox.h +++ b/include/textbox.h @@ -56,10 +56,40 @@ typedef struct { extern struct_02022780 gUnk_02022780; static_assert(sizeof(struct_02022780) == 0xa8); +/** + * @brief Initialize the message system. + */ void MessageInitialize(void); + +/** + * @brief Show a message on screen. + * + * @param index u32 Message index + */ void ShowTextbox(u32 index); + +/** + * @brief Show a message at screen posiiton. + * + * @param index u32 Message index + * @param x u32 Screen x + * @param y u32 Screen y + */ void TextboxAtPosition(u32 index, u32 x, u32 y); + +/** + * @brief Show a message that attempts not to obscure the entity. + * + * @param index u32 Message index + * @param ent Entity* Your important entity + */ void TextboxNoOverlap(u32 index, Entity* ent); + +/** + * @brief Show a message that attempts not to obscure the camera target. + * + * @param index u32 Message index + */ void TextboxNoOverlapFollow(u32 index); #endif diff --git a/include/utils.h b/include/utils.h index 1703c991..040eacee 100644 --- a/include/utils.h +++ b/include/utils.h @@ -8,12 +8,57 @@ typedef struct { extern Input gInput; +/** + * Fill memory with 16 bit value. + */ void MemFill16(u32 value, void* dest, u32 size); + +/** + * Fill memory with 32 bit value. + */ void MemFill32(u32 value, void* dest, u32 size); + +/** + * Clear memory. + */ void MemClear(void* dest, u32 size); + +/** + * Copy memory. + */ void MemCopy(const void* src, void* dest, u32 size); +/** + * Refresh gInput from hardware registers. + */ void ReadKeyInput(void); void LoadPalettes(const u8*, int, int); void LoadPaletteGroup(u32 group); + +/** + * Allocate memory on heap. + * + * The heap size is 0x1000 bytes and should be used sparingly. + * It is customary for entities store the returned handle in their 'myHeap' field. + * + * @param size u32 Size to be allocated + * @return void* Pointer to allocated memory + */ +void* zMalloc(u32 size); + +/** + * Free memory from heap. + * + * The entity system will automatically free the address stored in the 'myHeap' field. + * + * @param ptr void* Handle to be freed + */ +void zFree(void* ptr); + +/** + * Reset All display hardware registers. + * + * @param updateHUD bool32 Request refresh of HUD layer (bg 0) + */ +void DispReset(bool32 updateHUD); diff --git a/src/code_08077B98.c b/src/code_08077B98.c index c3fbf5dd..856dc44b 100644 --- a/src/code_08077B98.c +++ b/src/code_08077B98.c @@ -82,7 +82,7 @@ void* sub_08077C54(UnkItemStruct* unk) { Entity* sub_08077C94(ItemBehavior* arg0, u32 arg1) { Entity* iVar1; - iVar1 = FindEntityInListBySubtype(8, gUnk_0811BE48[arg1].unk[3], 2); + iVar1 = FindEntityByID(8, gUnk_0811BE48[arg1].unk[3], 2); if (iVar1 == NULL) { return NULL; } diff --git a/src/createEntity.c b/src/createEntity.c index e83312a1..9948a780 100644 --- a/src/createEntity.c +++ b/src/createEntity.c @@ -2,8 +2,8 @@ // #include "entityData.h" // #include "global.h" -// extern Entity * FindEntityBySubtype(u32, u32); -// extern Entity * GetEmptyEntityByType(); +// extern Entity * DeepFindEntityByID(u32, u32); +// extern Entity * GetEmptyEntityByKind(); // extern void RegisterRoomEntity(Entity *, EntityData *); // extern u32 sub_0804AF0C(Entity *, EntityData *); // extern void sub_08016A30(Entity *); @@ -17,11 +17,11 @@ // type = param_1->entityType & 15; // if (((param_1->field_0x1 & 240) == 80) && -// (preexisting = FindEntityBySubtype(type,param_1->entitySubtype), preexisting != NULL)) { +// (preexisting = DeepFindEntityByID(type,param_1->entitySubtype), preexisting != NULL)) { // entity = NULL; // } // else { -// entity = GetEmptyEntityByType(); //Get empty entity +// entity = GetEmptyEntityByKind(); //Get empty entity // if (entity != NULL) { // (entity->entityType).type = type; // (entity->entityType).subtype = param_1->entitySubtype; diff --git a/src/debugScreen.c b/src/debugScreen.c index c5fcd45f..bc034e8e 100644 --- a/src/debugScreen.c +++ b/src/debugScreen.c @@ -16,7 +16,7 @@ void HandleDebugTextScreen() { } void sub_0805FA04(void) { - sub_0801DA90(1); + DispReset(1); MemClear(&gBG0Buffer, sizeof(BGBuffer)); MemClear(&gBG3Buffer, 0x1000); gScreen.lcd.displayControl = 0x940; diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c index baa1e04e..68c1303a 100644 --- a/src/enemy/miniSlime.c +++ b/src/enemy/miniSlime.c @@ -6,7 +6,6 @@ void sub_08045374(Entity*); -//extern u32 FixedDiv(u32, u32); extern void sub_080452E4(); extern void ReplaceMonitoredEntity(Entity*, Entity*); diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c index 9d7520e1..3eeda562 100644 --- a/src/enemy/pesto.c +++ b/src/enemy/pesto.c @@ -10,7 +10,7 @@ extern void sub_0800449C(Entity*, u32); extern u32 sub_08049F1C(Entity*, Entity*, u32); extern u32 PlayerInRange(Entity*, u32, u32); extern void sub_080AEFB4(Entity*); -extern Entity* FindNextEntityOfSameSubtype(Entity* ent, int listIndex); +extern Entity* FindNextDuplicateID(Entity* ent, int listIndex); void sub_080249F4(Entity*); void sub_08024940(Entity*); @@ -666,7 +666,7 @@ bool32 sub_08024B38(Entity* this) { } } - ent = FindEntityInListBySubtype(8, 2, 2); + ent = FindEntityByID(8, 2, 2); if (ent) { do { if (ent->action != 2 && ent->height.HALF.HI == 0 && sub_08049F1C(this, ent, 0xa0)) { @@ -676,14 +676,14 @@ bool32 sub_08024B38(Entity* this) { this->field_0x82.HALF.HI &= ~0x40; break; } - } while (ent = FindNextEntityOfSameSubtype(ent, 2), ent != NULL); + } while (ent = FindNextDuplicateID(ent, 2), ent != NULL); } if (iVar4 != 0) { return iVar4; } - ent = FindEntityInListBySubtype(6, 5, 6); + ent = FindEntityByID(6, 5, 6); if (ent) { do { if (ent->action == 1 && sub_08049F1C(this, ent, 0xa0)) { @@ -693,7 +693,7 @@ bool32 sub_08024B38(Entity* this) { this->field_0x82.HALF.HI &= ~0x40; break; } - } while (ent = FindNextEntityOfSameSubtype(ent, 6), ent != NULL); + } while (ent = FindNextDuplicateID(ent, 6), ent != NULL); } if (iVar4 == 0) { diff --git a/src/enemy/slime.c b/src/enemy/slime.c index 95112c2c..fc7714e3 100644 --- a/src/enemy/slime.c +++ b/src/enemy/slime.c @@ -12,7 +12,6 @@ typedef struct { void sub_08044FF8(Entity*); void sub_08045178(Entity*, Entity*, int, int); -//extern u32 FixedDiv(u32, u32); extern void sub_0804A4E4(Entity*, Entity*); extern u32 sub_080002CC(Entity*, s32, s32); diff --git a/src/entity.c b/src/entity.c index 82f6a058..acc2795c 100644 --- a/src/entity.c +++ b/src/entity.c @@ -1,4 +1,5 @@ #include "global.h" +#include "area.h" #include "entity.h" #include "utils.h" #include "script.h" @@ -28,9 +29,9 @@ OtherEntity* GetEmptyManager(void); typedef void* (*Getter)(void); -void* GetEmptyEntityByType(int type) { +void* GetEmptyEntityByKind(u32 kind) { Getter getter = NULL; - if (type == 9) { + if (kind == MANAGER) { getter = (Getter)GetEmptyManager; } else { getter = (Getter)GetEmptyEntity; @@ -61,7 +62,7 @@ typedef void (*Deleter)(void*); void DeleteEntityAny(Entity* ent) { Deleter deleter = NULL; - if (ent->kind == 9) { + if (ent->kind == MANAGER) { deleter = (Deleter)DeleteManager; } else { deleter = (Deleter)DeleteEntity; @@ -78,7 +79,6 @@ extern void sub_0805EC60(); extern void sub_08017744(); extern void sub_0805E92C(); extern void UnloadHitbox(); -extern void sub_0801DA0C(); extern void sub_0804AA1C(); void UnlinkEntity(); @@ -94,9 +94,9 @@ void DeleteEntity(Entity* ent) { sub_0805E92C(ent); UnloadCutsceneData(ent); UnloadHitbox(ent); - sub_0801DA0C(ent->myHeap); + zFree(ent->myHeap); ent->myHeap = NULL; - if (ent->kind == 3) { + if (ent->kind == ENEMY) { sub_0804AA1C(ent); } ent->flags = ent->flags & 0x7f; @@ -171,8 +171,6 @@ void DeleteManager(OtherEntity* ent) { gManagerCount--; } -#include "area.h" - void sub_0805E92C(u32 param_1) { if (param_1 == gArea.unk2) { gArea.unk2 = 0; @@ -209,7 +207,7 @@ void sub_0805E9A8(void) { list = &gEntityLists[0]; do { for (i = list->first; (u32)i != (u32)list; i = i->next) { - i->flags &= 0xfd; + i->flags &= ~2; if ((i->flags & 0x20) == 0) { i->flags |= 0x10; } @@ -242,7 +240,7 @@ void AppendEntityToList(Entity* entity, u32 listIndex) { entity->prev = list->last; list->last->next = entity; list->last = entity; - if (entity->kind != 9) { + if (entity->kind != MANAGER) { entity->spritePriority.b0 = 4; gEntCount++; } else { @@ -251,7 +249,7 @@ void AppendEntityToList(Entity* entity, u32 listIndex) { sub_0805E374(entity); } -void PrependEntityToList(Entity* entity, int listIndex) { +void PrependEntityToList(Entity* entity, u32 listIndex) { LinkedList* list; UnlinkEntity(entity); @@ -270,7 +268,7 @@ void UnlinkEntity(Entity* ent) { ent->next->prev = ent->prev; } -bool32 DoesSimilarEntityExist(Entity* ent) { +bool32 EntityHasDuplicateID(Entity* ent) { Entity* i; LinkedList* list; @@ -286,31 +284,31 @@ bool32 DoesSimilarEntityExist(Entity* ent) { return FALSE; } -Entity* FindEntityInListBySubtype(u32 type, u32 subtype, u32 listIndex) { +Entity* FindEntityByID(u32 kind, u32 id, u32 listIndex) { Entity* it; LinkedList* list; list = &gEntityLists[listIndex]; for (it = list->first; (u32)it != (u32)list; it = it->next) { - if (type == it->kind && subtype == it->id) + if (kind == it->kind && id == it->id) return it; } return NULL; } -Entity* FindEntityInListByForm(u32 type, u32 subtype, u32 listIndex, u32 form, u32 parameter) { +Entity* FindEntity(u32 kind, u32 id, u32 listIndex, u32 type, u32 type2) { Entity* i; LinkedList* list; list = &gEntityLists[listIndex]; for (i = list->first; (u32)i != (u32)list; i = i->next) { - if (type == i->kind && subtype == i->id && form == i->type && parameter == i->type2) + if (kind == i->kind && id == i->id && type == i->type && type2 == i->type2) return i; } return NULL; } -Entity* FindNextEntityOfSameSubtype(Entity* ent, int listIndex) { +Entity* FindNextDuplicateID(Entity* ent, int listIndex) { Entity* i; LinkedList* list; @@ -322,14 +320,14 @@ Entity* FindNextEntityOfSameSubtype(Entity* ent, int listIndex) { return NULL; } -Entity* FindEntityBySubtype(int type, int subtype) { +Entity* DeepFindEntityByID(u32 kind, u32 id) { Entity* i; LinkedList* list; list = &gEntityLists[0]; do { for (i = (Entity*)list->first; (u32)i != (u32)list; i = i->next) { - if (type == i->kind && (subtype == i->id)) + if (kind == i->kind && (id == i->id)) return i; } } while (++list < &gEntityLists[9]); @@ -346,7 +344,7 @@ void DeleteAllEnemies(void) { do { for (ent = list->first; (u32)ent != (u32)list; ent = next) { next = ent->next; - if (ent->kind == 3) + if (ent->kind == ENEMY) DeleteEntity(ent); } } while (++list < &gEntityLists[9]); diff --git a/src/fileScreen.c b/src/fileScreen.c index 3f0bec26..068bb27b 100644 --- a/src/fileScreen.c +++ b/src/fileScreen.c @@ -189,7 +189,7 @@ void HandleChooseFileScreen(void) { static void HandleFileScreenEnter(void) { u32 i; - sub_0801DA90(1); + DispReset(1); sub_080A3210(); MemClear((void*)VRAM, 0x80); // clear palettes MessageInitialize(); diff --git a/src/intro.c b/src/intro.c index 899122dc..c8648715 100644 --- a/src/intro.c +++ b/src/intro.c @@ -74,7 +74,7 @@ void HandleIntroScreen(void) { if (gFadeControl.active) { return; } - sub_0801DA90(1); + DispReset(1); gMain.funcIndex = 1; break; } @@ -87,7 +87,7 @@ static void HandleNintendoCapcomLogos(void) { advance = GetAdvanceState(); if (gIntroState.state == 0) { - sub_0801DA90(1); + DispReset(1); gIntroState.state = 1; gIntroState.timer = 120; LoadGfxGroup(16); diff --git a/src/main.c b/src/main.c index 9e60f6f4..d7d8203d 100644 --- a/src/main.c +++ b/src/main.c @@ -107,7 +107,7 @@ static void sub_08055F70(void) { MemCopy(gUnk_080B2CD8_3, gUnk_02038560, size); } - sub_0801DA90(0); + DispReset(0); sub_08016B34(); } diff --git a/src/manager/manager15.c b/src/manager/manager15.c index 2707be06..e3d97ea7 100644 --- a/src/manager/manager15.c +++ b/src/manager/manager15.c @@ -86,7 +86,7 @@ void sub_0805A370(Manager15* this) { void sub_0805A394(Manager15* this) { Entity* ent; - if ((ent = FindEntityInListBySubtype(0x3, 0x13, 0x4))) { + if ((ent = FindEntityByID(0x3, 0x13, 0x4))) { if (ent->type != 4) { return; } diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 5b5aa0fa..3123b036 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -56,7 +56,7 @@ void sub_0806CF30(Entity* this) { void sub_0806D00C(Entity* this) { Entity* pEVar1; - pEVar1 = FindEntityInListByForm(7, 76, 7, 0, 0); + pEVar1 = FindEntity(7, 76, 7, 0, 0); if (pEVar1 != NULL) { this->parent = pEVar1; } diff --git a/src/npc/forestMinish.c b/src/npc/forestMinish.c index 27d0df3d..e42500e8 100644 --- a/src/npc/forestMinish.c +++ b/src/npc/forestMinish.c @@ -225,7 +225,7 @@ void sub_08060318(void) { int i; for (i = 2; i >= 0; i--) { - ent = FindEntityInListBySubtype(8, 2, 2); + ent = FindEntityByID(8, 2, 2); if (ent != NULL) { CreateDust(ent); DeleteEntity(ent); diff --git a/src/npc/goronMerchant.c b/src/npc/goronMerchant.c index b4a44355..5329bd15 100644 --- a/src/npc/goronMerchant.c +++ b/src/npc/goronMerchant.c @@ -84,7 +84,7 @@ void sub_08069660(Entity* this) { void sub_08069684(void) { Manager* mgr; - if (FindEntityInListBySubtype(9, 0x31, 8) == NULL) { + if (FindEntityByID(9, 0x31, 8) == NULL) { mgr = GetEmptyManager(); if (mgr != NULL) { mgr->type = 9; diff --git a/src/npc/malon.c b/src/npc/malon.c index 0799e8b3..64febefe 100644 --- a/src/npc/malon.c +++ b/src/npc/malon.c @@ -57,12 +57,12 @@ void sub_08065900(Entity* this) { void sub_08065914(Entity* this) { Entity* target; - target = FindEntityInListBySubtype(7, 0x1F, 7); + target = FindEntityByID(7, 0x1F, 7); if (target != NULL) { PositionRelative(this, target, 0x180000, -0x10000); target->parent = this; } - target = FindEntityInListBySubtype(7, 0x20, 7); + target = FindEntityByID(7, 0x20, 7); if (target != NULL) { PositionRelative(this, target, 0x280000, 0); target->parent = this; diff --git a/src/npc/zelda.c b/src/npc/zelda.c index 88fb53c3..916bb4cd 100644 --- a/src/npc/zelda.c +++ b/src/npc/zelda.c @@ -5,7 +5,7 @@ #include "flags.h" #include "script.h" -extern Entity* FindEntityBySubtype(u32, u32); +extern Entity* DeepFindEntityByID(u32, u32); void sub_08068680(Entity*, Entity*); void sub_08068694(Entity*, Entity*); extern Entity* GetEntityByType(u32, u32); @@ -31,7 +31,7 @@ void sub_08066CF8(Entity* this) { } void sub_08066D04(Entity* this) { - this->parent = FindEntityBySubtype(7, 0x2E); + this->parent = DeepFindEntityByID(7, 0x2E); } void sub_08066D14(Entity* this, ScriptExecutionContext* context) { @@ -86,7 +86,7 @@ void sub_08066D94(Entity* this) { void sub_08066DE4(Entity* this) { Entity* pEVar1; - pEVar1 = FindEntityBySubtype(7, 0x2E); + pEVar1 = DeepFindEntityByID(7, 0x2E); if (pEVar1 != NULL) { CopyPosition(this, pEVar1); sub_080686C4(this, pEVar1); diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 3a0157fc..3ec961eb 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -504,7 +504,7 @@ void sub_080873FC(void) { SoundReq(0xf7); gRoomControls.cameraTarget = NULL; - while (ent = FindEntityInListBySubtype(0x6, 0x1b, 0x6), ent != NULL) { + while (ent = FindEntityByID(0x6, 0x1b, 0x6), ent != NULL) { DeleteEntity(ent); } } @@ -533,7 +533,7 @@ void sub_08087424(Entity* this, ScriptExecutionContext* context) { void sub_0808747C(Entity* this, ScriptExecutionContext* context) { u32 iVar1 = 0; - iVar1 = (u32)FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0); + iVar1 = (u32)FindEntity(0x6, 0xf, 0x6, 0xb, 0x0); if (iVar1 != 0) { iVar1 = 1; } diff --git a/src/player.c b/src/player.c index 1e0d32ae..d34024b2 100644 --- a/src/player.c +++ b/src/player.c @@ -92,7 +92,7 @@ void PlayerInit(Entity* this) { sub_08079938(); gPlayerState.field_0xa8 = 7; sub_0807ACCC(this); - ent = FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0); + ent = FindEntity(0x6, 0xf, 0x6, 0xb, 0x0); if (ent != NULL) { DeleteEntity(ent); } diff --git a/src/room.c b/src/room.c index 9c94aa9f..e196f379 100644 --- a/src/room.c +++ b/src/room.c @@ -2235,7 +2235,7 @@ void sub_0804CD48(void) { gFadeControl.active = 0; gUsedPalettes = 0; *(u16*)0x5000000 = 0x7fff; - sub_0801DA90(1); + DispReset(1); } if (CheckGlobalFlag(LV1_CLEAR)) { LoadRoomEntityList(&gUnk_080DF94C); diff --git a/src/sub_0807B820.c b/src/sub_0807B820.c index f26e6974..fabdc8d9 100644 --- a/src/sub_0807B820.c +++ b/src/sub_0807B820.c @@ -41,7 +41,6 @@ void sub_0807B8A8(u32 param_1) { SetTileType(642, param_1 + 1, 1); } - void sub_0807B930(int param_1) { SetTileType(652, param_1 + -65, 1); SetTileType(659, param_1 + -65, 2);