I recently got one of these Evercade handhelds and a bunch of cartridges. The idea of the cartridges appealed to me, its nice to go back to having a small collection of curated games with manuals instead of having thousands of roms on a disk to endlessly browse through.
That said, I was curious....
So, popped open one of the cartridges to see what they were using for storage and whether it would be possible to dump the contents.
The memory device used is a MKDV 1GCL-NE which is a 1Gb SD flash memory. So basically its a 128MB SD card soldered to the cartridge. Nothing else of note on in the cartridge except a few coupling caps.
The pinout of the cartridge then is:
Pin 1 - DAT2
Pin 2 - DAT3
Pin 3 - CMD
Pin 4 - VDD
Pin 5 - CLK
Pin 6 - GND
Pin 7 - DAT0
Pin 8 - DAT1
The cartridge edge connector has the same pitch as a Gameboy cartridge so I took a connector for a dead Gameboy and hooked it up - I needed to file down the edges of the connector a little before the assembled Evercade cartridge would fit correctly though.
Time to plug it in and see whats on it..
Result :) Card detected and has 1 FAT16 partition on it. So lets mount it and take a look...
So what we have on this cart (Techos Collection 1) is:
- Retroarch Emulator cores - FEMUEV.so & NEMUEV.so (SNES & NES emulators)
- game folder
- launch.sh
- Responsible for starting up the selected game
The other cartridges have a similar layout, with some different emulators and games roms/artwork.
I'm guessing from looking at launch.sh that when console boot /sdcard is mounted and a list of roms is build based on the file extensions. Then when the game is selected the rom name and emulator id is passed to launch.sh which in turn starts the emulator - either retroarch or blastem in the case of Genesis/Megadrive.
Emulator id to file extension mapping.
#FC 1 Supporting file formats:.nes, .fds
#XC_ATARI2600 2 Supporting file formats:.a26 ,
#XC_ATARI7800 3 Supporting file formats:.a78
#XC_SFC 4 Supporting file formats:.sfc, .smc
#XC_MD 5 Supporting file formats:.smd, .gg, .bin, .gen, .md
#GB/GBA/GBC 6 Supporting file formats:.gba, .gbc, .gb, .agb
#PS ONE 7 Supporting file formats:.ccd, .img, .sub, .pbp, .iso
#Famicom 8 Supporting file formats:.fc
#Atari Lynx 9 Supporting file formats:.lnx
#SegaMasterSystem 10 Supporting file formats:.sms
#Wonderwan 11 Supporting file formats:.ws
#Nintendo 64 12 Supporting file formats:.n64
#MAME 0 Supporting file formats:.zip
Each game title has 7 files associated with it - the game rom and 6 artwork files. Using Double Dragon on the Technos Collection as an example:
TE1DD.nes - game rom
TE1DD0.png - cover art (112 x 157 pixels)
TE1DD0_hd.png - cover art (210 x 295 pixels)
TE1DD1.png - screenshot (193 x 146 pixels)
TE1DD1_hd.png - screenshot (418 x 285 pixels)
TE1DD2.png - banner (340 x 50 pixels)
TE1DD2_hd.png - banner (920 x 128 pixels)
So can we add more games to the cartridge ? Yes, and there are 3 different scenarios to do so.
- Adding a new rom of the same type as already on the cartridge
- Adding a new rom of a type not on the cartridge but does have an emulator id mapping
- Adding a new rom without an emulator id mapping
First scenario is the simplest, just add the rom to the game folder along with the artwork. The artwork is not actually necessary but makes it look a lot nicer, I not added any of the _hd.png files as I use this as a handheld only.
Second scenario is the same but we also need to add the emulator and make sure its correctly referenced in launch.sh.
A compatible emulator can be taken for another cartridge or download a suitable Retroarch core. The classic_armv7 cores are compatible.
To get a Gameboy Advance rom working, I copied the gambatte_libretro.so to the cartridge and updated launch.sh to use this core.
With the third scenario, the console doesn't recognize roms if the extension is not in the above list. To get around this just rename the rom extension to one of the known (unused on the cartridge) types and then its the same as the previous scenario where you update launch.sh to use the correct core.
Using this method I've setup PC-Engine (mednafen_pce_libretro.so) and Neogeo Pocket (race_libretro.so) games and others are definitely possible.