ラベル $TOMY ぴゅう太 の投稿を表示しています。 すべての投稿を表示
ラベル $TOMY ぴゅう太 の投稿を表示しています。 すべての投稿を表示

1984年3月20日火曜日

[機器][TVゲーム] TOMY ぴゅう太(TP1000)でBASICプログラム

[機器][TVゲーム] TOMY ぴゅう太(TP1000)でBASICプログラム
ぴゅう太(TP1000)
密かに、くろーびす氏の協力に感謝
TI社のチップで固められた稀有なパソコン
日本で発売された同じようなハードといったら一応TI-99ぐらいしかない(CPUはTMS9990)
更に独特なニホンゴBASICが異才を放ち、海外ではTomy Tutorという名前で発売されており、
ロットによってはマスクROMを使用したり、拡張性もあったり以外と本格的なハード(G-BASICだけが冗談で作られたとしか思えない)
ワークエリアはなく、CPUの内の16ワード*8バンクの計256バイトとVDPで使われない領域を使用
尚、初代ぴゅう太は少なくとも3種類のバージョンがあるみたいなのですが回路図は当然手持ちのハードのみです。
製造番号はZTST038581です。(恐らく中期バージョン)
初期は256KBitPROM1個らしく、中期は256KBitマスクROM1個、後期はマスクROM2つになっているみたいです
(注)TI社のチップはMSBとLSBが通常と逆になっています。(ROMの部分ではアドレス、データバスの並びが逆なのはその為です

Enri's HP
http://www43.tok2.com/home/cmpslv/



■機種による文字化け
左がぴゅう太、右がぴゅう太Jr.による画面となります
カナ文字か英小文字の定義がされているか機種によって違い
文字化けが起こる問題が生じます
その為後期のソフトになると英大文字表記になり文字化けの問題を回避しています
ただしプレイヤー選択ルーチンはBIOSコールで行う為
メッセージ表示が機種ごとに変化します
グラフィックモード
メニューでGRAPHICを選択するとグラフィックモードになります
このときMODキーを押すと
背景作成モード→全背景作成モード→アニメ作成モード→背景・アニメ作成モード
と状態が変わり4回押すと、背景作成モードに戻ります
背景作成モード
画面は32×24のセル(キャラクタ)に分かれていますが下1/3に
サンプルカラーとパレットがありセルの一部分は隠れています
メインカーソルが隠れている場所に行くと、サンプルカラー、パレットは上に移動し
隠れていたセルが出現します
メインカーソル
ロケット型をしていてセルの位置及び移動方向を示しています
移動はカーソルキーで押し続けると連続して移動します
パレット
パレットは8×8ドットが8倍に拡大されている場所で
スペースキーを押すとメインカーソルの位置のセルが表示されます
同時にパレットの左上にサブカーソルが点滅します
サブカーソル
サブカーソルはパレットの中と左側1列の中を移動が出来ます
移動はカーソルキーでパレットの外(左側)にある時にカラーキーを押すと
パレットの中の横1列がその色になります(サブカーソルは移動方向に1つ進みます)
パレットの中にある場合はカラーキーを押すと、その位置のドットに色がつきます
ただしパレットの横1ライン中2色までしか色をつける事ができません。
カラーキー
カラーキーはサンプルカラーに表示された英数字を使います
カラーキーはサブカーソルが表示されている場合のみ有効
メインカーソルが表示されているときは押したキーの文字を表示します
1=透明、2=黒、3=灰色、4=白
5=淡い黄、6=黄、7=淡い緑、8=緑
9=濃い赤、0=淡い赤、Q=赤、W=濃い赤
E=紫、R=淡い青、T=青、Y=濃い青
スペースキーでセルを表示したときサンプルカラーYの下に数字が表示されます
これは個々のセルのナンバーを表します。
メインカーソルはパレットにかかれたデータを記憶しています
RTキーを押すことでパレットのデータをセルに書き込みます。
全背景出力モード
全背景出力モードでカラーキーを押すと画面の地色(バックドロップ画面)を変える事が出来ます

Enri's HP
http://www43.tok2.com/home/cmpslv/





















■アニメ作成モード
画面は背景作成モードと同じようにサンプルカラーとパレットが表示されます
違う所はメインカーソルが無くなり”ABCD”のブロックが4つ表示されます
この”ABCD”のブロックをアニメ(スプライト)として背景と同じように絵を描きます
アニメは4つあり左から順にアニメ(4)、アニメ(3)、アニメ(2)、アニメ(1)とします
最初はアニメ(4)が点滅していますがRTキーを押すごとに順番に点滅していきます
点滅しているアニメはカーソルキーで移動する事が出来ます
アニメはA、B、C、Dの4つに分かれていて、この1つ1つを順番にパレットに呼び出す事によって
背景作成モードと同様に絵を作成します
アニメが点滅しているときにスペースキーを押すと4分の1の”A”の部分がパレットに呼び出されます
スペースキーを押すごとに”A”→”B”→”C”→”D”…と変わります
パレットの中はアニメの色に関係無く透明部分(”0”)は灰色で色のついた部分(”1”)は青で表示
1つのアニメには1色だけしか色をつけられません
アニメには優先順位があり重ねた場合アニメ(4)が一番奥、アニメ(1)が一番手前(手前が優先順位が高い)になります
背景・アニメ出力モード
サンプルカラー、パレットが消え背景とアニメが全面に現れます
カラーキーで画面の地色(バックドロップ画面)の変更
コントローラでアニメを動かす事ができます
コントローラ1でアニメ(4)、コントローラ2でアニメ(2)を操作します
アニメ(4)とアニメ(2)しか操作できませんがアニメ(3)とアニメ(1)は
アニメ(4)あるいはアニメ(2)を重ねることで一緒に操作出来ます
全てのアニメを重ねるとコントローラ1か2のどちらでも操作出来ます
背景・アニメ出力モードでMONキーを押す事でモニターへ飛びます
グラフィックモードのモニター
メニユ-:画面データの消去を行いメニュー画面に飛びます
GRAPHIC:グラフィックモードに戻ります
GBASIC:G-BASICに飛びます(BASICプログラムは消去される)
セ-ブ:データをテープにセーブします(ナマエはカナ文字か英字で4文字以内、2文字目からは数字、記号の使用可)
ロ-ド:データをテープにロードします(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)
カクニン:テープにセーブしたデータの確認を行います(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)
他のモードに変えるとカクニンの使用不可
G-BASICモード
メニューからG-BASICモード、
グラフィックモードのモニターからGBASICコマンドで
G-BASICを呼び出すと
画面一番下に”タイプインOK”というメッセージとその下にカーソルが点滅します
カーソルは画面一番下の行だけしか移動できませんが、文字や記号が書かれた画面を上下移動で
プログラムの自由な位置に移動出来ます
カーソルの下を押すとすでにタイプインしたプログラムを1行ずつ下がってきます
カーソルの上を押すとすでにタイプインしたプログラムを1行ずつ上げていきます
モニターモードーへ行く方法
タイプイン:行番号オワリ
プログラム実行中および後:MONキー
シングルステップ実行中:RTキーを押しながらMONキー(タイミングが合わないとモニターへ飛ばない)
G-BASICモードのモニター(先頭4文字で識別可)
メニユ-:画面データの消去を行いメニュー画面に飛びます
GRAPHIC:グラフィックモードに飛びます(BASICプログラムは消去される)
GBASIC:G-BASICに飛びます(BASICプログラムは消去される)
ジッコウ:プログラムの実行を行います
ステツプ:シングルステップを行います
ヘンシユウ:プログラムの編集を行います
セ-ブ:データをテープにセーブします(ナマエはカナ文字か英字で4文字以内、2文字目からは数字、記号の使用可)
ロ-ド:データをテープにロードします(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)
カクニン:テープにセーブしたデータの確認を行います(ナマエを忘れた場合、名前の入力でオシエテと入力してロードすると表示される)
EMENU:不明
EBASIC:不明
テレホン:不明
EDIT:不明
DEBUG:不明
ソノタ1:不明
他のモードに変えるとカクニンの使用不可

Enri's HP
http://www43.tok2.com/home/cmpslv/



























■プログラム
プログラムの制限
行番号は1~9999までで行番号のすぐ後はスペースを1文字の空白が必要になります
1つの命令文の長さは行番号+空白を含めて31文字までです
プログラムの行数は約100ステップです
扱える数値
0~65535の整数
演算結果が65535を超えると0から加算された値として表示されます
演算結果表示
655360
655371
655382
演算結果が0よりも小さくなった場合は、65535から順次減算されます
演算結果表示
-165535
-265534
-365533
-32768~+32767の負の数
演算結果が+32767を超えると-327678から1つずつ加算された値として表示されます
演算結果表示
32768-32768
32769-32767
32770-32766
また演算結果が-32768より小さくなった場合は+32767から1つずつ減算された値として表示されます
演算結果表示
-3276932767
-3277032766
-3277132765
正と負のまたがる場合は加減計算しかできません
演算結果に少数点を含む数値は少数点以下は切り捨てになります
定数と変数
数値定数0~65535の整数
文字定数8文字
変数名最大4桁(アルファベット、2文字目以降は数字の使用可)
文字定数は最後に$をつける
1つのプログラムで数値変数と文字変数で同じ名前は使えません
AとA$、ABとAB$等の使用不可
1つのプログラムの中で使用出来る変数の数は最大47個までです
演算の優先順位
1:*と/
2:+と-
 BASICの命令
行番号シキ変数=定数
変数

代入を行います
シキの文字はタイプインの時は省略可ただしリストを取るとシキの文字は出現する)
行番号カケセル番号,定数
変数
文字定数
画面に文字を書きます
セル番号は1~761(範囲外だと表示されません)
数値の範囲は2種類あります
0~65535の範囲の場合カケセル番号,変数
-32768~+32767の範囲の場合カケセル番号,+変数
セル番号対応図
行番号オワリ
プログラムの宣言終了でモニターへ飛びます
行番号行番号ニイケ
指定した行番号に飛びます
行番号マワレ”トジル”の行番号変数=初期値カラ最終値[カンカク[間隔値]

行番号トジル
変数に初期値から最終値までの間の値を間隔値ごとにきざんで代入を行います
マワレの文からトジルの文にはさまれたプログラムが数値の値が変わるたびに繰り返し実行されまsy
マワレの後には必ずトジル文の行番号が必要
初期値、最終値、間隔値には1~65535の整数のみ変数の使用不可
カンカクを省略すると間隔値は1になる
行番号モシ条件式ナラバ行番号ニイケ
条件式判断を行います
値が指定した条件を満たす場合はナラバの後の>行番号に飛びます
値が指定した条件を満たさない合は次の行番号に行きます
条件式に使われる関係演算子
等しい=
より小さい<
より大きい>
小さいか等しい<=
大きいか等しい>=
等しくない<>
行番号トマレ
プログラムの実行が一時停止されます
実行を続行させる場合はRTキーを押します
行番号行番号ヲヨベ
サブルーチンを呼びます
行番号カエレ
サブルーチンから帰ります
行番号タイマ番号オン
タイマーの使用を行います
タイマの番号は1~7で7つのタイマがあります
タイマーは0.01秒~40秒の0.01秒ごとカウントです
またタイマーは条件式判断文でチェック出来ます
モシタイマ番号=条件式ナラバ行番号ニイケ
ただし一度条件式判断文でチェックを行い条件式を満たした場合
タイマーは0になり再びカウントされます
行番号オト種類
種類
イチオンピッという音(一般キーのタイプの音)
ニオンブッという音(エラーの音)
サンオンピロンという音(メニューでRTキーを押したときの音)
シオンバーンという音
4種類の音が出力出来ますが続けて実行すると最後に指定した音しか出ません
行番号変数=ランスウ(n)
n=最大値1~65535(ただし768を超えると上の方に偏る傾向があります)
0~最大値の乱数を発生します
行番号アフレオン
演算結果でオーバーフローを起こしたときにプログラムを停止させRTキーを押すとモニターへ飛びます
行番号アフレオフ
演算結果でオーバーフローを起こしてもプログラムは停止ないようにします
演算結果で-32768~+32767の範囲(負と正にまたがる計算)では
アフレオンだと邪魔になるのでアフレオフを使用します
G-BASICの最初はアフレオフの状態になります
行番号セル(n)=セル(m)
セル番号mをセル番号nの絵柄にコピーします
n、mは定数、変数、式
行番号アニメn=イチ(y,x)
n=1~4アニメの番号
y=Y座標1~192(256を超えると256を引いた数値)
x=X座標1~256(256を超えると256を引いた数値)
アニメ(スプライト)の左上を指定した座標で表示します
表示範囲はY座標1~192、X座標1~256ですが
アニメを表示したくない場合がY座標を200辺りにする
変数=ヨコ(アニメn)
n=1~4アニメの番号
アニメ(スプライト)の位置(X座標)を調べます
変数=タテ(アニメn)
n=1~4アニメの番号
アニメ(スプライト)の位置(X座標)を調べます
行番号キイn変数1,変数2
n1=コントローラ1
2=コントローラ2
変数1方向キーの状態
0=何も押されていない
1=上
2=右上
3=右
4=右下
5=下
6=左下
7=左
8=左上
変数2シュートキーの常態
0=何も押されてない
1=LEFT
2=RIGHT
コントローラの状態を変数1と変数2に送ります
コントローラは特定のキーを押したのと同じになります
CPU
CPUはTI社のTMS9995を使用クロックは10.738MHz(内部2.6845MHz)
このクロックはVDPと共用で使われています
システムROMCRC:7553bb6a
256KBitマスクROMみたいです。(実際に256KBitとして読む事ができます。)
I/O周辺
CMT-IFはトーンバースト方式です
キーボード、コントローラ周り
CRUINでシリアルでキーデータを読み込んでいます
J-2はキーボード、J-3はコントローラ端子になりキーボードとデータが重なります
A9~A11で読むデータのセレクト(/Y0~/Y7)
A12~A14で読むビットのセレクトになります
キーマトリクス
コントローラTP1101
PSG
SN76489を使用、クロックはVDPから出力されるCPUCLK3.7597MHz
VDP
TMS9918を使用、CPUCLK端子はPSGのクロックに使用しています。
コネクタ
端子名は、とりあえずつけてみただけです
J-1はカートリッジ端子(偶数が前)
C-1は背面にある拡張端子(奇数が上)
J-2はカセットIF
/KILLSROMを0にすると本体内のシステムROMの使用禁止
SELEXM1=拡張メモリを選択
0=本体、カードリッジメモリ、I/Oを選択
/EXM00拡張メモリ>0000->3FFF
/EXM40拡張メモリ>4000->7FFF
/EXM80拡張メモリ>8000->BFFF
/EXMC0拡張メモリ>C000->FFFF
/EXP0>E600->E7FFROM?E600:55のチェックあり
/EXP1>E800->E8FFプリンタ用I/Oポート
/EXP2>EA00->EBFF
/EXP3>EC00->EDFF???キーボードポート
/CROM0>8000->BFFFカートリッジメモリ
/CROM1>E400->E5FFカートリッジI/Oポート用?
/IOPORT1=>0000->BFFFアクセスもしくは外部メモリアクセス
0=>C000->FFFFアクセス(I/Oポート)
ゲームカートリッジ(64KBit)回路図
手持ちの全ての64KBitソフトはこうなっていました(初期のロットでは2732を2つ使っているのもあるそうです)
尚、ROMは64KBitのマスクです。(データバスとアドレスバスは通常のROMと同じ表記にしています)
メモリマップ
>0000リセット
WP=>F0A0にして>0254へジャンプします
>0004
WP=>F0A0にして>0254へジャンプします
>0008
WP=>F0A0にして>0254へジャンプします
>000C内蔵タイマベクタ
DATA>F0C0
DATA>16DA
>0010
DATA>F07A
DATA>095E
>0014
DATA>F0C0
DATA>055A
>0018CPURAM>F00C->F083のクリア
入力:WP=>EFEC
CPU内蔵RAM>F00C->F083を>00で埋めます
BLWP命令でコールします
>001CCPURAM>F00C->F081のクリア
入力:WP=>EFEC
CPU内蔵RAM>F00C->F081を>00で埋めます
BLWP命令でコールします
>0020VDP初期化
入力:R8=VDPデータアドレス
出力:R0=VDPステータス(Bit0-7)
使用:R9、R10、R11、R12
>F070Bit6
VDPのR#00-#08までの設定を行います
>0024VDPレジスタの設定
入力:R9=設定データ上位=データ、下位=レジスタ
出力:R0=VDPステータス(Bit0-7)
使用:R10、R11
>F070Bit6
VDPのレジスタの設定を行います
>0028VRAMオールクリア
出力:R0=VDPステータス(Bit0-7)
使用:R7、R8、R9、R10、R11、R13、R14
>F070Bit6
VRAM>0000->3FFFを>00で埋めます
>002CVRAMFILL
入力:R8=埋めるデータ(上位のみ)
R9=VRAM先頭アドレス
R7=長さ
出力:R0=VDPステータス(Bit0-7)
使用:R7、R11、R13、R14
>F070Bit6
VRAMにデータを埋めます
>0030VRAMアドレスの設定ライト
入力:R9=VRAMアドレス
使用:R11
>F070Bit6
書き込みを行う為のVRAM指定を行います
またR9は入力の値に直して返します
>0034VRAMアドレスの設定リード
入力:R7=VRAMアドレス
出力:>F074=VRAMアドレス
使用:R11
>F070Bit1=1
Bit6
読み込みを行う為のVRAM指定を行います
>0038VRAM1バイト書き込み
入力:R9=VRAMアドレス
R8=ライトデータ(上位のみ)
出力:>F074=VRAMアドレス+1
使用:R11、R14
>F070Bit6
RAMに1バイト書き込みを行います
>003CVRAM1バイト読み込み
入力:R9=VRAMアドレス
出力:R8=リードデータ(上位のみ)
>F074=VRAMアドレス+1
使用:R11、R14
>F070Bit6
VRAMに1バイト読み込みを行います
>0040キーデータからアスキーコードに変換
出力:>F0E9=アスキーコード
使用:R11、R12
キーデータ(>F0C2->F0C9)から
押されているキーをアスキーコードに変換
ただし、コントロールコードは下記のみ
RTキー>0D
上キー>F0
左キー>F1
下キー>F2
右キー>F3
MOD>F4
>0044コントローラの内容を読む
出力:R10=コントローラデータ
使用:R8、R9、R10、R11、R12
>F0EA->F0EB
>F0EC->F0ED
>F0C6と>F0C7を読み
コントローラデータに変換
>0048乱数発生
入力:R10=範囲
出力:R8=乱数
使用:R9、R10、R11
>F0D8->F0D9
>F0EA->F0EB
>F0C0->F0C1
乱数の発生を行います
>004Cメモリ転送
入力:R7=転送元アドレス
R8=Bit0-1コマンド
2-15長さ
R9=転送先アドレス
出力:R9=転送先最終アドレス+1
R7=転送元の最終アドレス+1
使用:R11、R12
>F074=VRAMアドレス
R8のコマンドで各メモリの転送を行います
00:メモリからメモリへ転送
01:メモリからVRAMへ転送
10:VRAMからメモリへ転送
11:VRAMからVRAMへ転送
>0050タイマnの選択またはタイマnのチェック
入力:R8=Bit0-2タイマn(n=0-7)
3-15チェックするタイマnカウントデータ下位のみ(0でタイマn指定)
出力:EQ=1チェックするカウンタ値未満
0チェックするカウンタ値以上
使用:R6、R7、R8、R11
>F080->F09E=タイマ0から7のうち1つ
>F0D6->F0D7=カウンタH
>F0D8->F0D9=カウンタL
タイマnをカウンタを利用してカウント、チェックします
このルーチンでは2種類の動作ができます
タイマnを選択:カウンタ0000でコール
タイマnに内蔵カウンタH、Lの値をコピー
EQ=1
タイマnのチェック:カウンタ0000以外でコール
カウンタがチェック値未満
R8=>0000
EQ=1
カウンタがチェック値以上
R8=カウントデータ
EQ=0
>0054左右反転のキャラクタ定義
入力:R8=定義するキャラクタアドレス
R9=定義するVRAMアドレス
R10Bit0=12×2キャラクタ定義
01×1キャラクタ定義
Bit1-7=0
Bit8-15=定義するキャラクタ数
使用:R5、R7、R8、R9、R10、R11、R12
>F070Bit6
キャラクタデータを左右反転して定義を行います
ただし1×2キャラクタ定義の場合
データアドレス+>102キャラクタ定義
データアドレス2キャラクタ定義の順になります
定義するキャラクタ数は1×1で1、2×2で1となります
>0058十進数表示F0F0
>005C十進数表示F0F4
>0060キャラクタの指定方向へ表示
入力:R7=パターン・ネーム・テーブルオフセットアドレス
R8=Bit0-2:方向
Bit3-7:長さ-1
Bit8-15:表示するキャラクタ
キャラクタを指定方向に表示します
R7の値は>1C00を引いた値になります
方向:000=上、001=右上、010=右、011=右下
100=下、101=左下、110=左、111=左上
>0064PSGオ-ルオフ
使用:R9、R11
>F0CA=PSGトラック0コマンド
>F0CB=PSGトラック0コマンド
>F0CC=PSGトラック0コマンド
>F0E2=PSGトラックデータアドレス
PSGの全チャンネルを音量オフにする為のデータを設定します
またPSGアクセス自体は別の処理(割込み)で行われます
>0068PSGトラック0セット
入力:R9=PSGトラック0データアドレス
出力:>F0CA=PSGトラック0コマンド>01
>F0E2=PSGトラック0データアドレス
使用:R11
PSGトラック0の演奏を行います
PSGコマンドは割込み内のルーチンでDECされます
>01PSGポート>E200に書き込み
>02->7F演奏する長さ
>00演奏終了開始
>FF->80演奏終了(DECされて>80で停止)
<例>演奏データ
BYTE>06;ポートに書き込むバイト数
BYTE>8A,>05,>90,>A1,>07,>B0;ポートに書き込むデータ
BYTE>4C;PSGコマンド

BYTE>02
BYTE>9F,>BF
BYTE>00
>006CPSGトラック1セット
入力:R9=PSGトラック1データアドレス
出力:>F0CB=PSGトラック1コマンド>01
>F0E4=PSGトラック1データアドレス
使用:R11
PSGトラック1の演奏を行います
>0070PSGトラック2セット
入力:R9=PSGトラック2データアドレス
出力:>F0CC=PSGトラック2コマンド>01
>F0E6=PSGトラック2データアドレス
使用:R11
PSGトラック2の演奏を行います
>0074レジスタVRAM退避
入力:R0~R12
出力:>F05C=スタック領域インデックス(+>0016)
レジスタの内容をVRAM内のスタック領域に退避します
>F060->F06B(R0、R6-R12)
>F0A2->F0AB(R1-R5)の順で退避
>0078レジスタVRAM復帰
出力:R0~R12
>F05C=スタック領域インデックス(->0016)
VRAM内のスタック領域からレジスタに復帰します
>F05C=>0000で復帰しようとすると>0014へジャンプ
>007CVRAMアクセスアドレスの取得
入力:R9=Bit0-3番号0-F
Bit4-15オフセットアドレス
出力:R9=VRAMアドレス
使用:R11、R12
まずR9の内容を番号と加算する値に分け
チェックする範囲外だと>0014へジャンプ
範囲内なら番号のチェックする先頭VRAMアドレス+R9(Bit4から15)がR9に入る
番号|チェックする範囲
--+--------------------------------------------
0|>1C00->1EFFVRAMアドレスパターン・ネーム・テーブル(セル)
1|>0000->07FFVRAMアドレスパターン・ジェネレータ・テーブルトップ
2|>0800->0FFFVRAMアドレスパターン・ジェネレータ・テーブルミドル
3|>1000->17FFVRAMアドレスパターン・ジェネレータ・テーブルロウ
4|>2000->27FFVRAMアドレスカラー・テーブルトップ
5|>2800->2FFFVRAMアドレスカラー・テーブルミドル
6|>3000->37FFVRAMアドレスカラー・テーブルロウ
7|>1F00->1F7FVRAMアドレススプライト属性テーブル
8|>1800->1BFFVRAMアドレススプライト・パターン・ジェネレータ・テーブル
9|>3800->3FFFVRAMアドレス
A|>1F80->1FFFVRAMアドレススタック領域、ワーク
B|>1880->1BFFVRAMアドレス
C|>1F10->1F7FVRAMアドレス
D|>3800->3FFFVRAMアドレスプログラム領域
E|>3800->3FFFVRAMアドレスプログラム領域
F|>F000->FFFFCPUアドレス
>0080VRAM連続読み込み
入力:R8=転送先アドレス
R9=>007Cパラメータ(転送元VRAMアドレス)
Bit0-3番号0-F
Bit4-15オフセットアドレス
R10=長さ
出力:R12=転送元VRAMアドレス+>1000
使用:R11
転送元アドレスにVRAMデータをメモリに転送します
>0084VRAMからメモリへの1バイト転送
入力:R7=転送先アドレス
R9=>007Cパラメータ(転送元VRAMアドレス)
使用:R11、R12
VRAMの内容1バイトをメモリに転送します
>0088
>008C
>0090
>0094
>0098
>009C
>00A0VRAM連続書き込み
入力:R8=転送先アドレス
R9=>007Cパラメータ(転送先VRAMアドレス)
Bit0-3番号0-F
Bit4-15オフセットアドレス
R10=長さ
出力:R12=転送元VRAMアドレス+>1000
使用:R11
転送元アドレスにあるデータをVRAMに転送します
ゲームカートリッジではキャラクタ定義に使用
>00A4
>00A8
>00AC
>00B0
>00B4スプライト座標の設定
入力:R8=設定する座標データのあるアドレス
R9=スプライトNo.nn(>00->1F)
使用:R11、R12
スプライト座標の書き込みを行います
>00B8
>00BC
>00C0スプライト番号からパラメータの取得
入力:R9=スプライトNo.nn(>00->1F)
出力:R9=>007Cパラメータ番号、オフセット
R10=>0001(転送する為の長さ)
使用:R11
スプライト番号から>007Cのパラメータに変換を行います
R10は>00B4で使用するためのデータになります
>00C4アドレス計算
>00C8アドレス計算
>00CCVRAMコピー
>00D0タイマnスタート
>00D4タイマnチェック
>00D8乱数セット
出力:>F06A=乱数データ
使用:R11、R12
>F06Aに乱数値を置きます
>00DC十進数表示
入力:R9=Bit0-2未使用
Bit31=>F0F4を表示、0=>F0F0を表示
Bit4-5未使用?
Bit6-10Y座標
Bit11-15X座標
R10=Bit0-2???
Bit3-5???
十進数を表示します
十六進数から十進数には変換はしていないのと
事前にキャラクタ定義をする必要があります
>00E0
>00E4データを反転してキャラクタ定義
>00E8VRAMFILL
入力:R8=埋めるデータ(上位のみ)
R9=>007Cパラメータ(転送先VRAMアドレス)
Bit0-3番号0-F
Bit4-15オフセットアドレス
R10=長さ
出力:R0=VDPステータス(Bit0-7)
使用:R11、R13、R14
>F070Bit6
VRAMをR8のデータで埋めます
>00ECVRAM>00FILL
入力:R9=>007Cパラメータ(転送先VRAMアドレス)
Bit0-3番号0-F
Bit4-15オフセットアドレス
R10=長さ
出力:R0=VDPステータス(Bit0-7)
使用:R11、R13、R14
>F070Bit6
VRAMを>00で埋めます
>00F0コントローラ入力
入力:R7=>0000コントローラ1
>0001コントローラ2
出力:何か押された場合
R8=Bit00
Bit10
Bit20
Bit30
Bit40
Bit50
Bit6SLキー
Bit7SRキー
Bit80
Bit90
Bit100
Bit110
Bit120
Bit130
Bit140
Bit151=入力あり、0=入力なし
R9=Bit00
Bit10
Bit20
Bit30
Bit40
Bit50
Bit60
Bit71=方向キー入力あり、0=方向キー入力なし
Bit80
Bit90
Bit100
Bit110
Bit120
Bit130
Bit140
Bit151=シュートキー入力あり、0=シュートキー入力なし
R10=方向キー番号
0=上
1=右上
2=右
3=右下
4=下
5=左下
6=左
7=左上
コールした次のアドレスに戻る
何も押されない場合
なし
コールした次のアドレス+4に戻る
使用:R11、R12
割込みで得たキーデータを元に入力データに変換します
BL@>00F0でコールして次の2つのアドレスに分岐されます
<例>
BL@>00F0;コントローラ入力
B@TRUE;何か押された
B@FAIL;何も押されていない

>00F4
>00F8
>00FC指定範囲内の表示
入力:R8=表示するデータアドレス
R9=>007Cパラメータ(転送元VRAMアドレス)
Bit0-3番号0-F
Bit4-15オフセットアドレス
R10上位=表示する縦範囲
R10下位=表示する横範囲
使用:R11、R12
R9で指定した場所から縦×横のメッセージを表示を行います
ゲームのタイトル(スクランブル)に使用されています
>0100
>0104
>0108
>010CDRAW
入力:R8=DRAWキャラクタアドレス
R9=>007Cパラメータ(転送元VRAMアドレス)
Bit0-3番号0
Bit4-15オフセットアドレス
R10=DRAWデータアドレス
使用:R11
>F056=R11退避用
設定したオフセット座標にDRAWキャラクタを書きます
ゲームのタイトル描画(フロッガー等)に使用
DRAWデータはデータの長さ、オフセット座標、オフセット座標...となります
<例>
LIR8,>DRAWCHR
LIR9,>0100;パターン・ネーム・テーブル>1D00
LIR10,>DRAWDATA
DRAWCHR:
BYTE>FF;CHR>FFで書く
DRAWDATA:
BYTE>03;オフセット座標3バイト
BYTE>00;一番左上>1D00に書く
BYTE>20;一番左上から下>1D20に書く
BYTE>01;一番左上から+1>1D01に書く
>0110
>0114
>0118
>011Cレジスタ退避
出力:>F062->F063=R6の内容
>F064->F065=R7の内容
>F066->F067=R8の内容
>F068->F069=R9の内容
>F06A->F06B=R10の内容
>F06C->F06D=R12の内容
使用:>F060->F061=レジスタ退避用(R0)
R11
レジスタ退避を行います
>0120レジスタ復帰
出力:R0=>F060->F061の内容
R6=>F062->F063の内容
R7=>F064->F065の内容
R8=>F066->F067の内容
R9=>F068->F069の内容
R10=>F06A->F06Bの内容
R11=>F06C->F06Dの内容
使用:R11、R12
レジスタ復帰を行います
>0124
>0128
>012C
>0130
>0134
>0138S.E.0
>013CS.E.1
>0140
>0144
>0148
>014C
>0150
>0154
>0158
>015C
>0160
>0164クリアワークメモリ
>0168
>016CPSGトラック0演奏終了のチェック
出力:Zf=1演奏終了
0演奏中
使用:R11、R12
>F0CA=PSGトラック0コマンド
PSGトラック0の演奏が終わったかチェック(PSGコマンド>80)を行います
>0170PSGトラック1演奏終了のチェック
出力:Zf=1演奏終了
0演奏中
使用:R11、R12
>F0CB=PSGトラック1コマンド
PSGトラック1の演奏が終わったかチェック(PSGコマンド>80)を行います
>0174PSGトラック2演奏終了のチェック
出力:Zf=1演奏終了
0演奏中
使用:R11、R12
>F0CC=PSGトラック2コマンド
PSGトラック2の演奏が終わったかチェック(PSGコマンド>80)を行います
>0178VRAM2バイト書き込み
入力:R8上位=第1バイトライトデータ
R8下位=第2バイトライトデータ
R9=VRAMアドレス
出力:>F074=VRAMアドレス+2
使用:R11、R14
>F070Bit6
VRAMに2バイトデータを書き込みます
>017CVRAM2バイト読み込み
入力:R9=VRAMアドレス
出力:R8上位=第1バイトリードデータ
R8下位=第2バイトリードデータ
>F074=VRAMアドレス+2
使用:R11、R14
>F070Bit6
VRAMに2バイト読み込みを行います
>0180
>0184
>0188ソフトウェアディレイ
入力:R13=ディレイ数
使用:R11、R12
ソフトウェアデイレイをかけます
>018CオフセットアドレスからスプライトX、Yに変換
入力:R8=パターン・ネーム・テーブルオフセットアドレス
出力:R8上位=スプライトY
R8下位=スプライトX
使用:R8、R11、R13
パターン・ネーム・テーブルオフセットアドレスから
スプライト属性テーブルで使用するX、Yに変換します
システムではカーソル表示に使用
>0190本体内蔵フォントアドレスの取得
出力:R8
使用:R11
本体内にある文字フォントがあるアドレスを取得(定義はしない)
ゲームで内蔵フォントを使用する場合に使用
CHR$00-$0F記号
CHR$10-$1F数字
CHR$20-$3F英字
CHR$40-$6Fカナ
>0190
>0194VRAM8バイト書き込み
入力:R7=データアドレス
R9=VRAMアドレス
出力:R8=>0000
使用:R8、R10、R11
8バイトのデータをVRAMに書き込みを行います
>0198VDPの初期化
>019Cセルの初期化
>01A0
>01A4
>01A8
>01AC
>01B0
>01B4
>01B8
>01BC
>01C0MAGスプライトの拡大
入力:R12=>0000拡大しない
>0001拡大する
使用:R11、R12、R13
>F06F
スプライトの拡大の有無の設定
>01C4
>01C8
>01CC
>01D0
>01D4
>01D8
>01DC
>01E0
>01E4X、Y座標からオフセットアドレスに変換
入力:R12=X座標
R13=Y座標
出力:R8=オフセットアドレス
R13=Y座標の左端のオフセットアドレス
使用:R8、R11、R13
座標からパターン・ネーム・テーブル用のオフセットアドレスに変換を行います
>01E8
>01EC
>01F0
>01F4
>01F8十進ワークのクリア
入力:R12=>0000>F0F0->F0F2をクリア
>0001>F0F4->F0F6をクリア
>0002>F0F0->F0F2、>F0F4->F0F6をクリア
使用:R11、R13
十進数表示用のワークをクリアします
>01FCカラー設定
入力:R9=カラー(VDPR#07データ)
使用:R0、R11、R12、R13
カラー(VDPR#07)の設定
>0200
>0204
>0208
>020C
>0210
>0214
>02182倍拡大文字の定義
入力:R9=定義するCHRVRAMアドレス
R10=拡大したいCHRデータ
出力:R9=定義するCHRVRAMアドレス+>20(+4キャラクタ)
使用:R0
8×8ドット文字を2倍の16×16ドット文字に変換して
キャラクタ定義にします(4キャラクタ分消費される)
>021Cキー入力チェック
入力:R6=チェックするキー(上位のみアスキー)
使用:R11
>F0E9
チェックしたいキー入力があるか調べます
チェックしたいキーが押されれば、コールした次のアドレスに戻る
何も押されなければ、コールした次のアドレス+2に戻る
また通常キー入力はカナ文字となるので注意が必要
<例>
CLRR6;チェックするキーは>00なので何か押されたかとなる
BL@>021C;キー入力チェック
JMP@ANYKEY;何かキーが押された処理へ
JMP@NOKEY;キーが押されていない処理へ
>0220RTキー入力チェック
使用:R11
>F0E9
RTキー入力があるか調べます
RTキーが押されれば、コールした次のアドレスに戻る
何も押されなければ、コールした次のアドレス+2に戻る
<例>
BL@>0220;RTキー入力チェック
JMP@RTKEY;RTキーが押された処理へ
JMP@NORTKEY;RTキーが押されていない処理へ
>0224
>0228
>022Cプレイヤー人数の選択
入力:R10=>0000
出力:>F0E8=>001人用
>012人用
1または2キーが押された場合
>F0E8に人数-1をセット、コールした次のアドレスに戻る
何も押されていない場合
コールした次のアドレス+2に戻る
使用:R1、R11
’プレイヤー1,2?’を表示して
1キーか2キーが押されたかチェックを行います
メッセージを表示するので事前にキャラクタ定義する必要があります
>0230カーソル表示
入力:R4上位=スプライト属性テーブルデータスプライト#nn
R4下位=スプライト属性テーブルデータカラー
R5=スプライト属性テーブルアドレス
使用:R0、R11
タイマー0
>F0E0=カーソルオフセットアドレス
>F0F3Bit01=カーソルオフ、0=カーソルオン
タイマー0を用いてカーソルの点滅を行います
カーソルはスプライトで表示され
F0F3Bit0=1入力パラメータR4のカラーで表示(通常は>00の透明)
0白で表示
カラーの有無で点滅を行います
>0234VRAMにデータ列の書き込み(メッセージの表示)
入力:R7=表示するデータアドレス
R9=Bit0長さ
Bit1長さ
Bit2長さ
Bit3長さ
Bit4長さ
Bit5VRAMアドレスA5(残りのA0-A4は0になる)
Bit6VRAMアドレスA6
Bit7VRAMアドレスA7
Bit8VRAMアドレスA8
Bit9VRAMアドレスA9
Bit10VRAMアドレスA10
Bit11VRAMアドレスA11
Bit12VRAMアドレスA12
Bit13VRAMアドレスA13
Bit14VRAMアドレスA14
Bit15VRAMアドレスA15
使用:R0、R9、R12
>F074=VRAMアドレス
VRAMにデータ列の書き込みを行います
主に画面に文字列の表示で使用
>5000->7FFF:メモリ未使用
>8000->BFFF:メモリROMカートリッジまたは拡張RAM
>8000->8002:ここに>1578を書き込んでチェックしている
書き込みが出来たらF06EBit5=0
また>5581のチェックもある
>0238
>023Cラインインプット
>0240
>0244
>0248
>024C
>0250
>C000->DFFF:メモリ???拡張ROM
>E000:I/OVDPデータ
>E002:I/OVDPレジスタ
>E200:I/OSN76489
>E400->E5FF:/CSGROM1カードリッジ拡張用
>E600->E6FF:/EXP0メニユー行く前に、E600に>55があるとE600にジャンプ
>E800->E8FF:/EXP1プリンタ
>EA00->EAFF:/EXP2
>EC00->EC7E:I/OKEYBORADSELECT
>EC00->EC0F:キーライン012QWASZXの選択A15は無視、1バイトで1つのキー
>EC10->EC1F:キーライン134ERDFCVの選択押した判断はCRUで読む
>EC20->EC2F:キーライン256TYGHBNの選択
>EC30->EC3F:キーライン3789UIJKMの選択
>EC40->EC4F:キーライン40-OPL;.,の選択
>EC50->EC5F:キーライン5¥@:ム/ロの選択
>EC60->EC6F:キーライン6英記モRTMOの選択
>EC70->EC7F:キーライン7左上下右の選択
>EE00:I/OCMTOUT’0’
>EE20:I/OCMTOUT’1’
>EE40:I/OCMTOUTInterruptOn
>EE60:I/OCMTOUTInterruptOff
>EE80:I/OCMTOUTInterruptRESET
>EEA0:I/OKB/CMTLS74のF.Fリセット
>EEC0:拡張用?
>EEE0:拡張用音響カプラ?
>EFEC->EFED:*初期化R0
>EFEE->EFEF:*初期化R1
>EFF0->EFF1:*初期化R2
>EFF2->EFF3:*初期化R3
>EFF4->EFF5:*初期化R4
>EFF6->EFF7:*初期化R5
>EFF8->EFF9:*初期化R6
>EFFA->EFFB:*初期化R7
>EFFC->EFFD:*初期化R8
>EFFE->EFFF:*初期化R9
>F000->F001:初期化R10、VRAM>1FF0、>1FF1の内容
>F002->F003:初期化R11、VRAM>1FF2、>1FF3の内容
>F004->F005:初期化R12、VRAM>1FF4、>1FF5の内容
>0000=GRAPHIC背景内
>FFFF=GRAPHICパレット内
>F006->F007:初期化R13、VRAM>1FF6、>1FF7の内容
パレット内カーソルオフセットアドレス
>F008->F009:初期化R14、VRAM>1FF8、>1FF9の内容
>0000=GRAPHICパレット下部に表示
>FFFF=GRAPHICパレット上部に表示
>F00A->F00B:初期化R15、VRAM>1FFA、>1FFBの内容
>F00C->F00D:VRAM>1FFC、>1FFDの内容
>F00E->F00F:VRAM>1FFE、>1FFFの内容
>F010->F011:GRAPHICスペースキーを押した回数
>F012->F013:GRAPHICMODキーを押した回数
>F014->F015:アニメ4位置オフセット
>F016:アニメ4スプライト#nn
>F017:アニメ4カラー
>F018->F019:アニメ3位置オフセット
>F01A:アニメ3スプライト#nn
>F01B:アニメ3カラー
>F01C->F01D:アニメ2位置オフセット
>F01E:アニメ2スプライト#nn
>F01F:アニメ2カラー
>F020->F021:アニメ1位置オフセット
>F022:アニメ1スプライト#nn
>F023:アニメ1カラー
>F024:GRAPHICカーソル方向
>F030:GRAPHICパレット内セル番号万の桁(アスキーコード未使用)
>F031:GRAPHICパレット内セル番号千の桁(アスキーコード未使用)
>F032:GRAPHICパレット内セル番号百の桁(アスキーコード)
>F033:GRAPHICパレット内セル番号十の桁(アスキーコード)
>F034:GRAPHICパレット内セル番号一の桁(アスキーコード)
>F05A->F05B:R11退避用
>F05C->F05D:VRAMスタックインデックス
>F05E
Bit0
Bit1
Bit2
Bit3
Bit5不明拡張ハード?1=接続していない?、0=接続している?
Bit6
Bit7
>F062->F063R6退避用
>F064->F065R7退避用
>F066->F067R8退避用
>F068->F069R9退避用
>F06A->F06BR10退避用
>F06C->F06DR12退避用
>F06E:メニューモード
Bit0拡張RAM1=あり、0=なし
Bit1
Bit2メニューモード1=オン、0=オフ
Bit3拡張BASIC1=あり、0=なし
Bit4カードリッジ1=あり、0=なし
Bit5カードリッジID1=>66、0=>55
Bit6G-BASICモード1=オン、0=オフ
Bit7GRAPHICモード1=オン、0=オフ
拡張用はカードリッジID>AAで>5000を実行
ID>66で>8002を実行
ID>55で>8002を実行(ゲームカードリッジ)
>F06F:VDPR#01データ+アルファ
Bit04/16K
Bit1BLANK
Bit2IE
Bit3不明通常は0
Bit4不明通常は0
Bit6SIZE
Bit7MAG
>F070:
Bit0GRAPHIC、BASIC1=オン、0=オフ
Bit1ファイル名入力1=オン、0=オフ
Bit2M3
Bit3
Bit4
Bit5
Bit6VDPアクセス1=アクセス中、0=アクセスしていない
Bit7
Bit0
Bit11=INT4サブルーチンを実行する、0=INT4サブルーチンを実行しない
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
>F072:
Bit0
Bit11=G-BASIC、0=GRAPHIC
Bit2
Bit3
Bit41=システム実行、0=カードリッジ実行
Bit51=EMEM実行可、0=EMEM実行不可
Bit61=EBAS実行可、0=EBAS実行不可
Bit7
Bit8
Bit9
Bit10
Bit11
Bit12
Bit13
Bit14
Bit15
>F076->F077:PSGR11
>F078->F079:PSGR12
>F07A->F07B:INT4R0、PSGR13
>F07C->F07D:INT4R1、PSGR14PSGコマンドアドレス
>F07E->F07F:INT4R2、PSGR15PSGデータアドレス
>F080->F081:INT4R3、タイマ0H
>F082->F083:INT4R4、タイマ0L
>F084->F085:INT4R5、タイマ1H
>F086->F087:INT4R6、タイマ1L
>F088->F089:INT4R7、タイマ2H
>F08A->F08B:INT4R8、タイマ2L
>F08C->F08D:INT4R9、タイマ3H
>F08E->F08F:INT4R10、タイマ3L
>F090->F091:INT4R11、タイマ4H
>F092->F093:INT4R12、タイマ4L
>F094->F095:INT4R13、タイマ5H
>F096->F097:INT4R14、タイマ5L
>F098->F099:INT4R15、タイマ6H
>F09A->F09B:タイマ6L
>F09C->F09D:タイマ7H
>F09E->F09F:タイマ7L
>F0A0->F0A1:R0
>F0A2->F0A3:R1
>F0A4->F0A5:R2
>F0A6->F0A7:R3
>F0A8->F0A9:R4
>F0AA->F0AB:R5
>F0AC->F0AD:R6
>F0AE->F0AF:R7
>F0B0->F0B1:R8
>F0B2->F0B3:R9
>F0B4->F0B5:R10
>F0B6->F0B7:R11
>F0B8->F0B9:R12
>F0BA->F0BB:R13
>F0BC->F0BD:R14
>F0BE->F0BF:R15
>F0C0->F0C1:タイマ割込みR0G-BAISC>0420、EBAS>05E0
Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
Bit8
Bit9
Bit10
Bit11
Bit12
Bit13
Bit14
Bit15
>F0C2->F0C3:タイマ割込みR1キーデータ1、0
>F0C4->F0C5:タイマ割込みR2キーデータ3、2
>F0C6->F0C7:タイマ割込みR3キーデータ5、4
>F0C8->F0C9:タイマ割込みR4キーデータ7、6
>F0CA->F0CB:タイマ割込みR5PSGトラック0、1コマンド
>F0CC->F0CD:タイマ割込みR6PSGトラック2コマンド
>F0CE->F0CF:タイマ割込みR7
>F0D0->F0D1:タイマ割込みR8
>F0D2->F0D3:タイマ割込みR9
>F0D4->F0D5:タイマ割込みR10
>F0D6->F0D7:タイマ割込みR11カウンタH
>F0D8->F0D9:タイマ割込みR12カウンタL割込み毎で+1、>2EE0でカウンタH+1
>F0DA->F0DB:タイマ割込みR13
>F0DC->F0DD:タイマ割込みR14
>F0DE->F0DF:タイマ割込みR15
>F0E0->F0E1:カーソル位置オフセットアドレス
>F0E2->F0E3:PSGトラック0データアドレス
>F0E4->F0E5:PSGトラック1データアドレス
>F0E6->F0E7:PSGトラック2データアドレス
>F0E8:ゲームプレイ人数>00=一人用、>01=二人用
>F0E9:キーデータ変換アスキーコード
>F0EA:コントローラ1
Bit01=入力あり、0=入力なし
Bit1-
Bit2SL1=オン、0=オフ
Bit3SR1=オン、0=オフ
Bit4下1=オン、0=オフ
Bit5左1=オン、0=オフ
Bit6上1=オン、0=オフ
Bit7右1=オン、0=オフ
>F0EB:コントローラ2
Bit01=入力あり、0=入力なし
Bit1-
Bit2SL1=オン、0=オフ
Bit3SR1=オン、0=オフ
Bit4下1=オン、0=オフ
Bit5左1=オン、0=オフ
Bit6上1=オン、0=オフ
Bit7右1=オン、0=オフ
>F0EC->F0ED:汎用
>F0EE->F0EF:十進数表示用VRAMアドレス
>F0F0:十進数A千、百の桁
>F0F1:十進数A十、一の桁
>F0F2:十進数A十万、万の桁
>F0F3:
Bit01=カーソルオフ、0=カーソルオン
Bit11=キーが押された、0=キーが離された
Bit2
Bit3
Bit4
Bit51=カードリッジまたはシステムを実行、0=実行していない
Bit61=タイマ割込みサブルーチンを実行しない、0=タイマ割込みサブルーチンを実行する
Bit71=拡張ハードでキー入力可、0=拡張ハードでキー入力不可
>F0F4:十進数B千、百の桁
>F0F5:十進数B十、一の桁
>F0F6:十進数B十万、万の桁
>F0F7:キー入力モード
Bit0
Bit1
Bit2
Bit3
Bit4
Bit51=記号モードオン、0=記号モードオフ
Bit61=英数モードオン、0=英数モードオフ
Bit71=カナモードオン、0=カナモードオフ
>F0F8:十進数表示ワーク千、百の桁
>F0F9:十進数表示ワーク十、一の桁
>F0FA:十進数表示ワーク十万、万の桁
>FFFA->FFFB:CPU内蔵タイマ
>FFFC->FFFF:CPUNMIベクトル
>8000に>55があれば(ゲームROMの先頭)
メニューでゲームカートリッジの選択が出来る様になります
選択すると>8002へジャンプします
>8000に>66の場合
メニューでゲームカートリッジの選択が出来る様になります
選択すると>8002へジャンプします
>8000に>AAの場合
>F06EのBit3=1にして>5000にジャンプします
起動時に>8000に書き込みが出来るかチェックを行っているが
通常のシステムが拡張RAMにも対応可なのかは不明
VRAM
>0000->07FFパターンジェネレータトップ
>0800->0FFFパターンジェネレータミドル
>1000->17FFパターンジェネレータロウ
>1800->187Fスプライトパターン
>1880->1883???カーソルワーク
>1C00->1CFFパターン・ネーム・テーブルトップ
>1D00->1DFFパターン・ネーム・テーブルミドル
>1E00->1FFFパターン・ネーム・テーブルロウ
>2000->27FFカラー・テーブルトップ
>2800->2FFFカラー・テーブルミドル
>3000->37FFカラー・テーブルロウ
>3800->3F7FGRAPHICBGトップまたはロウ保存用(サンプルカラー、パレット)
G-BASICプログラム領域
>3F9C->3FBBキーバッファ
>3FBC>0Dキーバッファエンドマーク?
>3FDD->3FEAレジスタ保存用R0、R6-R10、R12
>3FF9->3FFEレジスタ保存用R13-R15

Enri's HP
http://www43.tok2.com/home/cmpslv/








1982年12月23日木曜日

[ゲーム][PCゲーム] TOMYぴゅう太,ゲームタイトル






ぴゅう太 
1982年10月発売
定価:59800円
ぴゅう太Jr.
1983年7月発売
定価:19800円
ぴゅう太 MKII
1984年発売
定価:29800円
販売元:トミー工業社
日本語Basicが使える16ビットマシンとして、当時とても話題となったマシン。この頃のマシンは、ゲーム機なのかパソコンなのかわからないというマシンが多かったのだが、その中の1機種である(笑)
ぴゅう太にしか移植されていないゲームがプレイしたくてしょうがなかったあの頃・・・。 でもそんなお金を持っていなかったあの頃・・・。
今こうして手元にあると、大人になったという気がしてなりません(逝)
アーケードゲームから移植されたソフトも有り、人気機種であったが、ゲームパソコン価格のため定価が高く、知名度があってもシェアを獲得するまでにはいかなかった。
後に『ぴゅう太』からキーボードを除いた廉価版である『ぴゅう太Jr』を発売。16ビットCPUを搭載して20000円以下という、 なかなか戦略的な価格で発売された。(機能も若干パワーアップしており、その機能を使っているソフトを初代ぴゅう太でプレイするためには、ゲームアタプタ が必要。)
しかし、ファミリーコンピュータの登場により、やがて姿を消して行く事となる。
ぴゅう太のカセットテープについての情報をお持ちの方いらっしゃいましたら、こちらまで連絡下さい。
ちなみに『ぴゅう太mkII』という、英語Basic(って普通ジャン(逝))を搭載したマシンも発売されたが、こちらもファミコンに敗れ去っている。

Nostalgia
http://aizuma.hp.infoseek.co.jp/









baseball/ベースボール
battle/バトルファイター
bamuda/バミューダ・トライアングル
bombman/ボンブマン
JUNGLER/ジャングラー
majyan/四人麻雀
marin/マリン
maze/メイズパトロール
mikky/ミッキーアスレチックランド
mission/ミッションアタック
monster/モンスターイン
tron/トロン
turpin/ターピン




テープ



DEMOカートリッジ







◆ROMカートリッジ
baseball/ベースボール
battle/バトルファイター
bamuda/バミューダ・トライアングル
bike/スーパーバイク
bombman/ボンブマン
donpan/ドンバン
frogger/フロッガー
gattan/ガッタンゴットン
JUNGLER/ジャングラー
majyan/四人麻雀
marin/マリン
maze/メイズパトロール
mikky/ミッキーアスレチックランド
mission/ミッションアタック
monster/モンスターイン
mrdo,Mr.DO!
mystry/ミステリーゴールド
night/ナイトフライト
pooyan/プーヤン
rescue/レスキューコプター
saurus/ザウルスランド
scramble/スクランブル
triple/トリプルコマンド
tron/トロン
turpin/ターピン
trafic/トラフィックジャム
◆DEMOカートリッジ
カジコジ/未発売
ジャック・イン・ザ・ボックス/DEMO
◆テープ
黒ヒゲ危機一髪
スロットマシン
富士山と新幹線
ムーンランディング
ネズミのチーズとりゲーム
gyakuten/一發逆転魚雷戦
UFOアタック
sansu/算数教室-数の学校

Nostalgia
http://aizuma.hp.infoseek.co.jp/











■ぴゅう太ラインナップ
時期番号 タイトル
初期01 ボンブマン
初期02 モンスターイン
初期03 ザウルスランド
初期04 ターピン
初期05 フロッガー
初期06 スクランブル
初期07 夜間飛行(仮称)
初期08 ターボ750
初期09 マリンアドベンチャー(仮称)
初期10 アスレチック
初期11 スペースターボ
初期12 ドンパン
中期01 ボンブマン
中期02 モンスターイン
中期03 ザウルスランド
中期04 ターピン
中期05 フロッガー
中期06 スクランブル
中期07 ナイトフライト
中期08 マリンアドベンチャー
中期09 ミッションアタック
中期10 トラフィックジャム
中期11 ミステリーゴールド
中期12 ドンパン
中期13 アスレチック
中期14 プーヤン
中期15 Mr.Do!
中期16 ガッタンゴットン
中期17 ジャングラー
中期18 タイムパイロット
中期19 ガジゴジ
中期20 バブルガムストリート
中期21 3-Dシューティング
中期22 ジャックインザボックス
中期23 3-Dメイズ
後期01 ボンブマン
後期02 モンスターイン
後期03 ザウルスランド
後期04 ターピン
後期05 フロッガー
後期06 スクランブル
後期07 ナイトフライト
後期08 マリンアドベンチャー
後期09 ミッションアタック
後期10 トラフィックジャム
後期11 ミステリーゴールド
後期12 ドンパン
後期13 ミッキーのアスレチックランド
後期14 プーヤン
後期15 ジャングラー
後期16 ガッタンゴットン
後期17 メイズパトロール
後期18 トロン
後期19 Mr.DO!
後期20 バミューダ・トライアングル
後期21 四人麻雀
後期22 トリプルコマンド
後期23 スーパーバイク
後期24 レスキューコプター
後期25 ベースボール
後期26 バトルファイター
後期27 ガジゴジ(未発売)
後期28 ジャック・イン・ザ・ボックス(未発売)






ROMカートリッジ
◆baseballベースボール
ボールがバウンドしたりするリアルな動きは確かにありますが、ゲームアタプタが無いとこのゲームが成り立たなかったたというのは、ちょっと・・・疑問ですね。
内容はとてもシンプル。操作性も問題無く、気になりません。普通の野球ゲームです。ただ若干、ボールが外野に飛んだときに切り替わる画面のスピードが気になりました。ちょっと遅いんですよね、切り替わるのが。
昔の野球ゲームだと、チームを選べても選手名が出ないから、ちょっと寂しいんですよね~。
あ、このゲーム、変化球の切れはものすごいものがありますよ(笑)
◆battleバトルファイター
奥行きを感じるSHT。低空、中空、高空の3画面に切り替わるのが特徴的ですが、これがやっかいです(逝)
敵と高さがあっていないと攻撃しても当たりません。ですから低空の敵には低空の位置でないと、 敵を倒す事が出来ません。スムーズにスクロールして位置を決められれば良いのですが、切り替え式なので戸惑います。敵の弾を避ける度に画面が変わるのは、 ちょっとプレイしずらいですね。
窓を開閉している基地を破壊すると、バリアーが得られます。バリアーがある間は、敵の攻撃を受けてもダメージを受けません。
このゲームはダメージ制で、3回以上攻撃を受けるとゲームオーバー。 ダメージを受けると、ダメージを受けた場所が表示され、動きが鈍くなります。
難易度は私にはとても高かったです。画面がちらつくせいで、プレイしらづいという話しも有りますが(逝)
あ、と敵の弾が速すぎ(笑)
初代ぴゅう太でプレイする場合には、ゲームアタプターが必要です。
◆bamuda/バミューダトライアングル
バミューダ海峡内仁ある要塞から現れる潜水艦などを攻撃して、その後出てくる三角形(つまりこれがトライアングルってことですな(逝))の形をした敵を撃破するとクリア。
小さい頃は、バミューダトライアングルって結構話題になっていたのですが、今は全然聞きませんねぇ。謎は解決したんでしょうか?(関係な逝)
敵の弾が妙に早くて、難易度が高いです。私はスピードが速いゲームは昔から駄目でしたので、ハッキリ言って1面もクリアできません(逝)
シューターの方には楽しめるゲームかも?
◆bombman/ボンブマン
壁の向こうから投げ込まれる爆弾を爆発する前に消すのが目的だが、何のために爆弾の不法投棄を認め、かつ爆弾を処理しなければならないのかが、甚だ疑問である(逝)
水をかけて消火するので、当然水は無くなっていきます。水がなくなった場合は、水道の所までいって水を溜めます。この水を溜めるシーンが妙に好きな私は変ですか?(逝)
動き自体が単調で、テンポも余り良くないため、あまりソフトの面白さを感じることはできないのが残念。
爆弾を消化できずにいるとキャラが小さくなり、お邪魔キャラが出てきて追いカケッコするアイデアは良いんですけどね~。
財宝が一個しかなく、出口が無いぴゅう太版の『ロードランナー』と例えれば良いかな(逝)
◆donpan/ドンパン
主人公はなんと風船! 少女の手から風船が離れたところからゲームはスタートします。最終ステージのある島にたどり着くと、王様になれるという、なんともメルヘンな設定です。
しかし良く考えてみると、意思を持った風船って・・・少女が手放してしまった風船は、実は魔物だったんです!ってことですか? しかも王様になる野望まで持っているんですよ!!(逝)
横スクロールのアクションゲームです。カラスなどの敵を倒すために弾を撃つのですが、これは自分の中に入っている空気を削って撃ち出す空気の弾なので、むやみに撃ち出しているとすぐに自分自身がしぼんでしまいます。ああ、悲しき風船の運命よ(逝)
しぼんでしまったら、同じ仲間の漂っている風船に触れると復活します。・・・風船の場合も共食いといって良いのかわかりませんが、そんな言葉がぴったりと当てはまります(逝)
メルヘンチックな内容なんですが、どうも釈然としないのは大人になってしまったからでしょうか?
◆frogger/フロッガー
車に轢かれないように、また川に落ちないようにうまく巣穴に帰るのが目的。たまに巣穴にとんぼがいる事があり、そこの穴に入るとボーナス。反対に、ワニが居る巣穴に入ると食べられてしまいます。
もともとがシンプルなゲームだったので、色々な機種に移植されていますね。移植度もかなり忠実で、ぴゅう太の中でも長時間楽しめるソフトだと思います。マジで面白いっすよ!
これまたアーケードから移植。上記記載の『フロッガー』と同じく、コナミ社製作。名作 『グラディウス』の基となったゲームである。対地・対空の概念があり、弾もちゃんと対地・対空の2つが発射される。岩場があるステージを抜け、敵基地へと 侵入していく展開は、スリルたっぷりでとても面白い。燃料切れにならないように、敵の給油タンクを破壊してエネルギー補給するというアイデアも光る。(オ リジナル通りですが(笑))
このゲームをプレイしたいがために、『ぴゅう太』を買った私は大満足のデキである。ちょっと簡単になっているところとかね(逝)
◆jungler/ジャングラー
シンプルな内容と画面構成ですので、あまり多受けしないようなゲームだと思われますが、これがなかなか面白いんですよ!
結構敵キャラも考えて自キャラを追ってきますので、なかなかスリリングな展開を楽しめます。
まあ、毎日プレイしてたらすぐ飽きると思いますが、忘れた頃にプレイするとハマリますよ(笑)
◆guttan/ガッタンゴットン
玩具で発売されていたた物をゲーム化したもの。今でも発売されているのかなぁ。
内容は単純で、走っている列車をマスを動かして脱線しないようにするのが目的。
『インテレビジョン』でも似たようなソフトがあるのですが、どちらも良く出来ています。この手のゲームは移植するのが簡単なのかもしれませんね。
お邪魔キャラの意地悪具合も大変良く、良い移植だと思います。
◆marin/マリンアドベンチャー
シューティングゲームになると思うのですが、あまりスリルも味わえないので・・・・。敵キャラに細かい思考パターンなどがあったら、もっと面白いゲームだったと思います。大タコが海底都市の入り口を守るステージなんかは、結構どきどきしながらプレイしたんですがねぇ。
えーと、このタコの顔を見ていると、なんとく私でもかけるような気がしてしまうというのは、言い過ぎでしょうか?(逝)
◆maze/メイズパトロール
私はハドソン社が出していたFM-7版の迷路ゲーム(『バクテリアエスケープ』だったかな?)をプレイして30分で止めた男ですので、あまりこの手のゲームを語るべきではないかもしれません(逝)
エアーの残量に気を付けながら、迷路内にいるエイリアンを倒して出口に向かうのが目的。ただし、出口のKEYナンバーとあっているKEYナンバーを迷路の中から探し出さないと脱出できません。
ちょっと見『イプシロン3』ぽい画面レイアウトは結構気に入っているのですが、距離感がつかみにくくてうまく曲がれなかったりします。
地図がいつでも見れるのはグットですね、しかも情報が細かく載っていますし。ただ消えるの早すぎ(笑)
まあ記憶力で何とかしろという事なんでしょうけど、数十分前の事でも平気で忘れる鶏頭の私には、結構酷であります(逝)
◆Mr Do
アーケードゲームからの移植。ぴゅう太以外では、スーパーファミコンで移植されるまでコンシューマ機に移植された事が無いはずなので、結構貴重なはず。(MSXにはあったかも。) 私にとっては『スクランブル』と共に、ぴゅう太が欲しかった理由の内の1本である。
『ディグダグ』を基にして作られたゲームですが、手本となるゲームをうまく取り入れたゲームとしては、このゲームは最高の部類に入ると私は思っています。
白いピエロのキャラを操作して、画面上にある全てのチェリーを食べる(食べるときの効果音もシンプルですけど、アクセントになっていてとても良いです)か、モンスターを全滅させるか、EXTRAの文字を揃えると面クリア。
とても、この中には書ききれないほどの要素がたくさん詰まっていて、しかも面白い!
もちろん、アーケード版と違う部分画はありますが(リンゴを割るとダイヤモンドが出てこないとか・・・。
ちなみにダイヤモンドが出ると1クレジット増えるのですが、コンシューマ機には必要無かったと考えて削られたのでしょう。)、ゲームの本質をきちんと移植できている素晴らしいゲームだと思います。
ぜひプレイしてみてください!
◆majyan/四人麻雀
定番の麻雀ソフトです。ちゃんと4人で打てるところが、16ビット機ですね(逝) じゃあファミコンは?という突っ込みは無しです(逝)
あまり麻雀をした事が無いので、ソフトの内容自体の評価はなんとも言えませんが、今プレイするとやはり思考ルーチンが遅いですね。まあ、これはハードの進化によるものですから、ソフトに責任はないでしょうね。
◆mission/ミッションアタック
ぴゅう太の性能を限界?まで使った擬似3Dシューティングゲーム。合計4つのステージ を進んでいくんですが、ちょっとスピード感に欠けますし、ステージ内容もそう変わり無いので、しばらくプレイすると飽きてしまいます。うーん、『ジッピー レース』の面クリアのシーンが続いている感じと書けば、ゲームのイメージが伝わるでしょうか?(笑)
左右になんとなく動いて弾を撃っていれば面クリができてしまうゲームバランスは、ちょっと頂けないと思います(逝)
でも昔は、感動したんですよね~>擬似3Dステージ。
『ペイントローラー』の亜流。すべての道路を青く塗っていくのが目的。英字が書いてあるパネルをB・O・N・U・Sの順に撮っていくと、読み方の通り高得点のボーナスとなるのは、『Mr.DO』のエキストラボーナスからヒントを得たのでしょうか?(笑)
って、誰でも思いつきますね(逝)
◆mikky/ミッキー
アスレチックランド
横スクロールのアクションゲームで、障害物競走だと思っていただければ、内容的には合っていると思います(逝)
ケムシやハチ、モグラなどにぶつからないようにステージ内を走り、時間内にゴールすればオッケーです。障害物にぶつかったり、橋から落ちたりするとロスタイムになってしまいます。
まずゲームのキモであるミッキーの動きが、実に可愛らしいです。そんなにキャラクターに動きは無いのですが、かがんだときなどは「可愛い!」とお子様に言わせるレベルには十分だと思います。
またスピード展開も思わず「ぴゅう太のゲームでも、ちゃんとゲームバランスとることできるじゃん!」と、よく考えればゲーム製作者に対して侮辱しているような台詞が出てきてしまうほど、スピードやバランスが良くとれています(逝)
◆mistery/ミステリーゴールド
『ディグダク』を基にして作られたと思われるゲーム。
『ディグダク』と違うのは、敵をやっつけられるいっぺんに倒せるアイテムとして、岩ではなく水を使っている事である。流れ出した水は、穴が空いている部分をザーと流れていきます。
敵の倒し方も空気入れ(笑)ではなく光線?を3発発射すると敵を倒せます。(1、2発目だとしびれている)しかし遠くから撃っても倒す事ができずにしびれるだけなので、なるべく近くで撃たなければ仕留められません。
また、宝箱を取っていくという点も違うのですが、(5つある宝箱のうち2つは敵が隠れているので、スリルを味わえ・・・・ません(逝)
はっきり言ってこのゲームは、あまり誉めるところが無い(逝)
まず戦略をとれない! 敵はランダムで動くしスピードも早過ぎるので、誘きよせようとする行為が無意味!
水を流して一斉に敵を倒す爽快感も味わえません。また『ディグダク』であれば、敵は最後の1匹になったら逃げるので追いかける楽しみも味わえますが、このゲームの目的は宝をゲットする事なので、全部宝を取らない限り敵キャラは出血大サービスで登場しますし(逝)
もうちょっとアイデアを生かして欲しかった1本ですね。
◆monster in/モンスターイン
モンスターの動きに特徴が無く、ただ単調にゲームが進んでいく。パズル性があるわけでもなく、穴を掘ってモンスターを埋めたところで、あまり喜びも感じられない。ワープゾーンもあるのだが、利用する必要がまるで無いのが悲しい(逝)
モンスターの卵を1回にある穴に入れれば良いのだが、入れたとしても何も変化しないのですぐに飽きてしまう。もうちょっとひねりを入れて欲しかったソフト内容である。
◆saurus/ザウルスランド
内容は、『もぐらたたき』ゲームで、穴の蚊から出てくるモグラを叩きまくります。お邪魔キャラとしてマンモスや恐竜が出てきます。このお邪魔キャラも斧で叩きのめすことができます。恐るべし原始人のパワー!(逝)
ただ火山が噴火したときだけは、さすがに自然にかなわないのか、逃げ回る事だけしかできません。ここら辺は変化があるシーンなので、なかなか良いです。
でもやっぱり、キャラの動きが単調でのろいので、しばらくプレイしていると飽きてしまいます。でも昔はこれでも面白かったんだよなぁ。
◆turpin/ターピン
アーケードからの移植。子亀を自宅(笑)まで無事に送る事が目的。ほんと、コナミ社は 昔から多機種展開をしていますね。ただ、この移植のデキは余り良くない・・・。画面がでかくなりすぎていのは、家庭用テレビを使っている以上、仕方が無い 事なんでしょうけど、スピードがあまりにも遅すぎ。『?』のマークに触れると、子亀かすっぽんが出てくるんですけど、スピードが遅いためにスリルが無く なっています。
という事で、完全移植ではないです、期待してはいけません・・・。結構好きなゲームだったんで、喜んで買ったんですけどねぇ(涙)
まあ昔のゲームの移植はこういうパターンが多かったんですので、問題無いのかも(逝)
◆night/ナイトフライト
『クイックス』の亜流。つまり陣取りゲームですな。だが難易度が高すぎで、面をクリアするのが難しい・・・私が下手なだけかもしれませんが。
お邪魔キャラである雷が妙に遅い行動をとるので、やられないように待機していときはイライラしてしょうがない(苦笑)
やっぱりこのゲームもコントローラーが使い辛いので、余計にゲームを面白くなくさせています。とくに線を引いているときに微妙な操作ができないのは、かなり致命的。
敵にやられたあと、パラシュートで降下する主人公キャラを操作して、画面を横切る飛行機でうまくキャッチできると1機減らないという救済処理は、とても親切で良いんですけどね~。
全3ステージ。深海魚とよくわからない不明な生物を撃ち、最終的には大タコが守る海底都市を進入できればオッケー。っていうか、進入したんであれば、そこからが本番のような気がするんですけど(逝)
入り口に侵入したら、また魚や不明生物を撃つだけのステージに戻ってしまう・・・では、あまりにもあっけないっす。
◆rescuレスキューコプター
奥行きはうまく表現されていますが、操作に若干慣れが必 要です。私だけかもしれませんが、ヘリを旋回させるのがどうもうまくいかず、一度停止してから旋回していました。スピードを出しているときに旋回すると、 ほとんど海に墜落しました。(SLモードならミスにはなりません。)
このゲームの醍醐味である救出シーンは、うまく表現できています。ちゃんと救命ボートに乗っている人が波に流されており、救出するときにはヘリをうまく操作しなければなりません。 ここら辺はリアリティがあってとても良いと思います。これでヘリの操作性が良ければねぇ(逝)
初代ぴゅう太でプレイする場合には、ゲームアタプターが必要になります。
◆superbike/スーパーバイク
1面がでこぼこしたコースなんですが、そのステージの雰囲気が『ムーンパトロール』ぽいゲームです(笑)
全部で4つのステージがありますが、最後のステージは炎が燃え上がっています! 本当にモトクロスの大会なのかと疑ってしまうのは、いけないことなんでしようか?(逝)
難易度がとても高くて、私はウイリーがうまく使えないために、先の面を見る事が出来ません・・・。
時間以内にステージをクリアしなければいけないのですが、ほとんど時間切れで終わる事はないです(逝)
『チョップリフター』の3D版と言えば、イメージが伝わりやすいかも。燃料が切れないようにしながら、海で遭難している人を救出するのが目的。燃料補給は、空母に帰還すると増やせます。◆scramble/スクランブル
ただ残念ながら、コントローラーが使い辛い。思ったような動きができないのが難点。ゲームの出来が良いだけに、操作で損をしているのがもったいない。
◆trafic/トラフィックジャム
このゲームの特徴としては、変身?でしょうか。普通はあるアイテムを取ると敵キャラに反撃する事ができるパターンが多いのですが、このゲームは変身できる特典が最初からついています。(ランダムに現れるオイルを取ると回数が増える)
ぴゅう太で発売されているゲームの中でも、割と遊べるゲームです。もうちょっとスピーディーだともっと良かったかも。◆poyan/プーヤン
個人的には気に入っている作品です。
アーケードゲームからの移植作品。あまりにも移植されすぎている作品ですので、説明が必要なのかどうか(笑)
狼にさらわれた子豚を救い出す感動的な設定なんですが、画面構成はメルヘンチックです。2つのステージ構成で、1つ目は狼が崖から降りてく るのを撃ち落とすシーン。2つ目は、狼が上へあがっていくのを撃ち落とすという内容です。こんな説明でもわかっていただけるでしょうか?(逝)
移植度は、ほぼ完璧でしょうか。細かいところを言えばありますが、とりあえずアーケードと違っていてデモがないのは寂しいですね。まあ容量などの問題もあったんだと思いますが。
しかし・・・私、どの機種でやっても『プーヤン』の2面に進めません(逝)
◆tron/トロン
当時、とても人気があった『トロン』を題材にしたゲーム。CGなんて言葉があまり知られていない頃に登場したこの映画はとても衝撃的でした。もう一回観たいけど、レンタル屋にもないしなぁ。
このゲーム、ぴゅう太の中ではダントツにスピード感を感じられます。しかも面白いです!
自機の動きが非常にインパクトありまして、なんと壁に沿って自機が動くんです。左右上下と、ぐるっと一回転するので、初めてプレイすると戸惑います。でも慣れてくると、このトリッキーな操作方法がたまらなくなってきます。
映画の設定などは知らなくても良いので(爆)、ぜひとも一回プレイして欲しいソフトです。
◆triple/トリプルコマンド
とりあえず、普通に遊べます。戦艦、戦車、戦闘機とステージ化進むごとにキャラが変わります。つまり陸海空の3ステージが舞台になっています。そーですね、ゲームの内容を一言言うと、『タイムパイロット』の自キャラが違う!だけっていうことでしょうか?(逝)
ステージが変わっても自キャラが変わっても、パターンに変化が全然ありません。向かってくる敵をひたすら撃つべし撃つべし!ってな具合です。しかもぐるぐる回転しながら弾を撃っていれば、90パーセント大丈夫です。ここら辺が『タイムパイロット』っぽいんですな。
ただゲーム内容が単純な分だけ、非常に熱中できます。いやホントに(笑)

Nostalgia
http://aizuma.hp.infoseek.co.jp/









デモカートリッジ
◆DEMO1/
カラーグラフィック
G-BASIC
カートリッジ
ぴゅう太の機能を説明したデモ用ソフト。こういうソフトがあるというのが、ぴゅう太の凄いところですね~。
『カラーグラフィック』、『G-BASIC』、『カートリッジ』の3種類の機能を説明する項目があります。
なんとゲームを紹介する項目『カートリッジ』まであるのですから、気合が入っています。

Nostalgia
http://aizuma.hp.infoseek.co.jp/