ROMチューンの歴史

当サイトであんだけ詳しい解説を載せているにも関わらず、これからROMチューンを始めたいってヒトの多くが、どうでも良いような事や些細な事をグタグタと質問してくる。私に言わせりゃそんなんどうでも良いじゃん、始めちゃえ、それから考えろ、って事になる(笑)。そんなくだらん悩みは、私が積み重ねた苦労に比べりゃ素粒子並みに小さな事である。と言うわけで、私の苦労話の一部を書いてみますね。

:

私がROMチューンを始めたのは97年の5月だ。まだ3年も経ってない。始めた当時はナニも知らなかった。ROMの中にはマップしか無いモンだと信じてた。つまり、データエリアとプログラムエリアがROMの中に混在してるとは思わなかったのだ(笑)。

そこで、参考にする為にチューンドROMとノーマルROMを同時に購入した。確か数万円だったと思う。授業料だと思って買った。これで比較して書き換えてある場所がマップだろうと...。

いざ、ROMを買ってきて中身を覗いたら、16KBに及ぶ16進数のランダムな羅列。もちろんマップのアドレスなんざまったく知らない。それどころかバイナリエディッタってモノも知らなかった。*.BINという拡張子はROMチューンの為のモノであり、一般的なものではないと信じてた(笑)。もちろん、「*.bin」と「*.hex」の違いなんざ知るわけもなく、単に*.binの方がサイズが小さいからそれで保存してたに過ぎない。

そんな私は秋月のROMライタ付属のバイナリエディッタでROMの中身を覗いて、目視にて燃料と点火のマップを探し出した。チューンドROMとノーマルROMを買った私は、2つのROMの違いを捜したかったわけだが、比較機能を持ったバイナリエディッタの存在など知る筈もない。秋月のソフトはMDIになってないので一度に2つのファイルは開けない。そこで私はDOS窓を2つ開き、AKIROMV.EXEを2つ立ち上げて双方をスクロールしながら目視にて相違点を捜していた(馬鹿)。1バイト程度の変更箇所は目視で発見出来る筈もない(笑)。その後、VECTORなどに汎用のバイナリエディッタなるモノが存在する事を知り、比較機能や検索機能を持つMDI対応のソフトを手に入れて革新的に便利になったのだ(気付くの遅すぎ)。ここまでですでに3ヶ月が経過していた(笑)。

実際のマップ編集作業はどうやっていたかと言うと、これもまた長い長い格闘と進化の歴史があったりする。最初は秋月のAKIROMV.EXEに付属のバイナリエディッタでマップを編集してた。縦横が16X16の表示になってしまうエディッタで13X15のマップ領域を表示させるわけで、当然ながらバラバラにズレてマップらしく見えるものではない。それをチクチクと手作業で突っついて書き換えてた。グラフ化されて見えるわけでもないし、単なる16進数。綺麗に並んでいるわけでもないのでグチャグチャである(笑)。

そこで私はエディッタの画面をハードコピーして印刷、それを見ながらEXCEL95のワークシートにチクチクと手作業でマップを入力し、13X15のマップとして表示させた。もちろん単なる文字列として16進数を入力したに過ぎないのだが、13X15で綺麗に並んでいるだけで嬉しかった。そのワークシート上で編集する事でコピー&ペーストも可能になり、列毎、或いは行毎にコピーするのも簡単になった。このマップとセルをリンクさせて、16X16のエディッタで表示させた時と同じ用に配列させた。それをプリントアウトし、それを見ながらバイナリエディッタで手作業入力する。これでやっとROMが完成する。一つのROMを書く為に大変な作業をやっていたのである。モバイルROMチューンなんて程遠い話で、プリンタとかデータクリップは必需品だったのだ(笑)。

