diff --git a/asm/include/overlay_24.inc b/asm/include/overlay_24.inc index 891b141b..32234fac 100644 --- a/asm/include/overlay_24.inc +++ b/asm/include/overlay_24.inc @@ -64,3 +64,5 @@ .public GetKeyboardStatus .public GetKeyboardStringResult .public sub_02010794 +.public FreePortraitBox +.public ov00_022E6E68 \ No newline at end of file diff --git a/asm/overlay_24.s b/asm/overlay_24.s index 23ce7266..c93b05d6 100644 --- a/asm/overlay_24.s +++ b/asm/overlay_24.s @@ -2333,25 +2333,87 @@ ov24_0238C340: ; 0x0238C340 .align 2, 0 _0238C368: .word 0x0238C600 arm_func_end ov24_0238C340 -_0238C36C: - .byte 0x08, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x01, 0x9F, 0xE5, 0x00, 0x20, 0x90, 0xE5, 0xF4, 0x11, 0x92, 0xE5, 0x03, 0x00, 0x51, 0xE3 - .byte 0x01, 0xF1, 0x8F, 0x90, 0x39, 0x00, 0x00, 0xEA, 0x02, 0x00, 0x00, 0xEA, 0x04, 0x00, 0x00, 0xEA - .byte 0x1C, 0x00, 0x00, 0xEA, 0x32, 0x00, 0x00, 0xEA, 0x01, 0x00, 0xA0, 0xE3, 0xF4, 0x01, 0x82, 0xE5 - .byte 0x32, 0x00, 0x00, 0xEA, 0x65, 0xF7, 0xFF, 0xEB, 0x03, 0x00, 0x50, 0xE3, 0x2F, 0x00, 0x00, 0x1A - .byte 0xC0, 0x00, 0x9F, 0xE5, 0x02, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x04, 0x10, 0x43, 0xE2 - .byte 0xF4, 0x31, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xDC, 0x08, 0xD0, 0xE1 - .byte 0x01, 0x00, 0x50, 0xE1, 0x05, 0x00, 0x00, 0x0A, 0xB9, 0x8B, 0xF2, 0xEB, 0x94, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xDC, 0x08, 0xD0, 0xE1, 0xDE, 0x6F, 0xF2, 0xEB - .byte 0x80, 0x00, 0x9F, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xDD, 0x08, 0xD0, 0xE1 - .byte 0xB5, 0x8C, 0xF2, 0xEB, 0x19, 0x00, 0x00, 0xEA, 0x03, 0x10, 0xA0, 0xE3, 0xF4, 0x11, 0x82, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x05, 0x10, 0x41, 0xE2, 0x02, 0x0C, 0x80, 0xE2, 0xDC, 0x08, 0xD0, 0xE1 - .byte 0x01, 0x00, 0x50, 0xE1, 0x04, 0x00, 0x00, 0x0A, 0x46, 0x8B, 0xF2, 0xEB, 0x44, 0x00, 0x9F, 0xE5 - .byte 0x01, 0x10, 0xE0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x8C, 0x12, 0xC0, 0xE5, 0x34, 0x00, 0x9F, 0xE5 - .byte 0x00, 0x00, 0x90, 0xE5, 0x02, 0x0C, 0x80, 0xE2, 0xDD, 0x08, 0xD0, 0xE1, 0x7F, 0x8C, 0xF2, 0xEB - .byte 0x20, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xE0, 0xE3, 0x00, 0x00, 0x90, 0xE5, 0x8D, 0x12, 0xC0, 0xE5 - .byte 0x02, 0x00, 0x00, 0xEA, 0x7F, 0x6A, 0xFD, 0xEB, 0x04, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8 - .byte 0x01, 0x00, 0xA0, 0xE3, 0x08, 0x80, 0xBD, 0xE8, 0x00, 0xC6, 0x38, 0x02 + + arm_func_start ov24_0238C36C +ov24_0238C36C: ; 0x0238C36C + stmdb sp!, {r3, lr} + ldr r0, _0238C478 ; =0x0238C600 + ldr r2, [r0] + ldr r1, [r2, #0x1f4] + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _0238C470 +_0238C388: ; jump table + b _0238C398 ; case 0 + b _0238C3A4 ; case 1 + b _0238C408 ; case 2 + b _0238C464 ; case 3 +_0238C398: + mov r0, #1 + str r0, [r2, #0x1f4] + b _0238C470 +_0238C3A4: + bl ov24_0238A140 + cmp r0, #3 + bne _0238C470 + ldr r0, _0238C478 ; =0x0238C600 + mov r3, #2 + ldr r2, [r0] + sub r1, r3, #4 + str r3, [r2, #0x1f4] + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x8c] + cmp r0, r1 + beq _0238C3F0 + bl sub_0202F2C4 + ldr r0, _0238C478 ; =0x0238C600 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x8c] + bl sub_0202836C +_0238C3F0: + ldr r0, _0238C478 ; =0x0238C600 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x8d] + bl HidePortraitBox + b _0238C470 +_0238C408: + mov r1, #3 + str r1, [r2, #0x1f4] + ldr r0, [r0] + sub r1, r1, #5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x8c] + cmp r0, r1 + beq _0238C43C + bl FreeDBox + ldr r0, _0238C478 ; =0x0238C600 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x28c] +_0238C43C: + ldr r0, _0238C478 ; =0x0238C600 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x8d] + bl FreePortraitBox + ldr r0, _0238C478 ; =0x0238C600 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x28d] + b _0238C470 +_0238C464: + bl ov00_022E6E68 + mov r0, #4 + ldmia sp!, {r3, pc} +_0238C470: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238C478: .word 0x0238C600 + arm_func_end ov24_0238C36C arm_func_start ov24_0238C47C ov24_0238C47C: ; 0x0238C47C