Decomped ov28_0238A58C

Decomped by @taxicat1
This commit is contained in:
AnonymousRandomPerson 2025-09-07 23:37:58 -04:00
parent 92cde4bc3f
commit 520ae97054
12 changed files with 654 additions and 629 deletions

View File

@ -1,23 +1,15 @@
#pragma once
.public DrawTextInWindow
.public GetStringFromFileVeneer
.public MemAlloc
.public MemFree
.public NewWindow
.public ov11_022E6E8C
.public ov11_022E6EC8
.public ov28_0238ABD4
.public ov28_0238ACFC
.public ov28_0238AD0C
.public ov28_0238AD24
.public ov28_0238AD28
.public ov28_0238AD2C
.public ov28_0238AD80
.public ov28_0238ADA0
.public strcpy
.public sub_02025B80
.public sub_02025B90
.public sub_02025C14
.public sub_02027170
.public sub_02027228
.public sub_0202810C
.public sub_0202822C
.public sub_0202825C
.public sub_02028270
.public sub_02028354
.public sub_02028EE8
.public sub_02028F88
.public sub_02028FA0
.public sub_020348E4

View File

@ -0,0 +1,22 @@
#pragma once
.public DrawTextInWindow
.public NewWindow
.public ov11_022E6E8C
.public ov11_022E6EC8
.public ov28_0238A140
.public ov28_0238A184
.public ov28_0238A490
.public ov28_0238A58C
.public ov28_0238AD0C
.public ov28_0238AD80
.public ov28_0238ADA0
.public sub_02025B80
.public sub_02025B90
.public sub_0202810C
.public sub_0202822C
.public sub_0202825C
.public sub_02028270
.public sub_02028354
.public sub_02028EE8
.public sub_02028F88
.public sub_02028FA0

View File

@ -319,596 +319,3 @@ _0238A580: .word ov28_0238ADA0
_0238A584: .word ov28_0238AD24
_0238A588: .word ov28_0238AD2C
arm_func_end ov28_0238A490
arm_func_start ov28_0238A58C
ov28_0238A58C: ; 0x0238A58C
stmdb sp!, {r3, lr}
mov r0, #0
bl ov28_0238AB5C
bl sub_02025C14
bl sub_02027170
bl sub_02027228
ldr r0, _0238A5C8 ; =ov28_0238AD80
ldr r0, [r0]
cmp r0, #0
ldmeqia sp!, {r3, pc}
bl MemFree
ldr r0, _0238A5C8 ; =ov28_0238AD80
mov r1, #0
str r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_0238A5C8: .word ov28_0238AD80
arm_func_end ov28_0238A58C
arm_func_start ov28_0238A5CC
ov28_0238A5CC: ; 0x0238A5CC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x18
ldr r6, _0238AB50 ; =ov28_0238AD80
ldr r1, [r6]
ldr r0, [r1]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _0238AB44
_0238A5EC: ; jump table
b _0238A608 ; case 0
b _0238A6BC ; case 1
b _0238A6C8 ; case 2
b _0238A6A0 ; case 3
b _0238A678 ; case 4
b _0238AAC0 ; case 5
b _0238AA90 ; case 6
_0238A608:
bl ov11_022E6EC8
cmp r0, #0
beq _0238AB44
ldr r0, _0238AB54 ; =ov28_0238ADA0
mov r1, r6
ldr r0, [r0]
cmp r0, #0
bne _0238A648
ldr r2, [r1]
mov r0, #1
add r2, r2, #0x58
add r3, r2, #0x800
mov r1, #0x10
mov r2, #0x68
bl ov28_0238ABD4
b _0238A664
_0238A648:
ldr r2, [r1]
mov r0, #0
add r2, r2, #0x58
add r3, r2, #0x800
mov r1, #0x10
mov r2, #0x60
bl ov28_0238ABD4
_0238A664:
ldr r0, _0238AB50 ; =ov28_0238AD80
mov r1, #4
ldr r0, [r0]
str r1, [r0]
b _0238AB44
_0238A678:
bl ov11_022E6EC8
cmp r0, #0
beq _0238AB44
mov r0, #1
bl ov11_022E6E8C
mov r0, r6
ldr r0, [r0]
mov r1, #3
str r1, [r0]
b _0238AB44
_0238A6A0:
bl ov11_022E6EC8
cmp r0, #0
movne r0, r6
ldrne r0, [r0]
movne r1, #1
strne r1, [r0]
b _0238AB44
_0238A6BC:
mov r0, #2
str r0, [r1]
b _0238AB44
_0238A6C8:
mov r4, #0
mvn r7, #1
_0238A6D0:
ldr r0, [r6]
add r0, r0, r4
ldrsb r8, [r0, #9]
cmp r8, r7
beq _0238A718
mov r0, r8
bl sub_02028354
cmp r0, #2
bne _0238A718
mov r0, r8
bl sub_02028FA0
cmp r0, #0
bne _0238A718
mov r0, r8
bl sub_0202822C
ldr r0, [r6]
add r0, r0, r4
strb r7, [r0, #9]
_0238A718:
add r4, r4, #1
cmp r4, #0x14
blt _0238A6D0
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r2, [r0]
cmp r2, #0
bne _0238A854
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r0, [r0]
add r0, r0, #0x20
bl ov28_0238A184
ldr r1, _0238AB50 ; =ov28_0238AD80
mov r5, r0
ldr r1, [r1]
ldr r0, [r1, #0x24]
mov r0, r0, asr #0x10
cmp r0, #0xc0
blt _0238A774
add r0, r1, #0x3c
add r0, r0, #0x400
bl ov28_0238A184
orr r5, r5, r0
b _0238AA48
_0238A774:
add r4, r1, #0x3c
ldr r0, [r4, #0x410]
cmp r0, #0
beq _0238A790
cmp r0, #1
beq _0238A814
b _0238AA48
_0238A790:
mvn r0, #3
str r0, [sp, #0x10]
ldr r0, [r4, #0x404]
add r1, sp, #0x10
mov r0, r0, asr #0x10
str r0, [sp, #0x14]
ldr r0, [r4, #0x40c]
and r0, r0, #0xff
bl sub_02028F88
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x404]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x404]
ldr r0, [sp, #0x14]
cmp r0, #0x88
ble _0238AA48
ldr r0, [r4, #0x40c]
mov r2, #0x20
add r1, sp, #0x10
mov r3, r2
and r0, r0, #0xff
bl sub_02028EE8
ldr r0, [r4, #0x40c]
mov r1, #1
and r0, r0, #0xff
bl sub_0202825C
ldr r0, [r4, #0x410]
add r0, r0, #1
str r0, [r4, #0x410]
b _0238AA48
_0238A814:
ldr r1, [r4, #0x40c]
add r0, r4, #0x400
and r1, r1, #0xff
bl ov28_0238A140
mvn r1, #3
mov r0, #0
str r1, [sp, #0x10]
str r0, [sp, #0x14]
ldr r0, [r4, #0x40c]
add r1, sp, #0x10
and r0, r0, #0xff
bl sub_02028F88
ldr r0, [r4, #0x410]
add r0, r0, #1
str r0, [r4, #0x410]
b _0238AA48
_0238A854:
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r4, [r0]
ldr r0, [r4, #0x24]
mov r0, r0, asr #0x10
cmp r0, #8
blt _0238A87C
add r0, r4, #0x20
bl ov28_0238A184
mov r5, r0
b _0238A924
_0238A87C:
ldr r0, [r4, #0x30]
cmp r0, #0
beq _0238A8A4
cmp r0, #1
ldreq r0, _0238AB58 ; =ov28_0238AD0C
ldreq r1, [r4, #0x24]
ldreq r0, [r0, r2, lsl #2]
addeq r0, r1, r0
streq r0, [r4, #0x24]
b _0238A924
_0238A8A4:
mvn r0, #3
str r0, [sp, #8]
ldr r0, [r4, #0x24]
add r1, sp, #8
mov r0, r0, asr #0x10
str r0, [sp, #0xc]
ldr r0, [r4, #0x2c]
and r0, r0, #0xff
bl sub_02028F88
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x24]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x24]
ldr r0, [sp, #0xc]
cmp r0, #0x88
ble _0238A924
ldr r0, [r4, #0x2c]
mov r2, #0x20
add r1, sp, #8
mov r3, r2
and r0, r0, #0xff
bl sub_02028EE8
ldr r0, [r4, #0x2c]
mov r1, #1
and r0, r0, #0xff
bl sub_0202825C
ldr r0, [r4, #0x30]
add r0, r0, #1
str r0, [r4, #0x30]
_0238A924:
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r4, [r0]
ldr r0, [r4, #0x24]
mov r0, r0, asr #0x10
cmp r0, #0x60
blt _0238AA48
ldr r0, [r4, #0x440]
mov r0, r0, asr #0x10
cmp r0, #0x68
blt _0238A960
add r0, r4, #0x3c
add r0, r0, #0x400
bl ov28_0238A184
orr r5, r5, r0
b _0238AA48
_0238A960:
ldr r0, [r4, #0x44c]
cmp r0, #0
beq _0238A980
cmp r0, #1
beq _0238A9A8
cmp r0, #2
beq _0238AA2C
b _0238AA48
_0238A980:
add r0, r4, #0x58
mov r1, #0x10
sub r2, r1, #0x50
add r3, r0, #0x800
mov r0, #1
bl ov28_0238ABD4
ldr r0, [r4, #0x44c]
add r0, r0, #1
str r0, [r4, #0x44c]
b _0238AA48
_0238A9A8:
mvn r0, #3
str r0, [sp]
ldr r0, [r4, #0x440]
add r1, sp, #0
mov r0, r0, asr #0x10
str r0, [sp, #4]
ldr r0, [r4, #0x448]
and r0, r0, #0xff
bl sub_02028F88
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x440]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x440]
ldr r0, [sp, #4]
cmp r0, #0xd0
ble _0238AA48
ldr r0, [r4, #0x448]
mov r2, #0x20
add r1, sp, #0
mov r3, r2
and r0, r0, #0xff
bl sub_02028EE8
ldr r0, [r4, #0x448]
mov r1, #1
and r0, r0, #0xff
bl sub_0202825C
ldr r0, [r4, #0x44c]
add r0, r0, #1
str r0, [r4, #0x44c]
b _0238AA48
_0238AA2C:
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x440]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x440]
_0238AA48:
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r2, [r0]
ldrb r0, [r2, #8]
cmp r0, #0
bne _0238AA78
ldr r0, [r2, #0x20]
cmp r0, #3
blt _0238AA78
mov r1, #1
mov r0, #2
strb r1, [r2, #8]
bl ov11_022E6E8C
_0238AA78:
cmp r5, #0
ldreq r0, _0238AB50 ; =ov28_0238AD80
moveq r1, #6
ldreq r0, [r0]
streq r1, [r0]
b _0238AB44
_0238AA90:
mov r0, #0
mov r1, #1
bl sub_0202825C
mov r0, #1
mov r1, r0
bl sub_0202825C
mov r0, #0
bl sub_02025B80
mov r0, #0
bl ov11_022E6E8C
mov r0, #4
b _0238AB48
_0238AAC0:
mvn r0, #3
bl ov28_0238AB5C
mov r0, #0
bl ov11_022E6E8C
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r0, [r0]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0238AB2C
_0238AAE4: ; jump table
b _0238AAFC ; case 0
b _0238AB04 ; case 1
b _0238AB0C ; case 2
b _0238AB14 ; case 3
b _0238AB1C ; case 4
b _0238AB24 ; case 5
_0238AAFC:
mov r0, #0
b _0238AB30
_0238AB04:
mov r0, #1
b _0238AB30
_0238AB0C:
mov r0, #2
b _0238AB30
_0238AB14:
mov r0, #3
b _0238AB30
_0238AB1C:
mov r0, #4
b _0238AB30
_0238AB24:
mov r0, #5
b _0238AB30
_0238AB2C:
mvn r0, #0
_0238AB30:
bl sub_02025B90
ldr r0, _0238AB50 ; =ov28_0238AD80
mov r1, #0
ldr r0, [r0]
str r1, [r0]
_0238AB44:
mov r0, #1
_0238AB48:
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0238AB50: .word ov28_0238AD80
_0238AB54: .word ov28_0238ADA0
_0238AB58: .word ov28_0238AD0C
arm_func_end ov28_0238A5CC
arm_func_start ov28_0238AB5C
ov28_0238AB5C: ; 0x0238AB5C
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r2, #0x20
mov r4, r0
mov r0, #0
add r1, sp, #0
mov r3, r2
str r0, [sp]
str r0, [sp, #4]
bl sub_02028EE8
mov r2, #0x20
add r1, sp, #0
mov r3, r2
mov r0, #1
bl sub_02028EE8
add r1, sp, #0
mov r0, #0
str r4, [sp]
bl sub_02028F88
add r1, sp, #0
mov r0, #1
bl sub_02028F88
mov r0, #0
mov r1, #1
bl sub_0202825C
mov r0, #1
mov r1, r0
bl sub_0202825C
add sp, sp, #8
ldmia sp!, {r4, pc}
arm_func_end ov28_0238AB5C
arm_func_start ov28_0238ABD4
ov28_0238ABD4: ; 0x0238ABD4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r5, r1
mov r1, r5, asr #2
mov r7, #0
mov r6, r0
add r1, r5, r1, lsr #29
mov r1, r1, asr #3
mov r4, r2, asr #2
add r4, r2, r4, lsr #29
mov lr, r4, asr #3
mov r8, r2, lsr #0x1f
sub r0, r7, #5
rsb r2, r8, r2, lsl #29
and ip, r1, #0xff
strb r0, [sp, #9]
rsb ip, ip, #0x1d
str r7, [sp]
str r7, [sp, #0xc]
adds r8, r8, r2, ror #29
ldr r0, _0238ACF8 ; =ov28_0238AD80
movne r7, #1
strb r1, [sp, #4]
add r1, r7, #2
ldr r2, [r0]
mov r4, r3
strb r6, [sp, #8]
strb lr, [sp, #5]
strb ip, [sp, #6]
strb r1, [sp, #7]
mov r7, #0
mvn r0, #1
b _0238AC6C
_0238AC58:
add r1, r2, r7
ldrsb r1, [r1, #9]
cmp r1, r0
beq _0238AC74
add r7, r7, #1
_0238AC6C:
cmp r7, #0x14
blt _0238AC58
_0238AC74:
mov r0, r6
bl sub_02028270
ldrb r2, [sp, #6]
ldrb r1, [sp, #7]
mla r0, r2, r1, r0
cmp r0, #0x300
blt _0238AC9C
mov r0, r6
mov r1, #1
bl sub_0202825C
_0238AC9C:
add r0, sp, #0
mov r1, #3
bl NewWindow
ldr r1, _0238ACF8 ; =ov28_0238AD80
ldr r2, [r1]
add r2, r2, r7
strb r0, [r2, #9]
ldr r0, [r1]
add r0, r0, r7
ldrsb r0, [r0, #9]
bl sub_0202810C
ldr r0, _0238ACF8 ; =ov28_0238AD80
mov r6, r5, lsr #0x1f
ldr r0, [r0]
rsb r1, r6, r5, lsl #29
add r0, r0, r7
ldrsb r0, [r0, #9]
mov r2, r8
mov r3, r4
add r1, r6, r1, ror #29
bl DrawTextInWindow
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0238ACF8: .word ov28_0238AD80
arm_func_end ov28_0238ABD4
; 0x0238ACFC
.rodata
.global ov28_0238ACFC
ov28_0238ACFC:
.byte 0x0D, 0x00, 0x00, 0x00
.word ov28_0238A490
.word ov28_0238A58C
.word ov28_0238A5CC
.global ov28_0238AD0C
ov28_0238AD0C:
.byte 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00
.global ov28_0238AD24
ov28_0238AD24:
#if defined(EUROPE)
#define OV28_DATA_OFFSET_1 2
#define OV28_DATA_OFFSET_2 0x1F
#define OV28_DATA_OFFSET_3 OV28_DATA_OFFSET_2
#define OV28_DATA_OFFSET_4 OV28_DATA_OFFSET_2
#define OV28_DATA_OFFSET_5 OV28_DATA_OFFSET_2
#define OV28_DATA_OFFSET_6 OV28_DATA_OFFSET_2
#elif defined(JAPAN)
#define OV28_DATA_OFFSET_1 -0x14C8
#define OV28_DATA_OFFSET_2 -0x14EF
#define OV28_DATA_OFFSET_3 -0xC49
#define OV28_DATA_OFFSET_4 -0xD5D
#define OV28_DATA_OFFSET_5 -0xC86
#define OV28_DATA_OFFSET_6 -0xB72
#else
#define OV28_DATA_OFFSET_1 0
#define OV28_DATA_OFFSET_2 0
#define OV28_DATA_OFFSET_3 0
#define OV28_DATA_OFFSET_4 0
#define OV28_DATA_OFFSET_5 0
#define OV28_DATA_OFFSET_6 0
#endif
.word 0x44BF + OV28_DATA_OFFSET_1
.global ov28_0238AD28
ov28_0238AD28:
.word 0x44C0 + OV28_DATA_OFFSET_1
.global ov28_0238AD2C
ov28_0238AD2C:
.word 0x4575 + OV28_DATA_OFFSET_2, 0x4629 + OV28_DATA_OFFSET_3, 0x462A + OV28_DATA_OFFSET_3, 0x4684 + OV28_DATA_OFFSET_3
.word 0x4799 + OV28_DATA_OFFSET_4, 0x479A + OV28_DATA_OFFSET_4, 0x4813 + OV28_DATA_OFFSET_4, 0x473D + OV28_DATA_OFFSET_5
.word 0x473E + OV28_DATA_OFFSET_5, 0x4798 + OV28_DATA_OFFSET_5, 0x4685 + OV28_DATA_OFFSET_6, 0x4686 + OV28_DATA_OFFSET_6
.word 0x46E0 + OV28_DATA_OFFSET_6, 0x46E1 + OV28_DATA_OFFSET_6, 0x46E2 + OV28_DATA_OFFSET_6, 0x473C + OV28_DATA_OFFSET_6
.data
.global ov28_0238AD80
ov28_0238AD80:
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.bss
.global ov28_0238ADA0
ov28_0238ADA0:
.space 0x20

576
asm/overlay_28_0238A5CC.s Normal file
View File

@ -0,0 +1,576 @@
.include "asm/macros.inc"
.include "overlay_28_0238A5CC.inc"
.text
arm_func_start ov28_0238A5CC
ov28_0238A5CC: ; 0x0238A5CC
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x18
ldr r6, _0238AB50 ; =ov28_0238AD80
ldr r1, [r6]
ldr r0, [r1]
cmp r0, #6
addls pc, pc, r0, lsl #2
b _0238AB44
_0238A5EC: ; jump table
b _0238A608 ; case 0
b _0238A6BC ; case 1
b _0238A6C8 ; case 2
b _0238A6A0 ; case 3
b _0238A678 ; case 4
b _0238AAC0 ; case 5
b _0238AA90 ; case 6
_0238A608:
bl ov11_022E6EC8
cmp r0, #0
beq _0238AB44
ldr r0, _0238AB54 ; =ov28_0238ADA0
mov r1, r6
ldr r0, [r0]
cmp r0, #0
bne _0238A648
ldr r2, [r1]
mov r0, #1
add r2, r2, #0x58
add r3, r2, #0x800
mov r1, #0x10
mov r2, #0x68
bl ov28_0238ABD4
b _0238A664
_0238A648:
ldr r2, [r1]
mov r0, #0
add r2, r2, #0x58
add r3, r2, #0x800
mov r1, #0x10
mov r2, #0x60
bl ov28_0238ABD4
_0238A664:
ldr r0, _0238AB50 ; =ov28_0238AD80
mov r1, #4
ldr r0, [r0]
str r1, [r0]
b _0238AB44
_0238A678:
bl ov11_022E6EC8
cmp r0, #0
beq _0238AB44
mov r0, #1
bl ov11_022E6E8C
mov r0, r6
ldr r0, [r0]
mov r1, #3
str r1, [r0]
b _0238AB44
_0238A6A0:
bl ov11_022E6EC8
cmp r0, #0
movne r0, r6
ldrne r0, [r0]
movne r1, #1
strne r1, [r0]
b _0238AB44
_0238A6BC:
mov r0, #2
str r0, [r1]
b _0238AB44
_0238A6C8:
mov r4, #0
mvn r7, #1
_0238A6D0:
ldr r0, [r6]
add r0, r0, r4
ldrsb r8, [r0, #9]
cmp r8, r7
beq _0238A718
mov r0, r8
bl sub_02028354
cmp r0, #2
bne _0238A718
mov r0, r8
bl sub_02028FA0
cmp r0, #0
bne _0238A718
mov r0, r8
bl sub_0202822C
ldr r0, [r6]
add r0, r0, r4
strb r7, [r0, #9]
_0238A718:
add r4, r4, #1
cmp r4, #0x14
blt _0238A6D0
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r2, [r0]
cmp r2, #0
bne _0238A854
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r0, [r0]
add r0, r0, #0x20
bl ov28_0238A184
ldr r1, _0238AB50 ; =ov28_0238AD80
mov r5, r0
ldr r1, [r1]
ldr r0, [r1, #0x24]
mov r0, r0, asr #0x10
cmp r0, #0xc0
blt _0238A774
add r0, r1, #0x3c
add r0, r0, #0x400
bl ov28_0238A184
orr r5, r5, r0
b _0238AA48
_0238A774:
add r4, r1, #0x3c
ldr r0, [r4, #0x410]
cmp r0, #0
beq _0238A790
cmp r0, #1
beq _0238A814
b _0238AA48
_0238A790:
mvn r0, #3
str r0, [sp, #0x10]
ldr r0, [r4, #0x404]
add r1, sp, #0x10
mov r0, r0, asr #0x10
str r0, [sp, #0x14]
ldr r0, [r4, #0x40c]
and r0, r0, #0xff
bl sub_02028F88
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x404]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x404]
ldr r0, [sp, #0x14]
cmp r0, #0x88
ble _0238AA48
ldr r0, [r4, #0x40c]
mov r2, #0x20
add r1, sp, #0x10
mov r3, r2
and r0, r0, #0xff
bl sub_02028EE8
ldr r0, [r4, #0x40c]
mov r1, #1
and r0, r0, #0xff
bl sub_0202825C
ldr r0, [r4, #0x410]
add r0, r0, #1
str r0, [r4, #0x410]
b _0238AA48
_0238A814:
ldr r1, [r4, #0x40c]
add r0, r4, #0x400
and r1, r1, #0xff
bl ov28_0238A140
mvn r1, #3
mov r0, #0
str r1, [sp, #0x10]
str r0, [sp, #0x14]
ldr r0, [r4, #0x40c]
add r1, sp, #0x10
and r0, r0, #0xff
bl sub_02028F88
ldr r0, [r4, #0x410]
add r0, r0, #1
str r0, [r4, #0x410]
b _0238AA48
_0238A854:
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r4, [r0]
ldr r0, [r4, #0x24]
mov r0, r0, asr #0x10
cmp r0, #8
blt _0238A87C
add r0, r4, #0x20
bl ov28_0238A184
mov r5, r0
b _0238A924
_0238A87C:
ldr r0, [r4, #0x30]
cmp r0, #0
beq _0238A8A4
cmp r0, #1
ldreq r0, _0238AB58 ; =ov28_0238AD0C
ldreq r1, [r4, #0x24]
ldreq r0, [r0, r2, lsl #2]
addeq r0, r1, r0
streq r0, [r4, #0x24]
b _0238A924
_0238A8A4:
mvn r0, #3
str r0, [sp, #8]
ldr r0, [r4, #0x24]
add r1, sp, #8
mov r0, r0, asr #0x10
str r0, [sp, #0xc]
ldr r0, [r4, #0x2c]
and r0, r0, #0xff
bl sub_02028F88
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x24]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x24]
ldr r0, [sp, #0xc]
cmp r0, #0x88
ble _0238A924
ldr r0, [r4, #0x2c]
mov r2, #0x20
add r1, sp, #8
mov r3, r2
and r0, r0, #0xff
bl sub_02028EE8
ldr r0, [r4, #0x2c]
mov r1, #1
and r0, r0, #0xff
bl sub_0202825C
ldr r0, [r4, #0x30]
add r0, r0, #1
str r0, [r4, #0x30]
_0238A924:
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r4, [r0]
ldr r0, [r4, #0x24]
mov r0, r0, asr #0x10
cmp r0, #0x60
blt _0238AA48
ldr r0, [r4, #0x440]
mov r0, r0, asr #0x10
cmp r0, #0x68
blt _0238A960
add r0, r4, #0x3c
add r0, r0, #0x400
bl ov28_0238A184
orr r5, r5, r0
b _0238AA48
_0238A960:
ldr r0, [r4, #0x44c]
cmp r0, #0
beq _0238A980
cmp r0, #1
beq _0238A9A8
cmp r0, #2
beq _0238AA2C
b _0238AA48
_0238A980:
add r0, r4, #0x58
mov r1, #0x10
sub r2, r1, #0x50
add r3, r0, #0x800
mov r0, #1
bl ov28_0238ABD4
ldr r0, [r4, #0x44c]
add r0, r0, #1
str r0, [r4, #0x44c]
b _0238AA48
_0238A9A8:
mvn r0, #3
str r0, [sp]
ldr r0, [r4, #0x440]
add r1, sp, #0
mov r0, r0, asr #0x10
str r0, [sp, #4]
ldr r0, [r4, #0x448]
and r0, r0, #0xff
bl sub_02028F88
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x440]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x440]
ldr r0, [sp, #4]
cmp r0, #0xd0
ble _0238AA48
ldr r0, [r4, #0x448]
mov r2, #0x20
add r1, sp, #0
mov r3, r2
and r0, r0, #0xff
bl sub_02028EE8
ldr r0, [r4, #0x448]
mov r1, #1
and r0, r0, #0xff
bl sub_0202825C
ldr r0, [r4, #0x44c]
add r0, r0, #1
str r0, [r4, #0x44c]
b _0238AA48
_0238AA2C:
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r1, _0238AB58 ; =ov28_0238AD0C
ldr r0, [r0]
ldr r2, [r4, #0x440]
ldr r0, [r1, r0, lsl #2]
add r0, r2, r0
str r0, [r4, #0x440]
_0238AA48:
ldr r0, _0238AB50 ; =ov28_0238AD80
ldr r2, [r0]
ldrb r0, [r2, #8]
cmp r0, #0
bne _0238AA78
ldr r0, [r2, #0x20]
cmp r0, #3
blt _0238AA78
mov r1, #1
mov r0, #2
strb r1, [r2, #8]
bl ov11_022E6E8C
_0238AA78:
cmp r5, #0
ldreq r0, _0238AB50 ; =ov28_0238AD80
moveq r1, #6
ldreq r0, [r0]
streq r1, [r0]
b _0238AB44
_0238AA90:
mov r0, #0
mov r1, #1
bl sub_0202825C
mov r0, #1
mov r1, r0
bl sub_0202825C
mov r0, #0
bl sub_02025B80
mov r0, #0
bl ov11_022E6E8C
mov r0, #4
b _0238AB48
_0238AAC0:
mvn r0, #3
bl ov28_0238AB5C
mov r0, #0
bl ov11_022E6E8C
ldr r0, _0238AB54 ; =ov28_0238ADA0
ldr r0, [r0]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _0238AB2C
_0238AAE4: ; jump table
b _0238AAFC ; case 0
b _0238AB04 ; case 1
b _0238AB0C ; case 2
b _0238AB14 ; case 3
b _0238AB1C ; case 4
b _0238AB24 ; case 5
_0238AAFC:
mov r0, #0
b _0238AB30
_0238AB04:
mov r0, #1
b _0238AB30
_0238AB0C:
mov r0, #2
b _0238AB30
_0238AB14:
mov r0, #3
b _0238AB30
_0238AB1C:
mov r0, #4
b _0238AB30
_0238AB24:
mov r0, #5
b _0238AB30
_0238AB2C:
mvn r0, #0
_0238AB30:
bl sub_02025B90
ldr r0, _0238AB50 ; =ov28_0238AD80
mov r1, #0
ldr r0, [r0]
str r1, [r0]
_0238AB44:
mov r0, #1
_0238AB48:
add sp, sp, #0x18
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0238AB50: .word ov28_0238AD80
_0238AB54: .word ov28_0238ADA0
_0238AB58: .word ov28_0238AD0C
arm_func_end ov28_0238A5CC
arm_func_start ov28_0238AB5C
ov28_0238AB5C: ; 0x0238AB5C
stmdb sp!, {r4, lr}
sub sp, sp, #8
mov r2, #0x20
mov r4, r0
mov r0, #0
add r1, sp, #0
mov r3, r2
str r0, [sp]
str r0, [sp, #4]
bl sub_02028EE8
mov r2, #0x20
add r1, sp, #0
mov r3, r2
mov r0, #1
bl sub_02028EE8
add r1, sp, #0
mov r0, #0
str r4, [sp]
bl sub_02028F88
add r1, sp, #0
mov r0, #1
bl sub_02028F88
mov r0, #0
mov r1, #1
bl sub_0202825C
mov r0, #1
mov r1, r0
bl sub_0202825C
add sp, sp, #8
ldmia sp!, {r4, pc}
arm_func_end ov28_0238AB5C
arm_func_start ov28_0238ABD4
ov28_0238ABD4: ; 0x0238ABD4
stmdb sp!, {r4, r5, r6, r7, r8, lr}
sub sp, sp, #0x10
mov r5, r1
mov r1, r5, asr #2
mov r7, #0
mov r6, r0
add r1, r5, r1, lsr #29
mov r1, r1, asr #3
mov r4, r2, asr #2
add r4, r2, r4, lsr #29
mov lr, r4, asr #3
mov r8, r2, lsr #0x1f
sub r0, r7, #5
rsb r2, r8, r2, lsl #29
and ip, r1, #0xff
strb r0, [sp, #9]
rsb ip, ip, #0x1d
str r7, [sp]
str r7, [sp, #0xc]
adds r8, r8, r2, ror #29
ldr r0, _0238ACF8 ; =ov28_0238AD80
movne r7, #1
strb r1, [sp, #4]
add r1, r7, #2
ldr r2, [r0]
mov r4, r3
strb r6, [sp, #8]
strb lr, [sp, #5]
strb ip, [sp, #6]
strb r1, [sp, #7]
mov r7, #0
mvn r0, #1
b _0238AC6C
_0238AC58:
add r1, r2, r7
ldrsb r1, [r1, #9]
cmp r1, r0
beq _0238AC74
add r7, r7, #1
_0238AC6C:
cmp r7, #0x14
blt _0238AC58
_0238AC74:
mov r0, r6
bl sub_02028270
ldrb r2, [sp, #6]
ldrb r1, [sp, #7]
mla r0, r2, r1, r0
cmp r0, #0x300
blt _0238AC9C
mov r0, r6
mov r1, #1
bl sub_0202825C
_0238AC9C:
add r0, sp, #0
mov r1, #3
bl NewWindow
ldr r1, _0238ACF8 ; =ov28_0238AD80
ldr r2, [r1]
add r2, r2, r7
strb r0, [r2, #9]
ldr r0, [r1]
add r0, r0, r7
ldrsb r0, [r0, #9]
bl sub_0202810C
ldr r0, _0238ACF8 ; =ov28_0238AD80
mov r6, r5, lsr #0x1f
ldr r0, [r0]
rsb r1, r6, r5, lsl #29
add r0, r0, r7
ldrsb r0, [r0, #9]
mov r2, r8
mov r3, r4
add r1, r6, r1, ror #29
bl DrawTextInWindow
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_0238ACF8: .word ov28_0238AD80
arm_func_end ov28_0238ABD4
; 0x0238ACFC
.rodata
.global ov28_0238ACFC
ov28_0238ACFC:
.byte 0x0D, 0x00, 0x00, 0x00
.word ov28_0238A490
.word ov28_0238A58C
.word ov28_0238A5CC
.global ov28_0238AD0C
ov28_0238AD0C:
.byte 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00
.byte 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00
.global ov28_0238AD24
ov28_0238AD24:
#if defined(EUROPE)
#define OV28_DATA_OFFSET_1 2
#define OV28_DATA_OFFSET_2 0x1F
#define OV28_DATA_OFFSET_3 OV28_DATA_OFFSET_2
#define OV28_DATA_OFFSET_4 OV28_DATA_OFFSET_2
#define OV28_DATA_OFFSET_5 OV28_DATA_OFFSET_2
#define OV28_DATA_OFFSET_6 OV28_DATA_OFFSET_2
#elif defined(JAPAN)
#define OV28_DATA_OFFSET_1 -0x14C8
#define OV28_DATA_OFFSET_2 -0x14EF
#define OV28_DATA_OFFSET_3 -0xC49
#define OV28_DATA_OFFSET_4 -0xD5D
#define OV28_DATA_OFFSET_5 -0xC86
#define OV28_DATA_OFFSET_6 -0xB72
#else
#define OV28_DATA_OFFSET_1 0
#define OV28_DATA_OFFSET_2 0
#define OV28_DATA_OFFSET_3 0
#define OV28_DATA_OFFSET_4 0
#define OV28_DATA_OFFSET_5 0
#define OV28_DATA_OFFSET_6 0
#endif
.word 0x44BF + OV28_DATA_OFFSET_1
.global ov28_0238AD28
ov28_0238AD28:
.word 0x44C0 + OV28_DATA_OFFSET_1
.global ov28_0238AD2C
ov28_0238AD2C:
.word 0x4575 + OV28_DATA_OFFSET_2, 0x4629 + OV28_DATA_OFFSET_3, 0x462A + OV28_DATA_OFFSET_3, 0x4684 + OV28_DATA_OFFSET_3
.word 0x4799 + OV28_DATA_OFFSET_4, 0x479A + OV28_DATA_OFFSET_4, 0x4813 + OV28_DATA_OFFSET_4, 0x473D + OV28_DATA_OFFSET_5
.word 0x473E + OV28_DATA_OFFSET_5, 0x4798 + OV28_DATA_OFFSET_5, 0x4685 + OV28_DATA_OFFSET_6, 0x4686 + OV28_DATA_OFFSET_6
.word 0x46E0 + OV28_DATA_OFFSET_6, 0x46E1 + OV28_DATA_OFFSET_6, 0x46E2 + OV28_DATA_OFFSET_6, 0x473C + OV28_DATA_OFFSET_6
.data
.global ov28_0238AD80
ov28_0238AD80:
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.bss
.global ov28_0238ADA0
ov28_0238ADA0:
.space 0x20

View File

@ -0,0 +1,6 @@
#ifndef PMDSKY_OVERLAY_28_0238A58C_H
#define PMDSKY_OVERLAY_28_0238A58C_H
void ov28_0238A58C(void);
#endif //PMDSKY_OVERLAY_28_0238A58C_H

View File

@ -301,6 +301,8 @@ Overlay OVY_28
{
After OVY_11
Object asm/overlay_28.o
Object src/overlay_28_0238A58C.o
Object asm/overlay_28_0238A5CC.o
}
Overlay OVY_29
{

View File

@ -1,7 +1,7 @@
#include "overlay_13_EntryOverlay13.h"
extern void* MemAlloc(u32 len, u32 flags);
extern void* MemFree(void *);
extern void MemFree(void* ptr);
void sub_0201F2E4(void);
void sub_020348E4(const u8 *);
extern void ov11_022E6E8C(u32);

View File

@ -5,7 +5,7 @@ extern unkStruct_ov15_0238AE6C* OVERLAY15_UNKNOWN_POINTER__NA_238B180;
extern void ov15_0238AD78(u8);
extern u16 ov15_0238A140(void);
extern void Debug_Print0(const char* fmt);
extern void MemFree(void*);
extern void MemFree(void* ptr);
extern int ov15_0238A234(void);
extern int IsDialogueBoxActive(s8);
extern void HidePortraitBox(int);
@ -23,7 +23,7 @@ void ov15_0238AE6C(void) {
s32 ov15_0238AE88(void) {
ov15_0238A140();
return 1;
return 1;
}
const char ov15_0238B11C[] = "mes not close\n";
@ -33,21 +33,21 @@ const char ov15_0238B150[] = "Input not close\n";
void ov15_0238AE98(void) {
if (OVERLAY15_UNKNOWN_POINTER__NA_238B180 == NULL)
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;
}
@ -60,7 +60,7 @@ int ov15_0238AF54(void) {
OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk0 = 1;
break;
case 1:
if (ov15_0238A234() == 3)
if (ov15_0238A234() == 3)
OVERLAY15_UNKNOWN_POINTER__NA_238B180 -> unk0 = 2;
break;
case 2:
@ -81,7 +81,7 @@ int ov15_0238AF54(void) {
break;
case 3:
ov11_022E6E68();
return 4;
return 4;
}
return 1;
}

21
src/overlay_28_0238A58C.c Normal file
View File

@ -0,0 +1,21 @@
#include "overlay_28_0238A58C.h"
extern void* ov28_0238AD80;
extern void ov28_0238AB5C(s32);
extern void sub_02025C14();
extern void sub_02027170();
extern void sub_02027228();
extern void MemFree(void* ptr);
void ov28_0238A58C(void)
{
ov28_0238AB5C(0);
sub_02025C14();
sub_02027170();
sub_02027228();
if (ov28_0238AD80 != NULL) {
MemFree(ov28_0238AD80);
ov28_0238AD80 = NULL;
}
}

View File

@ -50,7 +50,7 @@ extern struct struct_1* sub_0202ABB0(s8);
extern void CloseTextBox(s8);
extern void CloseParentMenu(s8);
extern void MemFree(void*);
extern void MemFree(void* ptr);
extern void ov29_022EA428(u32, u32);
extern void AdvanceFrame(u8);

View File

@ -13,7 +13,7 @@ extern s32 sub_020282F4(s8);
extern void CloseInventoryMenu(s8);
extern void ov29_0234E988(u8*);
extern void CloseTextBox2();
extern void MemFree(void*);
extern void MemFree(void* ptr);
extern void DrawTextInWindow(struct window*, u32, u32, u8*);
u8 ov31_0238372C(struct position* x)

View File

@ -10,8 +10,7 @@ MAIN_LSF_PATH = 'main.lsf'
# Symbols with duplicate addresses that should be ignored.
XMAP_SYMBOL_BLACKLIST = set([
'AI_POTENTIAL_ATTACK_TARGET_WEIGHTS_2',
'zeros$498'
'AI_POTENTIAL_ATTACK_TARGET_WEIGHTS_2'
])
"""
@ -85,7 +84,7 @@ def read_xmap_symbols_for_language(language: str) -> Dict[str, Dict[int, SymbolD
symbol_split = line[28:-1].split('\t')
symbol_name = symbol_split[0]
if symbol_name in XMAP_SYMBOL_BLACKLIST:
if symbol_name in XMAP_SYMBOL_BLACKLIST or '$' in symbol_name:
continue
symbol_address = int(line[2:10], 16)