このEXCELのワークシートはその後徐々に進化し、16進数を10進数に変換する「HEX2DEC」、その逆の「DEC2HEX」という関数を覚え、ワークシート上で点火時期や空燃比の数字として扱えるようになった。更に、ノーマルマップをワークシート上に書いておき、それとの比較を表示させるようにもした。これでノーマルに対する変化が一目瞭然となった。だが、依然としてワークシートへの入力は手作業、バイナリファイルへの書き込みはワークシートをプリントアウトしてそれを見ながらバイナリエディッタで手作業入力という原始的なモノだった。画面の狭いSVGAノート機ではEXCELとエディッタは同時に見えないので、データを入力するにはいちいちプリントアウトしてそれをクリップでぶら下げて入力してた。原始的だよね(笑)。

次に私はMapWalkerなるROMチューン専用ソフトのDOS/V版を手に入れる。これによりエディッタ上で表示開始アドレスと縦横数を指定できるようになった。マップがマップらしく見える。バイナリファイルを直接編集できるようになった。だが、編集の使い勝手や、ノーマルとの比較、グラフ化の自由度、どれを取ってもEXCEL上で編集している時の方が快適であった。バイナリの読込みと書き込みは楽なのだが...。

そしてついにEXCEL97の導入によって「INPUTB」なる関数が使えるようになる。これでバイナリファイルを直接ワークシートに読み込み、ワークシートから直接バイナリファイルを書き出す事が可能なマクロが完成した。動作速度は遅いが、今まで続けてきたどの編集方法よりも快適で革新的な進化だった。このマクロは当サイトで現在公開されているモノとほぼ同じモノだ。このマクロなら16進数だのアドレスだのバイナリファイルだのって事をまったく意識せずにマップの編集が可能なのだ。

当サイトを読んでROMチューンを始めた人は、ここまでのステップを一気にすっ飛ばしているんですよ。私が少なくはない時間と手間をかけてたどり着いた環境を一気に手に入れてるんです。

その後、このEXCELのエディッタは進化を続け、シーケンシャルアクセス方式だったマクロはランダムアクセス方式になり画期的に速度アップ。従来のマクロに比較して読込み速度で数倍〜10倍くらい、書き込み速度は1秒程度と瞬時に完了するようになった。Pentium150MHz程度のノート機でもストレスの無い作業が可能になったのだ。(このエディッタは公開してません、今後も公開するつもりはありません)

