DevkitPro Updater を走らせると PGP キーのエラーとかでアップデート失敗するので
一旦アンインストールして再インストールした。エラーの原因と対策が分かったわけでは無いので全く学びにはならなかった。
そういえば PSP の devkit って無くなったのだろうか。
別プロジェクトが一段落したので GB の過去作を最新の RGBDS v9.2 でコンパイル通るように改修している。
HARDWARE.INC が更新され激変。修正作業のほとんどがこれのせい。
ROM 種別や RAM 容量などの指定が全削除。RGBFIX でうまいことやってくれ、ということらしい。
また、何とは言わないけれどロゴデータが(言うとるがな)削除された。世知辛い。
レジスタ名とかアドレッシング表記とか、そのうち慣れるのかもしれないが、変える必要あったのかなと思わなくもない。
でも業界標準だからなぁ。
TPP1 マッパーも随分前から動きが無い。結局物理的なカートリッジは出てこないのだろうか。
Max 1GB ROM とか、既存の全ゲームが入りそうな勢いだが。どうせならネット対応も…。
そういえば EverDrive GB も起動 ROM が .GB なので、解析すれば SD カードへのアクセスとか出来るのではなかろうか。
東鳩 GB を対応完了。ImageMagick から convert コマンドが無くなっていたり色々混乱した。
scn は lz4 で圧縮してるはずが、元のサイズより大きくなるという不都合な真実があったりする。画像は一応縮むのだけれど。
雫 GB を対応完了。
痕 GB を対応完了。正直これは酷かった。どこに向かって謝ればいいのか分からないけどごめんなさい。
タイトルロゴのスプライト転送に失敗するバグも修正。
スプライトダブラを雫と同様に DMA 化してみたけど逆に 1 ラインのスキマが空いたりチラつきが出たので元に戻した。
実機では試していないが、さめぼ〜い先生がそうだと言うならきっと間違いない。
痕を修正中にまたツール群がアップデートしたので、東鳩と雫もサイレントアップデート。
自前で頑張っていたチェックサム修正ツールを RGBDS 謹製の RGBFIX に差し替え。MIT ライセンスの文言追加。
チェックサム修正のついでに、いい感じに 48byte を埋めてくれる。責任回避とも言う。
Bad Apple! を対応完了。
データセットは同じ。プログラムは少しだけ弄った。今作ればもう少し違った形に出来たかもしれないが、さすがにしんどい。
RGBDS の進化によって、バイナリのインクルードで工夫ができるようになったので、面倒だった部分が若干すっきり。
今までは一度コンパイルしたものを copy /b で切り貼りしていたのであった。
def banknum = 1
rept 274
SECTION "Tile DATA Bank{d:banknum}",ROMX[$4000], BANK[banknum]
incbin "tile_n.bin", (banknum - 1) * 16384, 16384
def banknum = banknum + 1
endr
|
こんな感じで 16KB=1bank を超えるバイナリを一括して incbin する方法を編み出したのであった。
本当はこれすら面倒ではあるのだけれど…。
音楽を途切れさせないために 256Hz で割込みをすると DMA の転送とバッティングして画像が化けるので、画像データは CPU による自力転送を行う。
すると blank の境目などでどうしても転送エラーが起こる場合があり、画面にゴミが出る。
このあたり、ちゃんと計算してやればうまいこといったのかもしれないが、今に至っても手が出せなかった。
Bad Apple! を更にサイレントアップデート。出来るだけのことはやっておきたいということで。
あと、hardware.inc が 5.2.0 になったので(影響はないけれど)差し替え。
GB 音源ドライバをアップデート。諸々検証に時間がかかった。
思うに、GBS 再生環境とかもう必要とされないのかなぁと感じる。結局、音源ログか録音が手軽でいいのかも。
nsf,spc,gsf,psf...本物と同じドライバで動いているというのはロマンでしかないのか…。
PCM ドライバをアップデート。実用というよりはサンプルコードなのでユルい作り。
GB の NES エミュを RGBDS 0.9.3 に対応させるべく弄っていたんだけど、何かサンプル ROM を付けた方が良いかなと、
PDROM などを調べていたものの丁度良いデモっぽいものが無くて、じゃあ自分で作るかと思い立つ。
で、困ったのが自分の中の NES の知識がすっかり失われていたこと。
図らずも「初心者が NES に手を出すときに何からすれば良いか」がシミュレート出来てしまった。
まあそれでも開発環境、メモリマップ、iNESヘッダ、パレット、タイルマップ、タイルデータ、vblank、スプライト DMA と調べる項目自体は分かっているので
完全な迷子にはならないですんだのだけれど。
今後迷わないで済むようにアンチョコを作っておいた。
nesdev wiki は当然ながら、日本語の資料、研究室とギコ猫くらいは記憶の彼方から引っ張り出せたが、今どきの人は SNS とかで検索して途方に暮れるのだろうなぁ。
もしくは AI に尋ねるとか?
昔と変わったのは良い翻訳機能があることかもしれない。
今国内外で誰がどんな活動をしているかもよくわかっていない。DOOM とかやってたのは知っている(が、PPU 乗っ取りには興味ない)。
んで、出来たのがこれ。いやー命令が分からん。
携帯ゲーム機やってると「なんで TV は止まらんねん」とか理不尽な怒りをぶつけてしまいがち。
GB 側のプログラムも色々マズイ部分があった。
焼け石に水だけど結構頑張って手を加えた。速くはなっていない。
特に PPU を改造して割と納得のいく動きになった。
さらに CPU も多少弄って高速化した。出来ることはやっておかないと。
ヘッダをチェックして動作しないものはメッセージを出す親切設計。
BGB では動くが SameBoy だと暴走する不具合を修正。電源投入時のワーク RAM の初期値が偶然悪さをしていた。
手間を惜しまずきちんと初期化しましょうという教訓を得た。
初めて SameBoy のデバッガを触ったが、地味に使いづらい。iOS 版は GUI デバッガらしいのだが、あちらは逆に開発環境が無いしなぁ。
一応これで一区切りだが、CPU エミュレータ改良の成果を NSF プレイヤーの方にも適用するので、そちらの作業が済んでから同時更新する。