Reply
Thread Tools
Flandry's Avatar
Posts: 1,558 | Thanked: 1,773 times | Joined on Oct 2009 @ Boston
#1
Alright, there are random threads cropping up and being resurrected to inquire about MAME on Maemo 5. I have been using the Emulators thread for discussion and wasn't going to create a Talk thread about it until it is ready for general users, but it's better at least keep the conversation in one place. Besides being a place to bring together the SDLMAME discussion, this is a also a call to arms. Work is killing me and MAME will progress a lot faster if i can get some help. I need two things from you.

Community Involvement

First, a warning: SDLMAME is not ready for general users. That's why it's only in Extras-devel. It can and will crash and/or lock up your N900, requiring a reboot. It could do worse. In short, it is a Work In Progress.

1: Bug reports

If you are going to just go ahead and install it anyway, which a surprising number of people seem to be doing, then you are recruiting yourselves as alpha testers. I will keep a list of known issues here. These issues will most likely become known because somebody experiences them and reports them, and that's the most likely way they will get fixed. I can't fix a problem i don't know exists, and i simply don't have time to play ahem, test most of the 0.135 ROM set.

So, if SDLMAME crashes or doesn't work with a specific ROM, please give a detailed report here. If something seems to be broken or poorly working, please report it.

2: ROM status maintainers

There are some real hardcore MAME junkies here. Your task, should you choose to accept it, is to help maintain the ROM Status wiki. It should be an alphabetically-ordered list, divided into sections (Playable, Problematic, and Broken) and ideally contain information such as % speed performance. Also mark the Broken and Problematic ROMs with a "Confirmed" if you verify an existing report, so we can be sure it's not just one particular person's setup that's the problem. This will give me a better idea which machines are in need of help and it will give users an idea what is possible with MAME on the N900.

Currently i have a basic list in the second post, but i'm not going to update that without help.

3: Custom Configurations

Because there are so many ROMs with different control schemes, some are not going to work well with the defaults. It would be especially useful if some power users could try fiddling with the controls (.cfg files) and main mame.ini file to find the best settings.

