よくわかる「TGBの履歴」：

αの歴史

 4/21 0.00  開発開始
 4/23 0.00  枠組み完成。Z80資料集め完了
 4/24 0.00  Z80エミュレーションコアα0完成
 4/24 0.00  Z80荒削り完了
 4/24 0.00  Z80 bug fix 8個
 4/25 0.00  Z80 bug fix 10数個
 4/25 0.00  スプライト実装
 4/25 0.01  背景実装。「ドクターマリオ」タイトル/デモ画面を確認。
 4/25 0.01  描画系バグフィックス
 4/25 0.02  入力系実装。(が、ドクターマリオは応答しない)
 4/25 0.03  割り込み修正。
 4/25 0.04  今回もやはりあった、結構大きめのバグを退治。
            (マクロ中の変数の干渉)
 4/25 0.04  BITテストオペレーションに重大なバグ発見
 4/25 0.05  MBC1&MBCサポートルーチン実装
 4/26 0.051 割りこみで落ちるバグフィックス 
 4/26 0.052 レンダリングエンジン修正
 4/26 0.053 MBC2サポート
 4/26 0.054 カートリッジRAM&RAMバンク切り替え対応
 4/26 0.060.200
            200ビルド記念号
            画面サイズ変更、スクロール完全サポート
            エラーメッセージの緩和
            (この時点でポケモンが少し動いた)
 4/26 0.07  MBC3、MBC5実装、CPUのクロックを実際の1/4に
            してしまっていたのを修正。
            (マリオランド完動か)
 4/27 0.071 Z80コアのBugFix多数
 4/28 0.08  ディバイダーレジスタの実装。ドクターマリオ、テトリス完動か?
 4/28 0.09  (ビルド250)LCD修正。完全か?
            割りこみ補正
            サガ1&2完動?
 4/28 0.091 8*16スプライトフルサポート
            えらい数のROMが動作した
 4/29 0.092 ウィンドウ表示サポート
            ポケモンが実は動いてた!
 4/29 0.093 P1レジスタからのリードに関するバグ消去
            ポケモン完動?
            デバッグ情報を減らした
 4/30 0.100.300(公開初版)
            300ビルド記念号
            (へっぽこ)サウンドのサポート
 4/30 0.101 サウンドの本格的な実装(Ch1&Ch2)
 5/1  0.102 サウンドほぼ完璧(2つの矩形波のみ)
 5/2  0.103 任意波形波実装(かなり良好)
 5/3  0.110 バッテリーバックアップサポート
 5/3  0.111 フレームスキップサポート
 5/3  0.112.400
            400ビルド記念号
            ファーストフォワード機能付加
 5/3  0.120.440
            440ビルド！
            ついに！通信機能実装。
            構想2/3月、制作12日の超大作が今ここに！
            (動作確認：ドクターマリオ)
            が、2重起動すると動作がとんでもなく遅い。
 5/4  0.121.444
            HBlank割りこみの実装
 5/4  0.122.446
            割りこみ順位の実装
            ポケモン金・銀で確認
 5/4  0.123.447
            STATリーディングのバグFix
            リトルマスターシリーズ動作
 5/5  0.124 割りこみの完全化
            ポケモン金・銀は動いたとみてよさそうだ。(5/8良く無かったです)
 5/5  0.125 割りこみ修正に基づく通信系のバグフィックス
            速度が急激に低下
 5/5  0.126 STATリーディングを完全にした
            速度が悲しいほどに低下
            だが,かなりのROMが動作。
            RTYPE、RTYPE2、悪魔城スペシャルドラキュラくん、ロックマン4、
            モータルコンバット(もーこん最高！)
            ドラえもんあるけあるけラビリンス、サガ3(中途)
            PuzzleBoy、PuzzleBoy2、GBWAES、GBWARSTurbo、X、ワリオランド2等
 5/5  0.127 LCDC割りこみの完全実装
 5/5  0.128 フレームスキップにまつわるバグ修正
 5/5  0.129 MBC1の挙動を修正
            ぷよぷよ1、スーパーロボット対戦2、等が動作。
 5/5  0.12A パッド読み取りの挙動を修正。
            ドラクエI&II、ドラクエモンスターズテリーのワンダーランド、
            RealBout(GBで格ゲーねぇ…)、カービィ2、ナムコギャラリー1、
            等が動作
            関係無いと思うが、カービィのスター何とかが動作していた。
 5/6  0.12B LCDC割りこみの不具合訂正
 5/6  0.12C キーコンフィグ追加
 5/6  0.12D サウンドの出力が左右反対になっていたのを修正
 5/6  0.12E 設定ファイルを作成するようにした
 5/6  0.130.486
            486ビルド記念
            MBC3のRTC実装(Windowsの時間を利用)
            ポケモン金で確認
 5/6  0.131.500
            500ビルド
            割りこみの完全化(今度こそ)
 5/6  0.132 リセット機能の実装
 5/6  0.133 画面サイズ変更の実装、フルスクリーンの実装
            ショートカットキーの実装
 5/7  0.134 割りこみのバグ取り(聖剣伝説動作)
 5/7  0.140 どこでもセーブ実装
 5/7  0.141 通信の高速化,全体的に少し高速化
 5/8  0.142 INIファイル生成場所が変になるバグの消去
 5/8  0.143 MBC5のセーブルーチンのバグ消去
 5/8  0.144 チェックサムを調べるようにした
 5/8  0.145 なんとZ80コアのバグを発見(CALL NC)
            ポケモン(赤・緑・青・ピカ)で時々止まるバグが直った
            風来のシレンGB月影村の怪物が動くようになった
 5/9  0.146 Colorに一応対応
            (対応といえるかはきわどいところ)
 5/9  0.147 機種セレクタを付けた
 5/9  0.148 32サンプルウェーブ波(仮)が1オクターヴ低かったのを訂正
            またある一定以上の周波数は発声されていなかったのを修正
 5/9  0.149 DMAにかなり大きめのバグが発覚/修正
 5/9  0.14A 特定の条件下でスプライトが表示されないバグの訂正
 5/9  0.14B カラー用セーブルーチン作成
 5/9  0.150 (公開第二版)
            カラーで内部RAMバンクにとんでもない過ちを犯していたのを修正
            起動すらしなかったGBC専用ソフトのほとんどが起動はするようになった
            スプライトレンダリングのバグフィックス
            BGレンダリングの(ほんの少し)チューンアップ
            HDMAの1ラインづつのバグフィックス
            (ここいらでマイナーバージョンをあげておこう)
 5/13 0.151 ウインドウ表示に関するバグを取った
 5/13 0.152 カラーセーブでまれに(よく)落ちるバグを取った
 5/13 0.153 4MBのROMに対応(遊戯王2等)
 5/14 0.154 HDMAに関するバグを取った
            画面表示が正しくなった
            (ポケットぷよぷよSUN、マリオゴルフ、等)
 5/14 0.155 ウインドウ表示の仕方(2つ以上に切られたとき)が間違っていたのを訂正
            マ/エリーのアトリエのせりふが表示されるようになった。
 5/14 0.156 Cheatコードに微妙に対応
 5/14 0.157 ノイズチャンネルの微妙なサポート
 5/14 0.158 またまたなんとZ80にバグがあった
            風来のシレンの満腹度が怪しかったのが直った

 5/14 0.160.777(公開第３版)
            ラッキィセブンビルド！
            割りこみがやっと完全になった(と思う)
            LCDCの停止中の割り込みの挙動を変えてみたら
            ポケモン金・銀でリセットがかかるのが直った
 5/15 0.161 ウィンドウ表示が1ラインずれていたのを修正
 5/16 0.162 STATからの読みこみを修正
            サガ3の戦闘突入時に止まるバグが直った
 5/16 0.163 Publishビルドを制定
            Traceなどを作らないバージョン
 5/17 0.164 カラーから普通のGBもしくは普通のGBからカラーのセーブデータを読み込んで
            かつ、機種が自動判別だったとき、自動判別で無くなってしまうバグを修正

 5/17 0.170 少し高速化(3FPSぐらい上がった)＆高速化開始
 5/17 0.171 シリアル転送にバグ発見
            ビートマニアか動作するようになった
 5/18 0.172 LCDの最適化1、8%ほど高速化
 5/18 0.173 LCDの最適化2、さらに8%ほど高速化
            やっと実機の1.5倍速になった(うちでは)
 5/18 0.174 さらに最適化、5%ほど高速化
            0.170から合計で20FPS以上上がった
 5/18 0.175.900
            LCDのバックの最適化が1段落ついた
            現在のFPS96ぐらい
 5/18 0.176 サウンド更新処理の改善
            50%以上も高速化
 5/18 0.177 ウインドウ表示の最適化
            ウインドウ表示ありのときのFPSが格段に上がった
 5/18 0.178 サウンド更新のときにバグを盛りこんでいたのを修正
 5/18 0.179 ポケモン金･銀のポッポの鳴き声で落ちるバグの修正
 5/18 0.17A MBC5のRAMバンクにおける欠陥の修正
 5/18 0.17B カラーのBG拡張の水平、垂直反転をフルサポート
 5/18 0.17C スプライト表示の最適化
            一気にFPSが40上がった
            現在170FPSぐらい
 5/18 0.17D いつのまにかFPSが140に戻ってた
 5/19 0.17E ROMのDrag&Dropに対応(未完成)

 5/21 0.180.1000
            ビルド1000号目記念！！
            オンライン接続に対応
            ミニチャットウインドウを作った
 5/21 0.181.1030
            オンライン機能がやっと使えるようになってきた
 5/22 0.182 通信中に片方か接続を切ったらもう片方がハングアップするバグを修正
 5/22 0.183(公開第４版)
            キャッシュミスヒットでパフォーマンス落ちしていたのを修正
 5/24 0.184 MBC3のメモリバンク切り替えのバグ修正
 5/26 0.190 CPUの最適化。約1.1倍から2倍(物によってかなり違う)の飛躍的なパフォーマンスアップ
 5/26 0.191 Drag&Dropで読みこんだときセーブファイルが変なところにできるバグの消去。
            (安心してDrag&Dropを使ってください)
 5/26 0.192 SAVファイルのサポート
            (SAVEフォルダにSAVファイルがあればそれを読みこむ
             その場合終了時にはSAVファイルを上書きする
             無ければRAMファイルを読む
             その場合はRAMを上書きする
             両方無ければRAMを作成する)
 5/26 0.193 あちこちで非常に不評だったロード時に必ず「Core Error」と出る手抜きを修正
 5/26 0.194 連射機能装備
 5/26 0.195 何もロードしていないときにリセットをかけると動作が保証されなかったのを修正
 5/26 0.196.1111
            表示画面をBMPで保存する機能追加
 5/26 0.197 スキップ0以下の導入(意図的に遅く出来る)
 5/26 0.198 LZH書庫ファイルの読みこみに対応
 5/26 0.199 ZIP書庫ファイルの読みこみに対応
 5/27 0.19A RAR書庫ファイルの読みこみに対応
 5/27 0.19B CAB書庫ファイルの読みこみに対応
 5/27 0.19C FPS表示きりかえ追加、スキップ時のFPSを仮想FPSに変えた。
            (実機の何倍相当か一目でわかる)
 5/27 0.19D 1555(16BPP)フォーマットに対応
            (未デバッグ)
 5/27 0.19E チートコードの実装を本格的にした。
            (速度はじんわり落ちたが…)
 5/28 0.19F チャットの実装を要望に合わせてみた。(不完全)
 5/28 0.19G 変わり映えしないバージョン情報を変えてみた(あまり変わっていない…)
 5/28 0.19H カートリッジタイプFFに一部対応
            (ポケモンカードGB)
 5/29 0.19I 微妙にウインドウを変えてみた
 5/29 0.19J Z80に自分でも情けなくなるようなバグを発見
 5/30 0.19K 高速コアの割りこみ補正
 5/30 0.19L 高速コアのシリアル割りこみ補正
 5/30 0.19M 高速コアをデフォルト選択に
 5/30 0.19N 1555の16BPPフォーマットのときにスクリーンショットがうまくいっていないと思われたので
            きちんと動作すると思われるようにした。(当然未デバッグ)
 5/30 0.19O 欠番(0.190と間違えられるといやだから)
            パッドの方向キーからの入力を改良したけど書くのを忘れていた。
 5/30 0.19P.1280(公開第５版)
            ベースの速度を設定出来る様にした。
 6/2  0.19Q アイコンを微妙に変更
 6/2  0.19R シリアルポートというのが紛らわしいようなので,
            オフライン通信に改名
 6/2  0.19S.1324
            PARもどきの実装
 6/3  0.19T LCDCの挙動の変更
            パワプロクン2が起動できないのが治った
 6/3  0.19U 1555フォーマットでキャラクタが真っ黒になってたかもしれないのを修正
 6/4  0.19V ノイズチャンネルの改善
 6/4  0.19W 高精度通信モード追加(激遅)
 6/4  0.19X ベースクロックと言う単語が紛らわしそうなので、基本FPSに変更
 6/4  0.19Y 閾値を変えてみた
 6/4  0.19Z (公開第五版)
            テンポラリサーフェースをシステムメモリに確保するようにした。
            速度がものすごく上昇
 6/5  0.19Z'ノイズのクオリティーが格段に向上
            (以前は実際より7オクターブ低くしていた)
 6/6  0.1A0 Z80のかなり大きいバグを修正
            ワリオランド2でリセットがかかるのが治った
 6/8  0.1A1 STATからの読みこみを補正
 6/8  0.1A2 INIファイルの構成を大幅改良
 6/8  0.1A3 INIにディレクトリ情報を保存
 6/9  0.1A4 連射専用キーの追加
 6/9  0.1A5 閾値設定の大幅改良(Thanks for Nexus Duckさん)
 6/9  0.1A6 連射速度の設定機能追加
 6/9  0.1A7 INIにウインドウサイズを保存するようにした
 6/9  0.1A8 連射のバグFIX
 6/9  0.1A9 INIファイルのバグFIX
 6/9  0.1AA ノイズの音質改善
 6/9  0.1AB.1500
            通信の改善
 6/12 0.1AC もう一つ起動の時にカレントディレクトリがおかしくなるのを修正
 6/12 0.1AD LCDCのLCYの挙動変更
 6/12 0.1AE 英語版
 6/18 0.1AF Pad立ち下り割りこみの実装
            ArrayWay完全動作！
 6/18 0.1AG PCM波のボリュームが小さいような気がしたので2倍にしてみた。