更にEXCEL上に、スタートアドレスと縦横を指定して任意のマップを読み込めるマクロ、レブリミットを変更するマクロ、アイドル関連やその他いろいろなモノを変更できるマクロなども自作。更なる向上を目指してVisialBasicを購入、フルオリジナルでROMを編集する専用ソフトを製作しようかと思ったものの、VBとVBAの違いに悩まされて計画はストップ...(^^;;

ここまではエディッタ関連環境の進化の話。次は実際のROMの中身の解析。燃料と点火のマップは探し出したわけだが、それ以外はさっぱり解からない。比較機能を持ったバイナリエディッタを手に入れた私は、チューンドROMとノーマルROMの違いを一気に書き出す事に成功。燃料と点火のマップ以外の部分も所々が書換えられている事を発見する。だが、それがナニを意味するのかなんか解かる筈も無い。レブリミットもどれだか解からない。適当に怪しいところを書き換えてみたが変化が無い。明らかに書き換えてるのに変化が無いし普通に動いてるのはナゼ?

そんな試行錯誤を繰り返していたがナニも掴めない。ある友人と協力してそれぞれが5個くらいのROMを提供し、合計で10種類くらいのB63H用ROMを比較してみた。それぞれいろんな所が書きかえられている(後に判明したのだが、これらは追加基板対策の為に書きかえられたプログラム領域であり、ROMの出所によってそのプログラムに差異が有ったってだけだった)。その中で必ず同じ数字に書換えられている部分を数箇所発見、これがスピードリミッタだと言う事はのちに知る事になる。それ以外にもチューンドROMではどれでも必ず書き換えられている部分が有り、ROMによって違う数字になっている部分を発見、これがレブリミットであった。それを実際にいろいろな数字に書き換えてテストを繰り返し、当時ノーマルカムだった私のエンジンで8500回転という未体験ゾーンのテストとなった。このテストで得たリミット実測値と書き換えた数字からレブリミット算出の数式を導くまでに、数学に弱い私は非常に長い時間を要した(頭悪いだけかも(笑))。以上のような手間暇を使ってレブリミットのアドレスとロジックが解明されたのだ。

その後、B63HのCPUが判明し、逆汗により多くの謎が解明されていく事になる。もちろん各種計測器による実測作業も多くの謎を解き明かしていった。空燃比計、オシロスコープ、ROMチェンジャなどの道具は多いに役にたった。それでも更なる進化を求め、00年の春からはマップトレーサが導入される事になる...。

:

1800のROMのお話。当初はまったくの闇だった。ある友人が自分のNA8CのROMをいじる事を決意し、私も興味本位で全面協力する事になった。追加基板を購入しようとしたところ、なんとNA8Cは追加基板が必要ない事が判明。松田速度のECUを買った別の友人が、ノーマルECUを提供してくれたので、心置きなくそのECUを破壊解析し見事にROMを読み出す事に成功した。このROMの中身を眺めてみると、B6用ROMで見慣れたようなマップがいくつか存在した。試しにそれをEXCELに読み込むマクロを作成してみると、どう考えても燃料と点火のマップに見える。この時点で某友人がBP用チューンドROMを購入した。それによりBPにはなんらかのROMチェック機能が有り、ROMを書きかえるとエラーが出て動かない事も判明。その友人の努力により、それがチェックSUMで有る事が後に判明した。そのチェックサムを解決し、私が書いたROMで走行してみると、大きな違いが現れた。あの重たいBPが7200のリミットまで一気に回るじゃないか。こうなるとどうしてもレブリミットを変更したい。今回は参考になるチューンドROMなど無い(友人が購入したROMはノーマルリミットだった)。そしてB6の時に得た技と勘でついにレブリミットアドレスを発見する事になる。

そうそう、BPのチェックサム問題を解決するまでにも大変な手間と時間がかかった。当初はマップを書き換えた事による変化量を計算するのに、ワークシート上で関数により計算させようとした。が、こうすると10進数から16進数に変換する段階で端数が切り捨てられて数字が合わない。そこで、16進数のままでワークシートに読み込んで計算させるマクロを作成。これが当サイトで公開されているモノである。これものちにシーケンシャルアクセスからランダムアクセスに進化し、革新的なスピードアップを実現。計算だけやって修正作業が手作業ってのもアホらしいので、計算と修正書き込みまで一気にやってしまうマクロへと進化した。これによってかなり快適な環境が完成したわけ。だが、そんな事で満足してはいられない、ついにチェックサムそのものを停止させる事にも成功。これでB6と同等の感覚でいじれるようになった。もちろん、BPのCPUも判明し、逆汗による解析も...。

:

:

ここに書いたのは苦労話のほんの一部である。長い時間、少なくはないお金、多くの手間、努力、研究、多くの友人の協力、大変な苦労の積み重ねでここまでやってきた。当サイトを読んでいる人がこれからROMチューンを始めるなら、私が苦労して手に入れた情報や環境を、すでに手に入れている事になる。何の苦労も無くマップを編集する環境が手に入るのだ。

ROMチューンを始めるのに必要な情報は当サイトで公開している。そしてROMをいじるにあたっての編集環境も用意している。16進数だのアドレスだのを意識せずにマップ編集が可能なエディッタが有るのだ。何の苦労も無くマップをいじれる環境がここにある。

だが、どう書きかえるのか? どんなマップを作るのか? それはあなた次第だ。私が提供するのはROMチューンを始めるまでの段階。そこから先は自分でやってほしい。苦労してみてほしい。必要なら測定機や機材を買えば良い。努力してみれば良い。私だって最初から何でも出来たわけじゃない。なんせ私は96年5月に初めてパソコンを買ったパソコン初心者だったんだから...

「ROMチューンは1日にして成らず」

.