X1
HOME | 自作MSXゲーム | ものすごいヤツ | 百戦危うからず | MSXリンク | 正義の願い |
X1 |
X1X1メモリマップ ↓バンク切替↓ I/O 0000H ――――――― ―――――――― ――――――― IPL ROM 1000H ‐‐‐‐‐‐‐‐ 省略 IOCS BIOS ROM ‐‐‐‐‐‐‐4000H モニター BASICインタープリタ グラフィック VRAM(青) 8000H ‐‐‐‐‐‐‐ ―――――――― ‐‐‐‐‐‐‐8000H フリーエリア ‐‐‐‐‐‐‐←NEWONで指定 グラフィック テキスト・エリア VRAM(赤) ‐‐‐‐‐‐‐ BASICワーク・エリア ‐‐‐‐‐‐‐← から引く100H ‐‐‐‐‐‐‐C000H FAC領域 ↓ ‐‐‐‐‐‐‐←LIMITで指定 グラフィック マシン語用フリーエリア (又はCLEAR) VRAM(緑) FF00H ‐‐‐‐‐‐‐ システムワーク・エリア FFFFH ――――――― ―――――――FFFFH 0000H〜7FFFHのROM、RAM切替えはI/Oポート0番にデータを出力して行う ポート データ 機能 (例)ROM切替え RAM切替え 00H 1DH ROM選択 LD A,1DH LD A,1EH 1EH RAM選択 OUT (0),A OUT (0),A X1のVRAMアドレスと画面の対応 (例)青バンク4000H〜7FFFH (0,0) (639,0) 1 4000・4001・・・・・・・・404E・404F 0列目 1段目の次は9段目とい 2 4800・4801・・・・・・・・484E・484F 1列目 う具合にアドレスが繋が ・ ・ ・ ・ っており、193段目の 8 7800・7801・・・・・・・・784E・784F 7列目 終りまで来ると48バイ 9 4050・4051・・・・・・・・409E・409F 0列目の続き トの非表示部分を置いて 10 4850・4851・・・・・・・・489E・489F 1列目の続き 再び上に戻って2段目、 ・ ・ ・ ・ 10段目という具合に、 ・ ・ ・ ・ Y方向8ピクセル置きに 200 7F80・7F81・・・・・・・・789E・789F 7列目の最後 連続したメモリと対応し (0,199) (639,199) ている 計算しやすいようにVRAM青のオフセット4000H(16384)を引いて考えると 1段目 9段目 193段目 非表示 2段目 VRAM 0〜3F 40〜9F ・・・ 780〜7CF 7D0〜7FF 800〜84F 10進 0〜79 80〜159・・・1920〜1999 2000〜2047 2048〜2127 具体的な色の出し方 LD A,0FFH ;Aにデータ LD BC,4000H ;BCに青の先頭アドレス(Bに40H、Cに0) OUT (C),A ;ポート0番にAのデータを出力 LD BC,8000H ;BCに赤の先頭アドレス(Bに80H、Cに0) OUT (C),A ;ポート0番にAのデータを出力 LD BC,0C000H ;BCに緑の先頭アドレス(BにC0H、Cに0) OUT (C),A ;ポート0番にAのデータを出力 これで、画面の左上に横8ピクセルの白い線が出る ゲーム機として見た場合のX1の特徴 特有の機能 PCG ・・・8×8、8色の文字を最大256個定義できる 表示優先度変更・・・文字面と背景面のどちらを手前に表示するか変更可能 これらの機能を生かせば8ドット単位で移動する擬似スプライトが可能 (背景画面にキャラを描くより、かなり速い) 特有の弱点 割込みが無い ・・・なぜか1秒毎の割込みしか無いので、自分でZ80の サイクル(ステート)を数えて、キャラを移動したり BGMを鳴らしたりする必要が有る。エエッ! 変則VRAM ・・・上記「X1のVRAMアドレスと画面の対応」参照 キー遅延 ・・・キーの入力判定が遅いので、リアルタイムゲームでは 入力が間に合わないことが頻繁に有る! こういう特徴から見て私が思うに、80年代後期の市販クラスのゲームを作ろうとする場合、かなり考えて作らないと、スクロールで画面が波打ったり、BGMが間延びしたりしやすいかもしれません。思っただけで、実際はどうなのか知りません。でも、割込みが1秒毎って・・・。 X1ゲーム (と88ゲームのスクロール) について良く分かる“無断リンク”です このページは、1024×768画面に合わせて作りました。ちゃんと見えなかったらスミマセン |