PCG化追加プログラム

 

6000 RESTORE 6010
6010 DATA E5,87,6F,26,00,29,29,EB,E1,06,08,7E,D3,00,7B,D3,01,7A,F6,30,D3,02,7A,D3,02,13,23,10,EE,C9
6020 FOR I=&H6000 TO &H601D
6030 READ DA$:POKE I,VAL("&h"+DA$):NEXT I
6040 FOR I=&H6040 TO &H6048
6045 DATA 3E,B1,21,30,60,CD,00,60,C9
6050 READ DA$:POKE I,VAL("&h"+DA$):NEXT I
6060 FOR I=1 TO 15
6070 DATA 87,8F,90,91,92,93,95,96,98,99,9A,9B,E4,E5,E7
6080 READ DA$:POKE&H6041,VAL("&h"+DA$):DEF USR=&H6040:U=USR(0):NEXT I
6090 FOR I=&HA1 TO &HDF
6100 POKE&H6041,I:U=USR(0):NEXT I
6110 POKE&H6013,&H10
6120 READ DA$:IF DA$="*" THEN END ELSE POKE&H6041,VAL("&h"+DA$)
6130 FOR I=0 TO 7
6140 READ DA$:POKE&H6030+I,VAL("&h"+DA$):NEXT I
6150 DEF USR=&H6040:U=USR(0):GOTO 6120
6200 DATA 9C,C0,C3,C4,C4,CF,65,67,63
6210 DATA 9D,00,F0,58,24,E4,A4,E4,E8
6220 DATA E3,FD,62,7C,04,07,0D,07,0F
6230 DATA E1,D8,34,3A,1E,FE,BC,B0,78
6240 DATA 80,0F,04,07,0D,0F,7F,86,83
6250 DATA 81,C0,20,E0,B0,F0,F1,63,DD
6260 DATA 82,80,98,98,41,5B,3C,7E,3C
6270 DATA 83,11,22,42,82,FE,00,7E,3C
6280 DATA 84,00,01,02,1C,07,03,05,0D
6290 DATA 85,E0,10,08,07,FC,58,F0,F4
6300 DATA 86,14,2E,5A,71,02,07,01,1C
6310 DATA 88,0C,1A,26,E2,10,18,E0,0E
6320 DATA 89,00,0F,0F,1F,7F,08,0F,05
6330 DATA 8A,00,E0,E0,F0,FE,10,D0,70
6340 DATA 8B,05,03,37,39,08,09,08,1E
6350 DATA 8C,60,C0,E0,10,1C,1C,10,78
6360 DATA 8D,00,03,04,08,08,04,17,2D
6370 DATA 94,80,60,18,04,0E,92,E0,B0
6380 DATA 8E,47,83,A9,C9,4F,49,79,3E
6390 DATA 97,FF,E2,03,05,FD,05,0F,7E
6400 DATA 9E,01,03,47,E4,47,45,67,FB
6410 DATA 9F,C0,E0,F0,10,D0,B0,F0,E8
6420 DATA E0,9C,83,40,21,10,10,24,2E
6430 DATA E2,1C,EA,92,D2,91,24,58,E0
6440 DATA E6,07,0A,05,01,01,1D,0A,64
6450 DATA E8,F9,06,B4,FC,50,F7,EA,04
6460 DATA E9,79,1D,02,01,02,04,15,1F
6470 DATA EA,F0,E6,06,F0,08,A4,14,BF
6480 DATA EB,0B,0F,05,07,3B,7C,17,54
6490 DATA EC,A0,E0,40,C0,AC,7E,E1,6B
6500 DATA ED,66,A6,CF,C8,13,24,48,F8
6510 DATA EE,EB,D6,DC,5C,30,88,44,7E
6520 DATA EF,07,08,14,10,08,04,04,0F
6530 DATA F0,80,40,A0,20,40,80,80,C0
6540 DATA F1,38,54,08,09,0E,0C,1C,00
6550 DATA F2,20,30,5C,4A,E8,C0,E0,00
6560 DATA F8,00,00,00,1C,3E,4F,FB,F7
6570 DATA F6,F4,8A,74,C0,B8,6C,38,00
6580 DATA FA,0F,1E,3C,7C,79,7F,3F,1F
6590 DATA FB,00,30,78,FC,EE,C7,83,01
6600 DATA FC,02,04,48,92,91,4B,24,1F
6610 DATA FD,40,20,12,49,89,D2,24,F8
6620 DATA FE,08,3F,48,97,A2,A1,90,4C
6630 DATA FF,10,FC,12,E9,45,85,09,32
6640 DATA *
6700 FOR J=0 TO 4:IF J=3 THEN NEXT J ELSE POKE&H6041,&HF3+J
6710 FOR I=0 TO 7
6720 READ DA$:POKE&H6030+I,VAL("&h"+DA$):NEXT I
6730 DEF USR=&H6040:U=USR(0)
6740 NEXT J:RETURN
6800 DATA 80,48,28,9F,5F,2B,3F,6F
6810 DATA 00,47,D8,A3,44,88,38,7C
6820 DATA 1B,D7,CF,87,DB,1F,20,70
6830 DATA C6,CE,8E,00,70,D0,10,38
6840 DATA 07,C7,E9,CF,EC,FF,FB,6F
6850 DATA E0,E3,37,F3,37,FF,BF,EE
6855 DATA 3F,1B,3F,6E,7B,3F,FE,F8
6860 DATA FC,B8,FC,EE,BE,FC,FF,3F
6870 DATA 01,01,47,41,E0,F7,F1,BA
6880 DATA C0,20,61,F3,FB,EF,EB,EB
6890 DATA 9C,8D,8D,0F,3F,73,C7,87
6900 DATA 45,55,F5,FC,FC,30,38,38
6910 DATA 40,A9,AB,2E,2F,47,41,5C
6920 DATA 80,C8,E8,38,F8,F2,C6,1E
6930 DATA 7F,63,43,47,45,4F,5F,11
6940 DATA FC,F8,E0,F0,D0,F8,FC,C4
6950 DATA 02,23,21,42,43,41,5F,51
6960 DATA A0,E0,C0,A0,E0,C0,FC,C4
6970 DATA 6C,72,43,47,47,46,86,8E
6980 DATA 82,2F,E9,F9,79,36,30,38
6990 DATA 00,03,33,4A,27,16,17,77
7000 DATA 00,C0,C0,40,C0,60,F8,E6
7010 DATA 67,63,17,15,14,34,34,D4
7020 DATA E2,CA,D6,84,78,44,24,23
7030 DATA 40,44,67,63,61,6F,45,F4
7040 DATA 00,A4,FC,B8,10,BE,B4,E4
7050 DATA 64,79,1C,03,04,08,19,3E
7060 DATA 0E,DF,11,FF,0E,88,4C,3E

 

