Fix a few minor data overflows (#1266)

They were causing overflows at runtime
This commit is contained in:
Luciano Ciccariello 2024-06-06 01:15:03 +01:00 committed by GitHub
parent fe0f9fbe81
commit ad0e2a79e3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 44 additions and 54 deletions

View File

@ -30,6 +30,7 @@ typedef struct {
#define PAL_COPY 1
#define PAL_COPY_INFO() MAKE_PAL_OP(PAL_COPY, 0)
#define PAL_COPY_DATA(dst, data) (dst), (u_long*)LEN(data), (u_long*)(data)
#define PAL_COPY_DATA_(dst, data, len) (dst), (u_long*)(len), (u_long*)(data)
#define PAL_UNK_OP2 2
#define PAL_UNK_OP2_INFO(dst, n) (u_long*)(dst), (u_long*)(n)
@ -44,6 +45,7 @@ typedef struct {
#define PAL_GLOW_DATA(data) (u_long*)(data)
#define PAL_BULK_COPY 5
#define PAL_BULK_COPY_INFO(dst, n) (u_long*)(dst), (u_long*)(n)
#define PAL_BULK(dst, data) (u_long*)(dst), (u_long*)LEN(data), (u_long*)(data)
#define PAL_TERMINATE() ((u_long*)-1)

View File

@ -164,7 +164,7 @@ void func_800EA7CC(void) {
new_var = temp_s0[1];
count = temp_s0[2];
clut = &g_Clut;
clut = g_Clut;
clut += new_var;
switch (ptr->unk8 & 0xFF) {
@ -273,7 +273,7 @@ void func_800EA7CC(void) {
offset = 0;
temp_s0 = g_Clut;
clutX = 0x200;
for (i = 0xF0; i < 0x100; i++, temp_s0 += 0x80, offset++) {
for (i = 0xF0; i < 0x100; i++, temp_s0 = (s16*)temp_s0 + 0x100, offset++) {
if (palettes[offset] != 0) {
LoadClut2(temp_s0, clutX, i);
}
@ -281,7 +281,7 @@ void func_800EA7CC(void) {
// re-upload updated shared entity palette
clutX = 0;
for (i = 0xF0; i < 0x100; i++, temp_s0 += 0x80, offset++) {
for (i = 0xF0; i < 0x100; i++, temp_s0 = (s16*)temp_s0 + 0x100, offset++) {
if (palettes[offset] != 0) {
LoadClut2(temp_s0, clutX, i);
}
@ -289,7 +289,7 @@ void func_800EA7CC(void) {
// re-upload updated stage-specific entities palette
clutX = 0x100;
for (i = 0xF0; i < 0x100; i++, temp_s0 += 0x80, offset++) {
for (i = 0xF0; i < 0x100; i++, temp_s0 = (s16*)temp_s0 + 0x100, offset++) {
if (palettes[offset]) {
LoadClut2(temp_s0, clutX, i);
}

View File

@ -198,8 +198,6 @@ extern u16 D_800D6A14[0x10];
extern u16 D_800D6A34[0x10];
extern u16 D_800D6A54[0x40]; // UNUSED
extern u16 D_800D6AD4[0x100];
extern u16 D_800D6B54[0x10]; // overlaps with D_800D6AD4?
extern u16 D_800D6C14[0x60]; // overlaps with D_800D6AD4?
extern u16 D_800D6CD4[0x100];
extern u16 D_800D6ED4[0x100];
extern u16 D_800D70D4[0x100];
@ -367,15 +365,15 @@ u_long* D_800A3A74[] = {
u_long* D_800A3A88[] = {
PAL_COPY_INFO(),
PAL_COPY_DATA(0x1F20, D_800D6B54),
PAL_COPY_DATA_(0x1F20, D_800D6AD4 + 64, 16),
PAL_TERMINATE(),
};
u_long* D_800A3A9C[] = {
MAKE_PAL_OP(PAL_GLOW_ANIM, 1),
PAL_GLOW_INFO(0x1F20, 16),
PAL_GLOW_DATA(D_800D6C14),
PAL_GLOW_DATA(D_800D6B54),
PAL_GLOW_DATA(D_800D6AD4 + 160),
PAL_GLOW_DATA(D_800D6AD4 + 64),
PAL_TERMINATE(),
};

View File

@ -4573,42 +4573,35 @@ u16 D_800D6A34[] = {
};
u16 D_800D6AD4[] = {
0x0000, 0x819D, 0x921D, 0x969E, 0xAF5F, 0xD7DF, 0x819D, 0x921D,
0x969E, 0xAF5F, 0xD7DF, 0x819D, 0x921D, 0x969E, 0xAF5F, 0xD7DF,
0x0000, 0xA108, 0xAD6B, 0xBDEF, 0xD294, 0xE739, 0xA108, 0xAD6B,
0xBDEF, 0xD294, 0xE739, 0xA108, 0xAD6B, 0xBDEF, 0xD294, 0xE739,
0x0000, 0xDC80, 0xE540, 0xEE00, 0xF6C0, 0xFF80, 0xDC80, 0xE540,
0xEE00, 0xF6C0, 0xFF80, 0xDC80, 0xE540, 0xEE00, 0xF6C0, 0xFF80,
0x0000, 0xE419, 0x823F, 0x8339, 0xCBE0, 0xE720, 0xE419, 0x823F,
0x8339, 0xCBE0, 0xE720, 0xE419, 0x823F, 0x8339, 0xCBE0, 0xE720,
};
u16 D_800D6B54[] = {
0x0000, 0x8421, 0x8842, 0x8C63, 0x94A5, 0x9CE7, 0x8421, 0x8842, 0x8C63,
0x94A5, 0x9CE7, 0x8421, 0x8842, 0x8C63, 0x94A5, 0x9CE7, 0x0000, 0x984C,
0x98CC, 0x994C, 0x99CC, 0x9A4C, 0x984C, 0x98CC, 0x994C, 0x99CC, 0x9A4C,
0x984C, 0x98CC, 0x994C, 0x99CC, 0x9A4C, 0x0000, 0x8048, 0x804C, 0x8050,
0x8054, 0x8058, 0x8048, 0x804C, 0x8050, 0x8054, 0x8058, 0x8048, 0x804C,
0x8050, 0x8054, 0x8058, 0x0000, 0x80E7, 0x81AD, 0x8273, 0x8339, 0x83FF,
0x80E7, 0x81AD, 0x8273, 0x8339, 0x83FF, 0x80E7, 0x81AD, 0x8273, 0x8339,
0x83FF, 0x0000, 0x80E0, 0x81A0, 0x8260, 0x8320, 0x83E0, 0x80E0, 0x81A0,
0x8260, 0x8320, 0x83E0, 0x80E0, 0x81A0, 0x8260, 0x8320, 0x83E0, 0x0000,
0x9C00, 0xB400, 0xCC00, 0xE400, 0xFC00, 0x9C00, 0xB400, 0xCC00, 0xE400,
0xFC00, 0x9C00, 0xB400, 0xCC00, 0xE400, 0xFC00,
};
u16 D_800D6C14[] = {
0x0000, 0x9C07, 0xB40D, 0xCC13, 0xE419, 0xFC1F, 0x9C07, 0xB40D, 0xCC13,
0xE419, 0xFC1F, 0x9C07, 0xB40D, 0xCC13, 0xE419, 0xFC1F, 0x0000, 0xB908,
0xB988, 0xBA08, 0xBA88, 0xBB08, 0xB908, 0xB988, 0xBA08, 0xBA88, 0xBB08,
0xB908, 0xB988, 0xBA08, 0xBA88, 0xBB08, 0x0000, 0xE81A, 0xCC13, 0xDC17,
0xEC1B, 0xFC1F, 0xE81A, 0xCC13, 0xDC17, 0xEC1B, 0xFC1F, 0xE81A, 0xCC13,
0xDC17, 0xEC1B, 0xFC1F, 0x0000, 0x801A, 0x8013, 0x8017, 0x801B, 0x801F,
0x801A, 0x8013, 0x8017, 0x801B, 0x801F, 0x801A, 0x8013, 0x8017, 0x801B,
0x801F, 0x0000, 0x8340, 0x8260, 0x82E0, 0x8360, 0x83E0, 0x8340, 0x8260,
0x82E0, 0x8360, 0x83E0, 0x8340, 0x8260, 0x82E0, 0x8360, 0x83E0, 0x0000,
0xE800, 0xCC00, 0xDC00, 0xEC00, 0xFC00, 0xE800, 0xCC00, 0xDC00, 0xEC00,
0xFC00, 0xE800, 0xCC00, 0xDC00, 0xEC00, 0xFC00,
0x0000, 0x819D, 0x921D, 0x969E, 0xAF5F, 0xD7DF, 0x819D, 0x921D, 0x969E,
0xAF5F, 0xD7DF, 0x819D, 0x921D, 0x969E, 0xAF5F, 0xD7DF, 0x0000, 0xA108,
0xAD6B, 0xBDEF, 0xD294, 0xE739, 0xA108, 0xAD6B, 0xBDEF, 0xD294, 0xE739,
0xA108, 0xAD6B, 0xBDEF, 0xD294, 0xE739, 0x0000, 0xDC80, 0xE540, 0xEE00,
0xF6C0, 0xFF80, 0xDC80, 0xE540, 0xEE00, 0xF6C0, 0xFF80, 0xDC80, 0xE540,
0xEE00, 0xF6C0, 0xFF80, 0x0000, 0xE419, 0x823F, 0x8339, 0xCBE0, 0xE720,
0xE419, 0x823F, 0x8339, 0xCBE0, 0xE720, 0xE419, 0x823F, 0x8339, 0xCBE0,
0xE720, 0x0000, 0x8421, 0x8842, 0x8C63, 0x94A5, 0x9CE7, 0x8421, 0x8842,
0x8C63, 0x94A5, 0x9CE7, 0x8421, 0x8842, 0x8C63, 0x94A5, 0x9CE7, 0x0000,
0x984C, 0x98CC, 0x994C, 0x99CC, 0x9A4C, 0x984C, 0x98CC, 0x994C, 0x99CC,
0x9A4C, 0x984C, 0x98CC, 0x994C, 0x99CC, 0x9A4C, 0x0000, 0x8048, 0x804C,
0x8050, 0x8054, 0x8058, 0x8048, 0x804C, 0x8050, 0x8054, 0x8058, 0x8048,
0x804C, 0x8050, 0x8054, 0x8058, 0x0000, 0x80E7, 0x81AD, 0x8273, 0x8339,
0x83FF, 0x80E7, 0x81AD, 0x8273, 0x8339, 0x83FF, 0x80E7, 0x81AD, 0x8273,
0x8339, 0x83FF, 0x0000, 0x80E0, 0x81A0, 0x8260, 0x8320, 0x83E0, 0x80E0,
0x81A0, 0x8260, 0x8320, 0x83E0, 0x80E0, 0x81A0, 0x8260, 0x8320, 0x83E0,
0x0000, 0x9C00, 0xB400, 0xCC00, 0xE400, 0xFC00, 0x9C00, 0xB400, 0xCC00,
0xE400, 0xFC00, 0x9C00, 0xB400, 0xCC00, 0xE400, 0xFC00, 0x0000, 0x9C07,
0xB40D, 0xCC13, 0xE419, 0xFC1F, 0x9C07, 0xB40D, 0xCC13, 0xE419, 0xFC1F,
0x9C07, 0xB40D, 0xCC13, 0xE419, 0xFC1F, 0x0000, 0xB908, 0xB988, 0xBA08,
0xBA88, 0xBB08, 0xB908, 0xB988, 0xBA08, 0xBA88, 0xBB08, 0xB908, 0xB988,
0xBA08, 0xBA88, 0xBB08, 0x0000, 0xE81A, 0xCC13, 0xDC17, 0xEC1B, 0xFC1F,
0xE81A, 0xCC13, 0xDC17, 0xEC1B, 0xFC1F, 0xE81A, 0xCC13, 0xDC17, 0xEC1B,
0xFC1F, 0x0000, 0x801A, 0x8013, 0x8017, 0x801B, 0x801F, 0x801A, 0x8013,
0x8017, 0x801B, 0x801F, 0x801A, 0x8013, 0x8017, 0x801B, 0x801F, 0x0000,
0x8340, 0x8260, 0x82E0, 0x8360, 0x83E0, 0x8340, 0x8260, 0x82E0, 0x8360,
0x83E0, 0x8340, 0x8260, 0x82E0, 0x8360, 0x83E0, 0x0000, 0xE800, 0xCC00,
0xDC00, 0xEC00, 0xFC00, 0xE800, 0xCC00, 0xDC00, 0xEC00, 0xFC00, 0xE800,
0xCC00, 0xDC00, 0xEC00, 0xFC00,
};
u16 D_800D6CD4[] = {

View File

@ -51,7 +51,5 @@ u16 D_800DB1F4[] = {
0x8108, 0x80e7, 0x80c6, 0xa529, 0xa94a, 0xad6b, 0xb18c, 0xb5ad, 0xb9ce,
0xbdef, 0xb9ce, 0xb5ad, 0xb18c, 0xad6b, 0xa94a, 0xa529, 0xa108, 0x9ce7,
0x98c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
s32 D_800DB3B0 = 0;

View File

@ -252,6 +252,7 @@ bool LoadFilePc(FileLoad* file, SimFile* sim) {
break;
case SIM_STAGE_CHR:
LoadStageTileset(sim->addr, file->length, 0);
StoreImage(&g_Vram.D_800ACDB8, g_Clut);
break;
case SIM_12:
LoadStageTileset(sim->addr, file->length, 0x100);

View File

@ -64,13 +64,11 @@ s16** g_SpriteBanks[] = {
/* 0x09C */ 0x00000000,
};
u32 D_80181D08[];
extern u16 D_80181D08[16];
void* D_801800A0[] = {
/* 0x0A0 */ (void*)0x00000005,
/* 0x0A4 */ (void*)0x00002000,
/* 0x0A8 */ (void*)0x00000010,
/* 0x0AC */ (void*)D_80181D08,
/* 0x0B0 */ (void*)0xFFFFFFFF,
MAKE_PAL_OP(PAL_BULK_COPY, 0),
PAL_BULK(0x2000, D_80181D08),
PAL_TERMINATE(),
};
void* g_Cluts[] = {
/* 0x0B4 */ D_801800A0,