IRQsome / MegaYume

SEGA Mega Drive emulator for Parallax P2 + memory expansion
7 stars 0 forks source link
emulator propeller2 sega-mega-drive

MegaYume

-= SEGA MEGA DRIVE EMULATOR =-

MegaYume is a SEGA Mega Drive / Genesis emulator for Parallax P2 micro-controllers with appropriate memory expansions (Currently supported: HyperRAM, 4xQPI PSRAM, 2xQPI PSRAM, 1x QPI PSRAM).

Features include:

See the issues section of this GitHub repository for known issues.

Forum thread, chronicalling development and other interesting info: https://forums.parallax.com/discussion/173381/console-emulation/p1

Usage

If you want to download some freeware ROMs to play around with, here's a couple:

USB Controllers

Many different kinds of USB controller are supported. For multiplayer, a USB Hub must be used.

The default input map is as follows:

MegaDrive button Keyboard (QWERTY) Generic Gamepad XInput / PS3 RetroBit 6-button Neo Geo mini
Directions Arrow Keys X/Y axes or Hat Left stick or D-Pad D-Pad D-Pad
A X Button 4 X / Square A A
B C Button 3 A / Cross B B
C V Button 2 B / Circle C D
Start Enter Button 10 Start / Start Start Start
X S Button 5 LT / L2 X N/A
Y D Button 1 Y / Triangle Y N/A
Z F Button 6 RT / R2 Z N/A
Mode A Button 9 Select / Select Mode (or Start+X) N/A

Gamepad maps can be user configured through a PADMAP.TXT file placed in the SD card root.

Each line may have the following format:

megayume <VID and PID> <Y> <C> <B> <A> <X> <Z> <ignored> <ignored> <Mode> <Start> # <Comment>

For example:

megayume 20D6A713   4  3  2  1  5  6  7  8  9  10 # PowerA Switch controller

A mapping is detected as a 6-button controller if X, Y and Z are all mapped.

Mappings for the NeoGeo mini controller (ID 0E6F1112) and RetroBit USB controllers (ID 0F0D00C1) are built-in to MegaYume, but can still be overridden using a PADMAP.TXT rule.

For more information on PADMAP.TXT, see the usbnew documentation.

Keyboard controls can currently not be reconfigured (except by editing the source code). The keyboard always controls Player 1, independently of any connected game controllers.

MegaYume uses a modified version of usbnew for usb input support, see the usbnew wiki for info on further information on device compatibility.

Project Files

config.spin2 User config include file
RAMCONFIG.MD External memory configuration guide
build.sh Standard build script
build_gbrk.sh Build script for core debugging
build_comptest.sh Build script for compiler testing
megayume_lower.spin2 Assembly language emulation core (68000,Z80,VDP,Audio,glue)
megayume_upper.spin2 Spin2 upstart code and GUI
fsadapter.c File system helper functions
MegaVGA.spin2 Custom video driver
usbnew.spin2 USB Input driver
padmap_parser.spin2 PADMAP.TXT parser
OPN2_ROM.DAT YM2612 quarter-sine and antilog ROM
CRAM2RGB.DAT CRAM to truecolor expansion table
cram_tablegen.rb Can generate the above
padmap_builtin.dat Compiled builtin gamepad maps
padmap_builtin.rb Can generate the above
FUNSCII.DAT main UI font (funscii 8x8)
MISAKI4W.DAT JIS font, half-width part (Misaki Gothic 2nd)
MISAKI8W.DAT JIS font, full-width part (Misaki Gothic 2nd)
memstuff Various (mostly outdated) things to do with external memory