----------------------------------------------

 

※16進数のアルファベットは小文字の入力でも大丈夫です。

 

◎PCG化にあたっての事前準備(上記プログラムを入力するだけであれば、この手順は不要です。ご自身で任意にPCG機能を活用する場合に必要な準備です)

(1)クイックコマンドリファレンスの「APPENDIXページ」の入手

PasocomMini PC-8001のPCG機能の使い方については、[F11]キーを押すことで起動できる「クイックコマンドリファレンス」(ヘルプファイルのようなもの)のP26~P28に記載されている【PCG8100/PCG機能】のコーナーで確認することができます。

 

ただし、この情報はPasocomMiniの初期ロットには記載されていないため、初期ロットを購入した場合は公式サイトからPasocomMiniのversionを1.1.0以降にする必要があります。バージョンアップするとクイックコマンドリファレンスにAPPENDIXページ(P18以降)が追加され、【PCG8100/PCG機能】のページが確認できるようにります。

※バージョンアップが必要なかたはこちらの公式サイトの「アップデートツール」を使ってバージョンアップを行ってください。

 

(2)PCG機能のマシン語サブルーチンの設置場所を決める

本来PC-8001では6000H~7FFFHのメモリエリアは未使用のようですが、PascomMiniでは利用ができるようなので、マシン語プログラムの設置場所は6000H~6048Hの部分を使うことにしました。

 

◎プログラム解説

■6000~6030行

PCGのキャラクターを設定する基本のルーチンプログラムを6000H~601DHに書き込みます。

プログラム構成についてはリファレンスのP26~P27に事細かに説明されていますが、私には難解でよく理解できなかったので、P28に記載されている「サンプルプログラム」をほぼそのまんま打ち込んでいます。

一点だけ変更しているのは、6013Hを「10」にするとキャラクターのPCG化、「30」にするとPCG解除になるようなので、最初の書き込み時点では「30」に変更しております。

 

■6040~6050行

PCG化のサブルーチンを6040H~6048Hに書き込みます。

P28に記載されている「サンプルプログラム」の「DEFPAI:」の項に該当します。

・6041Hに設定するキャラクタ番号

・6043H~6044Hにキャラクタデータアドレス(このプログラムでは6030H)

・6046H~6047Hに基本ルーチンのアドレス(このプログラムでは6000H)

を設定します。

※マシン語に精通しているかたには常識なのでしょうが、6030Hと番地を指定する際には、30 60と逆に打ち込む必要があることを思い出すのに、少し時間がかかりました

 

■6060~6080行

道(87)、湖(E7)、家の屋根(E4・E5)、格子線のキャラクター(90~9B)についてはPCG化せず本来のキャラクタで描画するためPCG化の解除を行います。

 

■6090~6100行

同様にカタカナ(A1~DF)もPCG化せず、そのまま描画するためPCG化の解除を行います。

 

■6110行

6120行以降は全てのキャラクタをPCG化するため、6013Hの値を30から10に変更します。

 

■6120~6150行

各キャラクターをPCG化していきます。

DATA文の先頭でPCG化するキャラクターコードを読み出し、残りの8バイトでキャラクターのドットパターンを指定していきます。

ドットパターンは以下の通りです。 

0:□□□□ 1:□□□■ 2:□□■□ 3:□□■■ 4:□■□□ 5:□■□■ 6:□■■□ 7:□■■■

8:■□□□ 9:■□□■ A:■□■□ B:■□■■ C:■■□□ D:■■□■ E:■■■□ F:■■■■

 

■6200~6230行

主人公のドットパターンです。

昔は方眼紙に鉛筆で色を塗りましたが、今はEXCELで16進数への変換も自動でできて便利です。

 

■6240~6270行

行商人のドットパターン

 

■6280~6470行

村人、子供、商人、神父、町人のドットパターン

 

■6480~6560、6580~6630行

盗賊、E.T.、ANACONDA、SPYDARのドットパターン

 

■6570行

KILLER BEE(1匹)のドットパターン

 

ここまででキャラクター割り当てはいっぱいになってしまうので、初期設定はここまでで終わりです。

 

■6700~7060行

DEMON、GOLEM、DRAGON、GOD、SATAN、老人、BLACK KNIGHTの描画時のサブルーチン

上記怪物が登場するたびに「月」「日」「時」「秒」のキャラクターをPSGキャラ化して表示させています。

 

 

BACK

TOP