BG転送 や SCSI転送, ADPCM転送, RAINBOW転送 等の処理を行うチップ
MainRAM のデータを直接扱うことはできないので、データを KRAMに転送しておく必要がある。
レジスタ(W) | 600h |
---|---|
ステータス(R) | 600h |
ステータス2(R) | 602h |
データ(R/W) | 604h |
データ2(R/W) | 606h |
600H | b6-b0 | レジスタ番号 |
602H | b0 | |
b1 | ? | |
b2 | I/O | |
b3 | C/D | |
b4 | MSG | |
b5 | REQ | |
b6 | BSY | |
b7 | ? | |
b8-15 |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0-b7 | SCSI BUS | |
b8-b15 | 0 |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0 | BSY | |
b1 | |||
b2 | SEL | ||
b3 | |||
b4 | ACK | ||
b5 | |||
b6 | |||
b7 | RST | ||
b8-b15 | 0 |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0 | 1 で転送できるようにする | |
b1 | |||
b2 | |||
b3 | |||
b4 | |||
b5 | |||
b6 | |||
b7 | |||
b8-b15 | 0 |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0 | I/O | |
b1 | C/D | ||
b2 | MSG | ||
b3 | |||
b4 | |||
b5 | |||
b6 | |||
b7 | |||
b8-b15 | 0 |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0 | 不明 | |
b1 | |||
b2 | |||
b3 | |||
b4 | |||
b5 | |||
b6 | 0=転送不可 / 1=転送可 | ||
b7 | |||
b8-b15 | 0 | ||
606H | b0-b7 | I/O転送用 | |
b8-b15 | 0 |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0-b15 | 不明 | 不明 |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0-b31 | DMA 転送アドレス |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0-b31 | DMA 転送サイズ |
アドレス | READ | WRITE | |
---|---|---|---|
604H | b0-b15 | 不明 | 0001h = MainRam転送 0003h = KRAM転送 |
KRAM の読み込みアドレスを指定する。
bit0-17 | アドレス(0〜3FFFFh) |
---|---|
bit18-27 | アドレス増分(0〜511) |
bit31 | ページ(0〜1) |
KRAM の書き込みアドレスを指定する。
bit0-17 | アドレス(0〜3FFFFh) |
---|---|
bit18-27 | アドレス増分(0〜511) |
bit31 | ページ(0〜1) |
reg 0Ch または reg 0Dh で指定されたアドレスのデータを入出力する。
KING の各機能が使用する KRAM のページを指定する
bit0 | SCSI が使用するページ(0〜1) |
---|---|
bit8 | BG が使用するページ(0〜1) |
bit16 | RAINBOW が使用するページ(0〜1) |
bit24 | ADPCM が使用するページ(0〜1) |
BG のモード設定。
bit3-bit0 | BG0 のモード |
---|---|
bit7-bit4 | BG1 のモード |
bit11-bit8 | BG2 のモード |
bit15-bit12 | BG3 のモード |
モードとして設定する値は以下の通り
0 | 未使用 |
---|---|
1 | 4 palette |
2 | 16 palette |
3 | 256 palette |
4 | 64k color |
5 | 16M color |
9 | 4 palette block mode |
10 | 16 palette block mode |
11 | 256 palette block mode |
BG のプライオリティ設定。
bit2-bit0 | BG0 のプライオリティ |
---|---|
bit5-bit3 | BG1 のプライオリティ |
bit8-bit6 | BG2 のプライオリティ |
bit11-bit9 | BG3 のプライオリティ |
bit14-bit12 | 回転するなら1 |
設定できる値は以下の通り。ここで設定するプライオリティはNew鉄観音で設定するプライオリティと矛盾してはいけない。
0 | 表示しない |
---|---|
1 | 最後面 |
2 | 最後面から1面前 |
3 | 最後面から2面前 |
4 | 最前面 |
5〜7 | 設定禁止 |
マイクロプログラムを書き込むアドレスを指定する。
マイクロプログラムへ書き込むデータを出力する。
マイクロプログラムの制御を行う。
0で動作停止、1で動作可?
副画面のモード設定。設定値の詳細は不明。
BG0 の BAT アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG0 の CG アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG0sub の BAT アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG0sub の CG アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG1 の BAT アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG1 の CG アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG2 の BAT アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG2 の CG アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG3 の BAT アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG3 の CG アドレスを指定する。指定する値はアドレスを 1024 で割った値。
BG0 のサイズを指定する。
設定値 | 大きさ |
---|---|
8888h | 32x32(256x256) |
8989h | 32x64(256x512) |
9898h | 64x32(512x256) |
BG1 のサイズを指定する。設定値は reg 2Ch と同じ。
BG2 のサイズを指定する。設定値は reg 2Ch と同じ。
BG3 のサイズを指定する。設定値は reg 2Ch と同じ。
BG0 の左上 X 座標を指定する。
BG0 の左上 Y 座標を指定する。
BG1 の左上 X 座標を指定する。
BG1 の左上 Y 座標を指定する。
BG2 の左上 X 座標を指定する。
BG2 の左上 Y 座標を指定する。
BG3 の左上 X 座標を指定する。
BG3 の左上 Y 座標を指定する。
1 で転送。
RAINBOW に転送するデータの KRAM アドレスを指定する。
RAINBOW 転送を開始する Y 位置。
RAINBOW に転送するデータのブロック数(1block=16dot?)を指定する。
bit0 | channel 0 の再生 0=停止 / 1=再生 |
---|---|
bit1 | channel 1 の再生 0=停止 / 1=再生 |
bit3-2 | サンプリングレート 00=32kHz 01=16kHz 10=8kHz 11=4kHz |
bit7-4 | 不明 |
リングバッファモードにすると、指定バッファの内容をループ再生します。 中間アドレスを使えば、ストリーミング再生も可能(だと思う)。
bit0 | バッファモード 0=通常 / 1=RING Buffer |
---|---|
bit1 | 終了割り込み 0=禁止 / 1=許可 |
bit2 | 中間割り込み 0=禁止 / 1=許可 |
内容は reg 51h と同じ
このレジスタの内容を読むと、フラグは 0 に設定される。
割り込みを使用する時には、割り込みルーチン内でこのレジスタを読み取ってフラグをクリアする必要があります。クリアしないと永遠に割り込み要求が発生するのでハングアップ状態になります。
bit0 | channel 0 の再生アドレスが終了アドレスに来ると 1 になる |
---|---|
bit1 | channel 0 の再生アドレスが中間アドレスに来ると 1 になる |
bit2 | channel 1 の再生アドレスが終了アドレスに来ると 1 になる |
bit3 | channel 1 の再生アドレスが中間アドレスに来ると 1 になる |
開始ブロック番号を指定する。1ブロックは256[half word]。
終了アドレスを指定する。 開始ブロック番号 * 256 + データサイズ[byte] / 2 - 1 を指定すればいいらしい。
中間アドレスを指定する。 (開始ブロック番号 * 256 + 発生オフセット[byte] / 2) / 64 を指定すれば良いらしい。
内容は reg 58h と同じ
内容は reg 59h と同じ
内容は reg 5Ah と同じ
KING の BG は MicroProgram にしたがって生成されます。MicroProgram は KRAM のデータをどのようにNEW鉄観音へ出力するかを記述したプログラムです。
MicroProgram は 16[HalfWord] の空間を持ち、アドレスの 0〜7 番地を A バンク、8〜15 番地を B バンクと呼びます。
bit2-0 | オフセット アクセスするデータのオフセットを指定します。 bit5 が 1 (回転面)の場合は 0 を指定します。 |
---|---|
bit4-3 | アクセスデータ種類 00=CGデータをアクセスします。 01=読み込んだ BAT データに関係する CG データをアクセスします。 10=BAT データを読み込む |
bit5 | 回転フラグ このビットを 1 にすると回転処理を行います。 |
bit7-6 | BG面番号 このオペコードがどの BG 面に対する物かを指定します。 |
bit8 | NOP フラグ このビットを 1 にすると、bit7-0は無視され何も動作を行いません。 |
bit15-9 | 未使用 |
A バンクと B バンクにまたがった MicroProgram を記述することは出来ません。
16M色の画面が含まれる場合は、回転処理を行うことができません。
非回転面のデータ幅が 1dot あたり 16bit 以内であること。例えば 64k色画面を 2面作成したり、256色画面を 3面作成することはできません。
回転面を BG0 面以外に設定することはできません。
コード | 動作内容 |
---|---|
0000 | +0 の CG をアクセスする |
0001 | +1 の CG をアクセスする |
0002 | +2 の CG をアクセスする |
0003 | +3 の CG をアクセスする |
0004 | +4 の CG をアクセスする |
0005 | +5 の CG をアクセスする |
0006 | +6 の CG をアクセスする |
0007 | +7 の CG をアクセスする |
コード | 動作内容 |
---|---|
0000 | +0 の CG をアクセスする |
0001 | +1 の CG をアクセスする |
0002 | +2 の CG をアクセスする |
0003 | +3 の CG をアクセスする |
コード | 動作内容 |
---|---|
0000 | +0 の CG をアクセスする |
0001 | +1 の CG をアクセスする |
コード | 動作内容 |
---|---|
0000 | +0 の CG をアクセスする |
コード | 動作内容 |
---|---|
0010 | +0 の BAT を読み込む |
0100 | NOP |
0008 | +0 の BAT CG をアクセスする |
0009 | +1 の BAT CG をアクセスする |
000A | +2 の BAT CG をアクセスする |
000B | +3 の BAT CG をアクセスする |
コード | 動作内容 |
---|---|
0010 | +0 の BAT を読み込む |
0100 | NOP |
0008 | +0 の BAT CG をアクセスする |
0009 | +1 の BAT CG をアクセスする |
コード | 動作内容 |
---|---|
0010 | +0 の BAT を読み込む |
0100 | NOP |
0008 | +0 の BAT CG をアクセスする |
コード | 動作内容 |
---|---|
0020 | 回転処理 |
0020 | 回転処理 |
0020 | 回転処理 |
0020 | 回転処理 |
0020 | 回転処理 |
0020 | 回転処理 |
0020 | 回転処理 |
0020 | 回転処理 |