A quick guide to getting OpenMSX working

SupraKarma

Member
Supporter
RL Member
Brolly suggested this emulator to me a while back, but I was stubborn, and OpenMSX has a lame (barely functional) user interface, and no easy way to remap buttons.

I've gotten a lot better at configuring things, but even still, this wasn't the most intuitive emulator to set up. So, I thought I'd address the issues I personally came across, with the hopes that it will help someone else looking for a better solution than RetroArch or BlueMSX.

This first issue is actually getting the module to launch a game. You'll want to use 'Panasonic FS-A1GT MSX turbo R,' I don't know of any reason you'd want to use anything else. It will play MSX, MSX2, and MSX2+ games.

So in the 'modules' tab you highlight OpenMSX.ahk, and click on the 'global module settings' button. In the 'default field' button you're going to want to enter Panasonic_FS-A1GT. Set Fullscreen to true, FullSpeedWhenLoading to true, Joystick1 to 2-button Joystick, Joystick2 to 2-button Joystick, and leave everything else default.

In the emulator directory, you should have a share\machines directory. You need to find 'fs-a1gt_firmware.rom' and put it directly in this directory.

Once you do that, the module should be able to boot a game.

Now the next obstacle is remapping controls. I haven't mastered this, but I can help you at least get an Xbox 360 controller working.

By default (and after following the above steps), OpenMSX should already have buttons A and B set to 1 and 2, and the left analog stick set as the default. It also very strangely defaults all of the other buttons to be button 1 or button 2, including select and start. So it's useable, but not ideal.

I prefer button X to be button 1, and Button A to be button 2. It's more comfortable on the thumb. And I also prefer to have the D-Pad be functional along with the left analog stick. I also wanted some keyboard shortcuts that aren't enabled by default - specifically, shift+F1 to toggle the main menu, and shift+F3 to reset the game.

You can do all this, it just isn't intuitive. For the example I've just described, follow these steps:

1. In your emulator directory, you need to create a folder called 'remaps,' and in it, you need to create a text file - call it 'GLOBAL.txt.'

2. Open the 'GLOBAL.txt' file you just created, and copy and paste the following:

dict set joystick1_config LEFT {-axis0 L_hat0}
dict set joystick1_config RIGHT {+axis0 R_hat0}
dict set joystick1_config UP {-axis1 U_hat0}
dict set joystick1_config DOWN {+axis1 D_hat0}
dict set joystick1_config A button2
dict set joystick1_config B button0
dict set joystick2_config LEFT {-axis0 L_hat0}
dict set joystick2_config RIGHT {+axis0 R_hat0}
dict set joystick2_config UP {-axis1 U_hat0}
dict set joystick2_config DOWN {+axis1 D_hat0}
dict set joystick2_config A button2
dict set joystick2_config B button0
bind shift+F1 "main_menu_toggle"
bind shift+F3 reset

Then save the document. Your OpenMSX emulator should now be completely portable, except for save states, that get stored to your 'user' directory, buried in some subfolders you'd never think to look in. Why do emulator developers do this, anyways? Everything should be portable, right out of the box. It's intuitive.



If you've got a little bit of experience with this kind of stuff, you should be able to figure out how to custom configure things to a degree. But I'll lay it out for you anyways.

Example #1:

dict set joystick1_config LEFT {-axis0 L_hat0}

This is telling the emulator to map the left analog (axis0), left (-), and also D-Pad left (L_hat0) to LEFT, on joystick1.

Example #2:

dict set joystick2_config A button2

This is telling the emulator to map the X button (button2) to A, on joystick2. A is button 1 on an MSX pad.

On an Xbox 360 pad, button0 is 'A', button1 is 'B', button2 is 'X,' button3 is 'Y', button 4 is 'L bumper', button 5 is 'R bumper', button6 is 'L trigger,' button7 is 'R trigger', button 8 is 'select', button 9 is 'start', button 10 is 'XBox Guide button', button 11 is 'L3' (left analog click), button 12 is 'R3' (right analog click).

Example #3:

bind shift+F1 "main_menu_toggle"

This is telling the emulator to bind shift+F1 (hold left shift and press F1) to toggle the main menu.



On a final note, here's some default keyboard shortcuts for you:
Alt+F7 - Load state
Alt+F8 - Save state
F9 - Toggle frame throttle (fast forward)
F10 - Toggle console (you can use emulator specific command prompt-type commands, if you know how)
F11- Mute Volume
F12 - Toggle fullscreen
Alt+Enter - Toggle fullscreen
Pause - Pause emulation
Page Up - Rewind 1 second. If you press it several times, then press nothing else, the emulator will replay everything you just did. Press a button on the gamepad to take control again.
Page Down - Fast Forward 1 second. I haven't tried this, but I think this is for the situation where you rewind too far, and you want to 'fast forward' a bit.



Here's a nice thread with more information about remapping: https://www.msx.org/forum/msx-talk/openmsx/need-a-little-help-binding-joystick-buttons?page=0
Here's a link to the manual with some documentation and examples of remaps: http://openmsx.org/manual/commands#bind
And here's a pic with some examples of remaps:

openmsxarcade (1).JPG



This should be enough to help you get the emulator up and running, and working the way you want. Good luck.
 
Last edited:

SupraKarma

Member
Supporter
RL Member
I just thought I'd also add, I just figured out how to get 10 save state slots working with Pause for OpenMSX.

To do this, you need to add the following lines to the 'GLOBAL.txt' file (description in first post):

