diff --git a/asm/non_matching/color/CleanUpObjPalettes.inc b/asm/non_matching/color/CleanUpObjPalettes.inc deleted file mode 100644 index f59b5a92..00000000 --- a/asm/non_matching/color/CleanUpObjPalettes.inc +++ /dev/null @@ -1,141 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - sub sp, #0x10 - movs r2, #0 - movs r3, #0 - ldr r1, _0801D37C @ =gPaletteList -_0801D356: - mov r4, sp - adds r0, r4, r2 - strb r2, [r0] - ldrb r0, [r1] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #1 - bgt _0801D370 - cmp r0, #0 - blt _0801D370 - strb r3, [r1] - strb r3, [r1, #1] - strh r3, [r1, #2] -_0801D370: - adds r1, #4 - adds r2, #1 - cmp r2, #0xf - bls _0801D356 - movs r4, #6 - b _0801D390 - .align 2, 0 -_0801D37C: .4byte gPaletteList -_0801D380: - cmp r4, r1 - ble _0801D390 - mov r2, sp - adds r0, r2, r4 - strb r1, [r0] - adds r0, r4, #0 - bl sub_0801D48C -_0801D390: - adds r0, r4, #1 - bl sub_0801D458 - adds r4, r0, #0 - cmp r4, #0 - beq _0801D3AC - movs r0, #1 - bl FindFreeObjPalette - adds r1, r0, #0 - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - bne _0801D380 -_0801D3AC: - movs r1, #0 - ldr r4, _0801D450 @ =gEntityLists - mov ip, r4 -_0801D3B2: - lsls r0, r1, #3 - mov r2, ip - adds r3, r0, r2 - adds r0, r3, #0 - ldr r3, [r3, #4] - adds r5, r1, #1 - cmp r0, r3 - beq _0801D444 - movs r7, #0x10 - rsbs r7, r7, #0 - adds r4, r0, #0 - ldr r6, _0801D454 @ =gUnk_020000C0 -_0801D3CA: - ldrb r0, [r3, #8] - cmp r0, #9 - beq _0801D43E - adds r1, r3, #0 - adds r1, #0x28 - ldrb r0, [r1] - subs r0, #1 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x7e - bhi _0801D40C - ldrb r1, [r1] - lsls r1, r1, #6 - adds r1, r1, r6 - ldrb r0, [r1, #5] - add r0, sp - ldrb r0, [r0] - strb r0, [r1, #5] - ldrb r0, [r1, #0x15] - add r0, sp - ldrb r0, [r0] - strb r0, [r1, #0x15] - adds r2, r1, #0 - adds r2, #0x25 - ldrb r0, [r2] - add r0, sp - ldrb r0, [r0] - strb r0, [r2] - adds r1, #0x35 - ldrb r0, [r1] - add r0, sp - ldrb r0, [r0] - strb r0, [r1] -_0801D40C: - adds r1, r3, #0 - adds r1, #0x27 - ldrb r0, [r1] - add r0, sp - ldrb r0, [r0] - strb r0, [r1] - ldrb r2, [r3, #0x1a] - lsls r0, r2, #0x1c - lsrs r0, r0, #0x1c - add r0, sp - ldrb r1, [r0] - movs r0, #0xf - ands r1, r0 - adds r0, r7, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x1a] - lsrs r1, r0, #4 - add r1, sp - ldrb r2, [r1] - lsls r2, r2, #4 - movs r1, #0xf - ands r0, r1 - orrs r0, r2 - strb r0, [r3, #0x1a] -_0801D43E: - ldr r3, [r3, #4] - cmp r4, r3 - bne _0801D3CA -_0801D444: - adds r1, r5, #0 - cmp r1, #8 - bls _0801D3B2 - add sp, #0x10 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801D450: .4byte gEntityLists -_0801D454: .4byte gUnk_020000C0 - .syntax divided diff --git a/asm/non_matching/color/FindFreeObjPalette.inc b/asm/non_matching/color/FindFreeObjPalette.inc deleted file mode 100644 index a6a641cd..00000000 --- a/asm/non_matching/color/FindFreeObjPalette.inc +++ /dev/null @@ -1,60 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - movs r2, #6 - ldr r0, _0801D154 @ =gPaletteList - adds r3, r0, #0 - adds r3, #0x18 -_0801D142: - ldrb r0, [r3] - lsls r0, r0, #0x1c - cmp r0, #0 - bne _0801D158 - adds r1, #1 - cmp r4, r1 - bhi _0801D15A - b _0801D180 - .align 2, 0 -_0801D154: .4byte gPaletteList -_0801D158: - movs r1, #0 -_0801D15A: - adds r3, #4 - adds r2, #1 - cmp r2, #0xf - bls _0801D142 - movs r1, #0 - movs r2, #6 - ldr r0, _0801D188 @ =gPaletteList - adds r3, r0, #0 - adds r3, #0x18 -_0801D16C: - ldrb r0, [r3] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #1 - bgt _0801D18C - cmp r0, #0 - blt _0801D18C - adds r1, #1 - cmp r4, r1 - bhi _0801D18E -_0801D180: - subs r0, r1, #1 - subs r0, r2, r0 - b _0801D19A - .align 2, 0 -_0801D188: .4byte gPaletteList -_0801D18C: - movs r1, #0 -_0801D18E: - adds r3, #4 - adds r2, #1 - cmp r2, #0xf - bls _0801D16C - movs r0, #1 - rsbs r0, r0, #0 -_0801D19A: - pop {r4, pc} - .syntax divided diff --git a/asm/non_matching/color/LoadObjPalette.inc b/asm/non_matching/color/LoadObjPalette.inc deleted file mode 100644 index e92d382a..00000000 --- a/asm/non_matching/color/LoadObjPalette.inc +++ /dev/null @@ -1,100 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - str r0, [sp] - adds r6, r1, #0 - adds r0, r6, #0 - bl FindPalette - adds r5, r0, #0 - cmp r5, #0 - bge _0801D0E8 - cmp r6, #0x15 - bhi _0801D064 - movs r4, #1 - b _0801D074 -_0801D064: - ldr r0, _0801D100 @ =gUnk_08133368 - adds r1, r6, #0 - subs r1, #0x16 - lsls r1, r1, #2 - adds r1, r1, r0 - ldrb r4, [r1, #3] - movs r0, #0xf - ands r4, r0 -_0801D074: - adds r0, r4, #0 - bl FindFreeObjPalette - adds r5, r0, #0 - cmp r5, #0 - bge _0801D090 - bl CleanUpObjPalettes - adds r0, r4, #0 - bl FindFreeObjPalette - adds r5, r0, #0 - cmp r5, #0 - blt _0801D0E8 -_0801D090: - lsls r1, r5, #2 - ldr r0, _0801D104 @ =gPaletteList - adds r3, r1, r0 - movs r0, #0 - strh r6, [r3, #2] - strb r0, [r3, #1] - movs r2, #0x10 - rsbs r2, r2, #0 - lsls r0, r4, #4 - movs r1, #3 - orrs r0, r1 - strb r0, [r3] - subs r4, #1 - cmp r4, #0 - beq _0801D0E0 - movs r0, #0 - mov sl, r0 - movs r1, #0 - mov r8, r1 - movs r0, #0xf - mov sb, r0 - mov ip, r2 - movs r7, #2 -_0801D0BE: - adds r3, #4 - mov r1, r8 - strh r1, [r3, #2] - mov r0, sl - strb r0, [r3, #1] - lsls r2, r4, #4 - ldrb r1, [r3] - mov r0, sb - ands r0, r1 - orrs r0, r2 - mov r1, ip - ands r0, r1 - orrs r0, r7 - strb r0, [r3] - subs r4, #1 - cmp r4, #0 - bne _0801D0BE -_0801D0E0: - adds r0, r6, #0 - adds r1, r5, #0 - bl LoadObjPaletteAtIndex -_0801D0E8: - ldr r0, [sp] - adds r1, r5, #0 - bl SetEntityObjPalette - adds r0, r5, #0 - add sp, #4 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801D100: .4byte gUnk_08133368 -_0801D104: .4byte gPaletteList - .syntax divided diff --git a/asm/non_matching/color/LoadObjPaletteAtIndex.inc b/asm/non_matching/color/LoadObjPaletteAtIndex.inc deleted file mode 100644 index 43d8ab8e..00000000 --- a/asm/non_matching/color/LoadObjPaletteAtIndex.inc +++ /dev/null @@ -1,63 +0,0 @@ - .syntax unified - push {r4, lr} - adds r3, r0, #0 - ldr r2, _0801D2F8 @ =gUsedPalettes - adds r4, r1, #0 - adds r4, #0x10 - movs r1, #1 - lsls r1, r4 - ldr r0, [r2] - orrs r0, r1 - str r0, [r2] - cmp r3, #5 - bls _0801D33C - cmp r3, #0x15 - bne _0801D300 - ldr r2, _0801D2FC @ =gPaletteBuffer - adds r0, r2, #0 - adds r0, #0x78 - ldrh r0, [r0] - lsls r1, r4, #5 - adds r1, r1, r2 - movs r2, #0x20 - bl MemFill16 - b _0801D33C - .align 2, 0 -_0801D2F8: .4byte gUsedPalettes -_0801D2FC: .4byte gPaletteBuffer -_0801D300: - cmp r3, #0x14 - bhi _0801D31C - subs r0, r3, #6 - lsls r0, r0, #5 - ldr r1, _0801D318 @ =gPaletteBuffer - adds r0, r0, r1 - adds r1, r4, #0 - movs r2, #1 - bl LoadPalettes - b _0801D33C - .align 2, 0 -_0801D318: .4byte gPaletteBuffer -_0801D31C: - ldr r1, _0801D340 @ =gUnk_08133368 - adds r0, r3, #0 - subs r0, #0x16 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - lsrs r2, r0, #0x18 - movs r1, #0xf - ands r2, r1 - ldr r1, _0801D344 @ =0x00FFFFFF - ands r0, r1 - ldr r1, _0801D348 @ =gGlobalGfxAndPalettes - adds r0, r0, r1 - adds r1, r4, #0 - bl LoadPalettes -_0801D33C: - pop {r4, pc} - .align 2, 0 -_0801D340: .4byte gUnk_08133368 -_0801D344: .4byte 0x00FFFFFF -_0801D348: .4byte gGlobalGfxAndPalettes - .syntax divided diff --git a/asm/non_matching/color/sub_0801D000.inc b/asm/non_matching/color/sub_0801D000.inc deleted file mode 100644 index e4f3e757..00000000 --- a/asm/non_matching/color/sub_0801D000.inc +++ /dev/null @@ -1,34 +0,0 @@ - .syntax unified - push {lr} - adds r2, r0, #0 - ldr r0, _0801D024 @ =gRoomTransition - movs r1, #0 - cmp r2, #0 - beq _0801D00E - movs r1, #0xf -_0801D00E: - adds r0, #0x2f - strb r1, [r0] - cmp r2, #0 - beq _0801D028 - bl CleanUpObjPalettes - movs r0, #0xf - bl sub_0801CFD0 - b _0801D03A - .align 2, 0 -_0801D024: .4byte gRoomTransition -_0801D028: - ldr r3, _0801D03C @ =gUnk_02001A3C - ldrb r1, [r3] - movs r0, #0xf - ands r0, r1 - cmp r0, #4 - bne _0801D03A - strb r2, [r3] - strb r2, [r3, #1] - strh r2, [r3, #2] -_0801D03A: - pop {pc} - .align 2, 0 -_0801D03C: .4byte gUnk_02001A3C - .syntax divided diff --git a/asm/non_matching/color/sub_0801D244.inc b/asm/non_matching/color/sub_0801D244.inc deleted file mode 100644 index e787b46f..00000000 --- a/asm/non_matching/color/sub_0801D244.inc +++ /dev/null @@ -1,39 +0,0 @@ - .syntax unified - push {r4, r5, r6, lr} - lsls r0, r0, #2 - ldr r1, _0801D288 @ =gPaletteList - adds r2, r0, r1 - ldr r0, [r2] - lsls r0, r0, #0x1c - lsrs r0, r0, #0x1c - cmp r0, #3 - bne _0801D284 - ldrb r0, [r2, #1] - subs r0, #1 - strb r0, [r2, #1] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0801D284 - ldr r0, [r2] - lsls r0, r0, #0x18 - lsrs r3, r0, #0x1c - movs r5, #0 - movs r6, #0x10 - rsbs r6, r6, #0 - movs r4, #1 -_0801D270: - strb r5, [r2, #1] - ldrb r1, [r2] - adds r0, r6, #0 - ands r0, r1 - orrs r0, r4 - strb r0, [r2] - adds r2, #4 - subs r3, #1 - cmp r3, #0 - bne _0801D270 -_0801D284: - pop {r4, r5, r6, pc} - .align 2, 0 -_0801D288: .4byte gPaletteList - .syntax divided diff --git a/include/color.h b/include/color.h index dee7171b..610010e9 100644 --- a/include/color.h +++ b/include/color.h @@ -4,12 +4,35 @@ #include "global.h" typedef struct { - u8 _0; + u8 _0_0 : 4; + u8 _0_4 : 4; u8 _1; u16 _2; } Palette; extern Palette gPaletteList[]; +typedef struct { + struct { + u8 unk0 : 1; + u8 unk1 : 1; + u8 unk2 : 1; + u8 unk3 : 1; + u8 unk4 : 4; + } PACKED unk_00; + u8 unk_01; + u16 unk_02; + union SplitWord unk_04; + union SplitWord unk_08; + union SplitWord unk_0C; +} struct_gUnk_020000C0_1; +typedef struct { + struct_gUnk_020000C0_1 unk_00[4]; +} struct_gUnk_020000C0; + +static_assert(sizeof(struct_gUnk_020000C0) == 0x40); + +extern struct_gUnk_020000C0 gUnk_020000C0[0x30]; + void ResetPaletteTable(u32 a1); void sub_0801D000(u32 a1); u32 LoadObjPalette(struct Entity_*, u32); diff --git a/src/color.c b/src/color.c index 557cda39..6e243a88 100644 --- a/src/color.c +++ b/src/color.c @@ -2,11 +2,24 @@ #include "entity.h" #include "common.h" #include "color.h" +#include "room.h" +#include "global.h" +#include "fileselect.h" +#include "main.h" +#include "coord.h" + +extern Palette gUnk_02001A3C; void LoadObjPaletteAtIndex(u32 a1, u32 a2); - +void CleanUpObjPalettes(); +u32 FindFreeObjPalette(u32); +void SetEntityObjPalette(Entity*, u32); +u32 sub_0801D458(u32); +void sub_0801D48C(u32, u32); static void sub_0801CFD0(u32 a1); +extern union SplitWord gUnk_08133368[]; + void ResetPaletteTable(u32 a1) { u32 i; @@ -19,15 +32,73 @@ void ResetPaletteTable(u32 a1) { void sub_0801CFD0(u32 a1) { Palette* p = &gPaletteList[a1]; - p->_0 = ((s8)p->_0 & ~0xf) | 4; - p->_0 = (p->_0 & 0xf) | 0x10; + p->_0_0 = 4; + p->_0_4 = 1; p->_1 = 0x80; p->_2 = 0xFFFF; } -ASM_FUNC("asm/non_matching/color/sub_0801D000.inc", void sub_0801D000(u32 a1)); +void sub_0801D000(u32 a1) { + u32 tmp; + RoomTransition* roomTransition = &gRoomTransition; + if (a1) { + tmp = 0x0f; + } else { + tmp = 0; + } -ASM_FUNC("asm/non_matching/color/LoadObjPalette.inc", u32 LoadObjPalette(Entity* entity, u32 a2)); + roomTransition->field_0x2c[3] = tmp; + if (a1) { + CleanUpObjPalettes(); + sub_0801CFD0(0xf); + } else { + if ((gUnk_02001A3C._0_0) == 4) { + gUnk_02001A3C._0_0 = 0; + gUnk_02001A3C._0_4 = 0; + gUnk_02001A3C._1 = 0; + gUnk_02001A3C._2 = 0; + } + } +} + +u32 LoadObjPalette(Entity* entity, u32 a2) { + Palette* puVar1; + int iVar2; + u32 uVar3; + u32 uVar4; + + iVar2 = FindPalette(a2); + if (iVar2 < 0) { + if (a2 < 0x16) { + uVar3 = 1; + } else { + uVar3 = gUnk_08133368[(a2 - 0x16)].BYTES.byte3; + uVar3 &= 0xf; + } + iVar2 = FindFreeObjPalette(uVar3); + if (iVar2 < 0) { + CleanUpObjPalettes(); + iVar2 = FindFreeObjPalette(uVar3); + } + if (iVar2 >= 0) { + puVar1 = &gPaletteList[iVar2]; + puVar1->_2 = a2; + puVar1->_1 = 0; + puVar1->_0_4 = uVar3; + puVar1->_0_0 = 3; + for (uVar3 = uVar3 - 1; uVar3 != 0; uVar3--) { + puVar1++; + puVar1->_2 = 0; + puVar1->_1 = 0; + puVar1->_0_4 = uVar3; + puVar1->_0_0 = 2; + } + LoadObjPaletteAtIndex(a2, iVar2); + } + } + SetEntityObjPalette(entity, iVar2); + return iVar2; +} s32 FindPalette(u32 a1) { u32 index; @@ -44,7 +115,42 @@ s32 FindPalette(u32 a1) { return -1; } -ASM_FUNC("asm/non_matching/color/FindFreeObjPalette.inc", u32 FindFreeObjPalette(u32 a1)); +u32 FindFreeObjPalette(u32 a1) { + u32 uVar1; + u32 uVar2; + u32 tmp; + + for (uVar1 = 0, uVar2 = 6; uVar2 < 0x10; uVar2++) { + switch ((gPaletteList[uVar2]._0_0)) { + case 0: + uVar1 = uVar1 + 1; + if (a1 > uVar1) + continue; + tmp = uVar1 - 1; + return uVar2 - tmp; + default: + uVar1 = 0; + break; + } + } + + for (uVar1 = 0, uVar2 = 6; uVar2 < 0x10; uVar2++) { + switch (gPaletteList[uVar2]._0_0) { + case 0: + case 1: + uVar1++; + if (a1 <= uVar1) { + tmp = uVar1 - 1; + return uVar2 - tmp; + } + break; + default: + uVar1 = 0; + break; + } + } + return 0xffffffff; +} ASM_FUNC("asm/non_matching/color/SetEntityObjPalette.inc", void SetEntityObjPalette(Entity* entity, u32 palette)); @@ -55,13 +161,32 @@ void UnloadOBJPalette(Entity* entity) { sub_0801D244(idx); } -ASM_FUNC("asm/non_matching/color/sub_0801D244.inc", void sub_0801D244(u32 a1)); +void sub_0801D244(u32 a1) { + u32 uVar1; + Palette* pPVar2; + u32 uVar3; + + pPVar2 = gPaletteList + a1; + if ((s8)pPVar2->_0_0 == 3) { + if (--pPVar2->_1 == 0) { + uVar3 = pPVar2->_0_4; + do { + pPVar2->_1 = 0; + pPVar2->_0_0 = 1; + pPVar2 = pPVar2 + 1; + uVar3 = uVar3 - 1; + } while (uVar3 != 0); + } + } +} void sub_0801D28C(Entity* entity, u32 palette) { u32 c = entity->spriteAnimation[1]; Palette* list = gPaletteList; Palette* p = &list[c]; - u32 lo = (u32)(p->_0 << 0x1C) >> 0x1C; + + // using the bit field members generates an ldr instead of ldrb + u32 lo = ((u32)((*(u8*)p) << 0x1c)) >> 0x1c; if (lo == 3) { p->_2 = palette; @@ -74,14 +199,84 @@ void ChangeObjPalette(Entity* entity, u32 a2) { LoadObjPalette(entity, a2); } -ASM_FUNC("asm/non_matching/color/LoadObjPaletteAtIndex.inc", void LoadObjPaletteAtIndex(u32 a1, u32 a2)); +void LoadObjPaletteAtIndex(u32 a1, u32 a2) { + u16* buffer; -ASM_FUNC("asm/non_matching/color/CleanUpObjPalettes.inc", void CleanUpObjPalettes(void)); + gUsedPalettes |= 1 << (a2 + 0x10); + if (5 < a1) { + if (a1 == 0x15) { + buffer = gPaletteBuffer; + MemFill16(buffer[0x3C], buffer + (a2 + 0x10) * 0x10, 0x20); + } else if (a1 < 0x15) { + LoadPalettes((u8*)(gPaletteBuffer + (a1 - 6) * 0x10), a2 + 0x10, 1); + } else { + u32 tmp1 = gUnk_08133368[(a1 - 0x16)].WORD_U; + u32 tmp2 = (tmp1 >> 0x18) & 0xf; + tmp1 &= 0xffffff; + LoadPalettes(gGlobalGfxAndPalettes + tmp1, a2 + 0x10, tmp2); + } + } +} + +void CleanUpObjPalettes(void) { + u32 bVar1; + u32 bVar2; + u32 index1; + u32 uVar4; + u32 index2; + Entity* pEVar9; + int iVar10; + u8 local_24[0x10]; + + for (index1 = 0; index1 < 0x10; index1++) { + local_24[index1] = index1; + switch (gPaletteList[index1]._0_0) { + case 0: + case 1: + gPaletteList[index1]._0_0 = 0; + gPaletteList[index1]._0_4 = 0; + gPaletteList[index1]._1 = 0; + gPaletteList[index1]._2 = 0; + break; + } + } + + iVar10 = 6; + while ((iVar10 = sub_0801D458(iVar10 + 1), iVar10 != 0 && (uVar4 = FindFreeObjPalette(1), uVar4 != 0xffffffff))) { + if (iVar10 > (int)uVar4) { + local_24[iVar10] = uVar4; + sub_0801D48C(iVar10, uVar4); + } + } + + for (index2 = 0; index2 < ARRAY_COUNT(gEntityLists); index2++) { + pEVar9 = (Entity*)&gEntityLists[index2]; + while (((Entity*)&gEntityLists[index2]) != (pEVar9 = pEVar9->next)) { + if (pEVar9->kind != MANAGER) { + if ((u8)(pEVar9->spriteAnimation[2] - 1) < 0x7f) { + bVar1 = pEVar9->spriteAnimation[2]; + gUnk_020000C0[bVar1].unk_00[0].unk_04.BYTES.byte1 = + local_24[gUnk_020000C0[bVar1].unk_00[0].unk_04.BYTES.byte1]; + gUnk_020000C0[bVar1].unk_00[1].unk_04.BYTES.byte1 = + local_24[gUnk_020000C0[bVar1].unk_00[1].unk_04.BYTES.byte1]; + gUnk_020000C0[bVar1].unk_00[2].unk_04.BYTES.byte1 = + local_24[gUnk_020000C0[bVar1].unk_00[2].unk_04.BYTES.byte1]; + gUnk_020000C0[bVar1].unk_00[3].unk_04.BYTES.byte1 = + local_24[gUnk_020000C0[bVar1].unk_00[3].unk_04.BYTES.byte1]; + } + pEVar9->spriteAnimation[1] = local_24[pEVar9->spriteAnimation[1]]; + bVar2 = local_24[pEVar9->palette.b.b0]; + pEVar9->palette.b.b0 = bVar2; + pEVar9->palette.b.b4 = local_24[pEVar9->palette.b.b4]; + } + } + } +} u32 sub_0801D458(u32 a1) { u32 i; for (i = a1; i < 16; i++) { - s32 tmp = ((u32)gPaletteList[i]._0 << 28) >> 28; + s32 tmp = (u32)gPaletteList[i]._0_0; switch (tmp) { case 0: case 1: diff --git a/src/coord.c b/src/coord.c index 43f86a67..d965d628 100644 --- a/src/coord.c +++ b/src/coord.c @@ -6,33 +6,13 @@ #include "sound.h" #include "room.h" #include "functions.h" +#include "color.h" const u8 gSpriteSortAboveTable[]; const u8 gSpriteSortBelowTable[]; const u8 gUnk_08114F58[]; const u8 gUnk_08114F38[]; -typedef struct { - struct { - u8 unk0 : 1; - u8 unk1 : 1; - u8 unk2 : 1; - u8 unk3 : 1; - u8 unk4 : 4; - } PACKED unk_00; - u8 unk_01; - u16 unk_02; - union SplitWord unk_04; - union SplitWord unk_08; - union SplitWord unk_0C; -} struct_gUnk_020000C0_1; -typedef struct { - struct_gUnk_020000C0_1 unk_00[4]; -} struct_gUnk_020000C0; - -static_assert(sizeof(struct_gUnk_020000C0) == 0x40); - -extern struct_gUnk_020000C0 gUnk_020000C0[0x30]; extern u32 gSpritePtrs[]; extern u16 gExtraFrameOffsets[];