GAMELIB16 その3

ゲームプログラマになる前に覚えておきたい技術」のGameLibが32bit C++が前提なのに対して、16bit Cを前提にゲームを開発したいという趣旨で作っています。

http://www.shuwasystem.co.jp/support/7980html/2118.html

16bit Cではワンダースワンの参考書がわかりやすく、サンプルプログラムもインターネットで公開されているので、こちらをベースにAPIを開発しようと思います。

https://web.archive.org/web/20031227041501/http://page.freett.com:80/gameboy/wwpoka.html

対象プラットフォームは、メガドライブワンダースワンカラーぴゅう太とし16bit Cで共通APIで開発するのが目的です。

void wwc_set_color_mode(int mode);
void wwc_font_set_colordata(u16 tilestart, u16 noftiles, u16 *data);
void wwc_palette_set_color(u8 palettenumber, u8 colornumber, u16 color);
void screen_set_char(u8 layer, u8 xts, u8 yts, u8 xte, u8 yte, u16 *map);
void screen_set_scroll(u8 layer, u8 x, u8 y);
void display_control(u8 mode);
void sprite_set_range(u8 sprstart, u8 sprend);
void sprite_set_location(u8 sprite_no, u8 x, u8 y);
void sprite_set_char(u8 sprite_no, u16 char_data);
u8 key_press_check(void);
void sys_wait(u16 nofvbl);

ワンダースワンカラーの画面表示については、256x256(表示領域 224x144)4096色中16色であるため、TMS9918にあわせて16色 256x192で管理し、表示領域に収まらない部分はハードウェアスクロールで対応する方針としました。

TMS9918はグラフィック2、スプライトサイズ16x16で本領を発揮するのですが、マルチプラットフォームでの開発を考えてグラフィック1、スプライトサイズ8x8を使う方針とします。

http://www43.tok2.com/home/cmpslv/Sg1000/9918.htm

なおグラフィック2のテクニックについては以下が詳しいです。

https://www.wizforest.com/OldGood/MSX1/MSX1_2.html

グラフィックデータはpiroPAINT、EDGEなどを利用してパレット16色で作成して、メガドライブワンダースワンカラーはツールで変換しています。ぴゅう太に関しては、GAMELIB16の共通APIワンダースワンカラー形式の16色データを2色に減色することで対応しています。