From bb43265c50f7c7d9d283a8940e229d0823bcc62c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:37:58 +0300 Subject: [PATCH 01/18] Put const data in npc58 --- data/const/npc/npc58.s | 11 ----------- include/fileselect.h | 2 +- linker.ld | 2 +- src/npc/npc58.c | 6 ++++-- src/npc/phonograph.c | 6 ++++-- src/text.c | 2 +- 6 files changed, 11 insertions(+), 18 deletions(-) delete mode 100644 data/const/npc/npc58.s diff --git a/data/const/npc/npc58.s b/data/const/npc/npc58.s deleted file mode 100644 index b42b64e7..00000000 --- a/data/const/npc/npc58.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081146B8:: @ 081146B8 - .incbin "npc58/gUnk_081146B8.bin" - -gUnk_081146D0:: @ 081146D0 - .incbin "data_081146D0/gUnk_081146D0.bin" diff --git a/include/fileselect.h b/include/fileselect.h index 375dfeca..f6a2547d 100644 --- a/include/fileselect.h +++ b/include/fileselect.h @@ -52,7 +52,7 @@ extern struct_02019EE0 gMapDataBottomSpecial; // TODO size: 0x8000 from ClearTilemaps? extern void sub_08056FEC(u32, struct_020227E8*); -extern u32 sub_0805F46C(u32, Font*); +extern u32 sub_0805F46C(u32, const Font*); extern void ClearTilemaps(void); extern void sub_0805194C(u32); extern WStruct* sub_0805F2C8(void); diff --git a/linker.ld b/linker.ld index fdd4f88f..6397274f 100644 --- a/linker.ld +++ b/linker.ld @@ -1297,7 +1297,7 @@ SECTIONS { src/npc/cucco.o(.rodata); src/npc/cuccoChick.o(.rodata); src/npc/phonograph.o(.rodata); - data/const/npc/npc58.o(.rodata); + src/npc/npc58.o(.rodata); src/npcDefinitions.o(.rodata); data/data_081146D0.o(.rodata); src/physics.o(.rodata); diff --git a/src/npc/npc58.c b/src/npc/npc58.c index c9b9ab72..8e4202f1 100644 --- a/src/npc/npc58.c +++ b/src/npc/npc58.c @@ -3,7 +3,9 @@ extern void sub_0806FFBC(Entity*, u32, u32, u32); -extern SpriteLoadData gUnk_081146D0; +static const SpriteLoadData gUnk_081146D0[] = { + { 0, 0x61, 0x4 }, { 0x800, 0x61, 0x4 }, { 0x1000, 0x61, 0x4 }, { 0x1800, 0x61, 0x4 }, { 0, 0, 0 }, +}; void NPC58(Entity* this) { s32 sVar1; @@ -12,7 +14,7 @@ void NPC58(Entity* this) { Entity* entity; if (this->action == 0) { - if (LoadExtraSpriteData(this, &gUnk_081146D0) == 0) { + if (LoadExtraSpriteData(this, gUnk_081146D0) == 0) { return; } this->action += 1; diff --git a/src/npc/phonograph.c b/src/npc/phonograph.c index a5de78b2..560794d2 100644 --- a/src/npc/phonograph.c +++ b/src/npc/phonograph.c @@ -13,8 +13,6 @@ void sub_0806EABC(Entity* this); void sub_0806EABC(Entity* this, u32 param); #endif -extern Font gUnk_081146B8; - void Phonograph(Entity* this) { if (this->action == 0) { this->action += 1; @@ -187,6 +185,10 @@ void sub_0806E964(Entity* this, ScriptExecutionContext* context) { } #endif +const static Font gUnk_081146B8 = { + (u16*)0x2034fce, (void*)0x0600d000, (void*)0x2000d00, 0, 0xf080, 0xd0, 1, 1, 1, 1, 0, 0, 0, 1, 0 +}; + #ifdef EU void sub_0806EABC(Entity* this) { sub_08050384(); diff --git a/src/text.c b/src/text.c index a56d23ea..a942ed63 100644 --- a/src/text.c +++ b/src/text.c @@ -430,7 +430,7 @@ void sub_0805F440(Token* param_1, u8* param_2) { } } -u32 sub_0805F46C(u32 param_1, Font* param_2) { +u32 sub_0805F46C(u32 param_1, const Font* param_2) { u32 uVar1; WStruct* pWVar4; u32 uVar5; From 7ce1bdd245ed40f4aad6895b0c2b791eb59623e0 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:41:45 +0300 Subject: [PATCH 02/18] Put const data in itemSword --- data/const/item/itemSword.s | 16 ---------------- linker.ld | 2 +- src/item/itemSword.c | 17 ++++++++++++----- 3 files changed, 13 insertions(+), 22 deletions(-) delete mode 100644 data/const/item/itemSword.s diff --git a/data/const/item/itemSword.s b/data/const/item/itemSword.s deleted file mode 100644 index a0b199df..00000000 --- a/data/const/item/itemSword.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BD44:: @ 0811BD44 - .4byte sub_08075338 - .4byte sub_080754B8 - .4byte sub_080755F0 - .4byte sub_0807564C - .4byte sub_08075738 - .4byte sub_08075580 - .4byte sub_08075898 - .4byte sub_080758B0 - .4byte sub_08075900 diff --git a/linker.ld b/linker.ld index 6397274f..dfcce126 100644 --- a/linker.ld +++ b/linker.ld @@ -1307,7 +1307,7 @@ SECTIONS { src/playerItem/playerItemPacciCane.o(.rodata); src/player.o(.rodata); src/item.o(.rodata); - data/const/item/itemSword.o(.rodata); + src/item/itemSword.o(.rodata); data/const/item/itemLantern.o(.rodata); data/const/item/itemBoomerang.o(.rodata); data/const/item/itemBow.o(.rodata); diff --git a/src/item/itemSword.c b/src/item/itemSword.c index 5c3dca2d..e6171072 100644 --- a/src/item/itemSword.c +++ b/src/item/itemSword.c @@ -4,18 +4,25 @@ #include "object.h" #include "playeritem.h" -extern void (*const gUnk_0811BD44[])(ItemBehavior*, u32); - void sub_080759B8(ItemBehavior*, u32); void sub_080754B8(ItemBehavior*, u32); void sub_08075898(ItemBehavior*, u32); void sub_08075580(ItemBehavior*, u32); - -void sub_08075694(ItemBehavior* this, u32 idx); +void sub_08075338(ItemBehavior*, u32); +void sub_080755F0(ItemBehavior*, u32); +void sub_0807564C(ItemBehavior*, u32); +void sub_08075738(ItemBehavior*, u32); +void sub_080758B0(ItemBehavior*, u32); +void sub_08075900(ItemBehavior*, u32); +void sub_08075694(ItemBehavior*, u32); void ItemSword(ItemBehavior* this, u32 idx) { + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08075338, sub_080754B8, sub_080755F0, sub_0807564C, sub_08075738, + sub_08075580, sub_08075898, sub_080758B0, sub_08075900, + }; gPlayerState.framestate = PL_STATE_SWORD; - gUnk_0811BD44[this->stateID](this, idx); + stateFuncs[this->stateID](this, idx); } void sub_08075338(ItemBehavior* this, u32 idx) { From d2d458d70216dc8d546cada173b48df15390d33c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:46:16 +0300 Subject: [PATCH 03/18] Put const data in itemLantern --- data/const/item/itemLantern.s | 11 ----------- linker.ld | 2 +- src/item/itemLantern.c | 17 +++++++++++------ 3 files changed, 12 insertions(+), 18 deletions(-) delete mode 100644 data/const/item/itemLantern.s diff --git a/data/const/item/itemLantern.s b/data/const/item/itemLantern.s deleted file mode 100644 index 7979ca6a..00000000 --- a/data/const/item/itemLantern.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BD68:: @ 0811BD68 - .4byte sub_08075A0C - .4byte sub_08075ADC - .4byte sub_08075B54 - .4byte sub_08075C9C diff --git a/linker.ld b/linker.ld index dfcce126..e14aeb53 100644 --- a/linker.ld +++ b/linker.ld @@ -1308,7 +1308,7 @@ SECTIONS { src/player.o(.rodata); src/item.o(.rodata); src/item/itemSword.o(.rodata); - data/const/item/itemLantern.o(.rodata); + src/item/itemLantern.o(.rodata); data/const/item/itemBoomerang.o(.rodata); data/const/item/itemBow.o(.rodata); data/const/item/itemBomb.o(.rodata); diff --git a/src/item/itemLantern.c b/src/item/itemLantern.c index 102232e7..717b9250 100644 --- a/src/item/itemLantern.c +++ b/src/item/itemLantern.c @@ -4,17 +4,22 @@ #include "object.h" #include "game.h" -extern void (*const gUnk_0811BD68[])(ItemBehavior*, u32); - extern s8 gUnk_08126EEC[]; extern Entity* sub_08077BD4(ItemBehavior*); - -extern bool32 sub_08077F10(ItemBehavior*); - extern void sub_0807AB44(Entity*, s32, s32); +void sub_08075A0C(ItemBehavior*, u32); +void sub_08075ADC(ItemBehavior*, u32); +void sub_08075B54(ItemBehavior*, u32); +void sub_08075C9C(ItemBehavior*, u32); void ItemLantern(ItemBehavior* this, u32 idx) { - gUnk_0811BD68[this->stateID](this, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08075A0C, + sub_08075ADC, + sub_08075B54, + sub_08075C9C, + }; + stateFuncs[this->stateID](this, idx); } void sub_08075A0C(ItemBehavior* this, u32 idx) { From 0f05b0237d9f9639514ad1fe24306679aa791a5c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:47:42 +0300 Subject: [PATCH 04/18] Put const data in itemBoomerang --- data/const/item/itemBoomerang.s | 9 --------- linker.ld | 2 +- src/item/itemBoomerang.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/item/itemBoomerang.s diff --git a/data/const/item/itemBoomerang.s b/data/const/item/itemBoomerang.s deleted file mode 100644 index 18365c51..00000000 --- a/data/const/item/itemBoomerang.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BD78:: @ 0811BD78 - .4byte sub_08075D2C - .4byte sub_08075D88 diff --git a/linker.ld b/linker.ld index e14aeb53..29becf13 100644 --- a/linker.ld +++ b/linker.ld @@ -1309,7 +1309,7 @@ SECTIONS { src/item.o(.rodata); src/item/itemSword.o(.rodata); src/item/itemLantern.o(.rodata); - data/const/item/itemBoomerang.o(.rodata); + src/item/itemBoomerang.o(.rodata); data/const/item/itemBow.o(.rodata); data/const/item/itemBomb.o(.rodata); data/const/item/itemTryPickupObject.o(.rodata); diff --git a/src/item/itemBoomerang.c b/src/item/itemBoomerang.c index 22ac3849..55a8e22a 100644 --- a/src/item/itemBoomerang.c +++ b/src/item/itemBoomerang.c @@ -1,10 +1,15 @@ #include "item.h" #include "functions.h" -extern void (*const gUnk_0811BD78[])(ItemBehavior*, u32); +void sub_08075D2C(ItemBehavior*, u32); +void sub_08075D88(ItemBehavior*, u32); void ItemBoomerang(ItemBehavior* this, u32 idx) { - gUnk_0811BD78[this->stateID](this, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08075D2C, + sub_08075D88, + }; + stateFuncs[this->stateID](this, idx); } void sub_08075D2C(ItemBehavior* this, u32 idx) { From 3c6101e313ca8bcdff03176da3958e9eec98446f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:49:53 +0300 Subject: [PATCH 05/18] Put const data in itemBow --- data/const/item/itemBow.s | 14 -------------- linker.ld | 2 +- src/item/itemBow.c | 12 ++++++++++-- 3 files changed, 11 insertions(+), 17 deletions(-) delete mode 100644 data/const/item/itemBow.s diff --git a/data/const/item/itemBow.s b/data/const/item/itemBow.s deleted file mode 100644 index aebc0aaf..00000000 --- a/data/const/item/itemBow.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - - -gUnk_0811BD80:: @ 0811BD80 - .4byte sub_08075DF4 - .4byte sub_08075E40 - .4byte sub_08075EC0 - .4byte sub_08075F38 - .4byte sub_08075F84 - .4byte sub_08075D88 diff --git a/linker.ld b/linker.ld index 29becf13..19d4e077 100644 --- a/linker.ld +++ b/linker.ld @@ -1310,7 +1310,7 @@ SECTIONS { src/item/itemSword.o(.rodata); src/item/itemLantern.o(.rodata); src/item/itemBoomerang.o(.rodata); - data/const/item/itemBow.o(.rodata); + src/item/itemBow.o(.rodata); data/const/item/itemBomb.o(.rodata); data/const/item/itemTryPickupObject.o(.rodata); src/item/itemPegasusBoots.o(.rodata); diff --git a/src/item/itemBow.c b/src/item/itemBow.c index 586a0505..d94e4c57 100644 --- a/src/item/itemBow.c +++ b/src/item/itemBow.c @@ -2,10 +2,18 @@ #include "functions.h" #include "save.h" -extern void (*const gUnk_0811BD80[])(ItemBehavior*, u32); +void sub_08075DF4(ItemBehavior*, u32); +void sub_08075E40(ItemBehavior*, u32); +void sub_08075EC0(ItemBehavior*, u32); +void sub_08075F38(ItemBehavior*, u32); +void sub_08075F84(ItemBehavior*, u32); +void sub_08075D88(ItemBehavior*, u32); void ItemBow(ItemBehavior* this, u32 idx) { - gUnk_0811BD80[this->stateID](this, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08075DF4, sub_08075E40, sub_08075EC0, sub_08075F38, sub_08075F84, sub_08075D88, + }; + stateFuncs[this->stateID](this, idx); } void sub_08075DF4(ItemBehavior* this, u32 idx) { From 456cf5f5b97d859e0cea39edc09131db8703304e Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:53:27 +0300 Subject: [PATCH 06/18] Put cosnt data in itemBomb --- assets/assets.json | 5 ----- data/const/item/itemBomb.s | 15 --------------- linker.ld | 2 +- src/item/itemBomb.c | 17 ++++++++++++----- 4 files changed, 13 insertions(+), 26 deletions(-) delete mode 100644 data/const/item/itemBomb.s diff --git a/assets/assets.json b/assets/assets.json index c5b10da5..f37de2d5 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -40793,11 +40793,6 @@ "size": 76, "type": "sprite_frame" }, - { - "path": "itemBomb/gUnk_0811BDAC.bin", - "start": 1162668, - "size": 8 - }, { "path": "itemMoleMitts/gUnk_0811BE14.bin", "start": 1162772, diff --git a/data/const/item/itemBomb.s b/data/const/item/itemBomb.s deleted file mode 100644 index b0aaa822..00000000 --- a/data/const/item/itemBomb.s +++ /dev/null @@ -1,15 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BD98:: @ 0811BD98 - .4byte sub_08075FF8 - .4byte 00000000 - .4byte sub_08076488 - .4byte sub_08076518 - .4byte sub_080765E0 - -gUnk_0811BDAC:: @ 0811BDAC - .incbin "itemBomb/gUnk_0811BDAC.bin" diff --git a/linker.ld b/linker.ld index 19d4e077..39c18d79 100644 --- a/linker.ld +++ b/linker.ld @@ -1311,7 +1311,7 @@ SECTIONS { src/item/itemLantern.o(.rodata); src/item/itemBoomerang.o(.rodata); src/item/itemBow.o(.rodata); - data/const/item/itemBomb.o(.rodata); + src/item/itemBomb.o(.rodata); data/const/item/itemTryPickupObject.o(.rodata); src/item/itemPegasusBoots.o(.rodata); data/const/item/itemOcarina.o(.rodata); diff --git a/src/item/itemBomb.c b/src/item/itemBomb.c index e284a9e0..fb7ba4fc 100644 --- a/src/item/itemBomb.c +++ b/src/item/itemBomb.c @@ -5,19 +5,26 @@ #include "playeritem.h" #include "functions.h" -extern void (*const gUnk_0811BD98[])(ItemBehavior*, u32); - -extern s8 gUnk_0811BDAC[]; +void sub_08075FF8(ItemBehavior*, u32); +void sub_08076488(ItemBehavior*, u32); +void sub_08076518(ItemBehavior*, u32); +void sub_080765E0(ItemBehavior*, u32); void ItemBomb(ItemBehavior* this, u32 idx) { - gUnk_0811BD98[this->stateID](this, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08075FF8, NULL, sub_08076488, sub_08076518, sub_080765E0, + }; + stateFuncs[this->stateID](this, idx); } void sub_08075FF8(ItemBehavior* this, u32 idx) { + static const s8 gUnk_0811BDAC[] = { + 0, -8, 4, -1, 0, 2, -4, -1, + }; Entity* entity; u32 maxBombs; u32 bombCount; - s8* pos; + const s8* pos; s32 x; s32 y; From 2cad5133279874e39d21daf00a46dcad9207f9f4 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:56:55 +0300 Subject: [PATCH 07/18] Put const data in itemTryPickupObject --- data/const/item/itemTryPickupObject.s | 14 -------------- linker.ld | 2 +- src/item/itemTryPickupObject.c | 14 ++++++++++---- 3 files changed, 11 insertions(+), 19 deletions(-) delete mode 100644 data/const/item/itemTryPickupObject.s diff --git a/data/const/item/itemTryPickupObject.s b/data/const/item/itemTryPickupObject.s deleted file mode 100644 index ba058a82..00000000 --- a/data/const/item/itemTryPickupObject.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - - -gUnk_0811BDB4:: @ 0811BDB4 - .4byte ItemPickupCheck - .4byte sub_080762D8 - .4byte sub_08076488 - .4byte sub_08076518 - .4byte sub_080765E0 - .4byte sub_0807660C diff --git a/linker.ld b/linker.ld index 39c18d79..293fce16 100644 --- a/linker.ld +++ b/linker.ld @@ -1312,7 +1312,7 @@ SECTIONS { src/item/itemBoomerang.o(.rodata); src/item/itemBow.o(.rodata); src/item/itemBomb.o(.rodata); - data/const/item/itemTryPickupObject.o(.rodata); + src/item/itemTryPickupObject.o(.rodata); src/item/itemPegasusBoots.o(.rodata); data/const/item/itemOcarina.o(.rodata); data/const/item/itemPacciCane.o(.rodata); diff --git a/src/item/itemTryPickupObject.c b/src/item/itemTryPickupObject.c index 440f8075..976366ca 100644 --- a/src/item/itemTryPickupObject.c +++ b/src/item/itemTryPickupObject.c @@ -2,16 +2,22 @@ #include "functions.h" #include "sound.h" -extern void (*const gUnk_0811BDB4[])(ItemBehavior*, u32); - u32 sub_08077F64(ItemBehavior* arg0, u32 idx); - u32 sub_080789A8(void); void sub_080762C4(ItemBehavior*, Entity*, u8, u32); void sub_08076088(ItemBehavior*, void*, u32); +void ItemPickupCheck(ItemBehavior*, u32); +void sub_080762D8(ItemBehavior*, u32); +void sub_08076488(ItemBehavior*, u32); +void sub_08076518(ItemBehavior*, u32); +void sub_080765E0(ItemBehavior*, u32); +void sub_0807660C(ItemBehavior*, u32); void ItemTryPickupObject(ItemBehavior* this, u32 idx) { - gUnk_0811BDB4[this->stateID](this, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + ItemPickupCheck, sub_080762D8, sub_08076488, sub_08076518, sub_080765E0, sub_0807660C, + }; + stateFuncs[this->stateID](this, idx); } void ItemPickupCheck(ItemBehavior* this, u32 idx) { From 8c3854d7efdf0071ce741bd2aafbcc1059696879 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:58:27 +0300 Subject: [PATCH 08/18] Put const data in itemOcarina --- data/const/item/itemOcarina.s | 9 --------- linker.ld | 2 +- src/item/itemOcarina.c | 9 ++++++--- 3 files changed, 7 insertions(+), 13 deletions(-) delete mode 100644 data/const/item/itemOcarina.s diff --git a/data/const/item/itemOcarina.s b/data/const/item/itemOcarina.s deleted file mode 100644 index b438eb83..00000000 --- a/data/const/item/itemOcarina.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gOcarinaStates:: @ 0811BDD8 - .4byte OcarinaUse - .4byte OcarinaUpdate diff --git a/linker.ld b/linker.ld index 293fce16..01b51b01 100644 --- a/linker.ld +++ b/linker.ld @@ -1314,7 +1314,7 @@ SECTIONS { src/item/itemBomb.o(.rodata); src/item/itemTryPickupObject.o(.rodata); src/item/itemPegasusBoots.o(.rodata); - data/const/item/itemOcarina.o(.rodata); + src/item/itemOcarina.o(.rodata); data/const/item/itemPacciCane.o(.rodata); data/const/item/itemShield.o(.rodata); src/item/itemGustJar.o(.rodata); diff --git a/src/item/itemOcarina.c b/src/item/itemOcarina.c index ce7d0c4f..caa7b1f7 100644 --- a/src/item/itemOcarina.c +++ b/src/item/itemOcarina.c @@ -2,13 +2,16 @@ #include "sound.h" #include "functions.h" -extern void (*const gOcarinaStates[4])(ItemBehavior*, u32); - extern void ResetPlayerVelocity(void); - extern void CreateBird(void); +void OcarinaUse(ItemBehavior*, u32); +void OcarinaUpdate(ItemBehavior*, u32); void ItemOcarina(ItemBehavior* this, u32 idx) { + static void (*const gOcarinaStates[])(ItemBehavior*, u32) = { + OcarinaUse, + OcarinaUpdate, + }; gOcarinaStates[this->stateID](this, idx); gPlayerEntity.field_0x7a.HWORD += 1; } From 13d44cf944497721a95714eb6b78593ada7aa0c3 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 20:59:56 +0300 Subject: [PATCH 09/18] Put const data in itemPacciCane --- data/const/item/itemPacciCane.s | 9 --------- linker.ld | 2 +- src/item/itemPacciCane.c | 9 +++++++-- 3 files changed, 8 insertions(+), 12 deletions(-) delete mode 100644 data/const/item/itemPacciCane.s diff --git a/data/const/item/itemPacciCane.s b/data/const/item/itemPacciCane.s deleted file mode 100644 index fc6c4969..00000000 --- a/data/const/item/itemPacciCane.s +++ /dev/null @@ -1,9 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BDE0:: @ 0811BDE0 - .4byte sub_08076C98 - .4byte sub_08076CBC diff --git a/linker.ld b/linker.ld index 01b51b01..59c7d243 100644 --- a/linker.ld +++ b/linker.ld @@ -1315,7 +1315,7 @@ SECTIONS { src/item/itemTryPickupObject.o(.rodata); src/item/itemPegasusBoots.o(.rodata); src/item/itemOcarina.o(.rodata); - data/const/item/itemPacciCane.o(.rodata); + src/item/itemPacciCane.o(.rodata); data/const/item/itemShield.o(.rodata); src/item/itemGustJar.o(.rodata); data/const/item/itemMoleMitts.o(.rodata); diff --git a/src/item/itemPacciCane.c b/src/item/itemPacciCane.c index dbf9681d..a09a7640 100644 --- a/src/item/itemPacciCane.c +++ b/src/item/itemPacciCane.c @@ -3,10 +3,15 @@ #include "item.h" #include "functions.h" -extern void (*const gUnk_0811BDE0[])(ItemBehavior* beh, u32); +void sub_08076C98(ItemBehavior*, u32); +void sub_08076CBC(ItemBehavior*, u32); void ItemPacciCane(ItemBehavior* beh, u32 idx) { - gUnk_0811BDE0[beh->stateID](beh, idx); + static void (*const stateFuncs[])(ItemBehavior * beh, u32) = { + sub_08076C98, + sub_08076CBC, + }; + stateFuncs[beh->stateID](beh, idx); } void sub_08076C98(ItemBehavior* beh, u32 idx) { From 0b8197185814ac96cd26f06fc797ec724a800447 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 21:03:00 +0300 Subject: [PATCH 10/18] Put const data in itemShield --- data/const/item/itemShield.s | 10 ---------- linker.ld | 2 +- src/item/itemShield.c | 11 +++++++++-- 3 files changed, 10 insertions(+), 13 deletions(-) delete mode 100644 data/const/item/itemShield.s diff --git a/data/const/item/itemShield.s b/data/const/item/itemShield.s deleted file mode 100644 index da9f6a6a..00000000 --- a/data/const/item/itemShield.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BDE8:: @ 0811BDE8 - .4byte sub_08076D04 - .4byte sub_08076D34 - .4byte sub_08076D94 diff --git a/linker.ld b/linker.ld index 59c7d243..e0fb2b92 100644 --- a/linker.ld +++ b/linker.ld @@ -1316,7 +1316,7 @@ SECTIONS { src/item/itemPegasusBoots.o(.rodata); src/item/itemOcarina.o(.rodata); src/item/itemPacciCane.o(.rodata); - data/const/item/itemShield.o(.rodata); + src/item/itemShield.o(.rodata); src/item/itemGustJar.o(.rodata); data/const/item/itemMoleMitts.o(.rodata); data/const/item/itemJarEmpty.o(.rodata); diff --git a/src/item/itemShield.c b/src/item/itemShield.c index fe5eacea..f9a2abb0 100644 --- a/src/item/itemShield.c +++ b/src/item/itemShield.c @@ -4,10 +4,17 @@ #include "sound.h" #include "functions.h" -extern void (*const gUnk_0811BDE8[])(ItemBehavior* beh, u32); +void sub_08076D04(ItemBehavior*, u32); +void sub_08076D34(ItemBehavior*, u32); +void sub_08076D94(ItemBehavior*, u32); void ItemShield(ItemBehavior* beh, u32 idx) { - gUnk_0811BDE8[beh->stateID](beh, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08076D04, + sub_08076D34, + sub_08076D94, + }; + stateFuncs[beh->stateID](beh, idx); } void sub_08076D04(ItemBehavior* beh, u32 idx) { From 9d043a4ad772570b93590a124b5d62108c92c33b Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 21:33:51 +0300 Subject: [PATCH 11/18] Match sub_080774A0 and put const data in itemMoleMitts --- .../itemMoleMitts/sub_080774A0.inc | 63 ------------------- assets/assets.json | 15 ----- data/const/item/itemMoleMitts.s | 20 ------ linker.ld | 2 +- src/item/itemMoleMitts.c | 51 ++++++++++++--- 5 files changed, 42 insertions(+), 109 deletions(-) delete mode 100644 asm/non_matching/itemMoleMitts/sub_080774A0.inc delete mode 100644 data/const/item/itemMoleMitts.s diff --git a/asm/non_matching/itemMoleMitts/sub_080774A0.inc b/asm/non_matching/itemMoleMitts/sub_080774A0.inc deleted file mode 100644 index 0aa7639c..00000000 --- a/asm/non_matching/itemMoleMitts/sub_080774A0.inc +++ /dev/null @@ -1,63 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - ldr r3, _080774FC @ =gPlayerEntity - movs r0, #0x2e - ldrsh r2, [r3, r0] - ldr r5, _08077500 @ =gUnk_0811BE1E - ldrb r0, [r3, #0x14] - movs r1, #6 - ands r1, r0 - adds r0, r1, r5 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r2, r2, r0 - ldr r4, _08077504 @ =gRoomControls - ldrh r0, [r4, #6] - subs r2, r2, r0 - asrs r6, r2, #4 - movs r2, #0x3f - ands r6, r2 - movs r7, #0x32 - ldrsh r0, [r3, r7] - adds r1, #1 - adds r1, r1, r5 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r0, r0, r1 - ldrh r1, [r4, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r6, r0 - adds r4, r3, #0 - adds r4, #0x38 - ldrb r1, [r4] - adds r0, r6, #0 - bl sub_080B1B44 - cmp r0, #0x16 - bhi _080774F6 - cmp r0, #0xe - bhi _08077508 -_080774F6: - movs r0, #0 - b _0807751A - .align 2, 0 -_080774FC: .4byte gPlayerEntity -_08077500: .4byte gUnk_0811BE1E -_08077504: .4byte gRoomControls -_08077508: - adds r0, r6, #0 - ldrb r1, [r4] - bl sub_080B1AE0 - cmp r0, #0x56 - bne _08077518 - movs r0, #0x56 - b _0807751A -_08077518: - movs r0, #1 -_0807751A: - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/assets/assets.json b/assets/assets.json index f37de2d5..53167357 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -40793,21 +40793,6 @@ "size": 76, "type": "sprite_frame" }, - { - "path": "itemMoleMitts/gUnk_0811BE14.bin", - "start": 1162772, - "size": 2 - }, - { - "path": "itemMoleMitts/gUnk_0811BE16.bin", - "start": 1162774, - "size": 8 - }, - { - "path": "itemMoleMitts/gUnk_0811BE1E.bin", - "start": 1162782, - "size": 10 - }, { "path": "data_0811BE38/gUnk_0811BE38.bin", "start": 1162808, diff --git a/data/const/item/itemMoleMitts.s b/data/const/item/itemMoleMitts.s deleted file mode 100644 index 674d4da9..00000000 --- a/data/const/item/itemMoleMitts.s +++ /dev/null @@ -1,20 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BE04:: @ 0811BE04 - .4byte sub_08077130 - .4byte sub_080771C8 - .4byte sub_080772A8 - .4byte sub_08077448 - -gUnk_0811BE14:: @ 0811BE14 - .incbin "itemMoleMitts/gUnk_0811BE14.bin" - -gUnk_0811BE16:: @ 0811BE16 - .incbin "itemMoleMitts/gUnk_0811BE16.bin" - -gUnk_0811BE1E:: @ 0811BE1E - .incbin "itemMoleMitts/gUnk_0811BE1E.bin" diff --git a/linker.ld b/linker.ld index e0fb2b92..a97a48f1 100644 --- a/linker.ld +++ b/linker.ld @@ -1318,7 +1318,7 @@ SECTIONS { src/item/itemPacciCane.o(.rodata); src/item/itemShield.o(.rodata); src/item/itemGustJar.o(.rodata); - data/const/item/itemMoleMitts.o(.rodata); + src/item/itemMoleMitts.o(.rodata); data/const/item/itemJarEmpty.o(.rodata); data/data_0811BE38.o(.rodata); data/map/room_headers.o(.rodata); diff --git a/src/item/itemMoleMitts.c b/src/item/itemMoleMitts.c index 786276e5..a2e04e6f 100644 --- a/src/item/itemMoleMitts.c +++ b/src/item/itemMoleMitts.c @@ -5,21 +5,23 @@ #include "effects.h" #include "object.h" -extern void (*const gUnk_0811BE04[])(ItemBehavior*, u32); - s32 sub_080774A0(void); - -extern u8 gUnk_0811BE14[]; extern s32 sub_0800875A(Entity*, u32, ItemBehavior*); - extern void UpdatePlayerMovement(void); - extern bool32 sub_0807B5B0(Entity*); - -extern const s16 gUnk_0811BE16[]; +void sub_08077130(ItemBehavior*, u32); +void sub_080771C8(ItemBehavior*, u32); +void sub_080772A8(ItemBehavior*, u32); +void sub_08077448(ItemBehavior*, u32); void ItemMoleMitts(ItemBehavior* this, u32 idx) { - gUnk_0811BE04[this->stateID](this, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08077130, + sub_080771C8, + sub_080772A8, + sub_08077448, + }; + stateFuncs[this->stateID](this, idx); } void sub_08077130(ItemBehavior* this, u32 idx) { @@ -53,6 +55,10 @@ void sub_08077130(ItemBehavior* this, u32 idx) { } void sub_080771C8(ItemBehavior* this, u32 idx) { + static const u8 gUnk_0811BE14[] = { + 0x1, + 0x12, + }; Entity* object; UpdateItemAnim(this); @@ -90,6 +96,12 @@ void sub_080771C8(ItemBehavior* this, u32 idx) { } void sub_080772A8(ItemBehavior* this, u32 idx) { + static const s16 gUnk_0811BE16[] = { + 0, + 0xc0, + 0x100, + 0x180, + }; Entity* effect; if (((this->field_0x5[9] & 8) != 0) && sub_08077F10(this)) { @@ -161,4 +173,23 @@ void sub_08077448(ItemBehavior* this, u32 idx) { } } -ASM_FUNC("asm/non_matching/itemMoleMitts/sub_080774A0.inc", s32 sub_080774A0(void)) +s32 sub_080774A0(void) { + static const s8 gUnk_0811BE1E[] = { 0, -13, 13, 0, 0, 16, -13, 0, 0, 0 }; + u32 iVar2; + u32 uVar3; + + uVar3 = COORD_TO_TILE_OFFSET((&gPlayerEntity), -gUnk_0811BE1E[gPlayerEntity.animationState & 6], + -gUnk_0811BE1E[(gPlayerEntity.animationState & 6) + 1]); + + iVar2 = sub_080B1B44(uVar3, gPlayerEntity.collisionLayer); + + if (iVar2 > 0x16) + return 0; + if (iVar2 < 0xf) + return 0; + if (sub_080B1AE0(uVar3, gPlayerEntity.collisionLayer) != 0x56) { + return 1; + } else { + return 0x56; + } +} From 7a3ca3499c02363411753412b4958bb77ba2080c Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 21:36:50 +0300 Subject: [PATCH 12/18] Put const data in itemJarEmpty --- data/const/item/itemJarEmpty.s | 11 ----------- linker.ld | 3 +-- src/item/itemJarEmpty.c | 15 +++++++++++---- 3 files changed, 12 insertions(+), 17 deletions(-) delete mode 100644 data/const/item/itemJarEmpty.s diff --git a/data/const/item/itemJarEmpty.s b/data/const/item/itemJarEmpty.s deleted file mode 100644 index 12c8de68..00000000 --- a/data/const/item/itemJarEmpty.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811BE28:: @ 0811BE28 - .4byte sub_08077534 - .4byte sub_08077618 - .4byte sub_08077640 - .4byte sub_0807766C diff --git a/linker.ld b/linker.ld index a97a48f1..1d7e8956 100644 --- a/linker.ld +++ b/linker.ld @@ -30,7 +30,6 @@ SECTIONS { . = 0x00001A40; gBG3Buffer = .; . = 0x00002A40; gSave = .; . = 0x00002AC0; gUnk_02002AC0 = .; - . = 0x00002AC8; gUnk_02002AC8 = .; . = 0x00002B0E; gUnk_02002B0E = .; . = 0x00002B32; gUnk_02002B32 = .; . = 0x00002B54; gUnk_02002B54 = .; @@ -1319,7 +1318,7 @@ SECTIONS { src/item/itemShield.o(.rodata); src/item/itemGustJar.o(.rodata); src/item/itemMoleMitts.o(.rodata); - data/const/item/itemJarEmpty.o(.rodata); + src/item/itemJarEmpty.o(.rodata); data/data_0811BE38.o(.rodata); data/map/room_headers.o(.rodata); src/flags.o(.rodata); diff --git a/src/item/itemJarEmpty.c b/src/item/itemJarEmpty.c index b8519e25..9912a294 100644 --- a/src/item/itemJarEmpty.c +++ b/src/item/itemJarEmpty.c @@ -2,12 +2,19 @@ #include "save.h" #include "functions.h" -extern void (*const gUnk_0811BE28[])(ItemBehavior*, u32); - -extern u8 gUnk_02002AC8[]; +void sub_08077534(ItemBehavior*, u32); +void sub_08077618(ItemBehavior*, u32); +void sub_08077640(ItemBehavior*, u32); +void sub_0807766C(ItemBehavior*, u32); void ItemJarEmpty(ItemBehavior* this, u32 idx) { - gUnk_0811BE28[this->stateID](this, idx); + static void (*const stateFuncs[])(ItemBehavior*, u32) = { + sub_08077534, + sub_08077618, + sub_08077640, + sub_0807766C, + }; + stateFuncs[this->stateID](this, idx); } void sub_08077534(ItemBehavior* this, u32 idx) { From 33b0d7de97dc5c0c4df30c26229d6b04b01e4a6f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 23:02:11 +0300 Subject: [PATCH 13/18] Match several scroll functions --- asm/non_matching/scroll/sub_080806BC.inc | 61 ------------- asm/non_matching/scroll/sub_08080734.inc | 51 ----------- asm/non_matching/scroll/sub_08080794.inc | 66 -------------- asm/non_matching/scroll/sub_08080808.inc | 31 ------- assets/assets.json | 5 -- data/data_0811E750.s | 19 ---- linker.ld | 2 +- src/scroll.c | 107 ++++++++++++++++++++++- 8 files changed, 104 insertions(+), 238 deletions(-) delete mode 100644 asm/non_matching/scroll/sub_080806BC.inc delete mode 100644 asm/non_matching/scroll/sub_08080734.inc delete mode 100644 asm/non_matching/scroll/sub_08080794.inc delete mode 100644 asm/non_matching/scroll/sub_08080808.inc delete mode 100644 data/data_0811E750.s diff --git a/asm/non_matching/scroll/sub_080806BC.inc b/asm/non_matching/scroll/sub_080806BC.inc deleted file mode 100644 index 40bc8ac1..00000000 --- a/asm/non_matching/scroll/sub_080806BC.inc +++ /dev/null @@ -1,61 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - mov sb, r0 - mov r8, r1 - adds r7, r2, #0 - adds r6, r3, #0 - ldr r0, _08080710 @ =gArea - ldr r1, _08080714 @ =0x0000085C - adds r0, r0, r1 - ldr r0, [r0] - ldr r5, [r0, #0x18] - ldrh r0, [r5] - ldr r1, _08080718 @ =0x0000FFFF - cmp r0, r1 - beq _08080728 - mov sl, r1 -_080806E2: - ldrh r2, [r5] - movs r0, #1 - lsls r0, r2 - ands r0, r6 - cmp r0, #0 - beq _08080720 - ldr r1, _0808071C @ =gUnk_0811E7AC - lsls r0, r2, #2 - adds r0, r0, r1 - ldr r4, [r0] - adds r0, r5, #0 - mov r1, sb - mov r2, r8 - adds r3, r7, #0 - bl _call_via_r4 - cmp r0, #0 - beq _08080720 - adds r0, r5, #0 - bl DoExitTransition - movs r0, #1 - b _0808072A - .align 2, 0 -_08080710: .4byte gArea -_08080714: .4byte 0x0000085C -_08080718: .4byte 0x0000FFFF -_0808071C: .4byte gUnk_0811E7AC -_08080720: - adds r5, #0x14 - ldrh r0, [r5] - cmp r0, sl - bne _080806E2 -_08080728: - movs r0, #0 -_0808072A: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/asm/non_matching/scroll/sub_08080734.inc b/asm/non_matching/scroll/sub_08080734.inc deleted file mode 100644 index b4e14ef6..00000000 --- a/asm/non_matching/scroll/sub_08080734.inc +++ /dev/null @@ -1,51 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - adds r5, r1, #0 - ldr r0, _08080778 @ =gArea - ldr r1, _0808077C @ =0x0000085C - adds r0, r0, r1 - ldr r0, [r0] - ldr r4, [r0, #0x18] - movs r0, #0xa - mov r8, r0 - ldrh r0, [r4] - ldr r1, _08080780 @ =0x0000FFFF - cmp r0, r1 - beq _0808078C - adds r7, r1, #0 -_08080756: - movs r0, #1 - ldrh r1, [r4] - lsls r0, r1 - mov r1, r8 - ands r0, r1 - cmp r0, #0 - beq _08080784 - adds r0, r4, #0 - adds r1, r6, #0 - adds r2, r5, #0 - movs r3, #0 - bl sub_08080808 - cmp r0, #0 - beq _08080784 - adds r0, r4, #0 - b _0808078E - .align 2, 0 -_08080778: .4byte gArea -_0808077C: .4byte 0x0000085C -_08080780: .4byte 0x0000FFFF -_08080784: - adds r4, #0x14 - ldrh r0, [r4] - cmp r0, r7 - bne _08080756 -_0808078C: - movs r0, #0 -_0808078E: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .syntax divided diff --git a/asm/non_matching/scroll/sub_08080794.inc b/asm/non_matching/scroll/sub_08080794.inc deleted file mode 100644 index f4d24eea..00000000 --- a/asm/non_matching/scroll/sub_08080794.inc +++ /dev/null @@ -1,66 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - cmp r3, #1 - beq _080807C0 - cmp r3, #1 - blo _080807AC - cmp r3, #2 - beq _080807D4 - cmp r3, #3 - beq _080807E8 -_080807A8: - movs r0, #0 - b _08080800 -_080807AC: - ldr r0, _080807BC @ =gRoomControls - ldrh r0, [r0, #0x1e] - lsrs r0, r0, #1 - movs r3, #1 - cmp r0, r1 - bhs _080807F6 - movs r3, #2 - b _080807F6 - .align 2, 0 -_080807BC: .4byte gRoomControls -_080807C0: - ldr r0, _080807D0 @ =gRoomControls - ldrh r0, [r0, #0x20] - lsrs r0, r0, #1 - movs r3, #4 - cmp r0, r2 - bhs _080807F6 - movs r3, #8 - b _080807F6 - .align 2, 0 -_080807D0: .4byte gRoomControls -_080807D4: - ldr r0, _080807E4 @ =gRoomControls - ldrh r0, [r0, #0x1e] - lsrs r0, r0, #1 - movs r3, #0x10 - cmp r0, r1 - bhs _080807F6 - movs r3, #0x20 - b _080807F6 - .align 2, 0 -_080807E4: .4byte gRoomControls -_080807E8: - ldr r0, _08080804 @ =gRoomControls - ldrh r0, [r0, #0x20] - lsrs r0, r0, #1 - movs r3, #0x40 - cmp r0, r2 - bhs _080807F6 - movs r3, #0x80 -_080807F6: - ldrb r0, [r4, #0xa] - ands r0, r3 - cmp r0, #0 - beq _080807A8 - movs r0, #1 -_08080800: - pop {r4, pc} - .align 2, 0 -_08080804: .4byte gRoomControls - .syntax divided diff --git a/asm/non_matching/scroll/sub_08080808.inc b/asm/non_matching/scroll/sub_08080808.inc deleted file mode 100644 index f06061d2..00000000 --- a/asm/non_matching/scroll/sub_08080808.inc +++ /dev/null @@ -1,31 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r3, r0, #0 - adds r5, r2, #0 - ldrb r0, [r3, #0xa] - lsls r0, r0, #1 - ldr r2, _08080838 @ =gUnk_0811E7BC - adds r4, r0, r2 - ldrb r0, [r4] - ldrh r2, [r3, #2] - subs r1, r1, r2 - adds r1, r1, r0 - lsls r0, r0, #1 - cmp r1, r0 - bhi _0808083C - ldrb r1, [r4, #1] - ldrh r0, [r3, #4] - subs r0, r5, r0 - adds r0, r0, r1 - lsls r1, r1, #1 - cmp r0, r1 - bhi _0808083C - movs r0, #1 - b _0808083E - .align 2, 0 -_08080838: .4byte gUnk_0811E7BC -_0808083C: - movs r0, #0 -_0808083E: - pop {r4, r5, pc} - .syntax divided diff --git a/assets/assets.json b/assets/assets.json index 53167357..9a48a30b 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -41005,11 +41005,6 @@ "DEMO_JP": -2192 } }, - { - "path": "data_0811E750/gUnk_0811E7BC.bin", - "start": 1173436, - "size": 8 - }, { "path": "itemOnGround/gUnk_0811E84C.bin", "start": 1173580, diff --git a/data/data_0811E750.s b/data/data_0811E750.s deleted file mode 100644 index fe86f629..00000000 --- a/data/data_0811E750.s +++ /dev/null @@ -1,19 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - - - - - - -gUnk_0811E7AC:: @ 0811E7AC - .4byte sub_08080794 - .4byte sub_08080808 - .4byte sub_08080794 - .4byte sub_08080808 - -gUnk_0811E7BC:: @ 0811E7BC - .incbin "data_0811E750/gUnk_0811E7BC.bin" diff --git a/linker.ld b/linker.ld index 1d7e8956..f40c3f46 100644 --- a/linker.ld +++ b/linker.ld @@ -1325,7 +1325,7 @@ SECTIONS { src/save.o(.rodata); src/script.o(.rodata); src/scroll.o(.rodata); - data/data_0811E750.o(.rodata); + src/object/itemOnGround.o(.rodata); data/const/object/itemOnGround.o(.rodata); src/object/deathFx.o(.rodata); data/animations/object/deathFx.o(.rodata); diff --git a/src/scroll.c b/src/scroll.c index 8f83d4c9..51316b08 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -51,6 +51,8 @@ u32 sub_08080278(); void sub_08080C80(u32*); void sub_08080368(); void sub_08080B60(u8*); +bool32 sub_08080794(const Transition* transition, u32 param_2, u32 param_3, u32 param_4); +bool32 sub_08080808(const Transition* transition, u32 param_2, u32 param_3, u32 param_4); extern u8 gMapDataTopSpecial[]; @@ -357,13 +359,110 @@ void ClearTilemaps(void) { MemClear(&gMapDataTopSpecial, 0x8000); } -ASM_FUNC("asm/non_matching/scroll/sub_080806BC.inc", bool32 sub_080806BC(u32 a, u32 b, u32 c, u32 d)) +bool32 sub_080806BC(u32 param_1, u32 param_2, u32 param_3, u32 param_4) { + static bool32 (*const gUnk_0811E7AC[])(const Transition*, u32, u32, u32) = { + sub_08080794, + sub_08080808, + sub_08080794, + sub_08080808, + }; + u32 uVar1; + int iVar2; + const Transition* puVar3; -ASM_FUNC("asm/non_matching/scroll/sub_08080734.inc", void sub_08080734()) + puVar3 = (gArea.pCurrentRoomInfo->exits); + while (*(u16*)puVar3 != 0xffff) { + u32 uVar3 = *(u16*)puVar3; + if ((((1 << uVar3) & param_4) != 0) && (gUnk_0811E7AC[uVar3](puVar3, param_1, param_2, param_3))) { + DoExitTransition((const ScreenTransitionData*)puVar3); + return 1; + } + puVar3++; + } + return 0; +} -ASM_FUNC("asm/non_matching/scroll/sub_08080794.inc", void sub_08080794()) +const Transition* sub_08080734(u32 param_1, u32 param_2) { + u32 warpType; + int iVar2; + u32 uVar4; + const Transition* puVar3; -ASM_FUNC("asm/non_matching/scroll/sub_08080808.inc", void sub_08080808()) + puVar3 = (gArea.pCurrentRoomInfo->exits); + uVar4 = 10; + while (*(u16*)puVar3 != 0xffff) { + if ((((1 << *(u16*)puVar3) & uVar4) != 0) && (sub_08080808(puVar3, param_1, param_2, 0))) { + return puVar3; + } + puVar3++; + } + return NULL; +} + +bool32 sub_08080794(const Transition* transition, u32 param_2, u32 param_3, u32 param_4) { + u32 bVar1; + + switch (param_4) { + default: + return 0; + case 0: + if (gRoomControls.width >> 1 < param_2) { + bVar1 = 2; + } else { + bVar1 = 1; + } + break; + case 1: + if (gRoomControls.height >> 1 < param_3) { + bVar1 = 8; + } else { + bVar1 = 4; + } + break; + case 2: + if (gRoomControls.width >> 1 < param_2) { + bVar1 = 0x20; + } else { + bVar1 = 0x10; + } + break; + case 3: + if (gRoomControls.height >> 1 < param_3) { + bVar1 = 0x80; + } else { + bVar1 = 0x40; + } + break; + } + + if ((transition->shape & bVar1) != 0) { + return 1; + } + return 0; +} + +bool32 sub_08080808(const Transition* param_1, u32 param_2, u32 param_3, u32 param_4) { + static const u8 gUnk_0811E7BC[] = { 6, 6, 6, 14, 14, 6, 22, 6 }; + const u8* ptr; + u32 temp; + u32 temp2; + u32 temp3; + u32 temp4; + ptr = &gUnk_0811E7BC[param_1->shape * 2]; + temp = ptr[0]; + temp2 = param_2 - param_1->startX; + if ((temp2 + temp <= ptr[0] * 2)) { + temp3 = ptr[1]; + temp4 = param_3 - param_1->startY; + if (temp4 + temp3 <= ptr[1] * 2) { + return TRUE; + } else { + return FALSE; + } + } else { + return FALSE; + } +} void DoExitTransition(const ScreenTransitionData* data) { PlayerRoomStatus* status; From 3952a4570019173954034693020ca11110f7e5dc Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 23:30:28 +0300 Subject: [PATCH 14/18] Put const data in itemOnGround --- assets/assets.json | 5 --- data/const/object/itemOnGround.s | 52 ------------------------- linker.ld | 1 - src/object/itemOnGround.c | 67 ++++++++++++++++++++++++++++---- src/scroll.c | 20 +++++++--- 5 files changed, 73 insertions(+), 72 deletions(-) delete mode 100644 data/const/object/itemOnGround.s diff --git a/assets/assets.json b/assets/assets.json index 9a48a30b..ce35da58 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -41005,11 +41005,6 @@ "DEMO_JP": -2192 } }, - { - "path": "itemOnGround/gUnk_0811E84C.bin", - "start": 1173580, - "size": 944 - }, { "path": "animations/gSpriteAnimations_DeathFx_1_0.bin", "start": 1174740, diff --git a/data/const/object/itemOnGround.s b/data/const/object/itemOnGround.s deleted file mode 100644 index 35f08bf5..00000000 --- a/data/const/object/itemOnGround.s +++ /dev/null @@ -1,52 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811E7C4:: @ 0811E7C4 - .4byte sub_080808D8 - .4byte sub_080808E4 - .4byte sub_08080904 - .4byte sub_08080910 - -gUnk_0811E7D4:: @ 0811E7D4 - .4byte sub_08080F20 - .4byte sub_080811EC - .4byte sub_0808122C - .4byte sub_08081328 - .4byte sub_0808136C - -gUnk_0811E7E8:: @ 0811E7E8 - .4byte sub_080810A8 - .4byte sub_080810FC - .4byte sub_08081150 - .4byte sub_08081134 - .4byte sub_08081188 - .4byte sub_080810A8 - .4byte sub_080810A8 - .4byte sub_080811AC - .4byte sub_080811C8 - .4byte sub_080811D8 - .4byte sub_080810A8 - -gUnk_0811E814:: @ 0811E814 - .4byte sub_08081248 - .4byte sub_08081248 - .4byte sub_0808126C - .4byte sub_0808127C - .4byte nullsub_113 - .4byte sub_080812A0 - .4byte sub_08081248 - .4byte sub_080812A8 - .4byte sub_080812E8 - .4byte nullsub_510 - .4byte sub_08081248 - -gUnk_0811E840:: @ 0811E840 - .4byte sub_080813D4 - .4byte sub_080813E8 - .4byte sub_080813F0 - -gUnk_0811E84C:: @ 0811E84C - .incbin "itemOnGround/gUnk_0811E84C.bin" diff --git a/linker.ld b/linker.ld index f40c3f46..63683160 100644 --- a/linker.ld +++ b/linker.ld @@ -1326,7 +1326,6 @@ SECTIONS { src/script.o(.rodata); src/scroll.o(.rodata); src/object/itemOnGround.o(.rodata); - data/const/object/itemOnGround.o(.rodata); src/object/deathFx.o(.rodata); data/animations/object/deathFx.o(.rodata); src/object/itemForSale.o(.rodata); diff --git a/src/object/itemOnGround.c b/src/object/itemOnGround.c index 8a29ce8c..55bc4208 100644 --- a/src/object/itemOnGround.c +++ b/src/object/itemOnGround.c @@ -19,13 +19,32 @@ void sub_0808153C(Entity*); void sub_08081598(Entity*); void sub_080813BC(Entity*); void sub_080810FC(Entity*); +void sub_08080F20(Entity*); +void sub_080811EC(Entity*); +void sub_0808122C(Entity*); +void sub_08081328(Entity*); +void sub_0808136C(Entity*); +void sub_080810A8(Entity*); +void sub_080810FC(Entity*); +void sub_08081150(Entity*); +void sub_08081134(Entity*); +void sub_08081188(Entity*); +void sub_080811AC(Entity*); +void sub_080811C8(Entity*); +void sub_080811D8(Entity*); +void sub_08081248(Entity*); +void sub_0808126C(Entity*); +void sub_0808127C(Entity*); +void nullsub_113(Entity*); +void sub_080812A0(Entity*); +void sub_080812A8(Entity*); +void sub_080812E8(Entity*); +void nullsub_510(Entity*); +void sub_080813D4(Entity*); +void sub_080813E8(Entity*); +void sub_080813F0(Entity*); bool32 CheckShouldPlayItemGetCutscene(Entity*); -extern void (*const gUnk_0811E7D4[])(Entity*); -extern void (*const gUnk_0811E7E8[])(Entity*); -extern void (*const gUnk_0811E814[])(Entity*); -extern void (*const gUnk_0811E840[])(Entity*); - typedef struct { u8 unk0[2]; u16 sfx; @@ -33,9 +52,10 @@ typedef struct { u8 unk5[3]; } Unk_0811E84C; -extern const Unk_0811E84C gUnk_0811E84C[]; - void ItemOnGround(Entity* this) { + static void (*const gUnk_0811E7D4[])(Entity*) = { + sub_08080F20, sub_080811EC, sub_0808122C, sub_08081328, sub_0808136C, + }; if (this->contactFlags & 0x80) { switch (this->contactFlags & 0x7F) { case 20: @@ -75,6 +95,10 @@ void ItemOnGround(Entity* this) { } void sub_08080F20(Entity* this) { + static void (*const gUnk_0811E7E8[])(Entity*) = { + sub_080810A8, sub_080810FC, sub_08081150, sub_08081134, sub_08081188, sub_080810A8, + sub_080810A8, sub_080811AC, sub_080811C8, sub_080811D8, sub_080810A8, + }; if (this->field_0x86.HWORD && CheckFlags(this->field_0x86.HWORD)) { DeleteThisEntity(); } @@ -215,6 +239,10 @@ void sub_080811EC(Entity* this) { } void sub_0808122C(Entity* this) { + static void (*const gUnk_0811E814[])(Entity*) = { + sub_08081248, sub_08081248, sub_0808126C, sub_0808127C, nullsub_113, sub_080812A0, + sub_08081248, sub_080812A8, sub_080812E8, nullsub_510, sub_08081248, + }; gUnk_0811E814[this->field_0x68.HALF.HI](this); } @@ -300,7 +328,12 @@ void sub_0808136C(Entity* this) { } void sub_080813BC(Entity* this) { - gUnk_0811E840[this->subAction](this); + static void (*const subActionFuncs[])(Entity*) = { + sub_080813D4, + sub_080813E8, + sub_080813F0, + }; + subActionFuncs[this->subAction](this); } void sub_080813D4(Entity* this) { @@ -342,6 +375,24 @@ bool32 CheckShouldPlayItemGetCutscene(Entity* this) { return ((gItemMetaData[this->type].unk3 & 0x2) || !GetInventoryValue(this->type)); } +static const Unk_0811E84C gUnk_0811E84C[118] = { + [ITEM_SHELLS] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_DUNGEON_MAP] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_COMPASS] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_BIG_KEY] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_SMALL_KEY] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_RUPEE1] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_RUPEE5] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_RUPEE20] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_RUPEE50] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_RUPEE100] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_RUPEE200] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_KINSTONE] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_BOMBS5] = { { 0x0, 0x0 }, SFX_HEART_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_ARROWS5] = { { 0x0, 0x0 }, SFX_HEART_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, + [ITEM_HEART] = { { 0x0, 0x0 }, SFX_HEART_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } }, +}; + u8 sub_0808147C(u32 arg0) { const Unk_0811E84C* var0 = &gUnk_0811E84C[arg0]; return var0->unk4; diff --git a/src/scroll.c b/src/scroll.c index 51316b08..c7ce5348 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -53,11 +53,13 @@ void sub_08080368(); void sub_08080B60(u8*); bool32 sub_08080794(const Transition* transition, u32 param_2, u32 param_3, u32 param_4); bool32 sub_08080808(const Transition* transition, u32 param_2, u32 param_3, u32 param_4); +void sub_080808D8(int); +void sub_080808E4(int); +void sub_08080904(int); +void sub_08080910(int); extern u8 gMapDataTopSpecial[]; -extern const void (*const gUnk_0811E7C4[])(int); - void UpdateScroll(void) { static void (*const gUnk_0811E768[])(RoomControls*) = { sub_0807FC64, sub_0807FC7C, sub_0807FDB0, NULL, sub_0807FEF0, sub_0807FF54, @@ -465,6 +467,12 @@ bool32 sub_08080808(const Transition* param_1, u32 param_2, u32 param_3, u32 par } void DoExitTransition(const ScreenTransitionData* data) { + static void (*const gUnk_0811E7C4[])(int) = { + sub_080808D8, + sub_080808E4, + sub_08080904, + sub_08080910, + }; PlayerRoomStatus* status; gRoomTransition.transitioningOut = 1; status = &gRoomTransition.player_status; @@ -489,11 +497,11 @@ void DoExitTransition(const ScreenTransitionData* data) { gUnk_0811E7C4[data->type](data->field_0xa); } -void sub_080808D8(void) { +void sub_080808D8(int param_1) { gRoomTransition.type = TRANSITION_DEFAULT; } -void sub_080808E4(void) { +void sub_080808E4(int param_1) { if (CheckAreaOverworld(gRoomTransition.player_status.area_next)) { gRoomTransition.type = TRANSITION_DEFAULT; } else { @@ -501,11 +509,11 @@ void sub_080808E4(void) { } } -void sub_08080904(void) { +void sub_08080904(int param_1) { gRoomTransition.type = TRANSITION_CUT; } -void sub_08080910(void) { +void sub_08080910(int param_1) { gRoomTransition.type = TRANSITION_CUT; } From cec735cee212201d4073a3b8dd258977cac987c9 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 23:39:56 +0300 Subject: [PATCH 15/18] Put const data in button --- assets/assets.json | 5 ----- data/const/object/button.s | 16 ---------------- linker.ld | 2 +- src/object/button.c | 19 ++++++++++++++----- 4 files changed, 15 insertions(+), 27 deletions(-) delete mode 100644 data/const/object/button.s diff --git a/assets/assets.json b/assets/assets.json index ce35da58..c89644bb 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -41029,11 +41029,6 @@ "size": 89, "type": "animation" }, - { - "path": "button/gUnk_0811EE50.bin", - "start": 1175120, - "size": 12 - }, { "path": "animations/gSpriteAnimations_MinishEmoticon_2.bin", "start": 1175140, diff --git a/data/const/object/button.s b/data/const/object/button.s deleted file mode 100644 index 0feeebf9..00000000 --- a/data/const/object/button.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811EE38:: @ 0811EE38 - .4byte sub_08081AE0 - .4byte sub_08081B84 - .4byte sub_08081BAC - .4byte sub_08081BE0 - .4byte sub_08081C30 - .4byte sub_08081C98 - -gUnk_0811EE50:: @ 0811EE50 - .incbin "button/gUnk_0811EE50.bin" diff --git a/linker.ld b/linker.ld index 63683160..026afaf7 100644 --- a/linker.ld +++ b/linker.ld @@ -1329,7 +1329,7 @@ SECTIONS { src/object/deathFx.o(.rodata); data/animations/object/deathFx.o(.rodata); src/object/itemForSale.o(.rodata); - data/const/object/button.o(.rodata); + src/object/button.o(.rodata); src/object/minishEmoticon.o(.rodata); data/animations/object/minishEmoticon.o(.rodata); data/const/object/pot.o(.rodata); diff --git a/src/object/button.c b/src/object/button.c index c16a1334..88068074 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -1,10 +1,18 @@ #include "object.h" #include "functions.h" -extern void (*const gUnk_0811EE38[])(Entity*); +void sub_08081AE0(Entity*); +void sub_08081B84(Entity*); +void sub_08081BAC(Entity*); +void sub_08081BE0(Entity*); +void sub_08081C30(Entity*); +void sub_08081C98(Entity*); void Button(Entity* this) { - gUnk_0811EE38[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_08081AE0, sub_08081B84, sub_08081BAC, sub_08081BE0, sub_08081C30, sub_08081C98, + }; + actionFuncs[this->action](this); } extern u32 sub_08081E3C(Entity*); @@ -172,10 +180,11 @@ u32 sub_08081E0C(Entity* this) { } } -extern u16 gUnk_0811EE50[]; - u32 sub_08081E3C(Entity* this) { - u16* tmp1; + static const u16 gUnk_0811EE50[] = { + 0x77, 0x78, 0x79, 0x7a, 0, 0, + }; + const u16* tmp1; int tmp2; tmp2 = GetTileType(this->field_0x74.HWORD, this->collisionLayer); tmp1 = gUnk_0811EE50; From 11bb972c8e9c8ce9590a47249750e52e5e3881c8 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 23:43:38 +0300 Subject: [PATCH 16/18] Put const data in pot --- data/const/object/pot.s | 30 ------------------------------ linker.ld | 2 +- src/object/pot.c | 38 +++++++++++++++++++++++++++++++------- 3 files changed, 32 insertions(+), 38 deletions(-) delete mode 100644 data/const/object/pot.s diff --git a/data/const/object/pot.s b/data/const/object/pot.s deleted file mode 100644 index 93f956b4..00000000 --- a/data/const/object/pot.s +++ /dev/null @@ -1,30 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_0811F090:: @ 0811F090 - .4byte sub_0808222C - .4byte sub_08082310 - .4byte sub_080824F8 - .4byte sub_080826E4 - .4byte sub_08082614 - .4byte sub_08082824 - -gUnk_0811F0A8:: @ 0811F0A8 - .4byte sub_08082510 - .4byte nullsub_511 - .4byte sub_08082588 - .4byte sub_0808259C - .4byte sub_080825E8 - .4byte sub_080825F0 - .4byte sub_08082608 - -gUnk_0811F0C4:: @ 0811F0C4 - .4byte sub_080826FC - .4byte sub_0808270C - .4byte sub_08082778 - .4byte sub_080827F8 - .4byte nullsub_512 - .4byte sub_08082818 diff --git a/linker.ld b/linker.ld index 026afaf7..71c4e144 100644 --- a/linker.ld +++ b/linker.ld @@ -1332,7 +1332,7 @@ SECTIONS { src/object/button.o(.rodata); src/object/minishEmoticon.o(.rodata); data/animations/object/minishEmoticon.o(.rodata); - data/const/object/pot.o(.rodata); + src/object/pot.o(.rodata); data/animations/object/pot.o(.rodata); src/object/ezloCap.o(.rodata); data/animations/object/ezloCap.o(.rodata); diff --git a/src/object/pot.c b/src/object/pot.c index 6f8744ca..a4f2baba 100644 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -11,16 +11,34 @@ void sub_08082824(Entity*); static void sub_08082850(Entity*, Entity*); void sub_08082608(Entity*); - -extern void (*const gUnk_0811F090[])(Entity*); -extern void (*const gUnk_0811F0A8[])(Entity*); -extern void (*const gUnk_0811F0C4[])(Entity*); +void sub_0808222C(Entity*); +void sub_08082310(Entity*); +void sub_080824F8(Entity*); +void sub_080826E4(Entity*); +void sub_08082614(Entity*); +void sub_08082824(Entity*); +void sub_08082510(Entity*); +void nullsub_511(Entity*); +void sub_08082588(Entity*); +void sub_0808259C(Entity*); +void sub_080825E8(Entity*); +void sub_080825F0(Entity*); +void sub_08082608(Entity*); +void sub_08082818(Entity*); +void nullsub_512(Entity*); +void sub_080827F8(Entity*); +void sub_08082778(Entity*); +void sub_0808270C(Entity*); +void sub_080826FC(Entity*); extern void RegisterCarryEntity(Entity*); extern void sub_08016A6C(Entity*); void Pot(Entity* this) { - gUnk_0811F090[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_0808222C, sub_08082310, sub_080824F8, sub_080826E4, sub_08082614, sub_08082824, + }; + actionFuncs[this->action](this); this->contactFlags = 0; } @@ -111,7 +129,10 @@ void sub_08082310(Entity* this) { } void sub_080824F8(Entity* this) { - gUnk_0811F0A8[this->subAction](this); + static void (*const subActionFuncs[])(Entity*) = { + sub_08082510, nullsub_511, sub_08082588, sub_0808259C, sub_080825E8, sub_080825F0, sub_08082608, + }; + subActionFuncs[this->subAction](this); } void sub_08082510(Entity* this) { @@ -200,7 +221,10 @@ void sub_08082614(Entity* this) { } void sub_080826E4(Entity* this) { - gUnk_0811F0C4[this->subAction](this); + static void (*const subActionFuncs[])(Entity*) = { + sub_080826FC, sub_0808270C, sub_08082778, sub_080827F8, nullsub_512, sub_08082818, + }; + subActionFuncs[this->subAction](this); } void sub_080826FC(Entity* this) { From c6e3eafd09624cf696c90eb113c981e8f17f4280 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sat, 16 Apr 2022 23:46:16 +0300 Subject: [PATCH 17/18] Put const data in railTrack --- assets/assets.json | 5 ----- data/const/object/railtrack.s | 14 -------------- linker.ld | 2 +- src/object/railtrack.c | 23 ++++++++++++++++------- 4 files changed, 17 insertions(+), 27 deletions(-) delete mode 100644 data/const/object/railtrack.s diff --git a/assets/assets.json b/assets/assets.json index c89644bb..31faaf38 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -41971,11 +41971,6 @@ "size": 4, "type": "animation" }, - { - "path": "railtrack/gUnk_081205E0.bin", - "start": 1181152, - "size": 4 - }, { "path": "lilypadLarge/gUnk_08120620.bin", "start": 1181216, diff --git a/data/const/object/railtrack.s b/data/const/object/railtrack.s deleted file mode 100644 index 601e4e47..00000000 --- a/data/const/object/railtrack.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_081205D0:: @ 081205D0 - .4byte sub_080851AC - .4byte sub_08085264 - .4byte sub_080852B4 - .4byte sub_08085308 - -gUnk_081205E0:: @ 081205E0 - .incbin "railtrack/gUnk_081205E0.bin" diff --git a/linker.ld b/linker.ld index 71c4e144..f847aa6f 100644 --- a/linker.ld +++ b/linker.ld @@ -1350,7 +1350,7 @@ SECTIONS { src/object/playerClone.o(.rodata); src/object/object11.o(.rodata); src/object/object12.o(.rodata); - data/const/object/railtrack.o(.rodata); + src/object/railtrack.o(.rodata); data/animations/object/railtrack.o(.rodata); data/const/object/lilypadLarge.o(.rodata); src/object/object15.o(.rodata); diff --git a/src/object/railtrack.c b/src/object/railtrack.c index e021ac7e..187dd928 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -6,17 +6,24 @@ #include "flags.h" #include "functions.h" -extern void sub_08085394(Entity*); -extern void sub_0808543C(Entity*); -extern u32 sub_080854A8(Entity*); - -extern void (*const gUnk_081205D0[])(Entity*); +void sub_08085394(Entity*); +void sub_0808543C(Entity*); +void sub_080851AC(Entity*); +void sub_08085264(Entity*); +void sub_080852B4(Entity*); +void sub_08085308(Entity*); +u32 sub_080854A8(Entity*); extern s8 gUnk_080B4488[][2]; -extern u16 gUnk_081205E0[]; void Railtrack(Entity* this) { - gUnk_081205D0[this->action](this); + static void (*const actionFuncs[])(Entity*) = { + sub_080851AC, + sub_08085264, + sub_080852B4, + sub_08085308, + }; + actionFuncs[this->action](this); } void sub_080851AC(Entity* this) { @@ -101,6 +108,8 @@ void sub_08085308(Entity* this) { } } +static const u16 gUnk_081205E0[] = { 0x4018, 0x4019 }; + void sub_08085394(Entity* this) { u32 uVar1; u16* layerData; From 10af15d30a7b19f2ce51f9df41bae1603c73282f Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 17 Apr 2022 10:10:17 +0300 Subject: [PATCH 18/18] Replace int with s32 --- src/npc/phonograph.c | 4 ++-- src/object/button.c | 2 +- src/scroll.c | 52 ++++++++++++++++++++++---------------------- src/text.c | 32 +++++++++++++-------------- 4 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/npc/phonograph.c b/src/npc/phonograph.c index 560794d2..5932c644 100644 --- a/src/npc/phonograph.c +++ b/src/npc/phonograph.c @@ -85,7 +85,7 @@ void sub_0806E964(Entity* this, ScriptExecutionContext* context) { this->field_0x6a.HWORD = this->field_0x68.HWORD; field_0x68 = (s16)this->field_0x68.HWORD * 4; ptr2++; - this->field_0x6c.HWORD = *(s16*)((((int)ptr2 + field_0x68))); + this->field_0x6c.HWORD = *(s16*)((((s32)ptr2 + field_0x68))); } else { SoundReq(SONG_STOP_ALL); this->field_0x6a.HWORD = 0; @@ -167,7 +167,7 @@ void sub_0806E964(Entity* this, ScriptExecutionContext* context) { this->field_0x6a.HWORD = this->field_0x68.HWORD; field_0x68 = (s16)this->field_0x68.HWORD * 4; ptr2++; - this->field_0x6c.HWORD = *(s16*)((((int)ptr2 + field_0x68))); + this->field_0x6c.HWORD = *(s16*)((((s32)ptr2 + field_0x68))); } else { SoundReq(SONG_STOP_ALL); this->field_0x6a.HWORD = 0; diff --git a/src/object/button.c b/src/object/button.c index 88068074..1429cb05 100644 --- a/src/object/button.c +++ b/src/object/button.c @@ -185,7 +185,7 @@ u32 sub_08081E3C(Entity* this) { 0x77, 0x78, 0x79, 0x7a, 0, 0, }; const u16* tmp1; - int tmp2; + s32 tmp2; tmp2 = GetTileType(this->field_0x74.HWORD, this->collisionLayer); tmp1 = gUnk_0811EE50; do { diff --git a/src/scroll.c b/src/scroll.c index c7ce5348..1b8c213b 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -53,10 +53,10 @@ void sub_08080368(); void sub_08080B60(u8*); bool32 sub_08080794(const Transition* transition, u32 param_2, u32 param_3, u32 param_4); bool32 sub_08080808(const Transition* transition, u32 param_2, u32 param_3, u32 param_4); -void sub_080808D8(int); -void sub_080808E4(int); -void sub_08080904(int); -void sub_08080910(int); +void sub_080808D8(s32); +void sub_080808E4(s32); +void sub_08080904(s32); +void sub_08080910(s32); extern u8 gMapDataTopSpecial[]; @@ -104,7 +104,7 @@ void sub_0807FDE4(RoomControls* controls) { void sub_0807FDF8(RoomControls* controls) { u32 bVar1; Entity* pEVar2; - int iVar3; + s32 iVar3; gUpdateVisibleTiles = 2; controls->filler2[0]++; @@ -218,12 +218,12 @@ void sub_0807FFE4(RoomControls* controls) { } void sub_08080040(RoomControls* controls) { - int iVar2; - int iVar3; - int uVar5; - int uVar6; - int iVar7; - int temp; + s32 iVar2; + s32 iVar3; + s32 uVar5; + s32 uVar6; + s32 iVar7; + s32 temp; controls->filler2[0] -= 6; controls->filler2[1] = (controls->filler2[0] << 1) / 3; @@ -285,12 +285,12 @@ void sub_08080198(RoomControls* controls) { } void sub_080801BC(RoomControls* controls) { - int iVar2; - int iVar3; - int uVar5; - int uVar6; - int iVar7; - int temp; + s32 iVar2; + s32 iVar3; + s32 uVar5; + s32 uVar6; + s32 iVar7; + s32 temp; controls->filler2[0] += 6; controls->filler2[1] = (controls->filler2[0] << 1) / 3; @@ -369,7 +369,7 @@ bool32 sub_080806BC(u32 param_1, u32 param_2, u32 param_3, u32 param_4) { sub_08080808, }; u32 uVar1; - int iVar2; + s32 iVar2; const Transition* puVar3; puVar3 = (gArea.pCurrentRoomInfo->exits); @@ -386,7 +386,7 @@ bool32 sub_080806BC(u32 param_1, u32 param_2, u32 param_3, u32 param_4) { const Transition* sub_08080734(u32 param_1, u32 param_2) { u32 warpType; - int iVar2; + s32 iVar2; u32 uVar4; const Transition* puVar3; @@ -467,7 +467,7 @@ bool32 sub_08080808(const Transition* param_1, u32 param_2, u32 param_3, u32 par } void DoExitTransition(const ScreenTransitionData* data) { - static void (*const gUnk_0811E7C4[])(int) = { + static void (*const gUnk_0811E7C4[])(s32) = { sub_080808D8, sub_080808E4, sub_08080904, @@ -497,11 +497,11 @@ void DoExitTransition(const ScreenTransitionData* data) { gUnk_0811E7C4[data->type](data->field_0xa); } -void sub_080808D8(int param_1) { +void sub_080808D8(s32 param_1) { gRoomTransition.type = TRANSITION_DEFAULT; } -void sub_080808E4(int param_1) { +void sub_080808E4(s32 param_1) { if (CheckAreaOverworld(gRoomTransition.player_status.area_next)) { gRoomTransition.type = TRANSITION_DEFAULT; } else { @@ -509,11 +509,11 @@ void sub_080808E4(int param_1) { } } -void sub_08080904(int param_1) { +void sub_08080904(s32 param_1) { gRoomTransition.type = TRANSITION_CUT; } -void sub_08080910(int param_1) { +void sub_08080910(s32 param_1) { gRoomTransition.type = TRANSITION_CUT; } @@ -576,8 +576,8 @@ void sub_08080974(u32 arg0, u32 arg1) { } void sub_080809D4(void) { - int x, y; - int var1, var0; + s32 x, y; + s32 var1, var0; RoomControls* roomControls = &gRoomControls; roomControls->scroll_flags &= ~4; diff --git a/src/text.c b/src/text.c index a942ed63..277b0a65 100644 --- a/src/text.c +++ b/src/text.c @@ -33,7 +33,7 @@ void sub_0805F440(Token*, u8*); u32 sub_0805F6A4(Token*, WStruct*); u32 GetCharacter(Token* tok); u32 GetFontStrWith(Token*, u32); -int sub_0805F67C(short*, int, int); +s32 sub_0805F67C(short*, s32, s32); void sub_0805F918(u32, u32, void*); bool32 sub_0805F5CC(Font*, Token*, WStruct*); void sub_0805EEB4(Token*, u32); @@ -64,7 +64,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) { u32 langIndex; u32* puVar2; u8* puVar5; - int iVar3; + s32 iVar3; u32 uVar4; u32 uVar6; u32 uVar7; @@ -76,7 +76,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) { } puVar2 = gTranslations[langIndex]; iVar3 = puVar2[(u8)(textIndex >> 8)]; - puVar2 = (u32*)((int)puVar2 + iVar3); + puVar2 = (u32*)((s32)puVar2 + iVar3); iVar3 = puVar2[(u8)textIndex]; uVar6 = *(gTranslations[langIndex]) >> 2; uVar7 = *puVar2 >> 2; @@ -84,7 +84,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) { if (((token->textIndex >> 8) >= uVar6) || ((u8)token->textIndex >= uVar7)) { uVar4 = 1; } else { - if (*(char*)((int)puVar2 + iVar3) == 0) { + if (*(char*)((s32)puVar2 + iVar3) == 0) { uVar4 = 2; } } @@ -95,7 +95,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) { iVar3 = 0; break; } - puVar2 = (u32*)((int)puVar2 + iVar3); + puVar2 = (u32*)((s32)puVar2 + iVar3); sub_0805EF40(token, (u8*)puVar2); } @@ -134,7 +134,7 @@ u32 GetCharacter(Token* token) { u32 code; u32 uVar6; u8** ppuVar7; - int iVar8; + s32 iVar8; do { code = sub_0805EF8C(token); @@ -358,8 +358,8 @@ u32 GetFontStrWith(Token* param_1, u32 param_2) { u32 rv; u32 r9; Token token; - int local_28; - int local_24; + s32 local_28; + s32 local_24; MemCopy(param_1, &token, sizeof(Token)); local_24 = 0; @@ -457,9 +457,9 @@ u32 sub_0805F46C(u32 param_1, const Font* param_2) { pWVar4->bgColor = font.fill_type; if (font.draw_border) { sub_0805F918(font.border_type, font.fill_type, font.gfx_dest); - font.gfx_dest = (void*)((int)font.gfx_dest + 0xe0); + font.gfx_dest = (void*)((s32)font.gfx_dest + 0xe0); fontStr = GetFontStrWith(&token, 1); - iVar10 = (fontStr >> 0x18) * (u32)font._16 + ((u8)((int)fontStr >> 0x10) << 1); + iVar10 = (fontStr >> 0x18) * (u32)font._16 + ((u8)((s32)fontStr >> 0x10) << 1); uVar8 = (u16)fontStr; temp3 = uVar8; if (font.width < (s32)temp3) { @@ -487,7 +487,7 @@ u32 sub_0805F46C(u32 param_1, const Font* param_2) { while (iVar10-- > 0) { puVar9 += 0x20; puVar6 = puVar9; - for (uVar5 = uVar8; (int)uVar5-- > 0;) { + for (uVar5 = uVar8; (s32)uVar5-- > 0;) { *puVar6++ = param_1; } } @@ -502,7 +502,7 @@ u32 sub_0805F46C(u32 param_1, const Font* param_2) { bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) { u16 uVar2; u32 uVar3; - int iVar4; + s32 iVar4; u16* puVar5; u32 fontStr; @@ -513,7 +513,7 @@ bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) { puVar5 = (u16*)sub_0805F6A4(param_2, param_3); if (puVar5) { - iVar4 = (int)(param_3->unk6 + 7) / 8; + iVar4 = (s32)(param_3->unk6 + 7) / 8; puVar5 = param_1->dest; if (param_1->right_align) { puVar5 -= (iVar4 + 1U) >> 1; @@ -522,7 +522,7 @@ bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) { param_1->dest += 0x40; iVar4 *= 0x40; MemCopy(param_1->buffer_loc, param_1->gfx_dest, iVar4); - param_1->gfx_dest = (void*)((int)param_1->gfx_dest + iVar4); + param_1->gfx_dest = (void*)((s32)param_1->gfx_dest + iVar4); } else { if (param_2->code == 10) { param_1->dest += param_1->_16 * 0x20; @@ -531,7 +531,7 @@ bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) { return param_2->code > 0; } -int sub_0805F67C(short* param_1, int param_2, int param_3) { +s32 sub_0805F67C(short* param_1, s32 param_2, s32 param_3) { for (param_3--; param_3 != -1; param_3--) { param_1[0] = param_2++; param_1[0x20] = param_2++; @@ -543,7 +543,7 @@ int sub_0805F67C(short* param_1, int param_2, int param_3) { u32 sub_0805F6A4(Token* param_1, WStruct* param_2) { u32 uVar1; u32 uVar3; - int iVar4; + s32 iVar4; u32 r7; iVar4 = 0;