bind alt+1 savestate 1
bind alt+2 savestate 2
bind alt+3 savestate 3
bind alt+4 savestate 4
bind alt+5 savestate 5
bind alt+6 savestate 6
bind alt+7 savestate 7
bind alt+8 savestate 8
bind alt+9 savestate 9
bind alt+0 savestate 0
bind shift+1 loadstate 1
bind shift+2 loadstate 2
bind shift+3 loadstate 3
bind shift+4 loadstate 4
bind shift+5 loadstate 5
bind shift+6 loadstate 6
bind shift+7 loadstate 7
bind shift+8 loadstate 8
bind shift+9 loadstate 9
bind shift+0 loadstate 0

Save the file after you've added those lines, then open your 'Global Emulators.ini' (located in Rocketlauncher\Settings\), and find [OpenMSX] (or whatever you named it), and edit the Pause_Save_State_Keys and Pause_Load_State_Keys to the following:

Pause_Save_State_Keys={Alt down}{1 down}{1 up}{Alt up}|{Alt down}{2 down}{2 up}{Alt up}|{Alt down}{3 down}{3 up}{Alt up}|{Alt down}{4 down}{4 up}{Alt up}|{Alt down}{5 down}{5 up}{Alt up}|{Alt down}{6 down}{6 up}{Alt up}|{Alt down}{7 down}{7 up}{Alt up}|{Alt down}{8 down}{8 up}{Alt up}|{Alt down}{9 down}{9 up}{Alt up}|{Alt down}{0 down}{0 up}{Alt up}
Pause_Load_State_Keys={shift down}{1 down}{1 up}{shift up}|{shift down}{2 down}{2 up}{shift up}|{shift down}{3 down}{3 up}{shift up}|{shift down}{4 down}{4 up}{shift up}|{shift down}{5 down}{5 up}{shift up}|{shift down}{6 down}{6 up}{shift up}|{shift down}{7 down}{7 up}{shift up}|{shift down}{8 down}{8 up}{shift up}|{shift down}{9 down}{9 up}{shift up}|{shift down}{0 down}{0 up}{shift up}

That's all you need to do. You can even go to Pause/Menu/Save Screenshot=True in RLUI, and it will save screenshots that you can look at when you're scrolling you're save states. :)
 

RobertBlum

New member
RL Member
Even your post is almost 2 years old but it helped me a lot! Thank you for that

Maybe you can help with another problem. I wanna have a button on my controller as autofire. I tried with the "bind" and "repeat" commands, but it didnt work.

My global.txt:

dict set joystick1_config LEFT {-axis0 L_hat0}
dict set joystick1_config RIGHT {+axis0 R_hat0}
dict set joystick1_config UP {-axis1 U_hat0}
dict set joystick1_config DOWN {+axis1 D_hat0}
dict set joystick1_config A button0
dict set joystick1_config B button1
bind p "toggle pause"
bind s "savestate"
bind l "loadstate"
bind r "reset"
load_icons none
set deflicker off


Everything works fine. But how to do that button A on my controller is working as autofire?
 

mccorkled

Member
RL Member
I just thought I'd also add, I just figured out how to get 10 save state slots working with Pause for OpenMSX.

To do this, you need to add the following lines to the 'GLOBAL.txt' file (description in first post):

bind alt+1 savestate 1
bind alt+2 savestate 2
bind alt+3 savestate 3
bind alt+4 savestate 4
bind alt+5 savestate 5
bind alt+6 savestate 6
bind alt+7 savestate 7
bind alt+8 savestate 8
bind alt+9 savestate 9
bind alt+0 savestate 0
bind shift+1 loadstate 1
bind shift+2 loadstate 2
bind shift+3 loadstate 3
bind shift+4 loadstate 4
bind shift+5 loadstate 5
bind shift+6 loadstate 6
bind shift+7 loadstate 7
bind shift+8 loadstate 8
bind shift+9 loadstate 9
bind shift+0 loadstate 0

Save the file after you've added those lines, then open your 'Global Emulators.ini' (located in Rocketlauncher\Settings\), and find [OpenMSX] (or whatever you named it), and edit the Pause_Save_State_Keys and Pause_Load_State_Keys to the following:

Pause_Save_State_Keys={Alt down}{1 down}{1 up}{Alt up}|{Alt down}{2 down}{2 up}{Alt up}|{Alt down}{3 down}{3 up}{Alt up}|{Alt down}{4 down}{4 up}{Alt up}|{Alt down}{5 down}{5 up}{Alt up}|{Alt down}{6 down}{6 up}{Alt up}|{Alt down}{7 down}{7 up}{Alt up}|{Alt down}{8 down}{8 up}{Alt up}|{Alt down}{9 down}{9 up}{Alt up}|{Alt down}{0 down}{0 up}{Alt up}
Pause_Load_State_Keys={shift down}{1 down}{1 up}{shift up}|{shift down}{2 down}{2 up}{shift up}|{shift down}{3 down}{3 up}{shift up}|{shift down}{4 down}{4 up}{shift up}|{shift down}{5 down}{5 up}{shift up}|{shift down}{6 down}{6 up}{shift up}|{shift down}{7 down}{7 up}{shift up}|{shift down}{8 down}{8 up}{shift up}|{shift down}{9 down}{9 up}{shift up}|{shift down}{0 down}{0 up}{shift up}

That's all you need to do. You can even go to Pause/Menu/Save Screenshot=True in RLUI, and it will save screenshots that you can look at when you're scrolling you're save states. :)

My OpenMSX window doesn't regain focus. It also doesn't seem to pause the emulator when I open Pause and I end up losing a life.
 

SupraKarma

Member
Supporter
RL Member
Now that the BlueMSX core for RetroArch has working save states, I've switched over to that. It is of comparable quality. Consider giving that a try.
 
Top