From 1a19931f69d5ea0f7b680dabdabaf706676b5718 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 18:37:51 +0100 Subject: [PATCH 01/13] MOD59_TVSetupGraphics --- arm9/lib/NitroSDK/include/GX_g2.h | 29 +++- arm9/lib/NitroSDK/src/GX_g2.c | 4 +- arm9/modules/59/asm/mod59_TV_asm.s | 194 ------------------------- arm9/modules/59/include/mod59_Intro.h | 2 +- arm9/modules/59/include/mod59_TV_src.h | 1 + arm9/modules/59/src/mod59_Intro.c | 50 +++---- arm9/modules/59/src/mod59_TV_src.c | 60 +++++++- 7 files changed, 110 insertions(+), 230 deletions(-) diff --git a/arm9/lib/NitroSDK/include/GX_g2.h b/arm9/lib/NitroSDK/include/GX_g2.h index 97fa0e107..bb6d1f02f 100644 --- a/arm9/lib/NitroSDK/include/GX_g2.h +++ b/arm9/lib/NitroSDK/include/GX_g2.h @@ -4,8 +4,19 @@ #include "fx.h" #include "registers.h" +typedef enum GXBlendPlaneMask +{ + GX_BLEND_PLANEMASK_NONE = 0x0000, + GX_BLEND_PLANEMASK_BG0 = 0x0001, + GX_BLEND_PLANEMASK_BG1 = 0x0002, + GX_BLEND_PLANEMASK_BG2 = 0x0004, + GX_BLEND_PLANEMASK_BG3 = 0x0008, + GX_BLEND_PLANEMASK_OBJ = 0x0010, + GX_BLEND_PLANEMASK_BD = 0x0020 +} GXBlendPlaneMask; + void G2x_SetBGyAffine_(u32 ptr, const struct Mtx22 *mtx, fx32 a, fx32 b, fx32 c, fx32 d); -void G2x_SetBlendAlpha_(u32 *ptr, fx32 a, fx32 b, fx32 c, fx32 d); +void G2x_SetBlendAlpha_(u32 *ptr, GXBlendPlaneMask plane1, GXBlendPlaneMask plane2, fx32 c, fx32 d); void G2x_SetBlendBrightness_(u16 *ptr, fx32 a, fx32 brightness); void G2x_SetBlendBrightnessExt_(u16 *ptr, fx32 a, fx32 b, fx32 c, fx32 d, fx32 brightness); void G2x_ChangeBlendBrightness_(u16 *ptr, fx32 brightness); @@ -15,8 +26,7 @@ typedef struct u8 planeMask:5; u8 effect:1; u8 _reserve:2; -} - GXWndPlane; +} GXWndPlane; typedef enum { @@ -26,8 +36,7 @@ typedef enum GX_WND_PLANEMASK_BG2 = 0x0004, GX_WND_PLANEMASK_BG3 = 0x0008, GX_WND_PLANEMASK_OBJ = 0x0010 -} - GXWndPlaneMask; +} GXWndPlaneMask; static inline void G2_SetWndOutsidePlane(int wnd, BOOL effect) { @@ -121,6 +130,16 @@ static inline void G2S_BlendNone(void) reg_G2S_DB_BLDCNT = 0; } +static inline void G2_SetBlendAlpha(GXBlendPlaneMask plane1, GXBlendPlaneMask plane2, fx32 ev1, fx32 ev2) +{ + G2x_SetBlendAlpha_((u32 *)®_G2_BLEND, plane1, plane2, ev1, ev2); +} + +static inline void G2S_SetBlendAlpha(GXBlendPlaneMask plane1, GXBlendPlaneMask plane2, fx32 ev1, fx32 ev2) +{ + G2x_SetBlendAlpha_((u32 *)®_G2S_DB_BLEND, plane1, plane2, ev1, ev2); +} + //The g2 and g2_oam headers contain a lot of inline functions and enums that may want to be ported over at some point #endif //GUARD_GX_G2_H diff --git a/arm9/lib/NitroSDK/src/GX_g2.c b/arm9/lib/NitroSDK/src/GX_g2.c index 39b8bff4d..55ab36ec9 100644 --- a/arm9/lib/NitroSDK/src/GX_g2.c +++ b/arm9/lib/NitroSDK/src/GX_g2.c @@ -13,8 +13,8 @@ ARM_FUNC void G2x_SetBGyAffine_(u32 ptr, const struct Mtx22 *mtx, fx32 a, fx32 b *((vu32 *)ptr + 3) = (u32)(temp3 >> 4); } -ARM_FUNC void G2x_SetBlendAlpha_(u32 *ptr, fx32 a, fx32 b, fx32 c, fx32 d){ - *ptr = (u32)(((a | 0x40) | (b << 0x8)) | ((c | (d << 0x8)) << 0x10)); +ARM_FUNC void G2x_SetBlendAlpha_(u32 *ptr, GXBlendPlaneMask plane1, GXBlendPlaneMask plane2, fx32 c, fx32 d){ + *ptr = (u32)(((plane1 | 0x40) | (plane2 << 0x8)) | ((c | (d << 0x8)) << 0x10)); } ARM_FUNC void G2x_SetBlendBrightness_(u16 *ptr, fx32 a, fx32 brightness){ diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index 7d96f5519..22ec02836 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -3,200 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD59_021D9A20 -MOD59_021D9A20: ; 0x021D9A20 - push {r3, r4, r5, lr} - sub sp, #0xb8 - ldr r5, _021D9BB4 ; =0x021DA0D4 - add r4, r0, #0 - add r3, sp, #0x90 - mov r2, #5 -_021D9A2C: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D9A2C - add r0, sp, #0x90 - bl GX_SetBanks - ldr r0, [r4] - bl BgConfig_Alloc - add r3, sp, #0x80 - ldr r5, _021D9BB8 ; =0x021DA054 - str r0, [r4, #4] - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl SetBothScreensModesAndDisable - ldr r5, _021D9BBC ; =0x021DA080 - add r3, sp, #0x64 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #2 - str r0, [r3] - ldr r0, [r4, #4] - mov r3, #0 - bl InitBgFromTemplate - ldr r3, [r4] - mov r0, #2 - mov r1, #0x20 - mov r2, #0 - bl BG_ClearCharDataRange - ldr r0, [r4, #4] - mov r1, #2 - bl BgClearTilemapBufferAndCommit - ldr r5, _021D9BC0 ; =0x021DA09C - add r3, sp, #0x48 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #0 - str r0, [r3] - ldr r0, [r4, #4] - add r3, r1, #0 - bl InitBgFromTemplate - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - ldr r0, [r4] - mov r1, #1 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl GfGfxLoader_LoadCharData - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - ldr r0, [r4] - mov r1, #4 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl GfGfxLoader_LoadScrnData - ldr r5, _021D9BC4 ; =0x021DA064 - add r3, sp, #0x2c - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #1 - str r0, [r3] - ldr r0, [r4, #4] - mov r3, #0 - bl InitBgFromTemplate - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #2 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #1 - bl GfGfxLoader_LoadCharData - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #5 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - mov r3, #1 - bl GfGfxLoader_LoadScrnData - ldr r5, _021D9BC8 ; =0x021DA0B8 - add r3, sp, #0x10 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5] - mov r1, #3 - str r0, [r3] - ldr r0, [r4, #4] - mov r3, #0 - bl InitBgFromTemplate - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - ldr r0, [r4] - mov r3, #3 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - bl GfGfxLoader_LoadCharData - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r4] - mov r1, #3 - str r0, [sp, #0xc] - ldr r2, [r4, #4] - mov r0, #0x88 - add r3, r1, #0 - bl GfGfxLoader_LoadScrnData - mov r2, #0 - str r2, [sp] - ldr r0, [r4] - mov r1, #6 - str r0, [sp, #4] - mov r0, #0x88 - add r3, r2, #0 - bl GfGfxLoader_GXLoadPal - ldr r2, [r4] - mov r0, #0 - mov r1, #0x20 - bl FUN_02002ED0 - mov r0, #0 - add r1, r0, #0 - bl BG_SetMaskColor - mov r0, #4 - mov r1, #0 - bl BG_SetMaskColor - mov r2, #0xc - ldr r0, _021D9BCC ; =0x04000050 - mov r1, #2 - mov r3, #4 - str r2, [sp] - bl G2x_SetBlendAlpha_ - add sp, #0xb8 - pop {r3, r4, r5, pc} - nop -_021D9BB4: .word MOD59_021DA0D4 -_021D9BB8: .word MOD59_021DA054 -_021D9BBC: .word MOD59_021DA080 -_021D9BC0: .word MOD59_021DA09C -_021D9BC4: .word MOD59_021DA064 -_021D9BC8: .word MOD59_021DA0B8 -_021D9BCC: .word 0x04000050 - thumb_func_end MOD59_021D9A20 - thumb_func_start MOD59_021D9BD0 MOD59_021D9BD0: ; 0x021D9BD0 push {r4, lr} diff --git a/arm9/modules/59/include/mod59_Intro.h b/arm9/modules/59/include/mod59_Intro.h index 53ff14023..977fa58e3 100644 --- a/arm9/modules/59/include/mod59_Intro.h +++ b/arm9/modules/59/include/mod59_Intro.h @@ -106,7 +106,7 @@ BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *param1); BOOL MOD59_IntroExit(struct UnkStruct_02006234 *overlayStruct, u32 *param1); void MOD59_IntroDoGpuBgUpdate(MOD59_IntroOverlayData *data); BOOL MOD59_TestPokeballTouchLocation(void); -void MOD59_SetupBg(MOD59_IntroOverlayData *data); +void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data); void MOD59_DestroyBg(MOD59_IntroOverlayData *data); void MOD59_SetupMsg(MOD59_IntroOverlayData *data); void MOD59_DestroyMsg(MOD59_IntroOverlayData *data); diff --git a/arm9/modules/59/include/mod59_TV_src.h b/arm9/modules/59/include/mod59_TV_src.h index 04b54ccdc..5d055d2e4 100644 --- a/arm9/modules/59/include/mod59_TV_src.h +++ b/arm9/modules/59/include/mod59_TV_src.h @@ -16,5 +16,6 @@ BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1); BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *param1); BOOL MOD59_TVExit(struct UnkStruct_02006234 *overlayStruct, u32 *param1); void MOD59_TVDoGpuBgUpdate(MOD59_TVOverlayData *data); +void MOD59_TVSetupGraphics(MOD59_TVOverlayData *data); #endif // POKEDIAMOND_MOD59_TV_H diff --git a/arm9/modules/59/src/mod59_Intro.c b/arm9/modules/59/src/mod59_Intro.c index 86909cd1a..ec05546f4 100644 --- a/arm9/modules/59/src/mod59_Intro.c +++ b/arm9/modules/59/src/mod59_Intro.c @@ -429,7 +429,7 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p SetKeyRepeatTimers(4, 8); - MOD59_SetupBg(data); + MOD59_IntroSetupBg(data); MOD59_SetupMsg(data); MOD59_021D7A4C(data); @@ -558,7 +558,7 @@ THUMB_FUNC BOOL MOD59_TestPokeballTouchLocation(void) return ret; } -THUMB_FUNC void MOD59_SetupBg(MOD59_IntroOverlayData *data) +THUMB_FUNC void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data) { struct GraphicsBanks graphicsBanks = MOD59_021D9F18; GX_SetBanks(&graphicsBanks); @@ -570,22 +570,22 @@ THUMB_FUNC void MOD59_SetupBg(MOD59_IntroOverlayData *data) struct BgTemplate bgTemplateMain = MOD59_021D9EA0; bgTemplateMain.screenBase = 15; bgTemplateMain.charBase = 6; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_0, &bgTemplateMain, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_0, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); bgTemplateMain.screenBase = 14; bgTemplateMain.charBase = 5; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_1, &bgTemplateMain, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_1, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_1); bgTemplateMain.screenBase = 13; bgTemplateMain.charBase = 4; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_2, &bgTemplateMain, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_2, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_2); bgTemplateMain.screenBase = 12; bgTemplateMain.charBase = 3; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_3, &bgTemplateMain, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_3, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_3); FUN_0200CD68(data->bgConfig, 0, 994, 4, 0, data->heap_id); @@ -596,22 +596,22 @@ THUMB_FUNC void MOD59_SetupBg(MOD59_IntroOverlayData *data) struct BgTemplate bgTemplateSub = MOD59_021D9EBC; bgTemplateSub.screenBase = 15; bgTemplateSub.charBase = 6; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_0, &bgTemplateSub, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_0, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_0); bgTemplateSub.screenBase = 14; bgTemplateSub.charBase = 5; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_1, &bgTemplateSub, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_1, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_1); bgTemplateSub.screenBase = 13; bgTemplateSub.charBase = 4; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_2, &bgTemplateSub, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_2, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_2); bgTemplateSub.screenBase = 12; bgTemplateSub.charBase = 3; - InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_3, &bgTemplateSub, 0); + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_3, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_3); ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_OFF); @@ -688,34 +688,34 @@ THUMB_FUNC void MOD59_021D7A5C(MOD59_IntroOverlayData *data) //MOD59_Destroy... THUMB_FUNC BOOL MOD59_FadeController(MOD59_IntroOverlayData *data, u32 bgId, u32 param2) { BOOL subScreen; - s32 var1; + GXBlendPlaneMask planeMask; BOOL ret = FALSE; switch (bgId) { case GF_BG_LYR_MAIN_0: case GF_BG_LYR_MAIN_3: default: - var1 = 1; + planeMask = GX_BLEND_PLANEMASK_BG0; subScreen = FALSE; break; case GF_BG_LYR_MAIN_1: - var1 = 2; + planeMask = GX_BLEND_PLANEMASK_BG1; subScreen = FALSE; break; case GF_BG_LYR_MAIN_2: - var1 = 4; + planeMask = GX_BLEND_PLANEMASK_BG2; subScreen = FALSE; break; case GF_BG_LYR_SUB_0: - var1 = 1; + planeMask = GX_BLEND_PLANEMASK_BG0; subScreen = TRUE; break; case GF_BG_LYR_SUB_1: - var1 = 2; + planeMask = GX_BLEND_PLANEMASK_BG1; subScreen = TRUE; break; case GF_BG_LYR_SUB_2: - var1 = 4; + planeMask = GX_BLEND_PLANEMASK_BG2; subScreen = TRUE; break; } @@ -729,11 +729,11 @@ THUMB_FUNC BOOL MOD59_FadeController(MOD59_IntroOverlayData *data, u32 bgId, u32 data->fadeCounter = 1; if (!subScreen) { - G2x_SetBlendAlpha_(®_G2_BLEND, var1, 14, data->unk7C, data->unk80); + G2_SetBlendAlpha(planeMask, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1, data->unk7C, data->unk80); } else { - G2x_SetBlendAlpha_(®_G2S_DB_BLEND, var1, 14, data->unk7C, data->unk80); + G2S_SetBlendAlpha(planeMask, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1, data->unk7C, data->unk80); } ToggleBgLayer((u8)bgId, GX_LAYER_TOGGLE_ON); } @@ -751,11 +751,11 @@ THUMB_FUNC BOOL MOD59_FadeController(MOD59_IntroOverlayData *data, u32 bgId, u32 data->unk80--; if (!subScreen) { - G2x_SetBlendAlpha_(®_G2_BLEND, var1, 14, data->unk7C, data->unk80); + G2_SetBlendAlpha(planeMask, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1, data->unk7C, data->unk80); } else { - G2x_SetBlendAlpha_(®_G2S_DB_BLEND, var1, 14, data->unk7C, data->unk80); + G2S_SetBlendAlpha(planeMask, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1, data->unk7C, data->unk80); } } else @@ -770,11 +770,11 @@ THUMB_FUNC BOOL MOD59_FadeController(MOD59_IntroOverlayData *data, u32 bgId, u32 data->unk80++; if (!subScreen) { - G2x_SetBlendAlpha_(®_G2_BLEND, var1, 14, data->unk7C, data->unk80); + G2_SetBlendAlpha(planeMask, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1, data->unk7C, data->unk80); } else { - G2x_SetBlendAlpha_(®_G2S_DB_BLEND, var1, 14, data->unk7C, data->unk80); + G2S_SetBlendAlpha(planeMask, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1, data->unk7C, data->unk80); } } else @@ -1344,7 +1344,7 @@ THUMB_FUNC void MOD59_AnimatePlayerSprite(MOD59_IntroOverlayData *data) timer = 4; } data->maleAnimTimer = timer; - G2x_SetBlendAlpha_(®_G2_BLEND, 4, 8, 6, 10); + G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG2, GX_BLEND_PLANEMASK_BG3, 6, 10); struct MOD59_CharStruct021D9DEC charStruct = MOD59_021D9DEC; GfGfxLoader_LoadCharData(NARC_DEMO_INTRO_INTRO, charStruct.narcId[data->maleAnimCounter], data->bgConfig, GF_BG_LYR_MAIN_1, 0, 0, FALSE, data->heap_id); } @@ -1361,7 +1361,7 @@ THUMB_FUNC void MOD59_AnimatePlayerSprite(MOD59_IntroOverlayData *data) timer = 4; } data->femaleAnimTimer = timer; - G2x_SetBlendAlpha_(®_G2_BLEND, 2, 8, 6, 10); + G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG1, GX_BLEND_PLANEMASK_BG3, 6, 10); struct MOD59_CharStruct021D9DEC charStruct = MOD59_021D9DFC; GfGfxLoader_LoadCharData(NARC_DEMO_INTRO_INTRO, charStruct.narcId[data->femaleAnimCounter], data->bgConfig, GF_BG_LYR_MAIN_2, 0, 0, FALSE, data->heap_id); } diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 60444195b..7ab87b7a9 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -3,7 +3,11 @@ #include "GX_layers.h" #include "bg_window.h" #include "constants/sndseq.h" +#include "demo/intro/intro_tv.naix" +#include "filesystem.h" +#include "font.h" #include "game_init.h" +#include "gf_gfx_loader.h" #include "heap.h" #include "overlay_manager.h" #include "unk_020040F4.h" @@ -13,13 +17,19 @@ extern void FUN_0200E3A0(PMLCDTarget, s32); 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 MOD59_021D9A20(MOD59_TVOverlayData *data); //setup func extern void MOD59_021D9C48(MOD59_TVOverlayData *data); //setup func extern void MOD59_021D9D78(void); extern BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 param1, u32 param2, u32 param3); extern void MOD59_021D9C68(MOD59_TVOverlayData *data); extern void MOD59_021D9BD0(MOD59_TVOverlayData *data); +extern const struct GraphicsBanks MOD59_021DA0D4; +extern const struct GraphicsModes MOD59_021DA054; +extern const struct BgTemplate MOD59_021DA080; +extern const struct BgTemplate MOD59_021DA09C; +extern const struct BgTemplate MOD59_021DA064; +extern const struct BgTemplate MOD59_021DA0B8; + THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { #pragma unused(param1) @@ -54,7 +64,7 @@ THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *para SetKeyRepeatTimers(4, 8); - MOD59_021D9A20(data); + MOD59_TVSetupGraphics(data); MOD59_021D9C48(data); Main_SetVBlankIntrCB((void (*)(void *))MOD59_TVDoGpuBgUpdate, data); @@ -200,7 +210,7 @@ _021D98C6: mov r1, #8 bl SetKeyRepeatTimers add r0, r4, #0 - bl MOD59_021D9A20 + bl MOD59_TVSetupGraphics add r0, r4, #0 bl MOD59_021D9C48 ldr r0, =MOD59_TVDoGpuBgUpdate @@ -317,3 +327,47 @@ THUMB_FUNC void MOD59_TVDoGpuBgUpdate(MOD59_TVOverlayData *data) { DoScheduledBgGpuUpdates(data->bgConfig); } + +THUMB_FUNC void MOD59_TVSetupGraphics(MOD59_TVOverlayData *data) +{ + const struct GraphicsBanks banks = MOD59_021DA0D4; //sp #0x90 + GX_SetBanks(&banks); + + data->bgConfig = BgConfig_Alloc(data->heap_id); + + const struct GraphicsModes modes = MOD59_021DA054; //sp #0x80 + SetBothScreensModesAndDisable(&modes); + + const struct BgTemplate bgTemplateMain2 = MOD59_021DA080; //sp #0x64 + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_2, &bgTemplateMain2, GF_BG_TYPE_TEXT); + + BG_ClearCharDataRange(GF_BG_LYR_MAIN_2, 0x20, 0, data->heap_id); + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_2); + + const struct BgTemplate bgTemplateMain0 = MOD59_021DA09C; //sp #0x48 + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_0, &bgTemplateMain0, GF_BG_TYPE_TEXT); + + GfGfxLoader_LoadCharData(NARC_DEMO_INTRO_INTRO_TV, NARC_intro_tv_narc_0001_NCGR, data->bgConfig, GF_BG_LYR_MAIN_0, 0, 0, FALSE, data->heap_id); + GfGfxLoader_LoadScrnData(NARC_DEMO_INTRO_INTRO_TV, NARC_intro_tv_narc_0004_NSCR, data->bgConfig, GF_BG_LYR_MAIN_0, 0, 0, FALSE, data->heap_id); + + const struct BgTemplate bgTemplateMain1 = MOD59_021DA064; //sp #0x2C + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_1, &bgTemplateMain1, GF_BG_TYPE_TEXT); + + GfGfxLoader_LoadCharData(NARC_DEMO_INTRO_INTRO_TV, NARC_intro_tv_narc_0002_NCGR, data->bgConfig, GF_BG_LYR_MAIN_1, 0, 0, FALSE, data->heap_id); + GfGfxLoader_LoadScrnData(NARC_DEMO_INTRO_INTRO_TV, NARC_intro_tv_narc_0005_NSCR, data->bgConfig, GF_BG_LYR_MAIN_1, 0, 0, FALSE, data->heap_id); + + const struct BgTemplate bgTemplateMain3 = MOD59_021DA0B8; //sp #0x10 + InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_3, &bgTemplateMain3, GF_BG_TYPE_TEXT); + + GfGfxLoader_LoadCharData(NARC_DEMO_INTRO_INTRO_TV, NARC_intro_tv_narc_0000_NCGR, data->bgConfig, GF_BG_LYR_MAIN_3, 0, 0, FALSE, data->heap_id); + GfGfxLoader_LoadScrnData(NARC_DEMO_INTRO_INTRO_TV, NARC_intro_tv_narc_0003_NSCR, data->bgConfig, GF_BG_LYR_MAIN_3, 0, 0, FALSE, data->heap_id); + + GfGfxLoader_GXLoadPal(NARC_DEMO_INTRO_INTRO_TV, NARC_intro_tv_narc_0006_NCLR, GF_BG_LYR_MAIN_0, 0, 0, data->heap_id); + + FUN_02002ED0(GF_BG_LYR_MAIN_0, 0x20, data->heap_id); + + BG_SetMaskColor(GF_BG_LYR_MAIN_0, 0); + BG_SetMaskColor(GF_BG_LYR_SUB_0, 0); + + G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG1, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2, 4, 12); +} From d64b5712d01fc2e59042e3fb893dd36274a77564 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 19:26:44 +0100 Subject: [PATCH 02/13] MOD59_TVDestroyGraphics --- arm9/modules/59/asm/mod59_TV_asm.s | 50 -------------------------- arm9/modules/59/include/mod59_Intro.h | 2 +- arm9/modules/59/include/mod59_TV_src.h | 1 + arm9/modules/59/src/mod59_Intro.c | 6 ++-- arm9/modules/59/src/mod59_TV_src.c | 25 +++++++++++-- 5 files changed, 27 insertions(+), 57 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index 22ec02836..15ab70490 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -3,56 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD59_021D9BD0 -MOD59_021D9BD0: ; 0x021D9BD0 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl ToggleBgLayer - mov r0, #1 - mov r1, #0 - bl ToggleBgLayer - mov r0, #2 - mov r1, #0 - bl ToggleBgLayer - mov r0, #3 - mov r1, #0 - bl ToggleBgLayer - mov r0, #4 - mov r1, #0 - bl ToggleBgLayer - mov r0, #5 - mov r1, #0 - bl ToggleBgLayer - mov r0, #6 - mov r1, #0 - bl ToggleBgLayer - mov r0, #7 - mov r1, #0 - bl ToggleBgLayer - ldr r0, _021D9C44 ; =0x04000050 - mov r1, #0 - strh r1, [r0] - ldr r0, [r4, #4] - mov r1, #3 - bl FreeBgTilemapBuffer - ldr r0, [r4, #4] - mov r1, #1 - bl FreeBgTilemapBuffer - ldr r0, [r4, #4] - mov r1, #0 - bl FreeBgTilemapBuffer - ldr r0, [r4, #4] - mov r1, #2 - bl FreeBgTilemapBuffer - ldr r0, [r4, #4] - bl FreeToHeap - pop {r4, pc} - nop -_021D9C44: .word 0x04000050 - thumb_func_end MOD59_021D9BD0 - thumb_func_start MOD59_021D9C48 MOD59_021D9C48: ; 0x021D9C48 push {r4, lr} diff --git a/arm9/modules/59/include/mod59_Intro.h b/arm9/modules/59/include/mod59_Intro.h index 977fa58e3..198408a1f 100644 --- a/arm9/modules/59/include/mod59_Intro.h +++ b/arm9/modules/59/include/mod59_Intro.h @@ -107,7 +107,7 @@ BOOL MOD59_IntroExit(struct UnkStruct_02006234 *overlayStruct, u32 *param1); void MOD59_IntroDoGpuBgUpdate(MOD59_IntroOverlayData *data); BOOL MOD59_TestPokeballTouchLocation(void); void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data); -void MOD59_DestroyBg(MOD59_IntroOverlayData *data); +void MOD59_IntroDestroyBg(MOD59_IntroOverlayData *data); void MOD59_SetupMsg(MOD59_IntroOverlayData *data); void MOD59_DestroyMsg(MOD59_IntroOverlayData *data); void MOD59_021D7A4C(MOD59_IntroOverlayData *data); diff --git a/arm9/modules/59/include/mod59_TV_src.h b/arm9/modules/59/include/mod59_TV_src.h index 5d055d2e4..51ebd86f8 100644 --- a/arm9/modules/59/include/mod59_TV_src.h +++ b/arm9/modules/59/include/mod59_TV_src.h @@ -17,5 +17,6 @@ BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *param1); BOOL MOD59_TVExit(struct UnkStruct_02006234 *overlayStruct, u32 *param1); void MOD59_TVDoGpuBgUpdate(MOD59_TVOverlayData *data); void MOD59_TVSetupGraphics(MOD59_TVOverlayData *data); +void MOD59_TVDestroyGraphics(MOD59_TVOverlayData *data); #endif // POKEDIAMOND_MOD59_TV_H diff --git a/arm9/modules/59/src/mod59_Intro.c b/arm9/modules/59/src/mod59_Intro.c index ec05546f4..fda3f9dba 100644 --- a/arm9/modules/59/src/mod59_Intro.c +++ b/arm9/modules/59/src/mod59_Intro.c @@ -465,7 +465,7 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p } MOD59_DestroyMsg(data); - MOD59_DestroyBg(data); + MOD59_IntroDestroyBg(data); MOD59_021D7A5C(data); Main_SetVBlankIntrCB(NULL, NULL); @@ -480,7 +480,7 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p } MOD59_DestroyMsg(data); - MOD59_DestroyBg(data); + MOD59_IntroDestroyBg(data); MOD59_021D7A5C(data); Main_SetVBlankIntrCB(NULL, NULL); @@ -628,7 +628,7 @@ THUMB_FUNC void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data) data->fadeCounter = 0; } -THUMB_FUNC void MOD59_DestroyBg(MOD59_IntroOverlayData *data) +THUMB_FUNC void MOD59_IntroDestroyBg(MOD59_IntroOverlayData *data) { ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_OFF); ToggleBgLayer(GF_BG_LYR_MAIN_1, GX_LAYER_TOGGLE_OFF); diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 7ab87b7a9..ec703b213 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -21,7 +21,6 @@ extern void MOD59_021D9C48(MOD59_TVOverlayData *data); //setup func extern void MOD59_021D9D78(void); extern BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 param1, u32 param2, u32 param3); extern void MOD59_021D9C68(MOD59_TVOverlayData *data); -extern void MOD59_021D9BD0(MOD59_TVOverlayData *data); extern const struct GraphicsBanks MOD59_021DA0D4; extern const struct GraphicsModes MOD59_021DA054; @@ -137,7 +136,7 @@ THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *para } MOD59_021D9C68(data); - MOD59_021D9BD0(data); + MOD59_TVDestroyGraphics(data); Main_SetVBlankIntrCB(NULL, NULL); @@ -302,7 +301,7 @@ _021D99C0: add r0, r4, #0 bl MOD59_021D9C68 add r0, r4, #0 - bl MOD59_021D9BD0 + bl MOD59_TVDestroyGraphics add r0, r6, #0 add r1, r0, #0 bl Main_SetVBlankIntrCB @@ -371,3 +370,23 @@ THUMB_FUNC void MOD59_TVSetupGraphics(MOD59_TVOverlayData *data) G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG1, GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2, 4, 12); } + +THUMB_FUNC void MOD59_TVDestroyGraphics(MOD59_TVOverlayData *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); + + reg_G2_BLDCNT = 0; + + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_3); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_1); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_0); + FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_2); + FreeToHeap(data->bgConfig); +} From eac06286957ff81669b2cf0b580beb6ef88c9140 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 19:43:46 +0100 Subject: [PATCH 03/13] MOD59_TVSetupMsg --- arm9/modules/59/asm/mod59_TV_asm.s | 18 ------------------ arm9/modules/59/include/mod59_Intro.h | 2 +- arm9/modules/59/include/mod59_TV_src.h | 7 ++++++- arm9/modules/59/src/mod59_Intro.c | 4 ++-- arm9/modules/59/src/mod59_TV_src.c | 18 ++++++++++++++---- 5 files changed, 23 insertions(+), 26 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index 15ab70490..db2936bd7 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -3,24 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD59_021D9C48 -MOD59_021D9C48: ; 0x021D9C48 - push {r4, lr} - add r4, r0, #0 - ldr r2, _021D9C64 ; =0x00000225 - ldr r3, [r4] - mov r0, #1 - mov r1, #0x1a - bl NewMsgDataFromNarc - str r0, [r4, #8] - bl FUN_0201BD5C - mov r0, #0 - str r0, [r4, #0xc] - pop {r4, pc} - .align 2, 0 -_021D9C64: .word 0x00000225 - thumb_func_end MOD59_021D9C48 - thumb_func_start MOD59_021D9C68 MOD59_021D9C68: ; 0x021D9C68 ldr r3, _021D9C70 ; =DestroyMsgData diff --git a/arm9/modules/59/include/mod59_Intro.h b/arm9/modules/59/include/mod59_Intro.h index 198408a1f..932496dec 100644 --- a/arm9/modules/59/include/mod59_Intro.h +++ b/arm9/modules/59/include/mod59_Intro.h @@ -108,7 +108,7 @@ void MOD59_IntroDoGpuBgUpdate(MOD59_IntroOverlayData *data); BOOL MOD59_TestPokeballTouchLocation(void); void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data); void MOD59_IntroDestroyBg(MOD59_IntroOverlayData *data); -void MOD59_SetupMsg(MOD59_IntroOverlayData *data); +void MOD59_IntroSetupMsg(MOD59_IntroOverlayData *data); void MOD59_DestroyMsg(MOD59_IntroOverlayData *data); void MOD59_021D7A4C(MOD59_IntroOverlayData *data); void MOD59_021D7A5C(MOD59_IntroOverlayData *data); diff --git a/arm9/modules/59/include/mod59_TV_src.h b/arm9/modules/59/include/mod59_TV_src.h index 51ebd86f8..9eec1451d 100644 --- a/arm9/modules/59/include/mod59_TV_src.h +++ b/arm9/modules/59/include/mod59_TV_src.h @@ -3,12 +3,16 @@ #include "nitro/types.h" #include "main.h" +#include "bg_window.h" +#include "msgdata.h" typedef struct MOD59_TVOverlayData2 { u32 heap_id; struct BgConfig *bgConfig; - u8 padding[0x1C]; + struct MsgData *msgData; + u32 unk0C; + u8 padding[0x14]; u32 unk24; } MOD59_TVOverlayData; @@ -18,5 +22,6 @@ BOOL MOD59_TVExit(struct UnkStruct_02006234 *overlayStruct, u32 *param1); void MOD59_TVDoGpuBgUpdate(MOD59_TVOverlayData *data); void MOD59_TVSetupGraphics(MOD59_TVOverlayData *data); void MOD59_TVDestroyGraphics(MOD59_TVOverlayData *data); +void MOD59_TVSetupMsg(MOD59_TVOverlayData *data); #endif // POKEDIAMOND_MOD59_TV_H diff --git a/arm9/modules/59/src/mod59_Intro.c b/arm9/modules/59/src/mod59_Intro.c index fda3f9dba..fcbaa78e3 100644 --- a/arm9/modules/59/src/mod59_Intro.c +++ b/arm9/modules/59/src/mod59_Intro.c @@ -430,7 +430,7 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p SetKeyRepeatTimers(4, 8); MOD59_IntroSetupBg(data); - MOD59_SetupMsg(data); + MOD59_IntroSetupMsg(data); MOD59_021D7A4C(data); Main_SetVBlankIntrCB((void (*)(void *))MOD59_IntroDoGpuBgUpdate, data); @@ -653,7 +653,7 @@ THUMB_FUNC void MOD59_IntroDestroyBg(MOD59_IntroOverlayData *data) FreeToHeap(data->bgConfig); } -THUMB_FUNC void MOD59_SetupMsg(MOD59_IntroOverlayData *data) +THUMB_FUNC void MOD59_IntroSetupMsg(MOD59_IntroOverlayData *data) { data->msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0341_bin, data->heap_id); diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index ec703b213..1f112bfea 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -1,7 +1,6 @@ #include "global.h" #include "mod59_TV_src.h" #include "GX_layers.h" -#include "bg_window.h" #include "constants/sndseq.h" #include "demo/intro/intro_tv.naix" #include "filesystem.h" @@ -9,7 +8,9 @@ #include "game_init.h" #include "gf_gfx_loader.h" #include "heap.h" +#include "msgdata/msg.naix" #include "overlay_manager.h" +#include "text.h" #include "unk_020040F4.h" extern void FUN_0200E3A0(PMLCDTarget, s32); @@ -17,7 +18,6 @@ extern void FUN_0200E3A0(PMLCDTarget, s32); 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 MOD59_021D9C48(MOD59_TVOverlayData *data); //setup func extern void MOD59_021D9D78(void); extern BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 param1, u32 param2, u32 param3); extern void MOD59_021D9C68(MOD59_TVOverlayData *data); @@ -64,7 +64,7 @@ THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *para SetKeyRepeatTimers(4, 8); MOD59_TVSetupGraphics(data); - MOD59_021D9C48(data); + MOD59_TVSetupMsg(data); Main_SetVBlankIntrCB((void (*)(void *))MOD59_TVDoGpuBgUpdate, data); @@ -211,7 +211,7 @@ _021D98C6: add r0, r4, #0 bl MOD59_TVSetupGraphics add r0, r4, #0 - bl MOD59_021D9C48 + bl MOD59_TVSetupMsg ldr r0, =MOD59_TVDoGpuBgUpdate add r1, r4, #0 bl Main_SetVBlankIntrCB @@ -390,3 +390,13 @@ THUMB_FUNC void MOD59_TVDestroyGraphics(MOD59_TVOverlayData *data) FreeBgTilemapBuffer(data->bgConfig, GF_BG_LYR_MAIN_2); FreeToHeap(data->bgConfig); } + +THUMB_FUNC void MOD59_TVSetupMsg(MOD59_TVOverlayData *data) +{ + data->msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, NARC_msg_narc_0549_bin, data->heap_id); + + FUN_0201BD5C(); + + data->unk0C = 0; +} + From 9e023175c47a2516785dedfb9dbef49caad80ba5 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 19:51:06 +0100 Subject: [PATCH 04/13] MOD59_TVDestroyMsg --- arm9/modules/59/asm/mod59_TV_asm.s | 9 --------- arm9/modules/59/include/mod59_Intro.h | 2 +- arm9/modules/59/include/mod59_TV_src.h | 1 + arm9/modules/59/src/mod59_Intro.c | 6 +++--- arm9/modules/59/src/mod59_TV_src.c | 9 ++++++--- 5 files changed, 11 insertions(+), 16 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index db2936bd7..2c5a13f05 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -3,15 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD59_021D9C68 -MOD59_021D9C68: ; 0x021D9C68 - ldr r3, _021D9C70 ; =DestroyMsgData - ldr r0, [r0, #8] - bx r3 - nop -_021D9C70: .word DestroyMsgData - thumb_func_end MOD59_021D9C68 - thumb_func_start MOD59_021D9C74 MOD59_021D9C74: ; 0x021D9C74 push {r4, r5, r6, r7, lr} diff --git a/arm9/modules/59/include/mod59_Intro.h b/arm9/modules/59/include/mod59_Intro.h index 932496dec..d7822809a 100644 --- a/arm9/modules/59/include/mod59_Intro.h +++ b/arm9/modules/59/include/mod59_Intro.h @@ -109,7 +109,7 @@ BOOL MOD59_TestPokeballTouchLocation(void); void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data); void MOD59_IntroDestroyBg(MOD59_IntroOverlayData *data); void MOD59_IntroSetupMsg(MOD59_IntroOverlayData *data); -void MOD59_DestroyMsg(MOD59_IntroOverlayData *data); +void MOD59_IntroDestroyMsg(MOD59_IntroOverlayData *data); void MOD59_021D7A4C(MOD59_IntroOverlayData *data); void MOD59_021D7A5C(MOD59_IntroOverlayData *data); BOOL MOD59_FadeController(MOD59_IntroOverlayData *data, u32 param1, u32 param2); diff --git a/arm9/modules/59/include/mod59_TV_src.h b/arm9/modules/59/include/mod59_TV_src.h index 9eec1451d..82959332a 100644 --- a/arm9/modules/59/include/mod59_TV_src.h +++ b/arm9/modules/59/include/mod59_TV_src.h @@ -23,5 +23,6 @@ void MOD59_TVDoGpuBgUpdate(MOD59_TVOverlayData *data); void MOD59_TVSetupGraphics(MOD59_TVOverlayData *data); void MOD59_TVDestroyGraphics(MOD59_TVOverlayData *data); void MOD59_TVSetupMsg(MOD59_TVOverlayData *data); +void MOD59_TVDestroyMsg(MOD59_TVOverlayData *data); #endif // POKEDIAMOND_MOD59_TV_H diff --git a/arm9/modules/59/src/mod59_Intro.c b/arm9/modules/59/src/mod59_Intro.c index fcbaa78e3..c2ef571eb 100644 --- a/arm9/modules/59/src/mod59_Intro.c +++ b/arm9/modules/59/src/mod59_Intro.c @@ -464,7 +464,7 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p break; } - MOD59_DestroyMsg(data); + MOD59_IntroDestroyMsg(data); MOD59_IntroDestroyBg(data); MOD59_021D7A5C(data); @@ -479,7 +479,7 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p break; } - MOD59_DestroyMsg(data); + MOD59_IntroDestroyMsg(data); MOD59_IntroDestroyBg(data); MOD59_021D7A5C(data); @@ -668,7 +668,7 @@ THUMB_FUNC void MOD59_IntroSetupMsg(MOD59_IntroOverlayData *data) data->createListCounter = 0; } -THUMB_FUNC void MOD59_DestroyMsg(MOD59_IntroOverlayData *data) +THUMB_FUNC void MOD59_IntroDestroyMsg(MOD59_IntroOverlayData *data) { ScrStrBufs_delete(data->strBufs); FUN_020143D0(data->unk60); diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 1f112bfea..c144fbf6c 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -20,7 +20,6 @@ extern u32 FUN_0200E308(void); extern void MOD59_021D9D78(void); extern BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 param1, u32 param2, u32 param3); -extern void MOD59_021D9C68(MOD59_TVOverlayData *data); extern const struct GraphicsBanks MOD59_021DA0D4; extern const struct GraphicsModes MOD59_021DA054; @@ -135,7 +134,7 @@ THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *para break; } - MOD59_021D9C68(data); + MOD59_TVDestroyMsg(data); MOD59_TVDestroyGraphics(data); Main_SetVBlankIntrCB(NULL, NULL); @@ -299,7 +298,7 @@ _021D99C0: cmp r0, #1 bne _021D99E2 add r0, r4, #0 - bl MOD59_021D9C68 + bl MOD59_TVDestroyMsg add r0, r4, #0 bl MOD59_TVDestroyGraphics add r0, r6, #0 @@ -400,3 +399,7 @@ THUMB_FUNC void MOD59_TVSetupMsg(MOD59_TVOverlayData *data) data->unk0C = 0; } +THUMB_FUNC void MOD59_TVDestroyMsg(MOD59_TVOverlayData *data) +{ + DestroyMsgData(data->msgData); +} From 1e043dbb89cb43d0dbd275937bd33b8eb39c5dd7 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 20:40:50 +0100 Subject: [PATCH 05/13] MOD59_021D9C74 --- arm9/modules/59/asm/mod59_TV_asm.s | 128 ------------------------- arm9/modules/59/include/mod59_TV_src.h | 4 +- arm9/modules/59/src/mod59_TV_src.c | 52 +++++++++- 3 files changed, 54 insertions(+), 130 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index 2c5a13f05..b375c41c9 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -3,134 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD59_021D9C74 -MOD59_021D9C74: ; 0x021D9C74 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r4, r0, #0 - ldr r0, [r4, #0xc] - str r1, [sp, #0x10] - add r7, r3, #0 - mov r5, #0 - cmp r0, #3 - bhi _021D9D66 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D9C92: ; jump table - .short _021D9C9A - _021D9C92 - 2 ; case 0 - .short _021D9D24 - _021D9C92 - 2 ; case 1 - .short _021D9D36 - _021D9C92 - 2 ; case 2 - .short _021D9D50 - _021D9C92 - 2 ; case 3 -_021D9C9A: - mov r0, #2 - add r1, r5, #0 - bl ToggleBgLayer - mov r0, #1 - ldr r1, [r4] - lsl r0, r0, #0xa - bl String_ctor - add r6, r0, #0 - ldr r0, [r4, #8] - ldr r1, [sp, #0x10] - add r2, r6, #0 - bl ReadMsgDataIntoString - add r1, r4, #0 - ldr r0, [r4, #4] - ldr r2, _021D9D6C ; =0x021DA04C - add r1, #0x10 - bl AddWindow - add r1, r5, #0 - mov r0, #1 - lsl r0, r0, #8 - str r0, [sp] - mov r0, #0xc0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x10 - add r2, r1, #0 - add r3, r1, #0 - bl FillWindowPixelRect - add r0, r5, #0 - add r1, r6, #0 - add r2, r0, #0 - bl FUN_02002F08 - mov r1, #1 - lsl r1, r1, #8 - sub r0, r1, r0 - lsr r3, r0, #1 - str r7, [sp] - add r1, r5, #0 - ldr r0, _021D9D70 ; =0x000F0200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r4, #0 - add r0, #0x10 - add r2, r6, #0 - str r1, [sp, #0xc] - bl AddTextPrinterParameterized2 - add r0, r6, #0 - bl String_dtor - add r0, r4, #0 - add r0, #0x10 - bl CopyWindowToVram - mov r0, #2 - mov r1, #1 - bl ToggleBgLayer - mov r0, #0xf0 - str r0, [r4, #0x24] - mov r0, #1 - str r0, [r4, #0xc] - b _021D9D66 -_021D9D24: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D9D30 - sub r0, r0, #1 - str r0, [r4, #0x24] - b _021D9D66 -_021D9D30: - mov r0, #2 - str r0, [r4, #0xc] - b _021D9D66 -_021D9D36: - ldr r0, _021D9D74 ; =gMain - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - beq _021D9D4A - mov r0, #2 - and r0, r1 - cmp r0, #2 - bne _021D9D66 -_021D9D4A: - mov r0, #3 - str r0, [r4, #0xc] - b _021D9D66 -_021D9D50: - add r0, r4, #0 - add r0, #0x10 - bl RemoveWindow - ldr r0, [r4, #4] - mov r1, #2 - bl BgClearTilemapBufferAndCommit - add r0, r5, #0 - str r0, [r4, #0xc] - mov r5, #1 -_021D9D66: - add r0, r5, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_021D9D6C: .word MOD59_021DA04C -_021D9D70: .word 0x000F0200 -_021D9D74: .word gMain - thumb_func_end MOD59_021D9C74 - thumb_func_start MOD59_021D9D78 MOD59_021D9D78: ; 0x021D9D78 push {r3, lr} diff --git a/arm9/modules/59/include/mod59_TV_src.h b/arm9/modules/59/include/mod59_TV_src.h index 82959332a..dbbd239b2 100644 --- a/arm9/modules/59/include/mod59_TV_src.h +++ b/arm9/modules/59/include/mod59_TV_src.h @@ -12,7 +12,8 @@ typedef struct MOD59_TVOverlayData2 struct BgConfig *bgConfig; struct MsgData *msgData; u32 unk0C; - u8 padding[0x14]; + struct Window window; + u8 padding[0x4]; u32 unk24; } MOD59_TVOverlayData; @@ -24,5 +25,6 @@ void MOD59_TVSetupGraphics(MOD59_TVOverlayData *data); void MOD59_TVDestroyGraphics(MOD59_TVOverlayData *data); void MOD59_TVSetupMsg(MOD59_TVOverlayData *data); void MOD59_TVDestroyMsg(MOD59_TVOverlayData *data); +BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 msgNo, u32 param2, u32 param3); #endif // POKEDIAMOND_MOD59_TV_H diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index c144fbf6c..a97051c5c 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -1,6 +1,7 @@ #include "global.h" #include "mod59_TV_src.h" #include "GX_layers.h" +#include "PAD_pad.h" #include "constants/sndseq.h" #include "demo/intro/intro_tv.naix" #include "filesystem.h" @@ -19,7 +20,6 @@ extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 par extern u32 FUN_0200E308(void); extern void MOD59_021D9D78(void); -extern BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 param1, u32 param2, u32 param3); extern const struct GraphicsBanks MOD59_021DA0D4; extern const struct GraphicsModes MOD59_021DA054; @@ -27,6 +27,7 @@ extern const struct BgTemplate MOD59_021DA080; extern const struct BgTemplate MOD59_021DA09C; extern const struct BgTemplate MOD59_021DA064; extern const struct BgTemplate MOD59_021DA0B8; +extern const struct WindowTemplate MOD59_021DA04C; THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { @@ -403,3 +404,52 @@ THUMB_FUNC void MOD59_TVDestroyMsg(MOD59_TVOverlayData *data) { DestroyMsgData(data->msgData); } + +THUMB_FUNC BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 msgNo, u32 param2, u32 param3) +{ + BOOL ret = FALSE; + switch (data->unk0C) + { + case 0: + ToggleBgLayer(GF_BG_LYR_MAIN_2, GX_LAYER_TOGGLE_OFF); + struct String *string = String_ctor(1024, data->heap_id); + ReadMsgDataIntoString(data->msgData, msgNo, string); + AddWindow(data->bgConfig, &data->window, &MOD59_021DA04C); + FillWindowPixelRect(&data->window, 0, 0, 0, 256, 192); + u32 unk0 = (u32)FUN_02002F08(0, string, 0); + + unk0 = (256 - unk0 ) / 2; + AddTextPrinterParameterized2(&data->window, 0, string, unk0, param3, 0, MakeFontColor(15, 2, 0), 0); + String_dtor(string); + CopyWindowToVram(&data->window); + ToggleBgLayer(GF_BG_LYR_MAIN_2, GX_LAYER_TOGGLE_ON); + data->unk24 = 240; + data->unk0C = 1; + break; + + case 1: + if (data->unk24 != 0) + { + data->unk24--; + break; + } + data->unk0C = 2; + break; + + case 2: + if((gMain.newKeys & PAD_BUTTON_A) != 1 && (gMain.newKeys & PAD_BUTTON_B) != 2) + { + break; + } + data->unk0C = 3; + break; + + case 3: + RemoveWindow(&data->window); + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_2); + data->unk0C = 0; + ret = TRUE; + break; + } + return ret; +} From bbda7ba47d436b28801c89bffa3032786b3d8862 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 20:41:40 +0100 Subject: [PATCH 06/13] zero to null --- arm9/modules/59/src/mod59_TV_src.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index a97051c5c..433664d07 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -419,7 +419,7 @@ THUMB_FUNC BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 msgNo, u32 param2, u32 unk0 = (u32)FUN_02002F08(0, string, 0); unk0 = (256 - unk0 ) / 2; - AddTextPrinterParameterized2(&data->window, 0, string, unk0, param3, 0, MakeFontColor(15, 2, 0), 0); + AddTextPrinterParameterized2(&data->window, 0, string, unk0, param3, 0, MakeFontColor(15, 2, 0), NULL); String_dtor(string); CopyWindowToVram(&data->window); ToggleBgLayer(GF_BG_LYR_MAIN_2, GX_LAYER_TOGGLE_ON); From 71207708d074a5c68c5bccf63a9997f0f389765a Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 21:07:35 +0100 Subject: [PATCH 07/13] MOD59_021D9D78 --- arm9/modules/59/asm/mod59_TV_asm.s | 16 ---------------- arm9/modules/59/include/mod59_TV_src.h | 3 ++- arm9/modules/59/src/mod59_TV_src.c | 14 +++++++++----- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index b375c41c9..c8f276c1e 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -2,22 +2,6 @@ .include "global.inc" .section .text .balign 4, 0 - - thumb_func_start MOD59_021D9D78 -MOD59_021D9D78: ; 0x021D9D78 - push {r3, lr} - ldr r1, [r0, #0x20] - mov r2, #3 - add r3, r1, #4 - str r3, [r0, #0x20] - ldr r0, [r0, #4] - mov r1, #1 - asr r3, r3, #4 - bl BgSetPosTextAndCommit - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD59_021D9D78 - .rodata .global MOD59_021DA04C diff --git a/arm9/modules/59/include/mod59_TV_src.h b/arm9/modules/59/include/mod59_TV_src.h index dbbd239b2..a5d196843 100644 --- a/arm9/modules/59/include/mod59_TV_src.h +++ b/arm9/modules/59/include/mod59_TV_src.h @@ -13,7 +13,7 @@ typedef struct MOD59_TVOverlayData2 struct MsgData *msgData; u32 unk0C; struct Window window; - u8 padding[0x4]; + s32 unk20; u32 unk24; } MOD59_TVOverlayData; @@ -26,5 +26,6 @@ void MOD59_TVDestroyGraphics(MOD59_TVOverlayData *data); void MOD59_TVSetupMsg(MOD59_TVOverlayData *data); void MOD59_TVDestroyMsg(MOD59_TVOverlayData *data); BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 msgNo, u32 param2, u32 param3); +void MOD59_021D9D78(MOD59_TVOverlayData *data); #endif // POKEDIAMOND_MOD59_TV_H diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 433664d07..48baaa8ea 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -19,8 +19,6 @@ extern void FUN_0200E3A0(PMLCDTarget, s32); 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 MOD59_021D9D78(void); - extern const struct GraphicsBanks MOD59_021DA0D4; extern const struct GraphicsModes MOD59_021DA054; extern const struct BgTemplate MOD59_021DA080; @@ -104,7 +102,7 @@ THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *para break; case 3: - MOD59_021D9D78(); + MOD59_021D9D78(data); if (FUN_0200E308() != 1) { @@ -115,7 +113,7 @@ THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *para break; case 4: - MOD59_021D9D78(); + MOD59_021D9D78(data); if (MOD59_021D9C74(data, 0, 40, 48) != TRUE) { @@ -128,7 +126,7 @@ THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *para break; case 5: - MOD59_021D9D78(); + MOD59_021D9D78(data); if (FUN_0200E308() != 1) { @@ -453,3 +451,9 @@ THUMB_FUNC BOOL MOD59_021D9C74(MOD59_TVOverlayData *data, u32 msgNo, u32 param2, } return ret; } + +THUMB_FUNC void MOD59_021D9D78(MOD59_TVOverlayData *data) +{ + data->unk20 += 4; + BgSetPosTextAndCommit(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_Y, data->unk20 >> 4); +} From b60b0e6ad11fa02d2a3e013edd913dfcfc7d8f1f Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 21:13:56 +0100 Subject: [PATCH 08/13] MOD59_021DA04C --- arm9/modules/59/asm/mod59_TV_asm.s | 4 ---- arm9/modules/59/src/mod59_TV_src.c | 12 +++++++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index c8f276c1e..6bcbfd25e 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -4,10 +4,6 @@ .balign 4, 0 .rodata - .global MOD59_021DA04C -MOD59_021DA04C: ; 0x021DA04C - .byte 0x02, 0x00, 0x00, 0x20, 0x18, 0x01, 0x01, 0x00 - .global MOD59_021DA054 MOD59_021DA054: ; 0x021DA054 .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 48baaa8ea..5b874812e 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -25,7 +25,17 @@ extern const struct BgTemplate MOD59_021DA080; extern const struct BgTemplate MOD59_021DA09C; extern const struct BgTemplate MOD59_021DA064; extern const struct BgTemplate MOD59_021DA0B8; -extern const struct WindowTemplate MOD59_021DA04C; + +const struct WindowTemplate MOD59_021DA04C = + { + .bgId = GF_BG_LYR_MAIN_2, + .tilemapLeft = 0, + .tilemapTop = 0, + .width = 32, + .height = 24, + .paletteNum = 0x01, + .baseTile = 1, + }; THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { From 312f9523a67012303edbaa0c400c007c2d41a120 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 21:19:15 +0100 Subject: [PATCH 09/13] MOD59_021DA054 --- arm9/modules/59/asm/mod59_TV_asm.s | 4 ---- arm9/modules/59/src/mod59_TV_src.c | 9 ++++++++- include/GX_layers.h | 14 +++++--------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index 6bcbfd25e..c7c7d440d 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -4,10 +4,6 @@ .balign 4, 0 .rodata - .global MOD59_021DA054 -MOD59_021DA054: ; 0x021DA054 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global MOD59_021DA064 MOD59_021DA064: ; 0x021DA064 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 5b874812e..5d414695a 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -20,7 +20,6 @@ extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 par extern u32 FUN_0200E308(void); extern const struct GraphicsBanks MOD59_021DA0D4; -extern const struct GraphicsModes MOD59_021DA054; extern const struct BgTemplate MOD59_021DA080; extern const struct BgTemplate MOD59_021DA09C; extern const struct BgTemplate MOD59_021DA064; @@ -37,6 +36,14 @@ const struct WindowTemplate MOD59_021DA04C = .baseTile = 1, }; +const struct GraphicsModes MOD59_021DA054 = + { + .dispMode = GX_DISPMODE_GRAPHICS, + .bgMode = GX_BGMODE_0, + .subMode = GX_BGMODE_0, + ._2d3dMode = GX_BG0_AS_2D, + }; + THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { #pragma unused(param1) diff --git a/include/GX_layers.h b/include/GX_layers.h index 03c20df68..6c99d80d8 100644 --- a/include/GX_layers.h +++ b/include/GX_layers.h @@ -11,7 +11,6 @@ typedef enum { GX_LAYER_TOGGLE_ON, } GX_LayerToggle; - struct GraphicsBanks { s32 bg; @@ -26,7 +25,6 @@ struct GraphicsBanks s32 texpltt; }; - struct GraphicsModes { GXDispMode dispMode; GXBGMode bgMode; @@ -34,16 +32,14 @@ struct GraphicsModes { GXBG0As _2d3dMode; }; - - void GX_SetBanks(const struct GraphicsBanks *banks); -void GX_DisableEngineALayers(); +void GX_DisableEngineALayers(void); void GX_EngineAToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); void GX_SetEngineALayers(u32 layer_mask); -void GX_DisableEngineBLayers(); +void GX_DisableEngineBLayers(void); void GX_EngineBToggleLayers(u32 layer_mask, GX_LayerToggle layer_toggle); -void GX_BothDispOn(); -void GX_SwapDisplay(); -u32 GX_GetEngineALayers(); +void GX_BothDispOn(void); +void GX_SwapDisplay(void); +u32 GX_GetEngineALayers(void); #endif //POKEDIAMOND_GX_LAYERS_H From 77f9ee1885cc9adc49dc553435c8320b7f86224c Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 21:32:59 +0100 Subject: [PATCH 10/13] MOD59_021DA064 --- arm9/modules/59/asm/mod59_TV_asm.s | 5 --- arm9/modules/59/src/mod59_Intro.c | 60 +++++++++++++++--------------- arm9/modules/59/src/mod59_TV_src.c | 19 +++++++++- 3 files changed, 48 insertions(+), 36 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index c7c7d440d..f61fc69d5 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -4,11 +4,6 @@ .balign 4, 0 .rodata - .global MOD59_021DA064 -MOD59_021DA064: ; 0x021DA064 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global MOD59_021DA080 MOD59_021DA080: ; 0x021DA080 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/59/src/mod59_Intro.c b/arm9/modules/59/src/mod59_Intro.c index c2ef571eb..a00c23619 100644 --- a/arm9/modules/59/src/mod59_Intro.c +++ b/arm9/modules/59/src/mod59_Intro.c @@ -180,15 +180,15 @@ const struct BgTemplate MOD59_021D9EA0 = .bufferSize = 2048, .baseTile = 0, - .size = 1, - .colorMode = 0, - .screenBase = 0, - .charBase = 0, - .bgExtPltt = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x0000, + .charBase = GX_BG_CHARBASE_0x00000, + .bgExtPltt = GX_BG_EXTPLTT_01, .priority = 1, - .areaOver = 0, + .areaOver = GX_BG_AREAOVER_XLU, .unk17 = 0, - .mosaic = 0 + .mosaic = FALSE }; const struct BgTemplate MOD59_021D9EBC = @@ -198,15 +198,15 @@ const struct BgTemplate MOD59_021D9EBC = .bufferSize = 2048, .baseTile = 0, - .size = 1, - .colorMode = 0, - .screenBase = 0, - .charBase = 0, - .bgExtPltt = 0, + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x0000, + .charBase = GX_BG_CHARBASE_0x00000, + .bgExtPltt = GX_BG_EXTPLTT_01, .priority = 0, - .areaOver = 0, + .areaOver = GX_BG_AREAOVER_XLU, .unk17 = 0, - .mosaic = 0 + .mosaic = FALSE }; const u16 MOD59_021D9ED8[0x10] = { 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C, 0x6A3C }; @@ -568,23 +568,23 @@ THUMB_FUNC void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data) SetBothScreensModesAndDisable(&graphicsModes); struct BgTemplate bgTemplateMain = MOD59_021D9EA0; - bgTemplateMain.screenBase = 15; - bgTemplateMain.charBase = 6; + bgTemplateMain.screenBase = GX_BG_SCRBASE_0x7800; + bgTemplateMain.charBase = GX_BG_CHARBASE_0x18000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_0, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); - bgTemplateMain.screenBase = 14; - bgTemplateMain.charBase = 5; + bgTemplateMain.screenBase = GX_BG_SCRBASE_0x7000; + bgTemplateMain.charBase = GX_BG_CHARBASE_0x14000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_1, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_1); - bgTemplateMain.screenBase = 13; - bgTemplateMain.charBase = 4; + bgTemplateMain.screenBase = GX_BG_SCRBASE_0x6800; + bgTemplateMain.charBase = GX_BG_CHARBASE_0x10000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_2, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_2); - bgTemplateMain.screenBase = 12; - bgTemplateMain.charBase = 3; + bgTemplateMain.screenBase = GX_BG_SCRBASE_0x6000; + bgTemplateMain.charBase = GX_BG_CHARBASE_0x0c000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_3, &bgTemplateMain, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_3); @@ -594,23 +594,23 @@ THUMB_FUNC void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data) FUN_02002EEC(GF_BG_LYR_MAIN_0, 192, data->heap_id); struct BgTemplate bgTemplateSub = MOD59_021D9EBC; - bgTemplateSub.screenBase = 15; - bgTemplateSub.charBase = 6; + bgTemplateSub.screenBase = GX_BG_SCRBASE_0x7800; + bgTemplateSub.charBase = GX_BG_CHARBASE_0x18000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_0, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_0); - bgTemplateSub.screenBase = 14; - bgTemplateSub.charBase = 5; + bgTemplateSub.screenBase = GX_BG_SCRBASE_0x7000; + bgTemplateSub.charBase = GX_BG_CHARBASE_0x14000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_1, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_1); - bgTemplateSub.screenBase = 13; - bgTemplateSub.charBase = 4; + bgTemplateSub.screenBase = GX_BG_SCRBASE_0x6800; + bgTemplateSub.charBase = GX_BG_CHARBASE_0x10000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_2, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_2); - bgTemplateSub.screenBase = 12; - bgTemplateSub.charBase = 3; + bgTemplateSub.screenBase = GX_BG_SCRBASE_0x6000; + bgTemplateSub.charBase = GX_BG_CHARBASE_0x0c000; InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_3, &bgTemplateSub, GF_BG_TYPE_TEXT); BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_SUB_3); diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 5d414695a..49d5365a1 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -22,7 +22,6 @@ extern u32 FUN_0200E308(void); extern const struct GraphicsBanks MOD59_021DA0D4; extern const struct BgTemplate MOD59_021DA080; extern const struct BgTemplate MOD59_021DA09C; -extern const struct BgTemplate MOD59_021DA064; extern const struct BgTemplate MOD59_021DA0B8; const struct WindowTemplate MOD59_021DA04C = @@ -44,6 +43,24 @@ const struct GraphicsModes MOD59_021DA054 = ._2d3dMode = GX_BG0_AS_2D, }; +const struct BgTemplate MOD59_021DA064 = + { + .x = 0, + .y = 0, + .bufferSize = 2048, + .baseTile = 0, + + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x1000, + .charBase = GX_BG_CHARBASE_0x10000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .unk17 = 0, + .mosaic = FALSE + }; + THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { #pragma unused(param1) From d66085f644bff428d446e825bb653faa0128476a Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 21:41:11 +0100 Subject: [PATCH 11/13] MOD59_021DA080 --- arm9/modules/59/asm/mod59_TV_asm.s | 5 ----- arm9/modules/59/src/mod59_TV_src.c | 19 ++++++++++++++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index f61fc69d5..2096a1c51 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -4,11 +4,6 @@ .balign 4, 0 .rodata - .global MOD59_021DA080 -MOD59_021DA080: ; 0x021DA080 - .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 MOD59_021DA09C MOD59_021DA09C: ; 0x021DA09C .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 49d5365a1..140bcb93a 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -20,7 +20,6 @@ extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 par extern u32 FUN_0200E308(void); extern const struct GraphicsBanks MOD59_021DA0D4; -extern const struct BgTemplate MOD59_021DA080; extern const struct BgTemplate MOD59_021DA09C; extern const struct BgTemplate MOD59_021DA0B8; @@ -61,6 +60,24 @@ const struct BgTemplate MOD59_021DA064 = .mosaic = FALSE }; +const struct BgTemplate MOD59_021DA080 = + { + .x = 0, + .y = 0, + .bufferSize = 2048, + .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 + }; + THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { #pragma unused(param1) From cf637980e59c0b9060a35f171b831ef7a4cf3887 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 21:47:07 +0100 Subject: [PATCH 12/13] MOD59_021DA09C --- arm9/modules/59/asm/mod59_TV_asm.s | 5 ----- arm9/modules/59/src/mod59_TV_src.c | 19 ++++++++++++++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s index 2096a1c51..c1a17adaf 100644 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ b/arm9/modules/59/asm/mod59_TV_asm.s @@ -4,11 +4,6 @@ .balign 4, 0 .rodata - .global MOD59_021DA09C -MOD59_021DA09C: ; 0x021DA09C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global MOD59_021DA0B8 MOD59_021DA0B8: ; 0x021DA0B8 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV_src.c index 140bcb93a..77e275f6e 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV_src.c @@ -20,7 +20,6 @@ extern void FUN_0200E1D0(u32 param0, u32 param1, u32 param2, u32 param3, u32 par extern u32 FUN_0200E308(void); extern const struct GraphicsBanks MOD59_021DA0D4; -extern const struct BgTemplate MOD59_021DA09C; extern const struct BgTemplate MOD59_021DA0B8; const struct WindowTemplate MOD59_021DA04C = @@ -78,6 +77,24 @@ const struct BgTemplate MOD59_021DA080 = .mosaic = FALSE }; +const struct BgTemplate MOD59_021DA09C = + { + .x = 0, + .y = 0, + .bufferSize = 2048, + .baseTile = 0, + + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x0800, + .charBase = GX_BG_CHARBASE_0x14000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .unk17 = 0, + .mosaic = FALSE + }; + THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { #pragma unused(param1) From e857805dbc35d5d5791887691b187ae9d0d5acfb Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 4 May 2023 22:04:12 +0100 Subject: [PATCH 13/13] finish mod59_tv --- arm9/arm9.lsf | 3 +- arm9/modules/59/asm/mod59_TV_asm.s | 16 ---- .../59/include/{mod59_TV_src.h => mod59_TV.h} | 0 arm9/modules/59/src/mod59_Intro.c | 2 +- .../59/src/{mod59_TV_src.c => mod59_TV.c} | 73 +++++++++++++------ 5 files changed, 53 insertions(+), 41 deletions(-) delete mode 100644 arm9/modules/59/asm/mod59_TV_asm.s rename arm9/modules/59/include/{mod59_TV_src.h => mod59_TV.h} (100%) rename arm9/modules/59/src/{mod59_TV_src.c => mod59_TV.c} (94%) diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index c714c2674..21399e33b 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -1149,8 +1149,7 @@ Overlay MODULE_59 ##Rowan's intro + TV intro## After arm9 Object mod59_Intro.o - Object mod59_TV_src.o - Object mod59_TV_asm.o + Object mod59_TV.o } Overlay MODULE_60 diff --git a/arm9/modules/59/asm/mod59_TV_asm.s b/arm9/modules/59/asm/mod59_TV_asm.s deleted file mode 100644 index c1a17adaf..000000000 --- a/arm9/modules/59/asm/mod59_TV_asm.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - .rodata - - .global MOD59_021DA0B8 -MOD59_021DA0B8: ; 0x021DA0B8 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x01, 0x03, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD59_021DA0D4 -MOD59_021DA0D4: ; 0x021DA0D4 - .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 diff --git a/arm9/modules/59/include/mod59_TV_src.h b/arm9/modules/59/include/mod59_TV.h similarity index 100% rename from arm9/modules/59/include/mod59_TV_src.h rename to arm9/modules/59/include/mod59_TV.h diff --git a/arm9/modules/59/src/mod59_Intro.c b/arm9/modules/59/src/mod59_Intro.c index a00c23619..890bce626 100644 --- a/arm9/modules/59/src/mod59_Intro.c +++ b/arm9/modules/59/src/mod59_Intro.c @@ -10,7 +10,7 @@ #include "gf_gfx_loader.h" #include "heap.h" #include "list_menu_items.h" -#include "mod59_TV_src.h" +#include "mod59_TV.h" #include "module_52.h" #include "msgdata.h" #include "msgdata/msg.naix" diff --git a/arm9/modules/59/src/mod59_TV_src.c b/arm9/modules/59/src/mod59_TV.c similarity index 94% rename from arm9/modules/59/src/mod59_TV_src.c rename to arm9/modules/59/src/mod59_TV.c index 77e275f6e..55e029636 100644 --- a/arm9/modules/59/src/mod59_TV_src.c +++ b/arm9/modules/59/src/mod59_TV.c @@ -1,5 +1,5 @@ #include "global.h" -#include "mod59_TV_src.h" +#include "mod59_TV.h" #include "GX_layers.h" #include "PAD_pad.h" #include "constants/sndseq.h" @@ -19,9 +19,6 @@ extern void FUN_0200E3A0(PMLCDTarget, s32); 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 const struct GraphicsBanks MOD59_021DA0D4; -extern const struct BgTemplate MOD59_021DA0B8; - const struct WindowTemplate MOD59_021DA04C = { .bgId = GF_BG_LYR_MAIN_2, @@ -41,24 +38,6 @@ const struct GraphicsModes MOD59_021DA054 = ._2d3dMode = GX_BG0_AS_2D, }; -const struct BgTemplate MOD59_021DA064 = - { - .x = 0, - .y = 0, - .bufferSize = 2048, - .baseTile = 0, - - .size = GF_BG_SCR_SIZE_256x256, - .colorMode = GX_BG_COLORMODE_16, - .screenBase = GX_BG_SCRBASE_0x1000, - .charBase = GX_BG_CHARBASE_0x10000, - .bgExtPltt = GX_BG_EXTPLTT_01, - .priority = 1, - .areaOver = GX_BG_AREAOVER_XLU, - .unk17 = 0, - .mosaic = FALSE - }; - const struct BgTemplate MOD59_021DA080 = { .x = 0, @@ -95,6 +74,56 @@ const struct BgTemplate MOD59_021DA09C = .mosaic = FALSE }; +const struct BgTemplate MOD59_021DA064 = + { + .x = 0, + .y = 0, + .bufferSize = 2048, + .baseTile = 0, + + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_16, + .screenBase = GX_BG_SCRBASE_0x1000, + .charBase = GX_BG_CHARBASE_0x10000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .unk17 = 0, + .mosaic = FALSE + }; + +const struct BgTemplate MOD59_021DA0B8 = + { + .x = 0, + .y = 0, + .bufferSize = 2048, + .baseTile = 0, + + .size = GF_BG_SCR_SIZE_256x256, + .colorMode = GX_BG_COLORMODE_256, + .screenBase = GX_BG_SCRBASE_0x1800, + .charBase = GX_BG_CHARBASE_0x20000, + .bgExtPltt = GX_BG_EXTPLTT_01, + .priority = 1, + .areaOver = GX_BG_AREAOVER_XLU, + .unk17 = 0, + .mosaic = FALSE + }; + +const struct GraphicsBanks MOD59_021DA0D4 = + { + .bg = 3, + .bgextpltt = 0, + .subbg = 0, + .subbgextpltt = 0, + .obj = 0, + .objextpltt = 0, + .subobj = 0, + .subobjextpltt = 0, + .tex = 0, + .texpltt = 0 + }; + THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1) { #pragma unused(param1)