Xmess 103


mindlord

Notices Two Things
Joined
Mar 10, 2006
Messages
1,786
Location
In a cave.
Website
Visit site
I compiled xmess 103 on the Pandora today.
Using the following make and with some additional swap via a USB stick:
Code:
make TARGET=mess MY_CPU=i386_noasm

It runs pretty well. I'll PND it up as soon as I figure out a decent front-end. I used the original unmodified source. If anyone wants the binary download it here.

*** WARNING - xmess uses Scroll Lock to toggle between full and partial keyboard emulation!
The Pandora does not have Scroll Lock mapped to it's keyboard by default.
Until a PND is made, I remapped the Euro symbol in my .pndXmodmap file to Scroll Lock.
Code:
keycode 201 = Scroll_Lock NoSymbol Scroll_Lock
If you invoke xmess fullscreen without setting a key as Scroll Lock you will be unable to exit the emulator and will have to reboot.

Here's the command I use to invoke it fullscreen with the correct aspect ratio for the Pandora
Code:
./xmess.x11 -bp ~/.xmess/roms -vidmod 1 -fullscreen -dar 1.6666666 [Machine_ID]
-bp sets the path to the machine bios roms. So you can use any directory you want. I run from SD so my home folder is okay for me.
-vidmod 1 tells it to use yuv overlay mode
-fullscreen duh
-dar 1.66666666 tells it to use the 5/3 aspect ratio of the screen to prevent stretching.
 
xmess is an older version of the Multiple Emulator Super System group of computer and console emulators built using the mame engine. It emulates everything from the Acorn to the z80 and everything inbetween. It's built for accuracy over speed, so it's not terribly optimized for ARM, but it will give us access to several emulatable home computers that don't have a specific emulator yet.
 
Thanks ML

Will your version support any consoles NES/MS, or will it just be for older computer systems?
 
@Sebt3 - I'll take a look at it. xmess needs a pretty complicated launcher since not only do you have to select a system to launch from a list of available systems. And the user will not have all the roms for all the systems available so the frontend needs to check which are there. Also, (usually) a disk, cart, punch card, cassette, or any other multitude of media. There are some nice gtk+ based frontends out there for it, I will probably just try to compile one of those and package them together.

@Jonlad1 - Yes, it can emulate most consoles as well. However, as I said, it's focus is on accuracy and not speed, so even "easy to emulate" systems like the NES probably won't play smoothly without overclocking.

I compiled xmess for the Pandora for one selfish reason. I wanted a CoCo 3 emulator, and there isn't any other way to get it on the Pandora than mess. xroar is the defacto stand alone CoCo emulator for Linux, but it doesn't support the CoCo 3, and all other CoCo 3 emulators are Windows or DOS only and closed source. So short of writing the emulator myself... xmess was my only choice.
 
Does xmess have a Vectrex Emulator on it? if so, that would be so cool to have a good handheld Vectrex emulator. :)
 
mindlord said:
@sebt3 - I'll take a look at it. xmess needs a pretty complicated launcher since not only do you have to select a system to launch from a list of available systems. And the user will not have all the roms for all the systems available so the frontend needs to check which are there. Also, (usually) a disk, cart, punch card, cassette, or any other multitude of media. There are some nice gtk+ based frontends out there for it, I will probably just try to compile one of those and package them together.

Picklelauncher supports different command line args depending on the filetype, so that would work.
It also only shows the filetypes that are configured, so it wouldn't show files that xmess can't play.

However, I don't think it dives into ZIP files yet to find out what's inside.
 
Last edited:
tony11@hotmail.com said:
Does xmess have a Vectrex Emulator on it? if so, that would be so cool to have a good handheld Vectrex emulator. :)
Yes. Although I can't say how well exactly as I do not possess the bios files for it.
 
Last edited by a moderator:
mindlord said:
Where do I find the picklelauncher? Do I just rip it out of a PND that uses it or something?

You can do that or i have a test build here pickle.gp2x.de/picklelauncher
and some support files here (ttf font) pickle.gp2x.de/pl.zip
 
