Nintendo Game & Watch 刷機完全攻略

2022/02/09 重大更新,解決方式在最下方。

先前為了要刷這台機器,在網路上爬了很多教學,但每個教學步驟多少有些小問題,不是針對高手省略了一些過程,要不就是部分指令有出錯,所以我在這篇整合了我自己刷下來還算沒什麼問題的步驟給大家參考。刷機還是有一定程度的風險,不一定適合所有未知變數。

首先先準備一台樹莓派 ( 以下簡稱 Pi ),基本上所有型號都行,這邊我是使用 3B+ 來刷機。接著安裝 Raspberry Pi OS,安裝方式如下:

到官網下載 Raspberry Pi Imager 後執行安裝,網址為:https://www.raspberrypi.com/software/

將一張記憶卡 ( 16GB 以上 ) 插入電腦,執行 Raspberry Pi Imager

  1. 選擇 Raspberry Pi OS (other)>Raspberry Pi OS Full (32-bit)
    # 安裝完整版在執行 upgrade 會耗費較多時間,但對不熟悉 Linux 指令的人最保險。

  2. 選擇記憶卡位置

  3. 寫入

待寫入完成即可將記憶卡裝入 Pi 開機進行刷機程序。

▲將 Raspberry Pi OS 寫入記憶卡。

本次刷機作業是在 Windows 系統下操作,所以必須要先開啟 Pi 的 SSH 連線,另外 Windows 端也要安裝 SSH 連線工具和 FTP 傳輸工具,這邊是使用 PuTTY 和 Filezilla。

對應接腳:
Pi GPIO 24(pin18)←→ Game & Watch 2(SWDIO)
Pi GPIO 25(pin22)←→ Game & Watch 5(SWCLK)
Pi GND(pin39)←→ Game & Watch 3(GND)

▲Mario 對應接腳。

▲Zelda 對應接腳。

正式刷機程序開始:( 以下刷機程序無更換記憶體,Mario 為 1MB,Zelda 為 4MB )

《第一步》
先將 Pi 接上螢幕、網路線、鍵盤、滑鼠後開機,待開機完成後輸入使用者及密碼,原始使用者名稱為 pi,密碼為 raspberry,開啟桌面的 Terminal( 指令系統 )後輸入:

  1. cd /boot

  2. sudo touch ssh

  3. ifconfig

  4. sudo reboot

# 此步驟為將 Pi 的 SSH 開啟以供 Windows 連線,並且使用 ifconfig 確認 Pi 抓取的 IP 位置,最後重新啟動系統讓 SSH 啟用,這樣 Pi 端的部分就設定完成了。

▲開啟 SSH 並確認 IP 位置。

▲在 PuTTY 輸入 IP,並勾選 SSH 開啟連線。

▲在 Filezilla 的協定必須選擇 SFTP-SSH File Transfer Protocol。

