mirror of
https://github.com/pret/pmd-sky.git
synced 2026-08-27 05:07:12 -05:00
Decomped sub_0200B330
Decomped by @JesusArcasCarrera
This commit is contained in:
@@ -1,49 +1,20 @@
|
||||
#pragma once
|
||||
.public ArrayFill32Fast
|
||||
.public CART_REMOVED_IMG_DATA
|
||||
.public DC_FlushRange
|
||||
.public DecompressAtFromMemoryPointer
|
||||
.public GXS_BeginLoadBGExtPltt
|
||||
.public GXS_BeginLoadOBJExtPltt
|
||||
.public GXS_EndLoadBGExtPltt
|
||||
.public GXS_EndLoadOBJExtPltt
|
||||
.public GXS_SetGraphicsMode
|
||||
.public GX_BeginLoadBGExtPltt
|
||||
.public GX_BeginLoadOBJExtPltt
|
||||
.public GX_DisableBankForBG
|
||||
.public GX_DisableBankForBGExtPltt
|
||||
.public GX_DisableBankForOBJ
|
||||
.public GX_DisableBankForOBJExtPltt
|
||||
.public GX_DisableBankForSubBG
|
||||
.public GX_DisableBankForSubBGExtPltt
|
||||
.public GX_DisableBankForSubOBJ
|
||||
.public GX_DisableBankForTex
|
||||
.public GX_DisableBankForTexPltt
|
||||
.public GX_DispOff
|
||||
.public GX_DispOn
|
||||
.public GX_EndLoadBGExtPltt
|
||||
.public GX_EndLoadOBJExtPltt
|
||||
.public GX_SetBankForLCDC
|
||||
.public GX_SetGraphicsMode
|
||||
.public GXx_SetMasterBrightness_
|
||||
.public GetLanguage
|
||||
.public LoadFileFromRom
|
||||
.public MI_StopDma
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public Memcpy32
|
||||
.public MemcpySimple
|
||||
.public Rgb8ToRgb5
|
||||
.public UnloadFile
|
||||
.public _0200A314
|
||||
.public _0200A344
|
||||
.public _02092AD8
|
||||
.public _02094AE8
|
||||
.public _02094AF0
|
||||
.public _020AFF38_EU
|
||||
.public _020AFF3C_EU
|
||||
.public _s32_div_f
|
||||
.public sub_02004FF8
|
||||
.public sub_02005D30
|
||||
.public sub_02005E10
|
||||
.public sub_02019304
|
||||
.public sub_0200B3D4
|
||||
|
||||
39
asm/include/main_0200B33C.inc
Normal file
39
asm/include/main_0200B33C.inc
Normal file
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
.public ArrayFill32Fast
|
||||
.public CART_REMOVED_IMG_DATA
|
||||
.public DC_FlushRange
|
||||
.public DecompressAtFromMemoryPointer
|
||||
.public GXS_SetGraphicsMode
|
||||
.public GX_DisableBankForBG
|
||||
.public GX_DisableBankForBGExtPltt
|
||||
.public GX_DisableBankForOBJ
|
||||
.public GX_DisableBankForOBJExtPltt
|
||||
.public GX_DisableBankForSubBG
|
||||
.public GX_DisableBankForSubBGExtPltt
|
||||
.public GX_DisableBankForSubOBJ
|
||||
.public GX_DisableBankForTex
|
||||
.public GX_DisableBankForTexPltt
|
||||
.public GX_DispOff
|
||||
.public GX_DispOn
|
||||
.public GX_SetBankForLCDC
|
||||
.public GX_SetGraphicsMode
|
||||
.public GXx_SetMasterBrightness_
|
||||
.public GetLanguage
|
||||
.public LoadFileFromRom
|
||||
.public MI_StopDma
|
||||
.public MemAlloc
|
||||
.public Memcpy32
|
||||
.public MemcpySimple
|
||||
.public UnloadFile
|
||||
.public _0200A314
|
||||
.public _0200A344
|
||||
.public _02094AE8
|
||||
.public _02094AF0
|
||||
.public _020AFF38_EU
|
||||
.public _020AFF3C_EU
|
||||
.public _s32_div_f
|
||||
.public sub_02005D30
|
||||
.public sub_02005E10
|
||||
.public sub_0200A2CC
|
||||
.public sub_0200A2F4
|
||||
.public sub_02019304
|
||||
@@ -177,7 +177,6 @@ _0200A2F8:
|
||||
movne r0, r2
|
||||
bne _0200A2F8
|
||||
bx lr
|
||||
arm_func_end sub_0200A2F4
|
||||
_0200A314:
|
||||
ldr r2, [r0, #0x24]
|
||||
cmp r2, #0
|
||||
@@ -207,6 +206,7 @@ _0200A344:
|
||||
str r0, [r1, #0x20]
|
||||
str r0, [r1, #0x24]
|
||||
bx lr
|
||||
arm_func_end sub_0200A2F4
|
||||
|
||||
arm_func_start sub_0200A37C
|
||||
sub_0200A37C: ; 0x0200A37C
|
||||
@@ -1413,781 +1413,3 @@ sub_0200B314: ; 0x0200B314
|
||||
str r0, [r4, #0x18]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end sub_0200B314
|
||||
|
||||
arm_func_start sub_0200B330
|
||||
sub_0200B330: ; 0x0200B330
|
||||
mov r1, #1
|
||||
strb r1, [r0, #1]
|
||||
bx lr
|
||||
arm_func_end sub_0200B330
|
||||
|
||||
arm_func_start sub_0200B33C
|
||||
sub_0200B33C: ; 0x0200B33C
|
||||
bx lr
|
||||
arm_func_end sub_0200B33C
|
||||
|
||||
arm_func_start sub_0200B340
|
||||
sub_0200B340: ; 0x0200B340
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r4, r0
|
||||
ldr r0, _0200B3BC ; =0x000001FF
|
||||
ldmib r4, {r1, r2}
|
||||
and r1, r1, r0
|
||||
mov r2, r2, lsl #0x17
|
||||
ldr r0, [r4, #0xc]
|
||||
orr r1, r1, r2, lsr #7
|
||||
str r1, [r0]
|
||||
ldrb r0, [r4, #1]
|
||||
cmp r0, #0
|
||||
beq _0200B3B4
|
||||
ldr r5, [r4, #0x18]
|
||||
ldr r1, [r4, #0x14]
|
||||
mov r0, r5
|
||||
ldr r6, [r4, #0x10]
|
||||
bl DC_FlushRange
|
||||
ldr ip, [r4, #0x14]
|
||||
mov r2, r6
|
||||
mov r3, r5
|
||||
mov r0, #3
|
||||
mov r1, #1
|
||||
str ip, [sp]
|
||||
bl sub_02005E10
|
||||
mov r0, #3
|
||||
bl sub_02005D30
|
||||
mov r0, #0
|
||||
strb r0, [r4, #1]
|
||||
_0200B3B4:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0200B3BC: .word 0x000001FF
|
||||
arm_func_end sub_0200B340
|
||||
|
||||
arm_func_start sub_0200B3C0
|
||||
sub_0200B3C0: ; 0x0200B3C0
|
||||
ldr r2, [r1]
|
||||
ldr r1, [r1, #4]
|
||||
str r2, [r0, #4]
|
||||
str r1, [r0, #8]
|
||||
bx lr
|
||||
arm_func_end sub_0200B3C0
|
||||
|
||||
arm_func_start sub_0200B3D4
|
||||
sub_0200B3D4: ; 0x0200B3D4
|
||||
mov r3, #0
|
||||
ldr ip, [r0, #0x18]
|
||||
mov r2, r3
|
||||
b _0200B3EC
|
||||
_0200B3E4:
|
||||
strh r2, [ip], #2
|
||||
add r3, r3, #1
|
||||
_0200B3EC:
|
||||
ldr r1, [r0, #0x14]
|
||||
cmp r3, r1, lsr #1
|
||||
blo _0200B3E4
|
||||
bx lr
|
||||
arm_func_end sub_0200B3D4
|
||||
|
||||
arm_func_start sub_0200B3FC
|
||||
sub_0200B3FC: ; 0x0200B3FC
|
||||
ldrb r3, [r0]
|
||||
cmp r3, #3
|
||||
addls pc, pc, r3, lsl #2
|
||||
bx lr
|
||||
_0200B40C: ; jump table
|
||||
b _0200B41C ; case 0
|
||||
b _0200B438 ; case 1
|
||||
b _0200B470 ; case 2
|
||||
b _0200B48C ; case 3
|
||||
_0200B41C:
|
||||
ldr ip, [r0, #0x18]
|
||||
ldr r0, [r1, #4]
|
||||
ldr r3, [r1]
|
||||
add r0, ip, r0, lsl #6
|
||||
mov r1, r3, lsl #1
|
||||
strh r2, [r1, r0]
|
||||
bx lr
|
||||
_0200B438:
|
||||
ldr ip, [r1]
|
||||
ldr r3, [r0, #0x18]
|
||||
cmp ip, #0x20
|
||||
ldrlt r0, [r1, #4]
|
||||
movlt r1, ip, lsl #1
|
||||
addlt r0, r3, r0, lsl #6
|
||||
strlth r2, [r1, r0]
|
||||
bxlt lr
|
||||
ldr r0, [r1, #4]
|
||||
add r0, r3, r0, lsl #6
|
||||
add r0, r0, ip, lsl #1
|
||||
add r0, r0, #0x700
|
||||
strh r2, [r0, #0xc0]
|
||||
bx lr
|
||||
_0200B470:
|
||||
ldr ip, [r0, #0x18]
|
||||
ldr r0, [r1, #4]
|
||||
ldr r3, [r1]
|
||||
add r0, ip, r0, lsl #6
|
||||
mov r1, r3, lsl #1
|
||||
strh r2, [r1, r0]
|
||||
bx lr
|
||||
_0200B48C:
|
||||
ldr ip, [r1, #4]
|
||||
cmp ip, #0x40
|
||||
bge _0200B4C4
|
||||
ldr r1, [r1]
|
||||
ldr r0, [r0, #0x18]
|
||||
cmp r1, #0x20
|
||||
movlt r1, r1, lsl #1
|
||||
addlt r0, r0, ip, lsl #6
|
||||
strlth r2, [r1, r0]
|
||||
addge r0, r0, ip, lsl #6
|
||||
addge r0, r0, r1, lsl #1
|
||||
addge r0, r0, #0x700
|
||||
strgeh r2, [r0, #0xc0]
|
||||
bx lr
|
||||
_0200B4C4:
|
||||
ldr r3, [r1]
|
||||
ldr r1, [r0, #0x18]
|
||||
cmp r3, #0x20
|
||||
subge r0, ip, #0x20
|
||||
addge r0, r1, r0, lsl #6
|
||||
addge r0, r0, r3, lsl #1
|
||||
addge r0, r0, #0x1700
|
||||
strgeh r2, [r0, #0xc0]
|
||||
bxge lr
|
||||
sub r0, ip, #0x20
|
||||
add r0, r1, r0, lsl #6
|
||||
add r0, r0, r3, lsl #1
|
||||
add r0, r0, #0x1000
|
||||
strh r2, [r0]
|
||||
bx lr
|
||||
arm_func_end sub_0200B3FC
|
||||
|
||||
arm_func_start sub_0200B500
|
||||
sub_0200B500: ; 0x0200B500
|
||||
ldr r0, [r0, #0x18]
|
||||
bx lr
|
||||
arm_func_end sub_0200B500
|
||||
|
||||
arm_func_start sub_0200B508
|
||||
sub_0200B508: ; 0x0200B508
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
str r4, [r5]
|
||||
str r2, [r5, #4]
|
||||
mov r0, #0
|
||||
strb r0, [r5, #0x14]
|
||||
str r3, [r5, #0x18]
|
||||
cmp r2, #0
|
||||
strle r0, [r5, #0xc]
|
||||
ble _0200B550
|
||||
ldr r1, [sp, #0x10]
|
||||
mov r0, r2, lsl #1
|
||||
bl MemAlloc
|
||||
str r0, [r5, #0xc]
|
||||
ldr r1, [sp, #0x10]
|
||||
mov r0, r4, lsl #3
|
||||
bl MemAlloc
|
||||
_0200B550:
|
||||
ldr r1, [sp, #0x10]
|
||||
str r0, [r5, #0x10]
|
||||
mov r0, r4, lsl #3
|
||||
bl MemAlloc
|
||||
str r0, [r5, #0x1c]
|
||||
mov r0, r5
|
||||
bl sub_0200B67C
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0200B508
|
||||
|
||||
arm_func_start sub_0200B570
|
||||
sub_0200B570: ; 0x0200B570
|
||||
mov r1, #1
|
||||
strb r1, [r0, #0x14]
|
||||
bx lr
|
||||
arm_func_end sub_0200B570
|
||||
|
||||
arm_func_start sub_0200B57C
|
||||
sub_0200B57C: ; 0x0200B57C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr ip, [r0, #8]
|
||||
cmp ip, #0
|
||||
ldmleia sp!, {r3, r4, r5, pc}
|
||||
ldr r3, [r0]
|
||||
ldr r2, [r0, #0x1c]
|
||||
sub r1, r3, #1
|
||||
add lr, r2, r1, lsl #3
|
||||
sub r3, r3, ip
|
||||
ldr r4, [r0, #0xc]
|
||||
mov r2, #0x200
|
||||
mov r1, #0
|
||||
b _0200B5C4
|
||||
_0200B5B0:
|
||||
strh r2, [lr]
|
||||
strh r1, [lr, #2]
|
||||
strh r1, [lr, #4]
|
||||
sub lr, lr, #8
|
||||
sub r3, r3, #1
|
||||
_0200B5C4:
|
||||
cmp r3, #0
|
||||
bgt _0200B5B0
|
||||
ldr r5, [r0, #4]
|
||||
mvn r3, #0
|
||||
b _0200B61C
|
||||
_0200B5D8:
|
||||
ldrsh ip, [r4]
|
||||
strh r3, [r4], #2
|
||||
b _0200B610
|
||||
_0200B5E4:
|
||||
ldr r2, [r0, #0x10]
|
||||
mov r1, ip, lsl #3
|
||||
ldrh r1, [r2, r1]
|
||||
add r2, r2, ip, lsl #3
|
||||
strh r1, [lr]
|
||||
ldrh r1, [r2, #2]
|
||||
strh r1, [lr, #2]
|
||||
ldrh r1, [r2, #4]
|
||||
strh r1, [lr, #4]
|
||||
ldrsh ip, [r2, #6]
|
||||
sub lr, lr, #8
|
||||
_0200B610:
|
||||
cmp ip, #0
|
||||
bge _0200B5E4
|
||||
sub r5, r5, #1
|
||||
_0200B61C:
|
||||
cmp r5, #0
|
||||
bgt _0200B5D8
|
||||
mov r1, #0
|
||||
str r1, [r0, #8]
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0200B57C
|
||||
|
||||
arm_func_start sub_0200B630
|
||||
sub_0200B630: ; 0x0200B630
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
ldrb r0, [r6, #0x14]
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r4, r5, r6, pc}
|
||||
ldr r4, [r6, #0x1c]
|
||||
ldr r1, [r6]
|
||||
mov r0, r4
|
||||
mov r1, r1, lsl #3
|
||||
ldr r5, [r6, #0x18]
|
||||
bl DC_FlushRange
|
||||
ldr r2, [r6]
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, r2, lsl #3
|
||||
bl Memcpy32
|
||||
mov r0, #0
|
||||
strb r0, [r6, #0x14]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
arm_func_end sub_0200B630
|
||||
|
||||
arm_func_start sub_0200B67C
|
||||
sub_0200B67C: ; 0x0200B67C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r0, #0x1c]
|
||||
mov lr, #0
|
||||
str lr, [r0, #8]
|
||||
mov r3, #0x200
|
||||
mov r2, lr
|
||||
b _0200B6B0
|
||||
_0200B698:
|
||||
strh r3, [ip]
|
||||
strh r2, [ip, #2]
|
||||
strh r2, [ip, #4]
|
||||
strh r2, [ip, #6]
|
||||
add ip, ip, #8
|
||||
add lr, lr, #1
|
||||
_0200B6B0:
|
||||
ldr r1, [r0]
|
||||
cmp lr, r1
|
||||
blt _0200B698
|
||||
ldr r1, [r0, #4]
|
||||
cmp r1, #0
|
||||
ldmleia sp!, {r3, pc}
|
||||
ldr r3, [r0, #0xc]
|
||||
mov ip, #0
|
||||
mvn r2, #0
|
||||
b _0200B6E0
|
||||
_0200B6D8:
|
||||
strh r2, [r3], #2
|
||||
add ip, ip, #1
|
||||
_0200B6E0:
|
||||
ldr r1, [r0, #4]
|
||||
cmp ip, r1
|
||||
blt _0200B6D8
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end sub_0200B67C
|
||||
|
||||
arm_func_start sub_0200B6F0
|
||||
sub_0200B6F0: ; 0x0200B6F0
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r4, [r0, #8]
|
||||
ldr r3, [r0]
|
||||
cmp r4, r3
|
||||
ldmgeia sp!, {r4, pc}
|
||||
cmp r2, #0
|
||||
movlt r2, #0
|
||||
blt _0200B71C
|
||||
ldr r3, [r0, #4]
|
||||
cmp r2, r3
|
||||
subge r2, r3, #1
|
||||
_0200B71C:
|
||||
ldrh r3, [r1]
|
||||
ldr lr, [r0, #0x10]
|
||||
mov ip, r4, lsl #3
|
||||
strh r3, [lr, ip]
|
||||
ldrh ip, [r1, #2]
|
||||
add lr, lr, r4, lsl #3
|
||||
mov r3, r2, lsl #1
|
||||
strh ip, [lr, #2]
|
||||
ldrh r1, [r1, #4]
|
||||
strh r1, [lr, #4]
|
||||
ldr r1, [r0, #0xc]
|
||||
ldrsh r1, [r1, r3]
|
||||
strh r1, [lr, #6]
|
||||
ldr r2, [r0, #8]
|
||||
add r1, r2, #1
|
||||
str r1, [r0, #8]
|
||||
ldr r0, [r0, #0xc]
|
||||
strh r2, [r0, r3]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end sub_0200B6F0
|
||||
|
||||
arm_func_start sub_0200B768
|
||||
sub_0200B768: ; 0x0200B768
|
||||
#ifdef EUROPE
|
||||
stmdb sp!, {r4, lr}
|
||||
sub sp, sp, #8
|
||||
bl GetLanguage
|
||||
ldr r1, _0200B7E4 ; =_020AFF38_EU
|
||||
mov r4, r0
|
||||
ldrsb r0, [r1]
|
||||
cmp r0, r4
|
||||
beq _0200B7DC
|
||||
ldr r1, _0200B7E8 ; =_020AFF3C_EU
|
||||
add r0, sp, #0
|
||||
ldr r1, [r1, r4, lsl #2]
|
||||
mov r2, #1
|
||||
bl LoadFileFromRom
|
||||
ldr r2, _0200B7EC ; =0x04000208
|
||||
mov r1, #0
|
||||
ldrh r0, [r2]
|
||||
strh r1, [r2]
|
||||
ldr r0, _0200B7F0 ; =CART_REMOVED_IMG_DATA
|
||||
ldr r1, [sp]
|
||||
ldr r2, [sp, #4]
|
||||
bl MemcpySimple
|
||||
ldr r2, _0200B7EC ; =0x04000208
|
||||
add r0, sp, #0
|
||||
ldrh r1, [r2]
|
||||
mov r1, #1
|
||||
strh r1, [r2]
|
||||
bl UnloadFile
|
||||
ldr r0, _0200B7E4 ; =_020AFF38_EU
|
||||
strb r4, [r0]
|
||||
_0200B7DC:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200B7E4: .word _020AFF38_EU
|
||||
_0200B7E8: .word _020AFF3C_EU
|
||||
_0200B7EC: .word 0x04000208
|
||||
_0200B7F0: .word CART_REMOVED_IMG_DATA
|
||||
#else
|
||||
bx lr
|
||||
#endif
|
||||
arm_func_end sub_0200B768
|
||||
|
||||
arm_func_start sub_0200B76C
|
||||
sub_0200B76C: ; 0x0200B76C
|
||||
stmdb sp!, {r4, lr}
|
||||
bl GX_DispOff
|
||||
ldr r2, _0200B874 ; =0x04001000
|
||||
mov r0, #3
|
||||
ldr r1, [r2]
|
||||
bic r1, r1, #0x10000
|
||||
str r1, [r2]
|
||||
bl MI_StopDma
|
||||
bl GX_DisableBankForBG
|
||||
bl GX_DisableBankForOBJ
|
||||
bl GX_DisableBankForBGExtPltt
|
||||
bl GX_DisableBankForOBJExtPltt
|
||||
bl GX_DisableBankForTex
|
||||
bl GX_DisableBankForTexPltt
|
||||
bl GX_DisableBankForSubBG
|
||||
bl GX_DisableBankForSubOBJ
|
||||
bl GX_DisableBankForSubBGExtPltt
|
||||
ldr r0, _0200B878 ; =0x000001FF
|
||||
bl GX_SetBankForLCDC
|
||||
mov r0, #0
|
||||
mov r1, #0x6800000
|
||||
mov r2, #0xa4000
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0xc0
|
||||
mov r1, #0x7000000
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0
|
||||
mov r1, #0x5000000
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0xc0
|
||||
ldr r1, _0200B87C ; =0x07000400
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0
|
||||
ldr r1, _0200B880 ; =0x05000400
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
bl sub_02019304
|
||||
mov r4, r0
|
||||
ldr r1, _0200B884 ; =CART_REMOVED_IMG_DATA
|
||||
mov r2, #0xc000
|
||||
bl MemcpySimple
|
||||
mov r2, r4
|
||||
ldr r0, _0200B888 ; =0x06806000
|
||||
mov r1, #0xc000
|
||||
bl DecompressAtFromMemoryPointer
|
||||
mov r0, #2
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
bl GX_SetGraphicsMode
|
||||
mov r0, #0
|
||||
bl GXS_SetGraphicsMode
|
||||
ldr r0, _0200B88C ; =0x0400006C
|
||||
mov r1, #0
|
||||
bl GXx_SetMasterBrightness_
|
||||
ldr r0, _0200B890 ; =0x0400106C
|
||||
mov r1, #0
|
||||
bl GXx_SetMasterBrightness_
|
||||
bl GX_DispOn
|
||||
ldr r1, _0200B874 ; =0x04001000
|
||||
ldr r0, [r1]
|
||||
orr r0, r0, #0x10000
|
||||
str r0, [r1]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200B874: .word 0x04001000
|
||||
_0200B878: .word 0x000001FF
|
||||
_0200B87C: .word 0x07000400
|
||||
_0200B880: .word 0x05000400
|
||||
_0200B884: .word CART_REMOVED_IMG_DATA
|
||||
_0200B888: .word 0x06806000
|
||||
_0200B88C: .word 0x0400006C
|
||||
_0200B890: .word 0x0400106C
|
||||
arm_func_end sub_0200B76C
|
||||
|
||||
arm_func_start sub_0200B894
|
||||
sub_0200B894: ; 0x0200B894
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
add r0, r5, #0x1c
|
||||
bl sub_0200A2CC
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl sub_0200B8D4
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0200B894
|
||||
|
||||
arm_func_start sub_0200B8B8
|
||||
sub_0200B8B8: ; 0x0200B8B8
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
mov r1, #0
|
||||
bl sub_0200B8D4
|
||||
add r0, r4, #0x1c
|
||||
bl sub_0200A2F4
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end sub_0200B8B8
|
||||
|
||||
arm_func_start sub_0200B8D4
|
||||
sub_0200B8D4: ; 0x0200B8D4
|
||||
ldr r2, _0200B904 ; =_02094AE8
|
||||
mov r1, r1, lsl #1
|
||||
mov r3, #0
|
||||
ldrsh r1, [r2, r1]
|
||||
str r3, [r0]
|
||||
mov r2, #1
|
||||
str r2, [r0, #4]
|
||||
strh r1, [r0, #0x10]
|
||||
strh r1, [r0, #0x14]
|
||||
str r3, [r0, #8]
|
||||
str r3, [r0, #0xc]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200B904: .word _02094AE8
|
||||
arm_func_end sub_0200B8D4
|
||||
|
||||
arm_func_start sub_0200B908
|
||||
sub_0200B908: ; 0x0200B908
|
||||
ldr ip, _0200B914 ; =_0200A314
|
||||
add r0, r0, #0x1c
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200B914: .word _0200A314
|
||||
arm_func_end sub_0200B908
|
||||
|
||||
arm_func_start sub_0200B918
|
||||
sub_0200B918: ; 0x0200B918
|
||||
ldr ip, _0200B924 ; =_0200A344
|
||||
add r0, r0, #0x1c
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200B924: .word _0200A344
|
||||
arm_func_end sub_0200B918
|
||||
|
||||
arm_func_start sub_0200B928
|
||||
sub_0200B928: ; 0x0200B928
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x10]
|
||||
cmp r1, #0
|
||||
ldrnesh r2, [r0, #0x14]
|
||||
cmpne r2, #0
|
||||
bne _0200B958
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x14]
|
||||
mov r1, #1
|
||||
stmib r0, {r1, r2}
|
||||
str r2, [r0, #0xc]
|
||||
bx lr
|
||||
_0200B958:
|
||||
cmp r1, #0
|
||||
movlt r1, #0x1e
|
||||
cmp r2, #0
|
||||
movlt r2, #2
|
||||
strlt r2, [r0, #4]
|
||||
ldrltsh r2, [r0, #0x14]
|
||||
rsblt r2, r2, #0
|
||||
movge r2, #3
|
||||
strge r2, [r0, #4]
|
||||
ldrgesh r2, [r0, #0x14]
|
||||
strh r2, [r0, #0x12]
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
bx lr
|
||||
arm_func_end sub_0200B928
|
||||
|
||||
arm_func_start UpdateFadeStatus
|
||||
UpdateFadeStatus: ; 0x0200B990
|
||||
ldr r3, _0200BA00 ; =_02094AE8
|
||||
mov ip, r1, lsl #1
|
||||
ldrsh r3, [r3, ip]
|
||||
cmp r2, #0
|
||||
strh r3, [r0, #0x10]
|
||||
ldrnesh r3, [r0, #0x10]
|
||||
ldrnesh ip, [r0, #0x14]
|
||||
cmpne ip, r3
|
||||
bne _0200B9D4
|
||||
ldrsh r3, [r0, #0x10]
|
||||
mov r2, #1
|
||||
mov r1, #0
|
||||
strh r3, [r0, #0x14]
|
||||
str r2, [r0, #4]
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
bx lr
|
||||
_0200B9D4:
|
||||
cmp r2, #0
|
||||
movlt r2, #0x1e
|
||||
cmp r3, #0
|
||||
sublt r3, ip, r3
|
||||
subge r3, r3, ip
|
||||
strh r3, [r0, #0x12]
|
||||
ldr r3, _0200BA04 ; =_02094AF0
|
||||
ldr r1, [r3, r1, lsl #2]
|
||||
stmib r0, {r1, r2}
|
||||
str r2, [r0, #0xc]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200BA00: .word _02094AE8
|
||||
_0200BA04: .word _02094AF0
|
||||
arm_func_end UpdateFadeStatus
|
||||
|
||||
arm_func_start HandleFades
|
||||
HandleFades: ; 0x0200BA08
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #5
|
||||
addls pc, pc, r0, lsl #2
|
||||
b _0200BB58
|
||||
_0200BA20: ; jump table
|
||||
b _0200BB50 ; case 0
|
||||
b _0200BB40 ; case 1
|
||||
b _0200BA38 ; case 2
|
||||
b _0200BA80 ; case 3
|
||||
b _0200BAC8 ; case 4
|
||||
b _0200BB04 ; case 5
|
||||
_0200BA38:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r1, [r4, #0x10]
|
||||
movle r0, #0
|
||||
strleh r1, [r4, #0x14]
|
||||
strle r0, [r4, #4]
|
||||
ble _0200BA78
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
sub r0, r1, r0
|
||||
strh r0, [r4, #0x14]
|
||||
_0200BA78:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BA80:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r1, [r4, #0x10]
|
||||
movle r0, #0
|
||||
strleh r1, [r4, #0x14]
|
||||
strle r0, [r4, #4]
|
||||
ble _0200BAC0
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
add r0, r1, r0
|
||||
strh r0, [r4, #0x14]
|
||||
_0200BAC0:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BAC8:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r0, [r4, #0x10]
|
||||
ble _0200BAF8
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
sub r0, r1, r0
|
||||
_0200BAF8:
|
||||
strh r0, [r4, #0x14]
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB04:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r0, [r4, #0x10]
|
||||
ble _0200BB34
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
add r0, r1, r0
|
||||
_0200BB34:
|
||||
strh r0, [r4, #0x14]
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB40:
|
||||
mov r0, #0
|
||||
str r0, [r4, #4]
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB50:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB58:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end HandleFades
|
||||
|
||||
arm_func_start sub_0200BB60
|
||||
sub_0200BB60: ; 0x0200BB60
|
||||
ldr ip, _0200BB70 ; =sub_0200B928
|
||||
mov r2, #1
|
||||
str r2, [r0]
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200BB70: .word sub_0200B928
|
||||
arm_func_end sub_0200BB60
|
||||
|
||||
arm_func_start sub_0200BB74
|
||||
sub_0200BB74: ; 0x0200BB74
|
||||
ldr ip, _0200BB84 ; =UpdateFadeStatus
|
||||
mov r3, #1
|
||||
str r3, [r0]
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200BB84: .word UpdateFadeStatus
|
||||
arm_func_end sub_0200BB74
|
||||
|
||||
arm_func_start sub_0200BB88
|
||||
sub_0200BB88: ; 0x0200BB88
|
||||
mov r2, #1
|
||||
str r2, [r0]
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x10]
|
||||
cmp r1, #0
|
||||
ldrnesh r2, [r0, #0x14]
|
||||
cmpne r2, #0
|
||||
bne _0200BBC0
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x14]
|
||||
mov r1, #1
|
||||
stmib r0, {r1, r2}
|
||||
str r2, [r0, #0xc]
|
||||
bx lr
|
||||
_0200BBC0:
|
||||
cmp r1, #0
|
||||
movlt r1, #0x1e
|
||||
cmp r2, #0
|
||||
movlt r2, #4
|
||||
strlt r2, [r0, #4]
|
||||
ldrltsh r2, [r0, #0x14]
|
||||
rsblt r2, r2, #0
|
||||
movge r2, #5
|
||||
strge r2, [r0, #4]
|
||||
ldrgesh r2, [r0, #0x14]
|
||||
strh r2, [r0, #0x12]
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
bx lr
|
||||
arm_func_end sub_0200BB88
|
||||
|
||||
arm_func_start sub_0200BBF8
|
||||
sub_0200BBF8: ; 0x0200BBF8
|
||||
mov ip, #1
|
||||
cmp r1, #0
|
||||
movlt r1, #0x1e
|
||||
str ip, [r0]
|
||||
cmp r2, r3
|
||||
movgt ip, #3
|
||||
strgt ip, [r0, #4]
|
||||
subgt ip, r2, r3
|
||||
strgth ip, [r0, #0x12]
|
||||
bgt _0200BC40
|
||||
movlt ip, #2
|
||||
strlt ip, [r0, #4]
|
||||
sublt ip, r3, r2
|
||||
strlth ip, [r0, #0x12]
|
||||
movge ip, #1
|
||||
strge ip, [r0, #4]
|
||||
movge ip, #0
|
||||
strgeh ip, [r0, #0x12]
|
||||
_0200BC40:
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
strh r2, [r0, #0x14]
|
||||
strh r3, [r0, #0x10]
|
||||
bx lr
|
||||
arm_func_end sub_0200BBF8
|
||||
|
||||
775
asm/main_0200B33C.s
Normal file
775
asm/main_0200B33C.s
Normal file
@@ -0,0 +1,775 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_0200B33C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start sub_0200B33C
|
||||
sub_0200B33C: ; 0x0200B33C
|
||||
bx lr
|
||||
arm_func_end sub_0200B33C
|
||||
|
||||
arm_func_start sub_0200B340
|
||||
sub_0200B340: ; 0x0200B340
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
mov r4, r0
|
||||
ldr r0, _0200B3BC ; =0x000001FF
|
||||
ldmib r4, {r1, r2}
|
||||
and r1, r1, r0
|
||||
mov r2, r2, lsl #0x17
|
||||
ldr r0, [r4, #0xc]
|
||||
orr r1, r1, r2, lsr #7
|
||||
str r1, [r0]
|
||||
ldrb r0, [r4, #1]
|
||||
cmp r0, #0
|
||||
beq _0200B3B4
|
||||
ldr r5, [r4, #0x18]
|
||||
ldr r1, [r4, #0x14]
|
||||
mov r0, r5
|
||||
ldr r6, [r4, #0x10]
|
||||
bl DC_FlushRange
|
||||
ldr ip, [r4, #0x14]
|
||||
mov r2, r6
|
||||
mov r3, r5
|
||||
mov r0, #3
|
||||
mov r1, #1
|
||||
str ip, [sp]
|
||||
bl sub_02005E10
|
||||
mov r0, #3
|
||||
bl sub_02005D30
|
||||
mov r0, #0
|
||||
strb r0, [r4, #1]
|
||||
_0200B3B4:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0200B3BC: .word 0x000001FF
|
||||
arm_func_end sub_0200B340
|
||||
|
||||
arm_func_start sub_0200B3C0
|
||||
sub_0200B3C0: ; 0x0200B3C0
|
||||
ldr r2, [r1]
|
||||
ldr r1, [r1, #4]
|
||||
str r2, [r0, #4]
|
||||
str r1, [r0, #8]
|
||||
bx lr
|
||||
arm_func_end sub_0200B3C0
|
||||
|
||||
arm_func_start sub_0200B3D4
|
||||
sub_0200B3D4: ; 0x0200B3D4
|
||||
mov r3, #0
|
||||
ldr ip, [r0, #0x18]
|
||||
mov r2, r3
|
||||
b _0200B3EC
|
||||
_0200B3E4:
|
||||
strh r2, [ip], #2
|
||||
add r3, r3, #1
|
||||
_0200B3EC:
|
||||
ldr r1, [r0, #0x14]
|
||||
cmp r3, r1, lsr #1
|
||||
blo _0200B3E4
|
||||
bx lr
|
||||
arm_func_end sub_0200B3D4
|
||||
|
||||
arm_func_start sub_0200B3FC
|
||||
sub_0200B3FC: ; 0x0200B3FC
|
||||
ldrb r3, [r0]
|
||||
cmp r3, #3
|
||||
addls pc, pc, r3, lsl #2
|
||||
bx lr
|
||||
_0200B40C: ; jump table
|
||||
b _0200B41C ; case 0
|
||||
b _0200B438 ; case 1
|
||||
b _0200B470 ; case 2
|
||||
b _0200B48C ; case 3
|
||||
_0200B41C:
|
||||
ldr ip, [r0, #0x18]
|
||||
ldr r0, [r1, #4]
|
||||
ldr r3, [r1]
|
||||
add r0, ip, r0, lsl #6
|
||||
mov r1, r3, lsl #1
|
||||
strh r2, [r1, r0]
|
||||
bx lr
|
||||
_0200B438:
|
||||
ldr ip, [r1]
|
||||
ldr r3, [r0, #0x18]
|
||||
cmp ip, #0x20
|
||||
ldrlt r0, [r1, #4]
|
||||
movlt r1, ip, lsl #1
|
||||
addlt r0, r3, r0, lsl #6
|
||||
strlth r2, [r1, r0]
|
||||
bxlt lr
|
||||
ldr r0, [r1, #4]
|
||||
add r0, r3, r0, lsl #6
|
||||
add r0, r0, ip, lsl #1
|
||||
add r0, r0, #0x700
|
||||
strh r2, [r0, #0xc0]
|
||||
bx lr
|
||||
_0200B470:
|
||||
ldr ip, [r0, #0x18]
|
||||
ldr r0, [r1, #4]
|
||||
ldr r3, [r1]
|
||||
add r0, ip, r0, lsl #6
|
||||
mov r1, r3, lsl #1
|
||||
strh r2, [r1, r0]
|
||||
bx lr
|
||||
_0200B48C:
|
||||
ldr ip, [r1, #4]
|
||||
cmp ip, #0x40
|
||||
bge _0200B4C4
|
||||
ldr r1, [r1]
|
||||
ldr r0, [r0, #0x18]
|
||||
cmp r1, #0x20
|
||||
movlt r1, r1, lsl #1
|
||||
addlt r0, r0, ip, lsl #6
|
||||
strlth r2, [r1, r0]
|
||||
addge r0, r0, ip, lsl #6
|
||||
addge r0, r0, r1, lsl #1
|
||||
addge r0, r0, #0x700
|
||||
strgeh r2, [r0, #0xc0]
|
||||
bx lr
|
||||
_0200B4C4:
|
||||
ldr r3, [r1]
|
||||
ldr r1, [r0, #0x18]
|
||||
cmp r3, #0x20
|
||||
subge r0, ip, #0x20
|
||||
addge r0, r1, r0, lsl #6
|
||||
addge r0, r0, r3, lsl #1
|
||||
addge r0, r0, #0x1700
|
||||
strgeh r2, [r0, #0xc0]
|
||||
bxge lr
|
||||
sub r0, ip, #0x20
|
||||
add r0, r1, r0, lsl #6
|
||||
add r0, r0, r3, lsl #1
|
||||
add r0, r0, #0x1000
|
||||
strh r2, [r0]
|
||||
bx lr
|
||||
arm_func_end sub_0200B3FC
|
||||
|
||||
arm_func_start sub_0200B500
|
||||
sub_0200B500: ; 0x0200B500
|
||||
ldr r0, [r0, #0x18]
|
||||
bx lr
|
||||
arm_func_end sub_0200B500
|
||||
|
||||
arm_func_start sub_0200B508
|
||||
sub_0200B508: ; 0x0200B508
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
str r4, [r5]
|
||||
str r2, [r5, #4]
|
||||
mov r0, #0
|
||||
strb r0, [r5, #0x14]
|
||||
str r3, [r5, #0x18]
|
||||
cmp r2, #0
|
||||
strle r0, [r5, #0xc]
|
||||
ble _0200B550
|
||||
ldr r1, [sp, #0x10]
|
||||
mov r0, r2, lsl #1
|
||||
bl MemAlloc
|
||||
str r0, [r5, #0xc]
|
||||
ldr r1, [sp, #0x10]
|
||||
mov r0, r4, lsl #3
|
||||
bl MemAlloc
|
||||
_0200B550:
|
||||
ldr r1, [sp, #0x10]
|
||||
str r0, [r5, #0x10]
|
||||
mov r0, r4, lsl #3
|
||||
bl MemAlloc
|
||||
str r0, [r5, #0x1c]
|
||||
mov r0, r5
|
||||
bl sub_0200B67C
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0200B508
|
||||
|
||||
arm_func_start sub_0200B570
|
||||
sub_0200B570: ; 0x0200B570
|
||||
mov r1, #1
|
||||
strb r1, [r0, #0x14]
|
||||
bx lr
|
||||
arm_func_end sub_0200B570
|
||||
|
||||
arm_func_start sub_0200B57C
|
||||
sub_0200B57C: ; 0x0200B57C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
ldr ip, [r0, #8]
|
||||
cmp ip, #0
|
||||
ldmleia sp!, {r3, r4, r5, pc}
|
||||
ldr r3, [r0]
|
||||
ldr r2, [r0, #0x1c]
|
||||
sub r1, r3, #1
|
||||
add lr, r2, r1, lsl #3
|
||||
sub r3, r3, ip
|
||||
ldr r4, [r0, #0xc]
|
||||
mov r2, #0x200
|
||||
mov r1, #0
|
||||
b _0200B5C4
|
||||
_0200B5B0:
|
||||
strh r2, [lr]
|
||||
strh r1, [lr, #2]
|
||||
strh r1, [lr, #4]
|
||||
sub lr, lr, #8
|
||||
sub r3, r3, #1
|
||||
_0200B5C4:
|
||||
cmp r3, #0
|
||||
bgt _0200B5B0
|
||||
ldr r5, [r0, #4]
|
||||
mvn r3, #0
|
||||
b _0200B61C
|
||||
_0200B5D8:
|
||||
ldrsh ip, [r4]
|
||||
strh r3, [r4], #2
|
||||
b _0200B610
|
||||
_0200B5E4:
|
||||
ldr r2, [r0, #0x10]
|
||||
mov r1, ip, lsl #3
|
||||
ldrh r1, [r2, r1]
|
||||
add r2, r2, ip, lsl #3
|
||||
strh r1, [lr]
|
||||
ldrh r1, [r2, #2]
|
||||
strh r1, [lr, #2]
|
||||
ldrh r1, [r2, #4]
|
||||
strh r1, [lr, #4]
|
||||
ldrsh ip, [r2, #6]
|
||||
sub lr, lr, #8
|
||||
_0200B610:
|
||||
cmp ip, #0
|
||||
bge _0200B5E4
|
||||
sub r5, r5, #1
|
||||
_0200B61C:
|
||||
cmp r5, #0
|
||||
bgt _0200B5D8
|
||||
mov r1, #0
|
||||
str r1, [r0, #8]
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0200B57C
|
||||
|
||||
arm_func_start sub_0200B630
|
||||
sub_0200B630: ; 0x0200B630
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
ldrb r0, [r6, #0x14]
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r4, r5, r6, pc}
|
||||
ldr r4, [r6, #0x1c]
|
||||
ldr r1, [r6]
|
||||
mov r0, r4
|
||||
mov r1, r1, lsl #3
|
||||
ldr r5, [r6, #0x18]
|
||||
bl DC_FlushRange
|
||||
ldr r2, [r6]
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, r2, lsl #3
|
||||
bl Memcpy32
|
||||
mov r0, #0
|
||||
strb r0, [r6, #0x14]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
arm_func_end sub_0200B630
|
||||
|
||||
arm_func_start sub_0200B67C
|
||||
sub_0200B67C: ; 0x0200B67C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr ip, [r0, #0x1c]
|
||||
mov lr, #0
|
||||
str lr, [r0, #8]
|
||||
mov r3, #0x200
|
||||
mov r2, lr
|
||||
b _0200B6B0
|
||||
_0200B698:
|
||||
strh r3, [ip]
|
||||
strh r2, [ip, #2]
|
||||
strh r2, [ip, #4]
|
||||
strh r2, [ip, #6]
|
||||
add ip, ip, #8
|
||||
add lr, lr, #1
|
||||
_0200B6B0:
|
||||
ldr r1, [r0]
|
||||
cmp lr, r1
|
||||
blt _0200B698
|
||||
ldr r1, [r0, #4]
|
||||
cmp r1, #0
|
||||
ldmleia sp!, {r3, pc}
|
||||
ldr r3, [r0, #0xc]
|
||||
mov ip, #0
|
||||
mvn r2, #0
|
||||
b _0200B6E0
|
||||
_0200B6D8:
|
||||
strh r2, [r3], #2
|
||||
add ip, ip, #1
|
||||
_0200B6E0:
|
||||
ldr r1, [r0, #4]
|
||||
cmp ip, r1
|
||||
blt _0200B6D8
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end sub_0200B67C
|
||||
|
||||
arm_func_start sub_0200B6F0
|
||||
sub_0200B6F0: ; 0x0200B6F0
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r4, [r0, #8]
|
||||
ldr r3, [r0]
|
||||
cmp r4, r3
|
||||
ldmgeia sp!, {r4, pc}
|
||||
cmp r2, #0
|
||||
movlt r2, #0
|
||||
blt _0200B71C
|
||||
ldr r3, [r0, #4]
|
||||
cmp r2, r3
|
||||
subge r2, r3, #1
|
||||
_0200B71C:
|
||||
ldrh r3, [r1]
|
||||
ldr lr, [r0, #0x10]
|
||||
mov ip, r4, lsl #3
|
||||
strh r3, [lr, ip]
|
||||
ldrh ip, [r1, #2]
|
||||
add lr, lr, r4, lsl #3
|
||||
mov r3, r2, lsl #1
|
||||
strh ip, [lr, #2]
|
||||
ldrh r1, [r1, #4]
|
||||
strh r1, [lr, #4]
|
||||
ldr r1, [r0, #0xc]
|
||||
ldrsh r1, [r1, r3]
|
||||
strh r1, [lr, #6]
|
||||
ldr r2, [r0, #8]
|
||||
add r1, r2, #1
|
||||
str r1, [r0, #8]
|
||||
ldr r0, [r0, #0xc]
|
||||
strh r2, [r0, r3]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end sub_0200B6F0
|
||||
|
||||
arm_func_start sub_0200B768
|
||||
sub_0200B768: ; 0x0200B768
|
||||
#ifdef EUROPE
|
||||
stmdb sp!, {r4, lr}
|
||||
sub sp, sp, #8
|
||||
bl GetLanguage
|
||||
ldr r1, _0200B7E4 ; =_020AFF38_EU
|
||||
mov r4, r0
|
||||
ldrsb r0, [r1]
|
||||
cmp r0, r4
|
||||
beq _0200B7DC
|
||||
ldr r1, _0200B7E8 ; =_020AFF3C_EU
|
||||
add r0, sp, #0
|
||||
ldr r1, [r1, r4, lsl #2]
|
||||
mov r2, #1
|
||||
bl LoadFileFromRom
|
||||
ldr r2, _0200B7EC ; =0x04000208
|
||||
mov r1, #0
|
||||
ldrh r0, [r2]
|
||||
strh r1, [r2]
|
||||
ldr r0, _0200B7F0 ; =CART_REMOVED_IMG_DATA
|
||||
ldr r1, [sp]
|
||||
ldr r2, [sp, #4]
|
||||
bl MemcpySimple
|
||||
ldr r2, _0200B7EC ; =0x04000208
|
||||
add r0, sp, #0
|
||||
ldrh r1, [r2]
|
||||
mov r1, #1
|
||||
strh r1, [r2]
|
||||
bl UnloadFile
|
||||
ldr r0, _0200B7E4 ; =_020AFF38_EU
|
||||
strb r4, [r0]
|
||||
_0200B7DC:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200B7E4: .word _020AFF38_EU
|
||||
_0200B7E8: .word _020AFF3C_EU
|
||||
_0200B7EC: .word 0x04000208
|
||||
_0200B7F0: .word CART_REMOVED_IMG_DATA
|
||||
#else
|
||||
bx lr
|
||||
#endif
|
||||
arm_func_end sub_0200B768
|
||||
|
||||
arm_func_start sub_0200B76C
|
||||
sub_0200B76C: ; 0x0200B76C
|
||||
stmdb sp!, {r4, lr}
|
||||
bl GX_DispOff
|
||||
ldr r2, _0200B874 ; =0x04001000
|
||||
mov r0, #3
|
||||
ldr r1, [r2]
|
||||
bic r1, r1, #0x10000
|
||||
str r1, [r2]
|
||||
bl MI_StopDma
|
||||
bl GX_DisableBankForBG
|
||||
bl GX_DisableBankForOBJ
|
||||
bl GX_DisableBankForBGExtPltt
|
||||
bl GX_DisableBankForOBJExtPltt
|
||||
bl GX_DisableBankForTex
|
||||
bl GX_DisableBankForTexPltt
|
||||
bl GX_DisableBankForSubBG
|
||||
bl GX_DisableBankForSubOBJ
|
||||
bl GX_DisableBankForSubBGExtPltt
|
||||
ldr r0, _0200B878 ; =0x000001FF
|
||||
bl GX_SetBankForLCDC
|
||||
mov r0, #0
|
||||
mov r1, #0x6800000
|
||||
mov r2, #0xa4000
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0xc0
|
||||
mov r1, #0x7000000
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0
|
||||
mov r1, #0x5000000
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0xc0
|
||||
ldr r1, _0200B87C ; =0x07000400
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
mov r0, #0
|
||||
ldr r1, _0200B880 ; =0x05000400
|
||||
mov r2, #0x400
|
||||
bl ArrayFill32Fast
|
||||
bl sub_02019304
|
||||
mov r4, r0
|
||||
ldr r1, _0200B884 ; =CART_REMOVED_IMG_DATA
|
||||
mov r2, #0xc000
|
||||
bl MemcpySimple
|
||||
mov r2, r4
|
||||
ldr r0, _0200B888 ; =0x06806000
|
||||
mov r1, #0xc000
|
||||
bl DecompressAtFromMemoryPointer
|
||||
mov r0, #2
|
||||
mov r1, #0
|
||||
mov r2, r1
|
||||
bl GX_SetGraphicsMode
|
||||
mov r0, #0
|
||||
bl GXS_SetGraphicsMode
|
||||
ldr r0, _0200B88C ; =0x0400006C
|
||||
mov r1, #0
|
||||
bl GXx_SetMasterBrightness_
|
||||
ldr r0, _0200B890 ; =0x0400106C
|
||||
mov r1, #0
|
||||
bl GXx_SetMasterBrightness_
|
||||
bl GX_DispOn
|
||||
ldr r1, _0200B874 ; =0x04001000
|
||||
ldr r0, [r1]
|
||||
orr r0, r0, #0x10000
|
||||
str r0, [r1]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_0200B874: .word 0x04001000
|
||||
_0200B878: .word 0x000001FF
|
||||
_0200B87C: .word 0x07000400
|
||||
_0200B880: .word 0x05000400
|
||||
_0200B884: .word CART_REMOVED_IMG_DATA
|
||||
_0200B888: .word 0x06806000
|
||||
_0200B88C: .word 0x0400006C
|
||||
_0200B890: .word 0x0400106C
|
||||
arm_func_end sub_0200B76C
|
||||
|
||||
arm_func_start sub_0200B894
|
||||
sub_0200B894: ; 0x0200B894
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
add r0, r5, #0x1c
|
||||
bl sub_0200A2CC
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl sub_0200B8D4
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0200B894
|
||||
|
||||
arm_func_start sub_0200B8B8
|
||||
sub_0200B8B8: ; 0x0200B8B8
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
mov r1, #0
|
||||
bl sub_0200B8D4
|
||||
add r0, r4, #0x1c
|
||||
bl sub_0200A2F4
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end sub_0200B8B8
|
||||
|
||||
arm_func_start sub_0200B8D4
|
||||
sub_0200B8D4: ; 0x0200B8D4
|
||||
ldr r2, _0200B904 ; =_02094AE8
|
||||
mov r1, r1, lsl #1
|
||||
mov r3, #0
|
||||
ldrsh r1, [r2, r1]
|
||||
str r3, [r0]
|
||||
mov r2, #1
|
||||
str r2, [r0, #4]
|
||||
strh r1, [r0, #0x10]
|
||||
strh r1, [r0, #0x14]
|
||||
str r3, [r0, #8]
|
||||
str r3, [r0, #0xc]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200B904: .word _02094AE8
|
||||
arm_func_end sub_0200B8D4
|
||||
|
||||
arm_func_start sub_0200B908
|
||||
sub_0200B908: ; 0x0200B908
|
||||
ldr ip, _0200B914 ; =_0200A314
|
||||
add r0, r0, #0x1c
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200B914: .word _0200A314
|
||||
arm_func_end sub_0200B908
|
||||
|
||||
arm_func_start sub_0200B918
|
||||
sub_0200B918: ; 0x0200B918
|
||||
ldr ip, _0200B924 ; =_0200A344
|
||||
add r0, r0, #0x1c
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200B924: .word _0200A344
|
||||
arm_func_end sub_0200B918
|
||||
|
||||
arm_func_start sub_0200B928
|
||||
sub_0200B928: ; 0x0200B928
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x10]
|
||||
cmp r1, #0
|
||||
ldrnesh r2, [r0, #0x14]
|
||||
cmpne r2, #0
|
||||
bne _0200B958
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x14]
|
||||
mov r1, #1
|
||||
stmib r0, {r1, r2}
|
||||
str r2, [r0, #0xc]
|
||||
bx lr
|
||||
_0200B958:
|
||||
cmp r1, #0
|
||||
movlt r1, #0x1e
|
||||
cmp r2, #0
|
||||
movlt r2, #2
|
||||
strlt r2, [r0, #4]
|
||||
ldrltsh r2, [r0, #0x14]
|
||||
rsblt r2, r2, #0
|
||||
movge r2, #3
|
||||
strge r2, [r0, #4]
|
||||
ldrgesh r2, [r0, #0x14]
|
||||
strh r2, [r0, #0x12]
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
bx lr
|
||||
arm_func_end sub_0200B928
|
||||
|
||||
arm_func_start UpdateFadeStatus
|
||||
UpdateFadeStatus: ; 0x0200B990
|
||||
ldr r3, _0200BA00 ; =_02094AE8
|
||||
mov ip, r1, lsl #1
|
||||
ldrsh r3, [r3, ip]
|
||||
cmp r2, #0
|
||||
strh r3, [r0, #0x10]
|
||||
ldrnesh r3, [r0, #0x10]
|
||||
ldrnesh ip, [r0, #0x14]
|
||||
cmpne ip, r3
|
||||
bne _0200B9D4
|
||||
ldrsh r3, [r0, #0x10]
|
||||
mov r2, #1
|
||||
mov r1, #0
|
||||
strh r3, [r0, #0x14]
|
||||
str r2, [r0, #4]
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
bx lr
|
||||
_0200B9D4:
|
||||
cmp r2, #0
|
||||
movlt r2, #0x1e
|
||||
cmp r3, #0
|
||||
sublt r3, ip, r3
|
||||
subge r3, r3, ip
|
||||
strh r3, [r0, #0x12]
|
||||
ldr r3, _0200BA04 ; =_02094AF0
|
||||
ldr r1, [r3, r1, lsl #2]
|
||||
stmib r0, {r1, r2}
|
||||
str r2, [r0, #0xc]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0200BA00: .word _02094AE8
|
||||
_0200BA04: .word _02094AF0
|
||||
arm_func_end UpdateFadeStatus
|
||||
|
||||
arm_func_start HandleFades
|
||||
HandleFades: ; 0x0200BA08
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #5
|
||||
addls pc, pc, r0, lsl #2
|
||||
b _0200BB58
|
||||
_0200BA20: ; jump table
|
||||
b _0200BB50 ; case 0
|
||||
b _0200BB40 ; case 1
|
||||
b _0200BA38 ; case 2
|
||||
b _0200BA80 ; case 3
|
||||
b _0200BAC8 ; case 4
|
||||
b _0200BB04 ; case 5
|
||||
_0200BA38:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r1, [r4, #0x10]
|
||||
movle r0, #0
|
||||
strleh r1, [r4, #0x14]
|
||||
strle r0, [r4, #4]
|
||||
ble _0200BA78
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
sub r0, r1, r0
|
||||
strh r0, [r4, #0x14]
|
||||
_0200BA78:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BA80:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r1, [r4, #0x10]
|
||||
movle r0, #0
|
||||
strleh r1, [r4, #0x14]
|
||||
strle r0, [r4, #4]
|
||||
ble _0200BAC0
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
add r0, r1, r0
|
||||
strh r0, [r4, #0x14]
|
||||
_0200BAC0:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BAC8:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r0, [r4, #0x10]
|
||||
ble _0200BAF8
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
sub r0, r1, r0
|
||||
_0200BAF8:
|
||||
strh r0, [r4, #0x14]
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB04:
|
||||
ldr r0, [r4, #8]
|
||||
sub r2, r0, #1
|
||||
str r2, [r4, #8]
|
||||
cmp r2, #0
|
||||
ldrlesh r0, [r4, #0x10]
|
||||
ble _0200BB34
|
||||
ldrsh r0, [r4, #0x12]
|
||||
ldr r1, [r4, #0xc]
|
||||
mul r0, r2, r0
|
||||
bl _s32_div_f
|
||||
ldrsh r1, [r4, #0x10]
|
||||
add r0, r1, r0
|
||||
_0200BB34:
|
||||
strh r0, [r4, #0x14]
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB40:
|
||||
mov r0, #0
|
||||
str r0, [r4, #4]
|
||||
mov r0, #1
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB50:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
_0200BB58:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end HandleFades
|
||||
|
||||
arm_func_start sub_0200BB60
|
||||
sub_0200BB60: ; 0x0200BB60
|
||||
ldr ip, _0200BB70 ; =sub_0200B928
|
||||
mov r2, #1
|
||||
str r2, [r0]
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200BB70: .word sub_0200B928
|
||||
arm_func_end sub_0200BB60
|
||||
|
||||
arm_func_start sub_0200BB74
|
||||
sub_0200BB74: ; 0x0200BB74
|
||||
ldr ip, _0200BB84 ; =UpdateFadeStatus
|
||||
mov r3, #1
|
||||
str r3, [r0]
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0200BB84: .word UpdateFadeStatus
|
||||
arm_func_end sub_0200BB74
|
||||
|
||||
arm_func_start sub_0200BB88
|
||||
sub_0200BB88: ; 0x0200BB88
|
||||
mov r2, #1
|
||||
str r2, [r0]
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x10]
|
||||
cmp r1, #0
|
||||
ldrnesh r2, [r0, #0x14]
|
||||
cmpne r2, #0
|
||||
bne _0200BBC0
|
||||
mov r2, #0
|
||||
strh r2, [r0, #0x14]
|
||||
mov r1, #1
|
||||
stmib r0, {r1, r2}
|
||||
str r2, [r0, #0xc]
|
||||
bx lr
|
||||
_0200BBC0:
|
||||
cmp r1, #0
|
||||
movlt r1, #0x1e
|
||||
cmp r2, #0
|
||||
movlt r2, #4
|
||||
strlt r2, [r0, #4]
|
||||
ldrltsh r2, [r0, #0x14]
|
||||
rsblt r2, r2, #0
|
||||
movge r2, #5
|
||||
strge r2, [r0, #4]
|
||||
ldrgesh r2, [r0, #0x14]
|
||||
strh r2, [r0, #0x12]
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
bx lr
|
||||
arm_func_end sub_0200BB88
|
||||
|
||||
arm_func_start sub_0200BBF8
|
||||
sub_0200BBF8: ; 0x0200BBF8
|
||||
mov ip, #1
|
||||
cmp r1, #0
|
||||
movlt r1, #0x1e
|
||||
str ip, [r0]
|
||||
cmp r2, r3
|
||||
movgt ip, #3
|
||||
strgt ip, [r0, #4]
|
||||
subgt ip, r2, r3
|
||||
strgth ip, [r0, #0x12]
|
||||
bgt _0200BC40
|
||||
movlt ip, #2
|
||||
strlt ip, [r0, #4]
|
||||
sublt ip, r3, r2
|
||||
strlth ip, [r0, #0x12]
|
||||
movge ip, #1
|
||||
strge ip, [r0, #4]
|
||||
movge ip, #0
|
||||
strgeh ip, [r0, #0x12]
|
||||
_0200BC40:
|
||||
str r1, [r0, #8]
|
||||
str r1, [r0, #0xc]
|
||||
strh r2, [r0, #0x14]
|
||||
strh r3, [r0, #0x10]
|
||||
bx lr
|
||||
arm_func_end sub_0200BBF8
|
||||
12
include/main_0200B330.h
Normal file
12
include/main_0200B330.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef PMDSKY_MAIN_0200B330_H
|
||||
#define PMDSKY_MAIN_0200B330_H
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
} unkStruct_0200B330;
|
||||
|
||||
void sub_0200B330(unkStruct_0200B330 *arg0);
|
||||
|
||||
#endif //PMDSKY_MAIN_0200B330_H
|
||||
2
main.lsf
2
main.lsf
@@ -36,6 +36,8 @@ Static main
|
||||
Object asm/main_02009DCC.o
|
||||
Object src/main_02009F9C.o
|
||||
Object asm/main_0200A124.o
|
||||
Object src/main_0200B330.o
|
||||
Object asm/main_0200B33C.o
|
||||
Object src/main_0200BC54.o
|
||||
Object asm/main_0200BC60.o
|
||||
Object src/main_0200BD2C.o
|
||||
|
||||
6
src/main_0200B330.c
Normal file
6
src/main_0200B330.c
Normal file
@@ -0,0 +1,6 @@
|
||||
#include "main_0200B330.h"
|
||||
|
||||
void sub_0200B330(unkStruct_0200B330 *arg0)
|
||||
{
|
||||
arg0->unk1 = 1;
|
||||
}
|
||||
Reference in New Issue
Block a user