All of the configuration files are in /home/user/.mame/ and its subdirectories. (That's just a "cd .mame" from the default x terminal prompt.)

Here's a guide to the mame.ini settings.

Status

Version
Package page
Old package page

The current version is 0.138u1.
The name was changed in version 0.137because SDLMAME was merged into the main MAME project.

Directories
Configuration base: /home/user/.mame/ Guide to mame.ini settings.
ROM base: /home/user/roms; /home/user/MyDocs/roms; /media/mmc1/roms (i.e. ./roms, ./MyDocs/roms (N900/roms from mass storage), and microSD card)

Controls
Besides the arrow keys and the keys on the lower left as various player 1 buttons, the 'q' key ('1' in Fn-land) is both the player 1 coin and player 1 start key. This seems to work ok in the games i've tried--you just press it twice to get going.

I suggest trying the accelemymote accelerometer-to-joystick driver. That utility can really add a new dimension to a lot of ROMs.

Known issues
  • UI not adapted for N900
  • Incomplete keymaps; also the Nokia keyboard localization bug Fixed in 0.137-0maemo2
  • Some ROMs cause lockups
  • Performance is not where it could be. GL ES support is probably needed to accelerate drawing and scaling. This is a long-term goal but is not planned before the first public release.
TODO
  • Centipede/etc (portrait games)
    • Modify mouse input code to enable screen tap as one button input. Possibly emulate two buttons via position of tap.
    • Update accelemymote to support rotating joystick axes for portrait mode
  • Space Harrier, Outrun, Galaga, etc. performance issues
    • Re-add arch and cpu flags to compiler Done
    • Profile problem ROMs to determine possible improvements
    • Implement arm-specific assm helper functions in src/emu/eigccarmel.h
  • General
    • Implement sleep-on-lose focus
    • Track down keyboard/mouse input lockup bug
    • Track down Galaga 88 bug (try reducing -o for starters)

As you can see, there's a lot to do before this is ready for general release. Please be patient and consider helping out as requested.

Plans and goals for SDLMAME on Maemo
Originally posted here.

I'll make a few follow-up comments for context and expectation management. I will probably wax philosophical.

Philosophy of the SDLMAME Maemo port

The advantage of using the latest release of SDLMAME instead of an old MAME branch project like most mobile device port maintainers do is that all the improvements of the main upstream source go directly into the port for "free". In this case, there's an added bonus in that the SDLMAME maintainer has an interest in arm support for his own devices (which is why this port is possible right now). My intent is to just be a maintainer of the port, not a MAME developer. I don't have time to get fully into the MAME codebase, so this is a way to contribute to MAME and Maemo and possibly my own uses without a huge investment.

Similar to my reasons for using a modern MAME upstream source are my reasons for picking MAME itself. The good thing and bad thing about MAME is that it's a very thorough emulator. It's good because it means that if it emulates on any system it runs on, it should work on all of them. It's bad because it means there is more overhead than there would be if it had all kinds of speed hacks.

It's basically the stability and versatility vs. performance tradeoff common in the tech world. The N900 is a powerful enough system to run the ROM drivers i'm interested in seeing emulated without resorting to cheap hacks and custom projects, and future Maemo devices will only get better. Making a port that tracks the improvements in MAME and doesn't introduce hard-to-maintain device-specific changes will be a more useful contribution in the long run.

Expectations for SDLMAME on Maemo

All of that was basically an elaborate excuse to justify the minimal amount of changes to the upstream source i plan on making for this port. Besides the initial optified packaging that is done, getting the UI, config and keymaps into useful condition and any optimizations necessary to get reasonable performance on the old ROMs are the only other changes i plan on making.

And as for compatbility, if it is a pre-1990 ROM and works well in MAME on the PC, it should work well in this port when completed. That's my target.

Last edited by Flandry; 06-13-2010 at 03:57 PM. Reason: SDLMAME merged into MAME
 

The Following 25 Users Say Thank You to Flandry For This Useful Post:
Flandry's Avatar
Posts: 1,558 | Thanked: 1,773 times | Joined on Oct 2009 @ Boston
#2
Playable ROMS
  • Mr Do
  • Dig Dug
  • Jungle King
  • Gaplus
  • Galaga
  • Pacman
  • Block
  • Vulgus
  • Side Pocket
  • Atari Tetris
  • Astro Force
  • Aurail
  • Bubble Bobble
  • Bomb Jack
  • Zaxxon
  • Cameltry
  • Aerofighters
  • DonDonPachi

See the wiki page for more details and to report your own results. I will keep here a "best of" playable list for now, and leave the majority of the list and reporting to the wiki.
__________________

Unofficial PR1.3/Meego 1.1 FAQ

***
Classic example of arbitrary Nokia decision making. Couldn't just fallback to the no brainer of tagging with lat/lon if network isn't accessible, could you Nokia?
MAME: an arcade in your pocket
Accelemymote: make your accelerometer more joy-ful

Last edited by Flandry; 02-01-2010 at 09:15 PM. Reason: Migrate to the wiki for most reporting
 

The Following 5 Users Say Thank You to Flandry For This Useful Post:
Bazza's Avatar
Posts: 733 | Thanked: 249 times | Joined on Jan 2010 @ UK
#3
is this the kind of thing your after

all are tested with auto frame skip selected

After burner - working / very slow - 29% speed
After burner 2 - working / very slow - 27% speed
Arkanoid - working / good - 99% speed (slight crackle on sound)
Cabal - working / good - 95% speed (some crackle on sound)
Chase hq - working / jerky - 42% speed (some sound crackle)
Commando - working / good - 75% speed (some sound crackle)
Drangon buster - working / good - 99% speed
Double dragon - working / slow - 44% speed (some crackle on sound)
Gauntlet - working / slow 65% speed (some crackle on sound)
Ghosts n goblins - working / good 100% speed (the odd time it jumps to 142% speed for a second)
Ghouls n ghosts - working / jerky - 77% speed (some sound crackle)
Hard drivin - not working and locks up phone
Hyper sports - working / good - 99% speed (desperate for run like hell cheat on this)
Nemesis - working / jerky 70% speed (some sound crackle)
Outrun - working / very slow - 16% speed (cannot configure keys stuck on mouse setting)
Pacland - working / good - 99% speed
Space harrier - working / slow - 41% speed
Sky kid - working / good - 99% speed
Spy hunter - working / jerky 42% speed (some sound crackle)
Star wars arcade - working / jerky very slow - 26% speed (crackle on sound)
Tekken - not working and crashes emulator
Vs super mario bros - does not load
Wec le mans - working / jerky - 48% speed (some sound crackle)
Wonderboy - working / good 98% speed




I thought i would post some of the popular sega games first although this is not a true reflection on the emulator most handheld devices with a newly built mame emulator struggle with these roms at first.

It would be great to compare speeds on these roms with other n900 users.

Last edited by Bazza; 02-01-2010 at 03:53 PM.
 

The Following 5 Users Say Thank You to Bazza For This Useful Post:
sbock's Avatar
Posts: 93 | Thanked: 121 times | Joined on Jan 2010 @ Germany
#4
Great! Some quick random parent games:

-Tetris Atari (1988) Playable
-Crime Fighters Konami (1989) Playable
-PacMan Namco (1980) Playable
-Plotting Taito (1989) Playable
-Asteroids Atari (1979) Playable
-Carnival Sega (1980) Playable

Flandry, what do you think about adding some ARM optimizations from MAME4all (e.g. Cylone and Dr80 CPU cores)?
The source is available here: http://www.talfi.net/gp32_franxis/

Last edited by sbock; 01-31-2010 at 02:18 PM.
 

The Following User Says Thank You to sbock For This Useful Post:
Flandry's Avatar
Posts: 1,558 | Thanked: 1,773 times | Joined on Oct 2009 @ Boston
#5
Originally Posted by sbock View Post
Flandry, what do you think about adding some ARM optimizations from MAME4all (e.g. Cylone and Dr80 CPU cores)?
The source is available here: http://www.talfi.net/gp32_franxis/
I have added my quote about my philosophy and plans for SDLMAME from the emulators thread to the first post here. Short answer to your question: probably not, unless it turns out that the goals are unattainable otherwise. I want to track the upstream source as much as is possible, diverging only for customizations necessary for Maemo.

Here are a couple relevant posts about optimizing MAME from the emulators thread.

Originally Posted by Flandry View Post
GL ES support is not as easy as flipping a switch and it's not something i'm going to look into until it's clear it's the best way to get where i want MAME to be. There is no 3D rendering going on in MAME--it's all emulated--and from the few conversations on drawing performance i was privy to, the memory bandwidth of the device is often the limiting factor for graphics-intensive apps. I hope someone who knows the details better can pitch in with better knowledge, but my understanding is that without independent RAM of its own to use, bringing in the GPU for drawing can actually reduce performance because of extra transfers to/from RAM. Whether that's actually the case or not, the limitations of the N900 hardware compared to a PC are such that i'm not at all sure that GL ES is going to be worth the effort. I haven't done any detailed profiling yet since the update.

Regarding the question of how much the PR1.1 system updates influence SDLMAME performance, here's what i found (using just a single older ROM):

No hardware scaling: 34% -> 52%
YUV overlay: 86% -> 88%

Which is kinda what i expected as mentioned earlier.

One interesting thing is that the kernel is now more occupied during execution than the mame binary is, in either case. I'm not sure what that means, but it suggests that the actual emulation is still the minor part of the cycle usage.
Originally Posted by Flandry View Post
Still not ready to take feature requests, but i have profiled the program again and the drawing and YUV translation functins are the holdups, so i am faced with coding optimized assembler routines or implementing GL ES to pursue any significant speedup. Before doing that i will probably do more thorough testing and tweak the keymaps and other control setups to see how the current codebase compares with my expectations. As has been noticed, much of the UI is still unaltered from upstream, which is intended for PCs wih full keyboards.

Community todo #3
A summary of which controls are actually important and which keys should be mapped to what is still welcome as i mentioned a while ago. Time spent messing with keymaps could probably better be spent on development.
__________________

Unofficial PR1.3/Meego 1.1 FAQ

***
Classic example of arbitrary Nokia decision making. Couldn't just fallback to the no brainer of tagging with lat/lon if network isn't accessible, could you Nokia?
MAME: an arcade in your pocket
Accelemymote: make your accelerometer more joy-ful

Last edited by Flandry; 01-31-2010 at 05:55 PM.
 

The Following User Says Thank You to Flandry For This Useful Post:
sbock's Avatar
Posts: 93 | Thanked: 121 times | Joined on Jan 2010 @ Germany
#6
Originally Posted by Flandry View Post
I have added my quote about my philosophy and plans for SDLMAME from the emulators thread to the first post here. Short answer to your question: probably not, unless it turns out that the goals are unattainable otherwise. I want to track the upstream source as much as is possible, diverging only for customizations necessary for Maemo.

Here are a couple relevant posts about optimizing MAME from the emulators thread.
I see. Understood and accepted. Thanks for the explanation and good luck for your project...

All tested with Autoframeskip, all parents:

-Asteroids 1979 Playable 65%
-Ladybug 1981 Playable 100%
-Twin Cobra 1987 Playable 80% (crashes in Level 1)
-Carnival 1980 Playable 100% (tested without samples)
-Xevious 1982 Playable 60%
-Pacman 1980 Playable 100%
-Shinobi 1887 Playable 50% (sound issues)
-Super Volleyball 1989 Not Playable 95% (crashes after start)
-Silkworm 1988 Playable 90%
-Atari Tetris 1988 Playable 90%
-Crime Fighter 1989 Playable 75%
-Plotting 1989 Playable 100%

Last edited by sbock; 01-31-2010 at 07:59 PM.
 

The Following 2 Users Say Thank You to sbock For This Useful Post:
Posts: 1,427 | Thanked: 2,074 times | Joined on Aug 2009 @ Sydney
#7
I only tried 1 game so far:

1943: The Battle of Midway - 100% playable.
 

The Following User Says Thank You to jakiman For This Useful Post:
ArnimS's Avatar
Posts: 1,107 | Thanked: 717 times | Joined on Mar 2007 @ Germany
#8
please remove duplicate mame .ini file. if not done already. also some info on which key inserts coin and does 1p start would help.

is yuv and drameskip now on by default?
__________________
find . -name \*.mp3 -exec mplayer -quiet -shuffle "{}" +
das ist your media player, and yuu vill like it
 

The Following User Says Thank You to ArnimS For This Useful Post:
Flandry's Avatar
Posts: 1,558 | Thanked: 1,773 times | Joined on Oct 2009 @ Boston
#9
Yes, yuy2 and autoframeskip are given as parameters in the sdlmame-start.sh script that the desktop file points to.

It must have been late when i put together that last upload. For the next upload i have migrated all the command-line parameters from the startup script to mame.ini and the startup script just specifies the inipath (/home/user/.sdlmame). I won't leave a backup copy of mame.ini in the /opt/sdlmame directory, just install it in the user config directory if it doesn't exist.

The 'q' key ('1' in Fn-land) is both the player 1 coin and player 1 start key. This seems to work ok in the games i've tried--you just press it twice to get going.
__________________

Unofficial PR1.3/Meego 1.1 FAQ

***
Classic example of arbitrary Nokia decision making. Couldn't just fallback to the no brainer of tagging with lat/lon if network isn't accessible, could you Nokia?
MAME: an arcade in your pocket
Accelemymote: make your accelerometer more joy-ful
 
Posts: 1,361 | Thanked: 2,053 times | Joined on Nov 2009 @ Dublin, Ireland
#10
Hi to all.

Is it possible to change the dip-switches of games? As it's quite difficult to play with the tiny keyboard, it would be great if we were able to change easily the settings of the game.

In stock MAME, when pressing the ESC key, the GUI shows the possibility to change dip-switches when available.

Thanks in advance.
 
Reply

Tags
arcade, emulator, game, maemo 5, mame, wip

Thread Tools

 
Forum Jump


All times are GMT -4. The time now is 12:12 PM.