Thursday, 9 July 2020

Jammacon - New Adapters

A new batch of Jammacon boards is now available along with some new adapter types.

  • Mega.Six - This is a new Megadrive adapter that works as either a 6 button or 3 button controller. The 3 button mode is a true 3 button controller and not a 6 button one in 3 button mode.
  • XBOX - Support for the Original XBOX 
  • PSTHREE - Support for the Playstation 3
  • GC.N64 - Supports the Nintendo Gamecube and N64 consoles


I've also made an additional carrier pcb to allow these newer console adapters to be used on the older Jammacon V1 boards - allows connection for to up 8 buttons, same as Jammacon V2. 



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.

Friday, 7 June 2019

Jammacon V2

Another batch of Jammacon boards ready for action, this time is matt black finish. Made a few small changes from the previous design, but the only functional changes of interest are:

  • Support for up to 8 buttons (for Saturn and Playstation consoles)
  • Change inter-board connector to IDC 34 Pin so easier to add your own pad hacks.



The daughter boards themselves were also modified to include cable restraint.




Sunday, 23 October 2016

JammaCon Controller Button Mappings



NES

Switch on adapter must be set to 'NES'


Jamma

NES Controller

Up

D-Pad Up

Down

D-Pad Down

Left

D-Pad Left

Right

D-Pad Right

Button 1

A

Button 2

B

Start

Start

Coin-Up

Select

Button 1 + Start

Select





SNES

Switch on adapter must be set to 'SNES'


Jamma

SNES Controller

Up

D-Pad Up

Down

D-Pad Down

Left

D-Pad Left

Right

D-Pad Right

Button 1

A

Button 2

B

Button 3

X

Button 4

Y

Button 5

L

Button 6

R

Start

Start

Coin-Up

Select

Button 1 + Start

Select





Saturn

Jamma

Saturn Controller

Up

D-Pad Up

Down

D-Pad Down

Left

D-Pad Left

Right

D-Pad Right

Button 1

A

Button 2

B

Button 3

C

Button 4

X

Button 5

Y

Button 6

Z

Button 7

L

Button 8

R

Start

Start





Megadrive (Genesis)

Jamma

Saturn Controller

Up

D-Pad Up

Down

D-Pad Down

Left

D-Pad Left

Right

D-Pad Right

Button 1

A

Button 2

B

Button 3

C

Button 4

X

Button 5

Y

Button 6

Z

Start

Start





Master System

Jamma

Master System Controller

Up

D-Pad Up

Down

D-Pad Down

Left

D-Pad Left

Right

D-Pad Right

Button 1

I

Button 2

II





PC-Engine

Jamma

PC-Engine Controller

Up

D-Pad Up

Down

D-Pad Down

Left

D-Pad Left

Right

D-Pad Right

Button 1

I

Button 2

II

Button 3

Select

Start

Run





Playstation 1 & 2 

The Playstation adapter works in one of two modes - Analog or Digital. The switch on the adapter sets the operating mode  -  "A" or "D" for either Analog or Digital. 


Most Playstation 1 games require the controller to be in Digtial mode. Whereas most Playstation 2 games will work in either mode but some will required Analog mode to be set. If unsure about any game, start it up with an analog (Dual Shock) controller plugged in and if the LED switches on then it needs Analog mode. 


It is necessary to power cycle the adapter to change modes - i.e unplug both cables from the Playstation console or power cycle the console. Or press the 'Reset' button on the adapter if present. 


By default the Jamma joystick is mapped to the D-Pad of the controller, it can be mapped to the Left Stick of the controller by pressing Jamma Start and Joystick Left. The joystick can also be mapped to the Right analog stick of the controller by pressing Jamma Start and Joystick Right and returned to the default mapping of the D-Pad by pressing Jamma Start and Joystick Up.



Jamma

Playstation Controller

Up

Up (D-Pad, Left Stick, Right Stick)

Down

Down (D-Pad, Left Stick, Right Stick)

Left

Left (D-Pad, Left Stick, Right Stick)

Right

Right (D-Pad, Left Stick, Right Stick)

Button 1

X

Button 2

O

Button 3

[]

Button 4

^

Button 5

L1

Button 6

R1

Button 7

L2

Button 8

R2

Start

Start

Coin-Up

Select

Button 1 + Start

Select

Joystick Left + Start

Map ←↑↓→ to Left Analog Stick

Joystick Right + Start

Map ←↑↓→ to Right Analog Stick

Joystick Up + Start

Map ←↑↓→ to D-Pad






Playstation 3

Joystick mapped to Left Analog stick by default.

Jamma

Playstation 3 Controller

Up

Up (D-Pad, Left Stick, Right Stick)

Down

Down (D-Pad, Left Stick, Right Stick)

Left

Left (D-Pad, Left Stick, Right Stick)

Right

Right (D-Pad, Left Stick, Right Stick)

Button 1

X

Button 2

O

Button 3

[]

Button 4

^

Button 5

L1

Button 6

R1

Button 7

L2

Button 8

R2

Start

Start

Coin-Up

Select

Joystick Left + Start

Map ←↑↓→ to Left Analog Stick

Joystick Right + Start

Map ←↑↓→ to Right Analog Stick

Joystick Up + Start

Map ←↑↓→ to D-Pad

Start + Coin-Up

PS Home

Start + Button 1

L3

Start + Button 2

R3

Start + Button 3

L2

Start + Button 4

R3







XBOX (Original)

Joystick mapped to Left Analog stick by default.

Jamma

XBOX Controller

Up

Up (D-Pad, Left Stick, Right Stick)

Down

Down (D-Pad, Left Stick, Right Stick)

Left

Left (D-Pad, Left Stick, Right Stick)

Right

Right (D-Pad, Left Stick, Right Stick)

Button 1

A

Button 2

B

Button 3

X

Button 4

Y

Button 5

L

Button 6

R

Button 7

White

Button 8

Black

Start

Start

Coin-Up

Select

Joystick Left + Start

Map ←↑↓→ to Left Analog Stick

Joystick Right + Start

Map ←↑↓→ to Right Analog Stick

Joystick Up + Start

Map ←↑↓→ to D-Pad

Start + Button 1

White

Start + Button 2

Black

Start + Button 3

Left Thumb

Start + Button 4

Right Thumb







Nintendo 64

Joystick mapped to D-Pad by default.

Jamma

N64 Controller

Up

Up (D-Pad, Left Stick)

Down

Down (D-Pad, Left Stick)

Left

Left (D-Pad, Left Stick)

Right

Right (D-Pad, Left Stick)

Button 1

A

Button 2

B

Button 3

L

Button 4

R

Button 5

Z

Start

Start

Joystick Left + Start

Map ←↑↓→ to Left Analog Stick

Joystick Up + Start

Map ←↑↓→ to D-Pad

Button 6 + Button 1

C Up

Button 6 + Button 2

C Down

Button 6 + Button 3

C Left

Button 6 + Button 4

C Right





Gamecube

Joystick mapped to D-Pad by default.

Jamma

Gamecube Controller

Up

Up (D-Pad, Left Stick, Right Stick)

Down

Down (D-Pad, Left Stick, Right Stick)

Left

Left (D-Pad, Left Stick, Right Stick)

Right

Right (D-Pad, Left Stick, Right Stick)

Mapping 1


Button 1

A

Button 2

B

Button 3

X

Button 4

Y

Button 5

Z

Button 6

L

Button 7

R

Mapping 2


Button 1

A

Button 2

B

Button 3

L

Button 4

R

Button 5

Z

Button 6

X

Button 7

Y

Mapping 3


Button 1

A

Button 2

B

Button 3

X

Button 4

Y

Button 5

L

Button 6

R

Button 7

Z

Joystick Left + Start

Map ←↑↓→ to Left Analog Stick

Joystick Right + Start

Map ←↑↓→ to C Stick

Joystick Up + Start

Map ←↑↓→ to D-Pad

Button 1 + Start

Select button mapping 1

Button 2 + Start

Select button mapping 2

Button 3 + Start

Select button mapping 3








* Buttons 7 & 8 only available on Version 2.X adapters