βの歴史

 6/18 0.200 通信リニューアルβ1
 6/23 0.201 サウンドオプションの実装
 6/23 0.202 やはり波形波少し大きいような気がするので少し小さくした。
 6/24 0.203 ポーズ機能追加
 6/24 0.204 WM_PAINTのハンドラを追加(ROMLoadの時とかにダイアログを動かした時に
                                     再描画されなかった不具合修正)
 6/24 0.205 メモリダンプツールの実装
 6/25 0.206 オンライン切断機能追加(いまさら…)
 6/25 0.207 オンライン状態表示実装
 6/25 0.208 オンライン機能の穴修正
 6/25 0.209 TPPEを起動する機能の追加
 6/25 0.20A フルスクリーンの実装をまともにした
            (割とあっけなかった)
 6/25 0.20B 起動時に画面サイズ2倍以外だと不具合が起こるのを修正
 7/2  0.20C MBC2修正、アレサ2動作
 7/4  0.20D チートの起動の高速化
 7/4  0.210 チートコードの大幅強化
            内部処理完全改変
            新たなコードの追加(繰り返し：条件分岐)
 7/4  0.211 チートの保存機能追加
 7/4  0.212 不具合訂正
 7/4  0.213 メニューデザイン変更
 7/6  0.214 特定のキーにより片方の入力を両方で使える機能を実装
 7/6  0.215 キー1つで発動するイヴェントをなくした(文字が打てなくなるため)
 7/8  0.216 振動機能搭載(画面効果による)
 7/9  0.217 通信精度があまりに低くなってしまったので0.183通信コアに戻した
 7/9  0.218 特定のパッド(閾値設定に失敗するもの)が原因で起動しないことがあるのを修正
 7/10 0.219 サウンドちょこっと改良
 7/11 0.21A デフォルトでFPS表示無しにした
 7/11 0.220 赤外線ポート実装(0.20Aに同じ)
 7/11 0.221 チートコードの自動名前生成の不具合修正
 7/11 0.222.1828 (公開第7版)
            ショートカットキー大幅追加
 7/17 0.223 FFBに対応
 7/17 0.224 GB-PARの振動に対応
 7/18 0.225 バグ修正
 7/18 0.226 HDMAの転送のバグ修正
            (ミスタードリラーのブロック正常表示)
 7/21 0.227 ROM情報の表示/非表示オプションの追加
 7/22 0.228 チートをロードした時に最下位がおかしくなるバグを修正
 7/22 0.229 サウンドコードの大幅な書き直し
            (相当向上した)
 7/22 0.230 アイコンを微妙に変更
 7/23 0.231 ノイズの発声法を変えた
            音の切れが断然良くなった
 7/24 0.232 サウンドエンジン2(なんとなく)を搭載
            エミュレーション精度が極端に向上
            ほぼ完璧といって良いだろう(か？)。
 7/25 0.233 サウンドに関する実にしょうもないバグの修正
 7/25 0.234 サウンド生成をPCMが再生可能なほどにまで高精度化
            機動戦艦ナデシコルリルリ麻雀にて確認
            やっぱり声が出ると楽しい
 7/25 0.2345.2000
            PCM ポケモンピカチュウタイプに対応
 7/25 0.23456
            PCM マ/エリーのアトリエタイプに対応 
 7/25 0.234561
            ナデシコ麻雀タイプの発声をきれいにした
 7/26 0.234562
            バランス調整(ゲームみたい…)
            …ポケモンピカチュウのヴォリュームとか
 7/29 0.240 SGBのボーダー表示に成功？ 
 8/5  0.241 PSGを少し改良。
            DQMテリーの…(以下略)の「きらきら」というような音を微妙に再現。
 8/6  0.242 機種自動判定のコンフィグを作った
 8/7  0.243 SGB機能を切った
 8/8  0.244 Batteryのスペルが間違っていたのを訂正
 8/8  0.245 デフォルトのフレームスキップを-1に変更
 8/19 0.246 CPUが倍速モードの時にPCM再生のためのクロック計算が狂っていたのを修正

 Dualの歴史

