1980年2月26日火曜日

[機器][マイコン] PPU 2CO2


[機器][マイコン] PPU 2CO2
PPU 2C02
■画面の構成
BG画面は最大4画面分(通常2画面分)を1枚持ち、64枚のOBJ(スプライト)、バックドロップ画面を持つ
フィルタ画面はPPUによって違います。
アクセスに少しクセがあります。
バックドロップ画面
画面全体に1色の表示を行います。
BG画面
ゲームでは背景の表示を行います。
OBJ(スプライト)画面
ゲームではキャラクタの表示を行います。
BG画面の前後のどちらかに表示することが出来ます。
PPUのメモリマップ
PPUのメモリ空間は2つあると考えた方が分かりやすいかもしれません。
1つはキャラクタパターン、VRAM、カラーパレットのあるPPUメモリ
1つはOBJ表示する為のOBJRAM
$0000-$0FFF:パターンテーブル0
$1000-$1FFF:パターンテーブル1
$2400-$27FF:BGネームテーブル1、アトリビュート1(Hスクロール選択の場合)
$2800-$2BFF:BGネームテーブル2、アトリビュート2(Vスクロール選択の場合)
$2C00-$2FFF:BGネームテーブル3、アトリビュート3
$3F00-$3F1F:カラーパレット
$0000-$1FFFパターンテーブル(CG領域)
キャラクタジェネレータの領域です。
カセットのキャラクタROMはこの場所に配置されます。
また、RAMにしプログラムで定義する事も可能です。
領域は2つありポートでスプライトのキャラクタジェネレータか
BGのジェネレータかを指定します。
$2000-$2FFFネームテーブル、アトリビュート(VRAM)
パターンテーブルで定義されたキャラクタコードを表示する場所です。
本体では2KバイトのSRAMを使用して2画面分しかありません
標準の0とスクロールを選択したVRAMアドレス1か2のどちらか1つの2画面分となります。
スクロールの選択はカセット内もPPUアドレスのショートで決ります(ポートで切り替えができるタイプも有ります)
またカセットからVRAMメモリを2KBから8KBに拡張が可能です。
その場合、本体内のVRAMを使用禁止にして新たにカセットにVRAMを置く必要があります。(その場合4画面分フルに使用で出来ます)
$2000-$23BF:ネームテーブル0(1画面標準)
$23C0-$23FF:アトリビュート0(1画面標準)
$2400-$27BF:ネームテーブル1(Hスクロール)
$27C0-$27FF:アトリビュート1(Hスクロール)
$2800-$2BBF:ネームテーブル2(Vスクロール)
$2BC0-$2BFF:アトリビュート2(Vスクロール)
$2C00-$2FBF:ネームテーブル3
$2FC0-$2FFF:アトリビュート3
$3F00-$3F03:BG用パレットコード#0
$3F04-$3F07:BG用パレットコード#1
$3F08-$3F0B:BG用パレットコード#2
$3F0C-$3F0F:BG用パレットコード#3
$3F10-$3F13:OBJ用パレットコード#0
$3F18-$3F1B:OBJ用パレットコード#2
$3F1C-$3F1F:OBJ用パレットコード#3
OBJ(スプライト)RAM
OBJ(スプライト)を表示する為のRAMです
ポートからアドレスを指定、データを書き込む方法とVBLANKの割り込み内でDMA転送する2つの方法があります
$00:OBJ$00H(Y座標1ドット下にずれます)
$01:OBJ$00CHR(キャラクタ)
$02:OBJ$00ATTR(アトリビュート)
$03:OBJ$00V(X座標)
$FC:OBJ$3FH(Y座標1ドット下にずれます)
$FD:OBJ$3FCHR(キャラクタ)
$FE:OBJ$3FATTR(アトリビュート)
$FF:OBJ$3FV(X座標)
PPUへのデータの書き込み
ポート$2006にVRAMアドレスを設定して、ポート$2007にデータを書き込みます。
注意するのはアドレスの設定は上位アドレス、下位アドレスの順に設定する事と
VBLANK中に書き込む事、最後にポート$2005にスクロールの設定します。
また、オートインクリメントによって次からはポート$2007だけ書き込むだけです。
ポート$2000のBit2の設定によってオートインクリメントは
横方向(左から右)か、縦方向(上から下)の2通りがあります。
PPUにあるデータの読み込み
注意するのはアドレスの設定は上位アドレス、下位アドレスの順に設定する事と
一番最初の読み込みは無効で2回読む必要があります。
■パターンテーブル
キャラクタデータを格納する領域で、
1キャラクタ8*8ドットはプレーン0(8バイト)+プレーン1(8バイト)の計16バイト
それが256キャラクタ分なので256キャラ×16=$1000バイト
パターンテーブルは2つあるので$1000×2で$2000バイトになります。
キャラクタデータは1キャラクタにプレーン0とプレーン1の2つがあり
プレーン1のビットデータ1が1の部分がカラー2
プレーン0とプレーン1でビットデータ1が重なった部分がカラー3になります。
プレーン0とプレーン1でビットデータ0が重なった部分がカラー0(透明)になります。
BG画面
ゲームにおける背景画面の場所になり、BG画面は最大4画面分用意されています。
本体内のRAMでは通常カセット端子の48(/VRAMCS)と49(/PA13)がショートしていて
BG-A$2000-$23BFとBG-Aアトリビュート$23C0-$23FFの1KBが使用できます。
残りの1KBはカセットのスクロールのショート部分でBG-B(Hスクロール)かBG-C(Vスクロール)になります。
もしHとVのどちらも選択されない場合はBG-Aのみの使用となります。
使用できるのはBG-AとBG-Bとなり、
BG-CはBG-Aのミラー、BG-DはBG-Bのミラーイメージになります。
BG-C(Vスクロール)選択をすると
使用できるのはBG-AとBG-Cとなり、
BG-BはBG-Aのミラー、BG-DはBG-Cのミラーイメージになります。
この領域にキャラクタコードを書く事によって文字が表示されます。(カラーの設定が必要)
32×30キャラクタ=$03C0
$2000-$23BF:BG-Aネームテーブル(1画面標準)
$2400-$27BF:BG-Bネームテーブル
$2800-$2BBF:BG-Cネームテーブル
$2C00-$2FBF:BG-Dネームテーブル
アトリビュート
この領域はBG画面のカラーの指定を行いますが2×2キャラクタ×4に1バイトのパレットコードを設定します。
1バイトのデータは2Bitづつ区切られ、2×2キャラクタ単位でのカラー設定しか出来ません。
$23C0-$23FF:BG-Aアトリビュート(1画面標準)
$27C0-$27FF:BG-Bアトリビュート
$2BC0-$2BFF:BG-Cアトリビュート
$2FC0-$2FFF:BG-Dアトリビュート
カラーパレットで設定したパレットコード#nを設定します。
パレットコード#nの配色番号はカラーパレット$3F00-$3F0Fで設定したカラーになります
4×4キャラクタ単位を1ブロック、8ブロック×8ブロック=$40バイト使用
Bit7:DのパレットコードD1
Bit6:DのパレットコードD0
Bit5:CのパレットコードD1
Bit4:CのパレットコードD0
Bit3:BのパレットコードD1
Bit2:BのパレットコードD0
Bit1:BのパレットコードD1
Bit0:BのパレットコードD0
ブロック7は縦半分になり、設定出来るデータはA、B部分(Bit3-0)だけとなります。
■カラーパレット
黒は通常$0Fを使用します。
カラーパレットアドレス
$3F00:BGパレットコード0配色番号0(バックドロップ画面の設定)
$3F01:BGパレットコード0配色番号1
$3F02:BGパレットコード0配色番号2
$3F03:BGパレットコード0配色番号3
$3F04:BGパレットコード1配色番号0(データは無効で透明になる)
$3F05:BGパレットコード1配色番号1
$3F06:BGパレットコード1配色番号2
$3F07:BGパレットコード1配色番号3
$3F08:BGパレットコード2配色番号0(データは無効で透明になる)
$3F09:BGパレットコード2配色番号1
$3F0A:BGパレットコード2配色番号2
$3F0B:BGパレットコード2配色番号3
$3F0C:BGパレットコード3配色番号0(データは無効で透明になる)
$3F0D:BGパレットコード3配色番号1
$3F0E:BGパレットコード3配色番号2
$3F0F:BGパレットコード3配色番号3
$3F10:OBJパレットコード0配色番号0(バックドロップ画面の設定になる)
$3F11:OBJパレットコード0配色番号1
$3F12:OBJパレットコード0配色番号2
$3F13:OBJパレットコード0配色番号3
$3F14:OBJパレットコード1配色番号0(データは無効で透明になる)
$3F15:OBJパレットコード1配色番号1
$3F16:OBJパレットコード1配色番号2
$3F17:OBJパレットコード1配色番号3
$3F18:OBJパレットコード2配色番号0(データは無効で透明になる)
$3F19:OBJパレットコード2配色番号1
$3F1A:OBJパレットコード2配色番号2
$3F1B:OBJパレットコード2配色番号3
$3F1C:OBJパレットコード3配色番号0(データは無効で透明になる)
$3F1D:OBJパレットコード3配色番号1
$3F1E:OBJパレットコード3配色番号2
$3F1F:OBJパレットコード3配色番号3
カラーパレットはBG用、OBJ用の2種類があり、配色番号を4つで1セットをパレットコードになります。
このパレットコードnをアトリビュートに設定します。
ポート$2001でRGBそれぞれの出力にフィルタをかけます
フイルタをかけると少し暗くなります
またPPUの種類によってこの機能が出来ないタイプ(画面が真っ白になる)もあります。
OBJ(スプライト)
OBJRAMは$100バイトあり1キャラクタ表示するのに4バイト必要で
最高64枚のOBJが使用できます。
■アクセス方法
1.ポート$2003にOBJRAMアドレスを指定して
ポート$2004にデータを書き込む方法
2.VSYNC割り込みでDMA転送する方法
の2種類があります。
またポート$2001のBit4=0(OBJ表示をしない)場合にOBJRAMをアクセスしないと
データが壊れていく?
OBJRAMは4バイトで1組になりアドレス$00-$FFのOBJ$00から$3Fまで64個使用できます。
第1バイトY座標-1(1ドット下にずれる為表示したい値-1)
第2バイトOBJキャラクタnnパターンテーブルnで設定したCGデータナンバ
第3バイトアトリビュート
Bit7:垂直1=反転、0=通常
Bit6:水平1=反転、0=通常
Bit5:プライオリティ1=BG画面より奥、0=BG画面より手前
Bit4:0
Bit3:0
Bit2:0
Bit1:OBJ用パレットコードD1
Bit0:OBJ用パレットコードD0
第4バイトX座標
8×8モードのOBJはポート$2000Bit3=1ならPPU$1000、0ならPPU$0000の
パターンデータを参照にします。
8×16モードのOBJキャラクタの対応表です。
8×8モードの時と違いパターンテーブル2つ全部を使いますので
OBJパターンテーブルの指定は無効になります。
OBJキャラクターが偶数ならパターンテーブル0のCHRデータを使用
OBJキャラクターが奇数ならパターンテーブル1のCHRデータを使用

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