《第二步》
將 Pi 的 GPIO 3 個腳位分別對應接上並且移除 Game & Watch 電池接點,刷機全程使用 " 穩定 " 的外部電源線。Windows 端開啟 PuTTY 輸入 Pi 的 IP、帳號、密碼連線,接著更新系統,安裝刷機必要程式,將主機解鎖備份韌體:( 注意!所有刷機動作皆在 Game & Watch 關機的狀況下完成,除非有特別提醒要開機才能繼續動作 )

  1. sudo apt update

  2. sudo apt upgrade

  3. wget https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v10.2.1-1.1/xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-arm.tar.gz

  4. wget https://github.com/xpack-dev-tools/openocd-xpack/releases/download/v0.11.0-1/xpack-openocd-0.11.0-1-linux-arm.tar.gz
    #此版的 openocd 可以由 patch openocd 取代。

  5. mkdir -p ~/opt

  6. cd ~/opt

  7. tar xvf ../xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-arm.tar.gz xpack-arm-none-eabi-gcc-10.2.1-1.1

  8. tar xvf ../xpack-openocd-0.11.0-1-linux-arm.tar.gz

  9. chmod -R -w xpack-openocd-0.11.0-1/

  10. export PATH=$PATH:/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/

  11. sudo apt-get install git  ( Full 版免裝 )

  12. git clone https://github.com/ghidraninja/game-and-watch-backup.git

  13. export OPENOCD="/home/pi/opt/xpack-openocd-0.11.0-1/bin/openocd"

  14. sudo apt-get install binutils-arm-none-eabi python3 libftdi1

  15. cd game-and-watch-backup

  16. ./1_sanity_check.sh rpi mario
    # 如果 openocd 有正確執行,那麼執行後會有 Looks good! 訊息出現,此步驟如果失敗請往回檢查,否則接下來都會無法進行。

  17. ./2_backup_flash.sh rpi mario
    # 執行後會提醒你需要在時鐘畫面,這時將 Game & Watch 開機後再按下 Enter 繼續。

  18. ./3_backup_internal_flash.sh rpi mario
    # 備份中途會請你將主機電源線移除再接上開機 ( 建議 5 秒以上再接上 ),確認畫面出現藍屏再按下 Enter 繼續,如果沒有藍色畫面,可按下 Game & Watch 主機上的 TIME 鍵再重開,直到出現藍色畫面再繼續。

  19. ./4_unlock_device.sh rpi mario
    # 解鎖你的 Game & Watch 以便刷入自製軟件。

  20. ./5_restore.sh rpi mario
    # 還原成功後將主機電源線移除再接上開機即會恢復到原始 Mario 韌體。
# 16.~20. 的 rpi 為連接的設備,mario 為要刷的主機,如果是 zelda 機就要將 mario 改為 zelda,執行指令前也可以輸入 ls  ( 功能同 DOS 的 dir ) 檢查目前位置下是否有 16.~20. 的文件,確保你在正確的目錄中。此階段完成後在 game-and-watch-backup/backups 目錄下可以得到 flash_backup_mario.bininternal_flash_backup_mario.binitcm_backup_mario.bin 三個檔案。非常重要!請使用 Filezilla 備份到電腦存檔,要是在往後的刷機過程中發生失誤可以執行 20. 還原。

▲務必確認 openocd 有正確執行,並且有 Looks good! 訊息出現。

《第三步》
安裝 Retro-Go 模擬器:( 第 14. 請將 Game & Watch 開機 )
  1. cd ..

  2. git clone https://github.com/ghidraninja/game-and-watch-flashloader.git
    # 確認在 opt 目錄中。

  3. cd game-and-watch-flashloader

  4. make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/

  5. cd ..

  6. git clone --recurse-submodules https://github.com/kbeckmann/game-and-watch-retro-go
    # 確認在 opt 目錄中。

  7. 使用 Filezilla 將遊戲的 ROM 檔放到 /home/pi/opt/game-and-watch-retro-go/roms/xxx/ 下,在此我是放 Game & Watch 的遊戲,所以放置路徑為:/home/pi/opt/game-and-watch-retro-go/roms/gw/

  8. cd game-and-watch-retro-go

  9. sudo apt-get install python3-pip ( Full 版免裝 )

  10. sudo apt install python3-pil ( Full 版免裝 )
    # 在後面刷圖形選單介面的時候會用到,沒裝到圖片無法解析。

  11. python3 -m pip install -r requirements.txt

  12. export ADAPTER=rpi

  13. export OPENOCD="/home/pi/opt/xpack-openocd-0.11.0-1/bin/openocd"

  14. make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COMPRESS=lzma GNW_TARGET=mario flash
# 如果刷的是 zelda 機,請將 14. 的 mario flash 改為 zelda flash。

注意:往後 Pi 只要有重新開機過,就一定要再確認 gcc 與 openocd 有啟動,且刷機使用方式為 rpi。

▲ROM 檔放置位置。

