[note: only important changes are listed] 0.11 ---- Program: - Moon Patrol support. There is no scrolling background because I don't know where to place it... can anyone provide a screen snapshot? - Burger Time and Donkey Kong 3 drivers provided by Mirko Buffoni. The colors for Burger Time should be accurate, but I'm not quite sure - can anyone confirm? - Fixed joystick controls for Congo Bongo. - Lionel Theunissen dumped the color PROM of his Uniwars board and... it's different from the one provided by Gary Walton. Galaxian boards were widely pirated so it's difficult to determine which one is the "correct" palette. What I did was set the Uniwars driver to use one palette, and the "Japanese Irem" to use the other. Play the one you prefer. - Marc Vergoossen provided a much better palette for Zaxxon. Source: - increased the maximum size of the graphic elements that can be handled by decodegfx() from 32x32 to 64x64. Actually I would have needed 256x64 to do Moon Patrol backgrounds, but that seemed slightly overkill ;-) 0.10 ---- Program: - Centipede support. This is the first 6502 game supported by MAME. I'm currently using Marat Fayzullin's engine. - Nibbler support. This is the second 6502 game supported by MAME ;-) Interesting hardware: no sprites, two playfields, and it uses RAM for character generation (redefining the characters to animate the worm). - I had also broken Pleiades, fixed. That's the drawback of emulating more than 60 games, I can't check them all before releasing a new version ;-) - Ville Laitinen provided a Congo Bongo driver! The colors are terrible ;-), but it's playable. - Thanks to Valerio Verrando, now -noscanlines works on Pac Man and the other games using a 224x288 screen. If you have problems with the default video mode try this one, it will hopefully solve them. - I received no less than three different palettes for Donkey Kong Jr., from Brad Oliver, Marc Vergoossen and Richard Davies. The one included is from Marc. - Thanks to Gary Walton and Simon Walls, we now have 100% accurate colors in Crush Roller and Uniwars/Japirem. Moon Cresta and Moon Quasar might be correct as well, but I'm not sure. - Fixed a small graphics glitch in the background of Bomb Jack's third level. Thanks to Philip Chapman for the report. Source: - Support for 6502 CPU. From a driver writer point of view, it is used just like the Z80, the only difference being that you have to specify CPU_M6502 instead of CPU_Z80 in the MachineDriver definition. Multiple CPUs are still NOT supported. - New function in common.c: decodechar(). It was originally part of decodegfx(), and is used to convert one single char from the machine format to the one used by the emulator. This function was needed by the Nibbler driver to dynamically convert the graphics at runtime. 0.91 ---- Program: - OK, even this time I managed to screw up one game (Phoenix). It works again. I'm not updating the source, you can fix it yourself if you need to: the line ROM_LOAD("phoenix.49", 0x2000, 0x0800) in driver.c was missing the '2'. 0.9 --- Program: - Bomb Jack support. - Background graphics in Zaxxon now work, albeit a bit slow (45-50 fps on my 486/100) - Support for the original version of Super Cobra. Note that I renamed the other one (which is a bootleg) "scobrab". - Support for the original Moon Cresta (Nichibutsu copyright). These ROMs are encrypted, and slightly different from the other version. This is very likely the version Chuck Cochems remembers (with aliens teleporting right in front of your ship). I renamed the other version (which looks like a mix of the code from a bootleg version and the graphics from the Gremlin original version) "mooncrsb". - Space Invaders now seems to work correctly. Deluxe version still doesn't work properly. - F12 to take a snapshot of the gfx set (displayed using F4) now works. - Better colors in Donkey Kong Jr. (thanks to Brad Oliver) - Thanks to Gary Walton, Moon Quasar dip switches now are correctly described in the dip switch menu. - F11 is now a toggle, also added F10 to turn off speed throttling (toggle as well) Source: - The memory handling was no longer up to the task, so I had to make it more flexible. RAM is no longer a static array; it is dynamically allocated by readroms(), split in memory regions (one for the CPU addressing space, one for graphics ROMs, and so on) so data not needed at run time, like the graphics data, can be unloaded from memory after conversion. The definition and usage of struct RomModule and struct GfxDecodeInfo has changed. struct RunningMachine contains an array of pointers to memory regions. RomModules are now defined using macros, and readroms() does some error checking as well. This greatly reduces the chance of making a silly mistake. And don't ask me why, but as a result of this change the emulation seems to run much faster than before! - New rom_decode function pointer in the GameDriver structure. It is used to decrypt the whole ROMs after loading them (as opposed to opcode_decode, which is used to decrypt only CPU opcodes). Also, opcode_decode is now handled differently: instead of calling it at runtime when the CPU reads an opcode, another 64k of memory are allocated and the whole ROMs decrypted. opcodes are then fetched from this new array. This approach is less flexible, for example it cannot handle code created in RAM (Pengo does that). However, it is MUCH faster (finally I get 60fps in Crazy Climber!), so I'll go with it for now. Should the need arise for a more flexible decryption, we'll think about it. - Some changes to the MachineDriver definition and mame.c needed to support multiple CPUs (they are NOT supported yet - this is just the first step) 0.81 ---- Program: - 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 0.8 --- Program: - 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) - Better error checking in the sound initialization routines. It still sucks, but at least will notify of problems instead of locking up the emulation. The "0. Silence" driver also works. - Removed the "-nosound" command line switch, replaced it with "-soundcard n" which allows to bypass the audio driver selection menu. Use "-soundcard 0" to turn off sound. - Some support for Space Invaders (+ some clones) but it doesn't work well. - Support for Battle of Atlantis (a Scramble hack) - The ROM copyright notice is displayed in the main emulation screen. - 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: - You can view the game graphics pressing F4. Use cursor keys to change graphics set/color, F4 to return to the game. - Support for Mario Bros. (wrong colors, no sound) and Zaxxon (doesn't work yet). - Better colors in Amidar and Frogger. Source: - Added visible_area to the MachineDriver definition. It was used in all video drivers, so it's better to keep it centralized. - 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. - I got rid of machine.c and put all into mame.c... when I have time, I'll try to organize the source better. 0.7 --- Program: - Support for: Super Cobra (version running on a modified Scramble board) Amidar US version Crazy Climber Japanese version Pooyan (wrong colors, no sound) Phoenix/Pleiades (no sound) - Scramble has 100% correct colors. The same palette is used by Super Cobra, but it doesn't look right. - 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. 0.6 --- Program: - 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) - I'm beginning to understand how the Wizard of Wor video hardware works, gameplay hasn't changed but the graphics are more faithfully reproduced. - Star background in Galaxians & co. The way I calculate it is probably not correct, anyway it looks reasonable. - Fixed staccato notes in Pacman and other games using the same hardware. There are still some minor glitches (especially in Ms. Pac Man) but Pac Man tunes are now very close to the original. 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. 0.5 --- Program: - Fixed some problems in the Wizard of Wor driver, but it is still far from complete. - 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) - By popular demand, reverted to the old AY-3-8910 emulation code. Source: - 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". - Some bug fixes and changes to reduce porting problems (thanks to Brad Oliver) - New function copybitmap() in common.c. Limited for now, will change in the future. 0.4 --- Program: - Bagman support (wrong colors) - Early Wizard of Wor support (not playable). - New experimental AY-3-8910 sound emulation code provided by Andy Milne (andy@canetics.com). This sounds better in some places and worse in others. It is used by Crazy Climber, Crazy Kong and Bagman. Let me know what you think. Source: - Optimizations in drawgfx(), Mr. Do!'s title screen and intermissions now run faster, Crazy Climber and Crazy Kong benefit as well. - Use version 1.1 of Z80Em by Marcel de Kogel. Faster! (note that I had to make a couple of changes to Z80.c to make Crazy Climber work). - 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.c, it's now there only to handle the cheat). 0.3 --- Program: - Donkey Kong support (wrong colors, no sound) - New definition of custom video modes, this will hopefully be compatible with more systems. - Lady Bug and Crazy Climber should run a little faster on slow machines (Crazy Climber is still too slow, I know). Source: - 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.