diff options
author | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-08-04 21:00:41 +0200 |
---|---|---|
committer | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-08-04 21:00:41 +0200 |
commit | d789398ef7fc5a2955199ac4f87be40b90182405 (patch) | |
tree | 366f6dc3938de8222dd941d960777533f0433d46 | |
parent | 0c2db8de60375ab8c450ea64320feb22431f43aa (diff) |
tmp
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/asm/unk_02006D98.s | 214 | ||||
-rw-r--r-- | arm9/global.inc | 6 | ||||
-rw-r--r-- | arm9/src/unk_02006D98_c.c | 442 |
4 files changed, 454 insertions, 209 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 25689701..06b32e1f 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 01721a1a..f5256bc8 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 db33a314..d00c06de 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 00000000..f1fb4f34 --- /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; +// } |