Match some troublesome files.

- strlen and strspn had wrong prototype (returned unsigned int instead of size_t)
- define NULL as 0L
- ov14_0221FC20.c required splitting up Unk_ov14_022248A4
This commit is contained in:
luckytyphlosion 2023-01-06 13:14:03 -05:00
parent 1f4b2c3408
commit 39176124af
19 changed files with 6872 additions and 16144 deletions

2
.gitignore vendored
View File

@ -90,3 +90,5 @@ asm_old/
!sub/*.sbin
uncrustify.cfg
compare.sh
diff/

View File

@ -1,124 +0,0 @@
.public sub_02005748
.public sub_0200AAE0
.public sub_0200AC1C
.public sub_0200B48C
.public sub_0200B5CC
.public sub_0200B668
.public sub_0200BB74
.public sub_0200BBA8
.public sub_0200BBDC
.public sub_0200D9E8
.public sub_0200DA58
.public sub_020138C8
.public sub_02017FC8
.public sub_0201807C
.public sub_02018144
.public sub_02018184
.public sub_020181C4
.public sub_0201D2D0
.public sub_0201D2DC
.public sub_0201D2E8
.public sub_0201D30C
.public GF_AssertFail
.public sub_02023790
.public sub_020237BC
.public sub_020237E8
.public sub_02023810
.public sub_0202440C
.public sub_02025EF4
.public sub_02025F30
.public sub_02025FCC
.public sub_02025FF0
.public sub_02026004
.public sub_020272A4
.public sub_02027560
.public sub_02029C88
.public sub_02029CD0
.public sub_02029D04
.public sub_02029D50
.public sub_0202A240
.public sub_0202A25C
.public sub_0202A390
.public sub_0202A750
.public sub_0202B628
.public sub_0202B758
.public sub_0202C1C0
.public sub_0202CC64
.public sub_0202CC84
.public sub_0202CD3C
.public sub_0202CD88
.public sub_0202CF28
.public sub_0202CFEC
.public sub_0202F134
.public sub_02032EE8
.public sub_02035E18
.public sub_02035E38
.public sub_0203608C
.public sub_020364F0
.public sub_02036540
.public sub_020507E4
.public sub_02050944
.public sub_02050A38
.public sub_02050A60
.public sub_02050A64
.public sub_02055820
.public sub_02055868
.public sub_0206AA50
.public sub_0206AAA8
.public sub_0206CF14
.public sub_0206DDB8
.public sub_02073C74
.public sub_02074470
.public sub_02074B30
.public sub_02075C74
.public sub_02076B10
.public sub_020775EC
.public sub_02079FF4
.public sub_020923C0
.public sub_02093448
.public sub_020935EC
.public sub_020937C4
.public sub_020937F8
.public sub_020939E0
.public sub_02093B2C
.public sub_02093BBC
.public sub_02093C54
.public sub_02093C6C
.public sub_020944D4
.public sub_020944E8
.public sub_0209451C
.public sub_02094648
.public sub_02094680
.public sub_02094790
.public sub_02094B30
.public sub_02094E7C
.public sub_02094EB4
.public sub_02094F04
.public sub_020951B0
.public sub_02095338
.public sub_02095380
.public sub_020954F0
.public sub_02095848
.public sub_020958C4
.public sub_020958FC
.public sub_02095904
.public sub_0209590C
.public sub_02095928
.public sub_0209598C
.public sub_020959F4
.public sub_02095A24
.public sub_02095A3C
.public sub_02095A74
.public sub_02095AF0
.public sub_02095B5C
.public sub_02095BEC
.public MI_CpuFill8
.public MI_CpuCopy8
.public ov6_02248A64
.public ov6_02248AF0
.public ov6_02248B70
.public ov6_02248BE8
.public ov6_02248C68
.public ov6_02248CE8
.public ov6_02248D64
.public ov6_02248DD8

View File

@ -1,61 +0,0 @@
.public GF_AssertFail
.public sub_02074470
.public sub_020759F0
.public sub_020787CC
.public sub_0207A0F8
.public sub_0207A0FC
.public _s32_div_f
.public _u32_div_f
.public ov14_0221FC20
.public ov14_0221FD44
.public ov14_0221FE38
.public ov14_02220078
.public ov14_0222254C
.public ov14_02222C28
.public ov14_02222C60
.public ov14_02222C88
.public ov14_02222CF0
.public ov14_02222D10
.public ov14_02222D24
.public ov14_02222D34
.public ov14_02222D7C
.public ov14_02222E84
.public ov14_0222327C
.public ov14_022233F4
.public ov14_0222342C
.public ov14_022235F0
.public ov14_02223B34
.public ov14_02223C8C
.public ov14_02223E10
.public ov14_02224070
.public ov14_0222416C
.public ov14_022241A4
.public ov14_022244B0
.public ov16_0223DF0C
.public ov16_0223DF1C
.public ov16_0223DF20
.public ov16_0223DF60
.public ov16_0223DFAC
.public ov16_0223E1C4
.public ov16_0223E1F8
.public ov16_0223E208
.public ov16_0223E258
.public ov16_0223F4BC
.public ov16_02252060
.public ov16_02252EC8
.public ov16_02254A6C
.public ov16_02254FA8
.public ov16_022552D4
.public ov16_022555A4
.public ov16_02255950
.public ov16_02255A4C
.public ov16_02256128
.public ov16_022563F8
.public ov16_02257028
.public ov16_02258AB8
.public ov16_02258B2C
.public ov16_02258B80
.public ov16_0225A280
.public ov16_0225B0FC
.public ov16_0225BA88
.public ov16_0225BE3C

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
.text
.global Unk_ov14_022248A4
Unk_ov14_022248A4: ; 0x022248A4
.incbin "incbin/overlay14_rodata.bin", 0x0, 0xA5BC

View File

@ -1,42 +0,0 @@
.public sub_02005748
.public sub_02006C24
.public sub_02006CA8
.public sub_0200CC3C
.public sub_0200CDC4
.public sub_0200CE24
.public sub_0200CE54
.public sub_0200CE6C
.public sub_0200D070
.public sub_0200D080
.public sub_0200D090
.public sub_0200D0A0
.public sub_0200D0F4
.public sub_0200D324
.public sub_0200D3EC
.public sub_0200D4C4
.public sub_0200D550
.public sub_0200D810
.public sub_0200D9E8
.public sub_0200DA58
.public sub_02018144
.public sub_020181C4
.public sub_02021D6C
.public sub_02021E50
.public GF_AssertFail
.public G2x_SetBlendAlpha_
.public MI_CpuFill8
.public ov16_0223F9F0
.public ov16_0226D160
.public ov16_0226D17C
.public ov16_0226D2A0
.public ov16_0226D34C
.public ov16_0226D3F8
.public ov16_0226D434
.public ov16_0226D540
.public ov16_0226D654
.public ov16_0226D854
.public ov16_0226D938
.public ov16_0226D99C
.public ov16_0226DAAC
.public ov16_0226DB04
.public ov16_0226DB44

File diff suppressed because it is too large Load Diff

View File

@ -1,17 +0,0 @@
.public MATH_CalcSHA1
.public memcpy
.public sprintf
.public strlen
.public strcat
.public strncat
.public strncmp
.public DWC_Alloc
.public DWC_Free
.public DWC_InitGHTTP
.public DWC_ShutdownGHTTP
.public DWC_ProcessGHTTP
.public DWC_GetGHTTPData
.public ov60_0221F838
.public ov60_0221F944
.public ov60_0221F968
.public ov60_0221F9D0

View File

@ -1,711 +0,0 @@
.include "macros/function.inc"
.include "overlay060/ov60_0221F968.inc"
.text
thumb_func_start ov60_0221F968
ov60_0221F968: ; 0x0221F968
add r0, #8
cmp r0, #7
bhi _0221F9C2
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0221F97A: ; jump table
.short _0221F98A - _0221F97A - 2 ; case 0
.short _0221F9C2 - _0221F97A - 2 ; case 1
.short _0221F992 - _0221F97A - 2 ; case 2
.short _0221F99A - _0221F97A - 2 ; case 3
.short _0221F9A2 - _0221F97A - 2 ; case 4
.short _0221F9AA - _0221F97A - 2 ; case 5
.short _0221F9B2 - _0221F97A - 2 ; case 6
.short _0221F9BA - _0221F97A - 2 ; case 7
_0221F98A:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #0
str r1, [r0, #8]
bx lr
_0221F992:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #1
str r1, [r0, #8]
bx lr
_0221F99A:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #2
str r1, [r0, #8]
bx lr
_0221F9A2:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #3
str r1, [r0, #8]
bx lr
_0221F9AA:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #4
str r1, [r0, #8]
bx lr
_0221F9B2:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #5
str r1, [r0, #8]
bx lr
_0221F9BA:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #6
str r1, [r0, #8]
bx lr
_0221F9C2:
ldr r0, _0221F9CC ; =0x02228E40
mov r1, #0
str r1, [r0, #8]
bx lr
nop
_0221F9CC: .word Unk_ov60_02228E40
thumb_func_end ov60_0221F968
thumb_func_start ov60_0221F9D0
ov60_0221F9D0: ; 0x0221F9D0
push {r4, r5, r6, r7, lr}
sub sp, #0x4c
add r4, r1, #0
mov r3, #0
ldr r1, _0221FC58 ; =0x02228E40
mvn r3, r3
str r3, [r1, #4]
ldr r3, [r1, #0]
add r6, r0, #0
cmp r3, #1
bne _0221F9E8
b _0221FC52
_0221F9E8:
cmp r2, #0
beq _0221F9EE
b _0221FBA2
_0221F9EE:
cmp r3, #4
beq _0221F9FA
cmp r3, #6
beq _0221FAC6
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221F9FA:
cmp r4, #0x20
bne _0221FABE
ldr r5, [r1, #0x28]
ldr r3, _0221FC5C ; =0x02228C4C
add r5, #0x14
add r2, sp, #4
mov r1, #0x11
_0221FA08:
ldrb r0, [r3]
add r3, r3, #1
strb r0, [r2]
add r2, r2, #1
sub r1, r1, #1
bne _0221FA08
add r3, sp, #0x14
ldr r2, _0221FC60 ; =0x02228E74
add r3, #1
mov r1, #0x15
_0221FA1C:
ldrb r0, [r2]
add r2, r2, #1
strb r0, [r3]
add r3, r3, #1
sub r1, r1, #1
bne _0221FA1C
add r0, sp, #0x14
add r0, #1
add r1, r6, #0
add r2, r4, #0
bl strncat
add r0, sp, #0x14
add r0, #1
bl strlen
add r1, sp, #0x14
add r2, r0, #0
add r0, r5, #0
add r1, #1
bl MATH_CalcSHA1
ldr r0, _0221FC58 ; =0x02228E40
ldr r1, _0221FC64 ; =0x02228E8C
ldr r0, [r0, #0x24]
bl strcat
mov r2, #0
ldr r4, _0221FC58 ; =0x02228E40
add r3, r2, #0
add r1, sp, #4
mov r7, #0xf
_0221FA5C:
ldrb r0, [r5, r2]
asr r0, r0, #4
ldrsb r6, [r1, r0]
ldr r0, [r4, #0x28]
strb r6, [r0, r3]
ldrb r0, [r5, r2]
ldr r6, [r4, #0x28]
add r2, r2, #1
and r0, r7
ldrsb r0, [r1, r0]
add r6, r6, r3
add r3, r3, #2
strb r0, [r6, #1]
cmp r2, #0x14
blt _0221FA5C
ldr r0, _0221FC58 ; =0x02228E40
mov r2, #0
ldr r1, [r0, #0x28]
add r1, #0x28
strb r2, [r1]
ldr r0, [r0, #0x24]
ldr r1, _0221FC68 ; =0x02228E94
bl strcat
ldr r3, _0221FC58 ; =0x02228E40
ldr r0, [r3, #0x30]
str r0, [sp]
ldr r0, [r3, #0x10]
ldr r1, [r3, #0x14]
ldr r2, [r3, #0x18]
ldr r3, [r3, #0x2c]
bl ov60_0221F838
cmp r0, #0
beq _0221FAB4
cmp r0, #1
beq _0221FAAA
cmp r0, #2
bne _0221FAB4
_0221FAAA:
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FAB4:
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #5
str r1, [r0, #0]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FABE:
mov r0, #1
str r0, [r1, #0]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FAC6:
cmp r4, #0x16
bne _0221FB70
ldr r1, _0221FC6C ; =0x02228E9C
mov r2, #0x16
bl strncmp
cmp r0, #0
bne _0221FAE4
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
mov r1, #0x1a
str r1, [r0, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FAE4:
ldr r1, _0221FC70 ; =0x02228EB4
add r0, r6, #0
mov r2, #0x16
bl strncmp
cmp r0, #0
bne _0221FB00
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
mov r1, #0x1b
str r1, [r0, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FB00:
ldr r1, _0221FC74 ; =0x02228ECC
add r0, r6, #0
mov r2, #0x16
bl strncmp
cmp r0, #0
bne _0221FB1C
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
mov r1, #0x1c
str r1, [r0, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FB1C:
ldr r1, _0221FC78 ; =0x02228EE4
add r0, r6, #0
mov r2, #0x16
bl strncmp
cmp r0, #0
bne _0221FB38
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
mov r1, #0x1d
str r1, [r0, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FB38:
ldr r1, _0221FC7C ; =0x02228EFC
add r0, r6, #0
mov r2, #0x16
bl strncmp
cmp r0, #0
bne _0221FB54
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
mov r1, #0x1e
str r1, [r0, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FB54:
ldr r1, _0221FC80 ; =0x02228F14
add r0, r6, #0
mov r2, #0x16
bl strncmp
cmp r0, #0
bne _0221FB70
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
mov r1, #0x1f
str r1, [r0, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FB70:
ldr r0, _0221FC58 ; =0x02228E40
ldr r2, [r0, #0x20]
cmp r4, r2
ldr r0, [r0, #0x1c]
bgt _0221FB8A
add r1, r6, #0
add r2, r4, #0
bl memcpy
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #7
str r1, [r0, #0]
b _0221FB9A
_0221FB8A:
add r1, r6, #0
bl memcpy
ldr r0, _0221FC58 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
mov r1, #0x20
str r1, [r0, #8]
_0221FB9A:
ldr r0, _0221FC58 ; =0x02228E40
add sp, #0x4c
str r4, [r0, #0xc]
pop {r4, r5, r6, r7, pc}
_0221FBA2:
mov r0, #1
str r0, [r1, #0]
cmp r2, #0x13
bhi _0221FC52
add r0, r2, r2
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0221FBB6: ; jump table
.short _0221FC52 - _0221FBB6 - 2 ; case 0
.short _0221FBDE - _0221FBB6 - 2 ; case 1
.short _0221FBE6 - _0221FBB6 - 2 ; case 2
.short _0221FBEE - _0221FBB6 - 2 ; case 3
.short _0221FBF6 - _0221FBB6 - 2 ; case 4
.short _0221FBFE - _0221FBB6 - 2 ; case 5
.short _0221FC06 - _0221FBB6 - 2 ; case 6
.short _0221FC0E - _0221FBB6 - 2 ; case 7
.short _0221FC16 - _0221FBB6 - 2 ; case 8
.short _0221FC1E - _0221FBB6 - 2 ; case 9
.short _0221FC26 - _0221FBB6 - 2 ; case 10
.short _0221FC2E - _0221FBB6 - 2 ; case 11
.short _0221FC36 - _0221FBB6 - 2 ; case 12
.short _0221FC52 - _0221FBB6 - 2 ; case 13
.short _0221FC52 - _0221FBB6 - 2 ; case 14
.short _0221FC3E - _0221FBB6 - 2 ; case 15
.short _0221FC46 - _0221FBB6 - 2 ; case 16
.short _0221FC52 - _0221FBB6 - 2 ; case 17
.short _0221FC52 - _0221FBB6 - 2 ; case 18
.short _0221FC4E - _0221FBB6 - 2 ; case 19
_0221FBDE:
mov r0, #8
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FBE6:
mov r0, #9
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FBEE:
mov r0, #0xa
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FBF6:
mov r0, #0xb
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FBFE:
mov r0, #0xc
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC06:
mov r0, #0xd
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC0E:
mov r0, #0xe
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC16:
mov r0, #0xf
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC1E:
mov r0, #0x10
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC26:
mov r0, #0x11
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC2E:
mov r0, #0x12
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC36:
mov r0, #0x13
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC3E:
mov r0, #0x16
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC46:
mov r0, #0x17
str r0, [r1, #8]
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
_0221FC4E:
mov r0, #0x19
str r0, [r1, #8]
_0221FC52:
add sp, #0x4c
pop {r4, r5, r6, r7, pc}
nop
_0221FC58: .word Unk_ov60_02228E40
_0221FC5C: .word Unk_ov60_02228C4C
_0221FC60: .word Unk_ov60_02228E74
_0221FC64: .word Unk_ov60_02228E8C
_0221FC68: .word Unk_ov60_02228E94
_0221FC6C: .word Unk_ov60_02228E9C
_0221FC70: .word Unk_ov60_02228EB4
_0221FC74: .word Unk_ov60_02228ECC
_0221FC78: .word Unk_ov60_02228EE4
_0221FC7C: .word Unk_ov60_02228EFC
_0221FC80: .word Unk_ov60_02228F14
thumb_func_end ov60_0221F9D0
thumb_func_start ov60_0221FC84
ov60_0221FC84: ; 0x0221FC84
push {r3, lr}
ldr r0, _0221FCA4 ; =0x02228E40
mov r1, #2
str r1, [r0, #0]
sub r1, r1, #3
str r1, [r0, #4]
mov r0, #0
bl DWC_InitGHTTP
cmp r0, #0
bne _0221FCA0
ldr r0, _0221FCA4 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
_0221FCA0:
pop {r3, pc}
nop
_0221FCA4: .word Unk_ov60_02228E40
thumb_func_end ov60_0221FC84
thumb_func_start ov60_0221FCA8
ov60_0221FCA8: ; 0x0221FCA8
push {r3, r4, r5, r6, r7, lr}
add r5, r1, #0
ldr r1, _0221FD38 ; =0x02228E40
add r4, r3, #0
ldr r3, [r1, #0]
add r7, r0, #0
cmp r3, #2
beq _0221FCBC
mov r0, #1
pop {r3, r4, r5, r6, r7, pc}
_0221FCBC:
str r5, [r1, #0x10]
str r2, [r1, #0x14]
str r4, [r1, #0x18]
ldr r2, [sp, #0x18]
add r4, #8
str r2, [r1, #0x1c]
ldr r2, [sp, #0x1c]
str r2, [r1, #0x20]
bl strlen
add r6, r0, #0
add r0, r4, #0
bl ov60_0221F944
add r1, r0, #0
add r6, #0x45
mov r0, #0xa
add r1, r6, r1
bl DWC_Alloc
ldr r1, _0221FD38 ; =0x02228E40
cmp r0, #0
str r0, [r1, #0x24]
bne _0221FCF0
mov r0, #2
pop {r3, r4, r5, r6, r7, pc}
_0221FCF0:
ldr r1, _0221FD3C ; =0x02228F2C
add r2, r7, #0
add r3, r5, #0
bl sprintf
ldr r0, _0221FD38 ; =0x02228E40
ldr r6, [r0, #0x24]
add r0, r6, #0
bl strlen
add r5, r0, #0
ldr r0, _0221FD40 ; =0x02228E8C
bl strlen
add r1, r6, r5
add r1, r1, r0
ldr r0, _0221FD38 ; =0x02228E40
str r1, [r0, #0x28]
ldr r0, _0221FD44 ; =0x02228E94
bl strlen
ldr r1, _0221FD38 ; =0x02228E40
ldr r2, [r1, #0x28]
add r2, #0x28
add r0, r2, r0
str r0, [r1, #0x2c]
add r0, r4, #0
bl ov60_0221F944
add r1, r0, #1
ldr r0, _0221FD38 ; =0x02228E40
str r1, [r0, #0x30]
mov r1, #3
str r1, [r0, #0]
mov r0, #0
pop {r3, r4, r5, r6, r7, pc}
; .align 2, 0
_0221FD38: .word Unk_ov60_02228E40
_0221FD3C: .word Unk_ov60_02228F2C
_0221FD40: .word Unk_ov60_02228E8C
_0221FD44: .word Unk_ov60_02228E94
thumb_func_end ov60_0221FCA8
thumb_func_start ov60_0221FD48
ov60_0221FD48: ; 0x0221FD48
push {r3, lr}
ldr r1, _0221FDE0 ; =0x02228E40
ldr r0, [r1, #0]
cmp r0, #7
bhi _0221FDD8
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_0221FD5E: ; jump table
.short _0221FDD8 - _0221FD5E - 2 ; case 0
.short _0221FDD8 - _0221FD5E - 2 ; case 1
.short _0221FDD8 - _0221FD5E - 2 ; case 2
.short _0221FD6E - _0221FD5E - 2 ; case 3
.short _0221FD94 - _0221FD5E - 2 ; case 4
.short _0221FDA4 - _0221FD5E - 2 ; case 5
.short _0221FDCA - _0221FD5E - 2 ; case 6
.short _0221FDD8 - _0221FD5E - 2 ; case 7
_0221FD6E:
ldr r0, [r1, #0x24]
ldr r1, _0221FDE4 ; =ov60_0221F9D0
ldr r2, _0221FDE8 ; =0x02228E40
bl DWC_GetGHTTPData
ldr r1, _0221FDE0 ; =0x02228E40
str r0, [r1, #4]
bl ov60_0221F968
ldr r0, _0221FDE0 ; =0x02228E40
ldr r1, [r0, #4]
cmp r1, #0
blt _0221FD8E
mov r1, #4
str r1, [r0, #0]
b _0221FDD8
_0221FD8E:
mov r1, #1
str r1, [r0, #0]
b _0221FDD8
_0221FD94:
bl DWC_ProcessGHTTP
cmp r0, #0
bne _0221FDD8
ldr r0, _0221FDE0 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
b _0221FDD8
_0221FDA4:
ldr r0, [r1, #0x24]
ldr r1, _0221FDE4 ; =ov60_0221F9D0
ldr r2, _0221FDE8 ; =0x02228E40
bl DWC_GetGHTTPData
ldr r1, _0221FDE0 ; =0x02228E40
str r0, [r1, #4]
bl ov60_0221F968
ldr r0, _0221FDE0 ; =0x02228E40
ldr r1, [r0, #4]
cmp r1, #0
blt _0221FDC4
mov r1, #6
str r1, [r0, #0]
b _0221FDD8
_0221FDC4:
mov r1, #1
str r1, [r0, #0]
b _0221FDD8
_0221FDCA:
bl DWC_ProcessGHTTP
cmp r0, #0
bne _0221FDD8
ldr r0, _0221FDE0 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
_0221FDD8:
ldr r0, _0221FDE0 ; =0x02228E40
ldr r0, [r0, #0]
pop {r3, pc}
nop
_0221FDE0: .word Unk_ov60_02228E40
_0221FDE4: .word ov60_0221F9D0
_0221FDE8: .word Unk_ov60_02228E40
thumb_func_end ov60_0221FD48
thumb_func_start ov60_0221FDEC
ov60_0221FDEC: ; 0x0221FDEC
push {r3, lr}
ldr r0, _0221FE10 ; =0x02228E40
ldr r1, [r0, #0x24]
cmp r1, #0
beq _0221FE04
mov r0, #0xa
mov r2, #0
bl DWC_Free
ldr r0, _0221FE10 ; =0x02228E40
mov r1, #0
str r1, [r0, #0x24]
_0221FE04:
bl DWC_ShutdownGHTTP
ldr r0, _0221FE10 ; =0x02228E40
mov r1, #1
str r1, [r0, #0]
pop {r3, pc}
; .align 2, 0
_0221FE10: .word Unk_ov60_02228E40
thumb_func_end ov60_0221FDEC
thumb_func_start ov60_0221FE14
ov60_0221FE14: ; 0x0221FE14
ldr r0, _0221FE1C ; =0x02228E40
ldr r0, [r0, #8]
bx lr
nop
_0221FE1C: .word Unk_ov60_02228E40
thumb_func_end ov60_0221FE14
thumb_func_start ov60_0221FE20
ov60_0221FE20: ; 0x0221FE20
ldr r0, _0221FE28 ; =0x02228E40
ldr r0, [r0, #0xc]
bx lr
nop
_0221FE28: .word Unk_ov60_02228E40
thumb_func_end ov60_0221FE20
.rodata
.global Unk_ov60_02228C4C
Unk_ov60_02228C4C: ; 0x02228C4C
.incbin "incbin/overlay60_rodata.bin", 0x0, 0x11
.data
.global Unk_ov60_02228E40
Unk_ov60_02228E40: ; 0x02228E40
.incbin "incbin/overlay60_data.bin", 0x0, 0x34 - 0x0
.global Unk_ov60_02228E74
Unk_ov60_02228E74: ; 0x02228E74
.incbin "incbin/overlay60_data.bin", 0x34, 0x4C - 0x34
.global Unk_ov60_02228E8C
Unk_ov60_02228E8C: ; 0x02228E8C
.incbin "incbin/overlay60_data.bin", 0x4C, 0x54 - 0x4C
.global Unk_ov60_02228E94
Unk_ov60_02228E94: ; 0x02228E94
.incbin "incbin/overlay60_data.bin", 0x54, 0x5C - 0x54
.global Unk_ov60_02228E9C
Unk_ov60_02228E9C: ; 0x02228E9C
.incbin "incbin/overlay60_data.bin", 0x5C, 0x74 - 0x5C
.global Unk_ov60_02228EB4
Unk_ov60_02228EB4: ; 0x02228EB4
.incbin "incbin/overlay60_data.bin", 0x74, 0x8C - 0x74
.global Unk_ov60_02228ECC
Unk_ov60_02228ECC: ; 0x02228ECC
.incbin "incbin/overlay60_data.bin", 0x8C, 0xA4 - 0x8C
.global Unk_ov60_02228EE4
Unk_ov60_02228EE4: ; 0x02228EE4
.incbin "incbin/overlay60_data.bin", 0xA4, 0xBC - 0xA4
.global Unk_ov60_02228EFC
Unk_ov60_02228EFC: ; 0x02228EFC
.incbin "incbin/overlay60_data.bin", 0xBC, 0xD4 - 0xBC
.global Unk_ov60_02228F14
Unk_ov60_02228F14: ; 0x02228F14
.incbin "incbin/overlay60_data.bin", 0xD4, 0xEC - 0xD4
.global Unk_ov60_02228F2C
Unk_ov60_02228F2C: ; 0x02228F2C
.incbin "incbin/overlay60_data.bin", 0xEC, 0xA

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,7 @@
#pragma warn_padding off
//#include <stdio.h>
#include <null.h>
#include <size_t.h>
#pragma warn_padding reset
#include <stdarg.h>

View File

@ -74,6 +74,7 @@ typedef int BOOL;
#define FALSE 0
#endif
// already defined in an MSL header
#ifndef NULL
#ifdef __cplusplus
#define NULL 0

8
lib/include/null.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef MSL_NULL_H
#define MSL_NULL_H
#ifndef NULL
#define NULL 0L
#endif
#endif // MSL_NULL_H

View File

@ -13,12 +13,12 @@ void * memcpy(void * dest, const void * src, size_t size);
void * memchr(const void * arr, int value, size_t size);
int memcmp(const void * a, const void * b, size_t size);
char * strcpy(char * dest, const char * src);
unsigned strlen(const char * str);
size_t strlen(const char * str);
char * strncpy(char * dest, const char * src, size_t n);
int strcmp(const char * a, const char * b);
char * strcat(char * dest, const char * src);
char * strncat(char * dest, const char * src, size_t n);
unsigned strspn(const char * a, const char * b);
size_t strspn(const char * a, const char * b);
char * strtok(char * str, const char * sep);
char * strstr(const char * haystack, const char * needle);

View File

@ -320,7 +320,7 @@ Static main
Object src/unk_020920C0.o
Object src/unk_020923C0.o
Object src/unk_02092494.o
Object asm/unk_020933F8.o
Object src/unk_020933F8.o
Object src/unk_02094EDC.o
Object src/unk_02095AF0.o
Object src/unk_02095CD4.o
@ -1026,7 +1026,8 @@ Overlay overlay13
Overlay overlay14
{
After overlay11
Object asm/overlay014/ov14_0221FC20.o
Object src/overlay014/ov14_0221FC20.o
Object asm/overlay014/ov14_022248A4.o
}
Overlay overlay15
@ -1050,7 +1051,7 @@ Overlay overlay16
Object asm/overlay016/ov16_02266F1C.o
Object src/overlay016/ov16_02268520.o
Object asm/overlay016/ov16_0226871C.o
Object asm/overlay016/ov16_0226D094.o
Object src/overlay016/ov16_0226D094.o
Object src/overlay016/ov16_0226DB7C.o
Object src/overlay016/ov16_0226DE44.o
Object src/overlay016/ov16_0226E148.o
@ -1555,7 +1556,7 @@ Overlay overlay60
{
After overlay4
Object src/overlay060/ov60_0221F800.o
Object asm/overlay060/ov60_0221F968.o
Object src/overlay060/ov60_0221F968.o
Object asm/overlay060/ov60_0221FE2C.o
Object asm/overlay060/ov60_022206D4.o
Object asm/overlay060/ov60_02220844.o

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,709 @@
#include "enums.h"
#include <nitro.h>
#include <string.h>
#include "assert.h"
#include "struct_decls/struct_02002F38_decl.h"
#include "struct_decls/struct_02006C24_decl.h"
#include "struct_decls/struct_0200C6E4_decl.h"
#include "struct_decls/struct_0200C704_decl.h"
#include "struct_decls/struct_0201CD38_decl.h"
#include "struct_defs/struct_0200D0F4.h"
#include "overlay104/struct_ov104_0223F9E0.h"
#include "unk_02005474.h"
#include "unk_020068C8.h"
#include "unk_0200C6E4.h"
#include "unk_0200D9E8.h"
#include "unk_02017E74.h"
#include "unk_020218BC.h"
#include "overlay016/ov16_0223DF00.h"
#include "overlay016/ov16_0226D094.h"
typedef struct {
UnkStruct_0200D0F4 * unk_00;
UnkStruct_0201CD38 * unk_04;
UnkEnum_ov16_0226D220 unk_08;
UnkEnum_ov16_0226D194 unk_0C;
UnkEnum_ov16_0226D194_3 unk_10;
s32 unk_14;
s16 unk_18;
u8 unk_1A;
u8 unk_1B;
} UnkStruct_ov16_0226D2A0;
typedef struct {
UnkStruct_0200D0F4 * unk_00;
UnkStruct_0201CD38 * unk_04;
UnkEnum_ov16_0226D194 unk_08;
UnkEnum_ov16_0226D194_3 unk_0C;
UnkEnum_ov16_0226D194_2 unk_10;
s8 * unk_14;
s16 * unk_18;
s32 unk_1C;
s32 unk_20;
s32 unk_24;
s16 unk_28;
u16 unk_2A;
u8 unk_2C;
u8 unk_2D;
u8 unk_2E;
u8 unk_2F;
} UnkStruct_ov16_0226D540;
typedef struct UnkStruct_ov16_0226D160_t {
UnkStruct_ov16_0226D2A0 unk_00;
UnkStruct_ov16_0226D540 unk_1C[6];
s8 unk_13C;
} UnkStruct_ov16_0226D160;
static void ov16_0226D2A0(UnkStruct_ov16_0226D2A0 * param0, UnkEnum_ov16_0226D194 param1, UnkEnum_ov16_0226D194_3 param2, UnkStruct_0200C6E4 * param3, UnkStruct_0200C704 * param4);
static void ov16_0226D3F8(UnkStruct_ov16_0226D2A0 * param0, UnkEnum_ov16_0226D220 param1);
static void ov16_0226D540(UnkStruct_ov16_0226D540 * param0, s8 * param1, UnkEnum_ov16_0226D194 param2, UnkEnum_ov16_0226D194_1 param3, UnkEnum_ov16_0226D194_3 param4, int param5, int param6, UnkStruct_0200C6E4 * param7, UnkStruct_0200C704 * param8);
static void ov16_0226D938(UnkStruct_ov16_0226D540 * param0, int param1, UnkEnum_ov16_0226D194_2 param2, s16 * param3);
static void ov16_0226D34C(UnkStruct_0201CD38 * param0, void * param1);
static void ov16_0226D434(UnkStruct_0201CD38 * param0, void * param1);
static void ov16_0226D654(UnkStruct_0201CD38 * param0, void * param1);
static void ov16_0226D854(UnkStruct_0201CD38 * param0, void * param1);
static void ov16_0226D99C(UnkStruct_0201CD38 * param0, void * param1);
static void ov16_0226DAAC(UnkStruct_0201CD38 * param0, void * param1);
static int ov16_0226DB04(int param0, UnkEnum_ov16_0226D194 param1);
static int ov16_0226DB44(int param0);
static UnkStruct_ov16_0226D160 * ov16_0226D160(void);
static void ov16_0226D17C(UnkStruct_ov16_0226D160 * param0);
static const UnkStruct_ov104_0223F9E0 Unk_ov16_02270A3C = {
0x0,
0x0,
0x0,
0x0,
0xA,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{0x4FBD, 0x4E45, 0x4FB7, 0x4FAC, 0xFFFFFFFF, 0xFFFFFFFF},
0x0,
0x0
};
static const UnkStruct_ov104_0223F9E0 Unk_ov16_02270A70 = {
0x0,
0x0,
0x0,
0x0,
0x8,
0x0,
NNS_G2D_VRAM_TYPE_2DMAIN,
{0x4FBD, 0x4E45, 0x4FB7, 0x4FAC, 0xFFFFFFFF, 0xFFFFFFFF},
0x0,
0x0
};
__attribute__((aligned(4))) static const u16 Unk_ov16_02270A2C[] = {
0x54,
0x78,
0x78
};
__attribute__((aligned(4))) static const u16 Unk_ov16_02270A24[] = {
0x14,
0x38,
0x38
};
__attribute__((aligned(4))) static const u16 Unk_ov16_02270A34[] = {
0x4E,
0x72,
0x72
};
__attribute__((aligned(4))) static const u16 Unk_ov16_02270A1C[] = {
0xE,
0x32,
0x32
};
void ov16_0226D094 (UnkStruct_0200C6E4 * param0, UnkStruct_0200C704 * param1, UnkStruct_02002F38 * param2)
{
UnkStruct_02006C24 * v0;
v0 = sub_02006C24(27, 5);
sub_0200CDC4(param2, 2, param0, param1, v0, 110, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 20037);
sub_0200CC3C(param0, param1, v0, 340, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 20413);
sub_0200CE24(param0, param1, v0, 341, 1, 20407);
sub_0200CE54(param0, param1, v0, 342, 1, 20396);
sub_02006CA8(v0);
}
void ov16_0226D12C (UnkStruct_0200C704 * param0)
{
sub_0200D070(param0, 20413);
sub_0200D080(param0, 20037);
sub_0200D090(param0, 20407);
sub_0200D0A0(param0, 20396);
}
static UnkStruct_ov16_0226D160 * ov16_0226D160 (void)
{
UnkStruct_ov16_0226D160 * v0;
v0 = sub_02018144(5, sizeof(UnkStruct_ov16_0226D160));
MI_CpuClear8(v0, sizeof(UnkStruct_ov16_0226D160));
return v0;
}
static void ov16_0226D17C (UnkStruct_ov16_0226D160 * param0)
{
GF_ASSERT(param0->unk_00.unk_04 == NULL);
sub_020181C4(param0);
}
UnkStruct_ov16_0226D160 * ov16_0226D194 (u8 param0[], UnkEnum_ov16_0226D194 param1, UnkEnum_ov16_0226D194_1 param2, UnkEnum_ov16_0226D194_3 param3, UnkStruct_0200C6E4 * param4, UnkStruct_0200C704 * param5)
{
UnkStruct_ov16_0226D160 * v0;
int v1, v2;
v0 = ov16_0226D160();
ov16_0226D2A0(&v0->unk_00, param1, param3, param4, param5);
for (v1 = 0; v1 < 6; v1++) {
v2 = ov16_0226DB04(param0[v1], param1);
ov16_0226D540(&v0->unk_1C[v1], &v0->unk_13C, param1, param2, param3, v1, v2, param4, param5);
}
return v0;
}
BOOL ov16_0226D1FC (UnkStruct_ov16_0226D160 * param0)
{
int v0;
if (param0->unk_00.unk_04 == NULL) {
for (v0 = 0; v0 < 6; v0++) {
if (param0->unk_1C[v0].unk_04 != NULL) {
break;
}
}
if (v0 == 6) {
return 1;
}
}
return 0;
}
void ov16_0226D220 (UnkStruct_ov16_0226D160 * param0, UnkEnum_ov16_0226D220 param1, UnkEnum_ov16_0226D194_2 param2)
{
int v0;
GF_ASSERT(param0 != NULL);
ov16_0226D3F8(&param0->unk_00, param1);
for (v0 = 0; v0 < 6; v0++) {
ov16_0226D938(&param0->unk_1C[v0], v0, param2, &param0->unk_00.unk_18);
}
}
BOOL ov16_0226D258 (UnkStruct_ov16_0226D160 * param0)
{
int v0;
if (param0->unk_00.unk_04 == NULL) {
for (v0 = 0; v0 < 6; v0++) {
if (param0->unk_1C[v0].unk_04 != NULL) {
break;
}
}
if (v0 == 6) {
return 1;
}
}
return 0;
}
void ov16_0226D27C (UnkStruct_ov16_0226D160 * param0)
{
int v0;
sub_0200D0F4(param0->unk_00.unk_00);
for (v0 = 0; v0 < 6; v0++) {
sub_0200D0F4(param0->unk_1C[v0].unk_00);
}
ov16_0226D17C(param0);
}
static void ov16_0226D2A0 (UnkStruct_ov16_0226D2A0 * param0, UnkEnum_ov16_0226D194 param1, UnkEnum_ov16_0226D194_3 param2, UnkStruct_0200C6E4 * param3, UnkStruct_0200C704 * param4)
{
GF_ASSERT(param0->unk_00 == NULL && param0->unk_04 == NULL);
MI_CpuClear8(param0, sizeof(UnkStruct_ov16_0226D2A0));
param0->unk_00 = sub_0200CE6C(param3, param4, &Unk_ov16_02270A3C);
if (param1 == UnkEnum_ov16_0226D194_00) {
sub_0200D4C4(param0->unk_00, (256 + 96), Unk_ov16_02270A2C[param2]);
sub_02021D6C(param0->unk_00->unk_00, 8);
} else {
sub_0200D4C4(param0->unk_00, -96, Unk_ov16_02270A24[param2]);
sub_02021D6C(param0->unk_00->unk_00, 7);
}
sub_0200D324(param0->unk_00->unk_00);
param0->unk_0C = param1;
param0->unk_10 = param2;
param0->unk_1A = 0;
param0->unk_04 = sub_0200D9E8(ov16_0226D34C, param0, 500);
sub_02005748(1809);
}
static void ov16_0226D34C (UnkStruct_0201CD38 * param0, void * param1)
{
UnkStruct_ov16_0226D2A0 * v0 = param1;
switch (v0->unk_1A) {
case 0:
{
s16 v1, v2;
sub_0200D550(v0->unk_00, &v1, &v2);
v0->unk_14 = v1 << 8;
}
v0->unk_1A++;
case 1:
if (v0->unk_0C == UnkEnum_ov16_0226D194_00) {
v0->unk_14 -= 0x1200;
if (v0->unk_14 <= (256 - 32) << 8) {
v0->unk_14 = (256 - 32) << 8;
v0->unk_1A++;
}
sub_0200D4C4(v0->unk_00, v0->unk_14 >> 8, Unk_ov16_02270A2C[v0->unk_10]);
} else {
v0->unk_14 += 0x1200;
if (v0->unk_14 >= 32 << 8) {
v0->unk_14 = 32 << 8;
v0->unk_1A++;
}
sub_0200D4C4(v0->unk_00, v0->unk_14 >> 8, Unk_ov16_02270A24[v0->unk_10]);
}
break;
default:
sub_0200DA58(param0);
v0->unk_04 = NULL;
return;
}
}
static void ov16_0226D3F8 (UnkStruct_ov16_0226D2A0 * param0, UnkEnum_ov16_0226D220 param1)
{
GF_ASSERT(param0->unk_00 != NULL && param0->unk_04 == NULL);
param0->unk_1A = 0;
param0->unk_08 = param1;
if (param1 == UnkEnum_ov16_0226D220_00) {
param0->unk_1B = 4;
} else {
param0->unk_1B = 0;
}
param0->unk_04 = sub_0200D9E8(ov16_0226D434, param0, 500);
}
static void ov16_0226D434 (UnkStruct_0201CD38 * param0, void * param1)
{
UnkStruct_ov16_0226D2A0 * v0 = param1;
switch (v0->unk_1A) {
case 0:
{
s16 v1, v2;
sub_0200D550(v0->unk_00, &v1, &v2);
v0->unk_14 = v1 << 8;
}
sub_0200D810(v0->unk_00, GX_OAM_MODE_XLU);
v0->unk_18 = 16 << 8;
G2_SetBlendAlpha(GX_BLEND_PLANEMASK_NONE, GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BD, (v0->unk_18 >> 8), 16 - (v0->unk_18 >> 8));
v0->unk_1A++;
case 1:
if (v0->unk_1B > 0) {
v0->unk_1B--;
break;
}
v0->unk_1A++;
case 2:
if (v0->unk_08 == UnkEnum_ov16_0226D220_00) {
if (v0->unk_0C == UnkEnum_ov16_0226D194_00) {
v0->unk_14 -= 0x400;
sub_0200D4C4(v0->unk_00, v0->unk_14 >> 8, Unk_ov16_02270A2C[v0->unk_10]);
} else {
v0->unk_14 += 0x400;
sub_0200D4C4(v0->unk_00, v0->unk_14 >> 8, Unk_ov16_02270A24[v0->unk_10]);
}
}
v0->unk_18 -= 0x100;
if (v0->unk_18 <= 0) {
v0->unk_18 = 0;
sub_0200D3EC(v0->unk_00->unk_00, 0);
v0->unk_1A++;
}
G2_ChangeBlendAlpha(v0->unk_18 >> 8, 16 - (v0->unk_18 >> 8));
break;
default:
ov16_0223F9F0();
sub_0200DA58(param0);
v0->unk_04 = NULL;
return;
}
}
static void ov16_0226D540 (UnkStruct_ov16_0226D540 * param0, s8 * param1, UnkEnum_ov16_0226D194 param2, UnkEnum_ov16_0226D194_1 param3, UnkEnum_ov16_0226D194_3 param4, int param5, int param6, UnkStruct_0200C6E4 * param7, UnkStruct_0200C704 * param8)
{
GF_ASSERT(param0->unk_00 == NULL && param0->unk_04 == NULL);
MI_CpuClear8(param0, sizeof(UnkStruct_ov16_0226D540));
param0->unk_00 = sub_0200CE6C(param7, param8, &Unk_ov16_02270A70);
if (param2 == UnkEnum_ov16_0226D194_00) {
sub_0200D4C4(param0->unk_00, (256 + 20), Unk_ov16_02270A34[param4]);
} else {
sub_0200D4C4(param0->unk_00, -20, Unk_ov16_02270A1C[param4]);
}
sub_02021D6C(param0->unk_00->unk_00, param6);
sub_0200D324(param0->unk_00->unk_00);
param0->unk_08 = param2;
param0->unk_2D = param5;
param0->unk_0C = param4;
param0->unk_2E = ov16_0226DB44(param6);
param0->unk_14 = param1;
param0->unk_2A = ((param6 == 6) ? 1811 : 1810);
if (param2 == UnkEnum_ov16_0226D194_00) {
param0->unk_20 = (256 - 128 + 20 + 14) + param5 * 16;
param0->unk_24 = (256 - 128 + 20 + 14) + param5 * 15 - 6;
} else {
param0->unk_20 = (128 - 20 - 14) - param5 * 16;
param0->unk_24 = (128 - 20 - 14) - param5 * 15 + 6;
}
param0->unk_2C = 0;
if (param3 == UnkEnum_ov16_0226D194_1_00) {
param0->unk_28 = 3 * param5 + 5;
param0->unk_04 = sub_0200D9E8(ov16_0226D654, param0, (500 + 1));
} else {
param0->unk_28 = 0;
param0->unk_04 = sub_0200D9E8(ov16_0226D854, param0, (500 + 1));
}
}
static void ov16_0226D654 (UnkStruct_0201CD38 * param0, void * param1)
{
UnkStruct_ov16_0226D540 * v0 = param1;
switch (v0->unk_2C) {
case 0:
{
s16 v1, v2;
sub_0200D550(v0->unk_00, &v1, &v2);
v0->unk_1C = v1 << 8;
}
v0->unk_2C++;
case 1:
if (v0->unk_28 > 0) {
v0->unk_28--;
break;
}
case 2:
if (v0->unk_08 == UnkEnum_ov16_0226D194_00) {
v0->unk_1C -= 0x1200;
if (v0->unk_1C <= v0->unk_24 << 8) {
v0->unk_1C = v0->unk_24 << 8;
sub_02005748(v0->unk_2A);
v0->unk_2C++;
}
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A34[v0->unk_0C]);
} else {
v0->unk_1C += 0x1200;
if (v0->unk_1C >= v0->unk_24 << 8) {
v0->unk_1C = v0->unk_24 << 8;
v0->unk_2C++;
}
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A1C[v0->unk_0C]);
}
sub_0200D324(v0->unk_00->unk_00);
break;
case 3:
(*(v0->unk_14))++;
v0->unk_2C++;
case 4:
if (*(v0->unk_14) != 6) {
sub_0200D324(v0->unk_00->unk_00);
break;
}
if (v0->unk_08 == UnkEnum_ov16_0226D194_00) {
sub_02021E50(v0->unk_00->unk_00, 1);
} else {
sub_02021E50(v0->unk_00->unk_00, 1);
}
v0->unk_28 = 0;
v0->unk_2C++;
case 5:
v0->unk_28++;
if (v0->unk_28 < 0) {
break;
}
sub_02021D6C(v0->unk_00->unk_00, v0->unk_2E);
v0->unk_28 = 0;
v0->unk_2C++;
case 6:
if (v0->unk_08 == UnkEnum_ov16_0226D194_00) {
v0->unk_1C += 0x600;
if (v0->unk_1C >= v0->unk_20 << 8) {
v0->unk_1C = v0->unk_20 << 8;
v0->unk_2C++;
}
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A34[v0->unk_0C]);
} else {
v0->unk_1C -= 0x600;
if (v0->unk_1C <= v0->unk_20 << 8) {
v0->unk_1C = v0->unk_20 << 8;
v0->unk_2C++;
}
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A1C[v0->unk_0C]);
}
sub_0200D324(v0->unk_00->unk_00);
break;
default:
sub_02021E50(v0->unk_00->unk_00, 0);
sub_0200DA58(param0);
v0->unk_04 = NULL;
return;
}
}
static void ov16_0226D854 (UnkStruct_0201CD38 * param0, void * param1)
{
UnkStruct_ov16_0226D540 * v0 = param1;
switch (v0->unk_2C) {
case 0:
{
s16 v1, v2;
sub_0200D550(v0->unk_00, &v1, &v2);
v0->unk_1C = v1 << 8;
}
sub_02021E50(v0->unk_00->unk_00, 0);
v0->unk_2C++;
case 1:
if (v0->unk_28 > 0) {
v0->unk_28--;
break;
}
case 2:
if (v0->unk_08 == UnkEnum_ov16_0226D194_00) {
v0->unk_1C -= 0x1200;
if (v0->unk_1C <= v0->unk_20 << 8) {
v0->unk_1C = v0->unk_20 << 8;
v0->unk_2C++;
}
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A34[v0->unk_0C]);
} else {
v0->unk_1C += 0x1200;
if (v0->unk_1C >= v0->unk_20 << 8) {
v0->unk_1C = v0->unk_20 << 8;
v0->unk_2C++;
}
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A1C[v0->unk_0C]);
}
break;
default:
sub_0200DA58(param0);
v0->unk_04 = NULL;
return;
}
}
static void ov16_0226D938 (UnkStruct_ov16_0226D540 * param0, int param1, UnkEnum_ov16_0226D194_2 param2, s16 * param3)
{
GF_ASSERT(param0->unk_00 != NULL && param0->unk_04 == NULL);
param0->unk_2C = 0;
if (param2 == UnkEnum_ov16_0226D194_2_00) {
param0->unk_18 = param3;
param0->unk_28 = 3 * param1;
param0->unk_2F = 4;
param0->unk_04 = sub_0200D9E8(ov16_0226D99C, param0, (500 + 1));
} else {
param0->unk_18 = param3;
param0->unk_28 = 0;
param0->unk_2F = 0;
param0->unk_04 = sub_0200D9E8(ov16_0226DAAC, param0, (500 + 1));
}
}
static void ov16_0226D99C (UnkStruct_0201CD38 * param0, void * param1)
{
UnkStruct_ov16_0226D540 * v0 = param1;
if ((*(v0->unk_18)) == 0) {
v0->unk_2C = 100;
}
switch (v0->unk_2C) {
case 0:
{
s16 v1, v2;
sub_0200D550(v0->unk_00, &v1, &v2);
v0->unk_1C = v1 << 8;
}
sub_0200D810(v0->unk_00, GX_OAM_MODE_XLU);
v0->unk_2C++;
case 1:
if (v0->unk_2F > 0) {
v0->unk_2F--;
break;
}
if (v0->unk_28 > 0) {
v0->unk_28--;
break;
}
case 2:
if (v0->unk_08 == UnkEnum_ov16_0226D194_00) {
v0->unk_1C -= 0xc00;
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A34[v0->unk_0C]);
} else {
v0->unk_1C += 0xc00;
sub_0200D4C4(v0->unk_00, v0->unk_1C >> 8, Unk_ov16_02270A1C[v0->unk_0C]);
}
if ((v0->unk_1C < -16 * 0x100) || (v0->unk_1C > ((256 + 16) << 8))) {
v0->unk_2C++;
}
sub_0200D324(v0->unk_00->unk_00);
break;
case 100:
default:
sub_0200D3EC(v0->unk_00->unk_00, 0);
sub_0200DA58(param0);
v0->unk_04 = NULL;
return;
}
}
static void ov16_0226DAAC (UnkStruct_0201CD38 * param0, void * param1)
{
UnkStruct_ov16_0226D540 * v0 = param1;
if ((*(v0->unk_18)) == 0) {
v0->unk_2C = 100;
}
switch (v0->unk_2C) {
case 0:
sub_0200D810(v0->unk_00, GX_OAM_MODE_XLU);
v0->unk_2C++;
case 1:
break;
case 100:
default:
sub_0200D3EC(v0->unk_00->unk_00, 0);
sub_0200DA58(param0);
v0->unk_04 = NULL;
return;
}
}
static int ov16_0226DB04 (int param0, UnkEnum_ov16_0226D194 param1)
{
int v0;
switch (param0) {
case 0:
default:
v0 = 6;
break;
case 1:
v0 = (param1 == UnkEnum_ov16_0226D194_00) ? 3 : 0;
break;
case 2:
v0 = (param1 == UnkEnum_ov16_0226D194_00) ? 5 : 2;
break;
case 3:
v0 = (param1 == UnkEnum_ov16_0226D194_00) ? 4 : 1;
break;
}
return v0;
}
static int ov16_0226DB44 (int param0)
{
switch (param0) {
case 6:
default:
return param0;
case 3:
return 0;
case 0:
return 3;
case 5:
return 2;
case 2:
return 5;
case 4:
return 1;
case 1:
return 4;
}
}

View File

@ -0,0 +1,310 @@
#include <dwc.h>
#include "overlay060/ov60_0221F800.h"
#include "overlay060/ov60_0221F968.h"
struct {
int unk_00;
int unk_04;
int unk_08;
int unk_0C;
int unk_10;
void * unk_14;
int unk_18;
void * unk_1C;
int unk_20;
char * unk_24;
char * unk_28;
char * unk_2C;
int unk_30;
} Unk_ov60_02228E40 = {1, 0, 0, 0};
static void ov60_0221F968 (int param0)
{
switch (param0) {
case DWC_GHTTP_IN_ERROR:
Unk_ov60_02228E40.unk_08 = 0;
break;
case DWC_GHTTP_INVALID_POST:
Unk_ov60_02228E40.unk_08 = 1;
break;
case DWC_GHTTP_INSUFFICIENT_MEMORY:
Unk_ov60_02228E40.unk_08 = 2;
break;
case DWC_GHTTP_INVALID_FILE_NAME:
Unk_ov60_02228E40.unk_08 = 3;
break;
case DWC_GHTTP_INVALID_BUFFER_SIZE:
Unk_ov60_02228E40.unk_08 = 4;
break;
case DWC_GHTTP_INVALID_URL:
Unk_ov60_02228E40.unk_08 = 5;
break;
case DWC_GHTTP_UNSPECIFIED_ERROR:
Unk_ov60_02228E40.unk_08 = 6;
break;
default:
Unk_ov60_02228E40.unk_08 = 0;
}
}
static void ov60_0221F9D0 (const char * param0, int param1, DWCGHTTPResult param2, void * param3)
{
#pragma unused(param3)
Unk_ov60_02228E40.unk_04 = -1;
if (Unk_ov60_02228E40.unk_00 == 1) {
return;
}
if (param2 == DWC_GHTTP_SUCCESS) {
switch (Unk_ov60_02228E40.unk_00) {
case 4:
if (param1 == 32) {
int v0;
u8 * v1 = (u8 *)(Unk_ov60_02228E40.unk_28 + 20);
char v2[(32 + 20 + 1)];
int v3;
const char v4[] = "0123456789abcdef";
strcpy(v2, "sAdeqWo3voLeC5r16DYv");
strncat(v2, param0, (u32)param1);
MATH_CalcSHA1((u8 *)v1, (const u8 *)v2, strlen(v2));
strcat(Unk_ov60_02228E40.unk_24, "&hash=");
for (v0 = 0; v0 < 20; v0++) {
Unk_ov60_02228E40.unk_28[v0 * 2] = v4[v1[v0] >> 4];
Unk_ov60_02228E40.unk_28[v0 * 2 + 1] = v4[v1[v0] & 0xf];
}
Unk_ov60_02228E40.unk_28[40] = '\0';
strcat(Unk_ov60_02228E40.unk_24, "&data=");
v3 = ov60_0221F838((u32)Unk_ov60_02228E40.unk_10, (u8 *)Unk_ov60_02228E40.unk_14, Unk_ov60_02228E40.unk_18, (u8 *)Unk_ov60_02228E40.unk_2C, Unk_ov60_02228E40.unk_30);
switch (v3) {
case 0:
break;
case 1:
case 2:
Unk_ov60_02228E40.unk_00 = 1;
return;
}
Unk_ov60_02228E40.unk_00 = 5;
} else {
Unk_ov60_02228E40.unk_00 = 1;
}
break;
case 6:
if (param1 == 22) {
if (strncmp(param0, "error: check sum ", 22) == 0) {
Unk_ov60_02228E40.unk_00 = 1;
Unk_ov60_02228E40.unk_08 = 26;
break;
} else if (strncmp(param0, "error: pid ", 22) == 0) {
Unk_ov60_02228E40.unk_00 = 1;
Unk_ov60_02228E40.unk_08 = 27;
break;
} else if (strncmp(param0, "error: data length ", 22) == 0) {
Unk_ov60_02228E40.unk_00 = 1;
Unk_ov60_02228E40.unk_08 = 28;
break;
} else if (strncmp(param0, "error: token not found", 22) == 0) {
Unk_ov60_02228E40.unk_00 = 1;
Unk_ov60_02228E40.unk_08 = 29;
break;
} else if (strncmp(param0, "error: token expired ", 22) == 0) {
Unk_ov60_02228E40.unk_00 = 1;
Unk_ov60_02228E40.unk_08 = 30;
break;
} else if (strncmp(param0, "error: incorrect hash ", 22) == 0) {
Unk_ov60_02228E40.unk_00 = 1;
Unk_ov60_02228E40.unk_08 = 31;
break;
}
}
if (param1 <= Unk_ov60_02228E40.unk_20) {
memcpy(Unk_ov60_02228E40.unk_1C, param0, (u32)param1);
Unk_ov60_02228E40.unk_00 = 7;
} else {
memcpy(Unk_ov60_02228E40.unk_1C, param0, (u32)Unk_ov60_02228E40.unk_20);
Unk_ov60_02228E40.unk_00 = 1;
Unk_ov60_02228E40.unk_08 = 32;
}
Unk_ov60_02228E40.unk_0C = param1;
break;
}
} else {
Unk_ov60_02228E40.unk_00 = 1;
switch (param2) {
case DWC_GHTTP_OUT_OF_MEMORY:
Unk_ov60_02228E40.unk_08 = 8;
break;
case DWC_GHTTP_BUFFER_OVERFLOW:
Unk_ov60_02228E40.unk_08 = 9;
break;
case DWC_GHTTP_PARSE_URL_FAILED:
Unk_ov60_02228E40.unk_08 = 10;
break;
case DWC_GHTTP_HOST_LOOKUP_FAILED:
Unk_ov60_02228E40.unk_08 = 11;
break;
case DWC_GHTTP_SOCKET_FAILED:
Unk_ov60_02228E40.unk_08 = 12;
break;
case DWC_GHTTP_CONNECT_FAILED:
Unk_ov60_02228E40.unk_08 = 13;
break;
case DWC_GHTTP_BAD_RESPONSE:
Unk_ov60_02228E40.unk_08 = 14;
break;
case DWC_GHTTP_REQUEST_REJECTED:
Unk_ov60_02228E40.unk_08 = 15;
break;
case DWC_GHTTP_UNAUTHORIZED:
Unk_ov60_02228E40.unk_08 = 16;
break;
case DWC_GHTTP_FORBIDDEN:
Unk_ov60_02228E40.unk_08 = 17;
break;
case DWC_GHTTP_FILE_NOT_FOUND:
Unk_ov60_02228E40.unk_08 = 18;
break;
case DWC_GHTTP_SERVER_ERROR:
Unk_ov60_02228E40.unk_08 = 19;
break;
case DWC_GHTTP_FILE_INCOMPLETE:
Unk_ov60_02228E40.unk_08 = 22;
break;
case DWC_GHTTP_FILE_TOO_BIG:
Unk_ov60_02228E40.unk_08 = 23;
break;
case DWC_GHTTP_MEMORY_ERROR:
Unk_ov60_02228E40.unk_08 = 25;
break;
}
}
}
void ov60_0221FC84 (void)
{
Unk_ov60_02228E40.unk_00 = 2;
Unk_ov60_02228E40.unk_04 = -1;
if (!DWC_InitGHTTP(NULL)) {
Unk_ov60_02228E40.unk_00 = 1;
}
return;
}
int ov60_0221FCA8 (const u8 * param0, int param1, const void * param2, int param3, u8 * param4, int param5)
{
if (Unk_ov60_02228E40.unk_00 != 2) {
return 1;
}
Unk_ov60_02228E40.unk_10 = param1;
Unk_ov60_02228E40.unk_14 = (void *)param2;
Unk_ov60_02228E40.unk_18 = param3;
Unk_ov60_02228E40.unk_1C = param4;
Unk_ov60_02228E40.unk_20 = param5;
Unk_ov60_02228E40.unk_24 = (char *)DWC_Alloc((DWCAllocType)10, strlen((const char *)param0) + 68 + ov60_0221F944(8 + (u32)param3) + 1);
if (Unk_ov60_02228E40.unk_24 == NULL) {
return 2;
}
sprintf(Unk_ov60_02228E40.unk_24, "%s?pid=%d", param0, param1);
Unk_ov60_02228E40.unk_28 = Unk_ov60_02228E40.unk_24 + strlen(Unk_ov60_02228E40.unk_24) + strlen("&hash=");
Unk_ov60_02228E40.unk_2C = Unk_ov60_02228E40.unk_28 + 40 + strlen("&data=");
Unk_ov60_02228E40.unk_30 = (int)(ov60_0221F944(8 + (u32)param3) + 1);
Unk_ov60_02228E40.unk_00 = 3;
return 0;
}
int ov60_0221FD48 (void)
{
BOOL v0;
switch (Unk_ov60_02228E40.unk_00) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
Unk_ov60_02228E40.unk_04 = DWC_GetGHTTPData(Unk_ov60_02228E40.unk_24, ov60_0221F9D0, &Unk_ov60_02228E40);
ov60_0221F968(Unk_ov60_02228E40.unk_04);
if (Unk_ov60_02228E40.unk_04 >= 0) {
Unk_ov60_02228E40.unk_00 = 4;
} else {
Unk_ov60_02228E40.unk_00 = 1;
}
break;
case 4:
v0 = DWC_ProcessGHTTP();
if (!v0) {
Unk_ov60_02228E40.unk_00 = 1;
break;
}
break;
case 5:
Unk_ov60_02228E40.unk_04 = DWC_GetGHTTPData(Unk_ov60_02228E40.unk_24, ov60_0221F9D0, &Unk_ov60_02228E40);
ov60_0221F968(Unk_ov60_02228E40.unk_04);
if (Unk_ov60_02228E40.unk_04 >= 0) {
Unk_ov60_02228E40.unk_00 = 6;
} else {
Unk_ov60_02228E40.unk_00 = 1;
}
break;
case 6:
v0 = DWC_ProcessGHTTP();
if (!v0) {
Unk_ov60_02228E40.unk_00 = 1;
break;
}
break;
case 7:
break;
}
return Unk_ov60_02228E40.unk_00;
}
void ov60_0221FDEC (void)
{
if (Unk_ov60_02228E40.unk_24 != NULL) {
DWC_Free((DWCAllocType)10, Unk_ov60_02228E40.unk_24, (u32)0);
Unk_ov60_02228E40.unk_24 = NULL;
}
DWC_ShutdownGHTTP();
Unk_ov60_02228E40.unk_00 = 1;
return;
}
int ov60_0221FE14 (void)
{
return (int)Unk_ov60_02228E40.unk_08;
}
int ov60_0221FE20 (void)
{
return Unk_ov60_02228E40.unk_0C;
}

1731
src/unk_020933F8.c Normal file

File diff suppressed because it is too large Load Diff