11と31のリビジョン間の差分 (その間の編集: 20回)
2020-11-06 01:44:47時点のリビジョン11
サイズ: 5113
編集者: keitaroh
コメント:
2020-12-19 10:11:58時点のリビジョン31
サイズ: 7243
編集者: keitaroh
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 11: 行 11:
 * 各種チップの基準クロックを生成するためのもの。  * 各種チップのクロックを生成するためのもの。
行 32: 行 32:
= ROM =

== ROM一覧 ==

 * ※「パッケージ上の記載」はぶっちゃけ検証不足である。
  * 筆者が現物で確認したわけではないので。
  * 「パッケージ上の記載」とは、ROMのゲジゲジの背中に貼ってあるシール(?)に書かれた文字の事。

||<-2>'''パッケージ上の記載'''||'''内容'''||'''サイズ'''||
||<:>TD1<<BR>>1||<:>TD1<<BR>>1B||メインCPU用プログラムROM<<BR>>($C000~$FFFF)||8bit×$4000||
||<:>TD1<<BR>>3||<:>TD1<<BR>>3B||メインCPU用プログラムROM<<BR>>($8000~$BFFF)||8bit×$4000||
||<:-2>TD1<<BR>>4||サウンドCPU用プログラムROM<<BR>>($E000~$FFFF)||8bit×$2000||
||<:-2>TD1<<BR>>5||BG用ドットパターンデータROM||8bit×$1000||
||<:-2>TD1<<BR>>6||スプライト用ドットパターンデータROM(1)<<BR>>(上位2bit用)||8bit×$2000||
||<:-2>TD1<<BR>>7||スプライト用ドットパターンデータROM(2)<<BR>>(下位2bit用)||8bit×$2000||
||<:-2>TD1-3||波形データROM||4bit×$0100||
||<:-2>TD1-5||基本色データROM<<BR>>($00~$0Fがスプライト用、$10~$1FがBG用)||8bit×$0020||
||<:-2>TD1-6||BG用カラーパレットデータROM||4bit×$0100||
||<:-2>TD1-7||スプライト用カラーパレットデータROM||4bit×$0400||

----

= VRAM =

 * プログラムコードを見る限り、VRAMへのアクセスタイミングに特別な制約のようなものは無さそうである。
  * 例えば垂直ブランク期間かどうか等は全く気にしている様子が無い。かなり遠慮なく読み書きしている。
   * セルフテストの際にはスタック領域として使用したりしている。本当にただのRAM扱いらしい。
  * 諸問題はハードウェア側でうまく吸収しているのだろう。たぶん。

----
行 34: 行 65:
== 全般 ==  * [[画像処理部]]を参照。
行 36: 行 67:
 * ドットクロック周波数は 6.144MHz。
  * 水晶振動子のクロックを 3分周して得ている。
  * 4ドットサイクル=1MPUサイクルに相当。
 * 水平解像度は表示領域288ドット、非表示領域(水平ブランク)96ドット。計384ドット。
 * 垂直解像度は表示領域224ドット、非表示領域(垂直ブランク)40ドット。計264ドット。
 * 1フレームは 16.5ミリ秒(0.0165秒)。
  * (384 * 264) / 6144000 = 0.0165。
  * 1フレームは 25344MPUサイクルに相当(たぶん)。
 * リフレッシュレートは 約60.6061Hz。
  * 1 / 0.0165 = 60.6060606060……。
----
行 47: 行 69:
== BG部 == = 音源 =
行 49: 行 71:
 * 二つの固定BG部と一つのスクロールBG部からなる。
 * BG用基本色は256色から16色を指定(ROMにより固定)。
  * カラー#15は未使用。
 * BG用カラーパレットが4色×64組分ある。
 * BG用パターンデータは 8x8 サイズで256枚分。
  * なぜかカラーパレット番号との対応がビット反転している。
  * つまりパターンデータ上で $0 となっている箇所はパレット#3、$1 となっている箇所はパレット#2の色で描画される。
 * BG(背景)といいつつ、キャラ毎に前景表示(スプライトより優先表示)する機能もあるらしい。
  * TODでは未使用。
 * 音源チップはNamco15XX。CUSTOM15とも。
  * WSG(Waveform Sound Generator)と呼ばれる事もある。ただしこれは他の音源チップも含んだ言葉である。
  * ナムコが開発した波形メモリ音源の一つ。
