diff options
-rw-r--r-- | asm/nakamura_debug_menu.s | 476 | ||||
-rw-r--r-- | include/strings.h | 1 | ||||
-rw-r--r-- | src/debug/nakamura_debug_menu.c | 173 |
3 files changed, 171 insertions, 479 deletions
diff --git a/asm/nakamura_debug_menu.s b/asm/nakamura_debug_menu.s index ad3af7e84..6f86ee268 100644 --- a/asm/nakamura_debug_menu.s +++ b/asm/nakamura_debug_menu.s @@ -5,482 +5,6 @@ .text - thumb_func_start debug_sub_816097C -debug_sub_816097C: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - add r7, r0, #0 - lsl r1, r1, #0x10 - lsr r5, r1, #0x10 - mov r6, #0x0 - mov r1, #0x0 -._405: - add r0, r7, r6 - strb r1, [r0] - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x3 - bls ._405 @cond_branch - mov r0, #0xff - strb r0, [r7, #0x4] - lsl r0, r5, #0x10 - asr r0, r0, #0x10 - cmp r0, #0 - bne ._406 @cond_branch - mov r0, #0xa1 - strb r0, [r7, #0x3] - b ._414 -._406: - cmp r0, #0 - ble ._408 @cond_branch - mov r4, #0x64 - mov r0, #0x0 - mov r8, r0 - mov r6, #0x0 -._412: - lsl r5, r5, #0x10 - asr r0, r5, #0x10 - lsl r4, r4, #0x10 - asr r1, r4, #0x10 - bl __divsi3 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r1, r8 - cmp r1, #0 - bne ._410 @cond_branch - cmp r6, #0x2 - beq ._410 @cond_branch - cmp r2, #0 - beq ._411 @cond_branch -._410: - add r1, r6, r7 - add r0, r2, #0 - sub r0, r0, #0x5f - strb r0, [r1, #0x1] - mov r0, #0x1 - mov r8, r0 -._411: - asr r0, r5, #0x10 - asr r4, r4, #0x10 - add r1, r4, #0 - bl __modsi3 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0 - mov r1, #0xa - bl __divsi3 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x2 - bls ._412 @cond_branch - b ._414 -._408: - cmp r0, #0 - bge ._414 @cond_branch - neg r0, r0 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - mov r4, #0x64 - mov r1, #0x0 - mov r8, r1 - mov r6, #0x0 -._419: - lsl r5, r5, #0x10 - asr r0, r5, #0x10 - lsl r4, r4, #0x10 - asr r1, r4, #0x10 - bl __divsi3 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r1, r8 - lsl r0, r1, #0x10 - add r3, r0, #0 - cmp r3, #0 - bne ._416 @cond_branch - cmp r6, #0x2 - beq ._416 @cond_branch - cmp r2, #0 - beq ._417 @cond_branch -._416: - add r1, r6, r7 - add r0, r2, #0 - sub r0, r0, #0x5f - strb r0, [r1, #0x1] - cmp r3, #0 - bne ._418 @cond_branch - mov r0, #0xae - strb r0, [r1] -._418: - mov r0, #0x1 - mov r8, r0 -._417: - asr r0, r5, #0x10 - asr r4, r4, #0x10 - add r1, r4, #0 - bl __modsi3 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0 - mov r1, #0xa - bl __divsi3 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r6, #1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x2 - bls ._419 @cond_branch -._414: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - thumb_func_end debug_sub_816097C - - thumb_func_start debug_sub_8160A80 -debug_sub_8160A80: - push {r4, lr} - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r2, r0, #0 - ldr r1, ._422 @ _nakamuraStatic18 - cmp r0, #0 - bne ._420 @cond_branch - ldr r4, ._422 + 4 @ gStringVar1 - ldrb r1, [r1, #0x1] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x3 - bl Menu_PrintText - b ._440 -._423: - .align 2, 0 -._422: - .word _nakamuraStatic18 - .word gStringVar1 -._420: - cmp r0, #0x1 - bne ._424 @cond_branch - ldr r4, ._426 @ gStringVar1 - ldrb r1, [r1, #0x2] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x5 - bl Menu_PrintText - b ._440 -._427: - .align 2, 0 -._426: - .word gStringVar1 -._424: - cmp r0, #0x2 - bne ._428 @cond_branch - ldr r4, ._430 @ gStringVar1 - ldrb r1, [r1, #0x3] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x7 - bl Menu_PrintText - b ._440 -._431: - .align 2, 0 -._430: - .word gStringVar1 -._428: - cmp r0, #0x3 - bne ._432 @cond_branch - ldr r4, ._434 @ gStringVar1 - ldrb r1, [r1, #0x4] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0x9 - bl Menu_PrintText - b ._440 -._435: - .align 2, 0 -._434: - .word gStringVar1 -._432: - cmp r0, #0x4 - bne ._436 @cond_branch - ldr r4, ._438 @ gStringVar1 - ldrb r1, [r1, #0x5] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0xb - bl Menu_PrintText - b ._440 -._439: - .align 2, 0 -._438: - .word gStringVar1 -._436: - cmp r2, #0x5 - bne ._440 @cond_branch - ldr r4, ._441 @ gStringVar1 - ldrb r1, [r1, #0x6] - add r0, r4, #0 - bl debug_sub_816097C - add r0, r4, #0 - mov r1, #0x8 - mov r2, #0xd - bl Menu_PrintText -._440: - pop {r4} - pop {r0} - bx r0 -._442: - .align 2, 0 -._441: - .word gStringVar1 - - thumb_func_end debug_sub_8160A80 - - thumb_func_start debug_sub_8160B50 -debug_sub_8160B50: - push {r4, lr} - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - add r3, r0, #0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r4, r1, #0 - ldr r2, ._445 @ _nakamuraStatic18 - cmp r0, #0 - bne ._443 @cond_branch - ldrb r0, [r2, #0x1] - add r0, r0, r1 - strb r0, [r2, #0x1] - b ._455 -._446: - .align 2, 0 -._445: - .word _nakamuraStatic18 -._443: - cmp r0, #0x1 - bne ._447 @cond_branch - ldrb r0, [r2, #0x2] - add r0, r0, r1 - strb r0, [r2, #0x2] - b ._455 -._447: - cmp r0, #0x2 - bne ._449 @cond_branch - ldrb r0, [r2, #0x3] - add r0, r0, r1 - strb r0, [r2, #0x3] - b ._455 -._449: - cmp r0, #0x3 - bne ._451 @cond_branch - ldrb r0, [r2, #0x4] - add r0, r0, r1 - strb r0, [r2, #0x4] - b ._455 -._451: - cmp r0, #0x4 - bne ._453 @cond_branch - ldrb r0, [r2, #0x5] - add r0, r0, r1 - strb r0, [r2, #0x5] - b ._455 -._453: - cmp r3, #0x5 - bne ._455 @cond_branch - ldrb r0, [r2, #0x6] - add r0, r0, r4 - strb r0, [r2, #0x6] -._455: - pop {r4} - pop {r0} - bx r0 - - thumb_func_end debug_sub_8160B50 - - thumb_func_start debug_sub_8160BB0 -debug_sub_8160BB0: - push {r4, r5, lr} - ldr r5, ._456 @ gStringVar1 - ldr r4, ._456 + 4 @ _nakamuraStatic18 - add r0, r5, #0 - add r1, r4, #0 - bl debug_sub_8160714 - strb r0, [r4] - mov r0, #0x1 - mov r1, #0x1 - mov r2, #0x8 - mov r3, #0x2 - bl Menu_BlankWindowRect - add r0, r5, #0 - mov r1, #0x1 - mov r2, #0x1 - bl Menu_PrintText - pop {r4, r5} - pop {r0} - bx r0 -._457: - .align 2, 0 -._456: - .word gStringVar1 - .word _nakamuraStatic18 - - thumb_func_end debug_sub_8160BB0 - - thumb_func_start debug_sub_8160BE4 -debug_sub_8160BE4: - push {r4, lr} - add sp, sp, #0xfffffff8 - mov r0, #0x0 - mov r1, #0x0 - mov r2, #0xc - mov r3, #0xf - bl Menu_DrawStdWindowFrame - bl debug_sub_8160BB0 - ldr r0, ._459 @ gContestStatsText_Spicy - mov r1, #0x2 - mov r2, #0x3 - bl Menu_PrintText - ldr r0, ._459 + 4 @ gContestStatsText_Dry - mov r1, #0x2 - mov r2, #0x5 - bl Menu_PrintText - ldr r0, ._459 + 8 @ gContestStatsText_Sweet - mov r1, #0x2 - mov r2, #0x7 - bl Menu_PrintText - ldr r0, ._459 + 12 @ gContestStatsText_Bitter - mov r1, #0x2 - mov r2, #0x9 - bl Menu_PrintText - ldr r0, ._459 + 16 @ gContestStatsText_Sour - mov r1, #0x2 - mov r2, #0xb - bl Menu_PrintText - ldr r0, ._459 + 20 @ gContestStatsText_Tasty - mov r1, #0x2 - mov r2, #0xd - bl Menu_PrintText - mov r4, #0x0 -._458: - add r0, r4, #0 - bl debug_sub_8160A80 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x5 - bls ._458 @cond_branch - mov r0, #0x0 - str r0, [sp] - mov r0, #0xb - str r0, [sp, #0x4] - mov r0, #0x0 - mov r1, #0x1 - mov r2, #0x3 - mov r3, #0x6 - bl InitMenu - add sp, sp, #0x8 - pop {r4} - pop {r0} - bx r0 -._460: - .align 2, 0 -._459: - .word gContestStatsText_Spicy - .word gContestStatsText_Dry - .word gContestStatsText_Sweet - .word gContestStatsText_Bitter - .word gContestStatsText_Sour - .word gContestStatsText_Tasty - - thumb_func_end debug_sub_8160BE4 - - thumb_func_start debug_sub_8160C7C -debug_sub_8160C7C: - push {r4, lr} - ldr r2, ._469 @ _nakamuraStatic18 - mov r1, #0x0 - ldrb r0, [r2] - cmp r0, #0xc - bne ._467 @cond_branch - ldrb r0, [r2, #0x1] - cmp r0, #0x2 - bne ._462 @cond_branch - mov r1, #0x1 -._462: - ldrb r0, [r2, #0x3] - cmp r0, #0x2 - bne ._463 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._463: - ldrb r0, [r2, #0x4] - cmp r0, #0x2 - bne ._464 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._464: - ldrb r0, [r2, #0x2] - cmp r0, #0x2 - bne ._465 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._465: - ldrb r0, [r2, #0x5] - cmp r0, #0x2 - bne ._466 @cond_branch - add r0, r1, #1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 -._466: - cmp r1, #0x3 - beq ._467 @cond_branch - mov r0, #0x2 - strb r0, [r2, #0x1] - strb r0, [r2, #0x3] - strb r0, [r2, #0x4] -._467: - add r0, r2, #0 - bl sub_810CA34 - bl debug_sub_8160BB0 - mov r4, #0x0 -._468: - add r0, r4, #0 - bl debug_sub_8160A80 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x5 - bls ._468 @cond_branch - pop {r4} - pop {r0} - bx r0 -._470: - .align 2, 0 -._469: - .word _nakamuraStatic18 - - thumb_func_end debug_sub_8160C7C - thumb_func_start debug_sub_8160CF4 debug_sub_8160CF4: push {lr} diff --git a/include/strings.h b/include/strings.h index 91c5c5344..7b97ec6ef 100644 --- a/include/strings.h +++ b/include/strings.h @@ -250,6 +250,7 @@ extern const u8 gContestStatsText_Dry[]; extern const u8 gContestStatsText_Sweet[]; extern const u8 gContestStatsText_Bitter[]; extern const u8 gContestStatsText_Sour[]; +extern const u8 gContestStatsText_Tasty[]; extern const u8 gContestStatsText_StowCase[]; extern const u8 gContestStatsText_ThrowAwayPrompt[]; diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index b1da30b27..97e1d4678 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -38,13 +38,12 @@ EWRAM_DATA u16 _nakamuraData8 = 0; EWRAM_DATA u16 _nakamuraDataA = 0; EWRAM_DATA u16 _nakamuraDataC = 0; -__attribute__((unused)) static struct { +static struct { s16 species; s8 level; u8 unk3; } _nakamuraStatic0[PARTY_SIZE]; -__attribute__((unused)) static u8 _nakamuraStatic18; -__attribute__((unused)) static u8 gDebugFiller3000814[4]; +static struct Pokeblock _nakamuraStatic18; asm(".global _nakamuraStatic0"); asm(".global _nakamuraStatic18"); @@ -1672,4 +1671,172 @@ u8 debug_sub_8160714(u8 * dest, struct Pokeblock * pokeblock) } #endif // NONMATCHING +void debug_sub_816097C(u8 * buff, s16 a1) +{ + u8 i; + s16 divisor; + s16 quot; + s16 printZero; + + for (i = 0; i < 4; i++) + buff[i] = CHAR_SPACE; + buff[4] = EOS; + + if (a1 == 0) + buff[3] = CHAR_0; + else if (a1 > 0) + { + divisor = 100; + printZero = FALSE; + for (i = 0; i < 3; i++) + { + quot = a1 / divisor; + if (printZero || i == 2 || quot != 0) + { + buff[i + 1] = CHAR_0 + quot; + printZero = TRUE; + } + a1 %= divisor; + divisor /= 10; + } + } + else if (a1 < 0) + { + a1 = -a1; + divisor = 100; + printZero = FALSE; + for (i = 0; i < 3; i++) + { + quot = a1 / divisor; + if (printZero || i == 2 || quot != 0) + { + buff[i + 1] = CHAR_0 + quot; + if (!printZero) + buff[i] = CHAR_HYPHEN; + printZero = TRUE; + } + a1 %= divisor; + divisor /= 10; + } + } +} + +void debug_sub_8160A80(u8 a0) +{ + struct Pokeblock *pkblk = &_nakamuraStatic18; + + if (a0 == 0) + { + debug_sub_816097C(gStringVar1, pkblk->spicy); + Menu_PrintText(gStringVar1, 8, 3); + } + else if (a0 == 1) + { + debug_sub_816097C(gStringVar1, pkblk->dry); + Menu_PrintText(gStringVar1, 8, 5); + } + else if (a0 == 2) + { + debug_sub_816097C(gStringVar1, pkblk->sweet); + Menu_PrintText(gStringVar1, 8, 7); + } + else if (a0 == 3) + { + debug_sub_816097C(gStringVar1, pkblk->bitter); + Menu_PrintText(gStringVar1, 8, 9); + } + else if (a0 == 4) + { + debug_sub_816097C(gStringVar1, pkblk->sour); + Menu_PrintText(gStringVar1, 8, 11); + } + else if (a0 == 5) + { + debug_sub_816097C(gStringVar1, pkblk->feel); + Menu_PrintText(gStringVar1, 8, 13); + } +} + +void debug_sub_8160B50(u8 a0, s8 a1) +{ + struct Pokeblock *pkblk = &_nakamuraStatic18; + + if (a0 == 0) + pkblk->spicy += a1; + else if (a0 == 1) + pkblk->dry += a1; + else if (a0 == 2) + pkblk->sweet += a1; + else if (a0 == 3) + pkblk->bitter += a1; + else if (a0 == 4) + pkblk->sour += a1; + else if (a0 == 5) + pkblk->feel += a1; +} + +void debug_sub_8160BB0(void) +{ + _nakamuraStatic18.color = debug_sub_8160714(gStringVar1, &_nakamuraStatic18); + Menu_BlankWindowRect(1, 1, 8, 2); + Menu_PrintText(gStringVar1, 1, 1); +} + +void debug_sub_8160BE4(void) +{ + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 12, 15); + debug_sub_8160BB0(); + Menu_PrintText(gContestStatsText_Spicy, 2, 3); + Menu_PrintText(gContestStatsText_Dry, 2, 5); + Menu_PrintText(gContestStatsText_Sweet, 2, 7); + Menu_PrintText(gContestStatsText_Bitter, 2, 9); + Menu_PrintText(gContestStatsText_Sour, 2, 11); + Menu_PrintText(gContestStatsText_Tasty, 2, 13); + + for (i = 0; i < 6; i++) + debug_sub_8160A80(i); + + InitMenu(0, 1, 3, 6, 0, 11); +} + +void debug_sub_8160C7C(void) +{ + struct Pokeblock * pkblk = &_nakamuraStatic18; + u8 rval = 0; + u8 i; + + if (pkblk->color == PBLOCK_CLR_BLACK) + { + if (pkblk->spicy == 2) + rval++; + + if (pkblk->sweet == 2) + rval++; + + if (pkblk->bitter == 2) + rval++; + + if (pkblk->dry == 2) + rval++; + + if (pkblk->sour == 2) + rval++; + + if (rval != 3) + { + pkblk->spicy = 2; + pkblk->sweet = 2; + pkblk->bitter = 2; + } + } + + sub_810CA34(pkblk); + debug_sub_8160BB0(); + + for (i = 0; i < 6; i++) + debug_sub_8160A80(i); +} + #endif // DEBUG |