Vol.0までの変更点

◎レンダラ系

・DirectInput入力ルーチンの書き直し、それに伴うキーコンフィグダイアログのノンブロッキング化。
  (要望もあったので)
・パッドの複数サポート(最大16個までいけるはず…)
・ログをファイルでなくオプション表示に実装した。
・速度設定を詳細に行えるようにした(分かりにくくなったかも知れません)。
・システムキーの定義ができるようにした。
・DirectDrawSurfaceとGBのパレットのコンバートルーチンが1555の16ビットフォーマットのとき
  一部間違っていたのを修正。

◎GBシステム系
・新技術Dual Transfer Architecture(DTA)の搭載による通信の安定化(とか言ってみたりする)。
・リアルタイムセーブデータフォーマットに音声状態を付加。(下位互換性はあるはず)
・リアルタイムセーブのスロット選択を排他的にした。(スロット数は10個に減った)

◎MBC系

・コロコロカービーに対応。
・RTCのエミュレーション対応とかいっておきながら､実際にはポケモン金銀ぐらいしか
  まともに動いていなかったのを修正(カードヒーロー、カードキャプターさくらにて確認)。

◎個別カートリッジ

・ダンジョンセイバーが正常に動くようになった。
・カードキャプターさくら友枝小学校大運動会が動くようになった。
  (なんかこの辺エミュレータートラップなんだろうか？)
・ワリオランド2/3、ポケモンピンボール、牧場物語3、おじゃる丸、などでパレットがおかしかったバグの修正。
  色がおかしいというものはたいてい治ったはず。
・がんばれゴエモンもののけ道中飛び出せ鍋奉行､ビートマニア､ときメモGB､などコナミ系で
  極度に動作が重いソフトがあった問題の解決(たぶんコナミ系はこれでOK)。
・ぷよWARSが非常に重かったのを解決。
・マリー/エリーのアトリエで上方ウインドウが表示されなかったバグの修正。
・マリー/エリーのアトリエでウインドウが無茶苦茶に振動するバグの修正。
・アルルの冒険のオープニングおよびウインドウ表示がおかしかったのを修正。
・マリオのピクロスでウインドウ表示がおかしかったのを修正。
・ハンターＸハンターでいろいろな表示がおかしかったのを修正。
・PerfectDarkにおいて画面表示全体がかなりおかしかったのを修正。
・平安京ALIENが起動したりしなかったりだったのを修正。
・第二次スーパーロボット対戦の文字が化けていたのを修正。

◎LCDC系

・LCDCコントローラタイミングの完全化。
・LYの実装をかなり正確にした。
・LYとLCYの比較のタイミングがおかしかったのを修正。
・LCDC系のレジスタに値が書き込まれたときの挙動を修正。
・STATレジスタの実装完全化。
・タイマの実装の完全化。
・GBC領域のレジスタの実装の完全化(読み込み方向はかなり適当だった)。
・CPUクロックサイクルの(ほぼ)完全化。
・HDMAの実装をちょっと修正。

・LCDエミュレーション部の一新。
-スプライトをラスター描画するようにした。あらゆるスプライトが正常に。
-LCDC/STAT/LYレジスタの実装修正と関係して､1ラインずれの問題がほとんど解決。
-スプライトがBG面より後ろに存在する場合の処理が(対応したといっておきながら)
 無茶苦茶だったのを修正。
-カラーにおいてもスプライトが裏面にある場合の処理を(一応)実装。
 (ポケモンのラプラスとか)
-カラーにおけるウインドウ表示の機能全実装
-拡大率の関係で画面に線が入ったような状態になっていたのを修正。
-ぷよぷよ通のオープニング､ナムコギャラリー2:GALAXYAN等､BG非表示状態＆スプライト表示状態のとき
 前フレームの画像が消去されないのが解決
-画面が切り替わりときにゴミが表示されることがほとんど無くなった。

◎サウンド系

・サウンドエンジンをVer3に改める。
-ソフトウェア合成方式に変更。
-分解能 1/256から1/44100に上昇 より正確なリズムで音楽を奏でることが可能に。
-カードヒーローのオープニング､魔法騎士レイアース2のオープニング､など音波を可聴領域から外すことによって
 (実機からは確かに超音波が出ているはず…PCM再生がこの手法を使っているところを見ると)
 音を切っている音楽の正常再生
-ノイズをホワイトノイズから多項式カウンタによるものに変更。
-ときメモGB､サクラ対戦､等において音声が変だったのを修正。
-魔法騎士レイアース2の音声が発生されていなかったのを修正。
-事実上すべてのPCM再生に対応(保証はしませんが)
-DQモンスターズ、カービィ2、他様々なゲームにおいて高周波域の音が(一応前もそれっぽくまとめはしたが)
  アルゴリズム上の制約から鳴らせていなかったのを修正。
-その他いろいろ間違いの修正(ただ､ボイスがぶちぶちになったような…聞こえる範囲だとは思うけど)。
…サウンド周りは大体完璧になったと思います。実機と明らかに違う点を見つけた方､もしくは各チャンネルの
  ボリューム比がおかしいなど､お気づきの点がありましたら､ご一報ください。

2000/08/某日 0      作成決意
2000/09/某日 0      一応動作した
2000/10/1    0      これを書いている
2000/10/10   0      いろいろ修正
2000/11/7    1      書くの忘れてた…
                    それほどもう何がなんだかわからんほど修正(上記)
                    e.g.ザードの伝説
