
News
10-13-2007 - JREX
I started working on a new emulation-related and Java-based project in my spare time since a month ago.
JRex stands for Java Recompilation Engine for eXecutables.
It is not an emulator but a static recompilation engine. This means I can translate executables in binary format into Java programs.
I focus my initial work on the translation of x86 programs and especially PC MsDos demos from the Scene.
This is not the first Java-based PC emulator (see JPC or Dioscuri) but at least this is the only static recompiler in this category I am aware of.
As for now, speed is similar to DosBox but compatibility is very low.
Supported features:
- 80286 CPU - 60%
- 80386 CPU - 10%
- 80387 CPU - 50%
- Debugging/Logging - 1%
- VGA - 10%
- Timers - 5%
If you want to try JRex, I created a special page where you can try it online.
11-04-2006 - JAPE
As promised, I created a special page where you can try and play the game "the Adventures of Robby Roto", using the current JAPE 0.27 build.
This is a legal ROM provided with the MAME emulator.
Thanks a lot to Jay Fenton to let this game be available for free.
10-20-2006 - JAPE
Thanks to the invaluable help of AJ Mas, we have perfect sound support for Namco games!
We also have support for many Atari vectorial games (only BattleZone does not work properly yet).
Also I started experimenting with an automatic tool called Jappy. This tool does actually convert MAME C drivers into JAPE Java drivers.
It already works pretty well but there is still a lot of work to do in order to have automatic driver generation.
It will help us to concentrate on the interesting stuff (new cpu cores, new sound cores, sound support, MAME features and source changes) and less on the repeating drivers port process.
By the way, Robby Roto is now fully playable so you can expect to play this game freely online soon.
Just to remind you, Robby Roto is one of the free legal MAME game with ROMs available to the public domain.
Here are all the latest changes:
- [JAPPY] Added preliminary support for Jappy, an automatic tool to convert MAME C Drivers into JAPE Java Drivers [Gollum].
- [JAPE] Added preliminary sound support (only basic samples are supported) [AJ Mas, Gollum].
Sound is already working nicely in PacMan, Miss PacMan, Pengo, Dig Dug, Jr. Pacman, Super Pacman.
- [JAPE] Added support for Unix-based makefiles [AJ Mas].
- [MAME] Added support for Mr Do's Castle, Mr Do! RunRun, Mr Do! Wild Ride [Gollum].
- [MAME] Added support for Mappy, Dig Dug and improved support for Super Pacman [Gollum].
- [MAME] Added support for Seawolf II and improved support for Space Zap, Robby Roto, Gorf, Mappy, Dig Dug [Gollum].
- [MAME] Added support for Three Stooges, YieAr Kung Fu [Gollum].
- [MAME] Added support for the vectorial games Asteroids, Asteroids Deluxe, Black Widow, Gravitar, Lunar Lander, Red Baron, Spaceduel, Tempest [Gollum].
- [MAME] Incorporated most changes from MAME 0.26 to MAME 0.27 [Gollum].
10-04-2006 - JAPE
I started to receive some contributions or help on the JAPE project.
This is quite interesting as the amount of work could be reduced for every porting of a MAME build.
If you would like to join, do not hesitate to contact me (it is preferrable to have a good understanding of MAME, C and Java code).
As for now, thanks to the help of AJ Mas, we have a working Williams driver and perhaps sound support soon.
Here are all the latest changes:
- Added support for Blaster, Robotron, Defender, Stargate, Joust, Splat... (AJ Mas).
- Added support for Star Force, Tutankham, AntEater, Rescue, Mysterious Stone, Naughty Boy, Jr. Pacman, Qbert Qubes, Kung Fu Master.
- Fixed support for Seicross.
- Added double-buffering support (we now have very smooth scrolling and faster scanlines display).
- Faster and more accurate I86 core.
- Fixed cpu issues in the M6809 core (Williams driver).
- Added new user interface.
- Removed the unuseful VESA options.
- Incorporated most changes from MAME 0.23 to MAME 0.25.
09-26-2006 - JAPE
JAPE is an interesting project but nonetheless it is only a raw port of ancient MAME builds as for now. It lacks exclusive features to become a more interesting project.
The project is using the Java language so it can run virtually anywhere (where Java 1.5 is supported). However, online features could bring a lot of new opportunities.
I identified four possible configurations to use JAPE:
- Full Offline mode: you use the application version, you use ROMs locally and load/save your configuration locally.
- Semi Offline mode: you use the online applet version directly from your browser but you use ROMs locally and load/save your configuration locally.
- Semi Online mode: you use the online applet version and ROMs available on your own private server, you load/save your configuration locally.
- Full Online mode: you use the online applet version, everything is handled on your own private server, you can use MAME virtually anywhere.
I did a few experiments and the first three configuration modes are just working great. The last mode requires mandatory server code (php for example) so it will be worked later.
What is more, I need to create an HTML frontend for the online applet version so people can use JAPE on their own private server. This frontend will be pre-configurated to use all games and features of the current JAPE build.
Finally, I recently found that the game Robby Roto is near fully playable in JAPE. This is a good news as this is one of the two legal games provided with MAME.
It basically means you can play this game freely and legally with JAPE. I will set up the JAPE frontend on this site with this game so people can try JAPE online directly.
Regarding usual development, I am finishing my work on JAPE 0.24 and I plan the next release for JAPE 0.28.
In the meantime, I will post interesting screenshots of my current progresses...
Here are the major features to expect for JAPE 0.28:
- Optimisations to the various CPU cores (6502, 6809, Z80, I86).
- More compatibility and speed for all drivers.
- More than 200 games supported and running.
- Preliminary 68000 cpu core.
- Better user interface.
- New built-in frontend for applet online version.
- Three configurations to use JAPE (Full Offline, Semi Offline and Semi Online).
- Incorporate most changes from MAME 0.23 upto MAME 0.28.
09-19-2006 - JAPE
And again news regarding the current progresses on JAPE 0.22.
Several new cool games were added and the long-awaited keyboard configuration feature is finally there...
Here are major changes:
- Added support for Commando, Ghost'n Goblins, Diamond Run, Vulgus, Kangaroo.
- Fixed graphics and colors for Warp Warp, Arabian.
- Fixed minor issues in several drivers.
- Added a new option to change, load or save the keyboard configuration for every game specifically.
- Incorporated most changes from MAME 0.21 and MAME 0.22.
09-15-2006 - JAPE
I already moved on JAPE 0.21.
There are new games to come, new keyboard configuration option in the works and new M6809 cpu core...
Here are latest major news:
- Added support for Galaga (triple Z80 cpu emulation!).
- Added support for Super Pacman (new M6809 cpu core).
- Added a new fully-working M6809 core.
- Incorporated several changes from MAME 0.21.
09-15-2006 - JAPE
Since many people are certainly battling with the correct ROMs to use with JAPE 0.20, I created a ClrMamePro dat file.
Using ClrMamePro and this data file, you can easily convert files from your most recent MAME romset.
There are maybe missing or incorrect files but hopefully most games but clones should be recognized.
You can download the dat file here.
09-13-2006 - JAPE
As promised, here is the infamous JAPE 0.20 release with full sources and binaries.
Both online (applet mode) and offline versions are available.
All changes upto MAME 0.20 are here except missing sound support (though sound emulation is partially handled now).
Compatibility and speed are great and similar to the original MAME 0.20 MsDos version.
In order to use it, you need Java 1.5 and also old compatible MAME 0.20 ROMs.
Here are latest news (there are 106 supported games):
- Added support for Gyruss, 1942, Arabian, Krull, Warp Warp, Popeye, Reactor.
- Added high-score support to Space Panic, Popeye, Zaxxon, Congo Bongo, Green Beret.
- Improved colors in Donkey Kong, Donkey Kong Jr.
- Fixed bugs in 1942, Arabian, Qbert, Elevator Action.
- Incorporated most changes from MAME 0.19 and MAME 0.20.
- Sound emulation is now partially handled.
- Added -list option to list all supported games.
09-04-2006 - JAPE
I incorporated changes from MAME 0.18 but since MAME 0.19 sources are wrong, I directly jumped to MAME 0.20.
There are 93 games supported (clones included) in JAPE 0.20 as for now.
I also added the most-requested feature: Applet support. This means you can now use JAPE online in your favorite browser.
Games are not embedded directly in the HTML pages but rather use the same window as the offline version.
This is less "sexy" but all features are available and working (except file saving for highscores and dipswitches).
There are also stability issues related to the Applet mode that I hope to fix in the future...
Stay tuned for the upcoming JAPE 0.20 release.
Here are latest news:
- Added support for Space Panic, Mouse Trap. Jungle King
- Added high-score support to Space Invaders, Zaxxon, Congo Bongo, Green Beret
- Improved colors in Venture
- Fixed bugs in Venture, Green Beret
- Faster x86 emulation core.
- Fixed support for non 8x8 fonts.
- Incorporated most changes from MAME 0.18.
08-30-2006 - JAPE
I recently moved and I did not have yet access to the Internet so I could not update this web page.
I heavily kept working on JAPE and actually I already reached JAPE 0.17 build!
There are lots of changes but especially new games and cpu cores, better colors and better compatibility.
Here are latest major news:
- Added support for Green Beret, Q*Bert, Mad Planets, Vanguard, Carnival, Time Pilot, Venture, Jump Bug, Milliped.
- Improved colors in Mario Bros, Donkey Kong 3, Donkey Kong Jr., Congo Bongo, Zaxxon, Burger Time, Pooyan.
- Improved graphics in Congo Bongo, Zaxxon, Moon Patrol.
- Added a new fully-working x86 core (mainly to run Gottlieb games).
- Added high-score support to many games.
- Fixed all remaining bugs on the Z80 core, fixing Green Beret and Mr. Do. Compatibility is now exact same as MAME 0.17.
- Incorporated most changes from MAME 0.12 upto MAME 0.17.
08-06-2006 - JAPE
I started working on JAPE 0.12 (JAPE 0.11 was quickly done).
Here are latest news:
- Added resizing with aspect ratio automatically maintained.
- Disabled window resizing for vesa modes and scanline mode.
- New vesa scan option to define 800x600 video modes (useful with scanline mode for large game screens).
- Started adding generic video functions to reduce the size of video drivers (this also reduce the size of binaries).
- Fixed interrupts in M6502 and Z80 (this fixes slowdowns in Rally X and Bagman).
- Added fully-working support for Moon Patrol, Burger Time and Donkey Kong 3.
- Incorporated most changes from MAME 0.11 and MAME 0.12.
08-04-2006 - JAPE
Lots of good news regarding JAPE 0.10...
By the way, starting from now, I will only list most important changes and not reuse the long update list from MAME.
Here are latest news:
- New M6502 CPU emulation support (seems to work nicely).
- Added fully-working support for Bomb Jack, Congo Bongo, Centipede, Nibbler.
- Incorporated most changes up to MAME 0.10.
- F10 to toggle speed throttling, F11 to toggle FPS display.
- Added character buffer emulation to facilitate C porting to Java.
- Added a C++ preprocessor in the compilation build to enable the use of macros in Java (yes, there are many macros in MAME).
07-30-2006 - JAPE
I started working on JAPE 0.9.
There are now 34 supported games and only one game with issues compared to the MAME equivalent version (Mr. Do).
I added support for zoomable display for non-VESA modes and integrated most missing changes from previous MAME versions.
Here are supported changes from MAME 0.5/0.6/0.7/0.8/0.9:
Program:
- Background graphics in Zaxxon now work, albeit a bit slow
- Space Invaders now seems to work correctly. Deluxe version still doesn't
work properly.
- Better colors in Donkey Kong Jr. (thanks to Brad Oliver)
- Sorry about screwing Donkey Kong Jr. colors... it's playable again. Colors
are still way off though: anyone volunteers to fix them? ;-)
- Zaxxon now works, but the background graphics are missing
- Added some support for Carnival - it boots and runs the demo, but the
graphics are messed up.
- Fixed graphics in Moon Quasar (yes it does run, but you need the correct
ROMs)
- Some support for Space Invaders (+ some clones) but it doesn't work well.
- Support for Battle of Atlantis (a Scramble hack)
- Maybe I understood how the character colors are selected in Donkey Kong, at
least in part, but I'm not sure. Anyway, I started fixing them. I based on
the Kong emulator by Gary Shepherdson.
Following changes provided by Mirko Buffoni:
- Support for Mario Bros. (wrong colors, no sound) and Zaxxon (doesn't work yet).
- Gorf and Robby Roto boot but don't work.
- Added some support for Moon Quasar, but it doesn't work. Since the ROMs are
encrypted, I don't know if this is due to wrong decryption, bad ROM, or
wrong driver (I'm using the Moon Cresta one). I think that either MQ3 (which
maps at 1000-17ff) is bad, or it uses a different encryption.
- I'm beginning to understand how the Wizard of Wor video hardware works,
gameplay hasn't changed but the graphics are more faithfully reproduced.
- Fixed some problems in the Wizard of Wor driver, but it is still far from
complete.
Source:
- Added visible_area to the MachineDriver definition. It was used in all video
drivers, so it's better to keep it centralized.
- I got rid of machine.c and put all into mame.c... when I have time, I'll try
to organize the source better.
- Some bug fixes and changes to reduce porting problems (thanks to Brad Oliver)
07-27-2006 - JAPE
I am currently working on JAPE 0.8.
There are now 25 supported games and only one game with issues compared to the MAME equivalent version (Mr. Do).
For people who start asking what is the aim of purposes of JAPE and if it is really a valuable project:
- As far I am concerned, this is a rather fun project to do and a good way to understand the innerworkings of MAME from scratch.
What is more, trying to port all MAME versions from the very beginning helps to solve porting issues little by little, enables to add new cpu cores or drivers as they are needed.
Also, I can define precise objectives and have a good number of working games for every release.
- Despite all my previous efforts trying to create generic arcade emulators (CottAGE, PotatoArcade...), I failed to create something easily maintainable and that people can easily contribute to.
Rewriting and porting MAME in Java means you have the most comprehensive arcade machine emulator and only to focus on rewriting/porting issues (and most of this work is already done).
- In the future, JAPE could be a good Java counterpart to MAME. This project is a good source of information on the software and hardware of many arcade games. You now have a fully-featured Java version to play with.
If you are not familiar with C or the complex MAME compilation, you can use the Java version instead, try to write new drivers or experiment with the emulator and built-in debugger, etc.
- The project itself may serve as a base for many other Java-related arcade projects: statically or dynamically compiled arcade games, other specific or generic arcade games emulators.
Since MAME is pure C, my work tends to have the same approach but it could be a good opportunity to create a more C++ish or real Object-Oriented version from JAPE.
- Java means we can think of possible versions for mobile phones or PDAs (Java Mobile Edition) or even on Windows Media Center for the too-much protected XBox 360...
- An online version (applet or Java Web Start), coupled to a good Web site offering interesting features could be very valuable.
You could try or play online your legally owned arcade games from virtually anywhere (well on every Java-enabled platform), keep traces of your configurations, savings, share your hiscores and the like...
- With the legal issue put aside, websites offering INP movies from MAME to show off skills or hiscores from players could turn their site into a repository of online playable intros or movies for arcade games.
- ... Now, I am pretty sure you have certainly other interesting ideas to share on how to make good use of JAPE... ;)
Here are supported changes from MAME 0.7/0.8:
Program:
- The ROM copyright notice is displayed in the main emulation screen.
Following changes provided by Mirko Buffoni:
- You can view the game graphics pressing F4. Use cursor keys to change
graphics set/color, F4 to return to the game.
- Better colors in Amidar and Frogger.
- Support for:
Super Cobra (version running on a modified Scramble board)
Pooyan (wrong colors, no sound)
Phoenix/Pleiades (no sound)
Source:
- Long-awaited function clearbitmap(), which correctly initializes a bitmap
using background_pen. Note for people porting MAME to other systems:
osd_create_bitmap() must call this function, the video drivers rely on that.
- Scramble has 100% correct colors. The same palette is used by Super Cobra,
but it doesn't look right.
07-25-2006 - JAPE
Here are some news regarding JAPE 0.7.
Not all changes from MAME 0.4/0.5/0.6/0.7 are integrated yet but I spent quite some time to update drivers and debug the Z80 core against Rally X.
The good news is that all games except Mr. Do (death issue) and Rally X (scrolling issues) are working perfectly, just as in MAME.
Here are supported changes from MAME 0.6/0.7:
Program
- Support for:
Amidar US version
Crazy Climber Japanese version
- Scramble has 100% correct colors.
- Support for:
Scramble (wrong colors, no sound)
Uniwars (US version of Japanese Irem game)
Frogger (including bootleg version running on a Scramble board)
(wrong colors, no sound)
Amidar (wrong colors, no sound)
Turtles (wrong colors, no sound)
Rally X (wrong colors, no sound, slowdowns)
- Star background in Galaxians & co. The way I calculate it is probably not
correct, anyway it looks reasonable.
07-22-2006 - JAPE
I started working on JAPE 0.6.
I added support for dipswitches loading/saving, default scanlines support (may be disabled) and 640x480 VESA support.
I also fixed a few gfx issues in Donkey Kong Jr. as well as window closing issues.
Here are supported changes from MAME 0.5 and MAME 0.6:
Source
- I reorganized the source directory tree, instead of one directory for every
game there are now four directories (drivers, machine, vidhrdw, sndhrdw)
which contain files named after the game.
- Changed readroms() to allow scatter loading of a single ROM. This was needed
for Donkey Kong Jr. Now the end of the RomModule array is marked by a size==0,
while name==0 means "continue loading the previous ROM at this address".
- New function copybitmap() in common.c. Limited for now, will change in the
future.
07-19-2006 - JAPE
I am currently working on JAPE 0.5 even if most internal changes from MAME 0.3/0.4/0.5 are not incorporated yet.
There are now 18 supported games (7 new games).
Here are supported changes from MAME 0.5:
Program
- Support for:
Donkey Kong Jr. (wrong colors, no sound)
Galaxians and the plethora of clones (correct colors, limited sound)
Pisces (correct colors, limited sound)
"Japanese Irem game". I believe the colors are correct, but since I've
never seen the original game I can't know for sure.
War of the Bugs (wrong colors, limited sound)
Moon Cresta (wrong colors, limited sound)
The End (wrong colors, no sound)
If I have time, I may work on an applet version.
07-18-2006 - JAPE
JAPE 0.4 is now nearly finished with 11 supported games (3 new games).
I also started preliminary sound support but without any success as for now.
Here are supported changes from MAME 0.3 and MAME 0.4:
Program
- Bagman support (wrong colors)
- Early Wizard of Wor support (not playable).
- Donkey Kong support (wrong colors, no sound)
- Lady Bug and Crazy Climber should run a little faster on slow machines
(Crazy Climber is still too slow, I know).
Source
- Handle IN and OUT instructions in the same way as memory accesses (table
of handler functions). The parameters of the functions are the same, so
the same function can be used both for memory and ports.
Had to change the driver structure, removed the pointers to _in and _out
functions and added port_read and port_write array pointers.
Also defined a generic interrupt_vector_w() function, this makes the Pac
Man driver tinier (look at pacman/machine.java, it's now there only to handle
the cheat).
- new general purpose readinputport() function used to handle reads of
input ports and dip switches. This saves some work when creating a
game driver. Required changes to struct MachineDriver.
- struct GfxLayout now contains a planeoffset array instead of
planeincrement, to better support more than 2 bitplanes. I also fixed
(I hope) all the code which assumed 2 bitplanes. struct GfxDecodeInfo
had to be changed as well.
07-11-2006 - JAPE
And a second release yet: here is JAPE 0.2 with full sources and binaries.
All changes from MAME 0.2 are here except sound support and a few issues in Crazy Kong, Crush Roller and Mr. Do!.
In order to use it, you need Java 1.5 and also old compatible MAME 0.2 ROMs.
07-11-2006 - JAPE
A first release to wet your appetite: here is JAPE 0.1 with full sources and binaries.
Everything from MAME 0.1 is here except sound support and issues in Crush Roller.
In order to use it, you need Java 1.5 and also old compatible MAME 0.1 ROMs (I am looking for people to build datfiles).
WARNING: I do not provide ROMs and will never provide them. You can only use JAPE with ROMs that you legally own.
07-09-2006 - JAPE
JAPE 0.2 is now nearly finished with 8 supported games (3 new games), new log file feature and clones support.
There are still a few bugs left in Crush Roller, and no sound support yet...
Regarding source code, there are a number of changes: pointer emulation, C porting library, heavy use of new Java 1.5 language features, accurate timing.
07-02-2006 - JAPE
JAPE 0.1 is now nearly finished. For your information, JAPE is a direct port/translation/rewrite of MAME 0.1.
My goal is to provide a Java application with the exact same features and compatibility as MAME.
Here are the main supported features from MAME 0.1: 5 supported games, dipswitches menu, pause/reset/show FPS features, command-line application, Z80 cpu support.
There are still a few bugs left in Crush Roller, and no sound support yet...
06-26-2006 - JAPE
I started working on a new Java Arcade Project Emulator (the information was posted a few days ago in the forum).
This arcade emulator will strictly follow the MAME licence and will be somewhat open-source (since MAME is somewhat open-source).
I am nicely progressing with the emulator and you can see a first screenshot (colors are wrong and sprites are missing).
I let you guess what is the name of the emulated game...
06-16-2006 - ScummCott
ScummCott is now GPL (Gnu Public License)!
ScummCott is a Java port/rewrite/translation of the ScummVM project. As stated by the license, since ScummCott is a derivative work and use more or less directly ScummVM source code, all source code should be GPL too.
06-09-2006 - ScummCott
Sprites loading is now working for Gobliins game in ScummCott. Still a lot of work to do before getting the game intro fully working... Expect more news soon.
06-05-2006 - ScummCott
I started a new game port in the ScummCott project: Gobliins. Gobliins is a very fun adventure game by Coktel Vision where three little goblins must work together. I would like to have an online-playable version of the game (and maybe with sound) in the near future. Nothing to see yet but expect more news soon.
06-04-2006 - BoycottAdvance/JavaGBA
I am working on a new emulator for the Gameboy Advance using Java: JavaGBA. Compatibility starts to be quite good and I expect to have better compatibility than BoycottAdvance and BoycottAdvance Online emulators. Hopefully, all fixes and improvements will benefit to the original BoycottAdvance emulator in the near future. In the meantime, this new emulator will actually replace BoycottAdvance Online and will offer online-playable emulation of Gameboy Advance games.
06-03-2006 - BoycottAdvance/PotatoArcade
I started experimenting static recompilation techniques for emulators in Java. As for now, I focus on simple Z80-based arcade games using the PotatoArcade emulator as a base. I expect to be able to build a first playable game using these techniques in the not too far future. Static recompilation basically means high speed emulation achievement so this would be a great benefit to other emulators.