mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-30 20:36:48 -05:00
MOD59_021D9C74
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user