曾幾何時,保存數據是不可動搖和無法觸及的;當您出售遊戲彈藥筒或內部電池死亡時,您的寶貴進度永遠消失了。但是,在現代時代,即使您更改遊戲機,也將保存數據保存在雲中,即使您更改控制台。
隨著仿真越來越成為玩經典遊戲最方便的方式之一,我們許多人都在努力管理和遷移跨多個平台(例如仿真手持式,PC,PC甚至智能手機)的保存數據的問題。問題在於,這些數據不是一勞永逸的交易。不同的模擬器創建不同的保存文件,並在升級設備時對其進行管理可能是一場噩夢。
歐安·福雷斯特(Euan Forrester)的使命是解決這個繁重的問題。他是必不可少的大腦保存文件轉換器,一種在線工具,可讓您毫不費力地將數據保存為各種各樣的控制台,因此可以與平台一起使用,例如網絡5,,,,閃光車,,,,FPGA先生還有更多。
熱衷於了解這個令人驚嘆的項目的更多信息,我們與Forrester坐下來聊天。
時間擴展名:是什麼促使您創建保存文件轉換器工具?
Euan Forrester:我沒有打算這樣做。我只是想在電池死亡之前從墨盒中復制保存文件。
我首先編寫一個簡單的命令行工具來轉換RERON 5的保存文件。我已經看到了我在遊戲中的第一個視頻中有關保存舊墨盒文件的保存文件的視頻在其中,他們提到retron5是最便宜的開始方式。所以我買了一個,開始復制儲蓄手推車。
REWRON5因損壞節省而聞名,因此我想測試在模擬器中的保存。我為Reton 5保存文件編寫了自己的小轉換器,因為現有文件是只有Windows的文件,並且我有一個Mac。像大多數程序員一樣,我將其作為簡單的命令行工具。問題是當我買了一些新遊戲並在幾個月後回到工具時,我完全忘記瞭如何使用它。當我寫它時,它似乎很簡單,但是後來再次回來,感覺不直覺和笨拙。
我需要做一個更好的用戶界面。我進行了一些谷歌搜索,發現我可以閱讀文件,對其進行處理,然後使用Web瀏覽器再次寫出。這似乎比弄清楚如何編寫MAC應用程序要簡單。我將小工具重寫為網站,註冊了一個域,然後將其放在網上。
隨著時間的流逝,我想要其他轉換器。在Zelda四劍在GBA上,我想在我的購物車上玩新的單人地牢,而不必做多人遊戲。在GameFaqs上節省了解鎖,但它們的格式不同。我想能夠帶我Suikoden從我的PS1中保存並加載到Suikoden 2在我的PSP上,因為我負擔不起在PS1上購買第二款遊戲的物理副本。
當時這些轉換很難做到。要轉換Zelda保存,我必須下載整個GBA仿真器,並且我不得不使用2或3個工具來使PS1保存轉換。因此,我做了一些戳戳以找出這些文件格式。我從GBA模擬器和PS1轉換器中讀取代碼,並用它們來編寫我自己的簡單轉換器並將其放在網站上。
那時我想到這將是一個出色的爸爸做的好項目。我可以從事一個小型項目,一種特定格式的工具,然後將其發布。不投入太多時間,但仍在完成一些事情。我沒有時間從事一個大項目,因為我總是被打斷,這使我品嚐了我作為遊戲程序員的前世。
隨著時間的流逝,這些小型項目已成為一個大項目。
將工具放在一起時,最重大的技術挑戰是什麼?
最大的技術挑戰可能是SEGA CD保存格式,這也是網站上使用最少的工具之一!不過,我為此感到特別自豪,因為這是第一次有人用他們寫的代碼與我聯繫。
他在github上的用戶名是Superctr他最近剛剛對Sega CD保存格式進行了反向工程。這種格式很難讀取,因為數據(選項)與錯誤校正信息交織在一起,因此在十六進制編輯器中,所有這些看起來都像垃圾。以前,我已經與最傑出的創世紀模擬器之一的作者聯繫了有關Sega CD的保存格式,甚至他不知道它是如何工作的,說BIOS只是為模擬器處理了所有操作。因此,Superctr的作品令人印象深刻。
SuperCTR的存儲庫是從SEGA CD BIOS進行反向設計的,因此代碼非常複雜,我發現很難“通過”代碼來了解基本格式。儘管錯誤校正是基於常見算法的,但它們具有自定義實現,這些實現將其輸出從人們期望的標準中改變了。我花了很多時間試圖找到那些算法的標準庫,這些算法將在不得不放棄並根據SuperCTR的實現來撰寫自己的內容之前產生相同的輸出。
但是,最有趣的挑戰是尋寶活動。每種格式的研究階段絕對是我最喜歡的部分。例如,對於我最近發布的Sega Saturn工具,我不得不閱讀一個15歲的論壇帖子,一些30歲的SEGA技術文檔,幾個GitHub存儲庫中的代碼以及一個機器翻譯的Reddit帖子。我喜歡組裝這些信息,沒有人真正想知道。
這樣做的困難也已成為我對該網站的主要動機之一:成為一個單一的開源場所,人們可以在其中與工作代碼和測試一起找到所有這些格式的普通英語描述。找到有關保存文件格式的信息不應該很難,因此我試圖使其更容易。
除了保留有關格式的信息外,保存舊的保存文件本身對我來說已經成為一個巨大的動力。它們可能會在諸如GameFaqs之類的地方存檔,或者在個人硬件上發現的童年儲蓄。這些文件中的許多是無法讀取的,而沒有大量挖掘各種工具,其中一些可能很難在現代硬件上運行,很高興幫助這些文件再次有用。
社區的反饋是什麼樣的?
社區的反饋完全改變了網站的方向。在項目的第一或兩年中,我的目標是為GameFaqs上的每種格式製作一個轉換器。但是有一天是先生社區,Birdybro,在Github上伸出援手。他說,用戶很難將Sega Genesis保存文件和從Mister保存文件,並詢問我是否會考慮將轉換器添加到網站上。
史蒂夫·喬布斯(Steve Jobs)有一句話:“人們認為焦點意味著對您必須關注的事情說“是”。但這根本不是什麼意思。這意味著對還有其他數百個好主意說不。您必須仔細選擇。實際上,我為我們所做的事情和所做的事情一樣感到自豪。創新對1000件事說不。”
所以,最初,我說不。這是一個好主意,但它不符合我對網站的焦點。
但是後來我想到了。我意識到我的拒絕部分是我沒有看到它如何適合該網站的UI:與那裡的其他所有內容相比,先生的Sega Genesis似乎太具體了。我對此進行了更多的思考,並意識到我可以在Mister上所有平台的網站上製作頁面)。
我意識到我的另一個反對意見是,這項工作聽起來並不有趣。 Sega Genesis有一些硬件怪癖,它正在用16位公共汽車從墨盒中讀取8位SRAM芯片。因此,每個讀取的8位字節都會“擴展”成16位,額外的位數只是填充1秒。 Core先生的作者決定將此怪癖反映在保存文件中,而大多數軟件模擬器的作者決定不反映其保存文件。這兩種方法都不比其他方法更“正確”,但是它們是不同的,因此文件不兼容。
為此轉變編寫轉換器非常瑣碎,老實說,我對此並不感興趣。但是伯迪布羅(Birdybro)同意給我保存所有復古控制台先生核心的文件,因此,瀏覽所有這些怪癖的“尋寶”方面更加有趣。我很高興他做到了。 Page先生迅速成為網站上使用最多的頁面,如今,它佔該網站每月總用戶的幾乎一半。
我從先生的經驗中意識到,大多數人都不想要我一直在建造的東西,相反,他們希望能夠在自己的設備之間傳輸自己的保存文件。我完全改變了方向,專注於人們可能會保存要傳輸的文件,例如Flash彈藥筒和在線模擬器。但是,這些都沒有像增加對先生的支持一樣多的影響。
但是,關於“不”的話題,我沒有添加支持的一件事是模擬口袋。不是因為我不喜歡它,而是因為核心的擴散:例如,似乎沒有一個“主要” Sega Genesis Core。因此,這似乎是UI的噩夢。我也沒有得到人們想要增加的反饋,因為Page先生似乎對大多數人來說是一件好事。
因此,我正在努力保持對某些事情保持專注的立場,但也試圖變得更加開放。這是一個很難罷工的平衡,有時我弄錯了。
您想要改進或更改的工具是否有任何方面?
我一直在為網站上的UI掙扎。對我來說,非技術人員可以使用該網站很重要。通過與使用該網站的人交談,其中絕大多數是非技術性的,這是我真正感到自豪的事情。我發現將這種超級技術的重新安排字節重新排列字節的內容非常有趣,而且具有挑戰性給任何人。
我經常看到的是有人說“我有這個文件,我想播放它”,他們不知道該文件是什麼格式,有時他們不知道該文件來自哪里或實際上根本沒有。一個相關的問題是,網站上的接口變得非常複雜,就像屏幕頂部列出的十億個格式一樣。
我有一些想法彈跳以將界面更改為一個框,與Google界面不同,用戶只是放置一個文件,然後該網站告訴他們他們可以使用該文件的所有事情,然後他們可以選擇一個。
我將不得不仔細考慮這種方法在技術上可行的或不可行的方法以及限制是什麼。當然,有很多文件,例如大多數墨盒的原始保存,您幾乎只能通過查看它們就能告訴它們有關它們的任何內容,並且您需要更多的上下文。因此,我一直將其推遲,直到網站“完成”為止,我知道該網站將支持的所有格式,以便我更好地進行評估。
也許這只是拖延。我不能說。
保存文件轉換器現在涵蓋了各種平台和設備。該項目的下一步是什麼?
我自己的個人目標是完成對遊戲機2時代的支持,因此增加了對PS2,GameCube,Xbox和Dreamcast的支持。後來的控制台,在PS3/X360時代及以後,我的個人興趣較小,而且我認為那裡對工具的需求也較少。該遊戲機在USB端口之類的東西上更加現代。因此,有多種方法可以將保存文件在其上進行和關閉,而不涉及像Gameshark這樣的深奧設備,該設備將自己的格式強加於文件。
我從這個項目中獲得的最大的事情就是合作和友誼,所以我想更多的是結識更多正在用複古遊戲保存文件做事的人。
我工作了一段時間Janerikgunnar來自Github,他寫了一些我的代碼,這些代碼是我從Wii Virtual Console中進行的大部分轉換。但是他缺少一個控制台:Turbografx-16。因此,我要求他再看一下,也許稍微推動了他的好奇心,他提出了一個我找不到的解決方案。但是後來我能夠使他的解決方案變得更好,之後,他又能夠使我的代碼更好。這種來回合作在我的職業生涯中非常罕見,我真的很珍惜它。
同樣,我最近開始與dparrino在Github上,當我注意到他完成工作之後,他從事一些Sega土星的工作。再說一次,能夠與一個好奇,有動力,聰明,並且對問題不同的人談論這些東西是非常有意義的。我希望我們也能夠使彼此的工作變得更好。
對於該網站本身,我為增加對先生的支持以及社區響應添加那些我渴望再次感到驚訝的功能感到驚訝。
人們如何支持這個項目?
我絕對喜歡的是收到一個錯誤報告。這意味著有人在使用該網站,他們在其中所做的事情對他們來說足夠重要,可以花一些時間寫信給我。這也使每個人都變得更好:編寫代碼以轉換格式的基礎知識非常容易,但是只有在數千人嘗試過時,您才能找到所有奇怪的例外和邊緣案例,您需要真正寫一些案例固體代碼。最簡單的方法是加入不和諧。
這種不和諧還可以幫助我了解人們如何使用該網站以及復古遊戲世界中的情況。提出問題可以幫助我填寫我在那裡所維持的常見問題解答,這反過來又使FAQ對他人更有用。這也是要求新功能的好地方。
大多數人從Google找到該網站,因此共享鏈接有助於提高網站的Google等級,這反過來又使其更有可能幫助某人。
最後,人們可以捐到網站。有一天,當用戶給我發送電子郵件詢問該如何捐款到網站時,我製作了一個小貝寶按鈕,從那時起,我對當有人單擊它的一天絕對使我的一天感到驚訝。當我聽到運動員或音樂家說他們“為粉絲做”時,我曾經嘲笑。但是現在,我看到自己磨碎某物的孤獨感,不確定是否有人會更少使用它。當有人花時間捐贈幾美元時,我絕對會在空中行走,我急於告訴我的妻子和孩子。然後這個孩子說:“那很好,爸爸”,然後回到做孩子的事情,我回到地球上。
但是,是的,最好處理人們實際使用的東西。我認為僅僅是為自己工作的動力,我幾乎不會有動力。