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 分鐘)
-
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
-
export OPENOCD="/opt/openocd-git/bin/openocd"
# 爾後需要開啟 openocd 時,就使用這個路徑。
《第二步》
調整 SWAP 交換空間容量至少 1GB 以上,否則在安裝 keystone-engine
時,Pi 3B+ 會因記憶體不足而導致崩潰。
-
sudo dphys-swapfile swapoff
# 停用 SWAP。
-
sudo nano /etc/dphys-swapfile
# 使用 nano 修改文件。
-
CONF_SWAPSIZE=100 >
CONF_SWAPSIZE=1024
# 將 SWAPSIZE 修改為至少 1GB。
-
按下 Ctrl+X,選 Y 按 Enter 保存退出
-
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
sudo reboot
#設定好 SWAP 後並重啟系統。
《第三步》
安裝 cmake。cmake 是構建 keystone-engine 所必需的。
-
sudo apt update
- sudo apt install -y cmake
《第四步》
手動安裝 keystone-engine。因為 get 封包文件的問題,會導致接下來在執行第五步的 pip3 install -r requirements.txt 時,會有 keystone-engine 裝不起來的狀況發生,可能是我的刷機設備及 OS 的問題吧,所以這邊直接使用手動安裝。(時程約 20-30 分鐘)
手動安裝 keystone-engine。因為 get 封包文件的問題,會導致接下來在執行第五步的 pip3 install -r requirements.txt 時,會有 keystone-engine 裝不起來的狀況發生,可能是我的刷機設備及 OS 的問題吧,所以這邊直接使用手動安裝。(時程約 20-30 分鐘)
-
wget
https://files.pythonhosted.org/packages/0a/65/3a2e7e55cc1db188869bbbacee60036828330e0ce57fc5f05a3167ab4b4d/keystone-engine-0.9.2.tar.gz
-
tar -zxvf keystone-engine-0.9.2.tar.gz
-
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/ 資料夾內。
-
tar czvf keystone-engine-0.9.2mod.tar.gz keystone-engine-0.9.2
- pip install keystone-engine-0.9.2mod.tar.gz
《第五步》
安裝 Game & Watch Patch。內建是使用 stlink 刷機, 如果有需要也能在指令中更換成 rpi(ADAPTER=rpi)。
安裝 Game & Watch Patch。內建是使用 stlink 刷機, 如果有需要也能在指令中更換成 rpi(ADAPTER=rpi)。
-
git clone https://github.com/BrianPugh/game-and-watch-patch
# 確認在 opt 目錄中。
-
cd game-and-watch-patch
-
將備份的 flash_backup_zelda.bin 與 internal_flash_backup_zelda.bin
兩個檔案放在 game-and-watch-patch 的根目錄下
-
pip3 install -r requirements.txt
- make download_sdk
- make clean
-
make PATCH_PARAMS="--device=zelda" LARGE_FLASH=1 flash_patched
# 完成後即可看見主機螢幕恢復成薩爾達系統。
# 如果刷機提示無 gcc 時,也要記得再啟動一次。
export PATH=$PATH:/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/
《第六步》
安裝 RETRO GO。
安裝 RETRO GO。
-
cd ..
-
cd game-and-watch-retro-go
- make clean
-
make -j8 EXTFLASH_SIZE_MB=60 EXTFLASH_OFFSET=4194304 INTFLASH_BANK=2
flash
注意!若需要顯示遊戲圖片,請在執行 4. 的時候加入 COVERFLOW=1,否則刷完是沒有遊戲圖片的,沒有圖片的好處是可以再放更多的遊戲。需要中文介面也一併加上 CODEPAGE=950。
範例:
- make -j8 EXTFLASH_SIZE_MB=60 EXTFLASH_OFFSET=4194304 COVERFLOW=1 CODEPAGE=950 INTFLASH_BANK=2 flash
▲打包完成後請留意 Flash 空間,若超過會無法寫入,必須重新打包。 |
燒錄完成後重新開機即可進入原生薩爾達系統,按下 GAME + 按鍵左,即可進入
RETRO GO 系統。爾後要增加或是減少遊戲,也只要執行第六步刷入 BANK2 即可。
刷瑪利歐機的雙系統在參考資料來源中也有詳細說明,這裡就不再重複了。另外,檔案一多相對寫入的時間也會變得非常的漫長,建議先放幾個進去測試,確定沒問題後再全部一次寫入。60MB
完全使用,rpi 寫入時程約 150 分鐘(含打包),若是用 stlink 則 60
分鐘內可完成(含打包)。
2022/03/07 補充:
感謝網友 123 說明,寫入速度慢是因為 openocd 的 rpi cfg 沒寫好,打開 scrpits/interface_rpi.cfg 在最後添加一行 adapter speed 1500 就可以了。
▲最後我們來看看 64MB 到底能裝下多少遊戲吧。
資料參考來源:
写入速度慢是因为openocd的rpi cfg没写好。打开scrpits/interface_rpi.cfg在最后添加一行就可以了
回覆刪除adapter speed 1500
我是最老的rpi最高只能到1.5M/s,不知道比较新一点的型号能不能更高速度。make flash_all的时候可以看输出有没有设定成你配置里写的速度,如果太高不支持的话会退回最低速度
太好了,感謝您的說明,又學到一招了~
刪除請大大幫忙,我試多部改64M後,所有正常,唯讀所有返回唔到時鐘系统,未改前可以的。謝謝
回覆刪除這是正常的喔,刷雙系統切到RETROGO後只能重開機才能回到原系統。
刪除麻煩大大,我意思是刷雙系统前,是不是要用三個backups檔做回原本時鐘系统,先可開始刷雙系统,求指敎謝謝。
刪除沒錯,要先刷原系統,再刷RETROGO,文章的步驟說的很清楚。
刪除謝謝大大
回覆刪除不客氣
刪除請問大大 RETROGO 的game & wahch 的rom是 .gw 檔 請問是如何生成的 謝謝!!
回覆刪除https://gist.github.com/DNA64/16fed499d6bd4664b78b4c0a9638e4ef?fbclid=IwAR2KIzrSifpIkhPPO5sXohJ_au7lykDE6OIMSV1ateH1ItqMwyxkGp5yhSg
刪除這裡有完整的說明喔,照著步驟即可。
感謝大大 回答!!
刪除不客氣喔
刪除maxxkao 問一下 如果是3B 的板子 也是同樣方法嗎? 謝謝你~
回覆刪除可以的喔
刪除大大問一下喔 備份的是每台都備份還是備份一台就好? 備份完之後在改內存嗎?
刪除謝謝
相同的機器備份一台即可,只要機器有解鎖過,都可以用同一份還原。
刪除求大大幫手,本人薩爾達跟程序已可刷雙系统能正常運作,唯獨瑪利歐機照跟這程序刷機,第一日是可以的,到第二日就好多時不能進入刷機畫面自動關機,我已抓文用很多方法及跟大大的 (資料參考來源) 都未能改善都是一樣, 麻煩大大幫手敎刷瑪利歐雙系统,謝謝。
回覆刪除在game-and-watch-patch
刪除make clean
make PATCH_PARAMS="--device=mario --internal-only" flash_patched
在game-and-watch-retro-go
make clean
make -j8 EXTFLASH_SIZE_MB=60 EXTFLASH_OFFSET=4194304 INTFLASH_BANK=2 flash
可以試試這個,可能可以多3MB
make -j8 EXTFLASH_SIZE_MB=63 EXTFLASH_OFFSET=1048576 INTFLASH_BANK=2 flash
謝謝大大,你寫的是最好的,只要跟着你的就能成功.
刪除感謝你的支持~
刪除谢谢教学,您是全网写的最清楚的。
回覆刪除希望大大能再出一篇「备份/还原游戏存档」的教学...
(试了好久,不知道如何在「游戏改成中文名称」后,进行备份/还原游戏存档)
(遇到乱码的问题… 好难解!!)
https://github.com/olderzeus/game-and-watch-retro-go#:~:text=and%20read%20on.-,Backing%20up%20and%20restoring%20save%20state%20files,-Save%20states%20can
這個我沒有用過耶,有時間再來試看看。
刪除亂碼會不會是因為950是繁體中文,簡体中文要用936
刪除你好, 我在第四步安裝keysotone-engine的時候出現了問題,即便我已經修改了SETUP.PY。 安裝還是失敗。 請問又什麽其他建議嗎? 謝謝
回覆刪除請問你是使用哪一個樹莓版本呢?
刪除樹莓3代 B型 ,謝謝
刪除那應該是沒問題才對,有具體錯誤訊息嗎?
刪除你好,我已經成功安裝了KEYSTONE ENGINE, 我把文件都刪了,重新安裝一遍就可以了。 但是接下來的第五步又出現了問題。 首先,第五步,你介紹說: 安裝 Game & Watch Patch。內建是使用 stlink 刷機, 如果有需要也能在指令中更換成 rpi(ADAPTER=rpi)。 我用的樹莓, 我在哪個指令中更換RPI呢?
刪除之後,我卡在7, make PATCH_PARAMS="--device=mario" LARGE_FLASH=1 flash_patched
錯誤提示是adot111@raspberrypi:~/opt/game-and-watch-patch $ make PATCH_PARAMS="--device=mario" LARGE_FLASH=1 flash_patched
python3 scripts/check_env_vars.py "flash_patched" build/env "--device=mario"
arm-none-eabi-gcc -c -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard -DGNW_DEVICE_MARIO=1 -DUSE_HAL_DRIVER -DSTM32H7B0xx -ICore/Inc -ICore/lzma -IDrivers/STM32H7xx_HAL_Driver/Inc -IDrivers/STM32H7xx_HAL_Driver/Inc/Legacy -IDrivers/CMSIS/Device/ST/STM32H7xx/Include -IDrivers/CMSIS/Include -Wall -fdata-sections -ffunction-sections -Os -MMD -MP -MF"build/ips.d" -Wa,-a,-ad,-alms=build/ips.lst Core/Src/ips.c -o build/ips.o
/bin/sh: 1: arm-none-eabi-gcc: not found
make: *** [Makefile:186: build/ips.o] Error 127
謝謝
刷機請確認主機已解鎖並啟動 gcc 與 openocd,rpi啟動為 export ADAPTER=rpi,在刷之前執行即可
刪除另外我mario的語法和你不同,我是用
在game-and-watch-patch
make clean
make PATCH_PARAMS="--device=mario --internal-only" flash_patched
在game-and-watch-retro-go
make clean
make -j8 EXTFLASH_SIZE_MB=60 EXTFLASH_OFFSET=4194304 INTFLASH_BANK=2 flash
基本上所有的解決方式在我這兩篇都有明確的方法,另外挑選好線材也很重要,很多人刷不過幾乎都是因為接觸不良。
謝謝大大,我試試。 是不是刷機之前都要運行,export ADAPTER=rpi ; export OPENOCD="/home/pi/opt/xpack-openocd-0.11.0-1/bin/openocd" 怎麽啟動,GCC? 謝謝
刪除是的,每次打開樹莓都要啟動 gcc 與 openocd,如果你用 rpi 也要
刪除export ADAPTER=rpi
export OPENOCD="/opt/openocd-git/bin/openocd"
export PATH=$PATH:/home/pi/opt/xpack-arm-none-eabi-gcc-10.2.1-1.1/bin/
请教一下,树莓派3B不是硬件吗?使用的配套TF卡应该刷入什么固件?谢谢
回覆刪除刷樹莓派OS,請參考這篇
刪除https://maxxkao.blogspot.com/2022/01/game-watch.html
收到,非常感谢。我在网上也看到有图形化界面的树莓派刷机方式,不知道这种是什么方式呢?https://www.youtube.com/watch?v=h5S6eFH2jD4
刪除這是另一種早期的刷法,我沒有用過,現在大都是跑我這個雙系統的刷法
刪除感谢解答,听说64M的Flash会有卡的情况发生?我考虑主要哪来玩GBC的RPG游戏,后期有些游戏都已经4MB和2MB了,16MFlash似乎又小了点,不知道您这边实际使用16M和64M的FLash使用运行速度差异大吗?
刪除沒用過16,只有用64,已經刷過至少30台,沒你說的會卡的情形
刪除谢谢,请问刷完双系统,玩模拟器的话,续航还能达到8小时吗
刪除沒刷能有5-6小時就很偷笑了,有刷和沒刷使用時間差異不大,和你開聲音還有亮度才有關係,當然亮度越暗,聲音越小可以玩越久
刪除哈哈哈,我这个月刚买的机器,就是感觉续航还是挺强的。但是这个机器是不是充电完成也没指示灯啊?没电了没提示,充电完成也没提示~~
刪除您好,make romdef生成json的详细命令能介绍一下吗?我没有看懂,非常感谢。现在我的各个ROM文件里面都没有json文件,谢谢。另外再咨询一下,“Pack or don't pack rom to firmware (Set publish to 1 or 0)
回覆刪除Enable save for single game even STATE_SAVING=0 (Set enable_save to 1, if STATE_SAVING=1 all games will be save enabled)”这两段又是什么意思呢?非常感谢
請參考此篇的第五步:
刪除https://maxxkao.blogspot.com/2022/01/game-watch.html
直接 make romdef 後,每個模擬器的資料夾下就會出現 json 文件,如果沒有要特別將遊戲標題變成中文的話,基本上這步驟可以直接省略。
至於你說的那個文字我沒特別注意過,因為刷機途中出現的訊息實在太多了,除了重要訊息之外,我無法每個都一一確認。
請問一下,在改完記憶體後,在這步(make flash_patched)會出現the adapter doesnt support configurable speed,請問是啥問題? 我使用的是rpi3
回覆刪除先確認已解鎖還原後才更換記憶體,如果是的話那就確認你是用stlink還是rpi連結,最後都沒問題的話,就再確認是否接觸不良,可以的話建議使用stlink,因為上面有燈號可以方便確認是否有寫入資料。
刪除想請問一下,在第五步make PATCH_PARAMS="--device=zelda" LARGE_FLASH=1 flash_patched 之後,要麼會報錯停止,要麼裝入的原廠系統不是patched的,導致retrogo沒辦法正常安裝是怎麼回事呢
回覆刪除make: *** [Makefile:281:flash_patched_ext] 错误 1
刪除我沒有出現過簡體字的錯誤訊息過,你有先照這篇 https://maxxkao.blogspot.com/2022/01/game-watch.html 刷過破解了嗎?另外你也是用樹莓派刷嗎?
刪除想請問一下,《第五步》make download_sdk出現報錯:make: *** 【Makefile.sdk:97:Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h7b0xx.h】 錯誤 4怎么解决
回覆刪除出錯的問題有很多,首先要確認你有照這篇 https://maxxkao.blogspot.com/2022/01/game-watch.html 完成破解,並且正確地將系統還原成功,這樣才能進行本篇的刷雙系統,另外你是用原來的Flash還是有更換大容量的Flash,有沒有更換成功都會造成無法繼續刷下去的原因。
刪除你好,我也是出现了这个问题,此处make download_sdk应该不需要接game&watch就能把SDK下载到电脑,但是报错了,是不是网络问题呢
刪除出錯的問題有很多,首先要確認你有照這篇 https://maxxkao.blogspot.com/2022/01/game-watch.html 完成破解,並且正確地將系統還原成功,這樣才能進行本篇的刷雙系統,否則是刷不進去的。
刪除另外是否用原來的Flash還是有更換大容量的Flash,有沒有更換成功都會造成無法繼續刷下去的原因。
你好!可以幫我看看出了甚麼問題嗎?我在執行第五步的第7後得到下列的錯誤
回覆刪除DEPRECATED! use 'sysfsgpio swd_nums' not 'sysfsgpio_swd_nums'
DEPRECATED! use 'sysfsgpio srst_num' not 'sysfsgpio_srst_num'
none separate
Info : SysfsGPIO JTAG/SWD bitbang driver
Info : Note: The adapter "sysfsgpio" doesn't support configurable speed
Info : SWD DPIDR 0x6ba02477
Info : [stm32h7x.cpu0] Cortex-M7 r1p1 processor detected
Info : [stm32h7x.cpu0] target has 8 breakpoints, 4 watchpoints
Info : gdb port disabled
Info : starting gdb server for stm32h7x.cpu0 on 3333
Info : Listening on port 3333 for gdb connections
Warn : [stm32h7x.cpu0] target was in unknown state when halt was requested
Info : [stm32h7x.cpu0] external reset detected
Info : Halt timed out, wake up GDB.
Error: timed out while waiting for target halted
make: *** [Makefile:274:flash_patched_int] 錯誤 1
我刷機方式採用rpi,麻煩撥空幫我看看哪裡出問題了,感謝!
有確認過已經完成 https://maxxkao.blogspot.com/2022/01/game-watch.html Nintendo Game & Watch 刷機完全攻略這篇的流程了嗎?
刪除