From a804adbf16a8d59477e19b3204c1f1ae6175f59f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 10:38:22 -0400 Subject: Get sub_80BB5E4 matching --- src/secret_base_80bb4ac.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src') diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 406bef40a..a73a197cc 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,7 +1,9 @@ #include "global.h" +#include "event_data.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; +extern u16 gScriptResult; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac u16 i; @@ -47,3 +49,22 @@ void ResetSecretBases(void) { // 080bb5b4 void sub_80BB5D0(void) { // 080bb5d0 gUnknown_020387DC = gSpecialVar_0x8004; } + +void sub_80BB5E4(void) { // 80bb5e4 + u16 idx; + gScriptResult = 0; + for (idx=0; idx<20; idx++) { + if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) + continue; + gScriptResult = 1; + VarSet(0x4054, idx); + break; + } +} + +void sub_80BB63C(void) { // 80bb63c + if (gSaveBlock1.secretBases[0].sbr_field_0) + gScriptResult = 1; + else + gScriptResult = 0; +} -- cgit v1.2.3 From d2675d65b05920d2ef6401e2747d3daf9a537bae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 14:14:09 -0400 Subject: More decomp in secret base (non-matching sub_80BB66C) --- src/secret_base_80bb4ac.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src') diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index a73a197cc..8955441eb 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,8 +1,11 @@ #include "global.h" #include "event_data.h" +#include "asm.h" +#include "field_player_avatar.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8007; extern u16 gScriptResult; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac @@ -68,3 +71,36 @@ void sub_80BB63C(void) { // 80bb63c else gScriptResult = 0; } + +u8 sub_80BB66C(void) { // 80bb66c + s16 x, y; + u16 v0; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF; + if (v0 == 0x90 || v0 == 0x91) + return 1; + else if (v0 == 0x92 || v0 == 0x93) + return 2; + else if (v0 == 0x9a || v0 == 0x9b) + return 3; + else if (v0 == 0x94 || v0 == 0x95) + return 4; + else if (v0 == 0x96 || v0 == 0x97 || v0 == 0x9c || v0 == 0x9d) + return 5; + else if (v0 == 0x98 || v0 == 0x99) + return 6; + return 0; +} + +void sub_80BB70C(void) { // 80bb70c + gSpecialVar_0x8007 = sub_80BB66C(); +} + +s16 unref_sub_80BB724(u16 *a0, u8 a1) { + u16 v2; + for (v2=0; v2<0x200; v2++) { + if ((a0[v2] & 0xFFF) == a1) + return (s16)v2; + } + return -1; +} -- cgit v1.2.3 From 272c08df68a278ad5eeb447bab6bfc23a1f34f01 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 14:49:00 -0400 Subject: Decompile another function in secret bases; switch nonmatching sub_80BB66C behind NONMATCHING --- src/secret_base.c | 8 +++++ src/secret_base_80bb4ac.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 572dfaa1d..9955fd242 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2,6 +2,9 @@ #include "string_util.h" #include "strings.h" #include "text.h" +#include "event_data.h" + +extern u8 gUnknown_020387DC; u8 sub_80BB8A8(void *); @@ -16,3 +19,8 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { return StringAppend(dest, gOtherText_PlayersBase); } + +u8 *GetSecretBaseMapName(u8 *dest) { + gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(0x4054)].sbr_field_0; + return sub_80BC190(dest, VarGet(0x4054)); +} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 8955441eb..ebd93f008 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -72,6 +72,7 @@ void sub_80BB63C(void) { // 80bb63c gScriptResult = 0; } +#ifdef NONMATCHING u8 sub_80BB66C(void) { // 80bb66c s16 x, y; u16 v0; @@ -91,6 +92,97 @@ u8 sub_80BB66C(void) { // 80bb66c return 6; return 0; } +#else +__attribute__((naked)) +u8 sub_80BB66C(void) { + asm(".syntax unified\n\ + push {r4,lr}\n\ + sub sp, 0x4\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl GetXYCoordsOneStepInFrontOfPlayer\n\ + mov r0, sp\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + movs r2, 0\n\ + ldrsh r1, [r4, r2]\n\ + bl MapGridGetMetatileBehaviorAt\n\ + adds r1, r0, 0\n\ + ldr r2, _080BB6A4 @ =0x00000fff\n\ + adds r0, r2, 0\n\ + ands r1, r0\n\ + adds r0, r1, 0\n\ + subs r0, 0x90\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6A8\n\ + movs r0, 0x1\n\ + b _080BB702\n\ + .align 2, 0\n\ + _080BB6A4: .4byte 0x00000fff\n\ + _080BB6A8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x92\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6B8\n\ + movs r0, 0x2\n\ + b _080BB702\n\ + _080BB6B8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x9A\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6C8\n\ + movs r0, 0x3\n\ + b _080BB702\n\ + _080BB6C8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x94\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6D8\n\ + movs r0, 0x4\n\ + b _080BB702\n\ + _080BB6D8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x96\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bls _080BB6EC\n\ + cmp r1, 0x9C\n\ + beq _080BB6EC\n\ + cmp r1, 0x9D\n\ + bne _080BB6F0\n\ + _080BB6EC:\n\ + movs r0, 0x5\n\ + b _080BB702\n\ + _080BB6F0:\n\ + adds r0, r1, 0\n\ + subs r0, 0x98\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bls _080BB700\n\ + movs r0, 0\n\ + b _080BB702\n\ + _080BB700:\n\ + movs r0, 0x6\n\ + _080BB702:\n\ + add sp, 0x4\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif void sub_80BB70C(void) { // 80bb70c gSpecialVar_0x8007 = sub_80BB66C(); -- cgit v1.2.3 From 9d64a66a79a1b2ebfd2eccd5cf062e6f577073b8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 15:33:32 -0400 Subject: sub_80BC224 --- src/secret_base.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 9955fd242..63c08d629 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -24,3 +24,11 @@ u8 *GetSecretBaseMapName(u8 *dest) { gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(0x4054)].sbr_field_0; return sub_80BC190(dest, VarGet(0x4054)); } + +void sub_80BC224(void) { + u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(0x4054)].sbr_field_2; + u8 *var1 = gStringVar1; + u8 var2 = sub_80BB8A8(var0); + u8 *var3 = StringCopyN(var1, var0, var2); + *var3 = EOS; +} -- cgit v1.2.3 From d8ca3a6b9dbe429d87b78ee5bf6e02f430b74d5a Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 15 May 2017 17:09:20 -0400 Subject: Trailing whitespace --- src/secret_base_80bb4ac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index ebd93f008..cdf609cbc 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -57,7 +57,7 @@ void sub_80BB5E4(void) { // 80bb5e4 u16 idx; gScriptResult = 0; for (idx=0; idx<20; idx++) { - if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) + if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) continue; gScriptResult = 1; VarSet(0x4054, idx); -- cgit v1.2.3