むかしむかし、保存データは不動で手に負えないものでした。ゲームカートリッジを販売したり、内部バッテリーを販売したとき、貴重な進歩は永遠に失われました。ただし、現代では、コンソールを変更しても、常にアクセス可能なクラウドに保存データが保存されます。
エミュレーションはますますクラシックゲームをプレイする最も便利な方法の1つになりつつあるため、私たちの多くは、エミュレーションハンドヘルド、PC、さらにはスマートフォンなど、複数のプラットフォームで保存データを管理および移行する問題に取り組んでいます。問題は、このデータが1つの取引ではないことです。異なるエミュレータは異なる保存ファイルを作成し、機器をアップグレードするときにそれらを管理することは悪夢のようなものになる可能性があります。
Euan Forresterは、この厄介な問題に取り組むことを彼の使命にしました。彼は不可欠な頭脳ですファイルコンバーターを保存します、幅広いコンソールの保存データを簡単に変換できるようにして、次のようなプラットフォームで使用できるオンラインツールネットワーク5、フラッシュカート、ミスターFPGAもっと。
この素晴らしいプロジェクトについてもっと学びたいと思って、私たちはチャットのためにフォレスターと一緒に座った。
時間延長:Save File Converterツールを作成したきっかけは何ですか?
Euan Forrester:私はこれをやろうとしませんでした。バッテリーが死ぬ前に、カートリッジから保存ファイルをコピーしたかっただけです。
私はレトロン5から保存ファイルを変換するためのシンプルなコマンドラインツールを作成することから始めました。私は見ました古いカートリッジからの保存ファイルを保存することに関するゲームの最初のビデオでの私の生活そしてその中で、彼らはRetron5が最も安い方法であると述べました。それで私はそれを買って、私のカートからセーブをコピーし始めました。
Retron5は、セーブを破壊することで少し評判が高いので、エミュレータでセーブをテストしたかったのです。既存のファイルはWindowsのみであり、Macがあるため、Retron 5セーブファイル用の自分の小さなコンバーターを書きました。ほとんどのプログラマーと同様に、私はそれを単純なコマンドラインツールとして作成しました。問題は、数か月後に新しいゲームを購入してツールに戻ってきたとき、それを使用する方法を完全に忘れていました。書いたときはとても簡単に思えましたが、後でまた戻ってきて、直感的で不格好だと感じました。
より良いユーザーインターフェイスを作成する必要がありました。私はいくつかのグーグルを行い、ファイルを読んで処理し、Webブラウザーを使用してもう一度書き出すことができることがわかりました。 Macアプリケーションの書き方を理解するよりも簡単に思えました。私は小さなツールをウェブサイトとして書き直し、ドメインを登録し、オンラインにします。
時間が経つにつれて、私は他のコンバーターが欲しかった。でゼルダ四つの剣GBAでは、マルチプレイヤーパートを実行することなく、カートで新しいシングルプレイヤーダンジョンをプレイしたかったのです。 GameFAQにはロックを解除するセーブがありますが、それらは別の形式です。私は自分を連れて行くことができたかったSuikodenPS1から保存してロードしますSuikoden 2PS1で2番目のゲームの物理的なコピーを購入する余裕がなかったため、私のPSPで。
これらの変換は、当時驚くほど難しいものでした。 Zeldaセーブを変換するには、GBAエミュレーター全体をダウンロードする必要があり、PS1セーブを変換するために2つまたは3つのツールを使用する必要がありました。代わりに、私はこれらのファイル形式を把握するためにいくつかをしました。 GBAエミュレーターとPS1コンバーターのコードを読み、それらを使用して独自のシンプルなコンバーターを書き、サイトに置きました。
そのとき、私はこれが在宅の父親としてやるのに最適なプロジェクトになると思いました。 1つの特定の形式のツールである小さなプロジェクトに取り組んでから、リリースすることができました。あまり時間を費やすのではなく、それでも何かを達成しています。私は常に中断されているので、大きなプロジェクトに取り組む時間はありません。これは、ゲームプログラマーとしての以前の人生の味を与えてくれます。
時間が経つにつれて、これらの小さなプロジェクトは大きなものになっています。
ツールをまとめることに関して、最も重要な技術的課題は何ですか?
最大の技術的課題は、おそらくSega CD Save Formatです。これは、サイトで最も使用されていないツールの1つでもあります。しかし、誰かが書いたコードで誰かが私に手を差し伸べたのは初めてだったので、私はそれを特に誇りに思っています。
GitHubでの彼のユーザー名はですsuperctrそして、彼は最近、SEGA CDセーブフォーマットを逆エンジニアリングしました。データは(オプションでは)エラー補正情報がインターリーブされているため、その形式を読みにくくなります。そのため、16進エディタでは、すべてごみのように見えます。以前は、Sega CD Saveフォーマットについて尋ねる最も著名な創世記エミュレーターの著者に連絡していましたが、BIOSがエミュレータのすべてを処理するだけだと言って、どのように機能したかを知りませんでした。したがって、SuperCtrの仕事は非常に印象的でした。
SuperCtrのリポジトリはSEGA CD BIOSからリバースエンジニアリングされているため、コードは非常に複雑で、基礎となる形式を理解するためにコードを「介して」見るのが難しいと感じました。また、エラーの修正は一般的なアルゴリズムに基づいていましたが、出力を予想される標準から変更するカスタム実装がありました。私は、SuperCTRの実装に基づいて、あきらめて自分で書く必要がある同じ出力を生成するアルゴリズムの標準ライブラリを見つけようとして、かなりの時間を費やしました。
しかし、最も面白い挑戦は、宝の狩りでした。各形式の研究段階は間違いなく私のお気に入りの部分です。たとえば、最近リリースしたSega Saturn Toolsの場合、15年前のフォーラム投稿、30年前のSEGA技術文書、いくつかのGithubリポジトリのコード、および機械翻訳Reddit投稿を読む必要がありました。私は誰も本当に知るつもりのないこの情報を集めるのを楽しんでいます。
これを行うことの難しさは、サイトの私の主な動機の1つになりました。これは、作業コードとテストとともに、これらすべての形式の明確な英語の説明を見つけることができる単一のオープンソースの場所になることです。ファイル形式の保存に関する情報を見つけるのはそれほど難しいことではないので、少し簡単にしようとしています。
フォーマットに関する情報を保存することに加えて、古い保存ファイル自体を保存することは、私にとって大きな動機となっています。それらは、GameFAQのような場所や、個々の人のハードウェアに見られる子供時代のセーブにアーカイブされる可能性があります。これらのファイルの多くは、さまざまなツールを大量に掘り下げることなく読み取れませんでしたが、その一部は最新のハードウェアで実行するのが難しい場合があり、これらのファイルを再び便利にするのに役立ちます。
コミュニティからのフィードバックはどのようなものでしたか?
コミュニティからのフィードバックは、サイトの方向を完全に変えました。プロジェクトの最初の1〜2年間、私の目標は、GameFAQのあらゆる形式のコンバーターを作成することでした。しかし、いつかのメンバーミスターコミュニティ、バーディブロ、Githubに連絡しました。彼は、ユーザーがSega GenesisをMisterに往復的に保存することは困難であると言い、サイトにコンバーターを追加することを検討するかどうか尋ねました。
スティーブジョブズからの引用があります。しかし、それはまったく意味がありません。それは、他の百の良いアイデアにノーと言うことを意味します。注意深く選ぶ必要があります。私は実際に私がやったことと同じようにしたことを誇りに思っています。イノベーションは、1,000のことにノーと言っています。」
それで、最初は、私はノーと言いました。それは良い考えでしたが、それは私がサイトに持っていた焦点には合いませんでした。
しかし、それから私はそれについてもっと考えました。私の拒絶の一部は、サイトのUIにそれがどのように適合するかわからなかったことに気づきました。私はそれについてもっと考えて、Wii仮想コンソールのすべてのプラットフォーム(GameFaqs全体で見つかった形式の1つ)に似たページと同様に、ミスター上のすべてのプラットフォームのサイトにページを作成できることに気付きました。 )。
私の他の異議は、仕事がそれほど面白くないように聞こえないことに気づきました。セガジェネシスには、16ビットバスでカートリッジから8ビットのSRAMチップを読んでいるハードウェアの癖が少しあります。したがって、読み取られた8ビットバイトごとに16ビットに「拡張」され、余分なビットが1秒で満たされます。 Mister Coreの著者は、この癖を保存ファイルに反映させることにしましたが、ほとんどのソフトウェアエミュレーターの著者は、これを保存ファイルに反映しないことを決定しました。どちらのアプローチも他のアプローチよりも「正しい」ものではありませんが、それらは異なるため、ファイルは互換性がありません。
この変換のためにコンバーターを書くことはかなり些細なことであり、正直なところ、私はそれをすることにあまり興味がありませんでした。しかし、Birdybroは、すべてのレトロコンソールミスターコアのファイルを保存することに同意しました。したがって、他の癖を見つけるためにそれらをすべて調べる「トレジャーハント」の側面はより興味深いものでした。彼がやったことがうれしいです。 Misterページはすぐにサイトで最もよく使用されているページになり、今日ではサイトの毎月のユーザーのほぼ半分を占めています。
ミスターエクスペリエンスから、ほとんどの人が私が構築していたものを望んでいないことに気づき、代わりに自分のデバイス間で自分の保存ファイルを転送できることを望んでいました。私は方向を完全に変え、フラッシュカートリッジやオンラインエミュレーターなど、転送したいファイルを保存している可能性のある他の場所に焦点を当てました。しかし、これらのどれも、ミスターのサポートを追加するほど影響を与えていません。
しかし、その後、「いいえ」と言うトピックについて、私がサポートを追加しなかったことの1つはアナログポケット。気に入らないからではなく、コアの拡散のためです。たとえば、「主要な」セガジェネシスコアは1つないようです。だから、それはUIの悪夢のように思えた。また、Misterページはほとんどの人にとってポケットにとって良い仕事をしているように見えるので、私は人々がそれを追加したいと思っている多くのフィードバックを得ていません。
だから、私は焦点を維持するためにいくつかのことにノーと言っているという姿勢を維持しようとしていますが、もう少しオープンマインドになろうとしています。打つのは難しいバランスであり、時々私はそれを間違えます。
あなたが改善または変更に熱心なツールの側面はありますか?
私はサイトのUIと常に苦労しています。私にとっては、非技術的な人々がサイトを使用できることが重要です。サイトを使用する人々と話すことから、彼らの大部分は非技術的であり、それは私が本当に誇りに思っていることです。ファイル内のバイトを再配置するこの超技術的なものを、それぞれ独自の例外、gotchas、追加のデータのニーズ、一般的な奇妙さを除いて、アクセスしやすくすることができることが非常に面白くて挑戦的だと思います。誰にでも。
私が定期的に見てきたのは、「私はこのファイルを持っていて、それを再生したい」と言う人です。彼らはファイルが何であるかを知らないので、時々彼らはそれがどこから来たのか、本当に何も知らないそれはまったくです。関連する問題は、サイト上のインターフェイスがかなり複雑になっており、画面の上部に沿って数十億形式がリストされていることです。
インターフェイスを1つのボックスに変更するために跳ね返るアイデアがありました。Googleインターフェイスとは異なり、ユーザーがファイルを置くだけで、サイトがそのファイルでできることをすべて伝えてから、彼らはそのファイルでできることをすべて伝えます。 1つを選択できます。
このアプローチで技術的に実行可能であるかどうか、そして制限は何であるかについて慎重に考える必要があります。確かに、ほとんどのカートリッジからの生の保存など、多くのファイルがあります。そこでは、それらを見るだけでほとんど何も言うことができず、より多くのコンテキストが必要です。そのため、サイトが「完成」するまでこれを延期し続けています。サイトがサポートするすべての形式を知っているので、その評価をよりよくできるようになります。
または、それはただの先延ばしです。わかりません。
ファイルコンバーターを保存すると、幅広いプラットフォームとデバイスをカバーするようになりました。プロジェクトの次は何ですか?
プロジェクトの私自身の個人的な目標は、コンソールのPlayStation 2 ERAまでのサポートを完了することであり、PS2、GameCube、Xbox、およびDreamcastのサポートを追加することです。 PS3/X360 ERA以降の後のコンソールは、個人的な関心が低いので、そこにもツールの必要性が少ないと思います。コンソールは、USBポートのようなもので、より近代的です。そのため、ファイルに独自のフォーマットを課すGamesharkのような難解なデバイスを伴わないファイルをそれらに保存する方法があります。
私がこのプロジェクトから得た最大のことは、コラボレーションと友情でした。そのため、レトロなゲームセーブファイルで何かをしている人と出会うことがもっと欲しいのです。
私はしばらく一緒に働いていましたJanerikgunnarWii Virtual Consoleからのコンバージョンの大部分を基づいているコードを書いたGithubから。しかし、彼には1つのコンソールがありませんでした:Turbografx-16。それで私は彼にもう一つ見てみるように頼み、多分彼の好奇心を少し押したと彼は私が見つけることができなかった解決策を思いつきました。しかし、その後、私は彼の解決策を改善することができ、その後、彼は私のコードをより良くすることができました。そのようなやり取りのコラボレーションは、一人一人がお互いを改善し、私のキャリアで非常にまれであり、私は彼と一緒に本当に大切にしました。
同様に、私は最近話し始めましたBuccaneroGithubで、彼がいくつかのSega Saturnに取り組んでいることに気づいたとき、私はそれの仕事を終えた直後に物を保存しました。そして繰り返しますが、このことについて、好奇心が強く、やる気があり、賢く、そして私とは異なる方法で問題にアプローチする人と話すことができることは非常にやりがいがあります。私たちもお互いの仕事をより良くすることができることを願っています。
サイト自体については、ミスターへのサポートを追加するリクエストと、これらの機能を追加するためのコミュニティの対応に、再び驚きたいと思っているコミュニティの対応に非常に驚きました。
人々はこのプロジェクトをどのようにサポートできますか?
私の絶対的なお気に入りは、バグレポートを受け取ることです。それは、誰かがサイトを使用していたことを意味し、彼らがそれをしていたことは、彼らが時間をかけて私に手紙を書くのに十分重要であることを意味します。それはまた、すべての人にとってサイトをより良くします:形式の基本を変換するためにコードを書くのは簡単ですが、それを試した数千人がそれを試したときだけ、あなたは本当にいくつかを書く必要があるすべての奇妙な例外とエッジケースを見つけますかソリッドコード。それを行う最も簡単な方法は、することです不一致に参加してください。
不和はまた、人々がサイトをどのように使用しているか、そしてレトロゲームの世界で何が起こっているかについて最新の状態を維持するのに役立ちます。そして、質問するのに役立つのは、私がそこに維持しているFAQを埋めるのに役立ちます。これにより、FAQが他の人にとってより便利になります。新機能を求めるのに最適な場所です。
ほとんどの人はGoogleからサイトを見つけているので、リンクを共有すると、サイトのGoogleランクを改善するのに役立ち、それが誰かに役立つ可能性が高くなります。
最後に、人々はできます寄付するサイトに。ある日、ユーザーがサイトに寄付する方法を尋ねたときに小さなPayPalボタンを作成しました。それ以来、誰かがクリックしたときにどれだけ絶対に私の一日を作るかに正直に驚きました。アスリートやミュージシャンが「ファンのためにやった」と言うのを聞いたとき、私はsc笑していました。しかし今、私は自分で何かを粉砕する孤独を見ていますが、誰かがそれをはるかに少なく使用することを気にするかどうかはわかりません。誰かが時間をかけて数ドルを寄付するとき、私は絶対に空中を歩いているので、妻と子供に急いで伝えます。それから子供は「それはいいですね」と言い、子供のことをすることに戻り、私は少し地球に戻ってきます。
しかし、ええ、人々が実際に使用するものに取り組むのはいいことです。私は自分だけのために何かに取り組むように動機付けられているとは思わない。