mirror of
https://github.com/sanni/cartreader.git
synced 2024-11-15 01:15:06 +01:00
Initial commit
commit
85e7beca24
24
AM29F016-AM29F032.md
Normal file
24
AM29F016-AM29F032.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
First you need to setup the Cartridge Reader's jumpers like so.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
The 29F016, 29F032 or 29F033 family of flashroms might come in a TSOP40 or TSOP48 package.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/vfkcc68pjcpe3t9/tsop4048.jpg?dl=1)
|
||||||
|
|
||||||
|
In case of the TSOP40 you need to align the flashrom so that there are 2 unused pins on each side at the top and 2 unused pins at each side the bottom inside of the ZIF socket.
|
||||||
|
For both cases plug the ZIF adapter into the **most right position of the flashrom adapter** since the TSOP48 variant follows the TSOP40 pinout and differs from your normal TSOP48 flashroms.
|
||||||
|
The two switches on the flash adapter do not matter in this case.
|
||||||
|
|
||||||
|
TSOP48:
|
||||||
|
![](https://dl.dropboxusercontent.com/s/54kqu3uafo5vlxq/29f016_tsop48.jpg?dl=1)
|
||||||
|
|
||||||
|
TSOP40:
|
||||||
|
![](https://dl.dropboxusercontent.com/s/ti718tw8ae16p7a/29f033_tsop40.jpg?dl=1)
|
||||||
|
|
||||||
|
Now plug the flashrom adapter into the cart reader so that the 29F032 flashrom is facing towards you.
|
||||||
|
|
||||||
|
In the main menu first select "Flashrom Programmer" and then choose "8bit adapter".
|
||||||
|
To program the flashrom you need to erase it, then do the blankcheck and finally select write to flash it with your rom.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
||||||
|
|
44
About.md
Normal file
44
About.md
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
It all started with [MichlK's ROM-Reader for Super Nintendo](https://forum.arduino.cc/t/rom-reader-for-super-nintendo-super-famicom-game-cartridges/155260) (2013)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/tfr43ajzcioiyua/f04da6bab02041d93c00645c715f43c477320981.jpg?dl=1)
|
||||||
|
|
||||||
|
My first prototype added an LCD screen, SD card support, a battery and buttons for control (2014)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/9aottdbqmi5swib/cartbackthen%20%281%29.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/eldeinxsiwzztmj/cartbackthen%20%282%29.JPG?dl=1)
|
||||||
|
|
||||||
|
The second prototype replaced the Arduino Uno with an Arduino Mega 2560 and switched over to an OLED screen (2014)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/zahbl9nattbjabk/fawfqaewfasfsafasafsaaa.jpg?dl=1)
|
||||||
|
|
||||||
|
skaman's [Cart_ROM_READER_SNES_ENHANCED](https://forum.arduino.cc/t/rom-reader-for-super-nintendo-super-famicom-game-cartridges/155260/50) sketch added a snesCIC and a clock generator to support SNES carts with special chips (2015)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/7tbplu41tmz17w4/e4zzwwetzttqtqtq.jpg?dl=1)
|
||||||
|
|
||||||
|
V1 was the first PCB to make building the Cart Reader more simple (2015)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/is4yo8tm1tr8xfs/versions%20%284%29.JPG?dl=1)
|
||||||
|
|
||||||
|
Support for N64 carts was added through the N64 adapter (2016)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/w1j3pk1es72gvx6/cartreader_n64.jpg?dl=1)
|
||||||
|
|
||||||
|
V2 added the N64 slot directly to the PCB (2017)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lnenr1gnd74svdc/versions%20%281%29.jpg?dl=1)
|
||||||
|
|
||||||
|
V2 with GBA adapter (2017)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/57d99ny0zl7br7c/versions%20%289%29.jpg?dl=1)
|
||||||
|
|
||||||
|
V3 integrated the GBA adapter and also added a Mega Drive slot (2018)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ihky2qvmmqttrx4/versions%20%288%29.jpg?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/anhbximsurvbc6n/versions%20%2810%29.jpg?dl=1)
|
||||||
|
|
||||||
|
V3 with battery add-on (2018)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2y6wbhdv7pe19eh/IMG_20180901_194335087.jpg?dl=1)
|
||||||
|
|
||||||
|
V3 with printed case (2019)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/upgw1sj3hbwdmxm/versions%20%282%29.jpg?dl=1)
|
||||||
|
|
||||||
|
V3 with battery add-on and printed case (2020)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/spiv0jd91nh8koa/versions%20%283%29.jpg?dl=1)
|
||||||
|
|
||||||
|
V4 changed to a modular design using the control interface from an 3D printer (2021)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/h917g6ng8mi52r0/IMG_0768.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/9trhwsi0t68qv5m/IMG_0794.JPG?dl=1)
|
||||||
|
|
||||||
|
V5 is a simplified V4 without a battery (2022)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/jmgp03yrc42mi7c/building%20%286%29.jpg?dl=1)
|
29
Adding-a-battery.md
Normal file
29
Adding-a-battery.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
Since the Cart Reader does not need a PC to operate you can make it truly portable by adding a battery.
|
||||||
|
|
||||||
|
#### Warning: Only use a high-quality battery with integrated protection circuit you bought from a reliable vendor. Check for short-circuits in your soldering work before inserting the battery. Never insert the battery into the holder the wrong way.
|
||||||
|
|
||||||
|
#### 1) First you need to buy [this battery module](https://aliexpress.com/item/1005001829483872.html) and a matching 18650 battery.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/40yb536lyb4mv8w/battery%20%280%29.jpg?dl=1)
|
||||||
|
|
||||||
|
#### 2) Next connect the battery module to both the Arduino Mega and the Cart Reader shield.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/zjter6hkuwjxvf9/bat_con.jpg?dl=1)
|
||||||
|
|
||||||
|
Connect blue to blue, red to red, orange to orange and brown to brown.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/vm7flxl0bh0rx67/batteryconn.jpg?dl=1)
|
||||||
|
|
||||||
|
#### 3a) If you want just the simple backplate print out these new parts [(1)](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/sidewall_battery.stl) [(2)](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/backplate_simple_battery.stl).
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xvriulinbulb5wr/battery_back.jpg?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2y6wbhdv7pe19eh/IMG_20180901_194335087.jpg?dl=1)
|
||||||
|
|
||||||
|
#### 3b) If you want the full case print out these new parts [(1)](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/case_bottom_battery.stl) [(2)](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/case_top_battery.stl) [(3)](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/sidewall_battery.stl) [(4)x2](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/case_button_3mm.stl)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0udh1gkl7kem90v/cartbatttop.jpg?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/krbkc3lecghsqbk/cartbattbot.jpg?dl=1)
|
||||||
|
|
||||||
|
#### 4) In both cases you will also need these parts if you did not already print them earlier [(1)print with clear PLA](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/microsd_spacer.stl) [(2)](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/n64sleeve.stl) [(3)](https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/snes_spacer.stl)
|
||||||
|
|
||||||
|
#### 5) As soon as you plug in a microUSB cable into the Arduino's USB port the 18650 battery will be charged at 500mA. The battery module will automatically convert the 3.7V of the battery to 5V for use with the Cart Reader. The switch and the two USB ports on the battery module do not serve any purpose anymore. In this configuration there always has to be a battery inserted into the battery module or else the Arduino will not turn on. Sometimes if the Arduino does not turn on you have to plug a USB cable into the battery module and then turn the Cart Reader on.
|
18
Adding-an-enclosure.md
Normal file
18
Adding-an-enclosure.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
![image](https://dl.dropboxusercontent.com/s/mibcigvdexhesj8/toppage.jpg?dl=1)
|
||||||
|
|
||||||
|
The case needs 8 [self-tapping M2x10 screws](https://www.ebay.com/itm/153446789295).
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lzgrrkm5yfflll9/v17_case2.png?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/uos5szfz2kmu5l1/v17_case1.png?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lv7coxu6itx0z7y/v17_case3.png?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/szqz79821w7jg68/v17_case4.png?dl=1)
|
||||||
|
|
||||||
|
If you use Cura enable tree support with the support touching build plate only setting.
|
||||||
|
It's a lot easier to remove than the standard support type.
|
||||||
|
|
||||||
|
![image](https://i.imgur.com/PMwDEwP.jpg)
|
||||||
|
|
||||||
|
![image](https://i.imgur.com/tAZcCxK.jpg)
|
145
Build-Guide.md
Normal file
145
Build-Guide.md
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
The Open Source Cartridge Reader consists out of different modules that need to be modified or assembled from parts.
|
||||||
|
|
||||||
|
#### Attention: You need to wear safety glasses during this build.
|
||||||
|
|
||||||
|
# Flashing the Arduino
|
||||||
|
Before you start with the build you should make sure you have everything set-up correctly to flash the Arduino code. To test this plug the **unmodified**(SMD fuse not removed yet) Arduino Mega into your PC and upload the code as described [here](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino).
|
||||||
|
|
||||||
|
#### Info: Once you removed the SMD fuse from the Arduino it will no longer turn on on its own and from there on will need the main PCB with a cartridge slot adapter PCB attached to receive power. So it's best to flash it at least once before you de-solder the fuse.
|
||||||
|
|
||||||
|
# LCD module
|
||||||
|
#### Attention: It's important that you use exactly this LCD module since there are many similar looking modules that are however build differently.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xrjx177lymfmgjc/modules%20%286%29.jpg?dl=1)
|
||||||
|
|
||||||
|
Here you only need to close a little jumper using some solder. Just apply fresh solder to both pads and then add a little more to the middle while heating both pads with your soldering iron.
|
||||||
|
|
||||||
|
**Info:** This allows the 3.3V generated by the AMS 1117 voltage regulator on the LCD module to be used as a power source for the Cart Reader PCB.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/tu3drcat21smovr/modules%20%285%29.jpg?dl=1)
|
||||||
|
|
||||||
|
# Arduino compatible Mega 2560 Pro (embed)
|
||||||
|
#### Attention: After this modification the Arduino will only work together with the Cart Reader and not on its own anymore.
|
||||||
|
|
||||||
|
You need to remove the SMD fuse and solder part of a dupont wire to the left pad of the now removed fuse. To remove the fuse just put fresh solder to both ends and then quickly heat up both ends in an alternating pattern with your soldering iron until the fuse just wipes off. Make sure the pads are not connected together and that the wire only touches the left pad. Next you have to solder all the male pin headers but leave out the 6-pin ICSP header like shown in the picture.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0u34we0btrpsz66/H6e0091923b7443ef8c13845194f439eec.jpg?dl=1)
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ga1ilsl7s0ybj8y/ardufuse.jpg?dl=1)
|
||||||
|
|
||||||
|
# Battery module
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0rt2t0jm95jqlhh/modules%20%288%29.jpg?dl=1)
|
||||||
|
|
||||||
|
You need to solder four 1x2 male pin headers and also snip of the legs of the power switch and extent the remaining solder stumps using three single pins cut to size so the final assembly will have the same height as all the other pin headers. Lastly you have to solder another dupont wire behind the diode.
|
||||||
|
|
||||||
|
#### Attention: Wait with inserting the battery into the battery module until you have completely assembled the Cart Reader. Beware of the polarity!
|
||||||
|
|
||||||
|
**Info:** The Cart Reader will not turn on if no battery is inserted.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xeumr0zk9mk2s0j/modules%20%287%29.jpg?dl=1)
|
||||||
|
|
||||||
|
# Clock generator
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/vatofh0wxn8vfpa/modules%20%283%29.jpg?dl=1)
|
||||||
|
|
||||||
|
Here you only need to solder a 1x7 male pin header.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/1njixh1binbhsfi/modules%20%284%29.jpg?dl=1)
|
||||||
|
|
||||||
|
# Main board
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/c5bzsbu65uvfosf/modules%20%281%29.jpg?dl=1)
|
||||||
|
|
||||||
|
You need to solder quite a few female and male pin headers and two more dupont wires.
|
||||||
|
|
||||||
|
**Info:** If you have a Dremel tool with a cutting disc this makes cutting the female pin headers to size very easy.
|
||||||
|
|
||||||
|
#### Attention: Make sure you align the 1x7 female pin header for the clock generator correctly, the leftmost pad labeled "3V BAT" does not get connected. Also don't use an 1x8 pin header instead of the 1x7 since eventually you will plug the clock generator in the wrong way by accident which will result in the clock generator to be dead.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/86mc90og2y99ce2/modules%20%282%29.jpg?dl=1)
|
||||||
|
|
||||||
|
**Info:** The silkscreen on the top side tells you the pinout of the 1x38 and 1x36 pin headers using the port numbers of the Atmega 2560. The silkscreen on the back side tells the pinout using the Arduino pin numbers.
|
||||||
|
|
||||||
|
# Cart Slot Adapters
|
||||||
|
On each adapter PCB the cart slot sits on the side that says e.g. "2.5mm 50-Pin N64 Cartridge Slot". It will not work if you attach the slot to the wrong side of the PCB.
|
||||||
|
The cart slot adapter PCB selects the needed voltage therefore the Cart Reader does not turn on without an adapter PCB inserted.
|
||||||
|
|
||||||
|
![image](https://github.com/sanni/cartreader/blob/master/hardware/n64_adapter/n64_adapter.jpg?raw=true)
|
||||||
|
|
||||||
|
**Info:** The silkscreen on the top side tells you the cart slot pinout. The silkscreen on the back side tells the pinout of the 1x38 and 1x36 pin headers instead.
|
||||||
|
|
||||||
|
## SNES adapter
|
||||||
|
The SNES slot can be equipped with a slide switch to change the voltage between 3V and 5V for backwards compatibility with older cartridge slot adapters.
|
||||||
|
If you just want to read/write SNES cartridges you can leave the switch off and instead bridge the 5V solder pad next to it to permanently supply 5V.
|
||||||
|
If you do install the slide switch its legs need to be cut before soldering so that they don't stick out the other end and it gets mounted on the backside.
|
||||||
|
There is also a spot to solder a snesCIC for better SA1 unlocking. But you can also unlock SA1 by bridging the CIC solder pads instead, it just might take a few more tries.
|
||||||
|
|
||||||
|
Parts:
|
||||||
|
- SNES slot
|
||||||
|
- two 1x40 male pin headers
|
||||||
|
- slide switch (optional)
|
||||||
|
- PIC 12F629 flashed with snesCIC (optional)
|
||||||
|
- 100nF capacitor (optional)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/y4k967isrzg1d0i/IMG_0749.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ixn14djtl3y57u6/IMG_0750.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/f2kiy8t5vmxfukp/IMG_0752.JPG?dl=1)
|
||||||
|
|
||||||
|
## N64 adapter
|
||||||
|
The resistor for the controller cable needs to be placed on the backside.
|
||||||
|
|
||||||
|
Parts:
|
||||||
|
- N64 slot
|
||||||
|
- N64 controller extension
|
||||||
|
- 1k resistor
|
||||||
|
- two 1x40 male pin headers
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lz12f2spdcq36ey/IMG_0744.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/uxjaiwqvhktdx51/IMG_0745.JPG?dl=1)
|
||||||
|
|
||||||
|
## GBx adapter
|
||||||
|
The GBx adapter has a slide switch so you can select 3V for GBA and 5V for GB(C) modules.
|
||||||
|
|
||||||
|
Parts:
|
||||||
|
- GBx slot
|
||||||
|
- slide switch
|
||||||
|
- 1x40 male pin header 90°
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/40o5rg8clkyzg7y/IMG_0741.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/c2g8z9miqksbd74/IMG_0742.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/56ilwn206v83zq8/IMG_0736.JPG?dl=1)
|
||||||
|
|
||||||
|
# Final assembly
|
||||||
|
Insert the battery at the very end after you plugged in all other modules. Then plug in an USB cable into the Arduino and charge the battery a little to "unlock" the battery module.
|
||||||
|
|
||||||
|
#### Warning: Only use a high-quality battery with integrated protection circuit you bought from a reliable vendor. Check for short-circuits in your soldering work before inserting the battery. Never insert the battery into the holder the wrong way. Never charge the battery without supervision.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xdejbxf34nr4m1u/IMG_0708.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/qxtj7xxr2vo5ucg/IMG_0715.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/nk70q5hdezwg9dd/IMG_0757.JPG?dl=1)
|
||||||
|
|
||||||
|
Make sure the little bump on the connector matches the footprint on the PCB. EXP1 on the LCD needs to be connected to EXP1 on the main PCB and EXP2 to EXP2.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/jjgt2ui6jm3dme6/IMG_0760.JPG?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/h917g6ng8mi52r0/IMG_0768.JPG?dl=1)
|
||||||
|
|
||||||
|
# simple 3D printed frame (optional)
|
||||||
|
This is a frame that hold everything together. But you can also put the Cart Reader in a shoe box or similar.
|
||||||
|
|
||||||
|
The frame uses the LCD adapter PCB to mirror the LCD connector's pinout vertically(by moving it to the backside) and thus allows the LCD module to directly plug into the main PCB.
|
||||||
|
|
||||||
|
![image](https://github.com/sanni/cartreader/blob/master/hardware/lcd_adapter_pcb/lcd_adapter.jpg?raw=true)
|
||||||
|
|
||||||
|
#### Info: This is the top side that points up.
|
||||||
|
|
||||||
|
#### Attention: You have to solder the pin headers at an angle.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2mmxwifzdewk76u/IMG_0784.jpg?dl=1)
|
||||||
|
|
||||||
|
You can also shorten the wires included with the LCD instead of using this PCB.
|
||||||
|
|
||||||
|
The modules get fixed to the frames with a couple of M2x6 screws.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/j79atuizoavviv5/IMG_0787.jpg?dl=1)
|
14
Cart-Reader-V1.md
Normal file
14
Cart-Reader-V1.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
This was the very first hardware version. It only had a SNES cartridge slot.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/p0efo94pqqzbjc3/v6_3dmodel.gif?dl=1)
|
||||||
|
|
||||||
|
#### Updating the firmware:
|
||||||
|
The latest Arduino sketch should still be compatible as long as you do the following code change in Cart_Reader.ino before uploading.
|
||||||
|
|
||||||
|
```
|
||||||
|
/******************************************
|
||||||
|
Define Input
|
||||||
|
******************************************/
|
||||||
|
// If you are using the old version with only one button add // in front of the next line
|
||||||
|
//#define enable_Button2
|
||||||
|
```
|
12
Cart-Reader-V2.md
Normal file
12
Cart-Reader-V2.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
This is an older version of the Cart Reader that only has SNES and N64 slots.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/8tgef16092s3cu1/3d_model_iso.jpg?dl=1)
|
||||||
|
|
||||||
|
This Cart Reader features an additional USB port on the back that can be used to achieve a 3.3V supply without the need of modifying the Arduino Mega itself. This means that every time you want 3.3V you have to use this second USB port at the back of the shield and lose the ability to use the Arduino Serial Monitor. This was fixed with later versions which only have the one USB port on the Arduino itself.
|
||||||
|
|
||||||
|
#### Updating the firmware:
|
||||||
|
This hardware variant runs the same Cart_Reader Arduino sketch as the others and can be updated to the newest version without any changes.
|
||||||
|
|
||||||
|
### More information:
|
||||||
|
[[PCB Build guide]]
|
||||||
|
[[Setup and user guide]]
|
25
Cart-Reader-V3.md
Normal file
25
Cart-Reader-V3.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
With this revision more slots were added so that it now features a GB/GBA, N64, Mega Drive and a SNES slot.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/t0igdyghvagbrwq/v17_switches.png?dl=1)
|
||||||
|
|
||||||
|
### Build Instructions:
|
||||||
|
[[Needed Parts]]
|
||||||
|
[[Flashing the snesCIC]]
|
||||||
|
[[How to build the PCB]]
|
||||||
|
|
||||||
|
### Addons:
|
||||||
|
[[Adding a battery]]
|
||||||
|
[3d printed case files](https://github.com/sanni/cartreader/tree/a981bb0c3e9143cb1268e77311eadaa620eff621/case)
|
||||||
|
[[Adding an enclosure]]
|
||||||
|
|
||||||
|
### Adapter PCBs:
|
||||||
|
[Gerber files](https://github.com/sanni/cartreader/tree/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/pcb/adapters)
|
||||||
|
|
||||||
|
### Manual:
|
||||||
|
[[User Guide]]
|
||||||
|
[Schematics](https://github.com/sanni/cartreader/blob/ab952813a3ab92cef14a3b731e6fb53ed4f0c821/pcb/cartreader_schematics_new.png)
|
||||||
|
|
||||||
|
### Older releases(for testing, newer releases will work with V3 hardware too):
|
||||||
|
[V7.3](https://www.dropbox.com/s/hq39vhuk39zf3bx/V7.3_Portable.zip?dl=1) [V6.6](https://www.dropbox.com/s/bp7dyq6kur4ejcs/V6.6_Portable.zip?dl=1) [V6.4](https://www.dropbox.com/s/s704fxq377gx9oe/V6.4_Portable.zip?dl=1) [V5.5](https://www.dropbox.com/s/rbzh4x0d824xepw/V5.5_Portable.zip?dl=1) [V4.6](https://www.dropbox.com/s/ltka1aytmxqwu9o/V4.6_Portable.zip?dl=1) [V4.3](https://www.dropbox.com/s/g0g22v9dbtw3xn4/V4.3_Portable.zip?dl=1) [V4.0](https://www.dropbox.com/s/5birxutfytf6n4n/V4.0_Portable.zip?dl=1) [V3.1](https://www.dropbox.com/s/p3r67nu0qhyqxj6/V3.1_Portable.zip?dl=1) [V2.7](https://www.dropbox.com/s/d2qc6qdi7prglv8/V2.7_Portable.zip?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/nc5lblrrf49sgxb/v17_slots.png?dl=1)
|
9
Cart-Reader-V4.md
Normal file
9
Cart-Reader-V4.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
This revision changed the display from a small OLED to a much bigger LCD. Also the buttons were replaced by a rotary encoder for better menu navigation.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xq3751je2cu6zu5/hw4buildd.jpg?dl=1)
|
||||||
|
|
||||||
|
### Build Instructions:
|
||||||
|
|
||||||
|
[[Parts needed]]
|
||||||
|
[[Build Guide]]
|
||||||
|
[[User Manual]]
|
116
Designing-your-own-Adapters.md
Normal file
116
Designing-your-own-Adapters.md
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
To design your own adapters you need to download and install the following software:
|
||||||
|
- [KiCad 6](https://www.kicad.org/)
|
||||||
|
- [FreeRouting V1.2.43](https://www.dropbox.com/s/6druq74xxnkz26p/FreeRouting1.jar?dl=1) (Source code and newer releases that might still be buggy can be found [here](https://github.com/freerouting/freerouting))
|
||||||
|
- a Java Runtime Enviroment like [OpenJDK](https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.14.1%2B1/OpenJDK11U-jre_x64_windows_hotspot_11.0.14.1_1.msi)
|
||||||
|
|
||||||
|
Making an adapter PCB will take you about three hours.
|
||||||
|
|
||||||
|
|
||||||
|
### Important: This tutorial will not teach you how to use KiCad, you already need to know how Kicad works. It will just show you how I designed the adapters. To learn KiCad it's best to watch some Youtube videos about KiCad.
|
||||||
|
|
||||||
|
|
||||||
|
To start download and open the KiCad project of an already released adapter that fits your new adapter idea the best: https://github.com/sanni/cartreader/tree/master/hardware
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/4bzs925q2qxpz16/makepcb1.jpg?dl=1)
|
||||||
|
|
||||||
|
Double-click on the kicad_pcb file
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/nqohls3i0i04nh3/makepcb2.jpg?dl=1)
|
||||||
|
|
||||||
|
Select Global Deletion to get rid of all the traces
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/1zqggas3g9029yt/makepcb3.jpg?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/4gugt0xug60f80s/makepcb4.jpg?dl=1)
|
||||||
|
|
||||||
|
Delete everything you don't need
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ai58dzj2ysysouc/makepcb5.jpg?dl=1)
|
||||||
|
|
||||||
|
Open the kicad_sch file
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/nabeg875c1wsdyw/makepcb6.jpg?dl=1)
|
||||||
|
|
||||||
|
Delete everything you don't need
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/frgqty21h98c5sz/makepcb7.jpg?dl=1)
|
||||||
|
|
||||||
|
Open the symbol editor
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/9ay3vmcji130tbh/makepcb8.jpg?dl=1)
|
||||||
|
|
||||||
|
Right-click on the OSCR library and select new symbol
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/gv2wjvrjjnves2l/makepcb9.jpg?dl=1)
|
||||||
|
|
||||||
|
Give the new symbol a name
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/fy3eqgur7y4ewqn/makepcb10.jpg?dl=1)
|
||||||
|
|
||||||
|
If you want you can copy&paste from another symbol
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/rpysbbgwazzmopz/makepcb11.jpg?dl=1)
|
||||||
|
|
||||||
|
Then you can rearrange everything until it matches the desired pinout and save
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/g36bc95gvf1wr7y/makepcb12.jpg?dl=1)
|
||||||
|
|
||||||
|
Open the footprint editor
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lclq4u5wjpjbqob/makepcb13.jpg?dl=1)
|
||||||
|
|
||||||
|
Locate the OSCR library and create a new through-hole footprint
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/4cuhodtumbxsvd2/makepcb14.jpg?dl=1)
|
||||||
|
|
||||||
|
Now place the needed pads, make sure you don't mix up the pin numbers compared to your symbol. You can choose a grid with the same spacing as the pin spacing of your cartridge slot to place the pads more quickly. Save once finished.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/o0m6yti7hws1rwd/makepcb15.jpg?dl=1)
|
||||||
|
|
||||||
|
Back in the schematics editor you can now place the newly created symbol
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xxabqpket0s3hrx/makepcb16.jpg?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/pey02nx658lezyb/makepcb17.jpg?dl=1)
|
||||||
|
|
||||||
|
Open your pinout next to the schematics editor. Now duplicate(Ctrl+D) the little flags next to the Cart Slot Top/Bottom Row pins one by one and move(m) and rotate(r) them to the right position on your newly added symbol.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/kbjw8kcq4kf8847/makepcb18.jpg?dl=1)
|
||||||
|
|
||||||
|
Once done you also need to connect either the +5V or +3.3V pin to the VCC pin according to the voltage your cartridge needs using the line tool to make the adapter compatible with HW4, HW5 ignores this and has its own voltage switch. Also make sure you give your symbol a reference name like U1.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/p7x91mfakrw3paw/makepcb19.jpg?dl=1)
|
||||||
|
|
||||||
|
Now perform an electrical rules check and fix all error that appear and save
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/l014vqjy5a283v8/makepcb20.jpg?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/blvxxnj6spg58ws/makepcb21.jpg?dl=1)
|
||||||
|
|
||||||
|
Open the kicad_pcb file again and add your newly created footprint
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/pm29z1od6qcmptd/makepcb22.jpg?dl=1)
|
||||||
|
|
||||||
|
Give it the same name as you have given the symbol in the schematic
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/mweohb4u1mta2t2/makepcb23.jpg?dl=1)
|
||||||
|
|
||||||
|
Press the "Update PCB with changes made to schematic" button
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ppv4g90lc0twf4e/makepcb24.jpg?dl=1)
|
||||||
|
|
||||||
|
For the next step it is best if you align the grid to your solder pads. So choose same grid spacing as your pin spacing of your cartridge slot, then select a pad of your cartridge slot and press (m) then press (s) and left click. There should now be a little crosshair in the center of the pad and the grid should be aligned to the cartridge slot.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/h4sc3kpp7fartri/makepcb25.jpg?dl=1)
|
||||||
|
|
||||||
|
In the F.Silkscreen layer use the text tool to write the pinout next to each pin. This makes trouble shooting later easier. Once done save.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/leo9n1ju3moc5gb/makepcb26.jpg?dl=1)
|
||||||
|
|
||||||
|
Now select "Export" and "Specctra DSN"
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2u35z0o03qsirem/makepcb27.jpg?dl=1)
|
||||||
|
|
||||||
|
Launch FreeRouting and open the dsn file that you just exported
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/cz5il8gr9n8uzim/makepcb28.jpg?dl=1)
|
||||||
|
|
||||||
|
Click "Autorouter" and wait a little
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/eg05ff2h2nrstxc/makepcb29.jpg?dl=1)
|
||||||
|
|
||||||
|
Once the routing is done the batch optimization will start which can take quite some time
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/dz3o9rn2b6ximm0/makepcb30.jpg?dl=1)
|
||||||
|
|
||||||
|
As soon as it has finished you can select "Export Specctra Session File"
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2k877eg2ytdcrrd/makepcb31.jpg?dl=1)
|
||||||
|
|
||||||
|
Import the session file in KiCad
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/y4xcdn5ivucmg27/makepcb32.jpg?dl=1)
|
||||||
|
|
||||||
|
Press "Show the design rules checker window" to fix any issues. This step is super important, especially after using the autorouter. After that open the 3D viewer to check if the silkscreen looks ok too
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2259kt6bcqujfko/makepcb33.jpg?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/syjmismtqoic29b/makepcb34.jpg?dl=1)
|
||||||
|
|
||||||
|
Finally select "Plot"
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/gtmap8sh106r3ss/makepcb35.jpg?dl=1)
|
||||||
|
|
||||||
|
Press the "Plot" button and the "Generate Drill Files" button
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/nc7wbfsgl3cibcx/makepcb36.jpg?dl=1)
|
||||||
|
|
||||||
|
Press the "Generate Drill File" and "Generate Map File" buttons
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/5ocjc0gf2o7u3cu/makepcb37.jpg?dl=1)
|
||||||
|
|
||||||
|
Finally put all the Gerber files into a zip and upload it to a PCB maker
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lfp8aslu5ydmx8y/makepcb38.jpg?dl=1)
|
64
Dumping-NES-Games.md
Normal file
64
Dumping-NES-Games.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
### Video of dumping a NES cartridge
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/YJopO5ZfGww/0.jpg)](https://www.youtube.com/watch?v=YJopO5ZfGww)
|
||||||
|
|
||||||
|
### Supported cartridges
|
||||||
|
|
||||||
|
Here is the list of the currently [supported mappers](https://github.com/sanni/cartreader/blob/master/Cart_Reader/NES.ino#L28).
|
||||||
|
The mapper is the first number in each line.
|
||||||
|
To know what mapper a cartridge uses you can check this [database](http://nes.dnsabr.com/)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
Switch settings for HW3:
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
The mapper and size gets selected automatically but that currently doesn't work for all games.
|
||||||
|
So you might have to browse through the included database.
|
||||||
|
You can enable fast scrolling when you press and hold the rotary encoder button until the LED lights up. It scrolls 30 entries at once, to deactivate hold the button pressed until the LED lights up again.
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/ihO57j_eyWU/0.jpg)](https://www.youtube.com/watch?v=ihO57j_eyWU)
|
||||||
|
|
||||||
|
### Database
|
||||||
|
|
||||||
|
The database is still a work-in-progress. If you have a game that does not get automatically detected you can check the dump log and compare the first bank/last bank CRC32s that the OSCR reads out of the cartridge with the second CRC32 listed in nes.txt.
|
||||||
|
|
||||||
|
In this example the OSCR calculated 4AD01697 and 433706F0 for Super Mario Bros.
|
||||||
|
|
||||||
|
![wgfafsadffafafff](https://user-images.githubusercontent.com/19169494/218257084-35d76fac-3408-4637-b0b9-c686f588a950.jpg)
|
||||||
|
|
||||||
|
And the nes.txt database has 4AD01697, so the game gets recognized correctly. Note: It will most likely not detect the exact region or revision, that's normal.
|
||||||
|
|
||||||
|
````
|
||||||
|
Super Jeopardy! (USA).nes
|
||||||
|
CF4487A2,9B25F249,4E45531A081010080000000000000002
|
||||||
|
|
||||||
|
Super Mario Bros. (Europe).nes
|
||||||
|
9A2DB086,4AD01697,4E45531A020101080000000001000001
|
||||||
|
|
||||||
|
Super Mario Bros. (World).nes
|
||||||
|
D445F698,2F5CD53A,4E45531A020101080000000002000001
|
||||||
|
|
||||||
|
Super Mario Bros. + Duck Hunt (Europe).nes
|
||||||
|
91B4B1D7,300619D4,4E45531A04022148000000000100002A
|
||||||
|
````
|
||||||
|
|
||||||
|
### Manual mapper setup
|
||||||
|
|
||||||
|
If you can't find the game in the database at all you can also manually select the mapper and size information of the cartridge.
|
||||||
|
You can find the needed info on one of those websites, it's important that you input all the info correctly and don't leave anything out.
|
||||||
|
- http://nes.dnsabr.com/
|
||||||
|
- http://bootgod.dyndns.org:7777
|
||||||
|
- https://nescartdb.com/
|
||||||
|
- http://tuxnes.sourceforge.net/nesmapper.txt
|
||||||
|
|
||||||
|
![nesdumpset](https://user-images.githubusercontent.com/19169494/133679871-14f6dfa0-d475-4cb4-832a-d503cdd55ce1.jpg)
|
||||||
|
|
||||||
|
The Cart Reader can output both a *.bin and *.nes file. The *.bin file contains just the maskrom data of the cartridge while the *.nes file has an addition iNES emulation header added. This header is not found in the cartridge. The Cart Reader has a database with all the emulation headers and tries to add the header to the bin file after dumping but it might not recognize all the games.
|
||||||
|
|
||||||
|
To manually add the emulation header you can go to http://nes.dnsabr.com and search for your game. Once found copy the 32 letters/numbers from the Header (hex) column and paste them in front of the data in the nes bin file using a hex editor. It is important that you don't overwrite any of the existing bytes but add it in front.
|
||||||
|
|
||||||
|
![emuheader0](https://user-images.githubusercontent.com/19169494/158785881-758cef89-49e6-4e77-be5d-d41ffe2d9e3a.jpg)
|
||||||
|
|
||||||
|
![emuheader1](https://user-images.githubusercontent.com/19169494/158785599-8be636a6-325e-4a52-b284-c011568fb857.jpg)
|
||||||
|
|
19
Flashing-the-snesCIC.md
Normal file
19
Flashing-the-snesCIC.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
The PIC12F629 needs to be flashed with the [snescic-lock-resync.hex](https://github.com/mrehkopf/sd2snes/tree/develop/cic) before soldering it to the [PIC_adapter](https://github.com/sanni/cartreader/tree/master/hardware/cic_adapter) PCB if you want to dump SA1 SNES games. The PIC_adapter PCB has footprints for both the SMD and DIP version.
|
||||||
|
|
||||||
|
![image](https://raw.githubusercontent.com/sanni/cartreader/master/hardware/cic_adapter/PIC_adapter.jpg)
|
||||||
|
(If the PIC12F629 is out of stock there is an alternative footprint for the PIC16F630 that needs to be flashed with the [supercic-lock_p16F630.hex](https://sd2snes.de/blog/cool-stuff/supercic))
|
||||||
|
|
||||||
|
### Either buy a preprogrammed PIC
|
||||||
|
The easiest way would be to buy the [PIC12F629](http://www.buyicnow.com/it.php?i=114) and the [EEprom programming service](https://www.buyicnow.com/ser.php?i=2) from buyicnow and send them the [snescic-lock-resync.hex](https://github.com/mrehkopf/sd2snes/tree/develop/cic) file via email to buyicnow@gmail.com and ask them to flash the chip for you.
|
||||||
|
|
||||||
|
### Or programm it yourself with a PIC programmer
|
||||||
|
- PIC12F629 DIP(PIC_adapter PCB for six-slot-adapter): https://www.ebay.com/itm/373757494608
|
||||||
|
- PIC12F629 SMD(single slot SNES adapter): https://www.ebay.com/itm/251894930138
|
||||||
|
- PICkit: https://www.ebay.com/itm/331524268048
|
||||||
|
- TL866: https://www.ebay.com/itm/114618162080
|
||||||
|
- K150: https://www.aliexpress.com/item/32829564079.html
|
||||||
|
- DIY Arduino programmer: https://diyodemag.com/projects/arduino_pic_programmer
|
||||||
|
|
||||||
|
PIC Pinout:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/odla90ty5dgz15t/pickittt.jpg?dl=1)
|
1
Home.md
Normal file
1
Home.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
### Welcome to the Cartridge Reader Wiki!
|
57
How-to-build-the-PCB.md
Normal file
57
How-to-build-the-PCB.md
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#### -1) Start by flashing the latest Cart Reader code to the Arduino like [shown here.](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino)
|
||||||
|
|
||||||
|
#### 0) Next watch this video
|
||||||
|
[![](https://dl.dropboxusercontent.com/s/1ivtzp2swtemqn6/buildytprev.jpg?dl=1)](https://www.youtube.com/watch?v=EgYQeU0MP-U)
|
||||||
|
|
||||||
|
#### 1) Now desolder the transistor and the 5V voltage regulator from the Arduino board. Don't skip this step, it's important.
|
||||||
|
These two parts need to be removed so that the Cart Reader can switch the Arduino between 5V and 3.3V. On the Robotdyn Arduino the transistor is located a little bit further to the right just below the CH340 chip, like shown in the video. For the official Arduino Mega follow this picture.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/38ad01xbej3k1rx/0.png?dl=1)
|
||||||
|
|
||||||
|
#### 2) Solder SMD parts.
|
||||||
|
Be careful the 22uF tantalum capacitor(positive side is marked with a line and faces the 22uF marking on the PCB) and the PIC microcontroller(the dot on the chip lines up with the notch on PCB) have to be soldered in a certain orientation. The PIC also has to be [flashed with the snesCIC code](https://github.com/sanni/cartreader/wiki/Flashing-the-snesCIC) before you solder it to the PCB. The AMS1117-3.3 voltage regulator here needs to be 3.3V so you can't re-use the 5.0V one you de-soldered earlier. The 100nF capacitor and the resistors are not polarized and can be soldered in any orientation.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/g3qb3azseqfexck/2.png?dl=1)
|
||||||
|
|
||||||
|
#### 3) Solder the GBA slot, the switches, the male pin-headers and the female pin-headers for the clock generator and for the mSD and/or full-size SD module.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/yl97fuhrrlc6qup/3.png?dl=1)
|
||||||
|
|
||||||
|
#### 4) Place the SNES spacer underneath the SNES slot and solder it together with the Mega Drive slot and N64 slot. Next solder the two pushbuttons.
|
||||||
|
The SNES spacer raises the SNES slot a little so that you don't have to trim the pins of the SNES slot, but it's optional.
|
||||||
|
Be careful not to short the pins of the buttons to the metal casing, which can easily happen if you use too much solder.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/jkxocrokzlb6l33/4.png?dl=1)
|
||||||
|
|
||||||
|
#### 5) Solder OLED and configure the two OLED solder jumpers depending on whether [pin 1 of the OLED is GND or VCC.](https://dl.dropboxusercontent.com/s/1lpkaau5pjib50o/oledtype.jpg?dl=0)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/upuiektapg3g9vo/5.png?dl=1)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/mftvmhs1y0o9hxg/oledconfig.jpg?dl=1)
|
||||||
|
|
||||||
|
#### 6) Install the SD spacer using some double-sided sticky tape or hot glue and solder the legs of the LED as shown, be careful not to short anything.
|
||||||
|
Red, green and blue are negative pins. The longer leg of the LED is positive. The positive pin is marked on the PCB with a circle around the hole.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/d7zlxckfm56xcf7/6.png?dl=1)
|
||||||
|
|
||||||
|
#### 7) Solder N64 controller plug.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/vcujne7fzmb6r2v/7.png?dl=1)
|
||||||
|
|
||||||
|
#### 8) Install the Adafruit Clock Generator and the SD module.
|
||||||
|
You have to either desolder or bend and trim the pins of the microSD module before plugging it into the 6-pin connector.
|
||||||
|
Be sure to solder the pin header to the Clock Generator the right way, the 0, 1, 2 etc. markings on the clock gen PCB need to align with the CLK0, CLK1, CLK2 print on the Cart Reader PCB.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/tmwdzsetac0hwb1/sdpinv17.jpg?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ehbay8k0ff79gdu/82.png?dl=1)
|
||||||
|
|
||||||
|
#### 9) Solder two wires to connect the Arduino to the Cart Reader shield.
|
||||||
|
Because we de-soldered the two parts from the Arduino earlier we now need to create a new path for the supply voltage. Connect a wire from the GND pad of the Cart Reader shield to any GND point on the Arduino board and a second wire from the 5V pad to the point right after the green fuse.
|
||||||
|
In the video I add a 47uF capacitor here but a bigger 470uF soldered sideways is strongly recommended for SNES SA-1 carts. You can desolder the barrel plug connector if you need more space for the capacitor.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/7p3ienmtzifvnny/9.png?dl=1)
|
||||||
|
|
||||||
|
#### 10) Plug-in the Arduino.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/8hotst37hquqsnm/10.png?dl=1)
|
||||||
|
|
||||||
|
#### 11) Screw the backplate and sidewall in place.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ogh7aae9hc8vi0l/11.png?dl=1)
|
||||||
|
|
||||||
|
#### 12) Add the N64 slot sleeve.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ah4w1rtmmvp3avv/12.png?dl=1)
|
||||||
|
|
||||||
|
#### 13) Picture of a soldered Cart Reader PCB (22uF tantalum cap was replaced by 47uF electrolytic since I didn't have the tantalum at hand and a 470uF cap was added between 5V and GND to improve SA-1 compatibility).
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/n6nwd7qkodnojwd/builtpcb.jpg?dl=1)
|
161
How-to-build.md
Normal file
161
How-to-build.md
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
The Open Source Cartridge Reader consists out of different modules that need to be modified or assembled from parts.
|
||||||
|
|
||||||
|
![](https://user-images.githubusercontent.com/19169494/178138269-c49aa8b1-24fe-4b96-b5a2-726f18ded29e.jpg)
|
||||||
|
|
||||||
|
# Build videos:
|
||||||
|
[Kytor Industries](https://www.youtube.com/@kytor) made a really good video of the build process, click on the image below to open Youtube.
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/yZaGvuH10MY/0.jpg)](https://www.youtube.com/watch?v=yZaGvuH10MY)
|
||||||
|
|
||||||
|
Another excellent video was made by [Dubesinhower](https://www.youtube.com/@dubesinhower).
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/9ynlJS7W4RU/0.jpg)](https://www.youtube.com/watch?v=9ynlJS7W4RU)
|
||||||
|
|
||||||
|
# Written Build Guide
|
||||||
|
|
||||||
|
## 1) Flashing the Arduino
|
||||||
|
Before you start with the build you should make sure you have everything set-up correctly to flash the Arduino code. To test this plug the **unmodified**(SMD fuse not removed yet) Arduino Mega into your PC and upload the code as described [here](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino).
|
||||||
|
|
||||||
|
#### Info: Once you removed the SMD fuse from the Arduino it will no longer turn on on its own and from there on will need the main PCB to receive power. So it's best to flash it at least once before you de-solder the fuse.
|
||||||
|
|
||||||
|
## 2) LCD module
|
||||||
|
#### Attention: It's important that you use exactly this brand of LCD module since there are many similar looking modules from other brands that are however build differently.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xrjx177lymfmgjc/modules%20%286%29.jpg?dl=1)
|
||||||
|
|
||||||
|
Here you only need to close a little jumper using some solder. Just apply fresh solder to both pads and then add a little more to the middle while heating both pads with your soldering iron.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/tu3drcat21smovr/modules%20%285%29.jpg?dl=1)
|
||||||
|
|
||||||
|
#### Info: This allows the 3.3V generated by the voltage regulator on the LCD module to be used as a power source for the Cart Reader PCB and the Mega 2560 Pro.
|
||||||
|
|
||||||
|
## 3) Arduino compatible Mega 2560 Pro (embed)
|
||||||
|
#### Attention: After this modification the Arduino will only work together with the Cart Reader and not on its own anymore.
|
||||||
|
|
||||||
|
You need to remove the SMD fuse and then cut a female-to-male dupont wire in two and solder one half to the left pad of the now removed fuse. Instead of the dupont wire you can also use any wire(~24AWG) you have.
|
||||||
|
To remove the fuse just put fresh solder to both ends and then quickly heat up both ends in an alternating pattern with your soldering iron until the fuse just wipes off. Make sure the pads are not connected together and that the wire only touches the left pad.
|
||||||
|
|
||||||
|
#### Info: This mod is needed so that the Cart Reader can switch the Mega 2560 Pro's supply voltage between 5V and 3.3V and thus guaranteeing that the proper voltage levels are supplied to the address and data pins.
|
||||||
|
|
||||||
|
Next you have to solder all the male pin headers like shown in the picture.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0u34we0btrpsz66/H6e0091923b7443ef8c13845194f439eec.jpg?dl=1)
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ga1ilsl7s0ybj8y/ardufuse.jpg?dl=1)
|
||||||
|
|
||||||
|
## 4) Clock generator
|
||||||
|
#### Info: The SI5351 Clock Generator provides a clock signal for SNES SPC7110/SA1/SF Memory/Satellaview cartridges and N64 cartridges with EEPROM saves.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/u5rn6xjj3bszygz/clkgensolder%20%281%29.jpg?dl=1)
|
||||||
|
|
||||||
|
Here you only need to solder a 1x7 male pin header.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/j4wa5dd07gn2bp4/clkgensolder%20%282%29.jpg?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xhdzyxf25aah7ut/clkgensolder%20%283%29.jpg?dl=1)
|
||||||
|
|
||||||
|
#### Info: The Cart Reader will work without the clock gen, you just have to disable it in the HW Config found in Cart_Reader.ino by removing the line "#define clockgen_installed". Ofc the aforementioned SNES cartridge types will not work without it.
|
||||||
|
|
||||||
|
## 5) Main PCB (HW5)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2behudsbftw5ii8/hw5rev1%20%281%29.jpg?dl=1)
|
||||||
|
|
||||||
|
The GBA slot should be soldered first because it's the hardest part.
|
||||||
|
Next you need to solder quite a few female pin headers. Since you most likely didn't get them all in the correct size remove the pins that you don't need with pliers and then cut off the excess plastic either with a side cutter, box cutter or a Dremel with a cutting disc.
|
||||||
|
|
||||||
|
Now solder the two IDC box headers for the display connection. As an alternative you can also use 2.54mm male pin headers.
|
||||||
|
Then solder the second half of the dupont wire and also the two switches. Do not operate the switches while they are still hot from soldering, wait until they have cooled down completely.
|
||||||
|
|
||||||
|
The 470uF capacitor is optional but recommended especially for SNES SA1 games.
|
||||||
|
At the front is a spot to solder a 3mm status LED together with its resistor(1K for green LED, 220 Ohm for blue, or anything in between). This is also optional. Inside the LED bulb there is a big metal thing and a small metal thing connected to the two legs. The leg that is connected to the big metal thing needs to be soldered to the square pad on the PCB.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/k1rr7w69n6d08j1/hw5rev1led.jpg?dl=1)
|
||||||
|
|
||||||
|
On the back you need to close the solder jumper marked in red (only for HW5 Rev3).
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lfx3ggobp5mzifb/wrhgaeghagehageage.jpg?dl=1)
|
||||||
|
|
||||||
|
## 6) The first test
|
||||||
|
By now you have built everything to dump Game Boy (Color) and GBA games and it's time for a first test.
|
||||||
|
|
||||||
|
Attach the LCD screen with the included wires to the main PCB.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/tj0xd3n2lvterdr/display_connect_1.jpg?dl=1)
|
||||||
|
|
||||||
|
Then switch the voltage to 5V, insert your SD card with the files from the SD folder copied to its root, plug in an USB cable and switch the Cart Reader on. You should be greeted by the main menu that you can scroll through using the knob on the right.
|
||||||
|
Switch the Cart Reader off again, insert a Game Boy (Color) game and try to dump it. If the dump was successful continue with building the six slot adapter PCB.
|
||||||
|
|
||||||
|
## 7) six-slot adapter PCB
|
||||||
|
You should start by soldering the SNES slot followed by the 1K resistor, the 1x8 female pin header and the 1x38 and 1x36 20mm male pin headers and then continue with the remaining 5 cartridge slots.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/iek4klrndnt6eyb/six_slot_back.JPG?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/1ue1hzynek9rsd3/IMG_1193.JPG?dl=1)
|
||||||
|
|
||||||
|
The N64 controller socket or extension cable gets connected through some wires to the VCC, DAT, GND pins. Don't stick the cables into the holes or you will have to bend them 90° which will weaken the cable until it will one day snap. Instead treat the holes like SMD pads and solder the cables lying flat against the PCB.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/kja1q7amectuuvf/hw5rev%2Cbuild%20%285%29.jpg?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/puir5nywvvzi76f/hw5rev%2Cbuild%20%286%29.jpg?dl=1)
|
||||||
|
|
||||||
|
And then in the case of the socket hot glued to the frame somewhere. If you are using the extension cord instead use some zip ties to fixate the cable to the frame.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/e0duzx78h9ost0s/hw5rev%2Cbuild%20%281%29.jpg?dl=1)
|
||||||
|
|
||||||
|
#### Info: All slots are wired in parallel so if you make a soldering error on one slot it's very likely to affect all slots.
|
||||||
|
|
||||||
|
## 8) PIC_adapter PCB for snesCIC
|
||||||
|
Solder the PIC12F629 [flashed with snesCIC](https://github.com/sanni/cartreader/wiki/Flashing-the-snesCIC), the 100nF ceramic capacitor and an 1x8 2,54mm pin header to the [PIC_adapter PCB](https://github.com/sanni/cartreader/blob/master/hardware/cic_adapter/PIC_adapter_gerber.zip) like so:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/23hgyh4zml3bv9p/HW5_CIC.jpg?dl=1)
|
||||||
|
|
||||||
|
The finished PCB fits underneath the SNES slot on the six slot adapter PCB.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/5vc8dgondv8fbzb/HW5_CIC2.jpg?dl=1)
|
||||||
|
|
||||||
|
## 9) 3D printed frame
|
||||||
|
The [simple frame](https://github.com/sanni/cartreader/blob/ecfe42d5e415dc633e6f625d9ba2602cdfe70416/hardware/main_pcb_hw5/frame.stl) or the [Main PCB stand](https://github.com/sanni/cartreader/blob/master/hardware/main_pcb_hw5/Main%20PCB%20Stand%20-%20Right%20N64%20Adapter.stl) can be printed with Cura's default extra fast profile, PLA as material choice works great.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/j781l5mmi39rzcu/curaframe.jpg?dl=1)
|
||||||
|
|
||||||
|
Use your soldering iron with a fine pointy tip to insert 4 brass threaded inserts into the display holder.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/2qev9k3lwnpkdfk/building%20%281%29.jpg?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/w8dtcjb1hv4na50/building%20%282%29.jpg?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/6h2kbyy3q1z9895/building%20%283%29.jpg?dl=1)
|
||||||
|
|
||||||
|
## 10) Final Assembly
|
||||||
|
|
||||||
|
Use the screws and the eight 18mm spacers to connect both PCBs and the display to the frame. Put a washer between the screws and the PCBs to prevent scratches.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/pqkdlnzdasfpnqy/htbhw5right.JPG?dl=1)
|
||||||
|
|
||||||
|
In my case the Aliexpress seller send me 17mm spacers instead of the ordered 18mm so I had to add an additional washer. One of the 18mm spacers goes through the Mega Pro's PCB, it is a bit fiddly to align.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/smdskf5txekw0d8/htbhw5left.JPG?dl=1)
|
||||||
|
|
||||||
|
I had to use the [3d printed N64 sleeve](https://github.com/sanni/cartreader/blob/master/hardware/six_slot_adapter/n64sleeve.stl) because the Aliexpress seller send me a 2,54mm Master System slot instead of the 2.5mm N64 slot. It still works since the N64 sleeve will center the cartridge so that the pins make contact even though the pitch is slightly off.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/rdwrqlmcgm91bn4/hw5rev%2Cbuild%20%282%29.jpg?dl=1)
|
||||||
|
|
||||||
|
If you have the correct 2.5mm slot you don't need the 3d printed sleeve.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/lvu9yk0coyaqnjx/htbhw5top.JPG?dl=1)
|
||||||
|
|
||||||
|
GBA Slot in the back.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/c3hb4oeam9qnmot/htbhw5back.JPG?dl=1)
|
||||||
|
|
||||||
|
I have shortened the display cables to make it look tidier but you can also leave them as is and just stuff them in the space underneath the display.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/brd54mvvcamq3ze/htbhw5bottom.JPG?dl=1)
|
||||||
|
|
||||||
|
Be aware that both display cables twist 180 degrees.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/08ql5k0zarpqxfo/IMG_1584.jpg?dl=1)
|
||||||
|
|
||||||
|
|
61
How-to-flash-the-Arduino.md
Normal file
61
How-to-flash-the-Arduino.md
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
The Cart Reader's firmware is released as source code and needs to be compiled before flashing. Both compiling and flashing can be done with the **Arduino IDE**.
|
||||||
|
You can either use the [Portable Release](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino#portable-release) or the [official Arduino IDE installer](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino#official-arduino-ide-installer).
|
||||||
|
|
||||||
|
## Portable Release:
|
||||||
|
|
||||||
|
Each Cart Reader release comes with a pre-configured and tested portable Arduino IDE tailored for that specific release which includes the Cart_Reader.ino sketch as well as all the needed Arduino libraries and SD database files and does not interfere with any previous Arduino installation.
|
||||||
|
|
||||||
|
### To upload the firmware to the Cart Reader please follow these steps:
|
||||||
|
**0)** Plug your Open Source Cartridge Reader into an USB port of your PC. The ON/OFF switch needs to be set to ON.
|
||||||
|
|
||||||
|
**1)** Download the latest V#.#_Portable.zip from the [Releases](https://github.com/sanni/cartreader/releases) tab and extract it.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/6s1fegtj00zocw5/portableardu.jpg?dl=1)
|
||||||
|
|
||||||
|
**2)** Install CH341 drivers if needed by running SETUP.exe in the "CH341 Drivers" folder.
|
||||||
|
After the successful installation of the driver, there should be a CH340 entry in the device manager(WIN+R devmgmt.msc). This will also tell you what COM Port you need to select later on.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/97iunza5yhed48v/devicemanager.jpg?dl=1)
|
||||||
|
|
||||||
|
**3)** Launch "arduino.exe" found in the "Arduino IDE Portable" folder you just extracted(right-click "Run as administrator" might be necessary).
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0tzlteob97jx76y/portableardu2.jpg?dl=1)
|
||||||
|
|
||||||
|
**4)** In the Arduino IDE go File -> Sketchbook -> Cart_Reader
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/8h2odn3s2p44ock/portableardu3.jpg?dl=1)
|
||||||
|
|
||||||
|
**5)** Then Tools -> Board and set it to "Arduino Mega or Mega 2560".
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/3az5gr44boswylf/megaselect.jpg?dl=1)
|
||||||
|
|
||||||
|
**6)** Now Tools -> Port and select the COM port your Arduino is using.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/7o4wmh2rn4g2der/portableardu4.jpg?dl=1)
|
||||||
|
|
||||||
|
**7)** Next you need to go to the Cart_Reader.ino tab and define your hardware version by removing the // in front of your version. You can also remove // before #define enable_XXX to enable add-on modules you need.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/8kajcakxeghsben/choosemoduleshw.jpg?dl=1)
|
||||||
|
|
||||||
|
You can tell which hardware version you got by comparing your OSCR with this image:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/wrffv9ldzfu3qv9/telllhwversion.jpeg?dl=1)
|
||||||
|
|
||||||
|
**8)** In case you do not have the Clock Generator installed you need to change the line "#define clockgen_installed" to "//#define clockgen_installed".
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/cj8qe8ewilflknj/clockgeninstalled.jpg?dl=1)
|
||||||
|
|
||||||
|
You can tell if you have the clock generator installed by comparing your OSCR with this image:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/vdmb97dgzamqcz7/tellclockgen.jpeg?dl=1)
|
||||||
|
|
||||||
|
**9)** Finally Sketch -> Upload
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/snc9gcm181xle6q/portableardu6.jpg?dl=1)
|
||||||
|
|
||||||
|
**10)** Also don't forget to update the SD database files like described [here](https://github.com/sanni/cartreader/wiki/Preparing-the-SD-card)
|
||||||
|
|
||||||
|
|
||||||
|
## Official Arduino IDE Installer:
|
||||||
|
|
||||||
|
Alternatively you can download and install the [Arduino IDE](https://www.arduino.cc/en/software) and then copy the "libraries" and "Cart_Reader" folder from the current release "VX.X_Portable\Arduino IDE Portable\portable\sketchbook" to "C:\Users\your_username\Documents\Arduino" and launch the Arduino IDE from the start menu.
|
20
How-to-order-a-PCB.md
Normal file
20
How-to-order-a-PCB.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Step 1: Download a zipped gerber file from [the hardware folder](https://github.com/sanni/cartreader/tree/master/hardware). In this case the main_pcb_hw5_gerber.zip.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/k6r5h2x2u3pvmyl/orderpcb1.jpg?dl=1)
|
||||||
|
|
||||||
|
Step 2: Open https://www.jlcpcb.com and click "Add gerber file" to upload the zipped gerber file.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/8xt29rrax539gp7/order_jlc_1.jpg?dl=1)
|
||||||
|
|
||||||
|
Step 3: For the PCBs from the hardware folder you only need to select the color you like and then click on "Save to Cart".
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/il5n35iaa19nh0x/order_jlc_2.jpg?dl=1)
|
||||||
|
|
||||||
|
### Important: For adapter PCBs that plug into the N64, NES or SNES slot like the Wonderswan, TG16 or Neo Geo Pocket adapter you also have to change the PCB thickness setting to 1.2mm.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/09yososm64pqcxw/order_jlc_4.jpg?dl=1)
|
||||||
|
|
||||||
|
Step 4: Repeat the process for any other PCBs you want to order and add any 3D prints if you like and then proceed to the secure checkout.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/eeii21opfhpem2w/order_jlc_3.jpg?dl=1)
|
||||||
|
|
18
List-of-user-created-Adapters.md
Normal file
18
List-of-user-created-Adapters.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
Follow [this link](https://github.com/sanni/cartreader/discussions/354) to see all the adapters created by users including:
|
||||||
|
|
||||||
|
- Atari 2600
|
||||||
|
- Bandai WonderSwan
|
||||||
|
- Benesse Pocket Challenge W
|
||||||
|
- Colecovision
|
||||||
|
- Emerson Arcadia 2001
|
||||||
|
- Fairchild Channel F
|
||||||
|
- Magnavox Odyssey 2/Philips Videopac
|
||||||
|
- Mattel Intellivision
|
||||||
|
- NEC PC Engine
|
||||||
|
- Nintendo VirtualBoy
|
||||||
|
- Sega Mark III
|
||||||
|
- SNK Neo Geo Pocket
|
||||||
|
- Watara Supervision
|
||||||
|
- Super A'Can
|
||||||
|
|
||||||
|
|
21
M27C322.md
Normal file
21
M27C322.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
First you need to ensure that the Cart Reader is powered by either a good USB port or a high-quality 5V phone charger with 1A or 2A but beware cheap Chinese phone chargers do not work while an Amazon branded 5V/1A does. So it really depends on the quality.
|
||||||
|
Also be aware when just powered by the battery module it does not flash reliably.
|
||||||
|
|
||||||
|
![](https://images-na.ssl-images-amazon.com/images/I/51FY6qmN3QL._SY355_.jpg)
|
||||||
|
|
||||||
|
Then set up the Cartridge Reader's jumpers like so.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
Insert the 27C322 into the EPROM adapter positioned all the way to the left.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/35uyva0d8pxhbko/27C322.jpg?dl=1)
|
||||||
|
|
||||||
|
Flip the two SMD switches on the adapter both to the bottom position.
|
||||||
|
Now plug the EPROM adapter into the cart reader so that the 27C322 EPROM is facing towards you.
|
||||||
|
|
||||||
|
In the main menu first select "Flashrom Programmer" and then choose "Eprom adapter(beta)".
|
||||||
|
To program the EPROM it needs to be erased with a UV EPROM eraser before inserting it into the Cart Reader, then do a blank check to ensure the erase was successful and finally select write to flash it with your ROM.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
||||||
|
|
||||||
|
**The verify function is bugged right now, so if you get a verification error, simply switch the cart reader off and on again and manually verify the write process by reading the eprom to the sd card and using a hex editor on your PC to compare it against the source file.**
|
12
MX29F1610.md
Normal file
12
MX29F1610.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
First you need to setup the Cartridge Reader Shield's config switches like so.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
Then insert the MX29F1610 flashrom into the SOP44 ZIF socket, plug the ZIF socket into **leftmost position** of the 8bit flashrom adapter and finally plug the flashrom adapter into the cart reader.
|
||||||
|
You also have to adjust the two SMD switches both to the **top position**.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/5oucn4bn66zm14p/29f1601_sop44.jpg?dl=1)
|
||||||
|
|
||||||
|
In the main menu first select "Flashrom Programmer" and then choose "8bit adapter".
|
||||||
|
To program the flashrom you need to erase it, then do the blankcheck and finally select write to flash it with your rom.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
14
MX29L3211.md
Normal file
14
MX29L3211.md
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
First you need to setup the Cartridge Reader Shield's config switches like so.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
Then insert the 29L3211 flashrom into the SOP44 ZIF socket, plug the ZIF socket into **leftmost position** of the 8bit flashrom adapter and finally plug the flashrom adapter into the cart reader.
|
||||||
|
You also have to adjust the two SMD switches both to the **top position**.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0iizsnoiv0b8lcx/29l3211_sop44.jpg?dl=1)
|
||||||
|
|
||||||
|
In the main menu first select "Flashrom Programmer" and then choose "8bit adapter".
|
||||||
|
To program the flashrom you need to erase it, then do the blankcheck and finally select write to flash it with your rom.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
||||||
|
|
||||||
|
And remember when you put a 29L3211 inside a SNES cart it will need a 104nf capacitor between GND and Output of the AMS1117 3.3V voltage regulator or else there will be read errors.
|
12
MX29LV160.md
Normal file
12
MX29LV160.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
First you need to setup the Cartridge Reader Shield's config switches like so.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
Then insert the 29LV160 flashrom into the 44pin zif socket, plug the zif socket into **leftmost position** of the 8bit flashrom adapter and finally plug the flashrom adapter into the cart reader.
|
||||||
|
You also have to adjust the two SMD switches both to the **bottom position**.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/i0jppnmnpqt061w/29lv160_sop44.jpg?dl=1)
|
||||||
|
|
||||||
|
In the main menu first select "Flashrom Programmer" and then choose "8bit adapter".
|
||||||
|
To program the flashrom you need to erase it, then do the blankcheck and finally select write to flash it with your rom.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
12
MX29LV320.md
Normal file
12
MX29LV320.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
First you need to setup the Cartridge Reader Shield's config switches like so.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
Then insert the 29LV320 flashrom into the TSOP48 ZIF socket, plug the ZIF socket into **middle position** of the 8bit flashrom adapter and finally plug the flashrom adapter into the cart reader.
|
||||||
|
The two SMD switches do not matter in this case as they're only for the SOP44 slot.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xzkmg9mubu8p6zx/29lv320_tsop48.jpg?dl=1)
|
||||||
|
|
||||||
|
In the main menu first select "Flashrom Programmer" and then choose "8bit adapter".
|
||||||
|
To program the flashrom you need to erase it, then do the blankcheck and finally select write to flash it with your rom.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
178
Needed-Parts.md
Normal file
178
Needed-Parts.md
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
![image][single_cr]
|
||||||
|
|
||||||
|
# Parts list for building a single Cart Reader (HW Version 3)
|
||||||
|
Total Cost: **~$50-$68** (depending on access to 3D printer)
|
||||||
|
|
||||||
|
## Electronic components:
|
||||||
|
- Download [**this excel file**][lcsc_spreadsheet] and upload it [**to lcsc.com**][lcsc_bom], then click on the blue add-to-cart button.<br /><br />
|
||||||
|
:information_source: **Note:** The **PIC12F629 microcontroller** from this spreadsheet needs to be [**flashed with the snesCIC**][flash_snescic] before soldering it to the Cart Reader PCB if you want to dump [**SA1 SNES games**][sa1_list].
|
||||||
|
|
||||||
|
Total: **$10**
|
||||||
|
|
||||||
|
In case something is out of stock at LCSC you can have a look at the ["Parts list for building 10 Cart Readers"][ten_cr_anchor] below.
|
||||||
|
|
||||||
|
## Arduino modules:
|
||||||
|
- **Arduino Mega 2560(choose the cheaper standard version):** [aliexpress.com][arduino]
|
||||||
|
- **microSD Module:** [aliexpress.com][microSD]
|
||||||
|
- **0.96" 4 pin IIC OLED display** (*cart reader can work without a display using Serial Monitor too*): [aliexpress.com][oled]
|
||||||
|
- **SI5351A I2C Clock Generator** (*only needed for some special SNES carts*) [aliexpress.com][clk_gen]
|
||||||
|
|
||||||
|
Total: **$16**
|
||||||
|
|
||||||
|
## Cartridge slots:
|
||||||
|
- **GB/GBA Slot:** [aliexpress.com][gba_slot]
|
||||||
|
- **N64 Slot:** [aliexpress.com][n64_slot]
|
||||||
|
- **SNES Slot:** [aliexpress.com][snes_slot]
|
||||||
|
- **SEGA Mega Drive slot:** [aliexpress.com][md_slot]
|
||||||
|
- **N64 controller extension cable:** [aliexpress.com][n64_con_ext]
|
||||||
|
|
||||||
|
Total: **$18** (try to ask seller to combine shipping)
|
||||||
|
|
||||||
|
## Cart Reader PCB:
|
||||||
|
- Upload the file [cartreader.zip][cr_pcb] to a PCB manufacturer. Default settings are fine, just select the color you prefer.
|
||||||
|
|
||||||
|
Total: **$10.00**
|
||||||
|
|
||||||
|
## 3D printed parts:
|
||||||
|
- Upload the [combined STL file][combined] to a 3D printer service like [Craftcloud3d][cc3d], select **mm** as units and **PLA** as material or print the [separate parts][case] yourself.<br /><br />
|
||||||
|
ℹ️ **Note:** the combined STL file includes the necessary 3D printed parts for the bare bones build. If you are interested in an enclosure, check out the [**Adding an enclosure**][enclosure] Add-on page in the Wiki.
|
||||||
|
|
||||||
|
Total: **$18.00** (or **$1.00** if you have a 3D printer)
|
||||||
|
|
||||||
|
## Screws:
|
||||||
|
- **8 (eight)** self-tapping M2x10 screws: [ebay.com][screws]
|
||||||
|
- **5 (five)** rubber feet: [ebay.com][feet]
|
||||||
|
|
||||||
|
Total: **$3.30**
|
||||||
|
|
||||||
|
## Misc items:
|
||||||
|
- **2 (Two**) wires (*~AWG24*) to solder the Arduino to the Cart Reader PCB (*JST battery connectors are another option*)
|
||||||
|
- A microSD card
|
||||||
|
|
||||||
|
*You can leave out any part you don't need and the Cart Reader will still work since it's built fully modular. The only things you definitely need are the **Arduino Mega**, a **microSD card module** and **the slot for the cartridge** you want to dump or **the controller extension cable** in case of the N64 Controller Pak.*
|
||||||
|
|
||||||
|
## Add-ons and Adapters:
|
||||||
|
Be sure to check out the **Add-ons** pages in the Wiki.
|
||||||
|
|
||||||
|
*Please be aware that some consoles are only supported with the use of adapters.*
|
||||||
|
|
||||||
|
In order to read ROMs from all supported consoles, you will need to purchase parts (cartridge slots), as well as adapter PCBs. These lists should serve as a starting point for this build
|
||||||
|
|
||||||
|
### Consoles supported in this build:
|
||||||
|
- **Super Nintendo Entertainment System** (SNES)
|
||||||
|
- **Nintendo 64** (N64)
|
||||||
|
- **Game Boy** (DMG)
|
||||||
|
- **Game Boy Color** (GBC)
|
||||||
|
- **Game Boy Advance** (GBA)
|
||||||
|
|
||||||
|
### Other supported media
|
||||||
|
- **Nintendo 64 Controller Paks** *(Memory cards used for the games in the top list of [this link][n64_saves])*
|
||||||
|
|
||||||
|
### Consoles supported with the use of Adapters:
|
||||||
|
- **Nintendo Entertainment System** *(uses NES 72pin -> SNES 62pin adapter)*
|
||||||
|
- **Family Computer** *(uses Famicom 60pin -> SNES 62pin adapter)*
|
||||||
|
- **Sega Master System** *(uses SMS 50pin -> SMD/GEN 64pin adapter)*
|
||||||
|
- **WonderSwan** *(uses WS 48pin -> SNES 62pin adapter)*
|
||||||
|
- **Neo Geo Pocket** *(uses NGP 36pin -> SNES 46pin adapter)*
|
||||||
|
|
||||||
|
### Other supported media with the use of Adapters:
|
||||||
|
- **Flashrom chips** *(see complete list [here][repo_readme])*
|
||||||
|
- **Eprom chips** *(see complete list [here][repo_readme])*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
![image][ten_cr]
|
||||||
|
|
||||||
|
<a name="ten_cr_anchor"></a>
|
||||||
|
# Parts list for building 10 Cart Readers
|
||||||
|
Total cost: **~$28** per unit
|
||||||
|
|
||||||
|
If you buy parts for 10 Cart Readers at once you only pay **~$280** which brings the price per unit down quite a bit thanks to economy of scale. This assumes that you have a 3D printer and a programmer for the PIC12F629 already. Prices may vary over time.
|
||||||
|
|
||||||
|
| Category | Name | # of parts included | # of parts needed per Reader | Order this many times | Total price | Link |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| Arduino | Arduino Mega | 1 | 1 | 10x | $89.20 | [aliexpress.com][arduino] |
|
||||||
|
| Arduino | Clock Generator | 1 | 1 | 10x | $34.05 | [aliexpress.com][clk_gen_10] |
|
||||||
|
| Arduino | micro SD Module | 1 | 1 | 10x | $3.60 | [aliexpress.com][microSD] |
|
||||||
|
| Arduino | 0.96" 4-pin OLED | 1 | 1 | 10x | $22.55 | [aliexpress.com][oled] |
|
||||||
|
| Cart slot | GBA cart slot | 10 | 1 | 1x | $14.67 | [aliexpress.com][gba_slot_10] |
|
||||||
|
| Cart slot | MD cart slot | 10 | 1 | 1x | $18.32 | [aliexpress.com][md_slot_10] |
|
||||||
|
| Cart slot | N64 Controller Extension | 10 | 1 | 10x | $14.90 | [aliexpress.com][n64_con_ext] |
|
||||||
|
| Cart slot | N64 cart slot | 10 | 1 | 1x | $16.86 | [aliexpress.com][n64_slot] |
|
||||||
|
| Cart slot | SNES cart slot | 10 | 1 | 1x | $20.03 | [aliexpress.com][snes_slot_10] |
|
||||||
|
| Case | 3D Print | 1 | 1 | 10x | $6.00 | 130g PLA and 20h print time total for 10 sets.<br/>[...case/combined_no_tabs.stl][combined]|
|
||||||
|
| Case | Rubber feet | 100 | 5 | 1x | $1.34 | [ebay.com][feet] |
|
||||||
|
| Case | M2x10 screw | 20 | 8 | 4x | $4.00 | [ebay.com][screws] |
|
||||||
|
| Electronics | 100nF capacitor | 100 | 1 | 1x | $1.09 | [ebay.com][100nF_cap] |
|
||||||
|
| Electronics | 10K resistor 0805 | 100 | 2 | 1x | $0.99 | [ebay.com][10K_res] |
|
||||||
|
| Electronics | 1K resistor 0805 | 100 | 1 | 1x | $0.99 | [ebay.com][1K_res] |
|
||||||
|
| Electronics | 1x40 male pinheader | 15 | 3 | 2x | $2.88 | [ebay.com][1x40_header] |
|
||||||
|
| Electronics | 1x6 female pinheader | 20 | 1 | 1x | $1.45 | [ebay.com][1x6_header] |
|
||||||
|
| Electronics | 1x7 female pinheader | 10 | 1 | 1x | $1.28 | [ebay.com][1x7_header] |
|
||||||
|
| Electronics | 220R resistor | 100 | 3 | 1x | $0.99 | [ebay.com][220R_res] |
|
||||||
|
| Electronics | 22uF Tantalum 0805 | 10 | 1 | 1x | $1.65 | [ebay.com][22uF_cap] |
|
||||||
|
| Electronics | AMS1117 3.3V | 12 | 1 | 1x | $0.99 | [ebay.com][AMS_117_reg] |
|
||||||
|
| Electronics | 470uF capacitor | 10 | 1 | 1x | $1.83 | [ebay.com][470uF_cap] |
|
||||||
|
| Electronics | PIC12F629(flash with snesCIC) | 10 | 1 | 1x | $4.47 | [ebay.com][PIC_mc] |
|
||||||
|
| Electronics | 5mm RGB LED Common Anode | 10 | 1 | 1x | $2.04 | [ebay.com][rgb_led] |
|
||||||
|
| Electronics | SMD push button (4.3MM) | 50 | 2 | 1x | $1.87 | [aliexpress.com][smd_btn] |
|
||||||
|
| Electronics | THT slide switch | 50 | 5 | 1x | $1.58 | [aliexpress.com][tht_sw] |
|
||||||
|
| PCB | Cart Reader PCB | 10 | 1 | 1x | $9.41 | [...pcb/cartreader.zip][cr_pcb] |
|
||||||
|
|
||||||
|
[discussion]: <https://github.com/sanni/cartreader/discussions/58>
|
||||||
|
[single_cr]: <https://dl.dropboxusercontent.com/s/gd748qjj1u6p8pz/blue.jpg?dl=1>
|
||||||
|
[lcsc_spreadsheet]: <https://www.dropbox.com/s/pzq9ccqypj1s9x5/LCSC_COM_BOM.xlsx?dl=1>
|
||||||
|
[lcsc_bom]: <https://lcsc.com/user/bom>
|
||||||
|
[flash_snescic]: <https://github.com/sanni/cartreader/wiki/Flashing-the-snesCIC>
|
||||||
|
[sa1_list]: <https://en.wikipedia.org/wiki/List_of_Super_NES_enhancement_chips#List_of_Super_NES_games_that_use_enhancement_chips>
|
||||||
|
|
||||||
|
[clk_gen]: <https://www.aliexpress.com/item/4000040035169.html>
|
||||||
|
|
||||||
|
[gba_slot]: <https://www.aliexpress.com/item/4000290191316.html>
|
||||||
|
[n64_slot]: <https://www.aliexpress.com/item/33002915153.html>
|
||||||
|
[snes_slot]: <https://www.aliexpress.com/item/32914744213.html>
|
||||||
|
[md_slot]: <https://www.aliexpress.com/item/32952082207.html>
|
||||||
|
[settings]: <https://www.dropbox.com/s/06dnus50ikmsmya/pcb16.jpg?dl=0>
|
||||||
|
[combined]: <https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case/combined.stl>
|
||||||
|
[cc3d]: <https://www.craftcloud3d.com/>
|
||||||
|
[case]: <https://github.com/sanni/cartreader/tree/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/case>
|
||||||
|
[screws]: <https://www.ebay.com/itm/153446637938>
|
||||||
|
[feet]: <https://www.ebay.com/itm/383913855124>
|
||||||
|
|
||||||
|
|
||||||
|
[enclosure]: <https://github.com/sanni/cartreader/wiki/Adding-an-enclosure>
|
||||||
|
[guiformat]: <https://web.archive.org/web/20200930150014/http://www.ridgecrop.demon.co.uk/guiformat.exe>
|
||||||
|
|
||||||
|
[n64_saves]: <http://micro-64.com/database/gamesave.shtml>
|
||||||
|
[repo_readme]: <https://github.com/sanni/cartreader/blob/master/README.md>
|
||||||
|
|
||||||
|
[ten_cr_anchor]: <#ten_cr_anchor>
|
||||||
|
[ten_cr]: <https://dl.dropboxusercontent.com/s/20f143p01krurjs/white.jpg?dl=1>
|
||||||
|
|
||||||
|
[arduino]: <https://www.aliexpress.com/item/32850843888.html>
|
||||||
|
[clk_gen_10]: <https://www.aliexpress.com/item/4000040035169.html>
|
||||||
|
[microSD]: <https://www.aliexpress.com/item/1000001126725.html>
|
||||||
|
[oled]: <https://www.aliexpress.com/item/4000699784061.html>
|
||||||
|
[gba_slot_10]: <https://www.aliexpress.com/item/32679616019.html>
|
||||||
|
[md_slot_10]: <https://www.aliexpress.com/item/32818505280.html>
|
||||||
|
[n64_con_ext]: <https://www.aliexpress.com/item/4000211450286.html>
|
||||||
|
[n64_slot_10]: <https://www.aliexpress.com/item/32840171489.html>
|
||||||
|
[snes_slot_10]: <https://www.aliexpress.com/item/32628476315.html>
|
||||||
|
[feet_10]: <https://www.ebay.com/itm/383913855124>
|
||||||
|
[screws_10]: <https://www.ebay.com/itm/153446789295>
|
||||||
|
[100nF_cap]: <https://www.ebay.com/itm/252743416585>
|
||||||
|
[10K_res]: <https://www.ebay.com/itm/264322541209>
|
||||||
|
[1K_res]: <https://www.ebay.com/itm/264322541209>
|
||||||
|
[1x40_header]: <https://www.ebay.com/itm/261198030172>
|
||||||
|
[1x6_header]: <https://www.ebay.com/itm/322909841013>
|
||||||
|
[1x7_header]: <https://www.ebay.com/itm/401938483570>
|
||||||
|
[220R_res]: <https://www.ebay.com/itm/191674303848>
|
||||||
|
[22uF_cap]: <https://www.ebay.com/itm/302067970928>
|
||||||
|
[AMS_117_reg]: <https://www.ebay.com/itm/194197374333>
|
||||||
|
[470uF_cap]: <https://www.ebay.com/itm/252622023449>
|
||||||
|
[PIC_mc]: <https://www.ebay.com/itm/251894930138>
|
||||||
|
[rgb_led]: <https://www.ebay.com/itm/321479903205>
|
||||||
|
[smd_btn]: <https://www.aliexpress.com/item/2024658734.html>
|
||||||
|
[tht_sw]: <https://www.aliexpress.com/item/32827322833.html>
|
||||||
|
[cr_pcb]: <https://github.com/sanni/cartreader/blob/bd3eaa106b6e4cbdffbfa89a3fb5fedf3e028b17/pcb/cartreader.zip>
|
||||||
|
|
43
Overview.md
Normal file
43
Overview.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
V5 of the Open Source Cartridge Reader simplifies the build process even more.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/d9379vv6yz1tn5p/hw5wframeiso.jpg?dl=1)
|
||||||
|
|
||||||
|
It offers several build options:
|
||||||
|
|
||||||
|
- 7-slot (main PCB with integrated GB/GBA + six-slot adapter with NES, FC, SNES, N64, MD, SMS)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/mhlx620tmbnglx1/hw5wframe.jpg?dl=1)
|
||||||
|
|
||||||
|
- 2-slot (main PCB with integrated GB/GBA + a single slot adapter of your choice)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/com76f6zc6inbra/2-slot-hw5.jpg?dl=1)
|
||||||
|
|
||||||
|
- 1-slot (main PCB with integrated GB/GBA)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/bvko07vn8ztc0r5/1-slot-hw5.jpg?dl=1)
|
||||||
|
|
||||||
|
All use the same main PCB:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xy4tg4ub5ldgtm9/hw5_pcb.jpg?dl=1)
|
||||||
|
|
||||||
|
On the side there are two switches. One turns the OSCR On and OFF and the other selects between 5V or 3.3V. Both the Arduino Mega and the game cartridge will be run at that voltage to ensure proper voltage levels at all times. At the front there is a status LED that blinks during longer operations to signal that the Cart Reader is still doing something.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/j6zibt411cbq94n/hw5_lcd.jpg?dl=1)
|
||||||
|
|
||||||
|
The ![image](https://dl.dropboxusercontent.com/s/4pcfhk04g1uz9ij/green.jpg?dl=1) LCD screen displays all the menus and cartridge infos, the ![image](https://dl.dropboxusercontent.com/s/euhjc8u392emw42/yellow.jpg?dl=1) rotary encoder can be turned left/right and pressed to make and confirm a selection, the ![image](https://dl.dropboxusercontent.com/s/c581ezvzq6sxslj/orange.jpg?dl=1) reset button restarts the Cart Reader and the ![image](https://dl.dropboxusercontent.com/s/00auowgg4jxgkze/blue.jpg?dl=1) SD slot supports FAT, FAT32 and exFAT SD cards. You need to copy the files found in the SD directory of the current release to the root of the SD card.
|
||||||
|
|
||||||
|
The GB, GBC, GBA slot is found at the back.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0acn5evrjxs6wy4/HW5_gba.jpg?dl=1)
|
||||||
|
|
||||||
|
The Cartridge Reader makes use of the SI5351 Clock Generator to provide a clock signal for SNES SPC7110/SA1/SF Memory/Satellaview cartridges and N64 cartridges with EEPROM saves.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/0yx4z9kqils1pn1/HW5_clockgen.jpg?dl=1)
|
||||||
|
|
||||||
|
Since all cartridge slots are wired in parallel you are only allowed to plug in one cartridge at a time.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/cgh6cry0svg3p4t/badpirate.jpg?dl=1)
|
||||||
|
|
||||||
|
Before dumping a cartridge you should clean the gold contacts with a q-tip dipped in rubbing alcohol until it does not come out black anymore.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ju1q5g03jvt4iq8/cleancontacts.jpeg?dl=1)
|
26
PCB-Build-guide.md
Normal file
26
PCB-Build-guide.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
This guide covers the assembly of the Cart Reader (SNES and N64 version). You should know how to solder SMD before attempting to build this, especially the microUSB port can be tricky.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/awd28cp1adlvqhb/1.jpg?dl=1)
|
||||||
|
First solder the SMD parts. There are three 220 ohm resistors for the three colors of the RGB led, two 10K resistors for the buttons and a single 1K resistor for reading the N64 eeprom.
|
||||||
|
Pay attention to the 22uF capacitor's polarity, the positive side on the PCB is marked with a + and on the capacitor the positive side is marked with a white line. Also remember that you need to flash the snesCIC code to the PIC micro before soldering it to the PCB.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/sah1r4bij2dxi74/2.jpg?dl=1)
|
||||||
|
Next are the male pin headers.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/rhtjrockjdru09p/3.jpg?dl=1)
|
||||||
|
Then the female pinheaders and the switches.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/rrddam9jyq2wcd5/4.jpg?dl=1)
|
||||||
|
Now install the two cart slots and buttons, for the SNES slot you can use the 3d printed snes_spacer to give the slot a better stability.
|
||||||
|
Remember to trim the legs of the slots after you soldered them in place so that the metal doesn't short anything once plugged into the Arduino.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/3r416tjv5brm9xo/5.jpg?dl=1)
|
||||||
|
Use sticky tape to install the SD card spacer then shorten the LED's legs and solder it in place. Check [what kind of OLED screen](https://dl.dropboxusercontent.com/s/1lpkaau5pjib50o/oledtype.jpg?dl=0) you have. There are variants with different pinouts. One starts with VCC followed by GND and the other one starts with GND and then comes VCC. Short the jumpers on the back accordingly, but pay attention since on the backside left and right are flipped.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/o5zkc561h71vd33/6.jpg?dl=1)
|
||||||
|
Solder down the OLED screen using the angled male and straight female pin headers. You have to bend the female pin header into the right position.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/3g7nqnd5kpa3dx2/step7.jpg?dl=1)
|
||||||
|
Finally plug the Arduino Mega and the SD module into the cart reader shield. Use eight M3x8 screws and four 15mm female standoffs to fasten the backplate to the cart reader shield.
|
||||||
|
Then use two M2x10 screws and two M2 nuts to secure the OLED display.
|
||||||
|
Lastly slide the sidewall into the space between the Arduino Mega and the cart reader shield and use the remaining three M2x10 screws to tighten the backplate through the Arduino Mega against the sidewall.
|
58
Parts-needed.md
Normal file
58
Parts-needed.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
![image](https://dl.dropboxusercontent.com/s/eks6s6zzfo6ahqr/hw42.jpg?dl=1)
|
||||||
|
|
||||||
|
# Parts list for building a single slot Cart Reader (HW Version 4)
|
||||||
|
Building the Open Source Cartridge Reader will set you back about $80 in parts. The following links are just examples, maybe check if you can get some parts cheaper locally first.
|
||||||
|
|
||||||
|
# PCBs:
|
||||||
|
- Download the [main_pcb_gerber.zip](https://github.com/sanni/cartreader/blob/6d0a230f77f0e3ec4c836322661061ecdd3850b4/hardware/main_pcb/main_pcb_gerber.zip) (HW4) the cartridge adapter PCBs you want from [here](https://github.com/sanni/cartreader/tree/master/hardware) and upload them to a PCB maker
|
||||||
|
- You don't have to change any of the settings but you can select a color you like.
|
||||||
|
- You need at least the main_pcb_gerber.zip (HW4) and one XXX_adapter_gerber.zip for the cartridge slot you want.
|
||||||
|
|
||||||
|
# Modules:
|
||||||
|
- 18650 battery shield V3 https://www.aliexpress.com/item/1005001829483872.html
|
||||||
|
- Mega 2560 Pro (embed) https://www.aliexpress.com/item/1005001621855512.html
|
||||||
|
- MKS MINI12864 V3 LCD https://www.aliexpress.com/item/1005002998072234.html
|
||||||
|
- SI5351 clock generator https://www.aliexpress.com/item/4000040035169.html
|
||||||
|
(The clock generator is only needed for N64/SNES/NP/SV.)
|
||||||
|
|
||||||
|
# Female pin headers:
|
||||||
|
- four 1x2 https://www.aliexpress.com/item/1005001418544370.html (includes ten)
|
||||||
|
- three 1x3 https://www.aliexpress.com/item/1005001418544370.html (includes ten)
|
||||||
|
- one 1x7*
|
||||||
|
- two 1x16*
|
||||||
|
- two 1x21*
|
||||||
|
- one 1x36*
|
||||||
|
- one 1x38*
|
||||||
|
*for these we just buy five 1x40 headers and cut them down to size using a dremel cutting disc(safety glasses!) https://www.aliexpress.com/item/1005001418544370.html (includes ten)
|
||||||
|
|
||||||
|
# Male pin headers:
|
||||||
|
- ten 1x40 https://www.aliexpress.com/item/32847321530.html, one for the main PCB, two for each cartridge adapter
|
||||||
|
- one 1x40 90° https://www.aliexpress.com/item/32847365702.html (includes ten), for GBx adapter only
|
||||||
|
|
||||||
|
# At least one Cartridge slot:
|
||||||
|
- 50 pin 2.5mm N64 slot https://www.aliexpress.com/item/32871023348.html
|
||||||
|
- 62 pin 2.5mm SNES slot https://www.aliexpress.com/item/32914744213.html
|
||||||
|
- GB/GBC/GBA slot https://www.aliexpress.com/item/4000290191316.html
|
||||||
|
- 72 pin 2.5mm NES slot https://www.aliexpress.com/item/32827561164.html
|
||||||
|
- 64 pin 2.54mm Mega Drive slot https://www.aliexpress.com/item/1005001884522039.html (2x32)
|
||||||
|
- 60 pin 2.54mm Famicom slot https://www.aliexpress.com/item/1005001884522039.html (2x30)
|
||||||
|
- 50 pin 2.54mm Master System slot https://www.aliexpress.com/item/1005001884522039.html (2x25)
|
||||||
|
|
||||||
|
# Misc:
|
||||||
|
- N64 controller extension https://www.aliexpress.com/item/32828382501.html
|
||||||
|
- two dupont cables male to female https://www.aliexpress.com/item/1005003007413890.html (includes forty)
|
||||||
|
- a slide switch https://www.aliexpress.com/item/32827322833.html
|
||||||
|
- 18650 battery (be sure to buy a high quality one with integrated protection circuit)
|
||||||
|
- SD card (either FAT32 or exFAT formatted)
|
||||||
|
|
||||||
|
# snesCIC (optional):
|
||||||
|
For faster SA1 unlocking, SA1 will work without too but then you might need more tries before it unlocks.
|
||||||
|
- PIC12F629 micro controller (SOIC8 SMD)
|
||||||
|
- 100nF capacitor (0805 SMD)
|
||||||
|
- suitable PIC programmer
|
||||||
|
|
||||||
|
# simple 3D printed frame (optional):
|
||||||
|
- [lcd adapter PCB](https://github.com/sanni/cartreader/blob/5d3999f3dbbabce8d99e838bbd3fa83fad735406/hardware/lcd_adapter_pcb/lcd_adapter_gerber.zip)
|
||||||
|
- four 2x5 female pin headers
|
||||||
|
- 3d printed [frame](https://github.com/sanni/cartreader/blob/5d3999f3dbbabce8d99e838bbd3fa83fad735406/hardware/frame.stl) (you can have it printed by [JLCPCB for $2](https://dl.dropboxusercontent.com/s/d8of85ta4g1ra1e/jlcpcb_3dprint.jpg?dl=1))
|
||||||
|
- twelve (self cutting) M2x6 screws
|
28
Preparing-the-SD-card.md
Normal file
28
Preparing-the-SD-card.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
The Open Source Cartridge Reader supports SD cards of all sizes formatted as FAT, FAT32 or exFAT.
|
||||||
|
When it comes to the different speed grades there is no significant benefit of choosing a faster SD card.
|
||||||
|
There are some cards that simply don't work with no indication as to why, in this case just try another SD card.
|
||||||
|
|
||||||
|
## For best result you should format the SD card before using it with the OSCR (this will delete all data from it):
|
||||||
|
|
||||||
|
- Download SD Card Formatter: https://www.sdcard.org/downloads/formatter/
|
||||||
|
|
||||||
|
- Format SD card using the defaults set by SD Card Formatter
|
||||||
|
|
||||||
|
## Copy the database files to the root of the SD card.
|
||||||
|
- You should always use the databases that came in the same [V#.#_Portable.zip](https://github.com/sanni/cartreader/releases) you have flashed to your Open Source Cartridge Reader. Your current version can be seen in the About menu selection.
|
||||||
|
- In case you need to update the OSCR to the latest version, see [How to flash the Arduino](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino).
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/v8il10n64mo6r2w/sdcopy.jpg?dl=1)
|
||||||
|
|
||||||
|
- Hide the databases so they don't clutter up the Cart Reader's file browser
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/cgcicb2uc2v6mtr/sdhide.jpg?dl=1)
|
||||||
|
|
||||||
|
- You might have to enable Show hidden files in Windows to see the hidden files
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/qjjeh13czurafod/showhidden.jpg?dl=1)
|
||||||
|
|
||||||
|
## Safely eject the SD card once you are done
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/1qg72cyq6r98u3m/ejectsd.jpg?dl=1)
|
||||||
|
|
35
Read-N64-cartridge.md
Normal file
35
Read-N64-cartridge.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
### Video of dumping a N64 cartridge
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/qETtbIiGgi4/0.jpg)](https://www.youtube.com/watch?v=qETtbIiGgi4)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
Apply the following switch settings:
|
||||||
|
|
||||||
|
![image][switches_eep]
|
||||||
|
(HW4/5 only have the 3V switch)
|
||||||
|
|
||||||
|
|
||||||
|
### Important: For reading EEPROM saves you will need to have the Adafruit Clock Generator installed.
|
||||||
|
(Reading/writing Eeprom might not work with repros)
|
||||||
|
|
||||||
|
Furthermore the n64.txt database file needs to be in the root of the SD card.
|
||||||
|
Insert the N64 cartridge into the N64 slot and power on the cart reader.
|
||||||
|
|
||||||
|
### fastcrc option:
|
||||||
|
Since N64 ROMS are quite big there is an option to dump the ROM and calculate the CRC32 at the same time called "fastcrc". Without it would dump the ROM first and then calculate the CRC32.
|
||||||
|
Doing both simultaneously is faster but it does not work with all Cart Reader/Mega Pro 2560/SD card combinations.
|
||||||
|
If you have issues dumping N64 ROMs you can disable fastcrc by adding // in front of "#define fastcrc" found under HW CONFIGS in Cart_Reader.ino.
|
||||||
|
|
||||||
|
### Emulator saves:
|
||||||
|
If you want to write a savegame from an emulator to the cartridge or if you want to play a savegame from a cartridge in an emulator you might need to [**byte/word swap**][byte_swap] it first.
|
||||||
|
- To byte/word swap on Windows, you can download either **Cephiros'** [Save Ram Conversion Utility](https://github.com/sanni/cartreader/discussions/593) or **saturnu's** [ED64-Saveswap][ed64ss_db]. For more details on this tool, you can reference [this post][ed64ss_edf] on the EverDrive Forum.
|
||||||
|
- Alternatively, to byte/word swap on any other machine capable of running Python code, check out **ssokolow's** [N64-Saveswap][ssokolow].
|
||||||
|
|
||||||
|
[n64_txt]: <https://raw.githubusercontent.com/sanni/cartreader/master/sd/n64.txt>
|
||||||
|
[switches_eep]: <https://dl.dropboxusercontent.com/s/4x16gvsg1kd6rbm/n64_jumper3v3_eep.jpg?dl=1>
|
||||||
|
[byte_swap]: <https://retrocomputing.stackexchange.com/questions/16131/what-does-byteswapped-and-bigendian-refer-to-in-the-context-of-video-game-ro>
|
||||||
|
[ed64ss_db]: <https://www.dropbox.com/s/1kfzp0cowb0exmc/ED64-Saveswap.zip?dl=1>
|
||||||
|
[ed64ss_edf]: <http://krikzz.com/forum/index.php?topic=1396.0>
|
||||||
|
[ssokolow]: <https://github.com/ssokolow/saveswap>
|
||||||
|
|
||||||
|
|
12
Reading-Master-System-games.md
Normal file
12
Reading-Master-System-games.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
### Video of dumping a SMS cartridge
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/lKF0DX2iYnQ/0.jpg)](https://www.youtube.com/watch?v=lKF0DX2iYnQ)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
To read a Master System cartridge you must set the config switches like this:
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
Next plug the Master System cartridge into the SMS to MD adapter and the adapter into the MD slot of the cartridge reader. Currently only standard cartridges without any special mapper chips nor SRAM are supported.
|
||||||
|
|
||||||
|
The SMS to MD adapter is based on the [design by Raphnet](https://www.raphnet.net/electronique/sms_to_smd/index_en.php). For use with the Cart Reader ignore the SMD footprints on the PCB, the adapter does not need any components. I only bridged R5 to connect the reset line, although I'm not sure if this is even needed.
|
17
Reading-Mega-Drive-Genesis-games.md
Normal file
17
Reading-Mega-Drive-Genesis-games.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
### Video of dumping a SEGA Mega Drive/Genesis cartridge
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/xNraCnoxMKs/0.jpg)](https://www.youtube.com/watch?v=xNraCnoxMKs)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
To read a Mega Drive cartridge you must set the config switches like this(HW4/5 only has the voltage switch):
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
Next plug the Mega Drive cartridge into the MD slot of the cartridge reader. Currently only standard cartridges without any special mapper chips are supported.
|
||||||
|
|
||||||
|
### Mega Drives saves and Emus:
|
||||||
|
Some emulators use 16bit-wide save games although the SRAM in the cartridge is only 8bit-wide.
|
||||||
|
You can convert save games between the Cart Reader and the Emulator with these two programs, just drag&drop the save onto the *.exe.
|
||||||
|
|
||||||
|
Emu to Cart Reader: http://krikzz.com/pub/support/everdrive-md/v2/16to8.exe
|
||||||
|
Cart Reader to Emu: http://krikzz.com/pub/support/everdrive-md/v2/8to16.exe
|
44
Reading-SNES-carts.md
Normal file
44
Reading-SNES-carts.md
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
### Video of dumping a SNES cartridge
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/SApt7RNwuzY/0.jpg)](https://www.youtube.com/watch?v=SApt7RNwuzY)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
For HW3 setup the switches like so:
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/rj9rf0dcyzeespw/snes_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
HW4/5 just needs to be switched to 5V.
|
||||||
|
Then select Super Nintendo in the main menu and again Super Nintendo in the sub-menu. The game should now be automatically recognized and details about it should be shown on the screen.
|
||||||
|
If you're dumping a proto without valid header information you will get an error screen and then can set the mapping manually.
|
||||||
|
|
||||||
|
### Notes on games with SA-1 and similar special chips:
|
||||||
|
To unlock cartridges with SA-1 you need both the Adafruit Clock Generator and the snesCIC installed.
|
||||||
|
It's very important to provide the Nintendo Cart Reader with a high quality power source for dumping SA-1 games, not all USB ports will work. Best use a 5V/2A phone charger. An original iPhone or Amazon Fire Tab charger works great while a cheap Chinese phone charger might not unlock SA-1.
|
||||||
|
You also will have to install a 470uF capacitor between VCC and GND to improve the Cart Readers supply power. Sometimes disabling the CLK1 switch will improve unlocking.
|
||||||
|
|
||||||
|
Optionally you can calibrate the Clock Generator by removing "//" in front of "#define clockgen_calibration" and "#define clockgen_installed" in Cart_Reader.ino and then selecting "Calibrate Clock" in the SNES submenu.
|
||||||
|
|
||||||
|
Once the calibration function was loaded press one end of a jumper wire against SNES slot pin 43(A18/BA2) and the other end of the wire against one of the following pins and it should read those values:
|
||||||
|
- 3072000.00 Hz when connected to SNES slot pin 56(CIC Clock)
|
||||||
|
- 4000000.00 Hz when connected to SNES slot pin 1(EXT Clock)
|
||||||
|
- 1000000.00 Hz when connected to SNES slot pin 57(CPU Clock)
|
||||||
|
|
||||||
|
![](https://i.imgur.com/srywncH.jpg)
|
||||||
|
|
||||||
|
![](https://i.imgur.com/Dpu4ivo.jpg)
|
||||||
|
|
||||||
|
Once you have adjusted the clock to match the values more closely hold the button for a very long time and let it go to save the setting.
|
||||||
|
|
||||||
|
Most times it needs a second try to unlock the SA1 cartridge. Simply power cycle the SA1 chip by switching the cart reader off and on again.
|
||||||
|
|
||||||
|
Since the SA1 chip locks part of the ROM away it is important to check the CRC32 of the SA1 ROMs after dumping. The Cart Reader only calculates the internal checksum which only verifies a small portion of the ROM.
|
||||||
|
To calculate the CRC over the whole ROM you can use something like [Hashtab](http://implbits.com/products/hashtab/)
|
||||||
|
And compare the CRC to the one on the no-intro site.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/lztxhik81ifhsoz/hashtabcalc.jpg?dl=1)
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/4fyhv6yrnz6k1xq/datomatic.jpg?dl=1)
|
||||||
|
|
||||||
|
|
||||||
|
|
9
Reading-a-Controller-Pak.md
Normal file
9
Reading-a-Controller-Pak.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
First you need to setup the Cart Reader Shield's configuration switches like so:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/6bufby2jxm57ujm/n64_jumper3v3.jpg?dl=1)
|
||||||
|
|
||||||
|
Doublecheck that the voltage switch is set correctly to 3.3V and that the EEP switch is set to enabled(=towards the back). This connects a 1K pull-up resistor between VCC and the controllers data pin(PH4).
|
||||||
|
|
||||||
|
Next plug a N64 controller into the controller plug and insert a Controller Pak into the Controller. Then turn the Cart Reader on.
|
||||||
|
Navigate to Nintendo 64 and then to Controller.
|
||||||
|
You can use http://rawgit.com/bryc/mempak/master/index.html to manage saved Controller Pak data on your PC.
|
16
Reading-a-GBA-save-game.md
Normal file
16
Reading-a-GBA-save-game.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
### Video of dumping a GBA cartridge
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/RJ9Fa1wKjTs/0.jpg)](https://www.youtube.com/watch?v=RJ9Fa1wKjTs)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
To read or write a savegame from/to a GBA cartridge you must first make sure you have the GBA.txt copied to your SD card. You can download it here: https://raw.githubusercontent.com/sanni/cartreader/master/sd/gba.txt
|
||||||
|
|
||||||
|
Then setup the config switches like so:
|
||||||
|
![](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
Next plug the GBA cartridge into the GB/GBA slot of the cartridge reader.
|
||||||
|
Then you can choose Read save to dump the save to the sd card.
|
||||||
|
If the cartridge is not recognized try cleaning the contacts with rubbing alcohol.
|
||||||
|
|
||||||
|
There might be still errors in the GBA database so be sure to check an online database like http://www.advanscene.com/ if you encounter any errors.
|
10
Reading-a-Game-Boy-rom.md
Normal file
10
Reading-a-Game-Boy-rom.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
### Video of dumping a GB cartridge
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/-07fmpFh4xc/0.jpg)](https://www.youtube.com/watch?v=-07fmpFh4xc)
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
To read a GB cartridge you must set the config switches like this:
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
Next plug the GB cartridge into the GB/GBA slot of the cartridge reader.
|
15
Recommended-Tools.md
Normal file
15
Recommended-Tools.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
For building the Open Source Cartridge Reader you need the following tools:
|
||||||
|
- soldering station and solder
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ttzepiii2dav5mb/IMG_0645.jpg?dl=1)
|
||||||
|
|
||||||
|
- box cutter
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/xz456b041ywd9re/IMG_0648.jpg?dl=1)
|
||||||
|
|
||||||
|
- flush cutters
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/qw8ua04migws2xy/IMG_0646.jpg?dl=1)
|
||||||
|
|
||||||
|
- needle nose pliers
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/axkn1uavfgxrb41/IMG_0647.jpg?dl=1)
|
||||||
|
|
||||||
|
- safety glasses
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/36h9mgiv8s3h5xt/IMG_0649.jpg?dl=1)
|
10
Reflashing-BSX-8M-carts.md
Normal file
10
Reflashing-BSX-8M-carts.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
To write BS-X 8M cartridges you need the Adafruit Clock Generator installed.
|
||||||
|
Set the config switches as shown in this picture:
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/rj9rf0dcyzeespw/snes_jumper.jpg?dl=1)
|
||||||
|
It's very important to provide the Nintendo Cart Reader with a good and stable power source, your PC's USB ports will not work. Best use a high-quality 5V phone charger with 1A or 2A but beware of cheap Chinese chargers.
|
||||||
|
You should also install the optional 470uF capacitor(see build guide) to improve the Cart Reader's supply power.
|
||||||
|
|
||||||
|
![](https://images-na.ssl-images-amazon.com/images/I/51FY6qmN3QL._SY355_.jpg)
|
||||||
|
|
||||||
|
If the Cart Reader hangs on erasing then your power supply is not good enough.
|
30
Reflashing-GBA-repros.md
Normal file
30
Reflashing-GBA-repros.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
### Video of flashing a GBA repro
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/w0QX12kgZ9Y/0.jpg)](https://www.youtube.com/watch?v=w0QX12kgZ9Y)
|
||||||
|
|
||||||
|
As of this point in time the cart reader supports 3 types of GBA repro pcbs:
|
||||||
|
|
||||||
|
Intel 4000L0YBQ0 (32MB)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/je0gkwhrph28zpz/gba_intel4000.jpg?dl=1)
|
||||||
|
|
||||||
|
Macronix MX29GL128E (16MB)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/5gc0dcd471mso9x/gba_mx29gl.jpg?dl=1)
|
||||||
|
|
||||||
|
Fujitsu MSP55LV128 (16MB)
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/vry9z2xyealhz6t/gba_msp.jpg?dl=1)
|
||||||
|
|
||||||
|
Please set the jumpers up like this and use a good USB port or mobile phone charger with 1A:
|
||||||
|
![](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
I recommend buying a repro that already has a battery installed as they all come with a standard cmos sram save chip that needs a standby voltage to keep the save data.
|
||||||
|
|
||||||
|
Upon further inspection of the repros that come without a battery it becomes apparent that the save is located inside the rom area. When booting the game there is a routine hacked into the rom that copies the save from the flashrom into the sram. When you save in-game the save gets copied back into the flashrom.
|
||||||
|
|
||||||
|
You can extract this hacked-in save game by dumping the rom and then opening it with the Visual Boy Advance emulator. Once started the game will copy the save into sram and VBA will then create a sav file.
|
||||||
|
Now you can use this sav file together with the unhacked retail version of the rom which will recognize the save and attempts to repair it, which should succeed.
|
||||||
|
|
||||||
|
This also means that roms that are not hacked in the same way will lose their save game if you don't add a battery yourself.
|
||||||
|
|
||||||
|
Remember that you will have to patch all roms with eeprom/flashrom save type to sram save using a program like GBA TOOL ADVANCE.
|
||||||
|
|
||||||
|
One last interesting detail is that on the MX29GL128E and MSP55LV128 pcb the D0 and D1 pins of the flashrom have been switched around so that the flashrom needs slightly modified flash commands.
|
13
Reflashing-NP-GB-Memory-carts.md
Normal file
13
Reflashing-NP-GB-Memory-carts.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
![N|Solid](https://i.imgur.com/3PbCNq5.jpg)
|
||||||
|
|
||||||
|
Set the config switches like this:
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
Next plug the GB Memory cartridge into the GB/GBA slot of the cartridge reader. Now you need to read the original content from the GB Memory cart to the sd card, both the flash that contains the menu and the mapping file. You'll find the Nintendo Power GB Memory menu under the Game Boy submenu.
|
||||||
|
|
||||||
|
You can use the [GB Memory Binary Maker](https://github.com/Infinest/GB-Memory-Binary-Maker) or the [Game Boy Nintendo Power ROM Builder](https://orangeglo.github.io/gbnp/) to combine multiple roms and the menu you dumped earlier into a bin and map file that can be flashed back to the GM Memory cart.
|
||||||
|
|
||||||
|
![N|Solid](https://i.imgur.com/f7v7qtc.png)
|
||||||
|
|
||||||
|
To reflash the GB Memory cart you need to first erase the flash, then blank check it to be sure it really was erased and then write the rom to the flash. You also need to write the new mapping file.
|
17
Reflashing-NP-carts.md
Normal file
17
Reflashing-NP-carts.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
To read/write Nintendo Power SF Memory cartridges you need the Adafruit Clock Generator installed and have the configuration switches set like so:
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/rj9rf0dcyzeespw/snes_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
### Dumping single games
|
||||||
|
After selecting the "NPower SF Memory" option found in the "Super Nintendo" sub-menu open the "Game Menu" and select the game you want to save to the SD card. Sometimes you might have to power-cycle the cart reader before it works. Also on occasion the NP cartridge gets so confused that you need to boot it up on a real SNES first before it will work in the cart reader again.
|
||||||
|
You can also read/write the save game in this menu.
|
||||||
|
|
||||||
|
### Reflashing the whole cartridge
|
||||||
|
To flash something new you need to go to the "Flash Menu" under "NPower SF Memory". Here you should make a backup of your existing mapping.map and flash.bin files and then write new bin/map files to the cart.
|
||||||
|
You can get the bin/map files either from another NP cart or you can create those files with the SF Memory Binary Maker: https://github.com/moldov/SF-Memory-Binary-Maker
|
||||||
|
|
||||||
|
SF Memory Binary Maker needs the first 512KB of your original 4MB NP flash dump in a file named menu.sfc that needs to be copied next its .exe. In SF Memory Binary Maker you got two options: either create a standalone map file from a single rom up to 4MB or you can add multiple roms and create a combined .bin and .map file. The sum of all the roms together can't exceed 3.5MB however since you still need 512KB for the menu. Roms need to be unheadered and have a valid checksum.
|
||||||
|
|
||||||
|
If you don't want to use the Binary Maker you can also just flash the hi/lorom map from [here](https://github.com/sanni/cartreader/tree/4eaac930edfe1a576e8b816de31487029246df16/sd) and then just directly flash one single rom (up to 4MB).
|
||||||
|
|
||||||
|
In any case you should end up with a 512B map and 4MB bin file, rename both so their filenames are very short and without any special characters and copy them to the SD card. Then write the new flash and mapping files.
|
56
Reflashing-SNES-Repros.md
Normal file
56
Reflashing-SNES-Repros.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
### Video of flashing a SNES repro
|
||||||
|
|
||||||
|
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/obNzqkJsqt8/0.jpg)](https://www.youtube.com/watch?v=obNzqkJsqt8)
|
||||||
|
|
||||||
|
### Chinese repros
|
||||||
|
|
||||||
|
You can reflash some Chinese HiRom/LoRom/ExHiRom/ExLoRom repros that are build like this, you just have to connect the WE pin from the flashrom to the cart edge with a wire. Make sure, using a multimeter, that WE is not connected to VCC through a solder jumper or a small trace on the repro PCB:
|
||||||
|
|
||||||
|
![](https://i.imgur.com/YSI1xRq.jpg)
|
||||||
|
|
||||||
|
![](https://user-images.githubusercontent.com/38383423/117810950-4b9b3700-b260-11eb-86c4-dabf98eced7d.png)
|
||||||
|
|
||||||
|
Setup the Cartridge Reader Shield's jumpers like so.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
And then in the main menu first select "Super Nintendo", then "Flash repro" and then choose the option that corresponds to your repro PCB.
|
||||||
|
|
||||||
|
- LoRom (P0) will write up to 8MB starting from file 0x0 to flashrom 0x0.
|
||||||
|
- HiRom (P0) will write up to 4MB starting from file 0x0 to flashrom 0x0.
|
||||||
|
- ExLoRom (P1) will write the first 4MB starting from file 0x0 to flashrom 0x400000. And then a second block up to 4MB from file 0x400000 to flashrom 0x0.
|
||||||
|
- ExHiRom (P1) will write the first 4MB starting from file 0x0 to flashrom 0x400000. And then a second block up to 4MB from file 0x400000 to flashrom 0x0.
|
||||||
|
|
||||||
|
To program the flashrom you need to erase it, then do the blank-check and finally select write to flash it with your rom.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
||||||
|
The flashing can change the snesCIC in the repro to the opposite region, so if your game doesn't boot be sure to toggle the SNES off/on to try it a second time.
|
||||||
|
|
||||||
|
### Translations
|
||||||
|
|
||||||
|
If you have a translation made out of a SHVC-1J3M or SHVC-1A3M PCB and a 29F016, 29F032 or 29F033 flashrom you can easily reflash it without desoldering the flashrom. For example when there has been an update to the translation patch.
|
||||||
|
|
||||||
|
For this you need to disconnect the flashrom's WE pin from VCC by removing the solder jumper and then connect the flashrom WE pin to sram's WR pin. Now double check that the WE solder bridge is not closed and flash the chip like explained above.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/xlesytl2sy6qbbk/29F032flashing.jpg?dl=1)
|
||||||
|
|
||||||
|
### ExHiRom with two flash roms
|
||||||
|
|
||||||
|
You can make a 6MB ExHiRom game like Tales of Phantasia out of a SHVC-1J3M by adding a second 29F033 to the backside.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/75b71a6q04oq5rl/tales_7.jpg?dl=1)
|
||||||
|
|
||||||
|
The WE and OE jumpers need to be open and the RST and A21 jumpers need to be closed on both adapter PCBs.
|
||||||
|
You also need to attach two wires to the WE and OE pads of both adapters.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/ca7zxxt33g4svke/tales_4.JPEG?dl=1)
|
||||||
|
|
||||||
|
Furthermore MAD1 pin 13 needs to be either de-soldered or cut and then the pin needs to be connected to A22 on the flash adapter.
|
||||||
|
And the OE pads need to be connected to MAD1 pin 1 and MAD1 pin 16.
|
||||||
|
MAD1 pin 13 = HIGH -> MAD pin 1 = LOW -> front flashrom(P1) selected
|
||||||
|
MAD1 pin 13 = LOW -> MAD pin 1 = HIGH -> back flashrom(P0) selected
|
||||||
|
|
||||||
|
You also have to add a 74LS139 to manage the two WE pins of the flashroms.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/xiyrlelwlo0w62k/tales_3.jpg?dl=1) ![](https://dl.dropboxusercontent.com/s/x62fuzxu40a3gly/tales_2.jpg?dl=1)
|
||||||
|
|
||||||
|
In the repro menu "HiRom (P0)" addresses the flashrom connected to MAD1 pin 16 and "ExHiRom (P1)" addresses the one connected to MAD1 pin 1. So you have to split the rom into two parts, 4MB and 2MB and then write them each separately.
|
17
Reflashing-a-Gameshark.md
Normal file
17
Reflashing-a-Gameshark.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
The Gameshark uses two SST29LE010 type flash ROMs that hold the Gameshark menu and all the cheat codes. Furthermore upon power on the Gameshark copies the boot code from the cartridge that is plugged on top of the Gameshark to those flash roms.
|
||||||
|
If the cheat code list has an error or if the boot code was copied wrongly the Gameshark can brick. Also if the Gameshark was set to a CIC type you don't have a game of you will also not be able to boot it anymore.
|
||||||
|
All these issues can be resolved by reflashing the two flashroms with the Open Source Cart Reader. As a bonus you can also update the Gameshark menu, e.g. turn a V2 Gameshark into a V3 Gameshark.
|
||||||
|
|
||||||
|
To reflash the Gameshark you can use the "GameShark Pro (USA) (v3.3) (Unl).bin" file from the no-intro set, but you will have to give it a shorter name like "gameshark.z64".
|
||||||
|
To start plug the Gameshark into the Cart Reader without any game on top and select the Gameshark menu option under N64.
|
||||||
|
The Cart Reader will check that it can address the flash roms correctly, then backup the current flash content to the SD card and flash the new file.
|
||||||
|
|
||||||
|
Once the Cart Reader display says "Verifying...ok", power off the Cart Reader and remove the Gameshark from the Cart Reader, put Super Mario 64 or any other 6102 game(flashing removes any previous boot code) on top, make sure it's perfectly centered as the Gameshark uses a wrong pitch cartridge slot and then plug the Gameshark/Mario tower into the N64 console. At first boot it might take a little longer since it has to copy the boot code to the flashrom.
|
||||||
|
|
||||||
|
Sometimes the Gameshark looks itself up, then all you need to do is plug a 6102 game into the top slot of the Gameshark, plug both in the Cart Reader and dump the ROM as if it was a game.
|
||||||
|
|
||||||
|
There are different PCB versions of the Gameshark that connect the little number display to different pins of the main GAL chip, therefore the countdown might stop working if you flash a ROM from a different PCB version. However, the rest seems to work just fine.
|
||||||
|
|
||||||
|
The Gameshark always copies the boot code from the currently inserted cartridge however it does not use the checksum of the inserted cartridge but has its own. In the Gameshark's menu, you have the option to change the key code, this writes a different checksum to 0x10 of the 29LE010 allowing you to boot the Gameshark with games with a CIC other than 6102.
|
||||||
|
|
||||||
|
You can also flash a 256KB homebrew ROM to the Gameshark. The homebrew has full access to the save chips of the plugged-in cartridge.
|
99
Reflashing-a-N64-Repro.md
Normal file
99
Reflashing-a-N64-Repro.md
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
First you need to setup the Cart Reader Shield's configuration switches like so:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
Double-check that the voltage switch is set correctly to 3.3V for the N64. You should use a 5V/1A phone charger and not your PCs USB port.
|
||||||
|
For the repro to be re-flashable with the Cartridge Reader you need one of the repros with the Altera Max II CPLD and a Spansion S29GL256N or similar flashrom.
|
||||||
|
|
||||||
|
Be aware that the games come in different hardware configurations like:
|
||||||
|
- Resident Evil 2: 64MB flash, two sram chips and the standard 6102 ultraCIC.
|
||||||
|
- Conker's BFD: 64MB flash, one sram chips configured as eeprom and a 6105 ultraCIC.
|
||||||
|
- Zelda Master Quest: 32MB flash, two sram chips and a 6105 ultraCIC.
|
||||||
|
- and many others
|
||||||
|
|
||||||
|
If possible buy the biggest game available like Resident Evil(sram save) or Conker(16KB eeprom save) so you don't get stuck with a small flashrom.
|
||||||
|
|
||||||
|
Now your Rom needs to be in Z64 file format. You can use Tool64.exe to make sure that this is the case. Also make sure that it has a short and simple filename.
|
||||||
|
**The repro cart needs to have the same CIC and save type as the rom you are about to flash. It does not circumvent region locking unless you patched the rom.**
|
||||||
|
Furthermore the ultraCIC inside the repro needs to correspond to the region of your console.
|
||||||
|
|
||||||
|
If you buy a repro with a game that saves to Sram like Zelda Master Quest you can save all games that use Sram. 4K and 16K Eeprom or Flashrom won't save on an Sram pcb.
|
||||||
|
|
||||||
|
So you could just buy multiple repros with different CIC chips and save types so you can mix and match depending on the rom you want to flash.
|
||||||
|
[Here](http://n64.icequake.net/mirror/www.elitendo.com/n64/usa_boot_save_faq.html) is a list of all the games and their save and cic type.
|
||||||
|
|
||||||
|
### Changing the repro to PAL:
|
||||||
|
On the repro pcb there is a solder jumper marked with J1. If you bridge the middle(PIN3) and the lower(GND) pad together then the ultraCIC will be switched to PAL. But make absolutely sure that PIN3 is **not** connected to VCC(red in the picture) by default, if that's the case you need to sever its connection to VCC before you connect it to GND. Check with a multimeter after everything is done and make sure that VCC and GND are not shorted.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ho90hbwey7qx3n1/palswitch.jpg?dl=1)
|
||||||
|
|
||||||
|
### Patching the rom:
|
||||||
|
In case you don't have the needed cic/save combination for your current rom there are also patches/cracks available for certain games that change their CIC to 6102 and sometimes even change the save type. In the goodN64 set those fixed roms are marked with [f1].
|
||||||
|
|
||||||
|
You can also use a program like [MotetIII or paladin](http://infrid.com/rcp64/download.php) to replace the cic data between 0x40 and 0xFFF inside the rom so that it corresponds with the CIC installed in your repro, fix the rom entry point and calculate a new checksum.
|
||||||
|
But this only seems to work with a few titles. You can use the cen64 emulator to check if a patched rom will boot or not prior to flashing.
|
||||||
|
|
||||||
|
### Reflashing the ultraCIC:
|
||||||
|
You can also re-flash the Attiny25 to a different CIC type using an Arduino Uno running [this sketch by Adafruit](https://github.com/adafruit/ArduinoISP).
|
||||||
|
Don't forget to connect Pin 9 of the Arduino Uno to Pin 2 of the ultraCIC to provide a clock signal.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/umuau0ctbi1orde/arduinoispreflash.jpg?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/dp4804tihn7qeky/cicrepro.jpg?dl=1)
|
||||||
|
|
||||||
|
You don't need to solder the ISP wires to the repro, just sticking them in and applying pressure is enough for a successful flash. Make sure that pin 5 MOSI is not connected to GND on your N64 repro like it was on the very first version as this will prevent the Attiny from being reflashed.
|
||||||
|
|
||||||
|
First read out the Attiny25's current code in binary form. Since you most likely already have the Arduino IDE installed we will use the included avrdude for that.
|
||||||
|
Just create a *.bat file with this content, you have to change COM6 to whatever COM port your Arduino got assigned:
|
||||||
|
`"C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe" -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -c arduino -P COM6 -b 19200 -p t25 -U flash:r:ultracic_read.bin:r`
|
||||||
|
`pause`
|
||||||
|
|
||||||
|
Next compare it to the [file read out from the repro I bought](https://www.dropbox.com/s/m11vm5nx8qpf2ii/ultracic.bin?dl=1) to make sure your Attiny programmer is working.
|
||||||
|
|
||||||
|
To change the CIC type just edit the value at Offset 0x38 with an hexeditor:
|
||||||
|
0x60 = 6102
|
||||||
|
0x61 = 6103
|
||||||
|
0x62 = 6106
|
||||||
|
0x63 = 6101
|
||||||
|
0x64 = 6105
|
||||||
|
0x68 = 7101
|
||||||
|
0x69 = 7103
|
||||||
|
0x6A = 7106
|
||||||
|
0x6B = 7102
|
||||||
|
0x6C = 7105
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/nfw9vz1wgb6cb34/cictype.jpg?dl=1)
|
||||||
|
|
||||||
|
As an alternative you can also compile the switchable ultraCIC II [from its source code](https://krikzz.com/forum/index.php?topic=3450.0)
|
||||||
|
|
||||||
|
Next create a second *.bat file with this content to perform the flashing, once again you have to adjust COM6 to whatever COM port your Arduino got assigned and also change the filename according to your hex file:
|
||||||
|
`"C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe" -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -c arduino -P COM6 -b 19200 -p t25 -U flash:w:ultracic.bin`
|
||||||
|
`pause`
|
||||||
|
|
||||||
|
### Adding an eeprom chip:
|
||||||
|
You can also salvage an eeprom chip out of a real N64 game and solder it into your sram repro like that:
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/a9m1io3xu7mix54/eeptorepro.jpg?dl=1)
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/ebr9oz6adftks4p/eeptorepro2.jpg?dl=1)
|
||||||
|
|
||||||
|
**Bytes at the end of the repro rom:**
|
||||||
|
The repros have some bytes added to the end of the rom:
|
||||||
|
55 AA 55 AA 55 AA 55 AA 01 08 FF FF FF FF 58 FF // Super Smash Bros(SRAM save 16MB rom)
|
||||||
|
55 AA 55 AA 55 AA 55 AA 01 20 00 00 00 00 2F 00 // Resident Evil 2 (SRAM save 64MB rom)
|
||||||
|
55 AA 55 AA 55 AA 55 AA EE 08 00 00 00 00 D4 00 // Bomberman 2nd Attack (EEPROM save 16MB rom)
|
||||||
|
55 AA 55 AA 55 AA 55 AA EE 10 FF FF FF FF A4 FF // Mario Party 3 (EEPROM save 32MB rom)
|
||||||
|
55 AA 55 AA 55 AA 55 AA EE 20 FF FF FF FF BA FF // Conker BFD (EEPROM save 64MB rom)
|
||||||
|
|
||||||
|
Best guess:
|
||||||
|
01 = SRAM save
|
||||||
|
EE = EEPROM save
|
||||||
|
08 = 16MB rom
|
||||||
|
10 = 32MB rom
|
||||||
|
20 = 64MB rom
|
||||||
|
|
||||||
|
The second last byte is the checksum of the rom (just a simple addition of all bytes in the whole rom besides the checksum byte where you just add 0xFF)
|
||||||
|
|
||||||
|
Speculated:
|
||||||
|
04 = 8MB rom
|
||||||
|
02 = 4MB rom
|
||||||
|
01 = 2MB rom
|
12
S29GL032.md
Normal file
12
S29GL032.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
First you need to setup the Cartridge Reader Shield's config switches like so.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
Then insert the S29GL032 flashrom into the TSOP48 ZIF socket, plug the ZIF socket into **middle position** of the 8bit flashrom adapter and finally plug the flashrom adapter into the cart reader.
|
||||||
|
The two SMD switches do not matter in this case as they're only for the SOP44 slot.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/e6s6e20vbv1xixf/s29gl032_tsop48.jpg.jpg?dl=1)
|
||||||
|
|
||||||
|
In the main menu first select "Flashrom Programmer" and then choose "8bit adapter".
|
||||||
|
To program the flashrom you need to erase it, then do the blankcheck and finally select write to flash it with your rom.
|
||||||
|
While writing a rom to the flashrom the led should blink constantly until the flashing process is completed.
|
27
Serial-Monitor.md
Normal file
27
Serial-Monitor.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
For error finding or debugging the Open Source Cart Reader can be set to output to the Arduino Serial Monitor instead of the LCD screen.
|
||||||
|
|
||||||
|
To enable the Serial Monitor change Cart_Reader.ino like this(same setting for all hardware versions):
|
||||||
|
|
||||||
|
````
|
||||||
|
//******************************************
|
||||||
|
// !!! CHOOSE HARDWARE VERSION !!!
|
||||||
|
//******************************************
|
||||||
|
// Remove // in front of the line with your hardware version
|
||||||
|
// #define HW5
|
||||||
|
// #define HW4
|
||||||
|
// #define HW3
|
||||||
|
// #define HW2
|
||||||
|
// #define HW1
|
||||||
|
#define SERIAL_MONITOR
|
||||||
|
````
|
||||||
|
|
||||||
|
Then upload and start the Serial Monitor like so:
|
||||||
|
|
||||||
|
![serialmonardide](https://user-images.githubusercontent.com/19169494/213188895-00310e67-332a-4a62-9bd8-e4cc3f8c358b.jpg)
|
||||||
|
|
||||||
|
Once launched you need to set it to no line ending and 9600 baud.
|
||||||
|
|
||||||
|
![serialmonardide2](https://user-images.githubusercontent.com/19169494/213188902-a06eccbb-9ab8-481d-b507-f289d83ba87c.jpg)
|
||||||
|
|
||||||
|
The Cart Reader is now controlled by sending keyboard inputs over serial. The files still get dumped to the SD card though.
|
||||||
|
If it says Press Button you can send any button. To select a menu entry you just send the number in front of the entry.
|
40
Setup-and-user-guide.md
Normal file
40
Setup-and-user-guide.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
![image](https://dl.dropboxusercontent.com/s/cqjxdd51n4iiuu2/3d_model.png?dl=1)
|
||||||
|
|
||||||
|
### Providing power
|
||||||
|
|
||||||
|
There are two USB ports on the assembled Cart Reader, one on the Arduino Mega and another one on the Cart Reader shield.
|
||||||
|
At no time must there be two USB cables attached to the Cart Reader.
|
||||||
|
|
||||||
|
If you power the Cart Reader with the USB cable plugged directly into the Arduino Mega you have to set the voltage jumper to 5V. Both the Arduino and the cartridge plugged into the Cart Reader will be supplied with 5V and therefore this is not suitable for N64 nor 3.3V flashroms like the 29L3211.
|
||||||
|
In this configuration you can both upload new code to the Arduino and use the serial monitor.
|
||||||
|
|
||||||
|
If you power the Cart Reader with the USB cable plugged into the Cart Reader shield you can decide what voltage both the Arduino Mega and the plugged in cartridge will be supplied with by setting the voltage jumper accordingly.
|
||||||
|
In this configuration you can't upload new code nor use the serial monitor.
|
||||||
|
|
||||||
|
In both cases the USB cable must provide approximately 5V/1A for ideal operation. Some computer USB ports might not be powerful enough and you will see errors when dumping SA1 cartridges.
|
||||||
|
|
||||||
|
The power switch on the left disconnects the USB port on the Cartridge Reader shield from the rest and therefore only works if you power the Cart Reader from this USB port and does not work when the Cart Reader is powered over the Arduino.
|
||||||
|
|
||||||
|
### Cartridge Slots
|
||||||
|
|
||||||
|
Never plug in multiple cartridges at the same time. Never select a mode that does not correspond with the cartridge you have currently plugged in. Never insert or remove a cartridge while the Cart Reader is turned on.
|
||||||
|
|
||||||
|
### Configuration Switches
|
||||||
|
|
||||||
|
There are four switches on the right side of the Cart Reader shield:
|
||||||
|
- CLK1 switches SNES pin 57 (CPU Clock) between the Adafruit Clock Generator(switch set towards the back of the reader) and Arduino Pin 16(switch set towards the front of the reader). This switch needs to be set to it's lower position for writing flashroms and in it's upper position to enable the Adafruit Clock Generator for cartridges that need it.
|
||||||
|
- CLK0 switches SNES pin 1 (Expansion Clock) between the Adafruit Clock Generator(towards the back) and Arduino Pin 5(towards the front). If you have an Adafruit Clock Generator set this jumper to it's upper position.
|
||||||
|
- EEP enables the 1K pullup resistor for reading N64 eeproms and controllers. You can leave it set all the time unless you have a GBA cartridge plugged in, then simply disable it(switch set towards the front of the reader).
|
||||||
|
- The voltage switch selects between 5V and 3.3V when the USB cable is plugged into the Cart Reader shield. If the USB cable is plugged into the Arduino Mega then this switch must be set to 5V.
|
||||||
|
|
||||||
|
### Buttons
|
||||||
|
|
||||||
|
Tapping the left button once moves the cursor one element down, a double click moves it up.
|
||||||
|
You can execute the current selection by either holding the left button longer or by tapping the right button.
|
||||||
|
|
||||||
|
### Resetting the folder number
|
||||||
|
Currently each new dumped file is stored in a numbered folder so that it does not overwrite a previous read-out of the same game or save. You can reset that folder count my placing the cursor of the main menu on "About" then pressing and holding down the left button until you see the folder reset message.
|
||||||
|
|
||||||
|
### Misc
|
||||||
|
|
||||||
|
- Be aware that there is a filename limit of 8 characters plus extension and a limit of 35 files/folders per directory.
|
53
Supported-Systems.md
Normal file
53
Supported-Systems.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#### Supported* Systems:
|
||||||
|
|
||||||
|
| System | ROM | Save | Notes |
|
||||||
|
|------------------------------------------------------|--------------------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| NES, Famicom, Family Basic | Read | Read/Write | Supports Mapper 30/NESmaker and flashes INL NM30 boards |
|
||||||
|
| SNES | Read | Read/Write | Supported cartridge types: LoRom, HiRom, ExHiRom, DSP, SuperFX, SuperFX2, SDD1, CX4, SPC7110, SA1 (last two chips need Clock Generator) |
|
||||||
|
| SNES Satellaview 8M Memory packs | Read/Write | N/A | BS-X cartridge and Clock Generator needed |
|
||||||
|
| Nintendo Power Super Famicom Memory | Read/Write | Read/Write | Needs Clock Generator |
|
||||||
|
| Chinese or custom-made SNES repros | Read/Write | Read/Write | Supported Flashroms: AM29F016B/D, AM29F032B, MBM29F033C, MX29F1601, MX29F1610, MX29L3211, MX29LV160, MX29LV320, S29GL032M, MBM29F800BA, AM29F800BB, LH28F016SUT, AM29F400AB, E28FXXXJ3A, AM29LV033C |
|
||||||
|
| N64 | Read | Read/Write | Supported save types: 4K/16K Eeprom, Sram, Flashram. Eeprom needs Adafruit Clockgen. Proto carts are not supported. |
|
||||||
|
| N64 Controller Paks | N/A | Read/Write | Also can test a N64 controller's buttons and thumbstick |
|
||||||
|
| Chinese N64 repros | Read/Write | Read/Write | Supported Flashroms: S29GL type |
|
||||||
|
| N64 Gamesharks | Read/Write | N/A | Can be used to unbrick or update to newer version |
|
||||||
|
| Game Boy (Color) | Read | Read/Write | |
|
||||||
|
| Nintendo Power Game Boy Memory | Read/Write | Read/Write | |
|
||||||
|
| Custom-made Game Boy (Color) flashcarts | Read/Write | Read/Write | Supported Flashroms: AM29F016, AM29F032, MBM29F033 flashrom |
|
||||||
|
| EMS GB Smart 32M flash carts | Read/Write | Read/Write | |
|
||||||
|
| Gameboy Camera Flashcart | Read/Write | Read/Write | [Flashcart made by HDR](https://github.com/HDR/Gameboy-Camera-Flashcart) |
|
||||||
|
| Game Boy Advance | Read | Read/Write | Supported save types: 4K Eeprom, 64K Eeprom, Sram/Fram, 512K flash, 1M flash |
|
||||||
|
| Chinese GBA repros | Read/Write | Read/Write | Supported Flashroms: i4000L0YBQ0, i4400L0ZDQ0, MX29GL128E, MSP55LV128, PC28F256M29, M29W128GH |
|
||||||
|
| Sega Mega Drive | Read | Read/Write | Supported save types: Sram/Fram, Eeprom |
|
||||||
|
| Sega Master System | Read | Read/Write | |
|
||||||
|
|
||||||
|
|
||||||
|
#### Through adapters:
|
||||||
|
|
||||||
|
| System | ROM | Save | Notes |
|
||||||
|
|----------------------------|------|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| Virtual Boy | Read | Read/Write | Using custom adapter |
|
||||||
|
| Sega Game Gear | Read | Read/Write | Using Retrode/custom or Retron 5 3-in-1 adapter |
|
||||||
|
| Sega Mark III | Read | Read/Write | Using Raphnet Mark III adapter |
|
||||||
|
| Sega SG-1000 | Read | | Using Raphnet Mark III adapter |
|
||||||
|
| Sega Cards | Read | | Using Card Catcher and Raphnet Mark III adapter or Retron 5 3-in-1 |
|
||||||
|
| PC engine/TG16 cartridges | Read | Read/Write | Using Retrode or custom adapter |
|
||||||
|
| WonderSwan | Read | Read/Write | Using custom adapter |
|
||||||
|
| NeoGeo Pocket | Read | | Using custom adapter |
|
||||||
|
| Intellivision | Read | | Using custom adapter |
|
||||||
|
| ColecoVision | Read | | Using custom adapter |
|
||||||
|
| Benesse Pocket Challenge W | Read | Read/Write | Using custom adapter |
|
||||||
|
| Watara Supervision | Read | | Using custom adapter |
|
||||||
|
| Atari 2600 | Read | | Using custom adapter |
|
||||||
|
| Emerson Arcadia 2001 | Read | | Using custom adapter |
|
||||||
|
| Fairchild Channel F | Read | | Using custom adapter |
|
||||||
|
| Magnavox Odyssey 2 | Read | | Using custom adapter |
|
||||||
|
| Super A'Can | Read | Read/Write | Using custom adapter
|
||||||
|
| Super A'Can Flashcart | Read/Write | Read/Write | Using custom adapter
|
||||||
|
|
||||||
|
|
||||||
|
#### Notes:
|
||||||
|
- Supported* does not mean that it can read all available cartridges.
|
||||||
|
- Custom adapters are created by the community and can be found [here](https://github.com/sanni/cartreader/wiki/List-of-user-created-Adapters).
|
||||||
|
- The custom Mark III adapter follows the design of the [Raphnet Mark III Adapter](https://www.raphnet.net/electronique/markIII_to_smd/index_en.php).
|
||||||
|
- The custom Sega Game Gear adapter follows the design of the [Retrode SMS Plug-in adapter](https://www.retrode.com/plug-in-adapters).
|
104
Troubleshooting.md
Normal file
104
Troubleshooting.md
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
## When is a ROM bad?
|
||||||
|
|
||||||
|
A ROM was dumped correctly when the CRC32 was found and the ROM was renamed to no-intro standards.
|
||||||
|
````
|
||||||
|
Saving to GB/ROM/ZELDA DIN/780/...
|
||||||
|
[*******************]
|
||||||
|
Checksum: FE8F -> OK
|
||||||
|
CRC32... D7E9F5D7 -> Legend of Zelda, The - Oracle of Seasons (USA, Australia).gbc
|
||||||
|
Press Button...
|
||||||
|
````
|
||||||
|
|
||||||
|
In contrast a bad dump will trigger a "Not found" after the CRC32 and the LED will turn red.
|
||||||
|
````
|
||||||
|
Saving to GB/ROM/ZELDA DIN_A_7/779/...
|
||||||
|
[*******************]
|
||||||
|
Checksum: 46B4 != FE8F
|
||||||
|
Invalid Checksum
|
||||||
|
CRC32... 2B99EF7E -> Not found
|
||||||
|
Press Button...
|
||||||
|
````
|
||||||
|
That being said, the databases are not perfect so in rare cases instead of a bad dump it also could be an unknown ROM version or a database error.
|
||||||
|
Also not all systems have no-intro databases on the SD card yet.
|
||||||
|
|
||||||
|
## Cleaning
|
||||||
|
In case of a bad dump the first thing you should do is to clean the cartridge with rubbing alcohol and a q-tip until the q-tip does not turn black anymore. You can also insert the cartridge repeatably to mechanically clean the cartridge slot.
|
||||||
|
The game playing fine in a console does not mean it will dump correctly since the OSCR does not perfectly mimics a console.
|
||||||
|
|
||||||
|
## Log File
|
||||||
|
You will find a OSCR_LOG.txt in the root folder of the SD card. This file saves all the output displayed on the screen. If you need to ask for help you should always add at least part of the log file to your post. It holds important info like HW and firmware version.
|
||||||
|
|
||||||
|
````
|
||||||
|
OSCR HW5 V12.4
|
||||||
|
|
||||||
|
[+] Game Boy
|
||||||
|
[+] Game Boy (Color)
|
||||||
|
|
||||||
|
HEADER CHECKSUM ERROR
|
||||||
|
|
||||||
|
Press Button to
|
||||||
|
ignore or clean
|
||||||
|
cart and try again
|
||||||
|
|
||||||
|
Title: ZELDA DIN_A_7
|
||||||
|
Revision: 0
|
||||||
|
Mapper: MBC5
|
||||||
|
ROM Size: 32 KB
|
||||||
|
Save Size: 8 KB
|
||||||
|
|
||||||
|
Press Button...
|
||||||
|
|
||||||
|
[+] Read ROM
|
||||||
|
|
||||||
|
Saving to GB/ROM/ZELDA DIN_A_7/779/...
|
||||||
|
[*******************]
|
||||||
|
Checksum: 46B4 != FE8F
|
||||||
|
Invalid Checksum
|
||||||
|
CRC32... 2B99EF7E -> Not found
|
||||||
|
Press Button...
|
||||||
|
````
|
||||||
|
|
||||||
|
## Self Test
|
||||||
|
If you just soldered the OSCR together there might be some bridged pins. You can run the Self Test to check.
|
||||||
|
````
|
||||||
|
Self Test
|
||||||
|
|
||||||
|
Remove all Cartridges
|
||||||
|
before continuing!!!
|
||||||
|
|
||||||
|
Press Button...
|
||||||
|
|
||||||
|
Testing 1K resistor
|
||||||
|
Testing short to GND
|
||||||
|
Testing short between pins
|
||||||
|
Error: Pin A12 + D49
|
||||||
|
|
||||||
|
Press Button...
|
||||||
|
````
|
||||||
|
## Updating to the latest Github code
|
||||||
|
It might be that the current portable release is behind the active development tree and your issue was already solved in the meantime.
|
||||||
|
To update to the latest Github code you can download and extract the current portable release [VXX.X_Portable.zip](https://github.com/sanni/cartreader/releases) and [the latest development tree](https://github.com/sanni/cartreader/archive/refs/heads/master.zip) and then copy all the *.ino files from cartreader-master.zip\cartreader-master\Cart_Reader\ to VXX.X_Portable\Arduino IDE Portable\portable\sketchbook\Cart_Reader\. Then follow the [update guide](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino#to-upload-the-firmware-to-the-cart-reader-please-follow-these-steps).
|
||||||
|
|
||||||
|
## Black Screen
|
||||||
|
If you just get a black screen after turning the OSCR on you can change the output to [Serial Monitor](https://github.com/sanni/cartreader/wiki/Serial-Monitor) to get some additional information.
|
||||||
|
|
||||||
|
````
|
||||||
|
Cartridge Reader
|
||||||
|
2023 github.com/sanni
|
||||||
|
SD Error
|
||||||
|
|
||||||
|
Press Button...
|
||||||
|
````
|
||||||
|
|
||||||
|
If you then also get an SD error over Serial you need to check the SPI pins D50-D53 both on the Mega Pro and the Main PCB's EXP2 header.
|
||||||
|
|
||||||
|
![984944](https://user-images.githubusercontent.com/19169494/224292109-a7833ac2-7c29-4a3e-8cdc-83fb94f0ac8c.jpg)
|
||||||
|
|
||||||
|
## Schematics
|
||||||
|
Once you know what pins are bridged together you can consult the schematics to find out where they are located on the PCBs.
|
||||||
|
|
||||||
|
Main PCB:
|
||||||
|
![image](https://github.com/sanni/cartreader/blob/master/hardware/main_pcb_hw5/main_pcb_hw5_schematic.jpg)
|
||||||
|
|
||||||
|
Six Slot Adapter:
|
||||||
|
![image](https://github.com/sanni/cartreader/blob/master/hardware/six_slot_adapter/six_slot_adapter_schematic.jpg)
|
56
User-Guide.md
Normal file
56
User-Guide.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#### The Cart Reader shield for the Arduino Mega features SNES, Megadrive, N64 and GBA/GBC slots all on one pcb.
|
||||||
|
|
||||||
|
### SD Card
|
||||||
|
|
||||||
|
After [downloading and flashing the latest release](https://github.com/sanni/cartreader/wiki/How-to-flash-the-Arduino) you have to copy the files from within the "SD Card" sub folder to the root of your SD card.
|
||||||
|
The SD card should be formatted to exFAT with default allocation size starting with version 6.4. For earlier versions format to FAT32 instead.
|
||||||
|
You will find the Windows formatting dialog here: This PC -> Right Click on SD card -> Format.
|
||||||
|
|
||||||
|
### Slots
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/nc5lblrrf49sgxb/v17_slots.png?dl=1)
|
||||||
|
|
||||||
|
:red_circle: Snes and Super Famicom
|
||||||
|
:large_blue_circle: Sega Megadrive/Genesis
|
||||||
|
:children_crossing: Nintendo 64
|
||||||
|
:recycle: Game Boy, Game Boy Color, Game Boy Advanced
|
||||||
|
:large_orange_diamond: SD card
|
||||||
|
|
||||||
|
Never change a cartridge while the Cart Reader is powered on and never insert more than one cartridge at the same time.
|
||||||
|
|
||||||
|
### Power Options
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/c61hmd5hwgwlc5q/power.png?dl=1)
|
||||||
|
:children_crossing: Hardware reset button(only present on some Arduinos)
|
||||||
|
:large_blue_circle: USB port, connect to a PC or a mobile phone charger (5V, 1A)
|
||||||
|
:red_circle: The barrel plug does not have a function anymore, DO NOT USE!!!
|
||||||
|
|
||||||
|
### Configuration Switches
|
||||||
|
|
||||||
|
The little arrow printed on the pcb itself shows the direction the switch needs to be set to be enabled.
|
||||||
|
By default all switches should be disabled and only enabled if explicitly instructed to do so.
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/z7vaga3nyo2gyji/switches.png?dl=1)
|
||||||
|
Voltage select switch, right for 5V, left for 3.3V.
|
||||||
|
:children_crossing: 5V devices: SNES, Megadrive, GB and GBC and 5V flashroms like the MX29F032, MX29F1610.
|
||||||
|
3.3V devices: N64, GBA and 3.3V flashroms like the MX29L3211.
|
||||||
|
:red_circle: Enables a 1K pull-up resistor if set to the right(only needed for N64 eeprom and controller).
|
||||||
|
:recycle: Switches the CLK0 line(extension clock) to the clock generator if set to the right.
|
||||||
|
:large_blue_circle: Switches the CLK1 line(CPU clock) to the clock generator if set to the right.
|
||||||
|
|
||||||
|
### Buttons
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/qfavock36xj81ts/buttons.png?dl=1)
|
||||||
|
OLED display, all information will be displayed here.
|
||||||
|
|
||||||
|
:recycle: Button 1
|
||||||
|
- Press once to move the selection down.
|
||||||
|
- Double-click to move the selection up.
|
||||||
|
- Hold longer to execute current selection.
|
||||||
|
- While inside the filebrowser you can go to the next page by moving the selection down once more after you reached the last item on the current page.
|
||||||
|
- In a similar fashion you can go back one page by double-clicking while the first item is selected.
|
||||||
|
- You can enter a folder by holding button 1 pressed longer.
|
||||||
|
- You can go back to the SD's root folder by double-clicking until you reach the first selection of the first page and then double-clicking once more.
|
||||||
|
|
||||||
|
:red_circle: Button 2
|
||||||
|
- Press to execute current selection.
|
||||||
|
- When in filebrowser mode enters a directory.
|
32
User-Manual.md
Normal file
32
User-Manual.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Important: After putting the Cart Reader together you will first have to connect an USB cable to the Arduino and charge up the battery for a second before the battery module will enable it's output. It seems to be safety feature of the battery module. To be sure just leave the cable connected until the battery module lights up blue indicating the charging is completed.
|
||||||
|
|
||||||
|
# USB ports
|
||||||
|
The two USB ports located on the battery module will not be used. The battery gets charged over the USB port on the Mega 2560 Pro (embed).
|
||||||
|
|
||||||
|
# On-Off Switch
|
||||||
|
The switch to turn the Cart Reader on or off is found on the battery module.
|
||||||
|
However the battery module seems to have a fuse so if the Cart Reader does not turn on either plug in an USB Cable or remove the battery, wait a little and insert it back in to reset the fuse.
|
||||||
|
Important: The OSCR will not start if no cart slot adapter is inserted into the main PCB.
|
||||||
|
|
||||||
|
# Basic controls
|
||||||
|
The Open Source Cartridge Reader is controlled with an rotary encoder. Turn clockwise to go down and counterclockwise to go up in the menu. Press the knob to execute a selection. Press the reset button to restart the Cart Reader.
|
||||||
|
During operation progress is indicated either by a progress bar on the LCD or by a small LED on the Mega 2560 Pro (embed).
|
||||||
|
|
||||||
|
# RGB LED
|
||||||
|
Once a read or write operation is finished the RGB LEDs on the LCD module will turn green if everything seemed to work out or red if there was an error.
|
||||||
|
It is very important to understand that a green light does not mean the dump is perfect since for most cartridges only a small portion of the ROM will be compared against a checksum. To be sure you should always copy the ROM to your PC and use an appropriate tool to check if the dump was successful.
|
||||||
|
|
||||||
|
# SD card
|
||||||
|
FAT(SD cards up to 2GB), FAT32(SDHC cards up to 32GB) and exFAT(SDXC 64GB and up) are supported. Some SD cards might be incompatible and will lead to errors.
|
||||||
|
|
||||||
|
# Voltage selection
|
||||||
|
The battery module supplies the Cart Reader with 5V which then gets converted to 3.3V by the LCD module. The Mega 2560 Pro (embed) and the cartridge slot will run at the voltage chosen by the inserted cartridge slot adapter PCB.
|
||||||
|
|
||||||
|
# Cartridge slot adapter
|
||||||
|
To remove a cart slot adapter slide a pen underneath the adapter to apply even pressure when pulling up or else the pins might bend.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/5zb7x3mwel4o1qh/IMG_0809.JPG.jpg?dl=1)
|
||||||
|
|
||||||
|
# Battery module
|
||||||
|
The 3V BAT and 5V BAT pins on the Cart Reader will carry a voltage even if the battery module is switched off. So don't place the Cart Reader onto a metallic surface or you will short out the battery.
|
||||||
|
The Cart Reader will not start without a battery in the battery module.
|
89
What-to-order.md
Normal file
89
What-to-order.md
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# Parts list for building a Cart Reader V5
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/prw0tqas7rm1spf/hw5_options.jpg?dl=1)
|
||||||
|
|
||||||
|
# Expected parts price for one unit
|
||||||
|
[Picture of Aliexpress order](https://www.dropbox.com/s/63pptoy2fv9ahbl/aliexpress_order.png?dl=0) $94 incl. 19% Tax and Shipping
|
||||||
|
[Picture of JLCPCB order](https://www.dropbox.com/s/dft06rmy16fq73s/jlcpcb_order.jpg?dl=0) $22 for PCBs, $17 for 3d printed frame = $40 incl. 19% Tax and Shipping
|
||||||
|
**Total:** $134
|
||||||
|
|
||||||
|
# Warning
|
||||||
|
There is a new Mega 2560 Pro PCB design that does not work with 3.3V anymore. The Cart Reader only turns on at the 5V switch setting. The old design originally created by RobotDyn but cloned by other companies too still works fine. Therefore it is advised to buy a Mega Pro with the old PCB design.
|
||||||
|
|
||||||
|
![image](https://dl.dropboxusercontent.com/s/k553fda1etez7jh/goodvsbad.jpg?dl=1)
|
||||||
|
|
||||||
|
Background: The Cart Reader under-volts the Atmega2560 to 3.3V when dumping GBA/N64 to achieve the proper voltage levels on all data and address pins.
|
||||||
|
The Mega Pros listed here have been confirmed to use the old design that in most cases didn't have an issue running at 3.3V.
|
||||||
|
|
||||||
|
# PCBs:
|
||||||
|
- Download [main_pcb_hw5_gerber.zip](https://github.com/sanni/cartreader/blob/master/hardware/main_pcb_hw5/main_pcb_hw5_gerber.zip) and either the [six_slot_adapter_gerber.zip](https://github.com/sanni/cartreader/blob/master/hardware/six_slot_adapter/six_slot_adapter_gerber.zip) for the 7-slot build or [any single adapter PCB](https://github.com/sanni/cartreader/tree/master/hardware) for the 2-slot build like the [n64_adapter_gerber.zip](https://github.com/sanni/cartreader/blob/master/hardware/n64_adapter/n64_adapter_gerber.zip) and upload them to a [PCB maker](https://github.com/sanni/cartreader/wiki/How-to-order-a-PCB)
|
||||||
|
- You don't have to change any of the settings but you can select a color you like.
|
||||||
|
- If you want to dump SNES SA1 carts you will also need the [PIC_adapter PCB](https://github.com/sanni/cartreader/wiki/What-to-order#snescic-optional-for-dumping-snes-carts-with-sa1-chip)
|
||||||
|
|
||||||
|
# 3D print:
|
||||||
|
- Either print the more simple [Main PCB stand](https://github.com/sanni/cartreader/blob/master/hardware/main_pcb_hw5/Main%20PCB%20Stand%20-%20Right%20N64%20Adapter.stl) or this [Fully Enclosed Shell](https://www.printables.com/model/409926-kytor-industries-fully-enclosed-open-source-cartri)
|
||||||
|
(use FDM printer with PLA, SLA resin doesn't work that good with the heat-set inserts)
|
||||||
|
|
||||||
|
# Modules:
|
||||||
|
- Mega 2560 Pro [Aliexpress](https://www.aliexpress.com/item/32904052177.html) [Reichelt](https://www.reichelt.de/at/de/arduino-kompatibles-mega-2560-pro-board-ard-mega2560-pro-p299355.html?&nbc=1) [Pollin](https://www.pollin.de/p/microcontroller-mega-2560pro-811323)
|
||||||
|
- MKS MINI12864 V3 LCD https://www.aliexpress.com/item/1005002998072234.html
|
||||||
|
- SI5351 clock generator https://www.aliexpress.com/item/4000040035169.html (The clock generator is only needed for N64/SNES/NP/SV)
|
||||||
|
|
||||||
|
# Female pin headers:
|
||||||
|
- two 1x3
|
||||||
|
- one 1x7
|
||||||
|
- one 1x8
|
||||||
|
- two 1x16
|
||||||
|
- two 1x21
|
||||||
|
- one 1x36
|
||||||
|
- one 1x38
|
||||||
|
|
||||||
|
Here you can buy some of them: https://www.aliexpress.com/item/32869391616.html
|
||||||
|
For the rest you need to buy 1x40 2.54mm female headers and then cut them down to size: https://www.aliexpress.com/item/32724478308.html (this listing also includes the male headers for the CIC adapter)
|
||||||
|
|
||||||
|
# Male pin headers:
|
||||||
|
- two 1x40 2.54mm 20mm long(total length) https://www.aliexpress.com/item/32911455899.html
|
||||||
|
- one 1x8 2.54mm 11mm long(= standard size, for CIC adapter PCB, included in the link for the 1x40 2.54mm female headers above)
|
||||||
|
|
||||||
|
# LCD connector (EXP1, EXP2 on PCB)
|
||||||
|
- two 2x5 2.54mm IDC male box header https://www.aliexpress.com/item/1005001400147026.html
|
||||||
|
- two 2x5 2.54mm IDC female ribbon connectors https://www.aliexpress.com/item/32852909764.html
|
||||||
|
|
||||||
|
# Cartridge slots:
|
||||||
|
- 50 pin 2.5mm N64 slot https://www.aliexpress.com/item/1005004032161155.html (Attention: some sellers send 2.54mm instead)
|
||||||
|
- 62 pin 2.5mm SNES slot https://www.aliexpress.com/item/1005004030923724.html
|
||||||
|
- GB/GBC/GBA slot https://www.aliexpress.com/item/4000290191316.html
|
||||||
|
- 72 pin 2.5mm NES slot https://www.aliexpress.com/item/32865905959.html (questionable quality with too much grip)
|
||||||
|
- 64 pin 2.54mm Mega Drive slot https://www.aliexpress.com/item/1005001884522039.html (2x32 straight)
|
||||||
|
- 60 pin 2.54mm Famicom slot https://www.aliexpress.com/item/1005001884522039.html (2x30 straight)
|
||||||
|
- 50 pin 2.54mm Master System slot https://www.aliexpress.com/item/1005001884522039.html (2x25 straight)
|
||||||
|
|
||||||
|
# Screws:
|
||||||
|
- 18mm long M2 female-female spacers, 3mm in diameter https://www.aliexpress.com/item/4001271908929.html
|
||||||
|
- 10mm long M2 screws https://www.aliexpress.com/item/32971605141.html
|
||||||
|
- 6mm long M2 screws https://www.aliexpress.com/item/32971605141.html
|
||||||
|
- 1mm thick M2 washers https://www.aliexpress.com/item/33021883302.html
|
||||||
|
- 3mm thick M2 brass inserts https://www.aliexpress.com/item/4000585933306.html
|
||||||
|
|
||||||
|
# Misc:
|
||||||
|
- N64 controller extension https://www.aliexpress.com/item/32828382501.html or connector https://www.aliexpress.com/item/32844070827.html
|
||||||
|
- two slide switches https://www.aliexpress.com/item/4000218053209.html
|
||||||
|
- SD card (either FAT32 or exFAT formatted)
|
||||||
|
- one 3mm LED (through hole, max 20mA) https://www.aliexpress.com/item/1005003432647675.html
|
||||||
|
- one 1K Ohm resistor (through hole, metal film, 1/4W) for N64 Controller https://www.aliexpress.com/item/1005002670881002.html
|
||||||
|
- one 220 Ohm resistor (through hole, metal film, 1/4W) for the LED https://www.aliexpress.com/item/1005002670881002.html
|
||||||
|
- one 470uF capacitor (through hole, 10V or 16V) https://www.aliexpress.com/item/1005003504132808.html
|
||||||
|
- silicone rubber feet (8mm) https://www.aliexpress.com/item/32514500567.html
|
||||||
|
- one male-to-female dupont wire (length doesn't matter, instead of the dupont wire you can also use any other wire, it does not have to be detachable) https://www.aliexpress.com/item/4000812552635.html
|
||||||
|
|
||||||
|
# snesCIC (optional for dumping SNES carts with SA1 chip):
|
||||||
|
- [PIC_adapter_gerber.zip](https://github.com/sanni/cartreader/blob/master/hardware/cic_adapter/PIC_adapter_gerber.zip) PCB (just upload the zip to jlcpcb.com)
|
||||||
|
- MICROCHIP PIC12F629-I/P flashed with [snescic-lock-resync.hex](https://github.com/mrehkopf/sd2snes/tree/develop/cic) https://www.buyicnow.com/it.php?i=114 (DIP version, easier to solder, order [EEprom programming service](https://www.buyicnow.com/ser.php?i=2) too and send them the hex file via eMail so they can flash it for you)
|
||||||
|
- 100nF ceramic capacitor (through hole, 5mm hole spacing, 50V) https://www.aliexpress.com/item/1005003480051494.html
|
||||||
|
- PIC programmer (optional, if you don't order from buyicnow with the programming service, see [here](https://github.com/sanni/cartreader/wiki/Flashing-the-snesCIC) for details)
|
||||||
|
|
||||||
|
# Power Bank (optional):
|
||||||
|
To use the Cart Reader on the go you can connect it to a power bank. But it is important that the power banks supports low current devices without shutting off.
|
||||||
|
|
||||||
|
For example it could say something like this "Even Wider Compatibility Unlike the market’s most power banks incapable of charging low-current accessories, INIU portable charger can work with not only all the phones, tablets but your smaller devices like AirPods, Bluetooth headphones, fitness trackers, smart watches, etc."
|
||||||
|
Source: https://www.amazon.com/INIU-High-Speed-Flashlight-Powerbank-Compatible/dp/B07CZDXDG8
|
24
WonderSwan-(Color).md
Normal file
24
WonderSwan-(Color).md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
### Config Switches
|
||||||
|
![](https://dl.dropboxusercontent.com/s/z3o707gt6e0pj33/flash_jumper_3V3.jpg?dl=1)
|
||||||
|
|
||||||
|
### Adapter Compatibility
|
||||||
|
|
||||||
|
V1 PCB
|
||||||
|
![wsv1](https://user-images.githubusercontent.com/19169494/225463400-67124411-fc84-48f5-9078-be75e2fe534d.png)
|
||||||
|
|
||||||
|
|
||||||
|
V2 PCB
|
||||||
|
![wonderswan_adapter_v2](https://user-images.githubusercontent.com/19169494/225463395-6100c8f5-6171-498d-b09e-7b95f71b4201.png)
|
||||||
|
|
||||||
|
With HW4/HW5 the CLK0, CLK1, EEP switches have been removed to simplify the setup. This resulted into a slight pinout change that made the WonderSwan adapter V1 PCB not compatible with HW4/5.
|
||||||
|
The WonderSwan adapter V2 PCB has a solder jumper to switch the pinout to be compatible with either HW3 or HW4/HW5.
|
||||||
|
|
||||||
|
If you have a V1 adapter and want to use it on a HW4/5 Cart Reader you can modify it by cutting the trace going to SNES pin 1 and rewiring it to SNES pin 33.
|
||||||
|
|
||||||
|
![Untitled](https://user-images.githubusercontent.com/19169494/225464550-d4f2596a-4651-4bf0-8ba9-c8288ddabbec.jpg)
|
||||||
|
[Source](https://twitter.com/wxhsplash/status/1496753353124036610?s=20)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
10
Writing-custom-flashcarts.md
Normal file
10
Writing-custom-flashcarts.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Set the config switches like this:
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/5np6jvcv7x6ilvl/flash_jumper.jpg?dl=1)
|
||||||
|
|
||||||
|
Next plug the custom flash cartridge into the GB/GBA slot of the cartridge reader. You'll find the "Flash MBC3/MBC5 cart" option under the Game Boy (Color) submenu. It will ask you to select a file and then flash said file to the cartridge.
|
||||||
|
|
||||||
|
Supported cartridge types are the [MBC5 Cart following the design by Reiner Ziegler](https://web.archive.org/web/20180412001848/http://reinerziegler.de/download/MBC5_Cart.pdf) and the [MBC3 and MBC5 cart by jrodrigo](https://www.jrodrigo.net/wiki/how-to-diy-a-gameboy-flash-cartridge-with-a-rom-adapter-board/) both with a 29F016/32/33 type of flashrom.
|
||||||
|
|
||||||
|
![](https://dl.dropboxusercontent.com/s/q6r3y2lzvev70a1/adapter_pcb%20%282%29.jpg?dl=1)
|
||||||
|
|
58
_Sidebar.md
Normal file
58
_Sidebar.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
# Open Source Cart Reader
|
||||||
|
[[Overview]]
|
||||||
|
[[Supported Systems]]
|
||||||
|
[[List of user-created Adapters]]
|
||||||
|
|
||||||
|
# Build Guide
|
||||||
|
[[Recommended Tools]]
|
||||||
|
[[What to order]]
|
||||||
|
[[How to build]]
|
||||||
|
|
||||||
|
# More Information
|
||||||
|
[[How to order a PCB]]
|
||||||
|
[[How to flash the Arduino]]
|
||||||
|
[[Flashing the snesCIC]]
|
||||||
|
[[Preparing the SD card]]
|
||||||
|
|
||||||
|
# Advanced
|
||||||
|
[[Troubleshooting]]
|
||||||
|
[[Designing your own Adapters]]
|
||||||
|
[[Serial Monitor]]
|
||||||
|
|
||||||
|
# Older Revisions
|
||||||
|
[[About]]
|
||||||
|
[[Cart Reader V4]]
|
||||||
|
[[Cart Reader V3]]
|
||||||
|
[[Cart Reader V2]]
|
||||||
|
[[Cart Reader V1]]
|
||||||
|
|
||||||
|
# Nintendo 64
|
||||||
|
[[Read N64 cartridge]]
|
||||||
|
[[Reading a Controller Pak]]
|
||||||
|
[[Reflashing a N64 Repro]]
|
||||||
|
[[Reflashing a Gameshark]]
|
||||||
|
|
||||||
|
# Super Nintendo
|
||||||
|
[[Reading SNES carts]]
|
||||||
|
[[Reflashing NP carts]]
|
||||||
|
[[Reflashing SNES Repros]]
|
||||||
|
[[Reflashing BSX 8M carts]]
|
||||||
|
|
||||||
|
# NES and Famicom
|
||||||
|
[[Dumping NES Games]]
|
||||||
|
|
||||||
|
# Game Boy
|
||||||
|
[[Reading a Game Boy rom]]
|
||||||
|
[[Reflashing NP GB Memory carts]]
|
||||||
|
[[Writing custom flashcarts]]
|
||||||
|
|
||||||
|
# Game Boy Advance
|
||||||
|
[[Reading a GBA save game]]
|
||||||
|
[[Reflashing GBA repros]]
|
||||||
|
|
||||||
|
# SEGA
|
||||||
|
[[Reading Mega Drive Genesis games]]
|
||||||
|
[[Reading Master System games]]
|
||||||
|
|
||||||
|
# Other
|
||||||
|
[[WonderSwan (Color)]]
|
Loading…
Reference in New Issue
Block a user