Cleanup mednafen runner

This commit is contained in:
Mathieu Comandon 2018-04-30 16:33:07 -07:00
parent cae937cc85
commit 22b1af04b6

View file

@ -5,6 +5,7 @@ from lutris.util.display import get_current_resolution
from lutris.util.log import logger from lutris.util.log import logger
from lutris.util.joypad import get_controller_mappings from lutris.util.joypad import get_controller_mappings
class mednafen(Runner): class mednafen(Runner):
human_name = "Mednafen" human_name = "Mednafen"
description = ("Multi-system emulator including NES, GB(A), PC Engine " description = ("Multi-system emulator including NES, GB(A), PC Engine "
@ -29,19 +30,19 @@ class mednafen(Runner):
machine_choices = ( machine_choices = (
('Game Boy (Color)', 'gb'), ('Game Boy (Color)', 'gb'),
('Game Boy Advance', 'gba'), ('Game Boy Advance', 'gba'),
('Game Gear','gg'), ('Game Gear', 'gg'),
('Genesis/Mega Drive','md'), ('Genesis/Mega Drive', 'md'),
('Lynx', 'lynx'), ('Lynx', 'lynx'),
('Master System','sms'), ('Master System', 'sms'),
('Neo Geo Pocket (Color)','gnp'), ('Neo Geo Pocket (Color)', 'gnp'),
('NES', 'nes'), ('NES', 'nes'),
('PC Engine', 'pce'), ('PC Engine', 'pce'),
('PC-FX','pcfx'), ('PC-FX', 'pcfx'),
('PlayStation', 'psx'), ('PlayStation', 'psx'),
('Saturn','ss'), ('Saturn', 'ss'),
('SNES','snes'), ('SNES', 'snes'),
('WonderSwan', 'wswan'), ('WonderSwan', 'wswan'),
('Virtual Boy','vb'), ('Virtual Boy', 'vb'),
) )
runner_executable = 'mednafen/bin/mednafen' runner_executable = 'mednafen/bin/mednafen'
game_options = [ game_options = [
@ -153,52 +154,58 @@ class mednafen(Runner):
# Get the controller mappings # Get the controller mappings
mapping = get_controller_mappings()[0][1] mapping = get_controller_mappings()[0][1]
# Consrtuct a dictionary of button codes to parse to mendafen # Construct a dictionnary of button codes to parse to mendafen
map_code = {'a':'','b':'','c':'','x':'','y':'','z':'','back':'', map_code = {
'start':'','leftshoulder':'','rightshoulder':'', 'a': '', 'b': '', 'c': '',
'lefttrigger':'','righttrigger':'','leftstick':'', 'x': '', 'y': '', 'z': '',
'rightstick':'','select':'','shoulder_l':'','shoulder_r':'', 'back': '', 'start': '',
'i':'','ii':'','iii':'','iv':'','v':'','vi':'','run':'', 'leftshoulder': '', 'rightshoulder': '',
'ls':'','rs':'','fire1':'','fire2':'','option_1':'', 'lefttrigger': '', 'righttrigger': '',
'option_2':'','cross':'','circle':'','square':'','triangle':'', 'leftstick': '', 'rightstick': '',
'r1':'','r2':'','l1':'','l2':'','option':'','l':'','r':'', 'select': '',
'right-x':'','right-y':'','left-x':'','left-y':'', 'shoulder_l': '', 'shoulder_r': '',
'up-x':'','up-y':'','down-x':'','down-y':'','up-l':'', 'i': '', 'ii': '', 'iii': '', 'iv': '', 'v': '', 'vi': '', 'run': '',
'up-r':'','down-l':'','down-r':'','left-l':'','left-r':'', 'ls': '', 'rs': '', 'fire1': '', 'fire2': '', 'option_1': '', 'option_2': '',
'right-l':'','right-r':'', 'cross': '', 'circle': '', 'square': '', 'triangle': '',
'lstick_up':'0000c001', 'r1': '', 'r2': '', 'l1': '', 'l2': '', 'option': '', 'l': '', 'r': '',
'lstick_down':'00008001', 'right-x': '', 'right-y': '', 'left-x': '', 'left-y': '',
'lstick_right':'00008000', 'up-x': '', 'up-y': '', 'down-x': '', 'down-y': '', 'up-l': '',
'lstick_left':'0000c000', 'up-r': '', 'down-l': '', 'down-r': '', 'left-l': '', 'left-r': '',
'rstick_up':'0000c003', 'right-l': '', 'right-r': '',
'rstick_down':'00008003', 'lstick_up': '0000c001',
'rstick_left':'0000c002', 'lstick_down': '00008001',
'rstick_right':'00008002', 'lstick_right': '00008000',
'dpup':'0000c005', 'lstick_left': '0000c000',
'dpdown':'00008005', 'rstick_up': '0000c003',
'dpleft':'0000c004', 'rstick_down': '00008003',
'dpright':'00008004'} 'rstick_left': '0000c002',
'rstick_right': '00008002',
'dpup': '0000c005',
'dpdown': '00008005',
'dpleft': '0000c004',
'dpright': '00008004'
}
# Insert the button mapping number into the map_codes # Insert the button mapping number into the map_codes
for button in mapping.keys: for button in mapping.keys:
bttn_id = mapping.keys[button] bttn_id = mapping.keys[button]
if bttn_id[0]=='b': # it's a button if bttn_id[0] == 'b': # it's a button
map_code[button] = '000000'+bttn_id[1:].zfill(2) map_code[button] = '000000' + bttn_id[1:].zfill(2)
# Duplicate button names that are emulated in mednanfen # Duplicate button names that are emulated in mednanfen
map_code['up'] = map_code['dpup'] # map_code['up'] = map_code['dpup'] #
map_code['down'] = map_code['dpdown'] # map_code['down'] = map_code['dpdown'] #
map_code['left'] = map_code['dpleft'] # Multiple systems map_code['left'] = map_code['dpleft'] # Multiple systems
map_code['right'] = map_code['dpright'] # map_code['right'] = map_code['dpright']
map_code['select'] = map_code['back'] # map_code['select'] = map_code['back'] #
map_code['shoulder_r'] = map_code['rightshoulder'] #GBA map_code['shoulder_r'] = map_code['rightshoulder'] # GBA
map_code['shoulder_l'] = map_code['leftshoulder'] # map_code['shoulder_l'] = map_code['leftshoulder'] #
map_code['i'] = map_code['b'] # map_code['i'] = map_code['b'] #
map_code['ii'] = map_code['a'] # map_code['ii'] = map_code['a'] #
map_code['iii'] = map_code['leftshoulder'] # map_code['iii'] = map_code['leftshoulder']
map_code['iv'] = map_code['y'] # PCEngine and PCFX map_code['iv'] = map_code['y'] # PCEngine and PCFX
map_code['v'] = map_code['x'] # map_code['v'] = map_code['x'] #
map_code['vi'] = map_code['rightshoulder'] # map_code['vi'] = map_code['rightshoulder']
map_code['run'] = map_code['start'] # map_code['run'] = map_code['start'] #
map_code['ls'] = map_code['leftshoulder'] # map_code['ls'] = map_code['leftshoulder'] #
map_code['rs'] = map_code['rightshoulder'] # Saturn map_code['rs'] = map_code['rightshoulder'] # Saturn
@ -223,7 +230,7 @@ class mednafen(Runner):
map_code['left-x'] = map_code['dpleft'] # map_code['left-x'] = map_code['dpleft'] #
map_code['up-x'] = map_code['dpup'] # map_code['up-x'] = map_code['dpup'] #
map_code['down-x'] = map_code['dpdown'] # Wonder Swan map_code['down-x'] = map_code['dpdown'] # Wonder Swan
map_code['right-y'] = map_code['lstick_right'] # map_code['right-y'] = map_code['lstick_right']
map_code['left-y'] = map_code['lstick_left'] # map_code['left-y'] = map_code['lstick_left'] #
map_code['up-y'] = map_code['lstick_up'] # map_code['up-y'] = map_code['lstick_up'] #
map_code['down-y'] = map_code['lstick_down'] # map_code['down-y'] = map_code['lstick_down'] #
@ -240,37 +247,37 @@ class mednafen(Runner):
# Define which buttons to use for each machine # Define which buttons to use for each machine
layout = { layout = {
'nes' : ['a','b','start','select','up','down','left','right'], 'nes': ['a', 'b', 'start', 'select', 'up', 'down', 'left', 'right'],
'gb' : ['a','b','start','select','up','down','left','right'], 'gb': ['a', 'b', 'start', 'select', 'up', 'down', 'left', 'right'],
'gba' : ['a','b','shoulder_r','shoulder_l','start','select', 'gba': ['a', 'b', 'shoulder_r', 'shoulder_l', 'start', 'select',
'up','down','left', 'right'], 'up', 'down', 'left', 'right'],
'pce' : ['i','ii','iii','iv','v','vi','run','select','up','down', 'pce': ['i', 'ii', 'iii', 'iv', 'v', 'vi', 'run', 'select', 'up', 'down',
'left','right'], 'left', 'right'],
'ss' : ['a','b','c','x','y','z','ls','rs','start','up','down', 'ss': ['a', 'b', 'c', 'x', 'y', 'z', 'ls', 'rs', 'start', 'up', 'down',
'left','right'], 'left', 'right'],
'gg' : ['button1','button2','start','up','down','left','right'], 'gg': ['button1', 'button2', 'start', 'up', 'down', 'left', 'right'],
'md' : ['a','b','c','x','y','z','start','up','down','left', 'md': ['a', 'b', 'c', 'x', 'y', 'z', 'start', 'up', 'down', 'left',
'right'], 'right'],
'sms' : ['fire1','fire2','up','down','left','right'], 'sms': ['fire1', 'fire2', 'up', 'down', 'left', 'right'],
'lynx' : ['a','b','option_1','option_2','up','down','left', 'lynx': ['a', 'b', 'option_1', 'option_2', 'up', 'down', 'left',
'right'], 'right'],
'psx' : ['cross','circle','square','triangle','l1','l2','r1','r2', 'psx': ['cross', 'circle', 'square', 'triangle', 'l1', 'l2', 'r1', 'r2',
'start','select','lstick_up','lstick_down','lstick_right', 'start', 'select', 'lstick_up', 'lstick_down', 'lstick_right',
'lstick_left','rstick_up','rstick_down','rstick_left', 'lstick_left', 'rstick_up', 'rstick_down', 'rstick_left',
'rstick_right','up','down','left','right'], 'rstick_right', 'up', 'down', 'left', 'right'],
'pcfx' : ['i','ii','iii','iv','v','vi','run','select','up','down', 'pcfx': ['i', 'ii', 'iii', 'iv', 'v', 'vi', 'run', 'select', 'up', 'down',
'left','right'], 'left', 'right'],
'ngp' : ['a','b','option','up','down','left','right'], 'ngp': ['a', 'b', 'option', 'up', 'down', 'left', 'right'],
'snes' : ['a','b','x','y','l','r','start','select','up','down', 'snes': ['a', 'b', 'x', 'y', 'l', 'r', 'start', 'select', 'up', 'down',
'left','right'], 'left', 'right'],
'wswan' : ['a','b','right-x','right-y','left-x','left-y','up-x', 'wswan': ['a', 'b', 'right-x', 'right-y', 'left-x', 'left-y', 'up-x',
'up-y','down-x','down-y','start'], 'up-y', 'down-x', 'down-y', 'start'],
'vb' : ['up-l','down-l','left-l','right-l','up-r','down-r', 'vb': ['up-l', 'down-l', 'left-l', 'right-l', 'up-r', 'down-r',
'left-r','right-r','a','b','lt','rt'] 'left-r', 'right-r', 'a', 'b', 'lt', 'rt']
} }
# Select a the gamepad type # Select a the gamepad type
controls = [] controls = []
if machine in ['gg','lynx','wswan','gb','gba','vb']: if machine in ['gg', 'lynx', 'wswan', 'gb', 'gba', 'vb']:
gamepad = 'builtin.gamepad' gamepad = 'builtin.gamepad'
elif machine in ['md']: elif machine in ['md']:
gamepad = 'port1.gamepad6' gamepad = 'port1.gamepad6'
@ -285,8 +292,8 @@ class mednafen(Runner):
# Construct the controlls options # Construct the controlls options
for button in layout[machine]: for button in layout[machine]:
controls.append("-{}.input.{}.{}".format(machine,gamepad,button)) controls.append("-{}.input.{}.{}".format(machine, gamepad, button))
controls.append("joystick {} {}".format(joy_ids[0],map_code[button])) controls.append("joystick {} {}".format(joy_ids[0], map_code[button]))
return controls return controls
def play(self): def play(self):