2000/11/8    1      通信速度32倍モード実装。
                    ダンジョンセイバー通信確実になった。
                    通信クロックを間違えてたっぽい(*8?)。
                    テトリス通信可能に。
2000/11/9    1      HuC1のエミュレーション追加
                    ミラクルオフゾーン動作。
2000/11/XX   1      いろいろ機能を復元&強化。
2000/11/16   1改    デバイス拡張
                    こっそりバグ修正
2000/11/27   2      ネット通信を利用可能に
2000/11/30   2      コンフィグ追加
2000/12/2    2      ネット通信改良
                    Dr.マリオ、10Base-TのLANにおいて通信成功を確認
                    極めて良好
2000/12/3    2      MBC3/RTC設定ツール実装
2000/12/5    N/A    ReadMeを編集した
2000/12/8    2      こまやかな修正
2000/12/9    2改    チャットの実装
2000/12/10   2改    スプライトのクリッピングにバグがあったのを修正
                    BG面のプライオリティを実装
                    (そんなんあるなんて全然知らなかった)
                    スプライト透過色の処理を完璧にした。
                    画面描画部分にはもはや間違いは無い(完璧にしたのはカラーのみ､だが､モノクロのほうも間違いは無いはず)。2000/12/10   2改    CPUの消費クロックがかなり間違っていたのを修正
                    条件分岐等のペナルティも計算
                    多分完璧
2000/12/10   2改    パレットからの読み込み､未使用ビットを保存するようにした
                    (ここを突いて来るソフトがあるため)
2000/12/11   2改    STATとLCDCタイミングとVBlankタイミングの関係がまだ間違っていたみたい
                    (DQ3ゾーマ倒した後､Piaキャロットへようこそ2.2)
2000/12/11   2改    LYに書き込んだときの挙動を変更(LitteleMaster)
                    画面表示の条件を修正(僕のキャンプ場､六門天外モンコレナイト)
2000/12/11   2改    HDMAにおいて､ROMバンクからの転送にバグがあったのを修正
                    (DonkeyKongCountry､等多数)
2000/12/11   2改    FastFowerdの前後でウインドウ表示が乱れるのを修正
2000/12/12   3      LY=0の期間を修正(TombRaider他､多数の海外産ROM)
2000/12/13   3      Window表示に関するつまらないバグの修正
                    (怪人ゾナー)
2000/12/14   3      SRAMサイズ「5」に対応(ポケモンクリスタル)
2000/12/14   3      HDMA転送中止条件修正(ポケモンクリスタル)
2000/12/14   3      GDMA転送条件修正(TheMummy､NickToonsRacing､HeroesII､等 海外系今まで画像表示が変だったやつ)
2000/12/14   3      HuC-3動くだけ動くようにした(時計とか解りません､シリアルにやり取りしてるっぽいので)
                    (ロボットポンコッツ等)
作者注:
  この時点において､私が所有するROMのうち動作が怪しいものは､
  ・カエルの為に鐘は鳴る(途中でリセットがかかる)
  ・ポケモン金・銀(おにいさんに教えてもらうところで止まる)
  ・たまごっちオスっちとメスっち(TAMA5解らない)
  他はほぼ完璧なエミュレーションと言っていいのではなかろうか?

2000/12/15   3      アプリケーションサイズのシュリンク
                    (20KBほど縮んだ…増えた分を差っぴくと12KB程度か)
2000/12/15   3      リアルタイムセーブをメニューから可能にした
2000/12/15   3      起動時に画面に少しゴミが入っていたのを修正
2000/12/15   3      スロット2だけに読み込んだときに落ちるバグの修正
2000/12/15   3      ロムを開放できるようにした
2000/12/15   3      接続が切れたときにロムを開放するようにした
2000/12/15   3      IPアドレス履歴をつけた
2000/12/15   3      チャット修正
2000/12/15   3      オンライン通信機能､レイテンシ修正
                    ちょっとしたバグの修正
2000/12/15   3      ログのスロット番号が一個小さかったのを修正
2000/12/16   3      モノクロのスプライト処理を完全化(これでカラー/モノクロともに完璧に)
2000/12/16   3      ジョイスティック2つ目以降がうまく働いていなかった上に
                    2つ目があると1つめさえもうまく働かなかったバグの修正
                    (かなりしょうもないバグでした)
2000/12/17   3改    SRAMサイズ5が間違っていたのを修正
                    (MBC3って32KBまでしかマップできんかったような…資料の間違いかな?)
2000/12/17   3改    スプライトによりHBLANKおよびOAM､VRAM捜査期間を変動するようにした
2000/12/17   3改    MBC1の処理に､極めて再現度が低い(IRQ毎にメモリマップ記録/復元しているROMで､
                    2000h領域を設定してから4000h/6000h設定するまでに割り込みがかかり､さらにその割り込みの
                    2000h領域を設定してから4000h/6000h設定するまでに他の割り込みがかかった場合､
                    2つの割り込みを抜けたときにメモリマッピングがおかしくなる。
                    そんなROMはカエルの為に鐘は鳴るしかないが､
                    HBlank毎に割り込みを掛けている上にちょうどいい時期にタイマ割り込みがかかるように仕組まれている上､
                    タイマ割り込み中にEIをしているため､結構の頻度で発生する)､かつ非常にしょうもないミスを発見。
                    というか､ここはこうだろう､と言うような感覚で実装していた。
                    (こりゃ他のエミュレータで同様の現象起きる分けないわ)
                    ここで､やっとこさ､カエルの為に鐘は鳴るリセットがかかるのが直った。
                    (久しぶりに(いつものことながら?)自分をしばきたくなりました)
                    あとは､ポケモン金銀クリスタルで､おにいさんで止まるバグだけか…
                    (5分ぐらい我慢すると進行するそうです)
2000/12/17    4     サウンドのSquareWave1のスウィープ掛ける条件に一部間違いがあったのを修正
2000/12/18    4     メタルギアエレベーターで止まるバグの修正(これもあからさまな…)
2000/12/18    4     未定義ハードウェアレジスタの更なる実装
2000/12/18    4     8MBROMに対応(電車でGO2)
2000/12/18    4     IRQかかるタイミング微妙に修正(電車でGO2)
2000/12/18    4     波形メモリ初期値変更(多分何も変わらないけど)
2000/12/20    4     スクリーンショット機能追加
2000/12/20    4     WAVE記録機能追加
2000/12/20    4     ポケモンクリスタル､ウバメの森で止まるとの事だが､止まらんじゃないかー
                    (Vol.4になってからか?)
2000/12/20    4     パッド関連修正?
2000/12/20    4     もっとパッド関連を修正
2000/12/21    4     STOP命令を修正(遊戯王4)
2000/12/23    4     HDMAのクロック数の実装完全化のときに(かなり凄まじい)バグを盛り込んでいたのを修正(DQM)
2000/12/24    4     (クリスマスイヴだ)
                    STATレジスタをちょっと修正(Super Street Basketball 2)
2000/12/25    4     MMM01エミュレーションを一部実装
2000/12/25    4     24/32BPPに対応(パフォーマンスがお粗末)
2000/12/25    4     画面色フィルタ実装
2000/12/25    4     振動機能を復活(これで旧TGBの機能は完全復活です)
2000/12/25    4     モーションセンサーのアナログコントローラでの操作実装(コロコロカービィ)
2000/12/25    4β   パッド関連処理を少し変更
2001/--/--    --    ローパスフィルタ＆エコーフィルタ追加
                    24ビット処理の修正
2001/02/28    4γ   ファイル名つーかこんな難しい文字使わんわ！ボケ！！問題。の解決。
2001/02/28    4γ   サウンド左右逆らしかったので修正
2001/03/03    4γ   9x系のPAR(XT-Z用?)コードに対応
                    チートコード検索の極些細なバグの消去
                    非カレントRAMの検索に対応
2001/03/04    5     Vol.4正式版は凶数だから欠番にします
                    POPさん作､TPPE改を同梱させていただきました。
                    一時停止機能の追加
