From 0e03c74c600f7454c260aec238703f537ec046c8 Mon Sep 17 00:00:00 2001 From: ferwardle Date: Thu, 2 Jul 2026 13:53:50 -0500 Subject: [PATCH 1/7] Start decomp unk_02037C94 --- asm/include/unk_02037C94.inc | 11 + asm/unk_02037C94.s | 1313 +------------------------ include/dwcaccount.h | 22 +- include/launch_application_internal.h | 2 +- include/overlay_00_thumb.h | 6 + include/overlay_45_thumb.h | 11 + include/overlay_72.h | 2 +- include/unk_0202C034.h | 11 +- include/unk_02032844.h | 6 + include/unk_02033AE0.h | 1 + include/unk_02034354.h | 6 + include/unk_02034B0C.h | 2 + include/unk_02035900.h | 9 + include/unk_02037C94.h | 72 +- include/unk_020915B0.h | 2 + main.lsf | 1 + src/main.c | 2 +- src/overlay_44_0222CDAC.c | 10 +- src/unk_02037C94_1.c | 548 +++++++++++ 19 files changed, 699 insertions(+), 1338 deletions(-) create mode 100644 include/overlay_45_thumb.h create mode 100644 include/unk_02032844.h create mode 100644 src/unk_02037C94_1.c diff --git a/asm/include/unk_02037C94.inc b/asm/include/unk_02037C94.inc index b72de6596..eb7e360d8 100644 --- a/asm/include/unk_02037C94.inc +++ b/asm/include/unk_02037C94.inc @@ -242,3 +242,14 @@ .public ov45_0222F350 .public ov45_0222F464 .public ov45_0222F70C + +.public sub_02039D78 +.public sub_02039DE4 +.public sub_02039DC4 +.public sub_02039E7C +.public sub_02039C60 +.public sub_02039E7C +.public sub_02039C14 +.public sub_02039DC0 +.public sub_02039BA0 +.public sub_02039E30 \ No newline at end of file diff --git a/asm/unk_02037C94.s b/asm/unk_02037C94.s index 6985fec32..4ac5836fd 100644 --- a/asm/unk_02037C94.s +++ b/asm/unk_02037C94.s @@ -4,6 +4,7 @@ .bss +.public _021D4150 _021D4150: .space 0x4 @@ -3919,1315 +3920,3 @@ sub_02039998: ; 0x02039998 pop {r3, pc} thumb_func_end sub_02039998 - thumb_func_start sub_020399A4 -sub_020399A4: ; 0x020399A4 - ldr r1, _020399B4 ; =_021D4150 - ldr r1, [r1] - cmp r1, #0 - beq _020399B0 - add r1, #0x56 - strb r0, [r1] -_020399B0: - bx lr - nop -_020399B4: .word _021D4150 - thumb_func_end sub_020399A4 - - thumb_func_start sub_020399B8 -sub_020399B8: ; 0x020399B8 - push {r3, lr} - bl sub_0201A79C - cmp r0, #0 - beq _020399C6 - mov r0, #0 - pop {r3, pc} -_020399C6: - ldr r0, _020399D8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020399D4 - add r0, #0x56 - ldrb r0, [r0] - pop {r3, pc} -_020399D4: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 -_020399D8: .word _021D4150 - thumb_func_end sub_020399B8 - - thumb_func_start sub_020399DC -sub_020399DC: ; 0x020399DC - push {r3, lr} - add r2, r0, #0 - mov r0, #0 - mov r1, #1 - bl ShowCommunicationError -_020399E8: - b _020399E8 - .balign 4, 0 - thumb_func_end sub_020399DC - - thumb_func_start sub_020399EC -sub_020399EC: ; 0x020399EC - push {r3, lr} - mov r0, #0 - mov r1, #4 - add r2, r0, #0 - bl ShowCommunicationError -_020399F8: - b _020399F8 - .balign 4, 0 - thumb_func_end sub_020399EC - - thumb_func_start sub_020399FC -sub_020399FC: ; 0x020399FC - bx lr - .balign 4, 0 - thumb_func_end sub_020399FC - - thumb_func_start sub_02039A00 -sub_02039A00: ; 0x02039A00 - push {r3, lr} - bl sub_02039918 - cmp r0, #0 - beq _02039A98 - bl sub_02037700 - cmp r0, #0 - bne _02039A36 - bl sub_020393C8 - cmp r0, #0 - bne _02039A36 - bl sub_020395B0 - cmp r0, #0 - bne _02039A36 - ldr r0, _02039A9C ; =_021D4150 - ldr r0, [r0] - add r0, #0x5d - ldrb r0, [r0] - cmp r0, #0 - bne _02039A36 - bl sub_020397FC - cmp r0, #0 - beq _02039A98 -_02039A36: - bl sub_0201A79C - cmp r0, #0 - bne _02039A98 - bl sub_020399B8 - cmp r0, #0 - bne _02039A98 - bl Sound_Stop - ldr r0, _02039A9C ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl Save_Cancel - ldr r1, _02039AA0 ; =gSystem + 0x60 - mov r0, #1 - strb r0, [r1, #8] - ldr r1, _02039A9C ; =_021D4150 - ldr r2, [r1] - add r1, r2, #0 - add r1, #0x5d - ldrb r1, [r1] - cmp r1, #3 - bne _02039A70 - mov r0, #3 - bl sub_020399A4 - pop {r3, pc} -_02039A70: - cmp r1, #5 - bne _02039A7C - mov r0, #5 - bl sub_020399A4 - pop {r3, pc} -_02039A7C: - add r2, #0x4e - ldrb r1, [r2] - cmp r1, #0x19 - beq _02039A8C - cmp r1, #0xf - beq _02039A8C - cmp r1, #0x24 - bne _02039A94 -_02039A8C: - mov r0, #2 - bl sub_020399A4 - pop {r3, pc} -_02039A94: - bl sub_020399A4 -_02039A98: - pop {r3, pc} - nop -_02039A9C: .word _021D4150 -_02039AA0: .word gSystem + 0x60 - thumb_func_end sub_02039A00 - - thumb_func_start sub_02039AA4 -sub_02039AA4: ; 0x02039AA4 - push {r3, lr} - bl sub_02035630 - cmp r0, #0 - bne _02039AB6 - bl sub_02037D78 - cmp r0, #0 - bne _02039ABA -_02039AB6: - mov r0, #1 - pop {r3, pc} -_02039ABA: - bl sub_02034BE4 - cmp r0, #0 - bne _02039AC6 - mov r0, #1 - pop {r3, pc} -_02039AC6: - bl sub_02033974 - cmp r0, #0 - beq _02039AD2 - mov r0, #1 - pop {r3, pc} -_02039AD2: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end sub_02039AA4 - - thumb_func_start sub_02039AD8 -sub_02039AD8: ; 0x02039AD8 - push {r3, lr} - ldr r1, _02039AF4 ; =_021D4150 - ldr r1, [r1] - cmp r1, #0 - beq _02039AEE - add r1, #0x5d - strb r0, [r1] - bl sub_02037988 - mov r0, #1 - pop {r3, pc} -_02039AEE: - mov r0, #0 - pop {r3, pc} - nop -_02039AF4: .word _021D4150 - thumb_func_end sub_02039AD8 - - thumb_func_start sub_02039AF8 -sub_02039AF8: ; 0x02039AF8 - ldr r0, _02039B0C ; =_021D4150 - mov r1, #0x1d - ldr r0, [r0] - ldr r3, _02039B10 ; =ov00_021E5C84 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B14 ; =sub_020369CC - add r1, r0, #0 - bx r3 - nop -_02039B0C: .word _021D4150 -_02039B10: .word ov00_021E5C84 -_02039B14: .word sub_020369CC - thumb_func_end sub_02039AF8 - - thumb_func_start sub_02039B18 -sub_02039B18: ; 0x02039B18 - ldr r0, _02039B2C ; =_021D4150 - mov r1, #0x23 - ldr r0, [r0] - ldr r3, _02039B30 ; =ov00_021E5C84 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B34 ; =sub_020369CC - add r1, r0, #0 - bx r3 - nop -_02039B2C: .word _021D4150 -_02039B30: .word ov00_021E5C84 -_02039B34: .word sub_020369CC - thumb_func_end sub_02039B18 - - thumb_func_start sub_02039B38 -sub_02039B38: ; 0x02039B38 - ldr r0, _02039B4C ; =_021D4150 - mov r1, #0x21 - ldr r0, [r0] - ldr r3, _02039B50 ; =ov00_021E5C84 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B54 ; =sub_020369CC - add r1, r0, #0 - bx r3 - nop -_02039B4C: .word _021D4150 -_02039B50: .word ov00_021E5C84 -_02039B54: .word sub_020369CC - thumb_func_end sub_02039B38 - - thumb_func_start sub_02039B58 -sub_02039B58: ; 0x02039B58 - ldr r0, _02039B6C ; =_021D4150 - ldr r3, _02039B70 ; =ov00_021E5C84 - ldr r0, [r0] - mov r1, #0x17 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B74 ; =sub_02036904 - ldr r1, _02039B78 ; =sub_020367A8 - bx r3 - nop -_02039B6C: .word _021D4150 -_02039B70: .word ov00_021E5C84 -_02039B74: .word sub_02036904 -_02039B78: .word sub_020367A8 - thumb_func_end sub_02039B58 - - thumb_func_start sub_02039B7C -sub_02039B7C: ; 0x02039B7C - ldr r0, _02039B90 ; =_021D4150 - ldr r3, _02039B94 ; =ov00_021E5C84 - ldr r0, [r0] - mov r1, #0x13 - add r0, #0x4e - strb r1, [r0] - ldr r0, _02039B98 ; =sub_02036904 - ldr r1, _02039B9C ; =sub_020367A8 - bx r3 - nop -_02039B90: .word _021D4150 -_02039B94: .word ov00_021E5C84 -_02039B98: .word sub_02036904 -_02039B9C: .word sub_020367A8 - thumb_func_end sub_02039B7C - - thumb_func_start sub_02039BA0 -sub_02039BA0: ; 0x02039BA0 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02039C04 - mov r1, #0x30 - mov r0, #3 - lsl r2, r1, #0xd - bl Heap_CreateAtEnd - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _02039C04 - ldr r0, _02039C08 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - bl sub_02033FC4 - add r3, r0, #0 - ldr r0, _02039C08 ; =_021D4150 - mov r2, #0x16 - ldr r0, [r0] - mov r1, #0x30 - ldr r0, [r0, #0x28] - lsl r2, r2, #0xe - add r3, r3, #1 - bl ov00_021E5900 - ldr r0, _02039C0C ; =sub_020399DC - bl ov00_021E6CA4 - bl sub_02035FD8 - mov r0, #0 - bl ov00_021E70B8 - mov r0, #0 - bl sub_020378E4 - mov r1, #0xe1 - ldr r0, _02039C10 ; =sub_0203960C - lsl r1, r1, #4 - bl sub_020381C0 -_02039C04: - pop {r3, pc} - nop -_02039C08: .word _021D4150 -_02039C0C: .word sub_020399DC -_02039C10: .word sub_0203960C - thumb_func_end sub_02039BA0 - - thumb_func_start sub_02039C14 -sub_02039C14: ; 0x02039C14 - push {r3, lr} - ldr r0, _02039C54 ; =_021D4150 - ldr r2, [r0] - ldr r1, [r2, #0x44] - sub r1, r1, #1 - str r1, [r2, #0x44] - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bgt _02039C32 - ldr r0, _02039C58 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039C32: - mov r0, #1 - bl sub_0203786C - bl sub_02039D3C - cmp r0, #0 - beq _02039C50 - bl ov45_0222E8F4 - cmp r0, #0 - beq _02039C50 - ldr r0, _02039C5C ; =sub_02039C60 - mov r1, #0 - bl sub_020381C0 -_02039C50: - pop {r3, pc} - nop -_02039C54: .word _021D4150 -_02039C58: .word sub_02038E90 -_02039C5C: .word sub_02039C60 - thumb_func_end sub_02039C14 - - thumb_func_start sub_02039C60 -sub_02039C60: ; 0x02039C60 - push {r3, lr} - bl sub_02039D3C - cmp r0, #0 - pop {r3, pc} - .balign 4, 0 - thumb_func_end sub_02039C60 - - thumb_func_start sub_02039C6C -sub_02039C6C: ; 0x02039C6C - push {r4, lr} - mov r4, #1 - cmp r0, #0xa - blt _02039C84 - cmp r0, #0x14 - bge _02039C84 - ldr r0, _02039CF4 ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 - b _02039CC8 -_02039C84: - cmp r0, #0 - bge _02039C94 - ldr r0, _02039CF8 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 - b _02039CC8 -_02039C94: - cmp r0, #0x17 - bne _02039CA4 - ldr r0, _02039CFC ; =sub_02039E7C - mov r1, #0 - bl sub_020381C0 - mov r4, #0 - b _02039CC8 -_02039CA4: - cmp r0, #0x18 - bne _02039CC8 - ldr r0, _02039D00 ; =_021D4150 - mov r4, #0 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02039CC0 - ldr r0, _02039CF8 ; =sub_02038E90 - add r1, r4, #0 - bl sub_020381C0 - b _02039CC8 -_02039CC0: - ldr r0, _02039D04 ; =sub_02038EB0 - add r1, r4, #0 - bl sub_020381C0 -_02039CC8: - ldr r0, _02039D00 ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02039CEE - bl sub_02037454 - ldr r1, _02039D00 ; =_021D4150 - ldr r1, [r1] - add r1, #0x4b - ldrb r1, [r1] - cmp r1, r0 - beq _02039CEE - ldr r0, _02039CF8 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 -_02039CEE: - add r0, r4, #0 - pop {r4, pc} - nop -_02039CF4: .word sub_02038EB4 -_02039CF8: .word sub_02038E90 -_02039CFC: .word sub_02039E7C -_02039D00: .word _021D4150 -_02039D04: .word sub_02038EB0 - thumb_func_end sub_02039C6C - - thumb_func_start sub_02039D08 -sub_02039D08: ; 0x02039D08 - push {r4, lr} - mov r4, #1 - bl ov45_0222E6C8 - cmp r0, #4 - bhi _02039D34 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02039D20: ; jump table - .short _02039D34 - _02039D20 - 2 ; case 0 - .short _02039D34 - _02039D20 - 2 ; case 1 - .short _02039D34 - _02039D20 - 2 ; case 2 - .short _02039D34 - _02039D20 - 2 ; case 3 - .short _02039D2A - _02039D20 - 2 ; case 4 -_02039D2A: - ldr r0, _02039D38 ; =sub_02039DC0 - mov r1, #0 - bl sub_020381C0 - mov r4, #0 -_02039D34: - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 -_02039D38: .word sub_02039DC0 - thumb_func_end sub_02039D08 - - thumb_func_start sub_02039D3C -sub_02039D3C: ; 0x02039D3C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - bl sub_02039C6C - cmp r0, #0 - beq _02039D50 - bl sub_02039D08 -_02039D50: - pop {r3, pc} - .balign 4, 0 - thumb_func_end sub_02039D3C - - thumb_func_start sub_02039D54 -sub_02039D54: ; 0x02039D54 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0x14 - blt _02039D66 - str r0, [r4] - b _02039D72 -_02039D66: - mov r1, #0 - str r1, [r4] - bl sub_02039C6C - cmp r0, #0 - beq _02039D76 -_02039D72: - bl sub_02039D08 -_02039D76: - pop {r4, pc} - thumb_func_end sub_02039D54 - - thumb_func_start sub_02039D78 -sub_02039D78: ; 0x02039D78 - push {r3, lr} - bl ov45_0222E91C - ldr r0, _02039D88 ; =sub_02039D8C - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02039D88: .word sub_02039D8C - thumb_func_end sub_02039D78 - - thumb_func_start sub_02039D8C -sub_02039D8C: ; 0x02039D8C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - bl sub_02039D08 - bl ov45_0222E944 - cmp r0, #0 - beq _02039DB8 - mov r0, #1 - bl sub_0201A738 - bl sub_020343E4 - ldr r0, _02039DBC ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 - mov r0, #0 - bl sub_0203786C -_02039DB8: - pop {r3, pc} - nop -_02039DBC: .word sub_0203847C - thumb_func_end sub_02039D8C - - thumb_func_start sub_02039DC0 -sub_02039DC0: ; 0x02039DC0 - bx lr - .balign 4, 0 - thumb_func_end sub_02039DC0 - - thumb_func_start sub_02039DC4 -sub_02039DC4: ; 0x02039DC4 - push {r3, lr} - bl sub_02039D3C - bl ov45_0222F254 - cmp r0, #1 - bne _02039DDE - bl ov45_0222F70C - ldr r0, _02039DE0 ; =sub_02039E30 - mov r1, #0 - bl sub_020381C0 -_02039DDE: - pop {r3, pc} - .balign 4, 0 -_02039DE0: .word sub_02039E30 - thumb_func_end sub_02039DC4 - - thumb_func_start sub_02039DE4 -sub_02039DE4: ; 0x02039DE4 - push {r3, lr} - bl ov45_0222F254 - cmp r0, #1 - bne _02039DFC - bl ov45_0222F70C - ldr r0, _02039E24 ; =sub_02039E30 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039DFC: - add r0, sp, #0 - bl sub_02039D54 - ldr r0, [sp] - cmp r0, #0 - beq _02039E22 - cmp r0, #0x14 - bne _02039E16 - ldr r0, _02039E28 ; =sub_02039DC4 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039E16: - bl ov45_0222F70C - ldr r0, _02039E2C ; =sub_02039C60 - mov r1, #0 - bl sub_020381C0 -_02039E22: - pop {r3, pc} - .balign 4, 0 -_02039E24: .word sub_02039E30 -_02039E28: .word sub_02039DC4 -_02039E2C: .word sub_02039C60 - thumb_func_end sub_02039DE4 - - thumb_func_start sub_02039E30 -sub_02039E30: ; 0x02039E30 - push {r3, lr} - mov r0, #1 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039E46 - ldr r0, _02039E74 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039E46: - bl sub_02039D08 - cmp r0, #0 - beq _02039E72 - mov r0, #0 - bl ov00_021E6BE4 - cmp r0, #0 - beq _02039E72 - bl ov00_021E6C68 - cmp r0, #0 - beq _02039E72 - bl sub_0203622C - mov r0, #0 - bl sub_020378E4 - ldr r0, _02039E78 ; =sub_02039C60 - mov r1, #0 - bl sub_020381C0 -_02039E72: - pop {r3, pc} - .balign 4, 0 -_02039E74: .word sub_02038E90 -_02039E78: .word sub_02039C60 - thumb_func_end sub_02039E30 - - thumb_func_start sub_02039E7C -sub_02039E7C: ; 0x02039E7C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039E90 - ldr r0, _02039E98 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039E90: - bl sub_02039D08 - pop {r3, pc} - nop -_02039E98: .word sub_02038E90 - thumb_func_end sub_02039E7C - - thumb_func_start sub_02039E9C -sub_02039E9C: ; 0x02039E9C - ldr r0, _02039EA8 ; =_021D4150 - mov r1, #0x22 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02039EA8: .word _021D4150 - thumb_func_end sub_02039E9C - - thumb_func_start sub_02039EAC -sub_02039EAC: ; 0x02039EAC - mov r1, #0 - str r1, [r0] - bx lr - .balign 4, 0 - thumb_func_end sub_02039EAC - - thumb_func_start sub_02039EB4 -sub_02039EB4: ; 0x02039EB4 - push {r4, r5, r6, lr} - add r4, r2, #0 - add r6, r1, #0 - ldr r1, [r4] - add r5, r0, #0 - cmp r1, #6 - bhi _02039F64 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02039ECE: ; jump table - .short _02039EDC - _02039ECE - 2 ; case 0 - .short _02039EE8 - _02039ECE - 2 ; case 1 - .short _02039F00 - _02039ECE - 2 ; case 2 - .short _02039F28 - _02039ECE - 2 ; case 3 - .short _02039F38 - _02039ECE - 2 ; case 4 - .short _02039F5A - _02039ECE - 2 ; case 5 - .short _02039F60 - _02039ECE - 2 ; case 6 -_02039EDC: - mov r0, #0x6f - bl sub_02037AC0 - mov r0, #1 - str r0, [r4] - b _02039F64 -_02039EE8: - mov r0, #0x6f - bl sub_02037B38 - cmp r0, #0 - beq _02039F64 - add r0, r5, #0 - add r1, r6, #0 - bl Save_PrepareForAsyncWrite - mov r0, #2 - str r0, [r4] - b _02039F64 -_02039F00: - bl Save_WriteFileAsync - add r5, r0, #0 - cmp r5, #2 - bne _02039F0E - bl GF_AssertFail -_02039F0E: - cmp r5, #1 - bne _02039F1E - mov r0, #3 - str r0, [r4] - mov r0, #0x70 - bl sub_02037AC0 - b _02039F64 -_02039F1E: - cmp r5, #3 - bne _02039F64 - mov r0, #7 - str r0, [r4] - b _02039F64 -_02039F28: - mov r0, #0x70 - bl sub_02037B38 - cmp r0, #0 - beq _02039F64 - mov r0, #4 - str r0, [r4] - b _02039F64 -_02039F38: - bl Save_WriteFileAsync - add r5, r0, #0 - cmp r5, #1 - bne _02039F46 - bl GF_AssertFail -_02039F46: - cmp r5, #2 - bne _02039F50 - mov r0, #5 - str r0, [r4] - b _02039F64 -_02039F50: - cmp r5, #3 - bne _02039F64 - mov r0, #7 - str r0, [r4] - b _02039F64 -_02039F5A: - mov r0, #6 - str r0, [r4] - b _02039F64 -_02039F60: - mov r0, #1 - pop {r4, r5, r6, pc} -_02039F64: - mov r0, #0 - pop {r4, r5, r6, pc} - thumb_func_end sub_02039EB4 - - thumb_func_start sub_02039F68 -sub_02039F68: ; 0x02039F68 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - bl sub_02037454 - add r7, r0, #0 - mov r0, #0 - bl sub_02034818 - cmp r0, #0 - beq _02039FB6 - mov r5, #0 - cmp r7, #0 - ble _02039FB6 -_02039F82: - bl sub_0203769C - cmp r5, r0 - beq _02039FB0 - add r0, r5, #0 - bl sub_020348A8 - add r4, r0, #0 - add r0, r5, #0 - bl sub_020348CC - add r6, r0, #0 - add r0, r5, #0 - bl sub_02034818 - bl PlayerProfile_GetLanguage - add r3, r0, #0 - ldr r0, [sp] - add r1, r4, #0 - add r2, r6, #0 - bl sub_02039FB8 -_02039FB0: - add r5, r5, #1 - cmp r5, r7 - blt _02039F82 -_02039FB6: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end sub_02039F68 - - thumb_func_start sub_02039FB8 -sub_02039FB8: ; 0x02039FB8 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - bl WiFiHistory_GetLocationSeenState - cmp r0, #0 - bne _02039FD4 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - mov r3, #1 - bl WiFiHistory_SetLocationSeenState -_02039FD4: - pop {r4, r5, r6, pc} - .balign 4, 0 - thumb_func_end sub_02039FB8 - - thumb_func_start sub_02039FD8 -sub_02039FD8: ; 0x02039FD8 - push {r3, r4, r5, lr} - mov r1, #0x72 - lsl r1, r1, #4 - bl Heap_Alloc - add r4, r0, #0 - add r0, #0x1f - mov r1, #0x1f - bic r0, r1 - bl DWC_Init - add r5, r0, #0 - add r0, r4, #0 - bl Heap_Free - add r0, r5, #0 - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end sub_02039FD8 - - thumb_func_start sub_02039FFC -sub_02039FFC: ; 0x02039FFC - push {r4, lr} - add r4, r0, #0 - bl LoadDwcOverlay - bl LoadOVY38 - add r0, r4, #0 - bl sub_02039FD8 - add r4, r0, #0 - bl UnloadDwcOverlay - bl UnloadOVY38 - add r0, r4, #0 - pop {r4, pc} - thumb_func_end sub_02039FFC - - thumb_func_start sub_0203A01C -sub_0203A01C: ; 0x0203A01C - push {r4, lr} - bl sub_0202C08C - add r4, r0, #0 - bl DWC_CheckUserData - cmp r0, #0 - bne _0203A03A - ldr r1, _0203A03C ; =0x4144414A - add r0, r4, #0 - bl DWC_CreateUserData - add r0, r4, #0 - bl DWC_ClearDirtyFlag -_0203A03A: - pop {r4, pc} - .balign 4, 0 -_0203A03C: .word 0x4144414A - thumb_func_end sub_0203A01C - - thumb_func_start sub_0203A040 -sub_0203A040: ; 0x0203A040 - push {r3, r4, lr} - sub sp, #0xc - bl sub_0202C08C - add r4, r0, #0 - add r1, sp, #0 - bl DWC_CreateExchangeToken - add r0, r4, #0 - add r1, sp, #0 - bl DWC_GetGsProfileId - add sp, #0xc - pop {r3, r4, pc} - thumb_func_end sub_0203A040 - - thumb_func_start sub_0203A05C -sub_0203A05C: ; 0x0203A05C - push {r4, lr} - bl sub_0202C6F4 - bl sub_0202C08C - add r4, r0, #0 - bl DWC_CheckHasProfile - cmp r0, #0 - beq _0203A07E - add r0, r4, #0 - bl DWC_CheckValidConsole - cmp r0, #0 - beq _0203A07E - mov r0, #1 - pop {r4, pc} -_0203A07E: - mov r0, #0 - pop {r4, pc} - .balign 4, 0 - thumb_func_end sub_0203A05C - - thumb_func_start sub_0203A084 -sub_0203A084: ; 0x0203A084 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - add r5, r1, #0 - str r2, [sp] - bl sub_0202C6F4 - bl sub_0202C08C - add r6, r0, #0 - add r0, r4, #0 - bl sub_0202C6F4 - mov r1, #0 - bl sub_0202C23C - add r4, r0, #0 - mov r1, #0 - ldr r0, [sp] - mvn r1, r1 - str r1, [r0] - add r0, r5, #0 - bl DWC_IsValidFriendData - cmp r0, #0 - bne _0203A0BE - add sp, #8 - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0203A0BE: - mov r7, #0 -_0203A0C0: - add r0, r5, #0 - add r1, r4, #0 - bl DWC_IsEqualFriendData - cmp r0, #0 - beq _0203A0D6 - ldr r0, [sp] - add sp, #8 - str r7, [r0] - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0203A0D6: - add r0, r6, #0 - add r1, r5, #0 - bl DWC_GetGsProfileId - cmp r0, #0 - ble _0203A104 - add r0, r6, #0 - add r1, r5, #0 - bl DWC_GetGsProfileId - str r0, [sp, #4] - add r0, r6, #0 - add r1, r4, #0 - bl DWC_GetGsProfileId - ldr r1, [sp, #4] - cmp r1, r0 - bne _0203A104 - ldr r0, [sp] - add sp, #8 - str r7, [r0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0203A104: - ldr r0, [sp] - ldr r0, [r0] - cmp r0, #0 - bge _0203A11A - add r0, r4, #0 - bl DWC_IsValidFriendData - cmp r0, #0 - bne _0203A11A - ldr r0, [sp] - str r7, [r0] -_0203A11A: - add r7, r7, #1 - add r4, #0xc - cmp r7, #0x20 - blt _0203A0C0 - mov r0, #2 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end sub_0203A084 - - thumb_func_start sub_0203A128 -sub_0203A128: ; 0x0203A128 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r4, r0, #0 - str r1, [sp] - str r2, [sp, #4] - add r6, r3, #0 - bl sub_0202C6F4 - bl sub_0202C08C - add r7, r0, #0 - add r0, r4, #0 - bl sub_0202C6F4 - mov r1, #0 - bl sub_0202C23C - add r5, r0, #0 - ldr r1, [sp] - ldr r2, [sp, #4] - add r0, r7, #0 - bl DWC_CheckFriendKey - cmp r0, #0 - bne _0203A160 - add sp, #0x18 - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0203A160: - ldr r1, [sp] - ldr r2, [sp, #4] - add r0, sp, #0xc - bl DWC_CreateFriendKeyToken - add r0, r7, #0 - add r1, sp, #0xc - bl DWC_GetGsProfileId - cmp r0, #0 - bgt _0203A17C - add sp, #0x18 - mov r0, #3 - pop {r3, r4, r5, r6, r7, pc} -_0203A17C: - mov r0, #0 - mvn r0, r0 - str r0, [r6] - mov r4, #0 -_0203A184: - add r0, r7, #0 - add r1, sp, #0xc - bl DWC_GetGsProfileId - str r0, [sp, #8] - add r0, r7, #0 - add r1, r5, #0 - bl DWC_GetGsProfileId - ldr r1, [sp, #8] - cmp r1, r0 - bne _0203A1A4 - add sp, #0x18 - str r4, [r6] - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_0203A1A4: - ldr r0, [r6] - cmp r0, #0 - bge _0203A1B6 - add r0, r5, #0 - bl DWC_IsValidFriendData - cmp r0, #0 - bne _0203A1B6 - str r4, [r6] -_0203A1B6: - add r4, r4, #1 - add r5, #0xc - cmp r4, #0x20 - blt _0203A184 - mov r0, #2 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end sub_0203A128 - - thumb_func_start sub_0203A1C4 -sub_0203A1C4: ; 0x0203A1C4 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r1, #0 - mov r1, #0 - add r5, r0, #0 - str r2, [sp, #4] - str r1, [sp, #0xc] - bl sub_0202C6F4 - mov r1, #0 - bl sub_0202C23C - str r0, [sp, #8] - mov r4, #0 - bl sub_02037454 - cmp r0, #0 - ble _0203A278 -_0203A1E8: - bl sub_0203769C - cmp r4, r0 - beq _0203A26C - add r0, r4, #0 - bl sub_0203484C - add r7, r0, #0 - beq _0203A26C - add r0, r5, #0 - add r1, r7, #0 - add r2, sp, #0x10 - bl sub_0203A084 - str r0, [r6] - cmp r0, #3 - bne _0203A20E - bl GF_AssertFail -_0203A20E: - ldr r0, [r6] - cmp r0, #0 - bne _0203A22C - mov r0, #2 - str r0, [sp] - ldr r2, [sp, #0x10] - ldr r3, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - bl sub_0203A280 - add r0, r5, #0 - bl sub_02034A20 - b _0203A26C -_0203A22C: - cmp r0, #1 - bne _0203A264 - bl sub_02039998 - cmp r0, #0 - bne _0203A26C - mov r0, #1 - str r0, [sp] - ldr r2, [sp, #0x10] - ldr r3, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - bl sub_0203A280 - ldr r2, [sp, #0x10] - mov r1, #0xc - add r3, r2, #0 - mul r3, r1 - ldr r1, [sp, #8] - add r0, r7, #0 - add r1, r1, r3 - mov r2, #0xc - bl MI_CpuCopy8 - add r0, r5, #0 - bl sub_02034A20 - b _0203A26C -_0203A264: - cmp r0, #2 - bne _0203A26C - mov r0, #1 - str r0, [sp, #0xc] -_0203A26C: - add r6, r6, #4 - add r4, r4, #1 - bl sub_02037454 - cmp r4, r0 - blt _0203A1E8 -_0203A278: - ldr r0, [sp, #0xc] - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - thumb_func_end sub_0203A1C4 - - thumb_func_start sub_0203A280 -sub_0203A280: ; 0x0203A280 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r2, #0 - str r0, [sp] - add r7, r1, #0 - str r3, [sp, #4] - bl sub_0202C6F4 - add r1, r5, #0 - add r4, r0, #0 - bl sub_0202C23C - str r0, [sp, #8] - add r0, r7, #0 - bl sub_02034818 - add r6, r0, #0 - ldr r0, [sp, #0x28] - cmp r0, #2 - beq _0203A2B6 - add r0, r7, #0 - bl sub_0203484C - ldr r1, [sp, #8] - mov r2, #0xc - bl MI_CpuCopy8 -_0203A2B6: - ldr r0, [sp, #0x28] - cmp r0, #0 - bne _0203A2FC - ldr r1, [sp, #4] - add r0, r6, #0 - bl PlayerProfile_GetPlayerName_NewString - str r0, [sp, #0xc] - ldr r2, [sp, #0xc] - add r0, r4, #0 - add r1, r5, #0 - bl sub_0202C270 - ldr r0, [sp, #0xc] - bl String_Delete - add r0, r6, #0 - bl PlayerProfile_GetTrainerGender - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #8 - bl sub_0202C190 - add r0, r6, #0 - bl PlayerProfile_GetTrainerID - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #0 - bl sub_0202C190 - b _0203A334 -_0203A2FC: - sub r0, r0, #1 - cmp r0, #1 - bhi _0203A334 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #8 - bl sub_0202C090 - cmp r0, #2 - bne _0203A334 - add r0, r6, #0 - bl PlayerProfile_GetTrainerGender - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #8 - bl sub_0202C190 - add r0, r6, #0 - bl PlayerProfile_GetTrainerID - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #0 - bl sub_0202C190 -_0203A334: - ldr r1, [sp, #4] - mov r0, #0x78 - bl String_New - str r0, [sp, #0x10] - add r0, r7, #0 - bl sub_02034884 - add r1, r0, #0 - ldr r0, [sp, #0x10] - bl CopyU16ArrayToString - ldr r2, [sp, #0x10] - add r0, r4, #0 - add r1, r5, #0 - bl sub_0202C2B4 - ldr r0, [sp, #0x10] - bl String_Delete - add r0, r6, #0 - bl PlayerProfile_GetAvatar - add r3, r0, #0 - add r0, r4, #0 - add r1, r5, #0 - mov r2, #7 - bl sub_0202C190 - ldr r0, [sp] - bl sub_02034A20 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - thumb_func_end sub_0203A280 - - thumb_func_start sub_0203A378 -sub_0203A378: ; 0x0203A378 - push {r4, r5, r6, lr} - add r4, r0, #0 - add r0, r1, #0 - bl sub_0203484C - add r6, r0, #0 - add r0, r4, #0 - bl sub_0202C6F4 - add r5, r0, #0 - mov r4, #0 -_0203A38E: - add r0, r5, #0 - add r1, r4, #0 - bl sub_0202C23C - add r1, r0, #0 - add r0, r6, #0 - bl DWC_IsEqualFriendData - cmp r0, #0 - beq _0203A3A6 - add r0, r4, #0 - pop {r4, r5, r6, pc} -_0203A3A6: - add r4, r4, #1 - cmp r4, #0x20 - blt _0203A38E - mov r0, #0x20 - pop {r4, r5, r6, pc} - thumb_func_end sub_0203A378 diff --git a/include/dwcaccount.h b/include/dwcaccount.h index e198d8d97..b0e284feb 100644 --- a/include/dwcaccount.h +++ b/include/dwcaccount.h @@ -3,7 +3,25 @@ #include "global.h" -BOOL DWC_CheckValidConsole(void); -BOOL DWC_CheckHasProfile(void); +typedef struct DWCUserData DWCUserData; + +typedef struct DWCFriendData { + u32 unk0; + u32 unk4; + u32 unk8; +} DWCFriendData; + +BOOL DWC_CheckValidConsole(DWCUserData *userData); +BOOL DWC_CheckHasProfile(DWCUserData *userData); +int DWC_IsValidFriendData(DWCFriendData *friendData); +void DWC_CreateExchangeToken(DWCUserData*, DWCFriendData*); +void DWC_CreateFriendKeyToken(DWCFriendData *friendData, u64 a1); +int DWC_CheckFriendKey(DWCUserData *userData, u64 a1); +int DWC_GetGsProfileId(DWCUserData *userData, DWCFriendData *friendData); +void DWC_CreateUserData(DWCUserData *userData, s32 a1); +void DWC_ClearDirtyFlag(DWCUserData *userData); +int DWC_CheckUserData(DWCUserData *userData); +int DWC_Init(int); +int DWC_IsEqualFriendData(DWCFriendData *friendData0, DWCFriendData *friendData1); #endif // POKEHEARTGOLD_DWCACCOUNT_H \ No newline at end of file diff --git a/include/launch_application_internal.h b/include/launch_application_internal.h index 96acbf3ff..88bb5ae01 100644 --- a/include/launch_application_internal.h +++ b/include/launch_application_internal.h @@ -138,7 +138,7 @@ typedef struct UnkStruct_0203F844 { GameStats *gameStats; Bag *bag; BOOL natDexEnabled; - void *unk34; + int unk34; u32 unk38; int unk3C; } UnkStruct_0203F844; diff --git a/include/overlay_00_thumb.h b/include/overlay_00_thumb.h index 5d8fefc30..008e63576 100644 --- a/include/overlay_00_thumb.h +++ b/include/overlay_00_thumb.h @@ -23,5 +23,11 @@ void ov00_021E5CBC(void *arg0); void ov00_021E7328(void); BOOL ov00_021E7314(void); void ov00_021E6CCC(UnkStruct_ov44_02231958 *arg0, s32 arg1); +int ov00_021E6BE4(int arg0); +int ov00_021E6C68(void); +int ov00_021E5E54(int arg0); +void ov00_021E6CA4(void (*func)(u32)); +void ov00_021E5900(SaveData* saveData, int arg1, int arg2, int arg3); +void ov00_021E5C84(void (*func0)(), void (*func1)()); #endif // POKEHEARTGOLD_OVERLAY_00_THUMB_H diff --git a/include/overlay_45_thumb.h b/include/overlay_45_thumb.h new file mode 100644 index 000000000..4e64f4a63 --- /dev/null +++ b/include/overlay_45_thumb.h @@ -0,0 +1,11 @@ +#ifndef POKEHEARTGOLD_OVERLAY_45_THUMB_H +#define POKEHEARTGOLD_OVERLAY_45_THUMB_H + +void ov45_0222F70C(void); +int ov45_0222F254(void); +int ov45_0222E944(void); +void ov45_0222E91C(void); +int ov45_0222E6C8(void); +int ov45_0222E8F4(void); + +#endif // POKEHEARTGOLD_OVERLAY_45_THUMB_H diff --git a/include/overlay_72.h b/include/overlay_72.h index cea238492..67b2351f7 100644 --- a/include/overlay_72.h +++ b/include/overlay_72.h @@ -15,7 +15,7 @@ typedef struct NintendoWifiConnectArgs { Options *options; void *unk14; int unk18; - void *unk1C; + int unk1C; int unk20; int unk24; } NintendoWifiConnectArgs; diff --git a/include/unk_0202C034.h b/include/unk_0202C034.h index 6296db671..e8b04d370 100644 --- a/include/unk_0202C034.h +++ b/include/unk_0202C034.h @@ -2,6 +2,8 @@ #define POKEHEARTGOLD_UNK_0202C034_H #include "save.h" +#include "pm_string.h" +#include "dwcaccount.h" typedef struct UnkStruct_021D2230 UnkStruct_021D2230; @@ -9,14 +11,17 @@ void sub_0202C6FC(SaveData *saveData); void sub_0202C714(SaveData *saveData); UnkStruct_021D2230 *sub_0202C6F4(SaveData *saveData); int sub_0202C2F8(struct UnkStruct_021D2230 *a0); -void *sub_0202C08C(UnkStruct_021D2230 *a0); +DWCUserData *sub_0202C08C(UnkStruct_021D2230 *a0); u16* sub_0202C254(struct UnkStruct_021D2230 *a0, s32 a1); u16* sub_0202C298(struct UnkStruct_021D2230 *a0, s32 a1); s32 sub_0202C090(struct UnkStruct_021D2230 *a0, s32 a1, s32 a2); void sub_0202C46C(struct UnkStruct_021D2230 *a0); void sub_0202C4B0(struct UnkStruct_021D2230 *a0, s32 a1); u16 sub_0202C318(struct UnkStruct_021D2230 *a0); -void sub_0202C190(UnkStruct_021D2230* a0, int a1, int a2, u8 a3); -void sub_0202C03C(struct UnkStruct_021D2230* a0); +void sub_0202C190(UnkStruct_021D2230* a0, int a1, int a2, u32 a3); +void sub_0202C03C(struct UnkStruct_021D2230 *a0); +void sub_0202C2B4(struct UnkStruct_021D2230 *a0, int a1, String *a2); +void sub_0202C270(struct UnkStruct_021D2230 *a0, int a1, String *a2); +DWCFriendData *sub_0202C23C(struct UnkStruct_021D2230 *a0, int a1); #endif // POKEHEARTGOLD_UNK_0202C034_H diff --git a/include/unk_02032844.h b/include/unk_02032844.h new file mode 100644 index 000000000..600f2404c --- /dev/null +++ b/include/unk_02032844.h @@ -0,0 +1,6 @@ +#ifndef POKEHEARTGOLD_UNK_02032844_H +#define POKEHEARTGOLD_UNK_02032844_H + +int sub_02033974(void); + +#endif // POKEHEARTGOLD_UNK_02032844_H diff --git a/include/unk_02033AE0.h b/include/unk_02033AE0.h index 46bfe269b..505643d5e 100644 --- a/include/unk_02033AE0.h +++ b/include/unk_02033AE0.h @@ -9,5 +9,6 @@ u32 sub_020342C4(void); u32 sub_020342C0(void); u32 sub_020342B8(void); u32 sub_02057A08(void); +s32 sub_02033FC4(u8 arg0); #endif // POKEHEARTGOLD_UNK_02033AE0_H diff --git a/include/unk_02034354.h b/include/unk_02034354.h index d64ef66b5..9c1b066f0 100644 --- a/include/unk_02034354.h +++ b/include/unk_02034354.h @@ -2,6 +2,7 @@ #define POKEHEARTGOLD_UNK_02034354_H #include "player_data.h" +#include "dwcaccount.h" PlayerProfile *sub_02034818(u32 a0); void sub_02034AC0(SaveData *saveData, int a1); @@ -19,5 +20,10 @@ int sub_02034714(int); void sub_0203476C(int); void sub_02034638(void); void sub_020343E4(void); +void sub_02034A20(SaveData *saveData); +DWCFriendData *sub_0203484C(int a0); +int sub_020348A8(int a0); +int sub_020348CC(int a0); +u16* sub_02034884(int a0); #endif // POKEHEARTGOLD_UNK_02034354_H diff --git a/include/unk_02034B0C.h b/include/unk_02034B0C.h index da1e043af..36d48b972 100644 --- a/include/unk_02034B0C.h +++ b/include/unk_02034B0C.h @@ -4,5 +4,7 @@ void sub_02034D8C(void); BOOL sub_02035650(void); BOOL sub_02034DB8(void); +BOOL sub_02034BE4(void); +BOOL sub_02035630(void); #endif // POKEHEARTGOLD_UNK_02034B0C_H diff --git a/include/unk_02035900.h b/include/unk_02035900.h index 3dcc8354b..c32aefdce 100644 --- a/include/unk_02035900.h +++ b/include/unk_02035900.h @@ -15,5 +15,14 @@ void sub_020376EC(int); BOOL sub_020373B4(int); int sub_02037824(int); BOOL sub_02037880(void); +void sub_020369CC(void); +void sub_02036904(void); +void sub_020367A8(void); +void sub_0203622C(void); +void sub_0203786C(int); +void sub_02035FD8(void); +int sub_02035ED8(int arg0, int arg1, int arg2, int arg3); +void sub_02037988(void); +int sub_02037700(void); #endif // POKEHEARTGOLD_UNK_02035900_H diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index 1cef31176..9d2eb32be 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -2,9 +2,16 @@ #define POKEHEARTGOLD_UNK_02037C94_H #include "save.h" +#include "save_wifi_history.h" #include "unk_0202C034.h" #include "overlay_44_02232E9C.h" +typedef struct { + u64 x; + u64 mul; + u64 add; +} MATHRandContext32; + BOOL sub_02037D78(void); void sub_02037FF0(void); void sub_020380CC(void); @@ -12,33 +19,74 @@ u32 *sub_020392D8(void); BOOL sub_020393C8(void); int sub_0203993C(void); int sub_02039998(void); -int sub_02039FFC(int a0); BOOL sub_02039AA4(void); -int sub_020399B8(void); BOOL sub_02038D90(void); -BOOL sub_0203A05C(SaveData *saveData); -void sub_02039F68(void *); -void sub_02039AD8(int); -void *sub_0203A040(UnkStruct_021D2230 *a0); void sub_020398D4(int a0, int a1); -void sub_02039B58(void); void sub_02039358(void); BOOL sub_020390C4(void); void sub_020378E4(int a0); -void sub_02039B18(void); -void sub_02039AF8(void); s32 sub_02039080(s32); s32 sub_02039264(void); UnkStruct_ov44_0223197C *sub_020398C8(void); void sub_020393B4(void); BOOL sub_02039274(void); void sub_02039330(void); -void sub_0203A1C4(SaveData* saveData, void* a1, enum HeapID heapID); -void sub_02039B7C(void); BOOL sub_020392A0(void); UnkStruct_ov44_0223197C* sub_020396FC(SaveData*, int); void sub_02039378(void); -void sub_02039FD8(enum HeapID heapID); +void sub_020381C0(void (*func)(), int a1); +BOOL sub_02037D78(void); +BOOL sub_02039918(void); +BOOL sub_020393C8(void); +BOOL sub_020395B0(void); +BOOL sub_020397FC(void); + +void sub_020399A4(s8 arg0); +u8 sub_020399B8(void); +void sub_020399DC(u32 errorCode); +void sub_020399EC(void); +void sub_020399FC(void); +void sub_02039A00(void); +BOOL sub_02039AD8(int arg0); +void sub_02039AF8(void); +void sub_02039B18(void); +void sub_02039B38(void); +void sub_02039B58(void); +void sub_02039B7C(void); +void sub_02039BA0(void); +void sub_02039C14(void); +void sub_02039C60(void); +s32 sub_02039C6C(s32 arg0); +s32 sub_02039D08(void); +int sub_02039D3C(void); +void sub_02039D54(s32* arg0); +void sub_02039D78(void); +void sub_02039D8C(void); +void sub_02039DC0(void); +void sub_02039DC4(void); +void sub_02039DE4(void); +void sub_02039E30(void); +void sub_02039E7C(void); void sub_02039E9C(void); +void sub_02039EAC(s32* arg0); +s32 sub_02039EB4(SaveData* arg0, s32 arg1, u32* arg2); +void sub_02039F68(SaveWiFiHistory* arg0); +void sub_02039FB8(SaveWiFiHistory* arg0, s32 arg1, s32 arg2, u8 arg3); +s32 sub_02039FD8(enum HeapID arg0); +s32 sub_02039FFC(enum HeapID arg0); +void sub_0203A01C(UnkStruct_021D2230* arg0); +int sub_0203A040(UnkStruct_021D2230* arg0); +BOOL sub_0203A05C(SaveData* arg0); +s32 sub_0203A084(SaveData* arg0, DWCFriendData* arg1, s32* arg2); +int sub_0203A128(SaveData* arg0, u64 arg1, int* arg2); +s32 sub_0203A1C4(SaveData* arg0, s32* arg1, enum HeapID arg2); +void sub_0203A280(SaveData* arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4); +s32 sub_0203A378(SaveData* arg0, s32 arg1); + +void sub_0203960C(void); +void sub_02038E90(void); +void sub_02038EB4(void); +void sub_02038EB0(void); +void sub_0203847C(void); #endif // POKEHEARTGOLD_UNK_02037C94_H diff --git a/include/unk_020915B0.h b/include/unk_020915B0.h index 184cd9930..c2ef1ca7c 100644 --- a/include/unk_020915B0.h +++ b/include/unk_020915B0.h @@ -3,5 +3,7 @@ void UnloadDwcOverlay(void); void LoadDwcOverlay(void); +void UnloadOVY38(void); +void LoadOVY38(void); #endif // POKEHEARTGOLD_UNK_020915B0_H diff --git a/main.lsf b/main.lsf index 055aa552f..661866eb7 100644 --- a/main.lsf +++ b/main.lsf @@ -152,6 +152,7 @@ Static main Object asm/unk_02035900.o Object asm/unk_020379A0.o Object asm/unk_02037C94.o + Object src/unk_02037C94_1.o Object asm/unk_0203A3B0.o Object src/communication_error.o Object src/unk_0203AC88.o diff --git a/src/main.c b/src/main.c index 109a75f58..af64993ea 100644 --- a/src/main.c +++ b/src/main.c @@ -65,7 +65,7 @@ void NitroMain(void) { sub_02005D00(); InitSoundData(Save_Chatot_Get(_02111868.unk_10.saveData), Save_PlayerData_GetOptionsAddr(_02111868.unk_10.saveData)); Init_Timer3(); - if (sub_02039FFC(3) == 3) { + if (sub_02039FFC(HEAP_ID_3) == 3) { ShowWFCUserInfoWarning(HEAP_ID_3, 0); } if (!Save_FlashChipIsDetected(_02111868.unk_10.saveData)) { diff --git a/src/overlay_44_0222CDAC.c b/src/overlay_44_0222CDAC.c index 04f3a476d..7ac0486ee 100644 --- a/src/overlay_44_0222CDAC.c +++ b/src/overlay_44_0222CDAC.c @@ -1349,8 +1349,7 @@ s32 ov44_0222B228(UnkStruct_ov44_022319EC *arg0, s32 arg1) { } else { Sound_SetSceneAndPlayBGM(11, SEQ_GS_WIFI_ACCESS, 1); ov44_0222B0B0(arg0); - sub_0202C08C(arg0->unk0); - if (DWC_CheckHasProfile() == 0) { + if (DWC_CheckHasProfile(sub_0202C08C(arg0->unk0)) == 0) { SetBgPriority(0, 3); SetBgPriority(1, 0); SetBgPriority(3, 0); @@ -1359,8 +1358,7 @@ s32 ov44_0222B228(UnkStruct_ov44_022319EC *arg0, s32 arg1) { arg0->unk188 = ov44_02231A28(arg0->unk15C, &ov44_02235384, 0); arg0->unk348 = 6; } else { - sub_0202C08C(arg0->unk0); - if (DWC_CheckValidConsole() == 0) { + if (DWC_CheckValidConsole(sub_0202C08C(arg0->unk0)) == 0) { ov44_0222F66C(arg0, 20); arg0->unk348 = 3; } else { @@ -3412,9 +3410,9 @@ s32 ov44_0222E9FC(UnkStruct_ov44_022319EC *arg0) { } s32 ov44_0222EA2C(UnkStruct_ov44_022319EC *arg0, s32 arg1) { - ListMenuTemplate spC; // Unknown struct of size 0x20 + s32 spC[8]; // Unknown struct of size 0x20 if ((ov44_0222E7C4(arg0) == 0) && (sub_02037B38(18) != 0) && (ov44_0222E9FC(arg0) == 1)) { - sub_0203A1C4(arg0->saveData, &spC, HEAP_ID_53); + sub_0203A1C4(arg0->saveData, spC, HEAP_ID_53); ov44_0222F7BC(arg0); u32 temp_r0 = ov44_02229F00(arg0, ov44_02231958(arg0, ov00_021E6EBC())); u32 var_r1 = temp_r0; diff --git a/src/unk_02037C94_1.c b/src/unk_02037C94_1.c new file mode 100644 index 000000000..a8a86eb03 --- /dev/null +++ b/src/unk_02037C94_1.c @@ -0,0 +1,548 @@ +#include "unk_02037C94.h" +#include "unk_02035900.h" +#include "unk_02034354.h" +#include "unk_020915B0.h" +#include "unk_020379A0.h" +#include "unk_02034B0C.h" +#include "unk_02033AE0.h" +#include "unk_02032844.h" +#include "unk_02005D10.h" +#include "overlay_00_thumb.h" +#include "overlay_45_thumb.h" +#include "dwcaccount.h" +#include "system.h" +#include "communication_error.h" + +typedef struct UnkStruct_sub_02039C6C { + void* unk0; + u8 unk4[8]; + MATHRandContext32 mathRandContext; + void (*unk24)(); + SaveData* unk28; + PlayerProfile* unk2C; + s32 unk30; + s32 unk34; + s32 unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + u16 unk48; + u8 unk4A; + u8 unk4B; + u8 unk4C; + u8 unk4D; + u8 unk4E; + u8 unk4F; + u8 unk50; + s8 unk51; + u8 unk52; + u8 unk53; + u8 unk54; + u8 unk55; + u8 unk56; + u8 unk57; + u8 unk58; + u8 unk59[3]; + u8 unk5C; + u8 unk5D; + u8 unk5E; + u8 unkEF; + s32 unk60; + u8 unk64; +} UnkStruct_sub_02039C6C; + +extern UnkStruct_sub_02039C6C* _021D4150; + + +void sub_020399A4(s8 arg0) { + if (_021D4150) { + _021D4150->unk56 = arg0; + } +} + +u8 sub_020399B8(void) { + if (sub_0201A79C() != 0) { + return 0; + } + if (_021D4150) { + return _021D4150->unk56; + } + return 0; +} + +void sub_020399DC(u32 errorCode) { + ShowCommunicationError(HEAP_ID_DEFAULT, 1, errorCode); + while(TRUE) {} +} + +void sub_020399EC(void) { + ShowCommunicationError(HEAP_ID_DEFAULT, 4, 0); + while(TRUE) {} +} + +void sub_020399FC(void) { + +} + +void sub_02039A00(void) { + if ((sub_02039918() != 0) && ((sub_02037700() != 0) || (sub_020393C8() != 0) || (sub_020395B0() != 0) || (_021D4150->unk5D != 0) || (sub_020397FC() != 0)) && (sub_0201A79C() == 0) && (sub_020399B8() == 0)) { + Sound_Stop(); + Save_Cancel(_021D4150->unk28); + gSystem.touchpadReadAuto = 1; + if (_021D4150->unk5D == 3) { + sub_020399A4(3); + return; + } + if (_021D4150->unk5D == 5) { + sub_020399A4(5); + return; + } + if ((_021D4150->unk4E == 0x19) || (_021D4150->unk4E == 0xF) || (_021D4150->unk4E == 0x24)) { + sub_020399A4(2); + return; + } + sub_020399A4(1); + } +} + +BOOL sub_02039AA4(void) { + if ((sub_02035630() != 0) || (sub_02037D78() == 0)) { + return TRUE; + } + if (sub_02034BE4() == 0) { + return TRUE; + } + if (sub_02033974() != 0) { + return TRUE; + } + return FALSE; +} + +BOOL sub_02039AD8(int arg0) { + if (_021D4150 != NULL) { + _021D4150->unk5D = arg0; + sub_02037988(); + return TRUE; + } + return FALSE; +} + +void sub_02039AF8(void) { + _021D4150->unk4E = 0x1D; + ov00_021E5C84(&sub_020369CC, &sub_020369CC); +} + +void sub_02039B18(void) { + _021D4150->unk4E = 0x23; + ov00_021E5C84(&sub_020369CC, &sub_020369CC); +} + +void sub_02039B38(void) { + _021D4150->unk4E = 0x21; + ov00_021E5C84(&sub_020369CC, &sub_020369CC); +} + +void sub_02039B58(void) { + _021D4150->unk4E = 0x17; + ov00_021E5C84(&sub_02036904, &sub_020367A8); +} + +void sub_02039B7C(void) { + _021D4150->unk4E = 0x13; + ov00_021E5C84(&sub_02036904, &sub_020367A8); +} + +void sub_02039BA0(void) { + if (sub_02034DB8() != 0) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x60000); + if (sub_02035ED8(1, 1, 0x200, 1) != 0) { + ov00_021E5900(_021D4150->unk28, 0x30, 0x58000, sub_02033FC4(_021D4150->unk4E) + 1); + ov00_021E6CA4(sub_020399DC); + sub_02035FD8(); + ov00_021E70B8(0); + sub_020378E4(0); + sub_020381C0(sub_0203960C, 0xE10); + } + } +} + +void sub_02039C14(void) { + _021D4150->unk44--; + if (_021D4150->unk44 <= 0) { + sub_020381C0(sub_02038E90, 0); + return; + } + sub_0203786C(1); + if ((sub_02039D3C() != 0) && (ov45_0222E8F4() != 0)) { + sub_020381C0(sub_02039C60, 0); + } +} + +void sub_02039C60(void) { + if (sub_02039D3C()) { + return; + } +} + +s32 sub_02039C6C(s32 arg0) { + s32 var_r4 = 1; + if ((arg0 >= 0xA) && (arg0 < 0x14)) { + sub_020381C0(sub_02038EB4, 0); + var_r4 = 0; + } else if (arg0 < 0) { + sub_020381C0(sub_02038E90, 0); + var_r4 = 0; + } else if (arg0 == 23) { + sub_020381C0(sub_02039E7C, 0); + var_r4 = 0; + } else if (arg0 == 24) { + var_r4 = 0; + if (_021D4150->unk53 != 0) { + sub_020381C0(sub_02038E90, 0); + } else { + sub_020381C0(sub_02038EB0, 0); + } + } + if ((_021D4150->unk53 != 0) && (_021D4150->unk4B != sub_02037454())) { + sub_020381C0(sub_02038E90, 0); + var_r4 = 0; + } + return var_r4; +} + +s32 sub_02039D08(void) { + s32 var_r4 = 1; + u32 temp_r0 = ov45_0222E6C8(); + switch (temp_r0) { + case 0: + case 1: + case 2: + case 3: + break; + case 4: + sub_020381C0(sub_02039DC0, 0); + var_r4 = 0; + break; + } + return var_r4; +} + +int sub_02039D3C(void) { + s32 ret = sub_02039C6C(ov00_021E5E54(0)); + if (ret != 0) { + return sub_02039D08(); + } + return ret; +} + +void sub_02039D54(s32* arg0) { + s32 temp_r0 = ov00_021E5E54(0); + if (temp_r0 >= 20) { + *arg0 = temp_r0; + } else { + *arg0 = 0; + if (sub_02039C6C(temp_r0) == 0) { + return; + } + } + sub_02039D08(); +} + +void sub_02039D78(void) { + ov45_0222E91C(); + sub_020381C0(sub_02039D8C, 0); +} + +void sub_02039D8C(void) { + ov00_021E5E54(0); + sub_02039D08(); + if (ov45_0222E944() != 0) { + sub_0201A738(1); + sub_020343E4(); + sub_020381C0(sub_0203847C, 5); + sub_0203786C(0); + } +} + +void sub_02039DC0(void) { + +} + +void sub_02039DC4(void) { + sub_02039D3C(); + if (ov45_0222F254() == 1) { + ov45_0222F70C(); + sub_020381C0(sub_02039E30, 0); + } +} + +void sub_02039DE4(void) { + + if (ov45_0222F254() == 1) { + ov45_0222F70C(); + sub_020381C0(sub_02039E30, 0); + return; + } + s32 sp0; + sub_02039D54(&sp0); + if (sp0 != 0) { + if (sp0 == 0x14) { + sub_020381C0(sub_02039DC4, 0); + return; + } + ov45_0222F70C(); + sub_020381C0(sub_02039C60, 0); + } +} + +void sub_02039E30(void) { + if (ov00_021E5E54(1) < 0) { + sub_020381C0(sub_02038E90, 0); + return; + } + if ((sub_02039D08() != 0) && (ov00_021E6BE4(0) != 0) && (ov00_021E6C68() != 0)) { + sub_0203622C(); + sub_020378E4(0); + sub_020381C0(sub_02039C60, 0); + } +} + +void sub_02039E7C(void) { + if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } + sub_02039D08(); +} + +void sub_02039E9C(void) { + _021D4150->unk4E = 0x22; +} + +void sub_02039EAC(s32* arg0) { + *arg0 = 0; +} + +s32 sub_02039EB4(SaveData* arg0, s32 arg1, u32* arg2) { + switch (*arg2) { + case 0: + sub_02037AC0(0x6F); + *arg2 = 1; + default: + break; + case 1: + if (sub_02037B38(0x6F) != 0) { + Save_PrepareForAsyncWrite(arg0, arg1); + *arg2 = 2; + } + break; + case 2: + s32 temp_r0 = Save_WriteFileAsync(arg0); + GF_ASSERT(temp_r0 != 2); + if (temp_r0 == 1) { + *arg2 = 3; + sub_02037AC0(0x70); + } else if (temp_r0 == 3) { + *arg2 = 7; + } + break; + case 3: + if (sub_02037B38(0x70) != 0) { + *arg2 = 4; + } + break; + case 4: + temp_r0 = Save_WriteFileAsync(arg0); + GF_ASSERT(temp_r0 != 1); + if (temp_r0 == 2) { + *arg2 = 5; + } else if (temp_r0 == 3) { + *arg2 = 7; + } + break; + case 5: + *arg2 = 6; + break; + case 6: + return 1; + } + return 0; +} + +void sub_02039F68(SaveWiFiHistory* arg0) { + s32 temp_r7 = sub_02037454(); + if (sub_02034818(0) != NULL) { + for (int i = 0; i < temp_r7; i++) { + if (i != sub_0203769C()) { + s32 temp_r4 = sub_020348A8(i); + s32 temp_r6 = sub_020348CC(i); + sub_02039FB8(arg0, temp_r4, temp_r6, PlayerProfile_GetLanguage(sub_02034818(i))); + } + } + } +} + +void sub_02039FB8(SaveWiFiHistory* arg0, s32 arg1, s32 arg2, u8 arg3) { + if (WiFiHistory_GetLocationSeenState(arg0, arg1, arg2) == 0) { + WiFiHistory_SetLocationSeenState(arg0, arg1, arg2, 1); + } +} + +s32 sub_02039FD8(enum HeapID arg0) { + void* temp_r0 = Heap_Alloc(arg0, 0x720); + s32 temp_r5 = DWC_Init(((u32)temp_r0 + 31) & ~31); //TODO + Heap_Free(temp_r0); + return temp_r5; +} + +s32 sub_02039FFC(enum HeapID arg0) { + LoadDwcOverlay(); + LoadOVY38(); + s32 temp_r4 = sub_02039FD8(arg0); + UnloadDwcOverlay(); + UnloadOVY38(); + return temp_r4; +} + +void sub_0203A01C(UnkStruct_021D2230* arg0) { + + DWCUserData* userData = sub_0202C08C(arg0); + if (DWC_CheckUserData(userData) == 0) { + DWC_CreateUserData(userData, 0x4144414A); + DWC_ClearDirtyFlag(userData); + } +} + +int sub_0203A040(UnkStruct_021D2230* arg0) { + DWCUserData* userData = sub_0202C08C(arg0); + DWCFriendData friendData; + DWC_CreateExchangeToken(userData, &friendData); + return DWC_GetGsProfileId(userData, &friendData); +} + +BOOL sub_0203A05C(SaveData* arg0) { + DWCUserData* userData = sub_0202C08C(sub_0202C6F4(arg0)); + if ((DWC_CheckHasProfile(userData) != 0) && (DWC_CheckValidConsole(userData) != 0)) { + return TRUE; + } + return FALSE; +} + +s32 sub_0203A084(SaveData* arg0, DWCFriendData* arg1, s32* arg2) { + int i; + DWCUserData* userData = sub_0202C08C(sub_0202C6F4(arg0)); + DWCFriendData* friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + *arg2 = -1; + if (DWC_IsValidFriendData(arg1) == 0) { + return 3; + } + for (i = 0; i < 32; i++) { + if (DWC_IsEqualFriendData(arg1, &friendData[i]) != 0) { + *arg2 = i; + return 0; + } + if (DWC_GetGsProfileId(userData, arg1) > 0) { + if (DWC_GetGsProfileId(userData, arg1) == DWC_GetGsProfileId(userData, &friendData[i])) { + *arg2 = i; + return 1; + } + } + if ((*arg2 < 0) && (DWC_IsValidFriendData(&friendData[i]) == 0)) { + *arg2 = i; + } + } + return 2; +} + +int sub_0203A128(SaveData* arg0, u64 arg1, int* arg2) { + int i; + DWCUserData* userData = sub_0202C08C(sub_0202C6F4(arg0)); + DWCFriendData* friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + if (!DWC_CheckFriendKey(userData, arg1)) { + return 3; + } + DWCFriendData newFriendData; + DWC_CreateFriendKeyToken(&newFriendData, arg1); + if (DWC_GetGsProfileId(userData, &newFriendData) <= 0) { + return 3; + } + *arg2 = -1; + for (i = 0; i < 32; i ++) { + if (DWC_GetGsProfileId(userData, &newFriendData) == DWC_GetGsProfileId(userData, &friendData[i])) { + *arg2 = i; + return 0; + } + if ((*arg2 < 0) && !DWC_IsValidFriendData(&friendData[i])) { + *arg2 = i; + } + } + return 2; +} + +s32 sub_0203A1C4(SaveData* arg0, s32* arg1, enum HeapID arg2) { + s32 spC = 0; + DWCFriendData* friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + for (int i = 0; i < sub_02037454(); i++) { + if (i != sub_0203769C()) { + DWCFriendData *temp_r0 = sub_0203484C(i); + if (temp_r0 != NULL) { + s32 sp10; + *arg1 = sub_0203A084(arg0, temp_r0, &sp10); + GF_ASSERT(*arg1 != 3); + if (*arg1 == 0) { + sub_0203A280(arg0, i, sp10, arg2, 2); + sub_02034A20(arg0); + } + else if (*arg1 == 1) { + if (sub_02039998() == 0) { + sub_0203A280(arg0, i, sp10, arg2, 1); + MI_CpuCopy8(temp_r0, &friendData[sp10], sizeof(DWCFriendData)); + sub_02034A20(arg0); + } + } + else if (*arg1 == 2) { + spC = 1; + } + } + } + arg1 += 1; + } + return spC; +} + +void sub_0203A280(SaveData* arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4) { + UnkStruct_021D2230* temp_r0 = sub_0202C6F4(arg0); + void* sp8 = sub_0202C23C(temp_r0, arg2); + PlayerProfile* playerProfile = sub_02034818(arg1); + if (arg4 != 2) { + MI_CpuCopy8(sub_0203484C(arg1), sp8, 0xC); + } + if (arg4 == 0) { + String* string = PlayerProfile_GetPlayerName_NewString(playerProfile, arg3); + sub_0202C270(temp_r0, arg2, string); + String_Delete(string); + sub_0202C190(temp_r0, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); + sub_0202C190(temp_r0, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); + } else if (((arg4 - 1) <= 1) && (sub_0202C090(temp_r0, arg2, 8) == 2)) { + sub_0202C190(temp_r0, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); + sub_0202C190(temp_r0, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); + } + String* string = String_New(0x78, arg3); + CopyU16ArrayToString(string, sub_02034884(arg1)); + sub_0202C2B4(temp_r0, arg2, string); + String_Delete(string); + sub_0202C190(temp_r0, arg2, 7, PlayerProfile_GetAvatar(playerProfile)); + sub_02034A20(arg0); +} + +s32 sub_0203A378(SaveData* arg0, s32 arg1) { + int i; + DWCFriendData* friendData = sub_0203484C(arg1); + UnkStruct_021D2230* r5 = sub_0202C6F4(arg0); + + for (i = 0; i < 32; i++) { + if (DWC_IsEqualFriendData(friendData, sub_0202C23C(r5, i)) != 0) { + return i; + } + } + return 32; +} \ No newline at end of file From 40d300ca16ef5cde2d995a1d45bba269ae385359 Mon Sep 17 00:00:00 2001 From: ferwardle Date: Thu, 2 Jul 2026 14:27:00 -0500 Subject: [PATCH 2/7] Decomp unk_02037C94/2 --- asm/include/unk_02037C94.inc | 3 +- asm/unk_02037C94.s | 1357 ---------------------------------- include/overlay_00_thumb.h | 5 + include/overlay_45_thumb.h | 6 + include/unk_02033AE0.h | 1 + include/unk_02034B0C.h | 2 + include/unk_02035900.h | 1 + include/unk_02037C94.h | 60 +- src/unk_02037C94_1.c | 502 ++++++++++++- 9 files changed, 561 insertions(+), 1376 deletions(-) diff --git a/asm/include/unk_02037C94.inc b/asm/include/unk_02037C94.inc index eb7e360d8..c5c63acbb 100644 --- a/asm/include/unk_02037C94.inc +++ b/asm/include/unk_02037C94.inc @@ -252,4 +252,5 @@ .public sub_02039C14 .public sub_02039DC0 .public sub_02039BA0 -.public sub_02039E30 \ No newline at end of file +.public sub_02039E30 +.public sub_020392F4 \ No newline at end of file diff --git a/asm/unk_02037C94.s b/asm/unk_02037C94.s index 4ac5836fd..b7204dfab 100644 --- a/asm/unk_02037C94.s +++ b/asm/unk_02037C94.s @@ -2563,1360 +2563,3 @@ _02038F6C: .word _021D4150 _02038F70: .word sub_02038EB0 thumb_func_end sub_02038EB8 - thumb_func_start sub_02038F74 -sub_02038F74: ; 0x02038F74 - push {r3, r4} - ldr r3, _02038F98 ; =_021D4150 - ldr r4, [r3] - cmp r4, #0 - beq _02038F94 - add r3, r0, #0 - sub r3, #0x19 - cmp r3, #1 - bls _02038F88 - neg r0, r0 -_02038F88: - str r0, [r4, #0x34] - ldr r0, _02038F98 ; =_021D4150 - ldr r3, [r0] - str r1, [r3, #0x38] - ldr r0, [r0] - str r2, [r0, #0x3c] -_02038F94: - pop {r3, r4} - bx lr - .balign 4, 0 -_02038F98: .word _021D4150 - thumb_func_end sub_02038F74 - - thumb_func_start sub_02038F9C -sub_02038F9C: ; 0x02038F9C - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0xa - blt _02038FB6 - cmp r0, #0x14 - bge _02038FB6 - ldr r0, _02038FFC ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FB6: - cmp r0, #0 - bge _02038FC4 - ldr r0, _02039000 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FC4: - cmp r0, #0x14 - bne _02038FD2 - ldr r0, _02039004 ; =sub_02038EB8 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FD2: - cmp r0, #0x15 - bne _02038FE0 - ldr r0, _02039008 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FE0: - cmp r0, #0x16 - bne _02038FEE - ldr r0, _02038FFC ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038FEE: - cmp r0, #0x18 - bne _02038FFA - ldr r0, _02039008 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 -_02038FFA: - pop {r3, pc} - .balign 4, 0 -_02038FFC: .word sub_02038EB4 -_02039000: .word sub_02038E90 -_02039004: .word sub_02038EB8 -_02039008: .word sub_02038EB0 - thumb_func_end sub_02038F9C - - thumb_func_start sub_0203900C -sub_0203900C: ; 0x0203900C - push {r3, lr} - mov r0, #1 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039022 - ldr r0, _02039074 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039022: - ldr r0, _02039078 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - bl sub_02033FC4 - add r2, r0, #0 - ldr r0, _02039078 ; =_021D4150 - ldr r1, [r0] - mov r0, #0x51 - ldrsb r0, [r1, r0] - add r1, r2, #1 - mov r2, #0 - bl ov00_021E6D7C - add r0, r0, #3 - cmp r0, #3 - bhi _02039070 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02039052: ; jump table - .short _02039068 - _02039052 - 2 ; case 0 - .short _02039070 - _02039052 - 2 ; case 1 - .short _02039070 - _02039052 - 2 ; case 2 - .short _0203905A - _02039052 - 2 ; case 3 -_0203905A: - bl sub_0203622C - ldr r0, _0203907C ; =sub_02038F9C - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039068: - ldr r0, _02039074 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039070: - pop {r3, pc} - nop -_02039074: .word sub_02038E90 -_02039078: .word _021D4150 -_0203907C: .word sub_02038F9C - thumb_func_end sub_0203900C - - thumb_func_start sub_02039080 -sub_02039080: ; 0x02039080 - push {r4, lr} - add r4, r0, #0 - ldr r0, _020390B0 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - ldr r0, _020390B4 ; =sub_02038F9C - cmp r1, r0 - beq _02039094 - mov r0, #0 - pop {r4, pc} -_02039094: - ldr r0, _020390B8 ; =sub_02036904 - ldr r1, _020390BC ; =sub_020367A8 - bl ov00_021E5C84 - ldr r0, _020390B0 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x51 - strb r4, [r0] - ldr r0, _020390C0 ; =sub_0203900C - bl sub_020381C0 - mov r0, #1 - pop {r4, pc} - .balign 4, 0 -_020390B0: .word _021D4150 -_020390B4: .word sub_02038F9C -_020390B8: .word sub_02036904 -_020390BC: .word sub_020367A8 -_020390C0: .word sub_0203900C - thumb_func_end sub_02039080 - - thumb_func_start sub_020390C4 -sub_020390C4: ; 0x020390C4 - ldr r0, _02039120 ; =_021D4150 - ldr r1, _02039124 ; =sub_02038F9C - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, r1 - bne _020390D4 - mov r0, #0 - bx lr -_020390D4: - ldr r1, _02039128 ; =sub_02038EB8 - cmp r0, r1 - bne _020390DE - mov r0, #1 - bx lr -_020390DE: - ldr r1, _0203912C ; =sub_02038E94 - cmp r0, r1 - bne _020390E8 - mov r0, #3 - bx lr -_020390E8: - ldr r1, _02039130 ; =sub_02038EB0 - cmp r0, r1 - bne _020390F2 - mov r0, #4 - bx lr -_020390F2: - ldr r1, _02039134 ; =sub_02038EB4 - cmp r0, r1 - bne _020390FC - mov r0, #5 - bx lr -_020390FC: - ldr r1, _02039138 ; =sub_02039DE4 - cmp r0, r1 - bne _02039106 - mov r0, #0 - bx lr -_02039106: - ldr r1, _0203913C ; =sub_02039DC4 - cmp r0, r1 - bne _02039110 - mov r0, #1 - bx lr -_02039110: - ldr r1, _02039140 ; =sub_02039E7C - cmp r0, r1 - bne _0203911A - mov r0, #3 - bx lr -_0203911A: - mov r0, #2 - bx lr - nop -_02039120: .word _021D4150 -_02039124: .word sub_02038F9C -_02039128: .word sub_02038EB8 -_0203912C: .word sub_02038E94 -_02039130: .word sub_02038EB0 -_02039134: .word sub_02038EB4 -_02039138: .word sub_02039DE4 -_0203913C: .word sub_02039DC4 -_02039140: .word sub_02039E7C - thumb_func_end sub_020390C4 - - thumb_func_start sub_02039144 -sub_02039144: ; 0x02039144 - push {r3, lr} - ldr r0, _020391BC ; =sub_02036904 - ldr r1, _020391C0 ; =sub_020367A8 - bl ov00_021E5C84 - mov r0, #0 - mvn r0, r0 - mov r1, #4 - mov r2, #1 - bl ov00_021E6D7C - add r0, r0, #4 - cmp r0, #4 - bhi _0203919A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0203916C: ; jump table - .short _02039198 - _0203916C - 2 ; case 0 - .short _0203918E - _0203916C - 2 ; case 1 - .short _0203919A - _0203916C - 2 ; case 2 - .short _0203919A - _0203916C - 2 ; case 3 - .short _02039176 - _0203916C - 2 ; case 4 -_02039176: - ldr r0, _020391C4 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x5c - strb r1, [r0] - bl sub_0203622C - ldr r0, _020391C8 ; =sub_02038F9C - mov r1, #0 - bl sub_020381C0 - b _0203919A -_0203918E: - ldr r0, _020391CC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _0203919A -_02039198: - pop {r3, pc} -_0203919A: - bl ov00_021E6690 - cmp r0, #0 - bge _020391AC - ldr r0, _020391CC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020391AC: - cmp r0, #0x1a - bne _020391B8 - ldr r0, _020391CC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_020391B8: - pop {r3, pc} - nop -_020391BC: .word sub_02036904 -_020391C0: .word sub_020367A8 -_020391C4: .word _021D4150 -_020391C8: .word sub_02038F9C -_020391CC: .word sub_02038E90 - thumb_func_end sub_02039144 - - thumb_func_start sub_020391D0 -sub_020391D0: ; 0x020391D0 - push {r3, lr} - mov r0, #0 - bl sub_0203786C - ldr r0, _02039214 ; =_021D4150 - ldr r0, [r0] - add r0, #0x50 - ldrb r0, [r0] - bl ov00_021E6BE4 - cmp r0, #0 - beq _020391FE - bl ov00_021E6C68 - cmp r0, #0 - beq _020391FE - bl sub_020343E4 - ldr r0, _02039218 ; =sub_02039144 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020391FE: - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039210 - ldr r0, _0203921C ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039210: - pop {r3, pc} - nop -_02039214: .word _021D4150 -_02039218: .word sub_02039144 -_0203921C: .word sub_02038E90 - thumb_func_end sub_020391D0 - - thumb_func_start sub_02039220 -sub_02039220: ; 0x02039220 - push {r3, lr} - bl sub_0203769C - cmp r0, #0 - bne _0203923C - ldr r0, _0203925C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x50 - strb r1, [r0] - ldr r0, _02039260 ; =sub_020391D0 - bl sub_020381C0 - b _0203924E -_0203923C: - ldr r0, _0203925C ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x50 - strb r1, [r0] - ldr r0, _02039260 ; =sub_020391D0 - mov r1, #0 - bl sub_020381C0 -_0203924E: - ldr r0, _0203925C ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x5c - strb r1, [r0] - pop {r3, pc} - nop -_0203925C: .word _021D4150 -_02039260: .word sub_020391D0 - thumb_func_end sub_02039220 - - thumb_func_start sub_02039264 -sub_02039264: ; 0x02039264 - ldr r0, _02039270 ; =_021D4150 - ldr r0, [r0] - add r0, #0x5c - ldrb r0, [r0] - bx lr - nop -_02039270: .word _021D4150 - thumb_func_end sub_02039264 - - thumb_func_start sub_02039274 -sub_02039274: ; 0x02039274 - ldr r0, _02039294 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - ldr r0, _02039298 ; =sub_02039144 - cmp r1, r0 - bne _02039284 - mov r0, #1 - bx lr -_02039284: - ldr r0, _0203929C ; =sub_02039C60 - cmp r1, r0 - bne _0203928E - mov r0, #1 - bx lr -_0203928E: - mov r0, #0 - bx lr - nop -_02039294: .word _021D4150 -_02039298: .word sub_02039144 -_0203929C: .word sub_02039C60 - thumb_func_end sub_02039274 - - thumb_func_start sub_020392A0 -sub_020392A0: ; 0x020392A0 - ldr r0, _020392C8 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - ldr r0, _020392CC ; =sub_02038F9C - cmp r1, r0 - bne _020392B0 - mov r0, #1 - bx lr -_020392B0: - ldr r0, _020392D0 ; =sub_02039144 - cmp r1, r0 - bne _020392BA - mov r0, #1 - bx lr -_020392BA: - ldr r0, _020392D4 ; =sub_02039C60 - cmp r1, r0 - bne _020392C4 - mov r0, #1 - bx lr -_020392C4: - mov r0, #0 - bx lr - .balign 4, 0 -_020392C8: .word _021D4150 -_020392CC: .word sub_02038F9C -_020392D0: .word sub_02039144 -_020392D4: .word sub_02039C60 - thumb_func_end sub_020392A0 - - thumb_func_start sub_020392D8 -sub_020392D8: ; 0x020392D8 - push {r3, lr} - ldr r0, _020392F0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020392E6 - bl GF_AssertFail -_020392E6: - ldr r0, _020392F0 ; =_021D4150 - ldr r0, [r0] - add r0, #0x34 - pop {r3, pc} - nop -_020392F0: .word _021D4150 - thumb_func_end sub_020392D8 - - thumb_func_start sub_020392F4 -sub_020392F4: ; 0x020392F4 - push {r3, lr} - mov r0, #0 - bl sub_0203786C - mov r0, #0 - bl ov00_021E6BE4 - cmp r0, #0 - beq _02039312 - bl ov00_021E6C68 - ldr r0, _02039328 ; =sub_0203847C - mov r1, #0 - bl sub_020381C0 -_02039312: - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02039324 - ldr r0, _0203932C ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02039324: - pop {r3, pc} - nop -_02039328: .word sub_0203847C -_0203932C: .word sub_02038E90 - thumb_func_end sub_020392F4 - - thumb_func_start sub_02039330 -sub_02039330: ; 0x02039330 - push {r3, lr} - ldr r0, _02039350 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203934C - mov r0, #1 - bl sub_0201A738 - bl sub_020343E4 - ldr r0, _02039354 ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 -_0203934C: - pop {r3, pc} - nop -_02039350: .word _021D4150 -_02039354: .word sub_0203847C - thumb_func_end sub_02039330 - - thumb_func_start sub_02039358 -sub_02039358: ; 0x02039358 - push {r3, lr} - ldr r0, _02039370 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203936E - mov r1, #0 - add r0, #0x50 - strb r1, [r0] - ldr r0, _02039374 ; =sub_020391D0 - bl sub_020381C0 -_0203936E: - pop {r3, pc} - .balign 4, 0 -_02039370: .word _021D4150 -_02039374: .word sub_020391D0 - thumb_func_end sub_02039358 - - thumb_func_start sub_02039378 -sub_02039378: ; 0x02039378 - push {r3, lr} - ldr r0, _020393AC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020393AA - mov r0, #0 - mov r1, #1 - bl sub_020398D4 - bl sub_0203769C - cmp r0, #0 - bne _02039398 - mov r1, #0 - ldr r0, _020393AC ; =_021D4150 - b _0203939C -_02039398: - ldr r0, _020393AC ; =_021D4150 - mov r1, #1 -_0203939C: - ldr r0, [r0] - add r0, #0x50 - strb r1, [r0] - ldr r0, _020393B0 ; =sub_020391D0 - mov r1, #0 - bl sub_020381C0 -_020393AA: - pop {r3, pc} - .balign 4, 0 -_020393AC: .word _021D4150 -_020393B0: .word sub_020391D0 - thumb_func_end sub_02039378 - - thumb_func_start sub_020393B4 -sub_020393B4: ; 0x020393B4 - push {r3, lr} - bl sub_0203769C - add r1, sp, #0 - strb r0, [r1] - mov r0, #0x15 - add r1, sp, #0 - bl sub_020376E0 - pop {r3, pc} - thumb_func_end sub_020393B4 - - thumb_func_start sub_020393C8 -sub_020393C8: ; 0x020393C8 - ldr r0, _02039408 ; =_021D4150 - ldr r2, [r0] - cmp r2, #0 - beq _02039402 - ldr r1, [r2, #0x24] - ldr r0, _0203940C ; =sub_02038E90 - cmp r1, r0 - bne _020393DC - mov r0, #1 - bx lr -_020393DC: - ldr r0, _02039410 ; =sub_02038E94 - cmp r1, r0 - bne _020393F0 - add r0, r2, #0 - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _020393F0 - mov r0, #1 - bx lr -_020393F0: - ldr r0, _02039414 ; =sub_02039E7C - cmp r1, r0 - bne _02039402 - add r2, #0x53 - ldrb r0, [r2] - cmp r0, #0 - beq _02039402 - mov r0, #1 - bx lr -_02039402: - mov r0, #0 - bx lr - nop -_02039408: .word _021D4150 -_0203940C: .word sub_02038E90 -_02039410: .word sub_02038E94 -_02039414: .word sub_02039E7C - thumb_func_end sub_020393C8 - - thumb_func_start sub_02039418 -sub_02039418: ; 0x02039418 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039468 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02039466 - mov r1, #0xf - add r2, r1, #0 - mov r0, #3 - add r2, #0xf1 - bl Heap_CreateAtEnd - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _02039468 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _02039468 ; =_021D4150 - mov r2, #0x18 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r2, [r0] - mov r1, #1 - add r2, #0x55 - strb r1, [r2] - ldr r0, [r0] - str r4, [r0, #0x28] - mov r0, #0 - bl sub_020398D4 - mov r0, #1 - bl sub_0201A728 -_02039466: - pop {r4, pc} - .balign 4, 0 -_02039468: .word _021D4150 - thumb_func_end sub_02039418 - - thumb_func_start sub_0203946C -sub_0203946C: ; 0x0203946C - push {r3, lr} - ldr r0, _0203949C ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039498 - mov r0, #1 - bl sub_0201A738 - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 - ldr r0, _0203949C ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - ldr r0, _0203949C ; =_021D4150 - mov r1, #0 - str r1, [r0] - mov r0, #0xf - bl Heap_Destroy -_02039498: - pop {r3, pc} - nop -_0203949C: .word _021D4150 - thumb_func_end sub_0203946C - - thumb_func_start sub_020394A0 -sub_020394A0: ; 0x020394A0 - push {r4, lr} - add r4, r0, #0 - ldr r0, _020394F0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020394EE - mov r1, #0xf - add r2, r1, #0 - mov r0, #3 - add r2, #0xf1 - bl Heap_CreateAtEnd - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _020394F0 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _020394F0 ; =_021D4150 - mov r2, #0x19 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r2, [r0] - mov r1, #1 - add r2, #0x55 - strb r1, [r2] - ldr r0, [r0] - str r4, [r0, #0x28] - mov r0, #0 - bl sub_020398D4 - mov r0, #1 - bl sub_0201A728 -_020394EE: - pop {r4, pc} - .balign 4, 0 -_020394F0: .word _021D4150 - thumb_func_end sub_020394A0 - - thumb_func_start sub_020394F4 -sub_020394F4: ; 0x020394F4 - push {r3, lr} - ldr r0, _02039524 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039520 - mov r0, #1 - bl sub_0201A738 - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 - ldr r0, _02039524 ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - ldr r0, _02039524 ; =_021D4150 - mov r1, #0 - str r1, [r0] - mov r0, #0xf - bl Heap_Destroy -_02039520: - pop {r3, pc} - nop -_02039524: .word _021D4150 - thumb_func_end sub_020394F4 - - thumb_func_start sub_02039528 -sub_02039528: ; 0x02039528 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039578 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02039576 - mov r1, #0xf - add r2, r1, #0 - mov r0, #3 - add r2, #0xf1 - bl Heap_CreateAtEnd - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _02039578 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _02039578 ; =_021D4150 - mov r2, #0x24 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r2, [r0] - mov r1, #1 - add r2, #0x55 - strb r1, [r2] - ldr r0, [r0] - str r4, [r0, #0x28] - mov r0, #0 - bl sub_020398D4 - mov r0, #1 - bl sub_0201A728 -_02039576: - pop {r4, pc} - .balign 4, 0 -_02039578: .word _021D4150 - thumb_func_end sub_02039528 - - thumb_func_start sub_0203957C -sub_0203957C: ; 0x0203957C - push {r3, lr} - ldr r0, _020395AC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020395A8 - mov r0, #1 - bl sub_0201A738 - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 - ldr r0, _020395AC ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - ldr r0, _020395AC ; =_021D4150 - mov r1, #0 - str r1, [r0] - mov r0, #0xf - bl Heap_Destroy -_020395A8: - pop {r3, pc} - nop -_020395AC: .word _021D4150 - thumb_func_end sub_0203957C - - thumb_func_start sub_020395B0 -sub_020395B0: ; 0x020395B0 - push {r3, lr} - sub sp, #8 - ldr r0, _02039608 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020395C2 - add sp, #8 - mov r0, #0 - pop {r3, pc} -_020395C2: - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x18 - beq _020395CE - cmp r0, #0x24 - bne _020395E4 -_020395CE: - add r0, sp, #4 - add r1, sp, #0 - bl ov00_021EC11C - cmp r0, #0 - beq _02039600 - bl ov00_021EC210 - add sp, #8 - mov r0, #1 - pop {r3, pc} -_020395E4: - cmp r0, #0x19 - bne _02039600 - add r0, sp, #4 - add r1, sp, #0 - bl ov00_021EC11C - cmp r0, #0 - beq _02039600 - ldr r0, [sp] - cmp r0, #7 - bne _02039600 - add sp, #8 - mov r0, #1 - pop {r3, pc} -_02039600: - mov r0, #0 - add sp, #8 - pop {r3, pc} - nop -_02039608: .word _021D4150 - thumb_func_end sub_020395B0 - - thumb_func_start sub_0203960C -sub_0203960C: ; 0x0203960C - push {r3, lr} - bl ov00_021E5B6C - ldr r1, _02039680 ; =_021D4150 - ldr r3, [r1] - ldr r2, [r3, #0x44] - sub r2, r2, #1 - str r2, [r3, #0x44] - cmp r0, #0x1b - bne _02039660 - ldr r1, [r1] - add r0, r1, #0 - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x21 - bne _02039656 - ldr r0, [r1, #0x60] - bl ov45_0222E804 - cmp r0, #1 - bne _0203964C - ldr r1, _02039680 ; =_021D4150 - mov r2, #1 - ldr r0, [r1] - add r0, #0x64 - strb r2, [r0] - ldr r1, [r1] - ldr r0, _02039684 ; =sub_02039C14 - ldr r1, [r1, #0x44] - bl sub_020381C0 - pop {r3, pc} -_0203964C: - ldr r0, _02039688 ; =sub_02039DC0 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039656: - ldr r0, _0203968C ; =sub_02039144 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02039660: - cmp r0, #0 - beq _0203966C - ldr r0, _02039690 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_0203966C: - ldr r0, _02039680 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bgt _0203967E - ldr r0, _02039690 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_0203967E: - pop {r3, pc} - .balign 4, 0 -_02039680: .word _021D4150 -_02039684: .word sub_02039C14 -_02039688: .word sub_02039DC0 -_0203968C: .word sub_02039144 -_02039690: .word sub_02038E90 - thumb_func_end sub_0203960C - - thumb_func_start sub_02039694 -sub_02039694: ; 0x02039694 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _020396EE - mov r2, #0xd5 - mov r0, #3 - mov r1, #0x30 - lsl r2, r2, #0xa - bl Heap_CreateAtEnd - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _020396EE - ldr r0, _020396F0 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - bl sub_02033FC4 - add r3, r0, #0 - ldr r0, _020396F0 ; =_021D4150 - mov r2, #0xb1 - ldr r0, [r0] - mov r1, #0x30 - ldr r0, [r0, #0x28] - lsl r2, r2, #0xa - add r3, r3, #1 - bl ov00_021E5900 - ldr r0, _020396F4 ; =sub_020399DC - bl ov00_021E6CA4 - bl sub_02035FD8 - mov r1, #0xe1 - ldr r0, _020396F8 ; =sub_0203960C - lsl r1, r1, #4 - bl sub_020381C0 -_020396EE: - pop {r3, pc} - .balign 4, 0 -_020396F0: .word _021D4150 -_020396F4: .word sub_020399DC -_020396F8: .word sub_0203960C - thumb_func_end sub_02039694 - - thumb_func_start sub_020396FC -sub_020396FC: ; 0x020396FC - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl Save_PlayerData_GetProfile - bl sub_02037474 - cmp r0, #0 - beq _02039712 - mov r0, #0 - pop {r3, r4, r5, pc} -_02039712: - mov r0, #1 - bl sub_0201A728 - ldr r2, _02039760 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - mov r1, #0x17 - bl sub_02037C98 - mov r0, #0xf - add r1, r4, #0 - bl Heap_Alloc - ldr r1, _02039764 ; =_021D4150 - ldr r2, [r1] - str r0, [r2] - ldr r0, [r1] - mov r1, #0 - ldr r0, [r0] - add r2, r4, #0 - bl MI_CpuFill8 - ldr r0, _02039764 ; =_021D4150 - mov r1, #0 - ldr r2, [r0] - add r2, #0x4f - strb r1, [r2] - ldr r0, [r0] - str r5, [r0, #0x28] - ldr r0, _02039768 ; =sub_02039694 - bl sub_020381C0 - ldr r0, _02039764 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0] - pop {r3, r4, r5, pc} - .balign 4, 0 -_02039760: .word 0x00007080 -_02039764: .word _021D4150 -_02039768: .word sub_02039694 - thumb_func_end sub_020396FC - - thumb_func_start sub_0203976C -sub_0203976C: ; 0x0203976C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl Save_PlayerData_GetProfile - bl sub_02037474 - cmp r0, #0 - bne _020397B8 - mov r0, #1 - bl sub_0201A728 - ldr r2, _020397BC ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - mov r1, #0x21 - bl sub_02037C98 - ldr r0, _020397C0 ; =_021D4150 - mov r1, #0 - ldr r2, [r0] - str r1, [r2] - ldr r2, [r0] - str r4, [r2, #0x60] - ldr r2, [r0] - add r2, #0x64 - strb r1, [r2] - ldr r2, [r0] - add r2, #0x4f - strb r1, [r2] - ldr r0, [r0] - str r5, [r0, #0x28] - ldr r0, _020397C4 ; =sub_02039BA0 - bl sub_020381C0 -_020397B8: - pop {r3, r4, r5, pc} - nop -_020397BC: .word 0x00007080 -_020397C0: .word _021D4150 -_020397C4: .word sub_02039BA0 - thumb_func_end sub_0203976C - - thumb_func_start sub_020397C8 -sub_020397C8: ; 0x020397C8 - push {r3, lr} - ldr r0, _020397DC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020397DA - ldr r0, _020397E0 ; =sub_02039D78 - mov r1, #0 - bl sub_020381C0 -_020397DA: - pop {r3, pc} - .balign 4, 0 -_020397DC: .word _021D4150 -_020397E0: .word sub_02039D78 - thumb_func_end sub_020397C8 - - thumb_func_start sub_020397E4 -sub_020397E4: ; 0x020397E4 - ldr r0, _020397F8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _020397F0 - mov r0, #0 - bx lr -_020397F0: - add r0, #0x64 - ldrb r0, [r0] - bx lr - nop -_020397F8: .word _021D4150 - thumb_func_end sub_020397E4 - - thumb_func_start sub_020397FC -sub_020397FC: ; 0x020397FC - ldr r0, _02039814 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039810 - ldr r1, [r0, #0x24] - ldr r0, _02039818 ; =sub_02039DC0 - cmp r1, r0 - bne _02039810 - mov r0, #1 - bx lr -_02039810: - mov r0, #0 - bx lr - .balign 4, 0 -_02039814: .word _021D4150 -_02039818: .word sub_02039DC0 - thumb_func_end sub_020397FC - - thumb_func_start sub_0203981C -sub_0203981C: ; 0x0203981C - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039864 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _0203982C - bl GF_AssertFail -_0203982C: - bl sub_020392A0 - cmp r0, #1 - beq _02039838 - bl GF_AssertFail -_02039838: - add r0, r4, #0 - bl ov45_0222F274 - cmp r0, #0 - bne _02039854 - add r0, r4, #0 - mov r1, #4 - bl ov45_0222F028 - ldr r0, _02039868 ; =sub_02039DE4 - mov r1, #0 - bl sub_020381C0 - pop {r4, pc} -_02039854: - add r0, r4, #0 - bl ov45_0222F350 - ldr r0, _02039868 ; =sub_02039DE4 - mov r1, #0 - bl sub_020381C0 - pop {r4, pc} - .balign 4, 0 -_02039864: .word _021D4150 -_02039868: .word sub_02039DE4 - thumb_func_end sub_0203981C - - thumb_func_start sub_0203986C -sub_0203986C: ; 0x0203986C - push {r3, lr} - bl ov45_0222F464 - cmp r0, #1 - bne _0203987A - bl ov45_0222F154 -_0203987A: - bl ov45_0222F70C - ldr r0, _02039888 ; =sub_02039E30 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02039888: .word sub_02039E30 - thumb_func_end sub_0203986C - - thumb_func_start sub_0203988C -sub_0203988C: ; 0x0203988C - ldr r0, _020398B8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020398B4 - ldr r1, [r0, #0x24] - ldr r0, _020398BC ; =sub_02039DC4 - cmp r1, r0 - bne _020398A0 - mov r0, #2 - bx lr -_020398A0: - ldr r0, _020398C0 ; =sub_02039DE4 - cmp r1, r0 - bne _020398AA - mov r0, #1 - bx lr -_020398AA: - ldr r0, _020398C4 ; =sub_02039E30 - cmp r1, r0 - bne _020398B4 - mov r0, #3 - bx lr -_020398B4: - mov r0, #0 - bx lr - .balign 4, 0 -_020398B8: .word _021D4150 -_020398BC: .word sub_02039DC4 -_020398C0: .word sub_02039DE4 -_020398C4: .word sub_02039E30 - thumb_func_end sub_0203988C - - thumb_func_start sub_020398C8 -sub_020398C8: ; 0x020398C8 - ldr r0, _020398D0 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0] - bx lr - .balign 4, 0 -_020398D0: .word _021D4150 - thumb_func_end sub_020398C8 - - thumb_func_start sub_020398D4 -sub_020398D4: ; 0x020398D4 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02039914 ; =_021D4150 - ldr r2, [r0] - cmp r2, #0 - beq _02039904 - add r2, #0x53 - strb r4, [r2] - ldr r2, [r0] - add r2, #0x54 - strb r1, [r2] - cmp r4, #0 - beq _020398FC - bl sub_02037454 - ldr r1, _02039914 ; =_021D4150 - ldr r1, [r1] - add r1, #0x4b - strb r0, [r1] - b _02039904 -_020398FC: - ldr r0, [r0] - mov r1, #0 - add r0, #0x4b - strb r1, [r0] -_02039904: - add r0, r4, #0 - bl sub_020356C0 - add r0, r4, #0 - bl sub_020356EC - pop {r4, pc} - nop -_02039914: .word _021D4150 - thumb_func_end sub_020398D4 - - thumb_func_start sub_02039918 -sub_02039918: ; 0x02039918 - ldr r0, _02039938 ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _02039934 - add r0, r1, #0 - add r0, #0x5d - ldrb r0, [r0] - cmp r0, #0 - beq _0203992E - mov r0, #1 - bx lr -_0203992E: - add r1, #0x54 - ldrb r0, [r1] - bx lr -_02039934: - mov r0, #0 - bx lr - .balign 4, 0 -_02039938: .word _021D4150 - thumb_func_end sub_02039918 - - thumb_func_start sub_0203993C -sub_0203993C: ; 0x0203993C - ldr r0, _02039950 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203994A - add r0, #0x4e - ldrb r0, [r0] - bx lr -_0203994A: - mov r0, #1 - bx lr - nop -_02039950: .word _021D4150 - thumb_func_end sub_0203993C - - thumb_func_start sub_02039954 -sub_02039954: ; 0x02039954 - ldr r0, _02039968 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02039962 - add r0, #0x4f - ldrb r0, [r0] - bx lr -_02039962: - mov r0, #0 - bx lr - nop -_02039968: .word _021D4150 - thumb_func_end sub_02039954 - - thumb_func_start sub_0203996C -sub_0203996C: ; 0x0203996C - ldr r1, _02039978 ; =_021D4150 - ldr r3, _0203997C ; =MI_CpuCopy8 - ldr r1, [r1] - mov r2, #6 - add r1, r1, #4 - bx r3 - .balign 4, 0 -_02039978: .word _021D4150 -_0203997C: .word MI_CpuCopy8 - thumb_func_end sub_0203996C - - thumb_func_start sub_02039980 -sub_02039980: ; 0x02039980 - add r1, r0, #0 - ldr r0, _02039990 ; =_021D4150 - ldr r3, _02039994 ; =MI_CpuCopy8 - ldr r0, [r0] - mov r2, #6 - add r0, r0, #4 - bx r3 - nop -_02039990: .word _021D4150 -_02039994: .word MI_CpuCopy8 - thumb_func_end sub_02039980 - - thumb_func_start sub_02039998 -sub_02039998: ; 0x02039998 - push {r3, lr} - bl sub_0203993C - bl sub_02034044 - pop {r3, pc} - thumb_func_end sub_02039998 - diff --git a/include/overlay_00_thumb.h b/include/overlay_00_thumb.h index 008e63576..45cd7b691 100644 --- a/include/overlay_00_thumb.h +++ b/include/overlay_00_thumb.h @@ -29,5 +29,10 @@ int ov00_021E5E54(int arg0); void ov00_021E6CA4(void (*func)(u32)); void ov00_021E5900(SaveData* saveData, int arg1, int arg2, int arg3); void ov00_021E5C84(void (*func0)(), void (*func1)()); +s32 ov00_021E5B6C(void); +void ov00_021EC210(void); +int ov00_021EC11C(s32* arg0, s32* arg1); +s32 ov00_021E6690(void); +u32 ov00_021E6D7C(s32 arg0, s32 arg1, s32 arg2); #endif // POKEHEARTGOLD_OVERLAY_00_THUMB_H diff --git a/include/overlay_45_thumb.h b/include/overlay_45_thumb.h index 4e64f4a63..f7b9b97d1 100644 --- a/include/overlay_45_thumb.h +++ b/include/overlay_45_thumb.h @@ -7,5 +7,11 @@ int ov45_0222E944(void); void ov45_0222E91C(void); int ov45_0222E6C8(void); int ov45_0222E8F4(void); +void ov45_0222F154(void); +int ov45_0222F464(void); +void ov45_0222F350(int arg0); +void ov45_0222F028(int arg0, int arg1); +int ov45_0222F274(int arg0); +int ov45_0222E804(int arg0); #endif // POKEHEARTGOLD_OVERLAY_45_THUMB_H diff --git a/include/unk_02033AE0.h b/include/unk_02033AE0.h index 505643d5e..20e2c3ce4 100644 --- a/include/unk_02033AE0.h +++ b/include/unk_02033AE0.h @@ -10,5 +10,6 @@ u32 sub_020342C0(void); u32 sub_020342B8(void); u32 sub_02057A08(void); s32 sub_02033FC4(u8 arg0); +s32 sub_02034044(void); #endif // POKEHEARTGOLD_UNK_02033AE0_H diff --git a/include/unk_02034B0C.h b/include/unk_02034B0C.h index 36d48b972..651b11a55 100644 --- a/include/unk_02034B0C.h +++ b/include/unk_02034B0C.h @@ -6,5 +6,7 @@ BOOL sub_02035650(void); BOOL sub_02034DB8(void); BOOL sub_02034BE4(void); BOOL sub_02035630(void); +void sub_020356C0(int arg0); +void sub_020356EC(int arg0); #endif // POKEHEARTGOLD_UNK_02034B0C_H diff --git a/include/unk_02035900.h b/include/unk_02035900.h index c32aefdce..1a8094c87 100644 --- a/include/unk_02035900.h +++ b/include/unk_02035900.h @@ -24,5 +24,6 @@ void sub_02035FD8(void); int sub_02035ED8(int arg0, int arg1, int arg2, int arg3); void sub_02037988(void); int sub_02037700(void); +void sub_020376E0(int, u8*); #endif // POKEHEARTGOLD_UNK_02035900_H diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index 9d2eb32be..0f5f922ba 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -15,31 +15,57 @@ typedef struct { BOOL sub_02037D78(void); void sub_02037FF0(void); void sub_020380CC(void); -u32 *sub_020392D8(void); -BOOL sub_020393C8(void); -int sub_0203993C(void); -int sub_02039998(void); BOOL sub_02039AA4(void); BOOL sub_02038D90(void); -void sub_020398D4(int a0, int a1); void sub_02039358(void); -BOOL sub_020390C4(void); void sub_020378E4(int a0); -s32 sub_02039080(s32); -s32 sub_02039264(void); -UnkStruct_ov44_0223197C *sub_020398C8(void); -void sub_020393B4(void); -BOOL sub_02039274(void); void sub_02039330(void); -BOOL sub_020392A0(void); -UnkStruct_ov44_0223197C* sub_020396FC(SaveData*, int); -void sub_02039378(void); void sub_020381C0(void (*func)(), int a1); BOOL sub_02037D78(void); -BOOL sub_02039918(void); + +void sub_02038F74(u32 arg0, s32 arg1, s32 arg2); +void sub_02038F9C(void); +void sub_0203900C(void); +s32 sub_02039080(s32 arg0); +s32 sub_020390C4(void); +void sub_02039144(void); +void sub_020391D0(void); +void sub_02039220(void); +u8 sub_02039264(void); +BOOL sub_02039274(void); +BOOL sub_020392A0(void); +u32* sub_020392D8(void); +void sub_020392F4(void); +void sub_02039330(void); +void sub_02039358(void); +void sub_02039378(void); +void sub_020393B4(void); BOOL sub_020393C8(void); +void sub_02039418(SaveData* arg0); +void sub_0203946C(void); +void sub_020394A0(SaveData* arg0); +void sub_020394F4(void); +void sub_02039528(SaveData* arg0); +void sub_0203957C(void); BOOL sub_020395B0(void); +void sub_0203960C(void); +void sub_02039694(void); +UnkStruct_ov44_0223197C* sub_020396FC(SaveData* arg0, u32 arg1); +void sub_0203976C(SaveData* arg0, s32 arg1); +void sub_020397C8(void); +u8 sub_020397E4(void); BOOL sub_020397FC(void); +void sub_0203981C(s32 arg0); +void sub_0203986C(void); +s32 sub_0203988C(void); +UnkStruct_ov44_0223197C* sub_020398C8(void); +void sub_020398D4(s8 arg0, s8 arg1); +BOOL sub_02039918(void); +u8 sub_0203993C(void); +u8 sub_02039954(void); +void sub_0203996C(void* arg0); +void sub_02039980(void* arg0); +int sub_02039998(void); void sub_020399A4(s8 arg0); u8 sub_020399B8(void); @@ -83,10 +109,12 @@ s32 sub_0203A1C4(SaveData* arg0, s32* arg1, enum HeapID arg2); void sub_0203A280(SaveData* arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4); s32 sub_0203A378(SaveData* arg0, s32 arg1); -void sub_0203960C(void); void sub_02038E90(void); void sub_02038EB4(void); void sub_02038EB0(void); void sub_0203847C(void); +void sub_02038E94(void); +void sub_02038EB8(void); +void sub_02037C98(SaveData* saveData, int arg1); #endif // POKEHEARTGOLD_UNK_02037C94_H diff --git a/src/unk_02037C94_1.c b/src/unk_02037C94_1.c index a8a86eb03..36f6526cf 100644 --- a/src/unk_02037C94_1.c +++ b/src/unk_02037C94_1.c @@ -14,14 +14,14 @@ #include "communication_error.h" typedef struct UnkStruct_sub_02039C6C { - void* unk0; + UnkStruct_ov44_0223197C* unk0; u8 unk4[8]; MATHRandContext32 mathRandContext; void (*unk24)(); SaveData* unk28; PlayerProfile* unk2C; s32 unk30; - s32 unk34; + u32 unk34; s32 unk38; s32 unk3C; s32 unk40; @@ -53,6 +53,504 @@ typedef struct UnkStruct_sub_02039C6C { extern UnkStruct_sub_02039C6C* _021D4150; +void sub_02038F74(u32 arg0, s32 arg1, s32 arg2) { + if (_021D4150 != NULL) { + if (arg0 - 0x19 > 1) { + arg0 = -arg0; + } + _021D4150->unk34 = arg0; + _021D4150->unk38 = arg1; + _021D4150->unk3C = arg2; + } +} + +void sub_02038F9C(void) { + s32 temp_r0 = ov00_021E5E54(0); + if ((temp_r0 >= 0xA) && (temp_r0 < 0x14)) { + sub_020381C0(sub_02038EB4, 0); + } + else if (temp_r0 < 0) { + sub_020381C0(sub_02038E90, 0); + } + else if (temp_r0 == 0x14) { + sub_020381C0(sub_02038EB8, 0); + } + else if (temp_r0 == 0x15) { + sub_020381C0(sub_02038EB0, 0); + } + else if (temp_r0 == 0x16) { + sub_020381C0(sub_02038EB4, 0); + } + else if (temp_r0 == 0x18) { + sub_020381C0(sub_02038EB0, 0); + } +} + +void sub_0203900C(void) { + if (ov00_021E5E54(1) < 0) { + sub_020381C0(sub_02038E90, 0); + return; + } + u32 temp_r0 = ov00_021E6D7C(_021D4150->unk51, sub_02033FC4(_021D4150->unk4E) + 1, 0) + 3; + switch (temp_r0) { + case 3: + sub_0203622C(); + sub_020381C0(sub_02038F9C, 0); + return; + case 0: + sub_020381C0(sub_02038E90, 0); + case 1: + case 2: + return; + } +} + +s32 sub_02039080(s32 arg0) { + if (_021D4150->unk24 != sub_02038F9C) { + return 0; + } + ov00_021E5C84(&sub_02036904, &sub_020367A8); + _021D4150->unk51 = arg0; + sub_020381C0(sub_0203900C, 0); + return 1; +} + +s32 sub_020390C4(void) { + if (_021D4150->unk24 == sub_02038F9C) { + return 0; + } + if (_021D4150->unk24 == sub_02038EB8) { + return 1; + } + if (_021D4150->unk24 == &sub_02038E94) { + return 3; + } + if (_021D4150->unk24 == sub_02038EB0) { + return 4; + } + if (_021D4150->unk24 == sub_02038EB4) { + return 5; + } + if (_021D4150->unk24 == sub_02039DE4) { + return 0; + } + if (_021D4150->unk24 == sub_02039DC4) { + return 1; + } + if (_021D4150->unk24 == sub_02039E7C) { + return 3; + } + return 2; +} + +void sub_02039144(void) { + ov00_021E5C84(&sub_02036904, &sub_020367A8); + switch (ov00_021E6D7C(-1, 4, 1) + 4) { + case 4: + _021D4150->unk5C = 0; + sub_0203622C(); + sub_020381C0(sub_02038F9C, 0); + break; + case 1: + sub_020381C0(sub_02038E90, 0); + break; + case 0: + return; + case 2: + break; + } + s32 temp_r0_2 = ov00_021E6690(); + if (temp_r0_2 < 0) { + sub_020381C0(sub_02038E90, 0); + } + else if (temp_r0_2 == 0x1A) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_020391D0(void) { + sub_0203786C(0); + if ((ov00_021E6BE4(_021D4150->unk50) != 0) && (ov00_021E6C68() != 0)) { + sub_020343E4(); + sub_020381C0(sub_02039144, 0); + } + else if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_02039220(void) { + if (sub_0203769C() == 0) { + _021D4150->unk50 = 0; + sub_020381C0(sub_020391D0, 0); + } else { + _021D4150->unk50 = 1; + sub_020381C0(sub_020391D0, 0); + } + _021D4150->unk5C = 1; +} + +u8 sub_02039264(void) { + return _021D4150->unk5C; +} + +BOOL sub_02039274(void) { + if (_021D4150->unk24 == sub_02039144) { + return TRUE; + } + if (_021D4150->unk24 == sub_02039C60) { + return TRUE; + } + return FALSE; +} + +BOOL sub_020392A0(void) { + if (_021D4150->unk24 == sub_02038F9C) { + return TRUE; + } + if (_021D4150->unk24 == sub_02039144) { + return TRUE; + } + if (_021D4150->unk24 == sub_02039C60) { + return TRUE; + } + return FALSE; +} + +u32* sub_020392D8(void) { + GF_ASSERT(_021D4150); + return &_021D4150->unk34; +} + +void sub_020392F4(void) { + sub_0203786C(0); + if (ov00_021E6BE4(0U) != 0) { + ov00_021E6C68(); + sub_020381C0(sub_0203847C, 0); + } + if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_02039330(void) { + if (_021D4150 != NULL) { + sub_0201A738(1); + sub_020343E4(); + sub_020381C0(sub_0203847C, 5); + } +} + +void sub_02039358(void) { + if (_021D4150 != NULL) { + _021D4150->unk50 = 0; + sub_020381C0(sub_020391D0, 0); + } +} + +void sub_02039378(void) { + if (_021D4150 != NULL) { + sub_020398D4(0, 1); + if (sub_0203769C() == 0) { + _021D4150->unk50 = 0; + } else { + _021D4150->unk50 = 1; + } + sub_020381C0(sub_020391D0, 0); + } +} + +void sub_020393B4(void) { + u8 r1 = sub_0203769C(); + sub_020376E0(0x15, &r1); +} + +BOOL sub_020393C8(void) { + if (_021D4150 != NULL) { + void (*func)() = _021D4150->unk24; + if (func == sub_02038E90) { + return TRUE; + } + if ((func == sub_02038E94) && (_021D4150->unk53 != 0)) { + return TRUE; + } + if ((func == sub_02039E7C) && (_021D4150->unk53 != 0)) { + return TRUE; + } + } + return FALSE; +} + +void sub_02039418(SaveData* arg0) { + if (_021D4150 == NULL) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); + UnkStruct_sub_02039C6C* temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + _021D4150 = temp_r0; + MI_CpuFill8(temp_r0, 0U, 0x68U); + _021D4150->unk4E = 0x18; + _021D4150->unk55 = 1; + _021D4150->unk28 = arg0; + sub_020398D4(0, 1); + sub_0201A728(1); + } +} + +void sub_0203946C(void) { + if (_021D4150 != NULL) { + sub_0201A738(1); + sub_020398D4(0, 0); + Heap_Free(_021D4150); + _021D4150 = NULL; + Heap_Destroy(HEAP_ID_15); + } +} + +void sub_020394A0(SaveData* arg0) { + + if (_021D4150 == NULL) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); + UnkStruct_sub_02039C6C* temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + _021D4150 = temp_r0; + MI_CpuFill8(temp_r0, 0U, 0x68U); + _021D4150->unk4E = 0x19; + _021D4150->unk55 = 1; + _021D4150->unk28 = arg0; + sub_020398D4(0, 1); + sub_0201A728(1); + } +} + +void sub_020394F4(void) { + if (_021D4150 != NULL) { + sub_0201A738(1); + sub_020398D4(0, 0); + Heap_Free(_021D4150); + _021D4150 = NULL; + Heap_Destroy(HEAP_ID_15); + } +} + +void sub_02039528(SaveData* arg0) { + if (_021D4150 == NULL) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); + UnkStruct_sub_02039C6C* temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + _021D4150 = temp_r0; + MI_CpuFill8(temp_r0, 0U, 0x68U); + _021D4150->unk4E = 0x24; + _021D4150->unk55 = 1; + _021D4150->unk28 = arg0; + sub_020398D4(0, 1); + sub_0201A728(1); + } +} + +void sub_0203957C(void) { + if (_021D4150 != NULL) { + sub_0201A738(1); + sub_020398D4(0, 0); + Heap_Free(_021D4150); + _021D4150 = NULL; + Heap_Destroy(HEAP_ID_15); + } +} + +BOOL sub_020395B0(void) { + if (_021D4150 == NULL) { + return FALSE; + } + s32 sp4; + s32 sp0; + if (_021D4150->unk4E == 24 || _021D4150->unk4E == 36) { + if (ov00_021EC11C(&sp4, &sp0) != 0) { + ov00_021EC210(); + return TRUE; + } + } + else if ((_021D4150->unk4E == 25) && (ov00_021EC11C(&sp4, &sp0) != 0) && (sp0 == 7)) { + return TRUE; + } + return FALSE; +} + +void sub_0203960C(void) { + s32 temp_r0 = ov00_021E5B6C(); + _021D4150->unk44--; + if (temp_r0 == 0x1B) { + if (_021D4150->unk4E == 0x21) { + if (ov45_0222E804(_021D4150->unk60) == 1) { + _021D4150->unk64 = 1; + sub_020381C0(sub_02039C14, _021D4150->unk44); + } else { + sub_020381C0(sub_02039DC0, 0); + } + } else { + sub_020381C0(sub_02039144, 0); + } + } + else { + if (temp_r0 != 0) { + sub_020381C0(sub_02038E90, 0); + } + if (_021D4150->unk44 <= 0) { + sub_020381C0(sub_02038E90, 0); + } + } + +} + +void sub_02039694(void) { + if (sub_02034DB8() != 0) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x35400U); + if (sub_02035ED8(1, 1, 0x200, 1) != 0) { + ov00_021E5900(_021D4150->unk28, 0x30, 0x2C400, sub_02033FC4(_021D4150->unk4E) + 1); + ov00_021E6CA4(sub_020399DC); + sub_02035FD8(); + sub_020381C0(sub_0203960C, 0xE10); + } + } +} + +UnkStruct_ov44_0223197C* sub_020396FC(SaveData* arg0, u32 arg1) { + Save_PlayerData_GetProfile(arg0); + if (sub_02037474() != 0) { + return NULL; + } + sub_0201A728(1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); + sub_02037C98(arg0, 0x17); + _021D4150->unk0 = Heap_Alloc(HEAP_ID_15, arg1); + MI_CpuFill8(_021D4150->unk0, 0, arg1); + _021D4150->unk4F = 0; + _021D4150->unk28 = arg0; + sub_020381C0(sub_02039694, 0); + return _021D4150->unk0; +} + +void sub_0203976C(SaveData* arg0, s32 arg1) { + Save_PlayerData_GetProfile(arg0); + if (sub_02037474() == 0) { + sub_0201A728(1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080); + sub_02037C98(arg0, 0x21); + _021D4150->unk0 = NULL; + _021D4150->unk60 = arg1; + _021D4150->unk64 = 0; + _021D4150->unk4F = 0; + _021D4150->unk28 = arg0; + sub_020381C0(sub_02039BA0, 0); + } +} + +void sub_020397C8(void) { + if (_021D4150 != NULL) { + sub_020381C0(sub_02039D78, 0); + } +} + +u8 sub_020397E4(void) { + if (_021D4150 == NULL) { + return 0; + } + return _021D4150->unk64; +} + +BOOL sub_020397FC(void) { + if ((_021D4150 != NULL) && (_021D4150->unk24 == sub_02039DC0)) { + return TRUE; + } + return FALSE; +} + +void sub_0203981C(s32 arg0) { + GF_ASSERT(_021D4150); + GF_ASSERT(sub_020392A0() == 1); + if (ov45_0222F274(arg0) == 0) { + ov45_0222F028(arg0, 4); + sub_020381C0(sub_02039DE4, 0); + } else { + ov45_0222F350(arg0); + sub_020381C0(sub_02039DE4, 0); + } +} + +void sub_0203986C(void) { + if (ov45_0222F464() == 1) { + ov45_0222F154(); + } + ov45_0222F70C(); + sub_020381C0(sub_02039E30, 0); +} + +s32 sub_0203988C(void) { + if (_021D4150 != NULL) { + void* temp_r1 = _021D4150->unk24; + if (temp_r1 == sub_02039DC4) { + return 2; + } + if (temp_r1 == sub_02039DE4) { + return 1; + } + if (temp_r1 == sub_02039E30) { + return 3; + } + } + return 0; +} + +UnkStruct_ov44_0223197C* sub_020398C8(void) { + return _021D4150->unk0; +} + +void sub_020398D4(s8 arg0, s8 arg1) { + if (_021D4150 != NULL) { + _021D4150->unk53 = arg0; + _021D4150->unk54 = arg1; + if (arg0 != 0) { + _021D4150->unk4B = sub_02037454(); + } else { + _021D4150->unk4B = 0; + } + } + sub_020356C0(arg0); + sub_020356EC(arg0); +} + +BOOL sub_02039918(void) { + if (_021D4150 != NULL) { + if (_021D4150->unk5D != 0) { + return TRUE; + } + return _021D4150->unk54; + } + return FALSE; +} + +u8 sub_0203993C(void) { + if (_021D4150 != NULL) { + return _021D4150->unk4E; + } + return 1; +} + +u8 sub_02039954(void) { + if (_021D4150 != NULL) { + return _021D4150->unk4F; + } + return 0; +} + +void sub_0203996C(void* arg0) { + MI_CpuCopy8(arg0, &_021D4150->unk4, 6); +} + +void sub_02039980(void* arg0) { + MI_CpuCopy8(&_021D4150->unk4, arg0, 6); +} + +int sub_02039998(void) { + sub_0203993C(); + return sub_02034044(); +} void sub_020399A4(s8 arg0) { if (_021D4150) { From 86237ba691865a603eb1baed3d9735e731dd2f23 Mon Sep 17 00:00:00 2001 From: ferwardle Date: Thu, 2 Jul 2026 15:06:54 -0500 Subject: [PATCH 3/7] Decomp unk_02037C94/3 + format --- asm/include/unk_02037C94.inc | 4 +- asm/unk_02037C94.s | 2538 +--------------------------------- include/overlay_00_thumb.h | 6 +- include/overlay_13_arm_2.h | 1 + include/unk_02032844.h | 5 + include/unk_02033AE0.h | 1 + include/unk_02034B0C.h | 8 + include/unk_02035900.h | 14 +- include/unk_02037C94.h | 154 ++- include/unk_0203A3B0.h | 2 + src/unk_02037C94_1.c | 1073 ++++++++++++-- 11 files changed, 1137 insertions(+), 2669 deletions(-) diff --git a/asm/include/unk_02037C94.inc b/asm/include/unk_02037C94.inc index c5c63acbb..f9585ece8 100644 --- a/asm/include/unk_02037C94.inc +++ b/asm/include/unk_02037C94.inc @@ -253,4 +253,6 @@ .public sub_02039DC0 .public sub_02039BA0 .public sub_02039E30 -.public sub_020392F4 \ No newline at end of file +.public sub_020392F4 +.public sub_0203827C +.public sub_02038398 \ No newline at end of file diff --git a/asm/unk_02037C94.s b/asm/unk_02037C94.s index b7204dfab..54c86712b 100644 --- a/asm/unk_02037C94.s +++ b/asm/unk_02037C94.s @@ -10,6 +10,7 @@ _021D4150: .rodata +.public _020F6A90 _020F6A90: .word sub_0203827C .word sub_02038398 @@ -18,2548 +19,17 @@ _020F6A90: .data .balign 4, 0 +.public _0210F904 _0210F904: .asciz " GAME" .balign 4, 0 +.public _0210F90C _0210F90C: .asciz "FREAK" .balign 4, 0 +.public _0210F914 _0210F914: .asciz " FULL" .text - thumb_func_start sub_02037C94 -sub_02037C94: ; 0x02037C94 - mov r0, #0x46 - bx lr - thumb_func_end sub_02037C94 - - thumb_func_start sub_02037C98 -sub_02037C98: ; 0x02037C98 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, _02037D28 ; =_021D4150 - add r4, r1, #0 - ldr r0, [r0] - cmp r0, #0 - bne _02037D24 - cmp r5, #0 - bne _02037CAE - bl GF_AssertFail -_02037CAE: - bl sub_02034D8C - mov r0, #0xf - mov r1, #0x68 - bl Heap_Alloc - ldr r1, _02037D28 ; =_021D4150 - mov r2, #0x68 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _02037D28 ; =_021D4150 - mov r2, #0x32 - ldr r1, [r0] - str r2, [r1, #0x44] - ldr r1, [r0] - mov r2, #1 - add r1, #0x52 - strb r2, [r1] - ldr r0, [r0] - str r5, [r0, #0x28] - add r0, r5, #0 - bl Save_PlayerData_GetProfile - ldr r1, _02037D28 ; =_021D4150 - ldr r2, [r1] - str r0, [r2, #0x2c] - ldr r0, [r1] - mov r2, #2 - add r0, #0x4a - strb r2, [r0] - ldr r0, [r1] - mov r2, #0 - add r0, #0x4c - strb r2, [r0] - ldr r0, [r1] - add r0, #0x57 - strb r2, [r0] - ldr r0, [r1] - add r0, #0x4e - strb r4, [r0] - ldr r0, [r1] - add r0, #0xc - bl sub_0203778C - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - bl sub_0203410C - cmp r4, #9 - beq _02037D24 - cmp r4, #0x11 - beq _02037D24 - cmp r4, #0xf - beq _02037D24 - bl sub_0203A880 -_02037D24: - pop {r3, r4, r5, pc} - nop -_02037D28: .word _021D4150 - thumb_func_end sub_02037C98 - - thumb_func_start sub_02037D2C -sub_02037D2C: ; 0x02037D2C - push {r3, lr} - ldr r0, _02037D74 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02037D72 - bl sub_02034154 - ldr r0, _02037D74 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0 - beq _02037D48 - bl Heap_Free -_02037D48: - bl sub_02039998 - cmp r0, #0 - beq _02037D56 - mov r0, #0x30 - bl Heap_Destroy -_02037D56: - bl sub_0203A914 - bl sub_02034DE0 - ldr r0, _02037D74 ; =_021D4150 - ldr r0, [r0] - bl Heap_Free - mov r0, #0xf - bl Heap_Destroy - ldr r0, _02037D74 ; =_021D4150 - mov r1, #0 - str r1, [r0] -_02037D72: - pop {r3, pc} - .balign 4, 0 -_02037D74: .word _021D4150 - thumb_func_end sub_02037D2C - - thumb_func_start sub_02037D78 -sub_02037D78: ; 0x02037D78 - ldr r0, _02037D88 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02037D84 - mov r0, #1 - bx lr -_02037D84: - mov r0, #0 - bx lr - .balign 4, 0 -_02037D88: .word _021D4150 - thumb_func_end sub_02037D78 - - thumb_func_start sub_02037D8C -sub_02037D8C: ; 0x02037D8C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - add r5, r2, #0 - add r4, r3, #0 - bl sub_02037474 - cmp r0, #0 - bne _02037DC4 - ldr r2, _02037DC8 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r6, #0 - add r1, r7, #0 - bl sub_02037C98 - ldr r0, _02037DCC ; =_021D4150 - ldr r1, [r0] - add r1, #0x4f - strb r5, [r1] - ldr r0, [r0] - mov r1, #0 - str r4, [r0, #0x30] - ldr r0, _02037DD0 ; =sub_02038218 - bl sub_020381C0 -_02037DC4: - pop {r3, r4, r5, r6, r7, pc} - nop -_02037DC8: .word 0x00007080 -_02037DCC: .word _021D4150 -_02037DD0: .word sub_02038218 - thumb_func_end sub_02037D8C - - thumb_func_start sub_02037DD4 -sub_02037DD4: ; 0x02037DD4 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r7, r1, #0 - add r5, r2, #0 - add r4, r3, #0 - bl sub_02037474 - cmp r0, #0 - bne _02037E0C - ldr r2, _02037E10 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r6, #0 - add r1, r7, #0 - bl sub_02037C98 - ldr r0, _02037E14 ; =_021D4150 - ldr r1, [r0] - add r1, #0x4f - strb r5, [r1] - ldr r0, [r0] - mov r1, #0 - str r4, [r0, #0x30] - ldr r0, _02037E18 ; =sub_02038294 - bl sub_020381C0 -_02037E0C: - pop {r3, r4, r5, r6, r7, pc} - nop -_02037E10: .word 0x00007080 -_02037E14: .word _021D4150 -_02037E18: .word sub_02038294 - thumb_func_end sub_02037DD4 - - thumb_func_start sub_02037E1C -sub_02037E1C: ; 0x02037E1C - ldr r1, _02037E2C ; =_021D4150 - ldr r3, _02037E30 ; =sub_020381C0 - ldr r1, [r1] - add r1, #0x4d - strb r0, [r1] - ldr r0, _02037E34 ; =sub_020382E4 - mov r1, #0 - bx r3 - .balign 4, 0 -_02037E2C: .word _021D4150 -_02037E30: .word sub_020381C0 -_02037E34: .word sub_020382E4 - thumb_func_end sub_02037E1C - - thumb_func_start sub_02037E38 -sub_02037E38: ; 0x02037E38 - push {r3, lr} - bl sub_02036274 - ldr r0, _02037E48 ; =sub_020383B0 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02037E48: .word sub_020383B0 - thumb_func_end sub_02037E38 - - thumb_func_start sub_02037E4C -sub_02037E4C: ; 0x02037E4C - push {r3, lr} - ldr r0, _02037E94 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x40] - cmp r0, #0 - ble _02037E5E - sub r0, r0, #1 - str r0, [r1, #0x40] - b _02037E64 -_02037E5E: - bne _02037E64 - bl sub_020399EC -_02037E64: - ldr r0, _02037E94 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _02037E72 - sub r0, r0, #1 - str r0, [r1, #0x44] -_02037E72: - bl sub_02034FE8 - cmp r0, #0 - beq _02037E90 - ldr r0, _02037E94 ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bne _02037E90 - bl sub_02036024 - ldr r0, _02037E98 ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_02037E90: - pop {r3, pc} - nop -_02037E94: .word _021D4150 -_02037E98: .word sub_02038408 - thumb_func_end sub_02037E4C - - thumb_func_start sub_02037E9C -sub_02037E9C: ; 0x02037E9C - push {r3, lr} - ldr r0, _02037EB4 ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _02037EB2 - ldr r0, _02037EB8 ; =0x00000708 - str r0, [r1, #0x40] - ldr r0, _02037EBC ; =sub_02037E4C - mov r1, #5 - bl sub_020381C0 -_02037EB2: - pop {r3, pc} - .balign 4, 0 -_02037EB4: .word _021D4150 -_02037EB8: .word 0x00000708 -_02037EBC: .word sub_02037E4C - thumb_func_end sub_02037E9C - - thumb_func_start sub_02037EC0 -sub_02037EC0: ; 0x02037EC0 - ldr r3, _02037EC4 ; =sub_02033A0C - bx r3 - .balign 4, 0 -_02037EC4: .word sub_02033A0C - thumb_func_end sub_02037EC0 - - thumb_func_start sub_02037EC8 -sub_02037EC8: ; 0x02037EC8 - push {r4} - sub sp, #0xc - ldr r4, _02037F10 ; =_020F6A90 - add r3, sp, #0 - ldmia r4!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r4] - str r0, [r3] - ldr r0, _02037F14 ; =_021D4150 - ldr r0, [r0] - ldr r1, [r0, #0x24] - cmp r0, #0 - bne _02037EEC - add sp, #0xc - mov r0, #0 - pop {r4} - bx lr -_02037EEC: - ldr r0, [sp] - cmp r0, #0 - beq _02037F08 -_02037EF2: - ldr r0, [r2] - cmp r1, r0 - bne _02037F00 - add sp, #0xc - mov r0, #1 - pop {r4} - bx lr -_02037F00: - add r2, r2, #4 - ldr r0, [r2] - cmp r0, #0 - bne _02037EF2 -_02037F08: - mov r0, #0 - add sp, #0xc - pop {r4} - bx lr - .balign 4, 0 -_02037F10: .word _020F6A90 -_02037F14: .word _021D4150 - thumb_func_end sub_02037EC8 - - thumb_func_start sub_02037F18 -sub_02037F18: ; 0x02037F18 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02037F58 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02037F56 - ldr r2, _02037F5C ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - cmp r0, #0 - bne _02037F36 - bl sub_020399EC -_02037F36: - add r0, r4, #0 - mov r1, #9 - bl sub_02037C98 - ldr r0, _02037F58 ; =_021D4150 - mov r2, #9 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r0, [r0] - mov r1, #0 - add r0, #0x4f - strb r1, [r0] - ldr r0, _02037F60 ; =sub_020384B4 - bl sub_020381C0 -_02037F56: - pop {r4, pc} - .balign 4, 0 -_02037F58: .word _021D4150 -_02037F5C: .word 0x00007080 -_02037F60: .word sub_020384B4 - thumb_func_end sub_02037F18 - - thumb_func_start sub_02037F64 -sub_02037F64: ; 0x02037F64 - push {r3, lr} - ldr r1, _02037F8C ; =_021D4150 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - mov r0, #1 - bl sub_02033AA4 - bl sub_0203A880 - ldr r0, _02037F90 ; =sub_02038668 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - nop -_02037F8C: .word _021D4150 -_02037F90: .word sub_02038668 - thumb_func_end sub_02037F64 - - thumb_func_start sub_02037F94 -sub_02037F94: ; 0x02037F94 - ldr r0, _02037FC0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02037FA2 - mov r0, #0 - mvn r0, r0 - bx lr -_02037FA2: - ldr r1, [r0, #0x24] - ldr r0, _02037FC4 ; =sub_020387E8 - cmp r1, r0 - bne _02037FAE - mov r0, #1 - bx lr -_02037FAE: - ldr r0, _02037FC8 ; =sub_02038800 - cmp r1, r0 - bne _02037FB8 - mov r0, #1 - b _02037FBA -_02037FB8: - mov r0, #0 -_02037FBA: - neg r0, r0 - bx lr - nop -_02037FC0: .word _021D4150 -_02037FC4: .word sub_020387E8 -_02037FC8: .word sub_02038800 - thumb_func_end sub_02037F94 - - thumb_func_start sub_02037FCC -sub_02037FCC: ; 0x02037FCC - ldr r0, _02037FE8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02037FD8 - mov r0, #0 - bx lr -_02037FD8: - ldr r1, [r0, #0x24] - ldr r0, _02037FEC ; =sub_02038854 - cmp r1, r0 - bne _02037FE4 - mov r0, #1 - bx lr -_02037FE4: - mov r0, #0 - bx lr - .balign 4, 0 -_02037FE8: .word _021D4150 -_02037FEC: .word sub_02038854 - thumb_func_end sub_02037FCC - - thumb_func_start sub_02037FF0 -sub_02037FF0: ; 0x02037FF0 - push {r3, lr} - mov r0, #0 - bl sub_02033AA4 - ldr r0, _02038064 ; =_021D4150 - ldr r1, [r0] - add r0, r1, #0 - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #1 - bne _02038018 - add r0, r1, #0 - add r0, #0x54 - ldrb r0, [r0] - cmp r0, #1 - bne _02038018 - add r1, #0x4e - ldrb r0, [r1] - cmp r0, #9 - bne _02038020 -_02038018: - mov r0, #0 - add r1, r0, #0 - bl sub_020398D4 -_02038020: - bl sub_0203A914 - ldr r0, _02038064 ; =_021D4150 - mov r2, #9 - ldr r1, [r0] - add r1, #0x4e - strb r2, [r1] - ldr r1, [r0] - mov r2, #0 - add r1, #0x57 - strb r2, [r1] - ldr r0, [r0] - add r0, #0x4a - ldrb r0, [r0] - bl sub_02033908 - bl sub_0203769C - cmp r0, #0 - bne _02038058 - mov r0, #1 - bl sub_02033ACC - ldr r0, _02038068 ; =sub_02038418 - mov r1, #0xf - bl sub_020381C0 - pop {r3, pc} -_02038058: - ldr r0, _0203806C ; =sub_02038460 - mov r1, #5 - bl sub_020381C0 - pop {r3, pc} - nop -_02038064: .word _021D4150 -_02038068: .word sub_02038418 -_0203806C: .word sub_02038460 - thumb_func_end sub_02037FF0 - - thumb_func_start sub_02038070 -sub_02038070: ; 0x02038070 - ldr r0, _0203808C ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _0203807C - mov r0, #1 - bx lr -_0203807C: - ldr r1, [r0, #0x24] - ldr r0, _02038090 ; =sub_02038538 - cmp r1, r0 - beq _02038088 - mov r0, #1 - bx lr -_02038088: - mov r0, #0 - bx lr - .balign 4, 0 -_0203808C: .word _021D4150 -_02038090: .word sub_02038538 - thumb_func_end sub_02038070 - - thumb_func_start sub_02038094 -sub_02038094: ; 0x02038094 - push {r3, lr} - ldr r0, _020380A8 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _020380A6 - ldr r0, _020380AC ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 -_020380A6: - pop {r3, pc} - .balign 4, 0 -_020380A8: .word _021D4150 -_020380AC: .word sub_0203847C - thumb_func_end sub_02038094 - - thumb_func_start sub_020380B0 -sub_020380B0: ; 0x020380B0 - push {r3, lr} - ldr r0, _020380C8 ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _020380C4 - mov r0, #1 - add r1, #0x57 - strb r0, [r1] - bl sub_02033AA4 -_020380C4: - pop {r3, pc} - nop -_020380C8: .word _021D4150 - thumb_func_end sub_020380B0 - - thumb_func_start sub_020380CC -sub_020380CC: ; 0x020380CC - push {r3, lr} - ldr r0, _020380EC ; =_021D4150 - ldr r1, [r0] - cmp r1, #0 - beq _020380E8 - mov r0, #1 - add r1, #0x57 - strb r0, [r1] - bl sub_02033AA4 - ldr r0, _020380F0 ; =sub_020388A8 - mov r1, #0 - bl sub_020381C0 -_020380E8: - pop {r3, pc} - nop -_020380EC: .word _021D4150 -_020380F0: .word sub_020388A8 - thumb_func_end sub_020380CC - - thumb_func_start sub_020380F4 -sub_020380F4: ; 0x020380F4 - ldr r0, _02038100 ; =_021D4150 - mov r1, #0x12 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038100: .word _021D4150 - thumb_func_end sub_020380F4 - - thumb_func_start sub_02038104 -sub_02038104: ; 0x02038104 - ldr r0, _02038110 ; =_021D4150 - mov r1, #9 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038110: .word _021D4150 - thumb_func_end sub_02038104 - - thumb_func_start sub_02038114 -sub_02038114: ; 0x02038114 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_02037474 - cmp r0, #0 - bne _0203813C - ldr r2, _02038140 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - add r1, r4, #0 - bl sub_02037C98 - ldr r0, _02038144 ; =sub_02038E00 - mov r1, #0 - bl sub_020381C0 -_0203813C: - pop {r3, r4, r5, pc} - nop -_02038140: .word 0x00007080 -_02038144: .word sub_02038E00 - thumb_func_end sub_02038114 - - thumb_func_start sub_02038148 -sub_02038148: ; 0x02038148 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_02037474 - cmp r0, #0 - bne _02038170 - ldr r2, _02038174 ; =0x00007080 - mov r0, #3 - mov r1, #0xf - bl Heap_CreateAtEnd - add r0, r5, #0 - add r1, r4, #0 - bl sub_02037C98 - ldr r0, _02038178 ; =sub_02038E48 - mov r1, #0 - bl sub_020381C0 -_02038170: - pop {r3, r4, r5, pc} - nop -_02038174: .word 0x00007080 -_02038178: .word sub_02038E48 - thumb_func_end sub_02038148 - - thumb_func_start sub_0203817C -sub_0203817C: ; 0x0203817C - push {r3, lr} - ldr r0, _020381BC ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _0203818E - ldr r0, [r0, #0x24] - cmp r0, #0 - beq _0203818E - blx r0 -_0203818E: - bl sub_02039998 - cmp r0, #0 - beq _020381A4 - bl ov00_021EC9D4 - mov r1, #3 - sub r0, r1, r0 - bl sub_0203A930 - pop {r3, pc} -_020381A4: - bl sub_02035650 - cmp r0, #0 - beq _020381B8 - bl WM_GetLinkLevel - mov r1, #3 - sub r0, r1, r0 - bl sub_0203A930 -_020381B8: - pop {r3, pc} - nop -_020381BC: .word _021D4150 - thumb_func_end sub_0203817C - - thumb_func_start sub_020381C0 -sub_020381C0: ; 0x020381C0 - ldr r2, _020381CC ; =_021D4150 - ldr r3, [r2] - str r0, [r3, #0x24] - ldr r0, [r2] - str r1, [r0, #0x44] - bx lr - .balign 4, 0 -_020381CC: .word _021D4150 - thumb_func_end sub_020381C0 - - thumb_func_start sub_020381D0 -sub_020381D0: ; 0x020381D0 - push {r3, lr} - bl sub_02039998 - cmp r0, #0 - bne _020381EC - bl sub_02035664 - cmp r0, #0 - beq _020381F4 - bl sub_020374E4 - mov r0, #1 - bl sub_020350A8 -_020381EC: - ldr r0, _020381F8 ; =sub_02038404 - mov r1, #0 - bl sub_020381C0 -_020381F4: - pop {r3, pc} - nop -_020381F8: .word sub_02038404 - thumb_func_end sub_020381D0 - - thumb_func_start sub_020381FC -sub_020381FC: ; 0x020381FC - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _02038212 - bl sub_0203622C - ldr r0, _02038214 ; =sub_020381D0 - mov r1, #0 - bl sub_020381C0 -_02038212: - pop {r3, pc} - .balign 4, 0 -_02038214: .word sub_020381D0 - thumb_func_end sub_020381FC - - thumb_func_start sub_02038218 -sub_02038218: ; 0x02038218 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038256 - ldr r0, _02038258 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038258 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x28] - ldr r1, [r1, #0x30] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _02038256 - bl sub_02035FD8 - ldr r0, _0203825C ; =sub_02038260 - mov r1, #0 - bl sub_020381C0 -_02038256: - pop {r3, pc} - .balign 4, 0 -_02038258: .word _021D4150 -_0203825C: .word sub_02038260 - thumb_func_end sub_02038218 - - thumb_func_start sub_02038260 -sub_02038260: ; 0x02038260 - push {r3, lr} - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _02038276 - ldr r0, _02038278 ; =sub_0203827C - mov r1, #0 - bl sub_020381C0 -_02038276: - pop {r3, pc} - .balign 4, 0 -_02038278: .word sub_0203827C - thumb_func_end sub_02038260 - - thumb_func_start sub_0203827C -sub_0203827C: ; 0x0203827C - push {r3, lr} - bl sub_02037474 - cmp r0, #0 - bne _0203828E - ldr r0, _02038290 ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_0203828E: - pop {r3, pc} - .balign 4, 0 -_02038290: .word sub_02038408 - thumb_func_end sub_0203827C - - thumb_func_start sub_02038294 -sub_02038294: ; 0x02038294 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _020382D0 - ldr r0, _020382D4 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _020382D4 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x28] - ldr r1, [r1, #0x30] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - bl sub_02035F14 - cmp r0, #0 - beq _020382D0 - bl sub_02035FD8 - ldr r0, _020382D8 ; =sub_020382DC - mov r1, #0 - bl sub_020381C0 -_020382D0: - pop {r3, pc} - nop -_020382D4: .word _021D4150 -_020382D8: .word sub_020382DC - thumb_func_end sub_02038294 - - thumb_func_start sub_020382DC -sub_020382DC: ; 0x020382DC - ldr r3, _020382E0 ; =sub_0203528C - bx r3 - .balign 4, 0 -_020382E0: .word sub_0203528C - thumb_func_end sub_020382DC - - thumb_func_start sub_020382E4 -sub_020382E4: ; 0x020382E4 - push {r3, lr} - bl sub_0203528C - ldr r0, _02038304 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020360E4 - cmp r0, #0 - beq _02038302 - ldr r0, _02038308 ; =sub_0203830C - mov r1, #0xa - bl sub_020381C0 -_02038302: - pop {r3, pc} - .balign 4, 0 -_02038304: .word _021D4150 -_02038308: .word sub_0203830C - thumb_func_end sub_020382E4 - - thumb_func_start sub_0203830C -sub_0203830C: ; 0x0203830C - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _0203831E - ldr r0, _0203833C ; =sub_02038344 - mov r1, #0 - bl sub_020381C0 -_0203831E: - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _0203833A - bl sub_0203769C - cmp r0, #0 - beq _0203833A - ldr r0, _02038340 ; =sub_02038398 - mov r1, #0 - bl sub_020381C0 -_0203833A: - pop {r3, pc} - .balign 4, 0 -_0203833C: .word sub_02038344 -_02038340: .word sub_02038398 - thumb_func_end sub_0203830C - - thumb_func_start sub_02038344 -sub_02038344: ; 0x02038344 - push {r3, lr} - bl sub_02034FE8 - ldr r0, _02038354 ; =sub_02038358 - mov r1, #2 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038354: .word sub_02038358 - thumb_func_end sub_02038344 - - thumb_func_start sub_02038358 -sub_02038358: ; 0x02038358 - push {r3, lr} - ldr r0, _02038390 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _0203836A - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_0203836A: - bl sub_02035664 - cmp r0, #0 - beq _0203838C - mov r1, #1 - mov r0, #0 - lsl r2, r1, #9 - bl sub_02035F14 - cmp r0, #0 - beq _0203838C - bl sub_02035FD8 - ldr r0, _02038394 ; =sub_020382E4 - mov r1, #0xa - bl sub_020381C0 -_0203838C: - pop {r3, pc} - nop -_02038390: .word _021D4150 -_02038394: .word sub_020382E4 - thumb_func_end sub_02038358 - - thumb_func_start sub_02038398 -sub_02038398: ; 0x02038398 - push {r3, lr} - bl sub_02037474 - cmp r0, #0 - bne _020383AA - ldr r0, _020383AC ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_020383AA: - pop {r3, pc} - .balign 4, 0 -_020383AC: .word sub_02038408 - thumb_func_end sub_02038398 - - thumb_func_start sub_020383B0 -sub_020383B0: ; 0x020383B0 - push {r3, lr} - bl sub_02034FE8 - ldr r0, _020383C0 ; =sub_020383C4 - mov r1, #2 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_020383C0: .word sub_020383C4 - thumb_func_end sub_020383B0 - - thumb_func_start sub_020383C4 -sub_020383C4: ; 0x020383C4 - push {r3, lr} - ldr r0, _020383FC ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020383D6 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020383D6: - bl sub_02035664 - cmp r0, #0 - beq _020383F8 - mov r1, #1 - mov r0, #0 - lsl r2, r1, #9 - bl sub_02035F14 - cmp r0, #0 - beq _020383F8 - bl sub_02035FD8 - ldr r0, _02038400 ; =sub_020382DC - mov r1, #0xa - bl sub_020381C0 -_020383F8: - pop {r3, pc} - nop -_020383FC: .word _021D4150 -_02038400: .word sub_020382DC - thumb_func_end sub_020383C4 - - thumb_func_start sub_02038404 -sub_02038404: ; 0x02038404 - bx lr - .balign 4, 0 - thumb_func_end sub_02038404 - - thumb_func_start sub_02038408 -sub_02038408: ; 0x02038408 - push {r3, lr} - bl sub_02037474 - cmp r0, #0 - bne _02038416 - bl sub_02037D2C -_02038416: - pop {r3, pc} - thumb_func_end sub_02038408 - - thumb_func_start sub_02038418 -sub_02038418: ; 0x02038418 - push {r3, lr} - bl sub_02037454 - cmp r0, #1 - bgt _02038434 - mov r0, #0 - bl sub_02033ACC - bl sub_0203624C - ldr r0, _02038458 ; =sub_02038538 - mov r1, #0 - bl sub_020381C0 -_02038434: - ldr r0, _0203845C ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _02038444 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_02038444: - mov r0, #0 - bl sub_02033ACC - bl sub_0203624C - ldr r0, _02038458 ; =sub_02038538 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038458: .word sub_02038538 -_0203845C: .word _021D4150 - thumb_func_end sub_02038418 - - thumb_func_start sub_02038460 -sub_02038460: ; 0x02038460 - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _02038476 - bl sub_0203622C - ldr r0, _02038478 ; =sub_02038538 - mov r1, #0 - bl sub_020381C0 -_02038476: - pop {r3, pc} - .balign 4, 0 -_02038478: .word sub_02038538 - thumb_func_end sub_02038460 - - thumb_func_start sub_0203847C -sub_0203847C: ; 0x0203847C - push {r3, lr} - ldr r0, _020384AC ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _0203848C - sub r0, r0, #1 - str r0, [r1, #0x44] -_0203848C: - bl sub_02034FE8 - cmp r0, #0 - beq _020384AA - ldr r0, _020384AC ; =_021D4150 - ldr r0, [r0] - ldr r0, [r0, #0x44] - cmp r0, #0 - bne _020384AA - bl sub_02036024 - ldr r0, _020384B0 ; =sub_02038408 - mov r1, #0 - bl sub_020381C0 -_020384AA: - pop {r3, pc} - .balign 4, 0 -_020384AC: .word _021D4150 -_020384B0: .word sub_02038408 - thumb_func_end sub_0203847C - - thumb_func_start sub_020384B4 -sub_020384B4: ; 0x020384B4 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _020384FC - ldr r0, _02038500 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038500 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4a - ldrb r0, [r0] - bl sub_02033908 - ldr r0, _02038500 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - bl sub_02035F14 - cmp r0, #0 - beq _020384FC - bl sub_02035FD8 - ldr r0, _02038504 ; =sub_02038508 - mov r1, #0x40 - bl sub_020381C0 -_020384FC: - pop {r3, pc} - nop -_02038500: .word _021D4150 -_02038504: .word sub_02038508 - thumb_func_end sub_020384B4 - - thumb_func_start sub_02038508 -sub_02038508: ; 0x02038508 - push {r3, lr} - bl sub_0203528C - ldr r0, _02038530 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _0203851E - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_0203851E: - bl sub_02034FE8 - cmp r0, #0 - beq _0203852E - ldr r0, _02038534 ; =sub_02038550 - mov r1, #0 - bl sub_020381C0 -_0203852E: - pop {r3, pc} - .balign 4, 0 -_02038530: .word _021D4150 -_02038534: .word sub_02038550 - thumb_func_end sub_02038508 - - thumb_func_start sub_02038538 -sub_02038538: ; 0x02038538 - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _0203854A - ldr r0, _0203854C ; =sub_02038550 - mov r1, #0 - bl sub_020381C0 -_0203854A: - pop {r3, pc} - .balign 4, 0 -_0203854C: .word sub_02038550 - thumb_func_end sub_02038538 - - thumb_func_start sub_02038550 -sub_02038550: ; 0x02038550 - push {r3, r4, r5, lr} - bl sub_02035664 - cmp r0, #0 - beq _020385A8 - ldr r1, _020385AC ; =_021D4150 - mov r2, #2 - ldr r1, [r1] - mov r0, #0 - add r1, #0x52 - ldrb r1, [r1] - lsl r2, r2, #8 - mov r3, #1 - bl sub_02035ED8 - cmp r0, #0 - beq _020385A8 - ldr r0, _020385AC ; =_021D4150 - ldr r4, [r0] - add r5, r4, #0 - add r5, #0xc - ldr r0, [r5, #8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - str r3, [r5, #4] - bl sub_02035FD8 - ldr r0, _020385AC ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x52 - strb r1, [r0] - ldr r0, _020385B0 ; =sub_020385B8 - ldr r1, _020385B4 ; =0x00002710 - bl sub_020381C0 -_020385A8: - pop {r3, r4, r5, pc} - nop -_020385AC: .word _021D4150 -_020385B0: .word sub_020385B8 -_020385B4: .word 0x00002710 - thumb_func_end sub_02038550 - - thumb_func_start sub_020385B8 -sub_020385B8: ; 0x020385B8 - push {r3, lr} - bl sub_020358B0 - cmp r0, #0 - bne _020385F2 - bl sub_020376F8 - cmp r0, #0 - beq _020385E2 - ldr r0, _02038604 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x52 - strb r1, [r0] - bl sub_0203A880 - ldr r0, _02038608 ; =sub_02038854 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020385E2: - ldr r0, _02038604 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020385F2 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020385F2: - bl sub_02034FE8 - cmp r0, #0 - beq _02038602 - ldr r0, _0203860C ; =sub_02038610 - mov r1, #0 - bl sub_020381C0 -_02038602: - pop {r3, pc} - .balign 4, 0 -_02038604: .word _021D4150 -_02038608: .word sub_02038854 -_0203860C: .word sub_02038610 - thumb_func_end sub_020385B8 - - thumb_func_start sub_02038610 -sub_02038610: ; 0x02038610 - push {r3, r4, r5, lr} - bl sub_02035664 - cmp r0, #0 - beq _0203865C - mov r0, #0 - mov r2, #2 - add r1, r0, #0 - lsl r2, r2, #8 - bl sub_02035F14 - cmp r0, #0 - beq _0203865C - bl sub_02035FD8 - ldr r0, _02038660 ; =_021D4150 - ldr r4, [r0] - add r5, r4, #0 - add r5, #0xc - ldr r0, [r5, #8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - mov r1, #0 - ldr r0, _02038664 ; =sub_02038508 - lsr r2, r3, #0x1b - lsl r1, r1, #5 - orr r1, r2 - str r3, [r5, #4] - bl sub_020381C0 -_0203865C: - pop {r3, r4, r5, pc} - nop -_02038660: .word _021D4150 -_02038664: .word sub_02038508 - thumb_func_end sub_02038610 - - thumb_func_start sub_02038668 -sub_02038668: ; 0x02038668 - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _0203867A - ldr r0, _0203867C ; =sub_02038680 - mov r1, #0 - bl sub_020381C0 -_0203867A: - pop {r3, pc} - .balign 4, 0 -_0203867C: .word sub_02038680 - thumb_func_end sub_02038668 - - thumb_func_start sub_02038680 -sub_02038680: ; 0x02038680 - push {r3, lr} - bl sub_02035664 - cmp r0, #0 - beq _020386A6 - mov r0, #0 - mov r2, #2 - add r1, r0, #0 - lsl r2, r2, #8 - bl sub_02035F14 - cmp r0, #0 - beq _020386A6 - bl sub_02035FD8 - ldr r0, _020386A8 ; =sub_020386AC - mov r1, #0x64 - bl sub_020381C0 -_020386A6: - pop {r3, pc} - .balign 4, 0 -_020386A8: .word sub_020386AC - thumb_func_end sub_02038680 - - thumb_func_start sub_020386AC -sub_020386AC: ; 0x020386AC - push {r3, lr} - ldr r0, _02038704 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020351AC - cmp r0, #0 - beq _020386D8 - ldr r0, _02038704 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020360E4 - cmp r0, #0 - beq _020386D8 - ldr r0, _02038708 ; =sub_02038710 - mov r1, #0x64 - bl sub_020381C0 - pop {r3, pc} -_020386D8: - bl sub_02037700 - cmp r0, #0 - beq _020386EA - ldr r0, _0203870C ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020386EA: - ldr r0, _02038704 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020386FA - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020386FA: - ldr r0, _0203870C ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038704: .word _021D4150 -_02038708: .word sub_02038710 -_0203870C: .word sub_02038804 - thumb_func_end sub_020386AC - - thumb_func_start sub_02038710 -sub_02038710: ; 0x02038710 - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _02038724 - ldr r0, _02038760 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038724: - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _02038744 - ldr r0, _02038764 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] - ldr r0, _02038768 ; =sub_0203876C - mov r1, #0x78 - bl sub_020381C0 - pop {r3, pc} -_02038744: - ldr r0, _02038764 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _02038754 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_02038754: - ldr r0, _02038760 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - nop -_02038760: .word sub_02038804 -_02038764: .word _021D4150 -_02038768: .word sub_0203876C - thumb_func_end sub_02038710 - - thumb_func_start sub_0203876C -sub_0203876C: ; 0x0203876C - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _02038780 - ldr r0, _020387D4 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038780: - ldr r0, _020387D8 ; =_021D4150 - ldr r1, [r0] - add r0, r1, #0 - add r0, #0x4c - ldrb r0, [r0] - cmp r0, #2 - bne _02038798 - ldr r0, _020387DC ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038798: - cmp r0, #1 - bne _020387AA - bl sub_02034434 - ldr r0, _020387E0 ; =sub_020387E8 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_020387AA: - ldr r0, [r1, #0x44] - cmp r0, #0x6e - ble _020387B8 - ldr r1, _020387E4 ; =_0210F90C - mov r0, #6 - bl sub_020376E0 -_020387B8: - ldr r0, _020387D8 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - beq _020387C8 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_020387C8: - ldr r0, _020387D4 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - nop -_020387D4: .word sub_02038804 -_020387D8: .word _021D4150 -_020387DC: .word sub_02038800 -_020387E0: .word sub_020387E8 -_020387E4: .word _0210F90C - thumb_func_end sub_0203876C - - thumb_func_start sub_020387E8 -sub_020387E8: ; 0x020387E8 - push {r3, lr} - bl sub_02037700 - cmp r0, #0 - beq _020387FA - ldr r0, _020387FC ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 -_020387FA: - pop {r3, pc} - .balign 4, 0 -_020387FC: .word sub_02038804 - thumb_func_end sub_020387E8 - - thumb_func_start sub_02038800 -sub_02038800: ; 0x02038800 - bx lr - .balign 4, 0 - thumb_func_end sub_02038800 - - thumb_func_start sub_02038804 -sub_02038804: ; 0x02038804 - push {r3, lr} - ldr r0, _02038848 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] - bl sub_02034FE8 - cmp r0, #0 - beq _02038844 - ldr r0, _02038848 ; =_021D4150 - ldr r1, [r0] - add r0, r1, #0 - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - beq _0203883C - add r0, r1, #0 - add r0, #0x48 - ldrh r0, [r0] - add r1, #0x48 - sub r0, r0, #1 - strh r0, [r1] - ldr r0, _0203884C ; =sub_02038680 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_0203883C: - ldr r0, _02038850 ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 -_02038844: - pop {r3, pc} - nop -_02038848: .word _021D4150 -_0203884C: .word sub_02038680 -_02038850: .word sub_02038800 - thumb_func_end sub_02038804 - - thumb_func_start sub_02038854 -sub_02038854: ; 0x02038854 - push {r3, lr} - bl sub_020376F8 - cmp r0, #0 - bne _02038878 - bl sub_02039918 - cmp r0, #0 - bne _02038884 - bl sub_02034FE8 - cmp r0, #0 - beq _02038884 - ldr r0, _020388A0 ; =sub_02038610 - mov r1, #0 - bl sub_020381C0 - b _02038884 -_02038878: - bl sub_0203769C - cmp r0, #0 - bne _02038884 - bl sub_02034638 -_02038884: - bl sub_02037700 - cmp r0, #0 - beq _0203889C - bl sub_02039918 - cmp r0, #0 - bne _0203889C - ldr r0, _020388A4 ; =sub_02038804 - mov r1, #0 - bl sub_020381C0 -_0203889C: - pop {r3, pc} - nop -_020388A0: .word sub_02038610 -_020388A4: .word sub_02038804 - thumb_func_end sub_02038854 - - thumb_func_start sub_020388A8 -sub_020388A8: ; 0x020388A8 - push {r3, lr} - bl sub_02035664 - cmp r0, #0 - beq _020388D6 - ldr r1, _020388D8 ; =_021D4150 - mov r0, #0 - ldr r1, [r1] - mov r2, #2 - add r1, #0x52 - ldrb r1, [r1] - lsl r2, r2, #8 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _020388D6 - bl sub_02035FD8 - ldr r0, _020388DC ; =sub_02038404 - mov r1, #0 - bl sub_020381C0 -_020388D6: - pop {r3, pc} - .balign 4, 0 -_020388D8: .word _021D4150 -_020388DC: .word sub_02038404 - thumb_func_end sub_020388A8 - - thumb_func_start sub_020388E0 -sub_020388E0: ; 0x020388E0 - push {r3, lr} - ldr r0, _02038914 ; =_021D4150 - mov r1, #0xd - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bl sub_0203769C - cmp r0, #0 - add r0, sp, #0 - bne _02038906 - mov r1, #0 - strb r1, [r0, #1] - add r1, sp, #0 - mov r0, #0xa - add r1, #1 - bl sub_020376E0 - pop {r3, pc} -_02038906: - mov r1, #0 - strb r1, [r0] - mov r0, #0xa - add r1, sp, #0 - bl sub_020376E0 - pop {r3, pc} - .balign 4, 0 -_02038914: .word _021D4150 - thumb_func_end sub_020388E0 - - thumb_func_start sub_02038918 -sub_02038918: ; 0x02038918 - ldr r1, _02038930 ; =_021D4150 - ldr r3, _02038934 ; =sub_020381C0 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - ldr r0, _02038938 ; =sub_020389BC - mov r1, #0 - bx r3 - .balign 4, 0 -_02038930: .word _021D4150 -_02038934: .word sub_020381C0 -_02038938: .word sub_020389BC - thumb_func_end sub_02038918 - - thumb_func_start sub_0203893C -sub_0203893C: ; 0x0203893C - ldr r0, _02038948 ; =_021D4150 - mov r1, #7 - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038948: .word _021D4150 - thumb_func_end sub_0203893C - - thumb_func_start sub_0203894C -sub_0203894C: ; 0x0203894C - push {r3, lr} - ldr r1, _02038974 ; =_021D4150 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #7 - add r0, #0x4e - strb r2, [r0] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - bl sub_0203A880 - ldr r0, _02038978 ; =sub_02038668 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038974: .word _021D4150 -_02038978: .word sub_02038668 - thumb_func_end sub_0203894C - - thumb_func_start sub_0203897C -sub_0203897C: ; 0x0203897C - ldr r0, _02038988 ; =_021D4150 - mov r1, #0x1a - ldr r0, [r0] - add r0, #0x4e - strb r1, [r0] - bx lr - .balign 4, 0 -_02038988: .word _021D4150 - thumb_func_end sub_0203897C - - thumb_func_start sub_0203898C -sub_0203898C: ; 0x0203898C - push {r3, lr} - ldr r1, _020389B4 ; =_021D4150 - ldr r2, [r1] - add r2, #0x4d - strb r0, [r2] - ldr r0, [r1] - mov r2, #0x1a - add r0, #0x4e - strb r2, [r0] - ldr r0, [r1] - mov r2, #3 - add r0, #0x48 - strh r2, [r0] - bl sub_0203A880 - ldr r0, _020389B8 ; =sub_02038668 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_020389B4: .word _021D4150 -_020389B8: .word sub_02038668 - thumb_func_end sub_0203898C - - thumb_func_start sub_020389BC -sub_020389BC: ; 0x020389BC - push {r3, lr} - bl sub_02034FE8 - cmp r0, #0 - beq _020389CE - ldr r0, _020389D0 ; =sub_020389D4 - mov r1, #0 - bl sub_020381C0 -_020389CE: - pop {r3, pc} - .balign 4, 0 -_020389D0: .word sub_020389D4 - thumb_func_end sub_020389BC - - thumb_func_start sub_020389D4 -sub_020389D4: ; 0x020389D4 - push {r3, lr} - bl sub_02035664 - cmp r0, #0 - beq _02038A04 - ldr r0, _02038A08 ; =_021D4150 - mov r2, #2 - ldr r0, [r0] - mov r1, #0xd - add r0, #0x4e - strb r1, [r0] - mov r0, #0 - add r1, r0, #0 - lsl r2, r2, #8 - bl sub_02035F14 - cmp r0, #0 - beq _02038A04 - bl sub_02035FE4 - ldr r0, _02038A0C ; =sub_02038A10 - mov r1, #0x64 - bl sub_020381C0 -_02038A04: - pop {r3, pc} - nop -_02038A08: .word _021D4150 -_02038A0C: .word sub_02038A10 - thumb_func_end sub_020389D4 - - thumb_func_start sub_02038A10 -sub_02038A10: ; 0x02038A10 - push {r3, lr} - ldr r0, _02038A84 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020351AC - cmp r0, #0 - beq _02038A3C - ldr r0, _02038A84 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4d - ldrb r0, [r0] - bl sub_020360E4 - cmp r0, #0 - beq _02038A3C - ldr r0, _02038A88 ; =sub_02038A94 - mov r1, #0x64 - bl sub_020381C0 - pop {r3, pc} -_02038A3C: - bl sub_02037700 - cmp r0, #0 - bne _02038A4E - ldr r0, _02038A84 ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0 - bne _02038A7C -_02038A4E: - ldr r1, _02038A84 ; =_021D4150 - ldr r2, [r1] - add r0, r2, #0 - add r0, #0x48 - ldrh r0, [r0] - add r2, #0x48 - sub r0, r0, #1 - strh r0, [r2] - ldr r0, [r1] - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - bne _02038A72 - ldr r0, _02038A8C ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038A72: - ldr r0, _02038A90 ; =sub_020389BC - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038A7C: - beq _02038A82 - sub r0, r0, #1 - str r0, [r1, #0x44] -_02038A82: - pop {r3, pc} - .balign 4, 0 -_02038A84: .word _021D4150 -_02038A88: .word sub_02038A94 -_02038A8C: .word sub_02038800 -_02038A90: .word sub_020389BC - thumb_func_end sub_02038A10 - - thumb_func_start sub_02038A94 -sub_02038A94: ; 0x02038A94 - push {r3, lr} - ldr r0, _02038B2C ; =_021D4150 - ldr r1, [r0] - ldr r0, [r1, #0x44] - cmp r0, #0x5a - ble _02038AA6 - sub r0, r0, #1 - str r0, [r1, #0x44] - pop {r3, pc} -_02038AA6: - bl sub_02037700 - cmp r0, #0 - beq _02038ADC - ldr r1, _02038B2C ; =_021D4150 - ldr r2, [r1] - add r0, r2, #0 - add r0, #0x48 - ldrh r0, [r0] - add r2, #0x48 - sub r0, r0, #1 - strh r0, [r2] - ldr r0, [r1] - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - bne _02038AD2 - ldr r0, _02038B30 ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038AD2: - ldr r0, _02038B34 ; =sub_020389BC - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038ADC: - bl sub_0203769C - bl sub_020373B4 - cmp r0, #0 - beq _02038AF2 - ldr r0, _02038B38 ; =sub_020387E8 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038AF2: - ldr r1, _02038B2C ; =_021D4150 - ldr r2, [r1] - ldr r0, [r2, #0x44] - cmp r0, #0 - beq _02038B02 - sub r0, r0, #1 - str r0, [r2, #0x44] - pop {r3, pc} -_02038B02: - add r0, r2, #0 - add r0, #0x48 - ldrh r0, [r0] - add r2, #0x48 - sub r0, r0, #1 - strh r0, [r2] - ldr r0, [r1] - add r0, #0x48 - ldrh r0, [r0] - cmp r0, #0 - bne _02038B22 - ldr r0, _02038B30 ; =sub_02038800 - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} -_02038B22: - ldr r0, _02038B34 ; =sub_020389BC - mov r1, #0 - bl sub_020381C0 - pop {r3, pc} - .balign 4, 0 -_02038B2C: .word _021D4150 -_02038B30: .word sub_02038800 -_02038B34: .word sub_020389BC -_02038B38: .word sub_020387E8 - thumb_func_end sub_02038A94 - - thumb_func_start sub_02038B3C -sub_02038B3C: ; 0x02038B3C - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r2, #0 - bl sub_0203769C - cmp r0, #0 - bne _02038B8A - ldr r6, _02038B8C ; =_0210F90C - mov r3, #1 - mov r2, #0 -_02038B50: - ldrb r1, [r6] - ldrb r0, [r4, r2] - cmp r1, r0 - beq _02038B5C - mov r3, #0 - b _02038B64 -_02038B5C: - add r2, r2, #1 - add r6, r6, #1 - cmp r2, #6 - blo _02038B50 -_02038B64: - cmp r3, #0 - beq _02038B80 - ldr r0, _02038B90 ; =_021D4150 - ldr r0, [r0] - add r0, #0x57 - ldrb r0, [r0] - cmp r0, #0 - bne _02038B80 - ldr r1, _02038B94 ; =_0210F904 - mov r0, #7 - strb r5, [r1] - bl sub_02037184 - pop {r4, r5, r6, pc} -_02038B80: - ldr r1, _02038B98 ; =_0210F914 - mov r0, #7 - strb r5, [r1] - bl sub_02037184 -_02038B8A: - pop {r4, r5, r6, pc} - .balign 4, 0 -_02038B8C: .word _0210F90C -_02038B90: .word _021D4150 -_02038B94: .word _0210F904 -_02038B98: .word _0210F914 - thumb_func_end sub_02038B3C - - thumb_func_start sub_02038B9C -sub_02038B9C: ; 0x02038B9C - push {r3, r4, r5, lr} - mov r4, #1 - ldr r5, _02038C0C ; =_0210F904 + 1 - add r3, r4, #0 -_02038BA4: - ldrb r1, [r5] - ldrb r0, [r2, r3] - cmp r1, r0 - beq _02038BB0 - mov r4, #0 - b _02038BB8 -_02038BB0: - add r3, r3, #1 - add r5, r5, #1 - cmp r3, #6 - blo _02038BA4 -_02038BB8: - cmp r4, #0 - beq _02038BD2 - ldrb r4, [r2] - bl sub_0203769C - cmp r4, r0 - bne _02038C08 - ldr r0, _02038C10 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] - pop {r3, r4, r5, pc} -_02038BD2: - mov r4, #1 - ldr r3, _02038C14 ; =_0210F914 + 1 - add r5, r4, #0 -_02038BD8: - ldrb r1, [r3] - ldrb r0, [r2, r5] - cmp r1, r0 - beq _02038BE4 - mov r4, #0 - b _02038BEC -_02038BE4: - add r5, r5, #1 - add r3, r3, #1 - cmp r5, #6 - blo _02038BD8 -_02038BEC: - cmp r4, #0 - beq _02038C08 - ldrb r4, [r2] - bl sub_0203769C - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r4, r0 - bne _02038C08 - ldr r0, _02038C10 ; =_021D4150 - mov r1, #2 - ldr r0, [r0] - add r0, #0x4c - strb r1, [r0] -_02038C08: - pop {r3, r4, r5, pc} - nop -_02038C0C: .word _0210F904 + 1 -_02038C10: .word _021D4150 -_02038C14: .word _0210F914 + 1 - thumb_func_end sub_02038B9C - - thumb_func_start sub_02038C18 -sub_02038C18: ; 0x02038C18 - mov r0, #6 - bx lr - thumb_func_end sub_02038C18 - - thumb_func_start sub_02038C1C -sub_02038C1C: ; 0x02038C1C - push {r3, lr} - ldr r1, _02038C30 ; =_021D4150 - ldr r1, [r1] - cmp r1, #0 - beq _02038C2E - add r1, #0x4a - strb r0, [r1] - bl sub_02033908 -_02038C2E: - pop {r3, pc} - .balign 4, 0 -_02038C30: .word _021D4150 - thumb_func_end sub_02038C1C - - thumb_func_start sub_02038C34 -sub_02038C34: ; 0x02038C34 - ldr r3, _02038C38 ; =sub_0203528C - bx r3 - .balign 4, 0 -_02038C38: .word sub_0203528C - thumb_func_end sub_02038C34 - - thumb_func_start sub_02038C3C -sub_02038C3C: ; 0x02038C3C - ldr r2, _02038CB4 ; =0x00400131 - cmp r0, r2 - bhi _02038C4C - bhs _02038C8A - ldr r2, _02038CB8 ; =0x00000333 - cmp r0, r2 - beq _02038C5E - bx lr -_02038C4C: - ldr r1, _02038CBC ; =0x00400286 - cmp r0, r1 - bhi _02038C56 - beq _02038C9E - bx lr -_02038C56: - add r1, #0x92 - cmp r0, r1 - beq _02038C76 - bx lr -_02038C5E: - cmp r1, #0xf - bne _02038CB0 - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #1 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] - bx lr -_02038C76: - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #1 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] - bx lr -_02038C8A: - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #2 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] - bx lr -_02038C9E: - ldr r0, _02038CC0 ; =_021D4150 - ldr r2, [r0] - add r0, r2, #0 - add r0, #0x58 - ldrb r1, [r0] - mov r0, #4 - add r2, #0x58 - orr r0, r1 - strb r0, [r2] -_02038CB0: - bx lr - nop -_02038CB4: .word 0x00400131 -_02038CB8: .word 0x00000333 -_02038CBC: .word 0x00400286 -_02038CC0: .word _021D4150 - thumb_func_end sub_02038C3C - - thumb_func_start sub_02038CC4 -sub_02038CC4: ; 0x02038CC4 - push {r3, lr} - mov r0, #1 - add r1, r0, #0 - mov r2, #0x20 - bl sub_02035F14 - cmp r0, #0 - beq _02038CE0 - bl sub_02035FD8 - ldr r0, _02038CE4 ; =sub_02038C34 - mov r1, #0 - bl sub_020381C0 -_02038CE0: - pop {r3, pc} - nop -_02038CE4: .word sub_02038C34 - thumb_func_end sub_02038CC4 - - thumb_func_start sub_02038CE8 -sub_02038CE8: ; 0x02038CE8 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038D18 - ldr r0, _02038D1C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038D1C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - ldr r0, _02038D20 ; =sub_02038C3C - bl sub_02033A7C - ldr r0, _02038D24 ; =sub_02038CC4 - mov r1, #0 - bl sub_020381C0 -_02038D18: - pop {r3, pc} - nop -_02038D1C: .word _021D4150 -_02038D20: .word sub_02038C3C -_02038D24: .word sub_02038CC4 - thumb_func_end sub_02038CE8 - - thumb_func_start sub_02038D28 -sub_02038D28: ; 0x02038D28 - push {r4, lr} - add r4, r0, #0 - bl sub_02037474 - cmp r0, #0 - bne _02038D58 - mov r2, #7 - mov r0, #3 - mov r1, #0xf - lsl r2, r2, #0xc - bl Heap_CreateAtEnd - add r0, r4, #0 - mov r1, #0x11 - bl sub_02037C98 - ldr r0, _02038D5C ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - add r0, #0x4f - strb r1, [r0] - ldr r0, _02038D60 ; =sub_02038CE8 - bl sub_020381C0 -_02038D58: - pop {r4, pc} - nop -_02038D5C: .word _021D4150 -_02038D60: .word sub_02038CE8 - thumb_func_end sub_02038D28 - - thumb_func_start sub_02038D64 -sub_02038D64: ; 0x02038D64 - push {r3, lr} - ldr r0, _02038D78 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - beq _02038D76 - ldr r0, _02038D7C ; =sub_0203847C - mov r1, #5 - bl sub_020381C0 -_02038D76: - pop {r3, pc} - .balign 4, 0 -_02038D78: .word _021D4150 -_02038D7C: .word sub_0203847C - thumb_func_end sub_02038D64 - - thumb_func_start sub_02038D80 -sub_02038D80: ; 0x02038D80 - ldr r0, _02038D8C ; =_021D4150 - ldr r0, [r0] - add r0, #0x58 - ldrb r0, [r0] - bx lr - nop -_02038D8C: .word _021D4150 - thumb_func_end sub_02038D80 - - thumb_func_start sub_02038D90 -sub_02038D90: ; 0x02038D90 - push {r3, lr} - bl sub_02037988 - ldr r0, _02038DF0 ; =_021D4150 - ldr r0, [r0] - cmp r0, #0 - bne _02038DA2 - mov r0, #1 - pop {r3, pc} -_02038DA2: - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x18 - beq _02038DB2 - cmp r0, #0x19 - beq _02038DB2 - cmp r0, #0x24 - bne _02038DBA -_02038DB2: - bl ov00_021E6CB8 - mov r0, #1 - pop {r3, pc} -_02038DBA: - bl sub_02039998 - cmp r0, #0 - beq _02038DE2 - ldr r0, _02038DF0 ; =_021D4150 - ldr r0, [r0] - add r0, #0x4e - ldrb r0, [r0] - cmp r0, #0x21 - bne _02038DD8 - ldr r0, _02038DF4 ; =sub_02039D78 - mov r1, #0 - bl sub_020381C0 - b _02038DEA -_02038DD8: - ldr r0, _02038DF8 ; =sub_020392F4 - mov r1, #0 - bl sub_020381C0 - b _02038DEA -_02038DE2: - ldr r0, _02038DFC ; =sub_020381FC - mov r1, #0 - bl sub_020381C0 -_02038DEA: - mov r0, #0 - pop {r3, pc} - nop -_02038DF0: .word _021D4150 -_02038DF4: .word sub_02039D78 -_02038DF8: .word sub_020392F4 -_02038DFC: .word sub_020381FC - thumb_func_end sub_02038D90 - - thumb_func_start sub_02038E00 -sub_02038E00: ; 0x02038E00 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038E3E - ldr r0, _02038E40 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038E40 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - add r3, r0, #0 - bl sub_02035ED8 - cmp r0, #0 - beq _02038E3E - bl sub_02035FD8 - ldr r0, _02038E44 ; =sub_02038260 - mov r1, #0 - bl sub_020381C0 -_02038E3E: - pop {r3, pc} - .balign 4, 0 -_02038E40: .word _021D4150 -_02038E44: .word sub_02038260 - thumb_func_end sub_02038E00 - - thumb_func_start sub_02038E48 -sub_02038E48: ; 0x02038E48 - push {r3, lr} - bl sub_02034DB8 - cmp r0, #0 - beq _02038E84 - ldr r0, _02038E88 ; =_021D4150 - mov r1, #1 - ldr r0, [r0] - ldr r0, [r0, #0x2c] - bl sub_02034B0C - ldr r0, _02038E88 ; =_021D4150 - mov r1, #0 - ldr r0, [r0] - ldr r0, [r0, #0x28] - bl sub_02034354 - mov r0, #1 - add r1, r0, #0 - lsl r2, r0, #9 - bl sub_02035F14 - cmp r0, #0 - beq _02038E84 - bl sub_02035FD8 - ldr r0, _02038E8C ; =sub_020382DC - mov r1, #0 - bl sub_020381C0 -_02038E84: - pop {r3, pc} - nop -_02038E88: .word _021D4150 -_02038E8C: .word sub_020382DC - thumb_func_end sub_02038E48 - - thumb_func_start sub_02038E90 -sub_02038E90: ; 0x02038E90 - bx lr - .balign 4, 0 - thumb_func_end sub_02038E90 - - thumb_func_start sub_02038E94 -sub_02038E94: ; 0x02038E94 - push {r3, lr} - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0 - bge _02038EA8 - ldr r0, _02038EAC ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02038EA8: - pop {r3, pc} - nop -_02038EAC: .word sub_02038E90 - thumb_func_end sub_02038E94 - - thumb_func_start sub_02038EB0 -sub_02038EB0: ; 0x02038EB0 - bx lr - .balign 4, 0 - thumb_func_end sub_02038EB0 - - thumb_func_start sub_02038EB4 -sub_02038EB4: ; 0x02038EB4 - bx lr - .balign 4, 0 - thumb_func_end sub_02038EB4 - - thumb_func_start sub_02038EB8 -sub_02038EB8: ; 0x02038EB8 - push {r3, lr} - mov r0, #1 - bl sub_0203786C - mov r0, #0 - bl ov00_021E5E54 - cmp r0, #0xa - blt _02038ED8 - cmp r0, #0x14 - bge _02038ED8 - ldr r0, _02038F60 ; =sub_02038EB4 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038ED8: - cmp r0, #0 - bge _02038EE6 - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038EE6: - cmp r0, #0x17 - bne _02038EF4 - ldr r0, _02038F68 ; =sub_02038E94 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038EF4: - cmp r0, #0x18 - bne _02038F18 - ldr r0, _02038F6C ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02038F0E - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038F0E: - ldr r0, _02038F70 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038F18: - cmp r0, #0x15 - bne _02038F3A - ldr r0, _02038F6C ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02038F32 - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 - b _02038F3A -_02038F32: - ldr r0, _02038F70 ; =sub_02038EB0 - mov r1, #0 - bl sub_020381C0 -_02038F3A: - ldr r0, _02038F6C ; =_021D4150 - ldr r0, [r0] - add r0, #0x53 - ldrb r0, [r0] - cmp r0, #0 - beq _02038F5E - bl sub_02037454 - ldr r1, _02038F6C ; =_021D4150 - ldr r1, [r1] - add r1, #0x4b - ldrb r1, [r1] - cmp r1, r0 - beq _02038F5E - ldr r0, _02038F64 ; =sub_02038E90 - mov r1, #0 - bl sub_020381C0 -_02038F5E: - pop {r3, pc} - .balign 4, 0 -_02038F60: .word sub_02038EB4 -_02038F64: .word sub_02038E90 -_02038F68: .word sub_02038E94 -_02038F6C: .word _021D4150 -_02038F70: .word sub_02038EB0 - thumb_func_end sub_02038EB8 - diff --git a/include/overlay_00_thumb.h b/include/overlay_00_thumb.h index 45cd7b691..b2e478b75 100644 --- a/include/overlay_00_thumb.h +++ b/include/overlay_00_thumb.h @@ -27,12 +27,14 @@ int ov00_021E6BE4(int arg0); int ov00_021E6C68(void); int ov00_021E5E54(int arg0); void ov00_021E6CA4(void (*func)(u32)); -void ov00_021E5900(SaveData* saveData, int arg1, int arg2, int arg3); +void ov00_021E5900(SaveData *saveData, int arg1, int arg2, int arg3); void ov00_021E5C84(void (*func0)(), void (*func1)()); s32 ov00_021E5B6C(void); void ov00_021EC210(void); -int ov00_021EC11C(s32* arg0, s32* arg1); +int ov00_021EC11C(s32 *arg0, s32 *arg1); s32 ov00_021E6690(void); u32 ov00_021E6D7C(s32 arg0, s32 arg1, s32 arg2); +void ov00_021E6CB8(void); +int ov00_021EC9D4(void); #endif // POKEHEARTGOLD_OVERLAY_00_THUMB_H diff --git a/include/overlay_13_arm_2.h b/include/overlay_13_arm_2.h index 30b508753..3e468e542 100644 --- a/include/overlay_13_arm_2.h +++ b/include/overlay_13_arm_2.h @@ -2,5 +2,6 @@ #define POKEHEARTGOLD_OVERLAY_13_ARM_2_H BOOL ov13_0222B430(void *, s32, s32); +s32 WM_GetLinkLevel(void); #endif // POKEHEARTGOLD_OVERLAY_13_ARM_2_H diff --git a/include/unk_02032844.h b/include/unk_02032844.h index 600f2404c..9aea1ee6f 100644 --- a/include/unk_02032844.h +++ b/include/unk_02032844.h @@ -2,5 +2,10 @@ #define POKEHEARTGOLD_UNK_02032844_H int sub_02033974(void); +void sub_02033A7C(void *arg0); +void sub_02033ACC(int arg0); +void sub_02033908(int arg0); +void sub_02033AA4(int arg0); +void sub_02033A0C(void); #endif // POKEHEARTGOLD_UNK_02032844_H diff --git a/include/unk_02033AE0.h b/include/unk_02033AE0.h index 20e2c3ce4..70f2209ee 100644 --- a/include/unk_02033AE0.h +++ b/include/unk_02033AE0.h @@ -11,5 +11,6 @@ u32 sub_020342B8(void); u32 sub_02057A08(void); s32 sub_02033FC4(u8 arg0); s32 sub_02034044(void); +void sub_02034154(void); #endif // POKEHEARTGOLD_UNK_02033AE0_H diff --git a/include/unk_02034B0C.h b/include/unk_02034B0C.h index 651b11a55..7c3b981b1 100644 --- a/include/unk_02034B0C.h +++ b/include/unk_02034B0C.h @@ -8,5 +8,13 @@ BOOL sub_02034BE4(void); BOOL sub_02035630(void); void sub_020356C0(int arg0); void sub_020356EC(int arg0); +int sub_02035664(void); +int sub_02034FE8(void); +int sub_020351AC(int arg0); +int sub_020358B0(void); +void sub_0203528C(void); +void sub_02034B0C(PlayerProfile *playerProfile, int arg1); +void sub_020350A8(int arg0); +void sub_02034DE0(void); #endif // POKEHEARTGOLD_UNK_02034B0C_H diff --git a/include/unk_02035900.h b/include/unk_02035900.h index 1a8094c87..0f056eb43 100644 --- a/include/unk_02035900.h +++ b/include/unk_02035900.h @@ -1,11 +1,14 @@ #ifndef POKEHEARTGOLD_UNK_02035900_H #define POKEHEARTGOLD_UNK_02035900_H +#include "unk_02037C94.h" + BOOL sub_02036144(void); BOOL sub_02037474(void); void sub_020374E4(void); void sub_02037504(void); BOOL sub_0203769C(void); +void sub_020378E4(int a0); void sub_020380F4(void); void sub_02038104(void); int sub_02037454(void); @@ -24,6 +27,15 @@ void sub_02035FD8(void); int sub_02035ED8(int arg0, int arg1, int arg2, int arg3); void sub_02037988(void); int sub_02037700(void); -void sub_020376E0(int, u8*); +void sub_020376E0(int, u8 *); +void sub_02037184(int arg0, u8 *arg1); +void sub_02035FE4(void); +int sub_02035F14(int arg0, int arg1, int arg2); +int sub_020360E4(int arg0); +int sub_020376F8(void); +void sub_0203624C(void); +void sub_02036024(void); +void sub_02036274(void); +void sub_0203778C(MATHRandContext32 *arg0); #endif // POKEHEARTGOLD_UNK_02035900_H diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index 0f5f922ba..1a8606f1c 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -1,27 +1,108 @@ #ifndef POKEHEARTGOLD_UNK_02037C94_H #define POKEHEARTGOLD_UNK_02037C94_H +#include "overlay_44_02232E9C.h" #include "save.h" #include "save_wifi_history.h" #include "unk_0202C034.h" -#include "overlay_44_02232E9C.h" typedef struct { - u64 x; - u64 mul; - u64 add; + u64 x; + u64 mul; + u64 add; } MATHRandContext32; +s32 sub_02037C94(void); +void sub_02037C98(SaveData *arg0, s8 arg1); +void sub_02037D2C(void); BOOL sub_02037D78(void); +void sub_02037D8C(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3); +void sub_02037DD4(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3); +void sub_02037E1C(s8 arg0); +void sub_02037E38(void); +void sub_02037E4C(void); +void sub_02037E9C(void); +void sub_02037EC0(void); +s32 sub_02037EC8(void); +void sub_02037F18(SaveData *arg0); +void sub_02037F64(s8 arg0); +s32 sub_02037F94(void); +s32 sub_02037FCC(void); void sub_02037FF0(void); +s32 sub_02038070(void); +void sub_02038094(void); +void sub_020380B0(void); void sub_020380CC(void); -BOOL sub_02039AA4(void); +void sub_020380F4(void); +void sub_02038104(void); +void sub_02038114(SaveData *arg0, s8 arg1); +void sub_02038148(SaveData *arg0, s8 arg1); +void sub_0203817C(void); +void sub_020381C0(void (*func)(), int arg1); +void sub_020381D0(void); +void sub_020381FC(void); +void sub_02038218(void); +void sub_02038260(void); +void sub_0203827C(void); +void sub_02038294(void); +void sub_020382DC(void); +void sub_020382E4(void); +void sub_0203830C(void); +void sub_02038344(void); +void sub_02038358(void); +void sub_02038398(void); +void sub_020383B0(void); +void sub_020383C4(void); +void sub_02038404(void); +void sub_02038408(void); +void sub_02038418(void); +void sub_02038460(void); +void sub_0203847C(void); +void sub_020384B4(void); +void sub_02038508(void); +void sub_02038538(void); +void sub_02038550(void); +void sub_020385B8(void); +void sub_02038610(void); +void sub_02038668(void); +void sub_02038680(void); +void sub_020386AC(void); +void sub_02038710(void); +void sub_0203876C(void); +void sub_020387E8(void); +void sub_02038800(void); +void sub_02038804(void); +void sub_02038854(void); +void sub_020388A8(void); +void sub_020388E0(void); +void sub_02038918(s8 arg0); +void sub_0203893C(void); +void sub_0203894C(s8 arg0); +void sub_0203897C(void); +void sub_0203898C(s8 arg0); +void sub_020389BC(void); +void sub_020389D4(void); +void sub_02038A10(void); +void sub_02038A94(void); +void sub_02038B3C(u8 arg0, u8 arg1, u8 *arg2); +void sub_02038B9C(u32 arg0, u32 arg1, u8 *arg2); +s32 sub_02038C18(void); +void sub_02038C1C(s8 arg0); +void sub_02038C34(void); +void sub_02038C3C(u32 arg0, s32 arg1); +void sub_02038CC4(void); +void sub_02038CE8(void); +void sub_02038D28(SaveData *arg0); +void sub_02038D64(void); +u8 sub_02038D80(void); BOOL sub_02038D90(void); -void sub_02039358(void); -void sub_020378E4(int a0); -void sub_02039330(void); -void sub_020381C0(void (*func)(), int a1); -BOOL sub_02037D78(void); +void sub_02038E00(void); +void sub_02038E48(void); +void sub_02038E90(void); +void sub_02038E94(void); +void sub_02038EB0(void); +void sub_02038EB4(void); +void sub_02038EB8(void); void sub_02038F74(u32 arg0, s32 arg1, s32 arg2); void sub_02038F9C(void); @@ -34,37 +115,37 @@ void sub_02039220(void); u8 sub_02039264(void); BOOL sub_02039274(void); BOOL sub_020392A0(void); -u32* sub_020392D8(void); +u32 *sub_020392D8(void); void sub_020392F4(void); void sub_02039330(void); void sub_02039358(void); void sub_02039378(void); void sub_020393B4(void); BOOL sub_020393C8(void); -void sub_02039418(SaveData* arg0); +void sub_02039418(SaveData *arg0); void sub_0203946C(void); -void sub_020394A0(SaveData* arg0); +void sub_020394A0(SaveData *arg0); void sub_020394F4(void); -void sub_02039528(SaveData* arg0); +void sub_02039528(SaveData *arg0); void sub_0203957C(void); BOOL sub_020395B0(void); void sub_0203960C(void); void sub_02039694(void); -UnkStruct_ov44_0223197C* sub_020396FC(SaveData* arg0, u32 arg1); -void sub_0203976C(SaveData* arg0, s32 arg1); +UnkStruct_ov44_0223197C *sub_020396FC(SaveData *arg0, u32 arg1); +void sub_0203976C(SaveData *arg0, s32 arg1); void sub_020397C8(void); u8 sub_020397E4(void); BOOL sub_020397FC(void); void sub_0203981C(s32 arg0); void sub_0203986C(void); s32 sub_0203988C(void); -UnkStruct_ov44_0223197C* sub_020398C8(void); +UnkStruct_ov44_0223197C *sub_020398C8(void); void sub_020398D4(s8 arg0, s8 arg1); BOOL sub_02039918(void); u8 sub_0203993C(void); u8 sub_02039954(void); -void sub_0203996C(void* arg0); -void sub_02039980(void* arg0); +void sub_0203996C(void *arg0); +void sub_02039980(void *arg0); int sub_02039998(void); void sub_020399A4(s8 arg0); @@ -73,6 +154,7 @@ void sub_020399DC(u32 errorCode); void sub_020399EC(void); void sub_020399FC(void); void sub_02039A00(void); +BOOL sub_02039AA4(void); BOOL sub_02039AD8(int arg0); void sub_02039AF8(void); void sub_02039B18(void); @@ -85,7 +167,7 @@ void sub_02039C60(void); s32 sub_02039C6C(s32 arg0); s32 sub_02039D08(void); int sub_02039D3C(void); -void sub_02039D54(s32* arg0); +void sub_02039D54(s32 *arg0); void sub_02039D78(void); void sub_02039D8C(void); void sub_02039DC0(void); @@ -94,27 +176,19 @@ void sub_02039DE4(void); void sub_02039E30(void); void sub_02039E7C(void); void sub_02039E9C(void); -void sub_02039EAC(s32* arg0); -s32 sub_02039EB4(SaveData* arg0, s32 arg1, u32* arg2); -void sub_02039F68(SaveWiFiHistory* arg0); -void sub_02039FB8(SaveWiFiHistory* arg0, s32 arg1, s32 arg2, u8 arg3); +void sub_02039EAC(s32 *arg0); +s32 sub_02039EB4(SaveData *arg0, s32 arg1, u32 *arg2); +void sub_02039F68(SaveWiFiHistory *arg0); +void sub_02039FB8(SaveWiFiHistory *arg0, s32 arg1, s32 arg2, u8 arg3); s32 sub_02039FD8(enum HeapID arg0); s32 sub_02039FFC(enum HeapID arg0); -void sub_0203A01C(UnkStruct_021D2230* arg0); -int sub_0203A040(UnkStruct_021D2230* arg0); -BOOL sub_0203A05C(SaveData* arg0); -s32 sub_0203A084(SaveData* arg0, DWCFriendData* arg1, s32* arg2); -int sub_0203A128(SaveData* arg0, u64 arg1, int* arg2); -s32 sub_0203A1C4(SaveData* arg0, s32* arg1, enum HeapID arg2); -void sub_0203A280(SaveData* arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4); -s32 sub_0203A378(SaveData* arg0, s32 arg1); - -void sub_02038E90(void); -void sub_02038EB4(void); -void sub_02038EB0(void); -void sub_0203847C(void); -void sub_02038E94(void); -void sub_02038EB8(void); -void sub_02037C98(SaveData* saveData, int arg1); +void sub_0203A01C(UnkStruct_021D2230 *arg0); +int sub_0203A040(UnkStruct_021D2230 *arg0); +BOOL sub_0203A05C(SaveData *arg0); +s32 sub_0203A084(SaveData *arg0, DWCFriendData *arg1, s32 *arg2); +int sub_0203A128(SaveData *arg0, u64 arg1, int *arg2); +s32 sub_0203A1C4(SaveData *arg0, s32 *arg1, enum HeapID arg2); +void sub_0203A280(SaveData *arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4); +s32 sub_0203A378(SaveData *arg0, s32 arg1); #endif // POKEHEARTGOLD_UNK_02037C94_H diff --git a/include/unk_0203A3B0.h b/include/unk_0203A3B0.h index 497822d0d..14d995a1d 100644 --- a/include/unk_0203A3B0.h +++ b/include/unk_0203A3B0.h @@ -5,5 +5,7 @@ void sub_0203A880(void); void sub_0203A914(void); void sub_0203A964(void); void sub_0203A994(int a0); +void sub_0203A930(int a0); +void sub_0203A914(void); #endif // POKEHEARTGOLD_UNK_0203A3B0_H diff --git a/src/unk_02037C94_1.c b/src/unk_02037C94_1.c index 36f6526cf..f3887dcd2 100644 --- a/src/unk_02037C94_1.c +++ b/src/unk_02037C94_1.c @@ -1,25 +1,27 @@ -#include "unk_02037C94.h" -#include "unk_02035900.h" -#include "unk_02034354.h" -#include "unk_020915B0.h" -#include "unk_020379A0.h" -#include "unk_02034B0C.h" -#include "unk_02033AE0.h" -#include "unk_02032844.h" -#include "unk_02005D10.h" -#include "overlay_00_thumb.h" -#include "overlay_45_thumb.h" -#include "dwcaccount.h" -#include "system.h" #include "communication_error.h" +#include "dwcaccount.h" +#include "overlay_00_thumb.h" +#include "overlay_13_arm_2.h" +#include "overlay_45_thumb.h" +#include "system.h" +#include "unk_02005D10.h" +#include "unk_02032844.h" +#include "unk_02033AE0.h" +#include "unk_02034354.h" +#include "unk_02034B0C.h" +#include "unk_02035900.h" +#include "unk_020379A0.h" +#include "unk_02037C94.h" +#include "unk_0203A3B0.h" +#include "unk_020915B0.h" typedef struct UnkStruct_sub_02039C6C { - UnkStruct_ov44_0223197C* unk0; + UnkStruct_ov44_0223197C *unk0; u8 unk4[8]; MATHRandContext32 mathRandContext; void (*unk24)(); - SaveData* unk28; - PlayerProfile* unk2C; + SaveData *unk28; + PlayerProfile *unk2C; s32 unk30; u32 unk34; s32 unk38; @@ -51,7 +53,910 @@ typedef struct UnkStruct_sub_02039C6C { u8 unk64; } UnkStruct_sub_02039C6C; -extern UnkStruct_sub_02039C6C* _021D4150; +extern UnkStruct_sub_02039C6C *_021D4150; +extern u8 _0210F904[]; +extern u8 _0210F90C[]; +extern u8 _0210F914[]; +extern void *_020F6A90[3]; + +s32 sub_02037C94(void) { + return 0x46; +} + +void sub_02037C98(SaveData *arg0, s8 arg1) { + if (_021D4150 == NULL) { + GF_ASSERT(arg0); + sub_02034D8C(); + UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + _021D4150 = temp_r0; + MI_CpuFill8(temp_r0, 0, sizeof(UnkStruct_sub_02039C6C)); + _021D4150->unk44 = 0x32; + _021D4150->unk52 = 1; + _021D4150->unk28 = arg0; + _021D4150->unk2C = Save_PlayerData_GetProfile(arg0); + _021D4150->unk4A = 2; + _021D4150->unk4C = 0; + _021D4150->unk57 = 0; + _021D4150->unk4E = arg1; + sub_0203778C(&_021D4150->mathRandContext); + sub_0203410C(0, 0, 0); + if ((arg1 != 9) && (arg1 != 0x11) && (arg1 != 0xF)) { + sub_0203A880(); + } + } +} + +void sub_02037D2C(void) { + if (_021D4150 != NULL) { + sub_02034154(); + if (_021D4150->unk0 != NULL) { + Heap_Free(_021D4150->unk0); + } + if (sub_02039998() != 0) { + Heap_Destroy(HEAP_ID_48); + } + sub_0203A914(); + sub_02034DE0(); + Heap_Free(_021D4150); + Heap_Destroy(HEAP_ID_15); + _021D4150 = NULL; + } +} + +BOOL sub_02037D78(void) { + return _021D4150 ? TRUE : FALSE; +} + +void sub_02037D8C(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3) { + if (sub_02037474() == 0) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); + sub_02037C98(arg0, arg1); + _021D4150->unk4F = arg2; + _021D4150->unk30 = arg3; + sub_020381C0(sub_02038218, 0); + } +} + +void sub_02037DD4(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3) { + if (sub_02037474() == 0) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); + sub_02037C98(arg0, arg1); + _021D4150->unk4F = arg2; + _021D4150->unk30 = arg3; + sub_020381C0(sub_02038294, 0); + } +} + +void sub_02037E1C(s8 arg0) { + _021D4150->unk4D = arg0; + sub_020381C0(sub_020382E4, 0); +} + +void sub_02037E38(void) { + sub_02036274(); + sub_020381C0(sub_020383B0, 0); +} + +void sub_02037E4C(void) { + if (_021D4150->unk40 > 0) { + _021D4150->unk40--; + } else if (_021D4150->unk40 == 0) { + sub_020399EC(); + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + } + if ((sub_02034FE8() != 0) && (_021D4150->unk44 == 0)) { + sub_02036024(); + sub_020381C0(sub_02038408, 0); + } +} + +void sub_02037E9C(void) { + if (_021D4150 != NULL) { + _021D4150->unk40 = 0x708; + sub_020381C0(sub_02037E4C, 5); + } +} + +void sub_02037EC0(void) { + sub_02033A0C(); +} + +s32 sub_02037EC8(void) { + void *sp0[3]; + sp0 = _020F6A90; + void *func = _021D4150->unk24; + if (!_021D4150) { + return 0; + } + for (int i = 0; sp0[i] != NULL; i++) { + if (func == sp0[i]) { + return 1; + } + } + return 0; +} + +void sub_02037F18(SaveData *arg0) { + if (_021D4150 == NULL) { + if (!Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U)) { + sub_020399EC(); + } + sub_02037C98(arg0, 9); + _021D4150->unk4E = 9; + _021D4150->unk4F = 0; + sub_020381C0(sub_020384B4, 0); + } +} + +void sub_02037F64(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk48 = 3; + sub_02033AA4(1); + sub_0203A880(); + sub_020381C0(sub_02038668, 0); +} + +s32 sub_02037F94(void) { + if (_021D4150 == NULL) { + return -1; + } + if (_021D4150->unk24 == sub_020387E8) { + return 1; + } + if (_021D4150->unk24 == sub_02038800) { + return -1; + } else { + return 0; + } +} + +s32 sub_02037FCC(void) { + if (_021D4150 == NULL) { + return 0; + } + if (_021D4150->unk24 == sub_02038854) { + return 1; + } + return 0; +} + +void sub_02037FF0(void) { + sub_02033AA4(0); + if ((_021D4150->unk53 != 1) || (_021D4150->unk54 != 1) || (_021D4150->unk4E == 9)) { + sub_020398D4(0, 0); + } + sub_0203A914(); + _021D4150->unk4E = 9; + _021D4150->unk57 = 0; + sub_02033908(_021D4150->unk4A); + if (sub_0203769C() == 0) { + sub_02033ACC(1); + sub_020381C0(sub_02038418, 0xF); + } else { + sub_020381C0(sub_02038460, 5); + } +} + +s32 sub_02038070(void) { + if (_021D4150 == NULL) { + return 1; + } else if (_021D4150->unk24 != sub_02038538) { + return 1; + } + return 0; +} + +void sub_02038094(void) { + if (_021D4150 != NULL) { + sub_020381C0(sub_0203847C, 5); + } +} + +void sub_020380B0(void) { + if (_021D4150 != NULL) { + _021D4150->unk57 = 1; + sub_02033AA4(1); + } +} + +void sub_020380CC(void) { + if (_021D4150 != NULL) { + _021D4150->unk57 = 1; + sub_02033AA4(1); + sub_020381C0(sub_020388A8, 0); + } +} + +void sub_020380F4(void) { + _021D4150->unk4E = 0x12; +} + +void sub_02038104(void) { + _021D4150->unk4E = 9; +} + +void sub_02038114(SaveData *arg0, s8 arg1) { + if (sub_02037474() == 0) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); + sub_02037C98(arg0, arg1); + sub_020381C0(sub_02038E00, 0); + } +} + +void sub_02038148(SaveData *arg0, s8 arg1) { + if (sub_02037474() == 0) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); + sub_02037C98(arg0, arg1); + sub_020381C0(sub_02038E48, 0); + } +} + +void sub_0203817C(void) { + if ((_021D4150 != NULL) && (_021D4150->unk24 != NULL)) { + _021D4150->unk24(); + } + if (sub_02039998() != 0) { + sub_0203A930(3 - ov00_021EC9D4()); + } else if (sub_02035650() != 0) { + sub_0203A930(3 - WM_GetLinkLevel()); + } +} + +void sub_020381C0(void (*arg0)(), int arg1) { + _021D4150->unk24 = arg0; + _021D4150->unk44 = arg1; +} + +void sub_020381D0(void) { + if (!sub_02039998()) { + if (!sub_02035664()) { + return; + } else { + sub_020374E4(); + sub_020350A8(1); + } + } + sub_020381C0(sub_02038404, 0); +} + +void sub_020381FC(void) { + if (sub_02034FE8() != 0) { + sub_0203622C(); + sub_020381C0(sub_020381D0, 0); + } +} + +void sub_02038218(void) { + if (sub_02034DB8() != 0) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, _021D4150->unk30); + if (sub_02035ED8(1, 1U, 0x200, 1) != 0) { + sub_02035FD8(); + sub_020381C0(sub_02038260, 0); + } + } +} + +void sub_02038260(void) { + if (sub_020373B4(sub_0203769C()) != FALSE) { + sub_020381C0(sub_0203827C, 0); + } +} + +void sub_0203827C(void) { + if (sub_02037474() == 0) { + sub_020381C0(sub_02038408, 0); + } +} + +void sub_02038294(void) { + if (sub_02034DB8() != 0) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, _021D4150->unk30); + if (sub_02035F14(1, 1, 0x200) != 0) { + sub_02035FD8(); + sub_020381C0(sub_020382DC, 0); + } + } +} + +void sub_020382DC(void) { + sub_0203528C(); +} + +void sub_020382E4(void) { + sub_0203528C(); + if (sub_020360E4(_021D4150->unk4D) != 0) { + sub_020381C0(sub_0203830C, 0xA); + } +} + +void sub_0203830C(void) { + if (sub_02037700() != 0) { + sub_020381C0(sub_02038344, 0); + } + if ((sub_020373B4(sub_0203769C()) != FALSE) && (sub_0203769C() != FALSE)) { + sub_020381C0(sub_02038398, 0); + } +} + +void sub_02038344(void) { + sub_02034FE8(); + sub_020381C0(sub_02038358, 2); +} + +void sub_02038358(void) { + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 0x200) != 0)) { + sub_02035FD8(); + sub_020381C0(sub_020382E4, 0xA); + } +} + +void sub_02038398(void) { + if (sub_02037474() == 0) { + sub_020381C0(sub_02038408, 0); + } +} + +void sub_020383B0(void) { + sub_02034FE8(); + sub_020381C0(sub_020383C4, 2); +} + +void sub_020383C4(void) { + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 0x200) != 0)) { + sub_02035FD8(); + sub_020381C0(sub_020382DC, 0xA); + } +} + +void sub_02038404(void) { +} + +void sub_02038408(void) { + if (sub_02037474() == 0) { + sub_02037D2C(); + } +} + +void sub_02038418(void) { + if (sub_02037454() <= 1) { + sub_02033ACC(0); + sub_0203624C(); + sub_020381C0(sub_02038538, 0); + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + sub_02033ACC(0); + sub_0203624C(); + sub_020381C0(sub_02038538, 0); +} + +void sub_02038460(void) { + if (sub_02034FE8() != 0) { + sub_0203622C(); + sub_020381C0(sub_02038538, 0); + } +} + +void sub_0203847C(void) { + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + } + if ((sub_02034FE8() != 0) && (_021D4150->unk44 == 0)) { + sub_02036024(); + sub_020381C0(sub_02038408, 0); + } +} + +void sub_020384B4(void) { + if (sub_02034DB8() != 0) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02033908(_021D4150->unk4A); + sub_02034354(_021D4150->unk28, 0); + if (sub_02035F14(1, 1, 0x200) != 0) { + sub_02035FD8(); + sub_020381C0(sub_02038508, 0x40U); + } + } +} + +void sub_02038508(void) { + sub_0203528C(); + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + if (sub_02034FE8() != 0) { + sub_020381C0(sub_02038550, 0); + } +} + +void sub_02038538(void) { + if (sub_02034FE8() != 0) { + sub_020381C0(sub_02038550, 0); + } +} + +void sub_02038550(void) { + if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 0x200, 1) != 0)) { + // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 0); + MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; + mathRandContext->x = (mathRandContext->mul * mathRandContext->x) + mathRandContext->add; + // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 0); + sub_02035FD8(); + _021D4150->unk52 = 0; + sub_020381C0(&sub_020385B8, 0x2710); + } +} + +void sub_020385B8(void) { + if (sub_020358B0() == 0) { + if (sub_020376F8() != 0) { + _021D4150->unk52 = 1; + sub_0203A880(); + sub_020381C0(sub_02038854, 0); + return; + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + } + if (sub_02034FE8() != 0) { + sub_020381C0(sub_02038610, 0); + } +} + +void sub_02038610(void) { + if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 0x200) != 0)) { + sub_02035FD8(); + // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 32) + MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; + u64 r0 = (mathRandContext->mul * mathRandContext->x) + mathRandContext->add; + mathRandContext->x = r0; + u32 rand = (u32)(((mathRandContext->x >> 32) * 32) >> 32); + // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 32) + sub_020381C0(sub_02038508, rand); + } +} + +void sub_02038668(void) { + if (sub_02034FE8() != 0) { + sub_020381C0(sub_02038680, 0); + } +} + +void sub_02038680(void) { + if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 0x200) != 0)) { + sub_02035FD8(); + sub_020381C0(sub_020386AC, 0x64); + } +} + +void sub_020386AC(void) { + if ((sub_020351AC(_021D4150->unk4D) != 0) && (sub_020360E4(_021D4150->unk4D) != 0)) { + sub_020381C0(sub_02038710, 0x64); + return; + } + if (sub_02037700() != 0) { + sub_020381C0(sub_02038804, 0); + return; + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + sub_020381C0(sub_02038804, 0); +} + +void sub_02038710(void) { + if (sub_02037700() != 0) { + sub_020381C0(sub_02038804, 0); + return; + } + if (sub_020373B4(sub_0203769C()) != FALSE) { + _021D4150->unk4C = 0; + sub_020381C0(sub_0203876C, 0x78); + return; + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + sub_020381C0(sub_02038804, 0); +} + +void sub_0203876C(void) { + if (sub_02037700() != 0) { + sub_020381C0(sub_02038804, 0); + return; + } + if (_021D4150->unk4C == 2) { + sub_020381C0(sub_02038800, 0); + return; + } + if (_021D4150->unk4C == 1) { + sub_02034434(); + sub_020381C0(sub_020387E8, 0); + return; + } + if (_021D4150->unk44 > 0x6E) { + sub_020376E0(6, _0210F90C); + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + sub_020381C0(sub_02038804, 0); +} + +void sub_020387E8(void) { + if (sub_02037700() != 0) { + sub_020381C0(sub_02038804, 0); + } +} + +void sub_02038800(void) { +} + +void sub_02038804(void) { + _021D4150->unk4C = 0; + if (sub_02034FE8() != 0) { + if (_021D4150->unk48 != 0) { + _021D4150->unk48--; + sub_020381C0(sub_02038680, 0); + return; + } + sub_020381C0(sub_02038800, 0); + } +} + +void sub_02038854(void) { + if (sub_020376F8() == 0) { + if ((sub_02039918() == 0) && (sub_02034FE8() != 0)) { + sub_020381C0(sub_02038610, 0); + } + } else if (sub_0203769C() == 0) { + sub_02034638(); + } + if ((sub_02037700() != 0) && (sub_02039918() == 0)) { + sub_020381C0(sub_02038804, 0); + } +} + +void sub_020388A8(void) { + if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 0x200, 0) != 0)) { + sub_02035FD8(); + sub_020381C0(sub_02038404, 0); + } +} + +void sub_020388E0(void) { + u8 sp[2]; + _021D4150->unk4E = 0xD; + if (sub_0203769C() == 0) { + sp[1] = 0; + sub_020376E0(0xA, &sp[1]); + return; + } + sp[0] = 0; + sub_020376E0(0xA, sp); +} + +void sub_02038918(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk48 = 3; + sub_020381C0(sub_020389BC, 0); +} + +void sub_0203893C(void) { + _021D4150->unk4E = 7; +} + +void sub_0203894C(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk4E = 7; + _021D4150->unk48 = 3; + sub_0203A880(); + sub_020381C0(sub_02038668, 0); +} + +void sub_0203897C(void) { + _021D4150->unk4E = 0x1A; +} + +void sub_0203898C(s8 arg0) { + _021D4150->unk4D = arg0; + _021D4150->unk4E = 0x1A; + _021D4150->unk48 = 3; + sub_0203A880(); + sub_020381C0(sub_02038668, 0); +} + +void sub_020389BC(void) { + if (sub_02034FE8() != 0) { + sub_020381C0(sub_020389D4, 0); + } +} + +void sub_020389D4(void) { + if (sub_02035664() != 0) { + _021D4150->unk4E = 0xD; + if (sub_02035F14(0, 0, 0x200) != 0) { + sub_02035FE4(); + sub_020381C0(sub_02038A10, 0x64); + } + } +} + +void sub_02038A10(void) { + if ((sub_020351AC(_021D4150->unk4D) != 0) && (sub_020360E4(_021D4150->unk4D) != 0)) { + sub_020381C0(sub_02038A94, 0x64); + return; + } + if ((sub_02037700() != 0) || (_021D4150->unk44 == 0)) { + _021D4150->unk48--; + if (_021D4150->unk48 == 0) { + sub_020381C0(sub_02038800, 0); + return; + } + sub_020381C0(sub_020389BC, 0); + return; + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + } +} + +void sub_02038A94(void) { + if (_021D4150->unk44 > 0x5A) { + _021D4150->unk44--; + return; + } + if (sub_02037700() != 0) { + _021D4150->unk48--; + if (_021D4150->unk48 == 0) { + sub_020381C0(sub_02038800, 0); + return; + } + sub_020381C0(sub_020389BC, 0); + return; + } + if (sub_020373B4(sub_0203769C()) != FALSE) { + sub_020381C0(sub_020387E8, 0); + return; + } + if (_021D4150->unk44 != 0) { + _021D4150->unk44--; + return; + } + _021D4150->unk48--; + if (_021D4150->unk48 == 0) { + sub_020381C0(sub_02038800, 0); + return; + } + sub_020381C0(sub_020389BC, 0); +} + +void sub_02038B3C(u8 arg0, u8 arg1, u8 *arg2) { + u32 i; + if (sub_0203769C() == 0) { + s32 var_r3 = 1; + for (i = 0; i < 6; i++) { + if (_0210F90C[i] != arg2[i]) { + var_r3 = 0; + break; + } + } + if ((var_r3 != 0) && (_021D4150->unk57 == 0)) { + _0210F904[0] = arg0; + sub_02037184(7, _0210F904); + } else { + _0210F914[0] = arg0; + sub_02037184(7, _0210F914); + } + } +} + +void sub_02038B9C(u32 arg0, u32 arg1, u8 *arg2) { + u32 i; + s32 var_r4 = 1; + for (i = 1; i < 6; i++) { + if (_0210F904[i] != arg2[i]) { + var_r4 = 0; + break; + } + } + if (var_r4 != 0) { + u8 temp_r4 = *arg2; + if (temp_r4 == sub_0203769C()) { + _021D4150->unk4C = 1; + } + } else { + var_r4 = 1; + for (i = 1; i < 6; i++) { + if (_0210F914[i] != arg2[i]) { + var_r4 = 0; + break; + } + } + if (var_r4 != 0) { + u8 temp_r4_2 = *arg2; + u8 r0 = sub_0203769C(); + if (temp_r4_2 == r0) { + _021D4150->unk4C = 2; + } + } + } +} + +s32 sub_02038C18(void) { + return 6; +} + +void sub_02038C1C(s8 arg0) { + if (_021D4150 != NULL) { + _021D4150->unk4A = arg0; + sub_02033908(arg0); + } +} + +void sub_02038C34(void) { + sub_0203528C(); +} + +void sub_02038C3C(u32 arg0, s32 arg1) { + switch (arg0) { + case 0x333: + if (arg1 == 0xF) { + _021D4150->unk58 = (1 | _021D4150->unk58); + return; + } + return; + case 0x400318: + _021D4150->unk58 = (1 | _021D4150->unk58); + return; + case 0x400131: + _021D4150->unk58 = (2 | _021D4150->unk58); + return; + case 0x400286: + _021D4150->unk58 = (4 | _021D4150->unk58); + break; + } +} + +void sub_02038CC4(void) { + if (sub_02035F14(1, 1, 0x20) != 0) { + sub_02035FD8(); + sub_020381C0(sub_02038C34, 0); + } +} + +void sub_02038CE8(void) { + if (sub_02034DB8() != 0) { + sub_02034B0C(_021D4150->unk2C, 0); + sub_02034354(_021D4150->unk28, 0); + sub_02033A7C(sub_02038C3C); + sub_020381C0(sub_02038CC4, 0); + } +} + +void sub_02038D28(SaveData *arg0) { + if (sub_02037474() == 0) { + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7000); + sub_02037C98(arg0, 0x11); + _021D4150->unk4F = 0; + sub_020381C0(sub_02038CE8, 0); + } +} + +void sub_02038D64(void) { + if (_021D4150 != NULL) { + sub_020381C0(sub_0203847C, 5); + } +} + +u8 sub_02038D80(void) { + return _021D4150->unk58; +} + +BOOL sub_02038D90(void) { + sub_02037988(); + if (_021D4150 == NULL) { + return TRUE; + } + if ((_021D4150->unk4E == 0x18) || (_021D4150->unk4E == 0x19) || (_021D4150->unk4E == 0x24)) { + ov00_021E6CB8(); + return TRUE; + } + if (sub_02039998() != 0) { + if (_021D4150->unk4E == 0x21) { + sub_020381C0(sub_02039D78, 0); + } else { + sub_020381C0(sub_020392F4, 0); + } + } else { + sub_020381C0(sub_020381FC, 0); + } + return FALSE; +} + +void sub_02038E00(void) { + if (sub_02034DB8() != 0) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, 0); + if (sub_02035ED8(1, 1U, 0x200, 1) != 0) { + sub_02035FD8(); + sub_020381C0(sub_02038260, 0); + } + } +} + +void sub_02038E48(void) { + if (sub_02034DB8() != 0) { + sub_02034B0C(_021D4150->unk2C, 1); + sub_02034354(_021D4150->unk28, 0); + if (sub_02035F14(1, 1, 0x200) != 0) { + sub_02035FD8(); + sub_020381C0(sub_020382DC, 0); + } + } +} + +void sub_02038E90(void) { +} + +void sub_02038E94(void) { + if (ov00_021E5E54(0) < 0) { + sub_020381C0(sub_02038E90, 0); + } +} + +void sub_02038EB0(void) { +} + +void sub_02038EB4(void) { +} + +void sub_02038EB8(void) { + sub_0203786C(1); + s32 temp_r0 = ov00_021E5E54(0); + if ((temp_r0 >= 0xA) && (temp_r0 < 0x14)) { + sub_020381C0(sub_02038EB4, 0); + } else if (temp_r0 < 0) { + sub_020381C0(sub_02038E90, 0); + } else if (temp_r0 == 23) { + sub_020381C0(sub_02038E94, 0); + } else if (temp_r0 == 24) { + if (_021D4150->unk53 != 0) { + sub_020381C0(sub_02038E90, 0); + } else { + sub_020381C0(sub_02038EB0, 0); + } + } else if (temp_r0 == 21) { + if (_021D4150->unk53 != 0) { + sub_020381C0(sub_02038E90, 0); + } else { + sub_020381C0(sub_02038EB0, 0); + } + } + if ((_021D4150->unk53 != 0) && (_021D4150->unk4B != sub_02037454())) { + sub_020381C0(sub_02038E90, 0); + } +} void sub_02038F74(u32 arg0, s32 arg1, s32 arg2) { if (_021D4150 != NULL) { @@ -68,20 +973,15 @@ void sub_02038F9C(void) { s32 temp_r0 = ov00_021E5E54(0); if ((temp_r0 >= 0xA) && (temp_r0 < 0x14)) { sub_020381C0(sub_02038EB4, 0); - } - else if (temp_r0 < 0) { + } else if (temp_r0 < 0) { sub_020381C0(sub_02038E90, 0); - } - else if (temp_r0 == 0x14) { + } else if (temp_r0 == 0x14) { sub_020381C0(sub_02038EB8, 0); - } - else if (temp_r0 == 0x15) { + } else if (temp_r0 == 0x15) { sub_020381C0(sub_02038EB0, 0); - } - else if (temp_r0 == 0x16) { + } else if (temp_r0 == 0x16) { sub_020381C0(sub_02038EB4, 0); - } - else if (temp_r0 == 0x18) { + } else if (temp_r0 == 0x18) { sub_020381C0(sub_02038EB0, 0); } } @@ -162,8 +1062,7 @@ void sub_02039144(void) { s32 temp_r0_2 = ov00_021E6690(); if (temp_r0_2 < 0) { sub_020381C0(sub_02038E90, 0); - } - else if (temp_r0_2 == 0x1A) { + } else if (temp_r0_2 == 0x1A) { sub_020381C0(sub_02038E90, 0); } } @@ -173,8 +1072,7 @@ void sub_020391D0(void) { if ((ov00_021E6BE4(_021D4150->unk50) != 0) && (ov00_021E6C68() != 0)) { sub_020343E4(); sub_020381C0(sub_02039144, 0); - } - else if (ov00_021E5E54(0) < 0) { + } else if (ov00_021E5E54(0) < 0) { sub_020381C0(sub_02038E90, 0); } } @@ -217,7 +1115,7 @@ BOOL sub_020392A0(void) { return FALSE; } -u32* sub_020392D8(void) { +u32 *sub_020392D8(void) { GF_ASSERT(_021D4150); return &_021D4150->unk34; } @@ -281,10 +1179,10 @@ BOOL sub_020393C8(void) { return FALSE; } -void sub_02039418(SaveData* arg0) { +void sub_02039418(SaveData *arg0) { if (_021D4150 == NULL) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); - UnkStruct_sub_02039C6C* temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); _021D4150 = temp_r0; MI_CpuFill8(temp_r0, 0U, 0x68U); _021D4150->unk4E = 0x18; @@ -305,11 +1203,11 @@ void sub_0203946C(void) { } } -void sub_020394A0(SaveData* arg0) { +void sub_020394A0(SaveData *arg0) { if (_021D4150 == NULL) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); - UnkStruct_sub_02039C6C* temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); _021D4150 = temp_r0; MI_CpuFill8(temp_r0, 0U, 0x68U); _021D4150->unk4E = 0x19; @@ -330,10 +1228,10 @@ void sub_020394F4(void) { } } -void sub_02039528(SaveData* arg0) { +void sub_02039528(SaveData *arg0) { if (_021D4150 == NULL) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); - UnkStruct_sub_02039C6C* temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); _021D4150 = temp_r0; MI_CpuFill8(temp_r0, 0U, 0x68U); _021D4150->unk4E = 0x24; @@ -365,8 +1263,7 @@ BOOL sub_020395B0(void) { ov00_021EC210(); return TRUE; } - } - else if ((_021D4150->unk4E == 25) && (ov00_021EC11C(&sp4, &sp0) != 0) && (sp0 == 7)) { + } else if ((_021D4150->unk4E == 25) && (ov00_021EC11C(&sp4, &sp0) != 0) && (sp0 == 7)) { return TRUE; } return FALSE; @@ -386,8 +1283,7 @@ void sub_0203960C(void) { } else { sub_020381C0(sub_02039144, 0); } - } - else { + } else { if (temp_r0 != 0) { sub_020381C0(sub_02038E90, 0); } @@ -395,7 +1291,6 @@ void sub_0203960C(void) { sub_020381C0(sub_02038E90, 0); } } - } void sub_02039694(void) { @@ -410,7 +1305,7 @@ void sub_02039694(void) { } } -UnkStruct_ov44_0223197C* sub_020396FC(SaveData* arg0, u32 arg1) { +UnkStruct_ov44_0223197C *sub_020396FC(SaveData *arg0, u32 arg1) { Save_PlayerData_GetProfile(arg0); if (sub_02037474() != 0) { return NULL; @@ -426,7 +1321,7 @@ UnkStruct_ov44_0223197C* sub_020396FC(SaveData* arg0, u32 arg1) { return _021D4150->unk0; } -void sub_0203976C(SaveData* arg0, s32 arg1) { +void sub_0203976C(SaveData *arg0, s32 arg1) { Save_PlayerData_GetProfile(arg0); if (sub_02037474() == 0) { sub_0201A728(1); @@ -483,7 +1378,7 @@ void sub_0203986C(void) { s32 sub_0203988C(void) { if (_021D4150 != NULL) { - void* temp_r1 = _021D4150->unk24; + void *temp_r1 = _021D4150->unk24; if (temp_r1 == sub_02039DC4) { return 2; } @@ -497,7 +1392,7 @@ s32 sub_0203988C(void) { return 0; } -UnkStruct_ov44_0223197C* sub_020398C8(void) { +UnkStruct_ov44_0223197C *sub_020398C8(void) { return _021D4150->unk0; } @@ -539,11 +1434,11 @@ u8 sub_02039954(void) { return 0; } -void sub_0203996C(void* arg0) { +void sub_0203996C(void *arg0) { MI_CpuCopy8(arg0, &_021D4150->unk4, 6); } -void sub_02039980(void* arg0) { +void sub_02039980(void *arg0) { MI_CpuCopy8(&_021D4150->unk4, arg0, 6); } @@ -570,16 +1465,15 @@ u8 sub_020399B8(void) { void sub_020399DC(u32 errorCode) { ShowCommunicationError(HEAP_ID_DEFAULT, 1, errorCode); - while(TRUE) {} + while (TRUE) {} } void sub_020399EC(void) { ShowCommunicationError(HEAP_ID_DEFAULT, 4, 0); - while(TRUE) {} + while (TRUE) {} } void sub_020399FC(void) { - } void sub_02039A00(void) { @@ -689,10 +1583,10 @@ s32 sub_02039C6C(s32 arg0) { var_r4 = 0; } else if (arg0 < 0) { sub_020381C0(sub_02038E90, 0); - var_r4 = 0; + var_r4 = 0; } else if (arg0 == 23) { sub_020381C0(sub_02039E7C, 0); - var_r4 = 0; + var_r4 = 0; } else if (arg0 == 24) { var_r4 = 0; if (_021D4150->unk53 != 0) { @@ -733,7 +1627,7 @@ int sub_02039D3C(void) { return ret; } -void sub_02039D54(s32* arg0) { +void sub_02039D54(s32 *arg0) { s32 temp_r0 = ov00_021E5E54(0); if (temp_r0 >= 20) { *arg0 = temp_r0; @@ -763,7 +1657,6 @@ void sub_02039D8C(void) { } void sub_02039DC0(void) { - } void sub_02039DC4(void) { @@ -816,11 +1709,11 @@ void sub_02039E9C(void) { _021D4150->unk4E = 0x22; } -void sub_02039EAC(s32* arg0) { +void sub_02039EAC(s32 *arg0) { *arg0 = 0; } -s32 sub_02039EB4(SaveData* arg0, s32 arg1, u32* arg2) { +s32 sub_02039EB4(SaveData *arg0, s32 arg1, u32 *arg2) { switch (*arg2) { case 0: sub_02037AC0(0x6F); @@ -866,7 +1759,7 @@ s32 sub_02039EB4(SaveData* arg0, s32 arg1, u32* arg2) { return 0; } -void sub_02039F68(SaveWiFiHistory* arg0) { +void sub_02039F68(SaveWiFiHistory *arg0) { s32 temp_r7 = sub_02037454(); if (sub_02034818(0) != NULL) { for (int i = 0; i < temp_r7; i++) { @@ -879,15 +1772,15 @@ void sub_02039F68(SaveWiFiHistory* arg0) { } } -void sub_02039FB8(SaveWiFiHistory* arg0, s32 arg1, s32 arg2, u8 arg3) { +void sub_02039FB8(SaveWiFiHistory *arg0, s32 arg1, s32 arg2, u8 arg3) { if (WiFiHistory_GetLocationSeenState(arg0, arg1, arg2) == 0) { WiFiHistory_SetLocationSeenState(arg0, arg1, arg2, 1); } } s32 sub_02039FD8(enum HeapID arg0) { - void* temp_r0 = Heap_Alloc(arg0, 0x720); - s32 temp_r5 = DWC_Init(((u32)temp_r0 + 31) & ~31); //TODO + void *temp_r0 = Heap_Alloc(arg0, 0x720); + s32 temp_r5 = DWC_Init(((u32)temp_r0 + 31) & ~31); // TODO Heap_Free(temp_r0); return temp_r5; } @@ -901,34 +1794,34 @@ s32 sub_02039FFC(enum HeapID arg0) { return temp_r4; } -void sub_0203A01C(UnkStruct_021D2230* arg0) { +void sub_0203A01C(UnkStruct_021D2230 *arg0) { - DWCUserData* userData = sub_0202C08C(arg0); + DWCUserData *userData = sub_0202C08C(arg0); if (DWC_CheckUserData(userData) == 0) { DWC_CreateUserData(userData, 0x4144414A); DWC_ClearDirtyFlag(userData); } } -int sub_0203A040(UnkStruct_021D2230* arg0) { - DWCUserData* userData = sub_0202C08C(arg0); +int sub_0203A040(UnkStruct_021D2230 *arg0) { + DWCUserData *userData = sub_0202C08C(arg0); DWCFriendData friendData; DWC_CreateExchangeToken(userData, &friendData); return DWC_GetGsProfileId(userData, &friendData); } -BOOL sub_0203A05C(SaveData* arg0) { - DWCUserData* userData = sub_0202C08C(sub_0202C6F4(arg0)); +BOOL sub_0203A05C(SaveData *arg0) { + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(arg0)); if ((DWC_CheckHasProfile(userData) != 0) && (DWC_CheckValidConsole(userData) != 0)) { return TRUE; } return FALSE; } -s32 sub_0203A084(SaveData* arg0, DWCFriendData* arg1, s32* arg2) { +s32 sub_0203A084(SaveData *arg0, DWCFriendData *arg1, s32 *arg2) { int i; - DWCUserData* userData = sub_0202C08C(sub_0202C6F4(arg0)); - DWCFriendData* friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(arg0)); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); *arg2 = -1; if (DWC_IsValidFriendData(arg1) == 0) { return 3; @@ -951,10 +1844,10 @@ s32 sub_0203A084(SaveData* arg0, DWCFriendData* arg1, s32* arg2) { return 2; } -int sub_0203A128(SaveData* arg0, u64 arg1, int* arg2) { +int sub_0203A128(SaveData *arg0, u64 arg1, int *arg2) { int i; - DWCUserData* userData = sub_0202C08C(sub_0202C6F4(arg0)); - DWCFriendData* friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(arg0)); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); if (!DWC_CheckFriendKey(userData, arg1)) { return 3; } @@ -964,7 +1857,7 @@ int sub_0203A128(SaveData* arg0, u64 arg1, int* arg2) { return 3; } *arg2 = -1; - for (i = 0; i < 32; i ++) { + for (i = 0; i < 32; i++) { if (DWC_GetGsProfileId(userData, &newFriendData) == DWC_GetGsProfileId(userData, &friendData[i])) { *arg2 = i; return 0; @@ -976,9 +1869,9 @@ int sub_0203A128(SaveData* arg0, u64 arg1, int* arg2) { return 2; } -s32 sub_0203A1C4(SaveData* arg0, s32* arg1, enum HeapID arg2) { +s32 sub_0203A1C4(SaveData *arg0, s32 *arg1, enum HeapID arg2) { s32 spC = 0; - DWCFriendData* friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); for (int i = 0; i < sub_02037454(); i++) { if (i != sub_0203769C()) { DWCFriendData *temp_r0 = sub_0203484C(i); @@ -989,15 +1882,13 @@ s32 sub_0203A1C4(SaveData* arg0, s32* arg1, enum HeapID arg2) { if (*arg1 == 0) { sub_0203A280(arg0, i, sp10, arg2, 2); sub_02034A20(arg0); - } - else if (*arg1 == 1) { + } else if (*arg1 == 1) { if (sub_02039998() == 0) { sub_0203A280(arg0, i, sp10, arg2, 1); MI_CpuCopy8(temp_r0, &friendData[sp10], sizeof(DWCFriendData)); sub_02034A20(arg0); } - } - else if (*arg1 == 2) { + } else if (*arg1 == 2) { spC = 1; } } @@ -1007,15 +1898,15 @@ s32 sub_0203A1C4(SaveData* arg0, s32* arg1, enum HeapID arg2) { return spC; } -void sub_0203A280(SaveData* arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4) { - UnkStruct_021D2230* temp_r0 = sub_0202C6F4(arg0); - void* sp8 = sub_0202C23C(temp_r0, arg2); - PlayerProfile* playerProfile = sub_02034818(arg1); +void sub_0203A280(SaveData *arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4) { + UnkStruct_021D2230 *temp_r0 = sub_0202C6F4(arg0); + void *sp8 = sub_0202C23C(temp_r0, arg2); + PlayerProfile *playerProfile = sub_02034818(arg1); if (arg4 != 2) { MI_CpuCopy8(sub_0203484C(arg1), sp8, 0xC); } if (arg4 == 0) { - String* string = PlayerProfile_GetPlayerName_NewString(playerProfile, arg3); + String *string = PlayerProfile_GetPlayerName_NewString(playerProfile, arg3); sub_0202C270(temp_r0, arg2, string); String_Delete(string); sub_0202C190(temp_r0, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); @@ -1024,7 +1915,7 @@ void sub_0203A280(SaveData* arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4 sub_0202C190(temp_r0, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); sub_0202C190(temp_r0, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); } - String* string = String_New(0x78, arg3); + String *string = String_New(0x78, arg3); CopyU16ArrayToString(string, sub_02034884(arg1)); sub_0202C2B4(temp_r0, arg2, string); String_Delete(string); @@ -1032,10 +1923,10 @@ void sub_0203A280(SaveData* arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4 sub_02034A20(arg0); } -s32 sub_0203A378(SaveData* arg0, s32 arg1) { +s32 sub_0203A378(SaveData *arg0, s32 arg1) { int i; - DWCFriendData* friendData = sub_0203484C(arg1); - UnkStruct_021D2230* r5 = sub_0202C6F4(arg0); + DWCFriendData *friendData = sub_0203484C(arg1); + UnkStruct_021D2230 *r5 = sub_0202C6F4(arg0); for (i = 0; i < 32; i++) { if (DWC_IsEqualFriendData(friendData, sub_0202C23C(r5, i)) != 0) { @@ -1043,4 +1934,4 @@ s32 sub_0203A378(SaveData* arg0, s32 arg1) { } } return 32; -} \ No newline at end of file +} From d8b4080efd464b090d187ad0b87ab204d650f09b Mon Sep 17 00:00:00 2001 From: ferwardle Date: Thu, 2 Jul 2026 19:33:25 -0500 Subject: [PATCH 4/7] Format and document unk_02037C94 --- asm/include/unk_02037C94.inc | 258 ---------------- asm/unk_02037C94.s | 35 --- include/launch_application_internal.h | 2 +- include/overlay_44_02232E9C.h | 2 +- include/unk_0202C034.h | 30 +- include/unk_02037C94.h | 48 +-- main.lsf | 3 +- src/overlay_44_0222CDAC.c | 2 +- src/{unk_02037C94_1.c => unk_02037C94.c} | 358 ++++++++++++----------- 9 files changed, 224 insertions(+), 514 deletions(-) delete mode 100644 asm/include/unk_02037C94.inc delete mode 100644 asm/unk_02037C94.s rename src/{unk_02037C94_1.c => unk_02037C94.c} (82%) diff --git a/asm/include/unk_02037C94.inc b/asm/include/unk_02037C94.inc deleted file mode 100644 index f9585ece8..000000000 --- a/asm/include/unk_02037C94.inc +++ /dev/null @@ -1,258 +0,0 @@ -#include -#pragma once -.public Sound_Stop -.public sub_0201A728 -.public sub_0201A738 -.public sub_0201A79C -.public Heap_CreateAtEnd -.public Heap_Destroy -.public Heap_Alloc -.public Heap_Free -.public GF_AssertFail -.public String_New -.public String_Delete -.public CopyU16ArrayToString -.public Save_PrepareForAsyncWrite -.public Save_WriteFileAsync -.public Save_Cancel -.public Save_PlayerData_GetProfile -.public PlayerProfile_GetPlayerName_NewString -.public PlayerProfile_GetTrainerID -.public PlayerProfile_GetTrainerGender -.public PlayerProfile_GetAvatar -.public PlayerProfile_GetLanguage -.public sub_0202C08C -.public sub_0202C090 -.public sub_0202C190 -.public sub_0202C23C -.public sub_0202C270 -.public sub_0202C2B4 -.public sub_0202C6F4 -.public WiFiHistory_GetLocationSeenState -.public WiFiHistory_SetLocationSeenState -.public sub_02033908 -.public sub_02033974 -.public sub_02033A0C -.public sub_02033A7C -.public sub_02033AA4 -.public sub_02033ACC -.public sub_02033FC4 -.public sub_02034044 -.public sub_0203410C -.public sub_02034154 -.public sub_02034354 -.public sub_020343E4 -.public sub_02034434 -.public sub_02034638 -.public sub_02034818 -.public sub_0203484C -.public sub_02034884 -.public sub_020348A8 -.public sub_020348CC -.public sub_02034A20 -.public sub_02034B0C -.public sub_02034BE4 -.public sub_02034D8C -.public sub_02034DB8 -.public sub_02034DE0 -.public sub_02034FE8 -.public sub_020350A8 -.public sub_020351AC -.public sub_0203528C -.public sub_02035630 -.public sub_02035650 -.public sub_02035664 -.public sub_020356C0 -.public sub_020356EC -.public sub_020358B0 -.public sub_02035ED8 -.public sub_02035F14 -.public sub_02035FD8 -.public sub_02035FE4 -.public sub_02036024 -.public sub_020360E4 -.public sub_0203622C -.public sub_0203624C -.public sub_02036274 -.public sub_020367A8 -.public sub_02036904 -.public sub_020369CC -.public sub_02037184 -.public sub_020373B4 -.public sub_02037454 -.public sub_02037474 -.public sub_020374E4 -.public sub_0203769C -.public sub_020376E0 -.public sub_020376F8 -.public sub_02037700 -.public sub_0203778C -.public sub_0203786C -.public sub_020378E4 -.public sub_02037988 -.public sub_02037AC0 -.public sub_02037B38 -.public sub_02037C94 -.public sub_02037D78 -.public sub_02037D8C -.public sub_02037DD4 -.public sub_02037E1C -.public sub_02037E38 -.public sub_02037E9C -.public sub_02037EC0 -.public sub_02037EC8 -.public sub_02037F18 -.public sub_02037F64 -.public sub_02037F94 -.public sub_02037FCC -.public sub_02037FF0 -.public sub_02038070 -.public sub_02038094 -.public sub_020380B0 -.public sub_020380CC -.public sub_020380F4 -.public sub_02038104 -.public sub_02038114 -.public sub_02038148 -.public sub_0203817C -.public sub_020388E0 -.public sub_02038918 -.public sub_0203893C -.public sub_0203894C -.public sub_0203897C -.public sub_0203898C -.public sub_02038B3C -.public sub_02038B9C -.public sub_02038C18 -.public sub_02038C1C -.public sub_02038D28 -.public sub_02038D64 -.public sub_02038D80 -.public sub_02038D90 -.public sub_02038F74 -.public sub_02039080 -.public sub_020390C4 -.public sub_02039220 -.public sub_02039264 -.public sub_02039274 -.public sub_020392A0 -.public sub_020392D8 -.public sub_02039330 -.public sub_02039358 -.public sub_02039378 -.public sub_020393B4 -.public sub_020393C8 -.public sub_02039418 -.public sub_0203946C -.public sub_020394A0 -.public sub_020394F4 -.public sub_02039528 -.public sub_0203957C -.public sub_020396FC -.public sub_0203976C -.public sub_020397C8 -.public sub_020397E4 -.public sub_020397FC -.public sub_0203981C -.public sub_0203986C -.public sub_0203988C -.public sub_020398C8 -.public sub_020398D4 -.public sub_02039918 -.public sub_0203993C -.public sub_02039954 -.public sub_0203996C -.public sub_02039980 -.public sub_02039998 -.public sub_020399B8 -.public sub_020399DC -.public sub_020399EC -.public sub_020399FC -.public sub_02039A00 -.public sub_02039AA4 -.public sub_02039AD8 -.public sub_02039AF8 -.public sub_02039B18 -.public sub_02039B38 -.public sub_02039B58 -.public sub_02039B7C -.public sub_02039E9C -.public sub_02039EAC -.public sub_02039EB4 -.public sub_02039F68 -.public sub_02039FB8 -.public sub_02039FD8 -.public sub_02039FFC -.public sub_0203A01C -.public sub_0203A040 -.public sub_0203A05C -.public sub_0203A084 -.public sub_0203A128 -.public sub_0203A1C4 -.public sub_0203A280 -.public sub_0203A378 -.public sub_0203A880 -.public sub_0203A914 -.public sub_0203A930 -.public ShowCommunicationError -.public LoadDwcOverlay -.public UnloadDwcOverlay -.public LoadOVY38 -.public UnloadOVY38 -.public DWC_Init -.public DWC_CheckFriendKey -.public DWC_IsValidFriendData -.public DWC_CreateUserData -.public DWC_CheckUserData -.public DWC_CheckHasProfile -.public DWC_CheckValidConsole -.public DWC_ClearDirtyFlag -.public DWC_GetGsProfileId -.public DWC_CreateFriendKeyToken -.public DWC_CreateExchangeToken -.public DWC_IsEqualFriendData -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public WM_GetLinkLevel -.public _ll_mul -.public gSystem -.public ov00_021E5900 -.public ov00_021E5B6C -.public ov00_021E5C84 -.public ov00_021E5E54 -.public ov00_021E6690 -.public ov00_021E6BE4 -.public ov00_021E6C68 -.public ov00_021E6CA4 -.public ov00_021E6CB8 -.public ov00_021E6D7C -.public ov00_021E70B8 -.public ov00_021EC11C -.public ov00_021EC210 -.public ov00_021EC9D4 -.public ov45_0222E6C8 -.public ov45_0222E804 -.public ov45_0222E8F4 -.public ov45_0222E91C -.public ov45_0222E944 -.public ov45_0222F028 -.public ov45_0222F154 -.public ov45_0222F254 -.public ov45_0222F274 -.public ov45_0222F350 -.public ov45_0222F464 -.public ov45_0222F70C - -.public sub_02039D78 -.public sub_02039DE4 -.public sub_02039DC4 -.public sub_02039E7C -.public sub_02039C60 -.public sub_02039E7C -.public sub_02039C14 -.public sub_02039DC0 -.public sub_02039BA0 -.public sub_02039E30 -.public sub_020392F4 -.public sub_0203827C -.public sub_02038398 \ No newline at end of file diff --git a/asm/unk_02037C94.s b/asm/unk_02037C94.s deleted file mode 100644 index 54c86712b..000000000 --- a/asm/unk_02037C94.s +++ /dev/null @@ -1,35 +0,0 @@ - .include "asm/macros.inc" - .include "unk_02037C94.inc" - .include "global.inc" - - .bss - -.public _021D4150 -_021D4150: - .space 0x4 - - .rodata - -.public _020F6A90 -_020F6A90: - .word sub_0203827C - .word sub_02038398 - .word 0 - - .data - - .balign 4, 0 -.public _0210F904 -_0210F904: - .asciz " GAME" - .balign 4, 0 -.public _0210F90C -_0210F90C: - .asciz "FREAK" - .balign 4, 0 -.public _0210F914 -_0210F914: - .asciz " FULL" - - .text - diff --git a/include/launch_application_internal.h b/include/launch_application_internal.h index 88bb5ae01..b7acc3004 100644 --- a/include/launch_application_internal.h +++ b/include/launch_application_internal.h @@ -130,7 +130,7 @@ typedef struct UnkStruct_0203F844 { Party *party; PCStorage *pcStorage; Pokedex *pokedex; - UnkStruct_021D2230 *unk14; + WiFiList *unk14; SaveWiFiHistory *wifiHistory; PlayerProfile *profile; SaveData *saveData; diff --git a/include/overlay_44_02232E9C.h b/include/overlay_44_02232E9C.h index eb3d501e4..277a57447 100644 --- a/include/overlay_44_02232E9C.h +++ b/include/overlay_44_02232E9C.h @@ -159,7 +159,7 @@ typedef struct UnkStruct_ov44_0222AB24 { } UnkStruct_ov44_0222AB24; struct UnkStruct_ov44_022319EC { - UnkStruct_021D2230 *unk0; + WiFiList *unk0; UnkStruct_ov44_0223197C *unk4; u8 unk8[4]; u8 unkC[0x20]; diff --git a/include/unk_0202C034.h b/include/unk_0202C034.h index e8b04d370..6dbe7ac77 100644 --- a/include/unk_0202C034.h +++ b/include/unk_0202C034.h @@ -5,23 +5,23 @@ #include "pm_string.h" #include "dwcaccount.h" -typedef struct UnkStruct_021D2230 UnkStruct_021D2230; +typedef struct WiFiList WiFiList; void sub_0202C6FC(SaveData *saveData); void sub_0202C714(SaveData *saveData); -UnkStruct_021D2230 *sub_0202C6F4(SaveData *saveData); -int sub_0202C2F8(struct UnkStruct_021D2230 *a0); -DWCUserData *sub_0202C08C(UnkStruct_021D2230 *a0); -u16* sub_0202C254(struct UnkStruct_021D2230 *a0, s32 a1); -u16* sub_0202C298(struct UnkStruct_021D2230 *a0, s32 a1); -s32 sub_0202C090(struct UnkStruct_021D2230 *a0, s32 a1, s32 a2); -void sub_0202C46C(struct UnkStruct_021D2230 *a0); -void sub_0202C4B0(struct UnkStruct_021D2230 *a0, s32 a1); -u16 sub_0202C318(struct UnkStruct_021D2230 *a0); -void sub_0202C190(UnkStruct_021D2230* a0, int a1, int a2, u32 a3); -void sub_0202C03C(struct UnkStruct_021D2230 *a0); -void sub_0202C2B4(struct UnkStruct_021D2230 *a0, int a1, String *a2); -void sub_0202C270(struct UnkStruct_021D2230 *a0, int a1, String *a2); -DWCFriendData *sub_0202C23C(struct UnkStruct_021D2230 *a0, int a1); +WiFiList *sub_0202C6F4(SaveData *saveData); +int sub_0202C2F8(struct WiFiList *a0); +DWCUserData *sub_0202C08C(WiFiList *a0); +u16* sub_0202C254(struct WiFiList *a0, s32 a1); +u16* sub_0202C298(struct WiFiList *a0, s32 a1); +s32 sub_0202C090(struct WiFiList *a0, s32 a1, s32 a2); +void sub_0202C46C(struct WiFiList *a0); +void sub_0202C4B0(struct WiFiList *a0, s32 a1); +u16 sub_0202C318(struct WiFiList *a0); +void sub_0202C190(WiFiList* a0, int a1, int a2, u32 a3); +void sub_0202C03C(struct WiFiList *a0); +void sub_0202C2B4(struct WiFiList *a0, int a1, String *a2); +void sub_0202C270(struct WiFiList *a0, int a1, String *a2); +DWCFriendData *sub_0202C23C(struct WiFiList *a0, int a1); #endif // POKEHEARTGOLD_UNK_0202C034_H diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index 1a8606f1c..f29d6b918 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -12,19 +12,21 @@ typedef struct { u64 add; } MATHRandContext32; +typedef void (*voidFunc)(void); + s32 sub_02037C94(void); -void sub_02037C98(SaveData *arg0, s8 arg1); +void sub_02037C98(SaveData *saveData, s8 arg1); void sub_02037D2C(void); BOOL sub_02037D78(void); -void sub_02037D8C(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3); -void sub_02037DD4(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3); +void sub_02037D8C(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3); +void sub_02037DD4(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3); void sub_02037E1C(s8 arg0); void sub_02037E38(void); void sub_02037E4C(void); void sub_02037E9C(void); void sub_02037EC0(void); s32 sub_02037EC8(void); -void sub_02037F18(SaveData *arg0); +void sub_02037F18(SaveData *saveData); void sub_02037F64(s8 arg0); s32 sub_02037F94(void); s32 sub_02037FCC(void); @@ -35,8 +37,8 @@ void sub_020380B0(void); void sub_020380CC(void); void sub_020380F4(void); void sub_02038104(void); -void sub_02038114(SaveData *arg0, s8 arg1); -void sub_02038148(SaveData *arg0, s8 arg1); +void sub_02038114(SaveData *saveData, s8 arg1); +void sub_02038148(SaveData *saveData, s8 arg1); void sub_0203817C(void); void sub_020381C0(void (*func)(), int arg1); void sub_020381D0(void); @@ -92,7 +94,7 @@ void sub_02038C34(void); void sub_02038C3C(u32 arg0, s32 arg1); void sub_02038CC4(void); void sub_02038CE8(void); -void sub_02038D28(SaveData *arg0); +void sub_02038D28(SaveData *saveData); void sub_02038D64(void); u8 sub_02038D80(void); BOOL sub_02038D90(void); @@ -122,17 +124,17 @@ void sub_02039358(void); void sub_02039378(void); void sub_020393B4(void); BOOL sub_020393C8(void); -void sub_02039418(SaveData *arg0); +void sub_02039418(SaveData *saveData); void sub_0203946C(void); -void sub_020394A0(SaveData *arg0); +void sub_020394A0(SaveData *saveData); void sub_020394F4(void); -void sub_02039528(SaveData *arg0); +void sub_02039528(SaveData *saveData); void sub_0203957C(void); BOOL sub_020395B0(void); void sub_0203960C(void); void sub_02039694(void); -UnkStruct_ov44_0223197C *sub_020396FC(SaveData *arg0, u32 arg1); -void sub_0203976C(SaveData *arg0, s32 arg1); +UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, u32 arg1); +void sub_0203976C(SaveData *saveData, s32 arg1); void sub_020397C8(void); u8 sub_020397E4(void); BOOL sub_020397FC(void); @@ -177,18 +179,18 @@ void sub_02039E30(void); void sub_02039E7C(void); void sub_02039E9C(void); void sub_02039EAC(s32 *arg0); -s32 sub_02039EB4(SaveData *arg0, s32 arg1, u32 *arg2); +s32 sub_02039EB4(SaveData *saveData, s32 arg1, u32 *arg2); void sub_02039F68(SaveWiFiHistory *arg0); void sub_02039FB8(SaveWiFiHistory *arg0, s32 arg1, s32 arg2, u8 arg3); -s32 sub_02039FD8(enum HeapID arg0); -s32 sub_02039FFC(enum HeapID arg0); -void sub_0203A01C(UnkStruct_021D2230 *arg0); -int sub_0203A040(UnkStruct_021D2230 *arg0); -BOOL sub_0203A05C(SaveData *arg0); -s32 sub_0203A084(SaveData *arg0, DWCFriendData *arg1, s32 *arg2); -int sub_0203A128(SaveData *arg0, u64 arg1, int *arg2); -s32 sub_0203A1C4(SaveData *arg0, s32 *arg1, enum HeapID arg2); -void sub_0203A280(SaveData *arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4); -s32 sub_0203A378(SaveData *arg0, s32 arg1); +s32 sub_02039FD8(enum HeapID heapID); +s32 sub_02039FFC(enum HeapID heapID); +void sub_0203A01C(WiFiList *arg0); +int sub_0203A040(WiFiList *arg0); +BOOL sub_0203A05C(SaveData *saveData); +s32 sub_0203A084(SaveData *saveData, DWCFriendData *arg1, s32 *arg2); +int sub_0203A128(SaveData *saveData, u64 arg1, int *arg2); +s32 sub_0203A1C4(SaveData *saveData, s32 *arg1, enum HeapID heapID); +void sub_0203A280(SaveData *saveData, s32 arg1, s32 arg2, enum HeapID heapID, u32 arg4); +s32 sub_0203A378(SaveData *saveData, s32 arg1); #endif // POKEHEARTGOLD_UNK_02037C94_H diff --git a/main.lsf b/main.lsf index 661866eb7..8391d029c 100644 --- a/main.lsf +++ b/main.lsf @@ -151,8 +151,7 @@ Static main Object asm/unk_02034B0C.o Object asm/unk_02035900.o Object asm/unk_020379A0.o - Object asm/unk_02037C94.o - Object src/unk_02037C94_1.o + Object src/unk_02037C94.o Object asm/unk_0203A3B0.o Object src/communication_error.o Object src/unk_0203AC88.o diff --git a/src/overlay_44_0222CDAC.c b/src/overlay_44_0222CDAC.c index 7ac0486ee..63d74cbcf 100644 --- a/src/overlay_44_0222CDAC.c +++ b/src/overlay_44_0222CDAC.c @@ -4517,7 +4517,7 @@ void ov44_02230D8C(UnkStruct_ov44_022319EC *arg0, enum HeapID heapID) { } void ov44_02230E5C(UnkStruct_ov44_022319EC *arg0, enum HeapID heapID) { - UnkStruct_021D2230 *temp_r6 = sub_0202C6F4(arg0->saveData); + WiFiList *temp_r6 = sub_0202C6F4(arg0->saveData); s32 temp_r4 = arg0->unkB1C.unk71 - 1; // PLAZA GAMES PLAYED ReadMsgDataIntoString(arg0->unk168, msg_0778_00070, arg0->unk178); diff --git a/src/unk_02037C94_1.c b/src/unk_02037C94.c similarity index 82% rename from src/unk_02037C94_1.c rename to src/unk_02037C94.c index f3887dcd2..ade0ff15a 100644 --- a/src/unk_02037C94_1.c +++ b/src/unk_02037C94.c @@ -1,3 +1,5 @@ +#include "unk_02037C94.h" + #include "communication_error.h" #include "dwcaccount.h" #include "overlay_00_thumb.h" @@ -11,7 +13,6 @@ #include "unk_02034B0C.h" #include "unk_02035900.h" #include "unk_020379A0.h" -#include "unk_02037C94.h" #include "unk_0203A3B0.h" #include "unk_020915B0.h" @@ -53,34 +54,36 @@ typedef struct UnkStruct_sub_02039C6C { u8 unk64; } UnkStruct_sub_02039C6C; -extern UnkStruct_sub_02039C6C *_021D4150; -extern u8 _0210F904[]; -extern u8 _0210F90C[]; -extern u8 _0210F914[]; -extern void *_020F6A90[3]; +UnkStruct_sub_02039C6C *_021D4150 = NULL; + +const voidFunc _020F6A90[3] = { sub_0203827C, sub_02038398, NULL }; + +static u8 _0210F904[] = " GAME"; +static u8 _0210F90C[] = "FREAK"; +static u8 _0210F914[] = " FULL"; s32 sub_02037C94(void) { - return 0x46; + return 70; } -void sub_02037C98(SaveData *arg0, s8 arg1) { +void sub_02037C98(SaveData *saveData, s8 arg1) { if (_021D4150 == NULL) { - GF_ASSERT(arg0); + GF_ASSERT(saveData); sub_02034D8C(); UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); _021D4150 = temp_r0; MI_CpuFill8(temp_r0, 0, sizeof(UnkStruct_sub_02039C6C)); - _021D4150->unk44 = 0x32; + _021D4150->unk44 = 50; _021D4150->unk52 = 1; - _021D4150->unk28 = arg0; - _021D4150->unk2C = Save_PlayerData_GetProfile(arg0); + _021D4150->unk28 = saveData; + _021D4150->unk2C = Save_PlayerData_GetProfile(saveData); _021D4150->unk4A = 2; _021D4150->unk4C = 0; _021D4150->unk57 = 0; _021D4150->unk4E = arg1; sub_0203778C(&_021D4150->mathRandContext); sub_0203410C(0, 0, 0); - if ((arg1 != 9) && (arg1 != 0x11) && (arg1 != 0xF)) { + if ((arg1 != 9) && (arg1 != 17) && (arg1 != 15)) { sub_0203A880(); } } @@ -107,20 +110,20 @@ BOOL sub_02037D78(void) { return _021D4150 ? TRUE : FALSE; } -void sub_02037D8C(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3) { +void sub_02037D8C(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3) { if (sub_02037474() == 0) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); - sub_02037C98(arg0, arg1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); _021D4150->unk4F = arg2; _021D4150->unk30 = arg3; sub_020381C0(sub_02038218, 0); } } -void sub_02037DD4(SaveData *arg0, s8 arg1, s8 arg2, s32 arg3) { +void sub_02037DD4(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3) { if (sub_02037474() == 0) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); - sub_02037C98(arg0, arg1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); _021D4150->unk4F = arg2; _021D4150->unk30 = arg3; sub_020381C0(sub_02038294, 0); @@ -154,7 +157,7 @@ void sub_02037E4C(void) { void sub_02037E9C(void) { if (_021D4150 != NULL) { - _021D4150->unk40 = 0x708; + _021D4150->unk40 = 1800; sub_020381C0(sub_02037E4C, 5); } } @@ -164,9 +167,9 @@ void sub_02037EC0(void) { } s32 sub_02037EC8(void) { - void *sp0[3]; + const voidFunc sp0[3]; sp0 = _020F6A90; - void *func = _021D4150->unk24; + voidFunc func = _021D4150->unk24; if (!_021D4150) { return 0; } @@ -178,12 +181,12 @@ s32 sub_02037EC8(void) { return 0; } -void sub_02037F18(SaveData *arg0) { +void sub_02037F18(SaveData *saveData) { if (_021D4150 == NULL) { - if (!Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U)) { + if (!Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800)) { sub_020399EC(); } - sub_02037C98(arg0, 9); + sub_02037C98(saveData, 9); _021D4150->unk4E = 9; _021D4150->unk4F = 0; sub_020381C0(sub_020384B4, 0); @@ -233,7 +236,7 @@ void sub_02037FF0(void) { sub_02033908(_021D4150->unk4A); if (sub_0203769C() == 0) { sub_02033ACC(1); - sub_020381C0(sub_02038418, 0xF); + sub_020381C0(sub_02038418, 15); } else { sub_020381C0(sub_02038460, 5); } @@ -270,25 +273,25 @@ void sub_020380CC(void) { } void sub_020380F4(void) { - _021D4150->unk4E = 0x12; + _021D4150->unk4E = 18; } void sub_02038104(void) { _021D4150->unk4E = 9; } -void sub_02038114(SaveData *arg0, s8 arg1) { +void sub_02038114(SaveData *saveData, s8 arg1) { if (sub_02037474() == 0) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); - sub_02037C98(arg0, arg1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); sub_020381C0(sub_02038E00, 0); } } -void sub_02038148(SaveData *arg0, s8 arg1) { +void sub_02038148(SaveData *saveData, s8 arg1) { if (sub_02037474() == 0) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); - sub_02037C98(arg0, arg1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, arg1); sub_020381C0(sub_02038E48, 0); } } @@ -332,7 +335,7 @@ void sub_02038218(void) { if (sub_02034DB8() != 0) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, _021D4150->unk30); - if (sub_02035ED8(1, 1U, 0x200, 1) != 0) { + if (sub_02035ED8(1, 1, 512, 1) != 0) { sub_02035FD8(); sub_020381C0(sub_02038260, 0); } @@ -355,7 +358,7 @@ void sub_02038294(void) { if (sub_02034DB8() != 0) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, _021D4150->unk30); - if (sub_02035F14(1, 1, 0x200) != 0) { + if (sub_02035F14(1, 1, 512) != 0) { sub_02035FD8(); sub_020381C0(sub_020382DC, 0); } @@ -369,7 +372,7 @@ void sub_020382DC(void) { void sub_020382E4(void) { sub_0203528C(); if (sub_020360E4(_021D4150->unk4D) != 0) { - sub_020381C0(sub_0203830C, 0xA); + sub_020381C0(sub_0203830C, 10); } } @@ -392,9 +395,9 @@ void sub_02038358(void) { _021D4150->unk44--; return; } - if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 0x200) != 0)) { + if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 512) != 0)) { sub_02035FD8(); - sub_020381C0(sub_020382E4, 0xA); + sub_020381C0(sub_020382E4, 10); } } @@ -414,9 +417,9 @@ void sub_020383C4(void) { _021D4150->unk44--; return; } - if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 0x200) != 0)) { + if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 512) != 0)) { sub_02035FD8(); - sub_020381C0(sub_020382DC, 0xA); + sub_020381C0(sub_020382DC, 10); } } @@ -466,9 +469,9 @@ void sub_020384B4(void) { sub_02034B0C(_021D4150->unk2C, 1); sub_02033908(_021D4150->unk4A); sub_02034354(_021D4150->unk28, 0); - if (sub_02035F14(1, 1, 0x200) != 0) { + if (sub_02035F14(1, 1, 512) != 0) { sub_02035FD8(); - sub_020381C0(sub_02038508, 0x40U); + sub_020381C0(sub_02038508, 64); } } } @@ -491,14 +494,14 @@ void sub_02038538(void) { } void sub_02038550(void) { - if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 0x200, 1) != 0)) { + if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 512, 1) != 0)) { // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 0); MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; mathRandContext->x = (mathRandContext->mul * mathRandContext->x) + mathRandContext->add; - // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 0); + // sub_02035FD8(); _021D4150->unk52 = 0; - sub_020381C0(&sub_020385B8, 0x2710); + sub_020381C0(&sub_020385B8, 10000); } } @@ -521,14 +524,14 @@ void sub_020385B8(void) { } void sub_02038610(void) { - if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 0x200) != 0)) { + if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 512) != 0)) { sub_02035FD8(); - // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 32) + // Equivalent to u32 rand = MATH_Rand32(&_021D4150->mathRandContext, 32) MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; u64 r0 = (mathRandContext->mul * mathRandContext->x) + mathRandContext->add; mathRandContext->x = r0; u32 rand = (u32)(((mathRandContext->x >> 32) * 32) >> 32); - // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 32) + // sub_020381C0(sub_02038508, rand); } } @@ -540,15 +543,15 @@ void sub_02038668(void) { } void sub_02038680(void) { - if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 0x200) != 0)) { + if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 512) != 0)) { sub_02035FD8(); - sub_020381C0(sub_020386AC, 0x64); + sub_020381C0(sub_020386AC, 100); } } void sub_020386AC(void) { if ((sub_020351AC(_021D4150->unk4D) != 0) && (sub_020360E4(_021D4150->unk4D) != 0)) { - sub_020381C0(sub_02038710, 0x64); + sub_020381C0(sub_02038710, 100); return; } if (sub_02037700() != 0) { @@ -569,7 +572,7 @@ void sub_02038710(void) { } if (sub_020373B4(sub_0203769C()) != FALSE) { _021D4150->unk4C = 0; - sub_020381C0(sub_0203876C, 0x78); + sub_020381C0(sub_0203876C, 120); return; } if (_021D4150->unk44 != 0) { @@ -593,7 +596,7 @@ void sub_0203876C(void) { sub_020381C0(sub_020387E8, 0); return; } - if (_021D4150->unk44 > 0x6E) { + if (_021D4150->unk44 > 110) { sub_020376E0(6, _0210F90C); } if (_021D4150->unk44 != 0) { @@ -638,7 +641,7 @@ void sub_02038854(void) { } void sub_020388A8(void) { - if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 0x200, 0) != 0)) { + if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 512, 0) != 0)) { sub_02035FD8(); sub_020381C0(sub_02038404, 0); } @@ -646,14 +649,14 @@ void sub_020388A8(void) { void sub_020388E0(void) { u8 sp[2]; - _021D4150->unk4E = 0xD; + _021D4150->unk4E = 13; if (sub_0203769C() == 0) { sp[1] = 0; - sub_020376E0(0xA, &sp[1]); + sub_020376E0(10, &sp[1]); return; } sp[0] = 0; - sub_020376E0(0xA, sp); + sub_020376E0(10, sp); } void sub_02038918(s8 arg0) { @@ -675,12 +678,12 @@ void sub_0203894C(s8 arg0) { } void sub_0203897C(void) { - _021D4150->unk4E = 0x1A; + _021D4150->unk4E = 26; } void sub_0203898C(s8 arg0) { _021D4150->unk4D = arg0; - _021D4150->unk4E = 0x1A; + _021D4150->unk4E = 26; _021D4150->unk48 = 3; sub_0203A880(); sub_020381C0(sub_02038668, 0); @@ -694,17 +697,17 @@ void sub_020389BC(void) { void sub_020389D4(void) { if (sub_02035664() != 0) { - _021D4150->unk4E = 0xD; - if (sub_02035F14(0, 0, 0x200) != 0) { + _021D4150->unk4E = 13; + if (sub_02035F14(0, 0, 512) != 0) { sub_02035FE4(); - sub_020381C0(sub_02038A10, 0x64); + sub_020381C0(sub_02038A10, 100); } } } void sub_02038A10(void) { if ((sub_020351AC(_021D4150->unk4D) != 0) && (sub_020360E4(_021D4150->unk4D) != 0)) { - sub_020381C0(sub_02038A94, 0x64); + sub_020381C0(sub_02038A94, 100); return; } if ((sub_02037700() != 0) || (_021D4150->unk44 == 0)) { @@ -722,7 +725,7 @@ void sub_02038A10(void) { } void sub_02038A94(void) { - if (_021D4150->unk44 > 0x5A) { + if (_021D4150->unk44 > 90) { _021D4150->unk44--; return; } @@ -820,8 +823,8 @@ void sub_02038C34(void) { void sub_02038C3C(u32 arg0, s32 arg1) { switch (arg0) { - case 0x333: - if (arg1 == 0xF) { + case 819: + if (arg1 == 15) { _021D4150->unk58 = (1 | _021D4150->unk58); return; } @@ -839,7 +842,7 @@ void sub_02038C3C(u32 arg0, s32 arg1) { } void sub_02038CC4(void) { - if (sub_02035F14(1, 1, 0x20) != 0) { + if (sub_02035F14(1, 1, 32) != 0) { sub_02035FD8(); sub_020381C0(sub_02038C34, 0); } @@ -857,7 +860,7 @@ void sub_02038CE8(void) { void sub_02038D28(SaveData *arg0) { if (sub_02037474() == 0) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7000); - sub_02037C98(arg0, 0x11); + sub_02037C98(arg0, 17); _021D4150->unk4F = 0; sub_020381C0(sub_02038CE8, 0); } @@ -878,12 +881,12 @@ BOOL sub_02038D90(void) { if (_021D4150 == NULL) { return TRUE; } - if ((_021D4150->unk4E == 0x18) || (_021D4150->unk4E == 0x19) || (_021D4150->unk4E == 0x24)) { + if ((_021D4150->unk4E == 24) || (_021D4150->unk4E == 25) || (_021D4150->unk4E == 36)) { ov00_021E6CB8(); return TRUE; } if (sub_02039998() != 0) { - if (_021D4150->unk4E == 0x21) { + if (_021D4150->unk4E == 33) { sub_020381C0(sub_02039D78, 0); } else { sub_020381C0(sub_020392F4, 0); @@ -898,7 +901,7 @@ void sub_02038E00(void) { if (sub_02034DB8() != 0) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, 0); - if (sub_02035ED8(1, 1U, 0x200, 1) != 0) { + if (sub_02035ED8(1, 1, 512, 1) != 0) { sub_02035FD8(); sub_020381C0(sub_02038260, 0); } @@ -909,7 +912,7 @@ void sub_02038E48(void) { if (sub_02034DB8() != 0) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, 0); - if (sub_02035F14(1, 1, 0x200) != 0) { + if (sub_02035F14(1, 1, 512) != 0) { sub_02035FD8(); sub_020381C0(sub_020382DC, 0); } @@ -934,7 +937,7 @@ void sub_02038EB4(void) { void sub_02038EB8(void) { sub_0203786C(1); s32 temp_r0 = ov00_021E5E54(0); - if ((temp_r0 >= 0xA) && (temp_r0 < 0x14)) { + if ((temp_r0 >= 10) && (temp_r0 < 20)) { sub_020381C0(sub_02038EB4, 0); } else if (temp_r0 < 0) { sub_020381C0(sub_02038E90, 0); @@ -960,7 +963,7 @@ void sub_02038EB8(void) { void sub_02038F74(u32 arg0, s32 arg1, s32 arg2) { if (_021D4150 != NULL) { - if (arg0 - 0x19 > 1) { + if (arg0 - 25 > 1) { arg0 = -arg0; } _021D4150->unk34 = arg0; @@ -971,17 +974,17 @@ void sub_02038F74(u32 arg0, s32 arg1, s32 arg2) { void sub_02038F9C(void) { s32 temp_r0 = ov00_021E5E54(0); - if ((temp_r0 >= 0xA) && (temp_r0 < 0x14)) { + if ((temp_r0 >= 10) && (temp_r0 < 20)) { sub_020381C0(sub_02038EB4, 0); } else if (temp_r0 < 0) { sub_020381C0(sub_02038E90, 0); - } else if (temp_r0 == 0x14) { + } else if (temp_r0 == 20) { sub_020381C0(sub_02038EB8, 0); - } else if (temp_r0 == 0x15) { + } else if (temp_r0 == 21) { sub_020381C0(sub_02038EB0, 0); - } else if (temp_r0 == 0x16) { + } else if (temp_r0 == 22) { sub_020381C0(sub_02038EB4, 0); - } else if (temp_r0 == 0x18) { + } else if (temp_r0 == 24) { sub_020381C0(sub_02038EB0, 0); } } @@ -1062,7 +1065,7 @@ void sub_02039144(void) { s32 temp_r0_2 = ov00_021E6690(); if (temp_r0_2 < 0) { sub_020381C0(sub_02038E90, 0); - } else if (temp_r0_2 == 0x1A) { + } else if (temp_r0_2 == 26) { sub_020381C0(sub_02038E90, 0); } } @@ -1122,7 +1125,7 @@ u32 *sub_020392D8(void) { void sub_020392F4(void) { sub_0203786C(0); - if (ov00_021E6BE4(0U) != 0) { + if (ov00_021E6BE4(0) != 0) { ov00_021E6C68(); sub_020381C0(sub_0203847C, 0); } @@ -1160,7 +1163,7 @@ void sub_02039378(void) { void sub_020393B4(void) { u8 r1 = sub_0203769C(); - sub_020376E0(0x15, &r1); + sub_020376E0(21, &r1); } BOOL sub_020393C8(void) { @@ -1179,15 +1182,15 @@ BOOL sub_020393C8(void) { return FALSE; } -void sub_02039418(SaveData *arg0) { +void sub_02039418(SaveData *saveData) { if (_021D4150 == NULL) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); - UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); + UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 104); _021D4150 = temp_r0; - MI_CpuFill8(temp_r0, 0U, 0x68U); - _021D4150->unk4E = 0x18; + MI_CpuFill8(temp_r0, 0, 104); + _021D4150->unk4E = 24; _021D4150->unk55 = 1; - _021D4150->unk28 = arg0; + _021D4150->unk28 = saveData; sub_020398D4(0, 1); sub_0201A728(1); } @@ -1203,16 +1206,16 @@ void sub_0203946C(void) { } } -void sub_020394A0(SaveData *arg0) { +void sub_020394A0(SaveData *saveData) { if (_021D4150 == NULL) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); - UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); + UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 104); _021D4150 = temp_r0; - MI_CpuFill8(temp_r0, 0U, 0x68U); - _021D4150->unk4E = 0x19; + MI_CpuFill8(temp_r0, 0, 104); + _021D4150->unk4E = 25; _021D4150->unk55 = 1; - _021D4150->unk28 = arg0; + _021D4150->unk28 = saveData; sub_020398D4(0, 1); sub_0201A728(1); } @@ -1228,15 +1231,15 @@ void sub_020394F4(void) { } } -void sub_02039528(SaveData *arg0) { +void sub_02039528(SaveData *saveData) { if (_021D4150 == NULL) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x100U); - UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 0x68U); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); + UnkStruct_sub_02039C6C *temp_r0 = Heap_Alloc(HEAP_ID_15, 104); _021D4150 = temp_r0; - MI_CpuFill8(temp_r0, 0U, 0x68U); - _021D4150->unk4E = 0x24; + MI_CpuFill8(temp_r0, 0, 104); + _021D4150->unk4E = 36; _021D4150->unk55 = 1; - _021D4150->unk28 = arg0; + _021D4150->unk28 = saveData; sub_020398D4(0, 1); sub_0201A728(1); } @@ -1272,8 +1275,8 @@ BOOL sub_020395B0(void) { void sub_0203960C(void) { s32 temp_r0 = ov00_021E5B6C(); _021D4150->unk44--; - if (temp_r0 == 0x1B) { - if (_021D4150->unk4E == 0x21) { + if (temp_r0 == 27) { + if (_021D4150->unk4E == 33) { if (ov45_0222E804(_021D4150->unk60) == 1) { _021D4150->unk64 = 1; sub_020381C0(sub_02039C14, _021D4150->unk44); @@ -1295,43 +1298,43 @@ void sub_0203960C(void) { void sub_02039694(void) { if (sub_02034DB8() != 0) { - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x35400U); - if (sub_02035ED8(1, 1, 0x200, 1) != 0) { - ov00_021E5900(_021D4150->unk28, 0x30, 0x2C400, sub_02033FC4(_021D4150->unk4E) + 1); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x35400); + if (sub_02035ED8(1, 1, 512, 1) != 0) { + ov00_021E5900(_021D4150->unk28, 48, 0x2C400, sub_02033FC4(_021D4150->unk4E) + 1); ov00_021E6CA4(sub_020399DC); sub_02035FD8(); - sub_020381C0(sub_0203960C, 0xE10); + sub_020381C0(sub_0203960C, 3600); } } } -UnkStruct_ov44_0223197C *sub_020396FC(SaveData *arg0, u32 arg1) { - Save_PlayerData_GetProfile(arg0); +UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, u32 arg1) { + Save_PlayerData_GetProfile(saveData); if (sub_02037474() != 0) { return NULL; } sub_0201A728(1); - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080U); - sub_02037C98(arg0, 0x17); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, 23); _021D4150->unk0 = Heap_Alloc(HEAP_ID_15, arg1); MI_CpuFill8(_021D4150->unk0, 0, arg1); _021D4150->unk4F = 0; - _021D4150->unk28 = arg0; + _021D4150->unk28 = saveData; sub_020381C0(sub_02039694, 0); return _021D4150->unk0; } -void sub_0203976C(SaveData *arg0, s32 arg1) { - Save_PlayerData_GetProfile(arg0); +void sub_0203976C(SaveData *saveData, s32 arg1) { + Save_PlayerData_GetProfile(saveData); if (sub_02037474() == 0) { sub_0201A728(1); - Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7080); - sub_02037C98(arg0, 0x21); + Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); + sub_02037C98(saveData, 33); _021D4150->unk0 = NULL; _021D4150->unk60 = arg1; _021D4150->unk64 = 0; _021D4150->unk4F = 0; - _021D4150->unk28 = arg0; + _021D4150->unk28 = saveData; sub_020381C0(sub_02039BA0, 0); } } @@ -1378,14 +1381,13 @@ void sub_0203986C(void) { s32 sub_0203988C(void) { if (_021D4150 != NULL) { - void *temp_r1 = _021D4150->unk24; - if (temp_r1 == sub_02039DC4) { + if (_021D4150->unk24 == sub_02039DC4) { return 2; } - if (temp_r1 == sub_02039DE4) { + if (_021D4150->unk24 == sub_02039DE4) { return 1; } - if (temp_r1 == sub_02039E30) { + if (_021D4150->unk24 == sub_02039E30) { return 3; } } @@ -1489,7 +1491,7 @@ void sub_02039A00(void) { sub_020399A4(5); return; } - if ((_021D4150->unk4E == 0x19) || (_021D4150->unk4E == 0xF) || (_021D4150->unk4E == 0x24)) { + if ((_021D4150->unk4E == 25) || (_021D4150->unk4E == 15) || (_021D4150->unk4E == 36)) { sub_020399A4(2); return; } @@ -1520,40 +1522,40 @@ BOOL sub_02039AD8(int arg0) { } void sub_02039AF8(void) { - _021D4150->unk4E = 0x1D; + _021D4150->unk4E = 29; ov00_021E5C84(&sub_020369CC, &sub_020369CC); } void sub_02039B18(void) { - _021D4150->unk4E = 0x23; + _021D4150->unk4E = 35; ov00_021E5C84(&sub_020369CC, &sub_020369CC); } void sub_02039B38(void) { - _021D4150->unk4E = 0x21; + _021D4150->unk4E = 33; ov00_021E5C84(&sub_020369CC, &sub_020369CC); } void sub_02039B58(void) { - _021D4150->unk4E = 0x17; + _021D4150->unk4E = 23; ov00_021E5C84(&sub_02036904, &sub_020367A8); } void sub_02039B7C(void) { - _021D4150->unk4E = 0x13; + _021D4150->unk4E = 19; ov00_021E5C84(&sub_02036904, &sub_020367A8); } void sub_02039BA0(void) { if (sub_02034DB8() != 0) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x60000); - if (sub_02035ED8(1, 1, 0x200, 1) != 0) { - ov00_021E5900(_021D4150->unk28, 0x30, 0x58000, sub_02033FC4(_021D4150->unk4E) + 1); + if (sub_02035ED8(1, 1, 512, 1) != 0) { + ov00_021E5900(_021D4150->unk28, 48, 0x58000, sub_02033FC4(_021D4150->unk4E) + 1); ov00_021E6CA4(sub_020399DC); sub_02035FD8(); ov00_021E70B8(0); sub_020378E4(0); - sub_020381C0(sub_0203960C, 0xE10); + sub_020381C0(sub_0203960C, 3600); } } } @@ -1578,7 +1580,7 @@ void sub_02039C60(void) { s32 sub_02039C6C(s32 arg0) { s32 var_r4 = 1; - if ((arg0 >= 0xA) && (arg0 < 0x14)) { + if ((arg0 >= 10) && (arg0 < 20)) { sub_020381C0(sub_02038EB4, 0); var_r4 = 0; } else if (arg0 < 0) { @@ -1677,7 +1679,7 @@ void sub_02039DE4(void) { s32 sp0; sub_02039D54(&sp0); if (sp0 != 0) { - if (sp0 == 0x14) { + if (sp0 == 20) { sub_020381C0(sub_02039DC4, 0); return; } @@ -1706,43 +1708,43 @@ void sub_02039E7C(void) { } void sub_02039E9C(void) { - _021D4150->unk4E = 0x22; + _021D4150->unk4E = 34; } void sub_02039EAC(s32 *arg0) { *arg0 = 0; } -s32 sub_02039EB4(SaveData *arg0, s32 arg1, u32 *arg2) { +s32 sub_02039EB4(SaveData *saveData, s32 arg1, u32 *arg2) { switch (*arg2) { case 0: - sub_02037AC0(0x6F); + sub_02037AC0(111); *arg2 = 1; default: break; case 1: - if (sub_02037B38(0x6F) != 0) { - Save_PrepareForAsyncWrite(arg0, arg1); + if (sub_02037B38(111) != 0) { + Save_PrepareForAsyncWrite(saveData, arg1); *arg2 = 2; } break; case 2: - s32 temp_r0 = Save_WriteFileAsync(arg0); + s32 temp_r0 = Save_WriteFileAsync(saveData); GF_ASSERT(temp_r0 != 2); if (temp_r0 == 1) { *arg2 = 3; - sub_02037AC0(0x70); + sub_02037AC0(112); } else if (temp_r0 == 3) { *arg2 = 7; } break; case 3: - if (sub_02037B38(0x70) != 0) { + if (sub_02037B38(112) != 0) { *arg2 = 4; } break; case 4: - temp_r0 = Save_WriteFileAsync(arg0); + temp_r0 = Save_WriteFileAsync(saveData); GF_ASSERT(temp_r0 != 1); if (temp_r0 == 2) { *arg2 = 5; @@ -1778,23 +1780,23 @@ void sub_02039FB8(SaveWiFiHistory *arg0, s32 arg1, s32 arg2, u8 arg3) { } } -s32 sub_02039FD8(enum HeapID arg0) { - void *temp_r0 = Heap_Alloc(arg0, 0x720); +s32 sub_02039FD8(enum HeapID heapID) { + void *temp_r0 = Heap_Alloc(heapID, 1824); s32 temp_r5 = DWC_Init(((u32)temp_r0 + 31) & ~31); // TODO Heap_Free(temp_r0); return temp_r5; } -s32 sub_02039FFC(enum HeapID arg0) { +s32 sub_02039FFC(enum HeapID heapID) { LoadDwcOverlay(); LoadOVY38(); - s32 temp_r4 = sub_02039FD8(arg0); + s32 temp_r4 = sub_02039FD8(heapID); UnloadDwcOverlay(); UnloadOVY38(); return temp_r4; } -void sub_0203A01C(UnkStruct_021D2230 *arg0) { +void sub_0203A01C(WiFiList *arg0) { DWCUserData *userData = sub_0202C08C(arg0); if (DWC_CheckUserData(userData) == 0) { @@ -1803,25 +1805,25 @@ void sub_0203A01C(UnkStruct_021D2230 *arg0) { } } -int sub_0203A040(UnkStruct_021D2230 *arg0) { +int sub_0203A040(WiFiList *arg0) { DWCUserData *userData = sub_0202C08C(arg0); DWCFriendData friendData; DWC_CreateExchangeToken(userData, &friendData); return DWC_GetGsProfileId(userData, &friendData); } -BOOL sub_0203A05C(SaveData *arg0) { - DWCUserData *userData = sub_0202C08C(sub_0202C6F4(arg0)); +BOOL sub_0203A05C(SaveData *saveData) { + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); if ((DWC_CheckHasProfile(userData) != 0) && (DWC_CheckValidConsole(userData) != 0)) { return TRUE; } return FALSE; } -s32 sub_0203A084(SaveData *arg0, DWCFriendData *arg1, s32 *arg2) { +s32 sub_0203A084(SaveData *saveData, DWCFriendData *arg1, s32 *arg2) { int i; - DWCUserData *userData = sub_0202C08C(sub_0202C6F4(arg0)); - DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(saveData), 0); *arg2 = -1; if (DWC_IsValidFriendData(arg1) == 0) { return 3; @@ -1844,10 +1846,10 @@ s32 sub_0203A084(SaveData *arg0, DWCFriendData *arg1, s32 *arg2) { return 2; } -int sub_0203A128(SaveData *arg0, u64 arg1, int *arg2) { +int sub_0203A128(SaveData *saveData, u64 arg1, int *arg2) { int i; - DWCUserData *userData = sub_0202C08C(sub_0202C6F4(arg0)); - DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(saveData), 0); if (!DWC_CheckFriendKey(userData, arg1)) { return 3; } @@ -1869,24 +1871,24 @@ int sub_0203A128(SaveData *arg0, u64 arg1, int *arg2) { return 2; } -s32 sub_0203A1C4(SaveData *arg0, s32 *arg1, enum HeapID arg2) { +s32 sub_0203A1C4(SaveData *saveData, s32 *arg1, enum HeapID heapID) { s32 spC = 0; - DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(arg0), 0); + DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(saveData), 0); for (int i = 0; i < sub_02037454(); i++) { if (i != sub_0203769C()) { DWCFriendData *temp_r0 = sub_0203484C(i); if (temp_r0 != NULL) { s32 sp10; - *arg1 = sub_0203A084(arg0, temp_r0, &sp10); + *arg1 = sub_0203A084(saveData, temp_r0, &sp10); GF_ASSERT(*arg1 != 3); if (*arg1 == 0) { - sub_0203A280(arg0, i, sp10, arg2, 2); - sub_02034A20(arg0); + sub_0203A280(saveData, i, sp10, heapID, 2); + sub_02034A20(saveData); } else if (*arg1 == 1) { if (sub_02039998() == 0) { - sub_0203A280(arg0, i, sp10, arg2, 1); + sub_0203A280(saveData, i, sp10, heapID, 1); MI_CpuCopy8(temp_r0, &friendData[sp10], sizeof(DWCFriendData)); - sub_02034A20(arg0); + sub_02034A20(saveData); } } else if (*arg1 == 2) { spC = 1; @@ -1898,35 +1900,35 @@ s32 sub_0203A1C4(SaveData *arg0, s32 *arg1, enum HeapID arg2) { return spC; } -void sub_0203A280(SaveData *arg0, s32 arg1, s32 arg2, enum HeapID arg3, u32 arg4) { - UnkStruct_021D2230 *temp_r0 = sub_0202C6F4(arg0); - void *sp8 = sub_0202C23C(temp_r0, arg2); +void sub_0203A280(SaveData *saveData, s32 arg1, s32 arg2, enum HeapID heapID, u32 arg4) { + WiFiList *wifiList = sub_0202C6F4(saveData); + DWCFriendData *friendData = sub_0202C23C(wifiList, arg2); PlayerProfile *playerProfile = sub_02034818(arg1); if (arg4 != 2) { - MI_CpuCopy8(sub_0203484C(arg1), sp8, 0xC); + MI_CpuCopy8(sub_0203484C(arg1), friendData, 12); } if (arg4 == 0) { - String *string = PlayerProfile_GetPlayerName_NewString(playerProfile, arg3); - sub_0202C270(temp_r0, arg2, string); + String *string = PlayerProfile_GetPlayerName_NewString(playerProfile, heapID); + sub_0202C270(wifiList, arg2, string); String_Delete(string); - sub_0202C190(temp_r0, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); - sub_0202C190(temp_r0, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); - } else if (((arg4 - 1) <= 1) && (sub_0202C090(temp_r0, arg2, 8) == 2)) { - sub_0202C190(temp_r0, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); - sub_0202C190(temp_r0, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); + sub_0202C190(wifiList, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); + sub_0202C190(wifiList, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); + } else if (((arg4 - 1) <= 1) && (sub_0202C090(wifiList, arg2, 8) == 2)) { + sub_0202C190(wifiList, arg2, 8, PlayerProfile_GetTrainerGender(playerProfile)); + sub_0202C190(wifiList, arg2, 0, PlayerProfile_GetTrainerID(playerProfile)); } - String *string = String_New(0x78, arg3); + String *string = String_New(120, heapID); CopyU16ArrayToString(string, sub_02034884(arg1)); - sub_0202C2B4(temp_r0, arg2, string); + sub_0202C2B4(wifiList, arg2, string); String_Delete(string); - sub_0202C190(temp_r0, arg2, 7, PlayerProfile_GetAvatar(playerProfile)); - sub_02034A20(arg0); + sub_0202C190(wifiList, arg2, 7, PlayerProfile_GetAvatar(playerProfile)); + sub_02034A20(saveData); } -s32 sub_0203A378(SaveData *arg0, s32 arg1) { +s32 sub_0203A378(SaveData *saveData, s32 arg1) { int i; DWCFriendData *friendData = sub_0203484C(arg1); - UnkStruct_021D2230 *r5 = sub_0202C6F4(arg0); + WiFiList *r5 = sub_0202C6F4(saveData); for (i = 0; i < 32; i++) { if (DWC_IsEqualFriendData(friendData, sub_0202C23C(r5, i)) != 0) { From ee37a5d1bdac0e216920359a6453ffbcaf948484 Mon Sep 17 00:00:00 2001 From: ferwardle Date: Mon, 6 Jul 2026 09:32:23 -0500 Subject: [PATCH 5/7] Address comments --- include/unk_02037C94.h | 2 - src/overlay_44_0222CDAC.c | 4 +- src/unk_02037C94.c | 276 +++++++++++++++++++------------------- 3 files changed, 139 insertions(+), 143 deletions(-) diff --git a/include/unk_02037C94.h b/include/unk_02037C94.h index f29d6b918..c13409572 100644 --- a/include/unk_02037C94.h +++ b/include/unk_02037C94.h @@ -12,8 +12,6 @@ typedef struct { u64 add; } MATHRandContext32; -typedef void (*voidFunc)(void); - s32 sub_02037C94(void); void sub_02037C98(SaveData *saveData, s8 arg1); void sub_02037D2C(void); diff --git a/src/overlay_44_0222CDAC.c b/src/overlay_44_0222CDAC.c index 63d74cbcf..b3b96f434 100644 --- a/src/overlay_44_0222CDAC.c +++ b/src/overlay_44_0222CDAC.c @@ -1349,7 +1349,7 @@ s32 ov44_0222B228(UnkStruct_ov44_022319EC *arg0, s32 arg1) { } else { Sound_SetSceneAndPlayBGM(11, SEQ_GS_WIFI_ACCESS, 1); ov44_0222B0B0(arg0); - if (DWC_CheckHasProfile(sub_0202C08C(arg0->unk0)) == 0) { + if (!DWC_CheckHasProfile(sub_0202C08C(arg0->unk0))) { SetBgPriority(0, 3); SetBgPriority(1, 0); SetBgPriority(3, 0); @@ -1358,7 +1358,7 @@ s32 ov44_0222B228(UnkStruct_ov44_022319EC *arg0, s32 arg1) { arg0->unk188 = ov44_02231A28(arg0->unk15C, &ov44_02235384, 0); arg0->unk348 = 6; } else { - if (DWC_CheckValidConsole(sub_0202C08C(arg0->unk0)) == 0) { + if (!DWC_CheckValidConsole(sub_0202C08C(arg0->unk0))) { ov44_0222F66C(arg0, 20); arg0->unk348 = 3; } else { diff --git a/src/unk_02037C94.c b/src/unk_02037C94.c index ade0ff15a..16a528f69 100644 --- a/src/unk_02037C94.c +++ b/src/unk_02037C94.c @@ -20,7 +20,7 @@ typedef struct UnkStruct_sub_02039C6C { UnkStruct_ov44_0223197C *unk0; u8 unk4[8]; MATHRandContext32 mathRandContext; - void (*unk24)(); + void (*unk24)(void); SaveData *unk28; PlayerProfile *unk2C; s32 unk30; @@ -56,7 +56,7 @@ typedef struct UnkStruct_sub_02039C6C { UnkStruct_sub_02039C6C *_021D4150 = NULL; -const voidFunc _020F6A90[3] = { sub_0203827C, sub_02038398, NULL }; +void (*const _020F6A90[3])(void) = { sub_0203827C, sub_02038398, NULL }; static u8 _0210F904[] = " GAME"; static u8 _0210F90C[] = "FREAK"; @@ -95,7 +95,7 @@ void sub_02037D2C(void) { if (_021D4150->unk0 != NULL) { Heap_Free(_021D4150->unk0); } - if (sub_02039998() != 0) { + if (sub_02039998()) { Heap_Destroy(HEAP_ID_48); } sub_0203A914(); @@ -111,7 +111,7 @@ BOOL sub_02037D78(void) { } void sub_02037D8C(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); sub_02037C98(saveData, arg1); _021D4150->unk4F = arg2; @@ -121,7 +121,7 @@ void sub_02037D8C(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3) { } void sub_02037DD4(SaveData *saveData, s8 arg1, s8 arg2, s32 arg3) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); sub_02037C98(saveData, arg1); _021D4150->unk4F = arg2; @@ -143,13 +143,13 @@ void sub_02037E38(void) { void sub_02037E4C(void) { if (_021D4150->unk40 > 0) { _021D4150->unk40--; - } else if (_021D4150->unk40 == 0) { + } else if (!_021D4150->unk40) { sub_020399EC(); } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; } - if ((sub_02034FE8() != 0) && (_021D4150->unk44 == 0)) { + if ((sub_02034FE8()) && (!_021D4150->unk44)) { sub_02036024(); sub_020381C0(sub_02038408, 0); } @@ -167,9 +167,9 @@ void sub_02037EC0(void) { } s32 sub_02037EC8(void) { - const voidFunc sp0[3]; + void (*const sp0[3])(void); sp0 = _020F6A90; - voidFunc func = _021D4150->unk24; + void (*func)(void) = _021D4150->unk24; if (!_021D4150) { return 0; } @@ -234,7 +234,7 @@ void sub_02037FF0(void) { _021D4150->unk4E = 9; _021D4150->unk57 = 0; sub_02033908(_021D4150->unk4A); - if (sub_0203769C() == 0) { + if (!sub_0203769C()) { sub_02033ACC(1); sub_020381C0(sub_02038418, 15); } else { @@ -281,7 +281,7 @@ void sub_02038104(void) { } void sub_02038114(SaveData *saveData, s8 arg1) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); sub_02037C98(saveData, arg1); sub_020381C0(sub_02038E00, 0); @@ -289,7 +289,7 @@ void sub_02038114(SaveData *saveData, s8 arg1) { } void sub_02038148(SaveData *saveData, s8 arg1) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); sub_02037C98(saveData, arg1); sub_020381C0(sub_02038E48, 0); @@ -300,9 +300,9 @@ void sub_0203817C(void) { if ((_021D4150 != NULL) && (_021D4150->unk24 != NULL)) { _021D4150->unk24(); } - if (sub_02039998() != 0) { + if (sub_02039998()) { sub_0203A930(3 - ov00_021EC9D4()); - } else if (sub_02035650() != 0) { + } else if (sub_02035650()) { sub_0203A930(3 - WM_GetLinkLevel()); } } @@ -325,17 +325,17 @@ void sub_020381D0(void) { } void sub_020381FC(void) { - if (sub_02034FE8() != 0) { + if (sub_02034FE8()) { sub_0203622C(); sub_020381C0(sub_020381D0, 0); } } void sub_02038218(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, _021D4150->unk30); - if (sub_02035ED8(1, 1, 512, 1) != 0) { + if (sub_02035ED8(1, 1, 512, 1)) { sub_02035FD8(); sub_020381C0(sub_02038260, 0); } @@ -349,16 +349,16 @@ void sub_02038260(void) { } void sub_0203827C(void) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { sub_020381C0(sub_02038408, 0); } } void sub_02038294(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, _021D4150->unk30); - if (sub_02035F14(1, 1, 512) != 0) { + if (sub_02035F14(1, 1, 512)) { sub_02035FD8(); sub_020381C0(sub_020382DC, 0); } @@ -371,13 +371,13 @@ void sub_020382DC(void) { void sub_020382E4(void) { sub_0203528C(); - if (sub_020360E4(_021D4150->unk4D) != 0) { + if (sub_020360E4(_021D4150->unk4D)) { sub_020381C0(sub_0203830C, 10); } } void sub_0203830C(void) { - if (sub_02037700() != 0) { + if (sub_02037700()) { sub_020381C0(sub_02038344, 0); } if ((sub_020373B4(sub_0203769C()) != FALSE) && (sub_0203769C() != FALSE)) { @@ -391,18 +391,18 @@ void sub_02038344(void) { } void sub_02038358(void) { - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } - if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 512) != 0)) { + if ((sub_02035664()) && (sub_02035F14(0, 1, 512))) { sub_02035FD8(); sub_020381C0(sub_020382E4, 10); } } void sub_02038398(void) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { sub_020381C0(sub_02038408, 0); } } @@ -413,11 +413,11 @@ void sub_020383B0(void) { } void sub_020383C4(void) { - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } - if ((sub_02035664() != 0) && (sub_02035F14(0, 1, 512) != 0)) { + if ((sub_02035664()) && (sub_02035F14(0, 1, 512))) { sub_02035FD8(); sub_020381C0(sub_020382DC, 10); } @@ -427,7 +427,7 @@ void sub_02038404(void) { } void sub_02038408(void) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { sub_02037D2C(); } } @@ -438,7 +438,7 @@ void sub_02038418(void) { sub_0203624C(); sub_020381C0(sub_02038538, 0); } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } @@ -448,28 +448,28 @@ void sub_02038418(void) { } void sub_02038460(void) { - if (sub_02034FE8() != 0) { + if (sub_02034FE8()) { sub_0203622C(); sub_020381C0(sub_02038538, 0); } } void sub_0203847C(void) { - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; } - if ((sub_02034FE8() != 0) && (_021D4150->unk44 == 0)) { + if ((sub_02034FE8()) && (!_021D4150->unk44)) { sub_02036024(); sub_020381C0(sub_02038408, 0); } } void sub_020384B4(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { sub_02034B0C(_021D4150->unk2C, 1); sub_02033908(_021D4150->unk4A); sub_02034354(_021D4150->unk28, 0); - if (sub_02035F14(1, 1, 512) != 0) { + if (sub_02035F14(1, 1, 512)) { sub_02035FD8(); sub_020381C0(sub_02038508, 64); } @@ -478,23 +478,23 @@ void sub_020384B4(void) { void sub_02038508(void) { sub_0203528C(); - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } - if (sub_02034FE8() != 0) { + if (sub_02034FE8()) { sub_020381C0(sub_02038550, 0); } } void sub_02038538(void) { - if (sub_02034FE8() != 0) { + if (sub_02034FE8()) { sub_020381C0(sub_02038550, 0); } } void sub_02038550(void) { - if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 512, 1) != 0)) { + if ((sub_02035664()) && (sub_02035ED8(0, _021D4150->unk52, 512, 1))) { // Equivalent to MATH_Rand32(&_021D4150->mathRandContext, 0); MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; mathRandContext->x = (mathRandContext->mul * mathRandContext->x) + mathRandContext->add; @@ -506,25 +506,25 @@ void sub_02038550(void) { } void sub_020385B8(void) { - if (sub_020358B0() == 0) { - if (sub_020376F8() != 0) { + if (!sub_020358B0()) { + if (sub_020376F8()) { _021D4150->unk52 = 1; sub_0203A880(); sub_020381C0(sub_02038854, 0); return; } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } } - if (sub_02034FE8() != 0) { + if (sub_02034FE8()) { sub_020381C0(sub_02038610, 0); } } void sub_02038610(void) { - if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 512) != 0)) { + if ((sub_02035664()) && (sub_02035F14(0, 0, 512))) { sub_02035FD8(); // Equivalent to u32 rand = MATH_Rand32(&_021D4150->mathRandContext, 32) MATHRandContext32 *mathRandContext = &_021D4150->mathRandContext; @@ -537,28 +537,28 @@ void sub_02038610(void) { } void sub_02038668(void) { - if (sub_02034FE8() != 0) { + if (sub_02034FE8()) { sub_020381C0(sub_02038680, 0); } } void sub_02038680(void) { - if ((sub_02035664() != 0) && (sub_02035F14(0, 0, 512) != 0)) { + if ((sub_02035664()) && (sub_02035F14(0, 0, 512))) { sub_02035FD8(); sub_020381C0(sub_020386AC, 100); } } void sub_020386AC(void) { - if ((sub_020351AC(_021D4150->unk4D) != 0) && (sub_020360E4(_021D4150->unk4D) != 0)) { + if ((sub_020351AC(_021D4150->unk4D)) && (sub_020360E4(_021D4150->unk4D))) { sub_020381C0(sub_02038710, 100); return; } - if (sub_02037700() != 0) { + if (sub_02037700()) { sub_020381C0(sub_02038804, 0); return; } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } @@ -566,7 +566,7 @@ void sub_020386AC(void) { } void sub_02038710(void) { - if (sub_02037700() != 0) { + if (sub_02037700()) { sub_020381C0(sub_02038804, 0); return; } @@ -575,7 +575,7 @@ void sub_02038710(void) { sub_020381C0(sub_0203876C, 120); return; } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } @@ -583,7 +583,7 @@ void sub_02038710(void) { } void sub_0203876C(void) { - if (sub_02037700() != 0) { + if (sub_02037700()) { sub_020381C0(sub_02038804, 0); return; } @@ -599,7 +599,7 @@ void sub_0203876C(void) { if (_021D4150->unk44 > 110) { sub_020376E0(6, _0210F90C); } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } @@ -607,7 +607,7 @@ void sub_0203876C(void) { } void sub_020387E8(void) { - if (sub_02037700() != 0) { + if (sub_02037700()) { sub_020381C0(sub_02038804, 0); } } @@ -617,8 +617,8 @@ void sub_02038800(void) { void sub_02038804(void) { _021D4150->unk4C = 0; - if (sub_02034FE8() != 0) { - if (_021D4150->unk48 != 0) { + if (sub_02034FE8()) { + if (_021D4150->unk48) { _021D4150->unk48--; sub_020381C0(sub_02038680, 0); return; @@ -628,20 +628,20 @@ void sub_02038804(void) { } void sub_02038854(void) { - if (sub_020376F8() == 0) { - if ((sub_02039918() == 0) && (sub_02034FE8() != 0)) { + if (!sub_020376F8()) { + if ((!sub_02039918()) && (sub_02034FE8())) { sub_020381C0(sub_02038610, 0); } - } else if (sub_0203769C() == 0) { + } else if (!sub_0203769C()) { sub_02034638(); } - if ((sub_02037700() != 0) && (sub_02039918() == 0)) { + if ((sub_02037700()) && (!sub_02039918())) { sub_020381C0(sub_02038804, 0); } } void sub_020388A8(void) { - if ((sub_02035664() != 0) && (sub_02035ED8(0, _021D4150->unk52, 512, 0) != 0)) { + if ((sub_02035664()) && (sub_02035ED8(0, _021D4150->unk52, 512, 0))) { sub_02035FD8(); sub_020381C0(sub_02038404, 0); } @@ -650,7 +650,7 @@ void sub_020388A8(void) { void sub_020388E0(void) { u8 sp[2]; _021D4150->unk4E = 13; - if (sub_0203769C() == 0) { + if (!sub_0203769C()) { sp[1] = 0; sub_020376E0(10, &sp[1]); return; @@ -690,15 +690,15 @@ void sub_0203898C(s8 arg0) { } void sub_020389BC(void) { - if (sub_02034FE8() != 0) { + if (sub_02034FE8()) { sub_020381C0(sub_020389D4, 0); } } void sub_020389D4(void) { - if (sub_02035664() != 0) { + if (sub_02035664()) { _021D4150->unk4E = 13; - if (sub_02035F14(0, 0, 512) != 0) { + if (sub_02035F14(0, 0, 512)) { sub_02035FE4(); sub_020381C0(sub_02038A10, 100); } @@ -706,20 +706,20 @@ void sub_020389D4(void) { } void sub_02038A10(void) { - if ((sub_020351AC(_021D4150->unk4D) != 0) && (sub_020360E4(_021D4150->unk4D) != 0)) { + if ((sub_020351AC(_021D4150->unk4D)) && (sub_020360E4(_021D4150->unk4D))) { sub_020381C0(sub_02038A94, 100); return; } - if ((sub_02037700() != 0) || (_021D4150->unk44 == 0)) { + if ((sub_02037700()) || (!_021D4150->unk44)) { _021D4150->unk48--; - if (_021D4150->unk48 == 0) { + if (!_021D4150->unk48) { sub_020381C0(sub_02038800, 0); return; } sub_020381C0(sub_020389BC, 0); return; } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; } } @@ -729,9 +729,9 @@ void sub_02038A94(void) { _021D4150->unk44--; return; } - if (sub_02037700() != 0) { + if (sub_02037700()) { _021D4150->unk48--; - if (_021D4150->unk48 == 0) { + if (!_021D4150->unk48) { sub_020381C0(sub_02038800, 0); return; } @@ -742,12 +742,12 @@ void sub_02038A94(void) { sub_020381C0(sub_020387E8, 0); return; } - if (_021D4150->unk44 != 0) { + if (_021D4150->unk44) { _021D4150->unk44--; return; } _021D4150->unk48--; - if (_021D4150->unk48 == 0) { + if (!_021D4150->unk48) { sub_020381C0(sub_02038800, 0); return; } @@ -756,7 +756,7 @@ void sub_02038A94(void) { void sub_02038B3C(u8 arg0, u8 arg1, u8 *arg2) { u32 i; - if (sub_0203769C() == 0) { + if (!sub_0203769C()) { s32 var_r3 = 1; for (i = 0; i < 6; i++) { if (_0210F90C[i] != arg2[i]) { @@ -764,7 +764,7 @@ void sub_02038B3C(u8 arg0, u8 arg1, u8 *arg2) { break; } } - if ((var_r3 != 0) && (_021D4150->unk57 == 0)) { + if ((var_r3) && (!_021D4150->unk57)) { _0210F904[0] = arg0; sub_02037184(7, _0210F904); } else { @@ -783,7 +783,7 @@ void sub_02038B9C(u32 arg0, u32 arg1, u8 *arg2) { break; } } - if (var_r4 != 0) { + if (var_r4) { u8 temp_r4 = *arg2; if (temp_r4 == sub_0203769C()) { _021D4150->unk4C = 1; @@ -796,7 +796,7 @@ void sub_02038B9C(u32 arg0, u32 arg1, u8 *arg2) { break; } } - if (var_r4 != 0) { + if (var_r4) { u8 temp_r4_2 = *arg2; u8 r0 = sub_0203769C(); if (temp_r4_2 == r0) { @@ -826,15 +826,14 @@ void sub_02038C3C(u32 arg0, s32 arg1) { case 819: if (arg1 == 15) { _021D4150->unk58 = (1 | _021D4150->unk58); - return; } - return; + break; case 0x400318: _021D4150->unk58 = (1 | _021D4150->unk58); - return; + break; case 0x400131: _021D4150->unk58 = (2 | _021D4150->unk58); - return; + break; case 0x400286: _021D4150->unk58 = (4 | _021D4150->unk58); break; @@ -842,14 +841,14 @@ void sub_02038C3C(u32 arg0, s32 arg1) { } void sub_02038CC4(void) { - if (sub_02035F14(1, 1, 32) != 0) { + if (sub_02035F14(1, 1, 32)) { sub_02035FD8(); sub_020381C0(sub_02038C34, 0); } } void sub_02038CE8(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { sub_02034B0C(_021D4150->unk2C, 0); sub_02034354(_021D4150->unk28, 0); sub_02033A7C(sub_02038C3C); @@ -858,7 +857,7 @@ void sub_02038CE8(void) { } void sub_02038D28(SaveData *arg0) { - if (sub_02037474() == 0) { + if (!sub_02037474()) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 0x7000); sub_02037C98(arg0, 17); _021D4150->unk4F = 0; @@ -885,7 +884,7 @@ BOOL sub_02038D90(void) { ov00_021E6CB8(); return TRUE; } - if (sub_02039998() != 0) { + if (sub_02039998()) { if (_021D4150->unk4E == 33) { sub_020381C0(sub_02039D78, 0); } else { @@ -898,10 +897,10 @@ BOOL sub_02038D90(void) { } void sub_02038E00(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, 0); - if (sub_02035ED8(1, 1, 512, 1) != 0) { + if (sub_02035ED8(1, 1, 512, 1)) { sub_02035FD8(); sub_020381C0(sub_02038260, 0); } @@ -909,10 +908,10 @@ void sub_02038E00(void) { } void sub_02038E48(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { sub_02034B0C(_021D4150->unk2C, 1); sub_02034354(_021D4150->unk28, 0); - if (sub_02035F14(1, 1, 512) != 0) { + if (sub_02035F14(1, 1, 512)) { sub_02035FD8(); sub_020381C0(sub_020382DC, 0); } @@ -944,19 +943,19 @@ void sub_02038EB8(void) { } else if (temp_r0 == 23) { sub_020381C0(sub_02038E94, 0); } else if (temp_r0 == 24) { - if (_021D4150->unk53 != 0) { + if (_021D4150->unk53) { sub_020381C0(sub_02038E90, 0); } else { sub_020381C0(sub_02038EB0, 0); } } else if (temp_r0 == 21) { - if (_021D4150->unk53 != 0) { + if (_021D4150->unk53) { sub_020381C0(sub_02038E90, 0); } else { sub_020381C0(sub_02038EB0, 0); } } - if ((_021D4150->unk53 != 0) && (_021D4150->unk4B != sub_02037454())) { + if ((_021D4150->unk53) && (_021D4150->unk4B != sub_02037454())) { sub_020381C0(sub_02038E90, 0); } } @@ -1072,7 +1071,7 @@ void sub_02039144(void) { void sub_020391D0(void) { sub_0203786C(0); - if ((ov00_021E6BE4(_021D4150->unk50) != 0) && (ov00_021E6C68() != 0)) { + if ((ov00_021E6BE4(_021D4150->unk50)) && (ov00_021E6C68())) { sub_020343E4(); sub_020381C0(sub_02039144, 0); } else if (ov00_021E5E54(0) < 0) { @@ -1081,7 +1080,7 @@ void sub_020391D0(void) { } void sub_02039220(void) { - if (sub_0203769C() == 0) { + if (!sub_0203769C()) { _021D4150->unk50 = 0; sub_020381C0(sub_020391D0, 0); } else { @@ -1125,7 +1124,7 @@ u32 *sub_020392D8(void) { void sub_020392F4(void) { sub_0203786C(0); - if (ov00_021E6BE4(0) != 0) { + if (ov00_021E6BE4(0)) { ov00_021E6C68(); sub_020381C0(sub_0203847C, 0); } @@ -1152,7 +1151,7 @@ void sub_02039358(void) { void sub_02039378(void) { if (_021D4150 != NULL) { sub_020398D4(0, 1); - if (sub_0203769C() == 0) { + if (!sub_0203769C()) { _021D4150->unk50 = 0; } else { _021D4150->unk50 = 1; @@ -1172,10 +1171,10 @@ BOOL sub_020393C8(void) { if (func == sub_02038E90) { return TRUE; } - if ((func == sub_02038E94) && (_021D4150->unk53 != 0)) { + if ((func == sub_02038E94) && (_021D4150->unk53)) { return TRUE; } - if ((func == sub_02039E7C) && (_021D4150->unk53 != 0)) { + if ((func == sub_02039E7C) && (_021D4150->unk53)) { return TRUE; } } @@ -1262,11 +1261,11 @@ BOOL sub_020395B0(void) { s32 sp4; s32 sp0; if (_021D4150->unk4E == 24 || _021D4150->unk4E == 36) { - if (ov00_021EC11C(&sp4, &sp0) != 0) { + if (ov00_021EC11C(&sp4, &sp0)) { ov00_021EC210(); return TRUE; } - } else if ((_021D4150->unk4E == 25) && (ov00_021EC11C(&sp4, &sp0) != 0) && (sp0 == 7)) { + } else if ((_021D4150->unk4E == 25) && (ov00_021EC11C(&sp4, &sp0)) && (sp0 == 7)) { return TRUE; } return FALSE; @@ -1287,7 +1286,7 @@ void sub_0203960C(void) { sub_020381C0(sub_02039144, 0); } } else { - if (temp_r0 != 0) { + if (temp_r0) { sub_020381C0(sub_02038E90, 0); } if (_021D4150->unk44 <= 0) { @@ -1297,9 +1296,9 @@ void sub_0203960C(void) { } void sub_02039694(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x35400); - if (sub_02035ED8(1, 1, 512, 1) != 0) { + if (sub_02035ED8(1, 1, 512, 1)) { ov00_021E5900(_021D4150->unk28, 48, 0x2C400, sub_02033FC4(_021D4150->unk4E) + 1); ov00_021E6CA4(sub_020399DC); sub_02035FD8(); @@ -1310,7 +1309,7 @@ void sub_02039694(void) { UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, u32 arg1) { Save_PlayerData_GetProfile(saveData); - if (sub_02037474() != 0) { + if (sub_02037474()) { return NULL; } sub_0201A728(1); @@ -1326,7 +1325,7 @@ UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, u32 arg1) { void sub_0203976C(SaveData *saveData, s32 arg1) { Save_PlayerData_GetProfile(saveData); - if (sub_02037474() == 0) { + if (!sub_02037474()) { sub_0201A728(1); Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); sub_02037C98(saveData, 33); @@ -1362,7 +1361,7 @@ BOOL sub_020397FC(void) { void sub_0203981C(s32 arg0) { GF_ASSERT(_021D4150); GF_ASSERT(sub_020392A0() == 1); - if (ov45_0222F274(arg0) == 0) { + if (!ov45_0222F274(arg0)) { ov45_0222F028(arg0, 4); sub_020381C0(sub_02039DE4, 0); } else { @@ -1402,7 +1401,7 @@ void sub_020398D4(s8 arg0, s8 arg1) { if (_021D4150 != NULL) { _021D4150->unk53 = arg0; _021D4150->unk54 = arg1; - if (arg0 != 0) { + if (arg0) { _021D4150->unk4B = sub_02037454(); } else { _021D4150->unk4B = 0; @@ -1414,7 +1413,7 @@ void sub_020398D4(s8 arg0, s8 arg1) { BOOL sub_02039918(void) { if (_021D4150 != NULL) { - if (_021D4150->unk5D != 0) { + if (_021D4150->unk5D) { return TRUE; } return _021D4150->unk54; @@ -1456,7 +1455,7 @@ void sub_020399A4(s8 arg0) { } u8 sub_020399B8(void) { - if (sub_0201A79C() != 0) { + if (sub_0201A79C()) { return 0; } if (_021D4150) { @@ -1479,7 +1478,7 @@ void sub_020399FC(void) { } void sub_02039A00(void) { - if ((sub_02039918() != 0) && ((sub_02037700() != 0) || (sub_020393C8() != 0) || (sub_020395B0() != 0) || (_021D4150->unk5D != 0) || (sub_020397FC() != 0)) && (sub_0201A79C() == 0) && (sub_020399B8() == 0)) { + if ((sub_02039918()) && ((sub_02037700()) || (sub_020393C8()) || (sub_020395B0()) || (_021D4150->unk5D) || (sub_020397FC())) && (!sub_0201A79C()) && (!sub_020399B8())) { Sound_Stop(); Save_Cancel(_021D4150->unk28); gSystem.touchpadReadAuto = 1; @@ -1500,13 +1499,13 @@ void sub_02039A00(void) { } BOOL sub_02039AA4(void) { - if ((sub_02035630() != 0) || (sub_02037D78() == 0)) { + if ((sub_02035630()) || (!sub_02037D78())) { return TRUE; } - if (sub_02034BE4() == 0) { + if (!sub_02034BE4()) { return TRUE; } - if (sub_02033974() != 0) { + if (sub_02033974()) { return TRUE; } return FALSE; @@ -1547,9 +1546,9 @@ void sub_02039B7C(void) { } void sub_02039BA0(void) { - if (sub_02034DB8() != 0) { + if (sub_02034DB8()) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_48, 0x60000); - if (sub_02035ED8(1, 1, 512, 1) != 0) { + if (sub_02035ED8(1, 1, 512, 1)) { ov00_021E5900(_021D4150->unk28, 48, 0x58000, sub_02033FC4(_021D4150->unk4E) + 1); ov00_021E6CA4(sub_020399DC); sub_02035FD8(); @@ -1567,7 +1566,7 @@ void sub_02039C14(void) { return; } sub_0203786C(1); - if ((sub_02039D3C() != 0) && (ov45_0222E8F4() != 0)) { + if ((sub_02039D3C()) && (ov45_0222E8F4())) { sub_020381C0(sub_02039C60, 0); } } @@ -1591,13 +1590,13 @@ s32 sub_02039C6C(s32 arg0) { var_r4 = 0; } else if (arg0 == 24) { var_r4 = 0; - if (_021D4150->unk53 != 0) { + if (_021D4150->unk53) { sub_020381C0(sub_02038E90, 0); } else { sub_020381C0(sub_02038EB0, 0); } } - if ((_021D4150->unk53 != 0) && (_021D4150->unk4B != sub_02037454())) { + if ((_021D4150->unk53) && (_021D4150->unk4B != sub_02037454())) { sub_020381C0(sub_02038E90, 0); var_r4 = 0; } @@ -1623,7 +1622,7 @@ s32 sub_02039D08(void) { int sub_02039D3C(void) { s32 ret = sub_02039C6C(ov00_021E5E54(0)); - if (ret != 0) { + if (ret) { return sub_02039D08(); } return ret; @@ -1635,7 +1634,7 @@ void sub_02039D54(s32 *arg0) { *arg0 = temp_r0; } else { *arg0 = 0; - if (sub_02039C6C(temp_r0) == 0) { + if (!sub_02039C6C(temp_r0)) { return; } } @@ -1650,7 +1649,7 @@ void sub_02039D78(void) { void sub_02039D8C(void) { ov00_021E5E54(0); sub_02039D08(); - if (ov45_0222E944() != 0) { + if (ov45_0222E944()) { sub_0201A738(1); sub_020343E4(); sub_020381C0(sub_0203847C, 5); @@ -1678,7 +1677,7 @@ void sub_02039DE4(void) { } s32 sp0; sub_02039D54(&sp0); - if (sp0 != 0) { + if (sp0) { if (sp0 == 20) { sub_020381C0(sub_02039DC4, 0); return; @@ -1693,7 +1692,7 @@ void sub_02039E30(void) { sub_020381C0(sub_02038E90, 0); return; } - if ((sub_02039D08() != 0) && (ov00_021E6BE4(0) != 0) && (ov00_021E6C68() != 0)) { + if ((sub_02039D08()) && (ov00_021E6BE4(0)) && (ov00_021E6C68())) { sub_0203622C(); sub_020378E4(0); sub_020381C0(sub_02039C60, 0); @@ -1723,7 +1722,7 @@ s32 sub_02039EB4(SaveData *saveData, s32 arg1, u32 *arg2) { default: break; case 1: - if (sub_02037B38(111) != 0) { + if (sub_02037B38(111)) { Save_PrepareForAsyncWrite(saveData, arg1); *arg2 = 2; } @@ -1739,7 +1738,7 @@ s32 sub_02039EB4(SaveData *saveData, s32 arg1, u32 *arg2) { } break; case 3: - if (sub_02037B38(112) != 0) { + if (sub_02037B38(112)) { *arg2 = 4; } break; @@ -1775,7 +1774,7 @@ void sub_02039F68(SaveWiFiHistory *arg0) { } void sub_02039FB8(SaveWiFiHistory *arg0, s32 arg1, s32 arg2, u8 arg3) { - if (WiFiHistory_GetLocationSeenState(arg0, arg1, arg2) == 0) { + if (!WiFiHistory_GetLocationSeenState(arg0, arg1, arg2)) { WiFiHistory_SetLocationSeenState(arg0, arg1, arg2, 1); } } @@ -1799,7 +1798,7 @@ s32 sub_02039FFC(enum HeapID heapID) { void sub_0203A01C(WiFiList *arg0) { DWCUserData *userData = sub_0202C08C(arg0); - if (DWC_CheckUserData(userData) == 0) { + if (!DWC_CheckUserData(userData)) { DWC_CreateUserData(userData, 0x4144414A); DWC_ClearDirtyFlag(userData); } @@ -1814,7 +1813,7 @@ int sub_0203A040(WiFiList *arg0) { BOOL sub_0203A05C(SaveData *saveData) { DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); - if ((DWC_CheckHasProfile(userData) != 0) && (DWC_CheckValidConsole(userData) != 0)) { + if ((DWC_CheckHasProfile(userData)) && (DWC_CheckValidConsole(userData))) { return TRUE; } return FALSE; @@ -1825,11 +1824,11 @@ s32 sub_0203A084(SaveData *saveData, DWCFriendData *arg1, s32 *arg2) { DWCUserData *userData = sub_0202C08C(sub_0202C6F4(saveData)); DWCFriendData *friendData = sub_0202C23C(sub_0202C6F4(saveData), 0); *arg2 = -1; - if (DWC_IsValidFriendData(arg1) == 0) { + if (!DWC_IsValidFriendData(arg1)) { return 3; } for (i = 0; i < 32; i++) { - if (DWC_IsEqualFriendData(arg1, &friendData[i]) != 0) { + if (DWC_IsEqualFriendData(arg1, &friendData[i])) { *arg2 = i; return 0; } @@ -1839,7 +1838,7 @@ s32 sub_0203A084(SaveData *saveData, DWCFriendData *arg1, s32 *arg2) { return 1; } } - if ((*arg2 < 0) && (DWC_IsValidFriendData(&friendData[i]) == 0)) { + if ((*arg2 < 0) && (!DWC_IsValidFriendData(&friendData[i]))) { *arg2 = i; } } @@ -1879,23 +1878,22 @@ s32 sub_0203A1C4(SaveData *saveData, s32 *arg1, enum HeapID heapID) { DWCFriendData *temp_r0 = sub_0203484C(i); if (temp_r0 != NULL) { s32 sp10; - *arg1 = sub_0203A084(saveData, temp_r0, &sp10); - GF_ASSERT(*arg1 != 3); - if (*arg1 == 0) { + arg1[i] = sub_0203A084(saveData, temp_r0, &sp10); + GF_ASSERT(arg1[i] != 3); + if (arg1[i] == 0) { sub_0203A280(saveData, i, sp10, heapID, 2); sub_02034A20(saveData); - } else if (*arg1 == 1) { - if (sub_02039998() == 0) { + } else if (arg1[i] == 1) { + if (!sub_02039998()) { sub_0203A280(saveData, i, sp10, heapID, 1); MI_CpuCopy8(temp_r0, &friendData[sp10], sizeof(DWCFriendData)); sub_02034A20(saveData); } - } else if (*arg1 == 2) { + } else if (arg1[i] == 2) { spC = 1; } } } - arg1 += 1; } return spC; } @@ -1931,7 +1929,7 @@ s32 sub_0203A378(SaveData *saveData, s32 arg1) { WiFiList *r5 = sub_0202C6F4(saveData); for (i = 0; i < 32; i++) { - if (DWC_IsEqualFriendData(friendData, sub_0202C23C(r5, i)) != 0) { + if (DWC_IsEqualFriendData(friendData, sub_0202C23C(r5, i))) { return i; } } From e46656e0432fcee358473f26a8ede3121a0353a3 Mon Sep 17 00:00:00 2001 From: ferwardle Date: Thu, 3 Sep 2026 12:36:37 -0500 Subject: [PATCH 6/7] Replace CpuFill with CpuClear, and use sizeof for the calls --- src/unk_02037C94.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/unk_02037C94.c b/src/unk_02037C94.c index bfe6a8b51..91e24b033 100644 --- a/src/unk_02037C94.c +++ b/src/unk_02037C94.c @@ -70,8 +70,9 @@ void sub_02037C98(SaveData *saveData, s8 arg1) { if (_021D4150 == NULL) { GF_ASSERT(saveData); sub_02034D8C(); - _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C));; - MI_CpuFill8(_021D4150, 0, sizeof(UnkStruct_sub_02039C6C)); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + ; + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); _021D4150->unk44 = 50; _021D4150->unk52 = 1; _021D4150->unk28 = saveData; @@ -1183,8 +1184,8 @@ BOOL sub_020393C8(void) { void sub_02039418(SaveData *saveData) { if (_021D4150 == NULL) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); - _021D4150 = Heap_Alloc(HEAP_ID_15, 104); - MI_CpuFill8(_021D4150, 0, 104); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); _021D4150->unk4E = 24; _021D4150->unk55 = 1; _021D4150->unk28 = saveData; @@ -1207,8 +1208,8 @@ void sub_020394A0(SaveData *saveData) { if (_021D4150 == NULL) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); - _021D4150 = Heap_Alloc(HEAP_ID_15, 104); - MI_CpuFill8(_021D4150, 0, 104); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); _021D4150->unk4E = 25; _021D4150->unk55 = 1; _021D4150->unk28 = saveData; @@ -1230,8 +1231,8 @@ void sub_020394F4(void) { void sub_02039528(SaveData *saveData) { if (_021D4150 == NULL) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 256); - _021D4150 = Heap_Alloc(HEAP_ID_15, 104); - MI_CpuFill8(_021D4150, 0, 104); + _021D4150 = Heap_Alloc(HEAP_ID_15, sizeof(UnkStruct_sub_02039C6C)); + MI_CpuClear8(_021D4150, sizeof(UnkStruct_sub_02039C6C)); _021D4150->unk4E = 36; _021D4150->unk55 = 1; _021D4150->unk28 = saveData; @@ -1312,7 +1313,7 @@ UnkStruct_ov44_0223197C *sub_020396FC(SaveData *saveData, u32 arg1) { Heap_CreateAtEnd(HEAP_ID_3, HEAP_ID_15, 28800); sub_02037C98(saveData, 23); _021D4150->unk0 = Heap_Alloc(HEAP_ID_15, arg1); - MI_CpuFill8(_021D4150->unk0, 0, arg1); + MI_CpuClear8(_021D4150->unk0, arg1); _021D4150->unk4F = 0; _021D4150->unk28 = saveData; sub_020381C0(sub_02039694, 0); @@ -1477,7 +1478,7 @@ void sub_02039A00(void) { if (sub_02039918() && (sub_02037700() || sub_020393C8() || sub_020395B0() || _021D4150->unk5D || sub_020397FC()) && !sub_0201A79C() && !sub_020399B8()) { Sound_Stop(); Save_Cancel(_021D4150->unk28); - gSystem.touchpadReadAuto = 1; + gSystem.touchpadReadAuto = TRUE; if (_021D4150->unk5D == 3) { sub_020399A4(3); return; From b478fc4f1761b9b58bd7c62a242b21f7b54b5eaf Mon Sep 17 00:00:00 2001 From: ferwardle Date: Sun, 20 Sep 2026 20:15:02 -0500 Subject: [PATCH 7/7] Run clang format --- include/dwcaccount.h | 2 +- include/unk_0202C034.h | 10 +++++----- include/unk_02034354.h | 4 ++-- include/unk_02035900.h | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/dwcaccount.h b/include/dwcaccount.h index bb12cd1e0..f3038c276 100644 --- a/include/dwcaccount.h +++ b/include/dwcaccount.h @@ -14,7 +14,7 @@ typedef struct DWCFriendData { BOOL DWC_CheckValidConsole(DWCUserData *userData); BOOL DWC_CheckHasProfile(DWCUserData *userData); int DWC_IsValidFriendData(DWCFriendData *friendData); -void DWC_CreateExchangeToken(DWCUserData*, DWCFriendData*); +void DWC_CreateExchangeToken(DWCUserData *, DWCFriendData *); void DWC_CreateFriendKeyToken(DWCFriendData *friendData, u64 a1); int DWC_CheckFriendKey(DWCUserData *userData, u64 a1); int DWC_GetGsProfileId(DWCUserData *userData, DWCFriendData *friendData); diff --git a/include/unk_0202C034.h b/include/unk_0202C034.h index 6dbe7ac77..b5de4cb7f 100644 --- a/include/unk_0202C034.h +++ b/include/unk_0202C034.h @@ -1,9 +1,9 @@ #ifndef POKEHEARTGOLD_UNK_0202C034_H #define POKEHEARTGOLD_UNK_0202C034_H -#include "save.h" -#include "pm_string.h" #include "dwcaccount.h" +#include "pm_string.h" +#include "save.h" typedef struct WiFiList WiFiList; @@ -12,13 +12,13 @@ void sub_0202C714(SaveData *saveData); WiFiList *sub_0202C6F4(SaveData *saveData); int sub_0202C2F8(struct WiFiList *a0); DWCUserData *sub_0202C08C(WiFiList *a0); -u16* sub_0202C254(struct WiFiList *a0, s32 a1); -u16* sub_0202C298(struct WiFiList *a0, s32 a1); +u16 *sub_0202C254(struct WiFiList *a0, s32 a1); +u16 *sub_0202C298(struct WiFiList *a0, s32 a1); s32 sub_0202C090(struct WiFiList *a0, s32 a1, s32 a2); void sub_0202C46C(struct WiFiList *a0); void sub_0202C4B0(struct WiFiList *a0, s32 a1); u16 sub_0202C318(struct WiFiList *a0); -void sub_0202C190(WiFiList* a0, int a1, int a2, u32 a3); +void sub_0202C190(WiFiList *a0, int a1, int a2, u32 a3); void sub_0202C03C(struct WiFiList *a0); void sub_0202C2B4(struct WiFiList *a0, int a1, String *a2); void sub_0202C270(struct WiFiList *a0, int a1, String *a2); diff --git a/include/unk_02034354.h b/include/unk_02034354.h index f08c5a8f3..7afcddabb 100644 --- a/include/unk_02034354.h +++ b/include/unk_02034354.h @@ -1,8 +1,8 @@ #ifndef POKEHEARTGOLD_UNK_02034354_H #define POKEHEARTGOLD_UNK_02034354_H -#include "player_data.h" #include "dwcaccount.h" +#include "player_data.h" void sub_02034354(SaveData *saveData, int a1); void sub_020343E4(void); @@ -10,7 +10,7 @@ void sub_02034A20(SaveData *saveData); DWCFriendData *sub_0203484C(int a0); int sub_020348A8(int a0); int sub_020348CC(int a0); -u16* sub_02034884(int a0); +u16 *sub_02034884(int a0); BOOL sub_02034420(void); void sub_02034434(void); void sub_02034638(void); diff --git a/include/unk_02035900.h b/include/unk_02035900.h index ad60d42f2..c7ccd29b2 100644 --- a/include/unk_02035900.h +++ b/include/unk_02035900.h @@ -1,10 +1,10 @@ #ifndef POKEHEARTGOLD_UNK_02035900_H #define POKEHEARTGOLD_UNK_02035900_H -#include "unk_02037C94.h" #include "global.h" #include "safari_zone.h" +#include "unk_02037C94.h" BOOL sub_02036144(void); BOOL sub_020373B4(u16 arg0);