diff options
Diffstat (limited to 'arm9/modules/59')
-rw-r--r-- | arm9/modules/59/asm/mod59_021D74E0_asm.s | 551 | ||||
-rw-r--r-- | arm9/modules/59/asm/mod59_021D9868.s | 64 | ||||
-rw-r--r-- | arm9/modules/59/include/mod59_021D74E0.h | 24 | ||||
-rw-r--r-- | arm9/modules/59/src/mod59_021D74E0_src.c | 188 |
4 files changed, 377 insertions, 450 deletions
diff --git a/arm9/modules/59/asm/mod59_021D74E0_asm.s b/arm9/modules/59/asm/mod59_021D74E0_asm.s index 5604bf3c..27c05dd6 100644 --- a/arm9/modules/59/asm/mod59_021D74E0_asm.s +++ b/arm9/modules/59/asm/mod59_021D74E0_asm.s @@ -3,266 +3,7 @@ .section .text .balign 4, 0 - thumb_func_start MOD59_021D7564 -MOD59_021D7564: ; 0x021D7564 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - bl OverlayManager_GetData - ldr r1, [r5] - add r4, r0, #0 - mov r6, #0 - cmp r1, #5 - bls _021D757A - b _021D76AC -_021D757A: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D7586: ; jump table - .short _021D7592 - _021D7586 - 2 ; case 0 - .short _021D75FA - _021D7586 - 2 ; case 1 - .short _021D7642 - _021D7586 - 2 ; case 2 - .short _021D7668 - _021D7586 - 2 ; case 3 - .short _021D7690 - _021D7586 - 2 ; case 4 - .short _021D76AA - _021D7586 - 2 ; case 5 -_021D7592: - add r0, r6, #0 - add r1, r6, #0 - bl FUN_0200E3A0 - mov r0, #1 - add r1, r6, #0 - bl FUN_0200E3A0 - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - add r0, r6, #0 - add r1, r0, #0 - bl FUN_02015F34 - bl GX_DisableEngineALayers - bl GX_DisableEngineBLayers - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2] - ldr r0, _021D76B4 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2] - ldr r2, _021D76B8 ; =0x04001000 - ldr r1, [r2] - and r0, r1 - str r0, [r2] - mov r0, #4 - mov r1, #8 - bl FUN_0201669C - add r0, r4, #0 - bl MOD59_021D778C - add r0, r4, #0 - bl MOD59_021D79F8 - add r0, r4, #0 - bl MOD59_021D7A4C - ldr r0, _021D76BC ; =MOD59_021D7724 - add r1, r4, #0 - bl Main_SetVBlankIntrCB - bl GX_BothDispOn - mov r0, #1 - str r0, [r5] - b _021D76AC -_021D75FA: - bl MOD59_021D8920 - cmp r0, #1 - bne _021D761E - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - add r0, r6, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #2 - str r0, [r5] -_021D761E: - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _021D76AC - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4] - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #3 - str r0, [r5] - b _021D76AC -_021D7642: - bl FUN_0200E308 - cmp r0, #1 - bne _021D76AC - add r0, r4, #0 - bl MOD59_021D7A34 - add r0, r4, #0 - bl MOD59_021D796C - add r0, r4, #0 - bl MOD59_021D7A5C - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - mov r6, #1 - b _021D76AC -_021D7668: - bl FUN_0200E308 - cmp r0, #1 - bne _021D76AC - add r0, r4, #0 - bl MOD59_021D7A34 - add r0, r4, #0 - bl MOD59_021D796C - add r0, r4, #0 - bl MOD59_021D7A5C - add r0, r6, #0 - add r1, r0, #0 - bl Main_SetVBlankIntrCB - mov r0, #4 - str r0, [r5] - b _021D76AC -_021D7690: - ldr r0, [r4, #0x14] - bl OverlayManager_Run - cmp r0, #1 - bne _021D76AC - ldr r0, [r4, #0x14] - bl OverlayManager_delete - add r0, r6, #0 - str r0, [r4, #0x14] - mov r0, #5 - str r0, [r5] - b _021D76AC -_021D76AA: - str r6, [r5] -_021D76AC: - add r0, r6, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021D76B4: .word 0xFFFFE0FF -_021D76B8: .word 0x04001000 -_021D76BC: .word MOD59_021D7724 - thumb_func_end MOD59_021D7564 - - thumb_func_start MOD59_021D76C0 -MOD59_021D76C0: ; 0x021D76C0 - push {r4, r5, r6, lr} - add r6, r0, #0 - bl OverlayManager_GetData - add r4, r0, #0 - ldr r0, [r4, #4] - ldr r5, [r4] - bl Sav2_PlayerData_GetProfileAddr - ldr r1, [r4, #0x70] - ldr r1, [r1, #0x18] - bl PlayerName_StringToFlat - ldr r0, [r4, #4] - bl Sav2_PlayerData_GetProfileAddr - ldr r1, [r4, #0x70] - ldr r1, [r1, #4] - bl PlayerProfile_SetTrainerGender - ldr r0, [r4, #4] - bl FUN_02024EB4 - ldr r1, [r4, #0x74] - ldr r1, [r1, #0x18] - bl RivalsNameToU16Array - ldr r0, [r4, #0x70] - bl FUN_02077AC4 - ldr r0, [r4, #0x74] - bl FUN_02077AC4 - add r0, r6, #0 - bl OverlayManager_FreeData - add r0, r5, #0 - bl FUN_020168D0 - ldr r0, _021D771C ; =SDK_OVERLAY_MODULE_52_ID - ldr r1, _021D7720 ; =MOD52_021D76D8 - bl RegisterMainOverlay - mov r0, #1 - pop {r4, r5, r6, pc} - nop -_021D771C: .word SDK_OVERLAY_MODULE_52_ID -_021D7720: .word MOD52_021D76D8 - thumb_func_end MOD59_021D76C0 - - thumb_func_start MOD59_021D7724 -MOD59_021D7724: ; 0x021D7724 - ldr r3, _021D772C ; =FUN_0201AB60 - ldr r0, [r0, #0x18] - bx r3 - nop -_021D772C: .word FUN_0201AB60 - thumb_func_end MOD59_021D7724 - - thumb_func_start MOD59_021D7730 -MOD59_021D7730: ; 0x021D7730 - push {r3, r4} - ldr r2, _021D7788 ; =gMain + 0x40 - mov r0, #0 - ldrh r1, [r2, #0x20] - cmp r1, #0 - beq _021D7784 - ldrh r3, [r2, #0x1c] - mov r1, #1 - lsl r1, r1, #8 - cmp r3, r1 - bhs _021D7784 - ldrh r2, [r2, #0x1e] - cmp r2, #0xc0 - bhs _021D7784 - cmp r3, #0x80 - bhs _021D7758 - mov r1, #0x80 - sub r1, r1, r3 - lsl r1, r1, #0x10 - b _021D775C -_021D7758: - sub r3, #0x80 - lsl r1, r3, #0x10 -_021D775C: - lsr r3, r1, #0x10 - cmp r2, #0x64 - bhs _021D776A - mov r1, #0x64 - sub r1, r1, r2 - lsl r1, r1, #0x10 - b _021D776E -_021D776A: - sub r2, #0x64 - lsl r1, r2, #0x10 -_021D776E: - lsr r4, r1, #0x10 - add r2, r3, #0 - add r1, r4, #0 - mul r2, r3 - mul r1, r4 - add r2, r2, r1 - mov r1, #1 - lsl r1, r1, #8 - cmp r2, r1 - bgt _021D7784 - mov r0, #1 -_021D7784: - pop {r3, r4} - bx lr - .align 2, 0 -_021D7788: .word gMain + 0x40 - thumb_func_end MOD59_021D7730 + .extern MOD59_021D7730 thumb_func_start MOD59_021D778C MOD59_021D778C: ; 0x021D778C @@ -280,7 +21,7 @@ _021D7798: add r0, sp, #0x50 bl GX_SetBanks ldr r0, [r4] - bl FUN_02016B94 + bl BgConfig_Alloc add r3, sp, #0x40 ldr r5, _021D7958 ; =0x021D9DCC str r0, [r4, #0x18] @@ -290,7 +31,7 @@ _021D7798: ldmia r5!, {r0, r1} stmia r3!, {r0, r1} add r0, r2, #0 - bl FUN_02016BBC + bl SetBothScreensModesAndDisable ldr r5, _021D795C ; =0x021D9EA0 add r3, sp, #0x24 ldmia r5!, {r0, r1} @@ -309,10 +50,10 @@ _021D7798: strb r0, [r2, #0x13] ldr r0, [r4, #0x18] add r3, r1, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0xe add r2, sp, #0x24 strb r0, [r2, #0x12] @@ -321,10 +62,10 @@ _021D7798: ldr r0, [r4, #0x18] mov r1, #1 mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #1 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0xd add r2, sp, #0x24 strb r0, [r2, #0x12] @@ -333,10 +74,10 @@ _021D7798: ldr r0, [r4, #0x18] mov r1, #2 mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #2 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0xc add r2, sp, #0x24 strb r0, [r2, #0x12] @@ -344,10 +85,10 @@ _021D7798: strb r1, [r2, #0x13] ldr r0, [r4, #0x18] mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #3 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r1, #0 str r1, [sp] ldr r0, [r4] @@ -391,10 +132,10 @@ _021D7798: ldr r0, [r4, #0x18] mov r1, #4 mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #4 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r1, #0xe add r0, sp, #8 strb r1, [r0, #0x12] @@ -403,10 +144,10 @@ _021D7798: ldr r0, [r4, #0x18] add r2, sp, #8 mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #5 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r1, #0xd add r0, sp, #8 strb r1, [r0, #0x12] @@ -416,10 +157,10 @@ _021D7798: mov r1, #6 add r2, sp, #8 mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #6 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r1, #0xc add r0, sp, #8 strb r1, [r0, #0x12] @@ -429,34 +170,34 @@ _021D7798: mov r1, #7 add r2, sp, #8 mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r0, [r4, #0x18] mov r1, #7 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0 add r1, r0, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #1 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #2 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #3 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #4 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #5 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #6 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #7 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer add r0, r4, #0 bl MOD59_021D8058 mov r0, #0 @@ -478,52 +219,52 @@ MOD59_021D796C: ; 0x021D796C add r4, r0, #0 mov r0, #0 add r1, r0, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #1 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #2 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #3 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #4 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #5 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #6 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #7 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer ldr r0, [r4, #0x18] mov r1, #0 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] mov r1, #1 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] mov r1, #2 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] mov r1, #3 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] mov r1, #4 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] mov r1, #5 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] mov r1, #6 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] mov r1, #7 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #0x18] bl FreeToHeap pop {r4, pc} @@ -690,7 +431,7 @@ _021D7B0E: lsl r0, r4, #0x18 lsr r0, r0, #0x18 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer b _021D7BDE _021D7B1A: mov r0, #0x10 @@ -783,7 +524,7 @@ _021D7BC0: lsl r0, r4, #0x18 lsr r0, r0, #0x18 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer b _021D7BDE _021D7BD0: ldr r0, _021D7BE4 ; =0x04000050 @@ -843,11 +584,11 @@ MOD59_021D7C10: ; 0x021D7C10 ldr r0, [r5, #0x18] lsr r1, r1, #0x18 add r3, r2, #0 - bl FUN_020186B4 + bl BgTilemapRectChangePalette lsl r1, r4, #0x18 ldr r0, [r5, #0x18] lsr r1, r1, #0x18 - bl FUN_02017CD0 + bl BgCommitTilemapBufferToVram add sp, #0xc pop {r4, r5, pc} .align 2, 0 @@ -873,7 +614,7 @@ _021D7C5E: ldr r0, [r5, #0x18] ldr r2, _021D7D5C ; =0x021D9DB8 add r1, #0x1c - bl FUN_02019150 + bl AddWindow mov r0, #0xd8 str r0, [sp] mov r0, #0x20 @@ -891,7 +632,7 @@ _021D7C5E: mov r3, #4 bl FUN_0200D0BC mov r0, #1 - bl FUN_02002B60 + bl TextFlags_SetCanABSpeedUpPrint add r0, r4, #0 bl FUN_02002B7C mov r0, #1 @@ -974,7 +715,7 @@ _021D7D36: _021D7D46: add r0, r5, #0 add r0, #0x1c - bl FUN_02019178 + bl RemoveWindow mov r0, #0 str r0, [r5, #0x50] mov r4, #1 @@ -994,7 +735,7 @@ MOD59_021D7D68: ; 0x021D7D68 cmp r2, #0 bne _021D7D74 ldr r0, _021D7D78 ; =0x000005DC - bl FUN_020054C8 + bl PlaySE _021D7D74: pop {r3, pc} nop @@ -1048,7 +789,7 @@ _021D7DC4: add r1, r5, #0 ldr r0, [r5, #0x18] add r1, #0x30 - bl FUN_02019150 + bl AddWindow ldr r1, [r5] add r0, r6, #0 bl ListMenuItems_ctor @@ -1129,7 +870,7 @@ _021D7E66: bl FUN_0200CCF8 add r0, r5, #0 add r0, #0x30 - bl FUN_02019178 + bl RemoveWindow mov r1, #0 ldr r0, [r5, #0x40] add r2, r1, #0 @@ -1137,7 +878,7 @@ _021D7E66: ldr r0, [r5, #0x44] bl ListMenuItems_dtor ldr r0, _021D7EC8 ; =0x000005DC - bl FUN_020054C8 + bl PlaySE mov r0, #0 str r0, [r5, #0x2c] mov r0, #1 @@ -1191,7 +932,7 @@ _021D7EEE: ; jump table _021D7EFA: add r0, r5, #0 add r1, r5, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #1 ldr r1, [r4] lsl r0, r0, #0xa @@ -1225,7 +966,7 @@ _021D7EFA: ldr r0, [r4, #0x18] add r1, #0x1c add r2, sp, #0x14 - bl FUN_02019150 + bl AddWindow add r1, r5, #0 mov r0, #0xc0 str r0, [sp] @@ -1264,7 +1005,7 @@ _021D7F7C: add r1, r4, #0 ldr r0, [r4, #0x18] add r1, #0x1c - bl FUN_02019150 + bl AddWindow add r1, r5, #0 mov r0, #0xc0 str r0, [sp] @@ -1319,7 +1060,7 @@ _021D7FF6: bne _021D803C _021D800A: ldr r0, _021D8054 ; =0x000005DC - bl FUN_020054C8 + bl PlaySE mov r0, #4 str r0, [r4, #0x54] b _021D803C @@ -1334,10 +1075,10 @@ _021D8016: b _021D803C _021D8028: add r0, #0x1c - bl FUN_02019178 + bl RemoveWindow ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit add r0, r5, #0 str r0, [r4, #0x54] mov r5, #1 @@ -1372,7 +1113,7 @@ MOD59_021D8058: ; 0x021D8058 ldr r3, [r5] mov r1, #0x20 add r2, r0, #0 - bl FUN_02017F18 + bl BG_ClearCharDataRange mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -1420,10 +1161,10 @@ _021D80AA: bl MOD59_021D8234 mov r0, #0 add r1, r0, #0 - bl FUN_02017FE4 + bl BG_SetMaskColor mov r0, #4 mov r1, #0 - bl FUN_02017FE4 + bl BG_SetMaskColor add sp, #0x10 pop {r3, r4, r5, pc} nop @@ -1696,7 +1437,7 @@ _021D82C8: ldr r0, [r5, #0x18] mov r1, #2 add r3, r2, #0 - bl FUN_02018540 + bl FillBgTilemapRect mov r3, #0xb str r3, [sp] mov r0, #0xa @@ -1705,7 +1446,7 @@ _021D82C8: ldr r0, [r5, #0x18] mov r1, #2 add r2, r7, #0 - bl FUN_02018148 + bl LoadRectToBgTilemapRect add r0, r5, #0 mov r1, #2 mov r2, #9 @@ -1714,7 +1455,7 @@ _021D82C8: mov r0, #2 mov r1, #0x20 mov r2, #0 - bl FUN_02017F18 + bl BG_ClearCharDataRange mov r0, #1 str r0, [sp] mov r3, #0x32 @@ -1722,19 +1463,19 @@ _021D82C8: mov r1, #2 add r2, r4, #0 lsl r3, r3, #6 - bl FUN_02017E14 + bl BG_LoadCharTilesData mov r3, #0x20 add r2, r3, #0 mov r0, #2 add r1, r6, #0 add r3, #0xe0 - bl FUN_02017FB4 + bl BG_LoadPlttData mov r3, #0x12 ldr r1, _021D83F4 ; =0x021D9ED8 mov r0, #2 mov r2, #0x20 lsl r3, r3, #4 - bl FUN_02017FB4 + bl BG_LoadPlttData mov r2, #0 str r2, [sp] mov r0, #0x20 @@ -1746,7 +1487,7 @@ _021D82C8: ldr r0, [r5, #0x18] mov r1, #5 add r3, r2, #0 - bl FUN_02018540 + bl FillBgTilemapRect mov r0, #7 str r0, [sp] mov r0, #0xa @@ -1756,7 +1497,7 @@ _021D82C8: mov r1, #5 add r2, r7, #0 mov r3, #0xb - bl FUN_02018148 + bl LoadRectToBgTilemapRect add r0, r5, #0 mov r1, #5 mov r2, #0xa @@ -1765,7 +1506,7 @@ _021D82C8: mov r0, #5 mov r1, #0x20 mov r2, #0 - bl FUN_02017F18 + bl BG_ClearCharDataRange mov r0, #1 str r0, [sp] mov r3, #0x32 @@ -1773,17 +1514,17 @@ _021D82C8: mov r1, #5 add r2, r4, #0 lsl r3, r3, #6 - bl FUN_02017E14 + bl BG_LoadCharTilesData mov r0, #5 add r1, r6, #0 mov r2, #0x20 lsl r3, r0, #6 - bl FUN_02017FB4 + bl BG_LoadPlttData mov r0, #5 ldr r1, _021D83F4 ; =0x021D9ED8 mov r2, #0x20 lsl r3, r0, #6 - bl FUN_02017FB4 + bl BG_LoadPlttData add r0, r6, #0 bl FreeToHeap add r0, r4, #0 @@ -1831,7 +1572,7 @@ MOD59_021D83F8: ; 0x021D83F8 mov r0, #6 mov r1, #0x20 mov r2, #0 - bl FUN_02017F18 + bl BG_ClearCharDataRange mov r0, #0x20 str r0, [sp] mov r0, #0 @@ -1858,7 +1599,7 @@ MOD59_021D8460: ; 0x021D8460 cmp r2, #0 bne _021D849C ldr r0, [r5, #0x18] - bl FUN_02017B48 + bl Bg_GetXpos cmp r0, #0 beq _021D8498 cmp r0, #0 @@ -1868,14 +1609,14 @@ MOD59_021D8460: ; 0x021D8460 lsr r1, r1, #0x18 mov r2, #2 mov r3, #4 - bl FUN_020179E0 + bl BgSetPosTextAndCommit b _021D84E2 _021D848A: lsl r1, r4, #0x18 lsr r1, r1, #0x18 mov r2, #1 mov r3, #4 - bl FUN_020179E0 + bl BgSetPosTextAndCommit b _021D84E2 _021D8498: mov r6, #1 @@ -1884,7 +1625,7 @@ _021D849C: cmp r2, #1 bne _021D84C2 ldr r0, [r5, #0x18] - bl FUN_02017B48 + bl Bg_GetXpos add r1, r6, #0 sub r1, #0x30 cmp r0, r1 @@ -1894,7 +1635,7 @@ _021D849C: lsr r1, r1, #0x18 mov r2, #2 mov r3, #4 - bl FUN_020179E0 + bl BgSetPosTextAndCommit b _021D84E2 _021D84BE: mov r6, #1 @@ -1903,7 +1644,7 @@ _021D84C2: cmp r2, #2 bne _021D84E2 ldr r0, [r5, #0x18] - bl FUN_02017B48 + bl Bg_GetXpos cmp r0, #0 beq _021D84E0 lsl r1, r4, #0x18 @@ -1911,7 +1652,7 @@ _021D84C2: lsr r1, r1, #0x18 mov r2, #1 mov r3, #4 - bl FUN_020179E0 + bl BgSetPosTextAndCommit b _021D84E2 _021D84E0: mov r6, #1 @@ -2206,19 +1947,19 @@ _021D86E4: mov r1, #2 add r2, r7, #0 add r3, r7, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit mov r2, #3 add r3, r2, #0 ldr r0, [r4, #0x18] mov r1, #2 sub r3, #0x6b - bl FUN_020179E0 + bl BgSetPosTextAndCommit mov r0, #2 add r1, r7, #0 - bl FUN_020178BC + bl SetBgPriority mov r0, #5 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer add r0, r4, #0 add r2, r7, #0 add r0, #0xa8 @@ -2235,10 +1976,10 @@ _021D86E4: _021D8728: ldr r0, [r4, #0x18] mov r1, #2 - bl FUN_02017B48 + bl Bg_GetXpos ldr r0, [r4, #0x18] mov r1, #5 - bl FUN_02017B54 + bl Bg_GetYpos add r1, r4, #0 add r1, #0xb0 ldr r3, [r1] @@ -2269,22 +2010,22 @@ _021D8728: mov r1, #2 ldr r0, [r4, #0x18] add r3, r1, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit ldr r0, [r4, #0x18] mov r1, #5 mov r2, #1 mov r3, #2 - bl FUN_020179E0 + bl BgSetPosTextAndCommit ldr r0, [r4, #0x18] mov r1, #5 mov r2, #3 add r3, r5, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit b _021D890A _021D8792: mov r0, #5 add r1, r7, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #0x1e add r4, #0xb0 str r0, [r4] @@ -2307,7 +2048,7 @@ _021D87A6: _021D87BE: mov r0, #2 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer add r0, r4, #0 add r2, r7, #0 add r0, #0xa8 @@ -2324,10 +2065,10 @@ _021D87BE: _021D87E0: ldr r0, [r4, #0x18] mov r1, #2 - bl FUN_02017B48 + bl Bg_GetXpos ldr r0, [r4, #0x18] mov r1, #2 - bl FUN_02017B54 + bl Bg_GetYpos add r0, r4, #0 add r0, #0xb0 ldr r1, [r0] @@ -2356,7 +2097,7 @@ _021D87E0: mov r1, #2 mov r2, #3 add r3, r7, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit add r0, r4, #0 add r2, r7, #0 add r0, #0xa8 @@ -2385,7 +2126,7 @@ _021D8846: ldr r0, [r4, #0x18] mov r1, #2 add r3, r2, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit asr r5, r5, #1 cmp r5, #0x90 ble _021D886E @@ -2395,15 +2136,15 @@ _021D886E: mov r1, #2 mov r2, #3 add r3, r5, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit b _021D890A _021D887C: ldr r0, [r4, #0x18] mov r1, #2 - bl FUN_02017B48 + bl Bg_GetXpos ldr r0, [r4, #0x18] mov r1, #2 - bl FUN_02017B54 + bl Bg_GetYpos add r0, r4, #0 add r0, #0xb0 ldr r1, [r0] @@ -2431,7 +2172,7 @@ _021D887C: mov r1, #2 mov r2, #3 add r3, r7, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit mov r0, #5 str r0, [r6] b _021D890A @@ -2447,12 +2188,12 @@ _021D88CC: mov r1, #2 ldr r0, [r4, #0x18] add r3, r1, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit ldr r0, [r4, #0x18] mov r1, #2 mov r2, #3 add r3, r5, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit add r4, #0xa8 str r5, [r4] b _021D890A @@ -2478,7 +2219,7 @@ MOD59_021D8914: ; 0x021D8914 mov r1, #1 bx r3 .align 2, 0 -_021D891C: .word FUN_020178BC +_021D891C: .word SetBgPriority thumb_func_end MOD59_021D8914 thumb_func_start MOD59_021D8920 @@ -2619,10 +2360,10 @@ _021D8A1A: bl FUN_02005350 add r0, r5, #0 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #7 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #6 mov r1, #1 str r0, [sp] @@ -2658,7 +2399,7 @@ _021D8A76: str r0, [r4, #0xc] ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit bl _021D985C _021D8A92: ldr r0, _021D8D70 ; =0x00000405 @@ -2675,10 +2416,10 @@ _021D8A92: bl MOD59_021D8140 mov r0, #3 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #1 add r1, r0, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #0x10 str r0, [sp] mov r0, #4 @@ -2748,7 +2489,7 @@ _021D8B44: str r0, [r4, #0xc] ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit bl _021D985C _021D8B58: mov r0, #0x29 @@ -2775,10 +2516,10 @@ _021D8B80: bne _021D8C84 ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #1 add r1, r5, #0 - bl FUN_0201797C + bl ToggleBgLayer ldr r0, [r4, #0x10] str r0, [r4, #0xc] bl _021D985C @@ -2893,12 +2634,12 @@ _021D8C88: str r0, [r4, #0xc] ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit bl _021D985C _021D8C98: add r0, r5, #0 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #0x14 str r0, [r4, #0xc] bl _021D985C @@ -2928,7 +2669,7 @@ _021D8CBC: bl FUN_020145C8 mov r0, #6 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer add r0, r4, #0 mov r1, #3 add r0, #0x8b @@ -3003,7 +2744,7 @@ _021D8D7C: bne _021D8DA0 ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0x1c str r0, [r4, #0xc] bl _021D985C @@ -3018,7 +2759,7 @@ _021D8DA0: _021D8DA4: ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit ldr r0, [r4, #0x68] bl FUN_020146C4 add r0, r4, #0 @@ -3058,12 +2799,12 @@ _021D8DEA: bl MOD59_021D8234 mov r0, #1 add r1, r0, #0 - bl FUN_0201797C + bl ToggleBgLayer add r2, r5, #0 ldr r0, [r4, #0x18] mov r1, #1 add r3, r2, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit mov r0, #6 mov r1, #1 str r0, [sp] @@ -3220,10 +2961,10 @@ _021D8F5E: bne _021D8FCE ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit add r0, r5, #0 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #0x1c str r0, [r4, #0xc] bl _021D985C @@ -3277,7 +3018,7 @@ _021D8FD2: bl MOD59_021D8234 mov r0, #6 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #6 mov r1, #1 str r0, [sp] @@ -3319,7 +3060,7 @@ _021D9030: add r0, #0x98 str r1, [r0] ldr r0, [r4, #0x18] - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0x30 str r0, [r4, #0xc] bl _021D985C @@ -3360,7 +3101,7 @@ _021D9078: cmp r1, r0 bne _021D90A2 ldr r0, _021D937C ; =0x00000706 - bl FUN_020054C8 + bl PlaySE mov r0, #0x32 str r0, [r4, #0xc] b _021D985C @@ -3482,7 +3223,7 @@ _021D9192: bl MOD59_021D82A0 mov r0, #6 add r1, r5, #0 - bl FUN_0201797C + bl ToggleBgLayer add r0, r4, #0 add r1, r5, #0 add r0, #0x94 @@ -3557,7 +3298,7 @@ _021D922A: bne _021D92FA ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0x3b str r0, [r4, #0xc] b _021D985C @@ -3615,12 +3356,12 @@ _021D9290: ldr r0, [r4, #0x18] mov r1, #1 sub r3, #0x30 - bl FUN_020179E0 + bl BgSetPosTextAndCommit ldr r0, [r4, #0x18] mov r1, #2 add r2, r5, #0 mov r3, #0x30 - bl FUN_020179E0 + bl BgSetPosTextAndCommit mov r0, #0x40 str r0, [r4, #0xc] b _021D985C @@ -3709,7 +3450,7 @@ _021D935C: add r0, #0x84 str r1, [r0] ldr r0, _021D9380 ; =0x000005DC - bl FUN_020054C8 + bl PlaySE _021D9368: add r0, r4, #0 bl MOD59_021D8504 @@ -3801,7 +3542,7 @@ _021D9416: _021D941C: ldr r0, [r4, #0x18] mov r1, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0x4a str r0, [r4, #0xc] b _021D985C @@ -3848,13 +3589,13 @@ _021D945C: _021D9476: add r0, r5, #0 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #3 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #7 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer add r0, r4, #0 add r0, #0x84 ldr r0, [r0] @@ -3862,22 +3603,22 @@ _021D9476: bne _021D94AE mov r0, #1 add r1, r0, #0 - bl FUN_0201797C + bl ToggleBgLayer add r2, r5, #0 ldr r0, [r4, #0x18] mov r1, #1 add r3, r2, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit b _021D94C2 _021D94AE: mov r0, #2 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer add r2, r5, #0 ldr r0, [r4, #0x18] mov r1, #2 add r3, r2, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit _021D94C2: mov r0, #6 mov r1, #1 @@ -3925,7 +3666,7 @@ _021D950C: bne _021D9530 ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit ldr r1, [r4, #0x48] sub r0, r5, #2 cmp r1, r0 @@ -4124,21 +3865,21 @@ _021D9684: _021D9696: add r0, r5, #0 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #3 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #7 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #1 add r1, r0, #0 - bl FUN_0201797C + bl ToggleBgLayer add r2, r5, #0 ldr r0, [r4, #0x18] mov r1, #1 add r3, r2, #0 - bl FUN_020179E0 + bl BgSetPosTextAndCommit mov r0, #6 mov r1, #1 str r0, [sp] @@ -4187,7 +3928,7 @@ _021D971A: _021D971C: ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0x61 str r0, [r4, #0xc] b _021D985C @@ -4263,7 +4004,7 @@ _021D97B2: bne _021D985C ldr r0, [r4, #0x18] add r1, r5, #0 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit mov r0, #0x67 str r0, [r4, #0xc] b _021D985C diff --git a/arm9/modules/59/asm/mod59_021D9868.s b/arm9/modules/59/asm/mod59_021D9868.s index 2925c404..147b3a99 100644 --- a/arm9/modules/59/asm/mod59_021D9868.s +++ b/arm9/modules/59/asm/mod59_021D9868.s @@ -11,7 +11,7 @@ MOD59_021D9868: ; 0x021D9868 mov r0, #3 mov r1, #0x53 lsl r2, r2, #0x12 - bl FUN_0201681C + bl CreateHeap add r0, r4, #0 mov r1, #0x28 mov r2, #0x53 @@ -81,7 +81,7 @@ _021D98C6: str r0, [r2] mov r0, #4 mov r1, #8 - bl FUN_0201669C + bl SetKeyRepeatTimers add r0, r4, #0 bl MOD59_021D9A20 add r0, r4, #0 @@ -200,7 +200,7 @@ MOD59_021D99F8: ; 0x021D99F8 add r0, r5, #0 bl OverlayManager_FreeData add r0, r4, #0 - bl FUN_020168D0 + bl DestroyHeap mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 @@ -212,7 +212,7 @@ MOD59_021D9A14: ; 0x021D9A14 ldr r0, [r0, #4] bx r3 nop -_021D9A1C: .word FUN_0201AB60 +_021D9A1C: .word DoScheduledBgGpuUpdates thumb_func_end MOD59_021D9A14 thumb_func_start MOD59_021D9A20 @@ -231,7 +231,7 @@ _021D9A2C: add r0, sp, #0x90 bl GX_SetBanks ldr r0, [r4] - bl FUN_02016B94 + bl BgConfig_Alloc add r3, sp, #0x80 ldr r5, _021D9BB8 ; =0x021DA054 str r0, [r4, #4] @@ -241,7 +241,7 @@ _021D9A2C: ldmia r5!, {r0, r1} stmia r3!, {r0, r1} add r0, r2, #0 - bl FUN_02016BBC + bl SetBothScreensModesAndDisable ldr r5, _021D9BBC ; =0x021DA080 add r3, sp, #0x64 ldmia r5!, {r0, r1} @@ -256,15 +256,15 @@ _021D9A2C: str r0, [r3] ldr r0, [r4, #4] mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate ldr r3, [r4] mov r0, #2 mov r1, #0x20 mov r2, #0 - bl FUN_02017F18 + bl BG_ClearCharDataRange ldr r0, [r4, #4] mov r1, #2 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit ldr r5, _021D9BC0 ; =0x021DA09C add r3, sp, #0x48 ldmia r5!, {r0, r1} @@ -279,7 +279,7 @@ _021D9A2C: str r0, [r3] ldr r0, [r4, #4] add r3, r1, #0 - bl FUN_02016C18 + bl InitBgFromTemplate mov r3, #0 str r3, [sp] str r3, [sp, #4] @@ -314,7 +314,7 @@ _021D9A2C: str r0, [r3] ldr r0, [r4, #4] mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate mov r0, #0 str r0, [sp] str r0, [sp, #4] @@ -351,7 +351,7 @@ _021D9A2C: str r0, [r3] ldr r0, [r4, #4] mov r3, #0 - bl FUN_02016C18 + bl InitBgFromTemplate mov r1, #0 str r1, [sp] str r1, [sp, #4] @@ -387,10 +387,10 @@ _021D9A2C: bl FUN_02002ED0 mov r0, #0 add r1, r0, #0 - bl FUN_02017FE4 + bl BG_SetMaskColor mov r0, #4 mov r1, #0 - bl FUN_02017FE4 + bl BG_SetMaskColor mov r2, #0xc ldr r0, _021D9BCC ; =0x04000050 mov r1, #2 @@ -415,43 +415,43 @@ MOD59_021D9BD0: ; 0x021D9BD0 add r4, r0, #0 mov r0, #0 add r1, r0, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #1 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #2 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #3 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #4 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #5 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #6 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #7 mov r1, #0 - bl FUN_0201797C + bl ToggleBgLayer ldr r0, _021D9C44 ; =0x04000050 mov r1, #0 strh r1, [r0] ldr r0, [r4, #4] mov r1, #3 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #4] mov r1, #1 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #4] mov r1, #0 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #4] mov r1, #2 - bl FUN_020178A0 + bl FreeBgTilemapBuffer ldr r0, [r4, #4] bl FreeToHeap pop {r4, pc} @@ -511,7 +511,7 @@ _021D9C92: ; jump table _021D9C9A: mov r0, #2 add r1, r5, #0 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #1 ldr r1, [r4] lsl r0, r0, #0xa @@ -525,7 +525,7 @@ _021D9C9A: ldr r0, [r4, #4] ldr r2, _021D9D6C ; =0x021DA04C add r1, #0x10 - bl FUN_02019150 + bl AddWindow add r1, r5, #0 mov r0, #1 lsl r0, r0, #8 @@ -562,7 +562,7 @@ _021D9C9A: bl CopyWindowToVram mov r0, #2 mov r1, #1 - bl FUN_0201797C + bl ToggleBgLayer mov r0, #0xf0 str r0, [r4, #0x24] mov r0, #1 @@ -597,10 +597,10 @@ _021D9D4A: _021D9D50: add r0, r4, #0 add r0, #0x10 - bl FUN_02019178 + bl RemoveWindow ldr r0, [r4, #4] mov r1, #2 - bl FUN_02018744 + bl BgClearTilemapBufferAndCommit add r0, r5, #0 str r0, [r4, #0xc] mov r5, #1 @@ -624,7 +624,7 @@ MOD59_021D9D78: ; 0x021D9D78 ldr r0, [r0, #4] mov r1, #1 asr r3, r3, #4 - bl FUN_020179E0 + bl BgSetPosTextAndCommit pop {r3, pc} .align 2, 0 thumb_func_end MOD59_021D9D78 diff --git a/arm9/modules/59/include/mod59_021D74E0.h b/arm9/modules/59/include/mod59_021D74E0.h index 9342913d..d6f52bba 100644 --- a/arm9/modules/59/include/mod59_021D74E0.h +++ b/arm9/modules/59/include/mod59_021D74E0.h @@ -5,6 +5,15 @@ #include "options.h" #include "save_block_2.h" #include "main.h" +#include "player_data.h" + +struct MOD59_UnkPlayerStruct +{ + u8 padding[0x4]; + GenderEnum gender; + u8 padding2[0x10]; + struct String *name; +}; typedef struct MOD59_OverlayData { @@ -13,10 +22,11 @@ typedef struct MOD59_OverlayData struct Options *options; u32 Unk0C; u32 Unk10; - u32 Unk14; - u8 padding[0x58]; - u32 Unk70; - u32 Unk74; + struct UnkStruct_02006234 *Unk14; + struct BgConfig *Unk18; + u8 padding[0x54]; + struct MOD59_UnkPlayerStruct *playerStruct; + struct MOD59_UnkPlayerStruct *rivalStruct; u8 padding2[0x10]; u8 Unk88; u8 Unk89; @@ -24,9 +34,13 @@ typedef struct MOD59_OverlayData u8 Unk8B; u8 padding3[4]; u32 Unk90; - //TODO pad to 0xb4 + u8 padding4[32]; } MOD59_OverlayData; BOOL MOD59_Init(struct UnkStruct_02006234 *param0); +BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1); +BOOL MOD59_021D76C0(struct UnkStruct_02006234 *param0); +void MOD59_021D7724(MOD59_OverlayData *data); +BOOL MOD59_021D7730(void); #endif //POKEDIAMOND_MOD59_021D74E0_H diff --git a/arm9/modules/59/src/mod59_021D74E0_src.c b/arm9/modules/59/src/mod59_021D74E0_src.c index 4d7a4a98..e104cf4f 100644 --- a/arm9/modules/59/src/mod59_021D74E0_src.c +++ b/arm9/modules/59/src/mod59_021D74E0_src.c @@ -3,24 +3,45 @@ #include "overlay_manager.h" #include "mod59_021D74E0.h" #include "heap.h" +#include "game_init.h" +#include "GX_layers.h" +#include "unk_02024E64.h" +#include "bg_window.h" +#include "module_52.h" +extern void *FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options); -extern u32 FUN_02077A84(u32 heap_id, u32 param1, u32 param2, u32 param3, struct Options *options); +extern void FUN_0200E3A0(PMLCDTarget, int); + +extern void MOD59_021D778C(MOD59_OverlayData *data); +extern void MOD59_021D79F8(MOD59_OverlayData *data); +extern void MOD59_021D7A34(MOD59_OverlayData *data); +extern void MOD59_021D796C(MOD59_OverlayData *data); +extern void MOD59_021D7A4C(MOD59_OverlayData *data); +extern void MOD59_021D7A5C(MOD59_OverlayData *data); +extern u32 MOD59_021D8920(MOD59_OverlayData *data); + +extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 heap_id); +extern u32 FUN_0200E308(void); + +extern void FUN_02077AC4(void *param0); + +FS_EXTERN_OVERLAY(MODULE_52); THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0) { - //note: 0xb4 is likely the overlay data struct size, once struct is padded replace with sizeof - FUN_0201681C(3, 0x52, 1 << 18); - MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, 0xb4, 0x52); + CreateHeap(3, 0x52, 1 << 18); + MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_CreateAndGetData(param0, sizeof(MOD59_OverlayData), 0x52); (void)memset((void *)data, 0, 0xb4); data->heap_id = 0x52; - int *field18 = OverlayManager_GetField18(param0); + s32 *field18 = OverlayManager_GetField18(param0); data->sav2 = (struct SaveBlock2 *)field18[2]; //? data->options = Sav2_PlayerData_GetOptionsAddr(data->sav2); - data->Unk14 = data->Unk10 = data->Unk0C = 0; - data->Unk70 = FUN_02077A84(0x52, 0, 0, 7, data->options); - data->Unk74 = FUN_02077A84(0x52, 3, 0, 7, data->options); + data->Unk10 = data->Unk0C = 0; + data->Unk14 = NULL; + data->playerStruct = (struct MOD59_UnkPlayerStruct *)FUN_02077A84(0x52, 0, 0, 7, data->options); + data->rivalStruct = (struct MOD59_UnkPlayerStruct *)FUN_02077A84(0x52, 3, 0, 7, data->options); data->Unk88 = 0; data->Unk89 = 0; data->Unk8A = 0; @@ -28,3 +49,154 @@ THUMB_FUNC BOOL MOD59_Init(struct UnkStruct_02006234 *param0) data->Unk90 = 0; return TRUE; } + +THUMB_FUNC BOOL MOD59_021D7564(struct UnkStruct_02006234 *param0, u32 *param1) +{ + MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_GetData(param0); + BOOL ret = FALSE; + + switch (*param1) + { + case 0: + FUN_0200E3A0(PM_LCD_TOP, 0); + FUN_0200E3A0(PM_LCD_BOTTOM, 0); + + Main_SetVBlankIntrCB(NULL, NULL); + + FUN_02015F34(NULL, NULL); + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); + + reg_GX_DISPCNT = reg_GX_DISPCNT & 0xFFFFE0FF; + reg_GXS_DB_DISPCNT = reg_GXS_DB_DISPCNT & 0xFFFFE0FF; + + SetKeyRepeatTimers(4, 8); + + MOD59_021D778C(data); + MOD59_021D79F8(data); + MOD59_021D7A4C(data); + + Main_SetVBlankIntrCB((void (*)(void *))MOD59_021D7724, data); + + GX_BothDispOn(); + + *param1 = 1; + + break; + + case 1: + if (MOD59_021D8920(data) == 1) + { + FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id); + *param1 = 2; + } + + if (data->Unk14 == NULL) + { + break; + } + + FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id); + *param1 = 3; + + break; + + case 2: + if (FUN_0200E308() != 1) + { + break; + } + + MOD59_021D7A34(data); + MOD59_021D796C(data); + MOD59_021D7A5C(data); + + Main_SetVBlankIntrCB(NULL, NULL); + + ret = TRUE; + break; + + case 3: + if (FUN_0200E308() != 1) + { + break; + } + + MOD59_021D7A34(data); + MOD59_021D796C(data); + MOD59_021D7A5C(data); + + Main_SetVBlankIntrCB(NULL, NULL); + + *param1 = 4; + + break; + + case 4: + if (OverlayManager_Run(data->Unk14) != TRUE) + { + break; + } + + OverlayManager_delete(data->Unk14); + data->Unk14 = NULL; + + *param1 = 5; + + break; + + case 5: + *param1 = 0; + + break; + } + + return ret; +} + +THUMB_FUNC BOOL MOD59_021D76C0(struct UnkStruct_02006234 *param0) +{ + MOD59_OverlayData *data = (MOD59_OverlayData *) OverlayManager_GetData(param0); + + u32 heap_id = data->heap_id; + PlayerName_StringToFlat(Sav2_PlayerData_GetProfileAddr(data->sav2), data->playerStruct->name); + PlayerProfile_SetTrainerGender(Sav2_PlayerData_GetProfileAddr(data->sav2), data->playerStruct->gender); + + RivalsNameToU16Array(FUN_02024EB4(data->sav2), data->rivalStruct->name); + + FUN_02077AC4(data->playerStruct); + FUN_02077AC4(data->rivalStruct); + + OverlayManager_FreeData(param0); + DestroyHeap(heap_id); + + RegisterMainOverlay(FS_OVERLAY_ID(MODULE_52), &MOD52_021D76D8); + + return TRUE; +} + +THUMB_FUNC void MOD59_021D7724(MOD59_OverlayData *data) +{ + DoScheduledBgGpuUpdates(data->Unk18); +} + +THUMB_FUNC BOOL MOD59_021D7730(void) +{ + BOOL ret = FALSE; + + if (gMain.touchNew != 0 && gMain.touchX < 256 && gMain.touchY < 192) + { + s32 distanceFromXCentre = gMain.touchX < 128 ? (u16)(128 - gMain.touchX) : (u16)(gMain.touchX - 128); + s32 distanceFromYCentre = gMain.touchY < 100 ? (u16)(100 - gMain.touchY) : (u16)(gMain.touchY - 100); + + s32 distanceXSquare = distanceFromXCentre * distanceFromXCentre; + s32 distanceYSquare = distanceFromYCentre * distanceFromYCentre; + + if (distanceXSquare + distanceYSquare <= 256) + { + ret = TRUE; + } + } + + return ret; +} |