Mednafen - Multiemulador 9 en 1

#4486

A primera vista nos encontramos con un multiemulador de la vieja escuela, es decir nada de interfaces gráficas y todo bajo líneas de comandos, pero precisamente en su basicidad está su grandeza.

Es capaz de emular los siguientes sistemas:

  • Atari Lynx
  • Nintendo Gameboy y Gameboy Color
  • Nintendo Gameboy Advance
  • Nintendo NES
  • NEC PC Engine , Turbografx 16 y CD
  • NEC Supergrafx
  • SNK Neo Geo Pocket y Neo Geo Pocket Color
  • NEC PC-FX
  • Bandai WonderSwan y WonderSwan Color

Para usarlo basta con escribir la expresión siguiente:

mednafen.exe [opciones] [archivo]

Es decir no tenemos que señalarle el sistema a utilizar, simplemente con poner la ruta del archivo a ejecutar se seleccionará el sistema adecuado.

También podemos editar el archivo mednafen.cfg y modificar por nuestra cuenta las distintas posibilidades que ofrece.

Configuración previa

Si queremos utilizar la emulación de la plataforma PC Engine CD primero necesitaremos una de las dos bios necesarias para ejecutar los juegos, llamadas syscard2.pce y syscard3.pce.
Una vez las tengamos recomiendo ponerlas en la misma ruta donde esté el ejecutable de mednafen y pasamos a indicarselo abriendo una ventana de línea de comandos y escribimos lo siguiente:

mednafen1.png

De igual forma haremos con las bios de Nintendo Gameboy Advance

mednafen -gba.bios "c:\menafen\gba.bin"

y con la de NEC PC-FX

mednafen -pcfx.bios "c:\menafen\pcfx.bin"

Así mismo debemos tener también en el directorio del ejecutable el archivo lynxboot.img que es el archivo de bios para la plataforma Atari Lynx.

Lamentándolo mucho no podemos decir de dónde descargar los anteriores ficheros, pero a poco que busquemos los encontraremos.

Configuraciones avanzadas

Lo único que nos falta es dejar el emulador visualmente correcto y para ello tenemos tres opciones.

  1. Introducir los comandos a mano.
  2. Editar el fichero mednafen.cfg
  3. Descargar un GUI para el emulador llamado mednafen GUI desde aquí . Para hecer funcionar este archivo necesitaremos Microsoft .NET Framework 3.5 sp1 no necesario en caso de ser usuarios de Windows 7 que lo trae instalado de serie.

La mejor opción para mi gusto es la segunda a menos que seamos duchos en el trabajo con la línea de comandos o bien solamente queramos ejecutar algún juego específico.

Si editamos el archivo mednafen.cfg nos encontramos lo siguiente:

;VERSION 0.8.C
;Edit this file at your own risk!
;File format: 

;Compressor to use with state rewinding:  "minilzo", "quicklz", or "blz"
srwcompressor minilzo

;Number of frames to keep states for when state rewinding is enabled.
srwframes 600

;If value is true, use an alternate naming scheme(file base and numeric) for screen snapshots.
snapname 0

;Include the MD5 hash of the loaded game in the filenames of the data file(save states, SRAM backups) Mednafen creates.
dfmd5 1

;Enable simple error correction of raw data sector rips by evaluating L-EC and EDC data.
cdrom.lec_eval 1

;Path override for screen snapshots.
path_snap 

;Path override for save games and nonvolatile memory.
path_sav 

;Path override for save states.
path_state 

;Path override for movies.
path_movie 

;Path override for cheats.
path_cheat 

;Path override for custom palettes.
path_palette 

;Write screen snapshots to the same directory the ROM/disk/disc image is in.
filesys.snap_samedir 0

;Write/Read save games and nonvolatile memory to/from the same directory the ROM/disk/disc image is in.
filesys.sav_samedir 0

;Write/Read save states to/from the same directory the ROM/disk/disc image is in.
filesys.state_samedir 0

;Write/Read movies to/from the same directory the ROM/disk/disc image is in.
filesys.movie_samedir 0

;Disable gzip compression when saving save states and backup memory.
filesys.disablesavegz 0

;Blur each frame with the last frame.
gb.vblur 0

;Accumulate color data rather than discarding it.
gb.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
gb.vblur.accum.amount 50

;Blur each frame with the last frame.
gba.vblur 0

;Accumulate color data rather than discarding it.
gba.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
gba.vblur.accum.amount 50

;Blur each frame with the last frame.
gg.vblur 0

;Accumulate color data rather than discarding it.
gg.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
gg.vblur.accum.amount 50

;Blur each frame with the last frame.
lynx.vblur 0

;Accumulate color data rather than discarding it.
lynx.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
lynx.vblur.accum.amount 50

;Blur each frame with the last frame.
nes.vblur 0

;Accumulate color data rather than discarding it.
nes.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
nes.vblur.accum.amount 50

;Blur each frame with the last frame.
ngp.vblur 0

;Accumulate color data rather than discarding it.
ngp.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
ngp.vblur.accum.amount 50

;Blur each frame with the last frame.
pce.vblur 0

;Accumulate color data rather than discarding it.
pce.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
pce.vblur.accum.amount 50

;Blur each frame with the last frame.
pcfx.vblur 0

;Accumulate color data rather than discarding it.
pcfx.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
pcfx.vblur.accum.amount 50

;Blur each frame with the last frame.
sms.vblur 0

;Accumulate color data rather than discarding it.
sms.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
sms.vblur.accum.amount 50

;Blur each frame with the last frame.
wswan.vblur 0

;Accumulate color data rather than discarding it.
wswan.vblur.accum 0

;Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
wswan.vblur.accum.amount 50

;Enable cheats.
cheats 1

;Network play server hostname.
nethost fobby.net

;Port to connect to on the server.
netport 4046

;Password to connect to the netplay server.
netpassword 

;Number of local players for network play.
netlocalplayers 1

;Nickname to use for network play chat.
netnick 

;Key to hash with the MD5 hash of the game.
netgamekey 

;Merge input to this player # on the server.
netmerge 0

;Use small(tiny!) font for netplay chat console.
netsmallfont 0

;Full-screen horizontal resolution.
nes.xres 640

;Full-screen vertical resolution.
nes.yres 480

;The scaling factor for the X axis.
nes.xscale 2

;The scaling factor for the Y axis.
nes.yscale 2

;The scaling factor for the X axis in fullscreen mode.
nes.xscalefs 2

;The scaling factor for the Y axis in fullscreen mode.
nes.yscalefs 2

;Enable scanlines with specified transparency.
nes.scanlines 0

;Stretch to fill screen.
nes.stretch 0

;Enable bilinear interpolation.
nes.videoip 0

;Enable specified special video scaler.
nes.special none

;Enable specified OpenGL pixel shader.
nes.pixshader none

;Full-screen horizontal resolution.
gb.xres 800

;Full-screen vertical resolution.
gb.yres 600

;The scaling factor for the X axis.
gb.xscale 4

;The scaling factor for the Y axis.
gb.yscale 4

;The scaling factor for the X axis in fullscreen mode.
gb.xscalefs 4

;The scaling factor for the Y axis in fullscreen mode.
gb.yscalefs 4

;Enable scanlines with specified transparency.
gb.scanlines 0

;Stretch to fill screen.
gb.stretch 0

;Enable bilinear interpolation.
gb.videoip 0

;Enable specified special video scaler.
gb.special none

;Enable specified OpenGL pixel shader.
gb.pixshader none

;Full-screen horizontal resolution.
gba.xres 800

;Full-screen vertical resolution.
gba.yres 600

;The scaling factor for the X axis.
gba.xscale 3

;The scaling factor for the Y axis.
gba.yscale 3

;The scaling factor for the X axis in fullscreen mode.
gba.xscalefs 3

;The scaling factor for the Y axis in fullscreen mode.
gba.yscalefs 3

;Enable scanlines with specified transparency.
gba.scanlines 0

;Stretch to fill screen.
gba.stretch 0

;Enable bilinear interpolation.
gba.videoip 0

;Enable specified special video scaler.
gba.special none

;Enable specified OpenGL pixel shader.
gba.pixshader none

;Full-screen horizontal resolution.
gg.xres 640

;Full-screen vertical resolution.
gg.yres 480

;The scaling factor for the X axis.
gg.xscale 3

;The scaling factor for the Y axis.
gg.yscale 3

;The scaling factor for the X axis in fullscreen mode.
gg.xscalefs 2

;The scaling factor for the Y axis in fullscreen mode.
gg.yscalefs 2

;Enable scanlines with specified transparency.
gg.scanlines 0

;Stretch to fill screen.
gg.stretch 0

;Enable bilinear interpolation.
gg.videoip 0

;Enable specified special video scaler.
gg.special none

;Enable specified OpenGL pixel shader.
gg.pixshader none

;Full-screen horizontal resolution.
lynx.xres 800

;Full-screen vertical resolution.
lynx.yres 600

;The scaling factor for the X axis.
lynx.xscale 4

;The scaling factor for the Y axis.
lynx.yscale 4

;The scaling factor for the X axis in fullscreen mode.
lynx.xscalefs 4

;The scaling factor for the Y axis in fullscreen mode.
lynx.yscalefs 4

;Enable scanlines with specified transparency.
lynx.scanlines 0

;Stretch to fill screen.
lynx.stretch 0