2001/03/06    5     コマンドラインからの読み込みに対応
                    コマンドラインオプション/f(フルスクリーン状態で起動)追加
                    ESCでプログラムを終了するようにした
                    スナップショット､サウンドレコードのファイル名をゼロサプレスするようにした
2001/03/07    5     チートコード保存したとき､漢字が化けることがある(と言うより､化けないこともある､
                    と言うより､稀に化けない)のを修正
                    運命の日まであと3日…
2001/03/07    5     非カレントRAM絞り込み検索にバグがあったのを修正
2001/03/07    5     DQM-俺にあだ名をつけるな！問題。の解決。
                    メタルギア-エレベータ問題と競合していた。
2001/03/07    5     サウンド設定マスターの実装
2001/03/07    5     回路の欠陥微修正
2001/03/08    5     ムービー機能実装
                    あと2日
2001/03/08    5     ムービー機能微修正/機能追加
2001/03/09    5     GBRファイルの再生に対応
                    (VBlank/Timerとも)
                    明日…
2001/03/19    5'    DirectSoundバッファをゼロクリアし忘れていた
2001/03/21    5'    拡張デバイスアンロード時にバグがあったので､修正
2001/03/27    5'    24BPPの処理が間違っていたのを修正
2001/04/05    5'    マジックナイトレイアース2の音声がノイズだらけだったのを修正
                    ヴォリュームチェンジで波形生成の内部カウンタがリセットされるらしい
2001/04/06    5'    GBCでムービー再生が正常に行われないのを修正
2001/04/06    5'    ヴォリュームチェンジの時でなくてキックの時でした
                    当たり前と言えば当たり前か…
2001/04/06    5'    全チャンネルキック時の内部カウンタリセット実装
                    これですべてのボイスはそれなりに聞こえるはず…
2001/04/11    5'    起動時にカレントディレクトリをコマンドラインから抽出するようにした
                    (コマンドラインからの起動時にルートディレクトリにsaveフォルダ等が
                    作られてしまうのが直ったはず)
2001/04/12    5'    起動してからじっとしているといつまでたってもマウスカーソルが
                    砂時計のままになっていたのを修正(またなんと言うか､間抜けなミスだった…)
2001/04/12    5'    チートコードを機能拡張
                    有効/無効切り替え機能
                    入力後編集機能
                    名前の文字数制限16文字から256文字へ変更
                    デフォルトの保存フォルダをメディアフォルダに変更
                    ダイアログのタイトルに怪しいのがあったので修正
                    ファイルからのロードルーチンのバグを修正
                    (ファイルへの保存の際に有効/無効の項まで保存しません)
                    (入力用とサーチ用は競合しますので同時使用はお避け下さい)
2001/6/XX     5''   サウンドを微妙に修正
2001/6/21     5''   微妙に修正
                    赤外線通信､プラグインとの連携が取れてなかったのを修正(GB同士の通信は無理)
                    メニューバーフルスクリーン時描画
2001/7/2      5''   ネット通信修正
                    直ったかどうかは不明…
                    と言うか､原因はわかるのに直し方が分からない…自身の技量不足をひしひしと感じる
                    まぁ､何とか形にはなったつもり
同刻          5''   GBRプレイヤ機能に波形表示追加

XXXX/X/XX     7     何を変えたんだったか忘れた。
                    取り敢えずGPLにしたがってソースを公開することにする。
2001/9/22     7'    GBAモード選択機能
                    CPUログ切り忘れ修正

§11 TGB 開発記(雑記帳) : 記1

4/29
 TGB開発開始から早一週間。私はこの一週間良い仕事をして来れただろうか。
 開発３日めにしていきなりドクターマリオのロゴが拝めてしまったのは、
なんと言うかちょっと拍子抜けであった。TNes(私がちょっと前に作った、
というか現在開発中)の時の苦しみとは手のひら返し的な(何が言いたかったん
だろうか?)感じである。TNesのとき、初めてマリオがとことこ歩くのを観察できたのは
開発開始(第一次)からから実に２ヶ月以上も後のことで(第二次からは11日)、
しかも前はFCEをベース(と言うほどでもないかもしれない)にして作っていたので、
今回は、何のソースも見ずに(Z80系でZ80.Cをほんの1部参考にさせて頂きました)
ここまで出来たというのは、私のプログラマとしてのレベルが上がったのか、
はたまたGBが異様に簡単なハードなのか、何を示しているのだろうか。
(たぶんZ80というCPUが、前の6502と違って極めて良く見知った8086、80486系列の
i8080の上位コンパチで、アーキテクチャ自身もNESより数段きっちりしたもの
だからだというようなおちだと思う)
 とりあえず、当初目標のポケモン交換(何でLv.50でゴローニャにならないのか
本気で悩んだ)まではまだまだのようです。(ちなみに私はポケモンあまり解りません)
開発動機がこれだけなのでそんなに時間をかけるわけにもいかないが…
 (Nesのときの「ミシシッピ完璧に動かしたい」という動機よりは随分立派に見える)

5/2
 久々に凄いドジをやらかした。まさに「恥ずかしながらドジりました」(Cマガ愛読者)
と言う感じだ。具体的には、PSG(でしょうか？)のウェーブメモリに値を代入するのを
忘れていて、(mem[ptr-0xFF10];とやっていた。=datが抜けている。)ウェーブが
常にぶじぶじした音を立てていたと言うもの。これに2日気づかなかった。情けない…

5/3
 カラーの資料が無い…

5/3
 ↑ので、一気に通信機能を実装することにした。
 資料が英語しかない上、かなり少ない。
 大方想像でやってみたが、なかなか出来ない。
 ふとシリアルは双方向通信デバイスであることを思い出す。
 割りこみのタイミングを送信完了ではなく、受信完了にしてみる。
 受信側(エクスターナルクロック選択側)のみ上手くいく。
 通信のログを見てみると、送信側も割りこみでSBを読み取っていた。
 送信した後は0になると思いこんでいたため、当然いつもSB=0だった。
 まさか、Extの方はIntのほうが入っていたら押し出されるのか?
 と思い実装。うーんなかなか上手く行かない。
 割りこみと変数代入のタイミングを間違っていた。
 (プロセス間通信は奥が深い)
 バグ修正、割りこみタイミングの補正等さまざまな苦節を経、
 やっと、ドクターマリオの対戦が出来た！
 ふう、やっと目的が、ってまだポケモンやってなかった。

5/3
 (それから少しして)
 ポケモンの交換に成功！！！
 ピッピとピッピを交換した。(しかもセーブデータ同じだからIDも同じ)
 エミュレーターの速度が遅くてイライラする。
 今後の課題だ。
 (でも、一応目的を達成してしまった。)

5/4
 24時間パソコンの前に座りっぱなしです。
 眩暈が…

5/4
 ユンゲラーをフーディンに変えた。
 レベルが高すぎて言うことを聞かない。

5/5
 星のカービィにはまった。

5/5
 割りこみ修正の際シリアル通信にバグを盛り込んでしまったようだ。
 どうしたものか。

5/5
 今日、エミュレーター系のサイトを見て回った。
 通信機能を持っているGBエミュが2つもあった。
 大打撃だ…

5/5
 Xと言うゲームが動いた。
 なんとワイヤーフレームたっだ。
 信じられない。
 それといつのまにか通信機能が動作しなくなっていた。

5/5
 良く考えたら今日で開発2週間だ。

5/5
 今日はがんばった。

5/6
 やはり星のカービィは良い。作品全体に漂う幻想的な雰囲気と、
 カービィのあの無表情さ、各ステージ毎に挿入されるショートアニメ、
 音楽、それでいて良質のアクション。私の好みにぴったりだ。

