diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-01-04 16:32:45 -0600 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-01-04 14:32:45 -0800 |
commit | 41d2b112ebdf91da3d85b4495ceb95e69d69ef0a (patch) | |
tree | ca825845e7dfeda33d9d5af48a15bfafaf865216 /src | |
parent | 370c7f78539698902907f262721fe60e606c774d (diff) |
almost finish decompiling matsuda_debug_menu.c (#158)
* almost finish decompiling matsuda_debug_menu.c
* rename sub_8071C20 to CloseMenu
Diffstat (limited to 'src')
-rw-r--r-- | src/matsuda_debug_menu.c | 940 | ||||
-rw-r--r-- | src/menu.c | 2 | ||||
-rw-r--r-- | src/mori_debug_menu.c | 20 | ||||
-rw-r--r-- | src/start_menu.c | 6 |
4 files changed, 477 insertions, 491 deletions
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index c74f4db0d..131369e91 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -13,12 +13,18 @@ #define BIT(n) (1 << (n)) +extern u8 gUnknown_0203856C; +extern u8 gUnknown_0203857D[][64]; +extern u16 gUnknown_02038670[]; +extern u16 gUnknown_02038678[]; +extern u16 gUnknown_02038680[]; +extern u8 gUnknown_02038690[]; +extern u8 gUnknown_02038694; extern u8 gIsLinkContest; extern u8 gUnknown_0203869B; extern u8 gContestPlayerMonIndex; extern u16 gScriptContestCategory; extern u16 gScriptContestRank; -extern u8 (*gCallback_03004AE8)(void); extern struct Window gMenuWindow; @@ -30,14 +36,14 @@ extern u16 gUnknown_03004288; extern u16 gUnknown_03004280; extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B8; +extern struct Window gUnknown_03004210; +extern u8 (*gCallback_03004AE8)(void); -extern u8 gUnknown_02038694; -extern u8 gUnknown_083C9296[]; -extern u8 gUnknown_083C92A8[]; -extern u8 gUnknown_083C9282[]; -extern u8 gUnknown_0203857D[][64]; extern u8 gUnknown_083C926E[][2]; +extern u8 gUnknown_083C9282[]; extern const u8 gUnknown_083C928E[][2]; +extern u8 gUnknown_083C9296[]; +extern u8 gUnknown_083C92A8[]; extern u8 unk_2000000[]; extern u8 gMatsudaDebugMenu_GoBackText[]; extern u8 gMatsudaDebugMenu_BattlePointsText[]; @@ -46,6 +52,8 @@ extern u8 gMatsudaDebugMenu_StartText[]; extern struct SpritePalette gUnknown_083C92BC; extern struct SpriteSheet gUnknown_083C92B4; extern struct SpriteTemplate gSpriteTemplate_83C92CC; +extern void (*gUnknown_083C92E4[][2])(struct Sprite *, s8); +extern u32 gUnknown_083C9400[2]; extern u8 gMoveNames[][13]; @@ -94,6 +102,10 @@ static void sub_80A9F10(u8); static void sub_80AA10C(void); static void sub_80AA5BC(u8); static void sub_80AA614(u8, u8); +static void sub_80AAD08(struct Sprite *, s8); +extern void sub_80AB184(void); +extern void sub_80AB47C(void); +extern int sub_80B2A7C(u8); //Don't know return type size u8 unref_sub_80A9B28(void) { @@ -117,7 +129,7 @@ static bool8 sub_80A9B78(void) gCallback_03004AE8 = gMatsudaDebugMenuActions[choice].func; return FALSE; case -1: - sub_8071C20(); + CloseMenu(); return TRUE; } } @@ -190,7 +202,7 @@ static void sub_80A9CF8(u8 taskId) { DestroyTask(gTasks[taskId].data[10]); DestroyTask(taskId); - sub_8071C20(); + CloseMenu(); } } @@ -223,7 +235,7 @@ static void sub_80A9DD8(u8 taskId) { DestroyTask(gTasks[taskId].data[10]); DestroyTask(taskId); - sub_8071C20(); + CloseMenu(); } static void sub_80A9E04(u8 taskId) @@ -532,186 +544,48 @@ void SetDebugMonForContest(void) SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (const u8 *) &gContestMons[gContestPlayerMonIndex].moves[3]); } -// too complicated -__attribute__((naked)) void sub_80AA754(struct Sprite *sprite) { - asm(".syntax unified\n\ - push {r4,lr}\n\ - adds r4, r0, 0\n\ - ldr r0, _080AA774 @ =gMain\n\ - ldrh r1, [r0, 0x30]\n\ - cmp r1, 0x20\n\ - beq _080AA7A2\n\ - cmp r1, 0x20\n\ - bgt _080AA782\n\ - cmp r1, 0x2\n\ - beq _080AA7F8\n\ - cmp r1, 0x2\n\ - bgt _080AA778\n\ - cmp r1, 0x1\n\ - beq _080AA7D8\n\ - b _080AA870\n\ - .align 2, 0\n\ -_080AA774: .4byte gMain\n\ -_080AA778:\n\ - cmp r1, 0x8\n\ - beq _080AA868\n\ - cmp r1, 0x10\n\ - beq _080AA7A2\n\ - b _080AA870\n\ -_080AA782:\n\ - cmp r1, 0x80\n\ - beq _080AA7C2\n\ - cmp r1, 0x80\n\ - bgt _080AA790\n\ - cmp r1, 0x40\n\ - beq _080AA7AC\n\ - b _080AA870\n\ -_080AA790:\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - cmp r1, r0\n\ - beq _080AA814\n\ - movs r0, 0x80\n\ - lsls r0, 2\n\ - cmp r1, r0\n\ - beq _080AA834\n\ - b _080AA870\n\ -_080AA7A2:\n\ - ldrh r0, [r4, 0x2E]\n\ - movs r1, 0x1\n\ - eors r0, r1\n\ - strh r0, [r4, 0x2E]\n\ - b _080AA870\n\ -_080AA7AC:\n\ - ldrh r1, [r4, 0x30]\n\ - movs r2, 0x30\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - bne _080AA7BC\n\ - movs r0, 0x8\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7BC:\n\ - subs r0, r1, 0x1\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7C2:\n\ - ldrh r1, [r4, 0x30]\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - cmp r0, 0x8\n\ - bne _080AA7D2\n\ - movs r0, 0\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7D2:\n\ - adds r0, r1, 0x1\n\ - strh r0, [r4, 0x30]\n\ - b _080AA870\n\ -_080AA7D8:\n\ - ldr r2, _080AA7F4 @ =gUnknown_083C92E4\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r4, r1]\n\ - lsls r0, 2\n\ - movs r3, 0x30\n\ - ldrsh r1, [r4, r3]\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldr r2, [r0]\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - b _080AA84E\n\ - .align 2, 0\n\ -_080AA7F4: .4byte gUnknown_083C92E4\n\ -_080AA7F8:\n\ - ldr r1, _080AA810 @ =gUnknown_083C92E4\n\ - movs r0, 0x2E\n\ - ldrsh r2, [r4, r0]\n\ - lsls r2, 2\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - lsls r0, 3\n\ - adds r2, r0\n\ - adds r2, r1\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - b _080AA84A\n\ - .align 2, 0\n\ -_080AA810: .4byte gUnknown_083C92E4\n\ -_080AA814:\n\ - ldr r2, _080AA830 @ =gUnknown_083C92E4\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r4, r1]\n\ - lsls r0, 2\n\ - movs r3, 0x30\n\ - ldrsh r1, [r4, r3]\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldr r2, [r0]\n\ - adds r0, r4, 0\n\ - movs r1, 0xA\n\ - b _080AA84E\n\ - .align 2, 0\n\ -_080AA830: .4byte gUnknown_083C92E4\n\ -_080AA834:\n\ - ldr r1, _080AA864 @ =gUnknown_083C92E4\n\ - movs r0, 0x2E\n\ - ldrsh r2, [r4, r0]\n\ - lsls r2, 2\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - lsls r0, 3\n\ - adds r2, r0\n\ - adds r2, r1\n\ - movs r1, 0xA\n\ - negs r1, r1\n\ -_080AA84A:\n\ - ldr r2, [r2]\n\ - adds r0, r4, 0\n\ -_080AA84E:\n\ - bl _call_via_r2\n\ - ldrh r0, [r4, 0x32]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldrh r1, [r4, 0x34]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - bl sub_80AA614\n\ - b _080AA870\n\ - .align 2, 0\n\ -_080AA864: .4byte gUnknown_083C92E4\n\ -_080AA868:\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl sub_80AAD08\n\ -_080AA870:\n\ - ldr r2, _080AA898 @ =gUnknown_083C9296\n\ - movs r0, 0x2E\n\ - ldrsh r1, [r4, r0]\n\ - movs r3, 0x30\n\ - ldrsh r0, [r4, r3]\n\ - lsls r0, 1\n\ - adds r1, r0\n\ - adds r1, r2\n\ - ldrb r0, [r1]\n\ - strh r0, [r4, 0x20]\n\ - ldr r1, _080AA89C @ =gUnknown_083C92A8\n\ - movs r2, 0x30\n\ - ldrsh r0, [r4, r2]\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - strh r0, [r4, 0x22]\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080AA898: .4byte gUnknown_083C9296\n\ -_080AA89C: .4byte gUnknown_083C92A8\n\ - .syntax divided"); + switch (gMain.newAndRepeatedKeys) + { + case 0x10: + case 0x20: + sprite->data0 ^= 1; + break; + case 0x40: + if (sprite->data1 == 0) + sprite->data1 = 8; + else + sprite->data1--; + break; + case 0x80: + if (sprite->data1 == 8) + sprite->data1 = 0; + else + sprite->data1++; + break; + case 0x1: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case 0x2: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case 0x100: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case 0x200: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case 0x8: + sub_80AAD08(sprite, 1); + break; + } + sprite->pos1.x = gUnknown_083C9296[sprite->data0 + sprite->data1 * 2]; + sprite->pos1.y = gUnknown_083C92A8[sprite->data1]; } static void sub_80AA8A0(struct Sprite *sprite, s8 var1, u8 var2) @@ -849,298 +723,410 @@ void sub_80AABB0(struct Sprite *sprite, u8 var2) sub_80AA4F0(sprite->data2, 3); } -// hard/weird function #2 -__attribute__((naked)) -void sub_80AABF0(struct Sprite *sprite, u8 var2) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - movs r0, 0xFF\n\ - cmp r1, 0\n\ - ble _080AABFE\n\ - movs r0, 0x1\n\ -_080AABFE:\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - ldrh r1, [r5, 0x34]\n\ - adds r0, r1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0\n\ - bge _080AAC14\n\ - movs r4, 0\n\ - b _080AAC1A\n\ -_080AAC14:\n\ - cmp r0, 0x4\n\ - ble _080AAC1A\n\ - movs r4, 0x4\n\ -_080AAC1A:\n\ - lsls r4, 24\n\ - lsrs r0, r4, 24\n\ - bl sub_80AA5BC\n\ - asrs r4, 24\n\ - strh r4, [r5, 0x34]\n\ - ldr r0, _080AAC54 @ =gScriptContestCategory\n\ - strh r4, [r0]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r0, _080AAC58 @ =gScriptContestRank\n\ - ldrb r1, [r0]\n\ - adds r0, r4, 0\n\ - bl sub_80AE398\n\ - ldrh r0, [r5, 0x32]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - bl sub_80AA280\n\ - ldrh r0, [r5, 0x32]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - bl sub_80AA658\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080AAC54: .4byte gScriptContestCategory\n\ -_080AAC58: .4byte gScriptContestRank\n\ - .syntax divided"); +void sub_80AABF0(struct Sprite *sprite, s8 var2) +{ + s8 a = (var2 > 0) ? 1 : -1; + s8 r4 = sprite->data3 + a; + + if (r4 < 0) + r4 = 0; + else if (r4 > 4) + r4 = 4; + sub_80AA5BC(r4); + sprite->data3 = r4; + gScriptContestCategory = sprite->data3; + sub_80AE398(sprite->data3, gScriptContestRank); + sub_80AA280(sprite->data2); + sub_80AA658(sprite->data2); } -/* - thumb_func_start sub_80AABF0 -sub_80AABF0: @ 80AABF0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - movs r0, 0xFF - cmp r1, 0 - ble _080AABFE - movs r0, 0x1 -_080AABFE: - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r5, 0x34] - adds r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - asrs r0, 24 - cmp r0, 0 - bge _080AAC14 - movs r4, 0 - b _080AAC1A -_080AAC14: - cmp r0, 0x4 - ble _080AAC1A - movs r4, 0x4 -_080AAC1A: - lsls r4, 24 - lsrs r0, r4, 24 - bl sub_80AA5BC - asrs r4, 24 - strh r4, [r5, 0x34] - ldr r0, _080AAC54 @ =gScriptContestCategory - strh r4, [r0] - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080AAC58 @ =gScriptContestRank - ldrb r1, [r0] - adds r0, r4, 0 - bl sub_80AE398 - ldrh r0, [r5, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80AA280 - ldrh r0, [r5, 0x32] - lsls r0, 24 - lsrs r0, 24 - bl sub_80AA658 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080AAC54: .4byte gScriptContestCategory -_080AAC58: .4byte gScriptContestRank - thumb_func_end sub_80AABF0 -*/ +void sub_80AAC5C(struct Sprite *sprite, s8 var2) +{ + if (var2 > 0) + gScriptContestRank++; + else if (gScriptContestRank != 0) + gScriptContestRank--; + if (gScriptContestRank > 3) + gScriptContestRank = 3; + sub_80AA5E8(gScriptContestRank); + sub_80AE398(gScriptContestCategory, gScriptContestRank); + sub_80AA280(sprite->data2); + sub_80AA658(sprite->data2); +} +void sub_80AACC4(void) +{ + UpdatePaletteFade(); + if (!gPaletteFade.active) + { + SetDebugMonForContest(); + if (!(gIsLinkContest & 1)) + sub_80AE82C(unk_2000000[0]); + SetMainCallback2(sub_80AB47C); + } +} + +void sub_80AAD08(struct Sprite *sprite, s8 var2) +{ + if (var2 == 1) + { + unk_2000000[0] = sprite->data3; + SetMainCallback2(sub_80AACC4); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + } +} + +void sub_80AAD44(struct Sprite *sprite, s8 var2) +{ + if (var2 == 1) + { + int i; + + SetDebugMonForContest(); + for (i = 0; i < 4; i++) + gUnknown_02038670[i] = sub_80AE770(i, gScriptContestCategory); + SetMainCallback2(sub_805469C); + } +} + +//Do this later /* - thumb_func_start sub_80AA754 -sub_80AA754: @ 80AA754 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080AA774 @ =gMain - ldrh r1, [r0, 0x30] - cmp r1, 0x20 - beq _080AA7A2 - cmp r1, 0x20 - bgt _080AA782 - cmp r1, 0x2 - beq _080AA7F8 - cmp r1, 0x2 - bgt _080AA778 - cmp r1, 0x1 - beq _080AA7D8 - b _080AA870 - .align 2, 0 -_080AA774: .4byte gMain -_080AA778: - cmp r1, 0x8 - beq _080AA868 - cmp r1, 0x10 - beq _080AA7A2 - b _080AA870 -_080AA782: - cmp r1, 0x80 - beq _080AA7C2 - cmp r1, 0x80 - bgt _080AA790 - cmp r1, 0x40 - beq _080AA7AC - b _080AA870 -_080AA790: - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - beq _080AA814 - movs r0, 0x80 - lsls r0, 2 - cmp r1, r0 - beq _080AA834 - b _080AA870 -_080AA7A2: - ldrh r0, [r4, 0x2E] - movs r1, 0x1 - eors r0, r1 - strh r0, [r4, 0x2E] - b _080AA870 -_080AA7AC: - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080AA7BC - movs r0, 0x8 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7BC: - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7C2: - ldrh r1, [r4, 0x30] - movs r3, 0x30 - ldrsh r0, [r4, r3] - cmp r0, 0x8 - bne _080AA7D2 - movs r0, 0 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7D2: - adds r0, r1, 0x1 - strh r0, [r4, 0x30] - b _080AA870 -_080AA7D8: - ldr r2, _080AA7F4 @ =gUnknown_083C92E4 - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r1, 3 - adds r0, r1 - adds r0, r2 - ldr r2, [r0] - adds r0, r4, 0 - movs r1, 0x1 - b _080AA84E - .align 2, 0 -_080AA7F4: .4byte gUnknown_083C92E4 -_080AA7F8: - ldr r1, _080AA810 @ =gUnknown_083C92E4 - movs r0, 0x2E - ldrsh r2, [r4, r0] - lsls r2, 2 - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r2, r0 - adds r2, r1 - movs r1, 0x1 - negs r1, r1 - b _080AA84A - .align 2, 0 -_080AA810: .4byte gUnknown_083C92E4 -_080AA814: - ldr r2, _080AA830 @ =gUnknown_083C92E4 - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r0, 2 - movs r3, 0x30 - ldrsh r1, [r4, r3] - lsls r1, 3 - adds r0, r1 - adds r0, r2 - ldr r2, [r0] - adds r0, r4, 0 - movs r1, 0xA - b _080AA84E - .align 2, 0 -_080AA830: .4byte gUnknown_083C92E4 -_080AA834: - ldr r1, _080AA864 @ =gUnknown_083C92E4 - movs r0, 0x2E - ldrsh r2, [r4, r0] - lsls r2, 2 - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 3 - adds r2, r0 - adds r2, r1 - movs r1, 0xA - negs r1, r1 -_080AA84A: - ldr r2, [r2] - adds r0, r4, 0 -_080AA84E: - bl _call_via_r2 - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x34] - lsls r1, 24 - lsrs r1, 24 - bl sub_80AA614 - b _080AA870 - .align 2, 0 -_080AA864: .4byte gUnknown_083C92E4 -_080AA868: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80AAD08 -_080AA870: - ldr r2, _080AA898 @ =gUnknown_083C9296 - movs r0, 0x2E - ldrsh r1, [r4, r0] - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - strh r0, [r4, 0x20] - ldr r1, _080AA89C @ =gUnknown_083C92A8 - movs r2, 0x30 - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x22] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080AA898: .4byte gUnknown_083C9296 -_080AA89C: .4byte gUnknown_083C92A8 - thumb_func_end sub_80AA754 +void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d) +{ + u32 r5; + u16 r7; + u8 r7_2; + //u32 sp44; + //u32 sp48; + u32 sp58; + + gMain.state = 0; + + r5 = d + 1; + //Could also be DmaClear32 + DmaFill32(3, 0, (u8 *)VRAM + 0x18000 - r5 * 256, 0x100); + + r7 = StringLength(string); + if (r7 > 8) + r7 = 8; + sp58 = d * 2; + + //More stuff + + r7_2 = 0x7C - sp58; + +} */ + +__attribute__((naked)) +void sub_80AAD84(u8 *string, u8 b, u8 c, u8 d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x64\n\ + mov r9, r0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + str r1, [sp, 0x48]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x4C]\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + mov r10, r3\n\ + mov r5, r10\n\ + adds r5, 0x1\n\ + lsls r1, r5, 8\n\ + ldr r0, _080AAEC4 @ =0x06018000\n\ + subs r1, r0, r1\n\ + movs r0, 0\n\ + str r0, [sp, 0x44]\n\ + ldr r4, _080AAEC8 @ =0x040000d4\n\ + add r0, sp, 0x44\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + ldr r0, _080AAECC @ =0x85000040\n\ + str r0, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + mov r0, r9\n\ + bl StringLength\n\ + lsls r0, 16\n\ + lsrs r7, r0, 16\n\ + cmp r7, 0x8\n\ + bls _080AADD0\n\ + movs r7, 0x8\n\ +_080AADD0:\n\ + movs r6, 0\n\ + mov r8, r5\n\ + mov r1, r10\n\ + lsls r1, 1\n\ + str r1, [sp, 0x58]\n\ + ldr r2, [sp, 0x48]\n\ + adds r2, 0x20\n\ + str r2, [sp, 0x5C]\n\ + cmp r6, r7\n\ + bge _080AAE1E\n\ + add r5, sp, 0x40\n\ + add r0, sp, 0x20\n\ + mov r10, r0\n\ + ldr r2, _080AAEC4 @ =0x06018000\n\ +_080AADEC:\n\ + mov r1, r9\n\ + adds r0, r1, r6\n\ + ldrb r0, [r0]\n\ + strb r0, [r5]\n\ + movs r0, 0xFF\n\ + strb r0, [r5, 0x1]\n\ + mov r0, sp\n\ + adds r1, r5, 0\n\ + str r2, [sp, 0x60]\n\ + bl sub_80034D4\n\ + mov r1, r8\n\ + lsls r0, r1, 8\n\ + ldr r2, [sp, 0x60]\n\ + subs r0, r2, r0\n\ + mov r1, r10\n\ + str r1, [r4]\n\ + str r0, [r4, 0x4]\n\ + ldr r0, _080AAED0 @ =0x84000008\n\ + str r0, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + adds r2, 0x20\n\ + adds r6, 0x1\n\ + cmp r6, r7\n\ + blt _080AADEC\n\ +_080AAE1E:\n\ + movs r1, 0x7C\n\ + ldr r2, [sp, 0x58]\n\ + subs r1, r2\n\ + lsls r1, 24\n\ + lsrs r7, r1, 24\n\ + ldr r0, _080AAED4 @ =gMain\n\ + mov r9, r0\n\ + lsls r3, r7, 3\n\ + add r3, r9\n\ + ldr r0, _080AAED8 @ =gUnknown_083C9400\n\ + ldr r1, [r0]\n\ + ldr r2, [r0, 0x4]\n\ + str r1, [sp, 0x50]\n\ + str r2, [sp, 0x54]\n\ + str r1, [r3, 0x3C]\n\ + str r2, [r3, 0x40]\n\ + mov r2, r8\n\ + lsls r0, r2, 3\n\ + movs r1, 0x80\n\ + lsls r1, 3\n\ + adds r2, r1, 0\n\ + subs r2, r0\n\ + adds r6, r3, 0\n\ + adds r6, 0x40\n\ + ldr r0, _080AAEDC @ =0x000003ff\n\ + mov r8, r0\n\ + mov r1, r8\n\ + ands r2, r1\n\ + ldrh r5, [r6]\n\ + ldr r4, _080AAEE0 @ =0xfffffc00\n\ + adds r0, r4, 0\n\ + ands r0, r5\n\ + orrs r0, r2\n\ + strh r0, [r6]\n\ + ldrh r5, [r3, 0x3E]\n\ + ldr r2, _080AAEE4 @ =0xfffffe00\n\ + adds r0, r2, 0\n\ + ands r0, r5\n\ + ldr r1, [sp, 0x48]\n\ + orrs r0, r1\n\ + strh r0, [r3, 0x3E]\n\ + adds r3, 0x3C\n\ + add r0, sp, 0x4C\n\ + ldrb r0, [r0]\n\ + strb r0, [r3]\n\ + adds r1, r7, 0x1\n\ + lsls r1, 3\n\ + mov r0, r9\n\ + adds r7, r1, r0\n\ + ldr r0, [sp, 0x50]\n\ + ldr r1, [sp, 0x54]\n\ + str r0, [r7, 0x3C]\n\ + str r1, [r7, 0x40]\n\ + ldrh r0, [r6]\n\ + lsls r0, 22\n\ + lsrs r0, 22\n\ + adds r0, 0x4\n\ + adds r5, r7, 0\n\ + adds r5, 0x40\n\ + mov r1, r8\n\ + ands r0, r1\n\ + ldrh r3, [r5]\n\ + ands r4, r3\n\ + orrs r4, r0\n\ + strh r4, [r5]\n\ + ldrh r0, [r7, 0x3E]\n\ + ands r2, r0\n\ + ldr r0, [sp, 0x5C]\n\ + orrs r2, r0\n\ + strh r2, [r7, 0x3E]\n\ + adds r1, r7, 0\n\ + adds r1, 0x3C\n\ + add r2, sp, 0x4C\n\ + ldrb r2, [r2]\n\ + strb r2, [r1]\n\ + add sp, 0x64\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080AAEC4: .4byte 0x06018000\n\ +_080AAEC8: .4byte 0x040000d4\n\ +_080AAECC: .4byte 0x85000040\n\ +_080AAED0: .4byte 0x84000008\n\ +_080AAED4: .4byte gMain\n\ +_080AAED8: .4byte gUnknown_083C9400\n\ +_080AAEDC: .4byte 0x000003ff\n\ +_080AAEE0: .4byte 0xfffffc00\n\ +_080AAEE4: .4byte 0xfffffe00\n\ + .syntax divided\n"); +} + +void unref_sub_80AAEE8(s32 a, u8 b, u8 c, u8 d) +{ + u8 string[12]; + u8 offset = 0; + + if (a < 0) + { + string[0] = 0xAE; + offset = 1; + } + ConvertIntToDecimalStringN(string + offset, (a < 0) ? -a : a, 0, 8); + sub_80AAD84(string, b, c, d); +} + +void sub_80AAF30(void) +{ + s32 i; + + gUnknown_0203856C = 1; + gContestPlayerMonIndex = 3; + sub_80AE098(0); + for (i = 3; i > -1; i--) + gUnknown_02038690[i] = 3 - i; + for (i = 0; i < 3; i++) + { + gUnknown_02038670[i] = 0; + gUnknown_02038680[i] = 0; + gUnknown_02038678[i] = 0; + memcpy(&gContestMons[i], &gContestMons[3], 0x40); + } + gUnknown_02038670[3] = 0x12C; + gUnknown_02038680[3] = 0x190; + gUnknown_02038678[3] = 0x190; + sub_80B2A7C(0xFE); +} + +//Don't know size of return type +int MatsudaDebugMenu_SetHighScore(void) +{ + sub_80AAF30(); + CloseMenu(); + return 1; +} + +//Don't know size of return type +int MatsudaDebugMenu_ResetHighScore(void) +{ + s32 i; + + gUnknown_0203856C = 0; + for (i = 0; i < 4; i++) + { + gUnknown_02038670[i] = 0; + gUnknown_02038680[i] = 0; + gUnknown_02038678[i] = 0; + } + CloseMenu(); + return 1; +} + +//Don't know size of return type +int MatsudaDebugMenu_SetArtMuseumItems(void) +{ + s32 i; + + gContestPlayerMonIndex = 3; + sub_80AE098(0); + for (i = 3; i > -1; i--) + gUnknown_02038690[i] = 3 - i; + for (gScriptContestCategory = 0; gScriptContestCategory < 5; gScriptContestCategory++) + sub_80B2A7C(0xFF); + CloseMenu(); + return 1; +} + +void unref_sub_80AB084(u8 *text) +{ + u16 savedIme; + u8 *addr; + size_t size; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_DISPCNT = 0x1F40; + + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT = 8; + ResetTasks(); + ResetSpriteData(); + SetMainCallback2(sub_80AB184); + + addr = (void *)VRAM; + size = 0x18000; + while(1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if(size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + SetUpWindowConfig(&gWindowConfig_81E6FD8); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); + LoadFontDefaultPalette(&gWindowConfig_81E6FD8); + sub_8003460(&gUnknown_03004210, text, 1, 9, 7); +} + +void sub_80AB184(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; +} diff --git a/src/menu.c b/src/menu.c index 5960e2f79..4bb4dbec2 100644 --- a/src/menu.c +++ b/src/menu.c @@ -43,7 +43,7 @@ EWRAM_DATA u16 gMenuMessageBoxContentTileOffset = 0; extern const struct MenuAction gMenuYesNoItems[]; -void sub_8071C20(void) +void CloseMenu(void) { PlaySE(SE_SELECT); MenuZeroFillScreen(); diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index 44f8542a5..645aecc9e 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -37,7 +37,7 @@ bool8 sub_8083D4C(void) { if ( gMain.newKeys & A_BUTTON ) { - sub_8071C20(); + CloseMenu(); return TRUE; } else @@ -67,7 +67,7 @@ s8 MoriDebugMenu_Egg(void) { if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); - sub_8071C20(); + CloseMenu(); return 1; } @@ -76,7 +76,7 @@ s8 MoriDebugMenu_MaleEgg(void) { if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); - sub_8071C20(); + CloseMenu(); return 1; } @@ -84,21 +84,21 @@ s8 MoriDebugMenu_MaleEgg(void) s8 MoriDebugMenu_1000Steps(void) { sub_8041790(1000); - sub_8071C20(); + CloseMenu(); return 1; } s8 MoriDebugMenu_10000Steps(void) { sub_8041790(10000); - sub_8071C20(); + CloseMenu(); return 1; } s8 MoriDebugMenu_MoveTutor(void) { sub_8132670(); - sub_8071C20(); + CloseMenu(); return 1; } @@ -116,14 +116,14 @@ s8 MoriDebugMenu_BreedEgg(void) } } gSaveBlock1.filler_30B6 = -3; - sub_8071C20(); + CloseMenu(); return 1; } s8 MoriDebugMenu_LongName(void) { SetMonData(gPlayerParty, MON_DATA_NICKNAME, gUnknown_0839B257); - sub_8071C20(); + CloseMenu(); return 1; } @@ -134,7 +134,7 @@ s8 MoriDebugMenu_PokeblockCase(void) for(loopCounter = 0; loopCounter <= 39; loopCounter++) sub_810CA6C((u8)loopCounter); - sub_8071C20(); + CloseMenu(); return 1; } @@ -150,7 +150,7 @@ bool8 MoriDebugMenuProcessInput(void) case -2: return FALSE; case -1: - sub_8071C20(); + CloseMenu(); return TRUE; } } diff --git a/src/start_menu.c b/src/start_menu.c index 1e828eed1..0d9e8af2c 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -317,7 +317,7 @@ static u8 StartMenu_InputProcessCallback(void) } if(gMain.newKeys & (START_BUTTON | B_BUTTON)) { - sub_8071C20(); + CloseMenu(); return 1; } return 0; @@ -408,14 +408,14 @@ u8 StartMenu_OptionCallback(void) //When player selects EXIT u8 StartMenu_ExitCallback(void) { - sub_8071C20(); + CloseMenu(); return 1; } //When player selects RETIRE u8 StartMenu_RetireCallback(void) { - sub_8071C20(); + CloseMenu(); SafariZoneRetirePrompt(); return 1; } |