;Enable bilinear interpolation.
lynx.videoip 0

;Enable specified special video scaler.
lynx.special none

;Enable specified OpenGL pixel shader.
lynx.pixshader none

;Full-screen horizontal resolution.
ngp.xres 640

;Full-screen vertical resolution.
ngp.yres 480

;The scaling factor for the X axis.
ngp.xscale 4

;The scaling factor for the Y axis.
ngp.yscale 4

;The scaling factor for the X axis in fullscreen mode.
ngp.xscalefs 3

;The scaling factor for the Y axis in fullscreen mode.
ngp.yscalefs 3

;Enable scanlines with specified transparency.
ngp.scanlines 0

;Stretch to fill screen.
ngp.stretch 0

;Enable bilinear interpolation.
ngp.videoip 0

;Enable specified special video scaler.
ngp.special none

;Enable specified OpenGL pixel shader.
ngp.pixshader none

;Full-screen horizontal resolution.
pce.xres 800

;Full-screen vertical resolution.
pce.yres 600

;The scaling factor for the X axis.
pce.xscale 1

;The scaling factor for the Y axis.
pce.yscale 1

;The scaling factor for the X axis in fullscreen mode.
pce.xscalefs 1

;The scaling factor for the Y axis in fullscreen mode.
pce.yscalefs 1

;Enable scanlines with specified transparency.
pce.scanlines 0

;Stretch to fill screen.
pce.stretch 1

;Enable bilinear interpolation.
pce.videoip 0

;Enable specified special video scaler.
pce.special none

;Enable specified OpenGL pixel shader.
pce.pixshader none

;Full-screen horizontal resolution.
pcfx.xres 1024

;Full-screen vertical resolution.
pcfx.yres 768

;The scaling factor for the X axis.
pcfx.xscale 3

;The scaling factor for the Y axis.
pcfx.yscale 3

;The scaling factor for the X axis in fullscreen mode.
pcfx.xscalefs 3

;The scaling factor for the Y axis in fullscreen mode.
pcfx.yscalefs 3

;Enable scanlines with specified transparency.
pcfx.scanlines 0

;Stretch to fill screen.
pcfx.stretch 0

;Enable bilinear interpolation.
pcfx.videoip 1

;Enable specified special video scaler.
pcfx.special none

;Enable specified OpenGL pixel shader.
pcfx.pixshader none

;Full-screen horizontal resolution.
player.xres 800

;Full-screen vertical resolution.
player.yres 600

;The scaling factor for the X axis.
player.xscale 2

;The scaling factor for the Y axis.
player.yscale 2

;The scaling factor for the X axis in fullscreen mode.
player.xscalefs 2

;The scaling factor for the Y axis in fullscreen mode.
player.yscalefs 2

;Enable scanlines with specified transparency.
player.scanlines 0

;Stretch to fill screen.
player.stretch 0

;Enable bilinear interpolation.
player.videoip 0

;Enable specified special video scaler.
player.special none

;Enable specified OpenGL pixel shader.
player.pixshader none

;Full-screen horizontal resolution.
sms.xres 640

;Full-screen vertical resolution.
sms.yres 480

;The scaling factor for the X axis.
sms.xscale 3

;The scaling factor for the Y axis.
sms.yscale 3

;The scaling factor for the X axis in fullscreen mode.
sms.xscalefs 2

;The scaling factor for the Y axis in fullscreen mode.
sms.yscalefs 2

;Enable scanlines with specified transparency.
sms.scanlines 0

;Stretch to fill screen.
sms.stretch 0

;Enable bilinear interpolation.
sms.videoip 0

;Enable specified special video scaler.
sms.special none

;Enable specified OpenGL pixel shader.
sms.pixshader none

;Full-screen horizontal resolution.
wswan.xres 640

;Full-screen vertical resolution.
wswan.yres 480

;The scaling factor for the X axis.
wswan.xscale 3

;The scaling factor for the Y axis.
wswan.yscale 3

;The scaling factor for the X axis in fullscreen mode.
wswan.xscalefs 2

;The scaling factor for the Y axis in fullscreen mode.
wswan.yscalefs 2

;Enable scanlines with specified transparency.
wswan.scanlines 0

;Stretch to fill screen.
wswan.stretch 0

;Enable bilinear interpolation.
wswan.videoip 0

;Enable specified special video scaler.
wswan.special none

;Enable specified OpenGL pixel shader.
wswan.pixshader none

;Enable fullscreen mode.
fs 1

;Select video driver, "opengl" or "sdl".
vdriver opengl

;Attempt to synchronize OpenGL page flips to vertical retrace period.
glvsync 1

;Fast-forwarding speed multiplier.
ffspeed 4

;Treat the fast-forward button as a toggle.
fftoggle 0

;Silence sound output when fast-forwarding.
ffnosound 0

;Auto-fire frequency.
autofirefreq 3

;Threshold for detecting a "button" press on analog axis, in percent.
analogthreshold 75

;The length of time, in milliseconds, that a button/key corresponding to a "dangerous" command like power, reset, exit, etc. must be pressed before the command is executed.
ckdelay 0

;Disable speed throttling when sound is disabled.
nothrottle 0

;Automatically save and load save states when a game is closed or loaded, respectively.
autosave 0

;Select sound driver.
sounddriver default

;Select sound output device.
sounddevice default

;Sound volume level, in percent.
soundvol 75

;Enable sound emulation.
sound 1

;Specifies the desired size of the sound buffer, in milliseconds.
soundbufsize 52

;Specifies the sound playback rate, in frames per second("Hz").
soundrate 22050

;Enable the help screen.
helpenabled 1

;Automatically go into the debugger's step mode after a game is loaded.
debugger.autostepmode 0

;Character set for the debugger's memory editor.
nes.debugger.memcharset UTF-8

;Character set for the debugger's memory editor.
pce.debugger.memcharset shift_jis

;Character set for the debugger's memory editor.
pcfx.debugger.memcharset shift_jis

;Character set for the debugger's memory editor.
wswan.debugger.memcharset UTF-8

;Disassembly font size(xsmall, small, medium, large).
nes.debugger.disfontsize small

;Disassembly font size(xsmall, small, medium, large).
pce.debugger.disfontsize small

;Disassembly font size(xsmall, small, medium, large).
pcfx.debugger.disfontsize small

;Disassembly font size(xsmall, small, medium, large).
wswan.debugger.disfontsize small

;The length of time, in milliseconds, to display the save state or the movie selector after selecting a state or movie.
osd.state_display_time 2000

;nes, Port 1, Gamepad: A
nes.input.port1.gamepad.a keyboard 259

;nes, Port 1, Gamepad: Rapid A
nes.input.port1.gamepad.rapid_a 

;nes, Port 1, Gamepad: B
nes.input.port1.gamepad.b keyboard 258

;nes, Port 1, Gamepad: Rapid B
nes.input.port1.gamepad.rapid_b 

;nes, Port 1, Gamepad: SELECT
nes.input.port1.gamepad.select keyboard 9

;nes, Port 1, Gamepad: START
nes.input.port1.gamepad.start keyboard 13

;nes, Port 1, Gamepad: UP ↑
nes.input.port1.gamepad.up keyboard 119

;nes, Port 1, Gamepad: DOWN ↓
nes.input.port1.gamepad.down keyboard 122

;nes, Port 1, Gamepad: LEFT ←
nes.input.port1.gamepad.left keyboard 97

;nes, Port 1, Gamepad: RIGHT →
nes.input.port1.gamepad.right keyboard 115

;nes, Port 1, Zapper: Trigger
nes.input.port1.zapper.trigger mouse 0

;nes, Port 1, Zapper: Away Trigger
nes.input.port1.zapper.away_trigger mouse 2

;nes, Port 1, Power Pad Side A: 1
nes.input.port1.powerpada.1 keyboard 111

;nes, Port 1, Power Pad Side A: 2
nes.input.port1.powerpada.2 keyboard 112

;nes, Port 1, Power Pad Side A: 3
nes.input.port1.powerpada.3 keyboard 91

;nes, Port 1, Power Pad Side A: 4
nes.input.port1.powerpada.4 keyboard 93

;nes, Port 1, Power Pad Side A: 5
nes.input.port1.powerpada.5 keyboard 107

;nes, Port 1, Power Pad Side A: 6
nes.input.port1.powerpada.6 keyboard 108

;nes, Port 1, Power Pad Side A: 7
nes.input.port1.powerpada.7 keyboard 59

;nes, Port 1, Power Pad Side A: 8
nes.input.port1.powerpada.8 keyboard 39

;nes, Port 1, Power Pad Side A: 9
nes.input.port1.powerpada.9 keyboard 109

;nes, Port 1, Power Pad Side A: 10
nes.input.port1.powerpada.10 keyboard 44

;nes, Port 1, Power Pad Side A: 11
nes.input.port1.powerpada.11 keyboard 46

;nes, Port 1, Power Pad Side A: 12
nes.input.port1.powerpada.12 keyboard 47

;nes, Port 1, Power Pad Side B: 1
nes.input.port1.powerpadb.1 

;nes, Port 1, Power Pad Side B: 2
nes.input.port1.powerpadb.2 

;nes, Port 1, Power Pad Side B: 3
nes.input.port1.powerpadb.3 

;nes, Port 1, Power Pad Side B: 4
nes.input.port1.powerpadb.4 

;nes, Port 1, Power Pad Side B: 5
nes.input.port1.powerpadb.5 

