summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/region_map.h1
-rw-r--r--include/slot_machine.h1
-rw-r--r--include/trainer_card.h2
-rw-r--r--src/debug/kagaya_debug_menu.c497
-rw-r--r--src/field/slot_machine.c50
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