Coder Social home page Coder Social logo

pedro-javierf / dsaver Goto Github PK

View Code? Open in Web Editor NEW
16.0 2.0 2.0 129 KB

Hardware Nintendo DS Cartridge savegame tool PoC using arduino

License: GNU General Public License v3.0

Python 22.34% C 5.50% C++ 72.16%
avr nintendo nintendo-hacking nintendo-ds savegame dump arduino hardware slot1 mosi

dsaver's Introduction

dsaver

Arduino based Nintendo DS savegame hardware tool

Description

dsaver is a hardware solution to dump and modify Nintendo DS cartridges savegames. It is based on the popular and extended Arduino board; it works perfectly on clone and unofficial boards.

Hardware required

to build a dsaver device compatible with the code provided in the ARDUINO folder you will need:

  • Arduino board, official or clone (ie: freaduino)
  • Nintendo DS slot 1 header
  • Jumper Wires
  • (optional)(recommennded) i2c oled display

Wiring

Arduino Slot 1 Description
PIN 13 (ICSP) 2 CLK
PIN 10 (ICSP) 6 CS (or SS)
Any VCC 3.3v 8 VCC 3.3v
PIN 11 MOSI 15 (MISO) ***
PIN 12 MISO 16 (MOSI) ***
Any GND 17 GND
  • Arduino PIN 11 is MOSI and should be connected to pin 15 of the slot1 (MISO)
  • Arduino PIN 12 is MISO and should be connected to pin 15 of the slot1 (MOSI)

If you don't understand why it is this way check the SPI Protocol or the dsaver writeup

software

Provided in this repository you will find all software required to build a dsaver device:

  • ARDUINO : C code to be flashed on the board. .ino .h and .cpp files.
  • PC : File dsaver.py contains python3 data receiver for the PC side.

Requeriments

dsaver.py requires PySerial:

  • pip3 install pyserial

dsaver.ino requires U8g2lib and U8x8lib for OLED support

  • #include <U8g2lib.h>
  • #include <U8x8lib.h>

Known Issues

  • Not really an issue, but actually dsaver has only been tested with 64kb carts
  • Due to the different clock domains (SPI: 4MHz / UART: 115200 b/s) dsaver uses the OLED writing procedures to balance processor usage. This balancing has a very low rate of failure, but sometimes one (1) byte of data at the end of the file could be lost.

dsaver's People

Contributors

pedro-javierf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dsaver's Issues

FF's for output

Hello,

I'm not sure if this is the right place to reach out but I need a bit of help trying to dump save files.

I have a ds cartridge hooked up with all the pins (I've also swapped MISO and MOSI around just in case), and using both your dsaver app and a simple SPI app I wrote (code below) all the output I'm getting is FF from the cartridge.

I've verified that the cartridge does indeed have data in it, and I've also checked with a signal analyzer to verify that the communications are all correct and they seem to be.

Do you've any idea where I could start or what else I could check?

Code:

#include <SPI.h>
void setup() {
  Serial.begin(9600);
  pinMode(SS, OUTPUT);
  digitalWrite(SS, HIGH);
  SPI.begin();
  SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0));
  digitalWrite(SS, LOW);
  SPI.transfer(0x03);
  SPI.transfer(0x00);
  SPI.transfer(0x00);
  SPI.transfer(0x00);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);
  SPI.transfer(0xFF);

  digitalWrite(SS, HIGH);
  SPI.endTransaction();
}

void loop() {
}

2023-02-16 15_11_04-Window
LogicCapture.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.