diff options
-rw-r--r-- | asm/watanabe_debug_menu.s | 240 | ||||
-rw-r--r-- | src/debug/watanabe_debug_menu.c | 78 |
2 files changed, 78 insertions, 240 deletions
diff --git a/asm/watanabe_debug_menu.s b/asm/watanabe_debug_menu.s index f78a2ff77..e7ae5d91f 100644 --- a/asm/watanabe_debug_menu.s +++ b/asm/watanabe_debug_menu.s @@ -5,246 +5,6 @@ .text - thumb_func_start debug_80C7584 -debug_80C7584: - push {r4, lr} - add r2, r0, #0 - ldr r0, ._771 @ gUnknown_Debug_2038A20 - ldr r3, [r0] - ldrb r1, [r3, #0x5] - add r4, r0, #0 - cmp r1, #0 - beq ._766 @cond_branch - mov r1, #0x2e - ldsh r0, [r2, r1] - cmp r0, #0x1 - beq ._767 @cond_branch - cmp r0, #0x1 - ble ._768 @cond_branch - cmp r0, #0x2 - beq ._769 @cond_branch -._768: - ldrb r0, [r3, #0xc] - lsl r0, r0, #0x1b - b ._773 -._772: - .align 2, 0 -._771: - .word gUnknown_Debug_2038A20 -._767: - ldrh r0, [r3, #0xc] - lsl r0, r0, #0x16 - b ._773 -._769: - ldrb r0, [r3, #0xd] - lsl r0, r0, #0x19 -._773: - lsr r0, r0, #0x1b - lsl r0, r0, #0x2 - strh r0, [r2, #0x24] - mov r1, #0x2e - ldsh r0, [r2, r1] - lsl r0, r0, #0x3 - strh r0, [r2, #0x26] - ldrh r0, [r2, #0x30] - add r3, r0, #1 - strh r3, [r2, #0x30] - mov r0, #0x2e - ldsh r1, [r2, r0] - ldr r0, [r4] - ldrb r0, [r0, #0xa] - cmp r1, r0 - bne ._775 @cond_branch - mov r0, #0x8 - and r3, r3, r0 - cmp r3, #0 - bne ._775 @cond_branch -._766: - add r0, r2, #0 - add r0, r0, #0x3e - ldrb r1, [r0] - mov r2, #0x4 - orr r1, r1, r2 - strb r1, [r0] - b ._776 -._775: - add r2, r2, #0x3e - ldrb r1, [r2] - mov r0, #0x5 - neg r0, r0 - and r0, r0, r1 - strb r0, [r2] -._776: - pop {r4} - pop {r0} - bx r0 - - thumb_func_end debug_80C7584 - - thumb_func_start InitSeeTrainers -InitSeeTrainers: - push {r4, r5, r6, lr} - add sp, sp, #0xfffffffc - bl debug_80C35DC - ldr r1, ._777 @ byte_83F88EC - ldr r2, ._777 + 4 @ 0x600e000 - ldr r0, ._777 + 8 @ 0x40000d4 - str r1, [r0] - str r2, [r0, #0x4] - ldr r1, ._777 + 12 @ 0x80000400 - str r1, [r0, #0x8] - ldr r0, [r0, #0x8] - ldr r0, ._777 + 16 @ word_83F888C - mov r1, #0x80 - mov r2, #0x60 - bl LoadPalette - mov r0, #0x1 - neg r0, r0 - mov r5, #0x0 - str r5, [sp] - mov r1, #0x0 - mov r2, #0x10 - mov r3, #0x0 - bl BeginNormalPaletteFade - ldr r0, ._777 + 20 @ 0x4000040 - mov r6, #0x0 - strh r5, [r0] - add r0, r0, #0x4 - strh r5, [r0] - sub r0, r0, #0x2 - strh r5, [r0] - add r0, r0, #0x4 - strh r5, [r0] - ldr r1, ._777 + 24 @ 0x4000048 - mov r0, #0x3f - strh r0, [r1] - add r1, r1, #0x2 - mov r0, #0x1f - strh r0, [r1] - add r1, r1, #0x6 - mov r0, #0xf1 - strh r0, [r1] - ldr r0, ._777 + 28 @ 0x4000052 - strh r5, [r0] - add r1, r1, #0x4 - mov r0, #0x7 - strh r0, [r1] - ldr r3, ._777 + 32 @ 0x4000208 - ldrh r2, [r3] - strh r5, [r3] - ldr r4, ._777 + 36 @ 0x4000200 - ldrh r0, [r4] - mov r1, #0x1 - orr r0, r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r0, ._777 + 40 @ debug_80C3758 - bl SetVBlankCallback - ldr r0, ._777 + 44 @ debug_80C370C - bl SetMainCallback2 - ldr r1, ._777 + 48 @ 0x4000008 - ldr r2, ._777 + 52 @ 0x1f0b - add r0, r2, #0 - strh r0, [r1] - add r1, r1, #0x2 - ldr r2, ._777 + 56 @ 0x1e0a - add r0, r2, #0 - strh r0, [r1] - sub r1, r1, #0xa - mov r2, #0xcd - lsl r2, r2, #0x6 - add r0, r2, #0 - strh r0, [r1] - ldr r0, ._777 + 60 @ debug_80C777C - mov r1, #0x0 - bl CreateTask - ldr r1, ._777 + 64 @ gUnknown_Debug_2038A20 - ldr r0, ._777 + 68 @ 0x2018000 - str r0, [r1] - strh r5, [r0] - strb r6, [r0, #0x2] - strb r6, [r0, #0x3] - strb r6, [r0, #0x5] - strb r6, [r0, #0x7] - strb r6, [r0, #0xa] - strb r6, [r0, #0x8] - ldr r4, ._777 + 72 @ gSpriteTemplate_83F8874 - add r0, r4, #0 - mov r1, #0x6c - mov r2, #0x74 - mov r3, #0x0 - bl CreateSprite - add r1, r0, #0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - ldr r6, ._777 + 76 @ gSprites - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - strh r5, [r0, #0x2e] - mov r1, #0x0 - bl StartSpriteAnim - add r0, r4, #0 - mov r1, #0x6c - mov r2, #0x74 - mov r3, #0x0 - bl CreateSprite - add r1, r0, #0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - mov r1, #0x1 - strh r1, [r0, #0x2e] - bl StartSpriteAnim - add r0, r4, #0 - mov r1, #0x6c - mov r2, #0x74 - mov r3, #0x0 - bl CreateSprite - add r1, r0, #0 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - lsl r0, r1, #0x4 - add r0, r0, r1 - lsl r0, r0, #0x2 - add r0, r0, r6 - mov r1, #0x2 - strh r1, [r0, #0x2e] - bl StartSpriteAnim - add sp, sp, #0x4 - pop {r4, r5, r6} - pop {r0} - bx r0 -._778: - .align 2, 0 -._777: - .word byte_83F88EC - .word 0x600e000 - .word 0x40000d4 - .word 0x80000400 - .word word_83F888C - .word 0x4000040 - .word 0x4000048 - .word 0x4000052 - .word 0x4000208 - .word 0x4000200 - .word debug_80C3758+1 - .word debug_80C370C+1 - .word 0x4000008 - .word 0x1f0b - .word 0x1e0a - .word debug_80C777C+1 - .word gUnknown_Debug_2038A20 - .word 0x2018000 - .word gSpriteTemplate_83F8874 - .word gSprites - - thumb_func_end InitSeeTrainers - thumb_func_start debug_80C777C debug_80C777C: push {r4, r5, r6, r7, lr} diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 697f97c4e..7bb182be8 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -140,6 +140,7 @@ void debug_80C71FC(u8 taskId); void debug_80C7294(u8 taskId); void debug_80C74E4(u8 taskId); void debug_80C7584(struct Sprite *); +void debug_80C777C(u8 taskId); extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F8068[5]; extern const struct WatanabeDebugMenuItem gUnknown_Debug_083F80D8[10]; @@ -2939,4 +2940,81 @@ void debug_80C74E4(u8 taskId) gTasks[taskId].func = debug_80C7294; } +void debug_80C7584(struct Sprite *sprite) +{ + if (!gUnknown_Debug_2038A20->unk5) + sprite->invisible = TRUE; + else + { + u8 shade; + switch (sprite->data[0]) + { + default: + case 0: + shade = gUnknown_Debug_2038A20->unkC.r; + break; + case 1: + shade = gUnknown_Debug_2038A20->unkC.g; + break; + case 2: + shade = gUnknown_Debug_2038A20->unkC.b; + break; + } + sprite->pos2.x = 4 * shade; + sprite->pos2.y = 8 * sprite->data[0]; + sprite->data[1]++; + if (sprite->data[0] == gUnknown_Debug_2038A20->unkA && !(sprite->data[1] & 0x08)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } +} + +void InitSeeTrainers(void) +{ + u8 spriteId; + debug_80C35DC(); + DmaCopy16Defvars(3, byte_83F88EC, VRAM + 0xe000, 0x800); + LoadPalette(word_83F888C, 0x80, 0x60); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x3F; + REG_WINOUT = 0x1F; + REG_BLDCNT = 0xF1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + { + u16 imeBak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imeBak; + } + SetVBlankCallback(debug_80C3758); + SetMainCallback2(debug_80C370C); + REG_BG0CNT = 0x1F0B; + REG_BG1CNT = 0x1E0A; + REG_DISPCNT = 0x3340; + CreateTask(debug_80C777C, 0); + gUnknown_Debug_2038A20 = &eWatanabe18000_2; + gUnknown_Debug_2038A20->unk0 = 0; + gUnknown_Debug_2038A20->unk2 = 0; + gUnknown_Debug_2038A20->unk3 = 0; + gUnknown_Debug_2038A20->unk5 = 0; + gUnknown_Debug_2038A20->unk7 = 0; + gUnknown_Debug_2038A20->unkA = 0; + gUnknown_Debug_2038A20->unk8 = 0; + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0); + gSprites[spriteId].data[0] = 0; + StartSpriteAnim(gSprites + spriteId, 0); + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0); + gSprites[spriteId].data[0] = 1; + StartSpriteAnim(gSprites + spriteId, 1); + spriteId = CreateSprite(&gSpriteTemplate_83F8874, 0x6c, 0x74, 0); + gSprites[spriteId].data[0] = 2; + StartSpriteAnim(gSprites + spriteId, 2); +} + #endif // DEBUG |