SummerCart64/docs/config_options.md
2022-12-31 01:12:02 +01:00

7.7 KiB


Supported config options

SC64 provides simple flashcart configuration by exposing various options settable by both USB and N64 side. All options other than BOOTLOADER_SWITCH are preserved on console reset or power cycle.

id name type description
0 BOOTLOADER_SWITCH bool Switches between bootloader and ROM mapping on PI address 0x1000_0000
1 ROM_WRITE_ENABLE bool Enables write access to ROM section
2 ROM_SHADOW_ENABLE bool Enables overlapping last 128 kiB of ROM section by flash memory
3 DD_MODE enum Enables 64DD register/IPL access
4 ISV_ADDRESS dword Sets IS-Viewer 64 watch address
5 BOOT_MODE enum Controls bootloader behavior
6 SAVE_TYPE enum Sets supported save type
7 CIC_SEED word Sets CIC seed value passed by bootloader to IPL3
8 TV_TYPE enum Sets TV type value passed by bootloader to IPL3
9 DD_SD_ENABLE bool Controls 64DD block request passing to USB or SD card
10 DD_DRIVE_TYPE enum Sets 64DD drive type
11 DD_DISK_STATE enum Sets current 64DD disk state
12 BUTTON_STATE bool Gets button press value
13 BUTTON_MODE enum Sets button press behavior
14 ROM_EXTENDED_ENABLE bool Enables access to extended ROM memory located in flash

0: BOOTLOADER_SWITCH

type: bool | default: 1

  • 0 - ROM data is mapped on PI address 0x1000_0000
  • 1 - Bootloader data is mapped on PI address 0x1000_0000

Used internally to remap ROM data after bootloader is loaded.


1: ROM_WRITE_ENABLE

type: bool | default: 0

  • 0 - ROM write access is disabled
  • 1 - ROM write access is enabled

Used by homebrew applications to freely replace data in SDRAM from N64 side.


2: ROM_SHADOW_ENABLE

type: bool | default: 0

  • 0 - Last 128 kiB of ROM section is mapped to SDRAM
  • 1 - Last 128 kiB of ROM section is mapped to flash

Last 128 kiB of SDRAM is shared between ROM data and SRAM/FlashRAM save data. Use this setting for applications requiring all of ROM section space including last 128 kiB. Check PI memory map for more information.


3: DD_MODE

type: enum | default: 0

  • 0 - 64DD support is disabled
  • 1 - 64DD registers are mapped on PI address space
  • 2 - 64DD IPL is mapped on PI address space
  • 3 - Both 64DD registers and IPL are mapped on PI address space

Use this config for setting level of 64DD emulation.


4: ISV_ADDRESS

type: dword | default: 0x0000_0000

  • 0x0000_0000 - IS-Viewer 64 is disabled
  • 0x0000_0004 to 0x03FF_FFFC - IS-Viewer 64 is enabled

Sets IS-Viewer 64 listening address starting from ROM base. For most applications this offset is fixed at 0x03FF_0000. Address must be 4-byte aligned. Command will return error when setting incorrect value. Small number of games have support for changing this address (for example debug builds of TLoZ: MM).


5: BOOT_MODE

type: enum | default: 0

  • 0 - Load menu from SD card
  • 1 - Attempt to boot application loaded in ROM section
  • 2 - Attempt to boot 64DD IPL
  • 3 - Direct mode, skips bootloader entirely

Use this setting to change boot behavior. Value 3 (direct boot) will always keep BOOTLOADER_SWITCH option disabled.


6: SAVE_TYPE

type: enum | default: 0

  • 0 - All saves are disabled
  • 1 - EEPROM 4 kib save is enabled
  • 2 - EEPROM 16 kib save is enabled
  • 3 - SRAM 256 kib save is enabled
  • 4 - FlashRAM 1 Mib save is enabled
  • 5 - SRAM 768 kib save is enabled

Use this setting for selecting save type that will be emulated. Only one save type can be enabled.


7: CIC_SEED

type: word | default: 0xFFFF

  • 0x0000 to 0x01FF - Specified CIC seed/version value will be used
  • 0xFFFF - CIC seed/version value will be autodetected

Use this setting to force specific CIC seed/version. Lower 8 bits represents CIC seed and 9th bit represents CIC version. By setting value 0xFFFF bootloader will try to guess needed values from loaded ROM IPL3.


8: TV_TYPE

type: enum | default: 3

  • 0 - PAL TV type will be used
  • 1 - NTSC TV type will be used
  • 2 - MPAL TV type will be used
  • 3 - TV type will be autodetected

Use this setting to force specific TV type. By setting value 3 bootloader will try to guess TV type from loaded ROM header.


9: DD_SD_ENABLE

type: bool | default: 0

  • 0 - 64DD block requests are passed to USB interface
  • 1 - 64DD block requests are passed to SD card

Use this setting to change where 64DD emulation will be passing incoming block R/W requests. For more information about 64DD and USB request passing check sc64.py implementation.


10: DD_DRIVE_TYPE

type: enum | default: 0

  • 0 - Retail 64DD drive type ID is selected
  • 1 - Development 64DD drive type ID is selected

Use this setting to change 64DD drive type emulation.


11: DD_DISK_STATE

type: enum | default: 0

  • 0 - 64DD disk state is set to ejected
  • 1 - 64DD disk state is set to inserted
  • 2 - 64DD disk state is set to changed

Use this setting to change 64DD current disk state.


12: BUTTON_STATE

type: bool | default: x | read-only

  • 0 - Button is not pressed
  • 1 - Button is pressed

This is special read-only option for getting button press state. Setting this option will return error.


13: BUTTON_MODE

type: enum | default: 0

  • 0 - Button press does nothing
  • 1 - Button press raises N64 interrupt
  • 2 - Button press sends USB packet
  • 3 - Button press changes 64DD disk

Use this setting to change button behavior. Regardless of this setting button state can always be checked by reading BUTTON_STATE config.


14: ROM_EXTENDED_ENABLE

type: bool | default: 0

  • 0 - ROM extended PI access is disabled
  • 1 - ROM extended PI access is enabled

Use this setting to enable PI access for extended ROM data located inside flash memory.