Rockbox Development > Feature Ideas

Atari 2600 emulator - back again

(1/1)

ulmutul:
It's been quite some time since foolsh revived the original flyspray patch (see http://forums.rockbox.org/index.php/topic,43635.0.html).
However the patch was rather buggy, and after picking up on it I rewrote so many parts that I think it's better to submit a completely new gerrit patch:

http://gerrit.rockbox.org/r/#/c/2245/

There's still a lot of work left, but testers are always welcome! :) Feel free to experiment and report bugs or leave feedback.
You have to compile the patch yourself , so you may want to read the following wiki pages:
https://www.rockbox.org/wiki/DevelopmentGuide
https://www.rockbox.org/wiki/LinuxSimpleGuideToCompiling
https://www.rockbox.org/wiki/UsingGit

Usage:

* rom files must have the ending ".a26"
* if your rom uses bank switching, you have to manually select the correct switching scheme. You can use a secondary file extension instead, e.g. "frogger2.E0.a26" (use Parker Brothers E0 scheme)
* PAL/NTSC/SECAM must be selected manually (defaults to NTSC)
Things to do:

* there's no sound yet. Sound has to be written more or less from scratch
* test and improve keymaps. Feel free to suggest improvements. Some targets have too few buttons to support both the Select and the Reset button. If the target has a hold switch, it can be used to enter the menu.
* improve LCD functions; If something looks wrong (e.g. reversed colours on greyscale targets) try out Screen options > Screen size > Generic display function in the menu (Slow!). Some targets only support the slow generic function.
* optimize! It's much too slow yet!
* optimize even more! My goal is to make the emulator run in real time on PP5020 targets (that means that the speed must be more than doubled!  8))
* add support for paddle (currently only one joystick is supported)
Known bugs:

* graphical glitches in the middle of the playfield
* the "sprite retrigger" trick causes half sprite leftovers on the screen (e.g. "galaxian" rom)
* the emulator doesn't support "hmove blanking". Sometimes nice (the ugly "comb effect" on the screen disappears), but sometimes deliberately hidden things show up (try out "seaquest" for example)
Have fun!

__builtin:
Awesome work, ulmutul! I'll take a crack at sound sometime.

ulmutul:
I made some progress! After I got stuck at a dead end with optimization of my previous code, I once more rewrote the rendering stuff.
This change made the emulation much faster.

Some numbers (emulation frame time):

* Patch Set 3 (previous version)
* Frogger: 37.8ms
* Enduro: 54.8ms
* Patch Set 4 (current version)
* Frogger: 25.9ms
* Enduro: 35.2msNote: the frame time is measured without the final write to the target LCD, because this part is very hardware dependant.
This final task takes more than 23ms on my test target (YH925), but can be shortened by skipping frames and by moving the function to a  coprocessor task.

The goal is a emulation frame time of less than 20ms (corresponding to a frame rate of >50Hz) - this seems within reach now, at least for already fast games like Frogger.

Navigation

[0] Message Index

Go to full version