1980年2月19日火曜日

[PCゲーム] NEC PC-8001ゲーム,ASCII

[PCゲーム] NEC PC-8001ゲーム,ASCII
ASCII
PC-8001
HURDLEThe JUMPTIME BOMBCRAZY STONETANK SHOOTINGMAGIC WARフォートレス・ソロモンAY-1 フォートレス・ソロモン
フォートレス・ソロモンMAGIC WAR AY-1
◎[ASCII:1980.8, 1981.12, 1982.1, 1982.4]
→ 収録作品一覧
SHT デモ画面デモ画面デモ画面デモ画面[AY-2 OLION80] - OLION80
デモ画面デモ画面 AY-2
☆デモ版 (TapeASCII:TA8401)
[SHIFT]+[E] : スターシップ・デザイナー(機体エディタ)
PASS : [unlock]
SHT おまけデータ「ONION」おまけデータ「ONION」おまけデータ「ONION」[AY-2 OLION80] - ONION
おまけデータ「ONION」おまけデータ「ONION」 AY-2
OLION80おまけデータ
「A×-5 オニオン(AhSKI!:1983表3)」は言うまでもなくフェイク
DMO 実行画面実行画面OLION DEMO
実行画面実行画面 ◎[TapeASCII:TA8401]
TapeASCII のみ (本誌に掲載なし)
見てるだけで遊べない
SIM ゲーム画面ゲーム画面タイトル画面[AY-3 SkyDefender] - SkyDefender
タイトル画面ゲーム画面 AY-3
8001用に発売された唯一の本格フライトsim
なぜかあまり広告されなかったが、速攻で購入した
八丈島上空の侵犯機を撃墜する...のは、かなりたいへん^^;
おまけゲームの出来も良く、お買い得
TBL ゲーム画面タイトル画面[AY-3 SkyDefender] - ウォーリ
タイトル画面ゲーム画面 AY-3
ACT ゲーム画面タイトル画面[AY-3 SkyDefender] - ナイトパトロール
タイトル画面ゲーム画面 AY-3
ACT ゲーム画面タイトル画面Boomerang
タイトル画面ゲーム画面 第1回アスキー・ソフトウェアコンテスト
グランプリ受賞作品
??? ゲーム画面ゲーム画面ゲーム画面タイトル画面Emmy
タイトル画面ゲーム画面 ■DiskSystem
1990年代後半の生意気な「ガングロコギャル」の出現を予知し、その日のために作られた「ナンパシミュレータ」ではない。
ローマ字-カナ変換付きで「快適に」会話を楽しめます。
PC-8001mkII
TBL ゲーム画面タイトル画面将棋
タイトル画面ゲーム画面 ■80mkII + DiskSystem
PC-8801
SIM ゲーム画面タイトル画面[AZ-1 フライト・シミュレータ] - フライト・シミュレータ
タイトル画面ゲーム画面 ■8801
AZ-1
ACT メニュー画面ゲーム画面タイトル画面[AZ-1 フライト・シミュレータ] - ブロック・バスター
タイトル画面ゲーム画面 ■8801
AZ-1
APP 実行画面実行画面PC-8801(PC-9801) ビジネス グラフ 活用法
実行画面実行画面 ■8801
‡) オフィス計画研究会
→ 収録作品一覧
マニュアル+カセット2本(A面:8801用 / B面:9801用)
??? タイトル画面タイトル画面Emmy Version(Virgin) II
タイトル画面タイトル画面 ■8801 + DiskSystem
TBL ゲーム画面タイトル画面ボコスカウォーズ
タイトル画面ゲーム画面 ■88SR
☆原作:X1版 (ASCII:1984.4) 住井浩司
第1回アスキーソフトウェアコンテスト
グランプリ受賞作品 (原作:X1版)
Acp
UTT 起動画面DAISY-PC
起動画面 多機能逆アセンブラ
UTT 起動画面起動画面DUAD-PC
起動画面起動画面 ■DiskSystem
UTT 起動画面DUAD-80
起動画面 ■80mkII + DiskSystem
移植版 (ASCII,LOGiN誌にリスト掲載されなかった作品)
SIM ゲーム画面ゲーム画面ゲーム画面メインロイヤル
ゲーム画面ゲーム画面 ■8801
☆原作:FM-7/8版 (ASCII:1983.3) 植松直也
収録機種:FM-7/8,PC-8801/mkII,MB-S1
ASCII:1984.7 広告掲載の機種名の一部(PC-8001/mkII)は間違い
RPG ゲーム画面アルフガルド
ゲーム画面 ☆原作:FM-7/8版 (ASCII:1983.5) 植松直也
収録機種:FM-7/8,PC-8001/mkII,PC-8801/mkII,MB-S1
← B.M.U.G.会報 1984 - ASCII (市販) - アドコム電子 →
TAPE ASCII
初代「TAPE ASCII」
品番 機種 タイトル 備考
------ PC-8001 美麗図柄馬鹿っ花 ◎[ASCII:1981.5]
------ PC-8001 コンピュータMG ◎[ASCII:1981.9][SP0003]
ASCII 「SP シリーズ」
機種・タイトル別時代の「TAPE ASCII」
品番 機種 タイトル 備考
SP0001 PC-8001 GAME・PCインタプリタ/コンパイラ ◎[ASCII:1980.9-10]
SP0002 PC-8001 TL/1・PCコンパイラ/連珠 ◎[ASCII:1981.1]
SP0003 PC-8001 コンピュータMG ◎[ASCII:1981.9]
SP0004 AppleII ヨットレースシミュレーション  
SP0005 PC-8001 フライト/ドライブシミュレータ ◎[ASCII:1981.10]
SP0006 PC-8001 コンピュータ家計簿 ◎[ASCII:1982.1]
SP0007 PC-8001 トレードトレック ◎[ASCII:1982.2]
SP0008 PC-8001 ゴルフシミュレーション ◎[ASCII:1982.2]
SP0009 FM-8 ゴルフシミュレーション ◎[ASCII:1982.2]
SP0010 PC-8001 フィールドアーミー ◎[ASCII:1982.3]
SP0011 PC-8001 森田オセロ/小山オセロ ◎[ASCII:1982.3]
SP0012 PC-8001 PLOTプログラミングツール ◎[ASCII:1982.4]
SP0013 PC-8001 表参道アドベンチャー ◎[ASCII:1982.4]
SP0014 MB-6890 中日・巨人戦野球ゲーム  
SP0015 PC-6001 ゴルフシミュレーション  
SP0016 PC-8001 FORTH/Σ ◎[ASCII:1982.4-9]
SP0017 PC-8001 View Point 82 ◎[ASCII:1982.6]
SP0018 PC-8801 View Point 82 ◎[ASCII:1982.6]
SP0019 FM-8 View Point 82 ◎[ASCII:1982.6]
SP0020 MB-6890 View Point 82 ◎[ASCII:1982.6]
SP0021 IF-800 View Point 82 ◎[ASCII:1982.6]
SP0022 MZ-80B FORTH/Σ  
SP0023 FM-8 日本語ワードプロセッサ  
SP0024 PC-8801 日本語ワードプロセッサ  
SP0025 FM-8 ロードオーバー ◎[ASCII:1982.8]
SP0026 PC-8801 ロードオーバー ◎[ASCII:1982.8]
  MB-6890 MIGHTY-3  
  MB-6890 「TL/1-L3」コンパイラ  
  PC-6001 教習所ゲーム ◎[ASCII:1982.10]
