- [First time setup](#first-time-setup)
- [Internal flashcart state](#internal-flashcart-state)
- [Uploading game/save](#uploading-gamesave)
- [Downloading save](#downloading-save)
- [Running 64DD games](#running-64dd-games)
- [Direct boot option](#direct-boot-option)
- [Debug terminal](#debug-terminal)
- [Firmware backup/update](#firmware-backupupdate)

---

## First time setup

1. Make sure `python3` and `pip3` are installed in your system
2. Grab latest `SC64.zip` package from GitHub releases
3. Extract package contents to a folder
4. Install requirements: `pip3 install -r requirements.txt`
5. Run `python3 sc64.py --help` to check if requirements are installed
6. Run `python3 sc64.py --print-state` to check if SC64 is detected

---

## Internal flashcart state

SC64 holds some configuration after script has exit. To reset it simply run: `python3 sc64.py --reset-state`. Internal flashcart state can be checked by running: `python3 sc64.py --print-state`

---

## Uploading game/save

`python3 sc64.py --boot rom --rom path_to_rom.n64 --save-type eeprom-4k --save path_to_save.sav`

Replace `path_to_rom.n64` / `eeprom-4k` / `path_to_save.sav` with appropriate values for desired game. Check included help in script to check available save types.
Arguments `--save-type` and/or `--save` can be ommited if game doesn't require any save.

---

## Downloading save

`python3 sc64.py --backup-save path_to_save.sav`

Replace `path_to_save.sav` with appropriate value. Specifying save type isn't required when set correctly previously.

---

## Running 64DD games

64DD games require DDIPL ROM and disk images. To run disk game type `python3 sc64.py --boot ddipl --ddipl path_to_ddipl.n64 --disk path_to_disk_1.ndd --disk path_to_disk_2.ndd --debug`.

Replace `path_to_ddipl.n64` / `path_to_disk_x.ndd` with appropriate values. Argument `--disk` can be specified multiple times. Only `.ndd` disk format is supported currently. To change inserted disk press button on the back of SC64 flashcart.

---

## Direct boot option

If booting game through included bootloader isn't a desired option then flashcart can be put in special mode that ommits this step.
Run `python3 sc64.py --boot direct --rom path_to_rom.n64` to disable bootloader during boot and console reset. By default only games with 6102/7101 CIC chips will boot correctly. To change this use `--cic-params 0,0,0x3F,0x12345678ABCD` argument with appropriate values. Refer to included help in script for values meaning. This option is useful only for very specific cases (e.g. running SC64 on top of GameShark).

---

## Debug terminal

`sc64.py` supports UNFLoader protocol and has same functionality implemented as desktop program. Use argument `--debug` to activate it.

---

## Firmware backup/update

To download and backup current version of SC64 firmware run `python3 sc64.py --backup-firmware sc64_backup_package.bin`.

To update SC64 firmware run `python3 sc64.py --update-firmware sc64_update_package.bin`