Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Fairchild Channel F emulator support #166

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ An open source menu for N64 flashcarts.
* Fully Open Source.
* Loads all known N64 games (including iQue and Aleck64 ROMs (even if they are byteswapped)).
* Fully emulates the 64DD and loads 64DD disks (SummerCart64 only).
* Emulator support (NES, SNES, GB, GBC, SMS, GG) ROMs.
* Emulator support (NES, SNES, GB, GBC, SMS, GG, CHF) ROMs.
* N64 ROM box image support.
* Background image (PNG) support.
* Comprehensive ROM save database (including HomeBrew headers).
Expand Down
4 changes: 3 additions & 1 deletion docs/00_getting_started_sd.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Menu currently supports the following emulators and associated ROM file names:
- **SNES**: [sodium64](https://github.com/Hydr8gon/sodium64/releases) by *Hydr8gon* - `sodium64.z64`
- **Game Boy** / **GB Color**: [gb64](https://lambertjamesd.github.io/gb64/romwrapper/romwrapper.html) by *lambertjamesd* - `gb.v64` / `gbc.v64` ("Download Emulator" button)
- **SMS** / **GG**: [smsPlus64](https://github.com/fhoedemakers/smsplus64/releases) by *fhoedmakers* - `smsPlus64.z64`
- **Fairchild Channel F**: [Press-F-Ultra](https://github.com/celerizer/Press-F-Ultra/releases) by *celerizer* - `Press-F.z64`


### 64DD disk support
Expand Down Expand Up @@ -50,7 +51,8 @@ SD:\
│ ├── sodium64.z64
│ ├── gb.v64
│ ├── gbc.v64
│ └── smsPlus64.z64
│ ├── smsPlus64.z64
│ └── Press-F.z64
├── (a rom).z64
├── (a rom).n64
Expand Down
4 changes: 4 additions & 0 deletions src/menu/cart_load.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,10 @@ cart_load_err_t cart_load_emulator (menu_t *menu, cart_load_emu_type_t emu_type,
path_push(path, "smsPlus64.z64");
save_type = FLASHCART_SAVE_TYPE_NONE;
break;
case CART_LOAD_EMU_TYPE_FAIRCHILD_CHANNELF:
path_push(path, "Press-F.z64");
save_type = FLASHCART_SAVE_TYPE_NONE;
break;
}

if (!file_exists(path_get(path))) {
Expand Down
2 changes: 2 additions & 0 deletions src/menu/cart_load.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ typedef enum {
CART_LOAD_EMU_TYPE_GAMEBOY_COLOR,
/** @brief The ROM is designed for a Sega 8Bit system (Game Gear or Master System). */
CART_LOAD_EMU_TYPE_SEGA_GENERIC_8BIT,
/** @brief The ROM is designed for a Fairchild Channel F system. */
CART_LOAD_EMU_TYPE_FAIRCHILD_CHANNELF,
} cart_load_emu_type_t;


Expand Down
2 changes: 1 addition & 1 deletion src/menu/views/browser.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

static const char *rom_extensions[] = { "z64", "n64", "v64", "rom", NULL };
static const char *disk_extensions[] = { "ndd", NULL };
static const char *emulator_extensions[] = { "nes", "sfc", "smc", "gb", "gbc", "sms", "gg", "sg", NULL };
static const char *emulator_extensions[] = { "nes", "sfc", "smc", "gb", "gbc", "sms", "gg", "sg", "chf", NULL };
// TODO: "eep", "sra", "srm", "fla" could be used if transfered from different flashcarts.
static const char *save_extensions[] = { "sav", NULL };
static const char *image_extensions[] = { "png", NULL };
Expand Down
2 changes: 1 addition & 1 deletion src/menu/views/file_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ static const char *archive_extensions[] = { "zip", "rar", "7z", "tar", "gz", NUL
static const char *image_extensions[] = { "png", "jpg", "gif", NULL };
static const char *music_extensions[] = { "mp3", "wav", "ogg", "wma", "flac", NULL };
static const char *controller_pak_extensions[] = { "mpk", "pak", NULL };
static const char *emulator_extensions[] = { "nes", "smc", "gb", "gbc", "sms", "gg", NULL };
static const char *emulator_extensions[] = { "nes", "smc", "gb", "gbc", "sms", "gg", "chf", NULL };


static struct stat st;
Expand Down
5 changes: 5 additions & 0 deletions src/menu/views/load_emulator.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ static const char *emu_snes_rom_extensions[] = { "sfc", "smc", NULL };
static const char *emu_gameboy_rom_extensions[] = { "gb", NULL };
static const char *emu_gameboy_color_rom_extensions[] = { "gbc", NULL };
static const char *emu_sega_8bit_rom_extensions[] = { "sms", "gg", "sg", NULL };
static const char *emu_fairchild_channelf_rom_extensions[] = { "chf", NULL };

static cart_load_emu_type_t emu_type;

Expand All @@ -25,6 +26,8 @@ static char *format_emulator_name (cart_load_emu_type_t emulator_info) {
return "Nintendo GAMEBOY Color";
case CART_LOAD_EMU_TYPE_SEGA_GENERIC_8BIT:
return "SEGA 8bit system";
case CART_LOAD_EMU_TYPE_FAIRCHILD_CHANNELF:
return "Fairchild Channel F";
default:
return "Unknown";
}
Expand Down Expand Up @@ -120,6 +123,8 @@ void view_load_emulator_init (menu_t *menu) {
emu_type = CART_LOAD_EMU_TYPE_GAMEBOY_COLOR;
} else if (file_has_extensions(path_get(path), emu_sega_8bit_rom_extensions)) {
emu_type = CART_LOAD_EMU_TYPE_SEGA_GENERIC_8BIT;
} else if (file_has_extensions(path_get(path), emu_fairchild_channelf_rom_extensions)) {
emu_type = CART_LOAD_EMU_TYPE_FAIRCHILD_CHANNELF;
} else {
menu_show_error(menu, "Unsupported ROM");
}
Expand Down