skaman:
That's a 3V part. Not a good idea to use it in a SNES.
There's only so much address space available before you need to add some type of microcontroller.
Someone could just use level shifters or resistor buffers to handle the voltage differences.
And I saw that there are N64 pirate carts that use the 29GL256 chips sold on Aliexpress right now. Would be pretty awesome to be able to dump and rewrite those.
Just uploaded the code for re-writing the N64 repros. It's still a little rough and slow. But I'm sure we will get it faster without much hassle. Especially after all that we have been through so far looks at SF Memory cart
I've been working on a prototype SA-1 adapter that replaces the Adafruit Clock Generator. It might be possible to fit the circuit on the new shield version. Right now, I've built it as an adapter that sits between the SA-1 cart and SNES slot. The adapter works properly reading and writing SA-1 carts and also switches between games on the multi-game SF Memory Cassettes. I still have more testing to do to make sure functionality with other enhanced chip carts doesn't change when switching to the circuit.
I'm also trying to get the adapter working with my Retrode. Using the adapter, the Retrode reads the cart header properly and shows the game in the USB folder but the firmware is not set up to properly read out the complete cart contents (there's valid data but it is incomplete). Unfortunately, support for the Retrode is nonexistent at this time so there is no way to fix the SA-1 carts. Maybe if I gain access to the Retrode source code then I can add some of the SNES improvements that we've made with the Arduino reader.
hi, is there a way to make everything more compact and make it of little adaptors like the retrode?
I know that this is hard but it wold make everything smaller
If you build one of the single SNES slot versions (handwired version or the early PCB), then it will be smaller than the Retrode. There is a separate N64 adapter board that you plug in to the SNES slot.
The Retrode is 16x8x4cm=512cm³ and my current cart reader design is 10x10x4cm=400cm³.
Therefore I'd argue it already is smaller by volume.
Ofc the Retrode can do a lot more things like you can plug SNES controllers in it, so it needs to be bigger
Now if the question is "What is the cheapest way possible to build this Cart Reader?", then the answer to that would be the following item list:
SD module 1€
You don't need the OLED screen because you can just use the Arduino Serial Monitor to display all the information.
That's about 20€ in total.
Then just hand wire everything according to this pinout.
For the N64 or Gameboy adapter you can just use the pcbs of some cheap SNES game and wire the appropriate cartridge slot to it, again using the pinout from the Excel file.
Just be aware that hand wiring everything can lead to wiring errors really easy.
I don't have any pictures of my earlier hand wired prototypes anymore but here is a fun picture I once made that shows different stages of the cart reader:
I own a Retrode. For me, the main problem with the Retrode is that the source code is closed and the original developer is no longer working on it. All of the problems with the Retrode code are not likely to be fixed. There's one person that sort of works on the code but he isn't that interested in making changes.
I've made an SA-1 adapter board that works with our Arduino based reader and should also work with the Retrode. I have actually successfully dumped an SA-1 cart using the Retrode. Unfortunately, not all SA-1 carts can be dumped using my adapter since the underlying Retrode code is flawed. I've spoken with the original and current devs about the problems but there's no interest in fixing the code.
Maybe they see the Arduino reader as a rival product and therefore are not willing to share the source code. I guess that they must think that I'm looking to adapt Retrode code to the Arduino reader when I'm actually trying to bring all of the SNES enhancements that I've developed for the Arduino reader to the Retrode. The Retrode SNES code appears rather basic and incomplete so there's no reason for me to use any of it.
The only hope is that the Retrode devs open up the source code but that remains unlikely as the project has been basically abandoned for a number of years.
Surprisingly (to me, anyway), Wikipedia has the most current information on what happened to the Retrode.
"The Retrode got licensed to OpenPandora GmbH in Germany and is available again since March 2015.[10] The Retrode from 2015 is the second hardware revision."
Basically, it's a commercial product with legal licenses and such, so I doubt they will release source code beyond their firmware update downloads.
I purchased a Retrode 2 and plugins in mid 2016 from DragonBox.de, which is basically the store for OpenPandora. It also seems to have a more current firmware then is on the retrode website. However, it still does not allow for getting N64 saves, and the controller ports are not built in to the adapters produced by OpenPandora. This overall failure of a device to meet a requirement I wanted is why I am here and got a kit from sanni. That has arrived today however the Arduino itself and the OLED are still on their way.
I have done other experiments trying to get save data from cartridges. On the N64 end, I used the Gameshark 3.2 over parallel port method of extracting RAM data from a running game, as well as extracting the data by using the Gameshark's memory card manager and a Dexdrive. Both of these were marginally successful but only reliably worked for games that have SRAM (the battery). It's also a painful method, requiring a working N64, old PC equipment that has a non-USB based parallel port sitting pretty much right next to it, a TV with RCA inputs or device that can upconvert to output to a monitor or modern TV, a Dexdrive, and of course an N64 cartridge which still has save data on it (a challenge considering the physical battery issue). Found out a couple of other useful tidbits of info along the way, but nothing that basically gives me a reliable method of extracting saves of all types from an N64 cart.
Regarding two other cartridge types that this kit supports (SNES and GB/GBC/GBA) I successfully got most of this from the Retrode (except for GBA of course since that is also not supported by the Retrode, grrr). I also successfully got save data off the SNES and GB/GBC/GBA cartridges using a RetroN 5. These saves are compressed so are not immediately usable by emulators. For that I used some code provided to a particular forum on the subject from a team member of Hyperkin itself, which deals with the compression formatting they use. I have been able to transfer saves back and forth with a couple of extra steps of compression/decompression as a result.
All of my experiments led me to the conclusion that, prior to this device, no device existed that would perform the N64 functions on native cartridge save data. Other devices arguably allow for SNES and GB functions, but this one is much more friendly to the process. So I'm quite excited to use it and, if possible, contribute in some way other than buying a kit
DragonBox isn't doing anything with the firmware. They're producing the hardware (currently planning another run of the units). They're interested in my SA-1 adapter but with the current status of the firmware, the adapter is not viable with the Retrode.
Matthias controls access to the source code repository although he isn't actively working on it. Basically only Wannado is working on the Retrode firmware right now.
@Pickle136, the current SPC7110 code is similar to what was posted early in this thread. I made changes to use the SDBuffer and switched some of the dump routines used. The code to switch the ROM mapping using the SPC7110 registers is essentially the same (although I switched to using HEX values). I'll send you a copy of the latest Enhanced code.
if memory serves, the version number on my Retrode is 0.20 or something close to it. The highest on that page is "0.19-beta"
I don't know who is responsible for that and would make no assertions as such, but that's what I found when I looked into my Retrode's firmware. I have not found any other firmware download locations but that doesn't mean they don't exist. And without a download I don't actually know what's different about the firmware I received. What I DO know is that it still does not support save data from GBA and N64 carts.
Most recent Retrode firmware is v0.21-beta. The recent firmware versions are basically bugfixes or attempts at bugfixes. Unfortunately, there won't be any possibility for support of the items that you listed until the source is opened up. Needless to say that I'm frustrated by the Retrode.
I think this project is accomplishing all that the Retrode should have done.
Kudos to MichlK and sanni for their work on this project!
I was successful last night porting Skaman's SPC1170 code to Sanni's code.
One thing ive been having issues with my push button. It works in the main menu, but for some reason I go right past the cart info screen and sometimes start the read rom.
I suppose it might be a stuck signal, but i hear it click and it doesnt do anything on the main menu...
I added a delay in the cart info screen just so I could see it for debugging in this session.
Any thoughts?
Pickle136:
I was successful last night porting Skaman's SPC1170 code to Sanni's code.
One thing ive been having issues with my push button. It works in the main menu, but for some reason I go right past the cart info screen and sometimes start the read rom.
I suppose it might be a stuck signal, but i hear it click and it doesnt do anything on the main menu...
I added a delay in the cart info screen just so I could see it for debugging in this session.
Any thoughts?
How many buttons does your PCB have? If it's one of the older ones with just one button you need to disable the second button in the code.
Change:
"#define enable_Button2"
to:
"//#define enable_Button2"
As an alternative you could also pull Arduino Pin D39 permanently high with a 10k resistor or maybe even with the internal pullups.
Because the code right now is setup to first check if button 2 is pressed and if yes execute what ever option is selected.
int checkButton() { #ifdef enable_Button2
if (checkButton2() != 0)
return 3;
else
return (checkButton1()); #else
return (checkButton1()); #endif
}