Showing posts with label genesis. Show all posts
Showing posts with label genesis. Show all posts

Sunday, March 29, 2026

Kasser DAFM Mega Drive Instruments

I've been meaning to write this post for over a year, so I'm a little fuzzy on the details, but I figured it best to just get something down instead of putting it off any longer.

About a year and a half ago, I picked up a DAFM kit from Kasser Synths. It's a really great kit and an awesome FM synth based on the legendary YM2612 chip, and it supports the ability to load up to 6 custom OPL instruments in DMP format (used by the DefleMask Tracker software).

I wanted to use the instruments from Mega Drive / Genesis games, which required getting the games' music in VGM format and then using the vgm2pre software to convert them to DMP format. There are no pre-compiled linux binaries of that software, and it doesn't like to compile on modern systems without a few tweaks to the Makefile (someone else apparently ran into the same problem and put in a PR to fix it, so be sure to check that out if you run into it, as well), but once that was taken care of it, the program was easily scriptable to hit the entire set all at once. Of course, if you don't want to fool with it, you can just download my full set of instruments here

Not all songs have instruments embedded, apparently (hence, some folders are empty; maybe those are using the PSG chip instead? Sonic CD doesn't have any because it's using CD audio, of course). Furthermore, many of the resulting instruments are very similar/redundant, possibly a result of widespread use of the GEMS software for development.

Monday, October 14, 2019

Adding Genesis/MD to MC-Cthulhu

So, about a year ago I had been working on a plan for a universal arcade stick with support for a bunch of retro consoles plus PC and PS3 (via an MC-Cthulhu board), Sega Genesis / Mega Drive via a padhacked 6-button pad from eBay and Xbox 360 via a leftover control board from one of my Mad Catz sticks.

360 and Cthulhu were supposed to share the same USB-over-RJ45 with a toggle switch to go between them and Genesis/MD was going to have a little pigtail that could hook up to an extension cable when needed. When I got the 360 board wired into the Cthulhu, though, everything went haywire with phantom button presses and all sorts of nonsense. This got me pretty bummed out about the whole project and I put it on ice.

However, there's been a lot of interest over on my MC-Cthulhu pinout page from people trying to integrate Genesis/MD input with the Cthulhu board since then, so I figured I'd better at least finish up that part and report my experience, which I finally did last night.

I won't go into a ton of detail in this post, as the "how" bits have already been covered in my other posts (linked above), so instead I'll focus on what worked and what didn't.

First off, I had originally tried swapping between the Cthulhu and the 360 board (before I abandoned it) using a momentary DPDT switch like you find on a guitar foot pedal. I wanted something tough that was hard to press, so it wouldn't trigger accidentally mid-game. This ended up being the wrong tool for the job, though, as it only switched to the other board while the switch was actually held down. So, I switched over to an ON/ON DPDT 2-position switch. I'm pretty confident this would have worked as intended had my 360 board wanted to cooperate.

The way the switch is supposed to work is: from your USB, you have 4 lines--GND, 5v, Data+ and Data-. The 5v and GND are wired onto the extra solder points on the Cthulhu (that is, the 3 sets of thru-holes where you solder on the RJ45 lines) and the Data+/- lines are wired onto the switch, with 2 coming from the Cthulhu and 2 coming the 360 board's USB header. The output lines from the switch (typically the 2 center leads) connect to the RJ45 lines. In normal use, both boards will be powered (whenever you do a multi-board solution, all boards need their voltage and ground lines connected together at all times) but the one that actually sends/receives data will be controlled by the toggle switch.

Once I got the boards wired together and noticed the strange behavior, I did a lot of troubleshooting and determined that just having the 5v and GND lines linked up was enough to break everything, so that was that. I may revisit it another time with a different 360 board, but for now I decided to just drop 360 support altogether. With the 360 board out of the picture, I didn't need the switch anymore, but I just left it on there anyway rather than having a gaping hole in the side of my stick for dust and liquids to sneak in. Plus, now I have a little fidget thingie I can fiddle with between matches.

sorry for blurry pic :(

Moving on to the Genesis/MD pad, there wasn't really anything unexpected. I soldered the padhack's button lines to the secondary soldering points on the Cthulhu (the 2 rows of thru-holes labeled A-H and 1-9) as outlined at the end of my pinout post and it all works great. The crummy pad I used has a very short cable, which made it super-easy to cram into my already-crowded Mad Catz SE chassis.
Yes, the wiring is a mess. Good thing nobody ever sees it but me (and now you)
You'll notice I did a little loop around a screw post before sending the connector out the back side. That's to prevent the wire from tugging on the pad PCB and ripping out my solder joints. I also covered the entire PCB and solder points with electrical tape to prevent any stray grounding/bridging.
The pigtail. It's pretty unobtrusive without the extension cable attached
You might also notice that I removed the 360 home/LED/turbo panel with a 3D-printed blank, which just barely fits a 24 mm button to serve as the Cthulhu's HOME button.

While I was at it, I took a tip from u/gongfuren on reddit's r/fightsticks board and swapped out some plungers on my short-stem IL competition buttons for a cool "bullseye" look and also removed the springs from the buttons, which gives them a much lighter touch. They're still a lot stiffer than Sanwa buttons (which is good, IMO, as I like to rest my hands on the buttons) but they feel significantly more responsive than with the spring, and they still keep their satisfying cherry click.

Here's the final result:
And here's my other IL stick that I swapped plungers with:

Sunday, September 24, 2017

Padhacking a Terrible Genesis 6-button Controller

I recently got a model 1 Sega Genesis and an Everdrive MD and have been playing a lot of the great shmups and arcade ports. The standard 3-button pads are not great, period, but they're especially crummy for those sorts of games (Street Fighter is basically impossible), so I figured I'd seek out some 6-button pads.

Legit 6-button pads from Sega are quite nice, but they're getting more expensive these days (like everything retro, amirite?), so I decided to check out some of the cheap knockoffs. The cheapest ones I could find were going for $8 for 2 pads on eBay and, while I expected them to be shitty, they're worse than I ever imagined:
The Fighting Putt 6B packaging. Both pads I received looked as if they'd been sat upon.
The buttons are so loose I was worried they would fall right out of the cheap plastic casing. The controllers themselves weigh almost nothing and their cord is a measly 3 feet long. The funniest quirk, IMO, is that they only used 4 screws to connect the housing instead of the 5 Sega used, but they put in a fake plastic screw just to keep up appearances:
Very clever, guys. Nobody suspects a thing.
Between the laughably short cord and the awful buttons, I decided to check out the PCB to see if it might be worth putting into an arcade stick (I already have a PS360+ multi-console board, which covers every console I care about except the Genesis/MD, so this would be useful). It turns out that the PCB is actually really great for this purpose, with a common-ground design and nice, big soldering pads for each input:
Here's a shot with wires soldered onto the pads:
And here's one with the solder joints smothered in hot glue for long-term stability:
I hooked it into an existing stick I had lying around and everything works perfectly. After the price of an extension cable, I'm still looking at sub-$10, so not too bad. I wouldn't recommend the Fighting Putt 6Bs for general use, but they're great for padhacking.

Monday, September 26, 2011

Pixel Shaders in Genesis, GBA, GBC Emulation

If you've looked at any of the amazing pixel shaders available for bsnes, such as the collaborative CRT shader from cgwg and DOLLS or Themaister's dot-n-bloom, you may have wanted to use them with other systems, such as Sega Genesis or Gameboy Advance. Well, now you can! Update (10/03/2011): now it works with Final Burn Alpha, as well. Update (10/5/2011): I'm adding download links for Windows binaries of the various libraries, when possible.

Themaister wrote some "hacky" wrappers around Genesis Plus GX, Visualboy Advance and Gambatte that route their APIs to match up with that of libsnes. That means any frontend for libsnes, such as Themaister's own SSNES, can now serve as a frontend for these excellent emulators. Thus, any features of the frontend, such as SSNES' real-time rewind and FFMPEG-powered video dumping capabilities, get baked in automatically. This also extends SSNES' badass GGPO-style netplay to all of these systems (where applicable, of course).

If you're using Ubuntu or another Debian-based distro, you can get precompiled binaries from my PPA repo. Other *nixes can compile them from source. The only dependencies are git (not even totally necessary if you manually download the source via http), a compiler that supports C++98 or higher (gcc-3.4 and up, IIRC) and zlib (in Debian-based distros, it's the zlib1g-dev package).

So, open a terminal and type:

For Genesis Plus GX:
git clone https://github.com/twinaphex/genesis-next
cd megadrive-next/src/libsnes
make

Download Windows libsnes-genesisplusgx binaries
(you may need to rename zlib.dll to libz-1.dll for it to work)

For Visualboy Advance (vba):
git clone git://github.com/Themaister/gba-next.git
cd trunk/platform/libsnes
make

For Gambatte:
git clone git://github.com/Themaister/gambatte-libsnes.git --branch libsnes
cd gambatte-libsnes/libgambatte/libsnes
make

For Final Burn Alpha (fba):
git clone git://github.com/twinaphex/fba-next-slim.git
cd fba-next-slim/src/burner/libsnes
make

Download Windows libsnes-fba binaries

The resulting libraries will all be called libsnes.so. In my packages, the libraries are named according to the emulator (libsnes-*.so) so you can have them all peacefully coexist.

One thing to be aware of: SSNES-Phoenix's file browser will filter out non-SNES extensions, so you'll have to manually type the filenames unless/until Themaister does anything about it.

Screenshots (dot-n-bloom shader is used for the GBC and GBA screenshots, CRT is used for Genesis and FBA):


Analytics Tracking Footer