为新的任天堂游戏和观看游戏机定制固件。
此存储库包含自定义代码以及修补程序,以在库存游戏和观看固件中添加其他功能。简而言之,该项目使您可以运行游戏的固件,并随身携带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的特别喊叫)!