for (i = 0; i < 15; i++) {
GetMcdBlockInfo(1, i + 1, &blocks1[i]);
GetMcdBlockInfo(2, i + 1, &blocks2[i]);
+ blocks1[i].Title[24] = 0;
+ blocks2[i].Title[24] = 0;
}
menu_draw_begin(1, 1);
row2 = g_menuscreen_w / 2;
for (i = 0; i < maxicons; i++) {
draw_mc_icon(8, y + i * 32, (u16 *)blocks1[i].Icon);
- smalltext_out16(10+32, y + i * 32 + 8, blocks1[i].sTitle, 0xf71e);
+ smalltext_out16(10+32, y + i * 32 + 8, blocks1[i].Title, 0xf71e);
draw_mc_icon(row2 + 8, y + i * 32, (u16 *)blocks2[i].Icon);
- smalltext_out16(row2 + 10+32, y + i * 32 + 8, blocks2[i].sTitle, 0xf71e);
+ smalltext_out16(row2 + 10+32, y + i * 32 + 8, blocks2[i].Title, 0xf71e);
}
menu_darken_bg(g_menubg_ptr, g_menuscreen_ptr, g_menuscreen_w * g_menuscreen_h, 0);
}
void GetMcdBlockInfo(int mcd, int block, McdBlock *Info) {
- char *data = NULL, *ptr, *str, *sstr;
+ unsigned char *data = NULL, *ptr;
+ char *str, *sstr;
unsigned short clut[16];
unsigned short c;
- int i, x;
+ int i, s, x, skip;
memset(Info, 0, sizeof(McdBlock));
if (McdDisable[mcd - 1])
return;
- if (mcd == 1) data = Mcd1Data;
- if (mcd == 2) data = Mcd2Data;
+ if (mcd == 1) data = (unsigned char *)Mcd1Data;
+ if (mcd == 2) data = (unsigned char *)Mcd2Data;
ptr = data + block * 8192 + 2;
str = Info->Title;
sstr = Info->sTitle;
+ s = skip = 0;
for (i = 0; i < 48; i++) {
c = *(ptr) << 8;
c |= *(ptr + 1);
else if (c == 0x816E) c = ']';
else if (c == 0x817C) c = '-';
else {
- str[i] = ' ';
+ if (!skip++)
+ str[s++] = ' ';
sstr[x++] = *ptr++; sstr[x++] = *ptr++;
continue;
}
- str[i] = sstr[x++] = c;
+ skip = 0;
+ str[s++] = sstr[x++] = c;
ptr += 2;
}
trim(sstr);
ptr = data + block * 8192 + 0x60; // icon palette data
-
- for (i = 0; i < 16; i++) {
- clut[i] = *((unsigned short *)ptr);
- ptr += 2;
- }
+ memcpy(clut, ptr, 16*2);
for (i = 0; i < Info->IconCount; i++) {
short *icon = &Info->Icon[i * 16 * 16];
ptr = data + block * 8192 + 128 + 128 * i; // icon data
- for (x = 0; x < 16 * 16; x++) {
+ for (x = 0; x < 16 * 16; ) {
icon[x++] = clut[*ptr & 0xf];
- icon[x] = clut[*ptr >> 4];
+ icon[x++] = clut[*ptr >> 4];
ptr++;
}
}
Info->Flags = *ptr;
ptr += 0xa;
- strncpy(Info->ID, ptr, 12);
+ strncpy(Info->ID, (char *)ptr, 12);
ptr += 12;
- strncpy(Info->Name, ptr, 16);
+ strncpy(Info->Name, (char *)ptr, 16);
}
int sioFreeze(void *f, int Mode) {