Merge branch 'master' of https://github.com/martmists/pokediamond into makelcf

This commit is contained in:
PikalaxALT
2020-04-29 19:51:06 -04:00
16 changed files with 5329 additions and 5257 deletions

View File

@@ -127,7 +127,19 @@ SECTIONS {
FX_vec.o (.text)
FX_atan.o (.text)
FX.o (.text)
libgx.o (.text)
GX.o (.text)
GX_state.o (.text)
GX_vramcnt.o (.text)
GX_bgcnt.o (.text)
GX_g2.o (.text)
GX_g3b.o (.text)
GX_g3imm.o (.text)
GX_g3x.o (.text)
GX_g3_util.o (.text)
GX_load2d.o (.text)
GX_load3d.o (.text)
GX_g3.o (.text)
GX_asm.o (.text)
OS_irqHandler.o (.text)
OS_irqTable.o (.text)
OS_interrupt.o (.text)

245
arm9/asm/GX.s Normal file
View File

@@ -0,0 +1,245 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start GXx_SetMasterBrightness_
GXx_SetMasterBrightness_: ; 0x020C5978
cmp r1, #0x0
moveq r1, #0x0
streqh r1, [r0, #0x0]
bxeq lr
cmp r1, #0x0
orrgt r1, r1, #0x4000
strgth r1, [r0, #0x0]
rsble r1, r1, #0x0
orrle r1, r1, #0x8000
strleh r1, [r0, #0x0]
bx lr
arm_func_start GXS_SetGraphicsMode
GXS_SetGraphicsMode: ; 0x020C59A4
ldr r2, _020C59BC ; =0x04001000
ldr r1, [r2, #0x0]
bic r1, r1, #0x7
orr r0, r1, r0
str r0, [r2, #0x0]
bx lr
.balign 4
_020C59BC: .word 0x04001000
arm_func_start GX_SetGraphicsMode
GX_SetGraphicsMode: ; 0x020C59C0
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r3, _020C5A28 ; =0x02106810
mov lr, #0x4000000
ldrh r12, [r3, #0x0]
ldr lr, [lr, #0x0]
ldr r3, _020C5A2C ; =0x021D33C0
cmp r12, #0x0
strh r0, [r3, #0x0]
ldr r3, _020C5A30 ; =0xFFF0FFF0
moveq r0, #0x0
and r3, lr, r3
orr r0, r3, r0, lsl #0x10
orr r0, r1, r0
orr r1, r0, r2, lsl #0x3
mov r12, #0x4000000
ldr r0, _020C5A2C ; =0x021D33C0
str r1, [r12, #0x0]
ldrh r0, [r0, #0x0]
cmp r0, #0x0
ldreq r0, _020C5A28 ; =0x02106810
moveq r1, #0x0
streqh r1, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C5A28: .word 0x02106810
_020C5A2C: .word 0x021D33C0
_020C5A30: .word 0xFFF0FFF0
arm_func_start GX_DispOn
GX_DispOn: ; 0x020C5A34
ldr r0, _020C5A78 ; =0x021D33C0
ldr r1, _020C5A7C ; =0x02106810
ldrh r2, [r0, #0x0]
mov r0, #0x1
strh r0, [r1, #0x0]
cmp r2, #0x0
moveq r1, #0x4000000
ldreq r0, [r1, #0x0]
orreq r0, r0, #0x10000
streq r0, [r1, #0x0]
bxeq lr
mov r1, #0x4000000
ldr r0, [r1, #0x0]
bic r0, r0, #0x30000
orr r0, r0, r2, lsl #0x10
str r0, [r1, #0x0]
bx lr
.balign 4
_020C5A78: .word 0x021D33C0
_020C5A7C: .word 0x02106810
arm_func_start GX_DispOff
GX_DispOff: ; 0x020C5A80
stmdb sp!, {lr}
sub sp, sp, #0x4
mov lr, #0x4000000
ldr r12, [lr, #0x0]
ldr r1, _020C5AC0 ; =0x02106810
and r2, r12, #0x30000
mov r3, #0x0
ldr r0, _020C5AC4 ; =0x021D33C0
mov r2, r2, lsr #0x10
strh r3, [r1, #0x0]
strh r2, [r0, #0x0]
bic r0, r12, #0x30000
str r0, [lr, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C5AC0: .word 0x02106810
_020C5AC4: .word 0x021D33C0
arm_func_start GX_VBlankIntr
GX_VBlankIntr: ; 0x020C5AC8
ldr r2, _020C5AF4 ; =0x04000004
cmp r0, #0x0
ldrh r0, [r2, #0x0]
ldrneh r1, [r2, #0x0]
and r0, r0, #0x8
orrne r1, r1, #0x8
strneh r1, [r2, #0x0]
ldreqh r1, [r2, #0x0]
biceq r1, r1, #0x8
streqh r1, [r2, #0x0]
bx lr
.balign 4
_020C5AF4: .word 0x04000004
arm_func_start GX_HBlankIntr
GX_HBlankIntr: ; 0x020C5AF8
ldr r2, _020C5B24 ; =0x04000004
cmp r0, #0x0
ldrh r0, [r2, #0x0]
ldrneh r1, [r2, #0x0]
and r0, r0, #0x10
orrne r1, r1, #0x10
strneh r1, [r2, #0x0]
ldreqh r1, [r2, #0x0]
biceq r1, r1, #0x10
streqh r1, [r2, #0x0]
bx lr
.balign 4
_020C5B24: .word 0x04000004
arm_func_start GX_Init
GX_Init: ; 0x020C5B28
stmdb sp!, {r4-r6,lr}
ldr r3, _020C5C68 ; =0x04000304
ldr r0, _020C5C6C ; =0xFFFFFDF1
ldrh r2, [r3, #0x0]
ldr r1, _020C5C70 ; =0x0000020E
orr r2, r2, #0x8000
strh r2, [r3, #0x0]
ldrh r2, [r3, #0x0]
and r0, r2, r0
orr r0, r0, r1
strh r0, [r3, #0x0]
ldrh r0, [r3, #0x0]
orr r0, r0, #0x1
strh r0, [r3, #0x0]
bl GX_InitGXState
ldr r5, _020C5C74 ; =0x021D33BC
ldrh r0, [r5, #0x0]
cmp r0, #0x0
bne _020C5B9C
mvn r4, #0x2
_020C5B78:
bl OS_GetLockID
mov r6, r0
cmp r6, r4
bne _020C5B8C
bl OS_Terminate
_020C5B8C:
strh r6, [r5, #0x0]
ldrh r0, [r5, #0x0]
cmp r0, #0x0
beq _020C5B78
_020C5B9C:
ldr r0, _020C5C78 ; =0x04000004
mov r2, #0x0
strh r2, [r0, #0x0]
mov r1, #0x4000000
ldr r0, _020C5C7C ; =0x02106814
str r2, [r1, #0x0]
ldr r0, [r0, #0x0]
mvn r1, #0x0
cmp r0, r1
beq _020C5BF4
ldr r1, _020C5C80 ; =0x04000008
mov r3, #0x60
bl MI_DmaFill32
ldr r1, _020C5C84 ; =0x0400006C
mov r2, #0x0
ldr r0, _020C5C7C ; =0x02106814
strh r2, [r1, #0x0]
ldr r0, [r0, #0x0]
ldr r1, _020C5C88 ; =0x04001000
mov r3, #0x70
bl MI_DmaFill32
b _020C5C1C
_020C5BF4:
ldr r1, _020C5C80 ; =0x04000008
mov r0, r2
mov r2, #0x60
bl MIi_CpuClear32
ldr r3, _020C5C84 ; =0x0400006C
mov r0, #0x0
ldr r1, _020C5C88 ; =0x04001000
mov r2, #0x70
strh r0, [r3, #0x0]
bl MIi_CpuClear32
_020C5C1C:
ldr r1, _020C5C8C ; =0x04000020
mov r2, #0x100
ldr r0, _020C5C90 ; =0x04000026
strh r2, [r1, #0x0]
ldr r1, _020C5C94 ; =0x04000030
strh r2, [r0, #0x0]
ldr r0, _020C5C98 ; =0x04000036
strh r2, [r1, #0x0]
ldr r1, _020C5C9C ; =0x04001020
strh r2, [r0, #0x0]
ldr r0, _020C5CA0 ; =0x04001026
strh r2, [r1, #0x0]
ldr r1, _020C5CA4 ; =0x04001030
strh r2, [r0, #0x0]
ldr r0, _020C5CA8 ; =0x04001036
strh r2, [r1, #0x0]
strh r2, [r0, #0x0]
ldmia sp!, {r4-r6,lr}
bx lr
.balign 4
_020C5C68: .word 0x04000304
_020C5C6C: .word 0xFFFFFDF1
_020C5C70: .word 0x0000020E
_020C5C74: .word 0x021D33BC
_020C5C78: .word 0x04000004
_020C5C7C: .word 0x02106814
_020C5C80: .word 0x04000008
_020C5C84: .word 0x0400006C
_020C5C88: .word 0x04001000
_020C5C8C: .word 0x04000020
_020C5C90: .word 0x04000026
_020C5C94: .word 0x04000030
_020C5C98: .word 0x04000036
_020C5C9C: .word 0x04001020
_020C5CA0: .word 0x04001026
_020C5CA4: .word 0x04001030
_020C5CA8: .word 0x04001036

16
arm9/asm/GX_asm.s Normal file
View File

@@ -0,0 +1,16 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start GX_SendFifo48B
GX_SendFifo48B: ; 0x020C9BE8
ldmia r0!, {r2-r3,r12}
stmia r1, {r2-r3,r12}
ldmia r0!, {r2-r3,r12}
stmia r1, {r2-r3,r12}
ldmia r0!, {r2-r3,r12}
stmia r1, {r2-r3,r12}
ldmia r0!, {r2-r3,r12}
stmia r1, {r2-r3,r12}
bx lr

422
arm9/asm/GX_bgcnt.s Normal file
View File

@@ -0,0 +1,422 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start G2S_GetBG3CharPtr
G2S_GetBG3CharPtr: ; 0x020C6F60
ldr r1, _020C6FA8 ; =0x04001000
ldr r0, _020C6FAC ; =0x0400100E
ldr r1, [r1, #0x0]
ldrh r2, [r0, #0x0]
and r0, r1, #0x7
cmp r0, #0x3
blt _020C6F8C
cmp r0, #0x6
bge _020C6FA0
ands r0, r2, #0x80
bne _020C6FA0
_020C6F8C:
and r0, r2, #0x3c
mov r0, r0, lsr #0x2
mov r0, r0, lsl #0xe
add r0, r0, #0x6200000
bx lr
_020C6FA0:
mov r0, #0x0
bx lr
.balign 4
_020C6FA8: .word 0x04001000
_020C6FAC: .word 0x0400100E
arm_func_start G2_GetBG3CharPtr
G2_GetBG3CharPtr: ; 0x020C6FB0
mov r0, #0x4000000
ldr r1, [r0, #0x0]
ldr r0, _020C700C ; =0x0400000E
and r1, r1, #0x7
cmp r1, #0x3
ldrh r2, [r0, #0x0]
blt _020C6FDC
cmp r1, #0x6
bge _020C7004
ands r0, r2, #0x80
bne _020C7004
_020C6FDC:
mov r0, #0x4000000
ldr r1, [r0, #0x0]
and r0, r2, #0x3c
and r1, r1, #0x7000000
mov r1, r1, lsr #0x18
mov r1, r1, lsl #0x10
add r1, r1, #0x6000000
mov r0, r0, lsr #0x2
add r0, r1, r0, lsl #0xe
bx lr
_020C7004:
mov r0, #0x0
bx lr
.balign 4
_020C700C: .word 0x0400000E
arm_func_start G2S_GetBG2CharPtr
G2S_GetBG2CharPtr: ; 0x020C7010
ldr r1, _020C7050 ; =0x04001000
ldr r0, _020C7054 ; =0x0400100C
ldr r1, [r1, #0x0]
ldrh r2, [r0, #0x0]
and r0, r1, #0x7
cmp r0, #0x5
blt _020C7034
ands r0, r2, #0x80
bne _020C7048
_020C7034:
and r0, r2, #0x3c
mov r0, r0, lsr #0x2
mov r0, r0, lsl #0xe
add r0, r0, #0x6200000
bx lr
_020C7048:
mov r0, #0x0
bx lr
.balign 4
_020C7050: .word 0x04001000
_020C7054: .word 0x0400100C
arm_func_start G2_GetBG2CharPtr
G2_GetBG2CharPtr: ; 0x020C7058
mov r0, #0x4000000
ldr r1, [r0, #0x0]
ldr r0, _020C70AC ; =0x0400000C
and r1, r1, #0x7
cmp r1, #0x5
ldrh r2, [r0, #0x0]
blt _020C707C
ands r0, r2, #0x80
bne _020C70A4
_020C707C:
mov r0, #0x4000000
ldr r1, [r0, #0x0]
and r0, r2, #0x3c
and r1, r1, #0x7000000
mov r1, r1, lsr #0x18
mov r1, r1, lsl #0x10
add r1, r1, #0x6000000
mov r0, r0, lsr #0x2
add r0, r1, r0, lsl #0xe
bx lr
_020C70A4:
mov r0, #0x0
bx lr
.balign 4
_020C70AC: .word 0x0400000C
arm_func_start G2S_GetBG1CharPtr
G2S_GetBG1CharPtr: ; 0x020C70B0
ldr r0, _020C70CC ; =0x0400100A
ldrh r0, [r0, #0x0]
and r0, r0, #0x3c
mov r0, r0, asr #0x2
mov r0, r0, lsl #0xe
add r0, r0, #0x6200000
bx lr
.balign 4
_020C70CC: .word 0x0400100A
arm_func_start G2_GetBG1CharPtr
G2_GetBG1CharPtr: ; 0x020C70D0
ldr r1, _020C7100 ; =0x0400000A
mov r0, #0x4000000
ldrh r1, [r1, #0x0]
ldr r0, [r0, #0x0]
and r0, r0, #0x7000000
mov r0, r0, lsr #0x18
and r1, r1, #0x3c
mov r0, r0, lsl #0x10
mov r1, r1, asr #0x2
add r0, r0, #0x6000000
add r0, r0, r1, lsl #0xe
bx lr
.balign 4
_020C7100: .word 0x0400000A
arm_func_start G2S_GetBG0CharPtr
G2S_GetBG0CharPtr: ; 0x020C7104
ldr r0, _020C7120 ; =0x04001008
ldrh r0, [r0, #0x0]
and r0, r0, #0x3c
mov r0, r0, asr #0x2
mov r0, r0, lsl #0xe
add r0, r0, #0x6200000
bx lr
.balign 4
_020C7120: .word 0x04001008
arm_func_start G2_GetBG0CharPtr
G2_GetBG0CharPtr: ; 0x020C7124
ldr r1, _020C7154 ; =0x04000008
mov r0, #0x4000000
ldrh r1, [r1, #0x0]
ldr r0, [r0, #0x0]
and r0, r0, #0x7000000
mov r0, r0, lsr #0x18
and r1, r1, #0x3c
mov r0, r0, lsl #0x10
mov r1, r1, asr #0x2
add r0, r0, #0x6000000
add r0, r0, r1, lsl #0xe
bx lr
.balign 4
_020C7154: .word 0x04000008
arm_func_start G2S_GetBG3ScrPtr
G2S_GetBG3ScrPtr: ; 0x020C7158
ldr r1, _020C71D0 ; =0x04001000
ldr r0, _020C71D4 ; =0x0400100E
ldr r1, [r1, #0x0]
ldrh r2, [r0, #0x0]
and r3, r1, #0x7
cmp r3, #0x6
and r0, r2, #0x1f00
mov r1, r0, lsr #0x8
addls pc, pc, r3, lsl #0x2
b _020C71C8
_020C7180: ; 0x020C7180
b _020C719C
_020C7184: ; 0x020C7184
b _020C719C
_020C7188: ; 0x020C7188
b _020C719C
_020C718C: ; 0x020C718C
b _020C71A8
_020C7190: ; 0x020C7190
b _020C71A8
_020C7194: ; 0x020C7194
b _020C71A8
_020C7198: ; 0x020C7198
b _020C71C0
_020C719C:
mov r0, r1, lsl #0xb
add r0, r0, #0x6200000
bx lr
_020C71A8:
ands r0, r2, #0x80
movne r0, r1, lsl #0xe
addne r0, r0, #0x6200000
moveq r0, r1, lsl #0xb
addeq r0, r0, #0x6200000
bx lr
_020C71C0:
mov r0, #0x0
bx lr
_020C71C8:
mov r0, #0x0
bx lr
.balign 4
_020C71D0: .word 0x04001000
_020C71D4: .word 0x0400100E
arm_func_start G2_GetBG3ScrPtr
G2_GetBG3ScrPtr: ; 0x020C71D8
ldr r0, _020C7260 ; =0x0400000E
mov r2, #0x4000000
ldr r1, [r2, #0x0]
ldrh r3, [r0, #0x0]
ldr r0, [r2, #0x0]
and r12, r1, #0x7
and r0, r0, #0x38000000
mov r1, r0, lsr #0x1b
and r0, r3, #0x1f00
mov r2, r1, lsl #0x10
cmp r12, #0x6
mov r1, r0, lsr #0x8
addls pc, pc, r12, lsl #0x2
b _020C7258
_020C7210:
b _020C722C
_020C7214:
b _020C722C
_020C7218:
b _020C722C
_020C721C:
b _020C7238
_020C7220:
b _020C7238
_020C7224:
b _020C7238
_020C7228:
b _020C7250
_020C722C:
add r0, r2, #0x6000000
add r0, r0, r1, lsl #0xb
bx lr
_020C7238:
ands r0, r3, #0x80
movne r0, r1, lsl #0xe
addne r0, r0, #0x6000000
addeq r0, r2, #0x6000000
addeq r0, r0, r1, lsl #0xb
bx lr
_020C7250:
mov r0, #0x0
bx lr
_020C7258:
mov r0, #0x0
bx lr
.balign 4
_020C7260: .word 0x0400000E
arm_func_start G2S_GetBG2ScrPtr
G2S_GetBG2ScrPtr: ; 0x020C7264
ldr r1, _020C72DC ; =0x04001000
ldr r0, _020C72E0 ; =0x0400100C
ldr r1, [r1, #0x0]
ldrh r2, [r0, #0x0]
and r3, r1, #0x7
cmp r3, #0x6
and r0, r2, #0x1f00
mov r1, r0, lsr #0x8
addls pc, pc, r3, lsl #0x2
b _020C72D4
_020C728C: ; 0x020C728C
b _020C72A8
_020C7290: ; 0x020C7290
b _020C72A8
_020C7294: ; 0x020C7294
b _020C72A8
_020C7298: ; 0x020C7298
b _020C72A8
_020C729C: ; 0x020C729C
b _020C72A8
_020C72A0: ; 0x020C72A0
b _020C72B4
_020C72A4: ; 0x020C72A4
b _020C72CC
_020C72A8:
mov r0, r1, lsl #0xb
add r0, r0, #0x6200000
bx lr
_020C72B4:
ands r0, r2, #0x80
movne r0, r1, lsl #0xe
addne r0, r0, #0x6200000
moveq r0, r1, lsl #0xb
addeq r0, r0, #0x6200000
bx lr
_020C72CC:
mov r0, #0x0
bx lr
_020C72D4:
mov r0, #0x0
bx lr
.balign 4
_020C72DC: .word 0x04001000
_020C72E0: .word 0x0400100C
arm_func_start G2_GetBG2ScrPtr
G2_GetBG2ScrPtr: ; 0x020C72E4
ldr r0, _020C736C ; =0x0400000C
mov r2, #0x4000000
ldr r1, [r2, #0x0]
ldrh r3, [r0, #0x0]
ldr r0, [r2, #0x0]
and r12, r1, #0x7
and r0, r0, #0x38000000
mov r1, r0, lsr #0x1b
and r0, r3, #0x1f00
mov r2, r1, lsl #0x10
cmp r12, #0x6
mov r1, r0, lsr #0x8
addls pc, pc, r12, lsl #0x2
b _020C7364
_020C731C:
b _020C7338
_020C7320:
b _020C7338
_020C7324:
b _020C7338
_020C7328:
b _020C7338
_020C732C:
b _020C7338
_020C7330:
b _020C7344
_020C7334:
b _020C735C
_020C7338:
add r0, r2, #0x6000000
add r0, r0, r1, lsl #0xb
bx lr
_020C7344:
ands r0, r3, #0x80
movne r0, r1, lsl #0xe
addne r0, r0, #0x6000000
addeq r0, r2, #0x6000000
addeq r0, r0, r1, lsl #0xb
bx lr
_020C735C:
mov r0, #0x6000000
bx lr
_020C7364:
mov r0, #0x0
bx lr
.balign 4
_020C736C: .word 0x0400000C
arm_func_start G2S_GetBG1ScrPtr
G2S_GetBG1ScrPtr: ; 0x020C7370
ldr r0, _020C738C ; =0x0400100A
ldrh r0, [r0, #0x0]
and r0, r0, #0x1f00
mov r0, r0, asr #0x8
mov r0, r0, lsl #0xb
add r0, r0, #0x6200000
bx lr
.balign 4
_020C738C: .word 0x0400100A
arm_func_start G2_GetBG1ScrPtr
G2_GetBG1ScrPtr: ; 0x020C7390
ldr r1, _020C73C0 ; =0x0400000A
mov r0, #0x4000000
ldrh r1, [r1, #0x0]
ldr r0, [r0, #0x0]
and r0, r0, #0x38000000
mov r0, r0, lsr #0x1b
and r1, r1, #0x1f00
mov r0, r0, lsl #0x10
mov r1, r1, asr #0x8
add r0, r0, #0x6000000
add r0, r0, r1, lsl #0xb
bx lr
.balign 4
_020C73C0: .word 0x0400000A
arm_func_start G2S_GetBG0ScrPtr
G2S_GetBG0ScrPtr: ; 0x020C73C4
ldr r0, _020C73E0 ; =0x04001008
ldrh r0, [r0, #0x0]
and r0, r0, #0x1f00
mov r0, r0, asr #0x8
mov r0, r0, lsl #0xb
add r0, r0, #0x6200000
bx lr
.balign 4
_020C73E0: .word 0x04001008
arm_func_start G2_GetBG0ScrPtr
G2_GetBG0ScrPtr: ; 0x020C73E4
ldr r1, _020C7414 ; =0x04000008
mov r0, #0x4000000
ldrh r1, [r1, #0x0]
ldr r0, [r0, #0x0]
and r0, r0, #0x38000000
mov r0, r0, lsr #0x1b
and r1, r1, #0x1f00
mov r0, r0, lsl #0x10
mov r1, r1, asr #0x8
add r0, r0, #0x6000000
add r0, r0, r1, lsl #0xb
bx lr
.balign 4
_020C7414: .word 0x04000008

121
arm9/asm/GX_g2.s Normal file
View File

@@ -0,0 +1,121 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start G2x_ChangeBlendBrightness_
G2x_ChangeBlendBrightness_: ; 0x020C7418
cmp r1, #0x0
ldrh r3, [r0, #0x0]
bge _020C7444
and r2, r3, #0xc0
cmp r2, #0x80
biceq r2, r3, #0xc0
orreq r2, r2, #0xc0
streqh r2, [r0, #0x0]
rsb r1, r1, #0x0
strh r1, [r0, #0x4]
bx lr
_020C7444:
and r2, r3, #0xc0
cmp r2, #0xc0
biceq r2, r3, #0xc0
orreq r2, r2, #0x80
streqh r2, [r0, #0x0]
strh r1, [r0, #0x4]
bx lr
arm_func_start G2x_SetBlendBrightnessExt_
G2x_SetBlendBrightnessExt_: ; 0x020C7460
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr lr, [sp, #0x8]
ldr r12, [sp, #0xc]
orr r3, r3, lr, lsl #0x8
cmp r12, #0x0
orrge r1, r1, #0x80
strh r3, [r0, #0x2]
orrge r1, r1, r2, lsl #0x8
strgeh r1, [r0, #0x0]
strgeh r12, [r0, #0x4]
addge sp, sp, #0x4
ldmgeia sp!, {lr}
bxge lr
orr r1, r1, #0xc0
orr r1, r1, r2, lsl #0x8
strh r1, [r0, #0x0]
rsb r1, r12, #0x0
strh r1, [r0, #0x4]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start G2x_SetBlendBrightness_
G2x_SetBlendBrightness_: ; 0x020C74B8
cmp r2, #0x0
orrlt r1, r1, #0xc0
strlth r1, [r0, #0x0]
rsblt r1, r2, #0x0
strlth r1, [r0, #0x4]
orrge r1, r1, #0x80
strgeh r1, [r0, #0x0]
strgeh r2, [r0, #0x4]
bx lr
arm_func_start G2x_SetBlendAlpha_
G2x_SetBlendAlpha_: ; 0x020C74DC
ldr r12, [sp, #0x0]
orr r1, r1, #0x40
orr r2, r1, r2, lsl #0x8
orr r1, r3, r12, lsl #0x8
orr r1, r2, r1, lsl #0x10
str r1, [r0, #0x0]
bx lr
arm_func_start G2x_SetBGyAffine_
G2x_SetBGyAffine_: ; 0x020C74F8
stmdb sp!, {r4-r6,lr}
ldr r5, [r1, #0x0]
ldr r4, [r1, #0x4]
mov r12, r5, lsl #0xc
mov lr, r4, lsl #0xc
mov r5, r12, asr #0x10
mov r4, lr, asr #0x10
mov r12, r5, lsl #0x10
mov lr, r4, lsl #0x10
mov r5, r12, lsr #0x10
mov r4, lr, lsr #0x10
orr r4, r5, r4, lsl #0x10
str r4, [r0, #0x0]
ldr r5, [r1, #0x8]
ldr r4, [r1, #0xc]
mov r12, r5, lsl #0xc
mov lr, r4, lsl #0xc
mov r5, r12, asr #0x10
mov r4, lr, asr #0x10
mov r12, r5, lsl #0x10
mov lr, r4, lsl #0x10
ldr r4, [sp, #0x14]
ldr r6, [sp, #0x10]
mov r12, r12, lsr #0x10
mov r5, lr, lsr #0x10
orr r5, r12, r5, lsl #0x10
str r5, [r0, #0x4]
ldr r12, [r1, #0x4]
sub r5, r4, r3
ldr r4, [r1, #0xc]
mul lr, r12, r5
mul r5, r4, r5
ldr r12, [r1, #0x0]
sub r6, r6, r2
ldr r4, [r1, #0x8]
mla r1, r12, r6, lr
mla r5, r4, r6, r5
add r1, r1, r2, lsl #0xc
add r2, r5, r3, lsl #0xc
mov r1, r1, asr #0x4
str r1, [r0, #0x8]
mov r1, r2, asr #0x4
str r1, [r0, #0xc]
ldmia sp!, {r4-r6,lr}
bx lr

72
arm9/asm/GX_g3.s Normal file
View File

@@ -0,0 +1,72 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start G3_EndMakeDL
G3_EndMakeDL: ; 0x020C9B18
ldr r3, [r0, #0x0]
ldr r2, [r0, #0x8]
cmp r2, r3
moveq r0, #0x0
bxeq lr
and r1, r3, #0x3
cmp r1, #0x3
addls pc, pc, r1, lsl #0x2
b _020C9B8C
_020C9B3C:
b _020C9B4C
_020C9B40:
b _020C9B54
_020C9B44:
b _020C9B64
_020C9B48:
b _020C9B78
_020C9B4C:
sub r0, r3, r2
bx lr
_020C9B54:
add r1, r3, #0x1
str r1, [r0, #0x0]
mov r1, #0x0
strb r1, [r3, #0x0]
_020C9B64:
ldr r3, [r0, #0x0]
mov r1, #0x0
add r2, r3, #0x1
str r2, [r0, #0x0]
strb r1, [r3, #0x0]
_020C9B78:
ldr r3, [r0, #0x0]
mov r1, #0x0
add r2, r3, #0x1
str r2, [r0, #0x0]
strb r1, [r3, #0x0]
_020C9B8C:
ldr r1, [r0, #0x10]
cmp r1, #0x0
beq _020C9BB0
ldr r3, [r0, #0x4]
mov r1, #0x0
add r2, r3, #0x4
str r2, [r0, #0x4]
str r1, [r3, #0x0]
str r1, [r0, #0x10]
_020C9BB0:
ldr r1, [r0, #0x4]
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
ldr r0, [r0, #0x8]
sub r0, r1, r0
bx lr
arm_func_start G3_BeginMakeDL
G3_BeginMakeDL: ; 0x020C9BC8
str r2, [r0, #0xc]
str r1, [r0, #0x8]
str r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
mov r1, #0x0
str r1, [r0, #0x10]
bx lr

503
arm9/asm/GX_g3_util.s Normal file
View File

@@ -0,0 +1,503 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start G3_RotZ
G3_RotZ: ; 0x020C7FF0
ldr r3, _020C8028 ; =0x04000468
mov r2, #0x0
str r1, [r3, #0x0]
str r0, [r3, #0x0]
str r2, [r3, #0x0]
rsb r0, r0, #0x0
str r0, [r3, #0x0]
str r1, [r3, #0x0]
str r2, [r3, #0x0]
str r2, [r3, #0x0]
str r2, [r3, #0x0]
mov r0, #0x1000
str r0, [r3, #0x0]
bx lr
.balign 4
_020C8028: .word 0x04000468
arm_func_start G3_RotY
G3_RotY: ; 0x020C802C
ldr ip, _020C8064 ; =0x04000468
mov r3, #0x0
str r1, [r12, #0x0]
str r3, [r12, #0x0]
rsb r2, r0, #0x0
str r2, [r12, #0x0]
str r3, [r12, #0x0]
mov r2, #0x1000
str r2, [r12, #0x0]
str r3, [r12, #0x0]
str r0, [r12, #0x0]
str r3, [r12, #0x0]
str r1, [r12, #0x0]
bx lr
.balign 4
_020C8064: .word 0x04000468
arm_func_start G3_RotX
G3_RotX: ; 0x020C8068
ldr r3, _020C80A0 ; =0x04000468
mov r2, #0x1000
str r2, [r3, #0x0]
mov r2, #0x0
str r2, [r3, #0x0]
str r2, [r3, #0x0]
str r2, [r3, #0x0]
str r1, [r3, #0x0]
str r0, [r3, #0x0]
str r2, [r3, #0x0]
rsb r0, r0, #0x0
str r0, [r3, #0x0]
str r1, [r3, #0x0]
bx lr
.balign 4
_020C80A0: .word 0x04000468
arm_func_start G3i_LookAt_
G3i_LookAt_: ; 0x020C80A4
stmdb sp!, {r4-r9,lr}
sub sp, sp, #0x24
mov r9, r0
ldr r6, [r9, #0x0]
ldr r5, [r2, #0x0]
add r0, sp, #0x0
sub r5, r6, r5
str r5, [sp, #0x0]
ldr r7, [r9, #0x4]
ldr r6, [r2, #0x4]
mov r5, r1
sub r1, r7, r6
str r1, [sp, #0x4]
ldr r6, [r9, #0x8]
ldr r2, [r2, #0x8]
mov r1, r0
sub r2, r6, r2
mov r8, r3
str r2, [sp, #0x8]
ldr r7, [sp, #0x40]
bl VEC_Normalize
add r1, sp, #0x0
add r2, sp, #0xc
mov r0, r5
bl VEC_CrossProduct
add r0, sp, #0xc
mov r1, r0
bl VEC_Normalize
_020C8114: ; 0x020C8114
add r0, sp, #0x0
add r1, sp, #0xc
add r2, sp, #0x18
bl VEC_CrossProduct
_020C8124: ; 0x020C8124
cmp r8, #0x0
beq _020C8184
ldr r0, _020C8234 ; =0x04000440
mov r1, #0x2
str r1, [r0, #0x0]
ldr r0, [sp, #0xc]
ldr r4, _020C8238 ; =0x0400045C
str r0, [r4, #0x0]
ldr r0, [sp, #0x18]
str r0, [r4, #0x0]
ldr r0, [sp, #0x0]
str r0, [r4, #0x0]
ldr r0, [sp, #0x10]
str r0, [r4, #0x0]
ldr r0, [sp, #0x1c]
str r0, [r4, #0x0]
ldr r0, [sp, #0x4]
str r0, [r4, #0x0]
ldr r0, [sp, #0x14]
str r0, [r4, #0x0]
ldr r0, [sp, #0x20]
str r0, [r4, #0x0]
ldr r0, [sp, #0x8]
str r0, [r4, #0x0]
_020C8184:
add r1, sp, #0xc
mov r0, r9
bl VEC_DotProduct
rsb r6, r0, #0x0
add r1, sp, #0x18
mov r0, r9
bl VEC_DotProduct
rsb r5, r0, #0x0
add r1, sp, #0x0
mov r0, r9
bl VEC_DotProduct
_020C81B0: ; 0x020C81B0
cmp r8, #0x0
strne r6, [r4, #0x0]
rsb r0, r0, #0x0
strne r5, [r4, #0x0]
strne r0, [r4, #0x0]
cmp r7, #0x0
addeq sp, sp, #0x24
ldmeqia sp!, {r4-r9,lr}
bxeq lr
ldr r1, [sp, #0xc]
str r1, [r7, #0x0]
ldr r1, [sp, #0x18]
str r1, [r7, #0x4]
ldr r1, [sp, #0x0]
str r1, [r7, #0x8]
ldr r1, [sp, #0x10]
str r1, [r7, #0xc]
ldr r1, [sp, #0x1c]
str r1, [r7, #0x10]
ldr r1, [sp, #0x4]
str r1, [r7, #0x14]
ldr r1, [sp, #0x14]
str r1, [r7, #0x18]
ldr r1, [sp, #0x20]
str r1, [r7, #0x1c]
ldr r1, [sp, #0x8]
str r1, [r7, #0x20]
str r6, [r7, #0x24]
str r5, [r7, #0x28]
str r0, [r7, #0x2c]
add sp, sp, #0x24
ldmia sp!, {r4-r9,lr}
bx lr
.balign 4
_020C8234: .word 0x04000440
_020C8238: .word 0x0400045C
arm_func_start G3i_OrthoW_
G3i_OrthoW_: ; 0x020C823C
stmdb sp!, {r4-r11,lr}
sub sp, sp, #0x34
str r2, [sp, #0x8]
str r0, [sp, #0x0]
ldr r0, [sp, #0x8]
mov r2, r3
ldr r7, [sp, #0x64]
sub r0, r2, r0
str r3, [sp, #0xc]
str r1, [sp, #0x4]
ldr r8, [sp, #0x60]
ldr r6, [sp, #0x68]
bl FX_InvAsync
_020C8270: ; 0x020C8270
cmp r7, #0x0
ldrne r0, _020C8528 ; =0x04000440
movne r1, #0x0
ldrne r4, _020C852C ; =0x04000458
strne r1, [r0, #0x0]
cmp r6, #0x0
beq _020C82B8
mov r0, #0x0
str r0, [r6, #0x4]
str r0, [r6, #0x8]
str r0, [r6, #0xc]
str r0, [r6, #0x10]
str r0, [r6, #0x18]
str r0, [r6, #0x1c]
str r0, [r6, #0x20]
str r0, [r6, #0x24]
str r0, [r6, #0x2c]
str r8, [r6, #0x3c]
_020C82B8:
bl FX_GetDivResultFx64c
mov r5, r0
str r1, [sp, #0x14]
ldr sb, _020C8530 ; =0x04000290
mov r3, #0x0
ldr r1, [sp, #0x0]
ldr r0, [sp, #0x4]
str r3, [r9, #0x0]
mov r2, #0x1000
sub r1, r1, r0
ldr r0, _020C8534 ; =0x04000298
str r2, [r9, #0x4]
str r1, [r0, #0x0]
cmp r8, #0x1000
str r3, [r0, #0x4]
beq _020C8318
mov r9, r8, asr #0x1f
umull r0, r1, r5, r8
mla r1, r5, r9, r1
ldr r5, [sp, #0x14]
mla r1, r5, r8, r1
bl _ll_sdiv
mov r5, r0
str r1, [sp, #0x14]
_020C8318:
ldr r0, [sp, #0x14]
mov r2, r5, lsl #0xd
mov r1, r0, lsl #0xd
mov r0, #0x80000000
adds r0, r2, r0
orr r1, r1, r5, lsr #0x13
adc r1, r1, #0x0
cmp r7, #0x0
mov r0, #0x0
strne r1, [r4, #0x0]
strne r0, [r4, #0x0]
strne r0, [r4, #0x0]
strne r0, [r4, #0x0]
strne r0, [r4, #0x0]
cmp r6, #0x0
strne r1, [r6, #0x0]
bl FX_GetDivResultFx64c
mov r11, r0
str r1, [sp, #0x2c]
ldr r0, _020C8530 ; =0x04000290
mov r3, #0x0
mov r2, #0x1000
str r3, [r0, #0x0]
str r2, [r0, #0x4]
ldr r9, [sp, #0x58]
ldr r1, [sp, #0x5c]
ldr r0, _020C8534 ; =0x04000298
sub r1, r9, r1
str r1, [r0, #0x0]
cmp r8, #0x1000
str r3, [r0, #0x4]
beq _020C83B8
mov r9, r8, asr #0x1f
umull r0, r1, r11, r8
mla r1, r11, r9, r1
ldr r9, [sp, #0x2c]
mla r1, r9, r8, r1
bl _ll_sdiv
mov r11, r0
str r1, [sp, #0x2c]
_020C83B8:
ldr r0, [sp, #0x2c]
mov r3, r11, lsl #0xd
mov r2, r0, lsl #0xd
mov r0, #0x80000000
orr r2, r2, r11, lsr #0x13
adds r0, r3, r0
adc r0, r2, #0x0
cmp r7, #0x0
mov r1, #0x0
strne r0, [r4, #0x0]
strne r1, [r4, #0x0]
strne r1, [r4, #0x0]
strne r1, [r4, #0x0]
strne r1, [r4, #0x0]
cmp r6, #0x0
strne r0, [r6, #0x14]
bl FX_GetDivResultFx64c
cmp r8, #0x1000
beq _020C8428
mov r9, r8, asr #0x1f
mov r2, #0x1000
mov r3, #0x0
umull r12, r10, r0, r8
mla r10, r0, r9, r10
mov r0, r12
mla r10, r1, r8, r10
mov r1, r10
bl _ll_sdiv
_020C8428:
mov r9, r1, lsl #0xd
mov r10, r0, lsl #0xd
mov r2, #0x80000000
orr r9, r9, r0, lsr #0x13
adds r2, r10, r2
adc r2, r9, #0x0
cmp r7, #0x0
mov r3, #0x0
strne r2, [r4, #0x0]
strne r3, [r4, #0x0]
cmp r6, #0x0
strne r2, [r6, #0x28]
ldr r3, [sp, #0xc]
ldr r2, [sp, #0x8]
add r9, r3, r2
rsb lr, r9, #0x0
ldr r3, [sp, #0x0]
ldr r2, [sp, #0x4]
ldr r9, [sp, #0x5c]
add r2, r3, r2
ldr r3, [sp, #0x58]
rsb r12, r2, #0x0
add r3, r9, r3
mov r9, r12, asr #0x1f
str r9, [sp, #0x20]
mov r9, r3, asr #0x1f
str r9, [sp, #0x24]
umull r10, r9, r5, lr
mov r2, lr, asr #0x1f
str r2, [sp, #0x1c]
str r10, [sp, #0x18]
ldr r10, [sp, #0x1c]
mov r2, #0x80000000
mla r9, r5, r10, r9
ldr r5, [sp, #0x14]
mla r9, r5, lr, r9
ldr r5, [sp, #0x18]
adds r5, r5, r2
adc r10, r9, #0x0
ldr r5, [sp, #0x20]
umull lr, r9, r11, r12
mla r9, r11, r5, r9
ldr r5, [sp, #0x2c]
mla r9, r5, r12, r9
adds r5, lr, r2
adc r5, r9, #0x0
umull r11, r9, r0, r3
adds r2, r11, r2
ldr r2, [sp, #0x24]
mla r9, r0, r2, r9
mla r9, r1, r3, r9
adc r0, r9, #0x0
cmp r7, #0x0
strne r10, [r4, #0x0]
strne r5, [r4, #0x0]
strne r0, [r4, #0x0]
strne r8, [r4, #0x0]
cmp r6, #0x0
strne r10, [r6, #0x30]
strne r5, [r6, #0x34]
strne r0, [r6, #0x38]
add sp, sp, #0x34
ldmia sp!, {r4-r11,lr}
bx lr
.balign 4
_020C8528: .word 0x04000440
_020C852C: .word 0x04000458
_020C8530: .word 0x04000290
_020C8534: .word 0x04000298
arm_func_start G3i_PerspectiveW_
G3i_PerspectiveW_: ; 0x020C8538
stmdb sp!, {r4-r10,lr}
mov r5, r0
mov r0, r1
mov r1, r5
ldr r6, [sp, #0x24]
mov r9, r2
mov r8, r3
ldr r5, [sp, #0x2c]
bl FX_Div
mov r7, r0
cmp r6, #0x1000
mulne r1, r7, r6
movne r0, r1, asr #0xb
addne r0, r1, r0, lsr #0x14
movne r7, r0, asr #0xc
ldr r0, [sp, #0x28]
ldr r2, _020C8718 ; =0x04000290
cmp r0, #0x0
mov r3, #0x0
str r3, [r2, #0x0]
ldr r1, _020C871C ; =0x04000298
str r7, [r2, #0x4]
str r9, [r1, #0x0]
ldrne r0, _020C8720 ; =0x04000440
str r3, [r1, #0x4]
ldrne r4, _020C8724 ; =0x04000458
strne r3, [r0, #0x0]
cmp r5, #0x0
beq _020C85E4
mov r1, #0x0
str r1, [r5, #0x4]
str r1, [r5, #0x8]
str r1, [r5, #0xc]
str r1, [r5, #0x10]
str r1, [r5, #0x18]
str r1, [r5, #0x1c]
str r1, [r5, #0x20]
str r1, [r5, #0x24]
rsb r0, r6, #0x0
str r0, [r5, #0x2c]
str r1, [r5, #0x30]
str r1, [r5, #0x34]
str r1, [r5, #0x3c]
_020C85E4:
bl FX_GetDivResult
ldr r3, [sp, #0x20]
ldr r1, [sp, #0x28]
ldr sb, _020C8718 ; =0x04000290
mov r12, #0x0
str r12, [r9, #0x0]
mov r10, #0x1000
ldr r2, _020C871C ; =0x04000298
str r10, [r9, #0x4]
sub r3, r8, r3
str r3, [r2, #0x0]
str r12, [r2, #0x4]
cmp r1, #0x0
beq _020C8644
str r0, [r4, #0x0]
str r12, [r4, #0x0]
str r12, [r4, #0x0]
str r12, [r4, #0x0]
str r12, [r4, #0x0]
str r7, [r4, #0x0]
str r12, [r4, #0x0]
str r12, [r4, #0x0]
str r12, [r4, #0x0]
str r12, [r4, #0x0]
_020C8644:
cmp r5, #0x0
strne r0, [r5, #0x0]
strne r7, [r5, #0x14]
bl FX_GetDivResultFx64c
cmp r6, #0x1000
beq _020C8680
mov r2, r6, asr #0x1f
umull r7, r3, r0, r6
mla r3, r0, r2, r3
mla r3, r1, r6, r3
mov r0, r7
mov r1, r3
mov r2, #0x1000
mov r3, #0x0
bl _ll_sdiv
_020C8680:
ldr r3, [sp, #0x20]
mov r10, r8, lsl #0x1
add r12, r3, r8
mov r2, r12, asr #0x1f
umull r7, lr, r0, r12
mla lr, r0, r2, lr
mov r9, #0x80000000
smull r3, r2, r10, r3
mla lr, r1, r12, lr
adds r7, r7, r9
mov r8, #0x800
adc r7, lr, #0x0
adds r3, r3, r8
adc r2, r2, #0x0
mov r3, r3, lsr #0xc
orr r3, r3, r2, lsl #0x14
umull r10, r8, r0, r3
mov r2, r3, asr #0x1f
adds r9, r10, r9
mla r8, r0, r2, r8
mla r8, r1, r3, r8
ldr r0, [sp, #0x28]
adc r2, r8, #0x0
cmp r0, #0x0
mov r0, #0x0
beq _020C8704
str r7, [r4, #0x0]
rsb r1, r6, #0x0
str r1, [r4, #0x0]
str r0, [r4, #0x0]
str r0, [r4, #0x0]
str r2, [r4, #0x0]
str r0, [r4, #0x0]
_020C8704:
cmp r5, #0x0
strne r7, [r5, #0x28]
strne r2, [r5, #0x38]
ldmia sp!, {r4-r10,lr}
bx lr
.balign 4
_020C8718: .word 0x04000290
_020C871C: .word 0x04000298
_020C8720: .word 0x04000440
_020C8724: .word 0x04000458

269
arm9/asm/GX_g3b.s Normal file
View File

@@ -0,0 +1,269 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start G3B_End
G3B_End: ; 0x020C75AC
ldr r1, [r0, #0x0]
mov r2, #0x41
str r2, [r1, #0x0]
ldr r1, [r0, #0x4]
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
bx lr
arm_func_start G3B_Begin
G3B_Begin: ; 0x020C75D0
ldr r2, [r0, #0x0]
mov r3, #0x40
str r3, [r2, #0x0]
ldr r2, [r0, #0x4]
str r1, [r2, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
bx lr
arm_func_start G3B_LightColor
G3B_LightColor: ; 0x020C7600
ldr r3, [r0, #0x0]
mov r12, #0x33
str r12, [r3, #0x0]
ldr r3, [r0, #0x4]
orr r1, r2, r1, lsl #0x1e
str r1, [r3, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
bx lr
arm_func_start G3B_LightVector
G3B_LightVector: ; 0x020C7634
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
ldr ip, _020C7694 ; =0x000003FF
ldrsh r4, [sp, #0x10]
ldr lr, [r0, #0x0]
mov r5, #0x32
str r5, [lr, #0x0]
and lr, r12, r2, asr #0x3
and r2, r12, r3, asr #0x3
and r3, r12, r4, asr #0x3
orr r2, lr, r2, lsl #0xa
orr r3, r2, r3, lsl #0x14
ldr r2, [r0, #0x4]
orr r1, r3, r1, lsl #0x1e
str r1, [r2, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
.balign 4
_020C7694: .word 0x000003FF
arm_func_start G3B_MaterialColorSpecEmi
G3B_MaterialColorSpecEmi: ; 0x020C7698
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r12, [r0, #0x0]
mov lr, #0x31
cmp r3, #0x0
movne r3, #0x1
str lr, [r12, #0x0]
orr r2, r1, r2, lsl #0x10
moveq r3, #0x0
ldr r1, [r0, #0x4]
orr r2, r2, r3, lsl #0xf
str r2, [r1, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start G3B_MaterialColorDiffAmb
G3B_MaterialColorDiffAmb: ; 0x020C76EC
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r12, [r0, #0x0]
mov lr, #0x30
cmp r3, #0x0
movne r3, #0x1
str lr, [r12, #0x0]
orr r2, r1, r2, lsl #0x10
moveq r3, #0x0
ldr r1, [r0, #0x4]
orr r2, r2, r3, lsl #0xf
str r2, [r1, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start G3B_PolygonAttr
G3B_PolygonAttr: ; 0x020C7740
orr r1, r1, r2, lsl #0x4
ldr r2, [r0, #0x0]
mov r12, #0x29
str r12, [r2, #0x0]
ldr r2, [sp, #0x8]
orr r1, r1, r3, lsl #0x6
ldr r3, [sp, #0x0]
orr r1, r2, r1
ldr r12, [sp, #0x4]
orr r2, r1, r3, lsl #0x18
ldr r1, [r0, #0x4]
orr r2, r2, r12, lsl #0x10
str r2, [r1, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
bx lr
arm_func_start G3B_Vtx
G3B_Vtx: ; 0x020C7790
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r12, [r0, #0x0]
mov lr, #0x23
str lr, [r12, #0x0]
mov r1, r1, lsl #0x10
mov r2, r2, lsl #0x10
mov lr, r1, lsr #0x10
mov r12, r2, lsr #0x10
mov r1, r3, lsl #0x10
ldr r2, [r0, #0x4]
orr r3, lr, r12, lsl #0x10
str r3, [r2, #0x0]
ldr r2, [r0, #0x4]
mov r1, r1, lsr #0x10
str r1, [r2, #0x4]
ldr r1, [r0, #0x4]
add r1, r1, #0x8
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
arm_func_start G3B_Normal
G3B_Normal: ; 0x020C77F4
stmdb sp!, {r4,lr}
ldr ip, _020C7844 ; =0x000003FF
ldr lr, [r0, #0x0]
mov r4, #0x21
str r4, [lr, #0x0]
and lr, r12, r1, asr #0x3
and r1, r12, r2, asr #0x3
and r3, r12, r3, asr #0x3
orr r2, lr, r1, lsl #0xa
ldr r1, [r0, #0x4]
orr r2, r2, r3, lsl #0x14
str r2, [r1, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020C7844: .word 0x000003FF
arm_func_start G3B_Color
G3B_Color: ; 0x020C7848
ldr r2, [r0, #0x0]
mov r3, #0x20
str r3, [r2, #0x0]
ldr r2, [r0, #0x4]
str r1, [r2, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
bx lr
arm_func_start G3B_LoadMtx44
G3B_LoadMtx44: ; 0x020C7878
stmdb sp!, {r4,lr}
mov r4, r0
bl G3BS_LoadMtx44
ldr r0, [r4, #0x4]
add r0, r0, #0x40
str r0, [r4, #0x0]
ldr r0, [r4, #0x0]
add r0, r0, #0x4
str r0, [r4, #0x4]
ldmia sp!, {r4,lr}
bx lr
arm_func_start G3B_PopMtx
G3B_PopMtx: ; 0x020C78A4
ldr r2, [r0, #0x0]
mov r3, #0x12
str r3, [r2, #0x0]
ldr r2, [r0, #0x4]
str r1, [r2, #0x0]
ldr r1, [r0, #0x4]
add r1, r1, #0x4
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
bx lr
arm_func_start G3B_PushMtx
G3B_PushMtx: ; 0x020C78D4
ldr r1, [r0, #0x0]
mov r2, #0x11
str r2, [r1, #0x0]
ldr r1, [r0, #0x4]
str r1, [r0, #0x0]
ldr r1, [r0, #0x0]
add r1, r1, #0x4
str r1, [r0, #0x4]
bx lr
arm_func_start G3BS_LoadMtx44
G3BS_LoadMtx44: ; 0x020C78F8
mov r3, r0
ldr r0, [r3, #0x0]
mov r2, #0x16
str r2, [r0, #0x0]
mov r0, r1
ldr ip, _020C7918 ; =MI_Copy64B
ldr r1, [r3, #0x4]
bx r12
.balign 4
_020C7918: .word MI_Copy64B

37
arm9/asm/GX_g3imm.s Normal file
View File

@@ -0,0 +1,37 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start G3_MultMtx33
G3_MultMtx33: ; 0x020C791C
ldr r1, _020C7930 ; =0x04000400
mov r2, #0x1a
ldr ip, _020C7934 ; =MI_Copy36B
str r2, [r1, #0x0]
bx r12
.balign 4
_020C7930: .word 0x04000400
_020C7934: .word MI_Copy36B
arm_func_start G3_MultMtx43
G3_MultMtx43:
ldr r1, _020C794C ; =0x04000400
mov r2, #0x19
ldr ip, _020C7950 ; =GX_SendFifo48B
str r2, [r1, #0x0]
bx r12
.balign 4
_020C794C: .word 0x04000400
_020C7950: .word GX_SendFifo48B
arm_func_start G3_LoadMtx43
G3_LoadMtx43: ; 0x020C7954
ldr r1, _020C7968 ; =0x04000400
mov r2, #0x17
ldr ip, _020C796C ; =GX_SendFifo48B
str r2, [r1, #0x0]
bx r12
.balign 4
_020C7968: .word 0x04000400
_020C796C: .word GX_SendFifo48B

503
arm9/asm/GX_g3x.s Normal file
View File

@@ -0,0 +1,503 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start GXi_NopClearFifo128_
GXi_NopClearFifo128_: ; 0x020C7970
mov r1, #0x0
mov r2, #0x0
mov r3, #0x0
mov r12, #0x0
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
stmia r0, {r1-r3,r12}
bx lr
arm_func_start G3X_SetHOffset
G3X_SetHOffset: ; 0x020C7A04
ldr r1, _020C7A10 ; =0x04000010
str r0, [r1, #0x0]
bx lr
.balign 4
_020C7A10: .word 0x04000010
arm_func_start G3X_GetBoxTestResult
G3X_GetBoxTestResult: ; 0x020C7A14
ldr r2, _020C7A38 ; =0x04000600
ldr r1, [r2, #0x0]
ands r1, r1, #0x1
ldreq r1, [r2, #0x0]
mvnne r0, #0x0
andeq r1, r1, #0x2
streq r1, [r0, #0x0]
moveq r0, #0x0
bx lr
.balign 4
_020C7A38: .word 0x04000600
arm_func_start G3X_GetMtxStackLevelPJ
G3X_GetMtxStackLevelPJ:
ldr r2, _020C7A64 ; =0x04000600
ldr r1, [r2, #0x0]
ands r1, r1, #0x4000
ldreq r1, [r2, #0x0]
mvnne r0, #0x0
andeq r1, r1, #0x2000
moveq r1, r1, lsr #0xd
streq r1, [r0, #0x0]
moveq r0, #0x0
bx lr
.balign 4
_020C7A64: .word 0x04000600
arm_func_start G3X_GetMtxStackLevelPV
G3X_GetMtxStackLevelPV:
ldr r2, _020C7A90 ; =0x04000600
ldr r1, [r2, #0x0]
ands r1, r1, #0x4000
ldreq r1, [r2, #0x0]
mvnne r0, #0x0
andeq r1, r1, #0x1f00
moveq r1, r1, lsr #0x8
streq r1, [r0, #0x0]
moveq r0, #0x0
bx lr
.balign 4
_020C7A90: .word 0x04000600
arm_func_start G3X_InitTable
G3X_InitTable: ; 0x020C7A94
stmdb sp!, {lr}
sub sp, sp, #0xc
ldr r0, _020C7B2C ; =0x02106814
mvn r1, #0x0
ldr r0, [r0, #0x0]
cmp r0, r1
beq _020C7AE4
mov r2, #0x0
str r2, [sp, #0x0]
ldr r1, _020C7B30 ; =0x04000330
mov r3, #0x10
str r2, [sp, #0x4]
bl MI_DmaFill32Async
ldr r0, _020C7B2C ; =0x02106814
ldr r1, _020C7B34 ; =0x04000360
ldr r0, [r0, #0x0]
mov r2, #0x0
mov r3, #0x60
bl MI_DmaFill32
b _020C7B04
_020C7AE4:
ldr r1, _020C7B30 ; =0x04000330
mov r0, #0x0
mov r2, #0x10
bl MIi_CpuClear32
ldr r1, _020C7B34 ; =0x04000360
mov r0, #0x0
mov r2, #0x60
bl MIi_CpuClear32
_020C7B04:
mov r2, #0x0
ldr r0, _020C7B38 ; =0x040004D0
mov r1, r2
_020C7B10:
add r2, r2, #0x1
str r1, [r0, #0x0]
cmp r2, #0x20
blt _020C7B10
add sp, sp, #0xc
ldmia sp!, {lr}
bx lr
.balign 4
_020C7B2C: .word 0x02106814
_020C7B30: .word 0x04000330
_020C7B34: .word 0x04000360
_020C7B38: .word 0x040004D0
arm_func_start G3X_SetClearColor
G3X_SetClearColor: ; 0x020C7B3C
orr r0, r0, r1, lsl #0x10
ldr r12, [sp, #0x0]
orr r3, r0, r3, lsl #0x18
cmp r12, #0x0
ldr r1, _020C7B64 ; =0x04000350
orrne r3, r3, #0x8000
ldr r0, _020C7B68 ; =0x04000354
str r3, [r1, #0x0]
strh r2, [r0, #0x0]
bx lr
.balign 4
_020C7B64: .word 0x04000350
_020C7B68: .word 0x04000354
arm_func_start G3X_SetFogTable
G3X_SetFogTable: ; 0x020C7B6C
ldr ip, _020C7B78 ; =0x020CE2C4
ldr r1, _020C7B7C ; =0x04000360
bx r12
.balign 4
_020C7B78: .word 0x020CE2C4
_020C7B7C: .word 0x04000360
arm_func_start G3X_SetEdgeColorTable
G3X_SetEdgeColorTable: ; 0x020C7B80
ldr ip, _020C7B90 ; =MIi_CpuCopy16
ldr r1, _020C7B94 ; =0x04000330
mov r2, #0x10
bx r12
.balign 4
_020C7B90: .word MIi_CpuCopy16
_020C7B94: .word 0x04000330
arm_func_start G3X_GetVectorMtx
G3X_GetVectorMtx:
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r2, _020C7BD8 ; =0x04000600
mov r1, r0
ldr r0, [r2, #0x0]
ands r0, r0, #0x8000000
addne sp, sp, #0x4
mvnne r0, #0x0
ldmneia sp!, {lr}
bxne lr
ldr r0, _020C7BDC ; =0x04000680
bl MI_Copy36B
_020C7BC8: ; 0x020C7BC8
mov r0, #0x0
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C7BD8: .word 0x04000600
_020C7BDC: .word 0x04000680
arm_func_start G3X_GetClipMtx
G3X_GetClipMtx:
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r2, _020C7C20 ; =0x04000600
mov r1, r0
ldr r0, [r2, #0x0]
ands r0, r0, #0x8000000
addne sp, sp, #0x4
mvnne r0, #0x0
ldmneia sp!, {lr}
bxne lr
ldr r0, _020C7C24 ; =0x04000640
bl MI_Copy64B
_020C7C10: ; 0x020C7C10
mov r0, #0x0
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C7C20: .word 0x04000600
_020C7C24: .word 0x04000640
arm_func_start G3X_SetFog
G3X_SetFog: ; 0x020C7C28
cmp r0, #0x0
ldreq r2, _020C7C70 ; =0x04000060
ldreq r0, _020C7C74 ; =0x0000CF7F
ldreqh r1, [r2, #0x0]
andeq r0, r1, r0
streqh r0, [r2, #0x0]
bxeq lr
ldr r0, _020C7C78 ; =0x0400035C
ldr ip, _020C7C70 ; =0x04000060
strh r3, [r0, #0x0]
mov r0, r2, lsl #0x8
orr r0, r0, r1, lsl #0x6
ldrh r3, [r12, #0x0]
orr r0, r0, #0x80
bic r1, r3, #0x3f40
orr r0, r1, r0
strh r0, [r12, #0x0]
bx lr
.balign 4
_020C7C70: .word 0x04000060
_020C7C74: .word 0x0000CF7F
_020C7C78: .word 0x0400035C
arm_func_start G3X_ResetMtxStack_2
G3X_ResetMtxStack_2: ; 0x020C7C7C
stmdb sp!, {r4,lr}
sub sp, sp, #0x8
ldr r1, _020C7D18 ; =0x04000600
ldr r0, [r1, #0x0]
orr r0, r0, #0x8000
str r0, [r1, #0x0]
add r4, sp, #0x0
_020C7C98:
mov r0, r4
bl G3X_GetMtxStackLevelPV
_020C7CA0: ; 0x020C7CA0
cmp r0, #0x0
bne _020C7C98
add r4, sp, #0x4
_020C7CAC:
mov r0, r4
bl G3X_GetMtxStackLevelPJ
_020C7CB4: ; 0x020C7CB4
cmp r0, #0x0
bne _020C7CAC
ldr r2, _020C7D1C ; =0x04000440
mov r1, #0x3
str r1, [r2, #0x0]
ldr r0, _020C7D20 ; =0x04000454
mov r1, #0x0
str r1, [r0, #0x0]
str r1, [r2, #0x0]
ldr r1, [sp, #0x4]
cmp r1, #0x0
ldrne r0, _020C7D24 ; =0x04000448
strne r1, [r0, #0x0]
ldr r0, _020C7D1C ; =0x04000440
mov r1, #0x2
str r1, [r0, #0x0]
ldr r2, [sp, #0x0]
ldr r1, _020C7D24 ; =0x04000448
ldr r0, _020C7D20 ; =0x04000454
str r2, [r1, #0x0]
mov r1, #0x0
str r1, [r0, #0x0]
add sp, sp, #0x8
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020C7D18: .word 0x04000600
_020C7D1C: .word 0x04000440
_020C7D20: .word 0x04000454
_020C7D24: .word 0x04000448
arm_func_start G3X_InitMtxStack
G3X_InitMtxStack: ; 0x020C7D28
stmdb sp!, {r4,lr}
sub sp, sp, #0x8
ldr r1, _020C7DC8 ; =0x04000600
ldr r0, [r1, #0x0]
orr r0, r0, #0x8000
str r0, [r1, #0x0]
add r4, sp, #0x0
_020C7D44:
mov r0, r4
bl G3X_GetMtxStackLevelPV
_020C7D4C: ; 0x020C7D4C
cmp r0, #0x0
bne _020C7D44
add r4, sp, #0x4
_020C7D58:
mov r0, r4
bl G3X_GetMtxStackLevelPJ
_020C7D60: ; 0x020C7D60
cmp r0, #0x0
bne _020C7D58
ldr r2, _020C7DCC ; =0x04000440
mov r1, #0x3
str r1, [r2, #0x0]
ldr r0, _020C7DD0 ; =0x04000454
mov r1, #0x0
str r1, [r0, #0x0]
str r1, [r2, #0x0]
ldr r1, [sp, #0x4]
ldr r2, _020C7DD0 ; =0x04000454
cmp r1, #0x0
ldrne r0, _020C7DD4 ; =0x04000448
mov r3, #0x0
strne r1, [r0, #0x0]
ldr r0, _020C7DCC ; =0x04000440
str r3, [r2, #0x0]
mov r1, #0x2
str r1, [r0, #0x0]
ldr r1, [sp, #0x0]
ldr r0, _020C7DD4 ; =0x04000448
str r1, [r0, #0x0]
str r3, [r2, #0x0]
add sp, sp, #0x8
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020C7DC8: .word 0x04000600
_020C7DCC: .word 0x04000440
_020C7DD0: .word 0x04000454
_020C7DD4: .word 0x04000448
arm_func_start G3X_ClearFifo
G3X_ClearFifo: ; 0x020C7DD8
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r0, _020C7E04 ; =0x04000400
bl GXi_NopClearFifo128_
ldr r1, _020C7E08 ; =0x04000600
_020C7DEC:
ldr r0, [r1, #0x0]
ands r0, r0, #0x8000000
bne _020C7DEC
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C7E04: .word 0x04000400
_020C7E08: .word 0x04000600
arm_func_start G3X_ResetMtxStack
G3X_ResetMtxStack: ; 0x020C7E0C
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r2, _020C7E7C ; =0x04000600
_020C7E18:
ldr r0, [r2, #0x0]
ands r0, r0, #0x8000000
bne _020C7E18
ldr r0, [r2, #0x0]
ldr r1, _020C7E80 ; =0x04000060
orr r0, r0, #0x8000
str r0, [r2, #0x0]
ldrh r0, [r1, #0x0]
orr r0, r0, #0x2000
strh r0, [r1, #0x0]
ldrh r0, [r1, #0x0]
orr r0, r0, #0x1000
strh r0, [r1, #0x0]
bl G3X_ResetMtxStack_2
ldr r2, _020C7E84 ; =0x001F0080
ldr r0, _020C7E88 ; =0x040004A4
ldr r1, _020C7E8C ; =0x040004A8
str r2, [r0, #0x0]
mov r2, #0x0
ldr r0, _020C7E90 ; =0x040004AC
str r2, [r1, #0x0]
str r2, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C7E7C: .word 0x04000600
_020C7E80: .word 0x04000060
_020C7E84: .word 0x001F0080
_020C7E88: .word 0x040004A4
_020C7E8C: .word 0x040004A8
_020C7E90: .word 0x040004AC
arm_func_start G3X_Init
G3X_Init: ; 0x020C7E94
stmdb sp!, {lr}
sub sp, sp, #0x4
bl G3X_ClearFifo
ldr r0, _020C7FAC ; =0x04000504
mov r1, #0x0
str r1, [r0, #0x0]
ldr r1, _020C7FB0 ; =0x04000600
_020C7EB0:
ldr r0, [r1, #0x0]
ands r0, r0, #0x8000000
bne _020C7EB0
ldr r0, _020C7FB4 ; =0x04000060
mov r3, #0x0
strh r3, [r0, #0x0]
ldr r2, _020C7FB8 ; =0x04000010
str r3, [r1, #0x0]
str r3, [r2, #0x0]
ldrh r12, [r0, #0x0]
ldr r2, _020C7FBC ; =0xFFFFCFFD
ldr r3, _020C7FC0 ; =0x0000CFFB
orr r12, r12, #0x2000
strh r12, [r0, #0x0]
ldrh r12, [r0, #0x0]
orr r12, r12, #0x1000
strh r12, [r0, #0x0]
ldrh r12, [r0, #0x0]
and r2, r12, r2
strh r2, [r0, #0x0]
ldrh r2, [r0, #0x0]
bic r2, r2, #0x3000
orr r2, r2, #0x10
strh r2, [r0, #0x0]
ldrh r2, [r0, #0x0]
and r2, r2, r3
strh r2, [r0, #0x0]
ldr r0, [r1, #0x0]
orr r0, r0, #0x8000
str r0, [r1, #0x0]
ldr r0, [r1, #0x0]
bic r0, r0, #0xc0000000
orr r0, r0, #0x80000000
str r0, [r1, #0x0]
bl G3X_InitMtxStack
ldr r0, _020C7FC4 ; =0x04000350
mov r3, #0x0
ldr r2, _020C7FC8 ; =0x00007FFF
ldr r1, _020C7FCC ; =0x04000354
str r3, [r0, #0x0]
ldr r0, _020C7FD0 ; =0x04000356
strh r2, [r1, #0x0]
ldr r1, _020C7FD4 ; =0x04000358
strh r3, [r0, #0x0]
ldr r0, _020C7FD8 ; =0x0400035C
str r3, [r1, #0x0]
ldr r1, _020C7FDC ; =0x04000008
strh r3, [r0, #0x0]
ldrh r0, [r1, #0x0]
bic r0, r0, #0x3
strh r0, [r1, #0x0]
bl G3X_InitTable
ldr r2, _020C7FE0 ; =0x001F0080
ldr r0, _020C7FE4 ; =0x040004A4
ldr r1, _020C7FE8 ; =0x040004A8
str r2, [r0, #0x0]
mov r2, #0x0
ldr r0, _020C7FEC ; =0x040004AC
str r2, [r1, #0x0]
str r2, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C7FAC: .word 0x04000504
_020C7FB0: .word 0x04000600
_020C7FB4: .word 0x04000060
_020C7FB8: .word 0x04000010
_020C7FBC: .word 0xFFFFCFFD
_020C7FC0: .word 0x0000CFFB
_020C7FC4: .word 0x04000350
_020C7FC8: .word 0x00007FFF
_020C7FCC: .word 0x04000354
_020C7FD0: .word 0x04000356
_020C7FD4: .word 0x04000358
_020C7FD8: .word 0x0400035C
_020C7FDC: .word 0x04000008
_020C7FE0: .word 0x001F0080
_020C7FE4: .word 0x040004A4
_020C7FE8: .word 0x040004A8
_020C7FEC: .word 0x040004AC

1116
arm9/asm/GX_load2d.s Normal file

File diff suppressed because it is too large Load Diff

420
arm9/asm/GX_load3d.s Normal file
View File

@@ -0,0 +1,420 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start GX_EndLoadClearImage
GX_EndLoadClearImage: ; 0x020C95AC
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r0, _020C95F8 ; =0x02106814
mvn r1, #0x0
ldr r0, [r0, #0x0]
cmp r0, r1
beq _020C95CC
bl MI_WaitDma
_020C95CC:
ldr r0, _020C95FC ; =0x021D33FC
ldr r0, [r0, #0x0]
bl GX_SetBankForClearImage
ldr r1, _020C95FC ; =0x021D33FC
mov r2, #0x0
ldr r0, _020C9600 ; =0x021D340C
str r2, [r1, #0x0]
str r2, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C95F8: .word 0x02106814
_020C95FC: .word 0x021D33FC
_020C9600: .word 0x021D340C
arm_func_start GX_LoadClearImageDepth
GX_LoadClearImageDepth: ; 0x020C9604
stmdb sp!, {r4,lr}
sub sp, sp, #0x8
ldr r3, _020C9670 ; =0x021D340C
ldr r2, _020C9674 ; =0x02106814
ldr r12, [r3, #0x0]
ldr lr, [r2, #0x0]
mvn r2, #0x0
mov r4, r0
mov r3, r1
cmp lr, r2
add r2, r12, #0x20000
beq _020C9658
mov r12, #0x0
str r12, [sp, #0x0]
mov r0, lr
mov r1, r4
str r12, [sp, #0x4]
bl MI_DmaCopy32Async
add sp, sp, #0x8
ldmia sp!, {r4,lr}
bx lr
_020C9658:
mov r1, r2
mov r2, r3
bl MIi_CpuCopy32
add sp, sp, #0x8
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020C9670: .word 0x021D340C
_020C9674: .word 0x02106814
arm_func_start GX_LoadClearImageColor
GX_LoadClearImageColor: ; 0x020C9678
stmdb sp!, {r4,lr}
sub sp, sp, #0x8
ldr r2, _020C96E0 ; =0x02106814
ldr ip, _020C96E4 ; =0x021D340C
ldr lr, [r2, #0x0]
mvn r2, #0x0
mov r4, r0
mov r3, r1
cmp lr, r2
ldr r2, [r12, #0x0]
beq _020C96C8
mov r12, #0x0
str r12, [sp, #0x0]
mov r0, lr
mov r1, r4
str r12, [sp, #0x4]
bl MI_DmaCopy32Async
add sp, sp, #0x8
ldmia sp!, {r4,lr}
bx lr
_020C96C8:
mov r1, r2
mov r2, r3
bl MIi_CpuCopy32
add sp, sp, #0x8
ldmia sp!, {r4,lr}
bx lr
.balign 4
_020C96E0: .word 0x02106814
_020C96E4: .word 0x021D340C
arm_func_start GX_BeginLoadClearImage
GX_BeginLoadClearImage: ; 0x020C96E8
stmdb sp!, {lr}
sub sp, sp, #0x4
bl GX_ResetBankForClearImage
ldr r1, _020C979C ; =0x021D33FC
cmp r0, #0xc
str r0, [r1, #0x0]
addls pc, pc, r0, lsl #0x2
b _020C9790
_020C9708:
b _020C9790
_020C970C:
b _020C976C
_020C9710:
b _020C973C
_020C9714:
b _020C973C
_020C9718:
b _020C9784
_020C971C:
b _020C9790
_020C9720:
b _020C9790
_020C9724:
b _020C9790
_020C9728:
b _020C9754
_020C972C:
b _020C9790
_020C9730:
b _020C9790
_020C9734:
b _020C9790
_020C9738:
b _020C9754
_020C973C:
ldr r0, _020C97A0 ; =0x021D340C
mov r1, #0x6800000
str r1, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
_020C9754:
ldr r1, _020C97A4 ; =0x06840000
ldr r0, _020C97A0 ; =0x021D340C
add sp, sp, #0x4
str r1, [r0, #0x0]
ldmia sp!, {lr}
bx lr
_020C976C:
ldr r1, _020C97A8 ; =0x067E0000
ldr r0, _020C97A0 ; =0x021D340C
add sp, sp, #0x4
str r1, [r0, #0x0]
ldmia sp!, {lr}
bx lr
_020C9784:
ldr r1, _020C97AC ; =0x06820000
ldr r0, _020C97A0 ; =0x021D340C
str r1, [r0, #0x0]
_020C9790:
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C979C: .word 0x021D33FC
_020C97A0: .word 0x021D340C
_020C97A4: .word 0x06840000
_020C97A8: .word 0x067E0000
_020C97AC: .word 0x06820000
arm_func_start GX_EndLoadTexPltt
GX_EndLoadTexPltt: ; 0x020C97B0
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r0, _020C97FC ; =0x02106814
mvn r1, #0x0
ldr r0, [r0, #0x0]
cmp r0, r1
beq _020C97D0
bl MI_WaitDma
_020C97D0:
ldr r0, _020C9800 ; =0x021D3408
ldr r0, [r0, #0x0]
bl GX_SetBankForTexPltt
ldr r1, _020C9800 ; =0x021D3408
mov r2, #0x0
ldr r0, _020C9804 ; =0x021D3404
str r2, [r1, #0x0]
str r2, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C97FC: .word 0x02106814
_020C9800: .word 0x021D3408
_020C9804: .word 0x021D3404
arm_func_start GX_LoadTexPltt
GX_LoadTexPltt: ; 0x020C9808
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0xc
ldr ip, _020C9874 ; =0x021D3404
ldr r3, _020C9878 ; =0x02106814
ldr r4, [r12, #0x0]
ldr lr, [r3, #0x0]
mvn r12, #0x0
mov r5, r0
mov r3, r2
cmp lr, r12
add r4, r4, r1
beq _020C9860
mov r12, #0x0
str r12, [sp, #0x0]
mov r0, lr
mov r1, r5
mov r2, r4
str r12, [sp, #0x4]
bl MI_DmaCopy32Async
add sp, sp, #0xc
ldmia sp!, {r4-r5,lr}
bx lr
_020C9860:
mov r1, r4
bl MIi_CpuCopy32
add sp, sp, #0xc
ldmia sp!, {r4-r5,lr}
bx lr
.balign 4
_020C9874: .word 0x021D3404
_020C9878: .word 0x02106814
arm_func_start GX_BeginLoadTexPltt
GX_BeginLoadTexPltt: ; 0x020C987C
stmdb sp!, {lr}
sub sp, sp, #0x4
bl GX_ResetBankForTexPltt
mov r3, r0, asr #0x4
ldr r2, _020C98B8 ; =0x021D3408
ldr r1, _020C98BC ; =0x02103B3C
mov r3, r3, lsl #0x1
ldrh r3, [r1, r3]
ldr r1, _020C98C0 ; =0x021D3404
str r0, [r2, #0x0]
mov r0, r3, lsl #0xc
str r0, [r1, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C98B8: .word 0x021D3408
_020C98BC: .word 0x02103B3C
_020C98C0: .word 0x021D3404
arm_func_start GX_EndLoadTex
GX_EndLoadTex: ; 0x020C98C4
stmdb sp!, {lr}
sub sp, sp, #0x4
ldr r0, _020C9920 ; =0x02106814
mvn r1, #0x0
ldr r0, [r0, #0x0]
cmp r0, r1
beq _020C98E4
bl MI_WaitDma
_020C98E4:
ldr r0, _020C9924 ; =0x021D3410
ldr r0, [r0, #0x0]
bl GX_SetBankForTex
ldr r3, _020C9928 ; =0x021D3418
mov r12, #0x0
ldr r2, _020C992C ; =0x021D3414
ldr r1, _020C9930 ; =0x021D3400
ldr r0, _020C9924 ; =0x021D3410
str r12, [r3, #0x0]
str r12, [r2, #0x0]
str r12, [r1, #0x0]
str r12, [r0, #0x0]
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
.balign 4
_020C9920: .word 0x02106814
_020C9924: .word 0x021D3410
_020C9928: .word 0x021D3418
_020C992C: .word 0x021D3414
_020C9930: .word 0x021D3400
arm_func_start GX_LoadTex
GX_LoadTex: ; 0x020C9934
stmdb sp!, {r4-r7,lr}
sub sp, sp, #0xc
ldr r3, _020C9A88 ; =0x021D3414
mov r7, r0
ldr r5, [r3, #0x0]
mov r6, r2
cmp r5, #0x0
ldreq r0, _020C9A8C ; =0x021D3400
ldreq r0, [r0, #0x0]
addeq r2, r0, r1
beq _020C9A34
ldr r0, _020C9A90 ; =0x021D3418
add r2, r1, r6
ldr r4, [r0, #0x0]
cmp r2, r4
ldrlo r0, _020C9A8C ; =0x021D3400
ldrcc r0, [r0, #0x0]
addcc r2, r0, r1
blo _020C9A34
cmp r1, r4
addcs r0, r5, r1
subcs r2, r0, r4
bhs _020C9A34
ldr r2, _020C9A8C ; =0x021D3400
ldr r0, _020C9A94 ; =0x02106814
ldr r3, [r2, #0x0]
ldr r0, [r0, #0x0]
mvn r2, #0x0
cmp r0, r2
sub r4, r4, r1
add r2, r3, r1
beq _020C99CC
cmp r4, #0x30
bls _020C99CC
mov r1, r7
mov r3, r4
bl MI_DmaCopy32
b _020C99DC
_020C99CC:
mov r1, r2
mov r0, r7
mov r2, r4
bl MIi_CpuCopy32
_020C99DC:
ldr r0, _020C9A94 ; =0x02106814
mvn r1, #0x0
ldr r0, [r0, #0x0]
cmp r0, r1
beq _020C9A18
mov r12, #0x0
str r12, [sp, #0x0]
mov r2, r5
add r1, r7, r4
sub r3, r6, r4
str r12, [sp, #0x4]
bl MI_DmaCopy32Async
add sp, sp, #0xc
ldmia sp!, {r4-r7,lr}
bx lr
_020C9A18:
mov r1, r5
add r0, r7, r4
sub r2, r6, r4
bl MIi_CpuCopy32
add sp, sp, #0xc
ldmia sp!, {r4-r7,lr}
bx lr
_020C9A34:
ldr r0, _020C9A94 ; =0x02106814
mvn r1, #0x0
ldr r0, [r0, #0x0]
cmp r0, r1
beq _020C9A6C
mov r4, #0x0
str r4, [sp, #0x0]
mov r1, r7
mov r3, r6
str r4, [sp, #0x4]
bl MI_DmaCopy32Async
add sp, sp, #0xc
ldmia sp!, {r4-r7,lr}
bx lr
_020C9A6C:
mov r1, r2
mov r0, r7
mov r2, r6
bl MIi_CpuCopy32
add sp, sp, #0xc
ldmia sp!, {r4-r7,lr}
bx lr
.balign 4
_020C9A88: .word 0x021D3414
_020C9A8C: .word 0x021D3400
_020C9A90: .word 0x021D3418
_020C9A94: .word 0x02106814
arm_func_start GX_BeginLoadTex
GX_BeginLoadTex: ; 0x020C9A98
stmdb sp!, {r4-r5,lr}
sub sp, sp, #0x4
bl GX_ResetBankForTex
mov r1, #0x6
mul r12, r0, r1
ldr r3, _020C9AFC ; =0x02103B4C
ldr r2, _020C9B00 ; =0x02103B4E
ldr r1, _020C9B04 ; =0x02103B50
ldrh r5, [r3, r12]
ldrh r4, [r2, r12]
ldrh lr, [r1, r12]
ldr ip, _020C9B08 ; =0x021D3410
ldr r3, _020C9B0C ; =0x021D3400
mov r5, r5, lsl #0xc
ldr r2, _020C9B10 ; =0x021D3414
mov r4, r4, lsl #0xc
ldr r1, _020C9B14 ; =0x021D3418
mov lr, lr, lsl #0xc
str r0, [r12, #0x0]
str r5, [r3, #0x0]
str r4, [r2, #0x0]
str lr, [r1, #0x0]
add sp, sp, #0x4
ldmia sp!, {r4-r5,lr}
bx lr
.balign 4
_020C9AFC: .word 0x02103B4C
_020C9B00: .word 0x02103B4E
_020C9B04: .word 0x02103B50
_020C9B08: .word 0x021D3410
_020C9B0C: .word 0x021D3400
_020C9B10: .word 0x021D3414
_020C9B14: .word 0x021D3418

40
arm9/asm/GX_state.s Normal file
View File

@@ -0,0 +1,40 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start GX_InitGXState
GX_InitGXState: ; 0x020C5CAC
ldr r0, _020C5D14 ; =0x021D33C4
mov r3, #0x0
ldr r2, _020C5D18 ; =0x04000240
strh r3, [r0, #0x0]
strh r3, [r0, #0x2]
strh r3, [r0, #0x4]
strh r3, [r0, #0x6]
strh r3, [r0, #0x8]
strh r3, [r0, #0xa]
strh r3, [r0, #0xc]
strh r3, [r0, #0xe]
strh r3, [r0, #0x10]
strh r3, [r0, #0x12]
strh r3, [r0, #0x14]
strh r3, [r0, #0x16]
strh r3, [r0, #0x18]
ldr r1, _020C5D1C ; =0x04000244
str r3, [r2, #0x0]
ldr r0, _020C5D20 ; =0x04000245
strb r3, [r1, #0x0]
ldr r1, _020C5D24 ; =0x04000246
strb r3, [r0, #0x0]
ldr r0, _020C5D28 ; =0x04000248
strb r3, [r1, #0x0]
strh r3, [r0, #0x0]
bx lr
.balign 4
_020C5D14: .word 0x021D33C4
_020C5D18: .word 0x04000240
_020C5D1C: .word 0x04000244
_020C5D20: .word 0x04000245
_020C5D24: .word 0x04000246
_020C5D28: .word 0x04000248

1540
arm9/asm/GX_vramcnt.s Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3003,13 +3003,21 @@
.extern FX_InvAsync
.extern FX_Sqrt
.extern G2S_GetBG0CharPtr
.extern G2S_GetBG0ScrPtr
.extern G2S_GetBG1CharPtr
.extern G2S_GetBG1ScrPtr
.extern G2S_GetBG2CharPtr
.extern G2S_GetBG2ScrPtr
.extern G2S_GetBG3CharPtr
.extern G2S_GetBG3ScrPtr
.extern G2_GetBG0CharPtr
.extern G2_GetBG0ScrPtr
.extern G2_GetBG1CharPtr
.extern G2_GetBG1ScrPtr
.extern G2_GetBG2CharPtr
.extern G2_GetBG2ScrPtr
.extern G2_GetBG3CharPtr
.extern G2_GetBG3ScrPtr
.extern G2x_SetBGyAffine_
.extern G2x_SetBlendAlpha_
.extern G2x_SetBlendBrightness_
@@ -3068,6 +3076,7 @@
.extern GX_GetBankForSubOBJExtPltt
.extern GX_HBlankIntr
.extern GX_Init
.extern GX_InitGXState
.extern GX_LoadBG0Char
.extern GX_LoadBG0Scr
.extern GX_LoadBG1Char
@@ -3088,14 +3097,17 @@
.extern GX_LoadTexPltt
.extern GX_ResetBankForBG
.extern GX_ResetBankForBGExtPltt
.extern GX_ResetBankForClearImage
.extern GX_ResetBankForOBJ
.extern GX_ResetBankForOBJExtPltt
.extern GX_ResetBankForSubBG
.extern GX_ResetBankForSubOBJ
.extern GX_ResetBankForTex
.extern GX_ResetBankForTexPltt
.extern GX_SendFifo48B
.extern GX_SetBankForBG
.extern GX_SetBankForBGExtPltt
.extern GX_SetBankForClearImage
.extern GX_SetBankForLCDC
.extern GX_SetBankForOBJ
.extern GX_SetBankForOBJExtPltt