Decompiled ov15_0238AF54

This commit is contained in:
SetiQyu 2024-12-21 12:50:35 +01:00
parent 2392b4aa26
commit 7df071f129
6 changed files with 71 additions and 111 deletions

View File

@ -1,10 +0,0 @@
#pragma once
.public CloseDialogueBox
.public ClosePortraitBox
.public HidePortraitBox
.public IsDialogueBoxActive
.public OVERLAY15_UNKNOWN_POINTER__NA_238B180
.public ov11_022E6E68
.public ov15_0238A234
.public sub_0202836C
.public sub_0202F2C4

View File

@ -0,0 +1 @@
#pragma once

View File

@ -1,83 +1,7 @@
.include "asm/macros.inc"
.include "overlay_15_0238AF54.inc"
.include "overlay_15_0238B054.inc"
.text
arm_func_start ov15_0238AF54
ov15_0238AF54: ; 0x0238AF54
stmdb sp!, {r3, lr}
ldr r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
ldr r1, [r0]
ldr r0, [r1]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0238B048
_0238AF70: ; jump table
b _0238AF88 ; case 0
b _0238AF94 ; case 1
b _0238AFB0 ; case 2
b _0238B03C ; case 3
b _0238B048 ; case 4
b _0238AFF4 ; case 5
_0238AF88:
mov r0, #1
str r0, [r1]
b _0238B048
_0238AF94:
bl ov15_0238A234
cmp r0, #3
ldreq r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
moveq r1, #2
ldreq r0, [r0]
streq r1, [r0]
b _0238B048
_0238AFB0:
ldrsb r0, [r1, #0x80]
bl IsDialogueBoxActive
cmp r0, #0
bne _0238B048
ldr r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
ldr r0, [r0]
ldrsb r0, [r0, #0x81]
bl HidePortraitBox
ldr r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
ldr r0, [r0]
ldrsb r0, [r0, #0x80]
bl sub_0202F2C4
ldr r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
mov r1, #5
ldr r0, [r0]
str r1, [r0]
b _0238B048
_0238AFF4:
ldrsb r0, [r1, #0x80]
bl sub_0202836C
ldr r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
ldr r0, [r0]
ldrsb r0, [r0, #0x81]
bl ClosePortraitBox
ldr r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
ldr r0, [r0]
ldrsb r0, [r0, #0x80]
bl CloseDialogueBox
ldr r0, _0238B050 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180
mov r3, #3
ldr r2, [r0]
sub r1, r3, #5
str r3, [r2]
ldr r0, [r0]
strb r1, [r0, #0x80]
b _0238B048
_0238B03C:
bl ov11_022E6E68
mov r0, #4
ldmia sp!, {r3, pc}
_0238B048:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0238B050: .word OVERLAY15_UNKNOWN_POINTER__NA_238B180
arm_func_end ov15_0238AF54
; 0x0238B054
.global BANK_MAIN_MENU_ITEMS

View File

@ -2,13 +2,16 @@
#define PMDSKY_OVERLAY_15_0238AE6C_H
typedef struct {
u8 fill0[0x54];
s32 unk0;
u8 fill20[0x20 - 0x5];
s8 unk20;
u8 fill54[0x54 - 0x21];
u32 unk54;
u8 fill58[0x68 - 0x58];
u8 fill68[0x68 - 0x58];
u32 unk68;
u8 fill3[0x80 - 0x6c];
u8 fill80[0x80 - 0x6c];
s8 unk80;
u8 fill82[0x82 - 0x81];
s8 unk81;
s8 unk82;
s8 unk83;
s8 unk84;
@ -19,6 +22,6 @@ typedef struct {
void ov15_0238AE6C(void);
s32 ov15_0238AE88(void);
void ov15_0238AE98(void);
int ov15_0238AF54(void);
#endif //PMDSKY_OVERLAY_15_0238AE6C_H

View File

@ -150,7 +150,7 @@ Overlay OVY_15
Object src/overlay_15_0238AD78.o
Object asm/overlay_15_0238ADC4.o
Object src/overlay_15_0238AE6C.o
Object asm/overlay_15_0238AF54.o
Object asm/overlay_15_0238B054.o
}
Overlay OVY_16
{

View File

@ -2,20 +2,28 @@
extern unkStruct_ov15_0238AE6C* OVERLAY15_UNKNOWN_POINTER__NA_238B180;
extern u16 ov15_0238A140(void);
extern void ov15_0238AD78(u8);
extern u16 ov15_0238A140(void);
extern void Debug_Print0(const char* fmt);
extern void MemFree(void*);
extern int ov15_0238A234(void);
extern int IsDialogueBoxActive(s8);
extern void HidePortraitBox(int);
extern void sub_0202F2C4(s8);
extern void sub_0202836C(int);
extern void ClosePortraitBox(s8);
extern void CloseDialogueBox(int);
extern void ov11_022E6E68(void);
void ov15_0238AE6C(void) {
void ov15_0238AE6C(void)
{
ov15_0238AD78(OVERLAY15_UNKNOWN_POINTER__NA_238B180->unkD8);
}
s32 ov15_0238AE88(void)
{
s32 ov15_0238AE88(void) {
ov15_0238A140();
return 1;
return 1;
}
const char ov15_0238B11C[] = "mes not close\n";
@ -23,23 +31,57 @@ const char ov15_0238B12C[] = "sub not close\n";
const char ov15_0238B13C[] = "select not close\n";
const char ov15_0238B150[] = "Input not close\n";
void ov15_0238AE98(void)
{
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180 == NULL) {
void ov15_0238AE98(void) {
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180 == NULL)
return;
}
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk80 != -2) {
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk80 != -2)
Debug_Print0(ov15_0238B11C);
}
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk82 != -2) {
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk82 != -2)
Debug_Print0(ov15_0238B12C);
}
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk83 != -2) {
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk83 != -2)
Debug_Print0(ov15_0238B13C);
}
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk84 != -2) {
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk84 != -2)
Debug_Print0(ov15_0238B150);
}
MemFree(OVERLAY15_UNKNOWN_POINTER__NA_238B180);
OVERLAY15_UNKNOWN_POINTER__NA_238B180 = NULL;
}
int ov15_0238AF54(void) {
switch(OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk0) {
case 0:
OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk0 = 1;
break;
case 1:
if (ov15_0238A234() == 3)
OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk0 = 2;
break;
case 2:
if (IsDialogueBoxActive(OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk80) == FALSE) {
HidePortraitBox(OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk81);
sub_0202F2C4(OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk80);
OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk0 = 5;
}
break;
case 4:
break;
case 5:
sub_0202836C(OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk80);
ClosePortraitBox(OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk81);
CloseDialogueBox(OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk80);
OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk0 = 3;
OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk80 = 0xfe;
break;
case 3:
ov11_022E6E68();
return 4;
}
return 1;
}