アーロンさんのクリーンアップ計画

去年一年間はドライバのクリーンアップを進めたAaron氏ですが、他の開発者にも役立つように作業予定のチェックリストを公開しています。

タイミング・割り込み:

  • 基板の全てのクリスタルを#defineで記述
  • 全てのCPUとサウンドクロックを#defineの周波数から生成
  • 割り込みの発生タイミングと、発生元を再確認
  • 割り込みのACK実装
  • 正確なウォッチドッグ有効時間の追加

メモリ:

  • リード・ライトメモリマップの統合化
  • 完全なアドレス空間のマッピング。可能ならば回路図から
  • 適切な場所ではAM_SHAREを使う
  • メモリバンキングを新システム(memory_configure_bank)に変換する

グラフィック:

  • レイアウトで可能なところでは決め打ちした値にあけてRGN_FRACを使う
  • 共通のレイアウトは共有する(vidhrdw/generic.c)
  • hblank・vblank・表示領域を正確にする。可能なら回路図から
  • ディスプレイ情報を旧マクロから新マクロに変換
  • 水平・垂直位置用により正確なタイミングルーチンを使う
  • 適用できるところはタイルマップに変換する
  • パレット生成にレジスタを使うよう変更する
  • わかっているものについてはスプライト表示の最大数(スキャンライン毎にいくつかなど)を追加する

入力:

  • 全入力ポートのタグ付け
  • コード内のポート参照を全てタグを使うようにする
  • 非DIP設定をconfigに変換する
  • 適切な場所ではメモリオーバーライドに代えて、PORT_CUSTOMを使う
  • コインカウンタを正確にする
  • 基板出力を新出力システム経由で接続する
  • DIPLOCATIONSを追加する
  • DIPスイッチと入力の検証

ROM:

  • メモリ領域を必要最低限にする
  • ROM名が妥当・正確か調べる
  • 未エミュレートのクローン版がないか調べる

その他:

  • ソースファイルの整理: header, includes, constants, typedefs, macros, globals, inlines, code
  • ドライバファイルを次の順に統一: address maps, input ports, graphics definitions, sound configs, machine driver, ROMs, driver init code, drivers
  • セーブステートサポート
  • グローバル変数を全てdriver_dataの後ろに移動
  • ぐちゃぐちゃのコードをわかりやすくする

Aaron Giles' Home Page