PC-98用N88-BASIC(86)でセミグラフィック機能を使って遊んでみた☆レトロPCでプログラミング

PC-98用N88-BASIC(86) セミグラフィック機能で遊んでみた PC-88・PC-98

昨夜、久々にPC-98のBASICを使い
過去のプログラムの動作テストなどを
行っていたのですが、その時に
昔の書籍に書かれていた機能が気になり
ちょっと試してみよう!ってことに。

そんなわけでゲーム記事をお休みして
レトロPCのプログラミング記事です。

あくまでお遊び程度に試しただけなので
こんな情報なんて興味ないよ!って方は
サラッと流し読みしていただければ😅

ブログランキング参加中!ポチッ👆と応援よろしくです♪
  • にほんブログ村 ゲームブログ ドラクエシリーズへ
  • にほんブログ村 ゲームブログ レトロゲームへ
 
スポンサーリンク

PC-88から移植した自作RPG「アシュラの塔」のダウンロードはこちらから
N88-BASICのプログラムをWindows上で編集&保存!「N88-BASIC Source editor」のダウンロードはこちらから

MS-DOS版N88-BASIC(86)を起動

PC-98の古い書籍を参考に作った自作プログラム

まずは MS-DOS版 N88-BASIC(86) を
起動させます。Disk版でももちろんOK。

写真で SEMI.BAS をロードしていますが
後半で紹介するプログラムをロード後に
撮影したものなので無視してください😅

テキストVRAMに直接書き込む

テキストVRAMのアトリビュートエリアに直接書き込む

今回は PC-98 のテキストVRAM へ
直接書き込む形で実験します。

最初に DEF SEG=&HA000 を実行し
セグメントベースを &HA000 に設定。
ここがテキストVRAMの始点です。

&H2000 以降はアトリビュートエリア。
色などの属性が書き込まれる場所です。

この属性にセミグラフィック機能という
低解像度 160×100ドットで描画する
機能が PC-88 時代から存在します。

試しに &HF1 をテキスト画面 (0,0) に
書き込んでみると、上写真のような
ドットが描かれました。

ドットパターンの詳細

どうやればセミグラフィックを描けるのかがわかったので

これだけだとサッパリ意味不明なので
次は 4文字分の範囲へ書き込み。

セミグラフィック機能では 1文字当たり
横2ドット×縦4ドットを表現可能。

左ドット右ドット
1段目&H01&H10
2段目&H02&H20
3段目&H04&H40
4段目&H08&H80

1段目から4段目までの計8ドットで
ONにしたい場所の数字を足した
合計の値をキャラクターコードとして
テキストVRAMに書き込みます。

上写真の例で説明すれば
1段目のドットのみを表示=&H11
2段目のドットのみを表示=&H22
などとなりますね。

パターンコードを書き込んだら次は
アトリビュートエリアへの書き込み。


ビット7~5がGRBの並びで色番号指定、
ビット4を1にしてセミグラフィック、
ビット0を1にすることで表示です。

上写真では &HF1 を書き込んでいるので
白色のセミグラフィックとして表示。
色に関しては少し先で書きます。

市松模様なども出力してみた

これらを踏まえて 2つの模様を
描いてみました。

&H55, &H22 で左側の模様。
右側の市松模様はドットの部分を
先ほどの表に書いた数字に置き換え
足し算したものを書き込みます。

上写真ではわかりやすくするために
あえて4段分順番に足しています。
仕組みがわかってしまえば
そんなに難しくはないですね。

ためしにパターンを作ってみた

半角文字”&”のパターンデータを作り

後ほどセミグラフィックで描く
パターンデータを作ってみました。

ドット絵を横2×縦4ドットで分割し
足していけば1文字ずつのデータを
作る事ができますね。

出来上がったデータは
330行にある12バイト(16進)です。

アトリビュートで色も付けられる

テキスト文字と同じ扱いなので色も付けられます

先ほどまでは属性に &HF1 を書き込み
白でセミグラフィックを描きましたが
当然他の色も付けられます。

&H11&H31&H51&H71&H91&HB1&HD1&HF1

