최신 Nintendo 게임 및 시계 콘솔을위한 맞춤형 펌웨어.
이 repo에는 사용자 정의 코드와 스톡 게임에 추가 기능을 추가하고 펌웨어를 시청하는 패치 유틸리티가 포함되어 있습니다. 요컨대,이 프로젝트를 사용하면 게임 펌웨어를 실행할 수 있으며 시계는 레트로가 함께 제공됩니다.
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 해킹 스프라이트를 동적으로로드하는 기능ips/
에 추가하고 패치가 깃발을 통해 자동으로 그들을 발견하도록하십시오 --smb1-graphics-glob
PATCH_PARAMS="--device=zelda"
)--no-beep
통해 시간/시계에서 두 번째 경고음을 제거하는 능력이 저장소는 GNWManager CLI 도구를 사용합니다. 설치 방법에 대한 지침을 참조하십시오.
게임 및 워치 패치 파이썬 종속성을 설치하십시오 (> = python3.6 필수) :
pip3 install -r requirements.txt
이 repo의 루트에 internal_flash_backup_${DEVICE}.bin
및 flash_backup_${DEVICE}.bin
배치하십시오. GNW 시스템에서이를 추출하려면 GNWManager 잠금 해제 자습서를 참조하십시오. 예를 들어, mario
게임을 패치하고 시청하는 경우이 프로젝트의 루트 디렉토리에 internal_flash_backup_mario.bin
및 flash_backup_mario.bin
파일이 필요합니다.
장치 모델의 적절한 섹션을 참조하십시오.
추가 구성 옵션의 경우 RUN을 make help
.
대부분의 사람들은이를 레트로로 사용하고 사용하는 최소의 외부 저장 공간을 원하고 잠자는 이미지 나 마리오 송 부활절 달걀을 신경 쓰지 않기 때문에 추천 명령은 다음과 같습니다. 이것은 문서화되지 않은 128kb의 내부 은행 1을 사용하며 패치 된 버전의 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보다 큰 것으로 업그레이드했다고 가정합니다. 스톡 4MB 플래시 칩과 함께 Retro-Go를 사용하려면 Zelda 문서를 참조하십시오.
# 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에게 특별한 외침)!