現代プログラマのタ
第0002回
挙動不審なプログラム


 さて、WonderSwanColorはFF同梱版を無事、買う事ができた。で、
カラー対応ライブラリのβ版もダウンロードした。
 でも、やっぱり、会社で弄り倒す日々が続く。

 さしあたって、「爆弾男(仮名)」をカラー対応にする。色数が
少なくなるが、互換モードがあるので、それなりにすぐ終る。
 で、妙な事に気づいた。なぜか、ボーダーカラーの設定が無視さ
れている……、様な気がする。

 と、言うか、明らかに無視されてるじゃん。

 取り敢えず、検証プログラムを組む。なぜか、ボーダーカラーが
ちゃんと変更される時もある。

 さらに、検証プログラムを組む。うむ。ばっちし、正常動作しな
い、正常なプログラムができた。

01:#include <sys/bios.h>
02:#include <sys/libwwc.h>
03:
04:#define RGB(r, g, b) (((unsigned)r << 8) | ((unsigned)g << 4) | (unsigned)b)
05:
06:int main(int argc, char *args[])
07:{
08:    int i;
09:
10:    if(wwc_get_hardarch() != HARDARCH_WSC)
11:        return -1;
12:
13:    wwc_set_color_mode(COLOR_MODE_4COLOR);
14:
15://  sys_wait(0);
16:
17:    wwc_palette_set_color(0, 0, RGB(0xFF, 0x00, 0x00));
18:    wwc_palette_set_color(1, 0, RGB(0x00, 0x00, 0x00));
19:
20:    for(i = 0; i < 2; i++){
21:        display_control(0x1000);
22:
23:        key_wait();
24:    }
25:
26:    wwc_set_color_mode(COLOR_MODE_GRAYSCALE);
27:
28:    return 0;
29:}

 検証プログラムはこんな感じ。実行すると、画面が赤くなり、何
かキーを押すと黒くなる。
 15行目のコメントにしてる部分を外すと、画面が赤くなる事は無
くなる。現象としては、wwc_set_color_mode実行直後の
display_controlのボーダーカラーの設定が無視されると言う物。

 取り敢えず、これは仕様かもしれないし、バグかもしれない。さ
らには、うちでのみ起こる現象かもしれないので放置。まぁ、バグ
だとしたら、正式なリリース版で治るだろう。

 治りませんでした。

戻る