行 59: 行 75:
=== 固定BG部 === == 特徴 ==
行 61: 行 77:
 * 画面の左右端に 2 x 28キャラ(16 x 224ドット)の固定BG部が各一つずつ存在する。
  * ※縦置きモニタのため、プレイヤー視点では画面の最上部と最下部に位置する。
  * ※以降、本wikiでは'''プレイヤー視点に合わせて「上部固定BG部」「下部固定BG部」と表記する'''。
 * 表示領域は 2 x 28キャラ分だが、VRAMには 2 x 32 キャラ分の領域が確保されている。
 * 固定BG部はハードウェアスクロール機能の影響を受けない。
 * 下部固定BG部の中央(非表示領域を含め右から +14、+15キャラ目)のみ、参照するVRAMのアドレスが異なる。
  * 本来非表示領域である +0、+1 のキャラ番号/カラーパレット番号を参照する。
  * 海賊版対策か、あるいはハードウェア実装上の事情だろうか。
 * 8chモノラル。
 * クロック周波数は 24KHz。水晶振動子のクロックを768分周して得ている(らしい)。
 * 波形データはビット深度4bit×32インデックスで構成されたものが8組分ある(ROMにより固定)。
 * 波形インデックス値は整数部5ビット、小数部15ビットの固定小数点数。
  * 波形データを得る際には小数点以下を切り捨てる(たぶん)。
  * data = waveform[int(n)] みたいな感じ。
 * 音量は4ビット値。
 * 音程データは20ビット値。
  * おそらく n = (freq×2^20^)÷24000 である。
  * freq が鳴らしたい音の周波数。
行 70: 行 88:
=== スクロールBG部 === == 音源用RAM内訳 ==
行 72: 行 90:
 * 二つの固定BG部にはさまれる形で、32 x 28キャラ分(256 x 224ドット)のスクロールBG部が存在する。
 * VRAMには 60 x 32 キャラ分の領域が確保されている。
 * 垂直方向に1ドット単位でスクロール表示できる(オフセット値は8ビット)。
  * ※縦置きモニタのため、'''プレイヤー視点では水平にスクロールする'''。
 * 下記アドレスは CPU2 のメモリ空間に割り当てられたもの。
行 77: 行 92:
== スプライト(オブジェクト) == ||<:|2>'''アドレス'''||<:-8>'''内容'''||
||<:>'''7'''||<:>'''6'''||<:>'''5'''||<:>'''4'''||<:>'''3'''||<:>'''2'''||<:>'''1'''||<:>'''0'''||
||$0000||<:|3-8>未使用?||
||$0001||
||$0002||
||$0003||<:-4>――||<:-4>ch1の音量||
||$0004||<:-8>ch1の音程値(下位8ビット)||
||$0005||<:-8>ch1の音程値(中位8ビット)||
||$0006||――||<:-3>ch1の音色||<:-4>ch1の音程値(上位4ビット)||
||$0007||<:-8>未使用?||
||$0008-$000F||<:-8>ch2用のデータ||
||$0010-$0007||<:-8>ch3用のデータ||
||$0018-$001F||<:-8>ch4用のデータ||
||$0020-$0027||<:-8>ch5用のデータ||
||$0028-$002F||<:-8>ch6用のデータ||
||$0030-$0037||<:-8>ch7用のデータ||
||$0038-$003F||<:-8>ch8用のデータ||
行 79: 行 110:
 * ※当時のナムコでは「オブジェクト」と呼称されていたらしい。
  * スプライト機能を開発したアタリ社が当初から「オブジェクト」と呼んでおり、アタリ社と縁の深いナムコでも「オブジェクト」の呼称が一般的になったと思われる。
  * とはいえ現在「オブジェクト」と呼ぶのは混乱を招きやすいので、本wikiでは「スプライト」の呼称で統一。
 * 最大表示数 64枚。16x16、16x32、32x16サイズのスプライトを使用可能。
  * スプライトサイズは他に 32x32なども使用可能と推定されるが、TODでは未使用。
 * スプライト用基本色は256色から16色を指定(ROMにより固定)。
 * 基本色#15は透明色固定。ほかの色をROMで指定しても透明色になる。
 * スプライト用カラーパレットは16色×64組。
 * スプライト用パターンデータは 16x16 サイズで 128枚分。
 * 上下、左右それぞれ反転表示可能。
 * VRAMでのアドレスが後ろのものほど優先表示される(画面の手前側に描画される)。
