From d789398ef7fc5a2955199ac4f87be40b90182405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 4 Aug 2021 21:00:41 +0200 Subject: [PATCH 01/19] tmp --- arm9/arm9.lsf | 1 + arm9/asm/unk_02006D98.s | 214 +----------------- arm9/global.inc | 6 + arm9/src/unk_02006D98_c.c | 442 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 454 insertions(+), 209 deletions(-) create mode 100644 arm9/src/unk_02006D98_c.c diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 256897014..06b32e1f9 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -21,6 +21,7 @@ Static arm9 Object overlay_manager.o Object filesystem.o Object gf_gfx_loader.o + Object unk_02006D98_c.o Object unk_02006D98.o Object unk_02008AA4.o Object unk_02008DEC.o diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index 01721a1af..f5256bc85 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -6,226 +6,22 @@ .section .rodata - .global UNK_020ECBD0 -UNK_020ECBD0: ; 0x020ECBD0 - .byte 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00 - .byte 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00 - .byte 0xA0, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 - .byte 0xA0, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00, 0x00 - .global UNK_020ECC10 -UNK_020ECC10: ; 0x020ECC10 - .byte 0x1E, 0x21, 0x1F, 0x21, 0x20, 0x21, 0x1D, 0x22, 0x1E, 0x22, 0x1F, 0x22, 0x20, 0x22, 0x21, 0x22 - .byte 0x1C, 0x23, 0x1D, 0x23, 0x1E, 0x23, 0x1F, 0x23, 0x20, 0x23, 0x21, 0x23, 0x22, 0x23, 0x1C, 0x24 - .byte 0x1D, 0x24, 0x1E, 0x24, 0x1F, 0x24, 0x20, 0x24, 0x21, 0x24, 0x22, 0x24, 0x1C, 0x25, 0x1D, 0x25 - .byte 0x1E, 0x25, 0x1F, 0x25, 0x20, 0x25, 0x21, 0x25, 0x22, 0x25, 0x1C, 0x26, 0x1D, 0x26, 0x1E, 0x26 - .byte 0x1F, 0x26, 0x20, 0x26, 0x21, 0x26, 0x22, 0x26, 0x1C, 0x27, 0x1D, 0x27, 0x1E, 0x27, 0x1F, 0x27 - .byte 0x20, 0x27, 0x21, 0x27, 0x22, 0x27, 0x1D, 0x28, 0x1E, 0x28, 0x1F, 0x28, 0x20, 0x28, 0x21, 0x28 - .byte 0x1E, 0x29, 0x1F, 0x29, 0x20, 0x29, 0xFF, 0xFF - .global UNK_020ECC78 -UNK_020ECC78: ; 0x020ECC78 - .byte 0x33, 0x11, 0x34, 0x11, 0x35, 0x11, 0x36, 0x11, 0x32, 0x12, 0x33, 0x12, 0x34, 0x12, 0x35, 0x12 - .byte 0x36, 0x12, 0x37, 0x12, 0x31, 0x13, 0x32, 0x13, 0x33, 0x13, 0x34, 0x13, 0x35, 0x13, 0x36, 0x13 - .byte 0x37, 0x13, 0x38, 0x13, 0x31, 0x14, 0x32, 0x14, 0x33, 0x14, 0x34, 0x14, 0x35, 0x14, 0x36, 0x14 - .byte 0x37, 0x14, 0x38, 0x14, 0x31, 0x15, 0x32, 0x15, 0x33, 0x15, 0x34, 0x15, 0x35, 0x15, 0x36, 0x15 - .byte 0x37, 0x15, 0x38, 0x15, 0x31, 0x16, 0x32, 0x16, 0x33, 0x16, 0x34, 0x16, 0x35, 0x16, 0x36, 0x16 - .byte 0x37, 0x16, 0x38, 0x16, 0x32, 0x17, 0x33, 0x17, 0x34, 0x17, 0x35, 0x17, 0x36, 0x17, 0x37, 0x17 - .byte 0x33, 0x18, 0x34, 0x18, 0x35, 0x18, 0x36, 0x18, 0xFF, 0xFF - .global UNK_020ECCE2 -UNK_020ECCE2: ; 0x020ECCE2 - .byte 0x1B, 0x0F, 0x1C, 0x0F, 0x1D, 0x0F, 0x1E, 0x0F, 0x1A, 0x10, 0x1B, 0x10, 0x1C, 0x10, 0x1D, 0x10 - .byte 0x1E, 0x10, 0x1F, 0x10, 0x19, 0x11, 0x1A, 0x11, 0x1B, 0x11, 0x1C, 0x11, 0x1D, 0x11, 0x1E, 0x11 - .byte 0x1F, 0x11, 0x20, 0x11, 0x19, 0x12, 0x1A, 0x12, 0x1B, 0x12, 0x1C, 0x12, 0x1D, 0x12, 0x1E, 0x12 - .byte 0x1F, 0x12, 0x20, 0x12, 0x19, 0x13, 0x1A, 0x13, 0x1B, 0x13, 0x1C, 0x13, 0x1D, 0x13, 0x1E, 0x13 - .byte 0x1F, 0x13, 0x20, 0x13, 0x19, 0x14, 0x1A, 0x14, 0x1B, 0x14, 0x1C, 0x14, 0x1D, 0x14, 0x1E, 0x14 - .byte 0x1F, 0x14, 0x20, 0x14, 0x1A, 0x15, 0x1B, 0x15, 0x1C, 0x15, 0x1D, 0x15, 0x1E, 0x15, 0x1F, 0x15 - .byte 0x1B, 0x16, 0x1C, 0x16, 0x1D, 0x16, 0x1E, 0x16, 0xFF, 0xFF - .global UNK_020ECD4C -UNK_020ECD4C: ; 0x020ECD4C - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00 - .byte 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00 - .byte 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00 - .global UNK_020ECDCC -UNK_020ECDCC: ; 0x020ECDCC - .byte 0x2B, 0x21, 0x2C, 0x21, 0x2D, 0x21, 0x29, 0x22, 0x2A, 0x22, 0x2B, 0x22, 0x2C, 0x22, 0x2D, 0x22 - .byte 0x2E, 0x22, 0x2F, 0x22, 0x28, 0x23, 0x29, 0x23, 0x2A, 0x23, 0x2B, 0x23, 0x2C, 0x23, 0x2D, 0x23 - .byte 0x2E, 0x23, 0x2F, 0x23, 0x30, 0x23, 0x28, 0x24, 0x29, 0x24, 0x2A, 0x24, 0x2B, 0x24, 0x2C, 0x24 - .byte 0x2D, 0x24, 0x2E, 0x24, 0x2F, 0x24, 0x30, 0x24, 0x28, 0x25, 0x29, 0x25, 0x2A, 0x25, 0x2B, 0x25 - .byte 0x2C, 0x25, 0x2D, 0x25, 0x2E, 0x25, 0x2F, 0x25, 0x30, 0x25, 0x28, 0x26, 0x29, 0x26, 0x2A, 0x26 - .byte 0x2B, 0x26, 0x2C, 0x26, 0x2D, 0x26, 0x2E, 0x26, 0x2F, 0x26, 0x30, 0x26, 0x28, 0x27, 0x29, 0x27 - .byte 0x2A, 0x27, 0x2B, 0x27, 0x2C, 0x27, 0x2D, 0x27, 0x2E, 0x27, 0x2F, 0x27, 0x30, 0x27, 0x28, 0x28 - .byte 0x29, 0x28, 0x2A, 0x28, 0x2B, 0x28, 0x2C, 0x28, 0x2D, 0x28, 0x2E, 0x28, 0x2F, 0x28, 0x30, 0x28 - .byte 0x29, 0x29, 0x2A, 0x29, 0x2B, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x2B, 0x2A - .byte 0x2C, 0x2A, 0x2D, 0x2A, 0xFF, 0xFF, 0x00, 0x00 + + + + .section .data - .global UNK_02105AE8 -UNK_02105AE8: ; 0x02105AE8 - .word UNK_020ECCE2 - .word UNK_020ECC78 - .word UNK_020ECC10 - .word UNK_020ECDCC .text - thumb_func_start FUN_02006D98 -FUN_02006D98: ; 0x02006D98 - push {r3-r7, lr} - sub sp, #0x10 - mov r1, #0xba - lsl r1, r1, #0x2 - add r5, r0, #0x0 - bl AllocFromHeap - add r4, r0, #0x0 - mov r0, #0xa6 - lsl r0, r0, #0x2 - add r1, r0, #0x0 - add r3, r0, #0x0 - str r5, [r4, r0] - mov r2, #0x0 - add r1, #0x48 - strb r2, [r4, r1] - add r1, r0, #0x4 - str r2, [r4, r1] - mov r1, #0x2 - lsl r1, r1, #0xe - add r3, #0x8 - str r1, [r4, r3] - add r3, r0, #0x0 - add r3, #0xc - str r2, [r4, r3] - mov r2, #0x80 - add r0, #0x10 - str r2, [r4, r0] - add r0, r5, #0x0 - bl AllocFromHeap - mov r1, #0xab - lsl r1, r1, #0x2 - str r0, [r4, r1] - add r0, r5, #0x0 - mov r1, #0xc0 - bl AllocFromHeap - mov r1, #0x2b - lsl r1, r1, #0x4 - str r0, [r4, r1] - ldr r1, [r4, r1] - mov r0, #0x0 - mov r2, #0x4 - bl MIi_CpuClearFast - add r0, r5, #0x0 - mov r1, #0xc0 - bl AllocFromHeap - mov r1, #0xad - lsl r1, r1, #0x2 - str r0, [r4, r1] - ldr r1, [r4, r1] - mov r0, #0x0 - mov r2, #0x4 - bl MIi_CpuClearFast - mov r6, #0x0 - add r5, r4, #0x0 - add r7, r6, #0x0 -_02006E12: - add r0, r7, #0x0 - add r1, r5, #0x0 - mov r2, #0x98 - bl MIi_CpuClearFast - add r6, r6, #0x1 - add r5, #0x98 - cmp r6, #0x4 - blt _02006E12 - bl NNS_G2dSetupSoftwareSpriteCamera - ldr r2, _02006EC8 ; =0x000002E3 - mov r0, #0x0 - strb r0, [r4, r2] - sub r2, #0x4b - ldr r2, [r4, r2] - mov r0, #0x75 ; NARC_POKETOOL_POKEGRA_OTHERPOKE - mov r1, #0xd3 - bl AllocAndReadWholeNarcMemberByIdPair - add r1, sp, #0xc - str r0, [sp, #0x4] - bl NNS_G2dGetUnpackedCharacterData - ldr r0, [sp, #0xc] - mov r1, #0xaf - ldr r0, [r0, #0x4] - lsl r1, r1, #0x2 - str r0, [r4, r1] - ldr r0, [sp, #0xc] - ldr r2, [r0, #0x8] - add r0, r1, #0x4 - str r2, [r4, r0] - ldr r0, [sp, #0xc] - add r1, #0x8 - ldr r0, [r0, #0xc] - str r0, [r4, r1] - ldr r0, [sp, #0xc] - ldr r0, [r0, #0x14] - str r0, [sp, #0x8] - bl FUN_02008A74 - ldr r1, [sp, #0x8] - mov r0, #0xab - lsl r0, r0, #0x2 - mov r2, #0x2 - ldrb r1, [r1, #0x0] - ldr r0, [r4, r0] - lsl r2, r2, #0xe - bl MI_CpuFill8 - mov r0, #0x0 - mov r7, #0xab - ldr r6, _02006ECC ; =0x00005050 - mov r12, r0 - str r0, [sp, #0x0] - add r3, r0, #0x0 - lsl r7, r7, #0x2 -_02006E86: - ldr r2, [sp, #0x8] - ldr r0, [sp, #0x0] - mov r1, #0x0 - add r2, r2, r0 -_02006E8E: - ldr r5, [r4, r7] - ldrb r0, [r2, #0x0] - add r5, r3, r5 - add r5, r1, r5 - add r1, r1, #0x1 - add r2, r2, #0x1 - strb r0, [r5, r6] - cmp r1, #0x28 - blt _02006E8E - ldr r0, [sp, #0x0] - add r3, #0x80 - add r0, #0x50 - str r0, [sp, #0x0] - mov r0, r12 - add r0, r0, #0x1 - mov r12, r0 - cmp r0, #0x50 - blt _02006E86 - ldr r0, [sp, #0x4] - bl FreeToHeap - ldr r0, _02006ED0 ; =0x000002E1 - mov r1, #0x1 - strb r1, [r4, r0] - add r0, r0, #0x1 - strb r1, [r4, r0] - add r0, r4, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_02006EC8: .word 0x000002E3 -_02006ECC: .word 0x00005050 -_02006ED0: .word 0x000002E1 + thumb_func_start FUN_02006ED4 FUN_02006ED4: ; 0x02006ED4 diff --git a/arm9/global.inc b/arm9/global.inc index db33a3141..d00c06dee 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8729,3 +8729,9 @@ .extern wcschr .extern wcscpy .extern wmemchr +.extern UNK_020ECBD0 +.extern UNK_020ECC10 +.extern UNK_020ECC78 +.extern UNK_020ECCE2 +.extern UNK_020ECDCC +.extern UNK_02105AE8 diff --git a/arm9/src/unk_02006D98_c.c b/arm9/src/unk_02006D98_c.c new file mode 100644 index 000000000..f1fb4f34b --- /dev/null +++ b/arm9/src/unk_02006D98_c.c @@ -0,0 +1,442 @@ +#include "global.h" +#include "MI_memory.h" +#include "NNS_g2d.h" +#include "filesystem.h" +#include "heap.h" +#include "poketool/pokegra/otherpoke.naix" +#include "registers.h" + +struct UnkStruct3 { + u32 unk00[8]; +}; + +struct UnkStruct4{ + u8 unk0; + u8 unk1; +}; + + + + + + +const struct UnkStruct4 UNK_020ECC78[] = { + {0x33, 0x11}, {0x34, 0x11}, {0x35, 0x11}, {0x36, 0x11}, {0x32, 0x12}, {0x33, 0x12}, {0x34, 0x12}, {0x35, 0x12}, + {0x36, 0x12}, {0x37, 0x12}, {0x31, 0x13}, {0x32, 0x13}, {0x33, 0x13}, {0x34, 0x13}, {0x35, 0x13}, {0x36, 0x13}, + {0x37, 0x13}, {0x38, 0x13}, {0x31, 0x14}, {0x32, 0x14}, {0x33, 0x14}, {0x34, 0x14}, {0x35, 0x14}, {0x36, 0x14}, + {0x37, 0x14}, {0x38, 0x14}, {0x31, 0x15}, {0x32, 0x15}, {0x33, 0x15}, {0x34, 0x15}, {0x35, 0x15}, {0x36, 0x15}, + {0x37, 0x15}, {0x38, 0x15}, {0x31, 0x16}, {0x32, 0x16}, {0x33, 0x16}, {0x34, 0x16}, {0x35, 0x16}, {0x36, 0x16}, + {0x37, 0x16}, {0x38, 0x16}, {0x32, 0x17}, {0x33, 0x17}, {0x34, 0x17}, {0x35, 0x17}, {0x36, 0x17}, {0x37, 0x17}, + {0x33, 0x18}, {0x34, 0x18}, {0x35, 0x18}, {0x36, 0x18}, {0xFF, 0xFF}, +}; + +const struct UnkStruct4 UNK_020ECCE2[] = { + {0x1B, 0x0F}, {0x1C, 0x0F}, {0x1D, 0x0F}, {0x1E, 0x0F}, {0x1A, 0x10}, {0x1B, 0x10}, {0x1C, 0x10}, {0x1D, 0x10}, + {0x1E, 0x10}, {0x1F, 0x10}, {0x19, 0x11}, {0x1A, 0x11}, {0x1B, 0x11}, {0x1C, 0x11}, {0x1D, 0x11}, {0x1E, 0x11}, + {0x1F, 0x11}, {0x20, 0x11}, {0x19, 0x12}, {0x1A, 0x12}, {0x1B, 0x12}, {0x1C, 0x12}, {0x1D, 0x12}, {0x1E, 0x12}, + {0x1F, 0x12}, {0x20, 0x12}, {0x19, 0x13}, {0x1A, 0x13}, {0x1B, 0x13}, {0x1C, 0x13}, {0x1D, 0x13}, {0x1E, 0x13}, + {0x1F, 0x13}, {0x20, 0x13}, {0x19, 0x14}, {0x1A, 0x14}, {0x1B, 0x14}, {0x1C, 0x14}, {0x1D, 0x14}, {0x1E, 0x14}, + {0x1F, 0x14}, {0x20, 0x14}, {0x1A, 0x15}, {0x1B, 0x15}, {0x1C, 0x15}, {0x1D, 0x15}, {0x1E, 0x15}, {0x1F, 0x15}, + {0x1B, 0x16}, {0x1C, 0x16}, {0x1D, 0x16}, {0x1E, 0x16}, {0xFF, 0xFF}, +}; + + + + +const struct UnkStruct4 UNK_020ECC10[] = { + {0x1E, 0x21}, {0x1F, 0x21}, {0x20, 0x21}, {0x1D, 0x22}, {0x1E, 0x22}, {0x1F, 0x22}, {0x20, 0x22}, {0x21, 0x22}, + {0x1C, 0x23}, {0x1D, 0x23}, {0x1E, 0x23}, {0x1F, 0x23}, {0x20, 0x23}, {0x21, 0x23}, {0x22, 0x23}, {0x1C, 0x24}, + {0x1D, 0x24}, {0x1E, 0x24}, {0x1F, 0x24}, {0x20, 0x24}, {0x21, 0x24}, {0x22, 0x24}, {0x1C, 0x25}, {0x1D, 0x25}, + {0x1E, 0x25}, {0x1F, 0x25}, {0x20, 0x25}, {0x21, 0x25}, {0x22, 0x25}, {0x1C, 0x26}, {0x1D, 0x26}, {0x1E, 0x26}, + {0x1F, 0x26}, {0x20, 0x26}, {0x21, 0x26}, {0x22, 0x26}, {0x1C, 0x27}, {0x1D, 0x27}, {0x1E, 0x27}, {0x1F, 0x27}, + {0x20, 0x27}, {0x21, 0x27}, {0x22, 0x27}, {0x1D, 0x28}, {0x1E, 0x28}, {0x1F, 0x28}, {0x20, 0x28}, {0x21, 0x28}, + {0x1E, 0x29}, {0x1F, 0x29}, {0x20, 0x29}, {0xFF, 0xFF}, +}; + + +const struct UnkStruct4 UNK_020ECD4C[] = { + {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, + {0x50, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, + {0x00, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, + {0x50, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, + {0x00, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, + {0x50, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, + {0xA0, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, + {0xA0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, +}; + + + +const struct UnkStruct4 UNK_020ECDCC[] = { + {0x2B, 0x21}, {0x2C, 0x21}, {0x2D, 0x21}, {0x29, 0x22}, {0x2A, 0x22}, {0x2B, 0x22}, {0x2C, 0x22}, {0x2D, 0x22}, + {0x2E, 0x22}, {0x2F, 0x22}, {0x28, 0x23}, {0x29, 0x23}, {0x2A, 0x23}, {0x2B, 0x23}, {0x2C, 0x23}, {0x2D, 0x23}, + {0x2E, 0x23}, {0x2F, 0x23}, {0x30, 0x23}, {0x28, 0x24}, {0x29, 0x24}, {0x2A, 0x24}, {0x2B, 0x24}, {0x2C, 0x24}, + {0x2D, 0x24}, {0x2E, 0x24}, {0x2F, 0x24}, {0x30, 0x24}, {0x28, 0x25}, {0x29, 0x25}, {0x2A, 0x25}, {0x2B, 0x25}, + {0x2C, 0x25}, {0x2D, 0x25}, {0x2E, 0x25}, {0x2F, 0x25}, {0x30, 0x25}, {0x28, 0x26}, {0x29, 0x26}, {0x2A, 0x26}, + {0x2B, 0x26}, {0x2C, 0x26}, {0x2D, 0x26}, {0x2E, 0x26}, {0x2F, 0x26}, {0x30, 0x26}, {0x28, 0x27}, {0x29, 0x27}, + {0x2A, 0x27}, {0x2B, 0x27}, {0x2C, 0x27}, {0x2D, 0x27}, {0x2E, 0x27}, {0x2F, 0x27}, {0x30, 0x27}, {0x28, 0x28}, + {0x29, 0x28}, {0x2A, 0x28}, {0x2B, 0x28}, {0x2C, 0x28}, {0x2D, 0x28}, {0x2E, 0x28}, {0x2F, 0x28}, {0x30, 0x28}, + {0x29, 0x29}, {0x2A, 0x29}, {0x2B, 0x29}, {0x2C, 0x29}, {0x2D, 0x29}, {0x2E, 0x29}, {0x2F, 0x29}, {0x2B, 0x2A}, + {0x2C, 0x2A}, {0x2D, 0x2A}, {0xFF, 0xFF} +}; + + +// const int UNK_020ECD4C[4][2][4] = { +// { +// {0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50} +// }, { + +// {0, 0x50, 0x50, 0xA0}, {0x50, 0x50, 0xA0, 0xA0} + +// }, { + + +// {0, 0xA0, 0x50, 0xF0}, {0x50, 0xA0, 0xA0, 0xF0} + +// }, { + +// {0xA0, 0, 0xF0, 0x50}, {0xA0, 0x50, 0xF0, 0xA0} + +// } +// }; + +const int UNK_020ECBD0[4][4] = { + {160, 160, 224, 176}, {160, 160, 224, 176}, {160, 176, 224, 192}, {160, 192, 224, 208} +}; + + + +const struct UnkStruct4 *UNK_02105AE8[] = { + UNK_020ECCE2, + UNK_020ECC78, + UNK_020ECC10, + UNK_020ECDCC, +}; + +struct UnkStruct2 { + u32 unk00_0:1; + u32 unk00_1:6; + u8 unk04[0x20]; + s16 unk24; + s16 unk26; + u32 unk28; + s16 unk2C; + s16 unk2E; + u32 unk30; + s16 unk34; + s16 unk36; + u16 unk38; + u16 unk3A; + u16 unk3C; + u16 unk3E; + s16 unk40; + s16 unk42; + u8 unk44; + u8 unk45; + u8 unk46; + u8 unk47; + u8 unk48[0x8]; + u32 unk50_0:5; + u32 unk50_5:5; + u32 unk50_a:5; + u32 unk50_f:5; + u32 unk50_14:5; + u32 unk50_19:5; + u32 unk50_1E:2; + u32 unk54_0:1; + u32 unk54_1:1; + u32 unk54_2:5; + u32 unk54_7:4; + u32 unk54_B:1; + u8 unk58; + u8 unk59; + u8 unk5A; + u8 unk5B; + u8 unk5C[0xC]; + void (*unk68)(struct UnkStruct2 *, void *); + u16 unk6C_0:2; + u16 unk6C_2:1; + u16 unk6C_3:1; + u16 unk6C_4:1; + u16 unk6C_5:2; + s8 unk6E; + u8 unk6F; + s16 unk70; + s16 unk72; + s16 unk74; + s16 unk76; + u8 unk78[0x20]; +}; + + +struct UnkStruct1 +{ + struct UnkStruct2 unk000[4]; + u8 unk260[0xc]; + u32 unk26C; + u32 unk270; + u32 unk274; + u32 unk278; + u32 unk27C; + u8 unk280[0x18]; + u32 unk298; + u32 unk29C; + u32 unk2A0; + u32 unk2A4; + u32 unk2A8; + void *unk2AC; + void *unk2B0; + void *unk2B4; + u32 unk2B8; + u32 unk2BC; + u32 unk2C0; + u32 unk2C4; + u8 unk2C8[0x18]; + u8 unk2E0; + u8 unk2E1; + u8 unk2E2; + u8 unk2E3; + u32 unk2E4; +}; + +extern void NNS_G2dSetupSoftwareSpriteCamera(void); +extern void FUN_02008A74(void *); + +THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) +{ + struct UnkStruct1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct1)); + ptr->unk298 = heap_id; + ptr->unk2E0 = 0; + ptr->unk29C = 0; + ptr->unk2A0 = 0x8000; + ptr->unk2A4 = 0; + ptr->unk2A8 = 0x80; + + ptr->unk2AC = AllocFromHeap(heap_id, 0x8000); + + ptr->unk2B0 = AllocFromHeap(heap_id, 0xc0); + MIi_CpuClearFast(0, ptr->unk2B0, 4); + + ptr->unk2B4 = AllocFromHeap(heap_id, 0xc0); + MIi_CpuClearFast(0, ptr->unk2B4, 4); + + for (int i = 0; i < 4; i++) + { + MIi_CpuClearFast(0, &ptr->unk000[i], sizeof(struct UnkStruct2)); + } + + NNS_G2dSetupSoftwareSpriteCamera(); + ptr->unk2E3 = 0; + + u8 *st8; + void *st4 = AllocAndReadWholeNarcMemberByIdPair( + NARC_POKETOOL_POKEGRA_OTHERPOKE, NARC_otherpoke_narc_0211_NCGR, ptr->unk298); + NNSG2dCharacterData *stc; + NNS_G2dGetUnpackedCharacterData(st4, &stc); + + ptr->unk2BC = stc->pixelFmt; + ptr->unk2C0 = stc->mapingType; + ptr->unk2C4 = stc->characterFmt; + st8 = stc->pRawData; + + FUN_02008A74(st8); + MI_CpuFill8(ptr->unk2AC, *st8, 0x8000); + + for (int i = 0; i < 0x50; i++) + { + for (int j = 0; j < 0x28; j++) + { + ((u8 *)ptr->unk2AC)[0x5050 + i * 0x80 + j] = st8[i * 0x50 + j]; + } + } + + FreeToHeap(st4); + ptr->unk2E1 = 1; + ptr->unk2E2 = 1; + + return ptr; +} + + +extern void FUN_020082A8(struct UnkStruct1 *); +extern void FUN_020086F4(struct UnkStruct1 *); +extern void NNS_G3dGeFlushBuffer(); +extern void FUN_02007F48(struct UnkStruct2 *); + + + + +// extern struct UnkStruct3 UNK_020ECD4C[4]; +extern void NNS_G2dDrawSpriteFast(s16 param0, s16 param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8); + + +// THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { +// s32 arg3; +// s32 arg4; + +// FUN_020082A8(param0); +// FUN_020086F4(param0); + +// NNS_G3dGeFlushBuffer(); + +// reg_G3_MTX_PUSH = 0; + +// reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk274 << 26) | (1 << 30) | (param0->unk26C << 20) | (param0->unk270 << 23) | (param0->unk27C << 29); + +// for (int st18 = 0; st18 < 4; st18++) { +// if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || param0->unk000[st18].unk54_B != 0) { +// continue; +// } + +// if (param0->unk000[st18].unk68 != NULL) { +// param0->unk000[st18].unk68(¶m0->unk000[st18], ¶m0->unk000[st18].unk24); +// } + +// NNS_G3dGeFlushBuffer(); + +// if (param0->unk2E3 != 1) { +// reg_G3_MTX_IDENTITY = 0; +// } + +// FUN_02007F48(¶m0->unk000[st18]); + +// u32 shift; +// if (param0->unk274 == 2) { +// shift = 1; +// } else { +// shift = 0; +// } + +// reg_G3_TEXPLTT_BASE = (param0->unk2A4 + st18*0x20)>>(4-shift); + +// u32 r1 = param0->unk000[st18].unk28<<0xc; +// u32 r0 = (param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc; +// u32 r3 = (param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc; + +// reg_G3_MTX_TRANS = r3; +// reg_G3_MTX_TRANS = r0; +// reg_G3_MTX_TRANS = r1; + + +// s32 idx = ((s32)param0->unk000[st18].unk38)>>4; +// G3_RotX(FX_SinCosTable_[idx*2], FX_SinCosTable_[idx*2+1]); + +// s32 idy = ((s32)param0->unk000[st18].unk3A)>>4; +// G3_RotY(FX_SinCosTable_[idy*2], FX_SinCosTable_[idy*2+1]); + +// s32 idz = ((s32)param0->unk000[st18].unk3C)>>4; +// G3_RotZ(FX_SinCosTable_[idz*2], FX_SinCosTable_[idz*2+1]); + + +// r1 = -(param0->unk000[st18].unk28<<0xc); +// r0 = -((param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc); +// r3 = -((param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc); + +// reg_G3_MTX_TRANS = r3; +// reg_G3_MTX_TRANS = r0; +// reg_G3_MTX_TRANS = r1; + +// reg_G3_DIF_AMB = +// ((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5<<5) | (param0->unk000[st18].unk50_a<<10))) | +// (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14<<5) | (param0->unk000[st18].unk50_19<<10)))<<16) | +// 0x8000; + + +// reg_G3_SPE_EMI = 0x4210; + +// { +// u32 r1 = param0->unk000[st18].unk00_1; +// u32 r0 = param0->unk000[st18].unk54_2; +// reg_G3_POLYGON_ATTR = 0xc0 | (r1<<24) | (r0<<16); +// } + +// if (param0->unk000[st18].unk54_1 != 0) { +// u32 r6 = param0->unk000[st18].unk44 + UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4]; +// u32 r12 = param0->unk000[st18].unk46; +// u32 r1 = param0->unk000[st18].unk45 + UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4 + 1]; +// u32 r7 = param0->unk000[st18].unk47; +// u32 r0 = r12 + r6; + + +// NNS_G2dDrawSpriteFast( +// param0->unk000[st18].unk24-40 + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C, +// param0->unk000[st18].unk26-40 + param0->unk000[st18].unk45 + param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, +// param0->unk000[st18].unk28 + param0->unk000[st18].unk30, +// r12, +// r7, +// r6, +// r1, +// r0, +// r7 + r1 +// ); + +// } else { +// arg3 = (param0->unk000[st18].unk34*80)>>8; +// arg4 = (param0->unk000[st18].unk36*80)>>8; + +// NNS_G2dDrawSpriteFast( +// param0->unk000[st18].unk24-(arg3/2)+param0->unk000[st18].unk2C, +// param0->unk000[st18].unk26-(arg4/2)+ param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, +// param0->unk000[st18].unk28 + param0->unk000[st18].unk30, +// arg3, +// arg4, +// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4], +// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4+1], +// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4+2], +// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4+3] +// ); +// } + + +// if (param0->unk000[st18].unk6C_0 == 0 || param0->unk000[st18].unk6C_5 == 0 || param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { +// continue; +// } + +// if (param0->unk2E3 != 1) { +// reg_G3_MTX_IDENTITY = 0; +// } + +// u32 shift2; +// if (param0->unk274 == 2) { +// shift2 = 1; +// } else { +// shift2 = 0; +// } +// reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C_0+3)<<5))>>(4-shift2); + + + +// if (param0->unk000[st18].unk6C_4 != 0) { +// arg3 = (param0->unk000[st18].unk34*64)>>8; +// arg4 = (param0->unk000[st18].unk36*16)>>8; +// } else { +// arg3 = 64; +// arg4 = 16; +// } + +// if (param0->unk000[st18].unk6C_2 != 0) { +// param0->unk000[st18].unk70 = param0->unk000[st18].unk24+ param0->unk000[st18].unk2C + param0->unk000[st18].unk74; +// } + +// if (param0->unk000[st18].unk6C_3 != 0) { +// param0->unk000[st18].unk72 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk76; +// } + + +// NNS_G2dDrawSpriteFast( +// param0->unk000[st18].unk70 - (arg3/2), +// param0->unk000[st18].unk72 - (arg4/2), +// 0xFFFFFC18, +// arg3, +// arg4, +// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4], +// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4 + 1], +// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4 + 2], +// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4 + 3] +// ); + +// } + + +// reg_G3_MTX_POP = 1; +// } From f97c4d0627b52c8ad10a8d37082d05cdd8996197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 23 Aug 2021 21:40:27 +0200 Subject: [PATCH 02/19] ugliness --- arm9/src/unk_02006D98_c.c | 368 +++++++++++++++++++------------------- 1 file changed, 183 insertions(+), 185 deletions(-) diff --git a/arm9/src/unk_02006D98_c.c b/arm9/src/unk_02006D98_c.c index f1fb4f34b..0e39671ba 100644 --- a/arm9/src/unk_02006D98_c.c +++ b/arm9/src/unk_02006D98_c.c @@ -17,71 +17,63 @@ struct UnkStruct4{ - - - -const struct UnkStruct4 UNK_020ECC78[] = { - {0x33, 0x11}, {0x34, 0x11}, {0x35, 0x11}, {0x36, 0x11}, {0x32, 0x12}, {0x33, 0x12}, {0x34, 0x12}, {0x35, 0x12}, - {0x36, 0x12}, {0x37, 0x12}, {0x31, 0x13}, {0x32, 0x13}, {0x33, 0x13}, {0x34, 0x13}, {0x35, 0x13}, {0x36, 0x13}, - {0x37, 0x13}, {0x38, 0x13}, {0x31, 0x14}, {0x32, 0x14}, {0x33, 0x14}, {0x34, 0x14}, {0x35, 0x14}, {0x36, 0x14}, - {0x37, 0x14}, {0x38, 0x14}, {0x31, 0x15}, {0x32, 0x15}, {0x33, 0x15}, {0x34, 0x15}, {0x35, 0x15}, {0x36, 0x15}, - {0x37, 0x15}, {0x38, 0x15}, {0x31, 0x16}, {0x32, 0x16}, {0x33, 0x16}, {0x34, 0x16}, {0x35, 0x16}, {0x36, 0x16}, - {0x37, 0x16}, {0x38, 0x16}, {0x32, 0x17}, {0x33, 0x17}, {0x34, 0x17}, {0x35, 0x17}, {0x36, 0x17}, {0x37, 0x17}, - {0x33, 0x18}, {0x34, 0x18}, {0x35, 0x18}, {0x36, 0x18}, {0xFF, 0xFF}, -}; - -const struct UnkStruct4 UNK_020ECCE2[] = { - {0x1B, 0x0F}, {0x1C, 0x0F}, {0x1D, 0x0F}, {0x1E, 0x0F}, {0x1A, 0x10}, {0x1B, 0x10}, {0x1C, 0x10}, {0x1D, 0x10}, - {0x1E, 0x10}, {0x1F, 0x10}, {0x19, 0x11}, {0x1A, 0x11}, {0x1B, 0x11}, {0x1C, 0x11}, {0x1D, 0x11}, {0x1E, 0x11}, - {0x1F, 0x11}, {0x20, 0x11}, {0x19, 0x12}, {0x1A, 0x12}, {0x1B, 0x12}, {0x1C, 0x12}, {0x1D, 0x12}, {0x1E, 0x12}, - {0x1F, 0x12}, {0x20, 0x12}, {0x19, 0x13}, {0x1A, 0x13}, {0x1B, 0x13}, {0x1C, 0x13}, {0x1D, 0x13}, {0x1E, 0x13}, - {0x1F, 0x13}, {0x20, 0x13}, {0x19, 0x14}, {0x1A, 0x14}, {0x1B, 0x14}, {0x1C, 0x14}, {0x1D, 0x14}, {0x1E, 0x14}, - {0x1F, 0x14}, {0x20, 0x14}, {0x1A, 0x15}, {0x1B, 0x15}, {0x1C, 0x15}, {0x1D, 0x15}, {0x1E, 0x15}, {0x1F, 0x15}, - {0x1B, 0x16}, {0x1C, 0x16}, {0x1D, 0x16}, {0x1E, 0x16}, {0xFF, 0xFF}, +static const u8 UNK_020ECCE0[] = { + 0xFF, 0xFF, 0x1B, 0x0F, 0x1C, 0x0F, 0x1D, 0x0F, 0x1E, 0x0F, 0x1A, 0x10, 0x1B, 0x10, 0x1C, 0x10, 0x1D, 0x10, + 0x1E, 0x10, 0x1F, 0x10, 0x19, 0x11, 0x1A, 0x11, 0x1B, 0x11, 0x1C, 0x11, 0x1D, 0x11, 0x1E, 0x11, + 0x1F, 0x11, 0x20, 0x11, 0x19, 0x12, 0x1A, 0x12, 0x1B, 0x12, 0x1C, 0x12, 0x1D, 0x12, 0x1E, 0x12, + 0x1F, 0x12, 0x20, 0x12, 0x19, 0x13, 0x1A, 0x13, 0x1B, 0x13, 0x1C, 0x13, 0x1D, 0x13, 0x1E, 0x13, + 0x1F, 0x13, 0x20, 0x13, 0x19, 0x14, 0x1A, 0x14, 0x1B, 0x14, 0x1C, 0x14, 0x1D, 0x14, 0x1E, 0x14, + 0x1F, 0x14, 0x20, 0x14, 0x1A, 0x15, 0x1B, 0x15, 0x1C, 0x15, 0x1D, 0x15, 0x1E, 0x15, 0x1F, 0x15, + 0x1B, 0x16, 0x1C, 0x16, 0x1D, 0x16, 0x1E, 0x16, 0xFF, 0xFF, }; -const struct UnkStruct4 UNK_020ECC10[] = { - {0x1E, 0x21}, {0x1F, 0x21}, {0x20, 0x21}, {0x1D, 0x22}, {0x1E, 0x22}, {0x1F, 0x22}, {0x20, 0x22}, {0x21, 0x22}, - {0x1C, 0x23}, {0x1D, 0x23}, {0x1E, 0x23}, {0x1F, 0x23}, {0x20, 0x23}, {0x21, 0x23}, {0x22, 0x23}, {0x1C, 0x24}, - {0x1D, 0x24}, {0x1E, 0x24}, {0x1F, 0x24}, {0x20, 0x24}, {0x21, 0x24}, {0x22, 0x24}, {0x1C, 0x25}, {0x1D, 0x25}, - {0x1E, 0x25}, {0x1F, 0x25}, {0x20, 0x25}, {0x21, 0x25}, {0x22, 0x25}, {0x1C, 0x26}, {0x1D, 0x26}, {0x1E, 0x26}, - {0x1F, 0x26}, {0x20, 0x26}, {0x21, 0x26}, {0x22, 0x26}, {0x1C, 0x27}, {0x1D, 0x27}, {0x1E, 0x27}, {0x1F, 0x27}, - {0x20, 0x27}, {0x21, 0x27}, {0x22, 0x27}, {0x1D, 0x28}, {0x1E, 0x28}, {0x1F, 0x28}, {0x20, 0x28}, {0x21, 0x28}, - {0x1E, 0x29}, {0x1F, 0x29}, {0x20, 0x29}, {0xFF, 0xFF}, +static const u8 UNK_020ECC10[] = { + 0x1E, 0x21, 0x1F, 0x21, 0x20, 0x21, 0x1D, 0x22, 0x1E, 0x22, 0x1F, 0x22, 0x20, 0x22, 0x21, 0x22, + 0x1C, 0x23, 0x1D, 0x23, 0x1E, 0x23, 0x1F, 0x23, 0x20, 0x23, 0x21, 0x23, 0x22, 0x23, 0x1C, 0x24, + 0x1D, 0x24, 0x1E, 0x24, 0x1F, 0x24, 0x20, 0x24, 0x21, 0x24, 0x22, 0x24, 0x1C, 0x25, 0x1D, 0x25, + 0x1E, 0x25, 0x1F, 0x25, 0x20, 0x25, 0x21, 0x25, 0x22, 0x25, 0x1C, 0x26, 0x1D, 0x26, 0x1E, 0x26, + 0x1F, 0x26, 0x20, 0x26, 0x21, 0x26, 0x22, 0x26, 0x1C, 0x27, 0x1D, 0x27, 0x1E, 0x27, 0x1F, 0x27, + 0x20, 0x27, 0x21, 0x27, 0x22, 0x27, 0x1D, 0x28, 0x1E, 0x28, 0x1F, 0x28, 0x20, 0x28, 0x21, 0x28, + 0x1E, 0x29, 0x1F, 0x29, 0x20, 0x29, 0xFF, 0xFF, }; -const struct UnkStruct4 UNK_020ECD4C[] = { - {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, - {0x50, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, - {0x00, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, - {0x50, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, - {0x00, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, - {0x50, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, - {0xA0, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, - {0xA0, 0x00}, {0x00, 0x00}, {0x50, 0x00}, {0x00, 0x00}, {0xF0, 0x00}, {0x00, 0x00}, {0xA0, 0x00}, {0x00, 0x00}, +static const u8 UNK_020ECC78[] = { + 0x33, 0x11, 0x34, 0x11, 0x35, 0x11, 0x36, 0x11, 0x32, 0x12, 0x33, 0x12, 0x34, 0x12, 0x35, 0x12, + 0x36, 0x12, 0x37, 0x12, 0x31, 0x13, 0x32, 0x13, 0x33, 0x13, 0x34, 0x13, 0x35, 0x13, 0x36, 0x13, + 0x37, 0x13, 0x38, 0x13, 0x31, 0x14, 0x32, 0x14, 0x33, 0x14, 0x34, 0x14, 0x35, 0x14, 0x36, 0x14, + 0x37, 0x14, 0x38, 0x14, 0x31, 0x15, 0x32, 0x15, 0x33, 0x15, 0x34, 0x15, 0x35, 0x15, 0x36, 0x15, + 0x37, 0x15, 0x38, 0x15, 0x31, 0x16, 0x32, 0x16, 0x33, 0x16, 0x34, 0x16, 0x35, 0x16, 0x36, 0x16, + 0x37, 0x16, 0x38, 0x16, 0x32, 0x17, 0x33, 0x17, 0x34, 0x17, 0x35, 0x17, 0x36, 0x17, 0x37, 0x17, + 0x33, 0x18, 0x34, 0x18, 0x35, 0x18, 0x36, 0x18, +}; + +static const u8 UNK_020ECDCC[] = { + 0x2B, 0x21, 0x2C, 0x21, 0x2D, 0x21, 0x29, 0x22, 0x2A, 0x22, 0x2B, 0x22, 0x2C, 0x22, 0x2D, 0x22, + 0x2E, 0x22, 0x2F, 0x22, 0x28, 0x23, 0x29, 0x23, 0x2A, 0x23, 0x2B, 0x23, 0x2C, 0x23, 0x2D, 0x23, + 0x2E, 0x23, 0x2F, 0x23, 0x30, 0x23, 0x28, 0x24, 0x29, 0x24, 0x2A, 0x24, 0x2B, 0x24, 0x2C, 0x24, + 0x2D, 0x24, 0x2E, 0x24, 0x2F, 0x24, 0x30, 0x24, 0x28, 0x25, 0x29, 0x25, 0x2A, 0x25, 0x2B, 0x25, + 0x2C, 0x25, 0x2D, 0x25, 0x2E, 0x25, 0x2F, 0x25, 0x30, 0x25, 0x28, 0x26, 0x29, 0x26, 0x2A, 0x26, + 0x2B, 0x26, 0x2C, 0x26, 0x2D, 0x26, 0x2E, 0x26, 0x2F, 0x26, 0x30, 0x26, 0x28, 0x27, 0x29, 0x27, + 0x2A, 0x27, 0x2B, 0x27, 0x2C, 0x27, 0x2D, 0x27, 0x2E, 0x27, 0x2F, 0x27, 0x30, 0x27, 0x28, 0x28, + 0x29, 0x28, 0x2A, 0x28, 0x2B, 0x28, 0x2C, 0x28, 0x2D, 0x28, 0x2E, 0x28, 0x2F, 0x28, 0x30, 0x28, + 0x29, 0x29, 0x2A, 0x29, 0x2B, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x2B, 0x2A, + 0x2C, 0x2A, 0x2D, 0x2A, 0xFF, 0xFF }; -const struct UnkStruct4 UNK_020ECDCC[] = { - {0x2B, 0x21}, {0x2C, 0x21}, {0x2D, 0x21}, {0x29, 0x22}, {0x2A, 0x22}, {0x2B, 0x22}, {0x2C, 0x22}, {0x2D, 0x22}, - {0x2E, 0x22}, {0x2F, 0x22}, {0x28, 0x23}, {0x29, 0x23}, {0x2A, 0x23}, {0x2B, 0x23}, {0x2C, 0x23}, {0x2D, 0x23}, - {0x2E, 0x23}, {0x2F, 0x23}, {0x30, 0x23}, {0x28, 0x24}, {0x29, 0x24}, {0x2A, 0x24}, {0x2B, 0x24}, {0x2C, 0x24}, - {0x2D, 0x24}, {0x2E, 0x24}, {0x2F, 0x24}, {0x30, 0x24}, {0x28, 0x25}, {0x29, 0x25}, {0x2A, 0x25}, {0x2B, 0x25}, - {0x2C, 0x25}, {0x2D, 0x25}, {0x2E, 0x25}, {0x2F, 0x25}, {0x30, 0x25}, {0x28, 0x26}, {0x29, 0x26}, {0x2A, 0x26}, - {0x2B, 0x26}, {0x2C, 0x26}, {0x2D, 0x26}, {0x2E, 0x26}, {0x2F, 0x26}, {0x30, 0x26}, {0x28, 0x27}, {0x29, 0x27}, - {0x2A, 0x27}, {0x2B, 0x27}, {0x2C, 0x27}, {0x2D, 0x27}, {0x2E, 0x27}, {0x2F, 0x27}, {0x30, 0x27}, {0x28, 0x28}, - {0x29, 0x28}, {0x2A, 0x28}, {0x2B, 0x28}, {0x2C, 0x28}, {0x2D, 0x28}, {0x2E, 0x28}, {0x2F, 0x28}, {0x30, 0x28}, - {0x29, 0x29}, {0x2A, 0x29}, {0x2B, 0x29}, {0x2C, 0x29}, {0x2D, 0x29}, {0x2E, 0x29}, {0x2F, 0x29}, {0x2B, 0x2A}, - {0x2C, 0x2A}, {0x2D, 0x2A}, {0xFF, 0xFF} + +static const int UNK_020ECBD0[4][4] = { + {160, 160, 224, 176}, {160, 160, 224, 176}, {160, 176, 224, 192}, {160, 192, 224, 208} }; -// const int UNK_020ECD4C[4][2][4] = { + +// static const int UNK_020ECD4C[4][2][4] = { // { // {0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50} // }, { @@ -100,17 +92,25 @@ const struct UnkStruct4 UNK_020ECDCC[] = { // } // }; -const int UNK_020ECBD0[4][4] = { - {160, 160, 224, 176}, {160, 160, 224, 176}, {160, 176, 224, 192}, {160, 192, 224, 208} + +const u8 UNK_020ECD4C[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, }; const struct UnkStruct4 *UNK_02105AE8[] = { - UNK_020ECCE2, - UNK_020ECC78, - UNK_020ECC10, - UNK_020ECDCC, + (struct UnkStruct4 *)(UNK_020ECCE0+2), + (struct UnkStruct4 *)UNK_020ECC78, + (struct UnkStruct4 *)UNK_020ECC10, + (struct UnkStruct4 *)UNK_020ECDCC, }; struct UnkStruct2 { @@ -265,178 +265,176 @@ extern void FUN_02007F48(struct UnkStruct2 *); - -// extern struct UnkStruct3 UNK_020ECD4C[4]; extern void NNS_G2dDrawSpriteFast(s16 param0, s16 param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8); -// THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { -// s32 arg3; -// s32 arg4; +THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { + s32 arg3; + s32 arg4; -// FUN_020082A8(param0); -// FUN_020086F4(param0); + FUN_020082A8(param0); + FUN_020086F4(param0); -// NNS_G3dGeFlushBuffer(); + NNS_G3dGeFlushBuffer(); -// reg_G3_MTX_PUSH = 0; + reg_G3_MTX_PUSH = 0; -// reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk274 << 26) | (1 << 30) | (param0->unk26C << 20) | (param0->unk270 << 23) | (param0->unk27C << 29); + reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk274 << 26) | (1 << 30) | (param0->unk26C << 20) | (param0->unk270 << 23) | (param0->unk27C << 29); -// for (int st18 = 0; st18 < 4; st18++) { -// if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || param0->unk000[st18].unk54_B != 0) { -// continue; -// } + for (int st18 = 0; st18 < 4; st18++) { + if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || param0->unk000[st18].unk54_B != 0) { + continue; + } -// if (param0->unk000[st18].unk68 != NULL) { -// param0->unk000[st18].unk68(¶m0->unk000[st18], ¶m0->unk000[st18].unk24); -// } + if (param0->unk000[st18].unk68 != NULL) { + param0->unk000[st18].unk68(¶m0->unk000[st18], ¶m0->unk000[st18].unk24); + } -// NNS_G3dGeFlushBuffer(); + NNS_G3dGeFlushBuffer(); -// if (param0->unk2E3 != 1) { -// reg_G3_MTX_IDENTITY = 0; -// } + if (param0->unk2E3 != 1) { + reg_G3_MTX_IDENTITY = 0; + } -// FUN_02007F48(¶m0->unk000[st18]); + FUN_02007F48(¶m0->unk000[st18]); -// u32 shift; -// if (param0->unk274 == 2) { -// shift = 1; -// } else { -// shift = 0; -// } + u32 shift; + if (param0->unk274 == 2) { + shift = 1; + } else { + shift = 0; + } -// reg_G3_TEXPLTT_BASE = (param0->unk2A4 + st18*0x20)>>(4-shift); + reg_G3_TEXPLTT_BASE = (param0->unk2A4 + st18*0x20)>>(4-shift); -// u32 r1 = param0->unk000[st18].unk28<<0xc; -// u32 r0 = (param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc; -// u32 r3 = (param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc; + u32 r1 = param0->unk000[st18].unk28<<0xc; + u32 r0 = (param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc; + u32 r3 = (param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc; -// reg_G3_MTX_TRANS = r3; -// reg_G3_MTX_TRANS = r0; -// reg_G3_MTX_TRANS = r1; + reg_G3_MTX_TRANS = r3; + reg_G3_MTX_TRANS = r0; + reg_G3_MTX_TRANS = r1; -// s32 idx = ((s32)param0->unk000[st18].unk38)>>4; -// G3_RotX(FX_SinCosTable_[idx*2], FX_SinCosTable_[idx*2+1]); + s32 idx = ((s32)param0->unk000[st18].unk38)>>4; + G3_RotX(FX_SinCosTable_[idx*2], FX_SinCosTable_[idx*2+1]); -// s32 idy = ((s32)param0->unk000[st18].unk3A)>>4; -// G3_RotY(FX_SinCosTable_[idy*2], FX_SinCosTable_[idy*2+1]); + s32 idy = ((s32)param0->unk000[st18].unk3A)>>4; + G3_RotY(FX_SinCosTable_[idy*2], FX_SinCosTable_[idy*2+1]); -// s32 idz = ((s32)param0->unk000[st18].unk3C)>>4; -// G3_RotZ(FX_SinCosTable_[idz*2], FX_SinCosTable_[idz*2+1]); + s32 idz = ((s32)param0->unk000[st18].unk3C)>>4; + G3_RotZ(FX_SinCosTable_[idz*2], FX_SinCosTable_[idz*2+1]); -// r1 = -(param0->unk000[st18].unk28<<0xc); -// r0 = -((param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc); -// r3 = -((param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc); + r1 = -(param0->unk000[st18].unk28<<0xc); + r0 = -((param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc); + r3 = -((param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc); -// reg_G3_MTX_TRANS = r3; -// reg_G3_MTX_TRANS = r0; -// reg_G3_MTX_TRANS = r1; + reg_G3_MTX_TRANS = r3; + reg_G3_MTX_TRANS = r0; + reg_G3_MTX_TRANS = r1; -// reg_G3_DIF_AMB = -// ((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5<<5) | (param0->unk000[st18].unk50_a<<10))) | -// (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14<<5) | (param0->unk000[st18].unk50_19<<10)))<<16) | -// 0x8000; + reg_G3_DIF_AMB = + ((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5<<5) | (param0->unk000[st18].unk50_a<<10))) | + (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14<<5) | (param0->unk000[st18].unk50_19<<10)))<<16) | + 0x8000; -// reg_G3_SPE_EMI = 0x4210; + reg_G3_SPE_EMI = 0x4210; -// { -// u32 r1 = param0->unk000[st18].unk00_1; -// u32 r0 = param0->unk000[st18].unk54_2; -// reg_G3_POLYGON_ATTR = 0xc0 | (r1<<24) | (r0<<16); -// } + { + u32 r1 = param0->unk000[st18].unk00_1; + u32 r0 = param0->unk000[st18].unk54_2; + reg_G3_POLYGON_ATTR = 0xc0 | (r1<<24) | (r0<<16); + } -// if (param0->unk000[st18].unk54_1 != 0) { -// u32 r6 = param0->unk000[st18].unk44 + UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4]; -// u32 r12 = param0->unk000[st18].unk46; -// u32 r1 = param0->unk000[st18].unk45 + UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4 + 1]; -// u32 r7 = param0->unk000[st18].unk47; -// u32 r0 = r12 + r6; + if (param0->unk000[st18].unk54_1 != 0) { + u32 r6 = param0->unk000[st18].unk44 + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0]; + u32 r12 = param0->unk000[st18].unk46; + u32 r1 = param0->unk000[st18].unk45 + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1]; + u32 r7 = param0->unk000[st18].unk47; + u32 r0 = r12 + r6; -// NNS_G2dDrawSpriteFast( -// param0->unk000[st18].unk24-40 + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C, -// param0->unk000[st18].unk26-40 + param0->unk000[st18].unk45 + param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, -// param0->unk000[st18].unk28 + param0->unk000[st18].unk30, -// r12, -// r7, -// r6, -// r1, -// r0, -// r7 + r1 -// ); + NNS_G2dDrawSpriteFast( + param0->unk000[st18].unk24-40 + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C, + param0->unk000[st18].unk26-40 + param0->unk000[st18].unk45 + param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, + param0->unk000[st18].unk28 + param0->unk000[st18].unk30, + r12, + r7, + r6, + r1, + r0, + r7 + r1 + ); -// } else { -// arg3 = (param0->unk000[st18].unk34*80)>>8; -// arg4 = (param0->unk000[st18].unk36*80)>>8; + } else { + arg3 = (param0->unk000[st18].unk34*80)>>8; + arg4 = (param0->unk000[st18].unk36*80)>>8; -// NNS_G2dDrawSpriteFast( -// param0->unk000[st18].unk24-(arg3/2)+param0->unk000[st18].unk2C, -// param0->unk000[st18].unk26-(arg4/2)+ param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, -// param0->unk000[st18].unk28 + param0->unk000[st18].unk30, -// arg3, -// arg4, -// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4], -// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4+1], -// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4+2], -// UNK_020ECD4C[st18].unk00[param0->unk000[st18].unk5B*4+3] -// ); -// } + NNS_G2dDrawSpriteFast( + param0->unk000[st18].unk24-(arg3/2)+param0->unk000[st18].unk2C, + param0->unk000[st18].unk26-(arg4/2)+ param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, + param0->unk000[st18].unk28 + param0->unk000[st18].unk30, + arg3, + arg4, + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0], + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1], + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][2], + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][3] + ); + } -// if (param0->unk000[st18].unk6C_0 == 0 || param0->unk000[st18].unk6C_5 == 0 || param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { -// continue; -// } + if (param0->unk000[st18].unk6C_0 == 0 || param0->unk000[st18].unk6C_5 == 0 || param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { + continue; + } -// if (param0->unk2E3 != 1) { -// reg_G3_MTX_IDENTITY = 0; -// } + if (param0->unk2E3 != 1) { + reg_G3_MTX_IDENTITY = 0; + } -// u32 shift2; -// if (param0->unk274 == 2) { -// shift2 = 1; -// } else { -// shift2 = 0; -// } -// reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C_0+3)<<5))>>(4-shift2); + u32 shift2; + if (param0->unk274 == 2) { + shift2 = 1; + } else { + shift2 = 0; + } + reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C_0+3)<<5))>>(4-shift2); -// if (param0->unk000[st18].unk6C_4 != 0) { -// arg3 = (param0->unk000[st18].unk34*64)>>8; -// arg4 = (param0->unk000[st18].unk36*16)>>8; -// } else { -// arg3 = 64; -// arg4 = 16; -// } + if (param0->unk000[st18].unk6C_4 != 0) { + arg3 = (param0->unk000[st18].unk34*64)>>8; + arg4 = (param0->unk000[st18].unk36*16)>>8; + } else { + arg3 = 64; + arg4 = 16; + } -// if (param0->unk000[st18].unk6C_2 != 0) { -// param0->unk000[st18].unk70 = param0->unk000[st18].unk24+ param0->unk000[st18].unk2C + param0->unk000[st18].unk74; -// } + if (param0->unk000[st18].unk6C_2 != 0) { + param0->unk000[st18].unk70 = param0->unk000[st18].unk24+ param0->unk000[st18].unk2C + param0->unk000[st18].unk74; + } -// if (param0->unk000[st18].unk6C_3 != 0) { -// param0->unk000[st18].unk72 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk76; -// } + if (param0->unk000[st18].unk6C_3 != 0) { + param0->unk000[st18].unk72 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk76; + } -// NNS_G2dDrawSpriteFast( -// param0->unk000[st18].unk70 - (arg3/2), -// param0->unk000[st18].unk72 - (arg4/2), -// 0xFFFFFC18, -// arg3, -// arg4, -// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4], -// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4 + 1], -// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4 + 2], -// UNK_020ECBD0[param0->unk000[st18].unk6C_5*4 + 3] -// ); + NNS_G2dDrawSpriteFast( + param0->unk000[st18].unk70 - (arg3/2), + param0->unk000[st18].unk72 - (arg4/2), + 0xFFFFFC18, + arg3, + arg4, + UNK_020ECBD0[param0->unk000[st18].unk6C_5][0], + UNK_020ECBD0[param0->unk000[st18].unk6C_5][1], + UNK_020ECBD0[param0->unk000[st18].unk6C_5][2], + UNK_020ECBD0[param0->unk000[st18].unk6C_5][3] + ); -// } + } -// reg_G3_MTX_POP = 1; -// } + reg_G3_MTX_POP = 1; +} From be5461e427455695c3e99c4956b4f00c0535911a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 23 Aug 2021 22:41:01 +0200 Subject: [PATCH 03/19] skip nonmatching FUN_02006ED4 --- arm9/asm/unk_02006D98.s | 665 -------------------------------------- arm9/src/unk_02006D98_c.c | 575 +++++++++++++++++++++++++++++++- 2 files changed, 573 insertions(+), 667 deletions(-) diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index f5256bc85..32f394bf0 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -23,671 +23,6 @@ - thumb_func_start FUN_02006ED4 -FUN_02006ED4: ; 0x02006ED4 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - bl FUN_020082A8 - add r0, r5, #0x0 - bl FUN_020086F4 - bl NNS_G3dGeFlushBuffer - mov r6, #0x9f - mov r0, #0x0 - ldr r4, _02007250 ; =0x04000444 - lsl r6, r6, #0x2 - str r0, [r4, #0x0] - str r0, [sp, #0x18] - add r0, r6, #0x0 - sub r0, #0xc - ldr r1, [r5, r0] - add r3, r6, #0x0 - ldr r2, [r5, r6] - add r0, r6, #0x0 - sub r3, #0x8 - add r6, #0x20 - ldr r3, [r5, r3] - ldr r6, [r5, r6] - sub r0, #0x10 - ldr r0, [r5, r0] - lsr r6, r6, #0x3 - lsl r3, r3, #0x1a - orr r6, r3 - mov r3, #0x1 - lsl r3, r3, #0x1e - lsl r0, r0, #0x14 - orr r3, r6 - lsl r1, r1, #0x17 - orr r0, r3 - lsl r2, r2, #0x1d - orr r0, r1 - orr r0, r2 - str r0, [r4, #0x64] - ldr r0, [sp, #0x18] - add r4, r5, #0x0 - str r0, [sp, #0x14] - ldr r0, _02007254 ; =UNK_020ECD4C - str r0, [sp, #0x1c] -_02006F30: - ldr r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - beq _02006F46 - ldr r0, [r4, #0x54] - lsl r1, r0, #0x1f - lsr r1, r1, #0x1f - bne _02006F46 - lsl r0, r0, #0x14 - lsr r0, r0, #0x1f - beq _02006F48 -_02006F46: - b _020072BC -_02006F48: - ldr r2, [r4, #0x68] - cmp r2, #0x0 - beq _02006F56 - add r1, r4, #0x0 - add r0, r4, #0x0 - add r1, #0x24 - blx r2 -_02006F56: - bl NNS_G3dGeFlushBuffer - ldr r0, _02007258 ; =0x000002E3 - ldrb r0, [r5, r0] - cmp r0, #0x1 - beq _02006F68 - ldr r0, _0200725C ; =0x04000454 - mov r1, #0x0 - str r1, [r0, #0x0] -_02006F68: - add r0, r4, #0x0 - bl FUN_02007F48 - mov r0, #0x9d - lsl r0, r0, #0x2 - ldr r0, [r5, r0] - cmp r0, #0x2 - bne _02006F7C - mov r0, #0x1 - b _02006F7E -_02006F7C: - mov r0, #0x0 -_02006F7E: - mov r1, #0xa9 - lsl r1, r1, #0x2 - ldr r2, [r5, r1] - ldr r1, [sp, #0x14] - add r2, r2, r1 - mov r1, #0x4 - sub r0, r1, r0 - add r1, r2, #0x0 - lsr r1, r0 - ldr r0, _02007260 ; =0x040004AC - str r1, [r0, #0x0] - ldr r0, [r4, #0x28] - lsl r1, r0, #0xc - mov r0, #0x26 - ldrsh r2, [r4, r0] - mov r0, #0x42 - ldrsh r0, [r4, r0] - add r0, r2, r0 - mov r2, #0x24 - ldrsh r3, [r4, r2] - mov r2, #0x40 - ldrsh r2, [r4, r2] - lsl r0, r0, #0xc - add r2, r3, r2 - lsl r3, r2, #0xc - ldr r2, _02007264 ; =0x04000470 - str r3, [r2, #0x0] - str r0, [r2, #0x0] - add r0, r2, #0x0 - str r1, [r0, #0x0] - ldrh r0, [r4, #0x38] - asr r0, r0, #0x4 - lsl r1, r0, #0x2 - ldr r0, _02007268 ; =FX_SinCosTable_ - add r2, r0, r1 - ldrsh r0, [r0, r1] - mov r1, #0x2 - ldrsh r1, [r2, r1] - bl G3_RotX - ldrh r0, [r4, #0x3a] - asr r0, r0, #0x4 - lsl r1, r0, #0x2 - ldr r0, _02007268 ; =FX_SinCosTable_ - add r2, r0, r1 - ldrsh r0, [r0, r1] - mov r1, #0x2 - ldrsh r1, [r2, r1] - bl G3_RotY - ldrh r0, [r4, #0x3c] - asr r0, r0, #0x4 - lsl r1, r0, #0x2 - ldr r0, _02007268 ; =FX_SinCosTable_ - add r2, r0, r1 - ldrsh r0, [r0, r1] - mov r1, #0x2 - ldrsh r1, [r2, r1] - bl G3_RotZ - ldr r0, [r4, #0x28] - lsl r0, r0, #0xc - neg r1, r0 - mov r0, #0x26 - ldrsh r2, [r4, r0] - mov r0, #0x42 - ldrsh r0, [r4, r0] - add r0, r2, r0 - mov r2, #0x24 - ldrsh r3, [r4, r2] - mov r2, #0x40 - ldrsh r2, [r4, r2] - lsl r0, r0, #0xc - neg r0, r0 - add r2, r3, r2 - lsl r2, r2, #0xc - neg r3, r2 - ldr r2, _02007264 ; =0x04000470 - str r3, [r2, #0x0] - str r0, [r2, #0x0] - add r0, r2, #0x0 - str r1, [r0, #0x0] - ldr r3, [r4, #0x50] - lsl r0, r3, #0x11 - lsr r0, r0, #0x1b - lsl r2, r3, #0x16 - lsl r1, r0, #0xa - lsl r0, r3, #0x1b - lsr r2, r2, #0x1b - lsr r0, r0, #0x1b - lsl r2, r2, #0x5 - orr r0, r2 - orr r0, r1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - lsl r0, r3, #0x2 - lsr r0, r0, #0x1b - lsl r1, r0, #0xa - lsl r0, r3, #0xc - lsl r3, r3, #0x7 - lsr r3, r3, #0x1b - lsr r0, r0, #0x1b - lsl r3, r3, #0x5 - orr r0, r3 - orr r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x10 - add r1, r2, #0x0 - orr r1, r0 - mov r0, #0x2 - lsl r0, r0, #0xe - orr r1, r0 - ldr r0, _0200726C ; =0x040004C0 - str r1, [r0, #0x0] - ldr r1, _02007270 ; =0x00004210 - add r0, r0, #0x4 - str r1, [r0, #0x0] - ldr r1, [r4, #0x0] - ldr r0, [r4, #0x54] - lsl r1, r1, #0x19 - lsl r0, r0, #0x19 - lsr r1, r1, #0x1a - lsr r0, r0, #0x1b - lsl r2, r1, #0x18 - mov r1, #0xc0 - lsl r0, r0, #0x10 - orr r1, r2 - orr r1, r0 - ldr r0, _02007274 ; =0x040004A4 - str r1, [r0, #0x0] - ldr r0, [r4, #0x54] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - beq _02007104 - add r0, r4, #0x0 - add r0, #0x5b - ldrb r0, [r0, #0x0] - add r2, r4, #0x0 - add r2, #0x44 - lsl r1, r0, #0x4 - ldr r0, [sp, #0x1c] - ldrb r3, [r2, #0x0] - add r0, r0, r1 - ldr r2, [sp, #0x1c] - ldr r0, [r0, #0x4] - ldr r1, [r2, r1] - add r6, r3, r1 - add r1, r4, #0x0 - add r1, #0x46 - ldrb r1, [r1, #0x0] - mov r12, r1 - add r1, r4, #0x0 - add r1, #0x45 - ldrb r2, [r1, #0x0] - add r1, r2, r0 - add r0, r4, #0x0 - add r0, #0x47 - ldrb r7, [r0, #0x0] - mov r0, r12 - add r0, r0, r6 - str r7, [sp, #0x0] - str r6, [sp, #0x4] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - add r0, r7, r1 - str r0, [sp, #0x10] - mov r1, #0x24 - ldrsh r1, [r4, r1] - mov r0, #0x2c - ldrsh r0, [r4, r0] - sub r1, #0x28 - add r1, r1, r3 - add r0, r0, r1 - mov r3, #0x26 - ldrsh r3, [r4, r3] - mov r1, #0x2e - lsl r0, r0, #0x10 - sub r3, #0x28 - add r2, r3, r2 - ldrsh r1, [r4, r1] - ldr r3, [r4, #0x28] - asr r0, r0, #0x10 - add r2, r1, r2 - mov r1, #0x6e - ldrsb r1, [r4, r1] - sub r1, r2, r1 - ldr r2, [r4, #0x30] - lsl r1, r1, #0x10 - add r2, r3, r2 - asr r1, r1, #0x10 - mov r3, r12 - bl NNS_G2dDrawSpriteFast - b _02007174 -_02007104: - mov r0, #0x34 - ldrsh r1, [r4, r0] - mov r0, #0x50 - ldr r2, [sp, #0x1c] - mul r0, r1 - asr r3, r0, #0x8 - mov r0, #0x36 - ldrsh r1, [r4, r0] - mov r0, #0x50 - ldr r6, [sp, #0x1c] - mul r0, r1 - asr r1, r0, #0x8 - add r0, r4, #0x0 - add r0, #0x5b - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x4 - str r1, [sp, #0x0] - add r2, r2, r0 - ldr r0, [r6, r0] - lsr r6, r1, #0x1f - str r0, [sp, #0x4] - ldr r0, [r2, #0x4] - add r6, r1, r6 - str r0, [sp, #0x8] - ldr r0, [r2, #0x8] - asr r1, r6, #0x1 - str r0, [sp, #0xc] - ldr r0, [r2, #0xc] - str r0, [sp, #0x10] - mov r0, #0x24 - ldrsh r2, [r4, r0] - lsr r0, r3, #0x1f - add r0, r3, r0 - asr r0, r0, #0x1 - sub r2, r2, r0 - mov r0, #0x2c - ldrsh r0, [r4, r0] - ldr r6, [r4, #0x28] - add r0, r2, r0 - mov r2, #0x26 - ldrsh r2, [r4, r2] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - sub r2, r2, r1 - mov r1, #0x2e - ldrsh r1, [r4, r1] - add r2, r2, r1 - mov r1, #0x6e - ldrsb r1, [r4, r1] - sub r1, r2, r1 - ldr r2, [r4, #0x30] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add r2, r6, r2 - bl NNS_G2dDrawSpriteFast -_02007174: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r1, r0, #0x1e - lsr r1, r1, #0x1e - beq _0200719A - lsl r0, r0, #0x19 - lsr r0, r0, #0x1e - beq _0200719A - ldr r0, [r4, #0x54] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _0200719A - mov r0, #0xb9 - lsl r0, r0, #0x2 - ldr r1, [r5, r0] - mov r0, #0x1 - tst r0, r1 - beq _0200719C -_0200719A: - b _020072BC -_0200719C: - ldr r0, _02007258 ; =0x000002E3 - ldrb r0, [r5, r0] - cmp r0, #0x1 - beq _020071AA - ldr r0, _0200725C ; =0x04000454 - mov r1, #0x0 - str r1, [r0, #0x0] -_020071AA: - mov r0, #0x9d - lsl r0, r0, #0x2 - ldr r0, [r5, r0] - cmp r0, #0x2 - bne _020071B8 - mov r1, #0x1 - b _020071BA -_020071B8: - mov r1, #0x0 -_020071BA: - add r2, r4, #0x0 - add r2, #0x6c - ldrh r2, [r2, #0x0] - mov r0, #0xa9 - lsl r0, r0, #0x2 - lsl r2, r2, #0x1e - lsr r2, r2, #0x1e - add r2, r2, #0x3 - ldr r0, [r5, r0] - lsl r2, r2, #0x5 - add r2, r0, r2 - mov r0, #0x4 - sub r0, r0, r1 - add r1, r2, #0x0 - lsr r1, r0 - ldr r0, _02007260 ; =0x040004AC - str r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - beq _020071FA - mov r0, #0x34 - ldrsh r0, [r4, r0] - lsl r0, r0, #0x6 - asr r3, r0, #0x8 - mov r0, #0x36 - ldrsh r0, [r4, r0] - lsl r0, r0, #0x4 - asr r1, r0, #0x8 - b _020071FE -_020071FA: - mov r3, #0x40 - mov r1, #0x10 -_020071FE: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _02007220 - mov r0, #0x74 - ldrsh r2, [r4, r0] - mov r0, #0x24 - mov r6, #0x2c - ldrsh r0, [r4, r0] - ldrsh r6, [r4, r6] - add r0, r0, r6 - add r2, r2, r0 - add r0, r4, #0x0 - add r0, #0x70 - strh r2, [r0, #0x0] -_02007220: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1f - beq _02007242 - mov r0, #0x76 - ldrsh r2, [r4, r0] - mov r0, #0x26 - mov r6, #0x2e - ldrsh r0, [r4, r0] - ldrsh r6, [r4, r6] - add r0, r0, r6 - add r2, r2, r0 - add r0, r4, #0x0 - add r0, #0x72 - strh r2, [r0, #0x0] -_02007242: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - ldr r2, _02007278 ; =UNK_020ECBD0 - ldr r6, _02007278 ; =UNK_020ECBD0 - b _0200727C - nop -_02007250: .word 0x04000444 -_02007254: .word UNK_020ECD4C -_02007258: .word 0x000002E3 -_0200725C: .word 0x04000454 -_02007260: .word 0x040004AC -_02007264: .word 0x04000470 -_02007268: .word FX_SinCosTable_ -_0200726C: .word 0x040004C0 -_02007270: .word 0x00004210 -_02007274: .word 0x040004A4 -_02007278: .word UNK_020ECBD0 -_0200727C: - lsl r0, r0, #0x19 - lsr r0, r0, #0x1e - lsl r0, r0, #0x4 - str r1, [sp, #0x0] - add r2, r2, r0 - ldr r0, [r6, r0] - lsr r6, r1, #0x1f - str r0, [sp, #0x4] - ldr r0, [r2, #0x4] - add r6, r1, r6 - str r0, [sp, #0x8] - ldr r0, [r2, #0x8] - asr r1, r6, #0x1 - str r0, [sp, #0xc] - ldr r0, [r2, #0xc] - str r0, [sp, #0x10] - mov r0, #0x70 - ldrsh r2, [r4, r0] - lsr r0, r3, #0x1f - add r0, r3, r0 - asr r0, r0, #0x1 - sub r0, r2, r0 - mov r2, #0x72 - ldrsh r2, [r4, r2] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - sub r1, r2, r1 - lsl r1, r1, #0x10 - ldr r2, _020072E0 ; =0xFFFFFC18 - asr r1, r1, #0x10 - bl NNS_G2dDrawSpriteFast -_020072BC: - ldr r0, [sp, #0x14] - add r4, #0x98 - add r0, #0x20 - str r0, [sp, #0x14] - ldr r0, [sp, #0x1c] - add r0, #0x20 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x18] - add r0, r0, #0x1 - str r0, [sp, #0x18] - cmp r0, #0x4 - bge _020072D6 - b _02006F30 -_020072D6: - ldr r0, _020072E4 ; =0x04000448 - mov r1, #0x1 - str r1, [r0, #0x0] - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 -_020072E0: .word 0xFFFFFC18 -_020072E4: .word 0x04000448 - - thumb_func_start FUN_020072E8 -FUN_020072E8: ; 0x020072E8 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0xab - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - bl FreeToHeap - mov r0, #0x2b - lsl r0, r0, #0x4 - ldr r0, [r4, r0] - bl FreeToHeap - mov r0, #0xad - lsl r0, r0, #0x2 - ldr r0, [r4, r0] - bl FreeToHeap - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02007314 -FUN_02007314: ; 0x02007314 - push {r3-r4} - add r1, r0, #0x0 - mov r3, #0x0 - add r1, #0x59 - strb r3, [r1, #0x0] - add r1, r3, #0x0 -_02007320: - add r2, r0, r3 - add r2, #0x5c - add r3, r3, #0x1 - strb r1, [r2, #0x0] - cmp r3, #0xa - blt _02007320 - add r2, r0, #0x0 - add r2, #0x59 - ldrb r2, [r2, #0x0] - lsl r2, r2, #0x1 - add r3, r0, r2 - mov r2, #0x84 - ldrsb r4, [r3, r2] - add r3, r2, #0x0 - sub r3, #0x85 - cmp r4, r3 - bne _0200734A - add r0, #0x5b - strb r1, [r0, #0x0] - pop {r3-r4} - bx lr -_0200734A: - add r1, r0, #0x0 - mov r3, #0x1 - add r1, #0x58 - strb r3, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x59 - ldrb r1, [r1, #0x0] - lsl r1, r1, #0x1 - add r1, r0, r1 - ldrsb r2, [r1, r2] - add r1, r0, #0x0 - add r1, #0x5b - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x59 - ldrb r1, [r1, #0x0] - lsl r1, r1, #0x1 - add r1, r0, r1 - add r1, #0x85 - ldrb r1, [r1, #0x0] - add r0, #0x5a - strb r1, [r0, #0x0] - pop {r3-r4} - bx lr - .balign 4 - - thumb_func_start FUN_0200737C -FUN_0200737C: ; 0x0200737C - add r2, r0, #0x0 - ldr r3, _0200738C ; =MI_CpuCopy8 - add r2, #0x84 - add r0, r1, #0x0 - add r1, r2, #0x0 - mov r2, #0x14 - bx r3 - nop -_0200738C: .word MI_CpuCopy8 - - thumb_func_start FUN_02007390 -FUN_02007390: ; 0x02007390 - add r0, #0x58 - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - beq _0200739C - mov r0, #0x1 - bx lr -_0200739C: - mov r0, #0x0 - bx lr - - thumb_func_start FUN_020073A0 -FUN_020073A0: ; 0x020073A0 - push {r3-r7, lr} - sub sp, #0x18 - add r5, r0, #0x0 - add r6, r1, #0x0 - add r7, r2, #0x0 - str r3, [sp, #0x14] - mov r4, #0x0 -_020073AE: - ldr r1, [r0, #0x0] - lsl r1, r1, #0x1f - lsr r1, r1, #0x1f - beq _020073BE - add r4, r4, #0x1 - add r0, #0x98 - cmp r4, #0x4 - blt _020073AE -_020073BE: - cmp r4, #0x4 - bne _020073C6 - bl GF_AssertFail -_020073C6: - ldr r0, [sp, #0x30] - ldr r3, [sp, #0x14] - str r0, [sp, #0x0] - ldr r0, [sp, #0x34] - add r1, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x38] - str r4, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [sp, #0x3c] - add r2, r7, #0x0 - str r0, [sp, #0x10] - add r0, r5, #0x0 - bl FUN_020073E8 - add sp, #0x18 - pop {r3-r7, pc} - thumb_func_start FUN_020073E8 FUN_020073E8: ; 0x020073E8 push {r4-r7, lr} diff --git a/arm9/src/unk_02006D98_c.c b/arm9/src/unk_02006D98_c.c index 0e39671ba..7a5b48f57 100644 --- a/arm9/src/unk_02006D98_c.c +++ b/arm9/src/unk_02006D98_c.c @@ -5,6 +5,7 @@ #include "heap.h" #include "poketool/pokegra/otherpoke.naix" #include "registers.h" +#include "mod63_021DB450.h" struct UnkStruct3 { u32 unk00[8]; @@ -152,7 +153,7 @@ struct UnkStruct2 { u8 unk59; u8 unk5A; u8 unk5B; - u8 unk5C[0xC]; + u8 unk5C[10]; void (*unk68)(struct UnkStruct2 *, void *); u16 unk6C_0:2; u16 unk6C_2:1; @@ -165,7 +166,11 @@ struct UnkStruct2 { s16 unk72; s16 unk74; s16 unk76; - u8 unk78[0x20]; + u8 unk78[0xc]; + struct UnkStruct2_sub { + s8 unk0; + u8 unk1; + } unk84[10]; }; @@ -267,7 +272,9 @@ extern void FUN_02007F48(struct UnkStruct2 *); extern void NNS_G2dDrawSpriteFast(s16 param0, s16 param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8); +#ifdef NONMATCHING +// mostly matching, only 2 register writes messed up THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { s32 arg3; s32 arg4; @@ -279,6 +286,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { reg_G3_MTX_PUSH = 0; + // this is all shuffled however I try reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk274 << 26) | (1 << 30) | (param0->unk26C << 20) | (param0->unk270 << 23) | (param0->unk27C << 29); for (int st18 = 0; st18 < 4; st18++) { @@ -342,7 +350,9 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { reg_G3_SPE_EMI = 0x4210; + { + // shuffled there as well u32 r1 = param0->unk000[st18].unk00_1; u32 r0 = param0->unk000[st18].unk54_2; reg_G3_POLYGON_ATTR = 0xc0 | (r1<<24) | (r0<<16); @@ -438,3 +448,564 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { reg_G3_MTX_POP = 1; } +#else +asm void FUN_02006ED4(struct UnkStruct1 *param0) { + // clang-format off + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + bl FUN_020082A8 + add r0, r5, #0x0 + bl FUN_020086F4 + bl NNS_G3dGeFlushBuffer + mov r6, #0x9f + mov r0, #0x0 + ldr r4, =0x04000444 + lsl r6, r6, #0x2 + str r0, [r4, #0x0] + str r0, [sp, #0x18] + add r0, r6, #0x0 + sub r0, #0xc + ldr r1, [r5, r0] + add r3, r6, #0x0 + ldr r2, [r5, r6] + add r0, r6, #0x0 + sub r3, #0x8 + add r6, #0x20 + ldr r3, [r5, r3] + ldr r6, [r5, r6] + sub r0, #0x10 + ldr r0, [r5, r0] + lsr r6, r6, #0x3 + lsl r3, r3, #0x1a + orr r6, r3 + mov r3, #0x1 + lsl r3, r3, #0x1e + lsl r0, r0, #0x14 + orr r3, r6 + lsl r1, r1, #0x17 + orr r0, r3 + lsl r2, r2, #0x1d + orr r0, r1 + orr r0, r2 + str r0, [r4, #0x64] + ldr r0, [sp, #0x18] + add r4, r5, #0x0 + str r0, [sp, #0x14] + ldr r0, =UNK_020ECD4C + str r0, [sp, #0x1c] +_02006F30: + ldr r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _02006F46 + ldr r0, [r4, #0x54] + lsl r1, r0, #0x1f + lsr r1, r1, #0x1f + bne _02006F46 + lsl r0, r0, #0x14 + lsr r0, r0, #0x1f + beq _02006F48 +_02006F46: + b _020072BC +_02006F48: + ldr r2, [r4, #0x68] + cmp r2, #0x0 + beq _02006F56 + add r1, r4, #0x0 + add r0, r4, #0x0 + add r1, #0x24 + blx r2 +_02006F56: + bl NNS_G3dGeFlushBuffer + ldr r0, =0x000002E3 + ldrb r0, [r5, r0] + cmp r0, #0x1 + beq _02006F68 + ldr r0, =0x04000454 + mov r1, #0x0 + str r1, [r0, #0x0] +_02006F68: + add r0, r4, #0x0 + bl FUN_02007F48 + mov r0, #0x9d + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + cmp r0, #0x2 + bne _02006F7C + mov r0, #0x1 + b _02006F7E +_02006F7C: + mov r0, #0x0 +_02006F7E: + mov r1, #0xa9 + lsl r1, r1, #0x2 + ldr r2, [r5, r1] + ldr r1, [sp, #0x14] + add r2, r2, r1 + mov r1, #0x4 + sub r0, r1, r0 + add r1, r2, #0x0 + lsr r1, r0 + ldr r0, =0x040004AC + str r1, [r0, #0x0] + ldr r0, [r4, #0x28] + lsl r1, r0, #0xc + mov r0, #0x26 + ldrsh r2, [r4, r0] + mov r0, #0x42 + ldrsh r0, [r4, r0] + add r0, r2, r0 + mov r2, #0x24 + ldrsh r3, [r4, r2] + mov r2, #0x40 + ldrsh r2, [r4, r2] + lsl r0, r0, #0xc + add r2, r3, r2 + lsl r3, r2, #0xc + ldr r2, =0x04000470 + str r3, [r2, #0x0] + str r0, [r2, #0x0] + add r0, r2, #0x0 + str r1, [r0, #0x0] + ldrh r0, [r4, #0x38] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, =FX_SinCosTable_ + add r2, r0, r1 + ldrsh r0, [r0, r1] + mov r1, #0x2 + ldrsh r1, [r2, r1] + bl G3_RotX + ldrh r0, [r4, #0x3a] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, =FX_SinCosTable_ + add r2, r0, r1 + ldrsh r0, [r0, r1] + mov r1, #0x2 + ldrsh r1, [r2, r1] + bl G3_RotY + ldrh r0, [r4, #0x3c] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, =FX_SinCosTable_ + add r2, r0, r1 + ldrsh r0, [r0, r1] + mov r1, #0x2 + ldrsh r1, [r2, r1] + bl G3_RotZ + ldr r0, [r4, #0x28] + lsl r0, r0, #0xc + neg r1, r0 + mov r0, #0x26 + ldrsh r2, [r4, r0] + mov r0, #0x42 + ldrsh r0, [r4, r0] + add r0, r2, r0 + mov r2, #0x24 + ldrsh r3, [r4, r2] + mov r2, #0x40 + ldrsh r2, [r4, r2] + lsl r0, r0, #0xc + neg r0, r0 + add r2, r3, r2 + lsl r2, r2, #0xc + neg r3, r2 + ldr r2, =0x04000470 + str r3, [r2, #0x0] + str r0, [r2, #0x0] + add r0, r2, #0x0 + str r1, [r0, #0x0] + ldr r3, [r4, #0x50] + lsl r0, r3, #0x11 + lsr r0, r0, #0x1b + lsl r2, r3, #0x16 + lsl r1, r0, #0xa + lsl r0, r3, #0x1b + lsr r2, r2, #0x1b + lsr r0, r0, #0x1b + lsl r2, r2, #0x5 + orr r0, r2 + orr r0, r1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + lsl r0, r3, #0x2 + lsr r0, r0, #0x1b + lsl r1, r0, #0xa + lsl r0, r3, #0xc + lsl r3, r3, #0x7 + lsr r3, r3, #0x1b + lsr r0, r0, #0x1b + lsl r3, r3, #0x5 + orr r0, r3 + orr r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + add r1, r2, #0x0 + orr r1, r0 + mov r0, #0x2 + lsl r0, r0, #0xe + orr r1, r0 + ldr r0, =0x040004C0 + str r1, [r0, #0x0] + ldr r1, =0x00004210 + add r0, r0, #0x4 + str r1, [r0, #0x0] + ldr r1, [r4, #0x0] + ldr r0, [r4, #0x54] + lsl r1, r1, #0x19 + lsl r0, r0, #0x19 + lsr r1, r1, #0x1a + lsr r0, r0, #0x1b + lsl r2, r1, #0x18 + mov r1, #0xc0 + lsl r0, r0, #0x10 + orr r1, r2 + orr r1, r0 + ldr r0, =0x040004A4 + str r1, [r0, #0x0] + ldr r0, [r4, #0x54] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _02007104 + add r0, r4, #0x0 + add r0, #0x5b + ldrb r0, [r0, #0x0] + add r2, r4, #0x0 + add r2, #0x44 + lsl r1, r0, #0x4 + ldr r0, [sp, #0x1c] + ldrb r3, [r2, #0x0] + add r0, r0, r1 + ldr r2, [sp, #0x1c] + ldr r0, [r0, #0x4] + ldr r1, [r2, r1] + add r6, r3, r1 + add r1, r4, #0x0 + add r1, #0x46 + ldrb r1, [r1, #0x0] + mov r12, r1 + add r1, r4, #0x0 + add r1, #0x45 + ldrb r2, [r1, #0x0] + add r1, r2, r0 + add r0, r4, #0x0 + add r0, #0x47 + ldrb r7, [r0, #0x0] + mov r0, r12 + add r0, r0, r6 + str r7, [sp, #0x0] + str r6, [sp, #0x4] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + add r0, r7, r1 + str r0, [sp, #0x10] + mov r1, #0x24 + ldrsh r1, [r4, r1] + mov r0, #0x2c + ldrsh r0, [r4, r0] + sub r1, #0x28 + add r1, r1, r3 + add r0, r0, r1 + mov r3, #0x26 + ldrsh r3, [r4, r3] + mov r1, #0x2e + lsl r0, r0, #0x10 + sub r3, #0x28 + add r2, r3, r2 + ldrsh r1, [r4, r1] + ldr r3, [r4, #0x28] + asr r0, r0, #0x10 + add r2, r1, r2 + mov r1, #0x6e + ldrsb r1, [r4, r1] + sub r1, r2, r1 + ldr r2, [r4, #0x30] + lsl r1, r1, #0x10 + add r2, r3, r2 + asr r1, r1, #0x10 + mov r3, r12 + bl NNS_G2dDrawSpriteFast + b _02007174 +_02007104: + mov r0, #0x34 + ldrsh r1, [r4, r0] + mov r0, #0x50 + ldr r2, [sp, #0x1c] + mul r0, r1 + asr r3, r0, #0x8 + mov r0, #0x36 + ldrsh r1, [r4, r0] + mov r0, #0x50 + ldr r6, [sp, #0x1c] + mul r0, r1 + asr r1, r0, #0x8 + add r0, r4, #0x0 + add r0, #0x5b + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x4 + str r1, [sp, #0x0] + add r2, r2, r0 + ldr r0, [r6, r0] + lsr r6, r1, #0x1f + str r0, [sp, #0x4] + ldr r0, [r2, #0x4] + add r6, r1, r6 + str r0, [sp, #0x8] + ldr r0, [r2, #0x8] + asr r1, r6, #0x1 + str r0, [sp, #0xc] + ldr r0, [r2, #0xc] + str r0, [sp, #0x10] + mov r0, #0x24 + ldrsh r2, [r4, r0] + lsr r0, r3, #0x1f + add r0, r3, r0 + asr r0, r0, #0x1 + sub r2, r2, r0 + mov r0, #0x2c + ldrsh r0, [r4, r0] + ldr r6, [r4, #0x28] + add r0, r2, r0 + mov r2, #0x26 + ldrsh r2, [r4, r2] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + sub r2, r2, r1 + mov r1, #0x2e + ldrsh r1, [r4, r1] + add r2, r2, r1 + mov r1, #0x6e + ldrsb r1, [r4, r1] + sub r1, r2, r1 + ldr r2, [r4, #0x30] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r6, r2 + bl NNS_G2dDrawSpriteFast +_02007174: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r1, r0, #0x1e + lsr r1, r1, #0x1e + beq _0200719A + lsl r0, r0, #0x19 + lsr r0, r0, #0x1e + beq _0200719A + ldr r0, [r4, #0x54] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0200719A + mov r0, #0xb9 + lsl r0, r0, #0x2 + ldr r1, [r5, r0] + mov r0, #0x1 + tst r0, r1 + beq _0200719C +_0200719A: + b _020072BC +_0200719C: + ldr r0, =0x000002E3 + ldrb r0, [r5, r0] + cmp r0, #0x1 + beq _020071AA + ldr r0, =0x04000454 + mov r1, #0x0 + str r1, [r0, #0x0] +_020071AA: + mov r0, #0x9d + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + cmp r0, #0x2 + bne _020071B8 + mov r1, #0x1 + b _020071BA +_020071B8: + mov r1, #0x0 +_020071BA: + add r2, r4, #0x0 + add r2, #0x6c + ldrh r2, [r2, #0x0] + mov r0, #0xa9 + lsl r0, r0, #0x2 + lsl r2, r2, #0x1e + lsr r2, r2, #0x1e + add r2, r2, #0x3 + ldr r0, [r5, r0] + lsl r2, r2, #0x5 + add r2, r0, r2 + mov r0, #0x4 + sub r0, r0, r1 + add r1, r2, #0x0 + lsr r1, r0 + ldr r0, =0x040004AC + str r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + beq _020071FA + mov r0, #0x34 + ldrsh r0, [r4, r0] + lsl r0, r0, #0x6 + asr r3, r0, #0x8 + mov r0, #0x36 + ldrsh r0, [r4, r0] + lsl r0, r0, #0x4 + asr r1, r0, #0x8 + b _020071FE +_020071FA: + mov r3, #0x40 + mov r1, #0x10 +_020071FE: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _02007220 + mov r0, #0x74 + ldrsh r2, [r4, r0] + mov r0, #0x24 + mov r6, #0x2c + ldrsh r0, [r4, r0] + ldrsh r6, [r4, r6] + add r0, r0, r6 + add r2, r2, r0 + add r0, r4, #0x0 + add r0, #0x70 + strh r2, [r0, #0x0] +_02007220: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _02007242 + mov r0, #0x76 + ldrsh r2, [r4, r0] + mov r0, #0x26 + mov r6, #0x2e + ldrsh r0, [r4, r0] + ldrsh r6, [r4, r6] + add r0, r0, r6 + add r2, r2, r0 + add r0, r4, #0x0 + add r0, #0x72 + strh r2, [r0, #0x0] +_02007242: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + ldr r2, =UNK_020ECBD0 + ldr r6, =UNK_020ECBD0 + lsl r0, r0, #0x19 + lsr r0, r0, #0x1e + lsl r0, r0, #0x4 + str r1, [sp, #0x0] + add r2, r2, r0 + ldr r0, [r6, r0] + lsr r6, r1, #0x1f + str r0, [sp, #0x4] + ldr r0, [r2, #0x4] + add r6, r1, r6 + str r0, [sp, #0x8] + ldr r0, [r2, #0x8] + asr r1, r6, #0x1 + str r0, [sp, #0xc] + ldr r0, [r2, #0xc] + str r0, [sp, #0x10] + mov r0, #0x70 + ldrsh r2, [r4, r0] + lsr r0, r3, #0x1f + add r0, r3, r0 + asr r0, r0, #0x1 + sub r0, r2, r0 + mov r2, #0x72 + ldrsh r2, [r4, r2] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + sub r1, r2, r1 + lsl r1, r1, #0x10 + ldr r2, =0xFFFFFC18 + asr r1, r1, #0x10 + bl NNS_G2dDrawSpriteFast +_020072BC: + ldr r0, [sp, #0x14] + add r4, #0x98 + add r0, #0x20 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + add r0, #0x20 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #0x1 + str r0, [sp, #0x18] + cmp r0, #0x4 + bge _020072D6 + b _02006F30 +_020072D6: + ldr r0, =0x04000448 + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, #0x20 + pop {r3-r7, pc} + // clang-format on +} +#endif + + + +THUMB_FUNC void FUN_020072E8(struct UnkStruct1 *param0) { + FreeToHeap(param0->unk2AC); + FreeToHeap(param0->unk2B0); + FreeToHeap(param0->unk2B4); + FreeToHeap(param0); +} + + +THUMB_FUNC void FUN_02007314(struct UnkStruct2 *param0) { + param0->unk59 = 0; + for (s32 i = 0; i < 10; i++) { + param0->unk5C[i] = 0; + } + if (param0->unk84[param0->unk59].unk0 == -1) { + param0->unk5B = 0; + return; + } + + param0->unk58 = 1; + param0->unk5B = param0->unk84[param0->unk59].unk0; + param0->unk5A = param0->unk84[param0->unk59].unk1; + +} + + +THUMB_FUNC void FUN_0200737C(struct UnkStruct2 *param0, struct UnkStruct2_sub *param1) { + MI_CpuCopy8(param1, param0->unk84, sizeof(struct UnkStruct2_sub)*10); +} + +THUMB_FUNC BOOL FUN_02007390(struct UnkStruct2 *param0) { + if (param0->unk58 != 0) { + return TRUE; + } + return FALSE; +} + +extern u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8); + +THUMB_FUNC u32 FUN_020073A0(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7) { + s32 i; + for (i = 0; i < 4; i++) { + if (param0->unk000[i].unk00_0 == 0) { + break; + } + } + GF_ASSERT(i != 4); + + return FUN_020073E8(param0, param1, param2, param3, param4, param5, i, param6, param7); +} From 0f1bec8dff2722dac9882facb27b909f08b9dd68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 24 Aug 2021 22:34:45 +0200 Subject: [PATCH 04/19] huge jump tables --- arm9/asm/unk_02006D98.s | 1461 ------------------------------------- arm9/src/unk_02006D98_c.c | 521 ++++++++++++- 2 files changed, 517 insertions(+), 1465 deletions(-) diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index 32f394bf0..5359b45e3 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -23,1467 +23,6 @@ - thumb_func_start FUN_020073E8 -FUN_020073E8: ; 0x020073E8 - push {r4-r7, lr} - sub sp, #0xc - str r1, [sp, #0x8] - ldr r1, [sp, #0x28] - add r4, r0, #0x0 - mov r0, #0x98 - add r6, r1, #0x0 - mul r6, r0 - ldr r0, [r4, r6] - str r2, [sp, #0x0] - lsl r0, r0, #0x1f - str r3, [sp, #0x4] - lsr r0, r0, #0x1f - beq _02007408 - bl GF_AssertFail -_02007408: - add r5, r4, r6 - mov r0, #0x0 - add r1, r5, #0x0 - mov r2, #0x98 - bl MIi_CpuClearFast - ldr r1, [r4, r6] - mov r0, #0x1 - bic r1, r0 - mov r0, #0x1 - orr r0, r1 - str r0, [r4, r6] - ldr r1, [r4, r6] - mov r0, #0x80 - orr r0, r1 - str r0, [r4, r6] - mov r0, #0x80 - ldr r1, [r4, r6] - add r0, #0x80 - orr r0, r1 - str r0, [r4, r6] - add r2, r5, #0x0 - ldr r0, [r4, r6] - mov r1, #0x7e - bic r0, r1 - ldr r1, [sp, #0x24] - add r7, r2, #0x4 - lsl r1, r1, #0x1a - lsr r1, r1, #0x19 - orr r0, r1 - str r0, [r4, r6] - ldr r0, [sp, #0x8] - mov r12, r0 - mov r3, r12 - ldmia r3!, {r0-r1} - stmia r7!, {r0-r1} - ldmia r3!, {r0-r1} - stmia r7!, {r0-r1} - add r7, r2, #0x0 - ldr r3, [sp, #0x8] - add r7, #0x14 - ldmia r3!, {r0-r1} - stmia r7!, {r0-r1} - str r3, [sp, #0x8] - ldmia r3!, {r0-r1} - stmia r7!, {r0-r1} - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x4] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - lsl r1, r1, #0x10 - asr r7, r1, #0x10 - strh r0, [r2, #0x24] - str r3, [sp, #0x8] - ldr r1, [sp, #0x20] - strh r7, [r2, #0x26] - str r1, [r2, #0x28] - mov r1, #0x80 - add r1, #0x80 - strh r1, [r2, #0x34] - strh r1, [r2, #0x36] - ldr r1, [r5, #0x54] - mov r3, #0x7c - bic r1, r3 - mov r3, #0x7c - orr r1, r3 - str r1, [r5, #0x54] - ldr r1, [r5, #0x50] - mov r3, #0x1f - bic r1, r3 - mov r3, #0x1f - orr r3, r1 - ldr r1, _02007520 ; =0xFFFFFC1F - and r1, r3 - mov r3, #0x1f - lsl r3, r3, #0x5 - orr r3, r1 - ldr r1, _02007524 ; =0xFFFF83FF - and r1, r3 - mov r3, #0x1f - lsl r3, r3, #0xa - orr r3, r1 - ldr r1, _02007528 ; =0xFFF07FFF - and r1, r3 - mov r3, #0x80 - lsl r3, r3, #0xc - orr r3, r1 - ldr r1, _0200752C ; =0xFE0FFFFF - and r1, r3 - mov r3, #0x80 - lsl r3, r3, #0x11 - orr r3, r1 - ldr r1, _02007530 ; =0xC1FFFFFF - and r1, r3 - mov r3, #0x80 - lsl r3, r3, #0x16 - orr r1, r3 - str r1, [r5, #0x50] - ldr r1, [sp, #0x30] - str r1, [r2, #0x68] - add r1, r2, #0x0 - add r1, #0x70 - strh r0, [r1, #0x0] - add r2, #0x72 - add r0, r5, #0x0 - strh r7, [r2, #0x0] - add r0, #0x6c - ldrh r1, [r0, #0x0] - mov r0, #0x4 - orr r1, r0 - add r0, r5, #0x0 - add r0, #0x6c - strh r1, [r0, #0x0] - add r0, r5, #0x0 - add r0, #0x6c - ldrh r1, [r0, #0x0] - mov r0, #0x8 - orr r1, r0 - add r0, r5, #0x0 - add r0, #0x6c - strh r1, [r0, #0x0] - add r0, r5, #0x0 - add r0, #0x6c - ldrh r1, [r0, #0x0] - mov r0, #0x10 - add r5, #0x6c - orr r0, r1 - strh r0, [r5, #0x0] - ldr r0, [sp, #0x2c] - cmp r0, #0x0 - beq _02007518 - add r1, r4, r6 - add r1, #0x84 - mov r2, #0x14 - bl MI_CpuCopy8 -_02007518: - add r0, r4, r6 - add sp, #0xc - pop {r4-r7, pc} - nop -_02007520: .word 0xFFFFFC1F -_02007524: .word 0xFFFF83FF -_02007528: .word 0xFFF07FFF -_0200752C: .word 0xFE0FFFFF -_02007530: .word 0xC1FFFFFF - - thumb_func_start FUN_02007534 -FUN_02007534: ; 0x02007534 - ldr r2, [r0, #0x0] - mov r1, #0x1 - bic r2, r1 - str r2, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_02007540 -FUN_02007540: ; 0x02007540 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r4, #0x0 -_02007546: - add r0, r5, #0x0 - bl FUN_02007534 - add r4, r4, #0x1 - add r5, #0x98 - cmp r4, #0x4 - blt _02007546 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02007558 -FUN_02007558: ; 0x02007558 - cmp r1, #0x2e - bls _0200755E - b _02007800 -_0200755E: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0200756A: ; jump table (using 16-bit offset) - .short _020075C8 - _0200756A - 2; case 0 - .short _020075CC - _0200756A - 2; case 1 - .short _020075D0 - _0200756A - 2; case 2 - .short _020075D4 - _0200756A - 2; case 3 - .short _020075D8 - _0200756A - 2; case 4 - .short _020075DC - _0200756A - 2; case 5 - .short _020075E0 - _0200756A - 2; case 6 - .short _020075F0 - _0200756A - 2; case 7 - .short _020075F4 - _0200756A - 2; case 8 - .short _020075F8 - _0200756A - 2; case 9 - .short _020075FC - _0200756A - 2; case 10 - .short _02007602 - _0200756A - 2; case 11 - .short _02007608 - _0200756A - 2; case 12 - .short _0200760C - _0200756A - 2; case 13 - .short _02007610 - _0200756A - 2; case 14 - .short _02007620 - _0200756A - 2; case 15 - .short _02007626 - _0200756A - 2; case 16 - .short _0200762C - _0200756A - 2; case 17 - .short _02007632 - _0200756A - 2; case 18 - .short _02007638 - _0200756A - 2; case 19 - .short _0200763E - _0200756A - 2; case 20 - .short _02007644 - _0200756A - 2; case 21 - .short _0200764A - _0200756A - 2; case 22 - .short _02007650 - _0200756A - 2; case 23 - .short _02007660 - _0200756A - 2; case 24 - .short _02007670 - _0200756A - 2; case 25 - .short _02007680 - _0200756A - 2; case 26 - .short _02007690 - _0200756A - 2; case 27 - .short _020076A0 - _0200756A - 2; case 28 - .short _020076B0 - _0200756A - 2; case 29 - .short _020076C0 - _0200756A - 2; case 30 - .short _020076DA - _0200756A - 2; case 31 - .short _020076E8 - _0200756A - 2; case 32 - .short _020076FA - _0200756A - 2; case 33 - .short _0200770C - _0200756A - 2; case 34 - .short _02007712 - _0200756A - 2; case 35 - .short _0200772A - _0200756A - 2; case 36 - .short _02007742 - _0200756A - 2; case 37 - .short _02007752 - _0200756A - 2; case 38 - .short _02007800 - _0200756A - 2; case 39 - .short _02007758 - _0200756A - 2; case 40 - .short _02007770 - _0200756A - 2; case 41 - .short _02007776 - _0200756A - 2; case 42 - .short _0200779A - _0200756A - 2; case 43 - .short _020077B4 - _0200756A - 2; case 44 - .short _020077CE - _0200756A - 2; case 45 - .short _020077E8 - _0200756A - 2; case 46 -_020075C8: - strh r2, [r0, #0x24] - bx lr -_020075CC: - strh r2, [r0, #0x26] - bx lr -_020075D0: - str r2, [r0, #0x28] - bx lr -_020075D4: - strh r2, [r0, #0x2c] - bx lr -_020075D8: - strh r2, [r0, #0x2e] - bx lr -_020075DC: - str r2, [r0, #0x30] - bx lr -_020075E0: - ldr r3, [r0, #0x54] - mov r1, #0x1 - bic r3, r1 - mov r1, #0x1 - and r1, r2 - orr r1, r3 - str r1, [r0, #0x54] - bx lr -_020075F0: - strh r2, [r0, #0x38] - bx lr -_020075F4: - strh r2, [r0, #0x3a] - bx lr -_020075F8: - strh r2, [r0, #0x3c] - bx lr -_020075FC: - add r0, #0x40 - strh r2, [r0, #0x0] - bx lr -_02007602: - add r0, #0x42 - strh r2, [r0, #0x0] - bx lr -_02007608: - strh r2, [r0, #0x34] - bx lr -_0200760C: - strh r2, [r0, #0x36] - bx lr -_02007610: - ldr r3, [r0, #0x54] - mov r1, #0x2 - bic r3, r1 - lsl r1, r2, #0x1f - lsr r1, r1, #0x1e - orr r1, r3 - str r1, [r0, #0x54] - bx lr -_02007620: - add r0, #0x44 - strb r2, [r0, #0x0] - bx lr -_02007626: - add r0, #0x45 - strb r2, [r0, #0x0] - bx lr -_0200762C: - add r0, #0x46 - strb r2, [r0, #0x0] - bx lr -_02007632: - add r0, #0x47 - strb r2, [r0, #0x0] - bx lr -_02007638: - add r0, #0x70 - strh r2, [r0, #0x0] - bx lr -_0200763E: - add r0, #0x72 - strh r2, [r0, #0x0] - bx lr -_02007644: - add r0, #0x74 - strh r2, [r0, #0x0] - bx lr -_0200764A: - add r0, #0x76 - strh r2, [r0, #0x0] - bx lr -_02007650: - ldr r3, [r0, #0x54] - mov r1, #0x7c - bic r3, r1 - lsl r1, r2, #0x1b - lsr r1, r1, #0x19 - orr r1, r3 - str r1, [r0, #0x54] - bx lr -_02007660: - ldr r3, [r0, #0x50] - mov r1, #0x1f - bic r3, r1 - mov r1, #0x1f - and r1, r2 - orr r1, r3 - str r1, [r0, #0x50] - bx lr -_02007670: - ldr r3, [r0, #0x50] - ldr r1, _02007804 ; =0xFFFFFC1F - and r3, r1 - lsl r1, r2, #0x1b - lsr r1, r1, #0x16 - orr r1, r3 - str r1, [r0, #0x50] - bx lr -_02007680: - ldr r3, [r0, #0x50] - ldr r1, _02007808 ; =0xFFFF83FF - and r3, r1 - lsl r1, r2, #0x1b - lsr r1, r1, #0x11 - orr r1, r3 - str r1, [r0, #0x50] - bx lr -_02007690: - ldr r3, [r0, #0x50] - ldr r1, _0200780C ; =0xFFF07FFF - and r3, r1 - lsl r1, r2, #0x1b - lsr r1, r1, #0xc - orr r1, r3 - str r1, [r0, #0x50] - bx lr -_020076A0: - ldr r3, [r0, #0x50] - ldr r1, _02007810 ; =0xFE0FFFFF - and r3, r1 - lsl r1, r2, #0x1b - lsr r1, r1, #0x7 - orr r1, r3 - str r1, [r0, #0x50] - bx lr -_020076B0: - ldr r3, [r0, #0x50] - ldr r1, _02007814 ; =0xC1FFFFFF - and r3, r1 - lsl r1, r2, #0x1b - lsr r1, r1, #0x2 - orr r1, r3 - str r1, [r0, #0x50] - bx lr -_020076C0: - ldr r3, [r0, #0x54] - ldr r1, _02007818 ; =0xFFFFEFFF - and r3, r1 - lsl r1, r2, #0x1f - lsr r1, r1, #0x13 - orr r1, r3 - str r1, [r0, #0x54] - mov r1, #0x1 - ldr r2, [r0, #0x0] - lsl r1, r1, #0x8 - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_020076DA: - str r2, [r0, #0x4c] - mov r1, #0x1 - ldr r2, [r0, #0x0] - lsl r1, r1, #0x8 - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_020076E8: - add r1, r0, #0x0 - add r1, #0x48 - strb r2, [r1, #0x0] - mov r1, #0x1 - ldr r2, [r0, #0x0] - lsl r1, r1, #0x8 - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_020076FA: - add r1, r0, #0x0 - add r1, #0x49 - strb r2, [r1, #0x0] - mov r1, #0x1 - ldr r2, [r0, #0x0] - lsl r1, r1, #0x8 - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_0200770C: - add r0, #0x4a - strb r2, [r0, #0x0] - bx lr -_02007712: - ldr r3, [r0, #0x54] - ldr r1, _0200781C ; =0xFFFFFDFF - and r3, r1 - lsl r1, r2, #0x1f - lsr r1, r1, #0x16 - orr r1, r3 - str r1, [r0, #0x54] - ldr r2, [r0, #0x0] - mov r1, #0x80 - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_0200772A: - ldr r3, [r0, #0x54] - ldr r1, _02007820 ; =0xFFFFFBFF - and r3, r1 - lsl r1, r2, #0x1f - lsr r1, r1, #0x15 - orr r1, r3 - str r1, [r0, #0x54] - ldr r2, [r0, #0x0] - mov r1, #0x80 - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_02007742: - ldr r3, [r0, #0x54] - ldr r1, _02007824 ; =0xFFFFF7FF - and r3, r1 - lsl r1, r2, #0x1f - lsr r1, r1, #0x14 - orr r1, r3 - str r1, [r0, #0x54] - bx lr -_02007752: - add r0, #0x5b - strb r2, [r0, #0x0] - bx lr -_02007758: - ldr r3, [r0, #0x54] - ldr r1, _02007828 ; =0xFFFE1FFF - and r3, r1 - lsl r1, r2, #0x1c - lsr r1, r1, #0xf - orr r1, r3 - str r1, [r0, #0x54] - ldr r2, [r0, #0x0] - mov r1, #0x80 - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_02007770: - add r0, #0x6e - strb r2, [r0, #0x0] - bx lr -_02007776: - add r1, r0, #0x0 - add r1, #0x6c - ldrh r3, [r1, #0x0] - mov r1, #0x3 - bic r3, r1 - lsl r1, r2, #0x10 - lsr r1, r1, #0x10 - mov r2, #0x3 - and r1, r2 - orr r3, r1 - add r1, r0, #0x0 - add r1, #0x6c - strh r3, [r1, #0x0] - ldr r1, [r0, #0x0] - add r2, #0xfd - orr r1, r2 - str r1, [r0, #0x0] - bx lr -_0200779A: - add r1, r0, #0x0 - add r1, #0x6c - ldrh r3, [r1, #0x0] - mov r1, #0x4 - add r0, #0x6c - bic r3, r1 - lsl r1, r2, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1f - lsr r1, r1, #0x1d - orr r1, r3 - strh r1, [r0, #0x0] - bx lr -_020077B4: - add r1, r0, #0x0 - add r1, #0x6c - ldrh r3, [r1, #0x0] - mov r1, #0x8 - add r0, #0x6c - bic r3, r1 - lsl r1, r2, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1f - lsr r1, r1, #0x1c - orr r1, r3 - strh r1, [r0, #0x0] - bx lr -_020077CE: - add r1, r0, #0x0 - add r1, #0x6c - ldrh r3, [r1, #0x0] - mov r1, #0x10 - add r0, #0x6c - bic r3, r1 - lsl r1, r2, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1f - lsr r1, r1, #0x1b - orr r1, r3 - strh r1, [r0, #0x0] - bx lr -_020077E8: - add r1, r0, #0x0 - add r1, #0x6c - ldrh r3, [r1, #0x0] - mov r1, #0x60 - add r0, #0x6c - bic r3, r1 - lsl r1, r2, #0x10 - lsr r1, r1, #0x10 - lsl r1, r1, #0x1e - lsr r1, r1, #0x19 - orr r1, r3 - strh r1, [r0, #0x0] -_02007800: - bx lr - nop -_02007804: .word 0xFFFFFC1F -_02007808: .word 0xFFFF83FF -_0200780C: .word 0xFFF07FFF -_02007810: .word 0xFE0FFFFF -_02007814: .word 0xC1FFFFFF -_02007818: .word 0xFFFFEFFF -_0200781C: .word 0xFFFFFDFF -_02007820: .word 0xFFFFFBFF -_02007824: .word 0xFFFFF7FF -_02007828: .word 0xFFFE1FFF - - thumb_func_start FUN_0200782C -FUN_0200782C: ; 0x0200782C - push {r3, lr} - cmp r1, #0x2e - bls _02007834 - b _020079D6 -_02007834: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02007840: ; jump table (using 16-bit offset) - .short _0200789E - _02007840 - 2; case 0 - .short _020078A4 - _02007840 - 2; case 1 - .short _020078AA - _02007840 - 2; case 2 - .short _020078AE - _02007840 - 2; case 3 - .short _020078B4 - _02007840 - 2; case 4 - .short _020078BA - _02007840 - 2; case 5 - .short _020078BE - _02007840 - 2; case 6 - .short _020078C6 - _02007840 - 2; case 7 - .short _020078CA - _02007840 - 2; case 8 - .short _020078CE - _02007840 - 2; case 9 - .short _020078D2 - _02007840 - 2; case 10 - .short _020078D8 - _02007840 - 2; case 11 - .short _020078DE - _02007840 - 2; case 12 - .short _020078E4 - _02007840 - 2; case 13 - .short _020078EA - _02007840 - 2; case 14 - .short _020078F2 - _02007840 - 2; case 15 - .short _020078F8 - _02007840 - 2; case 16 - .short _020078FE - _02007840 - 2; case 17 - .short _02007904 - _02007840 - 2; case 18 - .short _0200790A - _02007840 - 2; case 19 - .short _02007910 - _02007840 - 2; case 20 - .short _02007916 - _02007840 - 2; case 21 - .short _0200791C - _02007840 - 2; case 22 - .short _02007922 - _02007840 - 2; case 23 - .short _0200792A - _02007840 - 2; case 24 - .short _02007932 - _02007840 - 2; case 25 - .short _0200793A - _02007840 - 2; case 26 - .short _02007942 - _02007840 - 2; case 27 - .short _0200794A - _02007840 - 2; case 28 - .short _02007952 - _02007840 - 2; case 29 - .short _0200795A - _02007840 - 2; case 30 - .short _02007962 - _02007840 - 2; case 31 - .short _02007966 - _02007840 - 2; case 32 - .short _0200796C - _02007840 - 2; case 33 - .short _02007972 - _02007840 - 2; case 34 - .short _02007978 - _02007840 - 2; case 35 - .short _02007980 - _02007840 - 2; case 36 - .short _02007988 - _02007840 - 2; case 37 - .short _02007990 - _02007840 - 2; case 38 - .short _020079D6 - _02007840 - 2; case 39 - .short _02007996 - _02007840 - 2; case 40 - .short _0200799E - _02007840 - 2; case 41 - .short _020079A4 - _02007840 - 2; case 42 - .short _020079AE - _02007840 - 2; case 43 - .short _020079B8 - _02007840 - 2; case 44 - .short _020079C2 - _02007840 - 2; case 45 - .short _020079CC - _02007840 - 2; case 46 -_0200789E: - mov r1, #0x24 - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078A4: - mov r1, #0x26 - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078AA: - ldr r0, [r0, #0x28] - pop {r3, pc} -_020078AE: - mov r1, #0x2c - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078B4: - mov r1, #0x2e - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078BA: - ldr r0, [r0, #0x30] - pop {r3, pc} -_020078BE: - ldr r0, [r0, #0x54] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - pop {r3, pc} -_020078C6: - ldrh r0, [r0, #0x38] - pop {r3, pc} -_020078CA: - ldrh r0, [r0, #0x3a] - pop {r3, pc} -_020078CE: - ldrh r0, [r0, #0x3c] - pop {r3, pc} -_020078D2: - mov r1, #0x40 - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078D8: - mov r1, #0x42 - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078DE: - mov r1, #0x34 - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078E4: - mov r1, #0x36 - ldrsh r0, [r0, r1] - pop {r3, pc} -_020078EA: - ldr r0, [r0, #0x54] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - pop {r3, pc} -_020078F2: - add r0, #0x44 - ldrb r0, [r0, #0x0] - pop {r3, pc} -_020078F8: - add r0, #0x45 - ldrb r0, [r0, #0x0] - pop {r3, pc} -_020078FE: - add r0, #0x46 - ldrb r0, [r0, #0x0] - pop {r3, pc} -_02007904: - add r0, #0x47 - ldrb r0, [r0, #0x0] - pop {r3, pc} -_0200790A: - mov r1, #0x70 - ldrsh r0, [r0, r1] - pop {r3, pc} -_02007910: - mov r1, #0x72 - ldrsh r0, [r0, r1] - pop {r3, pc} -_02007916: - mov r1, #0x74 - ldrsh r0, [r0, r1] - pop {r3, pc} -_0200791C: - mov r1, #0x76 - ldrsh r0, [r0, r1] - pop {r3, pc} -_02007922: - ldr r0, [r0, #0x54] - lsl r0, r0, #0x19 - lsr r0, r0, #0x1b - pop {r3, pc} -_0200792A: - ldr r0, [r0, #0x50] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1b - pop {r3, pc} -_02007932: - ldr r0, [r0, #0x50] - lsl r0, r0, #0x16 - lsr r0, r0, #0x1b - pop {r3, pc} -_0200793A: - ldr r0, [r0, #0x50] - lsl r0, r0, #0x11 - lsr r0, r0, #0x1b - pop {r3, pc} -_02007942: - ldr r0, [r0, #0x50] - lsl r0, r0, #0xc - lsr r0, r0, #0x1b - pop {r3, pc} -_0200794A: - ldr r0, [r0, #0x50] - lsl r0, r0, #0x7 - lsr r0, r0, #0x1b - pop {r3, pc} -_02007952: - ldr r0, [r0, #0x50] - lsl r0, r0, #0x2 - lsr r0, r0, #0x1b - pop {r3, pc} -_0200795A: - ldr r0, [r0, #0x54] - lsl r0, r0, #0x13 - lsr r0, r0, #0x1f - pop {r3, pc} -_02007962: - ldr r0, [r0, #0x4c] - pop {r3, pc} -_02007966: - add r0, #0x48 - ldrb r0, [r0, #0x0] - pop {r3, pc} -_0200796C: - add r0, #0x49 - ldrb r0, [r0, #0x0] - pop {r3, pc} -_02007972: - add r0, #0x4a - ldrb r0, [r0, #0x0] - pop {r3, pc} -_02007978: - ldr r0, [r0, #0x54] - lsl r0, r0, #0x16 - lsr r0, r0, #0x1f - pop {r3, pc} -_02007980: - ldr r0, [r0, #0x54] - lsl r0, r0, #0x15 - lsr r0, r0, #0x1f - pop {r3, pc} -_02007988: - ldr r0, [r0, #0x54] - lsl r0, r0, #0x14 - lsr r0, r0, #0x1f - pop {r3, pc} -_02007990: - add r0, #0x5b - ldrb r0, [r0, #0x0] - pop {r3, pc} -_02007996: - ldr r0, [r0, #0x54] - lsl r0, r0, #0xf - lsr r0, r0, #0x1c - pop {r3, pc} -_0200799E: - mov r1, #0x6e - ldrsb r0, [r0, r1] - pop {r3, pc} -_020079A4: - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1e - pop {r3, pc} -_020079AE: - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - pop {r3, pc} -_020079B8: - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1f - pop {r3, pc} -_020079C2: - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - pop {r3, pc} -_020079CC: - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x19 - lsr r0, r0, #0x1e - pop {r3, pc} -_020079D6: - bl GF_AssertFail - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020079E0 -FUN_020079E0: ; 0x020079E0 - push {r3-r4} - add r3, r0, #0x0 - add r0, r2, #0x0 - cmp r1, #0x2e - bls _020079EC - b _02007E12 -_020079EC: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_020079F8: ; jump table (using 16-bit offset) - .short _02007A56 - _020079F8 - 2; case 0 - .short _02007A62 - _020079F8 - 2; case 1 - .short _02007A6E - _020079F8 - 2; case 2 - .short _02007A78 - _020079F8 - 2; case 3 - .short _02007A84 - _020079F8 - 2; case 4 - .short _02007A90 - _020079F8 - 2; case 5 - .short _02007A9A - _020079F8 - 2; case 6 - .short _02007AB4 - _020079F8 - 2; case 7 - .short _02007ABE - _020079F8 - 2; case 8 - .short _02007AC8 - _020079F8 - 2; case 9 - .short _02007AD2 - _020079F8 - 2; case 10 - .short _02007AE0 - _020079F8 - 2; case 11 - .short _02007AEE - _020079F8 - 2; case 12 - .short _02007AFA - _020079F8 - 2; case 13 - .short _02007B06 - _020079F8 - 2; case 14 - .short _02007B20 - _020079F8 - 2; case 15 - .short _02007B30 - _020079F8 - 2; case 16 - .short _02007B40 - _020079F8 - 2; case 17 - .short _02007B50 - _020079F8 - 2; case 18 - .short _02007B60 - _020079F8 - 2; case 19 - .short _02007B6E - _020079F8 - 2; case 20 - .short _02007B7C - _020079F8 - 2; case 21 - .short _02007B8A - _020079F8 - 2; case 22 - .short _02007B98 - _020079F8 - 2; case 23 - .short _02007BB2 - _020079F8 - 2; case 24 - .short _02007BCC - _020079F8 - 2; case 25 - .short _02007BE4 - _020079F8 - 2; case 26 - .short _02007BFC - _020079F8 - 2; case 27 - .short _02007C14 - _020079F8 - 2; case 28 - .short _02007C2C - _020079F8 - 2; case 29 - .short _02007C44 - _020079F8 - 2; case 30 - .short _02007C66 - _020079F8 - 2; case 31 - .short _02007C7A - _020079F8 - 2; case 32 - .short _02007C96 - _020079F8 - 2; case 33 - .short _02007CB2 - _020079F8 - 2; case 34 - .short _02007CC2 - _020079F8 - 2; case 35 - .short _02007CE2 - _020079F8 - 2; case 36 - .short _02007D02 - _020079F8 - 2; case 37 - .short _02007D1A - _020079F8 - 2; case 38 - .short _02007E12 - _020079F8 - 2; case 39 - .short _02007D2A - _020079F8 - 2; case 40 - .short _02007D4A - _020079F8 - 2; case 41 - .short _02007D58 - _020079F8 - 2; case 42 - .short _02007D86 - _020079F8 - 2; case 43 - .short _02007DAA - _020079F8 - 2; case 44 - .short _02007DCE - _020079F8 - 2; case 45 - .short _02007DF2 - _020079F8 - 2; case 46 -_02007A56: - mov r1, #0x24 - ldrsh r1, [r3, r1] - add r0, r1, r0 - strh r0, [r3, #0x24] - pop {r3-r4} - bx lr -_02007A62: - mov r1, #0x26 - ldrsh r1, [r3, r1] - add r0, r1, r0 - strh r0, [r3, #0x26] - pop {r3-r4} - bx lr -_02007A6E: - ldr r1, [r3, #0x28] - add r0, r1, r0 - str r0, [r3, #0x28] - pop {r3-r4} - bx lr -_02007A78: - mov r1, #0x2c - ldrsh r1, [r3, r1] - add r0, r1, r0 - strh r0, [r3, #0x2c] - pop {r3-r4} - bx lr -_02007A84: - mov r1, #0x2e - ldrsh r1, [r3, r1] - add r0, r1, r0 - strh r0, [r3, #0x2e] - pop {r3-r4} - bx lr -_02007A90: - ldr r1, [r3, #0x30] - add r0, r1, r0 - str r0, [r3, #0x30] - pop {r3-r4} - bx lr -_02007A9A: - ldr r4, [r3, #0x54] - mov r2, #0x1 - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x1f - lsr r2, r2, #0x1f - add r2, r2, r0 - mov r0, #0x1 - and r0, r2 - orr r0, r1 - str r0, [r3, #0x54] - pop {r3-r4} - bx lr -_02007AB4: - ldrh r1, [r3, #0x38] - add r0, r1, r0 - strh r0, [r3, #0x38] - pop {r3-r4} - bx lr -_02007ABE: - ldrh r1, [r3, #0x3a] - add r0, r1, r0 - strh r0, [r3, #0x3a] - pop {r3-r4} - bx lr -_02007AC8: - ldrh r1, [r3, #0x3c] - add r0, r1, r0 - strh r0, [r3, #0x3c] - pop {r3-r4} - bx lr -_02007AD2: - mov r1, #0x40 - ldrsh r1, [r3, r1] - add r3, #0x40 - add r0, r1, r0 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007AE0: - mov r1, #0x42 - ldrsh r1, [r3, r1] - add r3, #0x42 - add r0, r1, r0 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007AEE: - mov r1, #0x34 - ldrsh r1, [r3, r1] - add r0, r1, r0 - strh r0, [r3, #0x34] - pop {r3-r4} - bx lr -_02007AFA: - mov r1, #0x36 - ldrsh r1, [r3, r1] - add r0, r1, r0 - strh r0, [r3, #0x36] - pop {r3-r4} - bx lr -_02007B06: - ldr r4, [r3, #0x54] - mov r2, #0x2 - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x1e - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1e - orr r0, r1 - str r0, [r3, #0x54] - pop {r3-r4} - bx lr -_02007B20: - add r1, r3, #0x0 - add r1, #0x44 - ldrb r1, [r1, #0x0] - add r3, #0x44 - add r0, r1, r0 - strb r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B30: - add r1, r3, #0x0 - add r1, #0x45 - ldrb r1, [r1, #0x0] - add r3, #0x45 - add r0, r1, r0 - strb r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B40: - add r1, r3, #0x0 - add r1, #0x46 - ldrb r1, [r1, #0x0] - add r3, #0x46 - add r0, r1, r0 - strb r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B50: - add r1, r3, #0x0 - add r1, #0x47 - ldrb r1, [r1, #0x0] - add r3, #0x47 - add r0, r1, r0 - strb r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B60: - mov r1, #0x70 - ldrsh r1, [r3, r1] - add r3, #0x70 - add r0, r1, r0 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B6E: - mov r1, #0x72 - ldrsh r1, [r3, r1] - add r3, #0x72 - add r0, r1, r0 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B7C: - mov r1, #0x74 - ldrsh r1, [r3, r1] - add r3, #0x74 - add r0, r1, r0 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B8A: - mov r1, #0x76 - ldrsh r1, [r3, r1] - add r3, #0x76 - add r0, r1, r0 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007B98: - ldr r4, [r3, #0x54] - mov r2, #0x7c - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x19 - lsr r2, r2, #0x1b - add r0, r2, r0 - lsl r0, r0, #0x1b - lsr r0, r0, #0x19 - orr r0, r1 - str r0, [r3, #0x54] - pop {r3-r4} - bx lr -_02007BB2: - ldr r4, [r3, #0x50] - mov r2, #0x1f - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x1b - lsr r2, r2, #0x1b - add r2, r2, r0 - mov r0, #0x1f - and r0, r2 - orr r0, r1 - str r0, [r3, #0x50] - pop {r3-r4} - bx lr -_02007BCC: - ldr r2, [r3, #0x50] - ldr r1, _02007E18 ; =0xFFFFFC1F - and r1, r2 - lsl r2, r2, #0x16 - lsr r2, r2, #0x1b - add r0, r2, r0 - lsl r0, r0, #0x1b - lsr r0, r0, #0x16 - orr r0, r1 - str r0, [r3, #0x50] - pop {r3-r4} - bx lr -_02007BE4: - ldr r2, [r3, #0x50] - ldr r1, _02007E1C ; =0xFFFF83FF - and r1, r2 - lsl r2, r2, #0x11 - lsr r2, r2, #0x1b - add r0, r2, r0 - lsl r0, r0, #0x1b - lsr r0, r0, #0x11 - orr r0, r1 - str r0, [r3, #0x50] - pop {r3-r4} - bx lr -_02007BFC: - ldr r2, [r3, #0x50] - ldr r1, _02007E20 ; =0xFFF07FFF - and r1, r2 - lsl r2, r2, #0xc - lsr r2, r2, #0x1b - add r0, r2, r0 - lsl r0, r0, #0x1b - lsr r0, r0, #0xc - orr r0, r1 - str r0, [r3, #0x50] - pop {r3-r4} - bx lr -_02007C14: - ldr r2, [r3, #0x50] - ldr r1, _02007E24 ; =0xFE0FFFFF - and r1, r2 - lsl r2, r2, #0x7 - lsr r2, r2, #0x1b - add r0, r2, r0 - lsl r0, r0, #0x1b - lsr r0, r0, #0x7 - orr r0, r1 - str r0, [r3, #0x50] - pop {r3-r4} - bx lr -_02007C2C: - ldr r2, [r3, #0x50] - ldr r1, _02007E28 ; =0xC1FFFFFF - and r1, r2 - lsl r2, r2, #0x2 - lsr r2, r2, #0x1b - add r0, r2, r0 - lsl r0, r0, #0x1b - lsr r0, r0, #0x2 - orr r0, r1 - str r0, [r3, #0x50] - pop {r3-r4} - bx lr -_02007C44: - ldr r2, [r3, #0x54] - ldr r1, _02007E2C ; =0xFFFFEFFF - and r1, r2 - lsl r2, r2, #0x13 - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x13 - orr r0, r1 - str r0, [r3, #0x54] - mov r0, #0x1 - ldr r1, [r3, #0x0] - lsl r0, r0, #0x8 - orr r0, r1 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007C66: - ldr r1, [r3, #0x4c] - add r0, r1, r0 - str r0, [r3, #0x4c] - mov r0, #0x1 - ldr r1, [r3, #0x0] - lsl r0, r0, #0x8 - orr r0, r1 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007C7A: - add r1, r3, #0x0 - add r1, #0x48 - ldrb r1, [r1, #0x0] - add r1, r1, r0 - add r0, r3, #0x0 - add r0, #0x48 - strb r1, [r0, #0x0] - mov r0, #0x1 - ldr r1, [r3, #0x0] - lsl r0, r0, #0x8 - orr r0, r1 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007C96: - add r1, r3, #0x0 - add r1, #0x49 - ldrb r1, [r1, #0x0] - add r1, r1, r0 - add r0, r3, #0x0 - add r0, #0x49 - strb r1, [r0, #0x0] - mov r0, #0x1 - ldr r1, [r3, #0x0] - lsl r0, r0, #0x8 - orr r0, r1 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007CB2: - add r1, r3, #0x0 - add r1, #0x4a - ldrb r1, [r1, #0x0] - add r3, #0x4a - add r0, r1, r0 - strb r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007CC2: - ldr r2, [r3, #0x54] - ldr r1, _02007E30 ; =0xFFFFFDFF - and r1, r2 - lsl r2, r2, #0x16 - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x16 - orr r0, r1 - str r0, [r3, #0x54] - ldr r1, [r3, #0x0] - mov r0, #0x80 - orr r0, r1 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007CE2: - ldr r2, [r3, #0x54] - ldr r1, _02007E34 ; =0xFFFFFBFF - and r1, r2 - lsl r2, r2, #0x15 - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x15 - orr r0, r1 - str r0, [r3, #0x54] - ldr r1, [r3, #0x0] - mov r0, #0x80 - orr r0, r1 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007D02: - ldr r2, [r3, #0x54] - ldr r1, _02007E38 ; =0xFFFFF7FF - and r1, r2 - lsl r2, r2, #0x14 - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x14 - orr r0, r1 - str r0, [r3, #0x54] - pop {r3-r4} - bx lr -_02007D1A: - add r1, r3, #0x0 - add r1, #0x5b - ldrb r1, [r1, #0x0] - add r3, #0x5b - add r0, r1, r0 - strb r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007D2A: - ldr r2, [r3, #0x54] - ldr r1, _02007E3C ; =0xFFFE1FFF - and r1, r2 - lsl r2, r2, #0xf - lsr r2, r2, #0x1c - add r0, r2, r0 - lsl r0, r0, #0x1c - lsr r0, r0, #0xf - orr r0, r1 - str r0, [r3, #0x54] - ldr r1, [r3, #0x0] - mov r0, #0x80 - orr r0, r1 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007D4A: - mov r1, #0x6e - ldrsb r1, [r3, r1] - add r3, #0x6e - add r0, r1, r0 - strb r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007D58: - add r1, r3, #0x0 - add r1, #0x6c - ldrh r4, [r1, #0x0] - mov r2, #0x3 - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x1e - lsr r2, r2, #0x1e - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r2, #0x3 - and r0, r2 - orr r1, r0 - add r0, r3, #0x0 - add r0, #0x6c - strh r1, [r0, #0x0] - ldr r0, [r3, #0x0] - add r2, #0xfd - orr r0, r2 - str r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007D86: - add r1, r3, #0x0 - add r1, #0x6c - ldrh r4, [r1, #0x0] - mov r2, #0x4 - add r3, #0x6c - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x1d - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1d - orr r0, r1 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007DAA: - add r1, r3, #0x0 - add r1, #0x6c - ldrh r4, [r1, #0x0] - mov r2, #0x8 - add r3, #0x6c - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x1c - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1c - orr r0, r1 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007DCE: - add r1, r3, #0x0 - add r1, #0x6c - ldrh r4, [r1, #0x0] - mov r2, #0x10 - add r3, #0x6c - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x1b - lsr r2, r2, #0x1f - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1b - orr r0, r1 - strh r0, [r3, #0x0] - pop {r3-r4} - bx lr -_02007DF2: - add r1, r3, #0x0 - add r1, #0x6c - ldrh r4, [r1, #0x0] - mov r2, #0x60 - add r3, #0x6c - add r1, r4, #0x0 - bic r1, r2 - lsl r2, r4, #0x19 - lsr r2, r2, #0x1e - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x1e - lsr r0, r0, #0x19 - orr r0, r1 - strh r0, [r3, #0x0] -_02007E12: - pop {r3-r4} - bx lr - nop -_02007E18: .word 0xFFFFFC1F -_02007E1C: .word 0xFFFF83FF -_02007E20: .word 0xFFF07FFF -_02007E24: .word 0xFE0FFFFF -_02007E28: .word 0xC1FFFFFF -_02007E2C: .word 0xFFFFEFFF -_02007E30: .word 0xFFFFFDFF -_02007E34: .word 0xFFFFFBFF -_02007E38: .word 0xFFFFF7FF -_02007E3C: .word 0xFFFE1FFF thumb_func_start FUN_02007E40 FUN_02007E40: ; 0x02007E40 diff --git a/arm9/src/unk_02006D98_c.c b/arm9/src/unk_02006D98_c.c index 7a5b48f57..1ae1fa6ed 100644 --- a/arm9/src/unk_02006D98_c.c +++ b/arm9/src/unk_02006D98_c.c @@ -117,7 +117,10 @@ const struct UnkStruct4 *UNK_02105AE8[] = { struct UnkStruct2 { u32 unk00_0:1; u32 unk00_1:6; - u8 unk04[0x20]; + u32 unk00_7:1; + u32 unk00_8:1; + struct UnkStruct63_021DB49C unk04; + struct UnkStruct63_021DB49C unk14; s16 unk24; s16 unk26; u32 unk28; @@ -136,7 +139,11 @@ struct UnkStruct2 { u8 unk45; u8 unk46; u8 unk47; - u8 unk48[0x8]; + u8 unk48; + u8 unk49; + u8 unk4A; + u8 unk4B; + u32 unk4C; u32 unk50_0:5; u32 unk50_5:5; u32 unk50_a:5; @@ -147,8 +154,12 @@ struct UnkStruct2 { u32 unk54_0:1; u32 unk54_1:1; u32 unk54_2:5; - u32 unk54_7:4; + u32 unk54_7:2; + u32 unk54_9:1; + u32 unk54_A:1; u32 unk54_B:1; + u32 unk54_C:1; + u32 unk54_D:4; u8 unk58; u8 unk59; u8 unk5A; @@ -996,7 +1007,7 @@ THUMB_FUNC BOOL FUN_02007390(struct UnkStruct2 *param0) { return FALSE; } -extern u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8); +extern u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, s32 param6, u32 param7, u32 param8); THUMB_FUNC u32 FUN_020073A0(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7) { s32 i; @@ -1009,3 +1020,505 @@ THUMB_FUNC u32 FUN_020073A0(struct UnkStruct1 *param0, struct UnkStruct63_021DB4 return FUN_020073E8(param0, param1, param2, param3, param4, param5, i, param6, param7); } + + +THUMB_FUNC u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, s32 param6, u32 param7, u32 param8) { + GF_ASSERT(param0->unk000[param6].unk00_0 == 0); + + MIi_CpuClearFast(0, ¶m0->unk000[param6], sizeof(struct UnkStruct2)); + param0->unk000[param6].unk00_0 = 1; + param0->unk000[param6].unk00_7 = 1; + param0->unk000[param6].unk00_8 = 1; + param0->unk000[param6].unk00_1 = param5; + + param0->unk000[param6].unk04 = *param1; + param0->unk000[param6].unk14 = *param1; + param0->unk000[param6].unk24 = (s16)param2; + param0->unk000[param6].unk26 = (s16)param3; + param0->unk000[param6].unk28 = param4; + param0->unk000[param6].unk34 = 0x100; + param0->unk000[param6].unk36 = 0x100; + param0->unk000[param6].unk54_2 = 0x1f; + param0->unk000[param6].unk50_0 = 0x1f; + param0->unk000[param6].unk50_5 = 0x1f; + param0->unk000[param6].unk50_a = 0x1f; + param0->unk000[param6].unk50_f = 0x10; + param0->unk000[param6].unk50_14 = 0x10; + param0->unk000[param6].unk50_19 = 0x10; + param0->unk000[param6].unk68 = param8; + param0->unk000[param6].unk70 = (s16)param2; + param0->unk000[param6].unk72 = (s16)param3; + param0->unk000[param6].unk6C_2 = 1; + param0->unk000[param6].unk6C_3 = 1; + param0->unk000[param6].unk6C_4 = 1; + + if (param7 != 0) { + MI_CpuCopy8(param7, param0->unk000[param6].unk84, 0x14); + } + + return ¶m0->unk000[param6]; +} + + +THUMB_FUNC void FUN_02007534(struct UnkStruct2 *param0) { + param0->unk00_0 = 0; +} + + +THUMB_FUNC void FUN_02007540(struct UnkStruct1 *param0) { + for (s32 i = 0; i < 4; i++) { + FUN_02007534(¶m0->unk000[i]); + } +} + + +THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) { + switch (param1) { + case 0: + param0->unk24 = param2; + break; + case 1: + param0->unk26 = param2; + break; + case 2: + param0->unk28 = param2; + break; + case 3: + param0->unk2C = param2; + break; + case 4: + param0->unk2E = param2; + break; + case 5: + param0->unk30 = param2; + break; + case 6: + param0->unk54_0 = param2; + break; + case 7: + param0->unk38 = param2; + break; + case 8: + param0->unk3A = param2; + break; + case 9: + param0->unk3C = param2; + break; + case 10: + param0->unk40 = param2; + break; + case 11: + param0->unk42 = param2; + break; + case 12: + param0->unk34 = param2; + break; + case 13: + param0->unk36 = param2; + break; + case 14: + param0->unk54_1 = param2; + break; + case 15: + param0->unk44 = param2; + break; + case 16: + param0->unk45 = param2; + break; + case 17: + param0->unk46 = param2; + break; + case 18: + param0->unk47 = param2; + break; + case 19: + param0->unk70 = param2; + break; + case 20: + param0->unk72 = param2; + break; + case 21: + param0->unk74 = param2; + break; + case 22: + param0->unk76 = param2; + break; + case 23: + param0->unk54_2 = param2; + break; + case 24: + param0->unk50_0 = param2; + break; + case 25: + param0->unk50_5 = param2; + break; + case 26: + param0->unk50_a = param2; + break; + case 27: + param0->unk50_f = param2; + break; + case 28: + param0->unk50_14 = param2; + break; + case 29: + param0->unk50_19 = param2; + break; + case 30: + param0->unk54_C = param2; + param0->unk00_8 = 1; + break; + case 31: + param0->unk4C = param2; + param0->unk00_8 = 1; + break; + case 32: + param0->unk48 = param2; + param0->unk00_8 = 1; + break; + case 33: + param0->unk49 = param2; + param0->unk00_8 = 1; + break; + case 34: + param0->unk4A = param2; + break; + case 35: + param0->unk54_9 = param2; + param0->unk00_7 = 1; + break; + case 36: + param0->unk54_A = param2; + param0->unk00_7 = 1; + break; + case 37: + param0->unk54_B = param2; + break; + case 38: + param0->unk5B = param2; + break; + case 40: + param0->unk54_D = param2; + param0->unk00_7 = 1; + break; + case 41: + param0->unk6E = param2; + break; + case 42: + param0->unk6C_0 = param2; + param0->unk00_8 = 1; + break; + case 43: + param0->unk6C_2 = param2; + break; + case 44: + param0->unk6C_3 = param2; + break; + case 45: + param0->unk6C_4 = param2; + break; + case 46: + param0->unk6C_5 = param2; + break; + } +} + + +THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) { + switch (param1) { + case 0: + return param0->unk24; + + case 1: + return param0->unk26; + + case 2: + return param0->unk28; + + case 3: + return param0->unk2C; + + case 4: + return param0->unk2E; + + case 5: + return param0->unk30; + + case 6: + return param0->unk54_0; + + case 7: + return param0->unk38; + + case 8: + return param0->unk3A; + + case 9: + return param0->unk3C; + + case 10: + return param0->unk40; + + case 11: + return param0->unk42; + + case 12: + return param0->unk34; + + case 13: + return param0->unk36; + + case 14: + return param0->unk54_1; + + case 15: + return param0->unk44; + + case 16: + return param0->unk45; + + case 17: + return param0->unk46; + + case 18: + return param0->unk47; + + case 19: + return param0->unk70; + + case 20: + return param0->unk72; + + case 21: + return param0->unk74; + + case 22: + return param0->unk76; + + case 23: + return param0->unk54_2; + + case 24: + return param0->unk50_0; + + case 25: + return param0->unk50_5; + + case 26: + return param0->unk50_a; + + case 27: + return param0->unk50_f; + + case 28: + return param0->unk50_14; + + case 29: + return param0->unk50_19; + + case 30: + return param0->unk54_C; + + case 31: + return param0->unk4C; + + case 32: + return param0->unk48; + + case 33: + return param0->unk49; + + case 34: + return param0->unk4A; + + case 35: + return param0->unk54_9; + + case 36: + return param0->unk54_A; + + case 37: + return param0->unk54_B; + + case 38: + return param0->unk5B; + + case 40: + return param0->unk54_D; + + case 41: + return param0->unk6E; + + case 42: + return param0->unk6C_0; + + case 43: + return param0->unk6C_2; + + case 44: + return param0->unk6C_3; + + case 45: + return param0->unk6C_4; + + case 46: + return param0->unk6C_5; + + } + + GF_AssertFail(); + + return 0; +} + + +THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) { + switch (param1) { + case 0: + param0->unk24 += param2; + break; + case 1: + param0->unk26 += param2; + break; + case 2: + param0->unk28 += param2; + break; + case 3: + param0->unk2C += param2; + break; + case 4: + param0->unk2E += param2; + break; + case 5: + param0->unk30 += param2; + break; + case 6: + param0->unk54_0 += param2; + break; + case 7: + param0->unk38 += param2; + break; + case 8: + param0->unk3A += param2; + break; + case 9: + param0->unk3C += param2; + break; + case 10: + param0->unk40 += param2; + break; + case 11: + param0->unk42 += param2; + break; + case 12: + param0->unk34 += param2; + break; + case 13: + param0->unk36 += param2; + break; + case 14: + param0->unk54_1 += param2; + break; + case 15: + param0->unk44 += param2; + break; + case 16: + param0->unk45 += param2; + break; + case 17: + param0->unk46 += param2; + break; + case 18: + param0->unk47 += param2; + break; + case 19: + param0->unk70 += param2; + break; + case 20: + param0->unk72 += param2; + break; + case 21: + param0->unk74 += param2; + break; + case 22: + param0->unk76 += param2; + break; + case 23: + param0->unk54_2 += param2; + break; + case 24: + param0->unk50_0 += param2; + break; + case 25: + param0->unk50_5 += param2; + break; + case 26: + param0->unk50_a += param2; + break; + case 27: + param0->unk50_f += param2; + break; + case 28: + param0->unk50_14 += param2; + break; + case 29: + param0->unk50_19 += param2; + break; + case 30: + param0->unk54_C += param2; + param0->unk00_8 = 1; + break; + case 31: + param0->unk4C += param2; + param0->unk00_8 = 1; + break; + case 32: + param0->unk48 += param2; + param0->unk00_8 = 1; + break; + case 33: + param0->unk49 += param2; + param0->unk00_8 = 1; + break; + case 34: + param0->unk4A += param2; + break; + case 35: + param0->unk54_9 += param2; + param0->unk00_7 = 1; + break; + case 36: + param0->unk54_A += param2; + param0->unk00_7 = 1; + break; + case 37: + param0->unk54_B += param2; + break; + case 38: + param0->unk5B += param2; + break; + case 40: + param0->unk54_D += param2; + param0->unk00_7 = 1; + break; + case 41: + param0->unk6E += param2; + break; + case 42: + param0->unk6C_0 += param2; + param0->unk00_8 = 1; + break; + case 43: + param0->unk6C_2 += param2; + break; + case 44: + param0->unk6C_3 += param2; + break; + case 45: + param0->unk6C_4 += param2; + break; + case 46: + param0->unk6C_5 += param2; + break; + } +} From 6fca01e85cbd692fe3697cbce9ca2457f1fae82b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 28 Aug 2021 22:56:17 +0200 Subject: [PATCH 05/19] remaining functions --- arm9/arm9.lsf | 1 - arm9/asm/unk_02006D98.s | 1736 ----------------- arm9/global.inc | 6 - arm9/lib/libnns/include/NNS_g2d.h | 2 + arm9/modules/63/include/mod63_021DB450.h | 6 +- arm9/src/{unk_02006D98_c.c => unk_02006D98.c} | 896 ++++++++- 6 files changed, 804 insertions(+), 1843 deletions(-) delete mode 100644 arm9/asm/unk_02006D98.s rename arm9/src/{unk_02006D98_c.c => unk_02006D98.c} (58%) diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 0e976777f..04756a553 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -21,7 +21,6 @@ Static arm9 Object overlay_manager.o Object filesystem.o Object gf_gfx_loader.o - Object unk_02006D98_c.o Object unk_02006D98.o Object unk_02008AA4.o Object unk_02008DEC.o diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s deleted file mode 100644 index 5359b45e3..000000000 --- a/arm9/asm/unk_02006D98.s +++ /dev/null @@ -1,1736 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern UNK_020ECD4C - .extern FX_SinCosTable_ - - .section .rodata - - - - - - - - - - - - .section .data - - - .text - - - - - thumb_func_start FUN_02007E40 -FUN_02007E40: ; 0x02007E40 - push {r4-r5} - ldr r5, [r0, #0x54] - mov r4, #0x2 - orr r4, r5 - str r4, [r0, #0x54] - add r4, r0, #0x0 - add r4, #0x44 - strb r1, [r4, #0x0] - add r1, r0, #0x0 - add r1, #0x45 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x46 - strb r3, [r1, #0x0] - ldr r1, [sp, #0x8] - add r0, #0x47 - strb r1, [r0, #0x0] - pop {r4-r5} - bx lr - .balign 4 - - thumb_func_start FUN_02007E68 -FUN_02007E68: ; 0x02007E68 - push {r4-r5} - mov r4, #0x1 - ldr r5, [r0, #0x54] - lsl r4, r4, #0xc - orr r4, r5 - str r4, [r0, #0x54] - add r4, r0, #0x0 - add r4, #0x48 - strb r1, [r4, #0x0] - add r1, r0, #0x0 - add r1, #0x49 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - mov r2, #0x0 - add r1, #0x4a - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x4b - strb r3, [r1, #0x0] - ldr r1, [sp, #0x8] - str r1, [r0, #0x4c] - pop {r4-r5} - bx lr - .balign 4 - - thumb_func_start FUN_02007E98 -FUN_02007E98: ; 0x02007E98 - push {r4-r7} - add r4, r0, #0x0 - add r0, r1, #0x0 - add r5, r2, #0x0 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - lsl r0, r5, #0x18 - lsr r5, r0, #0x18 - lsl r0, r3, #0x18 - ldr r2, [sp, #0x10] - mov r1, #0x0 - lsr r0, r0, #0x18 -_02007EB0: - ldr r3, [r4, #0x0] - lsl r3, r3, #0x1f - lsr r3, r3, #0x1f - beq _02007EDE - mov r3, #0x1 - ldr r7, [r4, #0x54] - lsl r3, r3, #0xc - orr r3, r7 - str r3, [r4, #0x54] - add r3, r4, #0x0 - add r3, #0x48 - strb r6, [r3, #0x0] - add r3, r4, #0x0 - add r3, #0x49 - add r7, r4, #0x0 - strb r5, [r3, #0x0] - add r7, #0x4a - mov r3, #0x0 - strb r3, [r7, #0x0] - add r3, r4, #0x0 - add r3, #0x4b - strb r0, [r3, #0x0] - str r2, [r4, #0x4c] -_02007EDE: - add r1, r1, #0x1 - add r4, #0x98 - cmp r1, #0x4 - blt _02007EB0 - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_02007EEC -FUN_02007EEC: ; 0x02007EEC - ldr r2, [r0, #0x54] - ldr r1, _02007F1C ; =0xFFFFEFFF - and r1, r2 - str r1, [r0, #0x54] - add r1, r0, #0x0 - mov r2, #0x0 - add r1, #0x48 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x49 - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x4a - strb r2, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x4b - strb r2, [r1, #0x0] - str r2, [r0, #0x4c] - mov r1, #0x1 - ldr r2, [r0, #0x0] - lsl r1, r1, #0x8 - orr r1, r2 - str r1, [r0, #0x0] - bx lr - .balign 4 -_02007F1C: .word 0xFFFFEFFF - - thumb_func_start FUN_02007F20 -FUN_02007F20: ; 0x02007F20 - ldr r0, [r0, #0x54] - lsl r0, r0, #0x13 - lsr r0, r0, #0x1f - cmp r0, #0x1 - bne _02007F2E - mov r0, #0x1 - bx lr -_02007F2E: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start FUN_02007F34 -FUN_02007F34: ; 0x02007F34 - mov r2, #0x28 - sub r2, r2, r1 - mov r1, #0x36 - ldrsh r1, [r0, r1] - mul r1, r2 - asr r1, r1, #0x8 - sub r1, r2, r1 - strh r1, [r0, #0x2e] - bx lr - .balign 4 - - thumb_func_start FUN_02007F48 -FUN_02007F48: ; 0x02007F48 - push {r4-r7} - add r1, r0, #0x0 - add r1, #0x58 - ldrb r1, [r1, #0x0] - add r6, r0, #0x0 - add r6, #0x59 - cmp r1, #0x0 - beq _0200800A - add r1, r0, #0x0 - add r1, #0x5a - ldrb r1, [r1, #0x0] - cmp r1, #0x0 - bne _02007FFE - ldrb r1, [r6, #0x0] - add r1, r1, #0x1 - strb r1, [r6, #0x0] - ldrb r3, [r6, #0x0] - mov r1, #0x84 - lsl r4, r3, #0x1 - add r2, r0, r4 - ldrsb r2, [r2, r1] - sub r1, #0x85 - cmp r2, r1 - bge _02007FC6 - mov r2, #0x0 - sub r1, r2, #0x2 -_02007F7C: - add r4, r0, r3 - add r4, #0x5c - ldrb r4, [r4, #0x0] - add r3, r0, r3 - add r3, #0x5c - add r4, r4, #0x1 - strb r4, [r3, #0x0] - ldrb r5, [r6, #0x0] - lsl r3, r5, #0x1 - add r4, r0, r3 - add r3, r4, #0x0 - add r7, r0, r5 - add r3, #0x85 - add r7, #0x5c - ldrb r3, [r3, #0x0] - ldrb r7, [r7, #0x0] - cmp r3, r7 - beq _02007FA4 - cmp r3, #0x0 - bne _02007FAE -_02007FA4: - add r3, r0, r5 - add r3, #0x5c - strb r2, [r3, #0x0] - add r6, r6, #0x1 - b _02007FB6 -_02007FAE: - mov r3, #0x84 - ldrsb r3, [r4, r3] - sub r3, r1, r3 - strb r3, [r6, #0x0] -_02007FB6: - ldrb r3, [r6, #0x0] - mov r5, #0x84 - lsl r4, r3, #0x1 - add r7, r0, r4 - ldrsb r7, [r7, r5] - sub r5, #0x85 - cmp r7, r5 - blt _02007F7C -_02007FC6: - add r2, r0, r4 - mov r1, #0x84 - ldrsb r2, [r2, r1] - sub r1, #0x85 - cmp r2, r1 - beq _02007FD6 - cmp r3, #0xa - blo _02007FE6 -_02007FD6: - add r1, r0, #0x0 - mov r2, #0x0 - add r1, #0x5b - strb r2, [r1, #0x0] - add r0, #0x58 - strb r2, [r0, #0x0] - pop {r4-r7} - bx lr -_02007FE6: - add r1, r0, #0x0 - add r1, #0x5b - strb r2, [r1, #0x0] - ldrb r1, [r6, #0x0] - lsl r1, r1, #0x1 - add r1, r0, r1 - add r1, #0x85 - ldrb r1, [r1, #0x0] - add r0, #0x5a - strb r1, [r0, #0x0] - pop {r4-r7} - bx lr -_02007FFE: - add r1, r0, #0x0 - add r1, #0x5a - ldrb r1, [r1, #0x0] - add r0, #0x5a - sub r1, r1, #0x1 - strb r1, [r0, #0x0] -_0200800A: - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_02008010 -FUN_02008010: ; 0x02008010 - mov r2, #0x1 - strb r2, [r0, #0x0] - mov r3, #0x0 - strb r3, [r0, #0x2] - ldrsb r2, [r1, r3] - strb r2, [r0, #0x1] - ldrb r2, [r1, #0x1] - strb r2, [r0, #0x3] - str r1, [r0, #0x10] - add r2, r3, #0x0 -_02008024: - add r1, r0, r3 - add r3, r3, #0x1 - strb r2, [r1, #0x4] - cmp r3, #0xa - blt _02008024 - bx lr - - thumb_func_start FUN_02008030 -FUN_02008030: ; 0x02008030 - push {r4-r7} - ldrb r1, [r0, #0x0] - cmp r1, #0x0 - beq _020080C6 - add r3, r0, #0x2 - ldr r4, [r0, #0x10] - cmp r1, #0x0 - beq _020080C0 - ldrb r1, [r0, #0x3] - cmp r1, #0x0 - bne _020080BC - ldrb r1, [r3, #0x0] - add r1, r1, #0x1 - strb r1, [r3, #0x0] - ldrb r2, [r3, #0x0] - mov r1, #0x0 - mvn r1, r1 - lsl r5, r2, #0x1 - ldrsb r6, [r4, r5] - cmp r6, r1 - bge _02008098 - mov r1, #0x0 -_0200805C: - add r5, r0, r2 - ldrb r2, [r5, #0x4] - add r2, r2, #0x1 - strb r2, [r5, #0x4] - ldrb r2, [r3, #0x0] - add r5, r0, r2 - lsl r2, r2, #0x1 - add r2, r4, r2 - ldrb r7, [r2, #0x1] - ldrb r6, [r5, #0x4] - cmp r7, r6 - beq _02008078 - cmp r7, #0x0 - bne _0200807E -_02008078: - strb r1, [r5, #0x4] - add r3, r3, #0x1 - b _0200808A -_0200807E: - mov r5, #0x0 - ldrsb r5, [r2, r5] - mov r2, #0x1 - mvn r2, r2 - sub r2, r2, r5 - strb r2, [r3, #0x0] -_0200808A: - ldrb r2, [r3, #0x0] - mov r6, #0x0 - mvn r6, r6 - lsl r5, r2, #0x1 - ldrsb r7, [r4, r5] - cmp r7, r6 - blt _0200805C -_02008098: - ldrsb r5, [r4, r5] - mov r1, #0x0 - mvn r1, r1 - cmp r5, r1 - beq _020080A6 - cmp r2, #0xa - blo _020080AE -_020080A6: - mov r1, #0x0 - strb r1, [r0, #0x1] - strb r1, [r0, #0x0] - b _020080C0 -_020080AE: - strb r5, [r0, #0x1] - ldrb r1, [r3, #0x0] - lsl r1, r1, #0x1 - add r1, r4, r1 - ldrb r1, [r1, #0x1] - strb r1, [r0, #0x3] - b _020080C0 -_020080BC: - sub r1, r1, #0x1 - strb r1, [r0, #0x3] -_020080C0: - ldrb r0, [r0, #0x1] - pop {r4-r7} - bx lr -_020080C6: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_020080D0 -FUN_020080D0: ; 0x020080D0 - ldr r2, [r0, #0x0] - mov r1, #0x80 - orr r2, r1 - add r1, #0x80 - orr r1, r2 - str r1, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start FUN_020080E0 -FUN_020080E0: ; 0x020080E0 - push {r3-r4} - add r2, r0, #0x0 - add r3, r2, #0x0 - add r4, r2, #0x4 - add r3, #0x14 - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - add r0, r2, #0x0 - add r0, #0x6c - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x78 - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x6e - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x7a - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x70 - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x7c - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x72 - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x7e - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x74 - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x80 - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x76 - ldrh r0, [r0, #0x0] - add r2, #0x82 - strh r0, [r2, #0x0] - pop {r3-r4} - bx lr - - thumb_func_start FUN_0200813C -FUN_0200813C: ; 0x0200813C - push {r3-r4} - add r2, r0, #0x0 - add r4, r2, #0x0 - add r4, #0x14 - add r3, r2, #0x4 - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - add r0, r2, #0x0 - add r0, #0x78 - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x6c - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x7a - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x6e - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x7c - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x70 - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x7e - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x72 - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x80 - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x74 - strh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x82 - ldrh r1, [r0, #0x0] - add r0, r2, #0x0 - add r0, #0x76 - strh r1, [r0, #0x0] - ldr r1, [r2, #0x0] - mov r0, #0x80 - orr r1, r0 - add r0, #0x80 - orr r0, r1 - str r0, [r2, #0x0] - pop {r3-r4} - bx lr - .balign 4 - - thumb_func_start FUN_020081A8 -FUN_020081A8: ; 0x020081A8 - mov r3, #0xa7 - lsl r3, r3, #0x2 - str r1, [r0, r3] - add r1, r3, #0x4 - str r2, [r0, r1] - bx lr - - thumb_func_start FUN_020081B4 -FUN_020081B4: ; 0x020081B4 - mov r3, #0xa9 - lsl r3, r3, #0x2 - str r1, [r0, r3] - add r1, r3, #0x4 - str r2, [r0, r1] - bx lr - - thumb_func_start FUN_020081C0 -FUN_020081C0: ; 0x020081C0 - add r0, r0, #0x4 - bx lr - - thumb_func_start FUN_020081C4 -FUN_020081C4: ; 0x020081C4 - push {r4, lr} - add r4, r0, #0x0 - ldr r0, _02008254 ; =0x000002E1 - ldrb r1, [r4, r0] - cmp r1, #0x0 - beq _02008212 - mov r1, #0x0 - strb r1, [r4, r0] - sub r0, #0x81 - add r0, r4, r0 - bl NNS_G2dInitImageProxy - mov r3, #0xae - lsl r3, r3, #0x2 - mov r1, #0x20 - strh r1, [r4, r3] - add r0, r3, #0x2 - strh r1, [r4, r0] - add r0, r3, #0x0 - sub r0, #0x18 - ldr r1, [r4, r0] - add r0, r3, #0x0 - add r0, #0x10 - str r1, [r4, r0] - add r0, r3, #0x0 - sub r0, #0xc - ldr r1, [r4, r0] - add r0, r3, #0x0 - add r0, #0x14 - str r1, [r4, r0] - add r1, r3, #0x0 - sub r1, #0x1c - add r0, r4, r3 - sub r3, #0x58 - ldr r1, [r4, r1] - mov r2, #0x0 - add r3, r4, r3 - bl NNS_G2dLoadImage2DMapping -_02008212: - ldr r0, _02008258 ; =0x000002E2 - ldrb r1, [r4, r0] - cmp r1, #0x0 - beq _02008252 - mov r1, #0x0 - strb r1, [r4, r0] - sub r0, #0x5e - add r0, r4, r0 - bl NNS_G2dInitImagePaletteProxy - mov r3, #0xaa - lsl r3, r3, #0x2 - add r0, r3, #0x0 - ldr r1, [r4, r3] - add r0, #0x30 - str r1, [r4, r0] - add r0, r3, #0x0 - add r0, #0x8 - ldr r1, [r4, r0] - add r0, r3, #0x0 - add r0, #0x34 - str r1, [r4, r0] - add r0, r3, #0x0 - sub r1, r3, #0x4 - add r0, #0x28 - sub r3, #0x24 - ldr r1, [r4, r1] - add r0, r4, r0 - mov r2, #0x0 - add r3, r4, r3 - bl NNS_G2dLoadPalette -_02008252: - pop {r4, pc} - .balign 4 -_02008254: .word 0x000002E1 -_02008258: .word 0x000002E2 - - thumb_func_start FUN_0200825C -FUN_0200825C: ; 0x0200825C - ldr r2, _02008264 ; =0x000002E3 - strb r1, [r0, r2] - bx lr - nop -_02008264: .word 0x000002E3 - - thumb_func_start FUN_02008268 -FUN_02008268: ; 0x02008268 - push {r4, lr} - add r4, r0, #0x0 - bne _02008272 - bl GF_AssertFail -_02008272: - ldr r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - beq _0200827E - mov r0, #0x1 - pop {r4, pc} -_0200827E: - mov r0, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02008284 -FUN_02008284: ; 0x02008284 - mov r2, #0xb9 - lsl r2, r2, #0x2 - ldr r3, [r0, r2] - orr r1, r3 - str r1, [r0, r2] - bx lr - - thumb_func_start FUN_02008290 -FUN_02008290: ; 0x02008290 - push {r3-r4} - mov r3, #0xb9 - lsl r3, r3, #0x2 - mov r2, #0x0 - mvn r2, r2 - ldr r4, [r0, r3] - eor r1, r2 - and r1, r4 - str r1, [r0, r3] - pop {r3-r4} - bx lr - .balign 4 - - thumb_func_start FUN_020082A8 -FUN_020082A8: ; 0x020082A8 - push {r4-r7, lr} - sub sp, #0x5c - add r6, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x48] - str r0, [sp, #0x54] - ldr r0, [sp, #0x48] - str r6, [sp, #0x44] - str r0, [sp, #0x38] -_020082BA: - ldr r0, [sp, #0x44] - ldr r1, [r0, #0x0] - lsl r0, r1, #0x1f - lsr r0, r0, #0x1f - beq _020082CA - lsl r0, r1, #0x18 - lsr r0, r0, #0x1f - bne _020082CC -_020082CA: - b _020086C2 -_020082CC: - mov r0, #0x80 - bic r1, r0 - ldr r0, [sp, #0x44] - mov r2, #0xa6 - str r1, [r0, #0x0] - mov r0, #0x1 - str r0, [sp, #0x48] - ldr r0, [sp, #0x44] - ldr r1, [sp, #0x44] - lsl r2, r2, #0x2 - ldrh r0, [r0, #0x4] - ldrh r1, [r1, #0x6] - ldr r2, [r6, r2] - bl AllocAndReadWholeNarcMemberByIdPair - add r1, sp, #0x58 - str r0, [sp, #0x4c] - bl NNS_G2dGetUnpackedCharacterData - ldr r0, [sp, #0x58] - mov r1, #0xaf - ldr r0, [r0, #0x4] - lsl r1, r1, #0x2 - str r0, [r6, r1] - ldr r0, [sp, #0x58] - ldr r2, [r0, #0x8] - add r0, r1, #0x4 - str r2, [r6, r0] - ldr r0, [sp, #0x58] - add r1, #0x8 - ldr r0, [r0, #0xc] - str r0, [r6, r1] - ldr r0, [sp, #0x58] - ldr r0, [r0, #0x14] - str r0, [sp, #0x50] - bl FUN_02008A74 - ldr r0, [sp, #0x44] - ldr r1, [sp, #0x50] - bl FUN_020088EC - ldr r0, [sp, #0x54] - cmp r0, #0x3 - beq _02008326 - b _02008554 -_02008326: - mov r5, #0x0 - add r0, r5, #0x0 - str r5, [sp, #0x14] - str r0, [sp, #0x24] -_0200832E: - ldr r0, [sp, #0x14] - mov r1, #0x4f - sub r2, r1, r0 - mov r0, #0x50 - add r1, r2, #0x0 - mul r1, r0 - ldr r0, [sp, #0x50] - mov r4, #0x0 - add r0, r0, r1 - str r0, [sp, #0x20] - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x24] - add r7, r1, r0 - ldr r0, [sp, #0x20] - str r7, [sp, #0x18] - str r0, [sp, #0x1c] - ldr r0, [sp, #0x14] - sub r0, r0, #0x1 - lsl r0, r0, #0x7 - str r0, [sp, #0x10] -_02008356: - cmp r4, #0x28 - bge _02008442 - ldr r0, [sp, #0x44] - ldr r1, [r0, #0x54] - lsl r0, r1, #0x16 - lsr r0, r0, #0x1f - beq _02008386 - lsl r1, r1, #0x15 - lsr r1, r1, #0x1f - beq _02008386 - mov r0, #0x27 - sub r1, r0, r4 - ldr r0, [sp, #0x1c] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - add r1, r4, r1 - add r1, #0x50 - strb r0, [r1, #0x0] - b _0200852E -_02008386: - cmp r0, #0x0 - beq _020083A6 - mov r0, #0x27 - sub r1, r0, r4 - ldr r0, [sp, #0x18] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - add r1, r4, r1 - add r1, #0x50 - strb r0, [r1, #0x0] - b _0200852E -_020083A6: - ldr r0, [sp, #0x44] - ldr r0, [r0, #0x54] - lsl r1, r0, #0x15 - lsr r1, r1, #0x1f - beq _020083C4 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r0, [sp, #0x20] - ldr r1, [r6, r1] - ldrb r0, [r0, #0x0] - add r1, r5, r1 - add r1, r4, r1 - add r1, #0x50 - strb r0, [r1, #0x0] - b _0200852E -_020083C4: - lsl r0, r0, #0xf - lsr r0, r0, #0x1c - str r0, [sp, #0xc] - beq _02008430 - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x14] - lsl r1, r1, #0x1 - bl _u32_div_f - cmp r1, #0x0 - beq _020083F4 - mov r0, #0xab - lsl r0, r0, #0x2 - ldr r1, [r6, r0] - ldr r0, [sp, #0x10] - add r0, r0, r1 - add r0, r4, r0 - add r0, #0x50 - add r1, r5, r1 - add r1, r4, r1 - ldrb r0, [r0, #0x0] - add r1, #0x50 - strb r0, [r1, #0x0] - b _0200852E -_020083F4: - ldr r1, [sp, #0xc] - add r0, r4, #0x0 - bl _u32_div_f - cmp r1, #0x0 - beq _02008416 - mov r0, #0xab - lsl r0, r0, #0x2 - ldr r0, [r6, r0] - add r2, r5, r0 - add r0, r2, r4 - add r0, #0x4f - ldrb r1, [r0, #0x0] - add r0, r2, r4 - add r0, #0x50 - strb r1, [r0, #0x0] - b _0200852E -_02008416: - ldrb r1, [r7, #0x0] - mov r0, #0xf - and r1, r0 - lsl r0, r1, #0x4 - orr r0, r1 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - add r1, r4, r1 - add r1, #0x50 - strb r0, [r1, #0x0] - b _0200852E -_02008430: - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - ldrb r0, [r7, #0x0] - add r1, r5, r1 - add r1, r4, r1 - add r1, #0x50 - strb r0, [r1, #0x0] - b _0200852E -_02008442: - ldr r0, [sp, #0x44] - ldr r1, [r0, #0x54] - lsl r0, r1, #0x16 - lsr r0, r0, #0x1f - beq _02008472 - lsl r1, r1, #0x15 - lsr r1, r1, #0x1f - beq _02008472 - add r1, r4, #0x0 - sub r1, #0x28 - mov r0, #0x4f - sub r1, r0, r1 - ldr r0, [sp, #0x1c] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - add r2, r4, r1 - ldr r1, _020086E8 ; =0x00002828 - strb r0, [r2, r1] - b _0200852E -_02008472: - cmp r0, #0x0 - beq _02008496 - add r1, r4, #0x0 - sub r1, #0x28 - mov r0, #0x4f - sub r1, r0, r1 - ldr r0, [sp, #0x18] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - add r2, r4, r1 - ldr r1, _020086E8 ; =0x00002828 - strb r0, [r2, r1] - b _0200852E -_02008496: - ldr r0, [sp, #0x44] - ldr r0, [r0, #0x54] - lsl r1, r0, #0x15 - lsr r1, r1, #0x1f - beq _020084B4 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r0, [sp, #0x20] - ldr r1, [r6, r1] - ldrb r0, [r0, #0x0] - add r1, r5, r1 - add r2, r4, r1 - ldr r1, _020086E8 ; =0x00002828 - strb r0, [r2, r1] - b _0200852E -_020084B4: - lsl r0, r0, #0xf - lsr r0, r0, #0x1c - str r0, [sp, #0x8] - beq _0200851E - ldr r1, [sp, #0x8] - ldr r0, [sp, #0x14] - lsl r1, r1, #0x1 - bl _u32_div_f - cmp r1, #0x0 - beq _020084E4 - mov r0, #0xab - lsl r0, r0, #0x2 - ldr r1, [r6, r0] - ldr r0, [sp, #0x10] - add r0, r0, r1 - add r2, r4, r0 - ldr r0, _020086E8 ; =0x00002828 - add r1, r5, r1 - ldrb r0, [r2, r0] - add r2, r4, r1 - ldr r1, _020086E8 ; =0x00002828 - strb r0, [r2, r1] - b _0200852E -_020084E4: - ldr r1, [sp, #0x8] - add r0, r4, #0x0 - bl _u32_div_f - cmp r1, #0x0 - beq _02008504 - mov r0, #0xab - lsl r0, r0, #0x2 - ldr r0, [r6, r0] - ldr r1, _020086EC ; =0x00002827 - add r0, r5, r0 - add r0, r0, r4 - ldrb r2, [r0, r1] - add r1, r1, #0x1 - strb r2, [r0, r1] - b _0200852E -_02008504: - ldrb r1, [r7, #0x0] - mov r0, #0xf - and r1, r0 - lsl r0, r1, #0x4 - orr r0, r1 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - add r2, r4, r1 - ldr r1, _020086E8 ; =0x00002828 - strb r0, [r2, r1] - b _0200852E -_0200851E: - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - ldrb r0, [r7, #0x0] - add r1, r5, r1 - add r2, r4, r1 - ldr r1, _020086E8 ; =0x00002828 - strb r0, [r2, r1] -_0200852E: - ldr r0, [sp, #0x20] - add r4, r4, #0x1 - add r0, r0, #0x1 - add r7, r7, #0x1 - str r0, [sp, #0x20] - cmp r4, #0x50 - bge _0200853E - b _02008356 -_0200853E: - ldr r0, [sp, #0x24] - add r5, #0x80 - add r0, #0x50 - str r0, [sp, #0x24] - ldr r0, [sp, #0x14] - add r0, r0, #0x1 - str r0, [sp, #0x14] - cmp r0, #0x50 - bge _02008552 - b _0200832E -_02008552: - b _020086BC -_02008554: - mov r0, #0x0 - str r0, [sp, #0x0] - str r0, [sp, #0x40] - str r0, [sp, #0x3c] -_0200855C: - ldr r0, [sp, #0x0] - mov r1, #0x4f - sub r2, r1, r0 - mov r0, #0x50 - add r1, r2, #0x0 - mul r1, r0 - ldr r0, [sp, #0x50] - mov r4, #0x0 - add r0, r0, r1 - str r0, [sp, #0x34] - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x3c] - add r7, r1, r0 - ldr r0, [sp, #0x34] - ldr r1, [sp, #0x38] - str r0, [sp, #0x30] - ldr r0, [sp, #0x40] - str r7, [sp, #0x2c] - add r5, r1, r0 - ldr r0, [sp, #0x0] - sub r0, r0, #0x1 - lsl r1, r0, #0x7 - ldr r0, [sp, #0x38] - add r0, r0, r1 - str r0, [sp, #0x28] -_0200858E: - ldr r0, [sp, #0x44] - ldr r1, [r0, #0x54] - lsl r0, r1, #0x16 - lsr r0, r0, #0x1f - beq _020085D6 - lsl r1, r1, #0x15 - lsr r1, r1, #0x1f - beq _020085D6 - cmp r4, #0x28 - bge _020085BA - mov r0, #0x27 - sub r1, r0, r4 - ldr r0, [sp, #0x30] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - strb r0, [r4, r1] - b _02008694 -_020085BA: - add r1, r4, #0x0 - sub r1, #0x28 - mov r0, #0x4f - sub r1, r0, r1 - ldr r0, [sp, #0x30] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - strb r0, [r4, r1] - b _02008694 -_020085D6: - cmp r0, #0x0 - beq _02008612 - cmp r4, #0x28 - bge _020085F6 - mov r0, #0x27 - sub r1, r0, r4 - ldr r0, [sp, #0x2c] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - strb r0, [r4, r1] - b _02008694 -_020085F6: - add r1, r4, #0x0 - sub r1, #0x28 - mov r0, #0x4f - sub r1, r0, r1 - ldr r0, [sp, #0x2c] - ldrb r0, [r0, r1] - bl FUN_020088D8 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - strb r0, [r4, r1] - b _02008694 -_02008612: - ldr r0, [sp, #0x44] - ldr r0, [r0, #0x54] - lsl r1, r0, #0x15 - lsr r1, r1, #0x1f - beq _0200862C - ldr r0, [sp, #0x34] - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - ldrb r0, [r0, #0x0] - add r1, r5, r1 - strb r0, [r4, r1] - b _02008694 -_0200862C: - lsl r0, r0, #0xf - lsr r0, r0, #0x1c - str r0, [sp, #0x4] - beq _02008688 - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x0] - lsl r1, r1, #0x1 - bl _u32_div_f - cmp r1, #0x0 - beq _02008654 - mov r0, #0xab - lsl r0, r0, #0x2 - ldr r0, [r6, r0] - ldr r1, [sp, #0x28] - add r1, r1, r0 - ldrb r1, [r4, r1] - add r0, r5, r0 - strb r1, [r4, r0] - b _02008694 -_02008654: - ldr r1, [sp, #0x4] - add r0, r4, #0x0 - bl _u32_div_f - cmp r1, #0x0 - beq _02008672 - mov r0, #0xab - lsl r0, r0, #0x2 - ldr r0, [r6, r0] - add r1, r5, r0 - add r0, r1, r4 - sub r0, r0, #0x1 - ldrb r0, [r0, #0x0] - strb r0, [r1, r4] - b _02008694 -_02008672: - ldrb r1, [r7, #0x0] - mov r0, #0xf - and r1, r0 - lsl r0, r1, #0x4 - orr r0, r1 - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - add r1, r5, r1 - strb r0, [r4, r1] - b _02008694 -_02008688: - mov r1, #0xab - lsl r1, r1, #0x2 - ldr r1, [r6, r1] - ldrb r0, [r7, #0x0] - add r1, r5, r1 - strb r0, [r4, r1] -_02008694: - ldr r0, [sp, #0x34] - add r4, r4, #0x1 - add r0, r0, #0x1 - add r7, r7, #0x1 - str r0, [sp, #0x34] - cmp r4, #0x50 - bge _020086A4 - b _0200858E -_020086A4: - ldr r0, [sp, #0x40] - add r0, #0x80 - str r0, [sp, #0x40] - ldr r0, [sp, #0x3c] - add r0, #0x50 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x0] - add r0, r0, #0x1 - str r0, [sp, #0x0] - cmp r0, #0x50 - bge _020086BC - b _0200855C -_020086BC: - ldr r0, [sp, #0x4c] - bl FreeToHeap -_020086C2: - ldr r0, [sp, #0x44] - mov r1, #0xa - add r0, #0x98 - str r0, [sp, #0x44] - ldr r0, [sp, #0x38] - lsl r1, r1, #0xa - add r0, r0, r1 - str r0, [sp, #0x38] - ldr r0, [sp, #0x54] - add r0, r0, #0x1 - str r0, [sp, #0x54] - cmp r0, #0x4 - bge _020086DE - b _020082BA -_020086DE: - ldr r1, _020086F0 ; =0x000002E1 - ldr r0, [sp, #0x48] - strb r0, [r6, r1] - add sp, #0x5c - pop {r4-r7, pc} - .balign 4 -_020086E8: .word 0x00002828 -_020086EC: .word 0x00002827 -_020086F0: .word 0x000002E1 - - thumb_func_start FUN_020086F4 -FUN_020086F4: ; 0x020086F4 - push {r4-r7, lr} - sub sp, #0x1c - add r5, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0xc] - str r0, [sp, #0x14] - ldr r0, [sp, #0xc] - add r4, r5, #0x0 - str r0, [sp, #0x8] -_02008706: - ldr r1, [r4, #0x0] - lsl r0, r1, #0x1f - lsr r0, r0, #0x1f - beq _020087E0 - lsl r0, r1, #0x17 - lsr r0, r0, #0x1f - beq _020087E0 - ldr r0, _020088CC ; =0xFFFFFEFF - mov r2, #0xa6 - and r0, r1 - str r0, [r4, #0x0] - mov r0, #0x1 - str r0, [sp, #0xc] - lsl r2, r2, #0x2 - ldrh r0, [r4, #0x4] - ldrh r1, [r4, #0x8] - ldr r2, [r5, r2] - bl AllocAndReadWholeNarcMemberByIdPair - add r1, sp, #0x18 - str r0, [sp, #0x10] - bl NNS_G2dGetUnpackedPaletteData - ldr r0, [sp, #0x18] - mov r7, #0x0 - ldr r1, [r0, #0x0] - mov r0, #0x2d - lsl r0, r0, #0x4 - str r1, [r5, r0] - ldr r0, [sp, #0x18] - add r2, r7, #0x0 - ldr r1, [r0, #0xc] - ldr r0, [sp, #0x8] - lsl r3, r0, #0x1 -_0200874A: - mov r6, #0x2b - lsl r6, r6, #0x4 - ldr r6, [r5, r6] - ldrh r0, [r1, #0x0] - add r6, r3, r6 - add r7, r7, #0x1 - strh r0, [r2, r6] - mov r6, #0xad - lsl r6, r6, #0x2 - ldrh r0, [r1, #0x0] - ldr r6, [r5, r6] - add r1, r1, #0x2 - add r6, r3, r6 - strh r0, [r2, r6] - add r2, r2, #0x2 - cmp r7, #0x10 - blt _0200874A - ldr r0, [sp, #0x10] - bl FreeToHeap - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1e - beq _020087E0 - mov r2, #0xa6 - lsl r2, r2, #0x2 - ldr r2, [r5, r2] - mov r0, #0x75 ; NARC_POKETOOL_POKEGRA_OTHERPOKE - mov r1, #0xd4 - bl AllocAndReadWholeNarcMemberByIdPair - add r1, sp, #0x18 - str r0, [sp, #0x4] - bl NNS_G2dGetUnpackedPaletteData - ldr r0, [sp, #0x18] - mov r7, #0xad - ldr r0, [r0, #0xc] - mov r1, #0x0 - lsl r7, r7, #0x2 -_0200879E: - add r6, r4, #0x0 - add r6, #0x6c - ldrh r6, [r6, #0x0] - mov r2, #0x2b - lsl r2, r2, #0x4 - lsl r6, r6, #0x1e - lsr r6, r6, #0x1e - add r6, r6, #0x3 - lsl r6, r6, #0x4 - add r6, r1, r6 - ldrh r3, [r0, #0x0] - ldr r2, [r5, r2] - lsl r6, r6, #0x1 - strh r3, [r2, r6] - add r6, r4, #0x0 - add r6, #0x6c - ldrh r6, [r6, #0x0] - ldrh r3, [r0, #0x0] - ldr r2, [r5, r7] - lsl r6, r6, #0x1e - lsr r6, r6, #0x1e - add r6, r6, #0x3 - lsl r6, r6, #0x4 - add r6, r1, r6 - lsl r6, r6, #0x1 - add r1, r1, #0x1 - add r0, r0, #0x2 - strh r3, [r2, r6] - cmp r1, #0x10 - blt _0200879E - ldr r0, [sp, #0x4] - bl FreeToHeap -_020087E0: - ldr r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - beq _020088AE - ldr r0, [r4, #0x54] - lsl r0, r0, #0x13 - lsr r0, r0, #0x1f - beq _020088AE - add r0, r4, #0x0 - add r0, #0x4a - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - bne _020088A0 - mov r0, #0x1 - str r0, [sp, #0xc] - add r0, r4, #0x0 - add r0, #0x4b - ldrb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x4a - strb r1, [r0, #0x0] - ldr r0, [sp, #0x8] - mov r2, #0xad - lsl r1, r0, #0x1 - ldr r0, [r4, #0x4c] - add r3, r4, #0x0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r2, r2, #0x2 - str r0, [sp, #0x0] - ldr r0, [r5, r2] - sub r2, r2, #0x4 - add r3, #0x48 - ldr r2, [r5, r2] - add r0, r0, r1 - add r1, r2, r1 - ldrb r3, [r3, #0x0] - mov r2, #0x10 - bl BlendPalette - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1e - beq _02008862 - add r0, r0, #0x3 - lsl r1, r0, #0x5 - ldr r0, [r4, #0x4c] - mov r2, #0xad - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r3, r4, #0x0 - lsl r2, r2, #0x2 - str r0, [sp, #0x0] - ldr r0, [r5, r2] - sub r2, r2, #0x4 - add r3, #0x48 - ldr r2, [r5, r2] - add r0, r0, r1 - add r1, r2, r1 - ldrb r3, [r3, #0x0] - mov r2, #0x10 - bl BlendPalette -_02008862: - add r0, r4, #0x0 - add r0, #0x49 - ldrb r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x48 - ldrb r0, [r0, #0x0] - cmp r0, r1 - bne _0200887C - ldr r1, [r4, #0x54] - ldr r0, _020088D0 ; =0xFFFFEFFF - and r0, r1 - str r0, [r4, #0x54] - b _020088AE -_0200887C: - cmp r0, r1 - bls _02008890 - add r0, r4, #0x0 - add r0, #0x48 - ldrb r0, [r0, #0x0] - sub r1, r0, #0x1 - add r0, r4, #0x0 - add r0, #0x48 - strb r1, [r0, #0x0] - b _020088AE -_02008890: - add r0, r4, #0x0 - add r0, #0x48 - ldrb r0, [r0, #0x0] - add r1, r0, #0x1 - add r0, r4, #0x0 - add r0, #0x48 - strb r1, [r0, #0x0] - b _020088AE -_020088A0: - add r0, r4, #0x0 - add r0, #0x4a - ldrb r0, [r0, #0x0] - sub r1, r0, #0x1 - add r0, r4, #0x0 - add r0, #0x4a - strb r1, [r0, #0x0] -_020088AE: - ldr r0, [sp, #0x8] - add r4, #0x98 - add r0, #0x10 - str r0, [sp, #0x8] - ldr r0, [sp, #0x14] - add r0, r0, #0x1 - str r0, [sp, #0x14] - cmp r0, #0x4 - bge _020088C2 - b _02008706 -_020088C2: - ldr r1, _020088D4 ; =0x000002E2 - ldr r0, [sp, #0xc] - strb r0, [r5, r1] - add sp, #0x1c - pop {r4-r7, pc} - .balign 4 -_020088CC: .word 0xFFFFFEFF -_020088D0: .word 0xFFFFEFFF -_020088D4: .word 0x000002E2 - - thumb_func_start FUN_020088D8 -FUN_020088D8: ; 0x020088D8 - mov r1, #0xf0 - and r1, r0 - lsl r1, r1, #0x14 - lsl r0, r0, #0x1c - lsr r1, r1, #0x18 - lsr r0, r0, #0x18 - orr r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr - - thumb_func_start FUN_020088EC -FUN_020088EC: ; 0x020088EC - push {r3, lr} - add r2, r0, #0x0 - ldrh r0, [r2, #0xa] - cmp r0, #0x0 - beq _02008900 - add r0, r1, #0x0 - ldr r1, [r2, #0x10] - mov r2, #0x1 - bl FUN_02008904 -_02008900: - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02008904 -FUN_02008904: ; 0x02008904 - push {r4-r7, lr} - sub sp, #0x1c - add r3, r0, #0x0 - add r0, r1, #0x0 - mov lr, r0 - mov r0, #0x0 - mov r12, r0 - ldr r0, _02008A50 ; =UNK_02105AE8 - str r1, [sp, #0x0] - str r2, [sp, #0x4] - str r0, [sp, #0x10] -_0200891A: - ldr r0, [sp, #0x10] - mov r1, #0x0 - ldr r6, [r0, #0x0] - ldrb r0, [r6, #0x0] - cmp r0, #0xff - beq _02008992 - ldr r0, [sp, #0x0] - mov r2, #0xf - and r0, r2 - str r0, [sp, #0xc] - sub r0, #0x8 - str r0, [sp, #0xc] - ldr r0, [sp, #0x0] - mov r2, #0xf0 - and r0, r2 - lsr r7, r0, #0x4 - sub r7, #0x8 -_0200893C: - lsl r0, r1, #0x1 - add r2, r6, r0 - ldrb r4, [r6, r0] - ldrb r2, [r2, #0x1] - ldr r0, [sp, #0xc] - add r0, r0, r4 - add r2, r7, r2 - lsl r0, r0, #0x18 - lsl r2, r2, #0x18 - lsr r0, r0, #0x18 - lsr r4, r2, #0x18 - mov r2, #0x50 - mul r2, r4 - lsr r5, r0, #0x1 - add r2, r5, r2 - mov r4, #0x1 - tst r0, r4 - ldrb r4, [r3, r2] - beq _02008974 - mov r0, #0xf0 - and r0, r4 - cmp r0, #0x10 - blt _02008984 - cmp r0, #0x30 - bgt _02008984 - add r4, #0x50 - strb r4, [r3, r2] - b _02008984 -_02008974: - mov r0, #0xf - and r0, r4 - cmp r0, #0x1 - blt _02008984 - cmp r0, #0x3 - bgt _02008984 - add r0, r4, #0x5 - strb r0, [r3, r2] -_02008984: - add r0, r1, #0x1 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - lsl r0, r1, #0x1 - ldrb r0, [r6, r0] - cmp r0, #0xff - bne _0200893C -_02008992: - ldr r0, [sp, #0x0] - lsr r0, r0, #0x8 - str r0, [sp, #0x0] - ldr r0, [sp, #0x10] - add r0, r0, #0x4 - str r0, [sp, #0x10] - mov r0, r12 - add r0, r0, #0x1 - mov r12, r0 - cmp r0, #0x4 - blt _0200891A - mov r0, lr - str r0, [sp, #0x0] - ldr r0, [sp, #0x4] - cmp r0, #0x0 - beq _02008A4A - mov r0, #0x0 - str r0, [sp, #0x8] - ldr r0, _02008A50 ; =UNK_02105AE8 - str r0, [sp, #0x18] -_020089BA: - ldr r0, [sp, #0x18] - mov r4, #0x0 - ldr r2, [r0, #0x0] - ldrb r0, [r2, #0x0] - cmp r0, #0xff - beq _02008A34 - ldr r0, [sp, #0x0] - mov r1, #0xf - and r0, r1 - str r0, [sp, #0x14] - add r0, #0x48 - str r0, [sp, #0x14] - ldr r0, [sp, #0x0] - mov r1, #0xf0 - and r0, r1 - lsr r7, r0, #0x4 - sub r7, #0x8 -_020089DC: - lsl r0, r4, #0x1 - add r5, r2, r0 - ldrb r1, [r2, r0] - ldrb r5, [r5, #0x1] - ldr r0, [sp, #0x14] - sub r1, #0xe - add r0, r0, r1 - add r5, r7, r5 - lsl r0, r0, #0x18 - lsl r5, r5, #0x18 - lsr r1, r0, #0x18 - lsr r6, r5, #0x18 - mov r5, #0x50 - lsr r0, r1, #0x1 - mul r5, r6 - add r0, r0, r5 - mov r5, #0x1 - tst r1, r5 - ldrb r5, [r3, r0] - beq _02008A16 - mov r1, #0xf0 - and r1, r5 - cmp r1, #0x10 - blt _02008A26 - cmp r1, #0x30 - bgt _02008A26 - add r5, #0x50 - strb r5, [r3, r0] - b _02008A26 -_02008A16: - mov r1, #0xf - and r1, r5 - cmp r1, #0x1 - blt _02008A26 - cmp r1, #0x3 - bgt _02008A26 - add r1, r5, #0x5 - strb r1, [r3, r0] -_02008A26: - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - lsl r0, r4, #0x1 - ldrb r0, [r2, r0] - cmp r0, #0xff - bne _020089DC -_02008A34: - ldr r0, [sp, #0x0] - lsr r0, r0, #0x8 - str r0, [sp, #0x0] - ldr r0, [sp, #0x18] - add r0, r0, #0x4 - str r0, [sp, #0x18] - ldr r0, [sp, #0x8] - add r0, r0, #0x1 - str r0, [sp, #0x8] - cmp r0, #0x4 - blt _020089BA -_02008A4A: - add sp, #0x1c - pop {r4-r7, pc} - nop -_02008A50: .word UNK_02105AE8 - - thumb_func_start FUN_02008A54 -FUN_02008A54: ; 0x02008A54 - ldr r2, [r0, #0x0] - ldr r1, _02008A6C ; =0x41C64E6D - add r3, r2, #0x0 - mul r3, r1 - ldr r1, _02008A70 ; =0x00006073 - add r1, r3, r1 - str r1, [r0, #0x0] - lsr r0, r1, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr - nop -_02008A6C: .word 0x41C64E6D -_02008A70: .word 0x00006073 - - thumb_func_start FUN_02008A74 -FUN_02008A74: ; 0x02008A74 - push {r3-r7, lr} - ldr r1, _02008AA0 ; =0x000018FE - mov r6, #0x0 - ldrh r2, [r0, r1] - lsr r4, r1, #0x1 - add r5, r0, r1 - str r2, [sp, #0x0] - add r7, sp, #0x0 - mvn r6, r6 -_02008A86: - ldrh r1, [r5, #0x0] - ldr r0, [sp, #0x0] - eor r0, r1 - strh r0, [r5, #0x0] - add r0, r7, #0x0 - bl FUN_02008A54 - sub r4, r4, #0x1 - sub r5, r5, #0x2 - cmp r4, r6 - bgt _02008A86 - pop {r3-r7, pc} - nop -_02008AA0: .word 0x000018FE diff --git a/arm9/global.inc b/arm9/global.inc index ee15a6c28..b7a3a6a68 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -8999,9 +8999,3 @@ .extern wcschr .extern wcscpy .extern wmemchr -.extern UNK_020ECBD0 -.extern UNK_020ECC10 -.extern UNK_020ECC78 -.extern UNK_020ECCE2 -.extern UNK_020ECDCC -.extern UNK_02105AE8 diff --git a/arm9/lib/libnns/include/NNS_g2d.h b/arm9/lib/libnns/include/NNS_g2d.h index d65f0430c..45d348ef0 100644 --- a/arm9/lib/libnns/include/NNS_g2d.h +++ b/arm9/lib/libnns/include/NNS_g2d.h @@ -220,5 +220,7 @@ void NNS_G2dApplyAndResetOamManagerBuffer(NNSG2dOamManager *oamManager); u32 NNS_G2dEntryOamManagerOamWithAffineIdx( NNSG2dOamManager *oamManager, u32 param1, u32 param2); u32 NNS_G2dEntryOamManagerAffine(NNSG2dOamManager *oamManager, u32 param1); +void NNS_G2dInitImageProxy(NNSG2dImageProxy *); +void NNS_G2dInitImagePaletteProxy(NNSG2dImagePaletteProxy *); #endif //NNSYS_NNS_G2D_H diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index ac3da1b6b..15c1c477f 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -23,8 +23,10 @@ typedef struct UnkStruct63_021DB450 //intro base struct type typedef struct UnkStruct63_021DB49C { - u32 field_00; - u32 field_04; + u16 field_00; + u16 field_02; + u16 field_04; + u16 field_06; u32 field_08; u32 field_0C; } UnkStruct63_021DB49C; diff --git a/arm9/src/unk_02006D98_c.c b/arm9/src/unk_02006D98.c similarity index 58% rename from arm9/src/unk_02006D98_c.c rename to arm9/src/unk_02006D98.c index 1ae1fa6ed..154e32849 100644 --- a/arm9/src/unk_02006D98_c.c +++ b/arm9/src/unk_02006D98.c @@ -6,10 +6,7 @@ #include "poketool/pokegra/otherpoke.naix" #include "registers.h" #include "mod63_021DB450.h" - -struct UnkStruct3 { - u32 unk00[8]; -}; +#include "palette.h" struct UnkStruct4{ u8 unk0; @@ -18,7 +15,7 @@ struct UnkStruct4{ -static const u8 UNK_020ECCE0[] = { +const u8 UNK_020ECCE0[] = { 0xFF, 0xFF, 0x1B, 0x0F, 0x1C, 0x0F, 0x1D, 0x0F, 0x1E, 0x0F, 0x1A, 0x10, 0x1B, 0x10, 0x1C, 0x10, 0x1D, 0x10, 0x1E, 0x10, 0x1F, 0x10, 0x19, 0x11, 0x1A, 0x11, 0x1B, 0x11, 0x1C, 0x11, 0x1D, 0x11, 0x1E, 0x11, 0x1F, 0x11, 0x20, 0x11, 0x19, 0x12, 0x1A, 0x12, 0x1B, 0x12, 0x1C, 0x12, 0x1D, 0x12, 0x1E, 0x12, @@ -31,7 +28,7 @@ static const u8 UNK_020ECCE0[] = { -static const u8 UNK_020ECC10[] = { +const u8 UNK_020ECC10[] = { 0x1E, 0x21, 0x1F, 0x21, 0x20, 0x21, 0x1D, 0x22, 0x1E, 0x22, 0x1F, 0x22, 0x20, 0x22, 0x21, 0x22, 0x1C, 0x23, 0x1D, 0x23, 0x1E, 0x23, 0x1F, 0x23, 0x20, 0x23, 0x21, 0x23, 0x22, 0x23, 0x1C, 0x24, 0x1D, 0x24, 0x1E, 0x24, 0x1F, 0x24, 0x20, 0x24, 0x21, 0x24, 0x22, 0x24, 0x1C, 0x25, 0x1D, 0x25, @@ -42,7 +39,7 @@ static const u8 UNK_020ECC10[] = { }; -static const u8 UNK_020ECC78[] = { +const u8 UNK_020ECC78[] = { 0x33, 0x11, 0x34, 0x11, 0x35, 0x11, 0x36, 0x11, 0x32, 0x12, 0x33, 0x12, 0x34, 0x12, 0x35, 0x12, 0x36, 0x12, 0x37, 0x12, 0x31, 0x13, 0x32, 0x13, 0x33, 0x13, 0x34, 0x13, 0x35, 0x13, 0x36, 0x13, 0x37, 0x13, 0x38, 0x13, 0x31, 0x14, 0x32, 0x14, 0x33, 0x14, 0x34, 0x14, 0x35, 0x14, 0x36, 0x14, @@ -52,7 +49,7 @@ static const u8 UNK_020ECC78[] = { 0x33, 0x18, 0x34, 0x18, 0x35, 0x18, 0x36, 0x18, }; -static const u8 UNK_020ECDCC[] = { +const u8 UNK_020ECDCC[] = { 0x2B, 0x21, 0x2C, 0x21, 0x2D, 0x21, 0x29, 0x22, 0x2A, 0x22, 0x2B, 0x22, 0x2C, 0x22, 0x2D, 0x22, 0x2E, 0x22, 0x2F, 0x22, 0x28, 0x23, 0x29, 0x23, 0x2A, 0x23, 0x2B, 0x23, 0x2C, 0x23, 0x2D, 0x23, 0x2E, 0x23, 0x2F, 0x23, 0x30, 0x23, 0x28, 0x24, 0x29, 0x24, 0x2A, 0x24, 0x2B, 0x24, 0x2C, 0x24, @@ -68,7 +65,7 @@ static const u8 UNK_020ECDCC[] = { -static const int UNK_020ECBD0[4][4] = { +const int UNK_020ECBD0[4][4] = { {160, 160, 224, 176}, {160, 160, 224, 176}, {160, 176, 224, 192}, {160, 192, 224, 208} }; @@ -107,13 +104,33 @@ const u8 UNK_020ECD4C[] = { -const struct UnkStruct4 *UNK_02105AE8[] = { +struct UnkStruct4 *UNK_02105AE8[] = { + // ugly hack to fix extra padding added by the compiler (struct UnkStruct4 *)(UNK_020ECCE0+2), (struct UnkStruct4 *)UNK_020ECC78, (struct UnkStruct4 *)UNK_020ECC10, (struct UnkStruct4 *)UNK_020ECDCC, }; + +struct UnkStruct2_sub { + s8 unk0; + u8 unk1; +}; +struct UnkStruct2_sub2 { + u16 unk0_0:2; + u16 unk0_2:1; + u16 unk0_3:1; + u16 unk0_4:1; + u16 unk0_5:2; + s8 unk2; + u8 unk3; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unka; +}; + struct UnkStruct2 { u32 unk00_0:1; u32 unk00_1:6; @@ -166,48 +183,27 @@ struct UnkStruct2 { u8 unk5B; u8 unk5C[10]; void (*unk68)(struct UnkStruct2 *, void *); - u16 unk6C_0:2; - u16 unk6C_2:1; - u16 unk6C_3:1; - u16 unk6C_4:1; - u16 unk6C_5:2; - s8 unk6E; - u8 unk6F; - s16 unk70; - s16 unk72; - s16 unk74; - s16 unk76; - u8 unk78[0xc]; - struct UnkStruct2_sub { - s8 unk0; - u8 unk1; - } unk84[10]; + struct UnkStruct2_sub2 unk6C; + struct UnkStruct2_sub2 unk78; + struct UnkStruct2_sub unk84[10]; }; struct UnkStruct1 { struct UnkStruct2 unk000[4]; - u8 unk260[0xc]; - u32 unk26C; - u32 unk270; - u32 unk274; - u32 unk278; - u32 unk27C; - u8 unk280[0x18]; + NNSG2dImageProxy unk260; + NNSG2dImagePaletteProxy unk284; u32 unk298; u32 unk29C; u32 unk2A0; u32 unk2A4; u32 unk2A8; - void *unk2AC; - void *unk2B0; - void *unk2B4; - u32 unk2B8; - u32 unk2BC; - u32 unk2C0; - u32 unk2C4; - u8 unk2C8[0x18]; + u8 *unk2AC; + u16 *unk2B0; + u16 *unk2B4; + NNSG2dCharacterData unk2B8; + NNSG2dPaletteData unk2D0; u8 unk2E0; u8 unk2E1; u8 unk2E2; @@ -216,7 +212,7 @@ struct UnkStruct1 }; extern void NNS_G2dSetupSoftwareSpriteCamera(void); -extern void FUN_02008A74(void *); +extern void FUN_02008A74(u8 *); THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) { @@ -250,9 +246,9 @@ THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) NNSG2dCharacterData *stc; NNS_G2dGetUnpackedCharacterData(st4, &stc); - ptr->unk2BC = stc->pixelFmt; - ptr->unk2C0 = stc->mapingType; - ptr->unk2C4 = stc->characterFmt; + ptr->unk2B8.pixelFmt = stc->pixelFmt; + ptr->unk2B8.mapingType = stc->mapingType; + ptr->unk2B8.characterFmt = stc->characterFmt; st8 = stc->pRawData; FUN_02008A74(st8); @@ -298,7 +294,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { reg_G3_MTX_PUSH = 0; // this is all shuffled however I try - reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk274 << 26) | (1 << 30) | (param0->unk26C << 20) | (param0->unk270 << 23) | (param0->unk27C << 29); + reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk260.attr.fmt << 26) | (1 << 30) | (param0->unk260.attr.sizeS << 20) | (param0->unk260.attr.sizeT << 23) | (param0->unk260.attr.plttUse << 29); for (int st18 = 0; st18 < 4; st18++) { if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || param0->unk000[st18].unk54_B != 0) { @@ -318,7 +314,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { FUN_02007F48(¶m0->unk000[st18]); u32 shift; - if (param0->unk274 == 2) { + if (param0->unk260.attr.fmt == 2) { shift = 1; } else { shift = 0; @@ -379,7 +375,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { NNS_G2dDrawSpriteFast( param0->unk000[st18].unk24-40 + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C, - param0->unk000[st18].unk26-40 + param0->unk000[st18].unk45 + param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, + param0->unk000[st18].unk26-40 + param0->unk000[st18].unk45 + param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, param0->unk000[st18].unk28 + param0->unk000[st18].unk30, r12, r7, @@ -395,7 +391,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { NNS_G2dDrawSpriteFast( param0->unk000[st18].unk24-(arg3/2)+param0->unk000[st18].unk2C, - param0->unk000[st18].unk26-(arg4/2)+ param0->unk000[st18].unk2E - param0->unk000[st18].unk6E, + param0->unk000[st18].unk26-(arg4/2)+ param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, param0->unk000[st18].unk28 + param0->unk000[st18].unk30, arg3, arg4, @@ -407,7 +403,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { } - if (param0->unk000[st18].unk6C_0 == 0 || param0->unk000[st18].unk6C_5 == 0 || param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { + if (param0->unk000[st18].unk6C.unk0_0 == 0 || param0->unk000[st18].unk6C.unk0_5 == 0 || param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { continue; } @@ -416,16 +412,16 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { } u32 shift2; - if (param0->unk274 == 2) { + if (param0->unk260.attr.fmt == 2) { shift2 = 1; } else { shift2 = 0; } - reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C_0+3)<<5))>>(4-shift2); + reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C.unk0_0+3)<<5))>>(4-shift2); - if (param0->unk000[st18].unk6C_4 != 0) { + if (param0->unk000[st18].unk6C.unk0_4 != 0) { arg3 = (param0->unk000[st18].unk34*64)>>8; arg4 = (param0->unk000[st18].unk36*16)>>8; } else { @@ -433,25 +429,25 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { arg4 = 16; } - if (param0->unk000[st18].unk6C_2 != 0) { - param0->unk000[st18].unk70 = param0->unk000[st18].unk24+ param0->unk000[st18].unk2C + param0->unk000[st18].unk74; + if (param0->unk000[st18].unk6C.unk0_2 != 0) { + param0->unk000[st18].unk6C.unk4 = param0->unk000[st18].unk24+ param0->unk000[st18].unk2C + param0->unk000[st18].unk6C.unk8; } - if (param0->unk000[st18].unk6C_3 != 0) { - param0->unk000[st18].unk72 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk76; + if (param0->unk000[st18].unk6C.unk0_3 != 0) { + param0->unk000[st18].unk6C.unk6 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk6C.unka; } NNS_G2dDrawSpriteFast( - param0->unk000[st18].unk70 - (arg3/2), - param0->unk000[st18].unk72 - (arg4/2), + param0->unk000[st18].unk6C.unk4 - (arg3/2), + param0->unk000[st18].unk6C.unk4 - (arg4/2), 0xFFFFFC18, arg3, arg4, - UNK_020ECBD0[param0->unk000[st18].unk6C_5][0], - UNK_020ECBD0[param0->unk000[st18].unk6C_5][1], - UNK_020ECBD0[param0->unk000[st18].unk6C_5][2], - UNK_020ECBD0[param0->unk000[st18].unk6C_5][3] + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][0], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][1], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][2], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3] ); } @@ -1046,11 +1042,11 @@ THUMB_FUNC u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB param0->unk000[param6].unk50_14 = 0x10; param0->unk000[param6].unk50_19 = 0x10; param0->unk000[param6].unk68 = param8; - param0->unk000[param6].unk70 = (s16)param2; - param0->unk000[param6].unk72 = (s16)param3; - param0->unk000[param6].unk6C_2 = 1; - param0->unk000[param6].unk6C_3 = 1; - param0->unk000[param6].unk6C_4 = 1; + param0->unk000[param6].unk6C.unk4 = (s16)param2; + param0->unk000[param6].unk6C.unk6 = (s16)param3; + param0->unk000[param6].unk6C.unk0_2 = 1; + param0->unk000[param6].unk6C.unk0_3 = 1; + param0->unk000[param6].unk6C.unk0_4 = 1; if (param7 != 0) { MI_CpuCopy8(param7, param0->unk000[param6].unk84, 0x14); @@ -1132,16 +1128,16 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) param0->unk47 = param2; break; case 19: - param0->unk70 = param2; + param0->unk6C.unk4 = param2; break; case 20: - param0->unk72 = param2; + param0->unk6C.unk6 = param2; break; case 21: - param0->unk74 = param2; + param0->unk6C.unk8 = param2; break; case 22: - param0->unk76 = param2; + param0->unk6C.unka = param2; break; case 23: param0->unk54_2 = param2; @@ -1202,23 +1198,23 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) param0->unk00_7 = 1; break; case 41: - param0->unk6E = param2; + param0->unk6C.unk2 = param2; break; case 42: - param0->unk6C_0 = param2; + param0->unk6C.unk0_0 = param2; param0->unk00_8 = 1; break; case 43: - param0->unk6C_2 = param2; + param0->unk6C.unk0_2 = param2; break; case 44: - param0->unk6C_3 = param2; + param0->unk6C.unk0_3 = param2; break; case 45: - param0->unk6C_4 = param2; + param0->unk6C.unk0_4 = param2; break; case 46: - param0->unk6C_5 = param2; + param0->unk6C.unk0_5 = param2; break; } } @@ -1284,16 +1280,16 @@ THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) { return param0->unk47; case 19: - return param0->unk70; + return param0->unk6C.unk4; case 20: - return param0->unk72; + return param0->unk6C.unk6; case 21: - return param0->unk74; + return param0->unk6C.unk8; case 22: - return param0->unk76; + return param0->unk6C.unka; case 23: return param0->unk54_2; @@ -1347,22 +1343,22 @@ THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) { return param0->unk54_D; case 41: - return param0->unk6E; + return param0->unk6C.unk2; case 42: - return param0->unk6C_0; + return param0->unk6C.unk0_0; case 43: - return param0->unk6C_2; + return param0->unk6C.unk0_2; case 44: - return param0->unk6C_3; + return param0->unk6C.unk0_3; case 45: - return param0->unk6C_4; + return param0->unk6C.unk0_4; case 46: - return param0->unk6C_5; + return param0->unk6C.unk0_5; } @@ -1432,16 +1428,16 @@ THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) param0->unk47 += param2; break; case 19: - param0->unk70 += param2; + param0->unk6C.unk4 += param2; break; case 20: - param0->unk72 += param2; + param0->unk6C.unk6 += param2; break; case 21: - param0->unk74 += param2; + param0->unk6C.unk8 += param2; break; case 22: - param0->unk76 += param2; + param0->unk6C.unka += param2; break; case 23: param0->unk54_2 += param2; @@ -1502,23 +1498,727 @@ THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) param0->unk00_7 = 1; break; case 41: - param0->unk6E += param2; + param0->unk6C.unk2 += param2; break; case 42: - param0->unk6C_0 += param2; + param0->unk6C.unk0_0 += param2; param0->unk00_8 = 1; break; case 43: - param0->unk6C_2 += param2; + param0->unk6C.unk0_2 += param2; break; case 44: - param0->unk6C_3 += param2; + param0->unk6C.unk0_3 += param2; break; case 45: - param0->unk6C_4 += param2; + param0->unk6C.unk0_4 += param2; break; case 46: - param0->unk6C_5 += param2; + param0->unk6C.unk0_5 += param2; break; } } + + +THUMB_FUNC void FUN_02007E40(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { + param0->unk54_1 = 1; + param0->unk44 = param1; + param0->unk45 = param2; + param0->unk46 = param3; + param0->unk47 = param4; +} + + +THUMB_FUNC void FUN_02007E68(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { + param0->unk54_C = 1; + param0->unk48 = param1; + param0->unk49 = param2; + param0->unk4A = 0; + param0->unk4B = param3; + param0->unk4C = param4; +} + + +THUMB_FUNC void FUN_02007E98(struct UnkStruct1 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { + for (s32 i = 0; i < 4; i++) { + if (param0->unk000[i].unk00_0 == 0) { + continue; + } + + param0->unk000[i].unk54_C = 1; + param0->unk000[i].unk48 = (u8)param1; + param0->unk000[i].unk49 = (u8)param2; + param0->unk000[i].unk4A = 0; + param0->unk000[i].unk4B = (u8)param3; + param0->unk000[i].unk4C = param4; + } +} + + +THUMB_FUNC void FUN_02007EEC(struct UnkStruct2 *param0) { + param0->unk54_C = 0; + param0->unk48 = 0; + param0->unk49 = 0; + param0->unk4A = 0; + param0->unk4B = 0; + param0->unk4C = 0; + param0->unk00_8 = 1; +} + + + +THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct2 *param0) { + return param0->unk54_C == 1; +} + + +THUMB_FUNC void FUN_02007F34(struct UnkStruct2 *param0, s32 param1) { + param0->unk2E = (40-param1) - (((40-param1)*param0->unk36)>>8); +} + + +#ifdef NONMATCHING +THUMB_FUNC void FUN_02007F48(struct UnkStruct2 *param0) { + u8 *r6 = ¶m0->unk59; + if (param0->unk58 == 0) { + return; + } + + if (param0->unk5A == 0) { + (*r6)++; + + while (param0->unk84[*r6].unk0 < -1) { + param0->unk5C[*r6]++; + + if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) { + param0->unk5C[*r6] = 0; + r6++; + } else { + *r6 = -2-param0->unk84[*r6].unk0; + } + } + + if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) { + param0->unk5B = 0; + param0->unk58 = 0; + + return; + } + + param0->unk5B = param0->unk84[*r6].unk0; + param0->unk5A = param0->unk84[*r6].unk1; + + } else { + param0->unk5A--; + } +} +#else +asm void FUN_02007F48(struct UnkStruct2 *param0) { + // clang-format off + push {r4-r7} + add r1, r0, #0x0 + add r1, #0x58 + ldrb r1, [r1, #0x0] + add r6, r0, #0x0 + add r6, #0x59 + cmp r1, #0x0 + beq _0200800A + add r1, r0, #0x0 + add r1, #0x5a + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02007FFE + ldrb r1, [r6, #0x0] + add r1, r1, #0x1 + strb r1, [r6, #0x0] + ldrb r3, [r6, #0x0] + mov r1, #0x84 + lsl r4, r3, #0x1 + add r2, r0, r4 + ldrsb r2, [r2, r1] + sub r1, #0x85 + cmp r2, r1 + bge _02007FC6 + mov r2, #0x0 + sub r1, r2, #0x2 +_02007F7C: + add r4, r0, r3 + add r4, #0x5c + ldrb r4, [r4, #0x0] + add r3, r0, r3 + add r3, #0x5c + add r4, r4, #0x1 + strb r4, [r3, #0x0] + ldrb r5, [r6, #0x0] + lsl r3, r5, #0x1 + add r4, r0, r3 + add r3, r4, #0x0 + add r7, r0, r5 + add r3, #0x85 + add r7, #0x5c + ldrb r3, [r3, #0x0] + ldrb r7, [r7, #0x0] + cmp r3, r7 + beq _02007FA4 + cmp r3, #0x0 + bne _02007FAE +_02007FA4: + add r3, r0, r5 + add r3, #0x5c + strb r2, [r3, #0x0] + add r6, r6, #0x1 + b _02007FB6 +_02007FAE: + mov r3, #0x84 + ldrsb r3, [r4, r3] + sub r3, r1, r3 + strb r3, [r6, #0x0] +_02007FB6: + ldrb r3, [r6, #0x0] + mov r5, #0x84 + lsl r4, r3, #0x1 + add r7, r0, r4 + ldrsb r7, [r7, r5] + sub r5, #0x85 + cmp r7, r5 + blt _02007F7C +_02007FC6: + add r2, r0, r4 + mov r1, #0x84 + ldrsb r2, [r2, r1] + sub r1, #0x85 + cmp r2, r1 + beq _02007FD6 + cmp r3, #0xa + blo _02007FE6 +_02007FD6: + add r1, r0, #0x0 + mov r2, #0x0 + add r1, #0x5b + strb r2, [r1, #0x0] + add r0, #0x58 + strb r2, [r0, #0x0] + pop {r4-r7} + bx lr +_02007FE6: + add r1, r0, #0x0 + add r1, #0x5b + strb r2, [r1, #0x0] + ldrb r1, [r6, #0x0] + lsl r1, r1, #0x1 + add r1, r0, r1 + add r1, #0x85 + ldrb r1, [r1, #0x0] + add r0, #0x5a + strb r1, [r0, #0x0] + pop {r4-r7} + bx lr +_02007FFE: + add r1, r0, #0x0 + add r1, #0x5a + ldrb r1, [r1, #0x0] + add r0, #0x5a + sub r1, r1, #0x1 + strb r1, [r0, #0x0] +_0200800A: + pop {r4-r7} + bx lr + // clang-format on +} +#endif + + +THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct2_sub *param1) { + param0[0] = 1; + param0[2] = 0; + param0[1] = param1->unk0; + param0[3] = param1->unk1; + ((u32 *)param0)[4] = param1; + + for (s32 i= 0; i<10;i++) { + param0[i+4]=0; + } +} + +#ifdef NONMATCHING +THUMB_FUNC s32 FUN_02008030(u8 *param0) { + if (*param0 != 0) { + u8 *r3 = param0+2; + struct UnkStruct2_sub *r4 = ((struct UnkStruct2_sub **)param0)[4]; + if (*param0 != 0) { + if (param0[3] == 0) { + (*r3)++; + + while (r4[*r3].unk0 < -1) { + param0[*r3+4]++; + if (r4[*r3].unk1 == param0[*r3+4] || r4[*r3].unk1 == 0) { + param0[*r3+4] = 0; + r3++; + } else { + *r3 = -2 - r4[*r3].unk0; + } + } + + if (r4[*r3].unk0 == -1 || *r3 >= 10) { + param0[0] = 0; + param0[1] = 0; + } else { + param0[1] = r4[*r3].unk0; + param0[3] = r4[*r3].unk1; + } + } else { + param0[3]--; + } + } + + return param0[1]; + + } + + return -1; +} +#else +asm s32 FUN_02008030(u8 *param0) { + // clang-format off + push {r4-r7} + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + beq _020080C6 + add r3, r0, #0x2 + ldr r4, [r0, #0x10] + cmp r1, #0x0 + beq _020080C0 + ldrb r1, [r0, #0x3] + cmp r1, #0x0 + bne _020080BC + ldrb r1, [r3, #0x0] + add r1, r1, #0x1 + strb r1, [r3, #0x0] + ldrb r2, [r3, #0x0] + mov r1, #0x0 + mvn r1, r1 + lsl r5, r2, #0x1 + ldrsb r6, [r4, r5] + cmp r6, r1 + bge _02008098 + mov r1, #0x0 +_0200805C: + add r5, r0, r2 + ldrb r2, [r5, #0x4] + add r2, r2, #0x1 + strb r2, [r5, #0x4] + ldrb r2, [r3, #0x0] + add r5, r0, r2 + lsl r2, r2, #0x1 + add r2, r4, r2 + ldrb r7, [r2, #0x1] + ldrb r6, [r5, #0x4] + cmp r7, r6 + beq _02008078 + cmp r7, #0x0 + bne _0200807E +_02008078: + strb r1, [r5, #0x4] + add r3, r3, #0x1 + b _0200808A +_0200807E: + mov r5, #0x0 + ldrsb r5, [r2, r5] + mov r2, #0x1 + mvn r2, r2 + sub r2, r2, r5 + strb r2, [r3, #0x0] +_0200808A: + ldrb r2, [r3, #0x0] + mov r6, #0x0 + mvn r6, r6 + lsl r5, r2, #0x1 + ldrsb r7, [r4, r5] + cmp r7, r6 + blt _0200805C +_02008098: + ldrsb r5, [r4, r5] + mov r1, #0x0 + mvn r1, r1 + cmp r5, r1 + beq _020080A6 + cmp r2, #0xa + blo _020080AE +_020080A6: + mov r1, #0x0 + strb r1, [r0, #0x1] + strb r1, [r0, #0x0] + b _020080C0 +_020080AE: + strb r5, [r0, #0x1] + ldrb r1, [r3, #0x0] + lsl r1, r1, #0x1 + add r1, r4, r1 + ldrb r1, [r1, #0x1] + strb r1, [r0, #0x3] + b _020080C0 +_020080BC: + sub r1, r1, #0x1 + strb r1, [r0, #0x3] +_020080C0: + ldrb r0, [r0, #0x1] + pop {r4-r7} + bx lr +_020080C6: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r7} + bx lr + // clang-format on +} +#endif + + +THUMB_FUNC void FUN_020080D0(struct UnkStruct2 *param0) { + param0->unk00_7 = 1; + param0->unk00_8 = 1; +} + + +THUMB_FUNC void FUN_020080E0(struct UnkStruct2 *param0) { + param0->unk14 = param0->unk04; + param0->unk78 = param0->unk6C; +} + + +THUMB_FUNC void FUN_0200813C(struct UnkStruct2 *param0) { + param0->unk04 = param0->unk14; + param0->unk6C = param0->unk78; + param0->unk00_7 = 1; + param0->unk00_8 = 1; +} + + +THUMB_FUNC void FUN_020081A8(struct UnkStruct1 *param0, u32 param1, u32 param2) { + param0->unk29C = param1; + param0->unk2A0 = param2; +} + + +THUMB_FUNC void FUN_020081B4(struct UnkStruct1 *param0, u32 param1, u32 param2) { + param0->unk2A4 = param1; + param0->unk2A8 = param2; +} + + +THUMB_FUNC u32 FUN_020081C0(u32 param0) { + return param0+4; +} + +THUMB_FUNC void FUN_020081C4(struct UnkStruct1 *param0) { + if (param0->unk2E1 != 0) { + param0->unk2E1 = 0; + NNS_G2dInitImageProxy(¶m0->unk260); + + param0->unk2B8.H = 0x20; + param0->unk2B8.W = 0x20; + param0->unk2B8.szByte = param0->unk2A0; + param0->unk2B8.pRawData = param0->unk2AC; + + NNS_G2dLoadImage2DMapping(¶m0->unk2B8, param0->unk29C, 0, ¶m0->unk260); + + } + + if (param0->unk2E2 != 0) { + param0->unk2E2 = 0; + NNS_G2dInitImagePaletteProxy(¶m0->unk284); + + param0->unk2D0.szByte = param0->unk2A8; + param0->unk2D0.pRawData = param0->unk2B0; + + NNS_G2dLoadPalette(¶m0->unk2D0, param0->unk2A4, 0, ¶m0->unk284); + + } +} + + +THUMB_FUNC void FUN_0200825C(struct UnkStruct1 *param0, u8 param1) { + param0->unk2E3 = param1; +} + + +THUMB_FUNC BOOL FUN_02008268(struct UnkStruct2 *param0) { + GF_ASSERT(param0); + return param0->unk00_0 != 0; +} + + +THUMB_FUNC void FUN_02008284(struct UnkStruct1 *param0, u32 param1) { + param0->unk2E4 |= param1; +} + + +THUMB_FUNC void FUN_02008290(struct UnkStruct1 *param0, u32 param1) { + param0->unk2E4 &= (param1^~0); +} + + +extern void FUN_020088EC(struct UnkStruct2 *, u8 *); +extern u8 FUN_020088D8(u8); + +THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) { + NNSG2dCharacterData *st58; + int st54; + int r4; + int st14; + u8 *st50; + void *st4c; + u8 st48 = 0; + + for (st54 = 0; st54 < 4; st54++) { + if (param0->unk000[st54].unk00_0 != 0 && param0->unk000[st54].unk00_7 != 0) { + param0->unk000[st54].unk00_7 = 0; + st48 = 1; + st4c = AllocAndReadWholeNarcMemberByIdPair(param0->unk000[st54].unk04.field_00, param0->unk000[st54].unk04.field_02, param0->unk298); + NNS_G2dGetUnpackedCharacterData(st4c, &st58); + param0->unk2B8.pixelFmt = st58->pixelFmt; + param0->unk2B8.mapingType = st58->mapingType; + param0->unk2B8.characterFmt = st58->characterFmt; + + st50 = st58->pRawData; + FUN_02008A74(st50); + FUN_020088EC(¶m0->unk000[st54], st50); + + if (st54 == 3) { + for (st14 = 0; st14 < 0x50; st14++) { + for (r4 = 0; r4 < 0x50; r4++) { + if (r4 < 0x28) { + if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { + param0->unk2AC[st14*0x80+r4+0x50] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x27-r4)]); + } else if (param0->unk000[st54].unk54_9 != 0) { + param0->unk2AC[st14*0x80+r4+0x50] = FUN_020088D8(st50[st14*0x50+(0x27-r4)]); + } else if (param0->unk000[st54].unk54_A != 0) { + param0->unk2AC[st14*0x80+r4+0x50] = st50[(0x4f-st14)*0x50+r4]; + } else if (param0->unk000[st54].unk54_D != 0) { + if (st14%(param0->unk000[st54].unk54_D*2) != 0) { + param0->unk2AC[st14*0x80+r4+0x50] = param0->unk2AC[(st14-1)*0x80+r4+0x50]; + } else if (r4%param0->unk000[st54].unk54_D != 0) { + param0->unk2AC[st14*0x80+r4+0x50] = param0->unk2AC[st14*0x80+r4+0x4f]; + } else { + param0->unk2AC[st14*0x80+r4+0x50] = ((st50[st14*0x50+r4]&0xf) | ((st50[st14*0x50+r4]&0xf)<<4)); + } + } else { + param0->unk2AC[st14*0x80+r4+0x50] = st50[st14*0x50+r4]; + } + } else { + //_02008442 + if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { + param0->unk2AC[st14*0x80+r4+0x2828] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x4f-(r4-0x28))]); + } else if (param0->unk000[st54].unk54_9 != 0) { + param0->unk2AC[st14*0x80+r4+0x2828] = FUN_020088D8(st50[st14*0x50+(0x4f-(r4-0x28))]); + } else if (param0->unk000[st54].unk54_A != 0) { + param0->unk2AC[st14*0x80+r4+0x2828] = st50[(0x4f-st14)*0x50+r4]; + } else if (param0->unk000[st54].unk54_D != 0) { + if (st14%(param0->unk000[st54].unk54_D*2) != 0) { + param0->unk2AC[st14*0x80+r4+0x2828] = param0->unk2AC[(st14-1)*0x80+r4+0x2828]; + } else if (r4%param0->unk000[st54].unk54_D != 0) { + param0->unk2AC[st14*0x80+r4+0x2828] = param0->unk2AC[st14*0x80+(r4-1)+0x2828]; + } else { + param0->unk2AC[st14*0x80+r4+0x2828] = ((st50[st14*0x50+r4]&0xf) | ((st50[st14*0x50+r4]&0xf)<<4)); + } + } else { + param0->unk2AC[st14*0x80+r4+0x2828] = st50[st14*0x50+r4]; + } + } + } + } + + } else { + //_02008554 + for (st14 = 0; st14 < 0x50; st14++) { + for (r4 = 0; r4 < 0x50; r4++) { + if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { + if (r4 < 0x28) { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x27-r4)]); + } else { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x4f-(r4-0x28))]); + } + } else if (param0->unk000[st54].unk54_9 != 0) { + if (r4 < 0x28) { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[st14*0x50+(0x27-r4)]); + } else { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[st14*0x50+(0x4f-(r4-0x28))]); + } + } else if (param0->unk000[st54].unk54_A != 0) { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = st50[(0x4f-st14)*0x50+r4]; + } else if (param0->unk000[st54].unk54_D != 0) { + if (st14%(param0->unk000[st54].unk54_D*2) != 0) { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = param0->unk2AC[(st14-1)*0x80+r4+st54*0x2800]; + } else if (r4%(param0->unk000[st54].unk54_D) != 0) { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = param0->unk2AC[st14*0x80+(r4-1)+st54*0x2800]; + } else { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = ((st50[st14*0x50+r4]&0xf) | ((st50[st14*0x50+r4]&0xf)<<4)); + } + } else { + param0->unk2AC[st14*0x80+r4+st54*0x2800] = st50[st14*0x50+r4]; + } + } + } + + } + + FreeToHeap(st4c); + } + //_020086C2 + } + + param0->unk2E1 = st48; +} + + + +THUMB_FUNC void FUN_020086F4(struct UnkStruct1 *param0) { + NNSG2dPaletteData *st18; + int st14, r7; + u16 *r1; + void *st10; + u8 stc = 0; + + + for (st14 = 0 ; st14 < 4; st14++) { + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk00_8 != 0) { + param0->unk000[st14].unk00_8 = 0; + stc = 1; + st10 = AllocAndReadWholeNarcMemberByIdPair(param0->unk000[st14].unk04.field_00, param0->unk000[st14].unk04.field_04, param0->unk298); + NNS_G2dGetUnpackedPaletteData(st10, &st18); + param0->unk2D0.fmt = st18->fmt; + r1 = st18->pRawData; + for (r7 = 0; r7 < 0x10; r7++) { + param0->unk2B0[st14*0x10+r7] = r1[r7]; + param0->unk2B4[st14*0x10+r7] = r1[r7]; + } + FreeToHeap(st10); + + if (param0->unk000[st14].unk6C.unk0_0 != 0) { + st10 = AllocAndReadWholeNarcMemberByIdPair(NARC_POKETOOL_POKEGRA_OTHERPOKE, NARC_otherpoke_narc_0212_NCLR, param0->unk298); + NNS_G2dGetUnpackedPaletteData(st10, &st18); + r1 = st18->pRawData; + for (r7 = 0; r7 < 0x10; r7++) { + param0->unk2B0[(param0->unk000[st14].unk6C.unk0_0+3)*0x10 + r7] = r1[r7]; + param0->unk2B4[(param0->unk000[st14].unk6C.unk0_0+3)*0x10 + r7] = r1[r7]; + } + FreeToHeap(st10); + } + } + //_020087E0 + + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk54_C != 0) { + if (param0->unk000[st14].unk4A == 0) { + stc = 1; + param0->unk000[st14].unk4A = param0->unk000[st14].unk4B; + BlendPalette(param0->unk2B4+st14*0x10, param0->unk2B0+st14*0x10, 0x10, param0->unk000[st14].unk48, (u16)param0->unk000[st14].unk4C); + + if (param0->unk000[st14].unk6C.unk0_0 != 0) { + BlendPalette(param0->unk2B4+(param0->unk000[st14].unk6C.unk0_0+3)*0x10, param0->unk2B0+(param0->unk000[st14].unk6C.unk0_0+3)*0x10, 0x10, param0->unk000[st14].unk48, (u16)param0->unk000[st14].unk4C); + } + + if (param0->unk000[st14].unk48 == param0->unk000[st14].unk49) { + param0->unk000[st14].unk54_C = 0; + } else if (param0->unk000[st14].unk48 > param0->unk000[st14].unk49) { + param0->unk000[st14].unk48--; + } else { + param0->unk000[st14].unk48++; + } + } else { + param0->unk000[st14].unk4A--; + } + } + } + + param0->unk2E2 = stc; + +} + + + +THUMB_FUNC u8 FUN_020088D8(u8 param0) { + return ((u8)((param0&0xf0)>>4)) | ((u8)(param0<<4)); +} + +extern void FUN_02008904(u8 *param0, u32 param1, u32 param2); + +THUMB_FUNC void FUN_020088EC(struct UnkStruct2 *param0, u8 *param1) { + if (param0->unk04.field_06 != 0) { + FUN_02008904(param1, param0->unk04.field_0C,1); + } +} + + +THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { + struct UnkStruct4 *st10; + s32 i; + u32 r2; + u8 r0; + u8 r4; + u8 r1; + u32 st0 = param1; + + for (i = 0; i < 4; i++) { + st10 = UNK_02105AE8[i]; + r1 = 0; + while (st10[r1].unk0 != 0xff) { + r0 = st10[r1].unk0+((param1&0xf) - 8); + r4 = st10[r1].unk1+(((param1&0xf0)>>4)-8); + r2 = r0/2 + r4*0x50; + if ((r0&1) != 0) { + if ((param0[r2]&0xf0) >= 0x10 && (param0[r2]&0xf0) <= 0x30) { + param0[r2] += 0x50; + } + } else { + if ((param0[r2]&0xf) >= 1 && (param0[r2]&0xf) <= 3) { + param0[r2]+= 5; + } + } + + r1++; + } + param1 >>= 8; + } + + param1 = st0; + + if (param2 != 0) { + for (i = 0; i < 4; i++) { + st10 = UNK_02105AE8[i]; + r1 = 0; + while (st10[r1].unk0 != 0xff) { + r0 = st10[r1].unk0-14+((param1&0xf)-8)+0x50; + r4 = st10[r1].unk1+(((param1&0xf0)>>4)-8); + r2 = r0/2 + r4*0x50; + if ((r0 &1) != 0) { + if ((param0[r2]&0xf0) >= 0x10 && (param0[r2]&0xf0) <= 0x30) { + param0[r2] += 0x50; + } + } else { + if ((param0[r2]&0xf) >= 1 && (param0[r2]&0xf) <= 3) { + param0[r2]+= 5; + } + } + r1++; + } + param1 >>= 8; + } + } +} + + + +THUMB_FUNC u16 FUN_02008A54(u32 *param0) { + *param0 = (*param0)*0x41C64E6D+0x6073; + + return *param0>>16; +} + + +THUMB_FUNC void FUN_02008A74(u8 *param0) { + u32 st0 = ((u16 *)param0)[0xc7f]; + for (s32 r4 = 0xc7f; r4 > -1; r4--) { + ((u16 *)param0)[r4] ^= st0; + FUN_02008A54(&st0); + } +} From 43b7ac4211e70ac0f2296ed4a230ec734c41b2e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 28 Aug 2021 23:31:33 +0200 Subject: [PATCH 06/19] fix warnings --- arm9/src/unk_02006D98.c | 1806 ++++++++++++++++++++++++++------------- include/unk_02006D98.h | 165 ++++ 2 files changed, 1382 insertions(+), 589 deletions(-) create mode 100644 include/unk_02006D98.h diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 154e32849..78e3d1579 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -1,218 +1,662 @@ #include "global.h" +#include "unk_02006D98.h" #include "MI_memory.h" #include "NNS_g2d.h" #include "filesystem.h" #include "heap.h" -#include "poketool/pokegra/otherpoke.naix" -#include "registers.h" #include "mod63_021DB450.h" #include "palette.h" - -struct UnkStruct4{ - u8 unk0; - u8 unk1; -}; - - +#include "poketool/pokegra/otherpoke.naix" +#include "registers.h" const u8 UNK_020ECCE0[] = { - 0xFF, 0xFF, 0x1B, 0x0F, 0x1C, 0x0F, 0x1D, 0x0F, 0x1E, 0x0F, 0x1A, 0x10, 0x1B, 0x10, 0x1C, 0x10, 0x1D, 0x10, - 0x1E, 0x10, 0x1F, 0x10, 0x19, 0x11, 0x1A, 0x11, 0x1B, 0x11, 0x1C, 0x11, 0x1D, 0x11, 0x1E, 0x11, - 0x1F, 0x11, 0x20, 0x11, 0x19, 0x12, 0x1A, 0x12, 0x1B, 0x12, 0x1C, 0x12, 0x1D, 0x12, 0x1E, 0x12, - 0x1F, 0x12, 0x20, 0x12, 0x19, 0x13, 0x1A, 0x13, 0x1B, 0x13, 0x1C, 0x13, 0x1D, 0x13, 0x1E, 0x13, - 0x1F, 0x13, 0x20, 0x13, 0x19, 0x14, 0x1A, 0x14, 0x1B, 0x14, 0x1C, 0x14, 0x1D, 0x14, 0x1E, 0x14, - 0x1F, 0x14, 0x20, 0x14, 0x1A, 0x15, 0x1B, 0x15, 0x1C, 0x15, 0x1D, 0x15, 0x1E, 0x15, 0x1F, 0x15, - 0x1B, 0x16, 0x1C, 0x16, 0x1D, 0x16, 0x1E, 0x16, 0xFF, 0xFF, + 0xFF, + 0xFF, + 0x1B, + 0x0F, + 0x1C, + 0x0F, + 0x1D, + 0x0F, + 0x1E, + 0x0F, + 0x1A, + 0x10, + 0x1B, + 0x10, + 0x1C, + 0x10, + 0x1D, + 0x10, + 0x1E, + 0x10, + 0x1F, + 0x10, + 0x19, + 0x11, + 0x1A, + 0x11, + 0x1B, + 0x11, + 0x1C, + 0x11, + 0x1D, + 0x11, + 0x1E, + 0x11, + 0x1F, + 0x11, + 0x20, + 0x11, + 0x19, + 0x12, + 0x1A, + 0x12, + 0x1B, + 0x12, + 0x1C, + 0x12, + 0x1D, + 0x12, + 0x1E, + 0x12, + 0x1F, + 0x12, + 0x20, + 0x12, + 0x19, + 0x13, + 0x1A, + 0x13, + 0x1B, + 0x13, + 0x1C, + 0x13, + 0x1D, + 0x13, + 0x1E, + 0x13, + 0x1F, + 0x13, + 0x20, + 0x13, + 0x19, + 0x14, + 0x1A, + 0x14, + 0x1B, + 0x14, + 0x1C, + 0x14, + 0x1D, + 0x14, + 0x1E, + 0x14, + 0x1F, + 0x14, + 0x20, + 0x14, + 0x1A, + 0x15, + 0x1B, + 0x15, + 0x1C, + 0x15, + 0x1D, + 0x15, + 0x1E, + 0x15, + 0x1F, + 0x15, + 0x1B, + 0x16, + 0x1C, + 0x16, + 0x1D, + 0x16, + 0x1E, + 0x16, + 0xFF, + 0xFF, }; - - - const u8 UNK_020ECC10[] = { - 0x1E, 0x21, 0x1F, 0x21, 0x20, 0x21, 0x1D, 0x22, 0x1E, 0x22, 0x1F, 0x22, 0x20, 0x22, 0x21, 0x22, - 0x1C, 0x23, 0x1D, 0x23, 0x1E, 0x23, 0x1F, 0x23, 0x20, 0x23, 0x21, 0x23, 0x22, 0x23, 0x1C, 0x24, - 0x1D, 0x24, 0x1E, 0x24, 0x1F, 0x24, 0x20, 0x24, 0x21, 0x24, 0x22, 0x24, 0x1C, 0x25, 0x1D, 0x25, - 0x1E, 0x25, 0x1F, 0x25, 0x20, 0x25, 0x21, 0x25, 0x22, 0x25, 0x1C, 0x26, 0x1D, 0x26, 0x1E, 0x26, - 0x1F, 0x26, 0x20, 0x26, 0x21, 0x26, 0x22, 0x26, 0x1C, 0x27, 0x1D, 0x27, 0x1E, 0x27, 0x1F, 0x27, - 0x20, 0x27, 0x21, 0x27, 0x22, 0x27, 0x1D, 0x28, 0x1E, 0x28, 0x1F, 0x28, 0x20, 0x28, 0x21, 0x28, - 0x1E, 0x29, 0x1F, 0x29, 0x20, 0x29, 0xFF, 0xFF, + 0x1E, + 0x21, + 0x1F, + 0x21, + 0x20, + 0x21, + 0x1D, + 0x22, + 0x1E, + 0x22, + 0x1F, + 0x22, + 0x20, + 0x22, + 0x21, + 0x22, + 0x1C, + 0x23, + 0x1D, + 0x23, + 0x1E, + 0x23, + 0x1F, + 0x23, + 0x20, + 0x23, + 0x21, + 0x23, + 0x22, + 0x23, + 0x1C, + 0x24, + 0x1D, + 0x24, + 0x1E, + 0x24, + 0x1F, + 0x24, + 0x20, + 0x24, + 0x21, + 0x24, + 0x22, + 0x24, + 0x1C, + 0x25, + 0x1D, + 0x25, + 0x1E, + 0x25, + 0x1F, + 0x25, + 0x20, + 0x25, + 0x21, + 0x25, + 0x22, + 0x25, + 0x1C, + 0x26, + 0x1D, + 0x26, + 0x1E, + 0x26, + 0x1F, + 0x26, + 0x20, + 0x26, + 0x21, + 0x26, + 0x22, + 0x26, + 0x1C, + 0x27, + 0x1D, + 0x27, + 0x1E, + 0x27, + 0x1F, + 0x27, + 0x20, + 0x27, + 0x21, + 0x27, + 0x22, + 0x27, + 0x1D, + 0x28, + 0x1E, + 0x28, + 0x1F, + 0x28, + 0x20, + 0x28, + 0x21, + 0x28, + 0x1E, + 0x29, + 0x1F, + 0x29, + 0x20, + 0x29, + 0xFF, + 0xFF, }; - const u8 UNK_020ECC78[] = { - 0x33, 0x11, 0x34, 0x11, 0x35, 0x11, 0x36, 0x11, 0x32, 0x12, 0x33, 0x12, 0x34, 0x12, 0x35, 0x12, - 0x36, 0x12, 0x37, 0x12, 0x31, 0x13, 0x32, 0x13, 0x33, 0x13, 0x34, 0x13, 0x35, 0x13, 0x36, 0x13, - 0x37, 0x13, 0x38, 0x13, 0x31, 0x14, 0x32, 0x14, 0x33, 0x14, 0x34, 0x14, 0x35, 0x14, 0x36, 0x14, - 0x37, 0x14, 0x38, 0x14, 0x31, 0x15, 0x32, 0x15, 0x33, 0x15, 0x34, 0x15, 0x35, 0x15, 0x36, 0x15, - 0x37, 0x15, 0x38, 0x15, 0x31, 0x16, 0x32, 0x16, 0x33, 0x16, 0x34, 0x16, 0x35, 0x16, 0x36, 0x16, - 0x37, 0x16, 0x38, 0x16, 0x32, 0x17, 0x33, 0x17, 0x34, 0x17, 0x35, 0x17, 0x36, 0x17, 0x37, 0x17, - 0x33, 0x18, 0x34, 0x18, 0x35, 0x18, 0x36, 0x18, + 0x33, + 0x11, + 0x34, + 0x11, + 0x35, + 0x11, + 0x36, + 0x11, + 0x32, + 0x12, + 0x33, + 0x12, + 0x34, + 0x12, + 0x35, + 0x12, + 0x36, + 0x12, + 0x37, + 0x12, + 0x31, + 0x13, + 0x32, + 0x13, + 0x33, + 0x13, + 0x34, + 0x13, + 0x35, + 0x13, + 0x36, + 0x13, + 0x37, + 0x13, + 0x38, + 0x13, + 0x31, + 0x14, + 0x32, + 0x14, + 0x33, + 0x14, + 0x34, + 0x14, + 0x35, + 0x14, + 0x36, + 0x14, + 0x37, + 0x14, + 0x38, + 0x14, + 0x31, + 0x15, + 0x32, + 0x15, + 0x33, + 0x15, + 0x34, + 0x15, + 0x35, + 0x15, + 0x36, + 0x15, + 0x37, + 0x15, + 0x38, + 0x15, + 0x31, + 0x16, + 0x32, + 0x16, + 0x33, + 0x16, + 0x34, + 0x16, + 0x35, + 0x16, + 0x36, + 0x16, + 0x37, + 0x16, + 0x38, + 0x16, + 0x32, + 0x17, + 0x33, + 0x17, + 0x34, + 0x17, + 0x35, + 0x17, + 0x36, + 0x17, + 0x37, + 0x17, + 0x33, + 0x18, + 0x34, + 0x18, + 0x35, + 0x18, + 0x36, + 0x18, }; -const u8 UNK_020ECDCC[] = { - 0x2B, 0x21, 0x2C, 0x21, 0x2D, 0x21, 0x29, 0x22, 0x2A, 0x22, 0x2B, 0x22, 0x2C, 0x22, 0x2D, 0x22, - 0x2E, 0x22, 0x2F, 0x22, 0x28, 0x23, 0x29, 0x23, 0x2A, 0x23, 0x2B, 0x23, 0x2C, 0x23, 0x2D, 0x23, - 0x2E, 0x23, 0x2F, 0x23, 0x30, 0x23, 0x28, 0x24, 0x29, 0x24, 0x2A, 0x24, 0x2B, 0x24, 0x2C, 0x24, - 0x2D, 0x24, 0x2E, 0x24, 0x2F, 0x24, 0x30, 0x24, 0x28, 0x25, 0x29, 0x25, 0x2A, 0x25, 0x2B, 0x25, - 0x2C, 0x25, 0x2D, 0x25, 0x2E, 0x25, 0x2F, 0x25, 0x30, 0x25, 0x28, 0x26, 0x29, 0x26, 0x2A, 0x26, - 0x2B, 0x26, 0x2C, 0x26, 0x2D, 0x26, 0x2E, 0x26, 0x2F, 0x26, 0x30, 0x26, 0x28, 0x27, 0x29, 0x27, - 0x2A, 0x27, 0x2B, 0x27, 0x2C, 0x27, 0x2D, 0x27, 0x2E, 0x27, 0x2F, 0x27, 0x30, 0x27, 0x28, 0x28, - 0x29, 0x28, 0x2A, 0x28, 0x2B, 0x28, 0x2C, 0x28, 0x2D, 0x28, 0x2E, 0x28, 0x2F, 0x28, 0x30, 0x28, - 0x29, 0x29, 0x2A, 0x29, 0x2B, 0x29, 0x2C, 0x29, 0x2D, 0x29, 0x2E, 0x29, 0x2F, 0x29, 0x2B, 0x2A, - 0x2C, 0x2A, 0x2D, 0x2A, 0xFF, 0xFF -}; - - - +const u8 UNK_020ECDCC[] = { 0x2B, + 0x21, + 0x2C, + 0x21, + 0x2D, + 0x21, + 0x29, + 0x22, + 0x2A, + 0x22, + 0x2B, + 0x22, + 0x2C, + 0x22, + 0x2D, + 0x22, + 0x2E, + 0x22, + 0x2F, + 0x22, + 0x28, + 0x23, + 0x29, + 0x23, + 0x2A, + 0x23, + 0x2B, + 0x23, + 0x2C, + 0x23, + 0x2D, + 0x23, + 0x2E, + 0x23, + 0x2F, + 0x23, + 0x30, + 0x23, + 0x28, + 0x24, + 0x29, + 0x24, + 0x2A, + 0x24, + 0x2B, + 0x24, + 0x2C, + 0x24, + 0x2D, + 0x24, + 0x2E, + 0x24, + 0x2F, + 0x24, + 0x30, + 0x24, + 0x28, + 0x25, + 0x29, + 0x25, + 0x2A, + 0x25, + 0x2B, + 0x25, + 0x2C, + 0x25, + 0x2D, + 0x25, + 0x2E, + 0x25, + 0x2F, + 0x25, + 0x30, + 0x25, + 0x28, + 0x26, + 0x29, + 0x26, + 0x2A, + 0x26, + 0x2B, + 0x26, + 0x2C, + 0x26, + 0x2D, + 0x26, + 0x2E, + 0x26, + 0x2F, + 0x26, + 0x30, + 0x26, + 0x28, + 0x27, + 0x29, + 0x27, + 0x2A, + 0x27, + 0x2B, + 0x27, + 0x2C, + 0x27, + 0x2D, + 0x27, + 0x2E, + 0x27, + 0x2F, + 0x27, + 0x30, + 0x27, + 0x28, + 0x28, + 0x29, + 0x28, + 0x2A, + 0x28, + 0x2B, + 0x28, + 0x2C, + 0x28, + 0x2D, + 0x28, + 0x2E, + 0x28, + 0x2F, + 0x28, + 0x30, + 0x28, + 0x29, + 0x29, + 0x2A, + 0x29, + 0x2B, + 0x29, + 0x2C, + 0x29, + 0x2D, + 0x29, + 0x2E, + 0x29, + 0x2F, + 0x29, + 0x2B, + 0x2A, + 0x2C, + 0x2A, + 0x2D, + 0x2A, + 0xFF, + 0xFF }; const int UNK_020ECBD0[4][4] = { - {160, 160, 224, 176}, {160, 160, 224, 176}, {160, 176, 224, 192}, {160, 192, 224, 208} + { 160, 160, 224, 176 }, { 160, 160, 224, 176 }, { 160, 176, 224, 192 }, { 160, 192, 224, 208 } }; - - -// static const int UNK_020ECD4C[4][2][4] = { +// const int UNK_020ECD4C[4][2][4] = { // { // {0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50} // }, { - + // {0, 0x50, 0x50, 0xA0}, {0x50, 0x50, 0xA0, 0xA0} - + // }, { - // {0, 0xA0, 0x50, 0xF0}, {0x50, 0xA0, 0xA0, 0xF0} - + // }, { - + // {0xA0, 0, 0xF0, 0x50}, {0xA0, 0x50, 0xF0, 0xA0} - + // } // }; - const u8 UNK_020ECD4C[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, - 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0xA0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0xF0, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0xF0, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xF0, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, + 0x50, + 0x00, + 0x00, + 0x00, + 0xF0, + 0x00, + 0x00, + 0x00, + 0xA0, + 0x00, + 0x00, + 0x00, }; - - struct UnkStruct4 *UNK_02105AE8[] = { // ugly hack to fix extra padding added by the compiler - (struct UnkStruct4 *)(UNK_020ECCE0+2), + (struct UnkStruct4 *)(UNK_020ECCE0 + 2), (struct UnkStruct4 *)UNK_020ECC78, (struct UnkStruct4 *)UNK_020ECC10, (struct UnkStruct4 *)UNK_020ECDCC, }; - -struct UnkStruct2_sub { - s8 unk0; - u8 unk1; -}; -struct UnkStruct2_sub2 { - u16 unk0_0:2; - u16 unk0_2:1; - u16 unk0_3:1; - u16 unk0_4:1; - u16 unk0_5:2; - s8 unk2; - u8 unk3; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unka; -}; - -struct UnkStruct2 { - u32 unk00_0:1; - u32 unk00_1:6; - u32 unk00_7:1; - u32 unk00_8:1; - struct UnkStruct63_021DB49C unk04; - struct UnkStruct63_021DB49C unk14; - s16 unk24; - s16 unk26; - u32 unk28; - s16 unk2C; - s16 unk2E; - u32 unk30; - s16 unk34; - s16 unk36; - u16 unk38; - u16 unk3A; - u16 unk3C; - u16 unk3E; - s16 unk40; - s16 unk42; - u8 unk44; - u8 unk45; - u8 unk46; - u8 unk47; - u8 unk48; - u8 unk49; - u8 unk4A; - u8 unk4B; - u32 unk4C; - u32 unk50_0:5; - u32 unk50_5:5; - u32 unk50_a:5; - u32 unk50_f:5; - u32 unk50_14:5; - u32 unk50_19:5; - u32 unk50_1E:2; - u32 unk54_0:1; - u32 unk54_1:1; - u32 unk54_2:5; - u32 unk54_7:2; - u32 unk54_9:1; - u32 unk54_A:1; - u32 unk54_B:1; - u32 unk54_C:1; - u32 unk54_D:4; - u8 unk58; - u8 unk59; - u8 unk5A; - u8 unk5B; - u8 unk5C[10]; - void (*unk68)(struct UnkStruct2 *, void *); - struct UnkStruct2_sub2 unk6C; - struct UnkStruct2_sub2 unk78; - struct UnkStruct2_sub unk84[10]; -}; - - -struct UnkStruct1 -{ - struct UnkStruct2 unk000[4]; - NNSG2dImageProxy unk260; - NNSG2dImagePaletteProxy unk284; - u32 unk298; - u32 unk29C; - u32 unk2A0; - u32 unk2A4; - u32 unk2A8; - u8 *unk2AC; - u16 *unk2B0; - u16 *unk2B4; - NNSG2dCharacterData unk2B8; - NNSG2dPaletteData unk2D0; - u8 unk2E0; - u8 unk2E1; - u8 unk2E2; - u8 unk2E3; - u32 unk2E4; -}; - extern void NNS_G2dSetupSoftwareSpriteCamera(void); -extern void FUN_02008A74(u8 *); +extern void NNS_G3dGeFlushBuffer(); +extern void NNS_G2dDrawSpriteFast(s16 param0, + s16 param1, + int param2, + int param3, + int param4, + int param5, + int param6, + int param7, + int param8); THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) { @@ -269,22 +713,13 @@ THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) return ptr; } - -extern void FUN_020082A8(struct UnkStruct1 *); -extern void FUN_020086F4(struct UnkStruct1 *); -extern void NNS_G3dGeFlushBuffer(); -extern void FUN_02007F48(struct UnkStruct2 *); - - - -extern void NNS_G2dDrawSpriteFast(s16 param0, s16 param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8); - #ifdef NONMATCHING // mostly matching, only 2 register writes messed up -THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { - s32 arg3; - s32 arg4; +THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) +{ + s32 arg3; + s32 arg4; FUN_020082A8(param0); FUN_020086F4(param0); @@ -294,169 +729,190 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) { reg_G3_MTX_PUSH = 0; // this is all shuffled however I try - reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk260.attr.fmt << 26) | (1 << 30) | (param0->unk260.attr.sizeS << 20) | (param0->unk260.attr.sizeT << 23) | (param0->unk260.attr.plttUse << 29); + reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk260.attr.fmt << 26) | (1 << 30) | + (param0->unk260.attr.sizeS << 20) | (param0->unk260.attr.sizeT << 23) | + (param0->unk260.attr.plttUse << 29); - for (int st18 = 0; st18 < 4; st18++) { - if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || param0->unk000[st18].unk54_B != 0) { + for (int st18 = 0; st18 < 4; st18++) + { + if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || + param0->unk000[st18].unk54_B != 0) + { continue; } - if (param0->unk000[st18].unk68 != NULL) { + if (param0->unk000[st18].unk68 != NULL) + { param0->unk000[st18].unk68(¶m0->unk000[st18], ¶m0->unk000[st18].unk24); } NNS_G3dGeFlushBuffer(); - if (param0->unk2E3 != 1) { + if (param0->unk2E3 != 1) + { reg_G3_MTX_IDENTITY = 0; } FUN_02007F48(¶m0->unk000[st18]); - + u32 shift; - if (param0->unk260.attr.fmt == 2) { + if (param0->unk260.attr.fmt == 2) + { shift = 1; - } else { + } + else + { shift = 0; } - reg_G3_TEXPLTT_BASE = (param0->unk2A4 + st18*0x20)>>(4-shift); + reg_G3_TEXPLTT_BASE = (param0->unk2A4 + st18 * 0x20) >> (4 - shift); - u32 r1 = param0->unk000[st18].unk28<<0xc; - u32 r0 = (param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc; - u32 r3 = (param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc; + u32 r1 = param0->unk000[st18].unk28 << 0xc; + u32 r0 = (param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc; + u32 r3 = (param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc; reg_G3_MTX_TRANS = r3; reg_G3_MTX_TRANS = r0; reg_G3_MTX_TRANS = r1; + s32 idx = ((s32)param0->unk000[st18].unk38) >> 4; + G3_RotX(FX_SinCosTable_[idx * 2], FX_SinCosTable_[idx * 2 + 1]); - s32 idx = ((s32)param0->unk000[st18].unk38)>>4; - G3_RotX(FX_SinCosTable_[idx*2], FX_SinCosTable_[idx*2+1]); + s32 idy = ((s32)param0->unk000[st18].unk3A) >> 4; + G3_RotY(FX_SinCosTable_[idy * 2], FX_SinCosTable_[idy * 2 + 1]); - s32 idy = ((s32)param0->unk000[st18].unk3A)>>4; - G3_RotY(FX_SinCosTable_[idy*2], FX_SinCosTable_[idy*2+1]); + s32 idz = ((s32)param0->unk000[st18].unk3C) >> 4; + G3_RotZ(FX_SinCosTable_[idz * 2], FX_SinCosTable_[idz * 2 + 1]); - s32 idz = ((s32)param0->unk000[st18].unk3C)>>4; - G3_RotZ(FX_SinCosTable_[idz*2], FX_SinCosTable_[idz*2+1]); - - - r1 = -(param0->unk000[st18].unk28<<0xc); - r0 = -((param0->unk000[st18].unk26 + param0->unk000[st18].unk42)<<0xc); - r3 = -((param0->unk000[st18].unk24 + param0->unk000[st18].unk40)<<0xc); + r1 = -(param0->unk000[st18].unk28 << 0xc); + r0 = -((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc); + r3 = -((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc); reg_G3_MTX_TRANS = r3; reg_G3_MTX_TRANS = r0; reg_G3_MTX_TRANS = r1; reg_G3_DIF_AMB = - ((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5<<5) | (param0->unk000[st18].unk50_a<<10))) | - (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14<<5) | (param0->unk000[st18].unk50_19<<10)))<<16) | + ((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5 << 5) | + (param0->unk000[st18].unk50_a << 10))) | + (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14 << 5) | + (param0->unk000[st18].unk50_19 << 10))) + << 16) | 0x8000; - reg_G3_SPE_EMI = 0x4210; - { // shuffled there as well u32 r1 = param0->unk000[st18].unk00_1; u32 r0 = param0->unk000[st18].unk54_2; - reg_G3_POLYGON_ATTR = 0xc0 | (r1<<24) | (r0<<16); + reg_G3_POLYGON_ATTR = 0xc0 | (r1 << 24) | (r0 << 16); } - if (param0->unk000[st18].unk54_1 != 0) { - u32 r6 = param0->unk000[st18].unk44 + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0]; + if (param0->unk000[st18].unk54_1 != 0) + { + u32 r6 = param0->unk000[st18].unk44 + + (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0]; u32 r12 = param0->unk000[st18].unk46; - u32 r1 = param0->unk000[st18].unk45 + (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1]; + u32 r1 = param0->unk000[st18].unk45 + + (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1]; u32 r7 = param0->unk000[st18].unk47; u32 r0 = r12 + r6; - - NNS_G2dDrawSpriteFast( - param0->unk000[st18].unk24-40 + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C, - param0->unk000[st18].unk26-40 + param0->unk000[st18].unk45 + param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, + NNS_G2dDrawSpriteFast(param0->unk000[st18].unk24 - 40 + param0->unk000[st18].unk44 + + param0->unk000[st18].unk2C, + param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + + param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, param0->unk000[st18].unk28 + param0->unk000[st18].unk30, r12, r7, r6, r1, r0, - r7 + r1 - ); - - } else { - arg3 = (param0->unk000[st18].unk34*80)>>8; - arg4 = (param0->unk000[st18].unk36*80)>>8; + r7 + r1); + } + else + { + arg3 = (param0->unk000[st18].unk34 * 80) >> 8; + arg4 = (param0->unk000[st18].unk36 * 80) >> 8; NNS_G2dDrawSpriteFast( - param0->unk000[st18].unk24-(arg3/2)+param0->unk000[st18].unk2C, - param0->unk000[st18].unk26-(arg4/2)+ param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, + param0->unk000[st18].unk24 - (arg3 / 2) + param0->unk000[st18].unk2C, + param0->unk000[st18].unk26 - (arg4 / 2) + param0->unk000[st18].unk2E - + param0->unk000[st18].unk6C.unk2, param0->unk000[st18].unk28 + param0->unk000[st18].unk30, arg3, arg4, - (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0], - (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1], - (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][2], - (*((int(*)[4][2][4])&UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][3] - ); + (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0], + (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1], + (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][2], + (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][3]); } - - if (param0->unk000[st18].unk6C.unk0_0 == 0 || param0->unk000[st18].unk6C.unk0_5 == 0 || param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { + if (param0->unk000[st18].unk6C.unk0_0 == 0 || param0->unk000[st18].unk6C.unk0_5 == 0 || + param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) + { continue; } - if (param0->unk2E3 != 1) { + if (param0->unk2E3 != 1) + { reg_G3_MTX_IDENTITY = 0; } u32 shift2; - if (param0->unk260.attr.fmt == 2) { + if (param0->unk260.attr.fmt == 2) + { shift2 = 1; - } else { + } + else + { shift2 = 0; } - reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C.unk0_0+3)<<5))>>(4-shift2); + reg_G3_TEXPLTT_BASE = + (param0->unk2A4 + ((param0->unk000[st18].unk6C.unk0_0 + 3) << 5)) >> (4 - shift2); - - - if (param0->unk000[st18].unk6C.unk0_4 != 0) { - arg3 = (param0->unk000[st18].unk34*64)>>8; - arg4 = (param0->unk000[st18].unk36*16)>>8; - } else { + if (param0->unk000[st18].unk6C.unk0_4 != 0) + { + arg3 = (param0->unk000[st18].unk34 * 64) >> 8; + arg4 = (param0->unk000[st18].unk36 * 16) >> 8; + } + else + { arg3 = 64; arg4 = 16; } - if (param0->unk000[st18].unk6C.unk0_2 != 0) { - param0->unk000[st18].unk6C.unk4 = param0->unk000[st18].unk24+ param0->unk000[st18].unk2C + param0->unk000[st18].unk6C.unk8; + if (param0->unk000[st18].unk6C.unk0_2 != 0) + { + param0->unk000[st18].unk6C.unk4 = param0->unk000[st18].unk24 + + param0->unk000[st18].unk2C + + param0->unk000[st18].unk6C.unk8; } - if (param0->unk000[st18].unk6C.unk0_3 != 0) { - param0->unk000[st18].unk6C.unk6 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk6C.unka; + if (param0->unk000[st18].unk6C.unk0_3 != 0) + { + param0->unk000[st18].unk6C.unk6 = param0->unk000[st18].unk26 + + param0->unk000[st18].unk2E + + param0->unk000[st18].unk6C.unka; } - - NNS_G2dDrawSpriteFast( - param0->unk000[st18].unk6C.unk4 - (arg3/2), - param0->unk000[st18].unk6C.unk4 - (arg4/2), + NNS_G2dDrawSpriteFast(param0->unk000[st18].unk6C.unk4 - (arg3 / 2), + param0->unk000[st18].unk6C.unk4 - (arg4 / 2), 0xFFFFFC18, arg3, arg4, UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][0], UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][1], UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][2], - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3] - ); - + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3]); } - reg_G3_MTX_POP = 1; } #else -asm void FUN_02006ED4(struct UnkStruct1 *param0) { +asm void FUN_02006ED4(struct UnkStruct1 *param0) +{ // clang-format off push {r3-r7, lr} sub sp, #0x20 @@ -965,50 +1421,60 @@ _020072D6: } #endif - - -THUMB_FUNC void FUN_020072E8(struct UnkStruct1 *param0) { +THUMB_FUNC void FUN_020072E8(struct UnkStruct1 *param0) +{ FreeToHeap(param0->unk2AC); FreeToHeap(param0->unk2B0); FreeToHeap(param0->unk2B4); FreeToHeap(param0); } - -THUMB_FUNC void FUN_02007314(struct UnkStruct2 *param0) { +THUMB_FUNC void FUN_02007314(struct UnkStruct2 *param0) +{ param0->unk59 = 0; - for (s32 i = 0; i < 10; i++) { + for (s32 i = 0; i < 10; i++) + { param0->unk5C[i] = 0; } - if (param0->unk84[param0->unk59].unk0 == -1) { + if (param0->unk84[param0->unk59].unk0 == -1) + { param0->unk5B = 0; return; } param0->unk58 = 1; - param0->unk5B = param0->unk84[param0->unk59].unk0; + param0->unk5B = (u8)param0->unk84[param0->unk59].unk0; param0->unk5A = param0->unk84[param0->unk59].unk1; - } - -THUMB_FUNC void FUN_0200737C(struct UnkStruct2 *param0, struct UnkStruct2_sub *param1) { - MI_CpuCopy8(param1, param0->unk84, sizeof(struct UnkStruct2_sub)*10); +THUMB_FUNC void FUN_0200737C(struct UnkStruct2 *param0, struct UnkStruct2_sub *param1) +{ + MI_CpuCopy8(param1, param0->unk84, sizeof(struct UnkStruct2_sub) * 10); } -THUMB_FUNC BOOL FUN_02007390(struct UnkStruct2 *param0) { - if (param0->unk58 != 0) { +THUMB_FUNC BOOL FUN_02007390(struct UnkStruct2 *param0) +{ + if (param0->unk58 != 0) + { return TRUE; } return FALSE; } -extern u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, s32 param6, u32 param7, u32 param8); - -THUMB_FUNC u32 FUN_020073A0(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7) { +THUMB_FUNC struct UnkStruct2 *FUN_020073A0(struct UnkStruct1 *param0, + struct UnkStruct63_021DB49C *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + const void *param6, + void (*param7)(struct UnkStruct2 *, void *)) +{ s32 i; - for (i = 0; i < 4; i++) { - if (param0->unk000[i].unk00_0 == 0) { + for (i = 0; i < 4; i++) + { + if (param0->unk000[i].unk00_0 == 0) + { break; } } @@ -1017,8 +1483,16 @@ THUMB_FUNC u32 FUN_020073A0(struct UnkStruct1 *param0, struct UnkStruct63_021DB4 return FUN_020073E8(param0, param1, param2, param3, param4, param5, i, param6, param7); } - -THUMB_FUNC u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, s32 param6, u32 param7, u32 param8) { +THUMB_FUNC struct UnkStruct2 *FUN_020073E8(struct UnkStruct1 *param0, + struct UnkStruct63_021DB49C *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6, + const void *param7, + void (*param8)(struct UnkStruct2 *, void *)) +{ GF_ASSERT(param0->unk000[param6].unk00_0 == 0); MIi_CpuClearFast(0, ¶m0->unk000[param6], sizeof(struct UnkStruct2)); @@ -1048,42 +1522,45 @@ THUMB_FUNC u32 FUN_020073E8(struct UnkStruct1 *param0, struct UnkStruct63_021DB param0->unk000[param6].unk6C.unk0_3 = 1; param0->unk000[param6].unk6C.unk0_4 = 1; - if (param7 != 0) { + if (param7 != NULL) + { MI_CpuCopy8(param7, param0->unk000[param6].unk84, 0x14); } return ¶m0->unk000[param6]; } - -THUMB_FUNC void FUN_02007534(struct UnkStruct2 *param0) { +THUMB_FUNC void FUN_02007534(struct UnkStruct2 *param0) +{ param0->unk00_0 = 0; } - -THUMB_FUNC void FUN_02007540(struct UnkStruct1 *param0) { - for (s32 i = 0; i < 4; i++) { +THUMB_FUNC void FUN_02007540(struct UnkStruct1 *param0) +{ + for (s32 i = 0; i < 4; i++) + { FUN_02007534(¶m0->unk000[i]); } } - -THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) { - switch (param1) { +THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) +{ + switch (param1) + { case 0: - param0->unk24 = param2; + param0->unk24 = (s16)param2; break; case 1: - param0->unk26 = param2; + param0->unk26 = (s16)param2; break; case 2: param0->unk28 = param2; break; case 3: - param0->unk2C = param2; + param0->unk2C = (s16)param2; break; case 4: - param0->unk2E = param2; + param0->unk2E = (s16)param2; break; case 5: param0->unk30 = param2; @@ -1092,52 +1569,52 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) param0->unk54_0 = param2; break; case 7: - param0->unk38 = param2; + param0->unk38 = (u16)param2; break; case 8: - param0->unk3A = param2; + param0->unk3A = (u16)param2; break; case 9: - param0->unk3C = param2; + param0->unk3C = (u16)param2; break; case 10: - param0->unk40 = param2; + param0->unk40 = (s16)param2; break; case 11: - param0->unk42 = param2; + param0->unk42 = (s16)param2; break; case 12: - param0->unk34 = param2; + param0->unk34 = (s16)param2; break; case 13: - param0->unk36 = param2; + param0->unk36 = (s16)param2; break; case 14: param0->unk54_1 = param2; break; case 15: - param0->unk44 = param2; + param0->unk44 = (u8)param2; break; case 16: - param0->unk45 = param2; + param0->unk45 = (u8)param2; break; case 17: - param0->unk46 = param2; + param0->unk46 = (u8)param2; break; case 18: - param0->unk47 = param2; + param0->unk47 = (u8)param2; break; case 19: - param0->unk6C.unk4 = param2; + param0->unk6C.unk4 = (s16)param2; break; case 20: - param0->unk6C.unk6 = param2; + param0->unk6C.unk6 = (s16)param2; break; case 21: - param0->unk6C.unk8 = param2; + param0->unk6C.unk8 = (s16)param2; break; case 22: - param0->unk6C.unka = param2; + param0->unk6C.unka = (s16)param2; break; case 23: param0->unk54_2 = param2; @@ -1169,15 +1646,15 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) param0->unk00_8 = 1; break; case 32: - param0->unk48 = param2; + param0->unk48 = (u8)param2; param0->unk00_8 = 1; break; case 33: - param0->unk49 = param2; + param0->unk49 = (u8)param2; param0->unk00_8 = 1; break; case 34: - param0->unk4A = param2; + param0->unk4A = (u8)param2; break; case 35: param0->unk54_9 = param2; @@ -1191,175 +1668,175 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) param0->unk54_B = param2; break; case 38: - param0->unk5B = param2; + param0->unk5B = (u8)param2; break; case 40: param0->unk54_D = param2; param0->unk00_7 = 1; break; case 41: - param0->unk6C.unk2 = param2; + param0->unk6C.unk2 = (s8)param2; break; case 42: - param0->unk6C.unk0_0 = param2; + param0->unk6C.unk0_0 = (u16)param2; param0->unk00_8 = 1; break; case 43: - param0->unk6C.unk0_2 = param2; + param0->unk6C.unk0_2 = (u16)param2; break; case 44: - param0->unk6C.unk0_3 = param2; + param0->unk6C.unk0_3 = (u16)param2; break; case 45: - param0->unk6C.unk0_4 = param2; + param0->unk6C.unk0_4 = (u16)param2; break; case 46: - param0->unk6C.unk0_5 = param2; + param0->unk6C.unk0_5 = (u16)param2; break; } } - -THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) { - switch (param1) { +THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) +{ + switch (param1) + { case 0: return param0->unk24; case 1: return param0->unk26; - + case 2: return param0->unk28; - + case 3: return param0->unk2C; - + case 4: return param0->unk2E; - + case 5: return param0->unk30; - + case 6: return param0->unk54_0; - + case 7: return param0->unk38; - + case 8: return param0->unk3A; - + case 9: return param0->unk3C; - + case 10: return param0->unk40; - + case 11: return param0->unk42; - + case 12: return param0->unk34; - + case 13: return param0->unk36; - + case 14: return param0->unk54_1; - + case 15: return param0->unk44; - + case 16: return param0->unk45; - + case 17: return param0->unk46; - + case 18: return param0->unk47; - + case 19: return param0->unk6C.unk4; - + case 20: return param0->unk6C.unk6; - + case 21: return param0->unk6C.unk8; - + case 22: return param0->unk6C.unka; - + case 23: return param0->unk54_2; - + case 24: return param0->unk50_0; - + case 25: return param0->unk50_5; - + case 26: return param0->unk50_a; - + case 27: return param0->unk50_f; - + case 28: return param0->unk50_14; - + case 29: return param0->unk50_19; - + case 30: return param0->unk54_C; - + case 31: return param0->unk4C; - + case 32: return param0->unk48; - + case 33: return param0->unk49; - + case 34: return param0->unk4A; - + case 35: return param0->unk54_9; - + case 36: return param0->unk54_A; - + case 37: return param0->unk54_B; - + case 38: return param0->unk5B; - + case 40: return param0->unk54_D; - + case 41: return param0->unk6C.unk2; - + case 42: return param0->unk6C.unk0_0; - + case 43: return param0->unk6C.unk0_2; - + case 44: return param0->unk6C.unk0_3; - + case 45: return param0->unk6C.unk0_4; - + case 46: return param0->unk6C.unk0_5; - } GF_AssertFail(); @@ -1367,9 +1844,10 @@ THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) { return 0; } - -THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) { - switch (param1) { +THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) +{ + switch (param1) + { case 0: param0->unk24 += param2; break; @@ -1519,29 +1997,34 @@ THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) } } - -THUMB_FUNC void FUN_02007E40(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { +THUMB_FUNC void FUN_02007E40( + struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ param0->unk54_1 = 1; - param0->unk44 = param1; - param0->unk45 = param2; - param0->unk46 = param3; - param0->unk47 = param4; + param0->unk44 = (u8)param1; + param0->unk45 = (u8)param2; + param0->unk46 = (u8)param3; + param0->unk47 = (u8)param4; } - -THUMB_FUNC void FUN_02007E68(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { +THUMB_FUNC void FUN_02007E68( + struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ param0->unk54_C = 1; - param0->unk48 = param1; - param0->unk49 = param2; + param0->unk48 = (u8)param1; + param0->unk49 = (u8)param2; param0->unk4A = 0; - param0->unk4B = param3; + param0->unk4B = (u8)param3; param0->unk4C = param4; } - -THUMB_FUNC void FUN_02007E98(struct UnkStruct1 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { - for (s32 i = 0; i < 4; i++) { - if (param0->unk000[i].unk00_0 == 0) { +THUMB_FUNC void FUN_02007E98( + struct UnkStruct1 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + for (s32 i = 0; i < 4; i++) + { + if (param0->unk000[i].unk00_0 == 0) + { continue; } @@ -1554,8 +2037,8 @@ THUMB_FUNC void FUN_02007E98(struct UnkStruct1 *param0, u32 param1, u32 param2, } } - -THUMB_FUNC void FUN_02007EEC(struct UnkStruct2 *param0) { +THUMB_FUNC void FUN_02007EEC(struct UnkStruct2 *param0) +{ param0->unk54_C = 0; param0->unk48 = 0; param0->unk49 = 0; @@ -1565,40 +2048,46 @@ THUMB_FUNC void FUN_02007EEC(struct UnkStruct2 *param0) { param0->unk00_8 = 1; } - - -THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct2 *param0) { +THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct2 *param0) +{ return param0->unk54_C == 1; } - -THUMB_FUNC void FUN_02007F34(struct UnkStruct2 *param0, s32 param1) { - param0->unk2E = (40-param1) - (((40-param1)*param0->unk36)>>8); +THUMB_FUNC void FUN_02007F34(struct UnkStruct2 *param0, s32 param1) +{ + param0->unk2E = (s16)((40 - param1) - (((40 - param1) * param0->unk36) >> 8)); } - #ifdef NONMATCHING -THUMB_FUNC void FUN_02007F48(struct UnkStruct2 *param0) { +THUMB_FUNC void FUN_02007F48(struct UnkStruct2 *param0) +{ u8 *r6 = ¶m0->unk59; - if (param0->unk58 == 0) { + if (param0->unk58 == 0) + { return; } - if (param0->unk5A == 0) { + if (param0->unk5A == 0) + { (*r6)++; - while (param0->unk84[*r6].unk0 < -1) { + while (param0->unk84[*r6].unk0 < -1) + { param0->unk5C[*r6]++; - if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) { + if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) + { param0->unk5C[*r6] = 0; r6++; - } else { - *r6 = -2-param0->unk84[*r6].unk0; + } + else + { + *r6 = -2 - param0->unk84[*r6].unk0; } } - if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) { + if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) + { param0->unk5B = 0; param0->unk58 = 0; @@ -1607,13 +2096,15 @@ THUMB_FUNC void FUN_02007F48(struct UnkStruct2 *param0) { param0->unk5B = param0->unk84[*r6].unk0; param0->unk5A = param0->unk84[*r6].unk1; - - } else { + } + else + { param0->unk5A--; } } #else -asm void FUN_02007F48(struct UnkStruct2 *param0) { +asm void FUN_02007F48(struct UnkStruct2 *param0) +{ // clang-format off push {r4-r7} add r1, r0, #0x0 @@ -1727,58 +2218,72 @@ _0200800A: } #endif - -THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct2_sub *param1) { +THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct2_sub *param1) +{ param0[0] = 1; param0[2] = 0; - param0[1] = param1->unk0; + param0[1] = (u8)param1->unk0; param0[3] = param1->unk1; - ((u32 *)param0)[4] = param1; + ((struct UnkStruct2_sub **)param0)[4] = param1; - for (s32 i= 0; i<10;i++) { - param0[i+4]=0; + for (s32 i = 0; i < 10; i++) + { + param0[i + 4] = 0; } } #ifdef NONMATCHING -THUMB_FUNC s32 FUN_02008030(u8 *param0) { - if (*param0 != 0) { - u8 *r3 = param0+2; +THUMB_FUNC s32 FUN_02008030(u8 *param0) +{ + if (*param0 != 0) + { + u8 *r3 = param0 + 2; struct UnkStruct2_sub *r4 = ((struct UnkStruct2_sub **)param0)[4]; - if (*param0 != 0) { - if (param0[3] == 0) { + if (*param0 != 0) + { + if (param0[3] == 0) + { (*r3)++; - while (r4[*r3].unk0 < -1) { - param0[*r3+4]++; - if (r4[*r3].unk1 == param0[*r3+4] || r4[*r3].unk1 == 0) { - param0[*r3+4] = 0; + while (r4[*r3].unk0 < -1) + { + param0[*r3 + 4]++; + if (r4[*r3].unk1 == param0[*r3 + 4] || r4[*r3].unk1 == 0) + { + param0[*r3 + 4] = 0; r3++; - } else { + } + else + { *r3 = -2 - r4[*r3].unk0; } } - - if (r4[*r3].unk0 == -1 || *r3 >= 10) { + + if (r4[*r3].unk0 == -1 || *r3 >= 10) + { param0[0] = 0; param0[1] = 0; - } else { + } + else + { param0[1] = r4[*r3].unk0; param0[3] = r4[*r3].unk1; } - } else { + } + else + { param0[3]--; } } return param0[1]; - } return -1; } #else -asm s32 FUN_02008030(u8 *param0) { +asm s32 FUN_02008030(u8 *param0) +{ // clang-format off push {r4-r7} ldrb r1, [r0, #0x0] @@ -1873,45 +2378,47 @@ _020080C6: } #endif - -THUMB_FUNC void FUN_020080D0(struct UnkStruct2 *param0) { +THUMB_FUNC void FUN_020080D0(struct UnkStruct2 *param0) +{ param0->unk00_7 = 1; param0->unk00_8 = 1; } - -THUMB_FUNC void FUN_020080E0(struct UnkStruct2 *param0) { +THUMB_FUNC void FUN_020080E0(struct UnkStruct2 *param0) +{ param0->unk14 = param0->unk04; param0->unk78 = param0->unk6C; } - -THUMB_FUNC void FUN_0200813C(struct UnkStruct2 *param0) { +THUMB_FUNC void FUN_0200813C(struct UnkStruct2 *param0) +{ param0->unk04 = param0->unk14; param0->unk6C = param0->unk78; param0->unk00_7 = 1; param0->unk00_8 = 1; } - -THUMB_FUNC void FUN_020081A8(struct UnkStruct1 *param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_020081A8(struct UnkStruct1 *param0, u32 param1, u32 param2) +{ param0->unk29C = param1; param0->unk2A0 = param2; } - -THUMB_FUNC void FUN_020081B4(struct UnkStruct1 *param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_020081B4(struct UnkStruct1 *param0, u32 param1, u32 param2) +{ param0->unk2A4 = param1; param0->unk2A8 = param2; } - -THUMB_FUNC u32 FUN_020081C0(u32 param0) { - return param0+4; +THUMB_FUNC u32 FUN_020081C0(u32 param0) +{ + return param0 + 4; } -THUMB_FUNC void FUN_020081C4(struct UnkStruct1 *param0) { - if (param0->unk2E1 != 0) { +THUMB_FUNC void FUN_020081C4(struct UnkStruct1 *param0) +{ + if (param0->unk2E1 != 0) + { param0->unk2E1 = 0; NNS_G2dInitImageProxy(¶m0->unk260); @@ -1920,48 +2427,46 @@ THUMB_FUNC void FUN_020081C4(struct UnkStruct1 *param0) { param0->unk2B8.szByte = param0->unk2A0; param0->unk2B8.pRawData = param0->unk2AC; - NNS_G2dLoadImage2DMapping(¶m0->unk2B8, param0->unk29C, 0, ¶m0->unk260); - + NNS_G2dLoadImage2DMapping( + ¶m0->unk2B8, param0->unk29C, NNS_G2D_VRAM_TYPE_3DMAIN, ¶m0->unk260); } - if (param0->unk2E2 != 0) { + if (param0->unk2E2 != 0) + { param0->unk2E2 = 0; NNS_G2dInitImagePaletteProxy(¶m0->unk284); param0->unk2D0.szByte = param0->unk2A8; param0->unk2D0.pRawData = param0->unk2B0; - NNS_G2dLoadPalette(¶m0->unk2D0, param0->unk2A4, 0, ¶m0->unk284); - + NNS_G2dLoadPalette( + ¶m0->unk2D0, param0->unk2A4, NNS_G2D_VRAM_TYPE_3DMAIN, ¶m0->unk284); } } - -THUMB_FUNC void FUN_0200825C(struct UnkStruct1 *param0, u8 param1) { +THUMB_FUNC void FUN_0200825C(struct UnkStruct1 *param0, u8 param1) +{ param0->unk2E3 = param1; } - -THUMB_FUNC BOOL FUN_02008268(struct UnkStruct2 *param0) { +THUMB_FUNC BOOL FUN_02008268(struct UnkStruct2 *param0) +{ GF_ASSERT(param0); return param0->unk00_0 != 0; } - -THUMB_FUNC void FUN_02008284(struct UnkStruct1 *param0, u32 param1) { +THUMB_FUNC void FUN_02008284(struct UnkStruct1 *param0, u32 param1) +{ param0->unk2E4 |= param1; } - -THUMB_FUNC void FUN_02008290(struct UnkStruct1 *param0, u32 param1) { - param0->unk2E4 &= (param1^~0); +THUMB_FUNC void FUN_02008290(struct UnkStruct1 *param0, u32 param1) +{ + param0->unk2E4 &= (param1 ^ ~0); } - -extern void FUN_020088EC(struct UnkStruct2 *, u8 *); -extern u8 FUN_020088D8(u8); - -THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) { +THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) +{ NNSG2dCharacterData *st58; int st54; int r4; @@ -1970,11 +2475,15 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) { void *st4c; u8 st48 = 0; - for (st54 = 0; st54 < 4; st54++) { - if (param0->unk000[st54].unk00_0 != 0 && param0->unk000[st54].unk00_7 != 0) { + for (st54 = 0; st54 < 4; st54++) + { + if (param0->unk000[st54].unk00_0 != 0 && param0->unk000[st54].unk00_7 != 0) + { param0->unk000[st54].unk00_7 = 0; st48 = 1; - st4c = AllocAndReadWholeNarcMemberByIdPair(param0->unk000[st54].unk04.field_00, param0->unk000[st54].unk04.field_02, param0->unk298); + st4c = AllocAndReadWholeNarcMemberByIdPair((NarcId)param0->unk000[st54].unk04.field_00, + param0->unk000[st54].unk04.field_02, + param0->unk298); NNS_G2dGetUnpackedCharacterData(st4c, &st58); param0->unk2B8.pixelFmt = st58->pixelFmt; param0->unk2B8.mapingType = st58->mapingType; @@ -1984,82 +2493,164 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) { FUN_02008A74(st50); FUN_020088EC(¶m0->unk000[st54], st50); - if (st54 == 3) { - for (st14 = 0; st14 < 0x50; st14++) { - for (r4 = 0; r4 < 0x50; r4++) { - if (r4 < 0x28) { - if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { - param0->unk2AC[st14*0x80+r4+0x50] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x27-r4)]); - } else if (param0->unk000[st54].unk54_9 != 0) { - param0->unk2AC[st14*0x80+r4+0x50] = FUN_020088D8(st50[st14*0x50+(0x27-r4)]); - } else if (param0->unk000[st54].unk54_A != 0) { - param0->unk2AC[st14*0x80+r4+0x50] = st50[(0x4f-st14)*0x50+r4]; - } else if (param0->unk000[st54].unk54_D != 0) { - if (st14%(param0->unk000[st54].unk54_D*2) != 0) { - param0->unk2AC[st14*0x80+r4+0x50] = param0->unk2AC[(st14-1)*0x80+r4+0x50]; - } else if (r4%param0->unk000[st54].unk54_D != 0) { - param0->unk2AC[st14*0x80+r4+0x50] = param0->unk2AC[st14*0x80+r4+0x4f]; - } else { - param0->unk2AC[st14*0x80+r4+0x50] = ((st50[st14*0x50+r4]&0xf) | ((st50[st14*0x50+r4]&0xf)<<4)); - } - } else { - param0->unk2AC[st14*0x80+r4+0x50] = st50[st14*0x50+r4]; + if (st54 == 3) + { + for (st14 = 0; st14 < 0x50; st14++) + { + for (r4 = 0; r4 < 0x50; r4++) + { + if (r4 < 0x28) + { + if (param0->unk000[st54].unk54_9 != 0 && + param0->unk000[st54].unk54_A != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x50] = + FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x27 - r4)]); } - } else { + else if (param0->unk000[st54].unk54_9 != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x50] = + FUN_020088D8(st50[st14 * 0x50 + (0x27 - r4)]); + } + else if (param0->unk000[st54].unk54_A != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x50] = + st50[(0x4f - st14) * 0x50 + r4]; + } + else if (param0->unk000[st54].unk54_D != 0) + { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x50] = + param0->unk2AC[(st14 - 1) * 0x80 + r4 + 0x50]; + } + else if (r4 % param0->unk000[st54].unk54_D != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x50] = + param0->unk2AC[st14 * 0x80 + r4 + 0x4f]; + } + else + { + param0->unk2AC[st14 * 0x80 + r4 + 0x50] = + (u8)((st50[st14 * 0x50 + r4] & 0xf) | + ((st50[st14 * 0x50 + r4] & 0xf) << 4)); + } + } + else + { + param0->unk2AC[st14 * 0x80 + r4 + 0x50] = st50[st14 * 0x50 + r4]; + } + } + else + { //_02008442 - if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { - param0->unk2AC[st14*0x80+r4+0x2828] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x4f-(r4-0x28))]); - } else if (param0->unk000[st54].unk54_9 != 0) { - param0->unk2AC[st14*0x80+r4+0x2828] = FUN_020088D8(st50[st14*0x50+(0x4f-(r4-0x28))]); - } else if (param0->unk000[st54].unk54_A != 0) { - param0->unk2AC[st14*0x80+r4+0x2828] = st50[(0x4f-st14)*0x50+r4]; - } else if (param0->unk000[st54].unk54_D != 0) { - if (st14%(param0->unk000[st54].unk54_D*2) != 0) { - param0->unk2AC[st14*0x80+r4+0x2828] = param0->unk2AC[(st14-1)*0x80+r4+0x2828]; - } else if (r4%param0->unk000[st54].unk54_D != 0) { - param0->unk2AC[st14*0x80+r4+0x2828] = param0->unk2AC[st14*0x80+(r4-1)+0x2828]; - } else { - param0->unk2AC[st14*0x80+r4+0x2828] = ((st50[st14*0x50+r4]&0xf) | ((st50[st14*0x50+r4]&0xf)<<4)); + if (param0->unk000[st54].unk54_9 != 0 && + param0->unk000[st54].unk54_A != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = + FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x4f - (r4 - 0x28))]); + } + else if (param0->unk000[st54].unk54_9 != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = + FUN_020088D8(st50[st14 * 0x50 + (0x4f - (r4 - 0x28))]); + } + else if (param0->unk000[st54].unk54_A != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = + st50[(0x4f - st14) * 0x50 + r4]; + } + else if (param0->unk000[st54].unk54_D != 0) + { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = + param0->unk2AC[(st14 - 1) * 0x80 + r4 + 0x2828]; } - } else { - param0->unk2AC[st14*0x80+r4+0x2828] = st50[st14*0x50+r4]; + else if (r4 % param0->unk000[st54].unk54_D != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = + param0->unk2AC[st14 * 0x80 + (r4 - 1) + 0x2828]; + } + else + { + param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = + (u8)((st50[st14 * 0x50 + r4] & 0xf) | + ((st50[st14 * 0x50 + r4] & 0xf) << 4)); + } + } + else + { + param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = st50[st14 * 0x50 + r4]; } } } } - - } else { + } + else + { //_02008554 - for (st14 = 0; st14 < 0x50; st14++) { - for (r4 = 0; r4 < 0x50; r4++) { - if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { - if (r4 < 0x28) { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x27-r4)]); - } else { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[(0x4f-st14)*0x50+(0x4f-(r4-0x28))]); + for (st14 = 0; st14 < 0x50; st14++) + { + for (r4 = 0; r4 < 0x50; r4++) + { + if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) + { + if (r4 < 0x28) + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x27 - r4)]); } - } else if (param0->unk000[st54].unk54_9 != 0) { - if (r4 < 0x28) { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[st14*0x50+(0x27-r4)]); - } else { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = FUN_020088D8(st50[st14*0x50+(0x4f-(r4-0x28))]); - } - } else if (param0->unk000[st54].unk54_A != 0) { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = st50[(0x4f-st14)*0x50+r4]; - } else if (param0->unk000[st54].unk54_D != 0) { - if (st14%(param0->unk000[st54].unk54_D*2) != 0) { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = param0->unk2AC[(st14-1)*0x80+r4+st54*0x2800]; - } else if (r4%(param0->unk000[st54].unk54_D) != 0) { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = param0->unk2AC[st14*0x80+(r4-1)+st54*0x2800]; - } else { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = ((st50[st14*0x50+r4]&0xf) | ((st50[st14*0x50+r4]&0xf)<<4)); + else + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x4f - (r4 - 0x28))]); } - } else { - param0->unk2AC[st14*0x80+r4+st54*0x2800] = st50[st14*0x50+r4]; + } + else if (param0->unk000[st54].unk54_9 != 0) + { + if (r4 < 0x28) + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + FUN_020088D8(st50[st14 * 0x50 + (0x27 - r4)]); + } + else + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + FUN_020088D8(st50[st14 * 0x50 + (0x4f - (r4 - 0x28))]); + } + } + else if (param0->unk000[st54].unk54_A != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + st50[(0x4f - st14) * 0x50 + r4]; + } + else if (param0->unk000[st54].unk54_D != 0) + { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + param0->unk2AC[(st14 - 1) * 0x80 + r4 + st54 * 0x2800]; + } + else if (r4 % (param0->unk000[st54].unk54_D) != 0) + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + param0->unk2AC[st14 * 0x80 + (r4 - 1) + st54 * 0x2800]; + } + else + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + (u8)((st50[st14 * 0x50 + r4] & 0xf) | + ((st50[st14 * 0x50 + r4] & 0xf) << 4)); + } + } + else + { + param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = + st50[st14 * 0x50 + r4]; } } } - } FreeToHeap(st4c); @@ -2070,86 +2661,108 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) { param0->unk2E1 = st48; } - - -THUMB_FUNC void FUN_020086F4(struct UnkStruct1 *param0) { +THUMB_FUNC void FUN_020086F4(struct UnkStruct1 *param0) +{ NNSG2dPaletteData *st18; int st14, r7; u16 *r1; void *st10; u8 stc = 0; - - for (st14 = 0 ; st14 < 4; st14++) { - if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk00_8 != 0) { + for (st14 = 0; st14 < 4; st14++) + { + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk00_8 != 0) + { param0->unk000[st14].unk00_8 = 0; stc = 1; - st10 = AllocAndReadWholeNarcMemberByIdPair(param0->unk000[st14].unk04.field_00, param0->unk000[st14].unk04.field_04, param0->unk298); + st10 = AllocAndReadWholeNarcMemberByIdPair((NarcId)param0->unk000[st14].unk04.field_00, + param0->unk000[st14].unk04.field_04, + param0->unk298); NNS_G2dGetUnpackedPaletteData(st10, &st18); param0->unk2D0.fmt = st18->fmt; r1 = st18->pRawData; - for (r7 = 0; r7 < 0x10; r7++) { - param0->unk2B0[st14*0x10+r7] = r1[r7]; - param0->unk2B4[st14*0x10+r7] = r1[r7]; + for (r7 = 0; r7 < 0x10; r7++) + { + param0->unk2B0[st14 * 0x10 + r7] = r1[r7]; + param0->unk2B4[st14 * 0x10 + r7] = r1[r7]; } FreeToHeap(st10); - if (param0->unk000[st14].unk6C.unk0_0 != 0) { - st10 = AllocAndReadWholeNarcMemberByIdPair(NARC_POKETOOL_POKEGRA_OTHERPOKE, NARC_otherpoke_narc_0212_NCLR, param0->unk298); + if (param0->unk000[st14].unk6C.unk0_0 != 0) + { + st10 = AllocAndReadWholeNarcMemberByIdPair( + NARC_POKETOOL_POKEGRA_OTHERPOKE, NARC_otherpoke_narc_0212_NCLR, param0->unk298); NNS_G2dGetUnpackedPaletteData(st10, &st18); r1 = st18->pRawData; - for (r7 = 0; r7 < 0x10; r7++) { - param0->unk2B0[(param0->unk000[st14].unk6C.unk0_0+3)*0x10 + r7] = r1[r7]; - param0->unk2B4[(param0->unk000[st14].unk6C.unk0_0+3)*0x10 + r7] = r1[r7]; + for (r7 = 0; r7 < 0x10; r7++) + { + param0->unk2B0[(param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10 + r7] = r1[r7]; + param0->unk2B4[(param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10 + r7] = r1[r7]; } FreeToHeap(st10); } } //_020087E0 - if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk54_C != 0) { - if (param0->unk000[st14].unk4A == 0) { + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk54_C != 0) + { + if (param0->unk000[st14].unk4A == 0) + { stc = 1; param0->unk000[st14].unk4A = param0->unk000[st14].unk4B; - BlendPalette(param0->unk2B4+st14*0x10, param0->unk2B0+st14*0x10, 0x10, param0->unk000[st14].unk48, (u16)param0->unk000[st14].unk4C); + BlendPalette(param0->unk2B4 + st14 * 0x10, + param0->unk2B0 + st14 * 0x10, + 0x10, + param0->unk000[st14].unk48, + (u16)param0->unk000[st14].unk4C); - if (param0->unk000[st14].unk6C.unk0_0 != 0) { - BlendPalette(param0->unk2B4+(param0->unk000[st14].unk6C.unk0_0+3)*0x10, param0->unk2B0+(param0->unk000[st14].unk6C.unk0_0+3)*0x10, 0x10, param0->unk000[st14].unk48, (u16)param0->unk000[st14].unk4C); + if (param0->unk000[st14].unk6C.unk0_0 != 0) + { + BlendPalette(param0->unk2B4 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, + param0->unk2B0 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, + 0x10, + param0->unk000[st14].unk48, + (u16)param0->unk000[st14].unk4C); } - if (param0->unk000[st14].unk48 == param0->unk000[st14].unk49) { + if (param0->unk000[st14].unk48 == param0->unk000[st14].unk49) + { param0->unk000[st14].unk54_C = 0; - } else if (param0->unk000[st14].unk48 > param0->unk000[st14].unk49) { + } + else if (param0->unk000[st14].unk48 > param0->unk000[st14].unk49) + { param0->unk000[st14].unk48--; - } else { + } + else + { param0->unk000[st14].unk48++; } - } else { + } + else + { param0->unk000[st14].unk4A--; } } } param0->unk2E2 = stc; - } - - -THUMB_FUNC u8 FUN_020088D8(u8 param0) { - return ((u8)((param0&0xf0)>>4)) | ((u8)(param0<<4)); +THUMB_FUNC u8 FUN_020088D8(u8 param0) +{ + return (u8)(((u8)((param0 & 0xf0) >> 4)) | ((u8)(param0 << 4))); } -extern void FUN_02008904(u8 *param0, u32 param1, u32 param2); - -THUMB_FUNC void FUN_020088EC(struct UnkStruct2 *param0, u8 *param1) { - if (param0->unk04.field_06 != 0) { - FUN_02008904(param1, param0->unk04.field_0C,1); +THUMB_FUNC void FUN_020088EC(struct UnkStruct2 *param0, u8 *param1) +{ + if (param0->unk04.field_06 != 0) + { + FUN_02008904(param1, param0->unk04.field_0C, 1); } } - -THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) +{ struct UnkStruct4 *st10; s32 i; u32 r2; @@ -2158,20 +2771,27 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { u8 r1; u32 st0 = param1; - for (i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) + { st10 = UNK_02105AE8[i]; r1 = 0; - while (st10[r1].unk0 != 0xff) { - r0 = st10[r1].unk0+((param1&0xf) - 8); - r4 = st10[r1].unk1+(((param1&0xf0)>>4)-8); - r2 = r0/2 + r4*0x50; - if ((r0&1) != 0) { - if ((param0[r2]&0xf0) >= 0x10 && (param0[r2]&0xf0) <= 0x30) { + while (st10[r1].unk0 != 0xff) + { + r0 = (u8)(st10[r1].unk0 + ((param1 & 0xf) - 8)); + r4 = (u8)(st10[r1].unk1 + (((param1 & 0xf0) >> 4) - 8)); + r2 = (u32)(r0 / 2 + r4 * 0x50); + if ((r0 & 1) != 0) + { + if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) + { param0[r2] += 0x50; } - } else { - if ((param0[r2]&0xf) >= 1 && (param0[r2]&0xf) <= 3) { - param0[r2]+= 5; + } + else + { + if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) + { + param0[r2] += 5; } } @@ -2182,21 +2802,29 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { param1 = st0; - if (param2 != 0) { - for (i = 0; i < 4; i++) { + if (param2 != 0) + { + for (i = 0; i < 4; i++) + { st10 = UNK_02105AE8[i]; r1 = 0; - while (st10[r1].unk0 != 0xff) { - r0 = st10[r1].unk0-14+((param1&0xf)-8)+0x50; - r4 = st10[r1].unk1+(((param1&0xf0)>>4)-8); - r2 = r0/2 + r4*0x50; - if ((r0 &1) != 0) { - if ((param0[r2]&0xf0) >= 0x10 && (param0[r2]&0xf0) <= 0x30) { + while (st10[r1].unk0 != 0xff) + { + r0 = (u8)(st10[r1].unk0 - 14 + ((param1 & 0xf) - 8) + 0x50); + r4 = (u8)(st10[r1].unk1 + (((param1 & 0xf0) >> 4) - 8)); + r2 = (u32)(r0 / 2 + r4 * 0x50); + if ((r0 & 1) != 0) + { + if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) + { param0[r2] += 0x50; } - } else { - if ((param0[r2]&0xf) >= 1 && (param0[r2]&0xf) <= 3) { - param0[r2]+= 5; + } + else + { + if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) + { + param0[r2] += 5; } } r1++; @@ -2206,18 +2834,18 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { } } +THUMB_FUNC u16 FUN_02008A54(u32 *param0) +{ + *param0 = (*param0) * 0x41C64E6D + 0x6073; - -THUMB_FUNC u16 FUN_02008A54(u32 *param0) { - *param0 = (*param0)*0x41C64E6D+0x6073; - - return *param0>>16; + return (u16)(*param0 >> 16); } - -THUMB_FUNC void FUN_02008A74(u8 *param0) { +THUMB_FUNC void FUN_02008A74(u8 *param0) +{ u32 st0 = ((u16 *)param0)[0xc7f]; - for (s32 r4 = 0xc7f; r4 > -1; r4--) { + for (s32 r4 = 0xc7f; r4 > -1; r4--) + { ((u16 *)param0)[r4] ^= st0; FUN_02008A54(&st0); } diff --git a/include/unk_02006D98.h b/include/unk_02006D98.h new file mode 100644 index 000000000..308e5dbc0 --- /dev/null +++ b/include/unk_02006D98.h @@ -0,0 +1,165 @@ +#include "global.h" +#include "NNS_g2d.h" +#include "mod63_021DB450.h" + +struct UnkStruct2_sub +{ + s8 unk0; + u8 unk1; +}; +struct UnkStruct2_sub2 +{ + u16 unk0_0 : 2; + u16 unk0_2 : 1; + u16 unk0_3 : 1; + u16 unk0_4 : 1; + u16 unk0_5 : 2; + s8 unk2; + u8 unk3; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unka; +}; + +struct UnkStruct2 +{ + u32 unk00_0 : 1; + u32 unk00_1 : 6; + u32 unk00_7 : 1; + u32 unk00_8 : 1; + struct UnkStruct63_021DB49C unk04; + struct UnkStruct63_021DB49C unk14; + s16 unk24; + s16 unk26; + u32 unk28; + s16 unk2C; + s16 unk2E; + u32 unk30; + s16 unk34; + s16 unk36; + u16 unk38; + u16 unk3A; + u16 unk3C; + u16 unk3E; + s16 unk40; + s16 unk42; + u8 unk44; + u8 unk45; + u8 unk46; + u8 unk47; + u8 unk48; + u8 unk49; + u8 unk4A; + u8 unk4B; + u32 unk4C; + u32 unk50_0 : 5; + u32 unk50_5 : 5; + u32 unk50_a : 5; + u32 unk50_f : 5; + u32 unk50_14 : 5; + u32 unk50_19 : 5; + u32 unk50_1E : 2; + u32 unk54_0 : 1; + u32 unk54_1 : 1; + u32 unk54_2 : 5; + u32 unk54_7 : 2; + u32 unk54_9 : 1; + u32 unk54_A : 1; + u32 unk54_B : 1; + u32 unk54_C : 1; + u32 unk54_D : 4; + u8 unk58; + u8 unk59; + u8 unk5A; + u8 unk5B; + u8 unk5C[10]; + void (*unk68)(struct UnkStruct2 *, void *); + struct UnkStruct2_sub2 unk6C; + struct UnkStruct2_sub2 unk78; + struct UnkStruct2_sub unk84[10]; +}; + +struct UnkStruct1 +{ + struct UnkStruct2 unk000[4]; + NNSG2dImageProxy unk260; + NNSG2dImagePaletteProxy unk284; + u32 unk298; + u32 unk29C; + u32 unk2A0; + u32 unk2A4; + u32 unk2A8; + u8 *unk2AC; + u16 *unk2B0; + u16 *unk2B4; + NNSG2dCharacterData unk2B8; + NNSG2dPaletteData unk2D0; + u8 unk2E0; + u8 unk2E1; + u8 unk2E2; + u8 unk2E3; + u32 unk2E4; +}; + +struct UnkStruct4 +{ + u8 unk0; + u8 unk1; +}; + +struct UnkStruct1 *FUN_02006D98(u32 heap_id); +void FUN_02006ED4(struct UnkStruct1 *param0); +void FUN_020072E8(struct UnkStruct1 *param0); +void FUN_02007314(struct UnkStruct2 *param0); +void FUN_0200737C(struct UnkStruct2 *param0, struct UnkStruct2_sub *param1); +BOOL FUN_02007390(struct UnkStruct2 *param0); +struct UnkStruct2 *FUN_020073A0(struct UnkStruct1 *param0, + struct UnkStruct63_021DB49C *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + const void *param6, + void (*param7)(struct UnkStruct2 *, void *)); +struct UnkStruct2 *FUN_020073E8(struct UnkStruct1 *param0, + struct UnkStruct63_021DB49C *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6, + const void *param7, + void (*param8)(struct UnkStruct2 *, void *)); +void FUN_02007534(struct UnkStruct2 *param0); +void FUN_02007540(struct UnkStruct1 *param0); +void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2); +u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1); +void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2); +void FUN_02007E40(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007E68(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007E98(struct UnkStruct1 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007EEC(struct UnkStruct2 *param0); +BOOL FUN_02007F20(struct UnkStruct2 *param0); +void FUN_02007F34(struct UnkStruct2 *param0, s32 param1); +void FUN_02007F48(struct UnkStruct2 *param0); +void FUN_02008010(u8 *param0, struct UnkStruct2_sub *param1); +s32 FUN_02008030(u8 *param0); +void FUN_020080D0(struct UnkStruct2 *param0); +void FUN_020080E0(struct UnkStruct2 *param0); +void FUN_0200813C(struct UnkStruct2 *param0); +void FUN_020081A8(struct UnkStruct1 *param0, u32 param1, u32 param2); +void FUN_020081B4(struct UnkStruct1 *param0, u32 param1, u32 param2); +u32 FUN_020081C0(u32 param0); +void FUN_020081C4(struct UnkStruct1 *param0); +void FUN_0200825C(struct UnkStruct1 *param0, u8 param1); +BOOL FUN_02008268(struct UnkStruct2 *param0); +void FUN_02008284(struct UnkStruct1 *param0, u32 param1); +void FUN_02008290(struct UnkStruct1 *param0, u32 param1); +void FUN_020082A8(struct UnkStruct1 *param0); +void FUN_020086F4(struct UnkStruct1 *param0); +u8 FUN_020088D8(u8 param0); +void FUN_020088EC(struct UnkStruct2 *param0, u8 *param1); +void FUN_02008904(u8 *param0, u32 param1, u32 param2); +u16 FUN_02008A54(u32 *param0); +void FUN_02008A74(u8 *param0); From 21748d0a9416d453d844ed1a95341c64d69e5091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 29 Aug 2021 00:03:50 +0200 Subject: [PATCH 07/19] remove old externs --- arm9/modules/63/include/mod63_021DB450.h | 15 +--- arm9/modules/63/src/mod63_021DB450.c | 29 +++--- arm9/src/render_window.c | 7 +- arm9/src/unk_02006D98.c | 100 ++++++++++----------- include/unk_02006D98.h | 108 +++++++++++++---------- 5 files changed, 129 insertions(+), 130 deletions(-) diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 15c1c477f..ff42aef56 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -2,11 +2,12 @@ #define POKEDIAMOND_MOD63_021DB450_H #include "global.h" +#include "unk_02006D98.h" typedef struct UnkStruct63_021DB450 //intro base struct type { - struct UnkStruct63_021DB450 * field_00; //oddly requires this to be set to progress past copyright/pokemon screen. - u32 field_04[3]; //mon animations? + struct UnkStruct_02006D98 * field_00; //oddly requires this to be set to progress past copyright/pokemon screen. + struct UnkStruct_02006D98_2 * field_04[3]; //mon animations? u32 field_10; void * field_14; void * field_18; @@ -21,15 +22,7 @@ typedef struct UnkStruct63_021DB450 //intro base struct type u8 filler_34[0x30]; } UnkStruct63_021DB450; -typedef struct UnkStruct63_021DB49C -{ - u16 field_00; - u16 field_02; - u16 field_04; - u16 field_06; - u32 field_08; - u32 field_0C; -} UnkStruct63_021DB49C; + typedef struct UnkStruct63_021DBEF0 { diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 31917596f..eb91f6ba6 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -3,6 +3,7 @@ #include "constants/species.h" #include "gx.h" #include "mod63_021DB450.h" +#include "unk_02006D98.h" //todo resolve to static code extern u32 (*NNS_GfdDefaultFuncAllocTexVram)(u32 param0, u32 param1, u32 param2); @@ -12,38 +13,30 @@ extern void FUN_0201327C(u32 param0); extern void FUN_020132BC(u32 param0); extern void * FUN_02012CDC(void *, void *, void *, u32, u32, u32); -extern u32 FUN_020073A0(struct UnkStruct63_021DB450 *, struct UnkStruct63_021DB49C *, u32, u32, u32, u32, u32, u32); -extern struct UnkStruct63_021DB450 * FUN_02006D98(u32); extern void FUN_02068C00(struct UnkStruct63_021DB49C*, u16, u32, u32, u32, u32, u32); extern void FUN_02012CC8(void); -extern void FUN_02007558(u32, u32, u32); extern void Camera_SetPerspectiveClippingPlane(u32, u32, u32); extern u32 FUN_0201343C(void); extern void FUN_02013194(void *, u32, u32, u32); extern u32 FUN_0201318C(u32, u32, u32); extern void FUN_02012DE4(void *); -extern void FUN_020072E8(struct UnkStruct63_021DB450 *); -extern void FUN_020081C4(struct UnkStruct63_021DB450 *); extern void FUN_020222AC(void); extern void NNS_G2dSetupSoftwareSpriteCamera(void); -extern u32 FUN_02006ED4(struct UnkStruct63_021DB450 *); extern void FUN_020222B4(u32, u32); extern void FUN_02013440(void *, u32); -extern void FUN_020133AC(void *, u32, const void *, u32); +extern void FUN_020133AC(void *, u32, const void *, struct UnkStruct_02006D98_2 *); extern BOOL FUN_020133C8(void *); -extern void FUN_020079E0(u32, u32, s32); extern void FUN_02013364(void); extern void FUN_02013388(void); -void * FUN_0201341C(struct UnkStruct63_021DB450 *); -int FUN_0200782C(void *, int); +struct UnkStruct_02006D98_2 * FUN_0201341C(struct UnkStruct63_021DB450 *); const s32 MOD63_021DBEC0[3] = {0x703, 0x7CE, 0x8A8}; const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3]; @@ -115,7 +108,7 @@ THUMB_FUNC void MOD63_021DB5A8(UnkStruct63_021DB450 *param0) } FUN_020222AC(); NNS_G2dSetupSoftwareSpriteCamera(); - (void)FUN_02006ED4(param0->field_00); + FUN_02006ED4(param0->field_00); MOD63_021DB934(); FUN_020222B4(1, 0); } @@ -193,7 +186,7 @@ THUMB_FUNC BOOL MOD63_021DB5CC(UnkStruct63_021DB450 *param0, u32 param1, s32 par THUMB_FUNC BOOL MOD63_021DB720(UnkStruct63_021DB450 *param0, u32 param1) { - u32 field = param0->field_04[param1]; + struct UnkStruct_02006D98_2 *field = param0->field_04[param1]; FUN_020079E0(field, 0x0, 0x6); FUN_020079E0(field, 0x1, -0x10); FUN_020079E0(field, 0xC, -0x80); @@ -210,7 +203,7 @@ THUMB_FUNC BOOL MOD63_021DB720(UnkStruct63_021DB450 *param0, u32 param1) THUMB_FUNC BOOL MOD63_021DB784(UnkStruct63_021DB450 *param0, u32 param1) { - u32 field = param0->field_04[param1]; + struct UnkStruct_02006D98_2 *field = param0->field_04[param1]; FUN_020079E0(field, 0x0, -0x3); FUN_020079E0(field, 0x1, -0x12); param0->field_1D++; @@ -225,7 +218,7 @@ THUMB_FUNC BOOL MOD63_021DB784(UnkStruct63_021DB450 *param0, u32 param1) THUMB_FUNC BOOL MOD63_021DB7D0(UnkStruct63_021DB450 *param0, u32 param1) { - u32 field = param0->field_04[param1]; + struct UnkStruct_02006D98_2 *field = param0->field_04[param1]; FUN_020079E0(field, 0x0, -0x10); FUN_020079E0(field, 0x1, -0x10); FUN_020079E0(field, 0xC, -0x80); @@ -242,7 +235,7 @@ THUMB_FUNC BOOL MOD63_021DB7D0(UnkStruct63_021DB450 *param0, u32 param1) THUMB_FUNC BOOL MOD63_021DB838(UnkStruct63_021DB450 *param0, u32 param1) { - u32 field = param0->field_04[param1]; + struct UnkStruct_02006D98_2 *field = param0->field_04[param1]; FUN_020079E0(field, 0, -0x6); FUN_020079E0(field, 1, -0x10); param0->field_1D++; @@ -257,7 +250,7 @@ THUMB_FUNC BOOL MOD63_021DB838(UnkStruct63_021DB450 *param0, u32 param1) THUMB_FUNC BOOL MOD63_021DB884(UnkStruct63_021DB450 *param0, u32 param1) { - u32 field = param0->field_04[param1]; + struct UnkStruct_02006D98_2 *field = param0->field_04[param1]; FUN_020079E0(field, 0, 0x8); FUN_020079E0(field, 1, -0x10); FUN_020079E0(field, 0xC, -0x80); @@ -274,7 +267,7 @@ THUMB_FUNC BOOL MOD63_021DB884(UnkStruct63_021DB450 *param0, u32 param1) THUMB_FUNC BOOL MOD63_021DB8E8(UnkStruct63_021DB450 *param0, u32 param1) { - u32 field = param0->field_04[param1]; + struct UnkStruct_02006D98_2 *field = param0->field_04[param1]; FUN_020079E0(field, 0, 0x6); FUN_020079E0(field, 1, -0x14); param0->field_1D++; @@ -295,7 +288,7 @@ THUMB_FUNC void MOD63_021DB934(void) THUMB_FUNC void MOD63_021DB940(struct UnkStruct63_021DB450 * a0) { - void * r4 = FUN_0201341C(a0); + struct UnkStruct_02006D98_2 * r4 = FUN_0201341C(a0); int sp0[3] = {0, 0, 0}; sp0[0] = (FUN_0200782C(r4, 0) - 0x80) * 0xAC; sp0[1] = (FUN_0200782C(r4, 1) - 0x60) * 0xAC; diff --git a/arm9/src/render_window.c b/arm9/src/render_window.c index 7a682eb6b..1826e1999 100644 --- a/arm9/src/render_window.c +++ b/arm9/src/render_window.c @@ -9,6 +9,7 @@ #include "unk_020061E8.h" #include "unk_0200BB14.h" #include "unk_0200CA44.h" +#include "unk_02006D98.h" const struct UnkStruct_0200CABC_3 UNK_020ECE88 = { 10, @@ -50,8 +51,6 @@ extern void MOD05_021D971C(struct UnkStruct_0200CABC_2 *param0, u32 param4, u32 param5); extern u32 *MOD05_021D9820(struct UnkStruct_0200CABC_2 *param0, void *); -extern struct UnkStruct63_021DB450 *FUN_02006D98(u32); -extern void FUN_020072E8(struct UnkStruct63_021DB450 *param0); extern void FUN_02012400(u16, u16, u16, void *, void *); extern u32 NNS_G2dGetImageLocation(u32, u32); extern void *FUN_02012470(u16, u16, u16); @@ -898,7 +897,7 @@ THUMB_FUNC void FUN_0200DE30(struct UnkStruct_0200CABC_2 *param0, u8 param1, u8 THUMB_FUNC void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 param2) { - struct UnkStruct63_021DB450 *r7 = FUN_02006D98(param0->unk162); + struct UnkStruct_02006D98 *r7 = FUN_02006D98(param0->unk162); struct SomeDrawPokemonStruct stc; FUN_02068C00(&stc, param1, param2, 2, 0, 0, 0); FUN_0200DEF4(param0, &stc); @@ -907,7 +906,7 @@ THUMB_FUNC void FUN_0200DE80(struct UnkStruct_0200CABC_2 *param0, u16 param1, u8 THUMB_FUNC void FUN_0200DEC0(struct UnkStruct_0200CABC_2 *param0, struct Pokemon *param1) { - struct UnkStruct63_021DB450 *r6 = FUN_02006D98(param0->unk162); + struct UnkStruct_02006D98 *r6 = FUN_02006D98(param0->unk162); struct SomeDrawPokemonStruct st0; FUN_02068B68(&st0, param1, 2); FUN_0200DEF4(param0, &st0); diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 78e3d1579..e4d7008d0 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -638,12 +638,12 @@ const u8 UNK_020ECD4C[] = { 0x00, }; -struct UnkStruct4 *UNK_02105AE8[] = { +struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { // ugly hack to fix extra padding added by the compiler - (struct UnkStruct4 *)(UNK_020ECCE0 + 2), - (struct UnkStruct4 *)UNK_020ECC78, - (struct UnkStruct4 *)UNK_020ECC10, - (struct UnkStruct4 *)UNK_020ECDCC, + (struct UnkStruct_02006D98_3 *)(UNK_020ECCE0 + 2), + (struct UnkStruct_02006D98_3 *)UNK_020ECC78, + (struct UnkStruct_02006D98_3 *)UNK_020ECC10, + (struct UnkStruct_02006D98_3 *)UNK_020ECDCC, }; extern void NNS_G2dSetupSoftwareSpriteCamera(void); @@ -658,9 +658,9 @@ extern void NNS_G2dDrawSpriteFast(s16 param0, int param7, int param8); -THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) +THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) { - struct UnkStruct1 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct1)); + struct UnkStruct_02006D98 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006D98)); ptr->unk298 = heap_id; ptr->unk2E0 = 0; ptr->unk29C = 0; @@ -678,7 +678,7 @@ THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) for (int i = 0; i < 4; i++) { - MIi_CpuClearFast(0, &ptr->unk000[i], sizeof(struct UnkStruct2)); + MIi_CpuClearFast(0, &ptr->unk000[i], sizeof(struct UnkStruct_02006D98_2)); } NNS_G2dSetupSoftwareSpriteCamera(); @@ -716,7 +716,7 @@ THUMB_FUNC struct UnkStruct1 *FUN_02006D98(u32 heap_id) #ifdef NONMATCHING // mostly matching, only 2 register writes messed up -THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { s32 arg3; s32 arg4; @@ -911,7 +911,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct1 *param0) reg_G3_MTX_POP = 1; } #else -asm void FUN_02006ED4(struct UnkStruct1 *param0) +asm void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { // clang-format off push {r3-r7, lr} @@ -1421,7 +1421,7 @@ _020072D6: } #endif -THUMB_FUNC void FUN_020072E8(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_020072E8(struct UnkStruct_02006D98 *param0) { FreeToHeap(param0->unk2AC); FreeToHeap(param0->unk2B0); @@ -1429,7 +1429,7 @@ THUMB_FUNC void FUN_020072E8(struct UnkStruct1 *param0) FreeToHeap(param0); } -THUMB_FUNC void FUN_02007314(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_02007314(struct UnkStruct_02006D98_2 *param0) { param0->unk59 = 0; for (s32 i = 0; i < 10; i++) @@ -1447,12 +1447,12 @@ THUMB_FUNC void FUN_02007314(struct UnkStruct2 *param0) param0->unk5A = param0->unk84[param0->unk59].unk1; } -THUMB_FUNC void FUN_0200737C(struct UnkStruct2 *param0, struct UnkStruct2_sub *param1) +THUMB_FUNC void FUN_0200737C(struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1) { - MI_CpuCopy8(param1, param0->unk84, sizeof(struct UnkStruct2_sub) * 10); + MI_CpuCopy8(param1, param0->unk84, sizeof(struct UnkStruct_02006D98_sub) * 10); } -THUMB_FUNC BOOL FUN_02007390(struct UnkStruct2 *param0) +THUMB_FUNC BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0) { if (param0->unk58 != 0) { @@ -1461,14 +1461,14 @@ THUMB_FUNC BOOL FUN_02007390(struct UnkStruct2 *param0) return FALSE; } -THUMB_FUNC struct UnkStruct2 *FUN_020073A0(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, const void *param6, - void (*param7)(struct UnkStruct2 *, void *)) + void (*param7)(struct UnkStruct_02006D98_2 *, void *)) { s32 i; for (i = 0; i < 4; i++) @@ -1483,7 +1483,7 @@ THUMB_FUNC struct UnkStruct2 *FUN_020073A0(struct UnkStruct1 *param0, return FUN_020073E8(param0, param1, param2, param3, param4, param5, i, param6, param7); } -THUMB_FUNC struct UnkStruct2 *FUN_020073E8(struct UnkStruct1 *param0, +THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, @@ -1491,11 +1491,11 @@ THUMB_FUNC struct UnkStruct2 *FUN_020073E8(struct UnkStruct1 *param0, u32 param5, s32 param6, const void *param7, - void (*param8)(struct UnkStruct2 *, void *)) + void (*param8)(struct UnkStruct_02006D98_2 *, void *)) { GF_ASSERT(param0->unk000[param6].unk00_0 == 0); - MIi_CpuClearFast(0, ¶m0->unk000[param6], sizeof(struct UnkStruct2)); + MIi_CpuClearFast(0, ¶m0->unk000[param6], sizeof(struct UnkStruct_02006D98_2)); param0->unk000[param6].unk00_0 = 1; param0->unk000[param6].unk00_7 = 1; param0->unk000[param6].unk00_8 = 1; @@ -1530,12 +1530,12 @@ THUMB_FUNC struct UnkStruct2 *FUN_020073E8(struct UnkStruct1 *param0, return ¶m0->unk000[param6]; } -THUMB_FUNC void FUN_02007534(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_02007534(struct UnkStruct_02006D98_2 *param0) { param0->unk00_0 = 0; } -THUMB_FUNC void FUN_02007540(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_02007540(struct UnkStruct_02006D98 *param0) { for (s32 i = 0; i < 4; i++) { @@ -1543,7 +1543,7 @@ THUMB_FUNC void FUN_02007540(struct UnkStruct1 *param0) } } -THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) { switch (param1) { @@ -1696,7 +1696,7 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2) } } -THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) +THUMB_FUNC u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1) { switch (param1) { @@ -1844,7 +1844,7 @@ THUMB_FUNC u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1) return 0; } -THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) { switch (param1) { @@ -1998,7 +1998,7 @@ THUMB_FUNC void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2) } THUMB_FUNC void FUN_02007E40( - struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { param0->unk54_1 = 1; param0->unk44 = (u8)param1; @@ -2008,7 +2008,7 @@ THUMB_FUNC void FUN_02007E40( } THUMB_FUNC void FUN_02007E68( - struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { param0->unk54_C = 1; param0->unk48 = (u8)param1; @@ -2019,7 +2019,7 @@ THUMB_FUNC void FUN_02007E68( } THUMB_FUNC void FUN_02007E98( - struct UnkStruct1 *param0, u32 param1, u32 param2, u32 param3, u32 param4) + struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { for (s32 i = 0; i < 4; i++) { @@ -2037,7 +2037,7 @@ THUMB_FUNC void FUN_02007E98( } } -THUMB_FUNC void FUN_02007EEC(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0) { param0->unk54_C = 0; param0->unk48 = 0; @@ -2048,18 +2048,18 @@ THUMB_FUNC void FUN_02007EEC(struct UnkStruct2 *param0) param0->unk00_8 = 1; } -THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct2 *param0) +THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0) { return param0->unk54_C == 1; } -THUMB_FUNC void FUN_02007F34(struct UnkStruct2 *param0, s32 param1) +THUMB_FUNC void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1) { param0->unk2E = (s16)((40 - param1) - (((40 - param1) * param0->unk36) >> 8)); } #ifdef NONMATCHING -THUMB_FUNC void FUN_02007F48(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { u8 *r6 = ¶m0->unk59; if (param0->unk58 == 0) @@ -2103,7 +2103,7 @@ THUMB_FUNC void FUN_02007F48(struct UnkStruct2 *param0) } } #else -asm void FUN_02007F48(struct UnkStruct2 *param0) +asm void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { // clang-format off push {r4-r7} @@ -2218,13 +2218,13 @@ _0200800A: } #endif -THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct2_sub *param1) +THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1) { param0[0] = 1; param0[2] = 0; param0[1] = (u8)param1->unk0; param0[3] = param1->unk1; - ((struct UnkStruct2_sub **)param0)[4] = param1; + ((struct UnkStruct_02006D98_sub **)param0)[4] = param1; for (s32 i = 0; i < 10; i++) { @@ -2238,7 +2238,7 @@ THUMB_FUNC s32 FUN_02008030(u8 *param0) if (*param0 != 0) { u8 *r3 = param0 + 2; - struct UnkStruct2_sub *r4 = ((struct UnkStruct2_sub **)param0)[4]; + struct UnkStruct_02006D98_sub *r4 = ((struct UnkStruct_02006D98_sub **)param0)[4]; if (*param0 != 0) { if (param0[3] == 0) @@ -2378,19 +2378,19 @@ _020080C6: } #endif -THUMB_FUNC void FUN_020080D0(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_020080D0(struct UnkStruct_02006D98_2 *param0) { param0->unk00_7 = 1; param0->unk00_8 = 1; } -THUMB_FUNC void FUN_020080E0(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_020080E0(struct UnkStruct_02006D98_2 *param0) { param0->unk14 = param0->unk04; param0->unk78 = param0->unk6C; } -THUMB_FUNC void FUN_0200813C(struct UnkStruct2 *param0) +THUMB_FUNC void FUN_0200813C(struct UnkStruct_02006D98_2 *param0) { param0->unk04 = param0->unk14; param0->unk6C = param0->unk78; @@ -2398,13 +2398,13 @@ THUMB_FUNC void FUN_0200813C(struct UnkStruct2 *param0) param0->unk00_8 = 1; } -THUMB_FUNC void FUN_020081A8(struct UnkStruct1 *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_020081A8(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) { param0->unk29C = param1; param0->unk2A0 = param2; } -THUMB_FUNC void FUN_020081B4(struct UnkStruct1 *param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_020081B4(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) { param0->unk2A4 = param1; param0->unk2A8 = param2; @@ -2415,7 +2415,7 @@ THUMB_FUNC u32 FUN_020081C0(u32 param0) return param0 + 4; } -THUMB_FUNC void FUN_020081C4(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) { if (param0->unk2E1 != 0) { @@ -2444,28 +2444,28 @@ THUMB_FUNC void FUN_020081C4(struct UnkStruct1 *param0) } } -THUMB_FUNC void FUN_0200825C(struct UnkStruct1 *param0, u8 param1) +THUMB_FUNC void FUN_0200825C(struct UnkStruct_02006D98 *param0, u8 param1) { param0->unk2E3 = param1; } -THUMB_FUNC BOOL FUN_02008268(struct UnkStruct2 *param0) +THUMB_FUNC BOOL FUN_02008268(struct UnkStruct_02006D98_2 *param0) { GF_ASSERT(param0); return param0->unk00_0 != 0; } -THUMB_FUNC void FUN_02008284(struct UnkStruct1 *param0, u32 param1) +THUMB_FUNC void FUN_02008284(struct UnkStruct_02006D98 *param0, u32 param1) { param0->unk2E4 |= param1; } -THUMB_FUNC void FUN_02008290(struct UnkStruct1 *param0, u32 param1) +THUMB_FUNC void FUN_02008290(struct UnkStruct_02006D98 *param0, u32 param1) { param0->unk2E4 &= (param1 ^ ~0); } -THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) { NNSG2dCharacterData *st58; int st54; @@ -2661,7 +2661,7 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct1 *param0) param0->unk2E1 = st48; } -THUMB_FUNC void FUN_020086F4(struct UnkStruct1 *param0) +THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) { NNSG2dPaletteData *st18; int st14, r7; @@ -2753,7 +2753,7 @@ THUMB_FUNC u8 FUN_020088D8(u8 param0) return (u8)(((u8)((param0 & 0xf0) >> 4)) | ((u8)(param0 << 4))); } -THUMB_FUNC void FUN_020088EC(struct UnkStruct2 *param0, u8 *param1) +THUMB_FUNC void FUN_020088EC(struct UnkStruct_02006D98_2 *param0, u8 *param1) { if (param0->unk04.field_06 != 0) { @@ -2763,7 +2763,7 @@ THUMB_FUNC void FUN_020088EC(struct UnkStruct2 *param0, u8 *param1) THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { - struct UnkStruct4 *st10; + struct UnkStruct_02006D98_3 *st10; s32 i; u32 r2; u8 r0; diff --git a/include/unk_02006D98.h b/include/unk_02006D98.h index 308e5dbc0..04661ebda 100644 --- a/include/unk_02006D98.h +++ b/include/unk_02006D98.h @@ -1,13 +1,24 @@ +#ifndef POKEDIAMOND_UNK_02006D98_H +#define POKEDIAMOND_UNK_02006D98_H + #include "global.h" #include "NNS_g2d.h" -#include "mod63_021DB450.h" +struct UnkStruct63_021DB49C +{ + u16 field_00; + u16 field_02; + u16 field_04; + u16 field_06; + u32 field_08; + u32 field_0C; +}; -struct UnkStruct2_sub +struct UnkStruct_02006D98_sub { s8 unk0; u8 unk1; }; -struct UnkStruct2_sub2 +struct UnkStruct_02006D98_sub2 { u16 unk0_0 : 2; u16 unk0_2 : 1; @@ -22,7 +33,7 @@ struct UnkStruct2_sub2 s16 unka; }; -struct UnkStruct2 +struct UnkStruct_02006D98_2 { u32 unk00_0 : 1; u32 unk00_1 : 6; @@ -74,15 +85,15 @@ struct UnkStruct2 u8 unk5A; u8 unk5B; u8 unk5C[10]; - void (*unk68)(struct UnkStruct2 *, void *); - struct UnkStruct2_sub2 unk6C; - struct UnkStruct2_sub2 unk78; - struct UnkStruct2_sub unk84[10]; + void (*unk68)(struct UnkStruct_02006D98_2 *, void *); + struct UnkStruct_02006D98_sub2 unk6C; + struct UnkStruct_02006D98_sub2 unk78; + struct UnkStruct_02006D98_sub unk84[10]; }; -struct UnkStruct1 +struct UnkStruct_02006D98 { - struct UnkStruct2 unk000[4]; + struct UnkStruct_02006D98_2 unk000[4]; NNSG2dImageProxy unk260; NNSG2dImagePaletteProxy unk284; u32 unk298; @@ -102,27 +113,27 @@ struct UnkStruct1 u32 unk2E4; }; -struct UnkStruct4 +struct UnkStruct_02006D98_3 { u8 unk0; u8 unk1; }; -struct UnkStruct1 *FUN_02006D98(u32 heap_id); -void FUN_02006ED4(struct UnkStruct1 *param0); -void FUN_020072E8(struct UnkStruct1 *param0); -void FUN_02007314(struct UnkStruct2 *param0); -void FUN_0200737C(struct UnkStruct2 *param0, struct UnkStruct2_sub *param1); -BOOL FUN_02007390(struct UnkStruct2 *param0); -struct UnkStruct2 *FUN_020073A0(struct UnkStruct1 *param0, +struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id); +void FUN_02006ED4(struct UnkStruct_02006D98 *param0); +void FUN_020072E8(struct UnkStruct_02006D98 *param0); +void FUN_02007314(struct UnkStruct_02006D98_2 *param0); +void FUN_0200737C(struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1); +BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0); +struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, u32 param4, u32 param5, const void *param6, - void (*param7)(struct UnkStruct2 *, void *)); -struct UnkStruct2 *FUN_020073E8(struct UnkStruct1 *param0, + void (*param7)(struct UnkStruct_02006D98_2 *, void *)); +struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 *param0, struct UnkStruct63_021DB49C *param1, u32 param2, u32 param3, @@ -130,36 +141,39 @@ struct UnkStruct2 *FUN_020073E8(struct UnkStruct1 *param0, u32 param5, s32 param6, const void *param7, - void (*param8)(struct UnkStruct2 *, void *)); -void FUN_02007534(struct UnkStruct2 *param0); -void FUN_02007540(struct UnkStruct1 *param0); -void FUN_02007558(struct UnkStruct2 *param0, u32 param1, u32 param2); -u32 FUN_0200782C(struct UnkStruct2 *param0, u32 param1); -void FUN_020079E0(struct UnkStruct2 *param0, u32 param1, u32 param2); -void FUN_02007E40(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); -void FUN_02007E68(struct UnkStruct2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); -void FUN_02007E98(struct UnkStruct1 *param0, u32 param1, u32 param2, u32 param3, u32 param4); -void FUN_02007EEC(struct UnkStruct2 *param0); -BOOL FUN_02007F20(struct UnkStruct2 *param0); -void FUN_02007F34(struct UnkStruct2 *param0, s32 param1); -void FUN_02007F48(struct UnkStruct2 *param0); -void FUN_02008010(u8 *param0, struct UnkStruct2_sub *param1); + void (*param8)(struct UnkStruct_02006D98_2 *, void *)); +void FUN_02007534(struct UnkStruct_02006D98_2 *param0); +void FUN_02007540(struct UnkStruct_02006D98 *param0); +void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2); +u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1); +void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2); +void FUN_02007E40(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007E68(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007E98(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0); +BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0); +void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1); +void FUN_02007F48(struct UnkStruct_02006D98_2 *param0); +void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1); s32 FUN_02008030(u8 *param0); -void FUN_020080D0(struct UnkStruct2 *param0); -void FUN_020080E0(struct UnkStruct2 *param0); -void FUN_0200813C(struct UnkStruct2 *param0); -void FUN_020081A8(struct UnkStruct1 *param0, u32 param1, u32 param2); -void FUN_020081B4(struct UnkStruct1 *param0, u32 param1, u32 param2); +void FUN_020080D0(struct UnkStruct_02006D98_2 *param0); +void FUN_020080E0(struct UnkStruct_02006D98_2 *param0); +void FUN_0200813C(struct UnkStruct_02006D98_2 *param0); +void FUN_020081A8(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2); +void FUN_020081B4(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2); u32 FUN_020081C0(u32 param0); -void FUN_020081C4(struct UnkStruct1 *param0); -void FUN_0200825C(struct UnkStruct1 *param0, u8 param1); -BOOL FUN_02008268(struct UnkStruct2 *param0); -void FUN_02008284(struct UnkStruct1 *param0, u32 param1); -void FUN_02008290(struct UnkStruct1 *param0, u32 param1); -void FUN_020082A8(struct UnkStruct1 *param0); -void FUN_020086F4(struct UnkStruct1 *param0); +void FUN_020081C4(struct UnkStruct_02006D98 *param0); +void FUN_0200825C(struct UnkStruct_02006D98 *param0, u8 param1); +BOOL FUN_02008268(struct UnkStruct_02006D98_2 *param0); +void FUN_02008284(struct UnkStruct_02006D98 *param0, u32 param1); +void FUN_02008290(struct UnkStruct_02006D98 *param0, u32 param1); +void FUN_020082A8(struct UnkStruct_02006D98 *param0); +void FUN_020086F4(struct UnkStruct_02006D98 *param0); u8 FUN_020088D8(u8 param0); -void FUN_020088EC(struct UnkStruct2 *param0, u8 *param1); +void FUN_020088EC(struct UnkStruct_02006D98_2 *param0, u8 *param1); void FUN_02008904(u8 *param0, u32 param1, u32 param2); u16 FUN_02008A54(u32 *param0); void FUN_02008A74(u8 *param0); + + +#endif // POKEDIAMOND_UNK_02006D98_H From 8d383810aa08aa9594086ed2f8b3e6a50927d53c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 29 Aug 2021 00:12:03 +0200 Subject: [PATCH 08/19] add comment about data order --- arm9/src/unk_02006D98.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index e4d7008d0..ef6295556 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -489,6 +489,9 @@ const int UNK_020ECBD0[4][4] = { { 160, 160, 224, 176 }, { 160, 160, 224, 176 }, { 160, 176, 224, 192 }, { 160, 192, 224, 208 } }; + +// the structure should be something like that but the symbol order is all wrong this way. Let just dump the raw bytes for now. + // const int UNK_020ECD4C[4][2][4] = { // { // {0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50} From 9395f7cee40d7629cbd8840d30ea7f3d2a01db70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 29 Aug 2021 12:00:25 +0200 Subject: [PATCH 09/19] fix data declaration --- arm9/src/unk_02006D98.c | 882 ++++++++++++---------------------------- 1 file changed, 258 insertions(+), 624 deletions(-) diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index ef6295556..0afa74370 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -9,644 +9,278 @@ #include "poketool/pokegra/otherpoke.naix" #include "registers.h" -const u8 UNK_020ECCE0[] = { - 0xFF, - 0xFF, - 0x1B, - 0x0F, - 0x1C, - 0x0F, - 0x1D, - 0x0F, - 0x1E, - 0x0F, - 0x1A, - 0x10, - 0x1B, - 0x10, - 0x1C, - 0x10, - 0x1D, - 0x10, - 0x1E, - 0x10, - 0x1F, - 0x10, - 0x19, - 0x11, - 0x1A, - 0x11, - 0x1B, - 0x11, - 0x1C, - 0x11, - 0x1D, - 0x11, - 0x1E, - 0x11, - 0x1F, - 0x11, - 0x20, - 0x11, - 0x19, - 0x12, - 0x1A, - 0x12, - 0x1B, - 0x12, - 0x1C, - 0x12, - 0x1D, - 0x12, - 0x1E, - 0x12, - 0x1F, - 0x12, - 0x20, - 0x12, - 0x19, - 0x13, - 0x1A, - 0x13, - 0x1B, - 0x13, - 0x1C, - 0x13, - 0x1D, - 0x13, - 0x1E, - 0x13, - 0x1F, - 0x13, - 0x20, - 0x13, - 0x19, - 0x14, - 0x1A, - 0x14, - 0x1B, - 0x14, - 0x1C, - 0x14, - 0x1D, - 0x14, - 0x1E, - 0x14, - 0x1F, - 0x14, - 0x20, - 0x14, - 0x1A, - 0x15, - 0x1B, - 0x15, - 0x1C, - 0x15, - 0x1D, - 0x15, - 0x1E, - 0x15, - 0x1F, - 0x15, - 0x1B, - 0x16, - 0x1C, - 0x16, - 0x1D, - 0x16, - 0x1E, - 0x16, - 0xFF, - 0xFF, +const struct UnkStruct_02006D98_3 UNK_020ECCE2[] = { +{0x1B,0x0F}, +{0x1C,0x0F}, +{0x1D,0x0F}, +{0x1E,0x0F}, +{0x1A,0x10}, +{0x1B,0x10}, +{0x1C,0x10}, +{0x1D,0x10}, +{0x1E,0x10}, +{0x1F,0x10}, +{0x19,0x11}, +{0x1A,0x11}, +{0x1B,0x11}, +{0x1C,0x11}, +{0x1D,0x11}, +{0x1E,0x11}, +{0x1F,0x11}, +{0x20,0x11}, +{0x19,0x12}, +{0x1A,0x12}, +{0x1B,0x12}, +{0x1C,0x12}, +{0x1D,0x12}, +{0x1E,0x12}, +{0x1F,0x12}, +{0x20,0x12}, +{0x19,0x13}, +{0x1A,0x13}, +{0x1B,0x13}, +{0x1C,0x13}, +{0x1D,0x13}, +{0x1E,0x13}, +{0x1F,0x13}, +{0x20,0x13}, +{0x19,0x14}, +{0x1A,0x14}, +{0x1B,0x14}, +{0x1C,0x14}, +{0x1D,0x14}, +{0x1E,0x14}, +{0x1F,0x14}, +{0x20,0x14}, +{0x1A,0x15}, +{0x1B,0x15}, +{0x1C,0x15}, +{0x1D,0x15}, +{0x1E,0x15}, +{0x1F,0x15}, +{0x1B,0x16}, +{0x1C,0x16}, +{0x1D,0x16}, +{0x1E,0x16}, +{0xFF,0xFF}, }; -const u8 UNK_020ECC10[] = { - 0x1E, - 0x21, - 0x1F, - 0x21, - 0x20, - 0x21, - 0x1D, - 0x22, - 0x1E, - 0x22, - 0x1F, - 0x22, - 0x20, - 0x22, - 0x21, - 0x22, - 0x1C, - 0x23, - 0x1D, - 0x23, - 0x1E, - 0x23, - 0x1F, - 0x23, - 0x20, - 0x23, - 0x21, - 0x23, - 0x22, - 0x23, - 0x1C, - 0x24, - 0x1D, - 0x24, - 0x1E, - 0x24, - 0x1F, - 0x24, - 0x20, - 0x24, - 0x21, - 0x24, - 0x22, - 0x24, - 0x1C, - 0x25, - 0x1D, - 0x25, - 0x1E, - 0x25, - 0x1F, - 0x25, - 0x20, - 0x25, - 0x21, - 0x25, - 0x22, - 0x25, - 0x1C, - 0x26, - 0x1D, - 0x26, - 0x1E, - 0x26, - 0x1F, - 0x26, - 0x20, - 0x26, - 0x21, - 0x26, - 0x22, - 0x26, - 0x1C, - 0x27, - 0x1D, - 0x27, - 0x1E, - 0x27, - 0x1F, - 0x27, - 0x20, - 0x27, - 0x21, - 0x27, - 0x22, - 0x27, - 0x1D, - 0x28, - 0x1E, - 0x28, - 0x1F, - 0x28, - 0x20, - 0x28, - 0x21, - 0x28, - 0x1E, - 0x29, - 0x1F, - 0x29, - 0x20, - 0x29, - 0xFF, - 0xFF, +const struct UnkStruct_02006D98_3 UNK_020ECC78[] = { +{0x33,0x11}, +{0x34,0x11}, +{0x35,0x11}, +{0x36,0x11}, +{0x32,0x12}, +{0x33,0x12}, +{0x34,0x12}, +{0x35,0x12}, +{0x36,0x12}, +{0x37,0x12}, +{0x31,0x13}, +{0x32,0x13}, +{0x33,0x13}, +{0x34,0x13}, +{0x35,0x13}, +{0x36,0x13}, +{0x37,0x13}, +{0x38,0x13}, +{0x31,0x14}, +{0x32,0x14}, +{0x33,0x14}, +{0x34,0x14}, +{0x35,0x14}, +{0x36,0x14}, +{0x37,0x14}, +{0x38,0x14}, +{0x31,0x15}, +{0x32,0x15}, +{0x33,0x15}, +{0x34,0x15}, +{0x35,0x15}, +{0x36,0x15}, +{0x37,0x15}, +{0x38,0x15}, +{0x31,0x16}, +{0x32,0x16}, +{0x33,0x16}, +{0x34,0x16}, +{0x35,0x16}, +{0x36,0x16}, +{0x37,0x16}, +{0x38,0x16}, +{0x32,0x17}, +{0x33,0x17}, +{0x34,0x17}, +{0x35,0x17}, +{0x36,0x17}, +{0x37,0x17}, +{0x33,0x18}, +{0x34,0x18}, +{0x35,0x18}, +{0x36,0x18}, +{0xFF,0xFF}, }; -const u8 UNK_020ECC78[] = { - 0x33, - 0x11, - 0x34, - 0x11, - 0x35, - 0x11, - 0x36, - 0x11, - 0x32, - 0x12, - 0x33, - 0x12, - 0x34, - 0x12, - 0x35, - 0x12, - 0x36, - 0x12, - 0x37, - 0x12, - 0x31, - 0x13, - 0x32, - 0x13, - 0x33, - 0x13, - 0x34, - 0x13, - 0x35, - 0x13, - 0x36, - 0x13, - 0x37, - 0x13, - 0x38, - 0x13, - 0x31, - 0x14, - 0x32, - 0x14, - 0x33, - 0x14, - 0x34, - 0x14, - 0x35, - 0x14, - 0x36, - 0x14, - 0x37, - 0x14, - 0x38, - 0x14, - 0x31, - 0x15, - 0x32, - 0x15, - 0x33, - 0x15, - 0x34, - 0x15, - 0x35, - 0x15, - 0x36, - 0x15, - 0x37, - 0x15, - 0x38, - 0x15, - 0x31, - 0x16, - 0x32, - 0x16, - 0x33, - 0x16, - 0x34, - 0x16, - 0x35, - 0x16, - 0x36, - 0x16, - 0x37, - 0x16, - 0x38, - 0x16, - 0x32, - 0x17, - 0x33, - 0x17, - 0x34, - 0x17, - 0x35, - 0x17, - 0x36, - 0x17, - 0x37, - 0x17, - 0x33, - 0x18, - 0x34, - 0x18, - 0x35, - 0x18, - 0x36, - 0x18, +const struct UnkStruct_02006D98_3 UNK_020ECC10[] = { +{0x1E,0x21}, +{0x1F,0x21}, +{0x20,0x21}, +{0x1D,0x22}, +{0x1E,0x22}, +{0x1F,0x22}, +{0x20,0x22}, +{0x21,0x22}, +{0x1C,0x23}, +{0x1D,0x23}, +{0x1E,0x23}, +{0x1F,0x23}, +{0x20,0x23}, +{0x21,0x23}, +{0x22,0x23}, +{0x1C,0x24}, +{0x1D,0x24}, +{0x1E,0x24}, +{0x1F,0x24}, +{0x20,0x24}, +{0x21,0x24}, +{0x22,0x24}, +{0x1C,0x25}, +{0x1D,0x25}, +{0x1E,0x25}, +{0x1F,0x25}, +{0x20,0x25}, +{0x21,0x25}, +{0x22,0x25}, +{0x1C,0x26}, +{0x1D,0x26}, +{0x1E,0x26}, +{0x1F,0x26}, +{0x20,0x26}, +{0x21,0x26}, +{0x22,0x26}, +{0x1C,0x27}, +{0x1D,0x27}, +{0x1E,0x27}, +{0x1F,0x27}, +{0x20,0x27}, +{0x21,0x27}, +{0x22,0x27}, +{0x1D,0x28}, +{0x1E,0x28}, +{0x1F,0x28}, +{0x20,0x28}, +{0x21,0x28}, +{0x1E,0x29}, +{0x1F,0x29}, +{0x20,0x29}, +{0xFF,0xFF}, }; -const u8 UNK_020ECDCC[] = { 0x2B, - 0x21, - 0x2C, - 0x21, - 0x2D, - 0x21, - 0x29, - 0x22, - 0x2A, - 0x22, - 0x2B, - 0x22, - 0x2C, - 0x22, - 0x2D, - 0x22, - 0x2E, - 0x22, - 0x2F, - 0x22, - 0x28, - 0x23, - 0x29, - 0x23, - 0x2A, - 0x23, - 0x2B, - 0x23, - 0x2C, - 0x23, - 0x2D, - 0x23, - 0x2E, - 0x23, - 0x2F, - 0x23, - 0x30, - 0x23, - 0x28, - 0x24, - 0x29, - 0x24, - 0x2A, - 0x24, - 0x2B, - 0x24, - 0x2C, - 0x24, - 0x2D, - 0x24, - 0x2E, - 0x24, - 0x2F, - 0x24, - 0x30, - 0x24, - 0x28, - 0x25, - 0x29, - 0x25, - 0x2A, - 0x25, - 0x2B, - 0x25, - 0x2C, - 0x25, - 0x2D, - 0x25, - 0x2E, - 0x25, - 0x2F, - 0x25, - 0x30, - 0x25, - 0x28, - 0x26, - 0x29, - 0x26, - 0x2A, - 0x26, - 0x2B, - 0x26, - 0x2C, - 0x26, - 0x2D, - 0x26, - 0x2E, - 0x26, - 0x2F, - 0x26, - 0x30, - 0x26, - 0x28, - 0x27, - 0x29, - 0x27, - 0x2A, - 0x27, - 0x2B, - 0x27, - 0x2C, - 0x27, - 0x2D, - 0x27, - 0x2E, - 0x27, - 0x2F, - 0x27, - 0x30, - 0x27, - 0x28, - 0x28, - 0x29, - 0x28, - 0x2A, - 0x28, - 0x2B, - 0x28, - 0x2C, - 0x28, - 0x2D, - 0x28, - 0x2E, - 0x28, - 0x2F, - 0x28, - 0x30, - 0x28, - 0x29, - 0x29, - 0x2A, - 0x29, - 0x2B, - 0x29, - 0x2C, - 0x29, - 0x2D, - 0x29, - 0x2E, - 0x29, - 0x2F, - 0x29, - 0x2B, - 0x2A, - 0x2C, - 0x2A, - 0x2D, - 0x2A, - 0xFF, - 0xFF }; +const struct UnkStruct_02006D98_3 UNK_020ECDCC[] = { +{0x2B,0x21}, +{0x2C,0x21}, +{0x2D,0x21}, +{0x29,0x22}, +{0x2A,0x22}, +{0x2B,0x22}, +{0x2C,0x22}, +{0x2D,0x22}, +{0x2E,0x22}, +{0x2F,0x22}, +{0x28,0x23}, +{0x29,0x23}, +{0x2A,0x23}, +{0x2B,0x23}, +{0x2C,0x23}, +{0x2D,0x23}, +{0x2E,0x23}, +{0x2F,0x23}, +{0x30,0x23}, +{0x28,0x24}, +{0x29,0x24}, +{0x2A,0x24}, +{0x2B,0x24}, +{0x2C,0x24}, +{0x2D,0x24}, +{0x2E,0x24}, +{0x2F,0x24}, +{0x30,0x24}, +{0x28,0x25}, +{0x29,0x25}, +{0x2A,0x25}, +{0x2B,0x25}, +{0x2C,0x25}, +{0x2D,0x25}, +{0x2E,0x25}, +{0x2F,0x25}, +{0x30,0x25}, +{0x28,0x26}, +{0x29,0x26}, +{0x2A,0x26}, +{0x2B,0x26}, +{0x2C,0x26}, +{0x2D,0x26}, +{0x2E,0x26}, +{0x2F,0x26}, +{0x30,0x26}, +{0x28,0x27}, +{0x29,0x27}, +{0x2A,0x27}, +{0x2B,0x27}, +{0x2C,0x27}, +{0x2D,0x27}, +{0x2E,0x27}, +{0x2F,0x27}, +{0x30,0x27}, +{0x28,0x28}, +{0x29,0x28}, +{0x2A,0x28}, +{0x2B,0x28}, +{0x2C,0x28}, +{0x2D,0x28}, +{0x2E,0x28}, +{0x2F,0x28}, +{0x30,0x28}, +{0x29,0x29}, +{0x2A,0x29}, +{0x2B,0x29}, +{0x2C,0x29}, +{0x2D,0x29}, +{0x2E,0x29}, +{0x2F,0x29}, +{0x2B,0x2A}, +{0x2C,0x2A}, +{0x2D,0x2A}, +{0xFF,0xFF}, +}; const int UNK_020ECBD0[4][4] = { { 160, 160, 224, 176 }, { 160, 160, 224, 176 }, { 160, 176, 224, 192 }, { 160, 192, 224, 208 } }; +const int UNK_020ECD4C[4][2][4] = { + { + {0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50} + }, { -// the structure should be something like that but the symbol order is all wrong this way. Let just dump the raw bytes for now. + {0, 0x50, 0x50, 0xA0}, {0x50, 0x50, 0xA0, 0xA0} -// const int UNK_020ECD4C[4][2][4] = { -// { -// {0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50} -// }, { + }, { -// {0, 0x50, 0x50, 0xA0}, {0x50, 0x50, 0xA0, 0xA0} + {0, 0xA0, 0x50, 0xF0}, {0x50, 0xA0, 0xA0, 0xF0} -// }, { + }, { -// {0, 0xA0, 0x50, 0xF0}, {0x50, 0xA0, 0xA0, 0xF0} + {0xA0, 0, 0xF0, 0x50}, {0xA0, 0x50, 0xF0, 0xA0} -// }, { - -// {0xA0, 0, 0xF0, 0x50}, {0xA0, 0x50, 0xF0, 0xA0} - -// } -// }; - -const u8 UNK_020ECD4C[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0xF0, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0xF0, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xF0, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, - 0x50, - 0x00, - 0x00, - 0x00, - 0xF0, - 0x00, - 0x00, - 0x00, - 0xA0, - 0x00, - 0x00, - 0x00, + } }; struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { - // ugly hack to fix extra padding added by the compiler - (struct UnkStruct_02006D98_3 *)(UNK_020ECCE0 + 2), - (struct UnkStruct_02006D98_3 *)UNK_020ECC78, - (struct UnkStruct_02006D98_3 *)UNK_020ECC10, - (struct UnkStruct_02006D98_3 *)UNK_020ECDCC, + UNK_020ECCE2, + UNK_020ECC78, + UNK_020ECC10, + UNK_020ECDCC, }; extern void NNS_G2dSetupSoftwareSpriteCamera(void); @@ -815,10 +449,10 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) if (param0->unk000[st18].unk54_1 != 0) { u32 r6 = param0->unk000[st18].unk44 + - (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0]; + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0]; u32 r12 = param0->unk000[st18].unk46; u32 r1 = param0->unk000[st18].unk45 + - (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1]; + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][1]; u32 r7 = param0->unk000[st18].unk47; u32 r0 = r12 + r6; @@ -846,10 +480,10 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) param0->unk000[st18].unk28 + param0->unk000[st18].unk30, arg3, arg4, - (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][0], - (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][1], - (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][2], - (*((int(*)[4][2][4]) & UNK_020ECD4C))[st18][param0->unk000[st18].unk5B][3]); + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0], + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][1], + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][2], + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][3]); } if (param0->unk000[st18].unk6C.unk0_0 == 0 || param0->unk000[st18].unk6C.unk0_5 == 0 || From 4e4192cd7007d16cefe00facbc7b721353c94f60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 31 Aug 2021 08:30:23 +0200 Subject: [PATCH 10/19] style fixes --- arm9/modules/63/src/mod63_021DB450.c | 4 +- arm9/src/unk_02006D98.c | 1103 +++++++++++--------------- include/unk_02006D98.h | 57 +- 3 files changed, 481 insertions(+), 683 deletions(-) diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index eb91f6ba6..f3608116f 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -14,7 +14,7 @@ extern void FUN_020132BC(u32 param0); extern void * FUN_02012CDC(void *, void *, void *, u32, u32, u32); -extern void FUN_02068C00(struct UnkStruct63_021DB49C*, u16, u32, u32, u32, u32, u32); +extern void FUN_02068C00(struct UnkStruct_02006D98_4*, u16, u32, u32, u32, u32, u32); extern void FUN_02012CC8(void); extern void Camera_SetPerspectiveClippingPlane(u32, u32, u32); extern u32 FUN_0201343C(void); @@ -64,7 +64,7 @@ THUMB_FUNC u32 MOD63_021DB498(void) THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg0) //TODO: this does a lot more than setup anim sprites { - struct UnkStruct63_021DB49C sp1C; + struct UnkStruct_02006D98_4 sp1C; int introMonArray[3] = {SPECIES_TURTWIG, SPECIES_CHIMCHAR, SPECIES_PIPLUP}; arg0->field_00 = FUN_02006D98(76); //this is needed to get into the world view, otherwise it is just black diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 0afa74370..9c3d766df 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -1,8 +1,9 @@ -#include "global.h" #include "unk_02006D98.h" + #include "MI_memory.h" #include "NNS_g2d.h" #include "filesystem.h" +#include "global.h" #include "heap.h" #include "mod63_021DB450.h" #include "palette.h" @@ -10,271 +11,269 @@ #include "registers.h" const struct UnkStruct_02006D98_3 UNK_020ECCE2[] = { -{0x1B,0x0F}, -{0x1C,0x0F}, -{0x1D,0x0F}, -{0x1E,0x0F}, -{0x1A,0x10}, -{0x1B,0x10}, -{0x1C,0x10}, -{0x1D,0x10}, -{0x1E,0x10}, -{0x1F,0x10}, -{0x19,0x11}, -{0x1A,0x11}, -{0x1B,0x11}, -{0x1C,0x11}, -{0x1D,0x11}, -{0x1E,0x11}, -{0x1F,0x11}, -{0x20,0x11}, -{0x19,0x12}, -{0x1A,0x12}, -{0x1B,0x12}, -{0x1C,0x12}, -{0x1D,0x12}, -{0x1E,0x12}, -{0x1F,0x12}, -{0x20,0x12}, -{0x19,0x13}, -{0x1A,0x13}, -{0x1B,0x13}, -{0x1C,0x13}, -{0x1D,0x13}, -{0x1E,0x13}, -{0x1F,0x13}, -{0x20,0x13}, -{0x19,0x14}, -{0x1A,0x14}, -{0x1B,0x14}, -{0x1C,0x14}, -{0x1D,0x14}, -{0x1E,0x14}, -{0x1F,0x14}, -{0x20,0x14}, -{0x1A,0x15}, -{0x1B,0x15}, -{0x1C,0x15}, -{0x1D,0x15}, -{0x1E,0x15}, -{0x1F,0x15}, -{0x1B,0x16}, -{0x1C,0x16}, -{0x1D,0x16}, -{0x1E,0x16}, -{0xFF,0xFF}, + {0x1B, 0x0F}, + {0x1C, 0x0F}, + {0x1D, 0x0F}, + {0x1E, 0x0F}, + {0x1A, 0x10}, + {0x1B, 0x10}, + {0x1C, 0x10}, + {0x1D, 0x10}, + {0x1E, 0x10}, + {0x1F, 0x10}, + {0x19, 0x11}, + {0x1A, 0x11}, + {0x1B, 0x11}, + {0x1C, 0x11}, + {0x1D, 0x11}, + {0x1E, 0x11}, + {0x1F, 0x11}, + {0x20, 0x11}, + {0x19, 0x12}, + {0x1A, 0x12}, + {0x1B, 0x12}, + {0x1C, 0x12}, + {0x1D, 0x12}, + {0x1E, 0x12}, + {0x1F, 0x12}, + {0x20, 0x12}, + {0x19, 0x13}, + {0x1A, 0x13}, + {0x1B, 0x13}, + {0x1C, 0x13}, + {0x1D, 0x13}, + {0x1E, 0x13}, + {0x1F, 0x13}, + {0x20, 0x13}, + {0x19, 0x14}, + {0x1A, 0x14}, + {0x1B, 0x14}, + {0x1C, 0x14}, + {0x1D, 0x14}, + {0x1E, 0x14}, + {0x1F, 0x14}, + {0x20, 0x14}, + {0x1A, 0x15}, + {0x1B, 0x15}, + {0x1C, 0x15}, + {0x1D, 0x15}, + {0x1E, 0x15}, + {0x1F, 0x15}, + {0x1B, 0x16}, + {0x1C, 0x16}, + {0x1D, 0x16}, + {0x1E, 0x16}, + {0xFF, 0xFF}, }; const struct UnkStruct_02006D98_3 UNK_020ECC78[] = { -{0x33,0x11}, -{0x34,0x11}, -{0x35,0x11}, -{0x36,0x11}, -{0x32,0x12}, -{0x33,0x12}, -{0x34,0x12}, -{0x35,0x12}, -{0x36,0x12}, -{0x37,0x12}, -{0x31,0x13}, -{0x32,0x13}, -{0x33,0x13}, -{0x34,0x13}, -{0x35,0x13}, -{0x36,0x13}, -{0x37,0x13}, -{0x38,0x13}, -{0x31,0x14}, -{0x32,0x14}, -{0x33,0x14}, -{0x34,0x14}, -{0x35,0x14}, -{0x36,0x14}, -{0x37,0x14}, -{0x38,0x14}, -{0x31,0x15}, -{0x32,0x15}, -{0x33,0x15}, -{0x34,0x15}, -{0x35,0x15}, -{0x36,0x15}, -{0x37,0x15}, -{0x38,0x15}, -{0x31,0x16}, -{0x32,0x16}, -{0x33,0x16}, -{0x34,0x16}, -{0x35,0x16}, -{0x36,0x16}, -{0x37,0x16}, -{0x38,0x16}, -{0x32,0x17}, -{0x33,0x17}, -{0x34,0x17}, -{0x35,0x17}, -{0x36,0x17}, -{0x37,0x17}, -{0x33,0x18}, -{0x34,0x18}, -{0x35,0x18}, -{0x36,0x18}, -{0xFF,0xFF}, + {0x33, 0x11}, + {0x34, 0x11}, + {0x35, 0x11}, + {0x36, 0x11}, + {0x32, 0x12}, + {0x33, 0x12}, + {0x34, 0x12}, + {0x35, 0x12}, + {0x36, 0x12}, + {0x37, 0x12}, + {0x31, 0x13}, + {0x32, 0x13}, + {0x33, 0x13}, + {0x34, 0x13}, + {0x35, 0x13}, + {0x36, 0x13}, + {0x37, 0x13}, + {0x38, 0x13}, + {0x31, 0x14}, + {0x32, 0x14}, + {0x33, 0x14}, + {0x34, 0x14}, + {0x35, 0x14}, + {0x36, 0x14}, + {0x37, 0x14}, + {0x38, 0x14}, + {0x31, 0x15}, + {0x32, 0x15}, + {0x33, 0x15}, + {0x34, 0x15}, + {0x35, 0x15}, + {0x36, 0x15}, + {0x37, 0x15}, + {0x38, 0x15}, + {0x31, 0x16}, + {0x32, 0x16}, + {0x33, 0x16}, + {0x34, 0x16}, + {0x35, 0x16}, + {0x36, 0x16}, + {0x37, 0x16}, + {0x38, 0x16}, + {0x32, 0x17}, + {0x33, 0x17}, + {0x34, 0x17}, + {0x35, 0x17}, + {0x36, 0x17}, + {0x37, 0x17}, + {0x33, 0x18}, + {0x34, 0x18}, + {0x35, 0x18}, + {0x36, 0x18}, + {0xFF, 0xFF}, }; const struct UnkStruct_02006D98_3 UNK_020ECC10[] = { -{0x1E,0x21}, -{0x1F,0x21}, -{0x20,0x21}, -{0x1D,0x22}, -{0x1E,0x22}, -{0x1F,0x22}, -{0x20,0x22}, -{0x21,0x22}, -{0x1C,0x23}, -{0x1D,0x23}, -{0x1E,0x23}, -{0x1F,0x23}, -{0x20,0x23}, -{0x21,0x23}, -{0x22,0x23}, -{0x1C,0x24}, -{0x1D,0x24}, -{0x1E,0x24}, -{0x1F,0x24}, -{0x20,0x24}, -{0x21,0x24}, -{0x22,0x24}, -{0x1C,0x25}, -{0x1D,0x25}, -{0x1E,0x25}, -{0x1F,0x25}, -{0x20,0x25}, -{0x21,0x25}, -{0x22,0x25}, -{0x1C,0x26}, -{0x1D,0x26}, -{0x1E,0x26}, -{0x1F,0x26}, -{0x20,0x26}, -{0x21,0x26}, -{0x22,0x26}, -{0x1C,0x27}, -{0x1D,0x27}, -{0x1E,0x27}, -{0x1F,0x27}, -{0x20,0x27}, -{0x21,0x27}, -{0x22,0x27}, -{0x1D,0x28}, -{0x1E,0x28}, -{0x1F,0x28}, -{0x20,0x28}, -{0x21,0x28}, -{0x1E,0x29}, -{0x1F,0x29}, -{0x20,0x29}, -{0xFF,0xFF}, + {0x1E, 0x21}, + {0x1F, 0x21}, + {0x20, 0x21}, + {0x1D, 0x22}, + {0x1E, 0x22}, + {0x1F, 0x22}, + {0x20, 0x22}, + {0x21, 0x22}, + {0x1C, 0x23}, + {0x1D, 0x23}, + {0x1E, 0x23}, + {0x1F, 0x23}, + {0x20, 0x23}, + {0x21, 0x23}, + {0x22, 0x23}, + {0x1C, 0x24}, + {0x1D, 0x24}, + {0x1E, 0x24}, + {0x1F, 0x24}, + {0x20, 0x24}, + {0x21, 0x24}, + {0x22, 0x24}, + {0x1C, 0x25}, + {0x1D, 0x25}, + {0x1E, 0x25}, + {0x1F, 0x25}, + {0x20, 0x25}, + {0x21, 0x25}, + {0x22, 0x25}, + {0x1C, 0x26}, + {0x1D, 0x26}, + {0x1E, 0x26}, + {0x1F, 0x26}, + {0x20, 0x26}, + {0x21, 0x26}, + {0x22, 0x26}, + {0x1C, 0x27}, + {0x1D, 0x27}, + {0x1E, 0x27}, + {0x1F, 0x27}, + {0x20, 0x27}, + {0x21, 0x27}, + {0x22, 0x27}, + {0x1D, 0x28}, + {0x1E, 0x28}, + {0x1F, 0x28}, + {0x20, 0x28}, + {0x21, 0x28}, + {0x1E, 0x29}, + {0x1F, 0x29}, + {0x20, 0x29}, + {0xFF, 0xFF}, }; const struct UnkStruct_02006D98_3 UNK_020ECDCC[] = { -{0x2B,0x21}, -{0x2C,0x21}, -{0x2D,0x21}, -{0x29,0x22}, -{0x2A,0x22}, -{0x2B,0x22}, -{0x2C,0x22}, -{0x2D,0x22}, -{0x2E,0x22}, -{0x2F,0x22}, -{0x28,0x23}, -{0x29,0x23}, -{0x2A,0x23}, -{0x2B,0x23}, -{0x2C,0x23}, -{0x2D,0x23}, -{0x2E,0x23}, -{0x2F,0x23}, -{0x30,0x23}, -{0x28,0x24}, -{0x29,0x24}, -{0x2A,0x24}, -{0x2B,0x24}, -{0x2C,0x24}, -{0x2D,0x24}, -{0x2E,0x24}, -{0x2F,0x24}, -{0x30,0x24}, -{0x28,0x25}, -{0x29,0x25}, -{0x2A,0x25}, -{0x2B,0x25}, -{0x2C,0x25}, -{0x2D,0x25}, -{0x2E,0x25}, -{0x2F,0x25}, -{0x30,0x25}, -{0x28,0x26}, -{0x29,0x26}, -{0x2A,0x26}, -{0x2B,0x26}, -{0x2C,0x26}, -{0x2D,0x26}, -{0x2E,0x26}, -{0x2F,0x26}, -{0x30,0x26}, -{0x28,0x27}, -{0x29,0x27}, -{0x2A,0x27}, -{0x2B,0x27}, -{0x2C,0x27}, -{0x2D,0x27}, -{0x2E,0x27}, -{0x2F,0x27}, -{0x30,0x27}, -{0x28,0x28}, -{0x29,0x28}, -{0x2A,0x28}, -{0x2B,0x28}, -{0x2C,0x28}, -{0x2D,0x28}, -{0x2E,0x28}, -{0x2F,0x28}, -{0x30,0x28}, -{0x29,0x29}, -{0x2A,0x29}, -{0x2B,0x29}, -{0x2C,0x29}, -{0x2D,0x29}, -{0x2E,0x29}, -{0x2F,0x29}, -{0x2B,0x2A}, -{0x2C,0x2A}, -{0x2D,0x2A}, -{0xFF,0xFF}, + {0x2B, 0x21}, + {0x2C, 0x21}, + {0x2D, 0x21}, + {0x29, 0x22}, + {0x2A, 0x22}, + {0x2B, 0x22}, + {0x2C, 0x22}, + {0x2D, 0x22}, + {0x2E, 0x22}, + {0x2F, 0x22}, + {0x28, 0x23}, + {0x29, 0x23}, + {0x2A, 0x23}, + {0x2B, 0x23}, + {0x2C, 0x23}, + {0x2D, 0x23}, + {0x2E, 0x23}, + {0x2F, 0x23}, + {0x30, 0x23}, + {0x28, 0x24}, + {0x29, 0x24}, + {0x2A, 0x24}, + {0x2B, 0x24}, + {0x2C, 0x24}, + {0x2D, 0x24}, + {0x2E, 0x24}, + {0x2F, 0x24}, + {0x30, 0x24}, + {0x28, 0x25}, + {0x29, 0x25}, + {0x2A, 0x25}, + {0x2B, 0x25}, + {0x2C, 0x25}, + {0x2D, 0x25}, + {0x2E, 0x25}, + {0x2F, 0x25}, + {0x30, 0x25}, + {0x28, 0x26}, + {0x29, 0x26}, + {0x2A, 0x26}, + {0x2B, 0x26}, + {0x2C, 0x26}, + {0x2D, 0x26}, + {0x2E, 0x26}, + {0x2F, 0x26}, + {0x30, 0x26}, + {0x28, 0x27}, + {0x29, 0x27}, + {0x2A, 0x27}, + {0x2B, 0x27}, + {0x2C, 0x27}, + {0x2D, 0x27}, + {0x2E, 0x27}, + {0x2F, 0x27}, + {0x30, 0x27}, + {0x28, 0x28}, + {0x29, 0x28}, + {0x2A, 0x28}, + {0x2B, 0x28}, + {0x2C, 0x28}, + {0x2D, 0x28}, + {0x2E, 0x28}, + {0x2F, 0x28}, + {0x30, 0x28}, + {0x29, 0x29}, + {0x2A, 0x29}, + {0x2B, 0x29}, + {0x2C, 0x29}, + {0x2D, 0x29}, + {0x2E, 0x29}, + {0x2F, 0x29}, + {0x2B, 0x2A}, + {0x2C, 0x2A}, + {0x2D, 0x2A}, + {0xFF, 0xFF}, }; const int UNK_020ECBD0[4][4] = { - { 160, 160, 224, 176 }, { 160, 160, 224, 176 }, { 160, 176, 224, 192 }, { 160, 192, 224, 208 } -}; + {160, 160, 224, 176}, {160, 160, 224, 176}, {160, 176, 224, 192}, {160, 192, 224, 208}}; const int UNK_020ECD4C[4][2][4] = { + {{0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50}}, { + + {0, 0x50, 0x50, 0xA0}, {0x50, 0x50, 0xA0, 0xA0} + + }, { - {0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50} - }, { - - {0, 0x50, 0x50, 0xA0}, {0x50, 0x50, 0xA0, 0xA0} - - }, { {0, 0xA0, 0x50, 0xF0}, {0x50, 0xA0, 0xA0, 0xF0} - }, { + }, + { - {0xA0, 0, 0xF0, 0x50}, {0xA0, 0x50, 0xF0, 0xA0} + {0xA0, 0, 0xF0, 0x50}, {0xA0, 0x50, 0xF0, 0xA0} - } -}; + }}; struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { UNK_020ECCE2, @@ -286,17 +285,16 @@ struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { extern void NNS_G2dSetupSoftwareSpriteCamera(void); extern void NNS_G3dGeFlushBuffer(); extern void NNS_G2dDrawSpriteFast(s16 param0, - s16 param1, - int param2, - int param3, - int param4, - int param5, - int param6, - int param7, - int param8); + s16 param1, + int param2, + int param3, + int param4, + int param5, + int param6, + int param7, + int param8); -THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) -{ +THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) { struct UnkStruct_02006D98 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006D98)); ptr->unk298 = heap_id; ptr->unk2E0 = 0; @@ -313,8 +311,7 @@ THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) ptr->unk2B4 = AllocFromHeap(heap_id, 0xc0); MIi_CpuClearFast(0, ptr->unk2B4, 4); - for (int i = 0; i < 4; i++) - { + for (int i = 0; i < 4; i++) { MIi_CpuClearFast(0, &ptr->unk000[i], sizeof(struct UnkStruct_02006D98_2)); } @@ -335,10 +332,8 @@ THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) FUN_02008A74(st8); MI_CpuFill8(ptr->unk2AC, *st8, 0x8000); - for (int i = 0; i < 0x50; i++) - { - for (int j = 0; j < 0x28; j++) - { + for (int i = 0; i < 0x50; i++) { + for (int j = 0; j < 0x28; j++) { ((u8 *)ptr->unk2AC)[0x5050 + i * 0x80 + j] = st8[i * 0x50 + j]; } } @@ -353,8 +348,7 @@ THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) #ifdef NONMATCHING // mostly matching, only 2 register writes messed up -THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) -{ +THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { s32 arg3; s32 arg4; @@ -370,35 +364,28 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) (param0->unk260.attr.sizeS << 20) | (param0->unk260.attr.sizeT << 23) | (param0->unk260.attr.plttUse << 29); - for (int st18 = 0; st18 < 4; st18++) - { + for (int st18 = 0; st18 < 4; st18++) { if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || - param0->unk000[st18].unk54_B != 0) - { + param0->unk000[st18].unk54_B != 0) { continue; } - if (param0->unk000[st18].unk68 != NULL) - { + if (param0->unk000[st18].unk68 != NULL) { param0->unk000[st18].unk68(¶m0->unk000[st18], ¶m0->unk000[st18].unk24); } NNS_G3dGeFlushBuffer(); - if (param0->unk2E3 != 1) - { + if (param0->unk2E3 != 1) { reg_G3_MTX_IDENTITY = 0; } FUN_02007F48(¶m0->unk000[st18]); u32 shift; - if (param0->unk260.attr.fmt == 2) - { + if (param0->unk260.attr.fmt == 2) { shift = 1; - } - else - { + } else { shift = 0; } @@ -434,7 +421,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) (param0->unk000[st18].unk50_a << 10))) | (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14 << 5) | (param0->unk000[st18].unk50_19 << 10))) - << 16) | + << 16) | 0x8000; reg_G3_SPE_EMI = 0x4210; @@ -446,8 +433,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) reg_G3_POLYGON_ATTR = 0xc0 | (r1 << 24) | (r0 << 16); } - if (param0->unk000[st18].unk54_1 != 0) - { + if (param0->unk000[st18].unk54_1 != 0) { u32 r6 = param0->unk000[st18].unk44 + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0]; u32 r12 = param0->unk000[st18].unk46; @@ -458,18 +444,16 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) NNS_G2dDrawSpriteFast(param0->unk000[st18].unk24 - 40 + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C, - param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + - param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, - param0->unk000[st18].unk28 + param0->unk000[st18].unk30, - r12, - r7, - r6, - r1, - r0, - r7 + r1); - } - else - { + param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + + param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, + param0->unk000[st18].unk28 + param0->unk000[st18].unk30, + r12, + r7, + r6, + r1, + r0, + r7 + r1); + } else { arg3 = (param0->unk000[st18].unk34 * 80) >> 8; arg4 = (param0->unk000[st18].unk36 * 80) >> 8; @@ -487,69 +471,58 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) } if (param0->unk000[st18].unk6C.unk0_0 == 0 || param0->unk000[st18].unk6C.unk0_5 == 0 || - param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) - { + param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { continue; } - if (param0->unk2E3 != 1) - { + if (param0->unk2E3 != 1) { reg_G3_MTX_IDENTITY = 0; } u32 shift2; - if (param0->unk260.attr.fmt == 2) - { + if (param0->unk260.attr.fmt == 2) { shift2 = 1; - } - else - { + } else { shift2 = 0; } reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C.unk0_0 + 3) << 5)) >> (4 - shift2); - if (param0->unk000[st18].unk6C.unk0_4 != 0) - { + if (param0->unk000[st18].unk6C.unk0_4 != 0) { arg3 = (param0->unk000[st18].unk34 * 64) >> 8; arg4 = (param0->unk000[st18].unk36 * 16) >> 8; - } - else - { + } else { arg3 = 64; arg4 = 16; } - if (param0->unk000[st18].unk6C.unk0_2 != 0) - { + if (param0->unk000[st18].unk6C.unk0_2 != 0) { param0->unk000[st18].unk6C.unk4 = param0->unk000[st18].unk24 + param0->unk000[st18].unk2C + param0->unk000[st18].unk6C.unk8; } - if (param0->unk000[st18].unk6C.unk0_3 != 0) - { + if (param0->unk000[st18].unk6C.unk0_3 != 0) { param0->unk000[st18].unk6C.unk6 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk6C.unka; } NNS_G2dDrawSpriteFast(param0->unk000[st18].unk6C.unk4 - (arg3 / 2), - param0->unk000[st18].unk6C.unk4 - (arg4 / 2), - 0xFFFFFC18, - arg3, - arg4, - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][0], - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][1], - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][2], - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3]); + param0->unk000[st18].unk6C.unk4 - (arg4 / 2), + 0xFFFFFC18, + arg3, + arg4, + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][0], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][1], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][2], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3]); } reg_G3_MTX_POP = 1; } #else -asm void FUN_02006ED4(struct UnkStruct_02006D98 *param0) -{ +asm void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { // clang-format off push {r3-r7, lr} sub sp, #0x20 @@ -1058,23 +1031,19 @@ _020072D6: } #endif -THUMB_FUNC void FUN_020072E8(struct UnkStruct_02006D98 *param0) -{ +THUMB_FUNC void FUN_020072E8(struct UnkStruct_02006D98 *param0) { FreeToHeap(param0->unk2AC); FreeToHeap(param0->unk2B0); FreeToHeap(param0->unk2B4); FreeToHeap(param0); } -THUMB_FUNC void FUN_02007314(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC void FUN_02007314(struct UnkStruct_02006D98_2 *param0) { param0->unk59 = 0; - for (s32 i = 0; i < 10; i++) - { + for (s32 i = 0; i < 10; i++) { param0->unk5C[i] = 0; } - if (param0->unk84[param0->unk59].unk0 == -1) - { + if (param0->unk84[param0->unk59].unk0 == -1) { param0->unk5B = 0; return; } @@ -1084,34 +1053,28 @@ THUMB_FUNC void FUN_02007314(struct UnkStruct_02006D98_2 *param0) param0->unk5A = param0->unk84[param0->unk59].unk1; } -THUMB_FUNC void FUN_0200737C(struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1) -{ +THUMB_FUNC void FUN_0200737C(struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1) { MI_CpuCopy8(param1, param0->unk84, sizeof(struct UnkStruct_02006D98_sub) * 10); } -THUMB_FUNC BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0) -{ - if (param0->unk58 != 0) - { +THUMB_FUNC BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0) { + if (param0->unk58 != 0) { return TRUE; } return FALSE; } THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 *param0, - struct UnkStruct63_021DB49C *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - const void *param6, - void (*param7)(struct UnkStruct_02006D98_2 *, void *)) -{ + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + const void *param6, + void (*param7)(struct UnkStruct_02006D98_2 *, void *)) { s32 i; - for (i = 0; i < 4; i++) - { - if (param0->unk000[i].unk00_0 == 0) - { + for (i = 0; i < 4; i++) { + if (param0->unk000[i].unk00_0 == 0) { break; } } @@ -1121,15 +1084,14 @@ THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 * } THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 *param0, - struct UnkStruct63_021DB49C *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - s32 param6, - const void *param7, - void (*param8)(struct UnkStruct_02006D98_2 *, void *)) -{ + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6, + const void *param7, + void (*param8)(struct UnkStruct_02006D98_2 *, void *)) { GF_ASSERT(param0->unk000[param6].unk00_0 == 0); MIi_CpuClearFast(0, ¶m0->unk000[param6], sizeof(struct UnkStruct_02006D98_2)); @@ -1159,31 +1121,25 @@ THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 * param0->unk000[param6].unk6C.unk0_3 = 1; param0->unk000[param6].unk6C.unk0_4 = 1; - if (param7 != NULL) - { + if (param7 != NULL) { MI_CpuCopy8(param7, param0->unk000[param6].unk84, 0x14); } return ¶m0->unk000[param6]; } -THUMB_FUNC void FUN_02007534(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC void FUN_02007534(struct UnkStruct_02006D98_2 *param0) { param0->unk00_0 = 0; } -THUMB_FUNC void FUN_02007540(struct UnkStruct_02006D98 *param0) -{ - for (s32 i = 0; i < 4; i++) - { +THUMB_FUNC void FUN_02007540(struct UnkStruct_02006D98 *param0) { + for (s32 i = 0; i < 4; i++) { FUN_02007534(¶m0->unk000[i]); } } -THUMB_FUNC void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) -{ - switch (param1) - { +THUMB_FUNC void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) { + switch (param1) { case 0: param0->unk24 = (s16)param2; break; @@ -1333,10 +1289,8 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u3 } } -THUMB_FUNC u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1) -{ - switch (param1) - { +THUMB_FUNC u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1) { + switch (param1) { case 0: return param0->unk24; @@ -1481,10 +1435,8 @@ THUMB_FUNC u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1) return 0; } -THUMB_FUNC void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) -{ - switch (param1) - { +THUMB_FUNC void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) { + switch (param1) { case 0: param0->unk24 += param2; break; @@ -1635,8 +1587,7 @@ THUMB_FUNC void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u3 } THUMB_FUNC void FUN_02007E40( - struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) -{ + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { param0->unk54_1 = 1; param0->unk44 = (u8)param1; param0->unk45 = (u8)param2; @@ -1645,8 +1596,7 @@ THUMB_FUNC void FUN_02007E40( } THUMB_FUNC void FUN_02007E68( - struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) -{ + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { param0->unk54_C = 1; param0->unk48 = (u8)param1; param0->unk49 = (u8)param2; @@ -1656,12 +1606,9 @@ THUMB_FUNC void FUN_02007E68( } THUMB_FUNC void FUN_02007E98( - struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4) -{ - for (s32 i = 0; i < 4; i++) - { - if (param0->unk000[i].unk00_0 == 0) - { + struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { + for (s32 i = 0; i < 4; i++) { + if (param0->unk000[i].unk00_0 == 0) { continue; } @@ -1674,8 +1621,7 @@ THUMB_FUNC void FUN_02007E98( } } -THUMB_FUNC void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0) { param0->unk54_C = 0; param0->unk48 = 0; param0->unk49 = 0; @@ -1685,46 +1631,36 @@ THUMB_FUNC void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0) param0->unk00_8 = 1; } -THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0) { return param0->unk54_C == 1; } -THUMB_FUNC void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1) -{ +THUMB_FUNC void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1) { param0->unk2E = (s16)((40 - param1) - (((40 - param1) * param0->unk36) >> 8)); } #ifdef NONMATCHING -THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { u8 *r6 = ¶m0->unk59; - if (param0->unk58 == 0) - { + if (param0->unk58 == 0) { return; } - if (param0->unk5A == 0) - { + if (param0->unk5A == 0) { (*r6)++; - while (param0->unk84[*r6].unk0 < -1) - { + while (param0->unk84[*r6].unk0 < -1) { param0->unk5C[*r6]++; - if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) - { + if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) { param0->unk5C[*r6] = 0; r6++; - } - else - { + } else { *r6 = -2 - param0->unk84[*r6].unk0; } } - if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) - { + if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) { param0->unk5B = 0; param0->unk58 = 0; @@ -1733,15 +1669,12 @@ THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) param0->unk5B = param0->unk84[*r6].unk0; param0->unk5A = param0->unk84[*r6].unk1; - } - else - { + } else { param0->unk5A--; } } #else -asm void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) -{ +asm void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { // clang-format off push {r4-r7} add r1, r0, #0x0 @@ -1855,60 +1788,45 @@ _0200800A: } #endif -THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1) -{ +THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1) { param0[0] = 1; param0[2] = 0; param0[1] = (u8)param1->unk0; param0[3] = param1->unk1; ((struct UnkStruct_02006D98_sub **)param0)[4] = param1; - for (s32 i = 0; i < 10; i++) - { + for (s32 i = 0; i < 10; i++) { param0[i + 4] = 0; } } #ifdef NONMATCHING -THUMB_FUNC s32 FUN_02008030(u8 *param0) -{ - if (*param0 != 0) - { +THUMB_FUNC s32 FUN_02008030(u8 *param0) { + if (*param0 != 0) { u8 *r3 = param0 + 2; struct UnkStruct_02006D98_sub *r4 = ((struct UnkStruct_02006D98_sub **)param0)[4]; - if (*param0 != 0) - { - if (param0[3] == 0) - { + if (*param0 != 0) { + if (param0[3] == 0) { (*r3)++; - while (r4[*r3].unk0 < -1) - { + while (r4[*r3].unk0 < -1) { param0[*r3 + 4]++; - if (r4[*r3].unk1 == param0[*r3 + 4] || r4[*r3].unk1 == 0) - { + if (r4[*r3].unk1 == param0[*r3 + 4] || r4[*r3].unk1 == 0) { param0[*r3 + 4] = 0; r3++; - } - else - { + } else { *r3 = -2 - r4[*r3].unk0; } } - if (r4[*r3].unk0 == -1 || *r3 >= 10) - { + if (r4[*r3].unk0 == -1 || *r3 >= 10) { param0[0] = 0; param0[1] = 0; - } - else - { + } else { param0[1] = r4[*r3].unk0; param0[3] = r4[*r3].unk1; } - } - else - { + } else { param0[3]--; } } @@ -1919,8 +1837,7 @@ THUMB_FUNC s32 FUN_02008030(u8 *param0) return -1; } #else -asm s32 FUN_02008030(u8 *param0) -{ +asm s32 FUN_02008030(u8 *param0) { // clang-format off push {r4-r7} ldrb r1, [r0, #0x0] @@ -2015,47 +1932,39 @@ _020080C6: } #endif -THUMB_FUNC void FUN_020080D0(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC void FUN_020080D0(struct UnkStruct_02006D98_2 *param0) { param0->unk00_7 = 1; param0->unk00_8 = 1; } -THUMB_FUNC void FUN_020080E0(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC void FUN_020080E0(struct UnkStruct_02006D98_2 *param0) { param0->unk14 = param0->unk04; param0->unk78 = param0->unk6C; } -THUMB_FUNC void FUN_0200813C(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC void FUN_0200813C(struct UnkStruct_02006D98_2 *param0) { param0->unk04 = param0->unk14; param0->unk6C = param0->unk78; param0->unk00_7 = 1; param0->unk00_8 = 1; } -THUMB_FUNC void FUN_020081A8(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) -{ +THUMB_FUNC void FUN_020081A8(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) { param0->unk29C = param1; param0->unk2A0 = param2; } -THUMB_FUNC void FUN_020081B4(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) -{ +THUMB_FUNC void FUN_020081B4(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) { param0->unk2A4 = param1; param0->unk2A8 = param2; } -THUMB_FUNC u32 FUN_020081C0(u32 param0) -{ +THUMB_FUNC u32 FUN_020081C0(u32 param0) { return param0 + 4; } -THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) -{ - if (param0->unk2E1 != 0) - { +THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) { + if (param0->unk2E1 != 0) { param0->unk2E1 = 0; NNS_G2dInitImageProxy(¶m0->unk260); @@ -2068,8 +1977,7 @@ THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) ¶m0->unk2B8, param0->unk29C, NNS_G2D_VRAM_TYPE_3DMAIN, ¶m0->unk260); } - if (param0->unk2E2 != 0) - { + if (param0->unk2E2 != 0) { param0->unk2E2 = 0; NNS_G2dInitImagePaletteProxy(¶m0->unk284); @@ -2081,29 +1989,24 @@ THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) } } -THUMB_FUNC void FUN_0200825C(struct UnkStruct_02006D98 *param0, u8 param1) -{ +THUMB_FUNC void FUN_0200825C(struct UnkStruct_02006D98 *param0, u8 param1) { param0->unk2E3 = param1; } -THUMB_FUNC BOOL FUN_02008268(struct UnkStruct_02006D98_2 *param0) -{ +THUMB_FUNC BOOL FUN_02008268(struct UnkStruct_02006D98_2 *param0) { GF_ASSERT(param0); return param0->unk00_0 != 0; } -THUMB_FUNC void FUN_02008284(struct UnkStruct_02006D98 *param0, u32 param1) -{ +THUMB_FUNC void FUN_02008284(struct UnkStruct_02006D98 *param0, u32 param1) { param0->unk2E4 |= param1; } -THUMB_FUNC void FUN_02008290(struct UnkStruct_02006D98 *param0, u32 param1) -{ +THUMB_FUNC void FUN_02008290(struct UnkStruct_02006D98 *param0, u32 param1) { param0->unk2E4 &= (param1 ^ ~0); } -THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) -{ +THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) { NNSG2dCharacterData *st58; int st54; int r4; @@ -2112,15 +2015,13 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) void *st4c; u8 st48 = 0; - for (st54 = 0; st54 < 4; st54++) - { - if (param0->unk000[st54].unk00_0 != 0 && param0->unk000[st54].unk00_7 != 0) - { + for (st54 = 0; st54 < 4; st54++) { + if (param0->unk000[st54].unk00_0 != 0 && param0->unk000[st54].unk00_7 != 0) { param0->unk000[st54].unk00_7 = 0; st48 = 1; st4c = AllocAndReadWholeNarcMemberByIdPair((NarcId)param0->unk000[st54].unk04.field_00, - param0->unk000[st54].unk04.field_02, - param0->unk298); + param0->unk000[st54].unk04.field_02, + param0->unk298); NNS_G2dGetUnpackedCharacterData(st4c, &st58); param0->unk2B8.pixelFmt = st58->pixelFmt; param0->unk2B8.mapingType = st58->mapingType; @@ -2130,159 +2031,101 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) FUN_02008A74(st50); FUN_020088EC(¶m0->unk000[st54], st50); - if (st54 == 3) - { - for (st14 = 0; st14 < 0x50; st14++) - { - for (r4 = 0; r4 < 0x50; r4++) - { - if (r4 < 0x28) - { + if (st54 == 3) { + for (st14 = 0; st14 < 0x50; st14++) { + for (r4 = 0; r4 < 0x50; r4++) { + if (r4 < 0x28) { if (param0->unk000[st54].unk54_9 != 0 && - param0->unk000[st54].unk54_A != 0) - { + param0->unk000[st54].unk54_A != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x27 - r4)]); - } - else if (param0->unk000[st54].unk54_9 != 0) - { + } else if (param0->unk000[st54].unk54_9 != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = FUN_020088D8(st50[st14 * 0x50 + (0x27 - r4)]); - } - else if (param0->unk000[st54].unk54_A != 0) - { + } else if (param0->unk000[st54].unk54_A != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = st50[(0x4f - st14) * 0x50 + r4]; - } - else if (param0->unk000[st54].unk54_D != 0) - { - if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) - { + } else if (param0->unk000[st54].unk54_D != 0) { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = param0->unk2AC[(st14 - 1) * 0x80 + r4 + 0x50]; - } - else if (r4 % param0->unk000[st54].unk54_D != 0) - { + } else if (r4 % param0->unk000[st54].unk54_D != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = param0->unk2AC[st14 * 0x80 + r4 + 0x4f]; - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = (u8)((st50[st14 * 0x50 + r4] & 0xf) | ((st50[st14 * 0x50 + r4] & 0xf) << 4)); } - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = st50[st14 * 0x50 + r4]; } - } - else - { + } else { //_02008442 if (param0->unk000[st54].unk54_9 != 0 && - param0->unk000[st54].unk54_A != 0) - { + param0->unk000[st54].unk54_A != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x4f - (r4 - 0x28))]); - } - else if (param0->unk000[st54].unk54_9 != 0) - { + } else if (param0->unk000[st54].unk54_9 != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = FUN_020088D8(st50[st14 * 0x50 + (0x4f - (r4 - 0x28))]); - } - else if (param0->unk000[st54].unk54_A != 0) - { + } else if (param0->unk000[st54].unk54_A != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = st50[(0x4f - st14) * 0x50 + r4]; - } - else if (param0->unk000[st54].unk54_D != 0) - { - if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) - { + } else if (param0->unk000[st54].unk54_D != 0) { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = param0->unk2AC[(st14 - 1) * 0x80 + r4 + 0x2828]; - } - else if (r4 % param0->unk000[st54].unk54_D != 0) - { + } else if (r4 % param0->unk000[st54].unk54_D != 0) { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = param0->unk2AC[st14 * 0x80 + (r4 - 1) + 0x2828]; - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = (u8)((st50[st14 * 0x50 + r4] & 0xf) | ((st50[st14 * 0x50 + r4] & 0xf) << 4)); } - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = st50[st14 * 0x50 + r4]; } } } } - } - else - { + } else { //_02008554 - for (st14 = 0; st14 < 0x50; st14++) - { - for (r4 = 0; r4 < 0x50; r4++) - { - if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) - { - if (r4 < 0x28) - { + for (st14 = 0; st14 < 0x50; st14++) { + for (r4 = 0; r4 < 0x50; r4++) { + if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { + if (r4 < 0x28) { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x27 - r4)]); - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x4f - (r4 - 0x28))]); } - } - else if (param0->unk000[st54].unk54_9 != 0) - { - if (r4 < 0x28) - { + } else if (param0->unk000[st54].unk54_9 != 0) { + if (r4 < 0x28) { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[st14 * 0x50 + (0x27 - r4)]); - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[st14 * 0x50 + (0x4f - (r4 - 0x28))]); } - } - else if (param0->unk000[st54].unk54_A != 0) - { + } else if (param0->unk000[st54].unk54_A != 0) { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = st50[(0x4f - st14) * 0x50 + r4]; - } - else if (param0->unk000[st54].unk54_D != 0) - { - if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) - { + } else if (param0->unk000[st54].unk54_D != 0) { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = param0->unk2AC[(st14 - 1) * 0x80 + r4 + st54 * 0x2800]; - } - else if (r4 % (param0->unk000[st54].unk54_D) != 0) - { + } else if (r4 % (param0->unk000[st54].unk54_D) != 0) { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = param0->unk2AC[st14 * 0x80 + (r4 - 1) + st54 * 0x2800]; - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = (u8)((st50[st14 * 0x50 + r4] & 0xf) | ((st50[st14 * 0x50 + r4] & 0xf) << 4)); } - } - else - { + } else { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = st50[st14 * 0x50 + r4]; } @@ -2298,41 +2141,35 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) param0->unk2E1 = st48; } -THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) -{ +THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) { NNSG2dPaletteData *st18; int st14, r7; u16 *r1; void *st10; u8 stc = 0; - for (st14 = 0; st14 < 4; st14++) - { - if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk00_8 != 0) - { + for (st14 = 0; st14 < 4; st14++) { + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk00_8 != 0) { param0->unk000[st14].unk00_8 = 0; stc = 1; st10 = AllocAndReadWholeNarcMemberByIdPair((NarcId)param0->unk000[st14].unk04.field_00, - param0->unk000[st14].unk04.field_04, - param0->unk298); + param0->unk000[st14].unk04.field_04, + param0->unk298); NNS_G2dGetUnpackedPaletteData(st10, &st18); param0->unk2D0.fmt = st18->fmt; r1 = st18->pRawData; - for (r7 = 0; r7 < 0x10; r7++) - { + for (r7 = 0; r7 < 0x10; r7++) { param0->unk2B0[st14 * 0x10 + r7] = r1[r7]; param0->unk2B4[st14 * 0x10 + r7] = r1[r7]; } FreeToHeap(st10); - if (param0->unk000[st14].unk6C.unk0_0 != 0) - { + if (param0->unk000[st14].unk6C.unk0_0 != 0) { st10 = AllocAndReadWholeNarcMemberByIdPair( NARC_POKETOOL_POKEGRA_OTHERPOKE, NARC_otherpoke_narc_0212_NCLR, param0->unk298); NNS_G2dGetUnpackedPaletteData(st10, &st18); r1 = st18->pRawData; - for (r7 = 0; r7 < 0x10; r7++) - { + for (r7 = 0; r7 < 0x10; r7++) { param0->unk2B0[(param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10 + r7] = r1[r7]; param0->unk2B4[(param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10 + r7] = r1[r7]; } @@ -2341,42 +2178,32 @@ THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) } //_020087E0 - if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk54_C != 0) - { - if (param0->unk000[st14].unk4A == 0) - { + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk54_C != 0) { + if (param0->unk000[st14].unk4A == 0) { stc = 1; param0->unk000[st14].unk4A = param0->unk000[st14].unk4B; BlendPalette(param0->unk2B4 + st14 * 0x10, - param0->unk2B0 + st14 * 0x10, - 0x10, - param0->unk000[st14].unk48, - (u16)param0->unk000[st14].unk4C); + param0->unk2B0 + st14 * 0x10, + 0x10, + param0->unk000[st14].unk48, + (u16)param0->unk000[st14].unk4C); - if (param0->unk000[st14].unk6C.unk0_0 != 0) - { + if (param0->unk000[st14].unk6C.unk0_0 != 0) { BlendPalette(param0->unk2B4 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, - param0->unk2B0 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, - 0x10, - param0->unk000[st14].unk48, - (u16)param0->unk000[st14].unk4C); + param0->unk2B0 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, + 0x10, + param0->unk000[st14].unk48, + (u16)param0->unk000[st14].unk4C); } - if (param0->unk000[st14].unk48 == param0->unk000[st14].unk49) - { + if (param0->unk000[st14].unk48 == param0->unk000[st14].unk49) { param0->unk000[st14].unk54_C = 0; - } - else if (param0->unk000[st14].unk48 > param0->unk000[st14].unk49) - { + } else if (param0->unk000[st14].unk48 > param0->unk000[st14].unk49) { param0->unk000[st14].unk48--; - } - else - { + } else { param0->unk000[st14].unk48++; } - } - else - { + } else { param0->unk000[st14].unk4A--; } } @@ -2385,21 +2212,17 @@ THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) param0->unk2E2 = stc; } -THUMB_FUNC u8 FUN_020088D8(u8 param0) -{ +THUMB_FUNC u8 FUN_020088D8(u8 param0) { return (u8)(((u8)((param0 & 0xf0) >> 4)) | ((u8)(param0 << 4))); } -THUMB_FUNC void FUN_020088EC(struct UnkStruct_02006D98_2 *param0, u8 *param1) -{ - if (param0->unk04.field_06 != 0) - { +THUMB_FUNC void FUN_020088EC(struct UnkStruct_02006D98_2 *param0, u8 *param1) { + if (param0->unk04.field_06 != 0) { FUN_02008904(param1, param0->unk04.field_0C, 1); } } -THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) -{ +THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { struct UnkStruct_02006D98_3 *st10; s32 i; u32 r2; @@ -2408,26 +2231,19 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) u8 r1; u32 st0 = param1; - for (i = 0; i < 4; i++) - { + for (i = 0; i < 4; i++) { st10 = UNK_02105AE8[i]; r1 = 0; - while (st10[r1].unk0 != 0xff) - { + while (st10[r1].unk0 != 0xff) { r0 = (u8)(st10[r1].unk0 + ((param1 & 0xf) - 8)); r4 = (u8)(st10[r1].unk1 + (((param1 & 0xf0) >> 4) - 8)); r2 = (u32)(r0 / 2 + r4 * 0x50); - if ((r0 & 1) != 0) - { - if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) - { + if ((r0 & 1) != 0) { + if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) { param0[r2] += 0x50; } - } - else - { - if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) - { + } else { + if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) { param0[r2] += 5; } } @@ -2439,28 +2255,20 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) param1 = st0; - if (param2 != 0) - { - for (i = 0; i < 4; i++) - { + if (param2 != 0) { + for (i = 0; i < 4; i++) { st10 = UNK_02105AE8[i]; r1 = 0; - while (st10[r1].unk0 != 0xff) - { + while (st10[r1].unk0 != 0xff) { r0 = (u8)(st10[r1].unk0 - 14 + ((param1 & 0xf) - 8) + 0x50); r4 = (u8)(st10[r1].unk1 + (((param1 & 0xf0) >> 4) - 8)); r2 = (u32)(r0 / 2 + r4 * 0x50); - if ((r0 & 1) != 0) - { - if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) - { + if ((r0 & 1) != 0) { + if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) { param0[r2] += 0x50; } - } - else - { - if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) - { + } else { + if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) { param0[r2] += 5; } } @@ -2471,18 +2279,15 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) } } -THUMB_FUNC u16 FUN_02008A54(u32 *param0) -{ +THUMB_FUNC u16 FUN_02008A54(u32 *param0) { *param0 = (*param0) * 0x41C64E6D + 0x6073; return (u16)(*param0 >> 16); } -THUMB_FUNC void FUN_02008A74(u8 *param0) -{ +THUMB_FUNC void FUN_02008A74(u8 *param0) { u32 st0 = ((u16 *)param0)[0xc7f]; - for (s32 r4 = 0xc7f; r4 > -1; r4--) - { + for (s32 r4 = 0xc7f; r4 > -1; r4--) { ((u16 *)param0)[r4] ^= st0; FUN_02008A54(&st0); } diff --git a/include/unk_02006D98.h b/include/unk_02006D98.h index 04661ebda..fbb8c2c79 100644 --- a/include/unk_02006D98.h +++ b/include/unk_02006D98.h @@ -1,10 +1,9 @@ #ifndef POKEDIAMOND_UNK_02006D98_H #define POKEDIAMOND_UNK_02006D98_H -#include "global.h" #include "NNS_g2d.h" -struct UnkStruct63_021DB49C -{ +#include "global.h" +struct UnkStruct_02006D98_4 { u16 field_00; u16 field_02; u16 field_04; @@ -13,13 +12,11 @@ struct UnkStruct63_021DB49C u32 field_0C; }; -struct UnkStruct_02006D98_sub -{ +struct UnkStruct_02006D98_sub { s8 unk0; u8 unk1; }; -struct UnkStruct_02006D98_sub2 -{ +struct UnkStruct_02006D98_sub2 { u16 unk0_0 : 2; u16 unk0_2 : 1; u16 unk0_3 : 1; @@ -33,14 +30,13 @@ struct UnkStruct_02006D98_sub2 s16 unka; }; -struct UnkStruct_02006D98_2 -{ +struct UnkStruct_02006D98_2 { u32 unk00_0 : 1; u32 unk00_1 : 6; u32 unk00_7 : 1; u32 unk00_8 : 1; - struct UnkStruct63_021DB49C unk04; - struct UnkStruct63_021DB49C unk14; + struct UnkStruct_02006D98_4 unk04; + struct UnkStruct_02006D98_4 unk14; s16 unk24; s16 unk26; u32 unk28; @@ -91,8 +87,7 @@ struct UnkStruct_02006D98_2 struct UnkStruct_02006D98_sub unk84[10]; }; -struct UnkStruct_02006D98 -{ +struct UnkStruct_02006D98 { struct UnkStruct_02006D98_2 unk000[4]; NNSG2dImageProxy unk260; NNSG2dImagePaletteProxy unk284; @@ -113,8 +108,7 @@ struct UnkStruct_02006D98 u32 unk2E4; }; -struct UnkStruct_02006D98_3 -{ +struct UnkStruct_02006D98_3 { u8 unk0; u8 unk1; }; @@ -126,22 +120,22 @@ void FUN_02007314(struct UnkStruct_02006D98_2 *param0); void FUN_0200737C(struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1); BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0); struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 *param0, - struct UnkStruct63_021DB49C *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - const void *param6, - void (*param7)(struct UnkStruct_02006D98_2 *, void *)); + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + const void *param6, + void (*param7)(struct UnkStruct_02006D98_2 *, void *)); struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 *param0, - struct UnkStruct63_021DB49C *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - s32 param6, - const void *param7, - void (*param8)(struct UnkStruct_02006D98_2 *, void *)); + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6, + const void *param7, + void (*param8)(struct UnkStruct_02006D98_2 *, void *)); void FUN_02007534(struct UnkStruct_02006D98_2 *param0); void FUN_02007540(struct UnkStruct_02006D98 *param0); void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2); @@ -175,5 +169,4 @@ void FUN_02008904(u8 *param0, u32 param1, u32 param2); u16 FUN_02008A54(u32 *param0); void FUN_02008A74(u8 *param0); - -#endif // POKEDIAMOND_UNK_02006D98_H +#endif // POKEDIAMOND_UNK_02006D98_H From 1a63367f68ef1576162f97155ce426d091cb4395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 3 Sep 2021 19:59:32 +0200 Subject: [PATCH 11/19] fix format --- arm9/src/unk_02006D98.c | 1108 +++++++++++++++++++++++---------------- include/unk_02006D98.h | 61 ++- 2 files changed, 686 insertions(+), 483 deletions(-) diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 9c3d766df..83fea2f1e 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -1,9 +1,9 @@ #include "unk_02006D98.h" +#include "global.h" #include "MI_memory.h" #include "NNS_g2d.h" #include "filesystem.h" -#include "global.h" #include "heap.h" #include "mod63_021DB450.h" #include "palette.h" @@ -11,269 +11,270 @@ #include "registers.h" const struct UnkStruct_02006D98_3 UNK_020ECCE2[] = { - {0x1B, 0x0F}, - {0x1C, 0x0F}, - {0x1D, 0x0F}, - {0x1E, 0x0F}, - {0x1A, 0x10}, - {0x1B, 0x10}, - {0x1C, 0x10}, - {0x1D, 0x10}, - {0x1E, 0x10}, - {0x1F, 0x10}, - {0x19, 0x11}, - {0x1A, 0x11}, - {0x1B, 0x11}, - {0x1C, 0x11}, - {0x1D, 0x11}, - {0x1E, 0x11}, - {0x1F, 0x11}, - {0x20, 0x11}, - {0x19, 0x12}, - {0x1A, 0x12}, - {0x1B, 0x12}, - {0x1C, 0x12}, - {0x1D, 0x12}, - {0x1E, 0x12}, - {0x1F, 0x12}, - {0x20, 0x12}, - {0x19, 0x13}, - {0x1A, 0x13}, - {0x1B, 0x13}, - {0x1C, 0x13}, - {0x1D, 0x13}, - {0x1E, 0x13}, - {0x1F, 0x13}, - {0x20, 0x13}, - {0x19, 0x14}, - {0x1A, 0x14}, - {0x1B, 0x14}, - {0x1C, 0x14}, - {0x1D, 0x14}, - {0x1E, 0x14}, - {0x1F, 0x14}, - {0x20, 0x14}, - {0x1A, 0x15}, - {0x1B, 0x15}, - {0x1C, 0x15}, - {0x1D, 0x15}, - {0x1E, 0x15}, - {0x1F, 0x15}, - {0x1B, 0x16}, - {0x1C, 0x16}, - {0x1D, 0x16}, - {0x1E, 0x16}, - {0xFF, 0xFF}, + { 0x1B, 0x0F }, + { 0x1C, 0x0F }, + { 0x1D, 0x0F }, + { 0x1E, 0x0F }, + { 0x1A, 0x10 }, + { 0x1B, 0x10 }, + { 0x1C, 0x10 }, + { 0x1D, 0x10 }, + { 0x1E, 0x10 }, + { 0x1F, 0x10 }, + { 0x19, 0x11 }, + { 0x1A, 0x11 }, + { 0x1B, 0x11 }, + { 0x1C, 0x11 }, + { 0x1D, 0x11 }, + { 0x1E, 0x11 }, + { 0x1F, 0x11 }, + { 0x20, 0x11 }, + { 0x19, 0x12 }, + { 0x1A, 0x12 }, + { 0x1B, 0x12 }, + { 0x1C, 0x12 }, + { 0x1D, 0x12 }, + { 0x1E, 0x12 }, + { 0x1F, 0x12 }, + { 0x20, 0x12 }, + { 0x19, 0x13 }, + { 0x1A, 0x13 }, + { 0x1B, 0x13 }, + { 0x1C, 0x13 }, + { 0x1D, 0x13 }, + { 0x1E, 0x13 }, + { 0x1F, 0x13 }, + { 0x20, 0x13 }, + { 0x19, 0x14 }, + { 0x1A, 0x14 }, + { 0x1B, 0x14 }, + { 0x1C, 0x14 }, + { 0x1D, 0x14 }, + { 0x1E, 0x14 }, + { 0x1F, 0x14 }, + { 0x20, 0x14 }, + { 0x1A, 0x15 }, + { 0x1B, 0x15 }, + { 0x1C, 0x15 }, + { 0x1D, 0x15 }, + { 0x1E, 0x15 }, + { 0x1F, 0x15 }, + { 0x1B, 0x16 }, + { 0x1C, 0x16 }, + { 0x1D, 0x16 }, + { 0x1E, 0x16 }, + { 0xFF, 0xFF }, }; const struct UnkStruct_02006D98_3 UNK_020ECC78[] = { - {0x33, 0x11}, - {0x34, 0x11}, - {0x35, 0x11}, - {0x36, 0x11}, - {0x32, 0x12}, - {0x33, 0x12}, - {0x34, 0x12}, - {0x35, 0x12}, - {0x36, 0x12}, - {0x37, 0x12}, - {0x31, 0x13}, - {0x32, 0x13}, - {0x33, 0x13}, - {0x34, 0x13}, - {0x35, 0x13}, - {0x36, 0x13}, - {0x37, 0x13}, - {0x38, 0x13}, - {0x31, 0x14}, - {0x32, 0x14}, - {0x33, 0x14}, - {0x34, 0x14}, - {0x35, 0x14}, - {0x36, 0x14}, - {0x37, 0x14}, - {0x38, 0x14}, - {0x31, 0x15}, - {0x32, 0x15}, - {0x33, 0x15}, - {0x34, 0x15}, - {0x35, 0x15}, - {0x36, 0x15}, - {0x37, 0x15}, - {0x38, 0x15}, - {0x31, 0x16}, - {0x32, 0x16}, - {0x33, 0x16}, - {0x34, 0x16}, - {0x35, 0x16}, - {0x36, 0x16}, - {0x37, 0x16}, - {0x38, 0x16}, - {0x32, 0x17}, - {0x33, 0x17}, - {0x34, 0x17}, - {0x35, 0x17}, - {0x36, 0x17}, - {0x37, 0x17}, - {0x33, 0x18}, - {0x34, 0x18}, - {0x35, 0x18}, - {0x36, 0x18}, - {0xFF, 0xFF}, + { 0x33, 0x11 }, + { 0x34, 0x11 }, + { 0x35, 0x11 }, + { 0x36, 0x11 }, + { 0x32, 0x12 }, + { 0x33, 0x12 }, + { 0x34, 0x12 }, + { 0x35, 0x12 }, + { 0x36, 0x12 }, + { 0x37, 0x12 }, + { 0x31, 0x13 }, + { 0x32, 0x13 }, + { 0x33, 0x13 }, + { 0x34, 0x13 }, + { 0x35, 0x13 }, + { 0x36, 0x13 }, + { 0x37, 0x13 }, + { 0x38, 0x13 }, + { 0x31, 0x14 }, + { 0x32, 0x14 }, + { 0x33, 0x14 }, + { 0x34, 0x14 }, + { 0x35, 0x14 }, + { 0x36, 0x14 }, + { 0x37, 0x14 }, + { 0x38, 0x14 }, + { 0x31, 0x15 }, + { 0x32, 0x15 }, + { 0x33, 0x15 }, + { 0x34, 0x15 }, + { 0x35, 0x15 }, + { 0x36, 0x15 }, + { 0x37, 0x15 }, + { 0x38, 0x15 }, + { 0x31, 0x16 }, + { 0x32, 0x16 }, + { 0x33, 0x16 }, + { 0x34, 0x16 }, + { 0x35, 0x16 }, + { 0x36, 0x16 }, + { 0x37, 0x16 }, + { 0x38, 0x16 }, + { 0x32, 0x17 }, + { 0x33, 0x17 }, + { 0x34, 0x17 }, + { 0x35, 0x17 }, + { 0x36, 0x17 }, + { 0x37, 0x17 }, + { 0x33, 0x18 }, + { 0x34, 0x18 }, + { 0x35, 0x18 }, + { 0x36, 0x18 }, + { 0xFF, 0xFF }, }; const struct UnkStruct_02006D98_3 UNK_020ECC10[] = { - {0x1E, 0x21}, - {0x1F, 0x21}, - {0x20, 0x21}, - {0x1D, 0x22}, - {0x1E, 0x22}, - {0x1F, 0x22}, - {0x20, 0x22}, - {0x21, 0x22}, - {0x1C, 0x23}, - {0x1D, 0x23}, - {0x1E, 0x23}, - {0x1F, 0x23}, - {0x20, 0x23}, - {0x21, 0x23}, - {0x22, 0x23}, - {0x1C, 0x24}, - {0x1D, 0x24}, - {0x1E, 0x24}, - {0x1F, 0x24}, - {0x20, 0x24}, - {0x21, 0x24}, - {0x22, 0x24}, - {0x1C, 0x25}, - {0x1D, 0x25}, - {0x1E, 0x25}, - {0x1F, 0x25}, - {0x20, 0x25}, - {0x21, 0x25}, - {0x22, 0x25}, - {0x1C, 0x26}, - {0x1D, 0x26}, - {0x1E, 0x26}, - {0x1F, 0x26}, - {0x20, 0x26}, - {0x21, 0x26}, - {0x22, 0x26}, - {0x1C, 0x27}, - {0x1D, 0x27}, - {0x1E, 0x27}, - {0x1F, 0x27}, - {0x20, 0x27}, - {0x21, 0x27}, - {0x22, 0x27}, - {0x1D, 0x28}, - {0x1E, 0x28}, - {0x1F, 0x28}, - {0x20, 0x28}, - {0x21, 0x28}, - {0x1E, 0x29}, - {0x1F, 0x29}, - {0x20, 0x29}, - {0xFF, 0xFF}, + { 0x1E, 0x21 }, + { 0x1F, 0x21 }, + { 0x20, 0x21 }, + { 0x1D, 0x22 }, + { 0x1E, 0x22 }, + { 0x1F, 0x22 }, + { 0x20, 0x22 }, + { 0x21, 0x22 }, + { 0x1C, 0x23 }, + { 0x1D, 0x23 }, + { 0x1E, 0x23 }, + { 0x1F, 0x23 }, + { 0x20, 0x23 }, + { 0x21, 0x23 }, + { 0x22, 0x23 }, + { 0x1C, 0x24 }, + { 0x1D, 0x24 }, + { 0x1E, 0x24 }, + { 0x1F, 0x24 }, + { 0x20, 0x24 }, + { 0x21, 0x24 }, + { 0x22, 0x24 }, + { 0x1C, 0x25 }, + { 0x1D, 0x25 }, + { 0x1E, 0x25 }, + { 0x1F, 0x25 }, + { 0x20, 0x25 }, + { 0x21, 0x25 }, + { 0x22, 0x25 }, + { 0x1C, 0x26 }, + { 0x1D, 0x26 }, + { 0x1E, 0x26 }, + { 0x1F, 0x26 }, + { 0x20, 0x26 }, + { 0x21, 0x26 }, + { 0x22, 0x26 }, + { 0x1C, 0x27 }, + { 0x1D, 0x27 }, + { 0x1E, 0x27 }, + { 0x1F, 0x27 }, + { 0x20, 0x27 }, + { 0x21, 0x27 }, + { 0x22, 0x27 }, + { 0x1D, 0x28 }, + { 0x1E, 0x28 }, + { 0x1F, 0x28 }, + { 0x20, 0x28 }, + { 0x21, 0x28 }, + { 0x1E, 0x29 }, + { 0x1F, 0x29 }, + { 0x20, 0x29 }, + { 0xFF, 0xFF }, }; const struct UnkStruct_02006D98_3 UNK_020ECDCC[] = { - {0x2B, 0x21}, - {0x2C, 0x21}, - {0x2D, 0x21}, - {0x29, 0x22}, - {0x2A, 0x22}, - {0x2B, 0x22}, - {0x2C, 0x22}, - {0x2D, 0x22}, - {0x2E, 0x22}, - {0x2F, 0x22}, - {0x28, 0x23}, - {0x29, 0x23}, - {0x2A, 0x23}, - {0x2B, 0x23}, - {0x2C, 0x23}, - {0x2D, 0x23}, - {0x2E, 0x23}, - {0x2F, 0x23}, - {0x30, 0x23}, - {0x28, 0x24}, - {0x29, 0x24}, - {0x2A, 0x24}, - {0x2B, 0x24}, - {0x2C, 0x24}, - {0x2D, 0x24}, - {0x2E, 0x24}, - {0x2F, 0x24}, - {0x30, 0x24}, - {0x28, 0x25}, - {0x29, 0x25}, - {0x2A, 0x25}, - {0x2B, 0x25}, - {0x2C, 0x25}, - {0x2D, 0x25}, - {0x2E, 0x25}, - {0x2F, 0x25}, - {0x30, 0x25}, - {0x28, 0x26}, - {0x29, 0x26}, - {0x2A, 0x26}, - {0x2B, 0x26}, - {0x2C, 0x26}, - {0x2D, 0x26}, - {0x2E, 0x26}, - {0x2F, 0x26}, - {0x30, 0x26}, - {0x28, 0x27}, - {0x29, 0x27}, - {0x2A, 0x27}, - {0x2B, 0x27}, - {0x2C, 0x27}, - {0x2D, 0x27}, - {0x2E, 0x27}, - {0x2F, 0x27}, - {0x30, 0x27}, - {0x28, 0x28}, - {0x29, 0x28}, - {0x2A, 0x28}, - {0x2B, 0x28}, - {0x2C, 0x28}, - {0x2D, 0x28}, - {0x2E, 0x28}, - {0x2F, 0x28}, - {0x30, 0x28}, - {0x29, 0x29}, - {0x2A, 0x29}, - {0x2B, 0x29}, - {0x2C, 0x29}, - {0x2D, 0x29}, - {0x2E, 0x29}, - {0x2F, 0x29}, - {0x2B, 0x2A}, - {0x2C, 0x2A}, - {0x2D, 0x2A}, - {0xFF, 0xFF}, + { 0x2B, 0x21 }, + { 0x2C, 0x21 }, + { 0x2D, 0x21 }, + { 0x29, 0x22 }, + { 0x2A, 0x22 }, + { 0x2B, 0x22 }, + { 0x2C, 0x22 }, + { 0x2D, 0x22 }, + { 0x2E, 0x22 }, + { 0x2F, 0x22 }, + { 0x28, 0x23 }, + { 0x29, 0x23 }, + { 0x2A, 0x23 }, + { 0x2B, 0x23 }, + { 0x2C, 0x23 }, + { 0x2D, 0x23 }, + { 0x2E, 0x23 }, + { 0x2F, 0x23 }, + { 0x30, 0x23 }, + { 0x28, 0x24 }, + { 0x29, 0x24 }, + { 0x2A, 0x24 }, + { 0x2B, 0x24 }, + { 0x2C, 0x24 }, + { 0x2D, 0x24 }, + { 0x2E, 0x24 }, + { 0x2F, 0x24 }, + { 0x30, 0x24 }, + { 0x28, 0x25 }, + { 0x29, 0x25 }, + { 0x2A, 0x25 }, + { 0x2B, 0x25 }, + { 0x2C, 0x25 }, + { 0x2D, 0x25 }, + { 0x2E, 0x25 }, + { 0x2F, 0x25 }, + { 0x30, 0x25 }, + { 0x28, 0x26 }, + { 0x29, 0x26 }, + { 0x2A, 0x26 }, + { 0x2B, 0x26 }, + { 0x2C, 0x26 }, + { 0x2D, 0x26 }, + { 0x2E, 0x26 }, + { 0x2F, 0x26 }, + { 0x30, 0x26 }, + { 0x28, 0x27 }, + { 0x29, 0x27 }, + { 0x2A, 0x27 }, + { 0x2B, 0x27 }, + { 0x2C, 0x27 }, + { 0x2D, 0x27 }, + { 0x2E, 0x27 }, + { 0x2F, 0x27 }, + { 0x30, 0x27 }, + { 0x28, 0x28 }, + { 0x29, 0x28 }, + { 0x2A, 0x28 }, + { 0x2B, 0x28 }, + { 0x2C, 0x28 }, + { 0x2D, 0x28 }, + { 0x2E, 0x28 }, + { 0x2F, 0x28 }, + { 0x30, 0x28 }, + { 0x29, 0x29 }, + { 0x2A, 0x29 }, + { 0x2B, 0x29 }, + { 0x2C, 0x29 }, + { 0x2D, 0x29 }, + { 0x2E, 0x29 }, + { 0x2F, 0x29 }, + { 0x2B, 0x2A }, + { 0x2C, 0x2A }, + { 0x2D, 0x2A }, + { 0xFF, 0xFF }, }; const int UNK_020ECBD0[4][4] = { - {160, 160, 224, 176}, {160, 160, 224, 176}, {160, 176, 224, 192}, {160, 192, 224, 208}}; + { 160, 160, 224, 176 }, { 160, 160, 224, 176 }, { 160, 176, 224, 192 }, { 160, 192, 224, 208 } +}; -const int UNK_020ECD4C[4][2][4] = { - {{0, 0, 0x50, 0x50}, {0x50, 0, 0xA0, 0x50}}, { - - {0, 0x50, 0x50, 0xA0}, {0x50, 0x50, 0xA0, 0xA0} - - }, +const int UNK_020ECD4C[4][2][4] = { { { 0, 0, 0x50, 0x50 }, { 0x50, 0, 0xA0, 0x50 } }, { - {0, 0xA0, 0x50, 0xF0}, {0x50, 0xA0, 0xA0, 0xF0} + { 0, 0x50, 0x50, 0xA0 }, { 0x50, 0x50, 0xA0, 0xA0 } }, { - {0xA0, 0, 0xF0, 0x50}, {0xA0, 0x50, 0xF0, 0xA0} + { 0, 0xA0, 0x50, 0xF0 }, { 0x50, 0xA0, 0xA0, 0xF0 } - }}; + }, + { + + { 0xA0, 0, 0xF0, 0x50 }, { 0xA0, 0x50, 0xF0, 0xA0 } + + } }; struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { UNK_020ECCE2, @@ -285,16 +286,17 @@ struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { extern void NNS_G2dSetupSoftwareSpriteCamera(void); extern void NNS_G3dGeFlushBuffer(); extern void NNS_G2dDrawSpriteFast(s16 param0, - s16 param1, - int param2, - int param3, - int param4, - int param5, - int param6, - int param7, - int param8); + s16 param1, + int param2, + int param3, + int param4, + int param5, + int param6, + int param7, + int param8); -THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) { +THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) +{ struct UnkStruct_02006D98 *ptr = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02006D98)); ptr->unk298 = heap_id; ptr->unk2E0 = 0; @@ -311,7 +313,8 @@ THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) { ptr->unk2B4 = AllocFromHeap(heap_id, 0xc0); MIi_CpuClearFast(0, ptr->unk2B4, 4); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) + { MIi_CpuClearFast(0, &ptr->unk000[i], sizeof(struct UnkStruct_02006D98_2)); } @@ -332,8 +335,10 @@ THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) { FUN_02008A74(st8); MI_CpuFill8(ptr->unk2AC, *st8, 0x8000); - for (int i = 0; i < 0x50; i++) { - for (int j = 0; j < 0x28; j++) { + for (int i = 0; i < 0x50; i++) + { + for (int j = 0; j < 0x28; j++) + { ((u8 *)ptr->unk2AC)[0x5050 + i * 0x80 + j] = st8[i * 0x50 + j]; } } @@ -348,7 +353,8 @@ THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) { #ifdef NONMATCHING // mostly matching, only 2 register writes messed up -THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { +THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) +{ s32 arg3; s32 arg4; @@ -364,28 +370,35 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { (param0->unk260.attr.sizeS << 20) | (param0->unk260.attr.sizeT << 23) | (param0->unk260.attr.plttUse << 29); - for (int st18 = 0; st18 < 4; st18++) { + for (int st18 = 0; st18 < 4; st18++) + { if (param0->unk000[st18].unk00_0 == 0 || param0->unk000[st18].unk54_0 != 0 || - param0->unk000[st18].unk54_B != 0) { + param0->unk000[st18].unk54_B != 0) + { continue; } - if (param0->unk000[st18].unk68 != NULL) { + if (param0->unk000[st18].unk68 != NULL) + { param0->unk000[st18].unk68(¶m0->unk000[st18], ¶m0->unk000[st18].unk24); } NNS_G3dGeFlushBuffer(); - if (param0->unk2E3 != 1) { + if (param0->unk2E3 != 1) + { reg_G3_MTX_IDENTITY = 0; } FUN_02007F48(¶m0->unk000[st18]); u32 shift; - if (param0->unk260.attr.fmt == 2) { + if (param0->unk260.attr.fmt == 2) + { shift = 1; - } else { + } + else + { shift = 0; } @@ -421,7 +434,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { (param0->unk000[st18].unk50_a << 10))) | (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14 << 5) | (param0->unk000[st18].unk50_19 << 10))) - << 16) | + << 16) | 0x8000; reg_G3_SPE_EMI = 0x4210; @@ -433,27 +446,28 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { reg_G3_POLYGON_ATTR = 0xc0 | (r1 << 24) | (r0 << 16); } - if (param0->unk000[st18].unk54_1 != 0) { - u32 r6 = param0->unk000[st18].unk44 + - UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0]; + if (param0->unk000[st18].unk54_1 != 0) + { + u32 r6 = param0->unk000[st18].unk44 + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0]; u32 r12 = param0->unk000[st18].unk46; - u32 r1 = param0->unk000[st18].unk45 + - UNK_020ECD4C[st18][param0->unk000[st18].unk5B][1]; + u32 r1 = param0->unk000[st18].unk45 + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][1]; u32 r7 = param0->unk000[st18].unk47; u32 r0 = r12 + r6; NNS_G2dDrawSpriteFast(param0->unk000[st18].unk24 - 40 + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C, - param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + - param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, - param0->unk000[st18].unk28 + param0->unk000[st18].unk30, - r12, - r7, - r6, - r1, - r0, - r7 + r1); - } else { + param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + + param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, + param0->unk000[st18].unk28 + param0->unk000[st18].unk30, + r12, + r7, + r6, + r1, + r0, + r7 + r1); + } + else + { arg3 = (param0->unk000[st18].unk34 * 80) >> 8; arg4 = (param0->unk000[st18].unk36 * 80) >> 8; @@ -471,58 +485,69 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { } if (param0->unk000[st18].unk6C.unk0_0 == 0 || param0->unk000[st18].unk6C.unk0_5 == 0 || - param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) { + param0->unk000[st18].unk54_1 != 0 || (param0->unk2E4 & 1) != 0) + { continue; } - if (param0->unk2E3 != 1) { + if (param0->unk2E3 != 1) + { reg_G3_MTX_IDENTITY = 0; } u32 shift2; - if (param0->unk260.attr.fmt == 2) { + if (param0->unk260.attr.fmt == 2) + { shift2 = 1; - } else { + } + else + { shift2 = 0; } reg_G3_TEXPLTT_BASE = (param0->unk2A4 + ((param0->unk000[st18].unk6C.unk0_0 + 3) << 5)) >> (4 - shift2); - if (param0->unk000[st18].unk6C.unk0_4 != 0) { + if (param0->unk000[st18].unk6C.unk0_4 != 0) + { arg3 = (param0->unk000[st18].unk34 * 64) >> 8; arg4 = (param0->unk000[st18].unk36 * 16) >> 8; - } else { + } + else + { arg3 = 64; arg4 = 16; } - if (param0->unk000[st18].unk6C.unk0_2 != 0) { + if (param0->unk000[st18].unk6C.unk0_2 != 0) + { param0->unk000[st18].unk6C.unk4 = param0->unk000[st18].unk24 + param0->unk000[st18].unk2C + param0->unk000[st18].unk6C.unk8; } - if (param0->unk000[st18].unk6C.unk0_3 != 0) { + if (param0->unk000[st18].unk6C.unk0_3 != 0) + { param0->unk000[st18].unk6C.unk6 = param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + param0->unk000[st18].unk6C.unka; } NNS_G2dDrawSpriteFast(param0->unk000[st18].unk6C.unk4 - (arg3 / 2), - param0->unk000[st18].unk6C.unk4 - (arg4 / 2), - 0xFFFFFC18, - arg3, - arg4, - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][0], - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][1], - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][2], - UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3]); + param0->unk000[st18].unk6C.unk4 - (arg4 / 2), + 0xFFFFFC18, + arg3, + arg4, + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][0], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][1], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][2], + UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3]); } reg_G3_MTX_POP = 1; } #else -asm void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { +asm void FUN_02006ED4(struct UnkStruct_02006D98 *param0) +{ // clang-format off push {r3-r7, lr} sub sp, #0x20 @@ -1031,19 +1056,23 @@ _020072D6: } #endif -THUMB_FUNC void FUN_020072E8(struct UnkStruct_02006D98 *param0) { +THUMB_FUNC void FUN_020072E8(struct UnkStruct_02006D98 *param0) +{ FreeToHeap(param0->unk2AC); FreeToHeap(param0->unk2B0); FreeToHeap(param0->unk2B4); FreeToHeap(param0); } -THUMB_FUNC void FUN_02007314(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC void FUN_02007314(struct UnkStruct_02006D98_2 *param0) +{ param0->unk59 = 0; - for (s32 i = 0; i < 10; i++) { + for (s32 i = 0; i < 10; i++) + { param0->unk5C[i] = 0; } - if (param0->unk84[param0->unk59].unk0 == -1) { + if (param0->unk84[param0->unk59].unk0 == -1) + { param0->unk5B = 0; return; } @@ -1053,28 +1082,35 @@ THUMB_FUNC void FUN_02007314(struct UnkStruct_02006D98_2 *param0) { param0->unk5A = param0->unk84[param0->unk59].unk1; } -THUMB_FUNC void FUN_0200737C(struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1) { +THUMB_FUNC void FUN_0200737C( + struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1) +{ MI_CpuCopy8(param1, param0->unk84, sizeof(struct UnkStruct_02006D98_sub) * 10); } -THUMB_FUNC BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0) { - if (param0->unk58 != 0) { +THUMB_FUNC BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0) +{ + if (param0->unk58 != 0) + { return TRUE; } return FALSE; } THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 *param0, - struct UnkStruct_02006D98_4 *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - const void *param6, - void (*param7)(struct UnkStruct_02006D98_2 *, void *)) { + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + const void *param6, + void (*param7)(struct UnkStruct_02006D98_2 *, void *)) +{ s32 i; - for (i = 0; i < 4; i++) { - if (param0->unk000[i].unk00_0 == 0) { + for (i = 0; i < 4; i++) + { + if (param0->unk000[i].unk00_0 == 0) + { break; } } @@ -1084,14 +1120,15 @@ THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 * } THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 *param0, - struct UnkStruct_02006D98_4 *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - s32 param6, - const void *param7, - void (*param8)(struct UnkStruct_02006D98_2 *, void *)) { + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6, + const void *param7, + void (*param8)(struct UnkStruct_02006D98_2 *, void *)) +{ GF_ASSERT(param0->unk000[param6].unk00_0 == 0); MIi_CpuClearFast(0, ¶m0->unk000[param6], sizeof(struct UnkStruct_02006D98_2)); @@ -1121,25 +1158,31 @@ THUMB_FUNC struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 * param0->unk000[param6].unk6C.unk0_3 = 1; param0->unk000[param6].unk6C.unk0_4 = 1; - if (param7 != NULL) { + if (param7 != NULL) + { MI_CpuCopy8(param7, param0->unk000[param6].unk84, 0x14); } return ¶m0->unk000[param6]; } -THUMB_FUNC void FUN_02007534(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC void FUN_02007534(struct UnkStruct_02006D98_2 *param0) +{ param0->unk00_0 = 0; } -THUMB_FUNC void FUN_02007540(struct UnkStruct_02006D98 *param0) { - for (s32 i = 0; i < 4; i++) { +THUMB_FUNC void FUN_02007540(struct UnkStruct_02006D98 *param0) +{ + for (s32 i = 0; i < 4; i++) + { FUN_02007534(¶m0->unk000[i]); } } -THUMB_FUNC void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) { - switch (param1) { +THUMB_FUNC void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) +{ + switch (param1) + { case 0: param0->unk24 = (s16)param2; break; @@ -1289,8 +1332,10 @@ THUMB_FUNC void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u3 } } -THUMB_FUNC u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1) { - switch (param1) { +THUMB_FUNC u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1) +{ + switch (param1) + { case 0: return param0->unk24; @@ -1435,8 +1480,10 @@ THUMB_FUNC u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1) { return 0; } -THUMB_FUNC void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) { - switch (param1) { +THUMB_FUNC void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2) +{ + switch (param1) + { case 0: param0->unk24 += param2; break; @@ -1587,7 +1634,8 @@ THUMB_FUNC void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u3 } THUMB_FUNC void FUN_02007E40( - struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ param0->unk54_1 = 1; param0->unk44 = (u8)param1; param0->unk45 = (u8)param2; @@ -1596,7 +1644,8 @@ THUMB_FUNC void FUN_02007E40( } THUMB_FUNC void FUN_02007E68( - struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ param0->unk54_C = 1; param0->unk48 = (u8)param1; param0->unk49 = (u8)param2; @@ -1606,9 +1655,12 @@ THUMB_FUNC void FUN_02007E68( } THUMB_FUNC void FUN_02007E98( - struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4) { - for (s32 i = 0; i < 4; i++) { - if (param0->unk000[i].unk00_0 == 0) { + struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + for (s32 i = 0; i < 4; i++) + { + if (param0->unk000[i].unk00_0 == 0) + { continue; } @@ -1621,7 +1673,8 @@ THUMB_FUNC void FUN_02007E98( } } -THUMB_FUNC void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0) +{ param0->unk54_C = 0; param0->unk48 = 0; param0->unk49 = 0; @@ -1631,36 +1684,46 @@ THUMB_FUNC void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0) { param0->unk00_8 = 1; } -THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0) +{ return param0->unk54_C == 1; } -THUMB_FUNC void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1) { +THUMB_FUNC void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1) +{ param0->unk2E = (s16)((40 - param1) - (((40 - param1) * param0->unk36) >> 8)); } #ifdef NONMATCHING -THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) +{ u8 *r6 = ¶m0->unk59; - if (param0->unk58 == 0) { + if (param0->unk58 == 0) + { return; } - if (param0->unk5A == 0) { + if (param0->unk5A == 0) + { (*r6)++; - while (param0->unk84[*r6].unk0 < -1) { + while (param0->unk84[*r6].unk0 < -1) + { param0->unk5C[*r6]++; - if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) { + if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) + { param0->unk5C[*r6] = 0; r6++; - } else { + } + else + { *r6 = -2 - param0->unk84[*r6].unk0; } } - if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) { + if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) + { param0->unk5B = 0; param0->unk58 = 0; @@ -1669,12 +1732,15 @@ THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { param0->unk5B = param0->unk84[*r6].unk0; param0->unk5A = param0->unk84[*r6].unk1; - } else { + } + else + { param0->unk5A--; } } #else -asm void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { +asm void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) +{ // clang-format off push {r4-r7} add r1, r0, #0x0 @@ -1788,45 +1854,60 @@ _0200800A: } #endif -THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1) { +THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1) +{ param0[0] = 1; param0[2] = 0; param0[1] = (u8)param1->unk0; param0[3] = param1->unk1; ((struct UnkStruct_02006D98_sub **)param0)[4] = param1; - for (s32 i = 0; i < 10; i++) { + for (s32 i = 0; i < 10; i++) + { param0[i + 4] = 0; } } #ifdef NONMATCHING -THUMB_FUNC s32 FUN_02008030(u8 *param0) { - if (*param0 != 0) { +THUMB_FUNC s32 FUN_02008030(u8 *param0) +{ + if (*param0 != 0) + { u8 *r3 = param0 + 2; struct UnkStruct_02006D98_sub *r4 = ((struct UnkStruct_02006D98_sub **)param0)[4]; - if (*param0 != 0) { - if (param0[3] == 0) { + if (*param0 != 0) + { + if (param0[3] == 0) + { (*r3)++; - while (r4[*r3].unk0 < -1) { + while (r4[*r3].unk0 < -1) + { param0[*r3 + 4]++; - if (r4[*r3].unk1 == param0[*r3 + 4] || r4[*r3].unk1 == 0) { + if (r4[*r3].unk1 == param0[*r3 + 4] || r4[*r3].unk1 == 0) + { param0[*r3 + 4] = 0; r3++; - } else { + } + else + { *r3 = -2 - r4[*r3].unk0; } } - if (r4[*r3].unk0 == -1 || *r3 >= 10) { + if (r4[*r3].unk0 == -1 || *r3 >= 10) + { param0[0] = 0; param0[1] = 0; - } else { + } + else + { param0[1] = r4[*r3].unk0; param0[3] = r4[*r3].unk1; } - } else { + } + else + { param0[3]--; } } @@ -1837,7 +1918,8 @@ THUMB_FUNC s32 FUN_02008030(u8 *param0) { return -1; } #else -asm s32 FUN_02008030(u8 *param0) { +asm s32 FUN_02008030(u8 *param0) +{ // clang-format off push {r4-r7} ldrb r1, [r0, #0x0] @@ -1932,39 +2014,47 @@ _020080C6: } #endif -THUMB_FUNC void FUN_020080D0(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC void FUN_020080D0(struct UnkStruct_02006D98_2 *param0) +{ param0->unk00_7 = 1; param0->unk00_8 = 1; } -THUMB_FUNC void FUN_020080E0(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC void FUN_020080E0(struct UnkStruct_02006D98_2 *param0) +{ param0->unk14 = param0->unk04; param0->unk78 = param0->unk6C; } -THUMB_FUNC void FUN_0200813C(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC void FUN_0200813C(struct UnkStruct_02006D98_2 *param0) +{ param0->unk04 = param0->unk14; param0->unk6C = param0->unk78; param0->unk00_7 = 1; param0->unk00_8 = 1; } -THUMB_FUNC void FUN_020081A8(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_020081A8(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) +{ param0->unk29C = param1; param0->unk2A0 = param2; } -THUMB_FUNC void FUN_020081B4(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_020081B4(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2) +{ param0->unk2A4 = param1; param0->unk2A8 = param2; } -THUMB_FUNC u32 FUN_020081C0(u32 param0) { +THUMB_FUNC u32 FUN_020081C0(u32 param0) +{ return param0 + 4; } -THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) { - if (param0->unk2E1 != 0) { +THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) +{ + if (param0->unk2E1 != 0) + { param0->unk2E1 = 0; NNS_G2dInitImageProxy(¶m0->unk260); @@ -1977,7 +2067,8 @@ THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) { ¶m0->unk2B8, param0->unk29C, NNS_G2D_VRAM_TYPE_3DMAIN, ¶m0->unk260); } - if (param0->unk2E2 != 0) { + if (param0->unk2E2 != 0) + { param0->unk2E2 = 0; NNS_G2dInitImagePaletteProxy(¶m0->unk284); @@ -1989,24 +2080,29 @@ THUMB_FUNC void FUN_020081C4(struct UnkStruct_02006D98 *param0) { } } -THUMB_FUNC void FUN_0200825C(struct UnkStruct_02006D98 *param0, u8 param1) { +THUMB_FUNC void FUN_0200825C(struct UnkStruct_02006D98 *param0, u8 param1) +{ param0->unk2E3 = param1; } -THUMB_FUNC BOOL FUN_02008268(struct UnkStruct_02006D98_2 *param0) { +THUMB_FUNC BOOL FUN_02008268(struct UnkStruct_02006D98_2 *param0) +{ GF_ASSERT(param0); return param0->unk00_0 != 0; } -THUMB_FUNC void FUN_02008284(struct UnkStruct_02006D98 *param0, u32 param1) { +THUMB_FUNC void FUN_02008284(struct UnkStruct_02006D98 *param0, u32 param1) +{ param0->unk2E4 |= param1; } -THUMB_FUNC void FUN_02008290(struct UnkStruct_02006D98 *param0, u32 param1) { +THUMB_FUNC void FUN_02008290(struct UnkStruct_02006D98 *param0, u32 param1) +{ param0->unk2E4 &= (param1 ^ ~0); } -THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) { +THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) +{ NNSG2dCharacterData *st58; int st54; int r4; @@ -2015,13 +2111,15 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) { void *st4c; u8 st48 = 0; - for (st54 = 0; st54 < 4; st54++) { - if (param0->unk000[st54].unk00_0 != 0 && param0->unk000[st54].unk00_7 != 0) { + for (st54 = 0; st54 < 4; st54++) + { + if (param0->unk000[st54].unk00_0 != 0 && param0->unk000[st54].unk00_7 != 0) + { param0->unk000[st54].unk00_7 = 0; st48 = 1; st4c = AllocAndReadWholeNarcMemberByIdPair((NarcId)param0->unk000[st54].unk04.field_00, - param0->unk000[st54].unk04.field_02, - param0->unk298); + param0->unk000[st54].unk04.field_02, + param0->unk298); NNS_G2dGetUnpackedCharacterData(st4c, &st58); param0->unk2B8.pixelFmt = st58->pixelFmt; param0->unk2B8.mapingType = st58->mapingType; @@ -2031,101 +2129,159 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) { FUN_02008A74(st50); FUN_020088EC(¶m0->unk000[st54], st50); - if (st54 == 3) { - for (st14 = 0; st14 < 0x50; st14++) { - for (r4 = 0; r4 < 0x50; r4++) { - if (r4 < 0x28) { + if (st54 == 3) + { + for (st14 = 0; st14 < 0x50; st14++) + { + for (r4 = 0; r4 < 0x50; r4++) + { + if (r4 < 0x28) + { if (param0->unk000[st54].unk54_9 != 0 && - param0->unk000[st54].unk54_A != 0) { + param0->unk000[st54].unk54_A != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x27 - r4)]); - } else if (param0->unk000[st54].unk54_9 != 0) { + } + else if (param0->unk000[st54].unk54_9 != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = FUN_020088D8(st50[st14 * 0x50 + (0x27 - r4)]); - } else if (param0->unk000[st54].unk54_A != 0) { + } + else if (param0->unk000[st54].unk54_A != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = st50[(0x4f - st14) * 0x50 + r4]; - } else if (param0->unk000[st54].unk54_D != 0) { - if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) { + } + else if (param0->unk000[st54].unk54_D != 0) + { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = param0->unk2AC[(st14 - 1) * 0x80 + r4 + 0x50]; - } else if (r4 % param0->unk000[st54].unk54_D != 0) { + } + else if (r4 % param0->unk000[st54].unk54_D != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = param0->unk2AC[st14 * 0x80 + r4 + 0x4f]; - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = (u8)((st50[st14 * 0x50 + r4] & 0xf) | ((st50[st14 * 0x50 + r4] & 0xf) << 4)); } - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + 0x50] = st50[st14 * 0x50 + r4]; } - } else { + } + else + { //_02008442 if (param0->unk000[st54].unk54_9 != 0 && - param0->unk000[st54].unk54_A != 0) { + param0->unk000[st54].unk54_A != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x4f - (r4 - 0x28))]); - } else if (param0->unk000[st54].unk54_9 != 0) { + } + else if (param0->unk000[st54].unk54_9 != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = FUN_020088D8(st50[st14 * 0x50 + (0x4f - (r4 - 0x28))]); - } else if (param0->unk000[st54].unk54_A != 0) { + } + else if (param0->unk000[st54].unk54_A != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = st50[(0x4f - st14) * 0x50 + r4]; - } else if (param0->unk000[st54].unk54_D != 0) { - if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) { + } + else if (param0->unk000[st54].unk54_D != 0) + { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = param0->unk2AC[(st14 - 1) * 0x80 + r4 + 0x2828]; - } else if (r4 % param0->unk000[st54].unk54_D != 0) { + } + else if (r4 % param0->unk000[st54].unk54_D != 0) + { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = param0->unk2AC[st14 * 0x80 + (r4 - 1) + 0x2828]; - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = (u8)((st50[st14 * 0x50 + r4] & 0xf) | ((st50[st14 * 0x50 + r4] & 0xf) << 4)); } - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + 0x2828] = st50[st14 * 0x50 + r4]; } } } } - } else { + } + else + { //_02008554 - for (st14 = 0; st14 < 0x50; st14++) { - for (r4 = 0; r4 < 0x50; r4++) { - if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) { - if (r4 < 0x28) { + for (st14 = 0; st14 < 0x50; st14++) + { + for (r4 = 0; r4 < 0x50; r4++) + { + if (param0->unk000[st54].unk54_9 != 0 && param0->unk000[st54].unk54_A != 0) + { + if (r4 < 0x28) + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x27 - r4)]); - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[(0x4f - st14) * 0x50 + (0x4f - (r4 - 0x28))]); } - } else if (param0->unk000[st54].unk54_9 != 0) { - if (r4 < 0x28) { + } + else if (param0->unk000[st54].unk54_9 != 0) + { + if (r4 < 0x28) + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[st14 * 0x50 + (0x27 - r4)]); - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = FUN_020088D8(st50[st14 * 0x50 + (0x4f - (r4 - 0x28))]); } - } else if (param0->unk000[st54].unk54_A != 0) { + } + else if (param0->unk000[st54].unk54_A != 0) + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = st50[(0x4f - st14) * 0x50 + r4]; - } else if (param0->unk000[st54].unk54_D != 0) { - if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) { + } + else if (param0->unk000[st54].unk54_D != 0) + { + if (st14 % (param0->unk000[st54].unk54_D * 2) != 0) + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = param0->unk2AC[(st14 - 1) * 0x80 + r4 + st54 * 0x2800]; - } else if (r4 % (param0->unk000[st54].unk54_D) != 0) { + } + else if (r4 % (param0->unk000[st54].unk54_D) != 0) + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = param0->unk2AC[st14 * 0x80 + (r4 - 1) + st54 * 0x2800]; - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = (u8)((st50[st14 * 0x50 + r4] & 0xf) | ((st50[st14 * 0x50 + r4] & 0xf) << 4)); } - } else { + } + else + { param0->unk2AC[st14 * 0x80 + r4 + st54 * 0x2800] = st50[st14 * 0x50 + r4]; } @@ -2141,35 +2297,41 @@ THUMB_FUNC void FUN_020082A8(struct UnkStruct_02006D98 *param0) { param0->unk2E1 = st48; } -THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) { +THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) +{ NNSG2dPaletteData *st18; int st14, r7; u16 *r1; void *st10; u8 stc = 0; - for (st14 = 0; st14 < 4; st14++) { - if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk00_8 != 0) { + for (st14 = 0; st14 < 4; st14++) + { + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk00_8 != 0) + { param0->unk000[st14].unk00_8 = 0; stc = 1; st10 = AllocAndReadWholeNarcMemberByIdPair((NarcId)param0->unk000[st14].unk04.field_00, - param0->unk000[st14].unk04.field_04, - param0->unk298); + param0->unk000[st14].unk04.field_04, + param0->unk298); NNS_G2dGetUnpackedPaletteData(st10, &st18); param0->unk2D0.fmt = st18->fmt; r1 = st18->pRawData; - for (r7 = 0; r7 < 0x10; r7++) { + for (r7 = 0; r7 < 0x10; r7++) + { param0->unk2B0[st14 * 0x10 + r7] = r1[r7]; param0->unk2B4[st14 * 0x10 + r7] = r1[r7]; } FreeToHeap(st10); - if (param0->unk000[st14].unk6C.unk0_0 != 0) { + if (param0->unk000[st14].unk6C.unk0_0 != 0) + { st10 = AllocAndReadWholeNarcMemberByIdPair( NARC_POKETOOL_POKEGRA_OTHERPOKE, NARC_otherpoke_narc_0212_NCLR, param0->unk298); NNS_G2dGetUnpackedPaletteData(st10, &st18); r1 = st18->pRawData; - for (r7 = 0; r7 < 0x10; r7++) { + for (r7 = 0; r7 < 0x10; r7++) + { param0->unk2B0[(param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10 + r7] = r1[r7]; param0->unk2B4[(param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10 + r7] = r1[r7]; } @@ -2178,32 +2340,42 @@ THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) { } //_020087E0 - if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk54_C != 0) { - if (param0->unk000[st14].unk4A == 0) { + if (param0->unk000[st14].unk00_0 != 0 && param0->unk000[st14].unk54_C != 0) + { + if (param0->unk000[st14].unk4A == 0) + { stc = 1; param0->unk000[st14].unk4A = param0->unk000[st14].unk4B; BlendPalette(param0->unk2B4 + st14 * 0x10, - param0->unk2B0 + st14 * 0x10, - 0x10, - param0->unk000[st14].unk48, - (u16)param0->unk000[st14].unk4C); + param0->unk2B0 + st14 * 0x10, + 0x10, + param0->unk000[st14].unk48, + (u16)param0->unk000[st14].unk4C); - if (param0->unk000[st14].unk6C.unk0_0 != 0) { + if (param0->unk000[st14].unk6C.unk0_0 != 0) + { BlendPalette(param0->unk2B4 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, - param0->unk2B0 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, - 0x10, - param0->unk000[st14].unk48, - (u16)param0->unk000[st14].unk4C); + param0->unk2B0 + (param0->unk000[st14].unk6C.unk0_0 + 3) * 0x10, + 0x10, + param0->unk000[st14].unk48, + (u16)param0->unk000[st14].unk4C); } - if (param0->unk000[st14].unk48 == param0->unk000[st14].unk49) { + if (param0->unk000[st14].unk48 == param0->unk000[st14].unk49) + { param0->unk000[st14].unk54_C = 0; - } else if (param0->unk000[st14].unk48 > param0->unk000[st14].unk49) { + } + else if (param0->unk000[st14].unk48 > param0->unk000[st14].unk49) + { param0->unk000[st14].unk48--; - } else { + } + else + { param0->unk000[st14].unk48++; } - } else { + } + else + { param0->unk000[st14].unk4A--; } } @@ -2212,17 +2384,21 @@ THUMB_FUNC void FUN_020086F4(struct UnkStruct_02006D98 *param0) { param0->unk2E2 = stc; } -THUMB_FUNC u8 FUN_020088D8(u8 param0) { +THUMB_FUNC u8 FUN_020088D8(u8 param0) +{ return (u8)(((u8)((param0 & 0xf0) >> 4)) | ((u8)(param0 << 4))); } -THUMB_FUNC void FUN_020088EC(struct UnkStruct_02006D98_2 *param0, u8 *param1) { - if (param0->unk04.field_06 != 0) { +THUMB_FUNC void FUN_020088EC(struct UnkStruct_02006D98_2 *param0, u8 *param1) +{ + if (param0->unk04.field_06 != 0) + { FUN_02008904(param1, param0->unk04.field_0C, 1); } } -THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) +{ struct UnkStruct_02006D98_3 *st10; s32 i; u32 r2; @@ -2231,19 +2407,26 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { u8 r1; u32 st0 = param1; - for (i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) + { st10 = UNK_02105AE8[i]; r1 = 0; - while (st10[r1].unk0 != 0xff) { + while (st10[r1].unk0 != 0xff) + { r0 = (u8)(st10[r1].unk0 + ((param1 & 0xf) - 8)); r4 = (u8)(st10[r1].unk1 + (((param1 & 0xf0) >> 4) - 8)); r2 = (u32)(r0 / 2 + r4 * 0x50); - if ((r0 & 1) != 0) { - if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) { + if ((r0 & 1) != 0) + { + if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) + { param0[r2] += 0x50; } - } else { - if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) { + } + else + { + if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) + { param0[r2] += 5; } } @@ -2255,20 +2438,28 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { param1 = st0; - if (param2 != 0) { - for (i = 0; i < 4; i++) { + if (param2 != 0) + { + for (i = 0; i < 4; i++) + { st10 = UNK_02105AE8[i]; r1 = 0; - while (st10[r1].unk0 != 0xff) { + while (st10[r1].unk0 != 0xff) + { r0 = (u8)(st10[r1].unk0 - 14 + ((param1 & 0xf) - 8) + 0x50); r4 = (u8)(st10[r1].unk1 + (((param1 & 0xf0) >> 4) - 8)); r2 = (u32)(r0 / 2 + r4 * 0x50); - if ((r0 & 1) != 0) { - if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) { + if ((r0 & 1) != 0) + { + if ((param0[r2] & 0xf0) >= 0x10 && (param0[r2] & 0xf0) <= 0x30) + { param0[r2] += 0x50; } - } else { - if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) { + } + else + { + if ((param0[r2] & 0xf) >= 1 && (param0[r2] & 0xf) <= 3) + { param0[r2] += 5; } } @@ -2279,15 +2470,18 @@ THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { } } -THUMB_FUNC u16 FUN_02008A54(u32 *param0) { +THUMB_FUNC u16 FUN_02008A54(u32 *param0) +{ *param0 = (*param0) * 0x41C64E6D + 0x6073; return (u16)(*param0 >> 16); } -THUMB_FUNC void FUN_02008A74(u8 *param0) { +THUMB_FUNC void FUN_02008A74(u8 *param0) +{ u32 st0 = ((u16 *)param0)[0xc7f]; - for (s32 r4 = 0xc7f; r4 > -1; r4--) { + for (s32 r4 = 0xc7f; r4 > -1; r4--) + { ((u16 *)param0)[r4] ^= st0; FUN_02008A54(&st0); } diff --git a/include/unk_02006D98.h b/include/unk_02006D98.h index fbb8c2c79..c20bcea1c 100644 --- a/include/unk_02006D98.h +++ b/include/unk_02006D98.h @@ -1,9 +1,10 @@ #ifndef POKEDIAMOND_UNK_02006D98_H #define POKEDIAMOND_UNK_02006D98_H -#include "NNS_g2d.h" #include "global.h" -struct UnkStruct_02006D98_4 { +#include "NNS_g2d.h" +struct UnkStruct_02006D98_4 +{ u16 field_00; u16 field_02; u16 field_04; @@ -12,11 +13,13 @@ struct UnkStruct_02006D98_4 { u32 field_0C; }; -struct UnkStruct_02006D98_sub { +struct UnkStruct_02006D98_sub +{ s8 unk0; u8 unk1; }; -struct UnkStruct_02006D98_sub2 { +struct UnkStruct_02006D98_sub2 +{ u16 unk0_0 : 2; u16 unk0_2 : 1; u16 unk0_3 : 1; @@ -30,7 +33,8 @@ struct UnkStruct_02006D98_sub2 { s16 unka; }; -struct UnkStruct_02006D98_2 { +struct UnkStruct_02006D98_2 +{ u32 unk00_0 : 1; u32 unk00_1 : 6; u32 unk00_7 : 1; @@ -87,7 +91,8 @@ struct UnkStruct_02006D98_2 { struct UnkStruct_02006D98_sub unk84[10]; }; -struct UnkStruct_02006D98 { +struct UnkStruct_02006D98 +{ struct UnkStruct_02006D98_2 unk000[4]; NNSG2dImageProxy unk260; NNSG2dImagePaletteProxy unk284; @@ -108,7 +113,8 @@ struct UnkStruct_02006D98 { u32 unk2E4; }; -struct UnkStruct_02006D98_3 { +struct UnkStruct_02006D98_3 +{ u8 unk0; u8 unk1; }; @@ -120,30 +126,33 @@ void FUN_02007314(struct UnkStruct_02006D98_2 *param0); void FUN_0200737C(struct UnkStruct_02006D98_2 *param0, struct UnkStruct_02006D98_sub *param1); BOOL FUN_02007390(struct UnkStruct_02006D98_2 *param0); struct UnkStruct_02006D98_2 *FUN_020073A0(struct UnkStruct_02006D98 *param0, - struct UnkStruct_02006D98_4 *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - const void *param6, - void (*param7)(struct UnkStruct_02006D98_2 *, void *)); + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + const void *param6, + void (*param7)(struct UnkStruct_02006D98_2 *, void *)); struct UnkStruct_02006D98_2 *FUN_020073E8(struct UnkStruct_02006D98 *param0, - struct UnkStruct_02006D98_4 *param1, - u32 param2, - u32 param3, - u32 param4, - u32 param5, - s32 param6, - const void *param7, - void (*param8)(struct UnkStruct_02006D98_2 *, void *)); + struct UnkStruct_02006D98_4 *param1, + u32 param2, + u32 param3, + u32 param4, + u32 param5, + s32 param6, + const void *param7, + void (*param8)(struct UnkStruct_02006D98_2 *, void *)); void FUN_02007534(struct UnkStruct_02006D98_2 *param0); void FUN_02007540(struct UnkStruct_02006D98 *param0); void FUN_02007558(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2); u32 FUN_0200782C(struct UnkStruct_02006D98_2 *param0, u32 param1); void FUN_020079E0(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2); -void FUN_02007E40(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); -void FUN_02007E68(struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); -void FUN_02007E98(struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007E40( + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007E68( + struct UnkStruct_02006D98_2 *param0, u32 param1, u32 param2, u32 param3, u32 param4); +void FUN_02007E98( + struct UnkStruct_02006D98 *param0, u32 param1, u32 param2, u32 param3, u32 param4); void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0); BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0); void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1); @@ -169,4 +178,4 @@ void FUN_02008904(u8 *param0, u32 param1, u32 param2); u16 FUN_02008A54(u32 *param0); void FUN_02008A74(u8 *param0); -#endif // POKEDIAMOND_UNK_02006D98_H +#endif // POKEDIAMOND_UNK_02006D98_H From bf18d30b4e21da4ac6c06d8b506c20cff9fce586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 10 Sep 2021 19:47:10 +0200 Subject: [PATCH 12/19] add missing inlines and fix a nonmatching function --- arm9/lib/NitroSDK/include/GX_g3.h | 23 ++ arm9/lib/NitroSDK/include/GX_g3imm.h | 18 +- arm9/lib/NitroSDK/include/registers.h | 88 +++++ arm9/src/unk_02006D98.c | 545 +------------------------- 4 files changed, 146 insertions(+), 528 deletions(-) diff --git a/arm9/lib/NitroSDK/include/GX_g3.h b/arm9/lib/NitroSDK/include/GX_g3.h index 765ecc649..7f11c55e8 100644 --- a/arm9/lib/NitroSDK/include/GX_g3.h +++ b/arm9/lib/NitroSDK/include/GX_g3.h @@ -181,4 +181,27 @@ typedef union } GXBoxTestParam; + + + +#define GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr) \ + ((u32)(((addr) >> 3) | \ + ((texFmt) << REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT) | \ + ((texGen) << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT) | \ + ((s) << REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT) | \ + ((t) << REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT) | \ + ((repeat) << REG_G3_TEXIMAGE_PARAM_RS_SHIFT) | \ + ((flip) << REG_G3_TEXIMAGE_PARAM_FS_SHIFT) | \ + ((pltt0) << REG_G3_TEXIMAGE_PARAM_TR_SHIFT))) + +#define GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc) \ + ((u32)(((light) << REG_G3_POLYGON_ATTR_LE_SHIFT) | \ + ((polyMode) << REG_G3_POLYGON_ATTR_PM_SHIFT) | \ + ((cullMode) << REG_G3_POLYGON_ATTR_BK_SHIFT) | \ + (misc) | \ + ((polygonID) << REG_G3_POLYGON_ATTR_ID_SHIFT) | \ + ((alpha) << REG_G3_POLYGON_ATTR_ALPHA_SHIFT))) + + + #endif //GUARD_GX_G3_H diff --git a/arm9/lib/NitroSDK/include/GX_g3imm.h b/arm9/lib/NitroSDK/include/GX_g3imm.h index f811dc687..49a9f13b5 100644 --- a/arm9/lib/NitroSDK/include/GX_g3imm.h +++ b/arm9/lib/NitroSDK/include/GX_g3imm.h @@ -1,10 +1,26 @@ #ifndef GUARD_GX_G3IMM_H #define GUARD_GX_G3IMM_H +#include "GX_g3.h" #include "fx.h" void G3_LoadMtx43(struct Mtx43 *mtx); void G3_MultMtx43(struct Mtx43 *mtx); void G3_MultMtx33(struct Mtx33 *mtx); -#endif //GUARD_GX_G3IMM_H +static inline void G3_PolygonAttr(int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc) { + reg_G3_POLYGON_ATTR = GX_PACK_POLYGONATTR_PARAM(light, + polyMode, cullMode, polygonID, alpha, misc); +} + +static inline void G3_TexImageParam(GXTexFmt texFmt, + GXTexGen texGen, + GXTexSizeS s, + GXTexSizeT t, + GXTexRepeat repeat, + GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr) { + reg_G3_TEXIMAGE_PARAM = GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr); +} + + +#endif //GUARD_GX_G3IMM_H diff --git a/arm9/lib/NitroSDK/include/registers.h b/arm9/lib/NitroSDK/include/registers.h index b4fd8ce7b..83b06ba06 100644 --- a/arm9/lib/NitroSDK/include/registers.h +++ b/arm9/lib/NitroSDK/include/registers.h @@ -1066,4 +1066,92 @@ #define REG_OS_TM3CNT_H_PS_SIZE 2 #define REG_OS_TM3CNT_H_PS_MASK 0x0003 +// POLYGON_ATTR + +#define REG_G3_POLYGON_ATTR_ID_SHIFT 24 +#define REG_G3_POLYGON_ATTR_ID_SIZE 6 +#define REG_G3_POLYGON_ATTR_ID_MASK 0x3f000000 + +#define REG_G3_POLYGON_ATTR_ALPHA_SHIFT 16 +#define REG_G3_POLYGON_ATTR_ALPHA_SIZE 5 +#define REG_G3_POLYGON_ATTR_ALPHA_MASK 0x001f0000 + +#define REG_G3_POLYGON_ATTR_FE_SHIFT 15 +#define REG_G3_POLYGON_ATTR_FE_SIZE 1 +#define REG_G3_POLYGON_ATTR_FE_MASK 0x00008000 + +#define REG_G3_POLYGON_ATTR_DT_SHIFT 14 +#define REG_G3_POLYGON_ATTR_DT_SIZE 1 +#define REG_G3_POLYGON_ATTR_DT_MASK 0x00004000 + +#define REG_G3_POLYGON_ATTR_D1_SHIFT 13 +#define REG_G3_POLYGON_ATTR_D1_SIZE 1 +#define REG_G3_POLYGON_ATTR_D1_MASK 0x00002000 + +#define REG_G3_POLYGON_ATTR_FC_SHIFT 12 +#define REG_G3_POLYGON_ATTR_FC_SIZE 1 +#define REG_G3_POLYGON_ATTR_FC_MASK 0x00001000 + +#define REG_G3_POLYGON_ATTR_XL_SHIFT 11 +#define REG_G3_POLYGON_ATTR_XL_SIZE 1 +#define REG_G3_POLYGON_ATTR_XL_MASK 0x00000800 + +#define REG_G3_POLYGON_ATTR_FR_SHIFT 7 +#define REG_G3_POLYGON_ATTR_FR_SIZE 1 +#define REG_G3_POLYGON_ATTR_FR_MASK 0x00000080 + +#define REG_G3_POLYGON_ATTR_BK_SHIFT 6 +#define REG_G3_POLYGON_ATTR_BK_SIZE 1 +#define REG_G3_POLYGON_ATTR_BK_MASK 0x00000040 + +#define REG_G3_POLYGON_ATTR_PM_SHIFT 4 +#define REG_G3_POLYGON_ATTR_PM_SIZE 2 +#define REG_G3_POLYGON_ATTR_PM_MASK 0x00000030 + +#define REG_G3_POLYGON_ATTR_LE_SHIFT 0 +#define REG_G3_POLYGON_ATTR_LE_SIZE 4 +#define REG_G3_POLYGON_ATTR_LE_MASK 0x0000000f + +// TEXIMAGE_PARAM + +#define REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT 30 +#define REG_G3_TEXIMAGE_PARAM_TGEN_SIZE 2 +#define REG_G3_TEXIMAGE_PARAM_TGEN_MASK 0xc0000000 + +#define REG_G3_TEXIMAGE_PARAM_TR_SHIFT 29 +#define REG_G3_TEXIMAGE_PARAM_TR_SIZE 1 +#define REG_G3_TEXIMAGE_PARAM_TR_MASK 0x20000000 + +#define REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT 26 +#define REG_G3_TEXIMAGE_PARAM_TEXFMT_SIZE 3 +#define REG_G3_TEXIMAGE_PARAM_TEXFMT_MASK 0x1c000000 + +#define REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT 23 +#define REG_G3_TEXIMAGE_PARAM_T_SIZE_SIZE 3 +#define REG_G3_TEXIMAGE_PARAM_T_SIZE_MASK 0x03800000 + +#define REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT 20 +#define REG_G3_TEXIMAGE_PARAM_V_SIZE_SIZE 3 +#define REG_G3_TEXIMAGE_PARAM_V_SIZE_MASK 0x00700000 + +#define REG_G3_TEXIMAGE_PARAM_FT_SHIFT 19 +#define REG_G3_TEXIMAGE_PARAM_FT_SIZE 1 +#define REG_G3_TEXIMAGE_PARAM_FT_MASK 0x00080000 + +#define REG_G3_TEXIMAGE_PARAM_FS_SHIFT 18 +#define REG_G3_TEXIMAGE_PARAM_FS_SIZE 1 +#define REG_G3_TEXIMAGE_PARAM_FS_MASK 0x00040000 + +#define REG_G3_TEXIMAGE_PARAM_RT_SHIFT 17 +#define REG_G3_TEXIMAGE_PARAM_RT_SIZE 1 +#define REG_G3_TEXIMAGE_PARAM_RT_MASK 0x00020000 + +#define REG_G3_TEXIMAGE_PARAM_RS_SHIFT 16 +#define REG_G3_TEXIMAGE_PARAM_RS_SIZE 1 +#define REG_G3_TEXIMAGE_PARAM_RS_MASK 0x00010000 + +#define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_SHIFT 0 +#define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_SIZE 16 +#define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_MASK 0x0000ffff + #endif //POKEDIAMOND_ARM9_REGISTERS_H diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 83fea2f1e..f829154a3 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -276,7 +276,7 @@ const int UNK_020ECD4C[4][2][4] = { { { 0, 0, 0x50, 0x50 }, { 0x50, 0, 0xA0, 0x5 } }; -struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { +const struct UnkStruct_02006D98_3 *UNK_02105AE8[] = { UNK_020ECCE2, UNK_020ECC78, UNK_020ECC10, @@ -350,9 +350,6 @@ THUMB_FUNC struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id) return ptr; } -#ifdef NONMATCHING - -// mostly matching, only 2 register writes messed up THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) { s32 arg3; @@ -365,10 +362,14 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) reg_G3_MTX_PUSH = 0; - // this is all shuffled however I try - reg_G3_TEXIMAGE_PARAM = (param0->unk29C >> 3) | (param0->unk260.attr.fmt << 26) | (1 << 30) | - (param0->unk260.attr.sizeS << 20) | (param0->unk260.attr.sizeT << 23) | - (param0->unk260.attr.plttUse << 29); + G3_TexImageParam(param0->unk260.attr.fmt, + GX_TEXGEN_TEXCOORD, + param0->unk260.attr.sizeS, + param0->unk260.attr.sizeT, + GX_TEXREPEAT_NONE, + GX_TEXFLIP_NONE, + param0->unk260.attr.plttUse, + param0->unk29C); for (int st18 = 0; st18 < 4; st18++) { @@ -405,8 +406,8 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) reg_G3_TEXPLTT_BASE = (param0->unk2A4 + st18 * 0x20) >> (4 - shift); u32 r1 = param0->unk000[st18].unk28 << 0xc; - u32 r0 = (param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc; - u32 r3 = (param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc; + u32 r0 = (u32)((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc); + u32 r3 = (u32)((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc); reg_G3_MTX_TRANS = r3; reg_G3_MTX_TRANS = r0; @@ -439,12 +440,12 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) reg_G3_SPE_EMI = 0x4210; - { - // shuffled there as well - u32 r1 = param0->unk000[st18].unk00_1; - u32 r0 = param0->unk000[st18].unk54_2; - reg_G3_POLYGON_ATTR = 0xc0 | (r1 << 24) | (r0 << 16); - } + G3_PolygonAttr(GX_LIGHTMASK_NONE, + GX_POLYGONMODE_MODULATE, + GX_CULL_NONE, + param0->unk000[st18].unk00_1, + param0->unk000[st18].unk54_2, + 0); if (param0->unk000[st18].unk54_1 != 0) { @@ -533,7 +534,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) } NNS_G2dDrawSpriteFast(param0->unk000[st18].unk6C.unk4 - (arg3 / 2), - param0->unk000[st18].unk6C.unk4 - (arg4 / 2), + param0->unk000[st18].unk6C.unk6 - (arg4 / 2), 0xFFFFFC18, arg3, arg4, @@ -545,516 +546,6 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) reg_G3_MTX_POP = 1; } -#else -asm void FUN_02006ED4(struct UnkStruct_02006D98 *param0) -{ - // clang-format off - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - bl FUN_020082A8 - add r0, r5, #0x0 - bl FUN_020086F4 - bl NNS_G3dGeFlushBuffer - mov r6, #0x9f - mov r0, #0x0 - ldr r4, =0x04000444 - lsl r6, r6, #0x2 - str r0, [r4, #0x0] - str r0, [sp, #0x18] - add r0, r6, #0x0 - sub r0, #0xc - ldr r1, [r5, r0] - add r3, r6, #0x0 - ldr r2, [r5, r6] - add r0, r6, #0x0 - sub r3, #0x8 - add r6, #0x20 - ldr r3, [r5, r3] - ldr r6, [r5, r6] - sub r0, #0x10 - ldr r0, [r5, r0] - lsr r6, r6, #0x3 - lsl r3, r3, #0x1a - orr r6, r3 - mov r3, #0x1 - lsl r3, r3, #0x1e - lsl r0, r0, #0x14 - orr r3, r6 - lsl r1, r1, #0x17 - orr r0, r3 - lsl r2, r2, #0x1d - orr r0, r1 - orr r0, r2 - str r0, [r4, #0x64] - ldr r0, [sp, #0x18] - add r4, r5, #0x0 - str r0, [sp, #0x14] - ldr r0, =UNK_020ECD4C - str r0, [sp, #0x1c] -_02006F30: - ldr r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - beq _02006F46 - ldr r0, [r4, #0x54] - lsl r1, r0, #0x1f - lsr r1, r1, #0x1f - bne _02006F46 - lsl r0, r0, #0x14 - lsr r0, r0, #0x1f - beq _02006F48 -_02006F46: - b _020072BC -_02006F48: - ldr r2, [r4, #0x68] - cmp r2, #0x0 - beq _02006F56 - add r1, r4, #0x0 - add r0, r4, #0x0 - add r1, #0x24 - blx r2 -_02006F56: - bl NNS_G3dGeFlushBuffer - ldr r0, =0x000002E3 - ldrb r0, [r5, r0] - cmp r0, #0x1 - beq _02006F68 - ldr r0, =0x04000454 - mov r1, #0x0 - str r1, [r0, #0x0] -_02006F68: - add r0, r4, #0x0 - bl FUN_02007F48 - mov r0, #0x9d - lsl r0, r0, #0x2 - ldr r0, [r5, r0] - cmp r0, #0x2 - bne _02006F7C - mov r0, #0x1 - b _02006F7E -_02006F7C: - mov r0, #0x0 -_02006F7E: - mov r1, #0xa9 - lsl r1, r1, #0x2 - ldr r2, [r5, r1] - ldr r1, [sp, #0x14] - add r2, r2, r1 - mov r1, #0x4 - sub r0, r1, r0 - add r1, r2, #0x0 - lsr r1, r0 - ldr r0, =0x040004AC - str r1, [r0, #0x0] - ldr r0, [r4, #0x28] - lsl r1, r0, #0xc - mov r0, #0x26 - ldrsh r2, [r4, r0] - mov r0, #0x42 - ldrsh r0, [r4, r0] - add r0, r2, r0 - mov r2, #0x24 - ldrsh r3, [r4, r2] - mov r2, #0x40 - ldrsh r2, [r4, r2] - lsl r0, r0, #0xc - add r2, r3, r2 - lsl r3, r2, #0xc - ldr r2, =0x04000470 - str r3, [r2, #0x0] - str r0, [r2, #0x0] - add r0, r2, #0x0 - str r1, [r0, #0x0] - ldrh r0, [r4, #0x38] - asr r0, r0, #0x4 - lsl r1, r0, #0x2 - ldr r0, =FX_SinCosTable_ - add r2, r0, r1 - ldrsh r0, [r0, r1] - mov r1, #0x2 - ldrsh r1, [r2, r1] - bl G3_RotX - ldrh r0, [r4, #0x3a] - asr r0, r0, #0x4 - lsl r1, r0, #0x2 - ldr r0, =FX_SinCosTable_ - add r2, r0, r1 - ldrsh r0, [r0, r1] - mov r1, #0x2 - ldrsh r1, [r2, r1] - bl G3_RotY - ldrh r0, [r4, #0x3c] - asr r0, r0, #0x4 - lsl r1, r0, #0x2 - ldr r0, =FX_SinCosTable_ - add r2, r0, r1 - ldrsh r0, [r0, r1] - mov r1, #0x2 - ldrsh r1, [r2, r1] - bl G3_RotZ - ldr r0, [r4, #0x28] - lsl r0, r0, #0xc - neg r1, r0 - mov r0, #0x26 - ldrsh r2, [r4, r0] - mov r0, #0x42 - ldrsh r0, [r4, r0] - add r0, r2, r0 - mov r2, #0x24 - ldrsh r3, [r4, r2] - mov r2, #0x40 - ldrsh r2, [r4, r2] - lsl r0, r0, #0xc - neg r0, r0 - add r2, r3, r2 - lsl r2, r2, #0xc - neg r3, r2 - ldr r2, =0x04000470 - str r3, [r2, #0x0] - str r0, [r2, #0x0] - add r0, r2, #0x0 - str r1, [r0, #0x0] - ldr r3, [r4, #0x50] - lsl r0, r3, #0x11 - lsr r0, r0, #0x1b - lsl r2, r3, #0x16 - lsl r1, r0, #0xa - lsl r0, r3, #0x1b - lsr r2, r2, #0x1b - lsr r0, r0, #0x1b - lsl r2, r2, #0x5 - orr r0, r2 - orr r0, r1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - lsl r0, r3, #0x2 - lsr r0, r0, #0x1b - lsl r1, r0, #0xa - lsl r0, r3, #0xc - lsl r3, r3, #0x7 - lsr r3, r3, #0x1b - lsr r0, r0, #0x1b - lsl r3, r3, #0x5 - orr r0, r3 - orr r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsl r0, r0, #0x10 - add r1, r2, #0x0 - orr r1, r0 - mov r0, #0x2 - lsl r0, r0, #0xe - orr r1, r0 - ldr r0, =0x040004C0 - str r1, [r0, #0x0] - ldr r1, =0x00004210 - add r0, r0, #0x4 - str r1, [r0, #0x0] - ldr r1, [r4, #0x0] - ldr r0, [r4, #0x54] - lsl r1, r1, #0x19 - lsl r0, r0, #0x19 - lsr r1, r1, #0x1a - lsr r0, r0, #0x1b - lsl r2, r1, #0x18 - mov r1, #0xc0 - lsl r0, r0, #0x10 - orr r1, r2 - orr r1, r0 - ldr r0, =0x040004A4 - str r1, [r0, #0x0] - ldr r0, [r4, #0x54] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - beq _02007104 - add r0, r4, #0x0 - add r0, #0x5b - ldrb r0, [r0, #0x0] - add r2, r4, #0x0 - add r2, #0x44 - lsl r1, r0, #0x4 - ldr r0, [sp, #0x1c] - ldrb r3, [r2, #0x0] - add r0, r0, r1 - ldr r2, [sp, #0x1c] - ldr r0, [r0, #0x4] - ldr r1, [r2, r1] - add r6, r3, r1 - add r1, r4, #0x0 - add r1, #0x46 - ldrb r1, [r1, #0x0] - mov r12, r1 - add r1, r4, #0x0 - add r1, #0x45 - ldrb r2, [r1, #0x0] - add r1, r2, r0 - add r0, r4, #0x0 - add r0, #0x47 - ldrb r7, [r0, #0x0] - mov r0, r12 - add r0, r0, r6 - str r7, [sp, #0x0] - str r6, [sp, #0x4] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - add r0, r7, r1 - str r0, [sp, #0x10] - mov r1, #0x24 - ldrsh r1, [r4, r1] - mov r0, #0x2c - ldrsh r0, [r4, r0] - sub r1, #0x28 - add r1, r1, r3 - add r0, r0, r1 - mov r3, #0x26 - ldrsh r3, [r4, r3] - mov r1, #0x2e - lsl r0, r0, #0x10 - sub r3, #0x28 - add r2, r3, r2 - ldrsh r1, [r4, r1] - ldr r3, [r4, #0x28] - asr r0, r0, #0x10 - add r2, r1, r2 - mov r1, #0x6e - ldrsb r1, [r4, r1] - sub r1, r2, r1 - ldr r2, [r4, #0x30] - lsl r1, r1, #0x10 - add r2, r3, r2 - asr r1, r1, #0x10 - mov r3, r12 - bl NNS_G2dDrawSpriteFast - b _02007174 -_02007104: - mov r0, #0x34 - ldrsh r1, [r4, r0] - mov r0, #0x50 - ldr r2, [sp, #0x1c] - mul r0, r1 - asr r3, r0, #0x8 - mov r0, #0x36 - ldrsh r1, [r4, r0] - mov r0, #0x50 - ldr r6, [sp, #0x1c] - mul r0, r1 - asr r1, r0, #0x8 - add r0, r4, #0x0 - add r0, #0x5b - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x4 - str r1, [sp, #0x0] - add r2, r2, r0 - ldr r0, [r6, r0] - lsr r6, r1, #0x1f - str r0, [sp, #0x4] - ldr r0, [r2, #0x4] - add r6, r1, r6 - str r0, [sp, #0x8] - ldr r0, [r2, #0x8] - asr r1, r6, #0x1 - str r0, [sp, #0xc] - ldr r0, [r2, #0xc] - str r0, [sp, #0x10] - mov r0, #0x24 - ldrsh r2, [r4, r0] - lsr r0, r3, #0x1f - add r0, r3, r0 - asr r0, r0, #0x1 - sub r2, r2, r0 - mov r0, #0x2c - ldrsh r0, [r4, r0] - ldr r6, [r4, #0x28] - add r0, r2, r0 - mov r2, #0x26 - ldrsh r2, [r4, r2] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - sub r2, r2, r1 - mov r1, #0x2e - ldrsh r1, [r4, r1] - add r2, r2, r1 - mov r1, #0x6e - ldrsb r1, [r4, r1] - sub r1, r2, r1 - ldr r2, [r4, #0x30] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add r2, r6, r2 - bl NNS_G2dDrawSpriteFast -_02007174: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r1, r0, #0x1e - lsr r1, r1, #0x1e - beq _0200719A - lsl r0, r0, #0x19 - lsr r0, r0, #0x1e - beq _0200719A - ldr r0, [r4, #0x54] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _0200719A - mov r0, #0xb9 - lsl r0, r0, #0x2 - ldr r1, [r5, r0] - mov r0, #0x1 - tst r0, r1 - beq _0200719C -_0200719A: - b _020072BC -_0200719C: - ldr r0, =0x000002E3 - ldrb r0, [r5, r0] - cmp r0, #0x1 - beq _020071AA - ldr r0, =0x04000454 - mov r1, #0x0 - str r1, [r0, #0x0] -_020071AA: - mov r0, #0x9d - lsl r0, r0, #0x2 - ldr r0, [r5, r0] - cmp r0, #0x2 - bne _020071B8 - mov r1, #0x1 - b _020071BA -_020071B8: - mov r1, #0x0 -_020071BA: - add r2, r4, #0x0 - add r2, #0x6c - ldrh r2, [r2, #0x0] - mov r0, #0xa9 - lsl r0, r0, #0x2 - lsl r2, r2, #0x1e - lsr r2, r2, #0x1e - add r2, r2, #0x3 - ldr r0, [r5, r0] - lsl r2, r2, #0x5 - add r2, r0, r2 - mov r0, #0x4 - sub r0, r0, r1 - add r1, r2, #0x0 - lsr r1, r0 - ldr r0, =0x040004AC - str r1, [r0, #0x0] - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x1f - beq _020071FA - mov r0, #0x34 - ldrsh r0, [r4, r0] - lsl r0, r0, #0x6 - asr r3, r0, #0x8 - mov r0, #0x36 - ldrsh r0, [r4, r0] - lsl r0, r0, #0x4 - asr r1, r0, #0x8 - b _020071FE -_020071FA: - mov r3, #0x40 - mov r1, #0x10 -_020071FE: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _02007220 - mov r0, #0x74 - ldrsh r2, [r4, r0] - mov r0, #0x24 - mov r6, #0x2c - ldrsh r0, [r4, r0] - ldrsh r6, [r4, r6] - add r0, r0, r6 - add r2, r2, r0 - add r0, r4, #0x0 - add r0, #0x70 - strh r2, [r0, #0x0] -_02007220: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - lsl r0, r0, #0x1c - lsr r0, r0, #0x1f - beq _02007242 - mov r0, #0x76 - ldrsh r2, [r4, r0] - mov r0, #0x26 - mov r6, #0x2e - ldrsh r0, [r4, r0] - ldrsh r6, [r4, r6] - add r0, r0, r6 - add r2, r2, r0 - add r0, r4, #0x0 - add r0, #0x72 - strh r2, [r0, #0x0] -_02007242: - add r0, r4, #0x0 - add r0, #0x6c - ldrh r0, [r0, #0x0] - ldr r2, =UNK_020ECBD0 - ldr r6, =UNK_020ECBD0 - lsl r0, r0, #0x19 - lsr r0, r0, #0x1e - lsl r0, r0, #0x4 - str r1, [sp, #0x0] - add r2, r2, r0 - ldr r0, [r6, r0] - lsr r6, r1, #0x1f - str r0, [sp, #0x4] - ldr r0, [r2, #0x4] - add r6, r1, r6 - str r0, [sp, #0x8] - ldr r0, [r2, #0x8] - asr r1, r6, #0x1 - str r0, [sp, #0xc] - ldr r0, [r2, #0xc] - str r0, [sp, #0x10] - mov r0, #0x70 - ldrsh r2, [r4, r0] - lsr r0, r3, #0x1f - add r0, r3, r0 - asr r0, r0, #0x1 - sub r0, r2, r0 - mov r2, #0x72 - ldrsh r2, [r4, r2] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - sub r1, r2, r1 - lsl r1, r1, #0x10 - ldr r2, =0xFFFFFC18 - asr r1, r1, #0x10 - bl NNS_G2dDrawSpriteFast -_020072BC: - ldr r0, [sp, #0x14] - add r4, #0x98 - add r0, #0x20 - str r0, [sp, #0x14] - ldr r0, [sp, #0x1c] - add r0, #0x20 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x18] - add r0, r0, #0x1 - str r0, [sp, #0x18] - cmp r0, #0x4 - bge _020072D6 - b _02006F30 -_020072D6: - ldr r0, =0x04000448 - mov r1, #0x1 - str r1, [r0, #0x0] - add sp, #0x20 - pop {r3-r7, pc} - // clang-format on -} -#endif THUMB_FUNC void FUN_020072E8(struct UnkStruct_02006D98 *param0) { From 070f4b63d2c14d76316f181cde1dabfa7f63c0b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 11 Sep 2021 09:29:21 +0200 Subject: [PATCH 13/19] fix remaining nonmatchings --- arm9/src/unk_02006D98.c | 326 ++++++---------------------------------- include/unk_02006D98.h | 15 +- 2 files changed, 60 insertions(+), 281 deletions(-) diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index f829154a3..8bb47c4a5 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -1185,325 +1185,93 @@ THUMB_FUNC void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1) param0->unk2E = (s16)((40 - param1) - (((40 - param1) * param0->unk36) >> 8)); } -#ifdef NONMATCHING -THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) +static inline inlineLoop(u8 *unk58, + u8 *unk59, + u8 *unk5A, + u8 *unk5B, + u8 *unk5C, + const struct UnkStruct_02006D98_sub *unk84) { - u8 *r6 = ¶m0->unk59; - if (param0->unk58 == 0) + if (*unk58 == 0) { return; } - if (param0->unk5A == 0) + if (*unk5A == 0) { - (*r6)++; + (*unk59)++; - while (param0->unk84[*r6].unk0 < -1) + while (unk84[*unk59].unk0 < -1) { - param0->unk5C[*r6]++; + unk5C[*unk59]++; - if (param0->unk84[*r6].unk1 == param0->unk5C[*r6] || param0->unk84[*r6].unk1 == 0) + if (unk84[*unk59].unk1 == unk5C[*unk59] || unk84[*unk59].unk1 == 0) { - param0->unk5C[*r6] = 0; - r6++; + unk5C[*unk59] = 0; + unk59++; } else { - *r6 = -2 - param0->unk84[*r6].unk0; + *unk59 = -2 - unk84[*unk59].unk0; } } - if (param0->unk84[*r6].unk0 == -1 || *r6 >= 10) + if (unk84[*unk59].unk0 == -1 || *unk59 >= 10) { - param0->unk5B = 0; - param0->unk58 = 0; + *unk5B = 0; + *unk58 = 0; return; } - param0->unk5B = param0->unk84[*r6].unk0; - param0->unk5A = param0->unk84[*r6].unk1; + *unk5B = unk84[*unk59].unk0; + *unk5A = unk84[*unk59].unk1; } else { - param0->unk5A--; + (*unk5A)--; } } -#else -asm void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) -{ - // clang-format off - push {r4-r7} - add r1, r0, #0x0 - add r1, #0x58 - ldrb r1, [r1, #0x0] - add r6, r0, #0x0 - add r6, #0x59 - cmp r1, #0x0 - beq _0200800A - add r1, r0, #0x0 - add r1, #0x5a - ldrb r1, [r1, #0x0] - cmp r1, #0x0 - bne _02007FFE - ldrb r1, [r6, #0x0] - add r1, r1, #0x1 - strb r1, [r6, #0x0] - ldrb r3, [r6, #0x0] - mov r1, #0x84 - lsl r4, r3, #0x1 - add r2, r0, r4 - ldrsb r2, [r2, r1] - sub r1, #0x85 - cmp r2, r1 - bge _02007FC6 - mov r2, #0x0 - sub r1, r2, #0x2 -_02007F7C: - add r4, r0, r3 - add r4, #0x5c - ldrb r4, [r4, #0x0] - add r3, r0, r3 - add r3, #0x5c - add r4, r4, #0x1 - strb r4, [r3, #0x0] - ldrb r5, [r6, #0x0] - lsl r3, r5, #0x1 - add r4, r0, r3 - add r3, r4, #0x0 - add r7, r0, r5 - add r3, #0x85 - add r7, #0x5c - ldrb r3, [r3, #0x0] - ldrb r7, [r7, #0x0] - cmp r3, r7 - beq _02007FA4 - cmp r3, #0x0 - bne _02007FAE -_02007FA4: - add r3, r0, r5 - add r3, #0x5c - strb r2, [r3, #0x0] - add r6, r6, #0x1 - b _02007FB6 -_02007FAE: - mov r3, #0x84 - ldrsb r3, [r4, r3] - sub r3, r1, r3 - strb r3, [r6, #0x0] -_02007FB6: - ldrb r3, [r6, #0x0] - mov r5, #0x84 - lsl r4, r3, #0x1 - add r7, r0, r4 - ldrsb r7, [r7, r5] - sub r5, #0x85 - cmp r7, r5 - blt _02007F7C -_02007FC6: - add r2, r0, r4 - mov r1, #0x84 - ldrsb r2, [r2, r1] - sub r1, #0x85 - cmp r2, r1 - beq _02007FD6 - cmp r3, #0xa - blo _02007FE6 -_02007FD6: - add r1, r0, #0x0 - mov r2, #0x0 - add r1, #0x5b - strb r2, [r1, #0x0] - add r0, #0x58 - strb r2, [r0, #0x0] - pop {r4-r7} - bx lr -_02007FE6: - add r1, r0, #0x0 - add r1, #0x5b - strb r2, [r1, #0x0] - ldrb r1, [r6, #0x0] - lsl r1, r1, #0x1 - add r1, r0, r1 - add r1, #0x85 - ldrb r1, [r1, #0x0] - add r0, #0x5a - strb r1, [r0, #0x0] - pop {r4-r7} - bx lr -_02007FFE: - add r1, r0, #0x0 - add r1, #0x5a - ldrb r1, [r1, #0x0] - add r0, #0x5a - sub r1, r1, #0x1 - strb r1, [r0, #0x0] -_0200800A: - pop {r4-r7} - bx lr - // clang-format on -} -#endif -THUMB_FUNC void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1) +THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) { - param0[0] = 1; - param0[2] = 0; - param0[1] = (u8)param1->unk0; - param0[3] = param1->unk1; - ((struct UnkStruct_02006D98_sub **)param0)[4] = param1; + inlineLoop(¶m0->unk58, + ¶m0->unk59, + ¶m0->unk5A, + ¶m0->unk5B, + param0->unk5C, + param0->unk84); +} + +THUMB_FUNC void FUN_02008010(struct UnkStruct_02006D98_5 *param0, struct UnkStruct_02006D98_sub *param1) +{ + param0->unk00 = 1; + param0->unk02 = 0; + param0->unk01 = (u8)param1->unk0; + param0->unk03 = param1->unk1; + param0->unk10 = param1; for (s32 i = 0; i < 10; i++) { - param0[i + 4] = 0; + param0->unk04[i] = 0; } } -#ifdef NONMATCHING -THUMB_FUNC s32 FUN_02008030(u8 *param0) +THUMB_FUNC s32 FUN_02008030(struct UnkStruct_02006D98_5 *param0) { - if (*param0 != 0) + if (param0->unk00 != 0) { - u8 *r3 = param0 + 2; - struct UnkStruct_02006D98_sub *r4 = ((struct UnkStruct_02006D98_sub **)param0)[4]; - if (*param0 != 0) - { - if (param0[3] == 0) - { - (*r3)++; - - while (r4[*r3].unk0 < -1) - { - param0[*r3 + 4]++; - if (r4[*r3].unk1 == param0[*r3 + 4] || r4[*r3].unk1 == 0) - { - param0[*r3 + 4] = 0; - r3++; - } - else - { - *r3 = -2 - r4[*r3].unk0; - } - } - - if (r4[*r3].unk0 == -1 || *r3 >= 10) - { - param0[0] = 0; - param0[1] = 0; - } - else - { - param0[1] = r4[*r3].unk0; - param0[3] = r4[*r3].unk1; - } - } - else - { - param0[3]--; - } - } - - return param0[1]; + inlineLoop(¶m0->unk00, + ¶m0->unk02, + ¶m0->unk03, + ¶m0->unk01, + param0->unk04, + param0->unk10); + return param0->unk01; } return -1; } -#else -asm s32 FUN_02008030(u8 *param0) -{ - // clang-format off - push {r4-r7} - ldrb r1, [r0, #0x0] - cmp r1, #0x0 - beq _020080C6 - add r3, r0, #0x2 - ldr r4, [r0, #0x10] - cmp r1, #0x0 - beq _020080C0 - ldrb r1, [r0, #0x3] - cmp r1, #0x0 - bne _020080BC - ldrb r1, [r3, #0x0] - add r1, r1, #0x1 - strb r1, [r3, #0x0] - ldrb r2, [r3, #0x0] - mov r1, #0x0 - mvn r1, r1 - lsl r5, r2, #0x1 - ldrsb r6, [r4, r5] - cmp r6, r1 - bge _02008098 - mov r1, #0x0 -_0200805C: - add r5, r0, r2 - ldrb r2, [r5, #0x4] - add r2, r2, #0x1 - strb r2, [r5, #0x4] - ldrb r2, [r3, #0x0] - add r5, r0, r2 - lsl r2, r2, #0x1 - add r2, r4, r2 - ldrb r7, [r2, #0x1] - ldrb r6, [r5, #0x4] - cmp r7, r6 - beq _02008078 - cmp r7, #0x0 - bne _0200807E -_02008078: - strb r1, [r5, #0x4] - add r3, r3, #0x1 - b _0200808A -_0200807E: - mov r5, #0x0 - ldrsb r5, [r2, r5] - mov r2, #0x1 - mvn r2, r2 - sub r2, r2, r5 - strb r2, [r3, #0x0] -_0200808A: - ldrb r2, [r3, #0x0] - mov r6, #0x0 - mvn r6, r6 - lsl r5, r2, #0x1 - ldrsb r7, [r4, r5] - cmp r7, r6 - blt _0200805C -_02008098: - ldrsb r5, [r4, r5] - mov r1, #0x0 - mvn r1, r1 - cmp r5, r1 - beq _020080A6 - cmp r2, #0xa - blo _020080AE -_020080A6: - mov r1, #0x0 - strb r1, [r0, #0x1] - strb r1, [r0, #0x0] - b _020080C0 -_020080AE: - strb r5, [r0, #0x1] - ldrb r1, [r3, #0x0] - lsl r1, r1, #0x1 - add r1, r4, r1 - ldrb r1, [r1, #0x1] - strb r1, [r0, #0x3] - b _020080C0 -_020080BC: - sub r1, r1, #0x1 - strb r1, [r0, #0x3] -_020080C0: - ldrb r0, [r0, #0x1] - pop {r4-r7} - bx lr -_020080C6: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r7} - bx lr - // clang-format on -} -#endif THUMB_FUNC void FUN_020080D0(struct UnkStruct_02006D98_2 *param0) { diff --git a/include/unk_02006D98.h b/include/unk_02006D98.h index c20bcea1c..42ed82173 100644 --- a/include/unk_02006D98.h +++ b/include/unk_02006D98.h @@ -119,6 +119,17 @@ struct UnkStruct_02006D98_3 u8 unk1; }; + +struct UnkStruct_02006D98_5 +{ + u8 unk00; + u8 unk01; + u8 unk02; + u8 unk03; + u8 unk04[10]; + struct UnkStruct_02006D98_sub *unk10; +}; + struct UnkStruct_02006D98 *FUN_02006D98(u32 heap_id); void FUN_02006ED4(struct UnkStruct_02006D98 *param0); void FUN_020072E8(struct UnkStruct_02006D98 *param0); @@ -157,8 +168,8 @@ void FUN_02007EEC(struct UnkStruct_02006D98_2 *param0); BOOL FUN_02007F20(struct UnkStruct_02006D98_2 *param0); void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1); void FUN_02007F48(struct UnkStruct_02006D98_2 *param0); -void FUN_02008010(u8 *param0, struct UnkStruct_02006D98_sub *param1); -s32 FUN_02008030(u8 *param0); +void FUN_02008010(struct UnkStruct_02006D98_5 *param0, struct UnkStruct_02006D98_sub *param1); +s32 FUN_02008030(struct UnkStruct_02006D98_5 *param0); void FUN_020080D0(struct UnkStruct_02006D98_2 *param0); void FUN_020080E0(struct UnkStruct_02006D98_2 *param0); void FUN_0200813C(struct UnkStruct_02006D98_2 *param0); From 6db13dabfc187d1679adc1e41da1c1c75b25c5ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 11 Sep 2021 09:40:05 +0200 Subject: [PATCH 14/19] fix remaining warnings --- arm9/src/unk_02006D98.c | 60 ++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 8bb47c4a5..8fcaac8e8 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -423,43 +423,43 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) G3_RotZ(FX_SinCosTable_[idz * 2], FX_SinCosTable_[idz * 2 + 1]); r1 = -(param0->unk000[st18].unk28 << 0xc); - r0 = -((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc); - r3 = -((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc); + r0 = -(u32)((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc); + r3 = -(u32)((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc); reg_G3_MTX_TRANS = r3; reg_G3_MTX_TRANS = r0; reg_G3_MTX_TRANS = r1; reg_G3_DIF_AMB = - ((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5 << 5) | + (u32)(((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5 << 5) | (param0->unk000[st18].unk50_a << 10))) | (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14 << 5) | (param0->unk000[st18].unk50_19 << 10))) << 16) | - 0x8000; + 0x8000); reg_G3_SPE_EMI = 0x4210; G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_MODULATE, GX_CULL_NONE, - param0->unk000[st18].unk00_1, - param0->unk000[st18].unk54_2, + (int)param0->unk000[st18].unk00_1, + (int)param0->unk000[st18].unk54_2, 0); if (param0->unk000[st18].unk54_1 != 0) { - u32 r6 = param0->unk000[st18].unk44 + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0]; - u32 r12 = param0->unk000[st18].unk46; - u32 r1 = param0->unk000[st18].unk45 + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][1]; - u32 r7 = param0->unk000[st18].unk47; - u32 r0 = r12 + r6; + int r6 = param0->unk000[st18].unk44 + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0]; + int r12 = param0->unk000[st18].unk46; + int r1 = param0->unk000[st18].unk45 + UNK_020ECD4C[st18][param0->unk000[st18].unk5B][1]; + int r7 = param0->unk000[st18].unk47; + int r0 = r12 + r6; - NNS_G2dDrawSpriteFast(param0->unk000[st18].unk24 - 40 + param0->unk000[st18].unk44 + - param0->unk000[st18].unk2C, - param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + - param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2, - param0->unk000[st18].unk28 + param0->unk000[st18].unk30, + NNS_G2dDrawSpriteFast((s16)(param0->unk000[st18].unk24 - 40 + param0->unk000[st18].unk44 + + param0->unk000[st18].unk2C), + (s16)(param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + + param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2), + (int)(param0->unk000[st18].unk28 + param0->unk000[st18].unk30), r12, r7, r6, @@ -473,10 +473,10 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) arg4 = (param0->unk000[st18].unk36 * 80) >> 8; NNS_G2dDrawSpriteFast( - param0->unk000[st18].unk24 - (arg3 / 2) + param0->unk000[st18].unk2C, - param0->unk000[st18].unk26 - (arg4 / 2) + param0->unk000[st18].unk2E - - param0->unk000[st18].unk6C.unk2, - param0->unk000[st18].unk28 + param0->unk000[st18].unk30, + (s16)(param0->unk000[st18].unk24 - (arg3 / 2) + param0->unk000[st18].unk2C), + (s16)(param0->unk000[st18].unk26 - (arg4 / 2) + param0->unk000[st18].unk2E - + param0->unk000[st18].unk6C.unk2), + (int)(param0->unk000[st18].unk28 + param0->unk000[st18].unk30), arg3, arg4, UNK_020ECD4C[st18][param0->unk000[st18].unk5B][0], @@ -521,20 +521,20 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) if (param0->unk000[st18].unk6C.unk0_2 != 0) { - param0->unk000[st18].unk6C.unk4 = param0->unk000[st18].unk24 + + param0->unk000[st18].unk6C.unk4 = (s16)(param0->unk000[st18].unk24 + param0->unk000[st18].unk2C + - param0->unk000[st18].unk6C.unk8; + param0->unk000[st18].unk6C.unk8); } if (param0->unk000[st18].unk6C.unk0_3 != 0) { - param0->unk000[st18].unk6C.unk6 = param0->unk000[st18].unk26 + + param0->unk000[st18].unk6C.unk6 = (s16)(param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + - param0->unk000[st18].unk6C.unka; + param0->unk000[st18].unk6C.unka); } - NNS_G2dDrawSpriteFast(param0->unk000[st18].unk6C.unk4 - (arg3 / 2), - param0->unk000[st18].unk6C.unk6 - (arg4 / 2), + NNS_G2dDrawSpriteFast((s16)(param0->unk000[st18].unk6C.unk4 - (arg3 / 2)), + (s16)(param0->unk000[st18].unk6C.unk6 - (arg4 / 2)), 0xFFFFFC18, arg3, arg4, @@ -1185,7 +1185,7 @@ THUMB_FUNC void FUN_02007F34(struct UnkStruct_02006D98_2 *param0, s32 param1) param0->unk2E = (s16)((40 - param1) - (((40 - param1) * param0->unk36) >> 8)); } -static inline inlineLoop(u8 *unk58, +static inline void inlineLoop(u8 *unk58, u8 *unk59, u8 *unk5A, u8 *unk5B, @@ -1212,7 +1212,7 @@ static inline inlineLoop(u8 *unk58, } else { - *unk59 = -2 - unk84[*unk59].unk0; + *unk59 = (u8)(-2 - unk84[*unk59].unk0); } } @@ -1224,7 +1224,7 @@ static inline inlineLoop(u8 *unk58, return; } - *unk5B = unk84[*unk59].unk0; + *unk5B = (u8)unk84[*unk59].unk0; *unk5A = unk84[*unk59].unk1; } else @@ -1658,7 +1658,7 @@ THUMB_FUNC void FUN_020088EC(struct UnkStruct_02006D98_2 *param0, u8 *param1) THUMB_FUNC void FUN_02008904(u8 *param0, u32 param1, u32 param2) { - struct UnkStruct_02006D98_3 *st10; + const struct UnkStruct_02006D98_3 *st10; s32 i; u32 r2; u8 r0; From c1c291bcd10bcd6e0cdd1573587661b91ef78da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Tue, 14 Sep 2021 19:43:55 +0200 Subject: [PATCH 15/19] more sdk inlines --- arm9/lib/NitroSDK/include/GX_g3.h | 13 ++++ arm9/lib/NitroSDK/include/GX_g3imm.h | 42 ++++++++++++ arm9/lib/NitroSDK/include/registers.h | 62 ++++++++++++++++++ arm9/src/unk_02006D98.c | 92 ++++++++++----------------- 4 files changed, 149 insertions(+), 60 deletions(-) diff --git a/arm9/lib/NitroSDK/include/GX_g3.h b/arm9/lib/NitroSDK/include/GX_g3.h index 7f11c55e8..2c0933703 100644 --- a/arm9/lib/NitroSDK/include/GX_g3.h +++ b/arm9/lib/NitroSDK/include/GX_g3.h @@ -203,5 +203,18 @@ GXBoxTestParam; ((alpha) << REG_G3_POLYGON_ATTR_ALPHA_SHIFT))) +#define GX_PACK_TEXPLTTBASE_PARAM(addr, texFmt) \ + ((u32)((addr) >> (4 - ((texFmt) == GX_TEXFMT_PLTT4)))) + + +#define GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor) \ + ((u32)((diffuse) | \ + ((ambient) << REG_G3_DIF_AMB_AMBIENT_RED_SHIFT) | \ + ((IsSetVtxColor != FALSE) << REG_G3_DIF_AMB_C_SHIFT))) + +#define GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess) \ + ((u32)((specular) | \ + ((emission) << REG_G3_SPE_EMI_EMISSION_RED_SHIFT) | \ + ((IsShininess != FALSE) << REG_G3_SPE_EMI_S_SHIFT))) #endif //GUARD_GX_G3_H diff --git a/arm9/lib/NitroSDK/include/GX_g3imm.h b/arm9/lib/NitroSDK/include/GX_g3imm.h index 49a9f13b5..33ebdef20 100644 --- a/arm9/lib/NitroSDK/include/GX_g3imm.h +++ b/arm9/lib/NitroSDK/include/GX_g3imm.h @@ -8,6 +8,31 @@ void G3_LoadMtx43(struct Mtx43 *mtx); void G3_MultMtx43(struct Mtx43 *mtx); void G3_MultMtx33(struct Mtx33 *mtx); + +static inline void G3_PushMtx() +{ + reg_G3_MTX_PUSH = 0; +} + +static inline void G3_PopMtx(int num) +{ + reg_G3_MTX_POP = (u32)num; +} + +static inline void G3_Identity() +{ + reg_G3_MTX_IDENTITY = 0; +} + + +static inline void G3_Translate(fx32 x, fx32 y, fx32 z) +{ + reg_G3_MTX_TRANS = (u32)x; + reg_G3_MTX_TRANS = (u32)y; + reg_G3_MTX_TRANS = (u32)z; +} + + static inline void G3_PolygonAttr(int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc) { reg_G3_POLYGON_ATTR = GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc); @@ -23,4 +48,21 @@ static inline void G3_TexImageParam(GXTexFmt texFmt, } +static inline void G3_TexPlttBase(u32 addr, GXTexFmt texfmt) +{ + u32 param = GX_PACK_TEXPLTTBASE_PARAM(addr, texfmt); + reg_G3_TEXPLTT_BASE = param; +} + + +static inline void G3_MaterialColorDiffAmb(GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor) +{ + reg_G3_DIF_AMB = GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor); +} + +static inline void G3_MaterialColorSpecEmi(GXRgb specular, GXRgb emission, BOOL IsShininess) +{ + reg_G3_SPE_EMI = GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess); +} + #endif //GUARD_GX_G3IMM_H diff --git a/arm9/lib/NitroSDK/include/registers.h b/arm9/lib/NitroSDK/include/registers.h index 83b06ba06..d31cee225 100644 --- a/arm9/lib/NitroSDK/include/registers.h +++ b/arm9/lib/NitroSDK/include/registers.h @@ -1154,4 +1154,66 @@ #define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_SIZE 16 #define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_MASK 0x0000ffff + +// DIF_AMB + +#define REG_G3_DIF_AMB_AMBIENT_BLUE_SHIFT 26 +#define REG_G3_DIF_AMB_AMBIENT_BLUE_SIZE 5 +#define REG_G3_DIF_AMB_AMBIENT_BLUE_MASK 0x7c000000 + +#define REG_G3_DIF_AMB_AMBIENT_GREEN_SHIFT 21 +#define REG_G3_DIF_AMB_AMBIENT_GREEN_SIZE 5 +#define REG_G3_DIF_AMB_AMBIENT_GREEN_MASK 0x03e00000 + +#define REG_G3_DIF_AMB_AMBIENT_RED_SHIFT 16 +#define REG_G3_DIF_AMB_AMBIENT_RED_SIZE 5 +#define REG_G3_DIF_AMB_AMBIENT_RED_MASK 0x001f0000 + +#define REG_G3_DIF_AMB_C_SHIFT 15 +#define REG_G3_DIF_AMB_C_SIZE 1 +#define REG_G3_DIF_AMB_C_MASK 0x00008000 + +#define REG_G3_DIF_AMB_DIFFUSE_BLUE_SHIFT 10 +#define REG_G3_DIF_AMB_DIFFUSE_BLUE_SIZE 5 +#define REG_G3_DIF_AMB_DIFFUSE_BLUE_MASK 0x00007c00 + +#define REG_G3_DIF_AMB_DIFFUSE_GREEN_SHIFT 5 +#define REG_G3_DIF_AMB_DIFFUSE_GREEN_SIZE 5 +#define REG_G3_DIF_AMB_DIFFUSE_GREEN_MASK 0x000003e0 + +#define REG_G3_DIF_AMB_DIFFUSE_RED_SHIFT 0 +#define REG_G3_DIF_AMB_DIFFUSE_RED_SIZE 5 +#define REG_G3_DIF_AMB_DIFFUSE_RED_MASK 0x0000001f + + +// SPE_EMI + +#define REG_G3_SPE_EMI_EMISSION_BLUE_SHIFT 26 +#define REG_G3_SPE_EMI_EMISSION_BLUE_SIZE 5 +#define REG_G3_SPE_EMI_EMISSION_BLUE_MASK 0x7c000000 + +#define REG_G3_SPE_EMI_EMISSION_GREEN_SHIFT 21 +#define REG_G3_SPE_EMI_EMISSION_GREEN_SIZE 5 +#define REG_G3_SPE_EMI_EMISSION_GREEN_MASK 0x03e00000 + +#define REG_G3_SPE_EMI_EMISSION_RED_SHIFT 16 +#define REG_G3_SPE_EMI_EMISSION_RED_SIZE 5 +#define REG_G3_SPE_EMI_EMISSION_RED_MASK 0x001f0000 + +#define REG_G3_SPE_EMI_S_SHIFT 15 +#define REG_G3_SPE_EMI_S_SIZE 1 +#define REG_G3_SPE_EMI_S_MASK 0x00008000 + +#define REG_G3_SPE_EMI_SPECULAR_BLUE_SHIFT 10 +#define REG_G3_SPE_EMI_SPECULAR_BLUE_SIZE 5 +#define REG_G3_SPE_EMI_SPECULAR_BLUE_MASK 0x00007c00 + +#define REG_G3_SPE_EMI_SPECULAR_GREEN_SHIFT 5 +#define REG_G3_SPE_EMI_SPECULAR_GREEN_SIZE 5 +#define REG_G3_SPE_EMI_SPECULAR_GREEN_MASK 0x000003e0 + +#define REG_G3_SPE_EMI_SPECULAR_RED_SHIFT 0 +#define REG_G3_SPE_EMI_SPECULAR_RED_SIZE 5 +#define REG_G3_SPE_EMI_SPECULAR_RED_MASK 0x0000001f + #endif //POKEDIAMOND_ARM9_REGISTERS_H diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 8fcaac8e8..ee7a8341c 100644 --- a/arm9/src/unk_02006D98.c +++ b/arm9/src/unk_02006D98.c @@ -360,7 +360,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) NNS_G3dGeFlushBuffer(); - reg_G3_MTX_PUSH = 0; + G3_PushMtx(); G3_TexImageParam(param0->unk260.attr.fmt, GX_TEXGEN_TEXCOORD, @@ -388,30 +388,15 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) if (param0->unk2E3 != 1) { - reg_G3_MTX_IDENTITY = 0; + G3_Identity(); } FUN_02007F48(¶m0->unk000[st18]); - u32 shift; - if (param0->unk260.attr.fmt == 2) - { - shift = 1; - } - else - { - shift = 0; - } - - reg_G3_TEXPLTT_BASE = (param0->unk2A4 + st18 * 0x20) >> (4 - shift); - - u32 r1 = param0->unk000[st18].unk28 << 0xc; - u32 r0 = (u32)((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc); - u32 r3 = (u32)((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc); - - reg_G3_MTX_TRANS = r3; - reg_G3_MTX_TRANS = r0; - reg_G3_MTX_TRANS = r1; + G3_TexPlttBase(param0->unk2A4 + st18 * 0x20, param0->unk260.attr.fmt); + G3_Translate((fx32)((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc), + (fx32)((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc), + (fx32)(param0->unk000[st18].unk28 << 0xc)); s32 idx = ((s32)param0->unk000[st18].unk38) >> 4; G3_RotX(FX_SinCosTable_[idx * 2], FX_SinCosTable_[idx * 2 + 1]); @@ -422,23 +407,18 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) s32 idz = ((s32)param0->unk000[st18].unk3C) >> 4; G3_RotZ(FX_SinCosTable_[idz * 2], FX_SinCosTable_[idz * 2 + 1]); - r1 = -(param0->unk000[st18].unk28 << 0xc); - r0 = -(u32)((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc); - r3 = -(u32)((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc); + G3_Translate(-(fx32)((param0->unk000[st18].unk24 + param0->unk000[st18].unk40) << 0xc), + -(fx32)((param0->unk000[st18].unk26 + param0->unk000[st18].unk42) << 0xc), + -(fx32)(param0->unk000[st18].unk28 << 0xc)); - reg_G3_MTX_TRANS = r3; - reg_G3_MTX_TRANS = r0; - reg_G3_MTX_TRANS = r1; + G3_MaterialColorDiffAmb( + (GXRgb)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5 << 5) | + (param0->unk000[st18].unk50_a << 10)), + (GXRgb)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14 << 5) | + (param0->unk000[st18].unk50_19 << 10)), + TRUE); - reg_G3_DIF_AMB = - (u32)(((u16)(param0->unk000[st18].unk50_0 | (param0->unk000[st18].unk50_5 << 5) | - (param0->unk000[st18].unk50_a << 10))) | - (((u16)(param0->unk000[st18].unk50_f | (param0->unk000[st18].unk50_14 << 5) | - (param0->unk000[st18].unk50_19 << 10))) - << 16) | - 0x8000); - - reg_G3_SPE_EMI = 0x4210; + G3_MaterialColorSpecEmi(0x4210, 0, FALSE); G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_MODULATE, @@ -455,10 +435,10 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) int r7 = param0->unk000[st18].unk47; int r0 = r12 + r6; - NNS_G2dDrawSpriteFast((s16)(param0->unk000[st18].unk24 - 40 + param0->unk000[st18].unk44 + - param0->unk000[st18].unk2C), + NNS_G2dDrawSpriteFast((s16)(param0->unk000[st18].unk24 - 40 + + param0->unk000[st18].unk44 + param0->unk000[st18].unk2C), (s16)(param0->unk000[st18].unk26 - 40 + param0->unk000[st18].unk45 + - param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2), + param0->unk000[st18].unk2E - param0->unk000[st18].unk6C.unk2), (int)(param0->unk000[st18].unk28 + param0->unk000[st18].unk30), r12, r7, @@ -475,7 +455,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) NNS_G2dDrawSpriteFast( (s16)(param0->unk000[st18].unk24 - (arg3 / 2) + param0->unk000[st18].unk2C), (s16)(param0->unk000[st18].unk26 - (arg4 / 2) + param0->unk000[st18].unk2E - - param0->unk000[st18].unk6C.unk2), + param0->unk000[st18].unk6C.unk2), (int)(param0->unk000[st18].unk28 + param0->unk000[st18].unk30), arg3, arg4, @@ -493,20 +473,11 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) if (param0->unk2E3 != 1) { - reg_G3_MTX_IDENTITY = 0; + G3_Identity(); } - u32 shift2; - if (param0->unk260.attr.fmt == 2) - { - shift2 = 1; - } - else - { - shift2 = 0; - } - reg_G3_TEXPLTT_BASE = - (param0->unk2A4 + ((param0->unk000[st18].unk6C.unk0_0 + 3) << 5)) >> (4 - shift2); + G3_TexPlttBase((param0->unk2A4 + ((param0->unk000[st18].unk6C.unk0_0 + 3) << 5)), + param0->unk260.attr.fmt); if (param0->unk000[st18].unk6C.unk0_4 != 0) { @@ -521,16 +492,16 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) if (param0->unk000[st18].unk6C.unk0_2 != 0) { - param0->unk000[st18].unk6C.unk4 = (s16)(param0->unk000[st18].unk24 + - param0->unk000[st18].unk2C + - param0->unk000[st18].unk6C.unk8); + param0->unk000[st18].unk6C.unk4 = + (s16)(param0->unk000[st18].unk24 + param0->unk000[st18].unk2C + + param0->unk000[st18].unk6C.unk8); } if (param0->unk000[st18].unk6C.unk0_3 != 0) { - param0->unk000[st18].unk6C.unk6 = (s16)(param0->unk000[st18].unk26 + - param0->unk000[st18].unk2E + - param0->unk000[st18].unk6C.unka); + param0->unk000[st18].unk6C.unk6 = + (s16)(param0->unk000[st18].unk26 + param0->unk000[st18].unk2E + + param0->unk000[st18].unk6C.unka); } NNS_G2dDrawSpriteFast((s16)(param0->unk000[st18].unk6C.unk4 - (arg3 / 2)), @@ -544,7 +515,7 @@ THUMB_FUNC void FUN_02006ED4(struct UnkStruct_02006D98 *param0) UNK_020ECBD0[param0->unk000[st18].unk6C.unk0_5][3]); } - reg_G3_MTX_POP = 1; + G3_PopMtx(1); } THUMB_FUNC void FUN_020072E8(struct UnkStruct_02006D98 *param0) @@ -1243,7 +1214,8 @@ THUMB_FUNC void FUN_02007F48(struct UnkStruct_02006D98_2 *param0) param0->unk84); } -THUMB_FUNC void FUN_02008010(struct UnkStruct_02006D98_5 *param0, struct UnkStruct_02006D98_sub *param1) +THUMB_FUNC void FUN_02008010( + struct UnkStruct_02006D98_5 *param0, struct UnkStruct_02006D98_sub *param1) { param0->unk00 = 1; param0->unk02 = 0; From 5ee0d715d5e030f74d159c6bcee33c4ec416e8be Mon Sep 17 00:00:00 2001 From: Nomura Date: Sun, 31 Oct 2021 15:51:00 +0100 Subject: [PATCH 16/19] Extract trainer backsprites aniimation frames --- files/battle/graphic/batt_obj/.knarcignore | 1 + files/battle/graphic/batt_obj/files.txt | 33 ++++++++++++++++++++ files/battle/graphic/batt_obj/narc_0195.png | Bin 0 -> 3902 bytes files/battle/graphic/batt_obj/narc_0196.png | Bin 0 -> 4012 bytes files/battle/graphic/batt_obj/narc_0197.png | Bin 0 -> 3732 bytes files/battle/graphic/batt_obj/narc_0198.png | Bin 0 -> 4222 bytes files/battle/graphic/batt_obj/narc_0199.png | Bin 0 -> 3936 bytes files/battle/graphic/batt_obj/narc_0200.png | Bin 0 -> 3693 bytes files/battle/graphic/batt_obj/narc_0201.png | Bin 0 -> 3271 bytes files/battle/graphic/batt_obj/narc_0202.png | Bin 0 -> 3272 bytes 10 files changed, 34 insertions(+) create mode 100644 files/battle/graphic/batt_obj/files.txt create mode 100644 files/battle/graphic/batt_obj/narc_0195.png create mode 100644 files/battle/graphic/batt_obj/narc_0196.png create mode 100644 files/battle/graphic/batt_obj/narc_0197.png create mode 100644 files/battle/graphic/batt_obj/narc_0198.png create mode 100644 files/battle/graphic/batt_obj/narc_0199.png create mode 100644 files/battle/graphic/batt_obj/narc_0200.png create mode 100644 files/battle/graphic/batt_obj/narc_0201.png create mode 100644 files/battle/graphic/batt_obj/narc_0202.png diff --git a/files/battle/graphic/batt_obj/.knarcignore b/files/battle/graphic/batt_obj/.knarcignore index 9cb3ee461..50b4e110c 100644 --- a/files/battle/graphic/batt_obj/.knarcignore +++ b/files/battle/graphic/batt_obj/.knarcignore @@ -408,3 +408,4 @@ narc_0173.NCGR narc_0198.NCGR *.png *.pal +*.txt \ No newline at end of file diff --git a/files/battle/graphic/batt_obj/files.txt b/files/battle/graphic/batt_obj/files.txt new file mode 100644 index 000000000..33518d57f --- /dev/null +++ b/files/battle/graphic/batt_obj/files.txt @@ -0,0 +1,33 @@ +all recn after 203 seem to be equal (PokéBall throw animation) + +195: + 47.rlcn + 203.recn + +196: + 48.rlcn + 204.recn + +197: + 49.rlcn + 205.recn + +198: + 50.rlcn + 206.recn + +199: + 51.rlcn + 207.recn + +200: + 52.rlcn + 208.recn + +201: + 53.rlcn + 209.recn + +202: + 54.rlcn + 210.recn \ No newline at end of file diff --git a/files/battle/graphic/batt_obj/narc_0195.png b/files/battle/graphic/batt_obj/narc_0195.png new file mode 100644 index 0000000000000000000000000000000000000000..ff94198ca451cd7aba0b0581261932f46806bab7 GIT binary patch literal 3902 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 M07*qoM6N<$f<_q{ApigX literal 0 HcmV?d00001 diff --git a/files/battle/graphic/batt_obj/narc_0196.png b/files/battle/graphic/batt_obj/narc_0196.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c9478a793c5f460740f80001230f0e2f6f120c GIT binary patch literal 4012 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 Hr-=Umik5z1 literal 0 HcmV?d00001 diff --git a/files/battle/graphic/batt_obj/narc_0197.png b/files/battle/graphic/batt_obj/narc_0197.png new file mode 100644 index 0000000000000000000000000000000000000000..9055895d11f440c617a92c4db9518a8185b0dd16 GIT binary patch literal 3732 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 literal 0 HcmV?d00001 diff --git a/files/battle/graphic/batt_obj/narc_0198.png b/files/battle/graphic/batt_obj/narc_0198.png new file mode 100644 index 0000000000000000000000000000000000000000..c404ddbf17c183fd8e680f8a28f4c36980d1beb9 GIT binary patch literal 4222 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 UEXZC7%K!iX07*qoM6N<$f@&3;ng9R* literal 0 HcmV?d00001 diff --git a/files/battle/graphic/batt_obj/narc_0199.png b/files/battle/graphic/batt_obj/narc_0199.png new file mode 100644 index 0000000000000000000000000000000000000000..efac1234e00b51018f227eeab1723c4bee0c6091 GIT binary patch literal 3936 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 FV1n_(8nOTY literal 0 HcmV?d00001 diff --git a/files/battle/graphic/batt_obj/narc_0202.png b/files/battle/graphic/batt_obj/narc_0202.png new file mode 100644 index 0000000000000000000000000000000000000000..c947531a1256c0c4dd6ac98bbb466148b3bda292 GIT binary patch literal 3272 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 literal 0 HcmV?d00001 From 508866270bb8af4d5501017a0e3dd38f1eaa7057 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 24 Nov 2021 12:13:09 -0500 Subject: [PATCH 17/19] Rollback GitHub Actions to Ubuntu-Bionic --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 48cc5d370..e62d772d1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,22 +4,22 @@ on: [push, pull_request] env: LM_LICENSE_FILE: "$GITHUB_WORKSPACE/tools/mwccarm/license.dat" - CC: gcc-8 - CXX: g++-8 + CC: gcc-10 + CXX: g++-10 CALCROM_DISCORD_WEBHOOK_AVATAR_URL: "https://i.imgur.com/38BQHdd.png" CALCROM_DISCORD_WEBHOOK_USERNAME: OK CALCROM_WEBHOOK_URL: ${{ secrets.WEBHOOKURL }} jobs: build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-18.04 steps: - name: Update and Install Software run: | sudo apt update sudo ACCEPT_EULA=Y apt -y --fix-missing --allow-downgrades upgrade - sudo apt -y --allow-downgrades install g++-8-multilib linux-libc-dev binutils-arm-none-eabi p7zip-full pkg-config + sudo apt -y --allow-downgrades install g++-10-multilib linux-libc-dev binutils-arm-none-eabi p7zip-full pkg-config sudo dpkg --add-architecture i386 wget -qO - https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport From 32a760a28b5803aea6d65ab8e962334c8f958b54 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 24 Nov 2021 12:21:46 -0500 Subject: [PATCH 18/19] Fix bin2obj syntax error --- tools/bin2obj/bin2obj.cpp | 42 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/tools/bin2obj/bin2obj.cpp b/tools/bin2obj/bin2obj.cpp index 160bb2d2d..ec5ba065a 100644 --- a/tools/bin2obj/bin2obj.cpp +++ b/tools/bin2obj/bin2obj.cpp @@ -2,6 +2,7 @@ #include #include #include +#include extern "C" { #include "elf.h" } @@ -188,27 +189,28 @@ int main(int argc, char** argv) { binfile.seekg(0); // Elf header - Elf32_Ehdr ehdr = { - .e_ident = { - ELFMAG0, // EI_MAG0 - ELFMAG1, // EI_MAG1 - ELFMAG2, // EI_MAG2 - ELFMAG3, // EI_MAG3 - ELFCLASS32, // EI_CLASS - endian, // EI_DATA - EV_CURRENT, // EI_VERSION - ELFOSABI_NONE, // EI_OSABI - 0, // EI_ABIVERSION - }, - .e_type = ET_REL, - .e_machine = proc, - .e_version = EV_CURRENT, - .e_shoff = sizeof(Elf32_Ehdr), - .e_ehsize = sizeof(Elf32_Ehdr), - .e_shentsize = sizeof(Elf32_Shdr), - .e_shnum = 5, - .e_shstrndx = 1, + Elf32_Ehdr ehdr; + + static const unsigned char _eident[EI_NIDENT] { + ELFMAG0, // EI_MAG0 + ELFMAG1, // EI_MAG1 + ELFMAG2, // EI_MAG2 + ELFMAG3, // EI_MAG3 + ELFCLASS32, // EI_CLASS + endian, // EI_DATA + EV_CURRENT, // EI_VERSION + ELFOSABI_NONE, // EI_OSABI + 0, // EI_ABIVERSION }; + memcpy(ehdr.e_ident, _eident, EI_NIDENT); + ehdr.e_type = ET_REL; + ehdr.e_machine = proc; + ehdr.e_version = EV_CURRENT; + ehdr.e_shoff = sizeof(Elf32_Ehdr); + ehdr.e_ehsize = sizeof(Elf32_Ehdr); + ehdr.e_shentsize = sizeof(Elf32_Shdr); + ehdr.e_shnum = 5; + ehdr.e_shstrndx = 1; // Five sections: NULL, user section, symtab, strtab, shstrtab Elf32_Shdr shdr[5] = {}; From 661a12d18b8176f8947add6d4fb03348a4a25466 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 24 Nov 2021 12:30:48 -0500 Subject: [PATCH 19/19] Sync msgenc fixes from heartgold --- tools/msgenc/Makefile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/msgenc/Makefile b/tools/msgenc/Makefile index b39d97cb5..acfabfd2f 100644 --- a/tools/msgenc/Makefile +++ b/tools/msgenc/Makefile @@ -8,12 +8,11 @@ endif DEPDIR := .deps DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.d -define SRCS := - msgenc.cpp - MessagesConverter.cpp - MessagesDecoder.cpp +SRCS := \ + msgenc.cpp \ + MessagesConverter.cpp \ + MessagesDecoder.cpp \ MessagesEncoder.cpp -endef OBJS := $(SRCS:%.cpp=%.o)