;nes, Port 1, Power Pad Side B: 6
nes.input.port1.powerpadb.6 

;nes, Port 1, Power Pad Side B: 7
nes.input.port1.powerpadb.7 

;nes, Port 1, Power Pad Side B: 8
nes.input.port1.powerpadb.8 

;nes, Port 1, Power Pad Side B: 9
nes.input.port1.powerpadb.9 

;nes, Port 1, Power Pad Side B: 10
nes.input.port1.powerpadb.10 

;nes, Port 1, Power Pad Side B: 11
nes.input.port1.powerpadb.11 

;nes, Port 1, Power Pad Side B: 12
nes.input.port1.powerpadb.12 

;nes, Port 1, Arkanoid Paddle: Button
nes.input.port1.arkanoid.button mouse 0

;nes, Port 2, Gamepad: A
nes.input.port2.gamepad.a 

;nes, Port 2, Gamepad: Rapid A
nes.input.port2.gamepad.rapid_a 

;nes, Port 2, Gamepad: B
nes.input.port2.gamepad.b 

;nes, Port 2, Gamepad: Rapid B
nes.input.port2.gamepad.rapid_b 

;nes, Port 2, Gamepad: SELECT
nes.input.port2.gamepad.select 

;nes, Port 2, Gamepad: START
nes.input.port2.gamepad.start 

;nes, Port 2, Gamepad: UP ↑
nes.input.port2.gamepad.up 

;nes, Port 2, Gamepad: DOWN ↓
nes.input.port2.gamepad.down 

;nes, Port 2, Gamepad: LEFT ←
nes.input.port2.gamepad.left 

;nes, Port 2, Gamepad: RIGHT →
nes.input.port2.gamepad.right 

;nes, Port 2, Zapper: Trigger
nes.input.port2.zapper.trigger mouse 0

;nes, Port 2, Zapper: Away Trigger
nes.input.port2.zapper.away_trigger mouse 2

;nes, Port 2, Power Pad Side A: 1
nes.input.port2.powerpada.1 keyboard 111

;nes, Port 2, Power Pad Side A: 2
nes.input.port2.powerpada.2 keyboard 112

;nes, Port 2, Power Pad Side A: 3
nes.input.port2.powerpada.3 keyboard 91

;nes, Port 2, Power Pad Side A: 4
nes.input.port2.powerpada.4 keyboard 93

;nes, Port 2, Power Pad Side A: 5
nes.input.port2.powerpada.5 keyboard 107

;nes, Port 2, Power Pad Side A: 6
nes.input.port2.powerpada.6 keyboard 108

;nes, Port 2, Power Pad Side A: 7
nes.input.port2.powerpada.7 keyboard 59

;nes, Port 2, Power Pad Side A: 8
nes.input.port2.powerpada.8 keyboard 39

;nes, Port 2, Power Pad Side A: 9
nes.input.port2.powerpada.9 keyboard 109

;nes, Port 2, Power Pad Side A: 10
nes.input.port2.powerpada.10 keyboard 44

;nes, Port 2, Power Pad Side A: 11
nes.input.port2.powerpada.11 keyboard 46

;nes, Port 2, Power Pad Side A: 12
nes.input.port2.powerpada.12 keyboard 47

;nes, Port 2, Power Pad Side B: 1
nes.input.port2.powerpadb.1 

;nes, Port 2, Power Pad Side B: 2
nes.input.port2.powerpadb.2 

;nes, Port 2, Power Pad Side B: 3
nes.input.port2.powerpadb.3 

;nes, Port 2, Power Pad Side B: 4
nes.input.port2.powerpadb.4 

;nes, Port 2, Power Pad Side B: 5
nes.input.port2.powerpadb.5 

;nes, Port 2, Power Pad Side B: 6
nes.input.port2.powerpadb.6 

;nes, Port 2, Power Pad Side B: 7
nes.input.port2.powerpadb.7 

;nes, Port 2, Power Pad Side B: 8
nes.input.port2.powerpadb.8 

;nes, Port 2, Power Pad Side B: 9
nes.input.port2.powerpadb.9 

;nes, Port 2, Power Pad Side B: 10
nes.input.port2.powerpadb.10 

;nes, Port 2, Power Pad Side B: 11
nes.input.port2.powerpadb.11 

;nes, Port 2, Power Pad Side B: 12
nes.input.port2.powerpadb.12 

;nes, Port 2, Arkanoid Paddle: Button
nes.input.port2.arkanoid.button mouse 0

;nes, Port 3, Gamepad: A
nes.input.port3.gamepad.a 

;nes, Port 3, Gamepad: Rapid A
nes.input.port3.gamepad.rapid_a 

;nes, Port 3, Gamepad: B
nes.input.port3.gamepad.b 

;nes, Port 3, Gamepad: Rapid B
nes.input.port3.gamepad.rapid_b 

;nes, Port 3, Gamepad: SELECT
nes.input.port3.gamepad.select 

;nes, Port 3, Gamepad: START
nes.input.port3.gamepad.start 

;nes, Port 3, Gamepad: UP ↑
nes.input.port3.gamepad.up 

;nes, Port 3, Gamepad: DOWN ↓
nes.input.port3.gamepad.down 

;nes, Port 3, Gamepad: LEFT ←
nes.input.port3.gamepad.left 

;nes, Port 3, Gamepad: RIGHT →
nes.input.port3.gamepad.right 

;nes, Port 4, Gamepad: A
nes.input.port4.gamepad.a 

;nes, Port 4, Gamepad: Rapid A
nes.input.port4.gamepad.rapid_a 

;nes, Port 4, Gamepad: B
nes.input.port4.gamepad.b 

;nes, Port 4, Gamepad: Rapid B
nes.input.port4.gamepad.rapid_b 

;nes, Port 4, Gamepad: SELECT
nes.input.port4.gamepad.select 

;nes, Port 4, Gamepad: START
nes.input.port4.gamepad.start 

;nes, Port 4, Gamepad: UP ↑
nes.input.port4.gamepad.up 

;nes, Port 4, Gamepad: DOWN ↓
nes.input.port4.gamepad.down 

;nes, Port 4, Gamepad: LEFT ←
nes.input.port4.gamepad.left 

;nes, Port 4, Gamepad: RIGHT →
nes.input.port4.gamepad.right 

;nes, Famicom Expansion Port, Arkanoid Paddle: Button
nes.input.fcexp.arkanoid.button mouse 0

;nes, Famicom Expansion Port, Space Shadow Gun: Trigger
nes.input.fcexp.shadow.trigger 

;nes, Famicom Expansion Port, Space Shadow Gun: Away Trigger
nes.input.fcexp.shadow.away_trigger 

;nes, Famicom Expansion Port, Family Keyboard: F1
nes.input.fcexp.fkb.f1 keyboard 282

;nes, Famicom Expansion Port, Family Keyboard: F2
nes.input.fcexp.fkb.f2 keyboard 283

;nes, Famicom Expansion Port, Family Keyboard: F3
nes.input.fcexp.fkb.f3 keyboard 284

;nes, Famicom Expansion Port, Family Keyboard: F4
nes.input.fcexp.fkb.f4 keyboard 285

;nes, Famicom Expansion Port, Family Keyboard: F5
nes.input.fcexp.fkb.f5 keyboard 286

;nes, Famicom Expansion Port, Family Keyboard: F6
nes.input.fcexp.fkb.f6 keyboard 287

;nes, Famicom Expansion Port, Family Keyboard: F7
nes.input.fcexp.fkb.f7 keyboard 288

;nes, Famicom Expansion Port, Family Keyboard: F8
nes.input.fcexp.fkb.f8 keyboard 289

;nes, Famicom Expansion Port, Family Keyboard: 1
nes.input.fcexp.fkb.1 keyboard 49

;nes, Famicom Expansion Port, Family Keyboard: 2
nes.input.fcexp.fkb.2 keyboard 50

;nes, Famicom Expansion Port, Family Keyboard: 3
nes.input.fcexp.fkb.3 keyboard 51

;nes, Famicom Expansion Port, Family Keyboard: 4
nes.input.fcexp.fkb.4 keyboard 52

;nes, Famicom Expansion Port, Family Keyboard: 5
nes.input.fcexp.fkb.5 keyboard 53

;nes, Famicom Expansion Port, Family Keyboard: 6
nes.input.fcexp.fkb.6 keyboard 54

;nes, Famicom Expansion Port, Family Keyboard: 7
nes.input.fcexp.fkb.7 keyboard 55

;nes, Famicom Expansion Port, Family Keyboard: 8
nes.input.fcexp.fkb.8 keyboard 56

;nes, Famicom Expansion Port, Family Keyboard: 9
nes.input.fcexp.fkb.9 keyboard 57

;nes, Famicom Expansion Port, Family Keyboard: 0
nes.input.fcexp.fkb.0 keyboard 48

;nes, Famicom Expansion Port, Family Keyboard: -
nes.input.fcexp.fkb.minus keyboard 45

;nes, Famicom Expansion Port, Family Keyboard: ^
nes.input.fcexp.fkb.caret keyboard 61

;nes, Famicom Expansion Port, Family Keyboard: \
nes.input.fcexp.fkb.backslash keyboard 92

;nes, Famicom Expansion Port, Family Keyboard: STOP
nes.input.fcexp.fkb.stop keyboard 8

