disco-cart
disco-cart copied to clipboard
WIP Cartridge and BIOS dumper for the V-Smile
V.Smile Disco-Cart
Custom developer cartridge that easily enables the following
- Ability to dump retail cartridges over Serial or to an SD card
- Ability to flash roms over serial or an SD card to built in flash memory
- Booting cartridge on real V.Smile hardware
- Use Teensy to fuzz data + address bus while system is online (WIP)
- "Stealth" switch to disable sense pinout to allow console to boot as if Cartridge was not inserted
Contents
- Cartridge
- Usage
-
Examples
- Read retail cartridge to local file over serial
- Dump retail cartridge to SD card
- Flash local rom to flashcart
-
Args
-
port
-
out
-
limit
-
bank
-
mode
-
name
-
length
-
- Contributing
Cartridge
Usage
- Install PlatformIO onto your local system.
- Install latest LTS for NodeJS onto your local system.
- Install supporting packages for serial management script:
cd ./manager
yarn
- Use PlatformIO to pull in required packages, build, and then deploy firmware onto your Teensy (optionally, flash
firmware.hex
) - Socket Teensy into Disco-Cart, ensure USB port on teensy lines up with the USB silkscreen on the board
- Move mode select switch to the desired position
-
Left
: Cart mode, to insert into a V-Smile and boot a flashed rom -
Middle
: Flash mode, select this mode to read/write to the internal flash on the Disco-Cart -
Right
: Dump mode, select this mode to read/write from an inserted retail cartridge
- Use manager scripts to perform your desired action
Examples
Read retail cartridge to local file over serial
# Switch: Dump mode
node .\index.js --port=COM3 --out=./thomas.bin --limit=3FFFFF --bank=LOW
Dump retail cartridge to SD card
# Switch: Dump mode
node .\index.js --port=COM3 --mode=sddump --name=thomas.bin --length=3FFFFF
Flash local rom to flashcart
# Switch: Write mode
node .\index.js --port=COM3 --mode=write --rom=./thomas.bin
Inserting into a V.Smile
Ensure mode select switch is in Cart mode. Teensy can remain inserted in cartridge while in this mode. If you wish to write a new flash, you can do so while the cartridge is inserted by first switching mode to Write mode and running the write action from the manager
Args
port
Determines the serial port to connect to, defaults to COM3
for Windows or /dev/ttyACM0
for Linux.
out
Relative file path to write the rom dump to, defaults to ./dump.bin
limit
Max address to dump to in hex. Banked cartridges generally have a 4MB and 2MB flash, so they need a limit of 1FFFFF
and FFFFF
respectively. A single 8MB flash should accept 3FFFFF
.
bank
If cartridge is banked, select which bank to dump. Defaults to LOW
, non-banked cartridges should be set to LOW
.
mode
Which mode to operate the teensy in. Accepts dump
, write
and sddump
.
name
When writing to SD card, the file name to write to
length
When writing to SD card, the size of the file to be written, in hex.
Contributing
Project is fully open source under GPL3, including hardware design.
-
cartridge
: Hardware design as a KiCad Project -
manager
: JS Script to aid with interfacing the Teensy over serial -
src
: C++ Platform IO source for Teensy 4.1