From a26e03caabf3ee73475d82b646a939d0f65c9ab3 Mon Sep 17 00:00:00 2001 From: scbroede <32247405+scbroede@users.noreply.github.com> Date: Wed, 4 Feb 2026 13:28:19 -0500 Subject: [PATCH] decompile gds (#927) --- .clang-format-include | 2 +- .pre-commit-config.yaml | 2 +- include/overlay061/ov61_0222B008.h | 46 +- include/overlay061/ov61_0222BC4C.h | 2 +- include/overlay062/ov62_0224112C.h | 2 +- include/overlay062/struct_ov62_0223118C.h | 2 +- include/overlay062/struct_ov62_022349A8.h | 51 -- .../overlay062/struct_ov62_022349A8_sub1.h | 11 - lib/gds/asm/include/ov61_0222CEDC.inc | 23 - lib/gds/asm/include/ov61_0222D498.inc | 34 - lib/gds/asm/include/ov61_0222E0B8.inc | 1 - lib/gds/asm/macros/function.inc | 29 - lib/gds/asm/ov61_0222CEDC.s | 456 ------------ lib/gds/asm/ov61_0222D498.s | 682 ------------------ lib/gds/asm/ov61_0222E0B8.s | 360 --------- lib/gds/asm/ov61_0222E478.s | 11 - lib/gds/include/gds.h | 42 +- lib/gds/include/gds_internal.h | 77 +- lib/gds/meson.build | 21 +- lib/gds/src/ov61_0222CEDC.c | 300 ++++++++ lib/gds/src/ov61_0222D498.c | 357 +++++++++ lib/gds/src/ov61_0222DCDC.c | 91 ++- lib/gds/src/ov61_0222E0B8.c | 210 ++++++ lib/gds/src/ov61_0222E478.c | 7 + lib/spl/include/spl_manager.h | 2 +- lib/spl/src/spl_emit.c | 12 +- lib/spl/src/spl_manager.c | 4 +- src/overlay061/ov61_0222B008.c | 1 - src/overlay061/ov61_0222BC4C.c | 2 +- src/overlay062/ov62_02231690.c | 2 +- src/overlay062/ov62_0224112C.c | 1 - subprojects/NitroDWC.wrap | 2 +- 32 files changed, 1098 insertions(+), 1747 deletions(-) delete mode 100644 include/overlay062/struct_ov62_022349A8.h delete mode 100644 include/overlay062/struct_ov62_022349A8_sub1.h delete mode 100644 lib/gds/asm/include/ov61_0222CEDC.inc delete mode 100644 lib/gds/asm/include/ov61_0222D498.inc delete mode 100644 lib/gds/asm/include/ov61_0222E0B8.inc delete mode 100644 lib/gds/asm/macros/function.inc delete mode 100644 lib/gds/asm/ov61_0222CEDC.s delete mode 100644 lib/gds/asm/ov61_0222D498.s delete mode 100644 lib/gds/asm/ov61_0222E0B8.s delete mode 100644 lib/gds/asm/ov61_0222E478.s create mode 100644 lib/gds/src/ov61_0222CEDC.c create mode 100644 lib/gds/src/ov61_0222D498.c create mode 100644 lib/gds/src/ov61_0222E0B8.c create mode 100644 lib/gds/src/ov61_0222E478.c diff --git a/.clang-format-include b/.clang-format-include index 059779a480..3ba71feff7 100644 --- a/.clang-format-include +++ b/.clang-format-include @@ -1,3 +1,3 @@ include/**/* src/**/* - +lib/**/* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f764f62b1c..6d28583266 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: hooks: - id: clang-format args: [--style=file] - exclude: ^(lib|subprojects|tools)/ + exclude: ^(subprojects|tools)/ types_or: [c, c++] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 diff --git a/include/overlay061/ov61_0222B008.h b/include/overlay061/ov61_0222B008.h index 2559e2a82d..12d3693458 100644 --- a/include/overlay061/ov61_0222B008.h +++ b/include/overlay061/ov61_0222B008.h @@ -5,11 +5,55 @@ #include "struct_decls/struct_02030A80_decl.h" #include "struct_defs/dress_up_photo.h" +#include "overlay061/struct_ov61_0222B138.h" #include "overlay061/struct_ov61_0222B2D8.h" -#include "overlay062/struct_ov62_022349A8.h" +#include "overlay061/struct_ov61_0222B920.h" +#include "overlay062/funcptr_ov62_022349A8.h" +#include "overlay062/struct_ov62_022349A8_sub2.h" +#include "overlay062/struct_ov62_022349A8_sub3.h" #include "overlay062/struct_ov62_0223CAA4.h" #include "overlay062/struct_ov62_02241130.h" +#include "gds.h" +#include "message.h" +#include "savedata.h" +#include "string_gf.h" +#include "string_template.h" + +typedef struct { + SaveData *saveData; + UnkFuncPtr_ov62_022349A8 unk_04; + void *unk_08; + UnkStruct_ov62_022349A8_sub1 unk_0C; + enum HeapID heapID; + int unk_148; + int unk_14C; + UnkStruct_ov62_022349A8_sub2 unk_150; + UnkStruct_ov62_0223CAA4 unk_17C; + void *unk_18C; + UnkStruct_ov62_022349A8_sub3 unk_190; + void *unk_3B4; + int unk_3B8; + int unk_3BC; + int unk_3C0; + BOOL unk_3C4; + BOOL unk_3C8; + UnkStruct_ov61_0222B138 unk_3CC; + int unk_3D8; + int unk_3DC; + int unk_3E0; + int unk_3E4; + int unk_3E8; + int unk_3EC; + int unk_3F0; + MessageLoader *unk_3F4; + StringTemplate *unk_3F8; + String *unk_3FC; + UnkStruct_ov61_0222B920 unk_400; + u8 unk_40D; + u8 unk_40E; +} UnkStruct_ov62_022349A8; + int ov61_0222B008(UnkStruct_ov62_022349A8 *param0, const UnkStruct_ov62_02241130 *param1); void ov61_0222B0F0(UnkStruct_ov62_022349A8 *param0); int ov61_0222B1B4(UnkStruct_ov62_022349A8 *param0, UnkStruct_02030A80 *param1, DressUpPhoto *photo); diff --git a/include/overlay061/ov61_0222BC4C.h b/include/overlay061/ov61_0222BC4C.h index e51d811537..d76830af58 100644 --- a/include/overlay061/ov61_0222BC4C.h +++ b/include/overlay061/ov61_0222BC4C.h @@ -1,6 +1,7 @@ #ifndef POKEPLATINUM_OV61_0222BC4C_H #define POKEPLATINUM_OV61_0222BC4C_H +#include "overlay061/ov61_0222B008.h" #include "overlay061/struct_ov61_0222B960.h" #include "overlay061/struct_ov61_0222BC90.h" #include "overlay061/struct_ov61_0222BCF8_sub1_sub1.h" @@ -8,7 +9,6 @@ #include "overlay061/struct_ov61_0222BDAC_1.h" #include "overlay061/struct_ov61_0222BE20.h" #include "overlay061/struct_ov61_0222BED8.h" -#include "overlay062/struct_ov62_022349A8.h" #include "overlay062/struct_ov62_0223DF10.h" int ov61_0222BC4C(UnkStruct_ov62_022349A8 *param0, UnkStruct_ov61_0222B960 *param1); diff --git a/include/overlay062/ov62_0224112C.h b/include/overlay062/ov62_0224112C.h index 343d3a38c8..23807260fc 100644 --- a/include/overlay062/ov62_0224112C.h +++ b/include/overlay062/ov62_0224112C.h @@ -3,7 +3,7 @@ #include "struct_defs/struct_0208C06C.h" -#include "overlay062/struct_ov62_022349A8.h" +#include "overlay061/ov61_0222B008.h" UnkStruct_ov62_022349A8 *ov62_0224112C(UnkStruct_0208C06C *param0); void ov62_02241130(UnkStruct_0208C06C *param0); diff --git a/include/overlay062/struct_ov62_0223118C.h b/include/overlay062/struct_ov62_0223118C.h index 0cddbb01ec..589bc4202b 100644 --- a/include/overlay062/struct_ov62_0223118C.h +++ b/include/overlay062/struct_ov62_0223118C.h @@ -3,10 +3,10 @@ #include "struct_decls/struct_02012744_decl.h" +#include "overlay061/ov61_0222B008.h" #include "overlay062/struct_ov62_0223118C_sub1.h" #include "overlay062/struct_ov62_02233310.h" #include "overlay062/struct_ov62_0223359C.h" -#include "overlay062/struct_ov62_022349A8.h" #include "bg_window.h" #include "g3d_pipeline.h" diff --git a/include/overlay062/struct_ov62_022349A8.h b/include/overlay062/struct_ov62_022349A8.h deleted file mode 100644 index 58f926134a..0000000000 --- a/include/overlay062/struct_ov62_022349A8.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV62_022349A8_H -#define POKEPLATINUM_STRUCT_OV62_022349A8_H - -#include "overlay061/struct_ov61_0222B138.h" -#include "overlay061/struct_ov61_0222B920.h" -#include "overlay062/funcptr_ov62_022349A8.h" -#include "overlay062/struct_ov62_022349A8_sub1.h" -#include "overlay062/struct_ov62_022349A8_sub2.h" -#include "overlay062/struct_ov62_022349A8_sub3.h" -#include "overlay062/struct_ov62_0223CAA4.h" - -#include "message.h" -#include "savedata.h" -#include "string_gf.h" -#include "string_template.h" - -typedef struct { - SaveData *saveData; - UnkFuncPtr_ov62_022349A8 unk_04; - void *unk_08; - UnkStruct_ov62_022349A8_sub1 unk_0C; - enum HeapID heapID; - int unk_148; - int unk_14C; - UnkStruct_ov62_022349A8_sub2 unk_150; - UnkStruct_ov62_0223CAA4 unk_17C; - void *unk_18C; - UnkStruct_ov62_022349A8_sub3 unk_190; - void *unk_3B4; - int unk_3B8; - int unk_3BC; - int unk_3C0; - BOOL unk_3C4; - BOOL unk_3C8; - UnkStruct_ov61_0222B138 unk_3CC; - int unk_3D8; - int unk_3DC; - int unk_3E0; - int unk_3E4; - int unk_3E8; - int unk_3EC; - int unk_3F0; - MessageLoader *unk_3F4; - StringTemplate *unk_3F8; - String *unk_3FC; - UnkStruct_ov61_0222B920 unk_400; - u8 unk_40D; - u8 unk_40E; -} UnkStruct_ov62_022349A8; - -#endif // POKEPLATINUM_STRUCT_OV62_022349A8_H diff --git a/include/overlay062/struct_ov62_022349A8_sub1.h b/include/overlay062/struct_ov62_022349A8_sub1.h deleted file mode 100644 index fdc62fb418..0000000000 --- a/include/overlay062/struct_ov62_022349A8_sub1.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV62_022349A8_SUB1_H -#define POKEPLATINUM_STRUCT_OV62_022349A8_SUB1_H - -typedef struct { - s32 unk_00; - u8 unk_04; - u8 language; - u8 padding_06[306]; -} UnkStruct_ov62_022349A8_sub1; - -#endif // POKEPLATINUM_STRUCT_OV62_022349A8_SUB1_H diff --git a/lib/gds/asm/include/ov61_0222CEDC.inc b/lib/gds/asm/include/ov61_0222CEDC.inc deleted file mode 100644 index bf680a0b64..0000000000 --- a/lib/gds/asm/include/ov61_0222CEDC.inc +++ /dev/null @@ -1,23 +0,0 @@ -.public memcpy -.public strcpy -.public ov61_0222CFD4 -.public ov61_0222D3E8 -.public ov61_0222D498 -.public ov61_0222D4AC -.public ov61_0222D4C8 -.public ov61_0222D4DC -.public ov61_0222D4F0 -.public ov61_0222D508 -.public ov61_0222D510 -.public ov61_0222D53C -.public ov61_0222D54C -.public ov61_0222D6A0 -.public ov61_0222D770 -.public ov61_0222D7B0 -.public ov61_0222D8F8 -.public ov61_0222DA0C -.public ov61_0222DB8C -.public ov61_0222DB98 -.public ov61_0222E0B8 -.public ov61_0222E168 -.public ov61_0222E2A8 diff --git a/lib/gds/asm/include/ov61_0222D498.inc b/lib/gds/asm/include/ov61_0222D498.inc deleted file mode 100644 index e5f420cb03..0000000000 --- a/lib/gds/asm/include/ov61_0222D498.inc +++ /dev/null @@ -1,34 +0,0 @@ -.public OS_CreateThread -.public OS_WakeupThreadDirect -.public OS_Sleep -.public OS_InitMutex -.public OS_LockMutex -.public OS_UnlockMutex -.public OS_InitTick -.public OS_IsTickAvailable -.public OS_GetTick -.public strcpy -.public _ull_div -.public DWC_GetLastErrorEx -.public DWC_Alloc -.public DWC_Free -.public DWC_SVLGetTokenAsync -.public DWC_SVLProcess -.public inet_addr -.public SOC_Socket -.public SOC_Connect -.public SOC_Recv -.public SOC_Send -.public SOC_Shutdown -.public SOC_Close -.public SOC_GetHostByName -.public SOC_Fcntl -.public SOC_InetNtoA -.public ov61_0222D040 -.public ov61_0222D4C8 -.public ov61_0222D4DC -.public ov61_0222D540 -.public ov61_0222D5A0 -.public ov61_0222D638 -.public ov61_0222DB8C -.public ov61_0222E110 diff --git a/lib/gds/asm/include/ov61_0222E0B8.inc b/lib/gds/asm/include/ov61_0222E0B8.inc deleted file mode 100644 index 4d9b2f5033..0000000000 --- a/lib/gds/asm/include/ov61_0222E0B8.inc +++ /dev/null @@ -1 +0,0 @@ -.public ov61_0222E2A8 diff --git a/lib/gds/asm/macros/function.inc b/lib/gds/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/lib/gds/asm/macros/function.inc +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - - .macro arm_func_start name - .balign 4, 0 - .global \name - .type \name, @function - .arm - .endm - - .macro arm_func_end name - .size \name, .-\name - .endm - - .macro thumb_func_start name - .balign 4, 0 - .global \name - .type \name, @function - .thumb - .endm - - .macro non_word_aligned_thumb_func_start name - .global \name - .type \name, @function - .thumb - .endm - - .macro thumb_func_end name - .size \name, .-\name - .endm \ No newline at end of file diff --git a/lib/gds/asm/ov61_0222CEDC.s b/lib/gds/asm/ov61_0222CEDC.s deleted file mode 100644 index 9ecf93141a..0000000000 --- a/lib/gds/asm/ov61_0222CEDC.s +++ /dev/null @@ -1,456 +0,0 @@ - .include "macros/function.inc" - .include "include/ov61_0222CEDC.inc" - - .extern Unk_ov61_0222E764 - - .text - - - arm_func_start ov61_0222CEDC -ov61_0222CEDC: ; 0x0222CEDC - stmfd sp!, {r3, lr} - bl ov61_0222CFD4 - mov r0, #0 - ldr lr, _0222CF38 ; =0x0222E764 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov ip, #9 -_0222CEFC: - stmia lr!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0222CEFC - stmia lr!, {r0, r1, r2, r3} - stmia lr, {r0, r1} - ldr r1, _0222CF38 ; =0x0222E764 - mov r2, #0 - str r2, [r1, #0x138] - ldr r0, _0222CF3C ; =0x0222E964 - strb r2, [r1, #0x140] - strh r2, [r0, #0x40] - bl ov61_0222D508 - bl ov61_0222D53C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222CF38: .word Unk_ov61_0222E764 -_0222CF3C: .word Unk_ov61_0222E764 + 0x200 - arm_func_end ov61_0222CEDC - - arm_func_start ov61_0222CF40 -ov61_0222CF40: ; 0x0222CF40 - stmfd sp!, {r4, r5, r6, lr} - movs r5, r2 - mov r6, r0 - mov r4, r1 - beq _0222CF80 - ldr lr, _0222CFC8 ; =0x0222E764 - mov ip, #0x13 -_0222CF5C: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0222CF5C - ldmia r5, {r0, r1} - stmia lr, {r0, r1} - ldr r0, _0222CFC8 ; =0x0222E764 - mov r1, #0 - str r1, [r0, #0x138] -_0222CF80: - bl ov61_0222D510 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ov61_0222D4F0 - ldr r0, _0222CFCC ; =0x0222E8A4 - mov r1, r6 - bl strcpy - ldr r1, _0222CFD0 ; =0x0222E964 - mov r2, #0 - ldr r0, _0222CFC8 ; =0x0222E764 - strh r4, [r1, #0x40] - str r2, [r0, #0x258] - sub r1, r2, #1 - str r1, [r0, #0x26c] - bl ov61_0222CFD4 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0222CFC8: .word Unk_ov61_0222E764 -_0222CFCC: .word Unk_ov61_0222E764 + 0x140 -_0222CFD0: .word Unk_ov61_0222E764 + 0x200 - arm_func_end ov61_0222CF40 - - arm_func_start ov61_0222CFD4 -ov61_0222CFD4: ; 0x0222CFD4 - stmfd sp!, {r3, lr} - bl ov61_0222D770 - ldr r0, _0222D03C ; =0x0222E764 - ldr r0, [r0, #0x258] - cmp r0, #0 - beq _0222CFFC - bl ov61_0222D4AC - ldr r0, _0222D03C ; =0x0222E764 - mov r1, #0 - str r1, [r0, #0x258] -_0222CFFC: - ldr r0, _0222D03C ; =0x0222E764 - mov r1, #0xf - str r1, [r0, #0x244] - mov r1, #0x1e - str r1, [r0, #0x248] - str r1, [r0, #0x24c] - mov r2, #0 - str r2, [r0, #0x254] - str r2, [r0, #0x25c] - str r2, [r0, #0x260] - str r2, [r0, #0x264] - str r2, [r0, #0x268] - mov r1, #1 - str r1, [r0, #0x13c] - str r2, [r0, #0x250] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D03C: .word Unk_ov61_0222E764 - arm_func_end ov61_0222CFD4 - - arm_func_start ov61_0222D040 -ov61_0222D040: ; 0x0222D040 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r5, #0 - ldr r4, _0222D1F8 ; =0x0222E764 - mov fp, #9 - mov sl, #7 - mov r6, #1 - mov r7, r5 -_0222D05C: - ldr r0, [r4, #0x13c] - mov r8, r7 - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0222D1B4 -_0222D070: ; jump table - b _0222D098 ; case 0 - b _0222D098 ; case 1 - b _0222D0A0 ; case 2 - b _0222D0D4 ; case 3 - b _0222D108 ; case 4 - b _0222D13C ; case 5 - b _0222D184 ; case 6 - b _0222D098 ; case 7 - b _0222D098 ; case 8 - b _0222D098 ; case 9 -_0222D098: - mov r8, r6 - b _0222D1B4 -_0222D0A0: - bl ov61_0222DB98 - cmp r0, #0 - bne _0222D0C4 - ldr r0, [r4, #0x250] - mov r8, #1 - cmp r0, #0xd - moveq sb, sl - movne sb, fp - b _0222D0C8 -_0222D0C4: - mov sb, #3 -_0222D0C8: - bl ov61_0222D4C8 - str sb, [r4, #0x13c] - b _0222D1B4 -_0222D0D4: - bl ov61_0222D6A0 - cmp r0, #0 - bne _0222D0F8 - ldr r0, [r4, #0x250] - mov r8, #1 - cmp r0, #0xd - moveq sb, #7 - movne sb, #9 - b _0222D0FC -_0222D0F8: - mov sb, #4 -_0222D0FC: - bl ov61_0222D4C8 - str sb, [r4, #0x13c] - b _0222D1B4 -_0222D108: - bl ov61_0222D7B0 - cmp r0, #0 - bne _0222D12C - ldr r0, [r4, #0x250] - mov r8, #1 - cmp r0, #0xd - moveq sb, #7 - movne sb, #9 - b _0222D130 -_0222D12C: - mov sb, #5 -_0222D130: - bl ov61_0222D4C8 - str sb, [r4, #0x13c] - b _0222D1B4 -_0222D13C: - bl ov61_0222D8F8 - cmp r0, #0 - bne _0222D160 - ldr r0, [r4, #0x250] - mov r8, #1 - cmp r0, #0xd - moveq sb, #7 - movne sb, #9 - b _0222D164 -_0222D160: - mov sb, #6 -_0222D164: - ldr r0, [r4, #0x258] - cmp r0, #0 - beq _0222D178 - bl ov61_0222D4AC - str r5, [r4, #0x258] -_0222D178: - bl ov61_0222D4C8 - str sb, [r4, #0x13c] - b _0222D1B4 -_0222D184: - bl ov61_0222DA0C - cmp r0, #0 - bne _0222D1A4 - ldr r0, [r4, #0x250] - cmp r0, #0xd - moveq sb, #7 - movne sb, #9 - b _0222D1A8 -_0222D1A4: - mov sb, #8 -_0222D1A8: - mov r8, #1 - bl ov61_0222D4C8 - str sb, [r4, #0x13c] -_0222D1B4: - cmp r8, #0 - bne _0222D1F0 - ldr r0, [r4, #0x268] - cmp r0, #1 - bne _0222D1E0 - ldr r0, _0222D1F8 ; =0x0222E764 - mov r1, #7 - str r1, [r0, #0x13c] - mov r1, #0xd - str r1, [r0, #0x250] - b _0222D1F0 -_0222D1E0: - bl ov61_0222D4DC - mov r0, #1 - bl ov61_0222DB8C - b _0222D05C -_0222D1F0: - bl ov61_0222D4DC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222D1F8: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D040 - - arm_func_start ov61_0222D1FC -ov61_0222D1FC: ; 0x0222D1FC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov61_0222D4C8 - ldr r0, _0222D3E4 ; =0x0222E764 - ldr r0, [r0, #0x13c] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0222D274 -_0222D228: ; jump table - b _0222D250 ; case 0 - b _0222D274 ; case 1 - b _0222D250 ; case 2 - b _0222D250 ; case 3 - b _0222D250 ; case 4 - b _0222D250 ; case 5 - b _0222D250 ; case 6 - b _0222D270 ; case 7 - b _0222D270 ; case 8 - b _0222D270 ; case 9 -_0222D250: - bl ov61_0222D4DC - ldr r0, _0222D3E4 ; =0x0222E764 - mov r1, #9 - str r1, [r0, #0x13c] - mov r1, #1 - str r1, [r0, #0x250] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222D270: - bl ov61_0222CFD4 -_0222D274: - bl ov61_0222D4DC - mov r0, r7 - bl ov61_0222E2A8 - ldr r2, _0222D3E4 ; =0x0222E764 - mvn r1, #0 - str r0, [r2, #0x25c] - cmp r0, r1 - bne _0222D2AC - mov r0, #9 - str r0, [r2, #0x13c] - mov r0, #2 - str r0, [r2, #0x250] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222D2AC: - cmp r4, r1 - str r5, [r2, #0x260] - addne r0, r4, #0x140 - strne r0, [sp] - bne _0222D2F4 - mov r0, r7 - bl ov61_0222E168 - mvn r1, #0 - str r0, [sp] - cmp r0, r1 - bne _0222D2F4 - ldr r0, _0222D3E4 ; =0x0222E764 - mov r1, #9 - str r1, [r0, #0x13c] - mov r1, #2 - str r1, [r0, #0x250] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222D2F4: - ldr r0, [sp] - bl ov61_0222D498 - ldr ip, _0222D3E4 ; =0x0222E764 - cmp r0, #0 - str r0, [ip, #0x258] - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [sp] - add r3, sp, #0 - str r1, [ip, #0x254] - ldrb r2, [r3] - ldrb r1, [r3, #1] - mov r4, #0x13 - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldr lr, [ip, #0x258] - strh r7, [lr, #4] - add r5, lr, #8 -_0222D34C: - ldmia ip!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0222D34C - ldmia ip, {r0, r1} - stmia r5, {r0, r1} - mov r0, #0 - strh r0, [lr, #6] - ldr r2, [sp] - mov r1, r6 - add r0, lr, #0x140 - sub r2, r2, #0x140 - bl memcpy - ldr r0, _0222D3E4 ; =0x0222E764 - ldr r2, [r0, #0x258] - ldr r1, [r0, #0x254] - add r0, r2, #4 - sub r1, r1, #4 - add r2, r2, #4 - bl ov61_0222E0B8 - ldr r0, _0222D3E4 ; =0x0222E764 - mov r1, #2 - str r1, [r0, #0x13c] - bl ov61_0222D4C8 - bl ov61_0222D54C - cmp r0, #0 - bne _0222D3D8 - ldr r0, _0222D3E4 ; =0x0222E764 - mov r1, #9 - str r1, [r0, #0x13c] - mov r1, #6 - str r1, [r0, #0x250] - bl ov61_0222D4DC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222D3D8: - bl ov61_0222D4DC - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222D3E4: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D1FC - - arm_func_start ov61_0222D3E8 -ov61_0222D3E8: ; 0x0222D3E8 - ldr r0, _0222D3F4 ; =0x0222E764 - ldr r0, [r0, #0x13c] - bx lr - ; .align 2, 0 -_0222D3F4: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D3E8 - - arm_func_start ov61_0222D3F8 -ov61_0222D3F8: ; 0x0222D3F8 - stmfd sp!, {r3, lr} - bl ov61_0222D4C8 - bl ov61_0222D3E8 - cmp r0, #8 - beq _0222D418 - bl ov61_0222D4DC - mov r0, #0 - ldmia sp!, {r3, pc} -_0222D418: - bl ov61_0222D4DC - ldr r0, _0222D42C ; =0x0222E764 - ldr r0, [r0, #0x260] - add r0, r0, #4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D42C: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D3F8 - - arm_func_start ov61_0222D430 -ov61_0222D430: ; 0x0222D430 - stmfd sp!, {r3, lr} - bl ov61_0222D4C8 - bl ov61_0222D3E8 - cmp r0, #8 - beq _0222D450 - bl ov61_0222D4DC - mvn r0, #0 - ldmia sp!, {r3, pc} -_0222D450: - bl ov61_0222D4DC - ldr r0, _0222D460 ; =0x0222E764 - ldr r0, [r0, #0x25c] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D460: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D430 - - arm_func_start ov61_0222D464 -ov61_0222D464: ; 0x0222D464 - stmfd sp!, {r3, lr} - bl ov61_0222D4C8 - bl ov61_0222D3E8 - cmp r0, #9 - beq _0222D484 - bl ov61_0222D4DC - mov r0, #0 - ldmia sp!, {r3, pc} -_0222D484: - bl ov61_0222D4DC - ldr r0, _0222D494 ; =0x0222E764 - ldr r0, [r0, #0x250] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D494: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D464 \ No newline at end of file diff --git a/lib/gds/asm/ov61_0222D498.s b/lib/gds/asm/ov61_0222D498.s deleted file mode 100644 index 5a43396ec7..0000000000 --- a/lib/gds/asm/ov61_0222D498.s +++ /dev/null @@ -1,682 +0,0 @@ - .include "macros/function.inc" - .include "include/ov61_0222D498.inc" - - - - .text - - - arm_func_start ov61_0222D498 -ov61_0222D498: ; 0x0222D498 - ldr ip, _0222D4A8 ; =DWC_Alloc - mov r1, r0 - mov r0, #0 - bx ip - ; .align 2, 0 -_0222D4A8: .word DWC_Alloc - arm_func_end ov61_0222D498 - - arm_func_start ov61_0222D4AC -ov61_0222D4AC: ; 0x0222D4AC - stmfd sp!, {r3, lr} - movs r1, r0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - mov r2, r0 - bl DWC_Free - ldmia sp!, {r3, pc} - arm_func_end ov61_0222D4AC - - arm_func_start ov61_0222D4C8 -ov61_0222D4C8: ; 0x0222D4C8 - ldr ip, _0222D4D4 ; =OS_LockMutex - ldr r0, _0222D4D8 ; =0x0222EA98 - bx ip - ; .align 2, 0 -_0222D4D4: .word OS_LockMutex -_0222D4D8: .word Unk_ov61_0222E764 + 0x334 - arm_func_end ov61_0222D4C8 - - arm_func_start ov61_0222D4DC -ov61_0222D4DC: ; 0x0222D4DC - ldr ip, _0222D4E8 ; =OS_UnlockMutex - ldr r0, _0222D4EC ; =0x0222EA98 - bx ip - ; .align 2, 0 -_0222D4E8: .word OS_UnlockMutex -_0222D4EC: .word Unk_ov61_0222E764 + 0x334 - arm_func_end ov61_0222D4DC - - arm_func_start ov61_0222D4F0 -ov61_0222D4F0: ; 0x0222D4F0 - stmfd sp!, {r3, lr} - ldr r0, _0222D504 ; =0x0222EA98 - bl OS_InitMutex - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D504: .word Unk_ov61_0222E764 + 0x334 - arm_func_end ov61_0222D4F0 - - arm_func_start ov61_0222D508 -ov61_0222D508: ; 0x0222D508 - mov r0, #1 - bx lr - arm_func_end ov61_0222D508 - - arm_func_start ov61_0222D510 -ov61_0222D510: ; 0x0222D510 - stmfd sp!, {r3, lr} - bl OS_IsTickAvailable - cmp r0, #0 - bne _0222D524 - bl OS_InitTick -_0222D524: - ldr r0, _0222D538 ; =0x0222E764 - mov r1, #0x10 - str r1, [r0, #0x270] - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D538: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D510 - - arm_func_start ov61_0222D53C -ov61_0222D53C: ; 0x0222D53C - bx lr - arm_func_end ov61_0222D53C - - arm_func_start ov61_0222D540 -ov61_0222D540: ; 0x0222D540 - ldr ip, _0222D548 ; =ov61_0222D040 - bx ip - ; .align 2, 0 -_0222D548: .word ov61_0222D040 - arm_func_end ov61_0222D540 - - arm_func_start ov61_0222D54C -ov61_0222D54C: ; 0x0222D54C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - mov r1, #0x800 - ldr r0, _0222D590 ; =0x0222E764 - str r1, [sp] - ldr ip, [r0, #0x270] - ldr r0, _0222D594 ; =0x0222E9D8 - ldr r1, _0222D598 ; =ov61_0222D540 - ldr r3, _0222D59C ; =0x0222F2B0 - mov r2, #0 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _0222D594 ; =0x0222E9D8 - bl OS_WakeupThreadDirect - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D590: .word Unk_ov61_0222E764 -_0222D594: .word Unk_ov61_0222E764 + 0x274 -_0222D598: .word ov61_0222D540 -_0222D59C: .word Unk_ov61_0222EAB0 + 0x800 - arm_func_end ov61_0222D54C - - arm_func_start ov61_0222D5A0 -ov61_0222D5A0: ; 0x0222D5A0 - ldrsb ip, [r0] - mov r2, #0 - mov r3, r2 - cmp ip, #0 - beq _0222D61C - mov r1, r2 -_0222D5B8: - cmp ip, #0x30 - blt _0222D5DC - cmp ip, #0x39 - bgt _0222D5DC - add r2, r2, #1 - cmp r2, #4 - blt _0222D610 - mov r0, #0 - bx lr -_0222D5DC: - cmp ip, #0x2e - bne _0222D608 - cmp r2, #0 - moveq r0, #0 - bxeq lr - add r3, r3, #1 - mov r2, r1 - cmp r3, #4 - blt _0222D610 - mov r0, r1 - bx lr -_0222D608: - mov r0, #0 - bx lr -_0222D610: - ldrsb ip, [r0, #1]! - cmp ip, #0 - bne _0222D5B8 -_0222D61C: - cmp r3, #3 - bne _0222D630 - cmp r2, #0 - movne r0, #1 - bxne lr -_0222D630: - mov r0, #0 - bx lr - arm_func_end ov61_0222D5A0 - - arm_func_start ov61_0222D638 -ov61_0222D638: ; 0x0222D638 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl ov61_0222D5A0 - cmp r0, #0 - bne _0222D68C - mov r0, r5 - bl SOC_GetHostByName - cmp r0, #0 - beq _0222D684 - ldr r0, [r0, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #0] - str r0, [sp] - bl SOC_InetNtoA - mov r1, r0 - mov r0, r4 - bl strcpy - b _0222D698 -_0222D684: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0222D68C: - mov r0, r4 - mov r1, r5 - bl strcpy -_0222D698: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov61_0222D638 - - arm_func_start ov61_0222D6A0 -ov61_0222D6A0: ; 0x0222D6A0 - stmfd sp!, {r3, lr} - sub sp, sp, #0x10 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl SOC_Socket - ldr r2, _0222D768 ; =0x0222E764 - mvn r1, #0 - str r0, [r2, #0x26c] - cmp r0, r1 - bne _0222D6E0 - mov r0, #3 - str r0, [r2, #0x250] - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, pc} -_0222D6E0: - mov r1, #3 - mov r2, #0 - bl SOC_Fcntl - ldr r1, _0222D768 ; =0x0222E764 - orr r2, r0, #4 - ldr r0, [r1, #0x26c] - mov r1, #4 - bl SOC_Fcntl - cmp r0, #0 - bge _0222D720 - ldr r0, _0222D768 ; =0x0222E764 - mov r1, #4 - str r1, [r0, #0x250] - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, pc} -_0222D720: - ldr r0, _0222D76C ; =0x0222E8A4 - add r1, sp, #0 - bl ov61_0222D638 - cmp r0, #0 - bne _0222D74C - ldr r0, _0222D768 ; =0x0222E764 - mov r1, #5 - str r1, [r0, #0x250] - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, pc} -_0222D74C: - add r0, sp, #0 - bl inet_addr - ldr r1, _0222D768 ; =0x0222E764 - str r0, [r1, #0x264] - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D768: .word Unk_ov61_0222E764 -_0222D76C: .word Unk_ov61_0222E764 + 0x140 - arm_func_end ov61_0222D6A0 - - arm_func_start ov61_0222D770 -ov61_0222D770: ; 0x0222D770 - stmfd sp!, {r3, lr} - ldr r0, _0222D7AC ; =0x0222E764 - mvn r1, #0 - ldr r0, [r0, #0x26c] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - mov r1, #2 - bl SOC_Shutdown - ldr r0, _0222D7AC ; =0x0222E764 - ldr r0, [r0, #0x26c] - bl SOC_Close - ldr r0, _0222D7AC ; =0x0222E764 - mvn r1, #0 - str r1, [r0, #0x26c] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D7AC: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D770 - - arm_func_start ov61_0222D7B0 -ov61_0222D7B0: ; 0x0222D7B0 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r2, #8 - mov r1, #2 - ldr r0, _0222D8EC ; =0x0222E964 - strb r2, [sp] - strb r1, [sp, #1] - ldrh r1, [r0, #0x40] - ldr r0, _0222D8F0 ; =0x0222E764 - mov r2, r1, asr #8 - mov r1, r1, lsl #8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - strh r1, [sp, #2] - ldr r0, [r0, #0x264] - str r0, [sp, #4] - bl OS_GetTick - ldr r2, _0222D8F4 ; =0x0007FD88 - mov r3, #0 - bl _ull_div - ldr r5, _0222D8F4 ; =0x0007FD88 - ldr sb, _0222D8F0 ; =0x0222E764 - mov r7, r0 - mov r4, #0 - mov sl, #1 - add r6, sp, #0 - mvn r8, #0x19 -_0222D820: - ldr r0, [sb, #0x26c] - mov r1, r6 - bl SOC_Connect - cmp r0, #0 - bge _0222D8E0 - cmp r0, r8 - bne _0222D880 - ldr r0, [sb, #0x244] - cmp r0, #0 - beq _0222D8A4 - bl OS_GetTick - mov r2, r5 - mov r3, r4 - bl _ull_div - ldr r1, [sb, #0x244] - subs r0, r0, r7 - cmp r0, r1 - blt _0222D8A4 - ldr r0, _0222D8F0 ; =0x0222E764 - mov r1, #0xa - str r1, [r0, #0x250] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0222D880: - mvn r1, #0x1d - cmp r0, r1 - beq _0222D8E0 - ldr r0, _0222D8F0 ; =0x0222E764 - mov r1, #7 - str r1, [r0, #0x250] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0222D8A4: - bl ov61_0222D4C8 - ldr r0, [sb, #0x268] - cmp r0, #1 - bne _0222D8D0 - ldr r0, _0222D8F0 ; =0x0222E764 - mov r1, #0xd - str r1, [r0, #0x250] - bl ov61_0222D4DC - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0222D8D0: - bl ov61_0222D4DC - mov r0, sl - bl ov61_0222DB8C - b _0222D820 -_0222D8E0: - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_0222D8EC: .word Unk_ov61_0222E764 + 0x200 -_0222D8F0: .word Unk_ov61_0222E764 -_0222D8F4: .word 0x0007FD88 - arm_func_end ov61_0222D7B0 - - arm_func_start ov61_0222D8F8 -ov61_0222D8F8: ; 0x0222D8F8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, #0 - bl OS_GetTick - ldr r2, _0222DA04 ; =0x0007FD88 - mov r3, sb - bl _ull_div - ldr r7, _0222DA04 ; =0x0007FD88 - ldr r5, _0222DA08 ; =0x0222E764 - mov sl, r0 - mov r8, sb - mov r6, sb - mov fp, #1 - mvn r4, #5 -_0222D92C: - ldr r0, [r5, #0x254] - ldr r1, [r5, #0x258] - sub r2, r0, sb - cmp r2, r0 - movgt r2, r0 - ldr r0, [r5, #0x26c] - mov r3, r8 - add r1, r1, sb - bl SOC_Send - cmp r0, r4 - beq _0222D984 - cmp r0, #0 - bge _0222D974 - ldr r0, _0222DA08 ; =0x0222E764 - mov r1, #0xb - str r1, [r0, #0x250] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222D974: - ldr r1, [r5, #0x254] - add sb, sb, r0 - cmp sb, r1 - beq _0222D9FC -_0222D984: - ldr r0, [r5, #0x248] - cmp r0, #0 - beq _0222D9C4 - bl OS_GetTick - mov r2, r7 - mov r3, r6 - bl _ull_div - ldr r1, [r5, #0x248] - subs r0, r0, sl - cmp r0, r1 - blt _0222D9C4 - ldr r0, _0222DA08 ; =0x0222E764 - mov r1, #0xb - str r1, [r0, #0x250] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222D9C4: - bl ov61_0222D4C8 - ldr r0, [r5, #0x268] - cmp r0, #1 - bne _0222D9EC - ldr r0, _0222DA08 ; =0x0222E764 - mov r1, #0xd - str r1, [r0, #0x250] - bl ov61_0222D4DC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222D9EC: - bl ov61_0222D4DC - mov r0, fp - bl ov61_0222DB8C - b _0222D92C -_0222D9FC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222DA04: .word 0x0007FD88 -_0222DA08: .word Unk_ov61_0222E764 - arm_func_end ov61_0222D8F8 - - arm_func_start ov61_0222DA0C -ov61_0222DA0C: ; 0x0222DA0C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, #0 - sub r0, sl, #1 - str r0, [sp] - bl OS_GetTick - ldr r2, _0222DB84 ; =0x0007FD88 - mov r3, sl - bl _ull_div - mvn r4, #0 - ldr fp, _0222DB84 ; =0x0007FD88 - ldr r6, _0222DB88 ; =0x0222E764 - mov sb, r0 - sub r5, r4, #5 - add r7, sp, #0 - mov r8, sl -_0222DA48: - ldr r1, [r6, #0x260] - ldr r2, [r6, #0x25c] - ldr r0, [r6, #0x26c] - mov r3, r8 - add r1, r1, sl - sub r2, r2, sl - bl SOC_Recv - cmp r0, r5 - beq _0222DB04 - cmp r0, #0 - bgt _0222DA88 - ldr r0, _0222DB88 ; =0x0222E764 - mov r1, #9 - str r1, [r0, #0x250] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222DA88: - add sl, sl, r0 - cmp sl, #4 - blo _0222DAC4 - ldr r0, [sp] - cmp r0, r4 - bne _0222DAC4 - ldr r2, [r6, #0x260] - ldrb r1, [r2] - ldrb r0, [r2, #1] - strb r1, [r7] - strb r0, [r7, #1] - ldrb r1, [r2, #2] - ldrb r0, [r2, #3] - strb r1, [r7, #2] - strb r0, [r7, #3] -_0222DAC4: - ldr r0, [sp] - cmp sl, r0 - bne _0222DB04 - cmp r0, r4 - beq _0222DB04 - ldr r0, _0222DB88 ; =0x0222E764 - sub r1, sl, #4 - ldr r2, [r0, #0x260] - add r0, r2, #4 - add r2, r2, #4 - bl ov61_0222E110 - ldr r1, [sp] - ldr r0, _0222DB88 ; =0x0222E764 - sub r1, r1, #4 - str r1, [r0, #0x25c] - b _0222DB7C -_0222DB04: - ldr r0, [r6, #0x24c] - cmp r0, #0 - beq _0222DB44 - bl OS_GetTick - mov r2, fp - mov r3, #0 - bl _ull_div - ldr r1, [r6, #0x24c] - subs r0, r0, sb - cmp r0, r1 - blt _0222DB44 - ldr r0, _0222DB88 ; =0x0222E764 - mov r1, #0xc - str r1, [r0, #0x250] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222DB44: - bl ov61_0222D4C8 - ldr r0, [r6, #0x268] - cmp r0, #1 - bne _0222DB6C - ldr r0, _0222DB88 ; =0x0222E764 - mov r1, #0xd - str r1, [r0, #0x250] - bl ov61_0222D4DC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222DB6C: - bl ov61_0222D4DC - mov r0, #1 - bl ov61_0222DB8C - b _0222DA48 -_0222DB7C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222DB84: .word 0x0007FD88 -_0222DB88: .word Unk_ov61_0222E764 - arm_func_end ov61_0222DA0C - - arm_func_start ov61_0222DB8C -ov61_0222DB8C: ; 0x0222DB8C - ldr ip, _0222DB94 ; =OS_Sleep - bx ip - ; .align 2, 0 -_0222DB94: .word OS_Sleep - arm_func_end ov61_0222DB8C - - arm_func_start ov61_0222DB98 -ov61_0222DB98: ; 0x0222DB98 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x17c - ldr r0, _0222DCD0 ; =0x0222E764 - ldr r0, [r0, #0x138] - cmp r0, #1 - addeq sp, sp, #0x17c - moveq r0, #1 - ldmeqia sp!, {r4, r5, pc} - ldr r0, _0222DCD4 ; =0x0222E638 - add r1, sp, #8 - bl DWC_SVLGetTokenAsync - cmp r0, #0 - bne _0222DBE4 - ldr r0, _0222DCD0 ; =0x0222E764 - mov r1, #0xe - str r1, [r0, #0x250] - add sp, sp, #0x17c - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_0222DBE4: - ldr r4, _0222DCD0 ; =0x0222E764 - mov r5, #1 -_0222DBEC: - bl DWC_SVLProcess - cmp r0, #3 - bne _0222DC40 - ldr r4, _0222DCD8 ; =0x0222E76A - add r3, sp, #0x4d - mov r2, #0x96 -_0222DC04: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [r4] - strb r0, [r4, #1] - add r4, r4, #2 - subs r2, r2, #1 - bne _0222DC04 - ldrb r2, [r3] - ldr r1, _0222DCD0 ; =0x0222E764 - mov r0, #1 - strb r2, [r4] - str r0, [r1, #0x138] - add sp, sp, #0x17c - ldmia sp!, {r4, r5, pc} -_0222DC40: - cmp r0, #4 - bne _0222DC6C - add r0, sp, #0 - add r1, sp, #4 - bl DWC_GetLastErrorEx - ldr r0, _0222DCD0 ; =0x0222E764 - mov r1, #0xe - str r1, [r0, #0x250] - add sp, sp, #0x17c - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_0222DC6C: - cmp r0, #5 - bne _0222DC8C - ldr r0, _0222DCD0 ; =0x0222E764 - mov r1, #0xe - str r1, [r0, #0x250] - add sp, sp, #0x17c - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_0222DC8C: - bl ov61_0222D4C8 - ldr r0, [r4, #0x268] - cmp r0, #1 - bne _0222DCB8 - ldr r0, _0222DCD0 ; =0x0222E764 - mov r1, #0xd - str r1, [r0, #0x250] - bl ov61_0222D4DC - add sp, sp, #0x17c - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_0222DCB8: - bl ov61_0222D4DC - mov r0, r5 - bl ov61_0222DB8C - b _0222DBEC -_0222DCC8: - .byte 0x5F, 0xDF, 0x8D, 0xE2, 0x30, 0x80, 0xBD, 0xE8 -_0222DCD0: .word Unk_ov61_0222E764 -_0222DCD4: .word Unk_ov61_0222E638 -_0222DCD8: .word Unk_ov61_0222E764 + 0x6 - arm_func_end ov61_0222DB98 - .data - - - .global Unk_ov61_0222E638 -Unk_ov61_0222E638: ; 0x0222E638 - .space 0x1 - - - .bss - - - .global Unk_ov61_0222E764 -Unk_ov61_0222E764: ; 0x0222E764 - .space 0x34C - - .global Unk_ov61_0222EAB0 -Unk_ov61_0222EAB0: ; 0x0222EAB0 - .space 0x810 - diff --git a/lib/gds/asm/ov61_0222E0B8.s b/lib/gds/asm/ov61_0222E0B8.s deleted file mode 100644 index fbf97291fc..0000000000 --- a/lib/gds/asm/ov61_0222E0B8.s +++ /dev/null @@ -1,360 +0,0 @@ - .include "macros/function.inc" - .include "include/ov61_0222E0B8.inc" - - - - .text - - - arm_func_start ov61_0222E0B8 -ov61_0222E0B8: ; 0x0222E0B8 - stmfd sp!, {r3, r4, r5, lr} - mov r5, #0 - cmp r1, #0 - ldmleia sp!, {r3, r4, r5, pc} - ldr lr, _0222E10C ; =0x0222E65C - mov ip, r5 -_0222E0D0: - cmp r5, #0 - moveq r4, ip - beq _0222E0F0 - ldrb r4, [r0] - add r3, r5, r1 - add r3, r4, r3 - and r3, r3, #0xff - ldrb r4, [lr, r3] -_0222E0F0: - ldrb r3, [r0, r5] - add r5, r5, #1 - cmp r5, r1 - eor r3, r4, r3 - strb r3, [r2], #1 - blt _0222E0D0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222E10C: .word Unk_ov61_0222E65C - arm_func_end ov61_0222E0B8 - - arm_func_start ov61_0222E110 -ov61_0222E110: ; 0x0222E110 - stmfd sp!, {r3, r4, r5, lr} - mov r5, #0 - cmp r1, #0 - ldmleia sp!, {r3, r4, r5, pc} - ldr lr, _0222E164 ; =0x0222E65C - mov ip, r5 -_0222E128: - cmp r5, #0 - moveq r4, ip - beq _0222E148 - ldrb r4, [r0] - add r3, r5, r1 - add r3, r4, r3 - and r3, r3, #0xff - ldrb r4, [lr, r3] -_0222E148: - ldrb r3, [r2, r5] - eor r3, r3, r4 - strb r3, [r2, r5] - add r5, r5, #1 - cmp r5, r1 - blt _0222E128 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222E164: .word Unk_ov61_0222E65C - arm_func_end ov61_0222E110 - - arm_func_start ov61_0222E168 -ov61_0222E168: ; 0x0222E168 - ldr r2, _0222E294 ; =0x00005209 - cmp r0, r2 - bgt _0222E1C0 - bge _0222E24C - sub r1, r2, #0x3e8 - cmp r0, r1 - bgt _0222E1B0 - ldr r1, _0222E298 ; =0x00004E20 - cmp r0, r1 - blt _0222E1A4 - beq _0222E234 - add r1, r1, #1 - cmp r0, r1 - beq _0222E23C - b _0222E284 -_0222E1A4: - cmp r0, #0 - beq _0222E22C - b _0222E284 -_0222E1B0: - sub r1, r2, #1 - cmp r0, r1 - beq _0222E244 - b _0222E284 -_0222E1C0: - add r1, r2, #0x3e8 - cmp r0, r1 - bgt _0222E1E0 - bge _0222E25C - ldr r1, _0222E29C ; =0x000055F0 - cmp r0, r1 - beq _0222E254 - b _0222E284 -_0222E1E0: - ldr r2, _0222E2A0 ; =0x000059D8 - cmp r0, r2 - bgt _0222E1F4 - beq _0222E264 - b _0222E284 -_0222E1F4: - add r1, r2, #3 - cmp r0, r1 - bgt _0222E284 - add r1, r2, #1 - cmp r0, r1 - blt _0222E284 - beq _0222E26C - add r1, r2, #2 - cmp r0, r1 - beq _0222E274 - add r1, r2, #3 - cmp r0, r1 - beq _0222E27C - b _0222E284 -_0222E22C: - mov r0, #0x400 - b _0222E28C -_0222E234: - mov r0, #0xe0 - b _0222E28C -_0222E23C: - mov r0, #0xc - b _0222E28C -_0222E244: - mov r0, #0x220 - b _0222E28C -_0222E24C: - mov r0, #0xc - b _0222E28C -_0222E254: - mov r0, #0 - b _0222E28C -_0222E25C: - mov r0, #0x24 - b _0222E28C -_0222E264: - ldr r0, _0222E2A4 ; =0x00001D4C - b _0222E28C -_0222E26C: - mov r0, #0x1c - b _0222E28C -_0222E274: - mov r0, #0xc - b _0222E28C -_0222E27C: - mov r0, #8 - b _0222E28C -_0222E284: - mvn r0, #0 - bx lr -_0222E28C: - add r0, r0, #0x140 - bx lr - ; .align 2, 0 -_0222E294: .word 0x00005209 -_0222E298: .word 0x00004E20 -_0222E29C: .word 0x000055F0 -_0222E2A0: .word 0x000059D8 -_0222E2A4: .word 0x00001D4C - arm_func_end ov61_0222E168 - - arm_func_start ov61_0222E2A8 -ov61_0222E2A8: ; 0x0222E2A8 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x30 - ldr r6, _0222E458 ; =0x0222E580 - add lr, sp, #0 - mov ip, r0 - mov r5, lr - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldr r4, _0222E45C ; =0x00005209 - ldmia r6, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - cmp ip, r4 - bgt _0222E340 - bge _0222E408 - ldr r1, _0222E460 ; =0x00004E20 - cmp ip, r1 - bgt _0222E31C - bge _0222E3F0 - cmp ip, #0 - bgt _0222E440 - mvn r6, #0 - cmp ip, r6 - blt _0222E440 - beq _0222E3AC - cmp ip, #0 - beq _0222E3E8 - b _0222E440 -_0222E31C: - add r0, r1, #1 - cmp ip, r0 - bgt _0222E330 - beq _0222E3F8 - b _0222E440 -_0222E330: - add r0, r1, #0x3e8 - cmp ip, r0 - beq _0222E400 - b _0222E440 -_0222E340: - add r0, r4, #0x3e8 - cmp ip, r0 - bgt _0222E360 - bge _0222E418 - ldr r0, _0222E464 ; =0x000055F0 - cmp ip, r0 - beq _0222E410 - b _0222E440 -_0222E360: - ldr r1, _0222E468 ; =0x000059D8 - cmp ip, r1 - bgt _0222E374 - beq _0222E420 - b _0222E440 -_0222E374: - add r0, r1, #3 - cmp ip, r0 - bgt _0222E440 - add r0, r1, #1 - cmp ip, r0 - blt _0222E440 - beq _0222E428 - add r0, r1, #2 - cmp ip, r0 - beq _0222E430 - add r0, r1, #3 - cmp ip, r0 - beq _0222E438 - b _0222E440 -_0222E3AC: - mov r7, #0 - mov r4, r6 -_0222E3B4: - ldr r0, [r5, r7, lsl #2] - cmp r0, r4 - beq _0222E3D4 - bl ov61_0222E2A8 - cmp r0, r6 - movgt r6, r0 - add r7, r7, #1 - b _0222E3B4 -_0222E3D4: - mvn r0, #0 - cmp r6, r0 - bne _0222E44C - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E3E8: - mov r6, #0x400 - b _0222E44C -_0222E3F0: - mov r6, #8 - b _0222E44C -_0222E3F8: - ldr r6, _0222E46C ; =0x0000093C - b _0222E44C -_0222E400: - mov r6, #8 - b _0222E44C -_0222E408: - ldr r6, _0222E470 ; =0x00002B74 - b _0222E44C -_0222E410: - mov r6, #4 - b _0222E44C -_0222E418: - mov r6, #0x630 - b _0222E44C -_0222E420: - mov r6, #8 - b _0222E44C -_0222E428: - ldr r6, _0222E474 ; =0x00001C24 - b _0222E44C -_0222E430: - sub r6, r1, #0x3c80 - b _0222E44C -_0222E438: - mov r6, #0 - b _0222E44C -_0222E440: - add sp, sp, #0x30 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E44C: - add r0, r6, #8 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222E458: .word Unk_ov61_0222E580 -_0222E45C: .word 0x00005209 -_0222E460: .word 0x00004E20 -_0222E464: .word 0x000055F0 -_0222E468: .word 0x000059D8 -_0222E46C: .word 0x0000093C -_0222E470: .word 0x00002B74 -_0222E474: .word 0x00001C24 - arm_func_end ov61_0222E2A8 - - .rodata - - - .global Unk_ov61_0222E550 -Unk_ov61_0222E550: ; 0x0222E550 - .word 0x5, 0x3, 0x2 - .word 0x4, 0x1, 0x6, 0x9 - .word 0x2, 0x7, 0x8, 0x6 - .word 0x3 - - .global Unk_ov61_0222E580 -Unk_ov61_0222E580: ; 0x0222E580 - .word 0x0, 0x4E20, 0x4E21 - .word 0x5208, 0x5209, 0x55F0, 0x55F1 - .word 0x59D8, 0x59D9, 0x59DA, 0x59DB - .word 0xFFFFFFFF - - - .global Unk_ov61_0222E5B0 -Unk_ov61_0222E5B0: ; 0x0222E5B0 - .word 0x5, 0x3, 0x2 - .word 0x4, 0x1, 0x6, 0x9 - .word 0x2, 0x7, 0x8, 0x6 - .word 0x3 - - - .data - - - .global Unk_ov61_0222E65C -Unk_ov61_0222E65C: ; 0x0222E65C - .byte 0x93, 0x18, 0x33, 0x28 - .byte 0x0B, 0x07, 0x03, 0x82, 0x02, 0x43, 0x8A, 0x86, 0xDB, 0x38, 0x34, 0x19, 0xD6, 0xF9, 0x59, 0xB2 - .byte 0xAD, 0x6A, 0x7D, 0xBC, 0xEE, 0xE0, 0x3A, 0x3F, 0xCA, 0x4C, 0x25, 0x68, 0xF4, 0xA9, 0x5B, 0xF7 - .byte 0x22, 0x60, 0x5A, 0x6F, 0xFA, 0x1B, 0x79, 0xE9, 0x17, 0xB1, 0x00, 0x9C, 0xAA, 0x5E, 0x9D, 0xFF - .byte 0xEA, 0xA0, 0x0D, 0x4B, 0x75, 0xF6, 0x61, 0x85, 0x5D, 0xBB, 0xDC, 0xFB, 0x64, 0x2E, 0x7A, 0xAB - .byte 0xF1, 0xE8, 0x44, 0x0C, 0xB8, 0x8F, 0xA8, 0x0A, 0x8E, 0xBD, 0xE1, 0x3B, 0xFC, 0x3C, 0x9F, 0x1A - .byte 0x56, 0xC5, 0xE2, 0xF5, 0x47, 0xD9, 0xD7, 0x8C, 0xCD, 0x97, 0xF0, 0x7B, 0x8B, 0xC3, 0x4F, 0x45 - .byte 0x04, 0x90, 0x81, 0x1E, 0x6B, 0xC9, 0xD3, 0x73, 0xC6, 0xE7, 0x24, 0xBA, 0x32, 0xF3, 0xC0, 0xEC - .byte 0x57, 0xCC, 0xC4, 0xB6, 0xC1, 0xAE, 0xAF, 0x88, 0xF2, 0x84, 0xCE, 0x4A, 0x0F, 0x94, 0x41, 0xB4 - .byte 0x74, 0x2A, 0xD1, 0x70, 0x1C, 0xD4, 0xB0, 0xC2, 0x09, 0x08, 0x16, 0x9B, 0xB5, 0x8D, 0x2B, 0xD2 - .byte 0x89, 0xB7, 0x99, 0xA1, 0x30, 0x65, 0x54, 0x40, 0x96, 0x71, 0xFE, 0xBF, 0x31, 0x06, 0xE5, 0x14 - .byte 0xE6, 0xDA, 0x48, 0x26, 0xAC, 0x87, 0x9A, 0xD8, 0xA6, 0xEB, 0x92, 0xCF, 0xFD, 0x77, 0x1D, 0x21 - .byte 0x9E, 0x36, 0x35, 0x53, 0x3E, 0xD0, 0xD5, 0x62, 0x58, 0x5F, 0x63, 0x7C, 0x7E, 0x52, 0x29, 0x12 - .byte 0x2C, 0x78, 0x05, 0x91, 0x55, 0xE3, 0xA2, 0xB9, 0xF8, 0x50, 0x95, 0x13, 0x80, 0x7F, 0x11, 0x27 - .byte 0xCB, 0x37, 0x4E, 0x51, 0x15, 0xEF, 0xA7, 0x72, 0x4D, 0x83, 0x49, 0xA4, 0x69, 0xDE, 0x20, 0xA3 - .byte 0x67, 0xDF, 0x10, 0x42, 0x39, 0x6C, 0x2D, 0xC7, 0x23, 0xE4, 0xDD, 0xED, 0xBE, 0x66, 0xB3, 0x2F - .byte 0x01, 0x6E, 0x6D, 0xC8, 0x1F, 0x98, 0xA5, 0x46, 0x76, 0x5C, 0x3D, 0x0E - diff --git a/lib/gds/asm/ov61_0222E478.s b/lib/gds/asm/ov61_0222E478.s deleted file mode 100644 index 334e08a244..0000000000 --- a/lib/gds/asm/ov61_0222E478.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start ov61_0222E478 -ov61_0222E478: ; 0x0222E478 - bx lr - arm_func_end ov61_0222E478 \ No newline at end of file diff --git a/lib/gds/include/gds.h b/lib/gds/include/gds.h index 6336399cac..1664bdf26d 100644 --- a/lib/gds/include/gds.h +++ b/lib/gds/include/gds.h @@ -1,38 +1,46 @@ #ifndef POKEPLATINUM_GLOBAL_TERMINAL_H #define POKEPLATINUM_GLOBAL_TERMINAL_H -#include "overlay062/struct_ov62_022349A8_sub1.h" +#include + #include "overlay062/struct_ov62_022349A8_sub3_sub1.h" #include "overlay062/struct_ov62_022349A8_sub3_sub2.h" -#include "overlay062/struct_ov62_0223D518_sub1.h" #include "overlay062/struct_ov62_022349A8_sub3_sub3.h" #include "overlay062/struct_ov62_022349A8_sub3_sub4.h" #include "overlay062/struct_ov62_022349A8_sub3_sub5.h" -#include "overlay062/struct_ov62_022349A8_sub3_sub5.h" +#include "overlay062/struct_ov62_0223D518_sub1.h" #ifdef __cplusplus extern "C" { #endif -BOOL ov61_0222DCDC(UnkStruct_ov62_022349A8_sub1 * param0); +typedef struct { + s32 unk_00; + u8 unk_04; + u8 language; + char unk_06[301]; // DWC_SVL_TOKEN_LENGTH + 1 + u8 padding[5]; +} UnkStruct_ov62_022349A8_sub1; + +BOOL ov61_0222DCDC(UnkStruct_ov62_022349A8_sub1 *param0); void ov61_0222DCFC(void); int ov61_0222DD08(void); int ov61_0222DD24(void); -BOOL ov61_0222DD30(UnkStruct_ov62_022349A8_sub3_sub1 * param0, void * param1); -BOOL ov61_0222DD8C(long param0, void * param1); -BOOL ov61_0222DDCC(long param0, UnkStruct_ov62_022349A8_sub3_sub2 * param1, void * param2); -BOOL ov61_0222DE34(long param0, void * param1); -BOOL ov61_0222DE98(void * param0); -BOOL ov61_0222DEB8(UnkStruct_ov62_0223D518_sub1 * param0, void * param1); -void * ov61_0222DE80(void); +BOOL ov61_0222DD30(UnkStruct_ov62_022349A8_sub3_sub1 *param0, void *param1); +BOOL ov61_0222DD8C(long param0, void *param1); +BOOL ov61_0222DDCC(long param0, UnkStruct_ov62_022349A8_sub3_sub2 *param1, void *param2); +BOOL ov61_0222DE34(long param0, void *param1); +BOOL ov61_0222DE98(void *param0); +BOOL ov61_0222DEB8(UnkStruct_ov62_0223D518_sub1 *param0, void *param1); +void *ov61_0222DE80(void); long ov61_0222DE74(void); long ov61_0222DE8C(long param0); -BOOL ov61_0222DF08(UnkStruct_ov62_022349A8_sub3_sub3 * param0, void * param1); -BOOL ov61_0222DF60(UnkStruct_ov62_022349A8_sub3_sub4 * param0, void * param1); -BOOL ov61_0222DFA8(UnkStruct_ov62_022349A8_sub3_sub5 * param0, void * param1); -BOOL ov61_0222E000(UnkStruct_ov62_022349A8_sub3_sub5 * param0, void * param1); -BOOL ov61_0222E058(u64 param0, u32 param1, void * param2); -BOOL ov61_0222E08C(u64 param0, void * param1); +BOOL ov61_0222DF08(UnkStruct_ov62_022349A8_sub3_sub3 *param0, void *param1); +BOOL ov61_0222DF60(UnkStruct_ov62_022349A8_sub3_sub4 *param0, void *param1); +BOOL ov61_0222DFA8(UnkStruct_ov62_022349A8_sub3_sub5 *param0, void *param1); +BOOL ov61_0222E000(UnkStruct_ov62_022349A8_sub3_sub5 *param0, void *param1); +BOOL ov61_0222E058(u64 param0, u32 param1, void *param2); +BOOL ov61_0222E08C(u64 param0, void *param1); #ifdef __cplusplus } diff --git a/lib/gds/include/gds_internal.h b/lib/gds/include/gds_internal.h index 83056a60de..feba6b7b0d 100644 --- a/lib/gds/include/gds_internal.h +++ b/lib/gds/include/gds_internal.h @@ -1,7 +1,33 @@ #ifndef GDS_INTERNAL_H #define GDS_INTERNAL_H +#include +#include +#include + #include "gds.h" +typedef struct { + UnkStruct_ov62_022349A8_sub1 unk_00; + int unk_138; + int unk_13C; + char unk_140[0x100]; + u16 unk_240; + int unk_244; + int unk_248; + int unk_24C; + int unk_250; + int unk_254; + void *unk_258; + int unk_25C; + void *unk_260; + int unk_264; + int unk_268; + int unk_26C; + int unk_270; + OSThread unk_274; + OSMutex unk_334; +} UnkStruct_ov61_0222E764; + typedef struct { u16 unk_00; u16 unk_02; @@ -38,13 +64,46 @@ typedef struct { u32 unk_08; } UnkStruct_ov61_0222E058; -BOOL ov61_0222CF40(char *param0, int param1, UnkStruct_ov62_022349A8_sub1 *param2); -int ov61_0222D3E8(void); -int ov61_0222D464(void); -void ov61_0222E478(void *param0, char *param1); -BOOL ov61_0222D1FC(int param0, void *param1, void *param2, int param3); -long ov61_0222D430(void); -void *ov61_0222D3F8(void); -long ov61_0222E2A8(long param0); +typedef struct { + u16 unk_00; + u16 unk_02; + UnkStruct_ov62_022349A8_sub1 unk_04; + void *unk_136; +} UnkStruct_ov61_0222D1FC; -#endif // GDS_INTERNAL_H \ No newline at end of file +UnkStruct_ov61_0222E764 Unk_ov61_0222E764; + +void ov61_0222CEDC(void); +BOOL ov61_0222CF40(char *url, int port, UnkStruct_ov62_022349A8_sub1 *param2); +void ov61_0222D040(void); +BOOL ov61_0222D1FC(int param0, void *param1, void *param2, int param3); +int ov61_0222D3E8(void); +void *ov61_0222D3F8(void); +int ov61_0222D430(void); +int ov61_0222D464(void); + +void *ov61_0222D498(u32 size); +void ov61_0222D4AC(void *ptr); +void ov61_0222D4C8(void); +void ov61_0222D4DC(void); +int ov61_0222D4F0(void); +int ov61_0222D508(void); +int ov61_0222D510(void); +void ov61_0222D53C(void); +int ov61_0222D54C(void); +BOOL ov61_0222D6A0(void); +void ov61_0222D770(void); +BOOL ov61_0222D7B0(void); +BOOL ov61_0222D8F8(void); +BOOL ov61_0222DA0C(void); +void ov61_0222DB8C(u32 param0); +BOOL ov61_0222DB98(void); + +void ov61_0222E0B8(u8 *param0, int param1, u8 *param2); +void ov61_0222E110(u8 *param0, int param1, u8 *param2); +int ov61_0222E168(int param0); +int ov61_0222E2A8(int param0); + +void ov61_0222E478(void *param0, char *param1); + +#endif // GDS_INTERNAL_H diff --git a/lib/gds/meson.build b/lib/gds/meson.build index 8a16317cf1..119e329b87 100644 --- a/lib/gds/meson.build +++ b/lib/gds/meson.build @@ -1,9 +1,9 @@ libgds_srcs = files( - 'asm/ov61_0222CEDC.s', - 'asm/ov61_0222D498.s', + 'src/ov61_0222CEDC.c', + 'src/ov61_0222D498.c', 'src/ov61_0222DCDC.c', - 'asm/ov61_0222E0B8.s', - 'asm/ov61_0222E478.s' + 'src/ov61_0222E0B8.c', + 'src/ov61_0222E478.c' ) libgds_public_includes = include_directories('include') @@ -11,14 +11,21 @@ libgds_public_includes = include_directories('include') libgds_c_args = [ '-nothumb', '-wrap:sdk', '2.0/sp2p2', - '-wrap:noipa' + '-wrap:noipa', +] + +libgds_link_args = [ + '-library', + '-nothumb', + '-main', '""', ] libgds = static_library('gds', sources: libgds_srcs, c_args: libgds_c_args, + link_args: libgds_link_args, nasm_args: asm_args, include_directories: [public_includes, libgds_public_includes], - dependencies: [ nitrosdk_dep, nitrosystem_dep ], + dependencies: [nitrosdk_dep, nitrosystem_dep, nitrowifi_dep, nitrodwc_dep], pic: false -) \ No newline at end of file +) diff --git a/lib/gds/src/ov61_0222CEDC.c b/lib/gds/src/ov61_0222CEDC.c new file mode 100644 index 0000000000..6009ab7a3e --- /dev/null +++ b/lib/gds/src/ov61_0222CEDC.c @@ -0,0 +1,300 @@ +#include + +#include "gds.h" +#include "gds_internal.h" + +static void ov61_0222CFD4(void); + +void ov61_0222CEDC(void) +{ + ov61_0222CFD4(); + memset(&Unk_ov61_0222E764.unk_00, 0, sizeof(UnkStruct_ov62_022349A8_sub1)); + Unk_ov61_0222E764.unk_138 = 0; + Unk_ov61_0222E764.unk_140[0] = 0; + Unk_ov61_0222E764.unk_240 = 0; + ov61_0222D508(); + ov61_0222D53C(); +} + +BOOL ov61_0222CF40(char *url, int port, UnkStruct_ov62_022349A8_sub1 *param2) +{ + if (param2) { + Unk_ov61_0222E764.unk_00 = *param2; + Unk_ov61_0222E764.unk_138 = 0; + } + + int v0 = ov61_0222D510(); + if (!v0) { + return FALSE; + } + + ov61_0222D4F0(); + strcpy(Unk_ov61_0222E764.unk_140, url); + + Unk_ov61_0222E764.unk_240 = port; + Unk_ov61_0222E764.unk_258 = 0; + Unk_ov61_0222E764.unk_26C = -1; + ov61_0222CFD4(); + return TRUE; +} + +static void ov61_0222CFD4(void) +{ + ov61_0222D770(); + + if (Unk_ov61_0222E764.unk_258) { + ov61_0222D4AC(Unk_ov61_0222E764.unk_258); + Unk_ov61_0222E764.unk_258 = NULL; + } + + Unk_ov61_0222E764.unk_244 = 15; + Unk_ov61_0222E764.unk_248 = 30; + Unk_ov61_0222E764.unk_24C = 30; + + Unk_ov61_0222E764.unk_254 = NULL; + Unk_ov61_0222E764.unk_25C = 0; + Unk_ov61_0222E764.unk_260 = NULL; + Unk_ov61_0222E764.unk_264 = 0; + Unk_ov61_0222E764.unk_268 = 0; + + Unk_ov61_0222E764.unk_13C = 1; + Unk_ov61_0222E764.unk_250 = 0; +} + +void ov61_0222D040(void) +{ + BOOL v0; + int v1; + + while (TRUE) { + v0 = FALSE; + switch (Unk_ov61_0222E764.unk_13C) { + case 0: + case 1: + case 7: + case 8: + case 9: + v0 = TRUE; + break; + case 2: + if (!ov61_0222DB98()) { + if (Unk_ov61_0222E764.unk_250 == 13) { + v1 = 7; + } else { + v1 = 9; + } + + v0 = TRUE; + } else { + v1 = 3; + } + + ov61_0222D4C8(); + Unk_ov61_0222E764.unk_13C = v1; + break; + case 3: + if (!ov61_0222D6A0()) { + if (Unk_ov61_0222E764.unk_250 == 13) { + v1 = 7; + } else { + v1 = 9; + } + + v0 = TRUE; + } else { + v1 = 4; + } + + ov61_0222D4C8(); + Unk_ov61_0222E764.unk_13C = v1; + break; + case 4: + if (!ov61_0222D7B0()) { + if (Unk_ov61_0222E764.unk_250 == 13) { + v1 = 7; + } else { + v1 = 9; + } + + v0 = TRUE; + } else { + v1 = 5; + } + ov61_0222D4C8(); + Unk_ov61_0222E764.unk_13C = v1; + break; + case 5: + if (!ov61_0222D8F8()) { + if (Unk_ov61_0222E764.unk_250 == 13) { + v1 = 7; + } else { + v1 = 9; + } + + v0 = TRUE; + } else { + v1 = 6; + } + + if (Unk_ov61_0222E764.unk_258 != 0) { + ov61_0222D4AC(Unk_ov61_0222E764.unk_258); + Unk_ov61_0222E764.unk_258 = 0; + } + + ov61_0222D4C8(); + Unk_ov61_0222E764.unk_13C = v1; + break; + case 6: + if (!ov61_0222DA0C()) { + if (Unk_ov61_0222E764.unk_250 == 13) { + v1 = 7; + } else { + v1 = 9; + } + } else { + v1 = 8; + } + v0 = TRUE; + ov61_0222D4C8(); + Unk_ov61_0222E764.unk_13C = v1; + break; + } + + if (v0) { + break; + } + + if (Unk_ov61_0222E764.unk_268 == 1) { + Unk_ov61_0222E764.unk_13C = 7; + Unk_ov61_0222E764.unk_250 = 13; + break; + } + + ov61_0222D4DC(); + ov61_0222DB8C(1); + } + + ov61_0222D4DC(); +} + +BOOL ov61_0222D1FC(int param0, void *param1, void *param2, int param3) +{ + ov61_0222D4C8(); + switch (Unk_ov61_0222E764.unk_13C) { + case 0: + case 2: + case 3: + case 4: + case 5: + case 6: + ov61_0222D4DC(); + Unk_ov61_0222E764.unk_13C = 9; + Unk_ov61_0222E764.unk_250 = 1; + return FALSE; + case 7: + case 8: + case 9: + ov61_0222CFD4(); + case 1: + default: + ov61_0222D4DC(); + } + + int v0 = ov61_0222E2A8(param0); + Unk_ov61_0222E764.unk_25C = v0; + if (v0 == -1) { + Unk_ov61_0222E764.unk_13C = 9; + Unk_ov61_0222E764.unk_250 = 2; + return FALSE; + } + + Unk_ov61_0222E764.unk_260 = param2; + + int v2; + if (param3 != -1) { + v2 = param3 + 0x140; + } else { + v2 = ov61_0222E168(param0); + if (v2 == -1) { + Unk_ov61_0222E764.unk_13C = 9; + Unk_ov61_0222E764.unk_250 = 2; + return FALSE; + } + } + + void *v1 = ov61_0222D498(v2); + Unk_ov61_0222E764.unk_258 = v1; + if (v1 == NULL) { + return FALSE; + } + Unk_ov61_0222E764.unk_254 = v2; + memcpy(v1, &v2, 4); + + UnkStruct_ov61_0222D1FC *v3 = Unk_ov61_0222E764.unk_258 + 4; + v3->unk_00 = param0; + v3->unk_04 = Unk_ov61_0222E764.unk_00; + v3->unk_02 = 0; + memcpy(&v3->unk_136, param1, v2 - 0x140); + + ov61_0222E0B8(Unk_ov61_0222E764.unk_258 + 4, Unk_ov61_0222E764.unk_254 - 4, Unk_ov61_0222E764.unk_258 + 4); + Unk_ov61_0222E764.unk_13C = 2; + ov61_0222D4C8(); + + int result = ov61_0222D54C(); + if (!result) { + Unk_ov61_0222E764.unk_13C = 9; + Unk_ov61_0222E764.unk_250 = 6; + ov61_0222D4DC(); + return FALSE; + } else { + ov61_0222D4DC(); + return TRUE; + } +} + +int ov61_0222D3E8(void) +{ + return Unk_ov61_0222E764.unk_13C; +} + +void *ov61_0222D3F8(void) +{ + ov61_0222D4C8(); + + int v0 = ov61_0222D3E8(); + if (v0 != 8) { + ov61_0222D4DC(); + return NULL; + } + + ov61_0222D4DC(); + return Unk_ov61_0222E764.unk_260 + 4; +} + +int ov61_0222D430(void) +{ + ov61_0222D4C8(); + + int v0 = ov61_0222D3E8(); + if (v0 != 8) { + ov61_0222D4DC(); + return -1; + } + + ov61_0222D4DC(); + return Unk_ov61_0222E764.unk_25C; +} + +int ov61_0222D464(void) +{ + ov61_0222D4C8(); + + int v0 = ov61_0222D3E8(); + if (v0 != 9) { + ov61_0222D4DC(); + return 0; + } + + ov61_0222D4DC(); + return Unk_ov61_0222E764.unk_250; +} diff --git a/lib/gds/src/ov61_0222D498.c b/lib/gds/src/ov61_0222D498.c new file mode 100644 index 0000000000..c531cff6af --- /dev/null +++ b/lib/gds/src/ov61_0222D498.c @@ -0,0 +1,357 @@ +#include +#include +#include +#include +#include + +#include "gds.h" +#include "gds_internal.h" + +u8 Unk_ov61_0222EAB0[0x800]; + +void *ov61_0222D498(u32 size) +{ + return DWC_Alloc(DWC_ALLOCTYPE_AUTH, size); +} + +void ov61_0222D4AC(void *ptr) +{ + if (ptr == NULL) { + return; + } + + DWC_Free(DWC_ALLOCTYPE_AUTH, ptr, 0); +} + +void ov61_0222D4C8(void) +{ + OS_LockMutex(&Unk_ov61_0222E764.unk_334); +} + +void ov61_0222D4DC(void) +{ + OS_UnlockMutex(&Unk_ov61_0222E764.unk_334); +} + +int ov61_0222D4F0(void) +{ + OS_InitMutex(&Unk_ov61_0222E764.unk_334); + return 1; +} + +int ov61_0222D508(void) +{ + return 1; +} + +int ov61_0222D510(void) +{ + if (!OS_IsTickAvailable()) { + OS_InitTick(); + } + + Unk_ov61_0222E764.unk_270 = 16; + return 1; +} + +void ov61_0222D53C(void) +{ + return; +} + +static void ov61_0222D540(void *param0) +{ + ov61_0222D040(); +} + +int ov61_0222D54C(void) +{ + OS_CreateThread(&Unk_ov61_0222E764.unk_274, ov61_0222D540, 0, &Unk_ov61_0222EAB0[0x800], 0x800, Unk_ov61_0222E764.unk_270); + OS_WakeupThreadDirect(&Unk_ov61_0222E764.unk_274); + return 1; +} + +static BOOL ov61_0222D5A0(char *param0) +{ + int v0 = 0; + int v1 = 0; + + while (*param0 != 0) { + if ('0' <= *param0 && *param0 <= '9') { + v0++; + if (v0 >= 4) { + return FALSE; + } + } else if (*param0 == '.') { + if (v0 == 0) { + return FALSE; + } + v1++; + v0 = 0; + if (v1 >= 4) { + return FALSE; + } + } else { + return FALSE; + } + + param0++; + } + + return v1 == 3 && v0 != 0; +} + +static BOOL ov61_0222D638(char *param0, char *param1) +{ + int v0 = ov61_0222D5A0(param0); + + if (!v0) { + SOCHostEnt *v1 = SOC_GetHostByName(param0); + if (v1) { + SOCInAddr v2 = { ((u32 *)v1->addrList[0])[0] }; + char *v3 = SOC_InetNtoA(v2); + strcpy(param1, v3); + } else { + return FALSE; + } + } else { + strcpy(param1, param0); + } + + return TRUE; +} + +BOOL ov61_0222D6A0(void) +{ + int v0 = SOC_Socket(SOC_PF_INET, SOC_SOCK_STREAM, 0); + Unk_ov61_0222E764.unk_26C = v0; + + if (v0 == -1) { + Unk_ov61_0222E764.unk_250 = 3; + return FALSE; + } + + int v1 = SOC_Fcntl(v0, SOC_F_GETFL, 0); + int v2 = SOC_Fcntl(Unk_ov61_0222E764.unk_26C, SOC_F_SETFL, v1 | SOC_O_NONBLOCK); + + if (v2 < 0) { + Unk_ov61_0222E764.unk_250 = 4; + return FALSE; + } + + char v3[14]; + BOOL v4 = ov61_0222D638(Unk_ov61_0222E764.unk_140, v3); + + if (!v4) { + Unk_ov61_0222E764.unk_250 = 5; + return FALSE; + } + + int v5 = inet_addr(v3); + Unk_ov61_0222E764.unk_264 = v5; + return TRUE; +} + +void ov61_0222D770(void) +{ + if (Unk_ov61_0222E764.unk_26C == -1) { + return; + } + + SOC_Shutdown(Unk_ov61_0222E764.unk_26C, 2); + SOC_Close(Unk_ov61_0222E764.unk_26C); + Unk_ov61_0222E764.unk_26C = -1; +} + +BOOL ov61_0222D7B0(void) +{ + SOCSockAddrIn v0; + v0.len = sizeof(SOCSockAddrIn); + v0.family = SOC_PF_INET; + v0.port = ((Unk_ov61_0222E764.unk_240 >> 8) & 0xFF) | ((Unk_ov61_0222E764.unk_240 << 8) & 0xFF00); + v0.addr.addr = Unk_ov61_0222E764.unk_264; + + u64 v1 = OS_GetTick() / 0x7FD88; + + while (TRUE) { + int v2 = SOC_Connect(Unk_ov61_0222E764.unk_26C, &v0); + + if (v2 < 0) { + if (v2 == SOC_EINPROGRESS) { + if (Unk_ov61_0222E764.unk_244 != 0) { + int v3 = OS_GetTick() / 0x7FD88 - v1; + + if (v3 >= Unk_ov61_0222E764.unk_244) { + Unk_ov61_0222E764.unk_250 = 10; + return FALSE; + } + } + } else if (v2 != SOC_EISCONN) { + Unk_ov61_0222E764.unk_250 = 7; + return FALSE; + } else { + break; + } + + ov61_0222D4C8(); + + if (Unk_ov61_0222E764.unk_268 == 1) { + Unk_ov61_0222E764.unk_250 = 13; + ov61_0222D4DC(); + return FALSE; + } + } else { + break; + } + + ov61_0222D4DC(); + ov61_0222DB8C(1); + } + + return 1; +} + +BOOL ov61_0222D8F8(void) +{ + int v0 = 0; + u64 v1 = OS_GetTick() / 0x7FD88; + + while (TRUE) { + int v2 = Unk_ov61_0222E764.unk_254 - v0; + if (v2 > Unk_ov61_0222E764.unk_254) { + v2 = Unk_ov61_0222E764.unk_254; + } + + int v3 = SOC_Send(Unk_ov61_0222E764.unk_26C, Unk_ov61_0222E764.unk_258 + v0, v2, 0); + if (v3 != -6) { + if (v3 < 0) { + Unk_ov61_0222E764.unk_250 = 11; + return FALSE; + } + + v0 += v3; + if (v0 == Unk_ov61_0222E764.unk_254) { + break; + } + } + + if (Unk_ov61_0222E764.unk_248 != 0) { + int v4 = OS_GetTick() / 0x7FD88 - v1; + if (v4 >= Unk_ov61_0222E764.unk_248) { + Unk_ov61_0222E764.unk_250 = 11; + return FALSE; + } + } + + ov61_0222D4C8(); + + if (Unk_ov61_0222E764.unk_268 == 1) { + Unk_ov61_0222E764.unk_250 = 13; + ov61_0222D4DC(); + return FALSE; + } + + ov61_0222D4DC(); + ov61_0222DB8C(1); + } + + return TRUE; +} + +BOOL ov61_0222DA0C(void) +{ + u64 v1; + u32 v0 = 0; + int v6 = -1; + + v1 = OS_GetTick() / 0x7FD88; + while (TRUE) { + int v3 = SOC_Recv(Unk_ov61_0222E764.unk_26C, Unk_ov61_0222E764.unk_260 + v0, Unk_ov61_0222E764.unk_25C - v0, 0); + if (v3 != SOC_EWOULDBLOCK) { + if (v3 <= 0) { + Unk_ov61_0222E764.unk_250 = 9; + return FALSE; + } + + v0 += v3; + + if (v0 >= 4 && v6 == -1) { + memcpy(&v6, Unk_ov61_0222E764.unk_260, sizeof(int)); + } + + if (v0 == v6 && v6 != -1) { + ov61_0222E110(Unk_ov61_0222E764.unk_260 + 4, v0 - 4, Unk_ov61_0222E764.unk_260 + 4); + Unk_ov61_0222E764.unk_25C = v6 - 4; + break; + } + } + + if (Unk_ov61_0222E764.unk_24C != 0) { + int v4 = OS_GetTick() / 0x7FD88 - v1; + if (v4 >= Unk_ov61_0222E764.unk_24C) { + Unk_ov61_0222E764.unk_250 = 12; + return FALSE; + } + } + + ov61_0222D4C8(); + + if (Unk_ov61_0222E764.unk_268 == 1) { + Unk_ov61_0222E764.unk_250 = 13; + ov61_0222D4DC(); + return FALSE; + } + + ov61_0222D4DC(); + ov61_0222DB8C(1); + } + + return TRUE; +} + +void ov61_0222DB8C(u32 param0) +{ + OS_Sleep(param0); +} + +BOOL ov61_0222DB98(void) +{ + if (Unk_ov61_0222E764.unk_138 == 1) { + return TRUE; + } + + DWCSvlResult v0; + if (!DWC_SVLGetTokenAsync("", &v0)) { + Unk_ov61_0222E764.unk_250 = 14; + return FALSE; + } + + while (TRUE) { + DWCSvlState v1 = DWC_SVLProcess(); + + if (v1 == DWC_ETYPE_SHUTDOWN_FM) { + memcpy(&Unk_ov61_0222E764.unk_00.unk_06, &v0.svltoken, DWC_SVL_TOKEN_LENGTH + 1); + Unk_ov61_0222E764.unk_138 = 1; + return TRUE; + } else if (v1 == DWC_ETYPE_SHUTDOWN_GHTTP) { + DWCErrorType v3; + int v2; + DWC_GetLastErrorEx(&v2, &v3); + Unk_ov61_0222E764.unk_250 = 14; + return FALSE; + } else if (v1 == DWC_ETYPE_SHUTDOWN_ND) { + Unk_ov61_0222E764.unk_250 = 14; + return FALSE; + } else { + ov61_0222D4C8(); + if (Unk_ov61_0222E764.unk_268 == 1) { + Unk_ov61_0222E764.unk_250 = 13; + ov61_0222D4DC(); + return FALSE; + } + } + + ov61_0222D4DC(); + ov61_0222DB8C(1); + } +} diff --git a/lib/gds/src/ov61_0222DCDC.c b/lib/gds/src/ov61_0222DCDC.c index fda09cfaf1..babcdedc0f 100644 --- a/lib/gds/src/ov61_0222DCDC.c +++ b/lib/gds/src/ov61_0222DCDC.c @@ -1,125 +1,142 @@ -#include "nitro/types.h" +#include #include "gds.h" #include "gds_internal.h" -BOOL ov61_0222DCDC(UnkStruct_ov62_022349A8_sub1 *param0) { +BOOL ov61_0222DCDC(UnkStruct_ov62_022349A8_sub1 *param0) +{ return ov61_0222CF40("pkgdsprod.nintendo.co.jp", 12400, param0); } -void ov61_0222DCFC(void) { +void ov61_0222DCFC(void) +{ ov61_0222CEDC(); } -int ov61_0222DD08(void) { +int ov61_0222DD08(void) +{ ov61_0222D4C8(); int v0 = ov61_0222D3E8(); ov61_0222D4DC(); return v0; } -int ov61_0222DD24(void) { +int ov61_0222DD24(void) +{ return ov61_0222D464(); } -BOOL ov61_0222DD30(UnkStruct_ov62_022349A8_sub3_sub1 *param0, void *param1) { +BOOL ov61_0222DD30(UnkStruct_ov62_022349A8_sub3_sub1 *param0, void *param1) +{ UnkStruct_ov62_022349A8_sub3_sub1 v0 = *param0; ov61_0222E478(param0, "--"); - ov61_0222D1FC(0x4E20, &v0, param1, -1); + ov61_0222D1FC(20000, &v0, param1, -1); } -BOOL ov61_0222DD8C(long param0, void *param1) { +BOOL ov61_0222DD8C(long param0, void *param1) +{ UnkStruct_ov61_0222DD8C v0; v0.unk_00 = 0; v0.unk_02 = 0; v0.unk_04 = param0; v0.unk_08 = param0 >> 31; - - return ov61_0222D1FC(0x4E21, &v0, param1, -1); + + return ov61_0222D1FC(20001, &v0, param1, -1); } -BOOL ov61_0222DDCC(long param0, UnkStruct_ov62_022349A8_sub3_sub2 *param1, void *param2) { +BOOL ov61_0222DDCC(long param0, UnkStruct_ov62_022349A8_sub3_sub2 *param1, void *param2) +{ UnkStruct_ov61_0222DDCC v0; v0.unk_00 = param0; v0.unk_04 = *param1; ov61_0222E478(param1, "--"); - return ov61_0222D1FC(0x5208, &v0, param2, -1); + return ov61_0222D1FC(21000, &v0, param2, -1); } -BOOL ov61_0222DE34(long param0, void *param1) { +BOOL ov61_0222DE34(long param0, void *param1) +{ UnkStruct_ov61_0222DD8C v0; v0.unk_00 = 0; v0.unk_02 = 0; v0.unk_04 = param0; v0.unk_08 = param0 >> 31; - return ov61_0222D1FC(0x5209, &v0, param1, -1); + return ov61_0222D1FC(21001, &v0, param1, -1); } -long ov61_0222DE74(void) { +long ov61_0222DE74(void) +{ return ov61_0222D430(); } -void *ov61_0222DE80(void) { +void *ov61_0222DE80(void) +{ return ov61_0222D3F8(); } -long ov61_0222DE8C(long param0) { +long ov61_0222DE8C(long param0) +{ return ov61_0222E2A8(param0); } -BOOL ov61_0222DE98(void *param0) { - return ov61_0222D1FC(0x55F0, NULL, param0, -1); +BOOL ov61_0222DE98(void *param0) +{ + return ov61_0222D1FC(22000, NULL, param0, -1); } -BOOL ov61_0222DEB8(UnkStruct_ov62_0223D518_sub1 *param0, void *param1) { +BOOL ov61_0222DEB8(UnkStruct_ov62_0223D518_sub1 *param0, void *param1) +{ UnkStruct_ov62_0223D518_sub1 v0 = *param0; - return ov61_0222D1FC(0x55F1, &v0, param1, -1); + return ov61_0222D1FC(22001, &v0, param1, -1); } -BOOL ov61_0222DF08(UnkStruct_ov62_022349A8_sub3_sub3 *param0, void *param1) { +BOOL ov61_0222DF08(UnkStruct_ov62_022349A8_sub3_sub3 *param0, void *param1) +{ UnkStruct_ov62_022349A8_sub3_sub3 v0 = *param0; - return ov61_0222D1FC(0x59D8, &v0, param1, -1); + return ov61_0222D1FC(23000, &v0, param1, -1); } -BOOL ov61_0222DF60(UnkStruct_ov62_022349A8_sub3_sub4 *param0, void *param1) { +BOOL ov61_0222DF60(UnkStruct_ov62_022349A8_sub3_sub4 *param0, void *param1) +{ UnkStruct_ov61_0222DF60 v0; v0.unk_00 = 0; v0.unk_04 = *param0; v0.unk_00 = 0; // ? v0.unk_02 = 0; - - return ov61_0222D1FC(0x59D9, &v0, param1, -1); + + return ov61_0222D1FC(23001, &v0, param1, -1); } -BOOL ov61_0222DFA8(UnkStruct_ov62_022349A8_sub3_sub5 *param0, void *param1) { +BOOL ov61_0222DFA8(UnkStruct_ov62_022349A8_sub3_sub5 *param0, void *param1) +{ UnkStruct_ov61_0222DFA8 v0 = { 0 }; v0.unk_00 = 1; v0.unk_0C = param0->unk_00; - return ov61_0222D1FC(0x59D9, &v0, param1, -1); + return ov61_0222D1FC(23001, &v0, param1, -1); } -BOOL ov61_0222E000(UnkStruct_ov62_022349A8_sub3_sub5 *param0, void *param1) { +BOOL ov61_0222E000(UnkStruct_ov62_022349A8_sub3_sub5 *param0, void *param1) +{ UnkStruct_ov61_0222DFA8 v0 = { 0 }; v0.unk_00 = 2; v0.unk_0C = param0->unk_00; - return ov61_0222D1FC(0x59D9, &v0, param1, -1); + return ov61_0222D1FC(23001, &v0, param1, -1); } -BOOL ov61_0222E058(u64 param0, u32 param1, void *param2) { +BOOL ov61_0222E058(u64 param0, u32 param1, void *param2) +{ UnkStruct_ov61_0222E058 v0; v0.unk_00 = param0; v0.unk_08 = param1; - - return ov61_0222D1FC(0x59DA, &v0, param2, -1); + + return ov61_0222D1FC(23002, &v0, param2, -1); } -BOOL ov61_0222E08C(u64 param0, void *param1) { +BOOL ov61_0222E08C(u64 param0, void *param1) +{ u64 v0 = param0; - - return ov61_0222D1FC(0x59DB, &v0, param1, -1); + return ov61_0222D1FC(23003, &v0, param1, -1); } - diff --git a/lib/gds/src/ov61_0222E0B8.c b/lib/gds/src/ov61_0222E0B8.c new file mode 100644 index 0000000000..cbc7a05757 --- /dev/null +++ b/lib/gds/src/ov61_0222E0B8.c @@ -0,0 +1,210 @@ +#include + +#include "gds.h" +#include "gds_internal.h" + +// clang-format off +static u8 Unk_ov61_0222E65C[] = { + 0x93, 0x18, 0x33, 0x28, 0x0B, 0x07, 0x03, 0x82, 0x02, 0x43, 0x8A, 0x86, 0xDB, 0x38, 0x34, 0x19, + 0xD6, 0xF9, 0x59, 0xB2, 0xAD, 0x6A, 0x7D, 0xBC, 0xEE, 0xE0, 0x3A, 0x3F, 0xCA, 0x4C, 0x25, 0x68, + 0xF4, 0xA9, 0x5B, 0xF7, 0x22, 0x60, 0x5A, 0x6F, 0xFA, 0x1B, 0x79, 0xE9, 0x17, 0xB1, 0x00, 0x9C, + 0xAA, 0x5E, 0x9D, 0xFF, 0xEA, 0xA0, 0x0D, 0x4B, 0x75, 0xF6, 0x61, 0x85, 0x5D, 0xBB, 0xDC, 0xFB, + 0x64, 0x2E, 0x7A, 0xAB, 0xF1, 0xE8, 0x44, 0x0C, 0xB8, 0x8F, 0xA8, 0x0A, 0x8E, 0xBD, 0xE1, 0x3B, + 0xFC, 0x3C, 0x9F, 0x1A, 0x56, 0xC5, 0xE2, 0xF5, 0x47, 0xD9, 0xD7, 0x8C, 0xCD, 0x97, 0xF0, 0x7B, + 0x8B, 0xC3, 0x4F, 0x45, 0x04, 0x90, 0x81, 0x1E, 0x6B, 0xC9, 0xD3, 0x73, 0xC6, 0xE7, 0x24, 0xBA, + 0x32, 0xF3, 0xC0, 0xEC, 0x57, 0xCC, 0xC4, 0xB6, 0xC1, 0xAE, 0xAF, 0x88, 0xF2, 0x84, 0xCE, 0x4A, + 0x0F, 0x94, 0x41, 0xB4, 0x74, 0x2A, 0xD1, 0x70, 0x1C, 0xD4, 0xB0, 0xC2, 0x09, 0x08, 0x16, 0x9B, + 0xB5, 0x8D, 0x2B, 0xD2, 0x89, 0xB7, 0x99, 0xA1, 0x30, 0x65, 0x54, 0x40, 0x96, 0x71, 0xFE, 0xBF, + 0x31, 0x06, 0xE5, 0x14, 0xE6, 0xDA, 0x48, 0x26, 0xAC, 0x87, 0x9A, 0xD8, 0xA6, 0xEB, 0x92, 0xCF, + 0xFD, 0x77, 0x1D, 0x21, 0x9E, 0x36, 0x35, 0x53, 0x3E, 0xD0, 0xD5, 0x62, 0x58, 0x5F, 0x63, 0x7C, + 0x7E, 0x52, 0x29, 0x12, 0x2C, 0x78, 0x05, 0x91, 0x55, 0xE3, 0xA2, 0xB9, 0xF8, 0x50, 0x95, 0x13, + 0x80, 0x7F, 0x11, 0x27, 0xCB, 0x37, 0x4E, 0x51, 0x15, 0xEF, 0xA7, 0x72, 0x4D, 0x83, 0x49, 0xA4, + 0x69, 0xDE, 0x20, 0xA3, 0x67, 0xDF, 0x10, 0x42, 0x39, 0x6C, 0x2D, 0xC7, 0x23, 0xE4, 0xDD, 0xED, + 0xBE, 0x66, 0xB3, 0x2F, 0x01, 0x6E, 0x6D, 0xC8, 0x1F, 0x98, 0xA5, 0x46, 0x76, 0x5C, 0x3D, 0x0E +}; +// clang-format on + +void ov61_0222E0B8(u8 *param0, int param1, u8 *param2) +{ + for (int i = 0; i < param1; i++) { + u8 v0; + if (i != 0) { + int v1 = (i + param1 + param0[0]) & 0xFF; + v0 = Unk_ov61_0222E65C[v1]; + } else { + v0 = 0; + } + + *(param2++) = v0 ^ param0[i]; + } +} + +void ov61_0222E110(u8 *param0, int param1, u8 *param2) +{ + for (int i = 0; i < param1; i++) { + u8 v0; + if (i != 0) { + int v1 = (i + param1 + param0[0]) & 0xFF; + v0 = Unk_ov61_0222E65C[v1]; + } else { + v0 = 0; + } + + param2[i] ^= v0; + } +} + +int ov61_0222E168(int param0) +{ + int v0; + + switch (param0) { + case 0: + v0 = 0x400; + break; + case 20000: + v0 = 0xE0; + break; + case 20001: + v0 = 0xC; + break; + case 21000: + v0 = 0x220; + break; + case 21001: + v0 = 0xC; + break; + case 22000: + v0 = 0; + break; + case 22001: + v0 = 0x24; + break; + case 23000: + v0 = 0x1D4C; + break; + case 23001: + v0 = 0x1C; + break; + case 23002: + v0 = 0xC; + break; + case 23003: + v0 = 8; + break; + default: + return -1; + } + + return v0 + 0x140; +} + +static const int Unk_ov61_0222E550[] = { + 0x5, + 0x3, + 0x2, + 0x4, + 0x1, + 0x6, + 0x9, + 0x2, + 0x7, + 0x8, + 0x6, + 0x3 +}; + +int ov61_0222E2A8(int param0) +{ + const int v0[] = { + 0, + 20000, + 20001, + 21000, + 21001, + 22000, + 22001, + 23000, + 23001, + 23002, + 23003, + -1 + }; + + int v1; + switch (param0) { + case -1: + int v2 = 0; + v1 = -1; + + while (TRUE) { + int v4 = v0[v2]; + if (v4 == -1) { + break; + } + int v3 = ov61_0222E2A8(v4); + if (v3 > v1) { + v1 = v3; + } + v2++; + } + + if (v1 == -1) { + return -1; + } + + break; + case 0: + v1 = 0x400; + break; + case 20000: + v1 = 8; + break; + case 20001: + v1 = 0x93C; + break; + case 21000: + v1 = 8; + break; + case 21001: + v1 = 0x2B74; + break; + case 22000: + v1 = 4; + break; + case 22001: + v1 = 0x630; + break; + case 23000: + v1 = 8; + break; + case 23001: + v1 = 0x1C24; + break; + case 23002: + v1 = 0x1D58; + break; + case 23003: + v1 = 0; + break; + default: + return -1; + } + + return v1 + 8; +} + +static const int Unk_ov61_0222E5B0[] = { + 0x5, + 0x3, + 0x2, + 0x4, + 0x1, + 0x6, + 0x9, + 0x2, + 0x7, + 0x8, + 0x6, + 0x3 +}; diff --git a/lib/gds/src/ov61_0222E478.c b/lib/gds/src/ov61_0222E478.c new file mode 100644 index 0000000000..1fa5a8c002 --- /dev/null +++ b/lib/gds/src/ov61_0222E478.c @@ -0,0 +1,7 @@ +#include "gds.h" +#include "gds_internal.h" + +void ov61_0222E478(void *param0, char *param1) +{ + return; +} diff --git a/lib/spl/include/spl_manager.h b/lib/spl/include/spl_manager.h index 8c1bf8ee9d..93767a80db 100644 --- a/lib/spl/include/spl_manager.h +++ b/lib/spl/include/spl_manager.h @@ -1,8 +1,8 @@ #ifndef SPL_MANAGER_H #define SPL_MANAGER_H -#include #include +#include #include "spl_emitter.h" #include "spl_particle.h" diff --git a/lib/spl/src/spl_emit.c b/lib/spl/src/spl_emit.c index 865e1987cb..ed8fcf26f4 100644 --- a/lib/spl/src/spl_emit.c +++ b/lib/spl/src/spl_emit.c @@ -83,12 +83,12 @@ void SPLEmitter_EmitParticles(SPLEmitter *emtr, SPLParticleList *list) emtr->emissionCountFractional = emitCountDec & FX32_DEC_MASK; enum SPLEmissionType emitType = header->flags.emissionType; - if (emitType == SPL_EMISSION_TYPE_CIRCLE_BORDER - || emitType == SPL_EMISSION_TYPE_CIRCLE_BORDER_UNIFORM - || emitType == SPL_EMISSION_TYPE_CIRCLE - || emitType == SPL_EMISSION_TYPE_CYLINDER_SURFACE - || emitType == SPL_EMISSION_TYPE_CYLINDER - || emitType == SPL_EMISSION_TYPE_HEMISPHERE_SURFACE + if (emitType == SPL_EMISSION_TYPE_CIRCLE_BORDER + || emitType == SPL_EMISSION_TYPE_CIRCLE_BORDER_UNIFORM + || emitType == SPL_EMISSION_TYPE_CIRCLE + || emitType == SPL_EMISSION_TYPE_CYLINDER_SURFACE + || emitType == SPL_EMISSION_TYPE_CYLINDER + || emitType == SPL_EMISSION_TYPE_HEMISPHERE_SURFACE || emitType == SPL_EMISSION_TYPE_HEMISPHERE) { SPLEmitter_ComputeOrthogonalAxes(emtr); } diff --git a/lib/spl/src/spl_manager.c b/lib/spl/src/spl_manager.c index 4156b02b29..3801f5db4f 100644 --- a/lib/spl/src/spl_manager.c +++ b/lib/spl/src/spl_manager.c @@ -10,10 +10,12 @@ #include "spl_particle.h" #define DECODE_WH(X) ((u16)(1 << ((X) + 3))) +// clang-format off #define EMITTER_SHOULD_TERMINATE(emtr, header) \ (((header->flags.selfMaintaining && header->emitterLifeTime != 0 && emtr->state.started && emtr->age > header->emitterLifeTime) \ - || emtr->state.terminate) \ + || emtr->state.terminate) \ && emtr->particles.count == 0 && emtr->childParticles.count == 0) +// clang-format on static u32 SPLUtil_AllocTextureVRAM(u32 size, BOOL is4x4); static u32 SPLUtil_AllocPaletteVRAM(u32 size, BOOL is4Pltt); diff --git a/src/overlay061/ov61_0222B008.c b/src/overlay061/ov61_0222B008.c index 5e621b6306..a03b5e73ff 100644 --- a/src/overlay061/ov61_0222B008.c +++ b/src/overlay061/ov61_0222B008.c @@ -18,7 +18,6 @@ #include "overlay061/struct_ov61_0222B960.h" #include "overlay061/struct_ov61_0222BDC8.h" #include "overlay062/ov62_02248408.h" -#include "overlay062/struct_ov62_022349A8.h" #include "overlay062/struct_ov62_022349A8_sub3_sub3.h" #include "overlay062/struct_ov62_022349A8_sub3_sub4.h" #include "overlay062/struct_ov62_022349A8_sub3_sub5.h" diff --git a/src/overlay061/ov61_0222BC4C.c b/src/overlay061/ov61_0222BC4C.c index df674b309a..06f96f1d4f 100644 --- a/src/overlay061/ov61_0222BC4C.c +++ b/src/overlay061/ov61_0222BC4C.c @@ -4,6 +4,7 @@ #include #include +#include "overlay061/ov61_0222B008.h" #include "overlay061/struct_ov61_0222B960.h" #include "overlay061/struct_ov61_0222BC4C.h" #include "overlay061/struct_ov61_0222BC4C_1.h" @@ -24,7 +25,6 @@ #include "overlay061/struct_ov61_0222BEB8.h" #include "overlay061/struct_ov61_0222BED8.h" #include "overlay061/struct_ov61_0222BED8_sub1.h" -#include "overlay062/struct_ov62_022349A8.h" #include "overlay062/struct_ov62_02239DA4_sub1.h" #include "overlay062/struct_ov62_0223DF10.h" diff --git a/src/overlay062/ov62_02231690.c b/src/overlay062/ov62_02231690.c index 77469e56ad..1125ae0992 100644 --- a/src/overlay062/ov62_02231690.c +++ b/src/overlay062/ov62_02231690.c @@ -14,6 +14,7 @@ #include "struct_defs/struct_0208B878.h" #include "struct_defs/struct_0208C06C.h" +#include "overlay061/ov61_0222B008.h" #include "overlay061/ov61_0222BC4C.h" #include "overlay061/struct_ov61_0222BE20.h" #include "overlay062/ov62_0222F2C0.h" @@ -27,7 +28,6 @@ #include "overlay062/struct_ov62_02233750.h" #include "overlay062/struct_ov62_02233828.h" #include "overlay062/struct_ov62_02233F74.h" -#include "overlay062/struct_ov62_022349A8.h" #include "overlay062/struct_ov62_0223CAA4.h" #include "overlay062/struct_ov62_02248CDC.h" diff --git a/src/overlay062/ov62_0224112C.c b/src/overlay062/ov62_0224112C.c index b26c4812ae..775aab332a 100644 --- a/src/overlay062/ov62_0224112C.c +++ b/src/overlay062/ov62_0224112C.c @@ -11,7 +11,6 @@ #include "overlay062/ov62_02239D60.h" #include "overlay062/ov62_0223CAEC.h" #include "overlay062/ov62_02241204.h" -#include "overlay062/struct_ov62_022349A8.h" #include "overlay062/struct_ov62_02241130.h" #include "inlines.h" diff --git a/subprojects/NitroDWC.wrap b/subprojects/NitroDWC.wrap index 20806a8667..21b270ebf8 100644 --- a/subprojects/NitroDWC.wrap +++ b/subprojects/NitroDWC.wrap @@ -1,6 +1,6 @@ [wrap-git] url = https://github.com/ntrtwl/NitroDWC.git -revision = 4d29f686ae4c2af03f7132571e1481620df3ade1 +revision = 51e5adf40cfde2b24a885990bf785bf40d54a66c depth = 1 directory = NitroDWC-2.2.30008