start overlay 13

This commit is contained in:
Seth Barberee 2024-07-07 13:01:33 -07:00
parent d6758b7098
commit 8f640fdc6e
5 changed files with 194 additions and 304 deletions

View File

@ -12,6 +12,7 @@
.public CreateTextBox
.public Debug_GetDebugFlag
.public DrawTextInWindow
.public ExitOverlay13
.public FemaleToMaleForm
.public GetAdvancedMenuCurrentOption
.public GetAdvancedMenuResult
@ -40,6 +41,7 @@
.public ov11_023039D4
.public ov11_02303D80
.public ov11_0230D71C
.public Overlay13SwitchFunctionNa238A1C8
.public PreprocessString
.public PreprocessStringFromId
.public RandInt

View File

@ -3,310 +3,6 @@
.text
arm_func_start EntryOverlay13
EntryOverlay13: ; 0x0238A140
stmdb sp!, {r3, lr}
bl sub_0201F2E4
ldr r0, _0238A184 ; =0x00000428
mov r1, #8
bl MemAlloc
ldr r1, _0238A188 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0
str r0, [r1]
strb r3, [r0]
ldr r2, [r1]
ldr r0, _0238A18C ; =OVERLAY13_UNKNOWN_STRUCT__NA_238C024
str r3, [r2, #0x20]
ldr r1, [r1]
sub r2, r3, #2
strb r2, [r1, #6]
bl sub_020348E4
ldmia sp!, {r3, pc}
.align 2, 0
_0238A184: .word 0x00000428
_0238A188: .word OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
_0238A18C: .word OVERLAY13_UNKNOWN_STRUCT__NA_238C024
arm_func_end EntryOverlay13
arm_func_start ExitOverlay13
ExitOverlay13: ; 0x0238A190
stmdb sp!, {r3, lr}
ldr r0, _0238A1C4 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl sub_0201F2E4
ldr r0, _0238A1C4 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
ldr r0, [r0]
bl MemFree
ldr r0, _0238A1C4 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0238A1C4: .word OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
arm_func_end ExitOverlay13
arm_func_start Overlay13SwitchFunctionNa238A1C8
Overlay13SwitchFunctionNa238A1C8: ; 0x0238A1C8
stmdb sp!, {r3, lr}
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, #0x13
addls pc, pc, r0, lsl #2
b _0238A568
_0238A1E4: ; jump table
b _0238A234 ; case 0
b _0238A24C ; case 1
b _0238A280 ; case 2
b _0238A384 ; case 3
b _0238A45C ; case 4
b _0238A4C4 ; case 5
b _0238A4F4 ; case 6
b _0238A418 ; case 7
b _0238A3B8 ; case 8
b _0238A3E8 ; case 9
b _0238A568 ; case 10
b _0238A568 ; case 11
b _0238A524 ; case 12
b _0238A550 ; case 13
b _0238A2E8 ; case 14
b _0238A2B4 ; case 15
b _0238A490 ; case 16
b _0238A31C ; case 17
b _0238A350 ; case 18
b _0238A558 ; case 19
_0238A234:
bl ov11_022E6E68
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r1, #0xd
ldr r0, [r0]
strb r1, [r0]
b _0238A568
_0238A24C:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #1
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A280:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #0x19
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A2B4:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #0x1d
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A2E8:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #0x1c
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A31C:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #0x1f
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A350:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #0x20
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A384:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #0x18
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A3B8:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A3E8
mov r0, #0x15
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
_0238A3E8:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A418
mov r0, #0x16
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
_0238A418:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
ldr r0, [r0]
add r0, r0, #0x400
ldrh r0, [r0, #0x26]
add r0, r0, #5
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A45C:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #2
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A490:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
mov r0, #0x1e
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A4C4:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A4F4
mov r0, #3
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
_0238A4F4:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A524
mov r0, #4
bl ov11_022E6E8C
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r3, #0xc
ldr r2, [r0]
mov r1, #0xd
strb r3, [r2]
ldr r0, [r0]
strb r1, [r0, #1]
_0238A524:
bl ov11_022E6EC8
cmp r0, #0
beq _0238A568
ldr r0, _0238A570 ; =OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
mov r1, #0xd
ldr r3, [r0]
ldrb r2, [r3, #1]
strb r2, [r3]
ldr r0, [r0]
strb r1, [r0, #1]
b _0238A568
_0238A550:
bl Overlay13SwitchFunctionNa238A574
b _0238A568
_0238A558:
mvn r0, #0
bl ov11_022E6E8C
mov r0, #4
ldmia sp!, {r3, pc}
_0238A568:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0238A570: .word OVERLAY13_UNKNOWN_POINTER__NA_238CEA0
arm_func_end Overlay13SwitchFunctionNa238A1C8
arm_func_start Overlay13SwitchFunctionNa238A574
Overlay13SwitchFunctionNa238A574: ; 0x0238A574
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}

View File

@ -0,0 +1,8 @@
#ifndef PMDSKY_OVERLAY_13_H
#define PMDSKY_OVERLAY_13_H
void EntryOverlay13(void);
void ExitOverlay13(void);
u32 Overlay13SwitchFunctionNa238A1C8(void);
#endif // PMDSKY_OVERLAY_13

View File

@ -102,6 +102,7 @@ Overlay OVY_12
Overlay OVY_13
{
After OVY_11
Object src/overlay_13_EntryOverlay13.o
Object asm/overlay_13.o
}
Overlay OVY_14

View File

@ -0,0 +1,183 @@
#include "overlay13_EntryOverlay13.h"
extern void* MemAlloc(u32 len, u32 flags);
extern void* MemFree(void *);
void sub_0201F2E4(void);
void sub_020348E4(const u8 *);
extern void ov11_022E6E8C(u32);
void ov11_022E6E68(void);
BOOL ov11_022E6EC8(void);
void Overlay13SwitchFunctionNa238A574(void);
struct Overlay13Main
{
// size: 0x428
u8 unk0;
u8 unk1;
u8 fill2[0x6 - 2];
s8 unk6;
u8 unk7[0x20 - 0x7];
u32 unk20;
u8 fill24[0x426 - 0x24];
u16 unk426;
};
extern struct Overlay13Main *OVERLAY13_UNKNOWN_POINTER__NA_238CEA0;
extern const u8 OVERLAY13_UNKNOWN_STRUCT__NA_238C024[];
void EntryOverlay13(void)
{
sub_0201F2E4();
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0 = MemAlloc(sizeof(struct Overlay13Main), 8);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk20 = 0;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk6 = 0xFE;
sub_020348E4(OVERLAY13_UNKNOWN_STRUCT__NA_238C024);
}
void ExitOverlay13(void)
{
if(OVERLAY13_UNKNOWN_POINTER__NA_238CEA0)
{
sub_0201F2E4();
MemFree(OVERLAY13_UNKNOWN_POINTER__NA_238CEA0);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0 = NULL;
}
}
u32 Overlay13SwitchFunctionNa238A1C8(void) {
switch(OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0)
{
case 0:
ov11_022E6E68();
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xD;
break;
case 1:
if(ov11_022E6EC8())
{
ov11_022E6E8C(1);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 2:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x19);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 0xF:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x1d);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 0xE:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x1c);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 0x11:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x1f);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 0x12:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x20);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 3:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x18);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 8:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x15);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
case 9:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x16);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
case 7:
if(ov11_022E6EC8())
{
ov11_022E6E8C(OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk426 + 0x5);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 4:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x2);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 0x10:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x1e);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 5:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x3);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
case 6:
if(ov11_022E6EC8())
{
ov11_022E6E8C(0x4);
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = 0xC;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
case 12:
if(ov11_022E6EC8())
{
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk0 = OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1;
OVERLAY13_UNKNOWN_POINTER__NA_238CEA0->unk1 = 0xD;
}
break;
case 10:
break;
case 11:
break;
case 0xD:
Overlay13SwitchFunctionNa238A574();
break;
case 0x13:
ov11_022E6E8C(-1);
return 4;
}
return 1;
}