MCPcopy Index your code
hub / github.com/Polprzewodnikowy/SummerCart64

github.com/Polprzewodnikowy/SummerCart64 @v2.20.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.20.2 ↗ · + Follow
1,125 symbols 2,987 edges 107 files 110 documented · 10% updated 14mo agov2.20.2 · 2024-11-18★ 1,0735 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SummerCart64 - a fully open source N64 flashcart

For non-technical description of the SummerCart64, please head to the https://summercart64.dev website!

Features

  • ROM and Save Memory On-board
  • 64 MiB SDRAM memory for game and save data (enough memory to support every retail game without compromise)
  • 16 MiB FLASH memory for bootloader and extended game data (with extended memory flashcart supports game ROMs up to 78 MiB)

  • Game Saves

  • EEPROM 4k/16k, SRAM and FlashRAM save types with an automatic writeback to the SD card (no reset button press required)

  • Hardware-Dependent Game Features

  • 64DD add-on emulation
  • Battery backed real time clock (RTC)

  • Menu

  • Dedicated open source menu written specifically for this flashcart - N64FlashcartMenu

  • Game Development

  • ~23.8 MiB/s peak transfer rate SD card interface
  • ~23.8 MiB/s peak transfer rate USB interface for data upload/download and debug functionality
  • PC app to access the flashcart features:
    • Game/save data upload/download
    • Feature enable control
    • Debug terminal
    • Access to the SD card
    • Firmware update
  • UNFLoader support
  • IS-Viewer 64 debug interface (fixed 64 kiB buffer with a movable base address)
  • 8 kiB on-chip buffer for general use
  • Status LED and button for general use
  • UltraCIC_C emulation with automatic region switching and programmable seed/checksum values
  • N64 bootloader with support for IPL3 registers spoofing and loading menu from SD card

  • Cartridge Production

  • Initial programming via UART header or via dedicated JTAG/SWD interfaces
  • 3D printable shell

Documentation


How do I get one?

Most up to date information about purchasing/manufacturing options is available on https://summercart64.dev website!

If you want to order it yourself then I've prepared all necessary manufacturing files on the PCBWay Shared Project site.

Be careful: this is an advanced project and it is assumed that you have enough knowledge about electronics. Selecting wrong options or giving PCB manufacturer wrong information might result in an undesired time and/or money loss. Boards also come unprogrammed from the manufacturer - you need to do initial programming step yourself after receiving the board. Price of the components is not included in the initial quote at the checkout - manufacturer will contact you later with updated price. To avoid problems please read both build guide and description on the shared project page in full. If you have even slightest doubt about the ordering or programming process, it is better to leave it to someone experienced - ask in the N64brew Discord server if that's the case.

Full disclosure: for every order made through this link I will receive 10% of PCB manufacturing and PCB assembly service cost (price of the components is not included in the split). This is a great way of supporting further project development.

If you don't need a physical product but still want to support me then check the sponsor links on the official website.


High-level flashcart block diagram

SC64 block diagram


Finished example

SC64 finished example

SC64 PCB front

SC64 PCB back


Acknowledgement

This project wouldn't be possible without these contributions:

  • 64drive (archived) orders being on permanent hold long before creating this repository.
  • EverDrive-64 X7 being disappointment for homebrew development (slow USB upload, unjustified price and overcomplicated SD card access).
  • Context: Both aforementioned products were priced at $199 in 2020. 64drive features made it a vastly more useful tool for homebrew development. Since then, 64drive had never been restocked and EverDrive-64 X7 price was lowered to $159 (as of May 2024).
  • Jan Goldacker (@jago85) and his projects:
  • Brutzelkarte providing solid base for starting this project and sparking hope for true open source N64 flashcarts.
  • UltraCIC_C reimplementation for easy integration in modern microcontrollers. Thanks also goes to everyone involved in N64 CIC reverse engineering.
  • N64brew Discord server community being very helpful during flashcart development.
  • FatFs FAT32/exFAT library being easiest to integrate in embedded environment.
  • Yakumono's (@LuigiBlood) extensive 64DD documentation and its implementation in various emulators.
  • Libdragon open source N64 SDK project and its developers.
  • SERV bit-serial 32-bit RISC-V CPU soft core.

Extension points exported contracts — how you extend this code

Backend (Interface)
(no doc) [3 implementers]
sw/deployer/src/sc64/link.rs
FFDriver (Interface)
(no doc) [1 implementers]
sw/deployer/src/sc64/ff.rs

Core symbols most depended-on inside this repo

display_printf
called by 107
sw/bootloader/src/display.c
fpga_reg_set
called by 84
sw/controller/src/fpga.c
st_dword
called by 60
sw/bootloader/src/fatfs/ff.c
fpga_reg_get
called by 49
sw/controller/src/fpga.c
cpu_io_write
called by 48
sw/bootloader/src/io.c
move_window
called by 38
sw/bootloader/src/fatfs/ff.c
ld_word
called by 36
sw/bootloader/src/fatfs/ff.c
ld_dword
called by 34
sw/bootloader/src/fatfs/ff.c

Shape

Function 721
Method 266
Class 78
Enum 58
Interface 2

Languages

C46%
Rust32%
C++14%
Python8%
TypeScript1%

Modules by API surface

sw/controller/inc/cmsis_gcc.h137 symbols
sw/bootloader/src/fatfs/ff.c107 symbols
sw/deployer/src/sc64/mod.rs71 symbols
sw/tools/primer.py66 symbols
sw/deployer/src/sc64/link.rs49 symbols
sw/bootloader/src/sc64.c46 symbols
sw/deployer/src/sc64/types.rs44 symbols
sw/controller/src/hw.c44 symbols
sw/deployer/src/sc64/ff.rs41 symbols
sw/deployer/src/main.rs39 symbols
sw/deployer/src/sc64/ftdi.rs34 symbols
sw/controller/src/sd.c32 symbols

For agents

$ claude mcp add SummerCart64 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page