decompile ov98_02248350 (#625)

This commit is contained in:
scbroede 2025-07-15 13:25:46 -04:00 committed by GitHub
parent e29eb0b295
commit 6f9dbf8e2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 116 additions and 385 deletions

View File

@ -4,7 +4,6 @@ src/overlay107/ov107_02245EB0.c
src/overlay107/ov107_02241AE0.c
src/overlay065/ov65_0222DCE0.c
src/overlay064/ov64_0222DCE0.c
src/overlay098/ov98_022471C8.c
src/overlay062/ov62_02241204.c
src/overlay062/ov62_0223DFA8.c
src/overlay062/ov62_0223CAEC.c

View File

@ -34,14 +34,14 @@
#include "render_window.h"
#include "save_player.h"
#include "savedata.h"
#include "screen_fade.h"
#include "sound_playback.h"
#include "strbuf.h"
#include "string_list.h"
#include "string_template.h"
#include "system.h"
#include "system_data.h"
#include "text.h"
#include "sound_playback.h"
#include "screen_fade.h"
#include "touch_pad.h"
#include "unk_0202ACE0.h"
#include "unk_02030CE8.h"
@ -970,390 +970,122 @@ static void ov98_022482CC(UnkStruct_ov98_02247704 *param0)
Window_CopyToVRAM(&param0->unk_C4);
}
// clang-format off
asm static int ov98_02248350 (UnkStruct_ov98_02247704 * param0)
static int ov98_02248350(UnkStruct_ov98_02247704 *param0)
{
push {r4, r5, r6, r7, lr}
sub sp, #0x1c
add r5, r0, #0
add r1, r5, #0
add r1, #0xa8
ldr r1, [r1, #0]
cmp r1, #0
beq _0224836E
cmp r1, #1
bne _02248366
b _022484B8
_02248366:
cmp r1, #2
bne _0224836C
b _02248566
_0224836C:
b _02248614
_0224836E:
ldr r0, [r5, #0x34]
mov r1, #0x2c
bl MessageLoader_GetNewStrbuf
str r0, [sp, #0x14]
bl Strbuf_NumLines
add r1, r5, #0
mov r2, #0
add r1, #0xac
str r2, [r1, #0]
add r1, r5, #0
add r1, #0xb0
str r2, [r1, #0]
add r1, r5, #0
add r1, #0xb8
str r2, [r1, #0]
add r1, r5, #0
add r1, #0xb4
str r0, [r1, #0]
mov r0, #5
str r0, [sp]
mov r0, #0x1e
str r0, [sp, #4]
mov r0, #0xc
str r0, [sp, #8]
mov r0, #0xd
str r0, [sp, #0xc]
mov r0, #0x94
str r0, [sp, #0x10]
add r1, r5, #0
ldr r0, [r5, #4]
add r1, #0xc4
mov r2, #2
mov r3, #1
bl Window_Add
mov r0, #0x13
str r0, [sp]
mov r0, #0x1e
str r0, [sp, #4]
mov r0, #4
str r0, [sp, #8]
mov r0, #0xd
str r0, [sp, #0xc]
mov r0, #0x7f
lsl r0, r0, #2
str r0, [sp, #0x10]
add r1, r5, #0
ldr r0, [r5, #4]
add r1, #0xd4
mov r2, #2
mov r3, #1
bl Window_Add
add r0, r5, #0
add r0, #0xc4
mov r1, #0xf
bl Window_FillTilemap
ldr r0, [sp, #0x14]
bl Strbuf_Length
mov r1, #0x6d
bl Strbuf_Init
add r7, r0, #0
add r0, r5, #0
mov r6, #0
str r0, [sp, #0x18]
add r0, #0xc4
add r4, r6, #0
str r0, [sp, #0x18]
_02248400:
ldr r1, [sp, #0x14]
add r0, r7, #0
add r2, r6, #0
bl Strbuf_CopyLineNum
str r4, [sp]
mov r0, #0xff
str r0, [sp, #4]
mov r0, #0
str r0, [sp, #8]
ldr r0, [sp, #0x18]
mov r1, #0
add r2, r7, #0
mov r3, #4
bl Text_AddPrinterWithParams
add r6, r6, #1
add r4, #0x10
cmp r6, #6
blt _02248400
ldr r0, [sp, #0x14]
bl Strbuf_Free
add r0, r7, #0
bl Strbuf_Free
add r0, r5, #0
add r0, #0xc4
mov r1, #1
mov r2, #0x1f
mov r3, #0xb
bl Window_DrawStandardFrame
add r0, r5, #0
add r0, #0xc4
bl Window_CopyToVRAM
add r0, r5, #0
add r0, #0xd4
mov r1, #0xf
bl Window_FillTilemap
add r0, r5, #0
add r0, #0xd4
mov r1, #1
mov r2, #0x1f
mov r3, #0xb
bl Window_DrawStandardFrame
add r0, r5, #0
add r0, #0xd4
bl Window_CopyToVRAM
mov r0, #0x6d
bl ColoredArrow_New
add r1, r5, #0
add r1, #0xe4
str r0, [r1, #0]
add r0, r5, #0
add r0, #0x48
mov r1, #0xf
bl Window_FillTilemap
add r0, r5, #0
add r0, #0x48
mov r1, #1
bl Window_EraseMessageBox
add r0, r5, #0
add r0, #0x48
bl Window_ClearAndCopyToVRAM
mov r0, #8
mov r1, #1
bl GXLayers_EngineAToggleLayers
add r0, r5, #0
mov r1, #0
add r0, #0xbc
str r1, [r0, #0]
add r0, r5, #0
add r0, #0xc0
str r1, [r0, #0]
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0, #0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xa8
str r1, [r0, #0]
b _02248670
_022484B8:
ldr r1, = gSystem
add r0, #0xac
ldr r2, [r1, #0x4c]
ldr r4, [r0, #0]
mov r0, #0x40
tst r0, r2
beq _022484E0
cmp r4, #0
beq _02248552
add r0, r5, #0
add r0, #0xac
ldr r0, [r0, #0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0xac
str r1, [r0, #0]
ldr r0, = 0x5DC
bl Sound_PlayEffect
b _02248552
_022484E0:
mov r0, #0x80
tst r0, r2
beq _02248534
add r0, r5, #0
add r0, #0xb4
ldr r0, [r0, #0]
add r1, r4, #6
cmp r1, r0
bge _02248506
add r0, r5, #0
add r0, #0xac
ldr r0, [r0, #0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xac
str r1, [r0, #0]
ldr r0, = 0x5DC
bl Sound_PlayEffect
_02248506:
add r0, r5, #0
add r0, #0xac
ldr r0, [r0, #0]
add r1, r0, #6
add r0, r5, #0
add r0, #0xb4
ldr r0, [r0, #0]
cmp r1, r0
bne _02248552
add r0, r5, #0
bl ov98_02247F08
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0, #0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xa8
str r1, [r0, #0]
ldr r0, = 0x5DC
bl Sound_PlayEffect
b _02248552
_02248534:
ldr r1, [r1, #0x48]
mov r0, #2
tst r0, r1
beq _02248552
ldr r0, = 0x5DC
bl Sound_PlayEffect
add r0, r5, #0
mov r1, #2
add r0, #0xb8
str r1, [r0, #0]
add r0, r5, #0
mov r1, #0xff
add r0, #0xa8
str r1, [r0, #0]
_02248552:
add r0, r5, #0
add r0, #0xac
ldr r0, [r0, #0]
cmp r4, r0
bne _0224855E
b _02248670
_0224855E:
add r0, r5, #0
bl ov98_022482CC
b _02248670
_02248566:
ldr r1, = gSystem
mov r2, #0x10
ldr r1, [r1, #0x48]
tst r2, r1
bne _02248576
mov r2, #0x20
tst r2, r1
beq _02248594
_02248576:
add r0, r5, #0
add r0, #0xb0
ldr r1, [r0, #0]
mov r0, #1
eor r1, r0
add r0, r5, #0
add r0, #0xb0
str r1, [r0, #0]
ldr r0, = 0x5DC
bl Sound_PlayEffect
add r0, r5, #0
bl ov98_02247F08
b _02248670
_02248594:
mov r2, #1
tst r2, r1
beq _022485BE
add r0, #0xb0
ldr r1, [r0, #0]
mov r0, #2
sub r1, r0, r1
add r0, r5, #0
add r0, #0xb8
str r1, [r0, #0]
ldr r0, = 0x5DC
bl Sound_PlayEffect
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0, #0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xa8
str r1, [r0, #0]
b _02248670
_022485BE:
mov r2, #2
add r3, r1, #0
tst r3, r2
beq _022485E0
add r0, #0xb8
str r2, [r0, #0]
ldr r0, = 0x5DC
bl Sound_PlayEffect
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0, #0]
add r1, r0, #1
add r0, r5, #0
add r0, #0xa8
str r1, [r0, #0]
b _02248670
_022485E0:
mov r2, #0x40
tst r1, r2
beq _02248670
bl ov98_02247FA4
ldr r0, = 0x5DC
bl Sound_PlayEffect
add r0, r5, #0
add r0, #0xa8
ldr r0, [r0, #0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0xa8
str r1, [r0, #0]
add r0, r5, #0
add r0, #0xac
ldr r0, [r0, #0]
sub r1, r0, #1
add r0, r5, #0
add r0, #0xac
str r1, [r0, #0]
add r0, r5, #0
bl ov98_022482CC
b _02248670
_02248614:
add r0, #0xc4
mov r1, #0
bl Window_EraseStandardFrame
add r0, r5, #0
add r0, #0xc4
bl Window_ClearAndCopyToVRAM
add r0, r5, #0
add r0, #0xc4
bl Window_Remove
add r0, r5, #0
add r0, #0xd4
mov r1, #0
bl Window_EraseStandardFrame
add r0, r5, #0
add r0, #0xd4
bl Window_ClearAndCopyToVRAM
add r0, r5, #0
add r0, #0xd4
bl Window_Remove
add r0, r5, #0
add r0, #0xe4
ldr r0, [r0, #0]
bl ColoredArrow_Free
ldr r0, [r5, #4]
mov r1, #3
bl Bg_ClearTilemap
mov r0, #8
mov r1, #0
bl GXLayers_EngineAToggleLayers
add r0, r5, #0
mov r1, #0
add r0, #0xa8
str r1, [r0, #0]
add r5, #0xb8
add sp, #0x1c
ldr r0, [r5, #0]
pop {r4, r5, r6, r7, pc}
_02248670:
add r0, r5, #0
bl ov98_02247FBC
mov r0, #0
add sp, #0x1c
pop {r4, r5, r6, r7, pc}
switch (param0->unk_A8) {
case 0:
int i;
Strbuf *strbuf1 = MessageLoader_GetNewStrbuf(param0->unk_34, 44);
u32 lineCount = Strbuf_NumLines(strbuf1);
param0->unk_AC = 0;
param0->unk_B0 = 0;
param0->unk_B8 = 0;
param0->unk_B4 = lineCount;
Window_Add(param0->unk_04, &param0->unk_C4, BG_LAYER_MAIN_2, 1, 5, 30, 12, 13, 148);
Window_Add(param0->unk_04, &param0->unk_D4, BG_LAYER_MAIN_2, 1, 19, 30, 4, 13, 508);
Window_FillTilemap(&param0->unk_C4, 15);
Strbuf *strbuf2 = Strbuf_Init(Strbuf_Length(strbuf1), HEAP_ID_109);
for (i = 0; i < 6; i++) {
Strbuf_CopyLineNum(strbuf2, strbuf1, i);
Text_AddPrinterWithParams(&param0->unk_C4, FONT_SYSTEM, strbuf2, 4, i * 16, 0xFF, NULL);
}
Strbuf_Free(strbuf1);
Strbuf_Free(strbuf2);
Window_DrawStandardFrame(&param0->unk_C4, TRUE, 31, 11);
Window_CopyToVRAM(&param0->unk_C4);
Window_FillTilemap(&param0->unk_D4, 15);
Window_DrawStandardFrame(&param0->unk_D4, TRUE, 31, 11);
Window_CopyToVRAM(&param0->unk_D4);
param0->unk_E4 = ColoredArrow_New(HEAP_ID_109);
Window_FillTilemap(&param0->unk_48, 15);
Window_EraseMessageBox(&param0->unk_48, TRUE);
Window_ClearAndCopyToVRAM(&param0->unk_48);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG3, TRUE);
param0->unk_BC = 0;
param0->unk_C0 = 0;
param0->unk_A8++;
break;
case 1:
int v1 = param0->unk_AC;
if (JOY_REPEAT(PAD_KEY_UP)) {
if (param0->unk_AC != 0) {
param0->unk_AC--;
Sound_PlayEffect(SEQ_SE_CONFIRM);
}
} else if (JOY_REPEAT(PAD_KEY_DOWN)) {
if (param0->unk_AC + 6 < param0->unk_B4) {
param0->unk_AC++;
Sound_PlayEffect(SEQ_SE_CONFIRM);
}
if (param0->unk_AC + 6 == param0->unk_B4) {
ov98_02247F08(param0);
param0->unk_A8++;
Sound_PlayEffect(SEQ_SE_CONFIRM);
}
} else if (gSystem.pressedKeys & PAD_BUTTON_B) {
Sound_PlayEffect(SEQ_SE_CONFIRM);
param0->unk_B8 = 2;
param0->unk_A8 = 0xFF;
}
if (v1 != param0->unk_AC) {
ov98_022482CC(param0);
}
break;
case 2:
if (gSystem.pressedKeys & PAD_KEY_RIGHT || gSystem.pressedKeys & PAD_KEY_LEFT) {
param0->unk_B0 ^= 1;
Sound_PlayEffect(SEQ_SE_CONFIRM);
ov98_02247F08(param0);
} else if (gSystem.pressedKeys & PAD_BUTTON_A) {
param0->unk_B8 = 2 - param0->unk_B0;
Sound_PlayEffect(SEQ_SE_CONFIRM);
param0->unk_A8++;
} else if (gSystem.pressedKeys & PAD_BUTTON_B) {
param0->unk_B8 = 2;
Sound_PlayEffect(SEQ_SE_CONFIRM);
param0->unk_A8++;
} else if (gSystem.pressedKeys & PAD_KEY_UP) {
ov98_02247FA4(param0);
Sound_PlayEffect(SEQ_SE_CONFIRM);
param0->unk_A8--;
param0->unk_AC--;
ov98_022482CC(param0);
}
break;
default:
Window_EraseStandardFrame(&param0->unk_C4, 0);
Window_ClearAndCopyToVRAM(&param0->unk_C4);
Window_Remove(&param0->unk_C4);
Window_EraseStandardFrame(&param0->unk_D4, 0);
Window_ClearAndCopyToVRAM(&param0->unk_D4);
Window_Remove(&param0->unk_D4);
ColoredArrow_Free(param0->unk_E4);
Bg_ClearTilemap(param0->unk_04, BG_LAYER_MAIN_3);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG3, FALSE);
param0->unk_A8 = 0;
return param0->unk_B8;
}
ov98_02247FBC(param0);
return 0;
}
// clang-format on
static int ov98_02248684(UnkStruct_ov98_02247704 *param0)
{