;nes, Famicom Expansion Port, Family Keyboard: ESC
nes.input.fcexp.fkb.escape keyboard 27

;nes, Famicom Expansion Port, Family Keyboard: Q
nes.input.fcexp.fkb.q keyboard 113

;nes, Famicom Expansion Port, Family Keyboard: W
nes.input.fcexp.fkb.w keyboard 119

;nes, Famicom Expansion Port, Family Keyboard: E
nes.input.fcexp.fkb.e keyboard 101

;nes, Famicom Expansion Port, Family Keyboard: R
nes.input.fcexp.fkb.r keyboard 114

;nes, Famicom Expansion Port, Family Keyboard: T
nes.input.fcexp.fkb.t keyboard 116

;nes, Famicom Expansion Port, Family Keyboard: Y
nes.input.fcexp.fkb.y keyboard 121

;nes, Famicom Expansion Port, Family Keyboard: U
nes.input.fcexp.fkb.u keyboard 117

;nes, Famicom Expansion Port, Family Keyboard: I
nes.input.fcexp.fkb.i keyboard 105

;nes, Famicom Expansion Port, Family Keyboard: O
nes.input.fcexp.fkb.o keyboard 111

;nes, Famicom Expansion Port, Family Keyboard: P
nes.input.fcexp.fkb.p keyboard 112

;nes, Famicom Expansion Port, Family Keyboard: @
nes.input.fcexp.fkb.at keyboard 96

;nes, Famicom Expansion Port, Family Keyboard: [
nes.input.fcexp.fkb.left_bracket keyboard 91

;nes, Famicom Expansion Port, Family Keyboard: RETURN
nes.input.fcexp.fkb.return keyboard 13

;nes, Famicom Expansion Port, Family Keyboard: CTR
nes.input.fcexp.fkb.ctrl keyboard 306

;nes, Famicom Expansion Port, Family Keyboard: A
nes.input.fcexp.fkb.a keyboard 97

;nes, Famicom Expansion Port, Family Keyboard: S
nes.input.fcexp.fkb.s keyboard 115

;nes, Famicom Expansion Port, Family Keyboard: D
nes.input.fcexp.fkb.d keyboard 100

;nes, Famicom Expansion Port, Family Keyboard: F
nes.input.fcexp.fkb.f keyboard 102

;nes, Famicom Expansion Port, Family Keyboard: G
nes.input.fcexp.fkb.g keyboard 103

;nes, Famicom Expansion Port, Family Keyboard: H
nes.input.fcexp.fkb.h keyboard 104

;nes, Famicom Expansion Port, Family Keyboard: J
nes.input.fcexp.fkb.j keyboard 106

;nes, Famicom Expansion Port, Family Keyboard: K
nes.input.fcexp.fkb.k keyboard 107

;nes, Famicom Expansion Port, Family Keyboard: L
nes.input.fcexp.fkb.l keyboard 108

;nes, Famicom Expansion Port, Family Keyboard: ;
nes.input.fcexp.fkb.semicolon keyboard 59

;nes, Famicom Expansion Port, Family Keyboard: :
nes.input.fcexp.fkb.colon keyboard 39

;nes, Famicom Expansion Port, Family Keyboard: ]
nes.input.fcexp.fkb.right_bracket keyboard 93

;nes, Famicom Expansion Port, Family Keyboard: カナ
nes.input.fcexp.fkb.kana keyboard 277

;nes, Famicom Expansion Port, Family Keyboard: Left SHIFT
nes.input.fcexp.fkb.left_shift keyboard 304

;nes, Famicom Expansion Port, Family Keyboard: Z
nes.input.fcexp.fkb.z keyboard 122

;nes, Famicom Expansion Port, Family Keyboard: X
nes.input.fcexp.fkb.x keyboard 120

;nes, Famicom Expansion Port, Family Keyboard: C
nes.input.fcexp.fkb.c keyboard 99

;nes, Famicom Expansion Port, Family Keyboard: V
nes.input.fcexp.fkb.v keyboard 118

;nes, Famicom Expansion Port, Family Keyboard: B
nes.input.fcexp.fkb.b keyboard 98

;nes, Famicom Expansion Port, Family Keyboard: N
nes.input.fcexp.fkb.n keyboard 110

;nes, Famicom Expansion Port, Family Keyboard: M
nes.input.fcexp.fkb.m keyboard 109

;nes, Famicom Expansion Port, Family Keyboard: ,
nes.input.fcexp.fkb.comma keyboard 44

;nes, Famicom Expansion Port, Family Keyboard: .
nes.input.fcexp.fkb.period keyboard 46

;nes, Famicom Expansion Port, Family Keyboard: /
nes.input.fcexp.fkb.slash keyboard 47

;nes, Famicom Expansion Port, Family Keyboard: Empty
nes.input.fcexp.fkb.empty keyboard 307

;nes, Famicom Expansion Port, Family Keyboard: Right SHIFT
nes.input.fcexp.fkb.right_shift keyboard 303

;nes, Famicom Expansion Port, Family Keyboard: GRPH
nes.input.fcexp.fkb.graph keyboard 308

;nes, Famicom Expansion Port, Family Keyboard: SPACE
nes.input.fcexp.fkb.space keyboard 32

;nes, Famicom Expansion Port, Family Keyboard: CLR
nes.input.fcexp.fkb.clear keyboard 127

;nes, Famicom Expansion Port, Family Keyboard: INS
nes.input.fcexp.fkb.insert keyboard 279

;nes, Famicom Expansion Port, Family Keyboard: DEL
nes.input.fcexp.fkb.delete keyboard 281

;nes, Famicom Expansion Port, Family Keyboard: UP
nes.input.fcexp.fkb.up keyboard 273

;nes, Famicom Expansion Port, Family Keyboard: LEFT
nes.input.fcexp.fkb.left keyboard 276

;nes, Famicom Expansion Port, Family Keyboard: RIGHT
nes.input.fcexp.fkb.right keyboard 275

;nes, Famicom Expansion Port, Family Keyboard: DOWN
nes.input.fcexp.fkb.down keyboard 274

;nes, Famicom Expansion Port, Hypershot Paddles: I, RUN
nes.input.fcexp.hypershot.i_run keyboard 113

;nes, Famicom Expansion Port, Hypershot Paddles: Rapid I, RUN
nes.input.fcexp.hypershot.rapid_i_run 

;nes, Famicom Expansion Port, Hypershot Paddles: I, JUMP
nes.input.fcexp.hypershot.i_jump keyboard 119

;nes, Famicom Expansion Port, Hypershot Paddles: Rapid I, JUMP
nes.input.fcexp.hypershot.rapid_i_jump 

;nes, Famicom Expansion Port, Hypershot Paddles: II, RUN
nes.input.fcexp.hypershot.ii_run keyboard 101

;nes, Famicom Expansion Port, Hypershot Paddles: Rapid II, RUN
nes.input.fcexp.hypershot.rapid_ii_run 

;nes, Famicom Expansion Port, Hypershot Paddles: II, JUMP
nes.input.fcexp.hypershot.ii_jump keyboard 114

;nes, Famicom Expansion Port, Hypershot Paddles: Rapid II, JUMP
nes.input.fcexp.hypershot.rapid_ii_jump 

;nes, Famicom Expansion Port, Mahjong Controller: 1
nes.input.fcexp.mahjong.1 keyboard 113

;nes, Famicom Expansion Port, Mahjong Controller: 2
nes.input.fcexp.mahjong.2 keyboard 119

;nes, Famicom Expansion Port, Mahjong Controller: 3
nes.input.fcexp.mahjong.3 keyboard 101

;nes, Famicom Expansion Port, Mahjong Controller: 4
nes.input.fcexp.mahjong.4 keyboard 114

;nes, Famicom Expansion Port, Mahjong Controller: 5
nes.input.fcexp.mahjong.5 keyboard 116

;nes, Famicom Expansion Port, Mahjong Controller: 6
nes.input.fcexp.mahjong.6 keyboard 97

;nes, Famicom Expansion Port, Mahjong Controller: 7
nes.input.fcexp.mahjong.7 keyboard 115

;nes, Famicom Expansion Port, Mahjong Controller: 8
nes.input.fcexp.mahjong.8 keyboard 100

;nes, Famicom Expansion Port, Mahjong Controller: 9
nes.input.fcexp.mahjong.9 keyboard 102

;nes, Famicom Expansion Port, Mahjong Controller: 10
nes.input.fcexp.mahjong.10 keyboard 103

;nes, Famicom Expansion Port, Mahjong Controller: 11
nes.input.fcexp.mahjong.11 keyboard 104

;nes, Famicom Expansion Port, Mahjong Controller: 12
nes.input.fcexp.mahjong.12 keyboard 106

;nes, Famicom Expansion Port, Mahjong Controller: 13
nes.input.fcexp.mahjong.13 keyboard 107

;nes, Famicom Expansion Port, Mahjong Controller: 14
nes.input.fcexp.mahjong.14 keyboard 108

;nes, Famicom Expansion Port, Mahjong Controller: 15
nes.input.fcexp.mahjong.15 keyboard 122

;nes, Famicom Expansion Port, Mahjong Controller: 16
nes.input.fcexp.mahjong.16 keyboard 120

;nes, Famicom Expansion Port, Mahjong Controller: 17
nes.input.fcexp.mahjong.17 keyboard 99