Last edited by a moderator:
I decided to go another direction and use wah!cade as my frontend. BUT! I need the help of a bash guru, pretty please.


What I'm trying to do:

I've got a bash script that generates the .ini files for wah!cade, but I'm having problems structuring the command line to execute. I'm trying to automatically set the device based on the extension of the rom selected. If [romext] = dsk, for example, it will subsitute in -flop0 "/path/to/roms/disk.dsk" but won't include any of the other device switches.

Here's what I am trying currently, but it doesn't work because the $() command substitution strips the quotes out even if I escape them. I need a command that fits on one line like this:
Code:
~/xmess.x11 coco3 -bp ~/bios ( [[ ".wav .cas" =~ "${[romext]}" ]] && echo "-cass \"[rompath]/[name].[romext]\"" ) ( [[ ".dsk .os9 .vdk .dmk" =~ "${[romext]}" ]] && echo "-flop0 \"[rompath]/[name].[romext]\"" ) ( [[ ".ccc .rom" =~ "${[romext]}" ]] && echo "-cart \"[rompath]/[name].[romext]\"" ) ( [[ ".pak" =~ "${[romext]}" ]] && echo "-dump \"[rompath]/[name].[romext]\"" ) ( [[ ".vhd" =~ "${[romext]}" ]] && echo "-hard \"[rompath]/[name].[romext]\"" )

Any clues?

I could create a loader script, but I want to avoid it if possible.
 
mindlord said:
I could create a loader script, but I want to avoid it if possible.
I could help you, but I ont get why you don't want to write a loader script. It should be easy to write, and will be a lot easier to maintain.
 
Last edited by a moderator:
Mainly because the extensions vary wildly from one machine to the next. So it's not really an "easy" solution comparatively.
 
mindlord said:
Here's what I am trying currently, but it doesn't work because the $() command substitution strips the quotes out even if I escape them. I need a command that fits on one line
Are you sure that $() strip the quote ? 'cause, I was sure it didn't and I've just tested once again and no : the quote are where expected :)
Code:
seb@seb:~$ echo $(echo "-cass \"[rompath]/[name].[romext]\"")
-cass "[rompath]/[name].[romext]"
Did you know that you could chain command in a $() so $(true;true) is valid.
As you always give "[rompath]/[name].[romext]" as last argument, let's factor. I can't se why this won't work :
Code:
~/xmess.x11 coco3 -bp ~/bios $( [[ ".wav .cas" =~ "[romext]" ]] && echo "-cass";[[ ".dsk .os9 .vdk .dmk" =~ "[romext]" ]] && echo "-flop0"; [[ ".ccc .rom" =~ "[romext]" ]] && echo "-cart"; [[ ".pak" =~ "[romext]" ]] && echo "-dump";[[ ".vhd" =~ "[romext]" ]] && echo "-hard" ) "[rompath]/[name].[romext]"


PS: your bash-fu is far from bad :)
 
Last edited by a moderator:
sebt3 said:
Are you sure that $() strip the quote ? 'cause, I was sure it didn't and I've just tested once again and no : the quote are where expected :)
For some reason when I actually plugged it in, xmess freaked on spaces in the path/filename. So the quotes were disappearing somewhere along the line.

Code:
~/xmess.x11 coco3 -bp ~/bios $( [[ ".wav .cas" =~ "[romext]" ]] && echo "-cass";[[ ".dsk .os9 .vdk .dmk" =~ "[romext]" ]] && echo "-flop0"; [[ ".ccc .rom" =~ "[romext]" ]] && echo "-cart"; [[ ".pak" =~ "[romext]" ]] && echo "-dump";[[ ".vhd" =~ "[romext]" ]] && echo "-hard" ) "[rompath]/[name].[romext]"
This looks more like what I had in mind. I guess I was too close to the problem. I'll have to do some fiddling with the script that generates the options. Yeah, that is much cleaner.

PS: your bash-fu is far from bad :)
Thanks. I try. :)
 
Last edited by a moderator:
Back
Top