
## Description This pull request adds a file parser for cheat code support. If a file named the same as the selected rom with the extension .cht is found, it will attempt to parse the file for cheat codes and place them in `menu->boot_params->cheat_list` per the cheat backend API. Cheat files should be formatted this way: ``` # Super mario 64 infinite lives 8033B21D 0064 # 120 stars 80207723 0001 8020770B 00C7 50001101 0000 8020770C 00FF ``` The parser ignores lines that start with a '#', are under 12 characters or over 15 characters. Every other line should be valid cheat code inputs with the code on the left, and the value on the right separated by a space. ## Motivation and Context <!--- What does this sample do? What problem does it solve? --> Adds some initial cheat support in the frontend to allow users to modify their games more easily, and take advantage of the backend API. ## How Has This Been Tested? Tested on real hardware with a Summercart64 and Super Mario 64. ## Screenshots <!-- (if appropriate): --> ## Types of changes <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Improvement (non-breaking change that adds a new feature) - [ ] Bug fix (fixes an issue) - [ ] Breaking change (breaking change) - [x] Documentation Improvement - [ ] Config and build (change in the configuration and build system, has no impact on code or features) ## Checklist: <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> - [x] My code follows the code style of this project. - [x] My change requires a change to the documentation. - [x] I have updated the documentation accordingly. - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. <!--- It would be nice if you could sign off your contribution by replacing the name with your GitHub user name and GitHub email contact. --> Signed-off-by: XLuma <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added support for loading and managing cheat codes for N64 ROMs - Introduced ability to enable/disable cheats for specific ROMs - Added file type recognition for `.cht` cheat files - **Documentation** - Updated documentation with details about cheat code support, including Datel cart compatibility and supported code types - **Bug Fixes** - Implemented comprehensive error handling for cheat file loading - Added file parsing support for cheat codes <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Robin Jones <networkfusion@users.noreply.github.com>
5.2 KiB
N64 Flashcart Menu
An open source menu for N64 flashcarts and aims to support as many as possible. The menu is not affiliated with any partuclar flashcart and does not necessarily expose all capable firmware features.
This project considers flashcart sellers that include this menu or copyrighted ROM's as part of their product offering as licence offenders which may result in future action.
Flashcart Supported
This menu aims to support as many N64 flashcarts as possible. The current state is:
Supported
- SummerCart64
- 64Drive
Work in Progress (pre-release only)
- ED64 (X and V series)
- ED64P (clones)
Not planned
- Doctor V64
- PicoCart
- DaisyDrive
Current (notable) menu features
- Fully Open Source.
- Loads all known N64 games, even if they are byteswapped.
- Fully emulates the 64DD and loads 64DD disks (SummerCart64 only).
- Emulator support (NES, SNES, GB, GBC, SMS, GG, CHF) ROMs.
- N64 ROM box art image support.
- Background image (PNG) support.
- Comprehensive ROM save database (including homebrew headers).
- Comprehensive ROM information display.
- Real Time Clock support.
- Music playback (MP3).
- Menu sound effects.
- N64 ROM autoload.
- ROM information descriptions.
- ROM history and favorites (pre-release only).
- ROM cheat file support (pre-release only).
Documentation
Please take a moment to browse the current documentation:
Index
Aims
- Support as many N64 Flashcarts as possible.
- Be open source, using permissively licensed third-party libraries.
- Be testable in an emulated environment (Ares).
- Encourage active development from community members and N64 FlashCart owners.
- Support as many common mods and features as possible (flashcart dependent).
Flashcart specific
SC64
- Ensure the cart has the latest firmware installed.
- Download the latest
sc64menu.n64
file from the releases page, then put it in the root directory of your SD card.
64drive
- Ensure the cart has the latest firmware installed.
- Download the latest
menu.bin
file from the releases page, then put it in the root directory of your SD card.
ED64 - WIP - UNTESTED AND UNSUPPORTED - USE AT OWN RISK
Currently not supported, but work is in progress (See PRs). Warning: The menu may be able to load ROMs but cannot guarantee save functionality. Existing saves may be corrupted.
ED64 (Vseries)
The aim is to reach feature parity with ED64-UnofficialOS / ED64-OfficialOS.
Download the OS64.v64
ROM from the latest [action run - assets] and place it in the /ED64
folder.
ED64 (X series)
The aim is to reach feature parity with OS for now.
Download the OS64.v64
ROM from the latest [action run - assets] and place it in the /ED64
folder.
ED64 (P clone)
Download the OS64P.v64
ROM from the latest [action run - assets] and place it in the /ED64P
folder.
The aim is to reach feature parity with Altra64
Open source software and licenses used
libraries
- libdragon (UNLICENSE License)
- libspng (BSD 2-Clause License)
- mini.c (BSD 2-Clause License)
- minimp3 (CC0 1.0 Universal)
- miniz (MIT License)
Sounds
See License for the following sounds:
- Cursor sound by Skyscraper_seven (Free to use)
- Actions (Enter, Back) sound by Liecio (Free to use)
- Error sound by Universfield (Free to use)