MOD59_021D9C74

This commit is contained in:
red031000
2023-05-04 20:40:50 +01:00
parent 9e023175c4
commit 1e043dbb89
3 changed files with 54 additions and 130 deletions

View File

@@ -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}

View File

@@ -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

View File

@@ -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;
}