Zelda Game & Watch Dual System 薩爾達機刷雙系統完全攻略

前前後後搞了大概一個多月,最後一步的雙系統走的好辛苦,因為我刷機硬體是樹莓派 3B+,網路上找到的教學總是遺漏了很多關鍵的部分,但也憑著不放棄的精神總算把它給搞定了。其實有沒有雙系統根本就無所謂,畢竟要玩遊戲的話,一開機直接就切到 RETRO GO 去玩了,只是覺得不弄完整一點似乎有些遺憾。

注意!刷機還是有一定程度的風險,這裡提供的是一個我跑過確定沒有問題的流程,不一定適合所有未知變數。此教學文是使用更換 64MB Flash 後的薩爾達主機操作,其餘容量請參考最下方的資料來源,畢竟在未更換 Flash 的狀況下製作雙系統,就幾乎無法再放得下更多的遊戲,建議如果沒有辦法更換的朋友可以選擇直接刷機就好。這篇算是 Nintendo Game & Watch 刷機完全攻略的延伸,若是沒有看過的朋友,建議可以先去看看,這樣會比較有概念。

刷雙系統重點為:Patch openocd、SWAP、keystone-engine,另外前篇是使用 rpi 刷機,後來發現改用 stlink 速度可以提升兩倍以上,而且還比較穩定,所以建議想刷大容量的朋友還是去買一個 stlink 吧。

▲雙系統刷機成果示範影片。

《第一步》
安裝 Patch openocd。(時程約 20-30 分鐘)

  1. git clone https://github.com/kbeckmann/ubuntu-openocd-git-builder
  2. cd ubuntu-openocd-git-builder/
  3. ./build.sh
  4. sudo dpkg -i openocd-git_*_armhf.deb
  5. sudo apt-get -y -f install
  6. export OPENOCD="/opt/openocd-git/bin/openocd"
    # 爾後需要開啟 openocd 時,就使用這個路徑。

《第二步》
調整 SWAP 交換空間容量至少 1GB 以上,否則在安裝 keystone-engine 時,Pi 3B+ 會因記憶體不足而導致崩潰。

  1. sudo dphys-swapfile swapoff
    # 停用 SWAP。
  2. sudo nano /etc/dphys-swapfile
    # 使用 nano 修改文件。
  3. CONF_SWAPSIZE=100  >  CONF_SWAPSIZE=1024
    # 將 SWAPSIZE 修改為至少 1GB。
  4. 按下 Ctrl+X,選 Y 按 Enter 保存退出
  5. sudo dphys-swapfile setup
    sudo dphys-swapfile swapon
    sudo reboot
    #設定好 SWAP 後並重啟系統。

《第三步》
安裝 cmake。cmake 是構建 keystone-engine 所必需的。

  1. sudo apt update
  2. sudo apt install -y cmake

《第四步》
手動安裝 keystone-engine。因為 get 封包文件的問題,會導致接下來在執行第五步的 pip3 install -r requirements.txt 時,會有 keystone-engine 裝不起來的狀況發生,可能是我的刷機設備及 OS 的問題吧,所以這邊直接使用手動安裝。(時程約 20-30 分鐘)

  1. wget https://files.pythonhosted.org/packages/0a/65/3a2e7e55cc1db188869bbbacee60036828330e0ce57fc5f05a3167ab4b4d/keystone-engine-0.9.2.tar.gz
  2. tar -zxvf keystone-engine-0.9.2.tar.gz
  3. obj_dir = os.path.join(BUILD_DIR, 'llvm', 'lib')  >  obj_dir = os.path.join(BUILD_DIR, 'llvm', 'lib', 'arm-linux-gnueabihf')
    # 編輯 setup.py,修改第 114 行內容如上,檔案在pi/keystone-engine-0.9.2/ 資料夾內。
  4. tar czvf keystone-engine-0.9.2mod.tar.gz keystone-engine-0.9.2
  5. pip install keystone-engine-0.9.2mod.tar.gz

《第五步》
安裝 Game & Watch Patch。內建是使用 stlink 刷機, 如果有需要也能在指令中更換成 rpi(ADAPTER=rpi)。

  1. git clone https://github.com/BrianPugh/game-and-watch-patch
    # 確認在 opt 目錄中。
  2. cd game-and-watch-patch
  3. 將備份的 flash_backup_zelda.bin 與 internal_flash_backup_zelda.bin 兩個檔案放在 game-and-watch-patch 的根目錄下
  4. pip3 install -r requirements.txt
  5. make download_sdk
  6. make clean
  7. make PATCH_PARAMS="--device=zelda" LARGE_FLASH=1 flash_patched
    # 完成後即可看見主機螢幕恢復成薩爾達系統。

《第六步》
安裝 RETRO GO。

  1. cd ..
  2. cd game-and-watch-retro-go
  3.  make clean
  4. make -j8 EXTFLASH_SIZE_MB=60 EXTFLASH_OFFSET=4194304 INTFLASH_BANK=2 flash

注意!若需要顯示遊戲圖片,請在執行 4. 的時候加入 COVERFLOW=1,否則刷完是沒有遊戲圖片的,沒有圖片的好處是可以再放更多的遊戲。需要中文介面也一併加上 CODEPAGE=950

▲打包完成後請留意 Flash 空間,若超過會無法寫入,必須重新打包。

燒錄完成後重新開機即可進入原生薩爾達系統,按下 GAME + 按鍵左,即可進入 RETRO GO 系統。爾後要增加或是減少遊戲,也只要執行第六步刷入 BANK2 即可。

刷瑪利歐機的雙系統在參考資料來源中也有詳細說明,這裡就不再重複了。另外,檔案一多相對寫入的時間也會變得非常的漫長,建議先放幾個進去測試,確定沒問題後再全部一次寫入。60MB 完全使用,rpi 寫入時程約 150 分鐘(含打包),若是用 stlink 則 60 分鐘內可完成(含打包)。

▲最後來看看 64MB 到底能裝下多少遊戲吧。

資料參考來源:
game-and-watch-patch

評論:

  1. Game & Watch的存檔有辦法匯出嗎?

  2. STLINK 是直接插到 rpi 上 ?還是 windows pc?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *