Wednesday 1 July 2020

Evercade

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
    • Game roms and artwork
  • 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.

12 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. I have a Gameboy Flashcart reader/Writer, wonder if I could use that ;) I would love more info on this, could we remover the chip and add an SDCard slot instead, I know there already is a EveSD cartridge out the for 40 Euros ;)

    ReplyDelete
    Replies
    1. Ya the flash memory on the cartridge could easily be replaced with a SD card slot. €40 does seem like a total ripoff though as pcb & sdcard slot would cost less than €2.

      Delete
    2. Yeah I really would like to try it just as a project, I have a lot of handhelds that can do it anyway, but I do like to tinker, if my Evercade ever turns up Hermes are taking there time to deliver lol

      Delete
    3. something like this should work https://www.robotshop.com/uk/breakout-board-microsd-card-33v-regulator-level-shifters.html?gclid=CjwKCAjwmK6IBhBqEiwAocMc8iKFCiCgKXTE7BPisn3gVAATj3HX1jCqy0NzPp_98-61W3ocv7VCIRoCPDsQAvD_BwE

      Delete
  3. Could you please tell me how did you modify launch.sh file to play .gb roms? I tried to play my homebrew gameboy software on Evercade but failed.

    ReplyDelete
    Replies
    1. You could use and/or modify the custom script I wrote for Evercade SD carts. Info and downloads are here:
      https://gbatemp.net/threads/eversd-how-to-run-more-games-from-stock-ui.590953/

      Delete
  4. Hi there. I have done something similar, and i have run into some trouble and hope you can help me. I have desoldered the SD chip from a evercade cardridge, and connectet an microSD adaptor to the PCB instead of the SD chip.

    https://konsolting.blogspot.com/2022/03/blaze-evercade-microsd-adaptor-cartridge.html

    AFAIK i have connected all the wires correct, and i have checked them for shorts, no problem.

    I have used the EverSD software, and tried with a 4 and 8GB microSD card, but when i turn on the Evercade / Evercade VS, non of them detects the cardridge (SD card).

    Is there a simple way to test if i have done something wrong on the hardware side? Is it a problem that the chip is only 1GB, and the SD i use is 4/8GB?

    I would assume that this is just a DIY EverSD, or am i missing out on somesthing?

    Hope you can help :)

    ReplyDelete
    Replies
    1. Below are pinouts you need to check based on my working custom cart and a standard SD card pinout diagram. Check for continuity between the SD adapter pins and the equivalently labeled Evercade Cart pins to make sure you have a good connection from end to end.
      Custom Cart Diagram: https://drive.google.com/file/d/148q3xCI2NsIrhT6jzMUWX1ggocm7Abve/view?usp=sharing
      Standard SD Pinout Diagram: https://drive.google.com/file/d/1JU9hf-yyBLsC8TMjkDrPnGRer5Y2EXT-/view?usp=sharing
      I have tested up to 400GB cards personally. Anythign above 512MB would require you patch your Evercade or VS with the EverSD EverPatcher first, as Blaze has programmed the devices to reject storage devices over 512MB.

      Delete
  5. As Eric mentioned the device needs patching to use a larger card size. The EverSD patcher does a lot of other unwelcome crap thought like changing the branding & splashscreens so I'd not recommend it.

    ReplyDelete
  6. What breakout board did you use in this post? sd card break out with usb..

    ReplyDelete