diff options
author | tgsm <doodrabbit@hotmail.com> | 2021-06-29 02:46:32 -0500 |
---|---|---|
committer | tgsm <doodrabbit@hotmail.com> | 2021-06-29 02:47:32 -0500 |
commit | 837cd799f76c81e762113bb46dd50176ac614dde (patch) | |
tree | 5009d0ad1941ec7f1f9ed37c886586ec5630fdb3 | |
parent | c14bd5bca2631fd4574c498201c679732b562f09 (diff) |
Decompile unk_02034188
-rw-r--r-- | arm9/asm/unk_02034188.s | 242 | ||||
-rw-r--r-- | arm9/global.inc | 2 | ||||
-rw-r--r-- | arm9/src/main.c | 4 | ||||
-rw-r--r-- | arm9/src/unk_02034188.c | 151 | ||||
-rw-r--r-- | include/unk_02034188.h | 6 |
5 files changed, 160 insertions, 245 deletions
diff --git a/arm9/asm/unk_02034188.s b/arm9/asm/unk_02034188.s deleted file mode 100644 index 66bb542c..00000000 --- a/arm9/asm/unk_02034188.s +++ /dev/null @@ -1,242 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gMain - - .section .rodata - - .global UNK_020EECF8 -UNK_020EECF8: ; 0x020EECF8 - .byte 0x00, 0x03, 0x03, 0x1A, 0x12, 0x01, 0x23, 0x00 - - .global UNK_020EED00 -UNK_020EED00: ; 0x020EED00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020EED10 -UNK_020EED10: ; 0x020EED10 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global UNK_020EED2C -UNK_020EED2C: ; 0x020EED2C - .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .text - - thumb_func_start FUN_02034188 -FUN_02034188: ; 0x02034188 - push {r4-r7, lr} - sub sp, #0x24 - add r4, r0, #0x0 - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_0200E3A0 - mov r0, #0x1 - mov r1, #0x0 - bl FUN_0200E3A0 - bl FUN_02015EF4 - mov r0, #0x0 - add r1, r0, #0x0 - bl Main_SetVBlankIntrCB - mov r0, #0x0 - add r1, r0, #0x0 - bl FUN_02015F34 - bl GX_DisableEngineALayers - bl GX_DisableEngineBLayers - mov r2, #0x1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0x0] - ldr r0, _02034368 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0x0] - ldr r2, _0203436C ; =0x04001000 - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - mov r0, #0x4 - mov r1, #0x8 - bl SetKeyRepeatTimers - ldr r0, _02034370 ; =gMain + 0x60 - mov r1, #0x0 - strb r1, [r0, #0x5] - bl GX_SwapDisplay - ldr r3, _02034374 ; =0x04000050 - mov r0, #0x0 - strh r0, [r3, #0x0] - ldr r2, _02034378 ; =0x04001050 - sub r3, #0x50 - strh r0, [r2, #0x0] - ldr r1, [r3, #0x0] - ldr r0, _0203437C ; =0xFFFF1FFF - sub r2, #0x50 - and r1, r0 - str r1, [r3, #0x0] - ldr r1, [r2, #0x0] - and r0, r1 - str r0, [r2, #0x0] - ldr r0, _02034380 ; =UNK_020EED2C - bl GX_SetBanks - add r0, r4, #0x0 - bl BgConfig_Alloc - str r0, [sp, #0x10] - ldr r0, _02034384 ; =UNK_020EED00 - bl SetBothScreensModesAndDisable - mov r1, #0x0 - ldr r0, [sp, #0x10] - ldr r2, _02034388 ; =UNK_020EED10 - add r3, r1, #0x0 - bl InitBgFromTemplate - ldr r0, [sp, #0x10] - mov r1, #0x0 - bl BgClearTilemapBufferAndCommit - mov r1, #0x0 - str r1, [sp, #0x0] - ldr r0, [sp, #0x10] - ldr r2, _0203438C ; =0x000001F7 - mov r3, #0x2 - str r4, [sp, #0x4] - bl FUN_0200CB00 - mov r0, #0x0 - mov r1, #0x20 - add r2, r4, #0x0 - bl FUN_02002ED0 - mov r0, #0x0 - mov r1, #0x20 - add r2, r0, #0x0 - add r3, r4, #0x0 - bl BG_ClearCharDataRange - ldr r1, _02034390 ; =0x00006C21 - mov r0, #0x0 - bl BG_SetMaskColor - ldr r1, _02034390 ; =0x00006C21 - mov r0, #0x4 - bl BG_SetMaskColor - ldr r2, _02034394 ; =0x00000265 - mov r0, #0x1 - mov r1, #0x1a - add r3, r4, #0x0 - bl NewMsgDataFromNarc - str r0, [sp, #0xc] - mov r0, #0x6 - lsl r0, r0, #0x6 - add r1, r4, #0x0 - bl String_ctor - add r4, r0, #0x0 - bl FUN_0201BD5C - ldr r0, [sp, #0x10] - ldr r2, _02034398 ; =UNK_020EECF8 - add r1, sp, #0x14 - bl AddWindow - mov r0, #0xd0 - str r0, [sp, #0x0] - mov r0, #0x90 - mov r2, #0x0 - str r0, [sp, #0x4] - add r0, sp, #0x14 - mov r1, #0xf - add r3, r2, #0x0 - bl FillWindowPixelRect - ldr r2, _0203438C ; =0x000001F7 - add r0, sp, #0x14 - mov r1, #0x0 - mov r3, #0x2 - bl FUN_0200CCA4 - ldr r0, [sp, #0xc] - mov r1, #0xf - add r2, r4, #0x0 - bl ReadMsgDataIntoString - mov r1, #0x0 - str r1, [sp, #0x0] - str r1, [sp, #0x4] - add r0, sp, #0x14 - add r2, r4, #0x0 - add r3, r1, #0x0 - str r1, [sp, #0x8] - bl AddTextPrinterParameterized - add r0, r4, #0x0 - bl String_dtor - bl GX_BothDispOn - mov r0, #0x0 - bl FUN_0200E394 - mov r0, #0x1 - bl FUN_0200E394 - mov r0, #0x0 - mov r1, #0x3f - mov r2, #0x3 - bl FUN_0200A274 - ldr r4, _0203439C ; =0x04000130 - ldr r6, _020343A0 ; =0x027FFFA8 - mov r7, #0x1 -_020342E4: - ldrh r1, [r4, #0x0] - ldrh r0, [r6, #0x0] - orr r1, r0 - ldr r0, _020343A4 ; =0x00002FFF - eor r1, r0 - and r0, r1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - bl HandleDSLidAction - add r0, r5, #0x0 - tst r0, r7 - bne _02034308 - mov r0, #0x1 - add r1, r0, #0x0 - bl OS_WaitIrq - b _020342E4 -_02034308: - add r0, sp, #0x14 - bl RemoveWindow - ldr r0, [sp, #0xc] - bl DestroyMsgData - mov r0, #0x0 - add r1, r0, #0x0 - bl ToggleBgLayer - mov r0, #0x1 - mov r1, #0x0 - bl ToggleBgLayer - mov r0, #0x2 - mov r1, #0x0 - bl ToggleBgLayer - mov r0, #0x3 - mov r1, #0x0 - bl ToggleBgLayer - mov r0, #0x4 - mov r1, #0x0 - bl ToggleBgLayer - mov r0, #0x5 - mov r1, #0x0 - bl ToggleBgLayer - mov r0, #0x6 - mov r1, #0x0 - bl ToggleBgLayer - mov r0, #0x7 - mov r1, #0x0 - bl ToggleBgLayer - ldr r0, [sp, #0x10] - mov r1, #0x0 - bl FreeBgTilemapBuffer - ldr r0, [sp, #0x10] - bl FreeToHeap - add sp, #0x24 - pop {r4-r7, pc} - nop -_02034368: .word 0xFFFFE0FF -_0203436C: .word 0x04001000 -_02034370: .word gMain + 0x60 -_02034374: .word 0x04000050 -_02034378: .word 0x04001050 -_0203437C: .word 0xFFFF1FFF -_02034380: .word UNK_020EED2C -_02034384: .word UNK_020EED00 -_02034388: .word UNK_020EED10 -_0203438C: .word 0x000001F7 -_02034390: .word 0x00006C21 -_02034394: .word 0x00000265 -_02034398: .word UNK_020EECF8 -_0203439C: .word 0x04000130 -_020343A0: .word 0x027FFFA8 -_020343A4: .word 0x00002FFF diff --git a/arm9/global.inc b/arm9/global.inc index 086d9b5f..4d1057b4 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2472,7 +2472,7 @@ .extern FUN_02033F04 .extern FUN_02033F20 .extern FUN_02033F70 -.extern FUN_02034188 +.extern ShowWFCUserInfoWarning .extern FUN_02034494 .extern FUN_020344AC .extern FUN_020344D0 diff --git a/arm9/src/main.c b/arm9/src/main.c index 46f8add7..11d22cfe 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -14,6 +14,7 @@ #include "timer3.h" #include "unk_02031734.h" #include "unk_0202F150.h" +#include "unk_02034188.h" #include "module_52.h" #include "font.h" @@ -29,7 +30,6 @@ struct UnkStruct_02016FA8 UNK_02016FA8; extern void FUN_02022294(void); extern void GF_InitRTCWork(void); extern int FUN_020337E8(int); -extern void FUN_02034188(int, int); extern void FUN_02089D90(int); extern void FUN_0200A2AC(void); extern void FUN_02015E30(void); @@ -69,7 +69,7 @@ THUMB_FUNC void NitroMain(void) InitSoundData(Sav2_Chatot_get(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18)); Init_Timer3(); if (FUN_020337E8(3) == 3) - FUN_02034188(3, 0); + ShowWFCUserInfoWarning(3, 0); if (FUN_020227FC(UNK_02016FA8.unk18) == 0) { FUN_02089D90(0); diff --git a/arm9/src/unk_02034188.c b/arm9/src/unk_02034188.c new file mode 100644 index 00000000..1872a8cc --- /dev/null +++ b/arm9/src/unk_02034188.c @@ -0,0 +1,151 @@ +#include "global.h" +#include "bg_window.h" +#include "filesystem.h" +#include "game_init.h" +#include "GX_layers.h" +#include "main.h" +#include "msgdata.h" +#include "msgdata/msg.naix" +#include "PAD_pad.h" +#include "string16.h" +#include "text.h" +#include "unk_02034188.h" + +extern void FUN_02002ED0(enum GFBgLayer layer, u32 base_addr, u32 heap_id); +extern void FUN_0200A274(fx32 brightness, fx32, u32); +extern void FUN_0200CB00(struct BgConfig* bg_config, enum GFBgLayer layer, u32 num_tiles, u32, u8, u32 heap_id); +extern void FUN_0200CCA4(struct Window* window, BOOL copy_to_vram, u16 fill_value, u32 palette_num); +extern void FUN_0200E394(BOOL set_brightness_on_bottom_screen); +extern void FUN_0200E3A0(BOOL set_brightness_on_bottom_screen, s32); + +static const struct WindowTemplate sWFCWarningMsgWindowTemplate = { + .bgId = GF_BG_LYR_MAIN_0, + .tilemapLeft = 3, + .tilemapTop = 3, + .width = 26, + .height = 18, + .paletteNum = 0x01, + .baseTile = 0x23, +}; + +static const struct GraphicsModes sWFCWarningMsgGraphicsModes = { + .dispMode = GX_DISPMODE_GRAPHICS, + .bgMode = GX_BGMODE_0, + .subMode = GX_BGMODE_0, + ._2d3dMode = GX_BG0_AS_2D, +}; + +static const struct BgTemplate sWFCWarningMsgBgTemplate = { + .x = 0, + .y = 0, + .bufferSize = 0x800, + .baseTile = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x0000, + .charBase = GX_BG_CHARBASE_0x18000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .unk17 = 0, + .mosaic = FALSE, +}; + +static const struct GraphicsBanks sWFCWarningMsgGraphicsBanks = { + .bg = 3, + .bgextpltt = 0, + .subbg = 0, + .subbgextpltt = 0, + .obj = 0, + .objextpltt = 0, + .subobj = 0, + .subobjextpltt = 0, + .tex = 0, + .texpltt = 0, +}; + +THUMB_FUNC void ShowWFCUserInfoWarning(u32 heap_id, u32 a1) +{ +#pragma unused(a1) + struct Window window; + + FUN_0200E3A0(PM_LCD_TOP, 0); + FUN_0200E3A0(PM_LCD_BOTTOM, 0); + + FUN_02015EF4(); + Main_SetVBlankIntrCB(NULL, NULL); + FUN_02015F34(NULL, NULL); + + GX_DisableEngineALayers(); + GX_DisableEngineBLayers(); + reg_GX_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + reg_GXS_DB_DISPCNT &= ~REG_GX_DISPCNT_DISPLAY_MASK; + + SetKeyRepeatTimers(4, 8); + + gMain.unk65 = 0; + + GX_SwapDisplay(); + reg_G2_BLDCNT = 0; + reg_G2S_DB_BLDCNT = 0; + reg_GX_DISPCNT &= ~(REG_GX_DISPCNT_OW_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_W0_MASK); + reg_GXS_DB_DISPCNT &= ~(REG_GXS_DB_DISPCNT_OW_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_W0_MASK); + GX_SetBanks(&sWFCWarningMsgGraphicsBanks); + + struct BgConfig* bg_config = BgConfig_Alloc(heap_id); + + SetBothScreensModesAndDisable(&sWFCWarningMsgGraphicsModes); + + InitBgFromTemplate(bg_config, 0, &sWFCWarningMsgBgTemplate, 0); + BgClearTilemapBufferAndCommit(bg_config, 0); + FUN_0200CB00(bg_config, GF_BG_LYR_MAIN_0, 0x01F7, 2, 0, heap_id); + FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, heap_id); + BG_ClearCharDataRange(GF_BG_LYR_MAIN_0, 0x20, 0, heap_id); + BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0x6C21); + BG_SetMaskColor(GF_BG_LYR_SUB_0, 0x6C21); + + struct MsgData* warning_messages_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0613_bin, heap_id); + struct String* warning_message = String_ctor(384, heap_id); + FUN_0201BD5C(); + AddWindow(bg_config, &window, &sWFCWarningMsgWindowTemplate); + FillWindowPixelRect(&window, 0xF, 0, 0, 208, 144); + FUN_0200CCA4(&window, FALSE, 0x01F7, 2); + + ReadMsgDataIntoString(warning_messages_data, 15, warning_message); + AddTextPrinterParameterized(&window, 0, warning_message, 0, 0, 0, 0); + String_dtor(warning_message); + + GX_BothDispOn(); + FUN_0200E394(0); + FUN_0200E394(1); + FUN_0200A274(0, 0x3F, 3); + + while (TRUE) + { + u16 pressed_buttons = PAD_Read(); + + HandleDSLidAction(); + + if (pressed_buttons & PAD_BUTTON_A) + { + break; + } + + OS_WaitIrq(TRUE, OS_IE_V_BLANK); + } + + RemoveWindow(&window); + DestroyMsgData(warning_messages_data); + + ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_MAIN_2, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_MAIN_3, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_SUB_0, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_SUB_1, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_SUB_2, GX_LAYER_TOGGLE_OFF); + ToggleBgLayer(GF_BG_LYR_SUB_3, GX_LAYER_TOGGLE_OFF); + + FreeBgTilemapBuffer(bg_config, 0); + FreeToHeap(bg_config); +} diff --git a/include/unk_02034188.h b/include/unk_02034188.h new file mode 100644 index 00000000..02ade1f0 --- /dev/null +++ b/include/unk_02034188.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_UNK_02034188_H +#define POKEDIAMOND_UNK_02034188_H + +void ShowWFCUserInfoWarning(u32 heap_id, u32 a1); + +#endif |