5/6
 ものすごく目がチカチカする。
 さすがにここ5日で50時間以上画面を直視していたら目に負担が、
 でも、いろいろやらんなんこともあるし、＊＊＊(自粛)だし、
 もうエミュレーター作ってられるのもせいぜい夏までかなぁ。
 最低でもカラーに対応したいし、この激重な速度も何とかしたいし、
 当初の目的の通信は安定動作させんとあかんし、
 ネット経由通信もサポートしなければならないし、
 ポケットプリンターとかポケットカメラにも対応したいし、
 持っているROM全部動かしたいし。
 あぁ、時間が無い…

5/7
 通信機能を有するGBエミュ2つについての情報がわかった。
 まず、rew.だがこれの通信機能はかなり不安定らしい。
 ポケモンの交換なんてもってのほかとか。
 しかも2つ同時に操作できないらしい。
 またno$gmbは違う種類のROMをロードできないらしい。
 これから察するに、今のところ多種類のROM間でポケモンの交換が出来たGBEmu
 はTGBのみであると言うことであろうか。
 すなわちポケモン金銀で251匹(?)集められるのはTGBだけであると言うことであろうか。
 しかもTGBは最前面で無くとも操作できるので、ドクターマリオの対戦も自由自在。
 (CPUさえ早ければ)
 なんかやる気が沸いてきた。

5/7
 キーコンフィグも付けたことだし,ドクターマリオの対戦をやってみた。
 FPSが5しか出ていなかった。いくらなんでも…

5/7
 FPS5はいくらなんでも酷すぎるので通信ルーチンを見直してみた。
 FPS38に上昇。ポケモンの交換も前より安定した。

5/7
 今日停電があった。起きてすぐだったからパソコン使っていなかったものの
 もし使っていたと考えるととても怖い。それにしてもいまどき停電なんかあるんだねぇ。

5/8
 通信対戦結構のものが出来ることが解った。
 テトリスシリーズはほぼパーフェクト、
 ポケモンシリーズも同様。
 ドクターマリオももちろんOKだし…
 でもなぜかぷよぷよシリーズが対戦できない。
 何故だろう。

5/9
 掲示板にカラーの資料を募集していたら、資料のありかを教えてもらえた。
 早速対応しよう。

5/9
 なかなかうまく行かない。
 GBだと動くのにGBCで起動するとだめなソフトがかなりある。
 機種セレクタを作っておこう。

5/14
 もうほとんどのROMは動作するようになった。
 カービー2やポケモン金銀は根強く動かない。
 まだZ80にバグが残っているのだろうか。

5/14
 たしかにZ80にバグは残っていた。だが、ポケモン金銀はまだ止まる。
 何故だ。

5/14
 ふとVBlank割りこみはLCDC停止中にはかからないのでは？と思い早速修正してみたところ、
 あっさり動作。カービィ2も動いた。
 LCDC割りこみはかからないようにしていたのだが…はあ、何たる不覚。
 普通LCDCに気づいた時点で気付くよなぁ…
 ああぁ情けない。
 …だが、まだサガ3は止まる。

5/17
 エリーのアトリエをやった。結構面白かった。4年間だと思ったのに5年目があった。
 なんかショックだ。

5/18
 プロファイルをしたら、BGレンダリング時間が以前の1/4程度にまで低下していた。
 にしてはあまり速くなっていないような…
 でよく見てみると、サウンドの更新ルーチンがBGレンダリングより時間食ってるじゃないか。
 ためしにサウンドの更新をしないようにするとFPSが一気に140にまで大爆発。
 …1.5倍になってしまった。
 それで、サウンドの更新処理の欠点を改善したところ、見たところ音質に変化無しでFPS130
 あたりに留める事が出来た。うーん。プロファイルさまさまだ。

5/18
 &を&&と書いてあるところがあった。
 我ながら恐ろしい。

5/18
 意外なことで高速化が図れるものだと身にしみて分かった。
 そろそろ素でドクターマリオをすることが出来なくなってきた。

5/22
 ページのほうが10000HITを迎えた。
 GIGOさんおめでとう！(なんか人事みたいだ)
 お祝いを送りたいが、何作ったらいいんだろ？

5/23
 かねてから制作していたポケットプリンタエミュが一応動いたりした。
 10000HITお祝いにしよう。(って、もう11000HITいってるやん)
 なんかここんとこ激しいなぁ。

5/26
 色々機能を作った。
 そう言えば久々にBMPファイルを扱った。
 ヘッダとか後ろからデータを格納するとか、なかなか難しかった。
 ペイントに認識させるのにも一苦労だった。
 でも、これでキャプチャ効率が飛躍的にアップした。
 動作実録でも作るかな。

5/27
 大き目のやつを一つ。

 題：CABを使おう！

 統合アーカイバープロジェクトのページに行ってきた。
 UnXXX32.dllがほとんどあった。
 圧巻だ。
 ところで思うのだが,何故UnLhaだけコマンドがあんなに違うのだろうか？
 CABもRARもZIPも-xで解凍なのにeだったり、一回で複数の拡張子指定できたり。
 (こっちのほうが便利なのに。ZIPとかも対応して欲しいなぁ)
 とりあえずネットで出まわっているLZHとZIPとRARと個人的に大好きなCABに対応してみた。
 CABは素晴らしい。何がと言うと,圧縮率だ。
 LZXのLV21にすると他の形式なんて足元にも及ばない。
 (例：カードヒーロー2048KBちょうど→
 LZH(lh7 32KB):921KB
 ZIP(Level 9):940KB
 RAR(最高圧縮率:ディクショナリサイズ1024KB):844KB
 CAB(LZX Level21):827KB)
 ちなみに見てもらえば解るのだが,すべての圧縮形式で最高の圧縮率が得られるように設定している。
 速度はどれも3-5秒ぐらいで大差は無かった。
 はっきりいってZIPとLZHは低すぎる。
 RARがいい線いっているが、まだ詰めが甘いと言うか,なんというか。
 圧縮率の違いの主な要因はディクショナリサイズだろうと思う。
 ちなみに
 LZH→最低8KB:最高32KB
 ZIP→不明
 RAR→最低64KB:最高1024KB
 CAB→LZXLV21時:2048KB
 である。
 ディクショナリサイズというのはLZSS(系のアルゴリズム)を実行する際、最大一致長を探すための
 テーブルと言うかそう言うものである。
 無論大きいほうが良い。
 しかし,このサイズは大きくすれば爆発的に速度が低下する。
 (私も少し昔にLZSSを実装したときに体感した)
 それに,64KBぐらいまでははっきりとサイズに効果が出てくるのだが,
 それを超えるとどんどん効果が薄くなってくる。
 この辺を考えると,昔からあるLZHが32KBにとどまっているのも解らなくは無いのだが,
 2048KBのCABにはどうあがいても勝てはしない。と言うか足元にも及ばないであろう。
 RARも1024KBの差が,約15KBの差として現れているのだろう。
 ここまでくると思うのが「CABは遅そう」のようなことであろうが,
 そんなことは全然無い。
 むしろ最高のRARより速いぐらいだ。
 と言うか前にLZSSを実装した私としては、2048KBもディクショナリがあってなんでこんなに速いのか
 はっきり言って怖いぐらいだ。
 それほどまでにMSの技術力がすごいのか？
 (でもMSZIP形式へぼへぼだしなぁ。それにLZXってMSがつくったのか？)
 まあ、こんなことはいいにしてもCABの凄さが少しでも伝わってもらえれば幸いです。
 それにしてもGIGOさんはなぜCABで送っているやつをわざわざLZHで圧縮しなおしているのだろうか。
 それとももしかしてCABって配布してはいけないんだろうか？
 (全くCABで配布しているのを見かけない…)

 注：この文章は私の独断、偏見等かなり偏って居りますので
     万一気分を害されましても変人の戯言と思ってください。

5/27
 プログラムにあらが多すぎるーーーー。
 こんなものを作ってたのか？

5/28
 通信精度が落ちてる？

5/29
 エミュレーターとは法的にホワイトな物なのか？
 私個人としては全然OKじゃないのかと(ソースコードは全部書いたわけですし)
 TGBも背景を白を基調としたデザインでホワイトさをアピールしていて…
 (12/8 作者注：Dualは黒いですね…)

