From b6b5453431af46791fd9d211efac64464c1dff85 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 29 Jan 2017 20:59:54 -0500 Subject: start decompiling mauville_old_man.c (#225) * some labels and enumerate player speeds * clear up speed enums * GetPlayerSpeed * oops * start decompiling mauville_old_man.c * formatting * decompile more of mauville_old_man.c * someone fix this please * formatting * make ROM build again * formatting again --- src/mauville_old_man.c | 407 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 407 insertions(+) create mode 100644 src/mauville_old_man.c (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c new file mode 100644 index 000000000..82e936633 --- /dev/null +++ b/src/mauville_old_man.c @@ -0,0 +1,407 @@ +#include "global.h" +#include "string_util.h" +#include "menu.h" +#include "script.h" +#include "asm.h" +#include "rng.h" + +extern u16 gScriptResult; +extern u16 gSpecialVar_0x8004; + +extern void sub_80F83F8(void); +extern void sub_81099CC(void); +extern void sub_80F83D0(void); +extern void sub_80F7F80(u8); +extern u16 sub_80EB8EC(void); +extern void sub_80F7DC0(void); +extern u8 gOtherText_Is[]; +extern u8 gOtherText_DontYouAgree[]; +extern u32 gUnknown_083E5388[]; +extern u32 gUnknown_083E53A8[]; + +extern u16 gUnknown_083E537C[]; + +void sub_80F7A34(void) +{ + u16 i; + OldMan *oldMan = &gSaveBlock1.oldMan; + + oldMan->oldMan1.unk_2D94 = 0; + oldMan->oldMan1.unk_2DBD = 0; + + for(i = 0; i < 6; i++) + oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i]; +} + +void sub_80F7A6C(void) +{ + OldMan *oldMan = &gSaveBlock1.oldMan; + + oldMan->oldMan1.unk_2D94 = 1; + oldMan->oldMan1.unk_2D95 = 0; +} + +void sub_80F7A7C(void) +{ + sub_80F83F8(); +} + +void sub_80F7A88(void) +{ + OldMan *oldMan = &gSaveBlock1.oldMan; + + oldMan->oldMan1.unk_2D94 = 4; + oldMan->oldMan1.unk_2D95 = 0; +} + +void sub_80F7A98(void) +{ + sub_81099CC(); +} + +void sub_80F7AA4(void) +{ + u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2; + + switch(var) + { + case 0: + sub_80F7A34(); + break; + case 1: + sub_80F7A6C(); + break; + case 2: + sub_80F7A98(); + break; + case 3: + sub_80F7A7C(); + break; + case 4: + sub_80F7A88(); + break; + } + sub_80F83D0(); +} + +u8 GetCurrentMauvilleOldMan(void) +{ + OldMan *oldMan = &gSaveBlock1.oldMan; + + return oldMan->oldMan1.unk_2D94; +} + +void sub_80F7B14(void) +{ + gScriptResult = GetCurrentMauvilleOldMan(); +} + +void sub_80F7B2C(void) +{ + u16 *scriptPtr = &gScriptResult; // why?? + OldMan *oldMan = &gSaveBlock1.oldMan; + + *scriptPtr = oldMan->oldMan1.unk_2DBD; +} + +void sub_80F7B40(void) +{ + u16 i; + OldMan *oldMan = &gSaveBlock1.oldMan; + //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct; + + StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName); + + for(i = 0; i < 4; i++) + oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; + + for(i = 0; i < 6; i++) + oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i]; + + oldMan->oldMan1.unk_2DBD = 1; +} + +// too mathy +__attribute__((naked)) +void sub_80F7BA0(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + ldr r1, _080F7C48 @ =gSaveBlock1 + 0x2D94\n\ + ldr r0, _080F7C4C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r0]\n\ + adds r5, r1, 0\n\ + adds r5, 0xE\n\ + cmp r0, 0\n\ + bne _080F7BB2\n\ + adds r5, r1, 0x2\n\ +_080F7BB2:\n\ + ldr r2, _080F7C50 @ =gStringVar4\n\ + adds r4, r2, 0\n\ + movs r6, 0\n\ +_080F7BB8:\n\ + ldrh r1, [r5]\n\ + adds r5, 0x2\n\ + adds r0, r2, 0\n\ + bl sub_80EB3FC\n\ + adds r2, r0, 0\n\ + adds r7, r6, 0x1\n\ + cmp r2, r4\n\ + beq _080F7BDA\n\ + movs r1, 0x37\n\ +_080F7BCC:\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080F7BD4\n\ + strb r1, [r4]\n\ +_080F7BD4:\n\ + adds r4, 0x1\n\ + cmp r2, r4\n\ + bne _080F7BCC\n\ +_080F7BDA:\n\ + adds r4, 0x1\n\ + movs r0, 0\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ + ldrh r1, [r5]\n\ + adds r5, 0x2\n\ + adds r0, r2, 0\n\ + bl sub_80EB3FC\n\ + adds r2, r0, 0\n\ + cmp r2, r4\n\ + beq _080F7C02\n\ + movs r1, 0x37\n\ +_080F7BF4:\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080F7BFC\n\ + strb r1, [r4]\n\ +_080F7BFC:\n\ + adds r4, 0x1\n\ + cmp r2, r4\n\ + bne _080F7BF4\n\ +_080F7C02:\n\ + adds r4, 0x1\n\ + movs r0, 0xFE\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ + ldrh r1, [r5]\n\ + adds r5, 0x2\n\ + adds r0, r2, 0\n\ + bl sub_80EB3FC\n\ + adds r2, r0, 0\n\ + cmp r2, r4\n\ + beq _080F7C2A\n\ + movs r1, 0x37\n\ +_080F7C1C:\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + bne _080F7C24\n\ + strb r1, [r4]\n\ +_080F7C24:\n\ + adds r4, 0x1\n\ + cmp r2, r4\n\ + bne _080F7C1C\n\ +_080F7C2A:\n\ + cmp r6, 0\n\ + bne _080F7C3A\n\ + movs r0, 0xFC\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ + movs r0, 0xF\n\ + strb r0, [r2]\n\ + adds r2, 0x1\n\ +_080F7C3A:\n\ + lsls r0, r7, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x1\n\ + bls _080F7BB8\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080F7C48: .4byte gSaveBlock1 + 0x2D94\n\ +_080F7C4C: .4byte gSpecialVar_0x8004\n\ +_080F7C50: .4byte gStringVar4\n\ + .syntax divided"); +} + +void sub_80F7C54(void) +{ + sub_80F7F80(gSpecialVar_0x8004); + MenuDisplayMessageBox(); + ScriptContext1_Stop(); +} + +void sub_80F7C70(void) +{ + u16 *scriptPtr = &gScriptResult; // again?? + OldMan *oldMan = &gSaveBlock1.oldMan; + + *scriptPtr = oldMan->oldMan1.unk_2D95; +} + +void sub_80F7C84(void) +{ + OldMan *oldMan = &gSaveBlock1.oldMan; + + oldMan->oldMan1.unk_2D95 = 1; +} + +void sub_80F7C90(void) +{ + u16 var = sub_80EB8EC(); + + if(var == 0xFFFF) + { + gScriptResult = FALSE; + } + else + { + sub_80EB3FC(gStringVar1, var); + gScriptResult = TRUE; + } +} + +void sub_80F7CC8(void) +{ + OldMan *oldMan = &gSaveBlock1.oldMan; + + if(oldMan->oldMan1.unk_2D95 == 10) + { + gScriptResult = FALSE; + oldMan->oldMan1.unk_2D95 = 0; + } + else + gScriptResult = TRUE; +} + +// someone fix this +#ifdef NONMATCHING +void sub_80F7CF4(void) +{ + u8 *stringPtr; + OldMan *oldMan = &gSaveBlock1.oldMan; + + if(oldMan->oldMan2.unk1 == 0) + sub_80F7DC0(); + + if(oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1] != 0xFFFF) // is not the last element of the array? + { + int random = (u16)Random(); + random &= 7; + sub_80EB3FC(gStringVar4, oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1]); + stringPtr = StringCopy(gStringVar4, gOtherText_Is); + stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]); + StringCopy(stringPtr, gOtherText_DontYouAgree); + } + else + { + StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->oldMan2.mauvilleOldMan_ecArray2[oldMan->oldMan2.unk2++]]); + } + if(!(Random() % 10)) + oldMan->oldMan2.unk1 = 10; + else + oldMan->oldMan2.unk1++; + + gScriptResult = TRUE; +} +#else +__attribute__((naked)) +void sub_80F7CF4(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r5, _080F7D50 @ =gSaveBlock1 + 0x2D94\n\ + ldrb r0, [r5, 0x1]\n\ + cmp r0, 0\n\ + bne _080F7D02\n\ + bl sub_80F7DC0\n\ +_080F7D02:\n\ + ldrb r0, [r5, 0x1]\n\ + lsls r0, 1\n\ + adds r6, r5, 0x4\n\ + adds r0, r6\n\ + ldrh r1, [r0]\n\ + ldr r0, _080F7D54 @ =0x0000ffff\n\ + cmp r1, r0\n\ + beq _080F7D68\n\ + bl Random\n\ + adds r4, r0, 0\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + movs r0, 0x7\n\ + ands r4, r0\n\ + ldr r0, _080F7D58 @ =gStringVar4\n\ + ldrb r1, [r5, 0x1]\n\ + lsls r1, 1\n\ + adds r1, r6\n\ + ldrh r1, [r1]\n\ + bl sub_80EB3FC\n\ + adds r2, r0, 0\n\ + ldr r1, _080F7D5C @ =gOtherText_Is\n\ + bl StringCopy\n\ + adds r2, r0, 0\n\ + ldr r0, _080F7D60 @ =gUnknown_083E5388\n\ + lsls r4, 2\n\ + adds r4, r0\n\ + ldr r1, [r4]\n\ + adds r0, r2, 0\n\ + bl StringCopy\n\ + adds r2, r0, 0\n\ + ldr r1, _080F7D64 @ =gOtherText_DontYouAgree\n\ + bl StringCopy\n\ + b _080F7D88\n\ + .align 2, 0\n\ +_080F7D50: .4byte gSaveBlock1 + 0x2D94\n\ +_080F7D54: .4byte 0x0000ffff\n\ +_080F7D58: .4byte gStringVar4\n\ +_080F7D5C: .4byte gOtherText_Is\n\ +_080F7D60: .4byte gUnknown_083E5388\n\ +_080F7D64: .4byte gOtherText_DontYouAgree\n\ +_080F7D68:\n\ + ldr r0, _080F7DA0 @ =gStringVar4\n\ + ldr r3, _080F7DA4 @ =gUnknown_083E53A8\n\ + ldrb r1, [r5, 0x2]\n\ + adds r2, r1, 0x1\n\ + strb r2, [r5, 0x2]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r2, r5, 0\n\ + adds r2, 0x18\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + lsls r1, 2\n\ + adds r1, r3\n\ + ldr r1, [r1]\n\ + bl StringCopy\n\ +_080F7D88:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + bne _080F7DA8\n\ + movs r0, 0xA\n\ + b _080F7DAC\n\ + .align 2, 0\n\ +_080F7DA0: .4byte gStringVar4\n\ +_080F7DA4: .4byte gUnknown_083E53A8\n\ +_080F7DA8:\n\ + ldrb r0, [r5, 0x1]\n\ + adds r0, 0x1\n\ +_080F7DAC:\n\ + strb r0, [r5, 0x1]\n\ + ldr r1, _080F7DBC @ =gScriptResult\n\ + movs r0, 0x1\n\ + strh r0, [r1]\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080F7DBC: .4byte gScriptResult\n\ + .syntax divided"); +} +#endif -- cgit v1.2.3 From 9813caaf5345ea28f8230d41461618673779c2fb Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 31 Jan 2017 03:08:44 -0500 Subject: make ROM match again (#227) * some labels and enumerate player speeds * clear up speed enums * GetPlayerSpeed * oops * start decompiling mauville_old_man.c * formatting * decompile more of mauville_old_man.c * someone fix this please * formatting * make ROM build again * formatting again * make ROM match again --- src/mauville_old_man.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 82e936633..d03042ca5 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -35,10 +35,10 @@ void sub_80F7A34(void) void sub_80F7A6C(void) { - OldMan *oldMan = &gSaveBlock1.oldMan; + struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1; - oldMan->oldMan1.unk_2D94 = 1; - oldMan->oldMan1.unk_2D95 = 0; + bard->unk_2D94 = 1; + bard->unk_2D95 = 0; } void sub_80F7A7C(void) @@ -59,7 +59,7 @@ void sub_80F7A98(void) sub_81099CC(); } -void sub_80F7AA4(void) +void SetMauvilleOldMan(void) { u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2; -- cgit v1.2.3 From a2664bba2829d628672c222304ac60f5d9c858bf Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 1 Mar 2017 01:24:07 +0000 Subject: get sub_80F7CF4 a little closer --- src/mauville_old_man.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index d03042ca5..c01a51091 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -288,8 +288,7 @@ void sub_80F7CF4(void) if(oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1] != 0xFFFF) // is not the last element of the array? { - int random = (u16)Random(); - random &= 7; + u16 random = 7 % Random(); // this is a little bit closer, but the compiler prefers an AND instead of division. i assume its because the compiler wants to avoid division by zero, however using an & causes this order to not be close anymore. sub_80EB3FC(gStringVar4, oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1]); stringPtr = StringCopy(gStringVar4, gOtherText_Is); stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]); -- cgit v1.2.3 From ddc846fa6a0d9a13cfba6f52488a66f6f4562a2d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 27 Apr 2017 15:43:31 +0200 Subject: Sort includes --- src/mauville_old_man.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index c01a51091..70bb6d669 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -1,9 +1,9 @@ #include "global.h" -#include "string_util.h" -#include "menu.h" -#include "script.h" #include "asm.h" +#include "menu.h" #include "rng.h" +#include "script.h" +#include "string_util.h" extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; -- cgit v1.2.3 From c8e8e7dcfc60ab2769c0c1ada5a580ec1c1c4d5d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 5 May 2017 16:16:54 +0200 Subject: Remove trailing whitespace --- src/mauville_old_man.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 70bb6d669..25651702d 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -28,7 +28,7 @@ void sub_80F7A34(void) oldMan->oldMan1.unk_2D94 = 0; oldMan->oldMan1.unk_2DBD = 0; - + for(i = 0; i < 6; i++) oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i]; } @@ -36,7 +36,7 @@ void sub_80F7A34(void) void sub_80F7A6C(void) { struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1; - + bard->unk_2D94 = 1; bard->unk_2D95 = 0; } @@ -49,7 +49,7 @@ void sub_80F7A7C(void) void sub_80F7A88(void) { OldMan *oldMan = &gSaveBlock1.oldMan; - + oldMan->oldMan1.unk_2D94 = 4; oldMan->oldMan1.unk_2D95 = 0; } @@ -62,7 +62,7 @@ void sub_80F7A98(void) void SetMauvilleOldMan(void) { u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2; - + switch(var) { case 0: @@ -100,7 +100,7 @@ void sub_80F7B2C(void) { u16 *scriptPtr = &gScriptResult; // why?? OldMan *oldMan = &gSaveBlock1.oldMan; - + *scriptPtr = oldMan->oldMan1.unk_2DBD; } @@ -109,15 +109,15 @@ void sub_80F7B40(void) u16 i; OldMan *oldMan = &gSaveBlock1.oldMan; //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct; - + StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName); - + for(i = 0; i < 4; i++) oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i]; - + for(i = 0; i < 6; i++) oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i]; - + oldMan->oldMan1.unk_2DBD = 1; } @@ -237,14 +237,14 @@ void sub_80F7C70(void) { u16 *scriptPtr = &gScriptResult; // again?? OldMan *oldMan = &gSaveBlock1.oldMan; - + *scriptPtr = oldMan->oldMan1.unk_2D95; } void sub_80F7C84(void) { OldMan *oldMan = &gSaveBlock1.oldMan; - + oldMan->oldMan1.unk_2D95 = 1; } @@ -266,7 +266,7 @@ void sub_80F7C90(void) void sub_80F7CC8(void) { OldMan *oldMan = &gSaveBlock1.oldMan; - + if(oldMan->oldMan1.unk_2D95 == 10) { gScriptResult = FALSE; @@ -282,7 +282,7 @@ void sub_80F7CF4(void) { u8 *stringPtr; OldMan *oldMan = &gSaveBlock1.oldMan; - + if(oldMan->oldMan2.unk1 == 0) sub_80F7DC0(); @@ -302,7 +302,7 @@ void sub_80F7CF4(void) oldMan->oldMan2.unk1 = 10; else oldMan->oldMan2.unk1++; - + gScriptResult = TRUE; } #else -- cgit v1.2.3 From a83ced6d98f301f4aade1c571d8c0cc9e43d0450 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Mon, 8 May 2017 23:13:46 -0500 Subject: fix some nonmatching functions (#284) * fix some nonmatching functions * delete trailing whitespace --- src/mauville_old_man.c | 270 +++++++++++-------------------------------------- 1 file changed, 58 insertions(+), 212 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 25651702d..11dadf380 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -121,109 +121,54 @@ void sub_80F7B40(void) oldMan->oldMan1.unk_2DBD = 1; } -// too mathy -__attribute__((naked)) void sub_80F7BA0(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - ldr r1, _080F7C48 @ =gSaveBlock1 + 0x2D94\n\ - ldr r0, _080F7C4C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r0]\n\ - adds r5, r1, 0\n\ - adds r5, 0xE\n\ - cmp r0, 0\n\ - bne _080F7BB2\n\ - adds r5, r1, 0x2\n\ -_080F7BB2:\n\ - ldr r2, _080F7C50 @ =gStringVar4\n\ - adds r4, r2, 0\n\ - movs r6, 0\n\ -_080F7BB8:\n\ - ldrh r1, [r5]\n\ - adds r5, 0x2\n\ - adds r0, r2, 0\n\ - bl sub_80EB3FC\n\ - adds r2, r0, 0\n\ - adds r7, r6, 0x1\n\ - cmp r2, r4\n\ - beq _080F7BDA\n\ - movs r1, 0x37\n\ -_080F7BCC:\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - bne _080F7BD4\n\ - strb r1, [r4]\n\ -_080F7BD4:\n\ - adds r4, 0x1\n\ - cmp r2, r4\n\ - bne _080F7BCC\n\ -_080F7BDA:\n\ - adds r4, 0x1\n\ - movs r0, 0\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - ldrh r1, [r5]\n\ - adds r5, 0x2\n\ - adds r0, r2, 0\n\ - bl sub_80EB3FC\n\ - adds r2, r0, 0\n\ - cmp r2, r4\n\ - beq _080F7C02\n\ - movs r1, 0x37\n\ -_080F7BF4:\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - bne _080F7BFC\n\ - strb r1, [r4]\n\ -_080F7BFC:\n\ - adds r4, 0x1\n\ - cmp r2, r4\n\ - bne _080F7BF4\n\ -_080F7C02:\n\ - adds r4, 0x1\n\ - movs r0, 0xFE\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - ldrh r1, [r5]\n\ - adds r5, 0x2\n\ - adds r0, r2, 0\n\ - bl sub_80EB3FC\n\ - adds r2, r0, 0\n\ - cmp r2, r4\n\ - beq _080F7C2A\n\ - movs r1, 0x37\n\ -_080F7C1C:\n\ - ldrb r0, [r4]\n\ - cmp r0, 0\n\ - bne _080F7C24\n\ - strb r1, [r4]\n\ -_080F7C24:\n\ - adds r4, 0x1\n\ - cmp r2, r4\n\ - bne _080F7C1C\n\ -_080F7C2A:\n\ - cmp r6, 0\n\ - bne _080F7C3A\n\ - movs r0, 0xFC\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ - movs r0, 0xF\n\ - strb r0, [r2]\n\ - adds r2, 0x1\n\ -_080F7C3A:\n\ - lsls r0, r7, 16\n\ - lsrs r6, r0, 16\n\ - cmp r6, 0x1\n\ - bls _080F7BB8\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080F7C48: .4byte gSaveBlock1 + 0x2D94\n\ -_080F7C4C: .4byte gSpecialVar_0x8004\n\ -_080F7C50: .4byte gStringVar4\n\ - .syntax divided"); + struct UnkMauvilleOldManStruct *oldMan = &gSaveBlock1.oldMan.oldMan1; + u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match. + u16 *r5; + u16 i; + u8 *ptr; + u8 *r4; + + r5 = oldMan->mauvilleOldMan_ecArray2; + if (specialVar == 0) + r5 = oldMan->mauvilleOldMan_ecArray; + ptr = gStringVar4; + r4 = ptr; + for (i = 0; i < 2; i++) + { + ptr = sub_80EB3FC(ptr, *(r5++)); + while (ptr != r4) + { + if (*r4 == 0) + *r4 = 0x37; + r4++; + } + r4++; + *(ptr++) = 0; + ptr = sub_80EB3FC(ptr, *(r5++)); + while (ptr != r4) + { + if (*r4 == 0) + *r4 = 0x37; + r4++; + } + r4++; + *(ptr++) = 0xFE; + ptr = sub_80EB3FC(ptr, *(r5++)); + while (ptr != r4) + { + if (*r4 == 0) + *r4 = 0x37; + r4++; + } + //_080F7C2A + if (i == 0) + { + *(ptr++) = EXT_CTRL_CODE_BEGIN; + *(ptr++) = 0xF; + } + } } void sub_80F7C54(void) @@ -276,131 +221,32 @@ void sub_80F7CC8(void) gScriptResult = TRUE; } -// someone fix this -#ifdef NONMATCHING void sub_80F7CF4(void) { - u8 *stringPtr; - OldMan *oldMan = &gSaveBlock1.oldMan; + struct UnkMauvilleOldManStruct2 *oldMan = &gSaveBlock1.oldMan.oldMan2; - if(oldMan->oldMan2.unk1 == 0) + if(oldMan->unk1 == 0) sub_80F7DC0(); - if(oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1] != 0xFFFF) // is not the last element of the array? + if(oldMan->mauvilleOldMan_ecArray[oldMan->unk1] != 0xFFFF) // is not the last element of the array? { - u16 random = 7 % Random(); // this is a little bit closer, but the compiler prefers an AND instead of division. i assume its because the compiler wants to avoid division by zero, however using an & causes this order to not be close anymore. - sub_80EB3FC(gStringVar4, oldMan->oldMan2.mauvilleOldMan_ecArray[oldMan->oldMan2.unk1]); - stringPtr = StringCopy(gStringVar4, gOtherText_Is); + u8 *stringPtr; + u32 random = Random(); + + random %= 8; + stringPtr = sub_80EB3FC(gStringVar4, oldMan->mauvilleOldMan_ecArray[oldMan->unk1]); + stringPtr = StringCopy(stringPtr, gOtherText_Is); stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]); StringCopy(stringPtr, gOtherText_DontYouAgree); } else { - StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->oldMan2.mauvilleOldMan_ecArray2[oldMan->oldMan2.unk2++]]); + StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->mauvilleOldMan_ecArray2[oldMan->unk2++]]); } if(!(Random() % 10)) - oldMan->oldMan2.unk1 = 10; + oldMan->unk1 = 10; else - oldMan->oldMan2.unk1++; + oldMan->unk1++; gScriptResult = TRUE; } -#else -__attribute__((naked)) -void sub_80F7CF4(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r5, _080F7D50 @ =gSaveBlock1 + 0x2D94\n\ - ldrb r0, [r5, 0x1]\n\ - cmp r0, 0\n\ - bne _080F7D02\n\ - bl sub_80F7DC0\n\ -_080F7D02:\n\ - ldrb r0, [r5, 0x1]\n\ - lsls r0, 1\n\ - adds r6, r5, 0x4\n\ - adds r0, r6\n\ - ldrh r1, [r0]\n\ - ldr r0, _080F7D54 @ =0x0000ffff\n\ - cmp r1, r0\n\ - beq _080F7D68\n\ - bl Random\n\ - adds r4, r0, 0\n\ - lsls r4, 16\n\ - lsrs r4, 16\n\ - movs r0, 0x7\n\ - ands r4, r0\n\ - ldr r0, _080F7D58 @ =gStringVar4\n\ - ldrb r1, [r5, 0x1]\n\ - lsls r1, 1\n\ - adds r1, r6\n\ - ldrh r1, [r1]\n\ - bl sub_80EB3FC\n\ - adds r2, r0, 0\n\ - ldr r1, _080F7D5C @ =gOtherText_Is\n\ - bl StringCopy\n\ - adds r2, r0, 0\n\ - ldr r0, _080F7D60 @ =gUnknown_083E5388\n\ - lsls r4, 2\n\ - adds r4, r0\n\ - ldr r1, [r4]\n\ - adds r0, r2, 0\n\ - bl StringCopy\n\ - adds r2, r0, 0\n\ - ldr r1, _080F7D64 @ =gOtherText_DontYouAgree\n\ - bl StringCopy\n\ - b _080F7D88\n\ - .align 2, 0\n\ -_080F7D50: .4byte gSaveBlock1 + 0x2D94\n\ -_080F7D54: .4byte 0x0000ffff\n\ -_080F7D58: .4byte gStringVar4\n\ -_080F7D5C: .4byte gOtherText_Is\n\ -_080F7D60: .4byte gUnknown_083E5388\n\ -_080F7D64: .4byte gOtherText_DontYouAgree\n\ -_080F7D68:\n\ - ldr r0, _080F7DA0 @ =gStringVar4\n\ - ldr r3, _080F7DA4 @ =gUnknown_083E53A8\n\ - ldrb r1, [r5, 0x2]\n\ - adds r2, r1, 0x1\n\ - strb r2, [r5, 0x2]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r2, r5, 0\n\ - adds r2, 0x18\n\ - adds r1, r2\n\ - ldrb r1, [r1]\n\ - lsls r1, 2\n\ - adds r1, r3\n\ - ldr r1, [r1]\n\ - bl StringCopy\n\ -_080F7D88:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _080F7DA8\n\ - movs r0, 0xA\n\ - b _080F7DAC\n\ - .align 2, 0\n\ -_080F7DA0: .4byte gStringVar4\n\ -_080F7DA4: .4byte gUnknown_083E53A8\n\ -_080F7DA8:\n\ - ldrb r0, [r5, 0x1]\n\ - adds r0, 0x1\n\ -_080F7DAC:\n\ - strb r0, [r5, 0x1]\n\ - ldr r1, _080F7DBC @ =gScriptResult\n\ - movs r0, 0x1\n\ - strh r0, [r1]\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080F7DBC: .4byte gScriptResult\n\ - .syntax divided"); -} -#endif -- cgit v1.2.3 From 010eb456d63b0d644285f263f310d73bfb9646b2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 20 May 2017 17:49:54 +0200 Subject: Decrease indentation level of switches --- src/mauville_old_man.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 11dadf380..2fa889a15 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -65,21 +65,21 @@ void SetMauvilleOldMan(void) switch(var) { - case 0: - sub_80F7A34(); - break; - case 1: - sub_80F7A6C(); - break; - case 2: - sub_80F7A98(); - break; - case 3: - sub_80F7A7C(); - break; - case 4: - sub_80F7A88(); - break; + case 0: + sub_80F7A34(); + break; + case 1: + sub_80F7A6C(); + break; + case 2: + sub_80F7A98(); + break; + case 3: + sub_80F7A7C(); + break; + case 4: + sub_80F7A88(); + break; } sub_80F83D0(); } -- cgit v1.2.3 From 7c4f99560812cd5a8eedb124a9bc99c3f4243438 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 11:37:35 +0200 Subject: Remove duplicate strings.h declarations --- src/mauville_old_man.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 11dadf380..d6cbbce53 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -4,6 +4,7 @@ #include "rng.h" #include "script.h" #include "string_util.h" +#include "strings.h" extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; @@ -14,8 +15,6 @@ extern void sub_80F83D0(void); extern void sub_80F7F80(u8); extern u16 sub_80EB8EC(void); extern void sub_80F7DC0(void); -extern u8 gOtherText_Is[]; -extern u8 gOtherText_DontYouAgree[]; extern u32 gUnknown_083E5388[]; extern u32 gUnknown_083E53A8[]; -- cgit v1.2.3 From 4d2b22a899c11dfcacfec6889968ab01655a3fe3 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 14:53:51 +0200 Subject: Add headers --- src/mauville_old_man.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index d6fb33917..d5d2ae3a9 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -1,5 +1,7 @@ +#include "easy_chat.h" +#include "trader.h" #include "global.h" -#include "asm.h" +#include "mauville_old_man.h" #include "menu.h" #include "rng.h" #include "script.h" @@ -9,12 +11,6 @@ extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; -extern void sub_80F83F8(void); -extern void sub_81099CC(void); -extern void sub_80F83D0(void); -extern void sub_80F7F80(u8); -extern u16 sub_80EB8EC(void); -extern void sub_80F7DC0(void); extern u32 gUnknown_083E5388[]; extern u32 gUnknown_083E53A8[]; -- cgit v1.2.3 From f26daa3d6954d2db3a7c44b79d319a7a084462c2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 15:01:42 +0200 Subject: Sort includes --- src/mauville_old_man.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mauville_old_man.c') diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index d5d2ae3a9..93684fc60 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -1,12 +1,12 @@ -#include "easy_chat.h" -#include "trader.h" #include "global.h" #include "mauville_old_man.h" +#include "easy_chat.h" #include "menu.h" #include "rng.h" #include "script.h" #include "string_util.h" #include "strings.h" +#include "trader.h" extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; -- cgit v1.2.3