2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[P6MK2VGA] リファレンス

Last updated at Posted at 2016-05-19

はじめに

  • 公式サイト
  • 勝手にまとめています。
  • 一部の用語は独自のものを使用しています。
  • コードの動作確認(どころかアセンブルすら)していません。
  • 手元に実物が無いのでほとんど妄想です。
  • エミュレータ対応よろしくお願いします。
  • 編集リクエストお待ちしております。

I/O

address name
$91 DATA
$93 STROBE
$C0 STATUS

DATA ($91)

送信したいCommandまたはDataを書き込む。

STROBE ($93)

data description
$01 Command送信
$00 Data送信

STATUS ($C0)

bit description
7-2 (reserved)
1 VBlank (0:垂直帰線期間)
0 (reserved)

基本的なコマンド送信手順

ld      a,Command
out     ($91),a
ld      a,1
out     ($93),a     ;send Command
ld      a,Data
out     ($91),a
ld      a,0
out     ($93),a     ;send Data

用語集

用語 説明
スプライト番号 0~255($00~$FF)で指定。同時に256枚の表示が可能。表示優先は0が一番高く、255が一番低い。水平方向に20枚までしか表示出来ない。20枚を超えるとスプライト番号の小さいものから消えていく。
属性 スプライトの各種設定。アトリビュート、座標、キャラクタ番号、リンク。
アトリビュート スプライトの表示/非表示、反転、回転などの設定を行う。
X座標 0~511($000~$1FF)で指定。表示領域は16〜335(初代機モードでは16~271)。
Y座標 0~255($00~$FF)で指定。表示領域は16〜215(初代機モードでは16~207)。
リンク スレーブに設定したスプライトは、指定したマスターからのオフセット座標に表示される。座標更新が不要になるのでPC側の処理が軽くなる(と思われる)。デカキャラなどに使用すると良い。
キャラクタ番号 0〜191($00~$BF)で指定。16x16で192パターンの定義が可能。スプライトに表示させるキャラクタの番号。
画面優先順位 16bit。bit0~15がPC側の色番号0~15に対応。bitが立っている色番号のPC側のドットはスプライトよりも優先が高くなる。
スクロール値 0~319($000~$13F)で指定。PC側の画面をスクロールさせることが出来る。数値を増やすと左方向にスクロールする。
画面切り取り 横スクロール時に画面端の書き換えが見えないようにするために使用する。

Command

スプライト関連コマンド

$10 属性の設定を行うスプライト番号の指定

Command Data
$10 スプライト番号 ($00~$FF)
  • これでスプライト番号を指定した後、属性(アトリビュート、座標、キャラクタ番号、リンク)の変更を行う。

$20 アトリビュートの設定

Command Data
$20 アトリビュート

アトリビュート

bit name description
7-6 QUAD 00:左上, 01:右上, 10:左下, 11:右下
5 SIZE 0:16x16, 1:8x8
4 LINK 0:マスター, 1:スレーブ
3 ROTATE 0:回転なし, 1:左90°回転
2 VFLIP 1:上下反転
1 HFLIP 1:左右反転
0 VISIBLE 0:非表示, 1:表示
  • 回転→反転の順に処理される。
  • SIZE=1(8x8)の場合、QUADで指定した位置のキャラクタが指定した座標の位置に表示される。
  • SIZE=0(16x16)のときのQUADの影響については未検証。

$21 X座標の設定(下位1bit)

Command Data
$21 X座標の下位1bit ($00~$01)
  • 範囲外の値に関しては未検証。

$22 X座標の設定(上位8bit)

Command Data
$22 X座標の上位8bit ($00~$FF)

$23 Y座標の設定

Command Data
$23 Y座標 ($00~$FF)

$24 キャラクタ番号の設定

Command Data
$24 キャラクタ番号 ($00~$BF)
  • 範囲外の値に関しては未検証。

$25 リンクの設定

Command Data
$25 マスターのスプライト番号 ($00~$FF)
  • スレーブのスプライトを指定してはいけない。
  • どうなるのかは未検証。
  • 座標指定は、マスターからのオフセットになる。
  • 基準座標や、回転/反転による影響などは未検証。(おそらく影響は無いと思われる)

$30 キャラクタデータの設定

Command Data Data2
$30 キャラクタ番号 ($00~$BF) キャラクタデータ (128バイト)
  • Command/Data送信後にキャラクタデータを送信する。
    ld      a,$30       ;コマンド
    out     ($91),a
    ld      a,1
    out     ($93),a
    ld      a,$00       ;キャラクタ番号
    out     ($91),a
    xor     a
    out     ($93),a

    ld      hl,data     ;キャラクタデータ
    ld      b,64        ;2バイト×64回
loop:
    ;+0
    ld      a,(hl)
    out     ($91),a
    ld      a,1
    out     ($93),a
    inc     hl
    ;+1
    ld      a,(hl)
    inc     hl
    out     ($91),a
    xor     a
    out     ($93),a
    inc     hl

    djnz    loop

スクロール関連コマンド

$40 スクロール値の設定(下位1bit)

Command Data
$40 スクロール値の下位1bit ($00~$01)
  • 初代機の画面モードでは使用しない。
  • 範囲外の値に関しては未検証。

$41 スクロール値の設定(上位8bit)

Command Data
$41 スクロール値の上位8bit ($00~$FF)
  • 初代機の画面モードではこの値(上位8bit)のみ使用する。
  • スクロール値は0~255($00~$FF)ということ。
  • 範囲外の値に関しては未検証。

画面サイズ切り替えコマンド

$50 mkIIモード(デフォルト)

Command Data
$50 -
  • Dataは無いがSTROBEへの書き込みは必要。
ld      a,$50
out     ($91),a
ld      a,1
out     ($93),a
xor     a
out     ($93),a

$51 初代機モード

Command Data
$51 -
  • Dataは無いがSTROBEへの書き込みは必要。

画面優先順位設定コマンド

$60 画面優先順位の設定(下位8bit)

Command Data
$60 画面優先順位の下位8bit ($00~$FF)

$61 画面優先順位の設定(上位8bit)

Command Data
$61 画面優先順位の上位8bit ($00~$FF)

PC-6001mkII画面表示禁止コマンド

$70 画面表示許可

Command Data
$70 -
  • Dataは無いがSTROBEへの書き込みは必要。

$71 画面表示禁止

Command Data
$71 -
  • Dataは無いがSTROBEへの書き込みは必要。

画面左右切り取りコマンド

$80 画面切り取り設定(左端)

Command Data
$80 切り取るドット数 ($00~$1F)
  • 範囲外の値に関しては未検証。

$81 画面切り取り設定(右端)

Command Data
$81 切り取るドット数 ($00~$1F)
  • 範囲外の値に関しては未検証。
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?