;nes, Famicom Expansion Port, Mahjong Controller: 18
nes.input.fcexp.mahjong.18 keyboard 118

;nes, Famicom Expansion Port, Mahjong Controller: 19
nes.input.fcexp.mahjong.19 keyboard 98

;nes, Famicom Expansion Port, Mahjong Controller: 20
nes.input.fcexp.mahjong.20 keyboard 110

;nes, Famicom Expansion Port, Mahjong Controller: 21
nes.input.fcexp.mahjong.21 keyboard 109

;nes, Famicom Expansion Port, Quiz King Buzzers: Buzzer 1
nes.input.fcexp.quizking.buzzer_1 keyboard 113

;nes, Famicom Expansion Port, Quiz King Buzzers: Buzzer 2
nes.input.fcexp.quizking.buzzer_2 keyboard 119

;nes, Famicom Expansion Port, Quiz King Buzzers: Buzzer 3
nes.input.fcexp.quizking.buzzer_3 keyboard 101

;nes, Famicom Expansion Port, Quiz King Buzzers: Buzzer 4
nes.input.fcexp.quizking.buzzer_4 keyboard 114

;nes, Famicom Expansion Port, Quiz King Buzzers: Buzzer 5
nes.input.fcexp.quizking.buzzer_5 keyboard 116

;nes, Famicom Expansion Port, Quiz King Buzzers: Buzzer 6
nes.input.fcexp.quizking.buzzer_6 keyboard 121

;nes, Famicom Expansion Port, Family Trainer Side A: 1
nes.input.fcexp.ftrainera.1 keyboard 111

;nes, Famicom Expansion Port, Family Trainer Side A: 2
nes.input.fcexp.ftrainera.2 keyboard 112

;nes, Famicom Expansion Port, Family Trainer Side A: 3
nes.input.fcexp.ftrainera.3 keyboard 91

;nes, Famicom Expansion Port, Family Trainer Side A: 4
nes.input.fcexp.ftrainera.4 keyboard 93

;nes, Famicom Expansion Port, Family Trainer Side A: 5
nes.input.fcexp.ftrainera.5 keyboard 107

;nes, Famicom Expansion Port, Family Trainer Side A: 6
nes.input.fcexp.ftrainera.6 keyboard 108

;nes, Famicom Expansion Port, Family Trainer Side A: 7
nes.input.fcexp.ftrainera.7 keyboard 59

;nes, Famicom Expansion Port, Family Trainer Side A: 8
nes.input.fcexp.ftrainera.8 keyboard 39

;nes, Famicom Expansion Port, Family Trainer Side A: 9
nes.input.fcexp.ftrainera.9 keyboard 109

;nes, Famicom Expansion Port, Family Trainer Side A: 10
nes.input.fcexp.ftrainera.10 keyboard 44

;nes, Famicom Expansion Port, Family Trainer Side A: 11
nes.input.fcexp.ftrainera.11 keyboard 46

;nes, Famicom Expansion Port, Family Trainer Side A: 12
nes.input.fcexp.ftrainera.12 keyboard 47

;nes, Famicom Expansion Port, Family Trainer Side B: 1
nes.input.fcexp.ftrainerb.1 keyboard 111

;nes, Famicom Expansion Port, Family Trainer Side B: 2
nes.input.fcexp.ftrainerb.2 keyboard 112

;nes, Famicom Expansion Port, Family Trainer Side B: 3
nes.input.fcexp.ftrainerb.3 keyboard 91

;nes, Famicom Expansion Port, Family Trainer Side B: 4
nes.input.fcexp.ftrainerb.4 keyboard 93

;nes, Famicom Expansion Port, Family Trainer Side B: 5
nes.input.fcexp.ftrainerb.5 keyboard 107

;nes, Famicom Expansion Port, Family Trainer Side B: 6
nes.input.fcexp.ftrainerb.6 keyboard 108

;nes, Famicom Expansion Port, Family Trainer Side B: 7
nes.input.fcexp.ftrainerb.7 keyboard 59

;nes, Famicom Expansion Port, Family Trainer Side B: 8
nes.input.fcexp.ftrainerb.8 keyboard 39

;nes, Famicom Expansion Port, Family Trainer Side B: 9
nes.input.fcexp.ftrainerb.9 keyboard 109

;nes, Famicom Expansion Port, Family Trainer Side B: 10
nes.input.fcexp.ftrainerb.10 keyboard 44

;nes, Famicom Expansion Port, Family Trainer Side B: 11
nes.input.fcexp.ftrainerb.11 keyboard 46

;nes, Famicom Expansion Port, Family Trainer Side B: 12
nes.input.fcexp.ftrainerb.12 keyboard 47

;nes, Famicom Expansion Port, Oeka Kids Tablet: Button
nes.input.fcexp.oekakids.button mouse 0

;gb, Built-In, Gamepad: A
gb.input.builtin.gamepad.a keyboard 259

;gb, Built-In, Gamepad: Rapid A
gb.input.builtin.gamepad.rapid_a 

;gb, Built-In, Gamepad: B
gb.input.builtin.gamepad.b keyboard 258

;gb, Built-In, Gamepad: Rapid B
gb.input.builtin.gamepad.rapid_b 

;gb, Built-In, Gamepad: SELECT
gb.input.builtin.gamepad.select keyboard 9

;gb, Built-In, Gamepad: START
gb.input.builtin.gamepad.start keyboard 13

;gb, Built-In, Gamepad: RIGHT →
gb.input.builtin.gamepad.right keyboard 115

;gb, Built-In, Gamepad: LEFT ←
gb.input.builtin.gamepad.left keyboard 97

;gb, Built-In, Gamepad: UP ↑
gb.input.builtin.gamepad.up keyboard 119

;gb, Built-In, Gamepad: DOWN ↓
gb.input.builtin.gamepad.down keyboard 122

;gba, Built-In, Gamepad: A
gba.input.builtin.gamepad.a keyboard 259

;gba, Built-In, Gamepad: Rapid A
gba.input.builtin.gamepad.rapid_a 

;gba, Built-In, Gamepad: B
gba.input.builtin.gamepad.b keyboard 258

;gba, Built-In, Gamepad: Rapid B
gba.input.builtin.gamepad.rapid_b 

;gba, Built-In, Gamepad: SELECT
gba.input.builtin.gamepad.select keyboard 9

;gba, Built-In, Gamepad: START
gba.input.builtin.gamepad.start keyboard 13

;gba, Built-In, Gamepad: RIGHT →
gba.input.builtin.gamepad.right keyboard 115

;gba, Built-In, Gamepad: LEFT ←
gba.input.builtin.gamepad.left keyboard 97

;gba, Built-In, Gamepad: UP ↑
gba.input.builtin.gamepad.up keyboard 119

;gba, Built-In, Gamepad: DOWN ↓
gba.input.builtin.gamepad.down keyboard 122

;gba, Built-In, Gamepad: SHOULDER R
gba.input.builtin.gamepad.shoulder_r keyboard 262

;gba, Built-In, Gamepad: SHOULDER L
gba.input.builtin.gamepad.shoulder_l keyboard 261

;pce, Port 1, Gamepad: I
pce.input.port1.gamepad.i joystick  2fdf6b43548255f 00000000

;pce, Port 1, Gamepad: Rapid I
pce.input.port1.gamepad.rapid_i joystick  2fdf6b43548255f 00000006

;pce, Port 1, Gamepad: II
pce.input.port1.gamepad.ii joystick  2fdf6b43548255f 00000001

;pce, Port 1, Gamepad: Rapid II
pce.input.port1.gamepad.rapid_ii joystick  2fdf6b43548255f 00000007

;pce, Port 1, Gamepad: SELECT
pce.input.port1.gamepad.select joystick  2fdf6b43548255f 00000008

;pce, Port 1, Gamepad: RUN
pce.input.port1.gamepad.run joystick  2fdf6b43548255f 00000009

;pce, Port 1, Gamepad: UP ↑
pce.input.port1.gamepad.up joystick  2fdf6b43548255f 0000c001

;pce, Port 1, Gamepad: RIGHT →
pce.input.port1.gamepad.right joystick  2fdf6b43548255f 00008000

;pce, Port 1, Gamepad: DOWN ↓
pce.input.port1.gamepad.down joystick  2fdf6b43548255f 00008001

;pce, Port 1, Gamepad: LEFT ←
pce.input.port1.gamepad.left joystick  2fdf6b43548255f 0000c000

;pce, Port 1, Gamepad: III
pce.input.port1.gamepad.iii joystick  2fdf6b43548255f 00000002

;pce, Port 1, Gamepad: IV
pce.input.port1.gamepad.iv joystick  2fdf6b43548255f 00000003

;pce, Port 1, Gamepad: V
pce.input.port1.gamepad.v joystick  2fdf6b43548255f 00000004

;pce, Port 1, Gamepad: VI
pce.input.port1.gamepad.vi joystick  2fdf6b43548255f 00000005

;pce, Port 1, Gamepad: 2/6 Mode Select
pce.input.port1.gamepad.mode_select joystick  2fdf6b43548255f 0000000a

;pce, Port 1, Mouse: Left Button
pce.input.port1.mouse.left mouse 0

;pce, Port 1, Mouse: Right Button
pce.input.port1.mouse.right mouse 2

;pce, Port 2, Gamepad: I
pce.input.port2.gamepad.i 

;pce, Port 2, Gamepad: Rapid I
pce.input.port2.gamepad.rapid_i 