== 備考 ==

 * Namco15XXだけで音を鳴らしているわけではなく、たとえば D/A変換は Namco99XXというチップで行っているらしい。
  * 筆者はこの辺りをよく知らない。
 * 音声出力をミュートする機能がある(どのチップの機能なのかは未調査)。
  * というか、メインCPUから Namco15XXの動作を止める手段がないらしいので、完全に音を止めようと思ったらミュート機能を使うしかないようだ。

----

= コイン、レバー、ボタン、およびディップスイッチ入力情報管理 =

 * Namco58XXとNamco56XXの二つが使われている。
  * 富士通の4ビットCPUであるMB8843に独自のマスクROMを載せたもの(らしい)。
  * ぶっちゃけ仕様には不明な点が多い。
 * TODではNamco58XXをコイン管理とレバー・ボタン入力情報管理に、Namco56XXをディップスイッチ情報・筐体情報管理に使用している。
  * Namco58XXはスタートボタンのランプ制御やロックアウト処理などもやってそうな気がするが詳細は不明。
 * どちらも複数の動作モードを持っているらしく、モードによって出力されるデータが変わるようである。

== 備考 ==

 * TODはマッピーの基板を元に開発されているが、マッピーではディップスイッチ用にもNamco58XXを使用しているようである。
  * マッピーはNamco58XXを二基使用しており、Namco56XXを使用していないらしい。

----

= 各種CPU/割り込み制御 =

 * Namco16XXというチップで行っているらしい。
 * サウンドCPU/58XX/56XXの動作を停止したり、垂直同期割り込み信号を停止したりできる。

----

= ウォッチドッグ =

 * システムが何らかの誤動作により停止した場合、再起動をかける機構。
 * メインCPUからの信号が途絶えると「システムが止まった」と判断してリセット信号を送出するらしい。
  * MAMEのソースによれば、5フレーム以上メインCPUからの応答がないと発動するようである。

----

= メモリマップ =

 * [[メモリマップ]]を参照。

----
[[CategoryHardware|カテゴリ:ハードウェア]]

※以下の内容は基本的にアーケードエミュレータMAMEのソースコードを元にしています。


クロック関連

水晶振動子

  • 各種チップ用のクロックを生成するためのもの。
  • クロック周波数は 18.432MHz。
  • 実機では基板表側のすみに横倒しの形で設置されているらしい?(各種画像より)

Namco07XX

  • ナムコのカスタムチップ。CUSTOM07とも。
  • 水晶振動子のクロックを分周して各種チップ用のクロックを生成するためのチップらしい。


メインCPU/サウンドCPU

  • モトローラMC68A09E相当品。
    • "E"はクロックを外部から供給するタイプを表す。
    • "A"は 1.5MHz程度のクロックで動作することを想定したモデルであることを表す。
  • クロック周波数は 1.536MHz。
    • 水晶振動子のクロックを 12分周して得ている。


ROM

ROM一覧

  • ※「パッケージ上の記載」はぶっちゃけ検証不足である。
    • 筆者が現物で確認したわけではないので。
    • 「パッケージ上の記載」とは、ROMのゲジゲジの背中に貼ってあるシール(?)に書かれた文字の事。

パッケージ上の記載

内容

サイズ

TD1
1

TD1
1B

メインCPU用プログラムROM
($C000~$FFFF)

8bit×$4000

TD1
3

TD1
3B

メインCPU用プログラムROM
($8000~$BFFF)

8bit×$4000

TD1
4

サウンドCPU用プログラムROM
($E000~$FFFF)

8bit×$2000

TD1
5

BG用ドットパターンデータROM

8bit×$1000

TD1
6

スプライト用ドットパターンデータROM(1)
(上位2bit用)

8bit×$2000

TD1
7

スプライト用ドットパターンデータROM(2)
(下位2bit用)

8bit×$2000

TD1-3

波形データROM

4bit×$0100

TD1-5

基本色データROM
($00~$0Fがスプライト用、$10~$1FがBG用)

