[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[WitchTech 00760] Re: 画面クリア



長久です。

2001/03/28 09:06:42 +0900に"Kazutoshi Fukui" <fukui.kazutoshi@canon.co.jp>さんに頂いた
「[WitchTech 00759] 画面クリア」への返事です。
>画面クリアの方法として、まず最初に考えたのが、
>wwc_clear_font ();の利用です。
>ウィッチ本を読むと、テキスト画面はキャラクタ番号8〜511までを表示している
>だけと書いてあったので、キャラクタフォントをクリアしてやれば画面もクリアでき
>る
>という安易な考えです。しかし、wwc_clear_font のところでプログラムが止まって
>しまいました。
>次に screen_fill_char を利用しました。
>カラー16色モードでタイトルを表示するときに使用した、白一色のキャラクタを利
>用しました。しかし、これもあえなく失敗…。現象は同じように screen_fill_char
>のところで
>プログラムが止まりました。

テキスト表示関係がカラーモードによって不具合があるとかいう未確認の情報は
知っていましたが、実際確認していなかったので、ちょっと見てみました。
魔女本10章のtest1c.cを以下の様に書き換えてみました。

test1c.c改------------------------------------
#include <sys/bios.h>
#include <sys/libwwc.h>
#include "maru.h"

void main() {
	unsigned char x = 0, y = 0;
	int i;

	if(wwc_get_hardarch() == HARDARCH_WSC) {
		wwc_set_color_mode(COLOR_MODE_4COLOR);
		wwc_palette_set_color(12, 3, 0xf00);
		wwc_palette_set_color(12, 2, 0xf77);
		wwc_palette_set_color(12, 1, 0xfff);
	}
	else
		palette_set_color(12, 0x7300);

	display_control(DCM_SPR | DCM_SCR2);
	text_screen_init();
	sprite_set_range(0, 1);
	font_set_colordata(0, 1, bmp_maru);
	sprite_set_char(0, CFM_SPR_UPPER | (12 - 8) * 0x200 | 0);
	sprite_set_location(0, x, y);

	text_put_string(0, 0, "あいうえおかきくけこさしすせそ");
	text_put_string(15, 0, "たちつてとなにぬねのはひふへほ");
	text_put_string(0, 2, "1234567890ABCDEfghij");

	while(1) {
		i = key_press_check();
		if(i & KEY_B)
			break;
	}

	wwc_clear_font();

	while(1) {
		i = key_press_check();
		if(i & KEY_START)
			break;
	}

}
------------------------------------------

これだと、wwc_clear_font()は動きます。
(但し、スプライトも消えるので、実用上つらいかも)
wwc_clear_font()をscreen_fill_char()に差し替えても動作が確認できます。

基本的に4色カラーでwwc_clear_font()、screen_fill_char()は動くようですから
環境を最新に更新していないなどの問題ではないかと思います。
FreyaOS、開発環境が最新のものになっているでしょうか?

なっている場合は、ソースを開示してもらわないとだめかも…

神楽坂酔っ払い研究所所長
長久 勝(ながく まさる)
mailto:mnagaku@cap.bekkoame.ne.jp
http://www.bekkoame.ne.jp/~mnagaku/


ML Archives