Nintendo Game & Watch 刷機完全攻略
2022/02/09 重大更新,解決方式在最下方。
先前為了要刷這台機器,在網路上爬了很多教學,但每個教學步驟多少有些小問題,不是針對高手省略了一些過程,要不就是部分指令有出錯,所以我在這篇整合了我自己刷下來還算沒什麼問題的步驟給大家參考。刷機還是有一定程度的風險,不一定適合所有未知變數。
首先先準備一台樹莓派 ( 以下簡稱 Pi ),基本上所有型號都行,這邊我是使用 3B+ 來刷機。接著安裝 Raspberry Pi OS,安裝方式如下:
到官網下載 Raspberry Pi Imager 後執行安裝,網址為:https://www.raspberrypi.com/software/
將一張記憶卡 ( 16GB 以上 ) 插入電腦,執行 Raspberry Pi Imager
-
選擇 Raspberry Pi OS (other)>Raspberry Pi OS Full (32-bit)
# 安裝完整版在執行 upgrade 會耗費較多時間,但對不熟悉 Linux 指令的人最保險。
-
選擇記憶卡位置
- 寫入
待寫入完成即可將記憶卡裝入 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( 指令系統 )後輸入:
-
cd /boot
- sudo touch ssh
- ifconfig
- 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 關機的狀況下完成,除非有特別提醒要開機才能繼續動作 )
- sudo apt update
-
sudo apt upgrade
-
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
-
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 取代。
-
mkdir -p ~/opt
-
cd ~/opt
-
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
-
tar xvf ../xpack-openocd-0.11.0-1-linux-arm.tar.gz
-
chmod -R -w xpack-openocd-0.11.0-1/
-
export PATH=$PATH:/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/
-
sudo apt-get install git ( Full 版免裝 )
-
git clone https://github.com/ghidraninja/game-and-watch-backup.git
-
export OPENOCD="/home/pi/opt/xpack-openocd-0.11.0-1/bin/openocd"
-
sudo apt-get install binutils-arm-none-eabi python3 libftdi1
-
cd game-and-watch-backup
-
./1_sanity_check.sh rpi mario
# 如果 openocd 有正確執行,那麼執行後會有 Looks good! 訊息出現,此步驟如果失敗請往回檢查,否則接下來都會無法進行。
-
./2_backup_flash.sh rpi mario
# 執行後會提醒你需要在時鐘畫面,這時將 Game & Watch 開機後再按下 Enter 繼續。
-
./3_backup_internal_flash.sh rpi mario
# 備份中途會請你將主機電源線移除再接上開機 ( 建議 5 秒以上再接上 ),確認畫面出現藍屏再按下 Enter 繼續,如果沒有藍色畫面,可按下 Game & Watch 主機上的 TIME 鍵再重開,直到出現藍色畫面再繼續。
-
./4_unlock_device.sh rpi mario
# 解鎖你的 Game & Watch 以便刷入自製軟件。
-
./5_restore.sh rpi mario
# 還原成功後將主機電源線移除再接上開機即會恢復到原始 Mario 韌體。
▲務必確認 openocd 有正確執行,並且有 Looks good! 訊息出現。 |
-
cd ..
-
git clone
https://github.com/ghidraninja/game-and-watch-flashloader.git
# 確認在 opt 目錄中。
-
cd game-and-watch-flashloader
-
make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/
-
cd ..
-
git clone --recurse-submodules
https://github.com/kbeckmann/game-and-watch-retro-go
# 確認在 opt 目錄中。
-
使用 Filezilla 將遊戲的 ROM 檔放到
/home/pi/opt/game-and-watch-retro-go/roms/xxx/ 下,在此我是放 Game &
Watch
的遊戲,所以放置路徑為:/home/pi/opt/game-and-watch-retro-go/roms/gw/
-
cd game-and-watch-retro-go
-
sudo apt-get install python3-pip ( Full 版免裝 )
-
sudo apt install python3-pil ( Full 版免裝 )
# 在後面刷圖形選單介面的時候會用到,沒裝到圖片無法解析。
-
python3 -m pip install -r requirements.txt
-
export ADAPTER=rpi
-
export OPENOCD="/home/pi/opt/xpack-openocd-0.11.0-1/bin/openocd"
- make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/ COMPRESS=lzma GNW_TARGET=mario flash
▲ROM 檔放置位置。 |
-
cd game-and-watch-retro-go
-
git remote add olderzeus
https://github.com/olderzeus/game-and-watch-retro-go.git
-
git fetch olderzeus
-
git checkout NewUI
-
git submodule update
-
make clean
-
git pull
-
chmod a+x scripts/*.sh
-
使用 Filezilla 將與 ROM 檔同名的圖片檔放置在相同的位置下,可使用 png 或
jpg,尺寸為 128x96 Pixel。
-
make GCC_PATH=/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/
COVERFLOW=1 COMPRESS=lzma flash_all
▲圖檔名字要與 ROM 檔完全相同。 |
- 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
-
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
- 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
▲修改顯示名稱為中文名。 |
▲特別是原始的 Game & Watch LCD Game 系列,原汁原味,一定要玩。 |
-
git clone
https://github.com/kbeckmann/ubuntu-openocd-git-builder
-
cd ubuntu-openocd-git-builder/
-
./build.sh
-
sudo dpkg -i openocd-git_*_armhf.deb
- sudo apt-get -y -f install
推推推。。感謝麥斯大大無私分享。。^^
回覆刪除讚讚~
刪除感謝麥斯大大無私分享!
回覆刪除太讚啦~
刪除---這個方式雖然可以直接解決,但 Mario 只有 1MB,相對能裝的遊戲就更少了
回覆刪除用256K内置bank能多利用128k内置存储,外置存储能释放3-50k,同等条件下能多装游戏。
了解,我會修改錯誤的內文,也謝謝您的指導,順利的幫助我可以使用。
刪除謝謝提供的教程,很有幫助,請問如果我升級了FLASH,我應該從那一步開始刷呢?謝謝
回覆刪除如果有換過FLASH就表示你第一、二步已經做過了,那就從第三步開始即可,或是可以看另一篇選擇刷雙系統。
刪除謝謝你,的確已經完成了第一部和第二部。那我就可以從第三部開始了,有問題還請多指教,再次感謝
刪除你好
回覆刪除我想更換成64mb
是否將一及二步都完成後才焊接換成64mb
謝謝
是的,沒錯,必須先完成破解才能更換
刪除您好,一直被GW兩種格式困惑著,想請教一下,關於GW rom是要用MGW檔呢?還是MAME的壓縮檔(ex: gnw_ball.zip),謝謝.
回覆刪除https://gist.github.com/DNA64/16fed499d6bd4664b78b4c0a9638e4ef
刪除請使用這個連結的方式製作gw格式,mgw不是正規的G&W遊戲,那是屬於再製作品。
了解,感謝您的解惑.
刪除不好意思,再請教一下,目前我已轉換49個GW檔,有部分無法轉成功,可否請問總GW檔應為多少,使用哪版的MAME較好,Artwork檔的部分不知是否方便提供來源,感謝您.....一個只想刷全套GW的懷舊心願
刪除我是從下面這個 GD 抓的,我基本上只有轉單螢幕,雙螢幕太窄,看了難受,哈
刪除https://drive.google.com/drive/folders/1vl9O-0jIGCHHY_lrWpOwBtqTXEKsVGOY
了解,感謝您,目前已轉到50個.這樣就很滿足了...對了,發現轉完後在title & preview檔案夾內有轉出縮圖檔.
刪除這部分不能下載了
回覆刪除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
可以,我剛剛測試過了
刪除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
我這樣打進去出了這個,第一次做不太懂是否我做錯了!
刪除全部都是在Terminal( 指令系統 )後輸入的對吧
刪除你如果都是在RPI的Terminal上操作的話不用做第一步了,那個是給Windows用遠端連進去的用的,你在ali@raspberrypi:這邊直接做第二步就行了 ( 要能連到網路 )
刪除可以請問一下麥斯大GW的銀底紙是買哪一家的嗎? 或是你是用哪一種紙或特殊材質? 我買了幾種都沒有你的小金剛來得清晰漂亮,很想知道你哪一種反光底,謝謝
回覆刪除很想知道你 是用 哪一種反光底,謝謝
刪除https://3dlens.com/taiwan/
刪除