SMS Plus PSPの改造

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];

いい感じになりました!