8bit×$0020

TD1-6

BG用カラーパレットデータROM

4bit×$0100

TD1-7

スプライト用カラーパレットデータROM

4bit×$0400


VRAM

  • プログラムコードを見る限り、VRAMへのアクセスタイミングに特別な制約のようなものは無さそうである。
    • 例えば垂直ブランク期間かどうか等は全く気にしている様子が無い。かなり遠慮なく読み書きしている。
      • セルフテストの際にはスタック領域として使用したりしている。本当にただのRAM扱いらしい。
    • 諸問題はハードウェア側でうまく吸収しているのだろう。たぶん。


画像処理部


音源

  • 音源チップはNamco15XX。CUSTOM15とも。
    • WSG(Waveform Sound Generator)と呼ばれる事もある。ただしこれは他の音源チップも含んだ言葉である。
    • ナムコが開発した波形メモリ音源の一つ。

特徴

  • 8chモノラル。
  • クロック周波数は 24KHz。水晶振動子のクロックを768分周して得ている(らしい)。
  • 波形データはビット深度4bit×32インデックスで構成されたものが8組分ある(ROMにより固定)。
  • 波形インデックス値は整数部5ビット、小数部15ビットの固定小数点数。
    • 波形データを得る際には小数点以下を切り捨てる(たぶん)。
    • data = waveform[int(n)] みたいな感じ。
  • 音量は4ビット値。
  • 音程データは20ビット値。
    • おそらく n = (freq×220)÷24000 である。

    • freq が鳴らしたい音の周波数。

音源用RAM内訳

  • 下記アドレスは CPU2 のメモリ空間に割り当てられたもの。

アドレス

内容

7

6

5

4

3

2

1

0

$0000

未使用?

$0001

$0002

$0003

――

ch1の音量

$0004

ch1の音程値(下位8ビット)

$0005

ch1の音程値(中位8ビット)

$0006

――

ch1の音色

ch1の音程値(上位4ビット)

$0007

未使用?

$0008-$000F

ch2用のデータ

$0010-$0007

ch3用のデータ

$0018-$001F

ch4用のデータ

$0020-$0027

ch5用のデータ

$0028-$002F

ch6用のデータ

$0030-$0037

ch7用のデータ

$0038-$003F

ch8用のデータ

備考

  • Namco15XXだけで音を鳴らしているわけではなく、たとえば D/A変換は Namco99XXというチップで行っているらしい。
    • 筆者はこの辺りをよく知らない。
  • 音声出力をミュートする機能がある(どのチップの機能なのかは未調査)。
    • というか、メインCPUから Namco15XXの動作を止める手段がないらしいので、完全に音を止めようと思ったらミュート機能を使うしかないようだ。


コイン、レバー、ボタン、およびディップスイッチ入力情報管理

  • Namco58XXとNamco56XXの二つが使われている。
    • 富士通の4ビットCPUであるMB8843に独自のマスクROMを載せたもの(らしい)。
    • ぶっちゃけ仕様には不明な点が多い。
  • TODではNamco58XXをコイン管理とレバー・ボタン入力情報管理に、Namco56XXをディップスイッチ情報・筐体情報管理に使用している。
    • Namco58XXはスタートボタンのランプ制御やロックアウト処理などもやってそうな気がするが詳細は不明。
  • どちらも複数の動作モードを持っているらしく、モードによって出力されるデータが変わるようである。

備考

  • TODはマッピーの基板を元に開発されているが、マッピーではディップスイッチ用にもNamco58XXを使用しているようである。
    • マッピーはNamco58XXを二基使用しており、Namco56XXを使用していないらしい。


各種CPU/割り込み制御

  • Namco16XXというチップで行っているらしい。
  • サウンドCPU/58XX/56XXの動作を停止したり、垂直同期割り込み信号を停止したりできる。


ウォッチドッグ

  • システムが何らかの誤動作により停止した場合、再起動をかける機構。
  • メインCPUからの信号が途絶えると「システムが止まった」と判断してリセット信号を送出するらしい。
    • MAMEのソースによれば、5フレーム以上メインCPUからの応答がないと発動するようである。


メモリマップ


カテゴリ:ハードウェア

ハードウェア (最終更新日時 2020-12-28 12:37:41 更新者 keitaroh)