summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCameron Hall <cameronghall@cox.net>2018-01-18 15:19:31 -0600
committerCameron Hall <cameronghall@cox.net>2018-01-18 15:19:31 -0600
commitbcbc9d040ba671df27183bff0b7356da3d9511f6 (patch)
tree28c5f7840ed305ec905e6ba0f005c4a2e74fe4d0
parent8d14b68921bf5a355e71031a9311125af114cbfe (diff)
finish adding all debug code
-rw-r--r--data/roulette.s7
-rw-r--r--src/battle/battle_controller_safari.c231
-rw-r--r--src/engine/save_failed_screen.c192
-rw-r--r--src/field/party_menu.c64
4 files changed, 490 insertions, 4 deletions
diff --git a/data/roulette.s b/data/roulette.s
index d19508fc3..b9d096ac4 100644
--- a/data/roulette.s
+++ b/data/roulette.s
@@ -133,6 +133,13 @@ gUnknown_083F8EE8:: @ 83F8EE8
gUnknown_083F8EF4:: @ 83F8EF4
.byte 0, 3, 4, 6, 12
+.if DEBUG
+@ Could also be after English-only graphics
+gUnknown_Debug_0842510D:: @ 0x842510D
+ .string "Set COIN and Press START\n"
+ .string "Aーp1 Bーm1 R:Lー×10$"
+.endif
+
.ifdef ENGLISH
.align 2
RouletteSpritePalette_01:
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 0d193d68f..4af8adbbb 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -207,6 +207,236 @@ void SafariBufferRunCommand(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void bx_battle_menu_t6_2(void)
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r0, ._94\n\
+ ldrh r1, [r0, #0x2e]\n\
+ mov r2, #0x1\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._89 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl DestroyMenuCursor\n\
+ ldr r1, ._94 + 4\n\
+ ldr r0, ._94 + 8\n\
+ ldrb r0, [r0]\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._90 @cond_branch\n\
+ cmp r0, #0x1\n\
+ bgt ._91 @cond_branch\n\
+ cmp r0, #0\n\
+ beq ._92 @cond_branch\n\
+ b ._101\n\
+._95:\n\
+ .align 2, 0\n\
+._94:\n\
+ .word gMain\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._91:\n\
+ cmp r0, #0x2\n\
+ beq ._96 @cond_branch\n\
+ cmp r0, #0x3\n\
+ beq ._97 @cond_branch\n\
+ b ._101\n\
+._92:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x5\n\
+ b ._100\n\
+._90:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x6\n\
+ b ._100\n\
+._96:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x7\n\
+._100:\n\
+ mov r2, #0x0\n\
+ bl Emitcmd33\n\
+ b ._101\n\
+._97:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x8\n\
+ mov r2, #0x0\n\
+ bl Emitcmd33\n\
+._101:\n\
+ bl SafariBufferExecCompleted\n\
+ b ._129\n\
+._89:\n\
+ mov r3, #0x20\n\
+ add r0, r3, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._103 @cond_branch\n\
+ ldr r5, ._107\n\
+ ldr r4, ._107 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._104 @cond_branch\n\
+ b ._129\n\
+._104:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ bl nullsub_8\n\
+ ldrb r1, [r4]\n\
+ add r1, r1, r5\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x1\n\
+ b ._111\n\
+._108:\n\
+ .align 2, 0\n\
+._107:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._103:\n\
+ mov r0, #0x10\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._109 @cond_branch\n\
+ ldr r5, ._112\n\
+ ldr r4, ._112 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ add r0, r2, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._129 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ bl nullsub_8\n\
+ ldrb r1, [r4]\n\
+ add r1, r1, r5\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x1\n\
+ b ._111\n\
+._113:\n\
+ .align 2, 0\n\
+._112:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._109:\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._114 @cond_branch\n\
+ ldr r5, ._117\n\
+ ldr r4, ._117 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._129 @cond_branch\n\
+ b ._116\n\
+._118:\n\
+ .align 2, 0\n\
+._117:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._114:\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._119 @cond_branch\n\
+ ldr r5, ._122\n\
+ ldr r4, ._122 + 4\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r1, [r0]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._129 @cond_branch\n\
+._116:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ bl nullsub_8\n\
+ ldrb r1, [r4]\n\
+ add r1, r1, r5\n\
+ ldrb r0, [r1]\n\
+ mov r2, #0x2\n\
+._111:\n\
+ eor r0, r0, r2\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r4]\n\
+ add r0, r0, r5\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl sub_802E3E4\n\
+ b ._129\n\
+._123:\n\
+ .align 2, 0\n\
+._122:\n\
+ .word gActionSelectionCursor\n\
+ .word gActiveBank\n\
+._119:\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._124 @cond_branch\n\
+ ldr r0, ._127\n\
+ ldrb r2, [r0]\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._127 + 4\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ add r0, r3, #0\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._129 @cond_branch\n\
+ str r0, [sp]\n\
+ add r0, r2, #0\n\
+ add r1, r2, #0\n\
+ mov r3, #0x4\n\
+ bl move_anim_start_t3\n\
+ b ._129\n\
+._128:\n\
+ .align 2, 0\n\
+._127:\n\
+ .word gActiveBank\n\
+ .word +0x2017810\n\
+._124:\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._129 @cond_branch\n\
+ bl sub_804454C\n\
+._129:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#else
void bx_battle_menu_t6_2(void)
{
if (gMain.newKeys & A_BUTTON)
@@ -273,6 +503,7 @@ void bx_battle_menu_t6_2(void)
}
}
}
+#endif
void sub_812B65C(void)
{
diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c
index 74a1e9612..421cd0779 100644
--- a/src/engine/save_failed_screen.c
+++ b/src/engine/save_failed_screen.c
@@ -61,16 +61,18 @@ static const u8 sClockFrames[8][3] =
static const u8 gSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal");
static const u8 gSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz");
+#define static
+
static void VBlankCB(void);
static void CB2_SaveFailedScreen(void);
static void CB2_WipeSave(void);
-static void CB2_GameplayCannotBeContinued(void);
+/*static*/ void CB2_GameplayCannotBeContinued(void);
static void CB2_FadeAndReturnToTitleScreen(void);
static void CB2_ReturnToTitleScreen(void);
static void VBlankCB_UpdateClockGraphics(void);
static bool8 VerifySectorWipe(u16 sector);
static bool8 WipeSector(u16 sector);
-static bool8 WipeSectors(u32 sectorBits);
+/*static*/ bool8 WipeSectors(u32 sectorBits);
void DoSaveFailedScreen(u8 saveType)
{
@@ -148,6 +150,151 @@ static void CB2_SaveFailedScreen(void)
}
}
+#if DEBUG
+__attribute__((naked))
+void CB2_WipeSave()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._20\n"
+ " mov r2, #0x1\n"
+ " strh r2, [r0]\n"
+ " ldr r0, ._20 + 4\n"
+ " ldr r0, [r0]\n"
+ " ldr r1, ._20 + 8\n"
+ " cmp r0, #0\n"
+ " beq ._12 @cond_branch\n"
+ " str r2, [r1]\n"
+ "._12:\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._16 @cond_branch\n"
+ " add r5, r1, #0\n"
+ "._17:\n"
+ " ldr r0, [r5]\n"
+ " bl WipeSectors\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._14 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._20 + 16\n"
+ " ldrb r0, [r0]\n"
+ " bl Save_WriteDataInternal\n"
+ " ldr r0, [r5]\n"
+ " cmp r0, #0\n"
+ " beq ._15 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 20\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ "._15:\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, [r5]\n"
+ " cmp r0, #0\n"
+ " beq ._16 @cond_branch\n"
+ " cmp r4, #0x2\n"
+ " bls ._17 @cond_branch\n"
+ "._16:\n"
+ " cmp r4, #0x3\n"
+ " bne ._18 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._20 + 24\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._20 + 28\n"
+ " bl SetMainCallback2\n"
+ " b ._23\n"
+ "._21:\n"
+ " .align 2, 0\n"
+ "._20:\n"
+ " .word gSaveFailedClockInfo\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ " .word gDamagedSaveSectors\n"
+ " .word gSystemText_CheckCompleteSaveAttempt\n"
+ " .word gSaveFailedType\n"
+ " .word gSystemText_SaveFailedBackupCheck\n"
+ " .word gSystemText_BackupDamagedGameContinue\n"
+ " .word CB2_FadeAndReturnToTitleScreen+1\n"
+ "._18:\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._24\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._22 @cond_branch\n"
+ " ldr r0, ._24 + 4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " b ._23\n"
+ "._25:\n"
+ " .align 2, 0\n"
+ "._24:\n"
+ " .word gGameContinueCallback\n"
+ " .word gSystemText_SaveCompletedGameEnd\n"
+ "._14:\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x1c\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._27\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ " ldr r0, ._27 + 4\n"
+ " bl SetMainCallback2\n"
+ " b ._26\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word gSystemText_BackupDamagedGameContinue\n"
+ " .word CB2_GameplayCannotBeContinued+1\n"
+ "._22:\n"
+ " ldr r0, ._29\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xb\n"
+ " bl Menu_PrintText\n"
+ "._23:\n"
+ " ldr r0, ._29 + 4\n"
+ " bl SetMainCallback2\n"
+ "._26:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._30:\n"
+ " .align 2, 0\n"
+ "._29:\n"
+ " .word gSystemText_SaveCompletedPressA\n"
+ " .word CB2_FadeAndReturnToTitleScreen+1\n"
+ "\n"
+ );
+}
+#else
static void CB2_WipeSave(void)
{
u8 wipeTries = 0;
@@ -198,8 +345,9 @@ static void CB2_WipeSave(void)
SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
}
+#endif
-static void CB2_GameplayCannotBeContinued(void)
+/*static*/ void CB2_GameplayCannotBeContinued(void)
{
gSaveFailedClockInfo[0] = FALSE;
@@ -264,6 +412,41 @@ static void VBlankCB_UpdateClockGraphics(void)
gSaveFailedClockInfo[1]--;
}
+#if DEBUG
+__attribute__((naked))
+bool8 VerifySectorWipe(u16 sector)
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldr r2, ._50\n"
+ " mov r3, #0x80\n"
+ " lsl r3, r3, #0x5\n"
+ " mov r1, #0x0\n"
+ " bl gMysteryEventScriptCmdTableEnd+0x2d64\n"
+ " mov r0, #0x0\n"
+ " ldr r1, ._50 + 4\n"
+ "._49:\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, r1\n"
+ " bls ._49 @cond_branch\n"
+ " ldr r0, ._50 + 8\n"
+ " ldrb r0, [r0]\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._51:\n"
+ " .align 2, 0\n"
+ "._50:\n"
+ " .word +0x2000000\n"
+ " .word 0x3ff\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "\n"
+ );
+}
+#else
static bool8 VerifySectorWipe(u16 sector)
{
u32 *ptr = (u32 *)&gSharedMem;
@@ -277,6 +460,7 @@ static bool8 VerifySectorWipe(u16 sector)
return FALSE;
}
+#endif
static bool8 WipeSector(u16 sector)
{
@@ -294,7 +478,7 @@ static bool8 WipeSector(u16 sector)
return failed;
}
-static bool8 WipeSectors(u32 sectorBits)
+/*static*/ bool8 WipeSectors(u32 sectorBits)
{
u16 i;
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index e26b801bc..b76710a2d 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -107,6 +107,69 @@ EWRAM_DATA u8 gUnknown_0202E8F6 = 0;
EWRAM_DATA u16 gUnknown_0202E8F8 = 0;
EWRAM_DATA u8 gPartyMenuType = 0;
+#if 0
+const u16 TMHMMoves[] =
+{
+ 0x5016,
+ 0x030D,
+ 0x3DFF,
+ MOVE_CALM_MIND,
+ MOVE_ROAR,
+ MOVE_TOXIC,
+ MOVE_HAIL,
+ MOVE_BULK_UP,
+ MOVE_BULLET_SEED,
+ MOVE_HIDDEN_POWER,
+ MOVE_SUNNY_DAY,
+ MOVE_TAUNT,
+ MOVE_ICE_BEAM,
+ MOVE_BLIZZARD,
+ MOVE_HYPER_BEAM,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PROTECT,
+ MOVE_RAIN_DANCE,
+ MOVE_GIGA_DRAIN,
+ MOVE_SAFEGUARD,
+ MOVE_FRUSTRATION,
+ MOVE_SOLAR_BEAM,
+ MOVE_IRON_TAIL,
+ MOVE_THUNDERBOLT,
+ MOVE_THUNDER,
+ MOVE_EARTHQUAKE,
+ MOVE_RETURN,
+ MOVE_DIG,
+ MOVE_PSYCHIC,
+ MOVE_SHADOW_BALL,
+ MOVE_BRICK_BREAK,
+ MOVE_DOUBLE_TEAM,
+ MOVE_REFLECT,
+ MOVE_SHOCK_WAVE,
+ MOVE_FLAMETHROWER,
+ MOVE_SLUDGE_BOMB,
+ MOVE_SANDSTORM,
+ MOVE_FIRE_BLAST,
+ MOVE_ROCK_TOMB,
+ MOVE_AERIAL_ACE,
+ MOVE_TORMENT,
+ MOVE_FACADE,
+ MOVE_SECRET_POWER,
+ MOVE_REST,
+ MOVE_ATTRACT,
+ MOVE_THIEF,
+ MOVE_STEEL_WING,
+ MOVE_SKILL_SWAP,
+ MOVE_SNATCH,
+ MOVE_OVERHEAT,
+ MOVE_CUT,
+ MOVE_FLY,
+ MOVE_SURF,
+ MOVE_STRENGTH,
+ MOVE_FLASH,
+ MOVE_ROCK_SMASH,
+ MOVE_WATERFALL,
+ MOVE_DIVE,
+};
+#else
const u16 TMHMMoves[] =
{
MOVE_FOCUS_PUNCH,
@@ -168,6 +231,7 @@ const u16 TMHMMoves[] =
MOVE_WATERFALL,
MOVE_DIVE,
};
+#endif
//FIXME
//const u8 *unrefTileBuffer = gTileBuffer;