;pce, Port 2, Gamepad: II
pce.input.port2.gamepad.ii 

;pce, Port 2, Gamepad: Rapid II
pce.input.port2.gamepad.rapid_ii 

;pce, Port 2, Gamepad: SELECT
pce.input.port2.gamepad.select 

;pce, Port 2, Gamepad: RUN
pce.input.port2.gamepad.run 

;pce, Port 2, Gamepad: UP ↑
pce.input.port2.gamepad.up 

;pce, Port 2, Gamepad: RIGHT →
pce.input.port2.gamepad.right 

;pce, Port 2, Gamepad: DOWN ↓
pce.input.port2.gamepad.down 

;pce, Port 2, Gamepad: LEFT ←
pce.input.port2.gamepad.left 

;pce, Port 2, Gamepad: III
pce.input.port2.gamepad.iii 

;pce, Port 2, Gamepad: IV
pce.input.port2.gamepad.iv 

;pce, Port 2, Gamepad: V
pce.input.port2.gamepad.v 

;pce, Port 2, Gamepad: VI
pce.input.port2.gamepad.vi 

;pce, Port 2, Gamepad: 2/6 Mode Select
pce.input.port2.gamepad.mode_select 

;pce, Port 2, Mouse: Left Button
pce.input.port2.mouse.left mouse 0

;pce, Port 2, Mouse: Right Button
pce.input.port2.mouse.right mouse 2

;pce, Port 3, Gamepad: I
pce.input.port3.gamepad.i 

;pce, Port 3, Gamepad: Rapid I
pce.input.port3.gamepad.rapid_i 

;pce, Port 3, Gamepad: II
pce.input.port3.gamepad.ii 

;pce, Port 3, Gamepad: Rapid II
pce.input.port3.gamepad.rapid_ii 

;pce, Port 3, Gamepad: SELECT
pce.input.port3.gamepad.select 

;pce, Port 3, Gamepad: RUN
pce.input.port3.gamepad.run 

;pce, Port 3, Gamepad: UP ↑
pce.input.port3.gamepad.up 

;pce, Port 3, Gamepad: RIGHT →
pce.input.port3.gamepad.right 

;pce, Port 3, Gamepad: DOWN ↓
pce.input.port3.gamepad.down 

;pce, Port 3, Gamepad: LEFT ←
pce.input.port3.gamepad.left 

;pce, Port 3, Gamepad: III
pce.input.port3.gamepad.iii 

;pce, Port 3, Gamepad: IV
pce.input.port3.gamepad.iv 

;pce, Port 3, Gamepad: V
pce.input.port3.gamepad.v 

;pce, Port 3, Gamepad: VI
pce.input.port3.gamepad.vi 

;pce, Port 3, Gamepad: 2/6 Mode Select
pce.input.port3.gamepad.mode_select 

;pce, Port 3, Mouse: Left Button
pce.input.port3.mouse.left mouse 0

;pce, Port 3, Mouse: Right Button
pce.input.port3.mouse.right mouse 2

;pce, Port 4, Gamepad: I
pce.input.port4.gamepad.i 

;pce, Port 4, Gamepad: Rapid I
pce.input.port4.gamepad.rapid_i 

;pce, Port 4, Gamepad: II
pce.input.port4.gamepad.ii 

;pce, Port 4, Gamepad: Rapid II
pce.input.port4.gamepad.rapid_ii 

;pce, Port 4, Gamepad: SELECT
pce.input.port4.gamepad.select 

;pce, Port 4, Gamepad: RUN
pce.input.port4.gamepad.run 

;pce, Port 4, Gamepad: UP ↑
pce.input.port4.gamepad.up 

;pce, Port 4, Gamepad: RIGHT →
pce.input.port4.gamepad.right 

;pce, Port 4, Gamepad: DOWN ↓
pce.input.port4.gamepad.down 

;pce, Port 4, Gamepad: LEFT ←
pce.input.port4.gamepad.left 

;pce, Port 4, Gamepad: III
pce.input.port4.gamepad.iii 

;pce, Port 4, Gamepad: IV
pce.input.port4.gamepad.iv 

;pce, Port 4, Gamepad: V
pce.input.port4.gamepad.v 

;pce, Port 4, Gamepad: VI
pce.input.port4.gamepad.vi 

;pce, Port 4, Gamepad: 2/6 Mode Select
pce.input.port4.gamepad.mode_select 

;pce, Port 4, Mouse: Left Button
pce.input.port4.mouse.left mouse 0

;pce, Port 4, Mouse: Right Button
pce.input.port4.mouse.right mouse 2

;pce, Port 5, Gamepad: I
pce.input.port5.gamepad.i 

;pce, Port 5, Gamepad: Rapid I
pce.input.port5.gamepad.rapid_i 

;pce, Port 5, Gamepad: II
pce.input.port5.gamepad.ii 

;pce, Port 5, Gamepad: Rapid II
pce.input.port5.gamepad.rapid_ii 

;pce, Port 5, Gamepad: SELECT
pce.input.port5.gamepad.select 

;pce, Port 5, Gamepad: RUN
pce.input.port5.gamepad.run 

;pce, Port 5, Gamepad: UP ↑
pce.input.port5.gamepad.up 

;pce, Port 5, Gamepad: RIGHT →
pce.input.port5.gamepad.right 

;pce, Port 5, Gamepad: DOWN ↓
pce.input.port5.gamepad.down 

;pce, Port 5, Gamepad: LEFT ←
pce.input.port5.gamepad.left 

;pce, Port 5, Gamepad: III
pce.input.port5.gamepad.iii 

;pce, Port 5, Gamepad: IV
pce.input.port5.gamepad.iv 

;pce, Port 5, Gamepad: V
pce.input.port5.gamepad.v 

;pce, Port 5, Gamepad: VI
pce.input.port5.gamepad.vi 

;pce, Port 5, Gamepad: 2/6 Mode Select
pce.input.port5.gamepad.mode_select 

;pce, Port 5, Mouse: Left Button
pce.input.port5.mouse.left mouse 0

;pce, Port 5, Mouse: Right Button
pce.input.port5.mouse.right mouse 2

;lynx, Built-In, Gamepad: A (outer)
lynx.input.builtin.gamepad.a keyboard 259

;lynx, Built-In, Gamepad: Rapid A (outer)
lynx.input.builtin.gamepad.rapid_a 

;lynx, Built-In, Gamepad: B (inner)
lynx.input.builtin.gamepad.b keyboard 258

;lynx, Built-In, Gamepad: Rapid B (inner)
lynx.input.builtin.gamepad.rapid_b 

;lynx, Built-In, Gamepad: Option 2 (lower)
lynx.input.builtin.gamepad.option_2 keyboard 257

;lynx, Built-In, Gamepad: Rapid Option 2 (lower)
lynx.input.builtin.gamepad.rapid_option_2 

;lynx, Built-In, Gamepad: Option 1 (upper)
lynx.input.builtin.gamepad.option_1 keyboard 263

;lynx, Built-In, Gamepad: Rapid Option 1 (upper)
lynx.input.builtin.gamepad.rapid_option_1 

;lynx, Built-In, Gamepad: LEFT ←
lynx.input.builtin.gamepad.left keyboard 97

;lynx, Built-In, Gamepad: RIGHT →
lynx.input.builtin.gamepad.right keyboard 115

;lynx, Built-In, Gamepad: UP ↑
lynx.input.builtin.gamepad.up keyboard 119

;lynx, Built-In, Gamepad: DOWN ↓
lynx.input.builtin.gamepad.down keyboard 122

;lynx, Built-In, Gamepad: PAUSE
lynx.input.builtin.gamepad.pause keyboard 13

;pcfx, Port 1, Gamepad: I
pcfx.input.port1.gamepad.i keyboard 259

;pcfx, Port 1, Gamepad: II
pcfx.input.port1.gamepad.ii keyboard 258

;pcfx, Port 1, Gamepad: III
pcfx.input.port1.gamepad.iii keyboard 257

;pcfx, Port 1, Gamepad: IV
pcfx.input.port1.gamepad.iv keyboard 260

;pcfx, Port 1, Gamepad: V
pcfx.input.port1.gamepad.v keyboard 261

;pcfx, Port 1, Gamepad: VI
pcfx.input.port1.gamepad.vi keyboard 262

;pcfx, Port 1, Gamepad: SELECT
pcfx.input.port1.gamepad.select keyboard 9

;pcfx, Port 1, Gamepad: RUN
pcfx.input.port1.gamepad.run keyboard 13

;pcfx, Port 1, Gamepad: UP ↑
pcfx.input.port1.gamepad.up keyboard 119

;pcfx, Port 1, Gamepad: RIGHT →
pcfx.input.port1.gamepad.right keyboard 115

;pcfx, Port 1, Gamepad: DOWN ↓
pcfx.input.port1.gamepad.down keyboard 122

;pcfx, Port 1, Gamepad: LEFT ←
pcfx.input.port1.gamepad.left keyboard 97

;pcfx, Port 1, Mouse: Left Button
pcfx.input.port1.mouse.left mouse 0

;pcfx, Port 1, Mouse: Right Button
pcfx.input.port1.mouse.right mouse 2

;pcfx, Port 2, Gamepad: I
pcfx.input.port2.gamepad.i 

;pcfx, Port 2, Gamepad: II
pcfx.input.port2.gamepad.ii 

