SMS Plus PSPのビルドが出来るようになったので改造してみる。もちろんSG-1000の色化け対策です。同じTMS9918を使っている、コレコビジョンのエミュレータ(http://psp.akop.org/colem)から、パレット情報(TMS9918.c)をもらってくる。
SMS Plus PSPのvdp.cに入れ込めるように書き換えて、
/* TMS9918 NTSC Palette by Richard F. Drushel */
static const uint8 tms_r_table =
{
0x00, 0x00, 0x47, 0x7C,
0x5D, 0x80, 0xB6, 0x5D,
0xD7, 0xFB, 0xC3, 0xD3,
0x3E, 0xB6, 0xCC, 0xFF,
0x00, 0x00, 0x47, 0x7C,
0x5D, 0x80, 0xB6, 0x5D,
0xD7, 0xFB, 0xC3, 0xD3,
0x3E, 0xB6, 0xCC, 0xFF
};
static const uint8 tms_g_table =
{
0x00, 0x00, 0xB7, 0xCF,
0x4E, 0x72, 0x62, 0xC8,
0x6B, 0x8F, 0xCD, 0xDA,
0x9F, 0x64, 0xCC, 0xFF,
0x00, 0x00, 0xB7, 0xCF,
0x4E, 0x72, 0x62, 0xC8,
0x6B, 0x8F, 0xCD, 0xDA,
0x9F, 0x64, 0xCC, 0xFF
};
static const uint8 tms_b_table[] =
{
0x00, 0x00, 0x3B, 0x6F,
0xFF, 0xFF, 0x47, 0xED,
0x48, 0x6C, 0x41, 0x76,
0x2F, 0xC7, 0xCC, 0xFF,
0x00, 0x00, 0x3B, 0x6F,
0xFF, 0xFF, 0x47, 0xED,
0x48, 0x6C, 0x41, 0x76,
0x2F, 0xC7, 0xCC, 0xFF
};
void viewport_check(void)関数に入れ込む
/* Load TMS9918 palette */
for(i = 0; i < PALETTE_SIZE; i++)
{
int r, g, b;
// r = (tms_crom[i & 0x0F] >> 0) & 3;
// g = (tms_crom[i & 0x0F] >> 2) & 3;
// b = (tms_crom[i & 0x0F] >> 4) & 3;
// r = sms_cram_expand_table[r];
// g = sms_cram_expand_table[g];
// b = sms_cram_expand_table[b];
r = tms_r_table[i];
g = tms_g_table[i];
b = tms_b_table[i];
いい感じになりました!