5/29
 4/29日に書いた事は間違いであるとようやく気がついた。

6/2
 私のエミュレーターとしては恒例の(そうなのかなぁ？)メモリサーチツールを作った。
 今回はPARにあわせるということで,仕様も大幅拡大,
 ダイアログのサイズも大幅拡大の大サービスだ。
 前のチートコード？
 右上に……
 …
 ふう、疲れた。

6/4
 エミュレーション精度が上げられない…
 速度は落ちる…
 はあ、どうすればいいんだろ。

6/9
 ノイズチャンネルをまともに実装したら音楽が前々違う風に聞こえてくる。
 うー、いい感じ過ぎるー。
 それはともかく、全然ページが更新されない…

6/10
 ファイルマップトオブジェクトについて知った。

6/11
 ときめもカルチャー編をやった。
 ありがとう正義のマングース。

6/11
 とりあえず通信制度が少し上がったみたいだ。
 ポケモン金銀の交換を2回やったが,2回とも成功。
 内1回はユンゲラーからフーディンの進化有り。

6/12
 やっと英語版を作ったぞー！

6/20
 やっと新通信コアでドクターマリオできた。
 またしてもこんな簡単なことで！
 あぁ、自分に自信が無くなる…

6/21
 クソっ
 Volatileか！

6/27
 共有メモリ遅すぎ！
 もう使うのやめ。

6/28
 マルチスレッド！
 その手があったか！

6/28
 自腹を切ってGBリンクケーブルを買った。
 \900強もした。

6/28
 自腹で双オスステレオオーディオケーブルを買った。
 ミドリでこーたら\720ポッキリやで。
 ちゅーと半端やなー
…はー、財政が…

7/6
 明日は七夕かぁ…

7/6
 開発日記に私の身分を示唆するような(かなりダイレクトに)表現を発見！
 、で伏字にした。
 (はぁ、いまさら遅いか…)

7/11
 赤外線ポート実装！
 あっさりー。

7/11
 ここ最近月10単位でゲームをクリアしているような気がする。
 そろそろ落ち着いたかも

7/11
 プレステコントローラ延長ケーブルどこにも売って無い…
 素直にFFB対応コントローラ買おうかな…
 また自腹を切らんとあかんのか…
 もう銀行込みの全財産が\7000ぐらいしかない…

7/11
 TGBのTとはなんぞや。
 とお思いの方がいらっしゃるかもしれませんので,
 ここに記しておきます。
…
 私と顔見知りの方なら,「そりゃイニシャルから取ったんだろ。なんて安直なんだ。」
 という疑惑が濃厚であるかと思うのですが,
 ちがーーーーーーう！
 断じて違う！
…
 なら何か,と申しますと,
 『Terminal』のTで御座います。
 左様,TGBは明らかに通信第一のエミュレーターで御座います。
 エミュレーション精度その他は二の次にしても通信であります。
 ゆえに、私はこのように名付けたのであります。
…
 正式に書くと、『Terminal GB』
 なんですが,まだそこまで行っていないという自制心から書くのをためらわれていたのですが,
 あまりにイニシャルだと思っている人が多いのでここに書きました。
 T's エミュ研は明らかにイニシャルですけど…
…
 なんか良くわからない文になりましたが,そういうことです。

7/18
 スターオーシャンのBGM(戦闘勝利時)がテイルズオブファンタジアのとそっくりだと思ったのは
気のせいだろうか？

7/18
 某スーＯーコＯピｏーＯＯンテＯトの予選に通った。
 結構嬉しい。
 
7/22
 そんな…
 GBのボイス実装がこんな手法だったなんて…
 はっきりいってたまげた。
 機動戦艦ナデシコルリルリ麻雀に感謝！

7/22
 サガ2の無音部分で音が残るバグについてびっくりするような事実が発覚した。
 サガ2は可聴領域を越えた周波数にすることによって音を止めている様に見せかけていたのだ。
 (…多分)

7/25
 PCM続編：
 全くもってPCMは興味深い。
 ソフトによって実装方法が全く違う。
 機動戦艦(以下略)はかなり特殊なケースだったようだ。
 とりあえずみたところ、
 ポケモンピカチュウは2ビットPCM(実装方法の詳細は各自調べてね)
 マ/エリーのアトリエは3ビットPCMとして実装してあった。
 すべて実装するのは辛かった。
 まあ、でもそれだけする価値はあったように思うけど…
 とりあえずピカチュウが結構好きな私としては
 「ピカチュウ」と喋ってくれるだけで結構,結構,であるが、
 ゲーム中ピカチュウの発音にも数種類あって、中には結構笑わせてくれる(？)
 ものもあった。
 ステータス画面の時なんか、
 「ピ,ピカチュウ大阪弁！？」
 と思ってしまった。
 (んなこた、まぁどうでも良いんだが…)

 あと、麻雀もやっぱり声が出たほうが(圧倒的に)良い。
 うんうん。

7/28
 SGB難しい。

7/31
 東京に行く。

8/4
 東京から生還。
 疲れたし寝る。

8/11
 暇人の独白。
  サブタイトル：もう疲れちゃった

これは掲示板に書こうと思っていたのですが,4KB超えたのであきらめます。
しかし2時間近く掛けて書いた文章を捨てるのはもったいないのでここにおいておきます。

(前略)

…というわけで,
TGBは当初の目標はとっくに達成できていたので,
(だって、ゴローニャみれたし)
もうこれ以上開発を続けなくても良いのではなかろうか？
とか思えてきたのですが,
(やり残しの分はやっておきたいけど)
こんな事を言うとどうなるのでしょうね？

…オンラインでの通信精度が低い？
今日はこの場を借りてTGBが(といわずとも他のでも一緒でしょう)何故通信精度が低いかをじっくり
語らせていただきましょうか。
(普通に通信精度が低いとか書かれているページ様。ローカル接続なら結構出来てますよ。
 少なくともうちじゃミューツー転送10発10中だったので…まあ…)

◎ 何故に通信制度があげられないのか？

 世にはNesticleのようにかなり高精度に(遊べるレベルなんでしょう…多分)通信が出来るエミュレーターが存在します。
NESのNesticle、SNESのZSNES、SNES9X、もしくは何のエミュか知らないが、Callus(こんな感じだったような)
………
 しかし,GBには通信対戦(オンライン)が出来るのもがありませんでした。
少なくとも私がTGBに着手した4/21時点では。
 また、ローカルなコンピューター上でも通信がうまく行っていたものはないのではないでしょうか。
(no$gmbではやってないけどどうなんでしょう？同一プロセスならかなり良好な結果が得られると思うのですが)
 なぜなのでしょうか？

 ゲームボーイはファミコン等と違い最初から通信が考慮されたハードなので…

 某雑誌にこのようなことが書かれていました(と思う)
 だからエミュレートがしやすい、ということなんでしょうね(うろ覚え)
 まぁ、これも一般的認識でしょうかね？
 しかし,だからこそエミュレートがしにくい、と私は断言できます。

 ここにゲームボーイのシリアル通信のクロックを挙げておきます。

 8192Hz (3/7 注:GBCの高速モードは262144Hz)

 これはクロックで,実際の転送はシフトレジスタ(と思うが？)上のデータがそのクロックにより交換されることで
