In serial communication, input \n from standard input is converted to \r and passed

Fix comm_input() in comm.c. (See the e-mail of [WitchFan 00462])

Instead of error termination when displaying text characters outside the screen,
Fix WWText_PutCharacter() to proceed with issuing a warning.
(Correspondence to one person)

Add #define _WONX_ to wonx_include/types.h. (The part you want to depend on WONX
For when you want to enclose in source)

Version 0.5 beta - from wonx-b05.tar.gz
This commit is contained in:
Hiroaki Sakai
2000-11-23 12:00:00 +09:00
committed by Godzil
parent 96b108c909
commit 7630141b26
6 changed files with 146 additions and 8 deletions

114
README
View File

@@ -329,6 +329,7 @@ wonx
関数を呼び出しても,何も起こりません.(空の関数になっている)
・サウンド
・カーソル表示
・その他いっぱい
■ 注意しなければならないこと
@@ -340,8 +341,8 @@ UNIX
ならないことがいくつかあります.これらは Wonx の性質上,仕方の無いことです.
以下のことは,意識することと,きれいなプログラムを書くことで,
かなり回避できると思います.(short int にすべきところでは,省略せずに
ちゃんと short int と明示するとか)
かなり回避できると思います.(ビットマップ操作などで,short int にすべき
ところでは,省略せずにちゃんと short int と明示するとか)
まあWonx の目的は論理的なバグを早い段階で無くすことにあるので,このへんは
そういうものだと割り切って使ってください.
@@ -406,6 +407,115 @@ WonderWitch
反応しないからといってなんども押すのでなく,1回を長く確実に押すように
してください.
[MS-DOS 形式ファイルの扱い]
MS-DOS 形式ファイルは,行末の改行コードが UNIX のテキストファイルと
異なるので,注意してください.*.[ch] ファイルの場合は問題無いのですが,
makefile は注意してください.
(UNIX のテキストファイルでは,改行は \n ですがMS-DOS では \r\n です)
例えばmakefile 中に,
gcc -g -o smac $(OBJS) -L. -L/usr/X11R6/lib -lwonx -lX11 -lXt
のような行があったとして,これが MS-DOS のテキスト形式のファイルだと,
-lXt のあとに余分な改行コード(\r)が付加されてしまうためUNIX 上で make
しても,「-lXt に相当するライブラリが無い」と怒られてしまいます.
(しかも,ファイルを emacs や less などで参照しても,改行コードは表示されない
ため,原因がわかりにくい)
また,
gcc -g -o smac $(OBJS) -lwonx -lX11 -lXt -L. -L/usr/X11R6/lib
のようにしていると,/usr/X11R6/lib を指定したつもりなのに,実際には
/usr/X11R6/lib\r というディレクトリが指定されたことになってしまい,
-lX11, -lXt の検索に失敗します.
漢字コードに関しても同じことがいえますUNIX での漢字コードは EUC なので,
ソースコード中に SJIS の漢字が入っていると,うまくコンパイルできなかったり,
make がうまく動作しなかったり,コンパイルできてもプログラム自体が
誤動作してしまい,しかも原因に気づきにくくなってしまう可能性があります.
makefile やソースコードは必ず,
> cat makefile | qkc -I -O -e -u > makefile.tmp
> mv makefile.tmp makefile
などを通してUNIXのテキストファイルに変換しましょう
[ファイル名の問題]
MS-DOS ではファイル名はすべて大文字ですがgcc では *.C のような
ファイル名のファイルは C++ で書かれていると判断されるため,
SAMPLE.C のような名前のファイルをコンパイルすると,うまくリンクできない
ことがあります.
このような場合はsample.c にリネームしてコンパイルしてください.
[シリアル通信について]
シリアル通信の受信用関数(comm_receive_char()等)はfgetc(stdin) から
入力文字を取得して,\n は \r に変換して返します.これは,一般的な通信回線上の
端末をエミュレートするためです.
またcomm_send_char() に渡した文字は,標準出力に出力されますが,
タブや改行コードは,"\t" "\n" のような文字列に変換されて出力されます.
添付の sout2str.pl を通すことにより,シリアル通信への出力のみ抽出して,
端末への出力のイメージで表示させることができます.
[ソース中の WONX 依存部分のくくりかた]
WonderWitch 用のプログラムを開発していく際にWONX の場合のみ組み込みたくて,
WonderSwan 上で実行するときには取り除きたいコードがあったとします.
(例えば,デバッグ情報の出力のために printf() を入れる場合など)
このようなときのためにwonx_include/types.h で
#define _WONX_
してあるので,そのような場所は #ifdef _WONX_ でくくってください.
[ダンプデータの取りかた]
ソース中に,
#include "Wonx.h"
#include "WonxDisplay.h"
#include "WWDisplay.h"
#include "WWColorMap.h"
#include "WWPalette.h"
#include "WWCharacter.h"
#include "WWSprite.h"
int i;
WWDisplay ww_display;
ww_display = WonxDisplay_GetWWDisplay(Wonx_GetWonxDisplay());
WWColorMap_PrintData(WWDisplay_GetColorMap(ww_display), stdout);
for (i = 0; i < 16; i++)
WWPalette_PrintData(WWDisplay_GetPalette(ww_display, i), stdout);
for (i = 0; i < 512; i++)
WWCharacter_PrintData(WWDisplay_GetCharacter(ww_display, i), stdout);
for (i = 0; i < 128; i++)
WWSprite_PrintData(WWDisplay_GetSprite(ww_display, i), stdout);
のようなコードを挿入することにより,任意の場所でキャラクタやパレットの
ダンプデータを出力させることができます.
プログラム中に,不安な場所があったら,
#ifdef _WONX_
ww_display = WonxDisplay_GetWWDisplay(Wonx_GetWonxDisplay());
printf("Before setting:\n");
WWSprite_PrintData(WWDisplay_GetSprite(ww_display, 0), stdout);
#endif
/* ここにスプライトの設定についての不安なコードがある */
#ifdef _WONX_
printf("After setting:\n");
WWSprite_PrintData(WWDisplay_GetSprite(ww_display, 0), stdout);
#endif
のようにして不安なコードの前後でダンプデータを取ると,デバッグに
役立つでしょう.
■ 作者
Wonx は,坂井弘亮がその大部分を往復3時間の通勤電車の中で Libretto で書いた,