MAME/0.11 to 0.20

From GamerWiki

Jump to: navigation, search

A warts and all look through the history of MAME as described by the MAME Dev team themselves through their releases.

Contents: 0.11 (P;S), 0.12 (P;S), 0.13 (P;S), 0.14 (P;S), 0.15 (P), 0.16 (P;S), 0.17 (P), 0.18 (P;S), 0.19 (P;S), 0.20 (P;S), Other

MAME 0.11

Released: 1997-03-16

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 ;-)

MAME 0.12

Released: 1997-03-23

Program

  • Sound support in Burger Time. This is the first multiple CPU game supported by MAME (two 6502, one for code, one for sound).
It's not perfect, but we're getting there.
Also, as you can guess, this is slow. A 486/100 cannot handle it at 60 fps.
Runs reasonably with -frameskip 1, though.
  • I also set up the second CPU to emulate sound in Scramble, but the sound that comes out is completely wrong. I don't know what I'm missing, anyone can help?
  • Since the 8910 emulator doesn't allow to set the clock frequency at runtime, I temporarily switched to using the default one. This affects sound in Crazy Climber, Crazy Kong and Bagman. Let me know whether it's better or worse than before.
  • Sound in Centipede, through Ron Fries' POKEY emulator.
  • Fixed speed in Burger Time (was running at about half the real speed).
  • Valerio Verrando provided 288x224 video modes to be used with Rally X.
WARNING: these video modes might be unstable (the noscanlines one hangs my system). Any help to make them better would be appreciated.
As usual, if the default mode doesn't work on your system, try -noscanlines.
If that doesn't work as well, use -vesa.
  • I finally found out what was causing slowdowns in Rally X and Bagman. It was an interrupt related issue (see later). I hope I didn't break a dozen of other games to fix this ;-)
  • Thanks to Mike Cuddy and Mirko Buffoni, Pooyan colors are now MUCH better ;-)
I also fixed a bug in the dip switches.
MAKE SURE TO DELETE POOYAN\POOYAN.DSW, OTHERWISE IT WILL NOT WORK CORRECTLY.
  • I suddenly realized that Time Pilot runs on the same hardware as Pooyan, so I made a driver for it. Colors come straight from Mike Cuddy's emulator.
  • Gary Walton confirms that the colors in Moon Cresta and Moon Quasar are 100% accurate. Very good!
  • The background stars in Scramble / Super Cobra now blink. However I don't know how close to the real thing it is.
  • Ville Laitinen pointed out that The End runs on Scramble hardware, so it now uses the same driver. He also fixed problems with the input controls and two players modes.
IMPORTANT: MAKE SURE TO DELETE THE FILES SCRAMBLE\SCRAMBLE.DSW AND THEEND\THEEND.DSW, OTHERWISE THE GAMES WILL NOT WORK CORRECTLY.
  • Ville also fixed sprite priorities in Congo Bongo.
  • Doug Jefferys provided the color PROMs for Crazy Kong, so colors are now 100% accurate (with the possible exception of Kong itself, which uses a separate palette).
  • Support for Moon Ranger (bootleg version of Moon Patrol).
  • Added support for Lost Tomb (Stern game running on Super Cobra hardware), but it doesn't work well (crashes during the demo, and it's not playable) and the graphics are garbled. I think some of the ROMs might be corrupted.
  • Preliminary support for Jump Bug. It uses a modified Scramble driver, the hardware seems to be similar. It's not playable (the input bits are not even mapped), and resets after a few seconds.
I'm not particularly interested in this game, anyone volunteers to complete the driver?
  • Support for the version of Super Cobra with Stern copyright.
NOTE THAT I RENAMED THE OTHER ONE (Konami copyright) "scobrak".
  • Ivan Mackintosh provided a Millipede driver (dip switches are not supported yet). Sound doesn't work, I don't know why.
  • Brad Oliver provided a preliminary version of the Mr. Do's Castle driver. Not working yet!
  • Mike Coates pointed out that Carnival uses a RAM for character generation (like Nibbler) and provided a driver for it. It's still not playable, but the graphics are now correct.
  • Bernd Wiebelt suggested to add a new option: "-vesascan". It uses a VESA 800x600 screen to simulate scanlines. It is much slower than the other video modes. Use this if you want scanlines and the default video mode doesn't work.