行われるので,転送速度は8192bit/sになります。
 1秒間にこれだけ送らなければ正確なエミュレーションは出来ません。

 ここで,モデムの転送速度を見てみましょう。
 大抵は56Kbpsとかとなっている事でしょう。
 これをみると,高々8Kbpsなど余裕で転送出来るように見えるでしょう。
 しかし、この数字はGBの転送にとって全然意味をなしません。
 というのも,こちらが1ビット受け取ったら、確実に相手から1ビットを受け取らなければなりません。
 これは，妥協次第で8ビットまとめて転送が出来ますが、それでも、1秒間に1000回もの回数受け渡しをしなければ成りません。
 オンライン転送には転送速度のほかにレイテンシというものがあります。
 こちらから発信して,相手に届くまでの時間ですね。
 これは一般的に短くて50ミリ秒とか言われています。
 これを元に、GBの転送が1秒間にどれくらい出来るかをかを考えてみると、
 こちらが送って相手が送り返すという動作が実機での8クロックとなり,
 また,その動作には最低でも50ミリ秒かかります。
 このことから考えると、GBの転送は1秒間にたった160クロックしか出来ないことになってしまいます。
 これは実機の1/50以下です。
 到底足りませんね？

 ここで、比較対象としてコンシューマの場合を挙げておきましょう。
 こちらは送るものがキー情報のみなので,1回の転送で2バイトもあれば事足りるでしょう。
 まあ、多くても10バイトもあれば十分でしょう。
 レイテンシは1バイトでも10バイトでもさして変わらないので、50ミリ秒で計算します。
 この場合上の計算から1秒間に20回データ転送が行えます。
 この場合だと,モデムでも3フレームスキップで通信対戦が行えるということになります。

 …上のとおり、現状ではGBの通信対戦は到底満足に行えないと言う結果になります。
 何か現在の常識では考えられないほどの転送速度を誇る通信手段の確立、
 もしくは何か奇抜なアイデアが(あるんでしょうか？)無いことには
 これ以上進展がないということになります。
 ただ、8192Hzは必ずしも必要というわけではなく、
 (実際ローカル通信でも400-1000Hzぐらいしか出ていない)
 ポケモンとかみたいな非リアルタイム型のゲームだとまだまだ工夫によっては
遊べるレベルのものが出来るかもしれません。


言い訳終わり


…はい、そういうことなんで行き詰まっています。
SGBも資料無いし…
当分はSＯESで遊べそうだし,(なんてったってSNEＯとともに育ったって感じですから…)
まあ、振動RPGとか、世界初,傾きセンサー搭載のコロコロカービーとか
出たら対応したいですね…
(というか、GBソフト出過ぎ…)

-----------------
てなことを書こうと思っていたのですが,
今読むと内容やばいですねー…
(東京から帰ったところで疲れていたんでしょう。サブタイトルにもありますし…)
とりあえずSNEＯは本当ですが,それだけですね…
コロコロカービー(なんていうタイトルだったっけ？)とかは
要望が多ければやろうかなぁ…
とか思っています(とは言っても私は自分自信の要望に一番忠実なんですね…)。
とりあえず、通信精度向上はうんうんうなっていても全然向上しないので
時間を有効に使わせてもらいますかね？


§12 開発記 : 記2(Dual以降)

11/11 もっと書くんですか？
 某氏よりDualのコメント少ない､もっと後記を書け､とのお達しを受けたので､なんか書きます。
 通信エミュレータとかうたっておきながら､私は最近までGBCの32倍モードを知りませんでした。
 なんかすごく騙されていたような気がします。
 それに知らなかったレジスタバンバン出てくるし､OAM実はミラリングされて256バイトフルにあるとか､
 ほんとに次から次へと新事実が出てきます。
 きっとまだ知らない機能(或は欠陥)が一杯あるんだろうなぁ。
 (もっと驚愕なのは､NO$GMBがそれらをしっかりと実装していることだったりする)
 そういや今日はポッキー&プリッツの日か…

12/2 結末

世紀末ですね。はぁ、新世紀かぁ…

思い出浸り：
 思えばあれは8月頃でした…
 ネット対戦に行きづまりを常々考えていましたね。
 (光ファイバーでもないと)「GBでネット対戦なんか無理なんじゃー」
 と日々叫びつづけていました。
 そんなある日､ふと某G誌を見ます(確か読み返したんだったか?)。
 ちょうどネット対戦の記事でした。(ほとんどうろ覚え)
 そこにこのような一節を見ます。
 『ＧＢは元々通信を考慮されたハードなので…』
 おそらくその内ネット通信出来るエミュ(Nesticleのような)が出るだろうと言うようなことだと思うのですが､
 「そのおかげで出来んのじゃー」
 と叫びたくなりました…
 (この辺は前にも書いたような…)
 その時ですね…ある(…教えませんよ､と言っても､バレバレ?)アイデアがひらめきました。
 …
 久々に自分を誉めてやりたい気持ちになりました。
 そう､そのある方法を使えばGBでもネット対戦できる…
 …
 その日のうちに考えをまとめ､テキストファイルを作りました。
 そして､その通信機能を実装すべくTGBを改良しよう思ったんですが、
 その先はこのTGB Dualの開発動機の一つですね。
 つまりソースがわけわからんようになったと…
 サウンドエンジン作り変えるたびに増えていくバックアップファイル。
 Winsock系の中途半端なファイル。
 コメント入りまくり(コメントというか､簡易バックアップ)のシステムエミュ部､
 マクロで有効無効切り替える部分多数…
 (ごみだらけごみだらけごみだらけ)
 本当に嫌気が差しましたね。
 かなり行き当たりばったりな開発でしたから､当たり前と言えば当たり前ですが､
 そもそもが､「フーディンとゴローニャをゲットだぜ」(前回開発後記参照)
 ではまともなソースが書けるはずがありませんがね。
 とにかく高速開発(RADツールも真っ青の開発速度でした*1)です。エラーチェックなんて一切していません。
 その上､ろくにGBのことも調べないで作りましたから､基本エミュレーション部が
 かなりへなちょこでした。
 そこで､この状況を打破しようと､Dualの作成を決意します。
 とにかく､これには､私の持てる技術のすべてを注いで(オブジェクト指向っていいよね…)､
 いいものを作ろうと言う気持ちがありました。
 (あれ､そうだったっけかな？TGBのWin->Win移植のような気持ちだったような…)
 その基本開発スタイルにすでにスタートしていたTSNES(現在開発中止中…)で作り出したものを採用しました。
 GBのアーキテクチャ調べから始まって､いろいろ時間がかかりました。
 まともにやれば結構かかりますね…
 と言うわけで､最初の目標の、ローカル通信"ほぼ"完璧化に何とかたどり着くまで2ヶ月かかりました。
 そのほかにも､いろいろ細かい部分の改良などをしたのですが､本当に時間がかかりました。
 それだけに自分でもいいものが出来たと思います。
 (そりゃもう､前のと比べたら…)
注:初版にも一応DTAのコアルーチンは搭載していたのですが､あまり正確でないので､外してありました。
 それからはもう､最終目標へ向かって一直線です。
 本当に長かったです。
 あの時どこからとも無く思いついたときにはこんなにかかるとは思いもよりませんでした。
 「んなもん３日もありゃー…」
 はぁ…
 …
 まぁ､何はともあれ､構想数分､実装3ヶ月のこの作品、みなさまの心まで響いて下さるでしょうか？(^_^)(^_^)。
 (終わりもまたこれかい、と言うのは無しで…)

*1…私が使っているのはVisualC++です。念のため。

12/15
 その後：

 通信が出来たので､徹底的にエミュレーションコアの改良を行った。
 基本がしっかりしているので､ちょっと直すだけでどんどん動かなかったROMが動くようになった。
 *これからエミュレータを作ろうともくろんでいる方へ・
  やはり､基本をしっかり作っておかないと､後で後悔します。
  想像以上ですよ。いや､本当に。
 今回のバージョンで(Vol.3)､ほぼすべてのROMが正常動作すると言ってよいのではなかろうか?
 TGBも成長したもんだ。
 このようなものが作れたことに当の本人が一番意外だったりして。

12/21
 上に書いたことは嘘ですな…
 まだまだ実機との相違点があるみたいで…
 そういう点がひとつでもあれば簡単に突き崩すことは可能で…
 動かないものがバンバン出てきそうで怖い…

4/11
 (かなり久々だが…)
 入学式爆睡…ついで学部ガイダンスも爆睡…その次の日も朝から爆睡…
 気合抜けすぎ…大丈夫かいな…

6/21
 うう…レポート難しいよお…
 さっぱり分からんよー
 誰か助けて…
 ところで､最近流行りの(？)Kailleraって何?