;pcfx, Port 2, Gamepad: III
pcfx.input.port2.gamepad.iii 

;pcfx, Port 2, Gamepad: IV
pcfx.input.port2.gamepad.iv 

;pcfx, Port 2, Gamepad: V
pcfx.input.port2.gamepad.v 

;pcfx, Port 2, Gamepad: VI
pcfx.input.port2.gamepad.vi 

;pcfx, Port 2, Gamepad: SELECT
pcfx.input.port2.gamepad.select 

;pcfx, Port 2, Gamepad: RUN
pcfx.input.port2.gamepad.run 

;pcfx, Port 2, Gamepad: UP ↑
pcfx.input.port2.gamepad.up 

;pcfx, Port 2, Gamepad: RIGHT →
pcfx.input.port2.gamepad.right 

;pcfx, Port 2, Gamepad: DOWN ↓
pcfx.input.port2.gamepad.down 

;pcfx, Port 2, Gamepad: LEFT ←
pcfx.input.port2.gamepad.left 

;pcfx, Port 2, Mouse: Left Button
pcfx.input.port2.mouse.left mouse 0

;pcfx, Port 2, Mouse: Right Button
pcfx.input.port2.mouse.right mouse 2

;ngp, Built-In, Gamepad: UP ↑
ngp.input.builtin.gamepad.up keyboard 119

;ngp, Built-In, Gamepad: DOWN ↓
ngp.input.builtin.gamepad.down keyboard 122

;ngp, Built-In, Gamepad: LEFT ←
ngp.input.builtin.gamepad.left keyboard 97

;ngp, Built-In, Gamepad: RIGHT →
ngp.input.builtin.gamepad.right keyboard 115

;ngp, Built-In, Gamepad: A
ngp.input.builtin.gamepad.a keyboard 258

;ngp, Built-In, Gamepad: Rapid A
ngp.input.builtin.gamepad.rapid_a 

;ngp, Built-In, Gamepad: B
ngp.input.builtin.gamepad.b keyboard 259

;ngp, Built-In, Gamepad: Rapid B
ngp.input.builtin.gamepad.rapid_b 

;ngp, Built-In, Gamepad: OPTION
ngp.input.builtin.gamepad.option keyboard 13

;wswan, Built-In, Gamepad: UP ↑, X Cursors
wswan.input.builtin.gamepad.up-x keyboard 119

;wswan, Built-In, Gamepad: RIGHT →, X Cursors
wswan.input.builtin.gamepad.right-x keyboard 115

;wswan, Built-In, Gamepad: DOWN ↓, X Cursors
wswan.input.builtin.gamepad.down-x keyboard 122

;wswan, Built-In, Gamepad: LEFT ←, X Cursors
wswan.input.builtin.gamepad.left-x keyboard 97

;wswan, Built-In, Gamepad: UP ↑, Y Cur: MUST NOT = X CURSORS
wswan.input.builtin.gamepad.up-y keyboard 273

;wswan, Built-In, Gamepad: RIGHT →, Y Cur: MUST NOT = X CURSORS
wswan.input.builtin.gamepad.right-y keyboard 275

;wswan, Built-In, Gamepad: DOWN ↓, Y Cur: MUST NOT = X CURSORS
wswan.input.builtin.gamepad.down-y keyboard 274

;wswan, Built-In, Gamepad: LEFT ←, Y Cur: MUST NOT = X CURSORS
wswan.input.builtin.gamepad.left-y keyboard 276

;wswan, Built-In, Gamepad: Start
wswan.input.builtin.gamepad.start keyboard 13

;wswan, Built-In, Gamepad: A
wswan.input.builtin.gamepad.a keyboard 259

;wswan, Built-In, Gamepad: Rapid A
wswan.input.builtin.gamepad.rapid_a 

;wswan, Built-In, Gamepad: B
wswan.input.builtin.gamepad.b keyboard 258

;wswan, Built-In, Gamepad: Rapid B
wswan.input.builtin.gamepad.rapid_b 

;sms, Port 1, Gamepad: UP ↑
sms.input.port1.gamepad.up keyboard 119

;sms, Port 1, Gamepad: DOWN ↓
sms.input.port1.gamepad.down keyboard 122

;sms, Port 1, Gamepad: LEFT ←
sms.input.port1.gamepad.left keyboard 97

;sms, Port 1, Gamepad: RIGHT →
sms.input.port1.gamepad.right keyboard 115

;sms, Port 1, Gamepad: Fire 1/Start
sms.input.port1.gamepad.fire1 keyboard 258

;sms, Port 1, Gamepad: Rapid Fire 1/Start
sms.input.port1.gamepad.rapid_fire1 

;sms, Port 1, Gamepad: Fire 2
sms.input.port1.gamepad.fire2 keyboard 259

;sms, Port 1, Gamepad: Rapid Fire 2
sms.input.port1.gamepad.rapid_fire2 

;sms, Port 1, Gamepad: Pause
sms.input.port1.gamepad.pause keyboard 13

;sms, Port 2, Gamepad: UP ↑
sms.input.port2.gamepad.up 

;sms, Port 2, Gamepad: DOWN ↓
sms.input.port2.gamepad.down 

;sms, Port 2, Gamepad: LEFT ←
sms.input.port2.gamepad.left 

;sms, Port 2, Gamepad: RIGHT →
sms.input.port2.gamepad.right 

;sms, Port 2, Gamepad: Fire 1/Start
sms.input.port2.gamepad.fire1 

;sms, Port 2, Gamepad: Rapid Fire 1/Start
sms.input.port2.gamepad.rapid_fire1 

;sms, Port 2, Gamepad: Fire 2
sms.input.port2.gamepad.fire2 

;sms, Port 2, Gamepad: Rapid Fire 2
sms.input.port2.gamepad.rapid_fire2 

;sms, Port 2, Gamepad: Pause
sms.input.port2.gamepad.pause 

;gg, Built-In, Gamepad: UP ↑
gg.input.builtin.gamepad.up keyboard 119

;gg, Built-In, Gamepad: DOWN ↓
gg.input.builtin.gamepad.down keyboard 122

;gg, Built-In, Gamepad: LEFT ←
gg.input.builtin.gamepad.left keyboard 97

;gg, Built-In, Gamepad: RIGHT →
gg.input.builtin.gamepad.right keyboard 115

;gg, Built-In, Gamepad: Button 1
gg.input.builtin.gamepad.button1 keyboard 258

;gg, Built-In, Gamepad: Rapid Button 1
gg.input.builtin.gamepad.rapid_button1 

;gg, Built-In, Gamepad: Button 2
gg.input.builtin.gamepad.button2 keyboard 259

;gg, Built-In, Gamepad: Rapid Button 2
gg.input.builtin.gamepad.rapid_button2 

;gg, Built-In, Gamepad: Start
gg.input.builtin.gamepad.start keyboard 13

;Save state
command.save_state keyboard 286

;Load state
command.load_state keyboard 288

;Save movie
command.save_movie keyboard 286+shift

;Load movie
command.load_movie keyboard 288+shift

;Toggle state rewind functionality
command.toggle_state_rewind keyboard 115+alt

;Save state 0 select
command.0 keyboard 48

;Save state 1 select
command.1 keyboard 49

;Save state 2 select
command.2 keyboard 50

;Save state 3 select
command.3 keyboard 51

;Save state 4 select
command.4 keyboard 52

;Save state 5 select
command.5 keyboard 53

;Save state 6 select
command.6 keyboard 54

;Save state 7 select
command.7 keyboard 55

;Save state 8 select
command.8 keyboard 56

;Save state 9 select
command.9 keyboard 57

;Movie 0 select
command.m0 keyboard 48+shift

;Movie 1 select
command.m1 keyboard 49+shift

;Movie 2 select
command.m2 keyboard 50+shift

;Movie 3 select
command.m3 keyboard 51+shift

;Movie 4 select
command.m4 keyboard 52+shift

;Movie 5 select
command.m5 keyboard 53+shift

;Movie 6 select
command.m6 keyboard 54+shift

;Movie 7 select
command.m7 keyboard 55+shift

;Movie 8 select
command.m8 keyboard 56+shift

;Movie 9 select
command.m9 keyboard 57+shift

;Toggle graphics layer 1
command.tl1 keyboard 49+ctrl

;Toggle graphics layer 2
command.tl2 keyboard 50+ctrl

;Toggle graphics layer 3
command.tl3 keyboard 51+ctrl

;Toggle graphics layer 4
command.tl4 keyboard 52+ctrl

;Toggle graphics layer 5
command.tl5 keyboard 53+ctrl

;Toggle graphics layer 6
command.tl6 keyboard 54+ctrl

;Toggle graphics layer 7
command.tl7 keyboard 55+ctrl

;Toggle graphics layer 8
command.tl8 keyboard 56+ctrl

;Toggle graphics layer 9
command.tl9 keyboard 57+ctrl

;Take screen snapshot
command.take_snapshot keyboard 290

;Toggle fullscreen mode
command.toggle_fs keyboard 13+alt

;Fast-forward
command.fast_forward keyboard 96

;Insert coin
command.insert_coin keyboard 289

;Toggle DIP switch view
command.toggle_dipview keyboard 287

;Select disk/disc
command.select_disk keyboard 287

;Insert/Eject disk/disc
command.insert_eject_disk keyboard 289