Source

  • Multiple CPU support. All you have to do to setup multiple CPUs is add entries to the cpu[] array in the MachineDriver definition. Each CPU can have different type (currently Z80 and M6503 are supported), clock, address space, memory/IO port hook, interrupt handlers, number of interrupts per video frame.
  • Sometimes interrupt requests happen while interrupts are disabled. Until now I just ignored them, but some games need them to be processed as soon as interrupts are reenabled. Rally X is an example of such a game. The Z80 engine has provision to do that, but it would make writing a driver more complex (need to find the interrupt acknowledge register) so I slightly modified the engine to automatically cache an interrupt request and execute it as soon as interrupts are enabled. I had already done a similar change to the 6502 engine, it was needed by Burger Time which wouldn't accept coins otherwise.
  • Since the functions xxx_vh_start(), xxx_vh_stop(), xxx_videoram_w(), xxx_colorram_w() are the same for most video drivers, I moved them, alongside with some variables, to vidhrdw/generic.c. This doesn't reduce much the size of the executable, but greatly reduces the amount of code that has to be put in a video driver (in many cases, you just have to write xxx_vh_screenrefresh())
  • Fixed bug in msdos.c/osd_play_streamed_sampled() which prevented it from handling more than one audio stream. This part of the code still needs a major cleanup.
  • Fixed bug in drawgfx() which sometimes allowed transparent non remapped copies to be drawn outside of the clip region.

MAME 0.13

Released: 1997-03-26

Program

  • Added the most frequently asked feature: high score saving. Check the table at the beginning of readme.txt to see which games already support it. High scores are also reset-proof: you can reset the game by pressing F3 without losing them. To reset the high scores to their default, just delete xxx\xxx.hi where xxx is the game name. Note that hi score saving will NOT work if the default hi scores have been modified in the ROMs. Use the original ROMs.
  • Fixed all of the problems in Burger Time related to ROM encryption. Slices fall more than one level when an enemy is on them, no more crashes when a bonus life is earned, the high screen table works, two players mode works, and other things.
  • Support for an alternate ROM set for Burger Time, which is likely an earlier version.
  • Millipede's dip switches now work. DELETE MILLIPED\MILLIPED.DSW, OTHERWISE THE GAME WILL NOT WORK CORRECTLY.
  • Marc Lafontaine submitted a new palette for Zaxxon.
  • Richard Davies provided a new Phoenix/Pleiads driver with partial sound support.
  • Fixed "froggers" (I broke it while adding sound to Scramble). It now also uses the correct palette. Yes, I know that it is completely different from the real Frogger. This is a bootleg version, remember.
  • As promised, I modified the 8910 emulator to set the clock frequency at run time, so sound in Crazy Climber and Crazy Kong is now back as normal.
  • ue303ey@sunmail.lrz-muenchen.de reports that changing the horizontal total register of the custom video modes (0x3d4, 0x00) from 0x5f to 0x61 makes them work on his monitor. I experimentally made the change.
IF THE CUSTOM MODES WORKED FOR YOU IN VERSION 0.12 AND THEY DON'T WORK ANY MORE, PLEASE NOTIFY ME AND I WILL REVERT TO THE PREVIOUS SETTING.
  • Keith Smethers suggested to add -vgafreq n command line parameters, to select the VGA clock frequency. This may reduce flicker, especially in the 224x288noscanlines mode.
WARNING: THE FREQUENCIES USED MIGHT BE WAY OUTSIDE OF YOUR MONITOR RANGE, AND COULD EVEN DAMAGE IT. USE THESE OPTIONS AT YOUR OWN RISK.
  • I began working on Moon Patrol's background. It's quite messed up now.
  • Fixed a couple of minor bugs in Bomb Jack background colors.

Source

  • Use latest version of Marat's 6502 engine.
  • Changes to struct GameDriver to accomodate the high score saving functions. I also moved the decryption pointers at the end, so it is not necessary to explicitly define them as 0 when they are not needed. Check driver.c to see how high score handlers should be written. hiscore_load() is called every vblank until it returns nonzero; this allows it to wait for the hi score table to be fully initialized before replacing it. To avoid saving an incomplete table, hiscore_save() is called only if hiscore_load() previously returned nonzero.

MAME 0.14

Released: 1997-04-02

Program

  • Fixed bug in Mario Bros. high score loading: it was recovering the high score table, but the high score at the top of the screen was not set accordingly.