画面一杯に出力してみた!

画面一杯に出力してみたらこんな感じ

描くための方法がわかったところで
簡単なプログラムを作って
テキスト画面一杯に「&」記号の
ドット絵パターンを出力!!

さらに、色もランダムにセットして
描いたら上写真のようになりました😅

もちろんグラフィック画面も同時に使えます

セミグラフィックで描く場所は
普通のテキスト画面上なので
背景にグラフィック画面を合わせて
表示させることができます。

うまく利用すれば面白い画面を
作る事ができそうですね~。

今回作成したプログラム

それでは、昨夜作成したプログラムを
そのまんま紹介しちゃいます。

PC-98シリーズ用 N88-BASIC(86) の
MS-DOS版・Disk版・ROM版で
動作するので試してみて♪

100 ' セミグラフィック サンプル SEMI.BAS
110 '
120 DEF SEG=&HA000:CONSOLE 0,25,0,1:CLS
130 DEFINT A-Z:DIM C(7),P(11)
140 FOR I=1 TO 7 :READ A$:C(I)=VAL("&H"+A$):NEXT
150 FOR I=0 TO 11:READ A$:P(I)=VAL("&H"+A$):NEXT
160 '
170 RANDOMIZE VAL(RIGHT$(TIME$,2))
180 CX=0:CY=0
190 FOR Y=0 TO 2
200  FOR X=0 TO 3
210   POKE (CY+Y)*&HA0+(CX+X)*2,P(Y*4+X)
220   AT=C(INT(RND(1)*7+1))
230   POKE &H2000+(CY+Y)*&HA0+(CX+X)*2,AT
240  NEXT
250 NEXT
260 CX=CX+4:IF CX=80 THEN CX=0:CY=CY+3 ELSE 190
270 IF CY<>24 THEN 190
280 LOCATE 0,23:END
290 '
300 ' Text-vram write data
310 '
320 DATA 31,51,71,91,B1,D1,F1
330 DATA 1E,11,0E,00, 58,52,08,08, 43,44,34,04
340 '
350 ' Pattern "&"
360 '
370 '01|11|00|00
380 '10|00|10|00
390 '10|00|10|00
400 '10|00|10|00
410 '--+--+--+--
420 '01|01|00|00
430 '00|10|00|00
440 '01|01|00|00
450 '10|00|10|10
460 '--+--+--+--
470 '10|00|01|00
480 '10|00|11|00
490 '01|11|00|10
500 '00|00|00|00

おまけ

このOUT命令でテキストフォントがPC-88と同じに

資料を読んでいてもう1つ発見。

OUT &H68,6 を実行すると
テキスト画面のフォントが
PC-88 と同じになります😄

OUT &H68,7 を実行すれば
元のフォントに戻せます。

98なのに88っぽくなって不思議♪

知らなかったことがまだまだ
たくさんあるなぁ~と思いながら
楽しんでいた昨日の夜でした🌟

といったところで今日はおしまい!
5月もあっという間に終わりですね💦

それではまた明日の記事で♪

ポチッと応援してもらえたら嬉しいな♪

広告
ブロサーの方はこちらからコメントできます

TSAPPS開発室の息抜きゲーム部屋 - にほんブログ村

人気ブログランキングでフォロー


PC-88・PC-98開発
スポンサーリンク
ゴルディクスをフォローする
当サイトをご利用の方へ
当サイトでは、各ゲーム会社様を代表とする共同著作者が権利を所有する画像を利用しています。ゲームの画像の著作権はゲーム会社様にあります。当該画像の転載・配布は禁止致します。  
(C)ARMOR PROJECT/BIRD STUDIO/SQUARE ENIX All Rights Reserved.
カカニャン(H.N.患者)もよろしく
カカニャン

一言メッセージ

二次創作を中心に絵や小説を作っています(未だ投稿はしていませんが、オリジナル作品も出すつもりです)。 互いに発信し合えるSNSの良さを活かして沢山の方と交流出来たらいいなぁ、と思っています。

コメント

タイトルとURLをコピーしました