N64FlashcartMenu/README.md
XLuma c27f15ef0e
[develop] Add inital datel cheat support from filesystem (#204)
## 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>
2025-01-22 18:51:16 +00:00

5.2 KiB

Build GitHub Org's stars Average time to resolve an issue Percentage of issues still open #yourfirstpr

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.

SC64 flashcart information

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

Sounds

See License for the following sounds: