diff options
-rw-r--r-- | arm9/src/unk_02006D98.c | 1806 | ||||
-rw-r--r-- | include/unk_02006D98.h | 165 |
2 files changed, 1382 insertions, 589 deletions
diff --git a/arm9/src/unk_02006D98.c b/arm9/src/unk_02006D98.c index 154e3284..78e3d157 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, -}; - -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 + 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 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 idz = ((s32)param0->unk000[st18].unk3C)>>4; - G3_RotZ(FX_SinCosTable_[idz*2], FX_SinCosTable_[idz*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); + 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)); + 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] = + (u8)((st50[st14 * 0x50 + r4] & 0xf) | + ((st50[st14 * 0x50 + r4] & 0xf) << 4)); } - } else { - param0->unk2AC[st14*0x80+r4+0x50] = st50[st14*0x50+r4]; } - } else { + 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 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 + { + 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 + { + 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 (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 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]; + 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); - - 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); + 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) { + 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 00000000..308e5dbc --- /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); |