### EMame Frequently Asked Questions

Sound

Q: Is sound supported by EMame?
A: Yes, it is. By default it is turned off though, so you have to select it from the menu (Game->Options)

Q: Is sound supported in all games?
A: No, it isn't (see next question on why). Look at the file gamelist.txt to see if your favorite game has sound supports enabled.

Q: Why isn't sound supported in all games?
A: For a game to support sound it needs special sound hardware and some games also require a sound CPU. EMame includes the emulation support for the first, but not for the second. The only reason is that by including emulation cores for more CPUs, the EMame executable file size increases dramatically while the performance decreases.

Psion devices

Q: On which Psion devices does EMame run?
A: EMame has reported to work ok on the Psion 5mx, Psion 7 and netbook. It also runs on the Psion Revo but it doesn't look that nice.

Running EMame

Q: EMame won't start, the message I get is "cannot find program". What gives?
A: You need to install the library "estlib.dll" on the device. It comes with the EMame distribution as "stdlib.sis" - simply install as any other .sis file

Q: EMame won't start, I get a dialog saying "Program closed, reason number -11". What gives?
A: You get this dialog because Emame is already running. Use the task manager to switch to the the task "emameapp".

Q: EMame won't start, I get a dialog saying "Program closed, Kern-Exec 3". What gives?
A: This is a bug in EMame :-( Kern-Exe 3 means that EMame is scribbling into memory where it is not supposed to.

Q: EMame won't start, I get a message saying "Oops, the MAME Engine raised an excpetion, EMame will terminate". What gives?
A: There is something wrong in the MAME engine and it refuses to continue. Because the application state is unknown, EMame has no alternative but to terminate.

Q: EMame won't start. Now hat?
A: If all fails, chances are that EMame failed to run because of insufficient memory. Try to free up your C drive, close all applicatations and try again.

Stopping EMame

Q: What is the best way to stop EMame?
A: The absolute preferred way is to press ESC during the game. Alternatively press the "stop" button on the dialog that is shown in emameapp during the game.

Q: Are there other ways?
A: Yes, but they are not fool proof. If in trouble, switch to the task manager and stop the following 3 tasks: "GameX" (where X is a number) "stdout" and "emameapp". After that, start EMame as you would normally do.

Pausing EMame

Q: Can I pause EMame?
A: Yes, press 'p' during a game. To continue press 'p' again.

Q: Can I switch to another application whilst the game is paused?
A: Yes, but it is not entirely fool proof. When you resume the paused game later on the game may not look pixel perfect anymore. I have no idea why that is.

Throttling, Frameskipping and the like

Q: Does EMame support frame skipping?
A: No, it doesn't. I tried but to no avail. Even skipping every other frame in PACMAN on a Series 5mx had no noticable effect.

Q: Does EMame support throttling?
A: Yes, it does. On faster machines such as the Series 7 and Netbook, throttling it automatically enabled. It's not perfect but seems to work - sort of. For reasons I don't quite understand yet, it takes about 10 seconds before the game runs at the roughly the right speed.

Q: Can I manually override the automatic throttling?
A: Yes, press '+' and '-' during the game to compensate between the "real" frame rate and the "game" frame rate. To get back to automatic again, decrease the counter to 0. For an explanation see the next questions.

Q: How can I see the frame rate?
A: Press 'b' during the game. You'll get a line with either "auto" and 4 numbers or "manual" and 5 numbers. "Auto" means that EMame is automatically throttling the game for you, "manual" means you have used '-' and '+' to manually override this. The first 4 numbers are the same in the 2 modes. The first represents the "game" frame rate, the second the "real" frame rate. Between angle brackets are the game frame rate and real frame rate calculated over the last 5 seconds. In manual override the fifth number represents the number of extra frames EMame is drawing (i.e., the difference between "real" and "game").

Q: Err, how does throttling actually works?
A: Implementing throttling isn't that easy in EPOC because EPOC timers aren't that fine grained. The smallest period you can sleep is roughly 40ms and that isn't good enough. Let's call the frame rate at which the hardware is capable of running "real frame rate" and the rate at which the game should run "game frame rate". An example. Suppose the game frame rate is 50 fps and the real frame rate is 60 fps. 50fps means that each frame should take 1000/50 = 20ms and at 60 fps, each frame only takes 1000/60 = 16.67 ms. So, in this case we should sleep for 2.33 ms inbetween drawing each frame to get the correct 50fps. Since we cannot sleep, what we'll do instead is take advantage of a known factor: the time it takes to draw a frame. In the above example, if we run at 60 fps then if we draw 10 frames twice in each second, the games runs at the correct speed of 50 fps as well. In automatic mode, EMame does all the calculation for you, in manual mode you have can use '+' and '-' to specify the number of frames that will be drawn twice during 1 second.