PAINTについて

2024/5/23(木)
 
N88-BASICのPAINTについて
 
■ 概要
N88-BASICのPAINTはペイントの先端が
上下両方に広がります
また塗る色は境界色に含まれない為
塗った後は境界を検索できなくなります
(境界線色を含むタイルパターンを境界線と判断
してはいけない為)
 
これらの事を実現するため
VL,NL,XL-BASICでは
塗った後の境界はストリーム(スタック)に格納した値を
検索しています
 
実機はもっと良い方法で実装しているかも知れませんが
分からないのでここでは触れません
 
■ 説明
ストリーム(スタック)
push:ストリーム(スタック)にデータを格納する
pop :ストリーム(スタック)からデータを取り出す
ストリームは一番初めに格納したデータを取り出す
スタックは一番後に格納したデータを取り出す
VL,NL,XL-BASICではストリームを使用しています
 
1. x0,x1(左右境界),y(ライン),d(上下方向)をpush
2. popする、pop出来なければ終了
3. popした境界のd方向に検索し新たな境界を得る
4. 新たな境界とストリーム中の境界を比較チェック
5. 対消滅処理と新たな境界をpushする
6. 2.に戻る
 
一応以上で実装し今の所正しく動いています
(実装は結構複雑です)
 
■ あとがき
アセンブラはPUSH/POP(PULL)などスタックを実現する
命令はありますがストリームには対応していなかったと
思いますので
N88-BASICが、あえてストリーム方式を採用した理由は
分かりませんが
見た目が良いので良かったと思います
(ペイントの最前線が同時に動く塗り方が好きなので)
 
また、ペイント色が境界線にならない仕様も実装が大変で
速度も落ちると思うのですが、それで良かったと思います
 
N88-BASICは速度より仕様を優先して正解だったと思います
 
あえて言うなら
この仕様のまま境界色を複数指定できれば良かったと
思います
(VL-BASICでは境界色を複数指定できるようにしました)

 

このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)