However, high scores don't seem to work in Millipede (you are not asked to enter your name).
  • Fixed bug which sometimes caused 6502 games not to run (actually they did run, but interrupts didn't happen).
  • Since the US version is better, I renamed amidar to amidarjp, and amidarus to amidar.
  • The change in video modes suggested by ue303ey@sunmail.lrz-muenchen.de didn't work on some systems, so I reverted to the previous one.
  • Ron Fries provided a new version of his Pokey emulator which fixes problems in the interface with the SEAL audio library (signed vs. unsigned samples).
  • Ron Fries also added preliminary sound support to Donkey Kong! It uses some very bad samples for now. The samples are distributed in a separate archive - put them in the dkong subdirectory.
  • Richard Davies updated the audio routines in Phoenix, sound is now closer to the original and noise is emulated.
  • Brad Oliver and Mirko Buffoni provided a driver for Vanguard, based on Brian Levine's Vanguard emulator.

Source

  • driver.c was getting much too large and confused. I moved the GameDriver structures inside the single driver/xxxx.c files. This has the additional benefit that people sending me drivers will not forget to include the ROM loading addresses ;-)
  • I also changed the GameDriver structure, moving there fields from the MachineDrivers structure. The idea is that MachineDriver should describe the hardware, while GameDriver the software. Therefore things like colors (which are usually stored in a PROM) and dip switch settings go into GameDriver; decode_color_prom, on the other hand, goes into MachineDriver because it is an hardware function.
It could be argued that input_ports belong to the hardware; but sometimes we have keys tied to dip switches (test switches and so on) whose function is determined by the software. Moreover input_ports contains the default values for all ports, including dip switches, and those are definitely software related.

MAME 0.15

Released: 1997-04-06

Program

  • Jarek Burczynski submitted a sound driver for Bomb Jack. The game is now a bit slow on my 486/100, -frameskip 1 is almost good but not quite.
  • Sound support in:
All these require -frameskip 1 on my 486/100.
I have no idea how accurate the tempo and pitch is. If you can compare it with a real machine, please let me know what's wrong.
Note: I discovered that the garbled sound I experienced in Scramble was caused by a bad ROM. Therefore, if sound doesn't work, check your ROM set. Note that I also changed one ROM name from "2c" to "2d".
  • Carnival is finally working! Many thanks to Richard Davies who understood how to make it accept coins.
  • Brad Oliver deserves a prize for being the person who, alone, has discovered more bugs than everyone else put together. This time the bug was illegal memory acesses in games using 224x288 and 288x224 modes (Pengo, Pac Man, Rally X).
  • Thanks to the invaluable help of Steve Scavone, I've been able to fix many bugs in the Wizard of Wor driver.
  • Added support for a version of Galaxian which is known to be original. It has Namco copyright and the code is slightly different from the other Galaxian (which has Midway copyright). I called this version "galaxian", and renamed the other "galmidw".
  • Support for a different version of Frogger ("frogsega").
  • Fixed most of the graphics problems with Moon Patrol. The video driver is a gigantic kludge right now, but it works and at a reasonable speed (though I can't reach 60fps on my 486/100).
  • Many people requested a way to syncronize with the video beam, to avoid jerkiness. Here it is: -vsync. It should be used together with -noscanlines, and possible -vgafreq to adjust the frame rate to be as close as possible to 60fps (use F11 to check the actual frame rate). Note that this, unlike the default timer based sync, will NOT downgrade nicely if your system is not fast enough.
  • Bernd Wiebelt provided new code for -vesascan, and implemented the new "-vesaskip n" mode. It uses a 640x480 screen instead of the 800x600 used by -vesascan, and allows you to scroll the visible area using the PGUP and PGDOWN keys.
  • Maintaining the endless list of ROM subdirectories was getting quite boring, so I modified readroms() to make it automatically print the complete list of required ROMs if one is missing. I think I should add a CRC check as well. I also added a brief explanation of what ROMs are and why they are required - hoping this will cut down the flow of e-mail asking "gee, I run your program and it says 'unable to open file xxxx/xxxx', what should I do?"

MAME 0.16

Released: 1997-04-13

Program

  • Support for Green Beret, with partial sound (probably inaccurate). Colors are terrible. If you can see what you are doing, it's playable (but should it be this fast? I find it very hard)
  • Richard Davies and Brad Oliver provided drivers for the so-called "Sega" version of Jump Bug (it's actually a bootleg with the protection checks removed). The driver supports sound.
  • Support for Fantasy on the Nibbler driver. There are several problems, it's not playable.
  • Thanks to Mike Coates and Peter Clare, Carnival now has colors.
  • Stefano Mozzi provided a much better palette for Mario Bros.
  • Matthew Hillmer submitted a new palette for Donkey Kong 3. It is not intended to be correct, but at least it gets rid of the annoying checkerboard effect.
  • Tormod Tjaberg provided updated Space Invaders (+clones) drivers which support sound. They use samples, derived from Michael Strutts' emulator.
  • Fixed a couple of remaining graphic glitches in the Wizard of Wor driver.
  • Fixed CPU clock speed to avoid slowdowns on fourth level.
  • It's much faster on a 486.
  • Sprites no longer "stick" on the screen on a level change.
  • Fixed a bug in high score save.
DELETE BTIME\BTIME.HI, OTHERWISE THE HIGH SCORE TABLE WILL BE CORRUPTED
  • Marc Lafontaine provided a Venture driver. It is partially playable, sprites are wrong.
On startup, keep 1 or 2 pressed to proceed.

Source

  • I wrote some general purpose routines to simplify interface with the AY8910. They are in 8910intf.c. See the existing drivers for usage examples.
  • To solve the problem with garbled text messages in Time Pilot, modified the GameDriver structure replacing letters_start and numbers_start with the array charset[36].
  • I finally took the time to change Z80.h/M6502.h to make them work together. This allowed me to remove some kludges in cpuintrf.c. I also added some new functions, which can be used regardless of the CPU type: cpu_getpc(), cpu_geticount(), cpu_seticount().
  • Fixed a couple of bugs in M6502 BCD arithmetic. One of them was causing the pepper counter in Burger Time to behave strangely.
  • Brad Oliver modified pokey.c and pokey.h to make them more portable.

MAME 0.17

Released: 1997-04-14

Program

  • Thanks to Paul Swan, it now has 100% accurate colors.
  • Dip switches didn't work, fixed.
  • Support for Rush'n Attack (the US version)
  • I've been told that it actually was too fast, so now it runs slower. Let me know how accurate it is.
  • Fabrice Frances submitted a massive contribution: an 8086 CPU emulator, and drivers for Q*Bert and Mad Planets. They run quite slowly on my 486/100 (~25 fps) but are playable. Q*Bert has sound too (with samples).

MAME 0.18

Released: 1997-04-20

IMPORTANT NOTE: This will be the last version of MAME released by me (Nicola Salmoria). From now on, the project will be maintained by Mirko Buffoni (mix@lim.dsi.unimi.it). Contact him if you have material to submit for inclusion into MAME. Please don't send such material to me.

Program

  • The speed should now be VERY accurate. It also syncs correctly with the music.
  • Sound pitch should be correct as well (though it changes after you die for the first time...)
  • High score support.
  • Fixed sprite clipping problem on the left of the screen.
  • Fixed memory trashing bug in dirtybuffer handling
  • I finally added some lousy, very inaccurate, noise to the 76496 emulator. This affects Lady Bug and Green Beret.
  • Fixed bug in the 8910 emulation which caused noise to be played in Crazy Kong when you jumped over a barrel.
  • Zaxxon and Congo Bongo now save their high scores for real. The code had disappeared from the drivers... I _did_ write it, since I had .hi files in my directories ;-)
  • Bomb Jack is much faster on a 486. Now runs very well with -frameskip 1 on my 486/100.
  • Sprite placement in Pac Man, Ms Pac Man and Crush Roller should now be arcade perfect. Thanks to Richard Davies who verified it on a real machine.
  • Preliminary support for Jungle King / Jungle Hunt. Slow but playable. I haven't the gfx bank selector, therefore you'll have to pick the correct background graphics yourself. Use keys C and V to change it.
  • Marc Lafontaine fixed some problems in the Venture driver, and provided drivers for Mouse Trap and Pepper II, which run on similar hardware (Pepper II is not complete yet).
Note that the required Venture ROM set has changed - the other one was missing one ROM.
Collision detection doesn't work - in Mouse Trap, you can use keys 7 and 8 to simulate a sprite-to-character and a sprite-to-sprite collision.
  • Rotated the controls for Q*Bert
  • Added support for the original, Universal version of Mr. Do!. I renamed the other, which has an additional Taito copyright notice, "mrdot".
  • Fixed bugs in Jump Bug and Bagman sound drivers which caused page faults when run under DOS.
  • Fabrice Frances submitted a much faster version of the 8086 emulation. Q*Bert now runs at full speed with -frameskip 1 on my 486/100.

Source

  • Samples are now loadaed by the main engine, not the single drivers. This is done via the new field samplenames in the GameDriver structure. Samples can then be retrieved by the drivers in Machine->samples.

MAME 0.19

Released: 1997-04-26

[ Sorry to be late, I just taken my graduation in Computer Science and I was a little busy. Here we go! :> ][NdMix]

Program

  • Thanks to Marc LaFontaine that provided me bootleg version we have now support for Popeye. It's not yet playable (when the game starts the machine resets) but it has music already. It's also very slow, since it uses a 512x480 screen. I'm looking for decryption scheme for original Popeye board using Lionel's idea [pain!].
  • Fabrice Frences fixed the Qbert driver and added support for Reactor.
  • Jarek Burczynski provided a preliminar but playable driver for Arabian. Colors are wrong, but it support sound already.
  • Mike Coates fixed the Space Panic background colors. Also added hiscore support.
  • Nicola Salmoria found how Elevator Action background works. Also updated all drivers that have a scrolling background. Support for the bootleg version of Elevator Action ("elevatob"). The original version doesn't work because of copy protection. The graphics are almost OK now, albeit quite slow.
  • Paul Leaman (author of the 1942 emulator) provided exhaustive information on (guess what) 1942, which is now supported.
  • Some changes to music tempo of Frogger
  • Added partial sound support to RallyX (no explosions yet). Thankx to Ron Fries.
  • Added preliminar unplayable WarpWarp. Graphic is ok, but the game hangs during diagnostic.
  • Changed noise_lenght and noise_rate values in Moon Cresta audio driver, so now noise is much more noisier!
  • Shaun Stephenson provided me original Phoenix sound samples, so I adjusted sound driver to achieve correct sound modulation and frequency, and substituted noise generator for shots and explosions with a couple of samples. Noise generator can be still used (just don't put the samples in the directory) with Phoenix and it's used in Pleiads. I changed white noise waveshape and adjusted frequency, so now it sounds better.

Source

  • Added input ports 5 and 6 in CPUINTRF module.
  • Fixes to setdipswitches() and the fps counter in COMMON.C, to make them work correctly with non 8x8 fonts.
  • Substituted strcmp() with case insensitive stricmp() in MAME.C and MSDOS.C. This solve the problem with upcase gamename (ex: Win95 and NDOS).
  • Added copyscrollbitmap() to COMMON.C, that semplifies programming for those games that use scroll.

MAME 0.20

Released: 1997-05-05

Program

  • Yes!! Finally I wrote a driver for Gyruss, one of my favourite games and one of the reasons why I started emulation. Big special thanks to Michael Cuddy, without help and information this game would probably never be done; and to Nicola Salmoria that fixed some of the sprites bugs that turned me mad and cleaned the code! ;)
  • The following changes were done by Nicola Salmoria:
  • 1942 has correct colours. Also fixed rom paging, so now it has no more slowdowns. Fixed jerkiness. Sound is better, too. How about the tempo? How about the pitch? Are they right?
  • fixed missing sprites when exiting from doors in Elevator Action. There are still some sprite priority bugs. Also better colors.
  • Thanks to Marc Lafontaine's invaluable help, Popeye is now fully playable and has 100% accurate colors. Supports high score saving, too. Still very slow.
  • Brad Oliver found a lot of bugs around the code. Fixed 1942 background scroll, Arabian video driver, and Phoenix sound init routine (all those caused trashes on MAC).
  • Paul Berberich fixed some colors of Donkey Kong that is now quite close to original arcade. Also Donkey Kong Jr. has better colors now.
  • Fabrice Frences provided a driver for Krull. Also fixed some bugs in qbert, and returned audio to Mad Planets.
  • Ron Fries created a new set of Donkey Kong samples, using Mike Cuddy's 8039 emulator. The new samples no longer have static, they are aliased and louder. All names are now generic, so the same name can be used across Nintendo line (DK, DKjr, DK3, Mario).
  • Chris Hardly kindly provided a working driver for Warp Warp.
  • Dave W. provided a new set of invaders samples. Should be better, though.
  • Frogger music tempo bring back to original value. Fast but flawless!

Sources

  • Changed 8910intf to support 5 PSGs (Gyruss have them!)
  • Changes in MAME.C: added -list option. This is useful for mantaining the readme file. It lists currently supported games. Thanks to Zanello Maurizio for suggestion.
  • Changes in MSDOS.C: vesa and vesascan are now mutex. Also fixed a bug caused by calling joystick initialize before starting allegro.
  • To UNIX users: sorry for the mess I did in my previous distribuition. All names and patches should be ok now.
  • Nicola Salmoria provided the following changes:
  • changed GENERIC.C to add sound_command_latch_r(): this always return the last command, instead of 0, if there are no more pending commands. This was required by 1942.
  • new flag for the cpu type: CPU_AUDIO_CPU. For example, you'll define a CPU type as CPU_Z80 | CPU_AUDIO_CPU. This indicates that the CPU is a slave used for audio only, and is therefore not needed if sound is disabled. The CPU will not be emulated when sound is turned off, therefore speeding up the emulation a lot.
  • also, 8910_sh_update() doesn't emulate the 8910 audio if sound is disabled (the I/O ports of the chip are still emulated, since some games use them for input).

Other Versions


Personal tools