;Activate barcode(for Famicom)
command.activate_barcode keyboard 289

;Grab input
command.toggle_grab_input keyboard 302

;Grab input and disable commands
command.toggle_cidisable keyboard 302+shift

;Configure buttons on virtual port 1
command.input_config1 keyboard 49+alt+shift

;Configure buttons on virtual port 2
command.input_config2 keyboard 50+alt+shift

;Configure command key
command.input_configc keyboard 283

;Configure buttons on virtual port 3
command.input_config3 keyboard 51+alt+shift

;Configure buttons on virtual port 4
command.input_config4 keyboard 52+alt+shift

;Configure buttons on virtual port 5
command.input_config5 keyboard 53+alt+shift

;Reset
command.reset keyboard 291

;Power toggle
command.power keyboard 292

;Exit
command.exit keyboard 293~keyboard 27

;Rewind
command.state_rewind keyboard 8

;Rotate screen
command.rotatescreen keyboard 289

;Toggle netplay console
command.togglenetview keyboard 116

;Advance frame
command.advance_frame keyboard 97+alt

;Return to normal mode after advancing frames
command.run_normal keyboard 114+alt

;Toggle cheat console
command.togglecheatview keyboard 99+alt

;Enable/Disable cheats
command.togglecheatactive keyboard 116+alt

;Toggle frames-per-second display
command.toggle_fps_view keyboard 282+shift

;Toggle debugger
command.toggle_debugger keyboard 100+alt

;Decrease selected save state slot by 1
command.state_slot_dec keyboard 45

;Increase selected save state slot by 1
command.state_slot_inc keyboard 61

;Toggle help screen
command.toggle_help keyboard 282

;Select virtual device on virtual input port 1
command.device_select1 keyboard 49+ctrl+shift

;Select virtual device on virtual input port 2
command.device_select2 keyboard 50+ctrl+shift

;Select virtual device on virtual input port 3
command.device_select3 keyboard 51+ctrl+shift

;Select virtual device on virtual input port 4
command.device_select4 keyboard 52+ctrl+shift

;Select virtual device on virtual input port 5
command.device_select5 keyboard 53+ctrl+shift

;Select input device for input port 1.
nes.input.port1 gamepad

;Select input device for input port 2.
nes.input.port2 gamepad

;Select input device for input port 3.
nes.input.port3 gamepad

;Select input device for input port 4.
nes.input.port4 gamepad

;Select Famicom expansion-port device.
nes.input.fcexp none

;Disabled four-score emulation.
nes.nofs 0

;No 8-sprites-per-scanline limit option.
nes.no8lim 0

;Enable less-accurate, but better sounding, Namco 106(mapper 19) sound emulation.
nes.n106bs 0

;Scan filename for (U),(J),(E),etc. strings to en/dis-able PAL emulation.
nes.fnscan 1

;Enable PAL(50Hz) NES emulation.
nes.pal 0

;Enable Game Genie emulation.
nes.gg 0

;Path to Game Genie ROM image.
nes.ggrom 

;Clip left+right 8 pixel columns.
nes.clipsides 0

;First rendered scanline in NTSC mode.
nes.slstart 8

;Last rendered scanlines in NTSC mode.
nes.slend 231

;First rendered scanline in PAL mode.
nes.slstartp 0

;Last rendered scanlines in PAL mode.
nes.slendp 239

;Filename of custom NES palette.
nes.cpalette 

;Enable NTSC color generation and blitter.
nes.ntscblitter 0

;Select video quality/type preset.
nes.ntsc.preset none

;Merge fields to partially work around !=60.1Hz refresh rates.
nes.ntsc.mergefields 0

;NTSC composite blitter saturation.
nes.ntsc.saturation 0

;NTSC composite blitter hue.
nes.ntsc.hue 0

;NTSC composite blitter sharpness.
nes.ntsc.sharpness 0

;NTSC composite blitter brightness.
nes.ntsc.brightness 0

;NTSC composite blitter contrast.
nes.ntsc.contrast 0

;Enable NTSC custom decoder matrix.
nes.ntsc.matrix 0

;NTSC custom decoder matrix element 0(red, value * V).
nes.ntsc.matrix.0 1.539

;NTSC custom decoder matrix element 1(red, value * U).
nes.ntsc.matrix.1 -0.622

;NTSC custom decoder matrix element 2(green, value * V).
nes.ntsc.matrix.2 -0.571

;NTSC custom decoder matrix element 3(green, value * U).
nes.ntsc.matrix.3 -0.185

;NTSC custom decoder matrix element 4(blue, value * V).
nes.ntsc.matrix.4 0.000

;NTSC custom decoder matrix element 5(blue, value * U.
nes.ntsc.matrix.5 2.000

;Force monophonic sound output.
gb.forcemono 0

;Path to optional GBA BIOS ROM image.
gba.bios none

;Force monophonic sound output.
gba.forcemono 0

;Load custom color map from specified file.
gba.colormap 

;Select input device for input port 1.
pce.input.port1 gamepad

;Select input device for input port 2.
pce.input.port2 gamepad

;Select input device for input port 3.
pce.input.port3 gamepad

;Select input device for input port 4.
pce.input.port4 gamepad

;Select input device for input port 5.
pce.input.port5 gamepad

;First rendered scanline.
pce.slstart 4

;Last rendered scanline.
pce.slend 235

;Set mouse sensitivity.
pce.mouse_sensitivity 0.50

;If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily.
pce.disable_softreset 0

;Force monophonic sound output.
pce.forcemono 0

;Force SuperGrafx emulation.
pce.forcesgx 0

;Enable Arcade Card emulation.
pce.arcadecard 0

;CPU overclock multiplier.
pce.ocmultiplier 1

;CD-ROM data transfer speed multiplier.
pce.cdspeed 1

;No 16-sprites-per-scanline limit option.
pce.nospritelimit 0

;Load custom color map from specified file.
pce.colormap 

;Path to the CD BIOS
pce.cdbios c:\mednafen\syscard3.pce

;Enable lowpass filter dependent on playback-frequency.
pce.adpcmlp 0

;PSG volume when playing a CD game.
pce.cdpsgvolume 100

;CD-DA volume.
pce.cddavolume 100

;ADPCM volume.
pce.adpcmvolume 100

;Virtually rotate D-pad along with screen.
lynx.rotateinput 0

;Enable sound output lowpass filter.
lynx.lowpass 1

;Select input device for input port 1.
pcfx.input.port1 gamepad

;Select input device for input port 2.
pcfx.input.port2 gamepad

;Set mouse sensitivity.
pcfx.mouse_sensitivity 1.25

;If set, when RUN+SEL are pressed simultaneously, disable both buttons temporarily.
pcfx.disable_softreset 0

;Path to the ROM BIOS
pcfx.bios pcfx.bios PATH NOT SET

;No 16-sprites-per-scanline limit option.
pcfx.nospritelimit 0

;Emulated width for 7.16MHz dot-clock mode: 256, 341, or 1024.
pcfx.high_dotclock_width 1024

;Emulated CD-ROM speed.
pcfx.cdspeed 2

;If =1, tell games to display in English, if =0, in Japanese.
ngp.language 1

;Force monophonic sound output.
ngp.forcemono 0

;Virtually rotate D-pads along with screen.
wswan.rotateinput 0

;Force monophonic sound output.
wswan.forcemono 0

;Name
wswan.name Speed

;Birth Year
wswan.byear 1977

;Birth Month
wswan.bmonth 11

;Birth Day
wswan.bday 22

;Sex
wswan.sex m

;Blood Type
wswan.blood O

;Territory, "domestic"(Japan) or "export".
sms.territory export

;Enable FM sound emulation when playing domestic/Japan-region games.
sms.fm 1

;Force monophonic sound output.
gg.forcemono 0
 

Dentro de el podemos asignar las rutas de las distintas bios si no lo habíamos hecho de forma manual anteriormente, cambiar la resolución gráfica de cada sistema, aplicar filtros gráficos, y muchas otras opciones.

Una vez lo tengamos configurado al gusto solo tenemos que implementarlo en nuestro frontend favorito para poder disfrutar del emulador.

Uso del emulador para la plataforma NEC PC Engine CD

Otra gran característica de este multiemulador y en concreto para esta plataforma es que es capaz de usar imágenes de disco de los cds originales en formato CUE y TOC con lo que nos simplifica el hecho de no tener que usar programas como Daemon Tools o Magic Disc, el cual también me ha sorprendido gratamente y del que se realizará una próxima revisión, para montar las imágenes en una unidad virtual.

La manera de usar esta plataforma sería la siguiente:

mednafen -loadcd pce "[ruta del archivo].cue"

Dentro del emulador

Una vez tengamos ejecutado alguna plataforma correctamente nos encontramos con el detalle de que tampoco existe ninguna manera a priori para configurar el emulador.

Para ello pulsamos la tecla F1 y se nos mostrará un menú con los distintos atajos de teclas para configurar el mismo, a continuación un ejemplo.

mednafen2.jpg

Como podemos observar se trata de un emulador muy intuitivo y a poco que lo conozcamos se nos va a hacer pieza esencial para nuestras máquinas recreativas o PC's de sobremesa.

La implementación en frontends también es muy simple y no nos va a suponer esfuerzo ninguno, de todas maneras para todas aquellas dudas que os surgan, estoy a vuestra disposición en el foro para resolverlas.

Un saludo.

Publicidad



Arcade