為新的任天堂遊戲和觀看遊戲機定制固件。
此存儲庫包含自定義代碼以及修補程序,以在庫存遊戲和觀看固件中添加其他功能。簡而言之,該項目使您可以運行遊戲的固件,並隨身攜帶Retro-Go。
LEFT
+ GAME
)從內部閃存庫2啟動復古啟動。make help
查看所有配置選項。PATCH_PARAMS="--device=mario"
)--smb1=path-to-patched-smb1-rom.nes
播放SMB1 ROM黑客攻擊的能力--smb1-graphics=path-to-patch.ips
動態加載SMB1 ROM黑客sprites的能力ips/
並讓Patcher通過標誌自動發現它們--smb1-graphics-glob
PATCH_PARAMS="--device=zelda"
)--no-beep
在時間/時鐘上刪除第二個蜂鳴的能力此存儲庫使用GNWManager CLI工具。查看有關如何安裝的說明。
通過:安裝遊戲和觀察點python依賴(> = python3.6)通過:
pip3 install -r requirements.txt
將您的internal_flash_backup_${DEVICE}.bin
和flash_backup_${DEVICE}.bin
放在此存儲庫的根部。要從您的GNW系統中提取這些內容,請參見GNWManager解鎖教程。例如,如果我們要修補mario
遊戲並觀看,則需要該項目的根目錄中的文件internal_flash_backup_mario.bin
和flash_backup_mario.bin
。
有關設備模型,請參見下面的適當部分。
對於其他配置選項,請運行make help
。
由於大多數人都將使用複古go使用它,因此希望使用最少的外部存儲量,並且不在乎睡眠圖像或馬里奧歌曲復活節彩蛋,所以這裡是推薦命令。請注意,這使用了內部銀行1的無證件128KB,並且需要安裝openOCD的修補版本。
# in this repo
make clean
make PATCH_PARAMS="--device=mario --internal-only" flash
# in the retro-go repo
make clean
make -j8 INTFLASH_BANK=2 flash
假設您已將外部閃光燈升級到大於4MB的東西。請參閱Zelda文檔,以與庫存4MB閃光芯片一起使用Retro-Go。
# in this repo
make clean
make PATCH_PARAMS="--device=zelda" flash
# in the retro-go repo
make clean
# In this example, I'm assuming you have a 64MB flash chip (60 = 64 - 4)
make -j8 EXTFLASH_SIZE_MB=60 EXTFLASH_OFFSET=4194304 INTFLASH_BANK=2 flash
從Docker容器中閃爍的步驟(在Linux上運行,例如Archlinux或Ubuntu):
# Go into the docker directory of this repo.
cd docker/
# Pull the pre-built docker image.
docker pull brianpugh/game-and-watch-patch:latest
# When done, use the image to create a container with the attached docker-compose.yaml file.
# You have to edit the compose file and set the path to the directory with your firmware backup (volumes section of the file).
docker compose up -d
# This will create and run a container game-and-watch-patch.
# The firmware backup files will be mounted into /tmp/firmware of the container.
# Now, go inside the container copy the backup files and proceed as described above in the Usage section.
docker exec -it game-and-watch-patch /bin/bash
如果您遇到權限問題,請確保您的用戶在Docker組中。
keystone-engine
如果您無法在Raspberry Pi 3上安裝keystone-engine
,請嘗試:
raspi-config
將GPU RAM更新為16MB git clone https://github.com/keystone-engine/keystone
cd keystone/bindings/python/
python3 -m pip install .
開發功能的主要階段:
Core/Inc/stock_firmware.h
。Core/Src/main.c
中實現自己的功能。您的自定義功能很可能會在(2)中調用該功能。您可能還必須添加-Wl,--undefined=my_custom_function
在makefile中的LDFLAGS
中,以使其不會被優化為無法到達的代碼。patches/patches.py
中。這是我第一次為封閉源二進制開發補丁。我記錄了自己的旅程,希望它對他人有所幫助。如果您有任何建議,技巧,技巧或類似的建議,請留下github問題,我將更新文檔!
感謝使這成為可能的社區!該倉庫是在其他人的幫助下建造的。該項目開發過程中引用的存儲庫:
我還要感謝StackSmashing Discord的所有幫助(對@cyanic的特別喊叫)!