MAME/0.1 to 0.10
From GamerWiki
A warts and all look through the history of MAME as described by the MAME Dev team themselves through their releases.
| Contents: | 0.1, 0.2, 0.3 (P;S), 0.4 (P;S), 0.5 (P;S), 0.6 (P;S), 0.7 (P), 0.8 (P;S), 0.8.1 (P), 0.9 (P;S), 0.9.1(P), 0.10(P;S), Other |
|---|
MAME 0.1
Released: 1997-02-05. The original release. There was no whatsnew.txt file in this release: the whole thing was new! Instead here is a list of the games implemented in MAME version 0.1.
| Game | Playable? | Accurate colors? | Sound? |
| Pac Man | Yes | Yes | Yes |
| Ms Pac Man (bootleg) | Yes | Yes | Yes |
| Crush Roller | Yes | No | Yes |
| Pengo | Yes | Yes | Yes |
| Lady Bug | Yes | Yes | Partial |
MAME 0.2
Released: 1997-02-09. The second release & still no whatsnew.txt file yet - version 0.3 is the first with documented changes. Instead here's the new entries in the list of games implemented in MAME version 0.2.
| Game | Playable? | Accurate colors? | Sound? |
| Mr. Do! | Yes | Yes | Yes |
| Crazy Climber | Yes | Yes | Yes |
| Crazy Kong | Yes | No | Yes |
MAME 0.3
Released: 1997-02-13
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 tostruct MachineDriver.
-
struct GfxLayoutnow contains aplaneoffsetarray instead ofplaneincrement, to better support more than 2 bitplanes. I also fixed (I hope) all the code which assumed 2 bitplanes.struct GfxDecodeInfohad to be changed as well.
MAME 0.4
Released: 1997-02-16
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
INandOUTinstructions 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_inand_outfunctions and addedport_readandport_writearray pointers. Also defined a genericinterrupt_vector_w()function, this makes the Pac Man driver tinier (look atpacman/machine.c, it's now there only to handle the cheat).
MAME 0.5
Released: 1997-02-20
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 theRomModulearray is marked by asize==0, whilename==0means "continue loading the previous ROM at this address". - Some bug fixes and changes to reduce porting problems (thanks to Brad Oliver)
- New function
copybitmap()incommon.c. Limited for now, will change in the future.
MAME 0.6
Released: 1997-02-23
Program
- Support for:
- 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.
MAME 0.7
Released: 1997-02-27
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 at1000-17ff) is bad, or it uses a different encryption.
MAME 0.8
Released: 1997-03-04
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_areato theMachineDriverdefinition. It was used in all video drivers, so it's better to keep it centralized. - Long-awaited function
clearbitmap(), which correctly initializes a bitmap usingbackground_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.cand put all intomame.c... when I have time, I'll try to organize the source better.
MAME 0.8.1
Released: 1997-03-04
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
MAME 0.9
Released: 1997-03-09
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 ofstruct RomModuleandstruct GfxDecodeInfohas changed.struct RunningMachinecontains an array of pointers to memory regions.RomModulesare now defined using macros, andreadroms()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_decodefunction pointer in theGameDriverstructure. It is used to decrypt the whole ROMs after loading them (as opposed toopcode_decode, which is used to decrypt only CPU opcodes).
- Also,
opcode_decodeis 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
MachineDriverdefinition andmame.cneeded to support multiple CPUs (they are NOT supported yet - this is just the first step)
MAME 0.9.1
Released: 1997-03-09
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.cwas missing the '2'.
MAME 0.10
Released: 1997-03-13
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_M6502instead ofCPU_Z80in theMachineDriverdefinition. Multiple CPUs are still NOT supported. - New function in
common.c:decodechar(). It was originally part ofdecodegfx(), 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.
Other Versions
editEarly versions: 0.1 to 0.10 | 0.11 to 0.20 | 0.21 to 0.26 | 0.27 to 0.31
The beta 30s: 0.33b1 to 0.33 | 0.34b1 to 0.34 | 0.35b1 to 0.35b8 | 0.35b9 to 0.35f | 0.36b1 to 0.36b9.1 | 0.36b10 to 0.36 | 0.37b1 to 0.37b8 | 0.37b9 to 0.37b16
50s, 60s & 70s: 0.53 to 0.60 | 0.61 to 0.68 | 0.69 | 0.70 | 0.71 | 0.72 | 0.73 | 0.74 | 0.75 | 0.76 | 0.77 | 0.78 | 0.79
80s & 90s: 0.80 | 0.81 | 0.82 | 0.83 | 0.84 | 0.85 | 0.86 | 0.87 | 0.88 | 0.89 | 0.90 | 0.91 | 0.92 | 0.93 | 0.94 | 0.95 | 0.96 | 0.97 | 0.98 | 0.99
100s & 110s: 0.100 | 0.101 | 0.102 | 0.103 | 0.104 | 0.105 | 0.106 | 0.107 | 0.108 | 0.109 | 0.110 | 0.111 | 0.112 | 0.113 | 0.114 | 0.115 | 0.116 | 0.117 | 0.118 | 0.119
120s & 130s: 0.120 | 0.121 | 0.122 | 0.123 | 0.124 | 0.125 | 0.126

