mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-30 07:22:03 -04:00
+1
-2
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -1,454 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
.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}
|
||||
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}
|
||||
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
|
||||
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}
|
||||
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}
|
||||
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
|
||||
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
|
||||
|
||||
.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
|
||||
.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
|
||||
.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
|
||||
.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
|
||||
@@ -106,10 +106,10 @@ 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_DestroyBg(MOD59_IntroOverlayData *data);
|
||||
void MOD59_SetupMsg(MOD59_IntroOverlayData *data);
|
||||
void MOD59_DestroyMsg(MOD59_IntroOverlayData *data);
|
||||
void MOD59_IntroSetupBg(MOD59_IntroOverlayData *data);
|
||||
void MOD59_IntroDestroyBg(MOD59_IntroOverlayData *data);
|
||||
void MOD59_IntroSetupMsg(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);
|
||||
|
||||
@@ -3,12 +3,17 @@
|
||||
|
||||
#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;
|
||||
struct Window window;
|
||||
s32 unk20;
|
||||
u32 unk24;
|
||||
} MOD59_TVOverlayData;
|
||||
|
||||
@@ -16,5 +21,11 @@ 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);
|
||||
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
|
||||
@@ -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"
|
||||
@@ -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 };
|
||||
@@ -429,8 +429,8 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p
|
||||
|
||||
SetKeyRepeatTimers(4, 8);
|
||||
|
||||
MOD59_SetupBg(data);
|
||||
MOD59_SetupMsg(data);
|
||||
MOD59_IntroSetupBg(data);
|
||||
MOD59_IntroSetupMsg(data);
|
||||
MOD59_021D7A4C(data);
|
||||
|
||||
Main_SetVBlankIntrCB((void (*)(void *))MOD59_IntroDoGpuBgUpdate, data);
|
||||
@@ -464,8 +464,8 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p
|
||||
break;
|
||||
}
|
||||
|
||||
MOD59_DestroyMsg(data);
|
||||
MOD59_DestroyBg(data);
|
||||
MOD59_IntroDestroyMsg(data);
|
||||
MOD59_IntroDestroyBg(data);
|
||||
MOD59_021D7A5C(data);
|
||||
|
||||
Main_SetVBlankIntrCB(NULL, NULL);
|
||||
@@ -479,8 +479,8 @@ THUMB_FUNC BOOL MOD59_IntroMain(struct UnkStruct_02006234 *overlayStruct, u32 *p
|
||||
break;
|
||||
}
|
||||
|
||||
MOD59_DestroyMsg(data);
|
||||
MOD59_DestroyBg(data);
|
||||
MOD59_IntroDestroyMsg(data);
|
||||
MOD59_IntroDestroyBg(data);
|
||||
MOD59_021D7A5C(data);
|
||||
|
||||
Main_SetVBlankIntrCB(NULL, NULL);
|
||||
@@ -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);
|
||||
@@ -568,24 +568,24 @@ THUMB_FUNC void MOD59_SetupBg(MOD59_IntroOverlayData *data)
|
||||
SetBothScreensModesAndDisable(&graphicsModes);
|
||||
|
||||
struct BgTemplate bgTemplateMain = MOD59_021D9EA0;
|
||||
bgTemplateMain.screenBase = 15;
|
||||
bgTemplateMain.charBase = 6;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_0, &bgTemplateMain, 0);
|
||||
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;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_1, &bgTemplateMain, 0);
|
||||
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;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_2, &bgTemplateMain, 0);
|
||||
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;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_MAIN_3, &bgTemplateMain, 0);
|
||||
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);
|
||||
|
||||
FUN_0200CD68(data->bgConfig, 0, 994, 4, 0, data->heap_id);
|
||||
@@ -594,24 +594,24 @@ THUMB_FUNC void MOD59_SetupBg(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;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_0, &bgTemplateSub, 0);
|
||||
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;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_1, &bgTemplateSub, 0);
|
||||
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;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_2, &bgTemplateSub, 0);
|
||||
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;
|
||||
InitBgFromTemplate(data->bgConfig, GF_BG_LYR_SUB_3, &bgTemplateSub, 0);
|
||||
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);
|
||||
|
||||
ToggleBgLayer(GF_BG_LYR_MAIN_0, GX_LAYER_TOGGLE_OFF);
|
||||
@@ -628,7 +628,7 @@ THUMB_FUNC void MOD59_SetupBg(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);
|
||||
@@ -653,7 +653,7 @@ THUMB_FUNC void MOD59_DestroyBg(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);
|
||||
|
||||
@@ -668,7 +668,7 @@ THUMB_FUNC void MOD59_SetupMsg(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);
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,556 @@
|
||||
#include "global.h"
|
||||
#include "mod59_TV.h"
|
||||
#include "GX_layers.h"
|
||||
#include "PAD_pad.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 "msgdata/msg.naix"
|
||||
#include "overlay_manager.h"
|
||||
#include "text.h"
|
||||
#include "unk_020040F4.h"
|
||||
|
||||
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);
|
||||
|
||||
const struct WindowTemplate MOD59_021DA04C =
|
||||
{
|
||||
.bgId = GF_BG_LYR_MAIN_2,
|
||||
.tilemapLeft = 0,
|
||||
.tilemapTop = 0,
|
||||
.width = 32,
|
||||
.height = 24,
|
||||
.paletteNum = 0x01,
|
||||
.baseTile = 1,
|
||||
};
|
||||
|
||||
const struct GraphicsModes MOD59_021DA054 =
|
||||
{
|
||||
.dispMode = GX_DISPMODE_GRAPHICS,
|
||||
.bgMode = GX_BGMODE_0,
|
||||
.subMode = GX_BGMODE_0,
|
||||
._2d3dMode = GX_BG0_AS_2D,
|
||||
};
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
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)
|
||||
CreateHeap(3, 83, 0x40000);
|
||||
MOD59_TVOverlayData *data = (MOD59_TVOverlayData *)OverlayManager_CreateAndGetData(param0, sizeof(MOD59_TVOverlayData), 0x53);
|
||||
(void)memset((void *)data, 0, sizeof(MOD59_TVOverlayData));
|
||||
data->heap_id = 0x53;
|
||||
data->unk24 = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *param1)
|
||||
{
|
||||
MOD59_TVOverlayData *data = (MOD59_TVOverlayData *)OverlayManager_GetData(overlayStruct);
|
||||
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_TVSetupGraphics(data);
|
||||
MOD59_TVSetupMsg(data);
|
||||
|
||||
Main_SetVBlankIntrCB((void (*)(void *))MOD59_TVDoGpuBgUpdate, data);
|
||||
|
||||
GX_BothDispOn();
|
||||
|
||||
data->unk24 = 60;
|
||||
|
||||
*param1 = 1;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (data->unk24 != 0)
|
||||
{
|
||||
data->unk24--;
|
||||
break;
|
||||
}
|
||||
|
||||
FUN_0200414C(SEQ_TV_HOUSOU);
|
||||
FUN_0200433C(4, SEQ_TV_HOUSOU, 1);
|
||||
|
||||
data->unk24 = 90;
|
||||
|
||||
*param1 = 2;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (data->unk24 != 0)
|
||||
{
|
||||
data->unk24--;
|
||||
break;
|
||||
}
|
||||
data->unk24 = 0; //??
|
||||
|
||||
FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id);
|
||||
|
||||
*param1 = 3;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
MOD59_021D9D78(data);
|
||||
|
||||
if (FUN_0200E308() != 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
*param1 = 4;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
MOD59_021D9D78(data);
|
||||
|
||||
if (MOD59_021D9C74(data, 0, 40, 48) != TRUE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id);
|
||||
|
||||
*param1 = 5;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
MOD59_021D9D78(data);
|
||||
|
||||
if (FUN_0200E308() != 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
MOD59_TVDestroyMsg(data);
|
||||
MOD59_TVDestroyGraphics(data);
|
||||
|
||||
Main_SetVBlankIntrCB(NULL, NULL);
|
||||
|
||||
ret = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
THUMB_FUNC asm BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *param1)
|
||||
{
|
||||
push {r3, r4, r5, r6, lr}
|
||||
sub sp, #0xc
|
||||
add r5, r1, #0
|
||||
bl OverlayManager_GetData
|
||||
ldr r1, [r5, #0]
|
||||
add r4, r0, #0
|
||||
mov r6, #0
|
||||
cmp r1, #5
|
||||
bls _021D98AE
|
||||
b _021D99E2
|
||||
_021D98AE:
|
||||
add r1, r1, r1
|
||||
add r1, pc
|
||||
ldrh r1, [r1, #6]
|
||||
lsl r1, r1, #0x10
|
||||
asr r1, r1, #0x10
|
||||
add pc, r1
|
||||
_021D98BA: // jump table
|
||||
dcd 0x0070000a //compiler really hates movs in inline asm
|
||||
//movs r2, r1 //case 0
|
||||
//lsl r0, r6, #1 //case 1
|
||||
lsl r6, r2, #2 //case 2
|
||||
lsl r0, r0, #3 //case 3
|
||||
lsl r2, r2, #3 //case 4
|
||||
lsl r4, r0, #4 //case 5
|
||||
//.short _021D98C6 - _021D98BA - 2 // case 0
|
||||
//.short _021D992C - _021D98BA - 2 // case 1
|
||||
//.short _021D9952 - _021D98BA - 2 // case 2
|
||||
//.short _021D997C - _021D98BA - 2 // case 3
|
||||
//.short _021D998E - _021D98BA - 2 // case 4
|
||||
//.short _021D99C0 - _021D98BA - 2 ; case 5
|
||||
_021D98C6:
|
||||
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, #0]
|
||||
ldr r0, =0xFFFFE0FF
|
||||
and r1, r0
|
||||
str r1, [r2, #0]
|
||||
ldr r2, =0x04001000
|
||||
ldr r1, [r2, #0]
|
||||
and r0, r1
|
||||
str r0, [r2]
|
||||
mov r0, #4
|
||||
mov r1, #8
|
||||
bl SetKeyRepeatTimers
|
||||
add r0, r4, #0
|
||||
bl MOD59_TVSetupGraphics
|
||||
add r0, r4, #0
|
||||
bl MOD59_TVSetupMsg
|
||||
ldr r0, =MOD59_TVDoGpuBgUpdate
|
||||
add r1, r4, #0
|
||||
bl Main_SetVBlankIntrCB
|
||||
bl GX_BothDispOn
|
||||
mov r0, #0x3c
|
||||
str r0, [r4, #0x24]
|
||||
mov r0, #1
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D992C:
|
||||
ldr r0, [r4, #0x24]
|
||||
cmp r0, #0
|
||||
beq _021D9938
|
||||
sub r0, r0, #1
|
||||
str r0, [r4, #0x24]
|
||||
b _021D99E2
|
||||
_021D9938:
|
||||
ldr r0, =0x00000406
|
||||
bl FUN_0200414C
|
||||
ldr r1, =0x00000406
|
||||
mov r0, #4
|
||||
mov r2, #1
|
||||
bl FUN_0200433C
|
||||
mov r0, #0x5a
|
||||
str r0, [r4, #0x24]
|
||||
mov r0, #2
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D9952:
|
||||
ldr r0, [r4, #0x24]
|
||||
cmp r0, #0
|
||||
beq _021D995E
|
||||
sub r0, r0, #1
|
||||
str r0, [r4, #0x24]
|
||||
b _021D99E2
|
||||
_021D995E:
|
||||
str r6, [r4, #0x24]
|
||||
mov r0, #6
|
||||
mov r1, #1
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
ldr r0, [r4, #0]
|
||||
add r2, r1, #0
|
||||
str r0, [sp, #8]
|
||||
add r0, r6, #0
|
||||
add r3, r6, #0
|
||||
bl FUN_0200E1D0
|
||||
mov r0, #3
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D997C:
|
||||
bl MOD59_021D9D78
|
||||
bl FUN_0200E308
|
||||
cmp r0, #1
|
||||
bne _021D99E2
|
||||
mov r0, #4
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D998E:
|
||||
bl MOD59_021D9D78
|
||||
add r0, r4, #0
|
||||
add r1, r6, #0
|
||||
mov r2, #0x28
|
||||
mov r3, #0x30
|
||||
bl MOD59_021D9C74
|
||||
cmp r0, #1
|
||||
bne _021D99E2
|
||||
mov r0, #6
|
||||
str r0, [sp]
|
||||
mov r0, #1
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r4, #0]
|
||||
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, #5
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D99C0:
|
||||
bl MOD59_021D9D78
|
||||
bl FUN_0200E308
|
||||
cmp r0, #1
|
||||
bne _021D99E2
|
||||
add r0, r4, #0
|
||||
bl MOD59_TVDestroyMsg
|
||||
add r0, r4, #0
|
||||
bl MOD59_TVDestroyGraphics
|
||||
add r0, r6, #0
|
||||
add r1, r0, #0
|
||||
bl Main_SetVBlankIntrCB
|
||||
mov r6, #1
|
||||
_021D99E2:
|
||||
add r0, r6, #0
|
||||
add sp, #0xc
|
||||
pop {r3, r4, r5, r6, pc}
|
||||
}
|
||||
#endif
|
||||
|
||||
THUMB_FUNC BOOL MOD59_TVExit(struct UnkStruct_02006234 *overlayStruct, u32 *param1)
|
||||
{
|
||||
#pragma unused (param1)
|
||||
u32 heap_id = ((MOD59_TVOverlayData *)OverlayManager_GetData(overlayStruct))->heap_id;
|
||||
OverlayManager_FreeData(overlayStruct);
|
||||
DestroyHeap(heap_id);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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), NULL);
|
||||
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;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -1,319 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "mod59_TV_src.h"
|
||||
#include "GX_layers.h"
|
||||
#include "bg_window.h"
|
||||
#include "constants/sndseq.h"
|
||||
#include "game_init.h"
|
||||
#include "heap.h"
|
||||
#include "overlay_manager.h"
|
||||
#include "unk_020040F4.h"
|
||||
|
||||
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);
|
||||
|
||||
THUMB_FUNC BOOL MOD59_TVInit(struct UnkStruct_02006234 *param0, u32 *param1)
|
||||
{
|
||||
#pragma unused(param1)
|
||||
CreateHeap(3, 83, 0x40000);
|
||||
MOD59_TVOverlayData *data = (MOD59_TVOverlayData *)OverlayManager_CreateAndGetData(param0, sizeof(MOD59_TVOverlayData), 0x53);
|
||||
(void)memset((void *)data, 0, sizeof(MOD59_TVOverlayData));
|
||||
data->heap_id = 0x53;
|
||||
data->unk24 = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
THUMB_FUNC BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *param1)
|
||||
{
|
||||
MOD59_TVOverlayData *data = (MOD59_TVOverlayData *)OverlayManager_GetData(overlayStruct);
|
||||
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_021D9A20(data);
|
||||
MOD59_021D9C48(data);
|
||||
|
||||
Main_SetVBlankIntrCB((void (*)(void *))MOD59_TVDoGpuBgUpdate, data);
|
||||
|
||||
GX_BothDispOn();
|
||||
|
||||
data->unk24 = 60;
|
||||
|
||||
*param1 = 1;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (data->unk24 != 0)
|
||||
{
|
||||
data->unk24--;
|
||||
break;
|
||||
}
|
||||
|
||||
FUN_0200414C(SEQ_TV_HOUSOU);
|
||||
FUN_0200433C(4, SEQ_TV_HOUSOU, 1);
|
||||
|
||||
data->unk24 = 90;
|
||||
|
||||
*param1 = 2;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (data->unk24 != 0)
|
||||
{
|
||||
data->unk24--;
|
||||
break;
|
||||
}
|
||||
data->unk24 = 0; //??
|
||||
|
||||
FUN_0200E1D0(0, 1, 1, 0, 6, 1, data->heap_id);
|
||||
|
||||
*param1 = 3;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
MOD59_021D9D78();
|
||||
|
||||
if (FUN_0200E308() != 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
*param1 = 4;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
MOD59_021D9D78();
|
||||
|
||||
if (MOD59_021D9C74(data, 0, 40, 48) != TRUE)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
FUN_0200E1D0(0, 0, 0, 0, 6, 1, data->heap_id);
|
||||
|
||||
*param1 = 5;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
MOD59_021D9D78();
|
||||
|
||||
if (FUN_0200E308() != 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
MOD59_021D9C68(data);
|
||||
MOD59_021D9BD0(data);
|
||||
|
||||
Main_SetVBlankIntrCB(NULL, NULL);
|
||||
|
||||
ret = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
THUMB_FUNC asm BOOL MOD59_TVMain(struct UnkStruct_02006234 *overlayStruct, u32 *param1)
|
||||
{
|
||||
push {r3, r4, r5, r6, lr}
|
||||
sub sp, #0xc
|
||||
add r5, r1, #0
|
||||
bl OverlayManager_GetData
|
||||
ldr r1, [r5, #0]
|
||||
add r4, r0, #0
|
||||
mov r6, #0
|
||||
cmp r1, #5
|
||||
bls _021D98AE
|
||||
b _021D99E2
|
||||
_021D98AE:
|
||||
add r1, r1, r1
|
||||
add r1, pc
|
||||
ldrh r1, [r1, #6]
|
||||
lsl r1, r1, #0x10
|
||||
asr r1, r1, #0x10
|
||||
add pc, r1
|
||||
_021D98BA: // jump table
|
||||
dcd 0x0070000a //compiler really hates movs in inline asm
|
||||
//movs r2, r1 //case 0
|
||||
//lsl r0, r6, #1 //case 1
|
||||
lsl r6, r2, #2 //case 2
|
||||
lsl r0, r0, #3 //case 3
|
||||
lsl r2, r2, #3 //case 4
|
||||
lsl r4, r0, #4 //case 5
|
||||
//.short _021D98C6 - _021D98BA - 2 // case 0
|
||||
//.short _021D992C - _021D98BA - 2 // case 1
|
||||
//.short _021D9952 - _021D98BA - 2 // case 2
|
||||
//.short _021D997C - _021D98BA - 2 // case 3
|
||||
//.short _021D998E - _021D98BA - 2 // case 4
|
||||
//.short _021D99C0 - _021D98BA - 2 ; case 5
|
||||
_021D98C6:
|
||||
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, #0]
|
||||
ldr r0, =0xFFFFE0FF
|
||||
and r1, r0
|
||||
str r1, [r2, #0]
|
||||
ldr r2, =0x04001000
|
||||
ldr r1, [r2, #0]
|
||||
and r0, r1
|
||||
str r0, [r2]
|
||||
mov r0, #4
|
||||
mov r1, #8
|
||||
bl SetKeyRepeatTimers
|
||||
add r0, r4, #0
|
||||
bl MOD59_021D9A20
|
||||
add r0, r4, #0
|
||||
bl MOD59_021D9C48
|
||||
ldr r0, =MOD59_TVDoGpuBgUpdate
|
||||
add r1, r4, #0
|
||||
bl Main_SetVBlankIntrCB
|
||||
bl GX_BothDispOn
|
||||
mov r0, #0x3c
|
||||
str r0, [r4, #0x24]
|
||||
mov r0, #1
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D992C:
|
||||
ldr r0, [r4, #0x24]
|
||||
cmp r0, #0
|
||||
beq _021D9938
|
||||
sub r0, r0, #1
|
||||
str r0, [r4, #0x24]
|
||||
b _021D99E2
|
||||
_021D9938:
|
||||
ldr r0, =0x00000406
|
||||
bl FUN_0200414C
|
||||
ldr r1, =0x00000406
|
||||
mov r0, #4
|
||||
mov r2, #1
|
||||
bl FUN_0200433C
|
||||
mov r0, #0x5a
|
||||
str r0, [r4, #0x24]
|
||||
mov r0, #2
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D9952:
|
||||
ldr r0, [r4, #0x24]
|
||||
cmp r0, #0
|
||||
beq _021D995E
|
||||
sub r0, r0, #1
|
||||
str r0, [r4, #0x24]
|
||||
b _021D99E2
|
||||
_021D995E:
|
||||
str r6, [r4, #0x24]
|
||||
mov r0, #6
|
||||
mov r1, #1
|
||||
str r0, [sp]
|
||||
str r1, [sp, #4]
|
||||
ldr r0, [r4, #0]
|
||||
add r2, r1, #0
|
||||
str r0, [sp, #8]
|
||||
add r0, r6, #0
|
||||
add r3, r6, #0
|
||||
bl FUN_0200E1D0
|
||||
mov r0, #3
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D997C:
|
||||
bl MOD59_021D9D78
|
||||
bl FUN_0200E308
|
||||
cmp r0, #1
|
||||
bne _021D99E2
|
||||
mov r0, #4
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D998E:
|
||||
bl MOD59_021D9D78
|
||||
add r0, r4, #0
|
||||
add r1, r6, #0
|
||||
mov r2, #0x28
|
||||
mov r3, #0x30
|
||||
bl MOD59_021D9C74
|
||||
cmp r0, #1
|
||||
bne _021D99E2
|
||||
mov r0, #6
|
||||
str r0, [sp]
|
||||
mov r0, #1
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [r4, #0]
|
||||
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, #5
|
||||
str r0, [r5]
|
||||
b _021D99E2
|
||||
_021D99C0:
|
||||
bl MOD59_021D9D78
|
||||
bl FUN_0200E308
|
||||
cmp r0, #1
|
||||
bne _021D99E2
|
||||
add r0, r4, #0
|
||||
bl MOD59_021D9C68
|
||||
add r0, r4, #0
|
||||
bl MOD59_021D9BD0
|
||||
add r0, r6, #0
|
||||
add r1, r0, #0
|
||||
bl Main_SetVBlankIntrCB
|
||||
mov r6, #1
|
||||
_021D99E2:
|
||||
add r0, r6, #0
|
||||
add sp, #0xc
|
||||
pop {r3, r4, r5, r6, pc}
|
||||
}
|
||||
#endif
|
||||
|
||||
THUMB_FUNC BOOL MOD59_TVExit(struct UnkStruct_02006234 *overlayStruct, u32 *param1)
|
||||
{
|
||||
#pragma unused (param1)
|
||||
u32 heap_id = ((MOD59_TVOverlayData *)OverlayManager_GetData(overlayStruct))->heap_id;
|
||||
OverlayManager_FreeData(overlayStruct);
|
||||
DestroyHeap(heap_id);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
THUMB_FUNC void MOD59_TVDoGpuBgUpdate(MOD59_TVOverlayData *data)
|
||||
{
|
||||
DoScheduledBgGpuUpdates(data->bgConfig);
|
||||
}
|
||||
+5
-9
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user