SP0030 PC-8001 教習所ゲーム ◎[ASCII:1982.10]
  PC-8801 教習所ゲーム ◎[ASCII:1982.10]
  MZ-80B 教習所ゲーム ◎[ASCII:1982.10]
SP0033 FM-8 教習所ゲーム ◎[ASCII:1982.10]
  HC-20 教習所ゲーム ◎[ASCII:1982.10]
SP0035 PC-8001 WIN BACK ◎[ASCII:1982.11]
SP0036 PC-8001 ヨーロッパ大戦 ◎[ASCII:1982.11]
SP0037 PC-8001 MAT-PC ◎[ASCII:1982.12]
SP0038 PC-8001 MAI ◎[ASCII:1983.1]
SP0039 PC-8001 BASIC/G ◎[ASCII:1983.1]
ASCII 「EF シリーズ」
品番 機種 タイトル 備考
EF001 PC-8001等 ピラミッドアドベンチャー ◎[ASCII:1983.6]
EF002 PC-8001等 南青山アドベンチャー ◎[AhSKI!:1983]
EF003 PC-8801等 タンクバトル ○[LOGiN:1983.8] FM-7/8版のみ掲載
EF004 PC-8001 スーパーピンボール ◎[ASCII:1983.11]
EF005 PC-8001等 北海道防衛作戦 ◎[ASCII:1983.10]
EF006 FM-7/8 スターダスト ☆8001版 (ASCII:1984.1 TapeASCII:TA8401)
EF007 PC-8801等 メインロイヤル ○[ASCII:1983.3] FM-7/8版のみ掲載
EF008 PC-8001等 アルフガルド ○[ASCII:1983.5] FM-7/8版のみ掲載
[MEMO]
 ・「TAPE ASCII」月刊化は 1984.1? (TA8401以前は確認していない)
 ・ACP広告 1983.3 (DUAD-80は未掲載)
 ・「SO LONG AMERICA」 惣領泰則 & JIM ROCKS ⇒ [市販ソフト → Victor(ビクターレコード)]
← B.M.U.G.会報 1984 - ASCII (市販) -

OUT of STANDARD
http://www.geocities.jp/upd780c1/n80/frame.html