Asmo
Advanced Member
- Joined
- Oct 18, 2008
- Messages
- 2,279
Many moons ago Streak released a port of a pretty good Sinclair ZX81 emulator, "sz81". It's still linked to via the Pandora Wiki, see the emulators list page.
The only problem with it was that the remapping function seems to work only for externally connected joypads, and the D-Pad is set to the cursor keys - though not the ones expected by most games, it's set to the CODE-SHIFTed cursors, really only used for moving the cursor within lines of code when editing. Games that use the 'cursors' usually mean keys 5.6.7.8 and 0 - no CODE SHIFT (the red left shift button) used.
The result being that if you wanted to play 3D Monster Maze, featured on the cover of Retro Gamer's 99th issue recently, you had to use the Pandora's 5,6,7,8 and 0 keys. Tricky.
Anyhoo, purely by accident I noticed that when you exit sz81 it prompts you "Write to sz81rc?". Highlight yes and press Enter, and a config file called sz81rc is created in a hidden folder in:
pandora/appdata/sz81-app/
The hidden folder in there is called .sz81 - the file you want is in there.
The original default sz81rc file looks like this:
Paragraphs 4-7 of that determine what keys the D-Pad is mapped to.
Those are the paragraphs beginning with:
ctrl_remap.components=COMP_EMU | COMP_VKEYB
You can see the references to keys 5,6,7,8 in the 2nd last lines.
To remove the left (red) shift key binding to the cursors (56780) so the D-Pad will work as cursors in games that use them you need to delete the reference to SDLK_LSHIFT in the last line each of each paragraph.
So, for D-Pad cursor conrol in games like 3D Monster Maze, those lines in the sz81rc file that has been edited will look like:
Obviously, you could change the references to 5,6,7,8 in those to any other keys if you want to play a game with the D-Pad that doesn't support cursors.
Now a question - the paragraph that follows those in the sz81rc file maps the Backspace (delete) function to the Pandora DEL key. This isn't needed, as SHIFT+0 will do that anyway. I don't know if additional paragraphs can be added (I presume so, haven't tried yet) but at least this one could be changed to map your choice of 'fire' key to one of the Pandora's A,B,X,Y buttons rather than having to use whatever key on the actual keyboard a game uses.
So does anyone know what the "SDLK_" assignation for any of the Pandora's A,B,X,Y buttons would be, if posssible, so that they can be remapped too?
Fortunately, 3D Monster Maze has no fire button, so you could get stuck into that without any more remapping.
The only problem with it was that the remapping function seems to work only for externally connected joypads, and the D-Pad is set to the cursor keys - though not the ones expected by most games, it's set to the CODE-SHIFTed cursors, really only used for moving the cursor within lines of code when editing. Games that use the 'cursors' usually mean keys 5.6.7.8 and 0 - no CODE SHIFT (the red left shift button) used.
The result being that if you wanted to play 3D Monster Maze, featured on the cover of Retro Gamer's 99th issue recently, you had to use the Pandora's 5,6,7,8 and 0 keys. Tricky.
Anyhoo, purely by accident I noticed that when you exit sz81 it prompts you "Write to sz81rc?". Highlight yes and press Enter, and a config file called sz81rc is created in a hidden folder in:
pandora/appdata/sz81-app/
The hidden folder in there is called .sz81 - the file you want is in there.
The original default sz81rc file looks like this:
version=2.1.7
show_input_id=FALSE
joystick_dead_zone=75
key_repeat.delay=320
key_repeat.interval=120
emulator.speed=100
emulator.frameskip=1
emulator.model=MODEL_ZX81
emulator.ramsize=16
emulator.invert=FALSE
sound.volume=128
sound.device=DEVICE_NONE
sound.stereo=FALSE
vkeyb.alpha=255
vkeyb.autohide=FALSE
vkeyb.toggle_shift=FALSE
colour.emu_fg=202018
colour.emu_bg=f0f0e8
colour.hs_load_selected=00ff00
colour.hs_load_pressed=ffc000
colour.hs_vkeyb_zx80_selected=00ff00
colour.hs_vkeyb_zx80_pressed=ffff00
colour.hs_vkeyb_zx80_toggle_pressed=ff4000
colour.hs_vkeyb_zx81_selected=00ff00
colour.hs_vkeyb_zx81_pressed=ffc000
colour.hs_vkeyb_zx81_toggle_pressed=ff4000
colour.hs_ctb_selected=00ff00
colour.hs_ctb_pressed=ffc000
colour.hs_options_selected=00ff00
colour.hs_options_pressed=ffc000
ctrl_remap.components=COMP_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RSHIFT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_LSHIFT
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_UP
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_7
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_DOWN
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_6
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_LEFT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_5
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RIGHT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_8
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_BACKSPACE
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_0
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_COMMA
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_PERIOD
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_LOAD
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_PAGEUP
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_q
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_LOAD
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_PAGEDOWN
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_a
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_LDFILE | COMP_SSTATE | COMP_DIALOG | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_LEFT
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_W
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_LDFILE | COMP_SSTATE | COMP_DIALOG | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RIGHT
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_E
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_LDFILE | COMP_SSTATE | COMP_DIALOG | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RETURN
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_HIT
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_SSTATE | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_UP
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_N
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_SSTATE | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_DOWN
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_S
ctrl_remap.remap_mod_id=
show_input_id=FALSE
joystick_dead_zone=75
key_repeat.delay=320
key_repeat.interval=120
emulator.speed=100
emulator.frameskip=1
emulator.model=MODEL_ZX81
emulator.ramsize=16
emulator.invert=FALSE
sound.volume=128
sound.device=DEVICE_NONE
sound.stereo=FALSE
vkeyb.alpha=255
vkeyb.autohide=FALSE
vkeyb.toggle_shift=FALSE
colour.emu_fg=202018
colour.emu_bg=f0f0e8
colour.hs_load_selected=00ff00
colour.hs_load_pressed=ffc000
colour.hs_vkeyb_zx80_selected=00ff00
colour.hs_vkeyb_zx80_pressed=ffff00
colour.hs_vkeyb_zx80_toggle_pressed=ff4000
colour.hs_vkeyb_zx81_selected=00ff00
colour.hs_vkeyb_zx81_pressed=ffc000
colour.hs_vkeyb_zx81_toggle_pressed=ff4000
colour.hs_ctb_selected=00ff00
colour.hs_ctb_pressed=ffc000
colour.hs_options_selected=00ff00
colour.hs_options_pressed=ffc000
ctrl_remap.components=COMP_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RSHIFT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_LSHIFT
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_UP
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_7
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_DOWN
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_6
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_LEFT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_5
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RIGHT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_8
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_BACKSPACE
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_0
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_COMMA
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_PERIOD
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_LOAD
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_PAGEUP
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_q
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_LOAD
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_PAGEDOWN
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_a
ctrl_remap.remap_mod_id=SDLK_LSHIFT
ctrl_remap.components=COMP_LDFILE | COMP_SSTATE | COMP_DIALOG | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_LEFT
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_W
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_LDFILE | COMP_SSTATE | COMP_DIALOG | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RIGHT
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_E
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_LDFILE | COMP_SSTATE | COMP_DIALOG | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RETURN
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_HIT
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_SSTATE | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_UP
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_N
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_SSTATE | COMP_RUNOPTS_ALL
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_DOWN
ctrl_remap.remap_device=DEVICE_CURSOR
ctrl_remap.remap_id=CURSOR_S
ctrl_remap.remap_mod_id=
Paragraphs 4-7 of that determine what keys the D-Pad is mapped to.
Those are the paragraphs beginning with:
ctrl_remap.components=COMP_EMU | COMP_VKEYB
You can see the references to keys 5,6,7,8 in the 2nd last lines.
To remove the left (red) shift key binding to the cursors (56780) so the D-Pad will work as cursors in games that use them you need to delete the reference to SDLK_LSHIFT in the last line each of each paragraph.
So, for D-Pad cursor conrol in games like 3D Monster Maze, those lines in the sz81rc file that has been edited will look like:
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_UP
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_7
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_DOWN
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_6
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_LEFT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_5
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RIGHT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_8
ctrl_remap.remap_mod_id=
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_UP
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_7
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_DOWN
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_6
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_LEFT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_5
ctrl_remap.remap_mod_id=
ctrl_remap.components=COMP_EMU | COMP_VKEYB
ctrl_remap.protected=TRUE
ctrl_remap.device=DEVICE_KEYBOARD
ctrl_remap.id=SDLK_RIGHT
ctrl_remap.remap_device=DEVICE_KEYBOARD
ctrl_remap.remap_id=SDLK_8
ctrl_remap.remap_mod_id=
Obviously, you could change the references to 5,6,7,8 in those to any other keys if you want to play a game with the D-Pad that doesn't support cursors.
Now a question - the paragraph that follows those in the sz81rc file maps the Backspace (delete) function to the Pandora DEL key. This isn't needed, as SHIFT+0 will do that anyway. I don't know if additional paragraphs can be added (I presume so, haven't tried yet) but at least this one could be changed to map your choice of 'fire' key to one of the Pandora's A,B,X,Y buttons rather than having to use whatever key on the actual keyboard a game uses.
So does anyone know what the "SDLK_" assignation for any of the Pandora's A,B,X,Y buttons would be, if posssible, so that they can be remapped too?
Fortunately, 3D Monster Maze has no fire button, so you could get stuck into that without any more remapping.
Last edited by a moderator: