finish functions

This commit is contained in:
Lincoln-LM
2024-09-03 12:05:26 -06:00
parent 9b0cc392bb
commit aed8e1b59c
3 changed files with 87 additions and 241 deletions

View File

@@ -8041,6 +8041,9 @@
.extern ov24_02254DDC
.extern ov24_02254EE0
.extern ov24_02254F28
.extern ov24_02254F40
.extern ov24_02255038
.extern ov24_02255050
.extern ov26_02254BD4
.extern ov26_02254C04
.extern ov26_02254C10

View File

@@ -3,235 +3,6 @@
.section .text
.balign 4, 0
thumb_func_start ov24_02254F40
ov24_02254F40: ; 0x02254F40
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
add r0, r1, #0
str r1, [sp, #8]
bl ov20_022538A0
add r7, r0, #0
ldr r0, [r7]
ldr r1, [r0]
cmp r1, #0
bne _02254FF2
mov r1, #8
str r1, [sp, #0x10]
str r1, [sp, #0x14]
ldr r1, [r0, #4]
ldr r0, [r0, #8]
lsl r1, r1, #1
lsl r0, r0, #1
sub r6, r1, #4
sub r5, r0, #4
cmp r6, #0
bge _02254F74
ldr r0, [sp, #0x10]
add r0, r0, r6
str r0, [sp, #0x14]
mov r6, #0
_02254F74:
cmp r5, #0
bge _02254F80
ldr r0, [sp, #0x10]
add r0, r0, r5
str r0, [sp, #0x10]
mov r5, #0
_02254F80:
ldr r0, [sp, #0x14]
lsl r2, r6, #0x10
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp]
ldr r0, [sp, #0x10]
lsl r3, r5, #0x10
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #4]
ldr r0, [r7, #0x70]
mov r1, #4
lsr r2, r2, #0x10
lsr r3, r3, #0x10
bl FillWindowPixelRect
asr r1, r5, #3
mov r2, #0x14
asr r0, r6, #3
mul r2, r1
add r4, r0, r2
ldr r2, [sp, #0x14]
add r2, r6, r2
sub r2, r2, #1
asr r2, r2, #3
sub r0, r2, r0
ldr r2, [sp, #0x10]
add r0, r0, #1
add r2, r5, r2
sub r2, r2, #1
asr r2, r2, #3
sub r1, r2, r1
add r1, r1, #1
sub r6, r1, #1
cmp r1, #0
beq _0225502C
lsl r0, r0, #5
lsl r5, r4, #5
str r0, [sp, #0xc]
_02254FCE:
ldr r0, [r7, #0x70]
add r1, r4, #0
ldr r0, [r0, #0xc]
add r1, #0xc
ldr r2, [sp, #0xc]
add r0, r0, r5
lsl r1, r1, #5
bl GXS_LoadBG3Char
mov r0, #0xa
lsl r0, r0, #6
add r5, r5, r0
add r0, r6, #0
add r4, #0x14
sub r6, r6, #1
cmp r0, #0
bne _02254FCE
b _0225502C
_02254FF2:
ldr r1, [r0, #4]
ldr r0, [r0, #8]
lsl r2, r1, #1
lsl r3, r0, #1
asr r1, r3, #3
mov r0, #0x14
asr r4, r2, #3
mul r0, r1
add r4, r4, r0
mov r0, #2
str r0, [sp]
str r0, [sp, #4]
lsl r2, r2, #0x10
lsl r3, r3, #0x10
ldr r0, [r7, #0x70]
mov r1, #1
lsr r2, r2, #0x10
lsr r3, r3, #0x10
bl FillWindowPixelRect
ldr r0, [r7, #0x70]
mov r2, #0x20
ldr r1, [r0, #0xc]
lsl r0, r4, #5
add r4, #0xc
add r0, r1, r0
lsl r1, r4, #5
bl GXS_LoadBG3Char
_0225502C:
ldr r0, [sp, #8]
bl ov24_02254DC8
add sp, #0x18
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_end ov24_02254F40
thumb_func_start ov24_02255038
ov24_02255038: ; 0x02255038
push {r4, lr}
add r4, r1, #0
add r0, r4, #0
bl ov20_022538A0
ldr r0, [r0, #0x70]
bl CopyWindowPixelsToVram_TextMode
add r0, r4, #0
bl ov24_02254DC8
pop {r4, pc}
thumb_func_end ov24_02255038
thumb_func_start ov24_02255050
ov24_02255050: ; 0x02255050
push {r3, r4, r5, lr}
add r5, r1, #0
add r0, r5, #0
bl ov20_022538A0
add r4, r0, #0
bl ov24_022550D4
ldr r0, [r4, #4]
mov r1, #6
bl FreeBgTilemapBuffer
ldr r0, [r4, #4]
mov r1, #7
bl FreeBgTilemapBuffer
add r0, r5, #0
bl ov24_02254DC8
pop {r3, r4, r5, pc}
thumb_func_end ov24_02255050
thumb_func_start ov24_02255078
ov24_02255078: ; 0x02255078
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x10
mov r3, #0
str r3, [sp]
mov r2, #1
add r7, r0, #0
str r2, [sp, #4]
mov r0, #8
str r0, [sp, #8]
mov r0, #0xc
mov r1, #0x20
bl GfGfxLoader_LoadWholePalette
mov r0, #8
str r0, [sp]
add r0, r7, #0
add r0, #0x54
mov r1, #0xc
mov r2, #0x21
mov r3, #0x22
bl ov20_02253FBC
cmp r0, #0
beq _022550CC
add r0, r7, #0
str r0, [sp, #0xc]
add r0, #0x54
ldr r4, _022550D0 ; =ov24_0225514C
mov r6, #0
add r5, r7, #0
str r0, [sp, #0xc]
_022550B6:
ldr r0, [r7, #0x50]
ldr r2, [sp, #0xc]
add r1, r4, #0
bl ov20_02253E74
str r0, [r5, #0x68]
add r6, r6, #1
add r4, #0x10
add r5, r5, #4
cmp r6, #2
blt _022550B6
_022550CC:
add sp, #0x10
pop {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022550D0: .word ov24_0225514C
thumb_func_end ov24_02255078
thumb_func_start ov24_022550D4
ov24_022550D4: ; 0x022550D4
push {r4, r5, r6, lr}
add r6, r0, #0
mov r4, #0
add r5, r6, #0
_022550DC:
ldr r0, [r6, #0x50]
ldr r1, [r5, #0x68]
bl ov20_02253F14
add r4, r4, #1
add r5, r5, #4
cmp r4, #2
blo _022550DC
add r6, #0x54
add r0, r6, #0
bl ov20_02254014
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_end ov24_022550D4
.section .rodata
.global ov24_022550F8
ov24_022550F8: ; 0x022550F8

View File

@@ -23,8 +23,7 @@ struct UnkSubStructOverlay24
u8 unkC[0x44];
u32 unk50;
u8 unk54[0x14];
u32* unk68;
u32* unk6C;
u32* unk68[2];
Window *window;
};
typedef struct UnkStructOverlay24 UnkStructOverlay24;
@@ -67,6 +66,11 @@ void ov24_02254DC8(void*);
void ov24_02254DDC(void*, void*);
void ov24_02254EE0(u32, void*);
void ov24_02254F28(int, void*);
void ov24_02254F40(u32 arg0, void* arg1);
void ov24_02255038(u32 arg0, void* arg1);
void ov24_02255050(u32 arg0, void* arg1);
void ov24_02255078(UnkSubStructOverlay24* arg0);
void ov24_022550D4(UnkSubStructOverlay24* arg0);
extern void Poketch_InitApp(void *func1, void *func2);
extern u32 ov20_02254130(void *, u32, void *, void*, u32);
@@ -77,27 +81,28 @@ extern void ov20_022529A0(u32);
extern void ov24_0225499(UnkStructOverlay24*);
extern void ov20_0225298C(u32);
extern BOOL ov20_02252C08(u32);
extern BOOL ov24_02254A70(UnkStructOverlay24*);
extern BOOL TouchScreen_GetTapState(u32*, u32*);
extern BOOL ov24_02254AD4(UnkStructOverlay24*);
extern BOOL ov24_02254CA(u32**, u32);
extern _s32_div_f(void);
extern void ov20_022536F4(void*, u32);
extern u32 ov20_02252D34();
extern u32 ov20_02252D24();
extern BOOL sub_0208946C(u32, void*, u32);
extern void sub_02089444(u32, void*, u32);
extern void ov24_02255078(void*);
extern void ov20_02252D7C(u32, u32);
extern void ov20_02253F28(u32*, u32);
extern void Poketch_PlaySoundEffect(u32);
extern UnkSubStructOverlay24* ov20_022538A0(void*);
extern void* ov20_022538A0(void*);
extern void ov20_02253888(u32*, void*);
extern BOOL (ov20_022537B8)(void*);
extern BOOL (ov20_02253794)(void*, u8);
extern void ov20_022537E0(u32*, u32, void*, void*, void*, u32, u32);
extern BOOL ov20_02253FBC(void*, NarcId, u32, u32, HeapID);
extern u32* ov20_02253E74(u32, void*, void*);
extern void ov20_02254014(void*);
extern void ov20_02253F14(u32, void*);
extern FnType02254918 ov24_02255100[3];
extern u32 ov24_0225514C[2][4];
extern u32 ov24_0225516C[];
extern const WindowTemplate ov24_0225510C;
extern BgTemplate ov24_02255114;
@@ -503,7 +508,7 @@ BOOL ov24_02254DBC(UnkSubStructOverlay24* arg0) {
}
void ov24_02254DC8(void* arg0) {
ov20_02253888(&(ov20_022538A0(arg0)->unk8), arg0);
ov20_02253888(&(((UnkSubStructOverlay24*)ov20_022538A0(arg0))->unk8), arg0);
}
void ov24_02254DDC(void* arg0, void* arg1) {
@@ -544,11 +549,11 @@ void ov24_02254DDC(void* arg0, void* arg1) {
void ov24_02254EE0(u32 arg0, void* arg1) {
UnkSubStructOverlay24* v0 = ov20_022538A0(arg1);
if (v0->unk0->unk0 == 1) {
ov20_02253F28(v0->unk68, 0);
ov20_02253F28(v0->unk6C, 3);
ov20_02253F28(v0->unk68[0], 0);
ov20_02253F28(v0->unk68[1], 3);
} else {
ov20_02253F28(v0->unk68, 1);
ov20_02253F28(v0->unk6C, 2);
ov20_02253F28(v0->unk68[0], 1);
ov20_02253F28(v0->unk68[1], 2);
}
Poketch_PlaySoundEffect(1635);
ov24_02254DC8(arg1);
@@ -559,3 +564,70 @@ void ov24_02254F28(int arg0, void* arg1) {
CopyWindowPixelsToVram_TextMode(a0->window);
ov24_02254DC8(arg1);
}
void ov24_02254F40(u32 arg0, void* arg1) {
UnkSubStructOverlay24 *v0 = ov20_022538A0(arg1);
UnkSubStructOverlay24_1* v1 = v0->unk0;
if (v1->unk0 == 0) {
int width, height;
height = 8;
width = 8;
int x = v1->lastModifiedX * 2 - 4;
int y = v1->lastModifiedY * 2 - 4;
if (x < 0) {
width += x;
x = 0;
}
if (y < 0) {
height += y;
y = 0;
}
FillWindowPixelRect(v0->window, 4, x, y, width, height);
int a = (x >> 3) + (y >> 3) * 0x14;
int e = ((x + width - 1) >> 3) - (x >> 3) + 1;
int b = ((y + height - 1) >> 3) - (y >> 3) + 1;
while (b--) {
GXS_LoadBG3Char((u8*)(v0->window->pixelBuffer) + (a * 0x20), (a + 0xc) * 0x20, e * 0x20);
a += 0x14;
}
} else {
int height = 2;
int width = 2;
int x = v1->lastModifiedX * 2;
int y = v1->lastModifiedY * 2;
int a = (x >> 3) + ((y >> 3) * 0x14);
FillWindowPixelRect(v0->window, 1, x, y, width, height);
GXS_LoadBG3Char((u8*)(v0->window->pixelBuffer) + a * 0x20, (a + 0xc) * 0x20, 0x20);
}
ov24_02254DC8(arg1);
}
void ov24_02255038(u32 arg0, void* arg1) {
UnkSubStructOverlay24* v0 = ov20_022538A0(arg1);
CopyWindowPixelsToVram_TextMode(v0->window);
ov24_02254DC8(arg1);
}
void ov24_02255050(u32 arg0, void* arg1) {
UnkSubStructOverlay24* v0 = ov20_022538A0(arg1);
ov24_022550D4(v0);
FreeBgTilemapBuffer(v0->config, 6);
FreeBgTilemapBuffer(v0->config, 7);
ov24_02254DC8(arg1);
}
void ov24_02255078(UnkSubStructOverlay24* arg0) {
GfGfxLoader_LoadWholePalette(NARC_GRAPHIC_POKETCH, 0x20, 1, 0, 0, 1, HEAP_ID_POKETCH_APP);
if (ov20_02253FBC(&(arg0->unk54), NARC_GRAPHIC_POKETCH, 0x21, 0x22, HEAP_ID_POKETCH_APP)) {
for (int i = 0; i < 2; i++) {
arg0->unk68[i] = ov20_02253E74(arg0->unk50, &(ov24_0225514C[i]), &(arg0->unk54));
}
}
}
void ov24_022550D4(UnkSubStructOverlay24* arg0) {
for (u32 i = 0; i < 2; i++) {
ov20_02253F14(arg0->unk50, arg0->unk68[i]);
}
ov20_02254014(&(arg0->unk54));
}