《第四步》
安裝圖形選單介面:( 第 10. 請將 Game & Watch 開機 )
  1. cd game-and-watch-retro-go

  2. git remote add olderzeus https://github.com/olderzeus/game-and-watch-retro-go.git

  3. git fetch olderzeus

  4. git checkout NewUI

  5. git submodule update

  6. make clean

  7. git pull

  8. chmod a+x scripts/*.sh

  9. 使用 Filezilla 將與 ROM 檔同名的圖片檔放置在相同的位置下,可使用 png 或 jpg,尺寸為 128x96  Pixel。

  10. make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COVERFLOW=1 COMPRESS=lzma flash_all
# 上述所有 make GCC_PATH 步驟如果刷不過,請移除電源線後再接上,並且按住主機電源鍵不放再執行,失敗請不要放棄,多試幾次就能成功,另外 make GCC_PATH 這個部份是在 Pi 上面做打包的動作然後再寫入 Flash 內,會依照你放的資料多寡,打包及寫入時間會越來越長,之後如果有新增或是刪減 ROM,就需要重新做打包的動作,請回到 7. make clean 後再做一次 make GCC_PATH。

▲圖檔名字要與 ROM 檔完全相同。

《第五步》
刷中文圖形選單介面:( 此步驟無必要性,依個人需求使用 )

在執行第四步驟的 make GCC_PATH 中加入 CODEPAGE=950 即可。

範例:
  1. make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COVERFLOW=1 CODEPAGE=950 COMPRESS=lzma flash_all
# 如有更換較大的 Flash 如 16MB 或 64MB 可下以下指令:( 可再搭配中文選單指令使用 )
  1. make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COVERFLOW=1 COMPRESS=lzma EXTFLASH_SIZE_MB=16 flash_all

  2. make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COVERFLOW=1 COMPRESS=lzma EXTFLASH_SIZE_MB=64 flash_all
# 在執行 make GCC_PATH 前,可先下 make romdef 產生每個模擬器的 json,可開啟編輯將遊戲顯示名稱改為中文 ( 此步驟需與中文圖形介面一起使用 ),我個人是覺得這個步驟沒什麼必要,除非刷完以後內容就不會再變動了。

# 此外,如果已經使用完整步驟刷過第一台,爾後可以直接跳過第四步與第五步,直接執行第三步 14. 並加入選單參數,就能安裝帶有圖形介面及中文選單的 Retro Go。

▲修改顯示名稱為中文名。

▲最終刷機成果。

▲特別是原始的 Game & Watch LCD Game 系列,原汁原味,一定要玩

# 製作 Game & Watch LCD Game 的方式請參考 LCD Game Shrinker 這篇文章,裡面有非常詳細的說明與步驟。

▲最終刷機成果示範影片。

資料參考來源:




後記:
這台機器相信很多朋友都想給它刷下去爽玩,讓它成為正港的 Game & Watch。老實說,知道方法後刷機真的不難,只要有正確的步驟再加上一點點的勇氣,相信大家都能成功的。如果真的不敢嘗試的話,建議還是請專業的朋友幫忙協助處理,畢竟 github 經常會更新,get 下來的東西也都一直在變,所以請在刷機的時候務必還是要留意一下原作者的訊息喔。

2022/02/09 重大更新:
由於 NewUI 於日前有做重大更新,將原本的 BANK 由 128K 改為 256K,所以會造成在第四步刷圖形介面會有問題,請在 make GCC_PATH 中再加入 BIG_BANK=0 即可正常刷入。

或是 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
爾後需要呼叫 openocd 時,就使用這個路徑:

export OPENOCD="/opt/openocd-git/bin/openocd"

這個方式雖然可以直接解決,但 Mario 只有 1MB,相對能裝的遊戲就更少了,建議有機會的話還是換掉 Flash。
經 New UI 原作者 orzeus 指正:用 256K 內置 bank 能多利用 128k 內置存儲,外置存儲能釋放 3-50k,同等條件下能多裝遊戲。


留言

  1. 推推推。。感謝麥斯大大無私分享。。^^

    回覆刪除
  2. 感謝麥斯大大無私分享!

    回覆刪除
  3. ---這個方式雖然可以直接解決,但 Mario 只有 1MB,相對能裝的遊戲就更少了

    用256K内置bank能多利用128k内置存储,外置存储能释放3-50k,同等条件下能多装游戏。

    回覆刪除
    回覆
    1. 了解,我會修改錯誤的內文,也謝謝您的指導,順利的幫助我可以使用。

      刪除
  4. 謝謝提供的教程,很有幫助,請問如果我升級了FLASH,我應該從那一步開始刷呢?謝謝

    回覆刪除
    回覆
    1. 如果有換過FLASH就表示你第一、二步已經做過了,那就從第三步開始即可,或是可以看另一篇選擇刷雙系統。

      刪除
    2. 謝謝你,的確已經完成了第一部和第二部。那我就可以從第三部開始了,有問題還請多指教,再次感謝

      刪除
  5. 你好

    我想更換成64mb
    是否將一及二步都完成後才焊接換成64mb

    謝謝

    回覆刪除
    回覆
    1. 是的,沒錯,必須先完成破解才能更換

      刪除
  6. 您好,一直被GW兩種格式困惑著,想請教一下,關於GW rom是要用MGW檔呢?還是MAME的壓縮檔(ex: gnw_ball.zip),謝謝.

    回覆刪除
    回覆
    1. https://gist.github.com/DNA64/16fed499d6bd4664b78b4c0a9638e4ef
      請使用這個連結的方式製作gw格式,mgw不是正規的G&W遊戲,那是屬於再製作品。

      刪除
    2. 了解,感謝您的解惑.

      刪除
    3. 不好意思,再請教一下,目前我已轉換49個GW檔,有部分無法轉成功,可否請問總GW檔應為多少,使用哪版的MAME較好,Artwork檔的部分不知是否方便提供來源,感謝您.....一個只想刷全套GW的懷舊心願

      刪除
    4. 我是從下面這個 GD 抓的,我基本上只有轉單螢幕,雙螢幕太窄,看了難受,哈
      https://drive.google.com/drive/folders/1vl9O-0jIGCHHY_lrWpOwBtqTXEKsVGOY

      刪除
    5. 了解,感謝您,目前已轉到50個.這樣就很滿足了...對了,發現轉完後在title & preview檔案夾內有轉出縮圖檔.

      刪除
  7. 這部分不能下載了

    wget https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v10.2.1-1.1/xpack-arm-none-eabi-gcc-10.2.1-1.1-linux-arm.tar.gz

    回覆刪除
    回覆
    1. 可以,我剛剛測試過了

      刪除
    2. ali@raspberrypi:/boot $ wget https://github.com/xpack-dev-tools/arm-none-eabi-gccxpack/releases/download/v10.2.1-1.1/xpack-arm-none-eabi-gcc- 10.2.1-1.1-linuxarm.tar.gz --2022-12-13 08:21:51-- https://github.com/xpack-dev-tools/arm-none-eabi-gccxpack/releases/download /v10.2.1-1.1/xpack-arm-none-eabi-gcc-10.2.1-1.1-linuxarm.tar.gz

      Resolving github.com (github.com)... 20.205.243.166

      Connecting to github.com (github.com) | 20.205.243.166|:443... connected.

      HTTP request sent, awaiting response... 404 Not Found

      刪除
    3. 我這樣打進去出了這個,第一次做不太懂是否我做錯了!

      刪除
    4. 全部都是在Terminal( 指令系統 )後輸入的對吧

      刪除
    5. 你如果都是在RPI的Terminal上操作的話不用做第一步了,那個是給Windows用遠端連進去的用的,你在ali@raspberrypi:這邊直接做第二步就行了 ( 要能連到網路 )

      刪除
  8. 可以請問一下麥斯大GW的銀底紙是買哪一家的嗎? 或是你是用哪一種紙或特殊材質? 我買了幾種都沒有你的小金剛來得清晰漂亮,很想知道你哪一種反光底,謝謝

    回覆刪除
    回覆
    1. 很想知道你 是用 哪一種反光底,謝謝

      刪除

張貼留言

這個網誌中的熱門文章

為什麼要在 CRT 電視上玩復古遊戲?

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

小霸王 Q9 非官方韌體初探

任天堂紅白機改超級 AV 心得

如何轉換 PCE-CDROM 的映像檔成為小霸王 Q9 能玩的格式(兼容其他需要此格式的模擬器)

你今天 H 連打了嗎?【 麻雀學園.卒業篇 】

RGBSPi 簡易開箱評測

RaspiBoy 簡易開箱評測

SEGA New Astro City Mini 新發售 ?