diff --git a/asm/include/overlay_15.inc b/asm/include/overlay_15.inc index 14cc17a7..e7389b64 100644 --- a/asm/include/overlay_15.inc +++ b/asm/include/overlay_15.inc @@ -1,9 +1,11 @@ #pragma once .public AddMoneyCarried .public AddMoneyStored +.public BANK_MAIN_MENU_ITEMS +.public BANK_WINDOW_PARAMS_2 +.public BANK_WINDOW_PARAMS_3 +.public BANK_WINDOW_PARAMS_4 .public CloseAdvancedTextBox -.public CloseDialogueBox -.public ClosePortraitBox .public CloseSimpleMenu .public CloseTextBox .public CreateAdvancedTextBox @@ -12,19 +14,15 @@ .public CreateSimpleMenuFromStringIds .public CreateTextBox .public Debug_Print0 -.public DrawTextInWindow .public GetMoneyCarried .public GetMoneyStored .public GetSimpleMenuResult -.public HidePortraitBox .public InitPortraitParamsWithMonsterId .public InitPreprocessorArgs .public IsDialogueBoxActive .public MemAlloc -.public MemFree -.public ov11_022E6E68 +.public OVERLAY15_UNKNOWN_POINTER__NA_238B180 .public PlaySeVolumeWrapper -.public PreprocessStringFromId .public SetAdvancedTextBoxField0x1C2 .public SetAdvancedTextBoxField0x1C4 .public SetAdvancedTextBoxState5 @@ -33,14 +31,18 @@ .public ShowDialogueBox .public ShowPortraitInPortraitBox .public ShowStringIdInDialogueBox +.public ov15_0238AD78 +.public ov15_0238ADC4 +.public ov15_0238AE6C +.public ov15_0238B0CC +.public ov15_0238B0D4 +.public ov15_0238B0E0 +.public ov15_0238B0E8 +.public ov15_0238B0F4 +.public ov15_0238B10C +.public ov15_0238B114 .public sub_02017C80 -.public sub_02026268 -.public sub_02027B1C -.public sub_0202836C .public sub_020288DC -.public sub_0202F2C4 .public sub_0202F954 .public sub_020395CC .public sub_020396E4 -.public sub_02039B0C -.public UpdateWindow diff --git a/asm/include/overlay_15_0238ADC4.inc b/asm/include/overlay_15_0238ADC4.inc new file mode 100644 index 00000000..97dbb2e8 --- /dev/null +++ b/asm/include/overlay_15_0238ADC4.inc @@ -0,0 +1,24 @@ +#pragma once +.public CloseDialogueBox +.public ClosePortraitBox +.public Debug_Print0 +.public DrawTextInWindow +.public GetMoneyCarried +.public GetMoneyStored +.public HidePortraitBox +.public IsDialogueBoxActive +.public MemFree +.public OVERLAY15_UNKNOWN_POINTER__NA_238B180 +.public PreprocessStringFromId +.public UpdateWindow +.public ov11_022E6E68 +.public ov15_0238A140 +.public ov15_0238A234 +.public ov15_0238AD78 +.public ov15_0238B11C +.public ov15_0238B12C +.public ov15_0238B13C +.public ov15_0238B150 +.public sub_02027B1C +.public sub_0202836C +.public sub_0202F2C4 diff --git a/asm/overlay_15.s b/asm/overlay_15.s index ecd1c3cd..59ac19b2 100644 --- a/asm/overlay_15.s +++ b/asm/overlay_15.s @@ -990,327 +990,3 @@ _0238C2DC: .word 0x00003246 _0238AD70: .word 0x00000382 + OV15_0238A4E8_OFFSET _0238AD74: .word ov15_0238B114 arm_func_end ov15_0238A4E8 - - arm_func_start ov15_0238AD78 -ov15_0238AD78: ; 0x0238AD78 - stmdb sp!, {r3, lr} - cmp r0, #0 -#ifdef JAPAN - ldrne r0, _0238C32C ; =0x00003249 -#else - movne r0, #0x384 -#endif - ldr r1, _0238ADBC ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - ldreq r0, _0238ADC0 ; =0x00000385 - ldr r1, [r1] - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - ldrsb r0, [r1, #0x68] - mov r1, #2 - mov r2, #0 - bl sub_02026268 - ldr r0, _0238ADBC ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - ldr r0, [r0] - add r0, r0, #0x54 - bl sub_02039B0C - ldmia sp!, {r3, pc} - .align 2, 0 -#ifdef JAPAN -_0238C32C: .word 0x00003249 -_0238ADBC: .word OVERLAY15_UNKNOWN_POINTER__NA_238B180 -_0238ADC0: .word 0x0000324A -#else -_0238ADBC: .word OVERLAY15_UNKNOWN_POINTER__NA_238B180 -_0238ADC0: .word 0x00000385 -#endif - arm_func_end ov15_0238AD78 - - arm_func_start ov15_0238ADC4 -ov15_0238ADC4: ; 0x0238ADC4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x54 - sub sp, sp, #0x400 - mov r4, r0 - bl sub_02027B1C - bl GetMoneyCarried - add ip, sp, #0x400 - str r0, [sp, #0x428] - add ip, ip, #4 - ldr r2, _0238AE64 ; =0x00000373 - ldr r3, _0238AE68 ; =0x0000C402 - add r0, sp, #4 - mov r1, #0x100 - str ip, [sp] - bl PreprocessStringFromId - add r3, sp, #4 - mov r0, r4 - mov r1, #8 - mov r2, #6 - bl DrawTextInWindow - bl GetMoneyStored - add r1, sp, #0x400 - str r0, [sp, #0x428] - add r1, r1, #4 - str r1, [sp] -#ifdef JAPAN - ldr r2, _0238C3E0 ; =0x00003239 - ldr r3, _0238AE68 ; =0x0000C402 - add r0, sp, #4 - mov r1, #0x100 -#else - ldr r3, _0238AE68 ; =0x0000C402 - add r0, sp, #4 - mov r1, #0x100 - mov r2, #0x374 -#endif - bl PreprocessStringFromId - mov r0, r4 - mov r1, #0x74 - mov r2, #6 - add r3, sp, #4 - bl DrawTextInWindow - mov r0, r4 - bl UpdateWindow - add sp, sp, #0x54 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -#ifdef JAPAN -_0238AE64: .word 0x00003238 -_0238AE68: .word 0x0000C402 -_0238C3E0: .word 0x00003239 -#else -_0238AE64: .word 0x00000373 -_0238AE68: .word 0x0000C402 -#endif - arm_func_end ov15_0238ADC4 - - arm_func_start ov15_0238AE6C -ov15_0238AE6C: ; 0x0238AE6C - ldr r0, _0238AE80 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - ldr ip, _0238AE84 ; =ov15_0238AD78 - ldr r0, [r0] - ldrb r0, [r0, #0xd8] - bx ip - .align 2, 0 -_0238AE80: .word OVERLAY15_UNKNOWN_POINTER__NA_238B180 -_0238AE84: .word ov15_0238AD78 - arm_func_end ov15_0238AE6C - - arm_func_start ov15_0238AE88 -ov15_0238AE88: ; 0x0238AE88 - stmdb sp!, {r3, lr} - bl ov15_0238A140 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov15_0238AE88 - - arm_func_start ov15_0238AE98 -ov15_0238AE98: ; 0x0238AE98 - stmdb sp!, {r3, lr} - ldr r0, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r1, [r0, #0x80] - mvn r0, #1 - cmp r1, r0 - beq _0238AEC4 - ldr r0, _0238AF44 ; =ov15_0238B11C - bl Debug_Print0 -_0238AEC4: - ldr r1, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #0x82] - cmp r1, r0 - beq _0238AEE4 - ldr r0, _0238AF48 ; =ov15_0238B12C - bl Debug_Print0 -_0238AEE4: - ldr r1, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #0x83] - cmp r1, r0 - beq _0238AF04 - ldr r0, _0238AF4C ; =ov15_0238B13C - bl Debug_Print0 -_0238AF04: - ldr r1, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #0x84] - cmp r1, r0 - beq _0238AF24 - ldr r0, _0238AF50 ; =ov15_0238B150 - bl Debug_Print0 -_0238AF24: - ldr r0, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - ldr r0, [r0] - bl MemFree - ldr r0, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238AF40: .word OVERLAY15_UNKNOWN_POINTER__NA_238B180 -_0238AF44: .word ov15_0238B11C -_0238AF48: .word ov15_0238B12C -_0238AF4C: .word ov15_0238B13C -_0238AF50: .word ov15_0238B150 - arm_func_end ov15_0238AE98 - - 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 -BANK_MAIN_MENU_ITEMS: -#ifdef JAPAN -#define OV15_DATA_OFFSET 0x2EC5 -#else -#define OV15_DATA_OFFSET 0 -#endif - .word 0x36F + OV15_DATA_OFFSET - .byte 0x02, 0x00, 0x00, 0x00 - .word 0x370 + OV15_DATA_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x371 + OV15_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x372 + OV15_DATA_OFFSET - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x1E, 0x05 - .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global BANK_WINDOW_PARAMS_2 -BANK_WINDOW_PARAMS_2: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x1C, 0x03 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global BANK_WINDOW_PARAMS_3 -BANK_WINDOW_PARAMS_3: - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x0B, 0x07 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global BANK_WINDOW_PARAMS_4 -BANK_WINDOW_PARAMS_4: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x05 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#ifndef EUROPE - .global ov15_0238B0CC -ov15_0238B0CC: - .byte 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x0A, 0x00 -#endif - .global ov15_0238B0D4 -ov15_0238B0D4: - .byte 0x52, 0x2D, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov15_0238B0E0 -ov15_0238B0E0: - .byte 0x4D, 0x2D, 0x4F, 0x70 - .byte 0x65, 0x6E, 0x0A, 0x00 - .global ov15_0238B0E8 -ov15_0238B0E8: - .byte 0x53, 0x2D, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov15_0238B0F4 -ov15_0238B0F4: - .byte 0x4D, 0x65, 0x6E, 0x75, 0x5F, 0x42, 0x61, 0x6E, 0x6B, 0x5F, 0x4D, 0x6F, 0x64, 0x65, 0x5F, 0x43 - .byte 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x0A, 0x00, 0x00 - .global ov15_0238B10C -ov15_0238B10C: - .byte 0x50, 0x2D, 0x4F, 0x70, 0x65, 0x6E, 0x0A, 0x00 - .global ov15_0238B114 -ov15_0238B114: - .byte 0x47, 0x2D, 0x4F, 0x70, 0x65, 0x6E, 0x0A, 0x00 - .global ov15_0238B11C -ov15_0238B11C: - .byte 0x6D, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20 - .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00 - .global ov15_0238B12C -ov15_0238B12C: - .byte 0x73, 0x75, 0x62, 0x20, 0x6E, 0x6F, 0x74, 0x20 - .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00 - .global ov15_0238B13C -ov15_0238B13C: - .byte 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x6E - .byte 0x6F, 0x74, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00 - .global ov15_0238B150 -ov15_0238B150: - .byte 0x49, 0x6E, 0x70, 0x75 - .byte 0x74, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00 - - .data - .global OVERLAY15_UNKNOWN_POINTER__NA_238B180 -OVERLAY15_UNKNOWN_POINTER__NA_238B180: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_15_0238ADC4.s b/asm/overlay_15_0238ADC4.s new file mode 100644 index 00000000..fa2e6d9b --- /dev/null +++ b/asm/overlay_15_0238ADC4.s @@ -0,0 +1,294 @@ + .include "asm/macros.inc" + .include "overlay_15_0238ADC4.inc" + + .text + + arm_func_start ov15_0238ADC4 +ov15_0238ADC4: ; 0x0238ADC4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x54 + sub sp, sp, #0x400 + mov r4, r0 + bl sub_02027B1C + bl GetMoneyCarried + add ip, sp, #0x400 + str r0, [sp, #0x428] + add ip, ip, #4 + ldr r2, _0238AE64 ; =0x00000373 + ldr r3, _0238AE68 ; =0x0000C402 + add r0, sp, #4 + mov r1, #0x100 + str ip, [sp] + bl PreprocessStringFromId + add r3, sp, #4 + mov r0, r4 + mov r1, #8 + mov r2, #6 + bl DrawTextInWindow + bl GetMoneyStored + add r1, sp, #0x400 + str r0, [sp, #0x428] + add r1, r1, #4 + str r1, [sp] +#ifdef JAPAN + ldr r2, _0238C3E0 ; =0x00003239 + ldr r3, _0238AE68 ; =0x0000C402 + add r0, sp, #4 + mov r1, #0x100 +#else + ldr r3, _0238AE68 ; =0x0000C402 + add r0, sp, #4 + mov r1, #0x100 + mov r2, #0x374 +#endif + bl PreprocessStringFromId + mov r0, r4 + mov r1, #0x74 + mov r2, #6 + add r3, sp, #4 + bl DrawTextInWindow + mov r0, r4 + bl UpdateWindow + add sp, sp, #0x54 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +#ifdef JAPAN +_0238AE64: .word 0x00003238 +_0238AE68: .word 0x0000C402 +_0238C3E0: .word 0x00003239 +#else +_0238AE64: .word 0x00000373 +_0238AE68: .word 0x0000C402 +#endif + arm_func_end ov15_0238ADC4 + + arm_func_start ov15_0238AE6C +ov15_0238AE6C: ; 0x0238AE6C + ldr r0, _0238AE80 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 + ldr ip, _0238AE84 ; =ov15_0238AD78 + ldr r0, [r0] + ldrb r0, [r0, #0xd8] + bx ip + .align 2, 0 +_0238AE80: .word OVERLAY15_UNKNOWN_POINTER__NA_238B180 +_0238AE84: .word ov15_0238AD78 + arm_func_end ov15_0238AE6C + + arm_func_start ov15_0238AE88 +ov15_0238AE88: ; 0x0238AE88 + stmdb sp!, {r3, lr} + bl ov15_0238A140 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov15_0238AE88 + + arm_func_start ov15_0238AE98 +ov15_0238AE98: ; 0x0238AE98 + stmdb sp!, {r3, lr} + ldr r0, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r1, [r0, #0x80] + mvn r0, #1 + cmp r1, r0 + beq _0238AEC4 + ldr r0, _0238AF44 ; =ov15_0238B11C + bl Debug_Print0 +_0238AEC4: + ldr r1, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #0x82] + cmp r1, r0 + beq _0238AEE4 + ldr r0, _0238AF48 ; =ov15_0238B12C + bl Debug_Print0 +_0238AEE4: + ldr r1, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #0x83] + cmp r1, r0 + beq _0238AF04 + ldr r0, _0238AF4C ; =ov15_0238B13C + bl Debug_Print0 +_0238AF04: + ldr r1, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #0x84] + cmp r1, r0 + beq _0238AF24 + ldr r0, _0238AF50 ; =ov15_0238B150 + bl Debug_Print0 +_0238AF24: + ldr r0, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 + ldr r0, [r0] + bl MemFree + ldr r0, _0238AF40 ; =OVERLAY15_UNKNOWN_POINTER__NA_238B180 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238AF40: .word OVERLAY15_UNKNOWN_POINTER__NA_238B180 +_0238AF44: .word ov15_0238B11C +_0238AF48: .word ov15_0238B12C +_0238AF4C: .word ov15_0238B13C +_0238AF50: .word ov15_0238B150 + arm_func_end ov15_0238AE98 + + 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 +BANK_MAIN_MENU_ITEMS: +#ifdef JAPAN +#define OV15_DATA_OFFSET 0x2EC5 +#else +#define OV15_DATA_OFFSET 0 +#endif + .word 0x36F + OV15_DATA_OFFSET + .byte 0x02, 0x00, 0x00, 0x00 + .word 0x370 + OV15_DATA_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x371 + OV15_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x372 + OV15_DATA_OFFSET + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x1E, 0x05 + .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global BANK_WINDOW_PARAMS_2 +BANK_WINDOW_PARAMS_2: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x1C, 0x03 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global BANK_WINDOW_PARAMS_3 +BANK_WINDOW_PARAMS_3: + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x08, 0x0B, 0x07 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global BANK_WINDOW_PARAMS_4 +BANK_WINDOW_PARAMS_4: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x05 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#ifndef EUROPE + .global ov15_0238B0CC +ov15_0238B0CC: + .byte 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x0A, 0x00 +#endif + .global ov15_0238B0D4 +ov15_0238B0D4: + .byte 0x52, 0x2D, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov15_0238B0E0 +ov15_0238B0E0: + .byte 0x4D, 0x2D, 0x4F, 0x70 + .byte 0x65, 0x6E, 0x0A, 0x00 + .global ov15_0238B0E8 +ov15_0238B0E8: + .byte 0x53, 0x2D, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov15_0238B0F4 +ov15_0238B0F4: + .byte 0x4D, 0x65, 0x6E, 0x75, 0x5F, 0x42, 0x61, 0x6E, 0x6B, 0x5F, 0x4D, 0x6F, 0x64, 0x65, 0x5F, 0x43 + .byte 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x0A, 0x00, 0x00 + .global ov15_0238B10C +ov15_0238B10C: + .byte 0x50, 0x2D, 0x4F, 0x70, 0x65, 0x6E, 0x0A, 0x00 + .global ov15_0238B114 +ov15_0238B114: + .byte 0x47, 0x2D, 0x4F, 0x70, 0x65, 0x6E, 0x0A, 0x00 + .global ov15_0238B11C +ov15_0238B11C: + .byte 0x6D, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20 + .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00 + .global ov15_0238B12C +ov15_0238B12C: + .byte 0x73, 0x75, 0x62, 0x20, 0x6E, 0x6F, 0x74, 0x20 + .byte 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00 + .global ov15_0238B13C +ov15_0238B13C: + .byte 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x6E + .byte 0x6F, 0x74, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00 + .global ov15_0238B150 +ov15_0238B150: + .byte 0x49, 0x6E, 0x70, 0x75 + .byte 0x74, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0A, 0x00, 0x00, 0x00, 0x00 + + .data + .global OVERLAY15_UNKNOWN_POINTER__NA_238B180 +OVERLAY15_UNKNOWN_POINTER__NA_238B180: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/include/overlay_15_0238AD78.h b/include/overlay_15_0238AD78.h new file mode 100644 index 00000000..38200da1 --- /dev/null +++ b/include/overlay_15_0238AD78.h @@ -0,0 +1,13 @@ +#ifndef PMDSKY_OVERLAY_15_0238AD78_H +#define PMDSKY_OVERLAY_15_0238AD78_H + +typedef struct { + u8 fill0[0x54]; + u32 unk54; + u8 fill58[0x68 - 0x58]; + s8 unk68; +} unkStruct_ov15_0238AD78; + +void ov15_0238AD78(u32 r0); + +#endif //PMDSKY_OVERLAY_15_0238AD78_H diff --git a/main.lsf b/main.lsf index 0aa962bf..f8649097 100644 --- a/main.lsf +++ b/main.lsf @@ -127,6 +127,8 @@ Overlay OVY_15 { After OVY_11 Object asm/overlay_15.o + Object src/overlay_15_0238AD78.o + Object asm/overlay_15_0238ADC4.o } Overlay OVY_16 { diff --git a/src/overlay_15_0238AD78.c b/src/overlay_15_0238AD78.c new file mode 100644 index 00000000..f5f49e7d --- /dev/null +++ b/src/overlay_15_0238AD78.c @@ -0,0 +1,18 @@ +#include "overlay_15_0238AD78.h" + +extern unkStruct_ov15_0238AD78* OVERLAY15_UNKNOWN_POINTER__NA_238B180; + +extern void sub_02026268(u32, u32, u32, u16); +extern void sub_02039B0C(u32*); + +void ov15_0238AD78(u32 r0) { + u32 uVar1; + if (r0 != 0) + uVar1 = 900; + else + uVar1 = 901; + + sub_02026268(OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk68, 2, 0, uVar1); + sub_02039B0C(&OVERLAY15_UNKNOWN_POINTER__NA_238B180->unk54); + return; +} diff --git a/tools/extract_function/extract_function.py b/tools/extract_function/extract_function.py index 8a82ebbe..46e72130 100644 --- a/tools/extract_function/extract_function.py +++ b/tools/extract_function/extract_function.py @@ -45,6 +45,8 @@ if function_location.startswith('main'): file_prefix = 'main_' else: file_prefix = function_location[:len('overlay_00_')] + if file_prefix[-1] != '_': + file_prefix += '_' function_start_line = None function_end_line = None