diff options
author | Cameron Hall <cameronghall@cox.net> | 2018-01-23 21:44:01 -0600 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2018-01-23 21:44:01 -0600 |
commit | 6437a2acd5b662db779352c24f34116852a1c605 (patch) | |
tree | ff89a56111c345ab9c50f4decdd0eaac3172a41c | |
parent | 3f92436f0382d1cbab019e05833702c04c3e9cc8 (diff) |
decompile kagaya_debug_menu.c
-rw-r--r-- | include/region_map.h | 1 | ||||
-rw-r--r-- | include/slot_machine.h | 1 | ||||
-rw-r--r-- | include/trainer_card.h | 2 | ||||
-rw-r--r-- | src/debug/kagaya_debug_menu.c | 497 | ||||
-rw-r--r-- | src/field/slot_machine.c | 50 |
5 files changed, 141 insertions, 410 deletions
diff --git a/include/region_map.h b/include/region_map.h index 254307052..e7a357fe2 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -68,5 +68,6 @@ void CreateRegionMapPlayerIcon(u16, u16); const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length); const u8 *CopyMapName(u8 *dest, u16 b); const u8 *CopyLocationName(u8 *dest, u16 b); +void CB2_InitFlyRegionMap(void); #endif // GUARD_REGION_MAP_H diff --git a/include/slot_machine.h b/include/slot_machine.h index f886d9239..7759ca1b2 100644 --- a/include/slot_machine.h +++ b/include/slot_machine.h @@ -75,5 +75,6 @@ struct SlotMachineEwramStruct { void PlaySlotMachine(u8 arg0, MainCallback cb); void sub_8104DA4(void); u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2); +void debug_sub_811609C(u8, void (*)(void)); #endif // GUARD_SLOT_MACHINE_H diff --git a/include/trainer_card.h b/include/trainer_card.h index 7ea1d9fc0..28cabbd09 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -32,6 +32,8 @@ void TrainerCard_ShowPlayerCard(void (*)(void)); void TrainerCard_ShowLinkCard(u8, void (*)(void)); void TrainerCard_GenerateCardForPlayer(struct TrainerCard *); u8 sub_80934C4(u8 id); +void debug_sub_80A0710(void (*)(void)); +void debug_sub_80A073C(void (*)(void)); extern struct TrainerCard gTrainerCards[4]; diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index 53e3fac1a..89df82f04 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -1,420 +1,183 @@ #if DEBUG + #include "global.h" +#include "field_effect.h" +#include "field_control_avatar.h" +#include "field_player_avatar.h" +#include "main.h" #include "menu.h" - -u8 KagayaDebugMenu_TrainerCard(); -u8 KagayaDebugMenu_CardToExchange(); -u8 KagayaDebugMenu_SlotMachine(); +#include "overworld.h" +#include "palette.h" +#include "random.h" +#include "region_map.h" +#include "script.h" +#include "slot_machine.h" +#include "trainer_card.h" + +extern u8 (*gMenuCallback)(void); + +void InitKagayaDebugMenu_B(void); +u8 debug_sub_80B061C(void); +u8 KagayaDebugMenu_TrainerCard(void); +u8 debug_sub_80B068C(void); +u8 KagayaDebugMenu_CardToExchange(void); +u8 debug_sub_80B06E0(void); +u8 KagayaDebugMenu_SlotMachine(void); +u8 Kagaya_80B0734(void); +u8 debug_sub_80B07DC(void); const u8 Str_83EBB34[] = _("Trainer’s card"); const u8 Str_83EBB43[] = _("Card to exchange"); const u8 Str_83EBB54[] = _("Slot machine"); -const struct MenuAction _83EBB64[] = { +const struct MenuAction _83EBB64[] = +{ { Str_83EBB34, KagayaDebugMenu_TrainerCard }, { Str_83EBB43, KagayaDebugMenu_CardToExchange }, { Str_83EBB54, KagayaDebugMenu_SlotMachine }, }; -__attribute__((naked)) -void InitKagayaDebugMenu_A() +u8 InitKagayaDebugMenu_A(void) { - asm( - " push {lr}\n" - " bl InitKagayaDebugMenu_B\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + InitKagayaDebugMenu_B(); + return 0; } -__attribute__((naked)) -void InitKagayaDebugMenu_B() +void InitKagayaDebugMenu_B(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._1\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xd\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl InitMenu\n" - " ldr r1, ._1 + 4\n" - " ldr r0, ._1 + 8\n" - " str r0, [r1]\n" - " add sp, sp, #0x8\n" - " pop {r0}\n" - " bx r0\n" - "._2:\n" - " .align 2, 0\n" - "._1:\n" - " .word _83EBB64\n" - " .word gMenuCallback\n" - " .word debug_sub_80B061C+1\n" - "\n" - ); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 14, 7); + Menu_PrintItems(2, 1, 3, _83EBB64); + InitMenu(0, 1, 1, 3, 0, 13); + gMenuCallback = debug_sub_80B061C; } -__attribute__((naked)) -void debug_sub_80B061C() +u8 debug_sub_80B061C(void) { - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._3 @cond_branch\n" - " mov r0, #0x0\n" - " b ._6\n" - "._3:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._5 @cond_branch\n" - " ldr r2, ._7\n" - " ldr r0, ._7 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._6\n" - "._8:\n" - " .align 2, 0\n" - "._7:\n" - " .word gMenuCallback\n" - " .word _83EBB64\n" - "._5:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._6:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + s8 input = Menu_ProcessInput(); + + if (input == -2) + { + return 0; + } + else if (input == -1) + { + CloseMenu(); + return 1; + } + else + { + gMenuCallback = _83EBB64[input].func; + return 0; + } } -__attribute__((naked)) -u8 KagayaDebugMenu_TrainerCard() +u8 KagayaDebugMenu_TrainerCard(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._9\n" - " ldr r0, ._9 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._10:\n" - " .align 2, 0\n" - "._9:\n" - " .word gMenuCallback\n" - " .word debug_sub_80B068C+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = debug_sub_80B068C; + return 0; } -__attribute__((naked)) -void debug_sub_80B068C() +u8 debug_sub_80B068C(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._11 @cond_branch\n" - " mov r0, #0x0\n" - " b ._12\n" - "._11:\n" - " ldr r0, ._13\n" - " bl debug_sub_80A0710\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - "._12:\n" - " pop {r1}\n" - " bx r1\n" - "._14:\n" - " .align 2, 0\n" - "._13:\n" - " .word sub_805469C+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + debug_sub_80A0710(sub_805469C); + CloseMenu(); + ScriptContext2_Enable(); + return 1; + } + return 0; } -__attribute__((naked)) -u8 KagayaDebugMenu_CardToExchange() +u8 KagayaDebugMenu_CardToExchange(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._15\n" - " ldr r0, ._15 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._16:\n" - " .align 2, 0\n" - "._15:\n" - " .word gMenuCallback\n" - " .word debug_sub_80B06E0+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = debug_sub_80B06E0; + return 0; } -__attribute__((naked)) -void debug_sub_80B06E0() +u8 debug_sub_80B06E0(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._17 @cond_branch\n" - " mov r0, #0x0\n" - " b ._18\n" - "._17:\n" - " ldr r0, ._19\n" - " bl debug_sub_80A073C\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - "._18:\n" - " pop {r1}\n" - " bx r1\n" - "._20:\n" - " .align 2, 0\n" - "._19:\n" - " .word sub_805469C+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + debug_sub_80A073C(sub_805469C); + CloseMenu(); + ScriptContext2_Enable(); + return 1; + } + return 0; } -__attribute__((naked)) -u8 KagayaDebugMenu_SlotMachine() +u8 KagayaDebugMenu_SlotMachine(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._21\n" - " ldr r0, ._21 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._22:\n" - " .align 2, 0\n" - "._21:\n" - " .word gMenuCallback\n" - " .word Kagaya_80B0734+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = Kagaya_80B0734; + return 0; } -__attribute__((naked)) -void Kagaya_80B0734() +u8 Kagaya_80B0734(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._23 @cond_branch\n" - " mov r0, #0x0\n" - " b ._24\n" - "._23:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._25\n" - " bl debug_sub_811609C\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - "._24:\n" - " pop {r1}\n" - " bx r1\n" - "._26:\n" - " .align 2, 0\n" - "._25:\n" - " .word sub_805469C+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + debug_sub_811609C(Random() % 6, sub_805469C); + CloseMenu(); + ScriptContext2_Enable(); + return 1; + } + return 0; } -__attribute__((naked)) -void debug_sub_80B0770() +u8 debug_sub_80B0770(void) { - asm( - " push {r4, lr}\n" - " ldr r0, ._30\n" - " ldrb r1, [r0]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0\n" - " bne ._27 @cond_branch\n" - " bl CloseMenu\n" - " bl IsPlayerFacingSurfableFishableWater\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._29 @cond_branch\n" - " ldr r0, ._30 + 4\n" - " str r4, [r0]\n" - " mov r0, #0x9\n" - " bl FieldEffectStart\n" - " b ._29\n" - "._31:\n" - " .align 2, 0\n" - "._30:\n" - " .word gPlayerAvatar\n" - " .word gFieldEffectArguments\n" - "._27:\n" - " bl CloseMenu\n" - "._29:\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (!(gPlayerAvatar.flags & 8)) + { + CloseMenu(); + if (IsPlayerFacingSurfableFishableWater()) + { + gFieldEffectArguments[0] = 0; + FieldEffectStart(9); + } + } + else + { + CloseMenu(); + } + return 1; } -__attribute__((naked)) -void debug_sub_80B07B0() +u8 debug_sub_80B07B0(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._32\n" - " ldr r0, ._32 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._33:\n" - " .align 2, 0\n" - "._32:\n" - " .word gMenuCallback\n" - " .word debug_sub_80B07DC+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = debug_sub_80B07DC; + return 0; } -__attribute__((naked)) -void debug_sub_80B07DC() +u8 debug_sub_80B07DC(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._34 @cond_branch\n" - " mov r0, #0x0\n" - " b ._35\n" - "._34:\n" - " bl CloseMenu\n" - " ldr r0, ._36\n" - " bl SetMainCallback2\n" - " mov r0, #0x1\n" - "._35:\n" - " pop {r1}\n" - " bx r1\n" - "._37:\n" - " .align 2, 0\n" - "._36:\n" - " .word CB2_InitFlyRegionMap+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + CloseMenu(); + SetMainCallback2(CB2_InitFlyRegionMap); + return 1; + } + return 0; } -__attribute__((naked)) -void debug_sub_80B0800() +u8 debug_sub_80B0800(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl sub_8068F18\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0\n" - " beq ._38 @cond_branch\n" - " ldr r0, ._39\n" - " mov r1, #0x0\n" - " str r1, [r0]\n" - " sub r1, r2, #1\n" - " str r1, [r0, #0x4]\n" - " mov r0, #0x2c\n" - " bl FieldEffectStart\n" - "._38:\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._40:\n" - " .align 2, 0\n" - "._39:\n" - " .word gFieldEffectArguments\n" - "\n" - ); + u8 r2; + + CloseMenu(); + r2 = sub_8068F18(); + if (r2 != 0) + { + gFieldEffectArguments[0] = 0; + gFieldEffectArguments[1] = r2 - 1; + FieldEffectStart(0x2C); + } + return 1; } #endif // DEBUG diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 99770f6e3..0d4ebe3f0 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -242,57 +242,21 @@ static const u8 gUnknown_083ECE3A[]; static const u16 gUnknown_083ECE42[]; static const u16 gUnknown_083ECE48[]; -#if DEBUG -__attribute__((naked)) -void PlaySlotMachine(u8 arg0, MainCallback cb) -{ - asm("\ - push {lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r3, ._1\n\ - mov r2, #0x0\n\ - strb r2, [r3]\n\ - bl PlaySlotMachine_Internal\n\ - ldr r0, ._1 + 4\n\ - bl SetMainCallback2\n\ - pop {r0}\n\ - bx r0\n\ -._2:\n\ - .align 2, 0\n\ -._1:\n\ - .word unk_debug_bss_1_1\n\ - .word CB2_SlotMachineSetup+1"); -} -#else void PlaySlotMachine(u8 arg0, MainCallback cb) { +#if DEBUG + unk_debug_bss_1_1 = 0; +#endif PlaySlotMachine_Internal(arg0, cb); SetMainCallback2(CB2_SlotMachineSetup); } -#endif #if DEBUG -__attribute__((naked)) -void debug_sub_811609C() +void debug_sub_811609C(u8 a, void (*func)(void)) { - asm("\ - push {lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r3, ._3\n\ - mov r2, #0x1\n\ - strb r2, [r3]\n\ - bl PlaySlotMachine_Internal\n\ - ldr r0, ._3 + 4\n\ - bl SetMainCallback2\n\ - pop {r0}\n\ - bx r0\n\ -._4:\n\ - .align 2, 0\n\ -._3:\n\ - .word unk_debug_bss_1_1\n\ - .word CB2_SlotMachineSetup+1"); + unk_debug_bss_1_1 = 1; + PlaySlotMachine_Internal(a, func); + SetMainCallback2(CB2_SlotMachineSetup); } #endif |