=============================================================================== N E W S - F E A T U R E S - F A C T S - S U P P O R T - C H A N G E S =============================================================================== NEWS * Cheat.dat: http://cheat.retrogames.com/ * MESS 0.105: http://www.mess.org/ * Hiscore.dat 0.105: http://www.mameworld.net/highscore/ * Clrmame 3.87: http://www.clrmame.com/ * Derrick Renaud Discrete Sound System: http://derrick.mameworld.info/ * Laser-disc game Firefox: http://www.scottwaye.com/mach3/index.html * Tickle 0.92 (discrete logic emulator): http://www.ascotti.org/programming/tickle/tickle.htm * Computer Space Simulator: http://move.to/moose * 3D Pacman emulator: http://pacifi3d.retrogames.com/ * Space Invaders sound board emulation: http://www.ascotti.org/programming/programming.htm UPCOMING OR DUMPED GAMES FOR MAME 0.106 98 Grand Prix 12th January 2006: Guru - A few packages arrived containing 98 Grand Prix. 24th December 2005: Dumping Project - Our Korean contact has purchased 98 Grand Prix. Air Trix 31st January 2005: Dumping Project - Randy have managed to win a Sega 'Air Trix' board, which is hardly ever seen outside of its specialized cabinet. Asura Buster 18th March 2006: Guru - Asura Buster arrived late yesterday from Japan. 31st August 2005: Dumping Project - Our Japanese finally found and bought a cheap copy of Fuuki 'Asura Buster'. Auscom Host Invaders CD 22nd February 2005: Guru - Auscom Host Invaders CD just arrived. Balloon & Balloon 13th November 2005: Guru - I received a very new Eolith PCB called Balloon & Balloon (a Bomberman rip-off), thanks to Apollo69. This is the first arcade PCB I've seen that uses a 256MBit NAND FlashROM. The hardware is ARM-based and also uses the familiar sound hardware used on Eolith games, currently unemulated QDSP sound chips. Beatmania II DX CDROM - GQ863 A01 Beatmania II DX CDROM - GQ863-JA B01 (x2) & dongle 863A02 Beatmania II DX video CD - GQ863 A04 (x2) Beatmania II DX substream VIDEOCD - GC983 A04 Beatmania II DX 2nd style CDROM - GC985 A01 Beatmania II DX 2nd style VIDEOCD - GC985 A04 Beatmania II DX 7th style CDROM1 - B44JAA01 Beatmania II DX substream Club Version 2 18th March 2006: Guru - ... arrived late yesterday from Japan. Bombs Away 19th March 2006: Andrew Gardner - After (finally) submitting my Psychic 5 blend chip changes, Reip pointed me to another game running on similar hardware to Argus, Valtric, and Butasan. It's called Bombs Away, and it looks to be a quaint 194x-style shooter. I've decoded most of the graphics, found a few bits of the palette, and have the text layer drawing quite nicely. No idea where the tilemaps are, nor the sprites - and the thing reboots after running for a few seconds, but there are still tons of other things to try so stuff may begin to look better. 7th April 2005: Guru - Bombs Away (Jaleco, 1988) arrived, purchased from two private sellers by Randy. 22nd February 2005: Dumping Project - Randy finalized an agreement to purchase from a Swedish seller Jaleco's 'Bombs Away' (1987). Bowler Strike Zone 17th December 2004: Dumping Project - Randy bid for what is supposed to be a Williams board called "Bowler Strike Zone" or some such thing (haven't found out what it actually is yet). Block Buster 20th June 2003: Guru - An unknown very old PCB by Mirco Inc. (no CPU, no ROMs) arrived from Taucher (probably Block Buster). BoMulEul Chajara 10th October 2005: Guru - BoMulEul Chajara (ST-V) arrived. Thanks to our new Korean contact. Chameleon 24-in-1 http://www.coinopexpress.com/products/pcbs/pcb/Chameleon_24_2839.html Choukou 10th October 2005: Guru - Choukou arrived from Japan. Purchased by the Dumping Project Team. 31st August 2005: Dumping Project - Our Japanese contact just shipped a box to Guru with a Capcom CPS-2 'Choukou'. Cobra Command 2nd April 2002: Stephane Humbert re-added Cobra Command to the Gottlieb driver, but it still misses the laserdisc backgrounds. 19th September 2001: Troy Gratton submitted an updated Gottlieb driver with support for Cobra Command, but like 'Mach 3' and 'Us vs. Them', the laserdisc backgrounds aren't emulated. 1st April 2000: Guru - Dumped Cobra Command (older version) (DataEast 1984). Crazy Wars 12th January 2006: Guru - A few packages arrived containing Crazy Wars. Most of these came from our Korean contact and a couple came from ebay purchased by Randy or Brian T. 24th December 2005: Dumping Project - We grabbed Crazy War. DaeJeon! SanJeonSuJeon 10th October 2005: Guru - DaeJeon! SanJeonSuJeon (ST-V) arrived. Thanks to our new Korean contact. Dance Maniax 2 10th October 2005: Guru - Dance Maniax 2 append J paradise (Black CD) A38JAA02 arrived earlier this morning in a 'Top-Secret' local deal. Dancing Stage feat. True Kiss Destination 10th October 2005: Guru - Dancing Stage feat. True Kiss Destination (Jade CD) 884JAA02 arrived earlier this morning in a 'Top-Secret' local deal. Dark Horse Legend 17th June 2005: Guru - Dark Horse Legend CDROM + cart arrived from Japan. 4th April 2005: Dumping Project - Our Japanese contact bought a Konami System 573 'Dark Horse Legend' CD. Date Quiz GoGo 10th October 2005: Guru - Date Quiz GoGo arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought Date Quiz GoGo at a Korean shop. DDR 1st mix 10th October 2005: Guru - DDR 1st mix (black cd) 845JAB02, DDR 1st mix (purple cd) 845JBA02, DDR 1st mix (jade cd) 845AAA02, DDR Solo 2000 (black cd) 905JAA02, DDR Solo Bass Mix (black cd) 894JAA02, DDR 3rd mix (black cd) 887JAA02, DDR 3rd mix (violet cd) 887KAA02, DDR 3rd mix (violet cd) 887KBA02, DDR 3rd mix (pink cd) 887AAA02, DDR 3rd mix plus (black cd) A22JAA02, DDR 4th mix plus (black cd) A34JAA02, DDR 5th mix (black cd) A27JAA02, DDR 6th mix-Max (black cd) B19JAA02 and DDR 7th mix-Max2 (black cd) B20JAA02 arrived earlier this morning in a 'Top-Secret' local deal. DDR 2nd Mix 18th March 2006: Guru - DDR 2nd Mix arrived late yesterday from Japan. Draw Poker Hi-Lo 21st October 2005: ClawGrip - Another game dumped: Draw Poker Hi-Lo (1983), from M. Kramer. Drummania 7thMIX 18th March 2006: Guru - A DrumMania 7th Mix security cart arrived late yesterday from Japan. 12th January 2006: Guru - Drummania 7thMIX power-up ver. CD arrived from our Japanese contact. Dynamite Baseball '98 + '99 20th July 2003: Guru - Received Dynamite Baseball Naomi (Sega 1998) + Dynamite Baseball '99 (Sega 1999). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. Dynamite Bomber 12th January 2006: Guru - A few packages arrived containing Dynamite Bomber (Limenko 2000). 24th December 2005: Dumping Project - We grabbed Dynamite Bomber. 31st August 2005: Dumping Project - Randy have won a Limenko 'Dynamite Bomber'. E-Jan Sakura-sou 18th March 2006: Guru - E-Jan Sakura-sou arrived late yesterday from Japan. Exotic Dream 25th February 2005: Guru - Exotic Dream arrived, purchased by Randy from a PCB Shop. Thanks to the donators for keeping up the support. Filetto 8th February 2005: Angelo Salese - It's a rare game called Filetto, running on a un-modified pc board (you can even extract the roms data and run it on a real PC). The game still doesn't work (missing some features), and yes, the game sucks badly... Fire Fox 28th January 2003: smf sent in a preliminary Fire Fox driver written by him and Chris Hardy, but the laserdisc emulation has not been done yet so there's not much to see. Fun Casino 22nd February 2005: Dumping Project - Randy have won a PCB for Status "Fun Casino" (1982) on eBay. Gals Panic (Extended version) 24th February 2005: Guru - Gals Panic (Extended version) arrived, purchased by Randy on eBay. Thanks to all that chipped-in for donations. Gals Panic 2 SE 24th February 2005: Guru - Gals Panic 2 SE arrived, purchased by Randy on eBay. Thanks to all that chipped-in for donations. Gals Panic 2 Quiz 27th September 2005: Guru - Gals Panic 2 Quiz (Kaneko 1995) arrived a couple of days ago. Thanks to alien_mame. Gambling Games 14th April 2005: Guru - As part of our never ending shopraids, another package arrived from Hong Kong containing a couple of cheap skill-based gambling games: A-Plan, Dai Ban City (Dynax) and an extremely rare Battle Tryst (Konami, 1998, M2 hardware). Ganbare ChinsanOoshoubu * Wanted: 317-5012 MC-8123A CPU Gate In / Cow Race 25th February 2005: Guru - Gate In / Cow Race arrived, purchased by Randy from a PCB Shop. Thanks to the donators for keeping up the support. Gigas Mark 3 15th May 2002: Guru - Gigas Mark 3 received and a lot of other things over the last few weeks but i have been very busy. Thanks to Theo for donations. GuitarFreaks 8th Mix 18th March 2006: Guru - A GuitarFreaks 8th Mix security cart arrived late yesterday from Japan. Heavy Unit 21st February 2006: Tomasz Slanina - Heavy unit = heavy protection. Just a skeleton driver. 17th October 2003: Tomasz Slanina - Sprites (game logo is made of sprites) and text layer is done. TODO: bg layer, colors, sound 20th July 2003: Guru - Received Heavy Unit from R. Belmont. Hidden Catch 3 10th October 2005: Guru - Hidden Catch 3 arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought Hidden Catch 3 at a Korean shop. Jackie Chan II 24th February 2005: Guru - Jackie Chan II arrived, purchased by Randy on eBay. Thanks to all that chipped-in for donations. 17th December 2004: Dumping Project - Randy have won on eBay a 'Jackie Chan 2: Fists of Fire' board. Jaleco Music Game 18th February 2005: A EPROM downgrade kit from one of Jaleco's music games arrived from Japan. Joy Stand Private 10th October 2005: Guru - Joy Stand Private arrived from Japan. Purchased by the Dumping Project Team. Keyboardmania 3rdMIX 28th January 2006: Ville Linde - Something to keep me sidetracked came up. Don't get your hopes up though, the kbm3rd driver won't be added to MAME in the near future. 12th January 2006: Guru - I got access to Keyboardmania 3rdMIX (Konami 2001, Firebeat hardware) during the last week and it is of course dumped as well. Koikoi 4th April 2005: Dumping Project - Our Japanese contact has sent out a box to Guru containing a motherboard for the Imax print-club machine, an 80s 'Koikoi' game (no relation to the Psikyo games). Koi Koi 2 20th April 2005: Guru - Koi Koi 2 (a Kiwako table cards game) arrived from Japan. Lacucaracha 29th September 2004: Tomasz Slanina - And now for something completely different ... (Pictures from Lacucaracha) Last Survivor http://www.system16.com/sega/hrdw_xboard.html#ls Lead Angle 12th January 2006: Guru - Lead Angle (Seibu 1988) arrived from our Japanese contact. Legend Of Heroes 16th April 2005: Guru - Legend Of Heroes (Limenko 2000) arrived. Thanks to the good boys at the Italian MAME Forum. Live Quiz Show 10th October 2005: Guru - Live Quiz Show arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought 'Live Quiz Show' at a Korean shop. Magic Gate 18th March 2006: Guru - A Magic Gate security dongle (Capcom/Banpresto 2003 - Namco System 256 hardware) arrived late yesterday from Japan. Mahjong Fight Club 18th March 2006: Guru - Mahjong Fight Club (Konami Viper, complete set of 8 identical units! We got this for ¥1000 total!) arrived late yesterday from Japan. Mahjong Ougon No Pai 13th July 2005: Guru - Mahjong Ougon No Pai (Dynax 1991) received in a box with a pile of Dynax Mahjong games. Big thanks to BNathan for these. Mahjong PCBs 21st February 2006: Guru - 6 Mahjong PCBs arrived, thanks to BNathan. Mahjong Reach 13th July 2005: Guru - Mahjong Reach (Dynax 1994) received in a box with a pile of Dynax Mahjong games. Big thanks to BNathan for these. Mahjong Tenkaigen 13th July 2005: Guru - Mahjong Tenkaigen (Original) and Mahjong Tenkaigen (Taiwan, Dynax 1993) received in a box with a pile of Dynax Mahjong games. Big thanks to BNathan for these. Mahjong (Dynax 199?) 13th July 2005: Guru - A unknown Mahjong (Dynax, 199?) received in a box with a pile of Dynax Mahjong games. Big thanks to BNathan for these. Martial Beat 10th October 2005: Guru - Martial Beat (black cd) B47JAB02 arrived earlier this morning in a 'Top-Secret' local deal. Maze Hunter 7th April 2005: Guru - Maze Hunter (Data East) arrived, purchased from two private sellers by Randy. Mobile Suit Z-Gundam - AEUG Vs. Titan DVDROM and Sony 18th March 2006: Guru - 'Mobile Suit Z-Gundam - AEUG Vs. Titan DVDROM and Sony' arrived late yesterday from Japan. Monkey Elf 24th December 2005: Dumping Project - Our Korean contact has purchased Monkey Elf. Monster Zero 23rd May 2005: Pierpaolo Prazzoli - Monster Zero (Nihon Game 1982) has a weird protection which seems to test some values from program code, but it also seems to provide extra code to extra ram which will probably need a trojan to extract it. 10th April 2005: Tomasz Slanina - First look at Monster Zero (Scramble hardware with few additions like extra RAM ). Ms.Pac-Man/Galaga - 20 Year Reunion 15th February 2004: Nicola Salmoria sent in a driver for Ms.Pac-Man/Galaga - 20 Year Reunion and fixed some bugs in the Z180 CPU core. Why isn't Class Reunion not in MAME? Because it's still being sold [Haze]. Multi Poker 22nd October 2005: ClawGrip - Another game dumped: Multi Poker (1981), from Merit Industries. The small sub-board is a Video I-O. Mysterious Universe 25th February 2005: Guru - Mysterious Universe arrived, purchased by Randy from a PCB Shop. Thanks to the donators for keeping up the support. Mysterious World 17th December 2004: Dumping Project - Randy have won on eBay a Dynax 'Mysterious World' mahjong PCB. Nakshi Mania 3 10th October 2005: Guru - Nakshi Mania 3 arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought Nakshi Mania 3 at a Korean shop. Name Club ver 3.0 10th October 2005: Guru - Name Club ver.3 (ST-V) arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought Name Club ver 3.0 at a Korean shop. Office YeoInCheonHa 1.2 10th October 2005: Guru - Office YeoInCheonHa 1.2 arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought 'Office YeoInCheonHa 1.2' at a Korean shop. Pac & Paint 10th September 2004: Guru - Finally got Pac & Paint from Japan. Thanks to MAMEWorld donations and several anonymous (private/direct) donations. Para Para Paradise 3rd February 2006: Ville Linde - With the progress made with Keyboardmania 3rd Mix, I was able to get Para Para Paradise somewhat working. It still dies before getting ingame though. 25th April 2005: Ville Linde - I've been working on a Konami FireBeat driver for a while now. The hardware is a relatively simple set of stuff. There's currently only one game, Para Para Paradise, dumped. Currently it passes most of its bootup tests (except the RTC/backup RAM test). The test menu is also accessible, but cannot be operated since I haven't found the input ports yet. Pasha Pasha Champ 10th October 2005: Guru - Pasha Pasha Champ arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought Pasha Pasha Champ at a Korean shop. Pasha Pasha 2 10th October 2005: Guru - Pasha Pasha Champ 2 arrived. Thanks to our new Korean contact. 30th September 2005: Dumping Project - Our Korean contact has bought Pasha Pasha 2 at a Korean shop. Powerful Baseball '98 22nd February 2005: Finally worked out the banked flash ROMs on 573 and Powerful Pro Baseball EX (Konami, 1998) became fully playable with sound and music. 15th February 2003: Guru - Powerful Baseball (Konami 1998, System 573) arrived. Pro Golf 27th November 2005: Pierpaolo Prazzoli - Something tries to start in Pro Golf (Data East 1981). 29th November 2004: Guru - 2x Pro Golf (Data East 198x) arrived. Has some sort of custom CPU/epoxy block on it. Purchased by Randy on eBay a few months ago IIRC as mostly unknown stuff that went fairly cheaply. Psikyo 2002 27th September 2005: Guru - Psikyo 2002 arrived a couple of days ago. Thanks to alien_mame. Punch Mania 10th October 2005: Guru - Punch Mania (RED CD) 918JAB02 arrived earlier this morning in a 'Top-Secret' local deal. QuickJack (ADP) 30th September 2005: Tomasz Slanina - Preliminary emulation of ADP hardware (68k+HD63484). Added emulation of few HD63484 commands, many more are still missing (pattern stuff). Skat title screen has probably wrong res/dispaly mode. Quiz 6000 Academy 24th December 2005: Dumping Project - Our Korean contact has purchased Quiz 6000 Academy. Quiz Tou 15th January 2004: Guru - Quiz Tou (Namco 1995, NA2 hardware) arrived from Japan. Rapid Fire 7th February 2002: Aaron Giles sent in a driver for Rapid Fire. 4th February 2002: Guru - Rapid Fire (Hanaho 1998) arrived from Pelle. Rapid River 2nd April 2006: R. Belmont - On the plus side, Guru dumped my Rapid River. As expected, it does not slot into the existing System 23 work - the memory map is different, and the 2D hardware may be as well. Anyone attempting to “troha” it into the current driver will be dealt with harshly. 30th March 2006: Guru - I hooked Rapid River (System 22.5 - Gorgon H/W) up today. It's fully working, not bad for 100 bucks! I don't think the previous owner will be too sad about the low price though... 11th March 2006: Guru - I just picked up lots of juicy stuff from my local post office: Rapid River (1997, Namco 'Gorgon' h/w). Thanks to R Belmont for grabbing it for us on EBay. Rolling Extreme 10th March 2006: Dumping Project - We made some great buys recently with the funds donated so far: Rolling Extreme (Gaelco, still in post if it makes it). Search Eye Plus 12th January 2006: Guru - A few packages arrived containing Search Eye Plus v2.00. 24th December 2005: Dumping Project - Our Korean contact has purchased Search Eye Plus ver2.00. Sega Rally Pro Drivin' 5th October 2003: Guru - Received and dumped Sega Rally Pro Drivin' from to B. Simpson. Shanghai Shouryu Sairin 11th August 2003: Guru - Shanghai Shouryu Sairin arrived. I've been fairly busy over the past week so didn't get chance to update here. However, this stuff arrived just recently thanks to Mameworld contributions. Sichuan 1 4th March 2005: Guru - Sichuan 1 PCB arrived. Purchased by Randy on eBay. Skat (Merkur) 21st September 2005: ClawGrip - Got Quick Jack Video running on the same hardware as Skat TV. Again, there's a connector for a light pen on the video board, sounds like an interesting feature to check. Unless is needed to have another game running on this hardware for emulating it (is anybody working on this?), I won't dump the ROMs until I have some spare time (lot of work lately). 7th September 2005: ClawGrip - Won two PCBs on eBay: Top Shooter (from Sun Mixing Co.) and Skat (a German cards game from Merkur). I'll dump them as soon as I receive them. Skins Game 12th January 2006: Guru - I got access to Skins Game (Midway 2000) during the last week and it is of course dumped as well. Space Fighter I+II 18th February 2005: Guru - Space Fighter I PCB + Rom Upgrade for Space Fighter II arrived from Japan. Spin Kick 8th March 2005: Bluebird - I have another board called spin Kick by a company called HEC ( a similar game to Free kick) which Juno said is based on MSX technology that needs to go to him. Star Blazer 1st April 2000: Guru - Dumped Star Blazer (Sega 1983). Steeplejack (No CPU) 7th February 2001: Mike Coates added Steeplejack to the Crazy Climber driver. Street Games II 7th March 2005: Dumping Project - We've continued our recent tear, acquiring a PC-based "Street Games II" board from 1993. Tanto-R * Wanted: 317-0211 EPM5032 Tenkaigen 14th April 2003: Guru - Tenkaigen (Dynax 1991) arrived. Teraburst 4th April 2005: Dumping Project - Randy have won a Konami 'Teraburst' boardset. Tokimeki Your Heart 17th June 2005: Guru - Tokimeki Your Heart CDROM + cart arrived from Japan. Tokimeki Memorial Oshiete Your Heart 4th April 2005: Dumping Project - Our Japanese contact bought a Konami System 573 'Tokimeki Memorial Oshiete Your Heart' CD. Top Blade V 18th March 2006: Guru - Top Blade V (Crystal System hardware) arrived late yesterday from Japan. 7th September 2005: Dumping Project - Our Japanese contact just bought the Crystal System game Top Blade (2003) Tougenkyou / Gladiator 2003 / The Road of Sword 18th March 2006: Guru - Tougenkyou / Gladiator 2003 / The Road of Sword arrived late yesterday from Japan. Trapshoot (No CPU) 14th March 2004: Finally gotten enough information (thanks to Bob Carroll at http://www.wallgames.com/ and Andrew Jones) to build a reasonable PC simulator of the 1975 Gremlin game at http://www.monroeworld.com/trapshoot Trivia Madness 20th December 2004: Guru - Trivia Madness (World Games) arrived. These were purchased by Randy some time ago on eBay. Unknown 31st August 2005: Dumping Project - Randy have won an unknown 1982 Status PCB. Unknown 8080 16th April 2005: Guru - An unknown 8080-based PCB (same as Midway's L-Board type) arrived. Thanks to the good boys at the Italian MAME Forum. Wolf Fang 31st August 2005: Dumping Project - Randy have won a DECO 'Wolf Fang'. Wonderboy 2 * Wanted: 317-0048 FD1094 CPU X-TOM 30th January 2005: Dumping Project - Randy have won a 'X-TOM' PCB by Andamiro on eBay. DRIVERS: Aleck64 12th January 2006: Guru - A few packages arrived containing a Aleck 64 cart - Tower Shaft (Azure 2003). Most of these came from our Korean contact and a couple came from ebay purchased by Randy or Brian T. 7th January 2006: Ville Linde - Some more 2D N64 stuff. The RDP emulation is constantly improving, and I'm getting some nice results. Bust-a-Move '99 is playable and Mortal Kombat Mythologies: Sub Zero shows the menu graphics. 1st January 2006: Ville Linde - I've moved the N64 driver development over to MESS, and I'm currently in the middle of writing an RSP CPU core and emulating the RDP. Mortal Kombat Trilogy is the first commercial game to show some graphics. It isn't playable yet though. 22nd February 2005: Guru - Star Soldier (Seta Aleck64 cart) just arrived. 25th March 2004: Guru - Vivid Dolls (Visco/Seta 1998, Aleck 64 hardware) arrived from Randy. Hyper Neo Geo 64 20th April 2005: Guru - HNG64 Extreme Rally Cart + Mainboard arrived, purchased by Randy on eBay. 20th April 2005: Guru - HNG64 Samurai Showdown Asura Zanmaden ROM cart arrived from Japan. 14th January 2005: Guru - Beast Busters - Second Nightmare (SNK, 1998, HNG64) arrived, purchased on Ebay. 4th April 2005: Dumping Project - Our contact has sent out a box to Guru containing the HNG64 'Samurai Shodown Asura Zanmaden' cart. 4th April 2005: Dumping Project - Randy have won a SNK HNG64 'Xtreme Rally' PCB. 17th December 2004: Dumping Project - We're still waiting for the "Beast Busters: 2nd Nightmare" motherboard and cart to get to Guru. Konami 573 12th January 2006: Guru - Salary Man Champ CD (Konami 2001, System 573) arrived from our Japanese contact. 25th February 2005: R. Belmont - System 573 has precipitated something that's actually needed to be done since the Konami GQ and GV drivers were first added: proper, flexible SCSI handling. Right now, the code to emulate a specific SCSI device (such as a CD-ROM or harddisk) is tied in with the SCSI controller we use it with (e.g. the AMD 53CF96 used by Konami). This is not correct - it prevents emulation of more than one device on a SCSI bus, or more than one instance of a device (arcade hardware exists that has dual CD-ROM drives). It also means that each new SCSI controller implemented has to include it's own device emulation. That's just not the way we want to do things - MESS is going to need multiple SCSI devices per controller eventually, and so will MAME if we ever emulate some of the later Bemani boards. The proper solution is to encapsulate each type of SCSI device (harddisk, CD-ROM, scanner, whatever) in it's own source file with a well-defined interface. A configuration struct can then be passed into the SCSI controller on startup that says "I want a CD-ROM on SCSI ID 4 using this CHD file, a second CD-ROM on ID 5 using this other CHD file, and a harddisk on ID 1 using a third CHD file" and everything will work properly unless you're still on dial-up when that driver hits This not only improves device configuration flexibility, but it means that if a new SCSI controller is emulated it automatically has the ability to talk to already-debugged fully functional harddisk and CD-ROM devices. I've got that work well under way now and I should be able to submit it shortly after Aaron's done destroying the codebase. Incidentally, for the nitpickers out there who are going to protest that System 573 uses an IDE CD-ROM, you're right, but there's a "but" lurking. All IDE devices which are not harddisks (including CD and DVD-ROM drives and burners) actually use the ATAPI protocol, which means they send standard SCSI commands over an IDE bus. The devices themselves are actually SCSI, they just have an IDE connector (!) So for the purposes of this rewrite, the ATAPI controller is actually the same thing as a SCSI controller, and it'll also be able to talk to the new generic SCSI devices. 22nd February 2005: Finally worked out the banked flash ROMs on 573 and Powerful Pro Baseball EX (Konami, 1998) became fully playable with sound and music. 18th February 2005: R. Belmont - System 573 WIP (Konami 80's - fbaitusa.png): Hooked up controls, NVRAM and real-time clock. Konami M2 20th October 2005: Ville Linde - The Konami M2 driver has been sitting on my harddisk for a long a while now in a completely non-working state. I decided to have a yet another look and I finally got it to boot and to show some graphics. Mystery Super System22 18th March 2006: Guru - A Mystery Super System22 PCB arrived late yesterday from Japan. Namco System 10 18th March 2006: Guru - An unknown System 10 ROM board (possibly Taiko no Tatsujin 3) arrived late yesterday from Japan. 3rd May 2004: Guru - Panicuru Panekuru (Namco 2002, System 10) arrived from Brian Troha. NAOMI System 21th February 2006: R. Belmont - Suppose the Dreamcast had hung on and perhaps even knocked out the Xbox or Gamecube. What kinds of crazy hidden powers would developers be pulling out of it now? Look no further than the latest Naomi games. Yeah, Naomi has more RAM, but the ports released during the DC’s lifetime didn’t exactly show huge degredation. Anyway, one of the great untapped resources in the DC was it’s AICA audio chip - in every respect it’s roughly 2-3 times more powerful than the Saturn and Model 2/3’s already formidable SCSP, but Dreamcast games tended to just stream their music and ignore the available synthesis power. On arcade platforms it’s much harder to justify streaming so Naomi games tend to let the AICA really come out and play. So what all this is leading up to is that Warashi has posted an OST MP3 from their gorgeous new Naomi shmup Trigger Heart Execelica. You can have a listen right here (http://www.warashi.co.jp/exelica/exelica_stage_1.mp3) and think about what might have been. (Even if you don’t like the actual musical style, which is distinctly 80s synthpoppy, just listen to the quality of the instruments). 18th February 2005: Guru - A couple is dis-used NAOMI games including 'Sega Marine Fishing' and 'Guilty Gear XX' carts arrived from Japan. 10th September 2004: Guru - Finally got Mobile Suit Gundam Federation VS Zeon (Capcom 2001), Mobile Suit Gundam Federation VS Jion DX (Capcom 2001), Initial-D Arcade Stage (Sega 2002), Virtua Striker 3 (Sega 2001) and Virtua Fighter 4 (Sega 2001) from Japan. Thanks to MAMEWorld donations and several anonymous (private/direct) donations. 25th March 2004: Guru - Dead Or Alive 2 Millenium (Tecmo 2000, Sega NAOMI cart) and World Kicks (Namco 2001, Sega NAOMI cart) arrived from Brian Troha. 3rd November 2003: Guru - Su-Chi-Pai3 (Jaleco 1999, Sega NAOMI ROM cart) arrived with the donation of several people and MAMEWorld. 20th June 2003: Guru - Sega NAOMI GDROM system including Street Fighter Zero3 Upper, Sports Jam and Virtua Golf arrived. Huge thanks to Narendra Verma for the main system donation, additional parts from Gin, Smitdogg and jmurjr and the software titles via donations from MAMEWorld. 2nd September 2003: Guru - Spawn (Capcom 2000, NAOMI cart) arrived from Pelle. 11th August 2003: Guru - A Slash Out GDRom version arrived. I've been fairly busy over the past week so didn't get chance to update here. However, this stuff arrived just recently thanks to Mameworld contributions. Also picked up a Dreamcast Broadband Adapter. So hopefully there will be some NAOMI GD-ROM dumps coming soon. 11th August 2003: Guru - Capcom vs SNK: Millenium Fight 2000 Pro arrived. I've been fairly busy over the past week so didn't get chance to update here. However, this stuff arrived just recently thanks to Mameworld contributions. 11th August 2003: Guru - Power Stone 2 arrived. I've been fairly busy over the past week so didn't get chance to update here. However, this stuff arrived just recently thanks to Mameworld contributions. 20th July 2003: Guru - Received All Japan Pro Wrestle 2 (Sega 1999). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 20th July 2003: Guru - Received Cosmic Smash (Sega 2000). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 20th July 2003: Guru - Received Derby Owners Club (Sega 1999). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 20th July 2003: Guru - Received Giant Gram 2000 (Sega 2000). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 20th July 2003: Guru - Received Giga Wing 2 (Capcom 2000). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 20th July 2003: Guru - Received Heavy Metal (Capcom 2001). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 20th July 2003: Guru - Received Out Trigger (Sega 1999). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 20th July 2003: Guru - Received Rival Schools 2 (Capcom 2000). Big thanks to Leonid81, Bob Schultz, jmurjr, Smitdogg, f205v, Kevin Eshbach and many MAMEWorld contributors. 5th July 2003: Guru - Just picked up a cheap Dreamcast bundle, which will be hopefully used to dump NAOMI GDROMs. 20th June 2003: Guru - Sega NAOMI GDROM system including Street Fighter Zero3 Upper, Sports Jam and Virtua Golf arrived. Thanks to Narendra Verma for the main system donation, additional parts from Gin, Smitdogg and jmurjr and the software titles via donations from MAMEWorld. And Outtrigger (Sega 1999, NAOMI cart) arrived from Taucher. 20th March 2003: Guru - Zombie Revenge (Sega 1999), Slash Out (Sega 2000), Capcom vs SNK - Millenium Fight 2000 (Capcom/SNK 2000), Samba de Amigo (Sega 1999), New Japan Pro Wrestling Toukon Retsuden 4 (Namco 2000) and Virtua Striker 2000 (Sega 1999) arrived from Japan. We still need a NAOMI mainboard and GDROM unit for hardware analysis. NAOMI carts can have a maximum capacity of 3.2GBits = 400 MB. 28th January 2003: Guru - Arrived and dumped Power Stone (Capcom 1999, Sega NAOMI cart). Thanks to Thierry Lescot. PGM System 18th March 2006: Guru - Spectral vs Generation arrived late yesterday from Japan. 25th February 2005: Guru - Photo Y2K2 (IGS cart) arrived, purchased by Randy from a PCB Shop. Thanks to the donators for keeping up the support. 27th April 2004: Guru - Received Chuugoku Ryu 3 SP PGM cart from Randy, Gin, Smitdogg and many Mameworld donators. Taito GNET 22nd February 2005: Guru - Taito GNET carts (XII-Stag, Night Raid, Super Puzzle Bobble, Ray Crisis and Psyvariar Revision) just arrived. 10th September 2004: Guru - Finally got Usagi (Warashi 2001), Mahjong Oh (Warashi 1999), XII-Stag (Triangle Service 2002), Zoku Otenami Haiken (Success 2000) and Chaos Heat (Taito 1998) from Japan. Thanks to MAMEWorld donations and several anonymous (private/direct) donations. 27th April 2004: Guru - Received Go By RC! (english version of RC De Go, Taito 1999, Taito GNET) from Poweremu. 15th January 2004: Guru - Souten-Ryu game cart (Taito 2000, GNET) arrived from Japan. 3rd November 2003: Guru - Nightraid (Takumi 2001, Taito GNET cart) and Psyvair Medium Unit (Success 2000, Taito GNET cart) arrived with the donation of several people and MAMEWorld. 21st February 2003: Guru - Rc De Go! GNET cart (Taito 1999) arrived. Special thanks to Gin (our Japanese contact) for making it all happen again. The dumping project wishes to thank all the people who donated towards this particular raid, including Gin, slaanesh, gnoppi, Louis T., wtc4ever, Renaud D., phys32, R. Belmont, fiji, Amnios and an anonymous donator. Tour Vision 4th March 2005: Guru - Tour Vision PCB and two carts (Final Match Tennis and Formation Soccer (Human 1990)) arrived. Thanks to the good boys at the Italian MAME Forum. 1st August 2004: Guru - Well, the cart I mentioned 2 days ago isn't directly dumpable. The top of the cart called Final Match Tennis, and runs on a systems called Tour Vision. After removing the the bottom cover, there was blue resin. My trusty heatgun crumbles it like brittle toffee when heated. Removing the top white plastic cover reveals another plastic cover which seems to say on it 'HUCARD' and some Japanese text. Removing the 'HUCARD" cover and the rest of the blue resin reveals the truth. I've also removed the black resin from one of the IC's. It can be clearly seen that there are 2 embedded chips mounted here. What they are I can't say, they may be simple EPROMs, or something more complex such as a microcontroller with internal code, or even both EPROM and MCU. After discussing this with someone, it seems like it could be dumped from the edge connector (without the need to open it up) with some simple main board tracing (the connector isn't directly compatible so tracing is required to make an adapter), because it appears to be very similar to a TG-16 HuCard cart. Of course, I couldn't say that until after I opened up the epoxy block and discovered what was inside. And now that's not possible since this cart is no longer working. Either way, this thing can't be dumped. But if I got hold of another cart and the main board, it could get very interesting, now that we know what is inside is just a modified HuCard. 30th July 2004: Guru - A strange epoxy-encased cart called Final Match Tennis arrived from ClawGrip. Viper System 11th March 2006: Guru - I just picked up lots of juicy stuff from my local post office like a bunch of Viper games: Boxing Mania (Konami, 2001, Viper h/w), Mocap Boxing (Konami, 2001, Viper h/w), Mocap Golf (Konami, 2002, Viper h/w), Tsurugi : The Sword (Konami, 2001, Viper h/w) and Xtrial Racing (Konami, 2002, Viper h/w). Thanks to Bobaruni. UNMAMEd WIP (http://unmamed.mame.net/): - 25th April 2006: UnMAMED - Updates pointed out at the MAME board... :) Removed (Shanghai) The Great Wall, BMC Bowling, Mahjong (The) Daichuukaken, Real Battle Mahjong King, Ghoul Panic, Little Casino, Radiant Silvergun, V-Liner. Moved to NOT WORKING: Match It II, Fighter's Impact. Also updated the Firefox LD page. - 22nd April 2006: UnMAMED - Updated for MAME 0.105u2. Removed Dragon World, Backfire!, Skull Fang, Thunder Hoop, X-Files, Meijinsen, Lazarian, Cat and Mouse, Crowns Golf in Hawaii, Hidden Catch, Fortress 2 Blue Arcade, Lord of Gun, Lost Castle in Darkmist, Fred Flintstone's Memory Match, Golgo 13, Trivial Pursuit Spanish, Canvas Croquis, Parallel Turn, Champion Baseball II, Shougi, Shougi 2, Talbot, Ninja Kazan, Joshi Volleyball, Fighter's History, Suzuka 8 Hours, Steep Slope Sliders, Zeroize, Mahjong Lucky Mangan, Pro Bowling Championship. Added to NOT WORKING: Poizone, Galaxia, Huang Fei Hong, Hang Pilot, Search for the Magical Error, Final Furlong 2, Gekitoride-Jong Space, Mr. Driller G, Kotoba no Puzzle Mojipittan, Star Trigon, Mahjong G-Taste, Taisen Hot Gimmick Integral, Taisen Hot Gimmick 4 Ever, Gamshara, Solar Assault, Stepping Stage, Tobe! Polystars, Battle Tryst, Heat of Eleven '98, Evil Night, Sega Rally 2 DX, Total Vice, Sega Ski Super G, Over Rev, Sliver, Puck People. Updated/changed Bouncer, Super League, Atomic Punk 2, Gunbarl, Double Wings, F1 Super Battle, Treasure Island, Fantasy Zone II, Opa Opa, Senryaku Bopeep, Altair, Western Gun 2, Lock-On, Buggy Boy, TX-1. Added Alien Challenge, The Untouchable, Cross Fire, Survivor, Escort, Gappolin, Purple Magic, Donkey King. Updated Dumping Project donation information. Removed Phil Bennett's page, updated Andrew Gardner's page. - 16th January 2006: UnMAMED - Updated for MAME 0.103u2. Removed Laser Battle, Alpine Racer 2, Dark Edge, Jockey Grand Prix, Gradius 4, See See Find Out, D-Day, NBA Play By Play, Flame Gunner, Paca Paca Passion, Quiz, Crouching Tiger Hidden Dragon 2003, Vs Hot Smash, Noah's Ark, Top Roller, Squash, Night Slashers, Heavy Smash, Avengers in Galactic Storm, Shuttle Invader, Thunder Strike, Hoops/Dunk Dream, Rock'n Tread 1-4 and Megasession, Arm Champs II, Virtua Bowling. Added to NOT WORKING: NFL Football, Cat'N Mouse, Magic's 10 2, Get Bass, Scud Race Plus, Alpine Surfer, Area 51 Site 4, Psychic Force 2012, Drawfs Den, Trivia Quest, Wheels & Fire, Daytona USA 2, Fred Flinstone's Memory Match, Fighting Vipers 2, Tang Tang, Spectrum 2000, Spikeout, Spikeout Final Edition, Fortress 2 Blue Arcade, Emergency Call Ambulance, Knights of Valour 2, Ghoul Panic, Little Robin, Real Battle Mahjong King, Martial Masters, Demon Front, Canvas Croquis, Go 2000, Gekisou, Critter Crusher, Card Line, Mirax, Last Fighting, Crystal Maze, Turnover, Skill Trek, Mating Game, Lazarian. Added a picture of Nightmare. Ping Pong Car was listed as a non-working game in the whatsnew file of 0.101u5, but it seems to have disappeared? - 26th September 2005: UnMAMED - Updated for MAME 0.100u2. Removed Champion Skill, Pontoon, Golden Star, Zeroize, Tetris (Sys E), Taisen Tanto-R, First Funky Fighter, Jolly Jogger, Indian Battle, Long Hu Bang, Chuugokuryuu, Champion List II, Xing Yen Man Guan, Maru-Chan de Goo, Sando-R, Soukyugurentai / Terra Diver, Suikoenbu, World Trophy Soccer, Funky Head Boxers (broken?), Pebble Beach, Air Rescue, Monsters World, Quiz Syukudai, Rough Racer, Final Lap R, Speed Racer, Dragonball Z VRVS, Twin Squash, Cool Minigame, Golden Axe the Duel, Super Major League. Added to NOT WORKING: Roulette, Bubble Trouble, American Poker II, Cherry Master II, Lucky 8 Lines, Starspinner, 906II Video Poker, Jackpot Pool, Forte Card, Rebus, Top Shooter, NBA Play By Play, Super Nudger II, Trail Blazer, Quizmaster, Thunder Hurricane. - 12th August 2005: UnMAMED - Updated for MAME 0.99u1. Removed Born to Fight, Lethal Enforcers, Slipstream, Eagle Shot Golf, Mobile Suit Gundam Final Shooting, Trivia Whiz, Tic Tac Trivia, Phrase Craze, Top Gunner, Joe & Mac Returns, Party Time, Ganbare Gonta 2, Double Cheese, Chain Reaction, Magical Drop, Osman, Cannon Dancer, Charlie Ninja. Removed some other games I had missed - Super Strike Bowling, Great Ragtime Show, Great Gurianos. Added to NOT WORKING: Lemans 24, Wink. Added SMF's Blog to the links. Moved Anno Domini 2084 to Alternate ROMsets section. - 20th June 2005: UnMAMED - Updated for MAME 0.97u1. Removed Cool Pool, 9 Ball Shootout, Hyper Crash, Atomic Punk, Cosmic Monsters 2, AmeriDarts, N-Sub, Hana Kanzashi. Added to NOT WORKING: Revenger, Mobile Suit Gundam Final Shooting, Cyber Tank, Lost Castle in Darkmist, Malzak 2, Driver's Eyes, Winning Run. Updated Lock-On, Lazarian. Added Big Fight, UMK3 Wavenet and Rush The Rock Wavenet. Updated URLs: Mamedev.com and Luca Elia's page. - 8th May 2005: UnMAMED - Updated for MAME 0.96u1. Removed Crackdown, Idol Janshi Su-Chi-Pie, Mahjong Channel Zoom In, Mahjong Kakumei 1/2, Photo Y2K, Demons and Dungeons, Ghost Hunter, Tut's Tomb, Pachinko Gindama Shoubu / DX, Shrike Avenger, GP Rider, Line of Fire, Buccaneer, Calorie Kun vs Moguranian, Gain Ground, Tecmo World Cup Millenium, Pocket Gal Deluxe, Batman Forever, Flying Tiger, Hacha Mecha Fighter, Diet Go Go, X The Ball, Boogie Wings, Rohga Armor Force, Schmeiser Robo, Pro Mahjong Kiwame S, Mahjong Block Jongbou, Space Position, Gardia, Megaplay: Sonic 2, Biohazard Battle. Added to NOT WORKING: TX-1, Buggy Boy, Panic Road, Hoops 96, Dunk Dream 95, N-Sub, Rough Racer, Lock-On, Comad World Beach Ball Championship 1997, Monster World, Peno Cup, Dream World.[08 May '05] Update part two! Removed Comad World Beach Championship 1997, Mission Craft, Plasma Sword, Hana Oriduru, Dyno Bop, Alpha Mission, (XESS) 3 in 1, 4 in 1, Winter Heat, Guardian Force, (Karaoke Quiz) Intro Don Don, Raccoon World. Updated Yukiwo, Atomic Punk, Astra Superstars, Steep Slope Sliders, Elan Doree, Hidden Catch, X-Files, Ultra Dome, Heavy Unit, Master Boy, Buggy Boy. Also updated the URLs to Dox's WIP and Arcade Flyer Archive and added Atari's Quiz Show and Sega's Tic Tac Quiz. - 6th March 2005: UnMAMED - Updated for MAME 0.94. Removed Galaxy Force 2, Power Drift, Strike Fighter, Rail Chase, G-Loc, Puzz Loop 2, Raiden Fighters, Raiden Fighters 2, Raiden Fighters Jet, Viper Phase 1, Rage of the Dragons, KOF2002, Land Breaker, Point Blank 2, Space Guerilla, UFO Senshi Yohko Chan, Senkyu / Battle Balls, E-Jan High School, Tenth Degree, Snow Bros 3, Super Lup Lup Puzzle, Space Ranger, Sporttime Table Hockey, Sukeban Janshi Ryuuko, Super Monaco GP, AB Cop. Added to NOT WORKING: Eleven Beat, Cart Fury, Monza GP, Magical Tetris Challenge, NBA Showtime, Road Burners, San Francisco Rush 2049, War Final Assault, Tarzan, See See Find Out, Kick Boy, Dacholer, Time Crisis 2, Moonquake, Turbo Sub, V-Liner, Jockey Grand Prix, The Couples, Tut's Tomb, Ghost Hunter, Wild Arrow, Ping Pong King, Gunpey, Dambusters, Trivia Challenge, Laser Base/Future Flash, Kyuukyoku no Othello. Added Nicola's Blog and removed System 16/32 WIP links. Removed the Final Burn emulator as it has been MAMEizized. Updated the "most wanted" links a bit, but newer entries still haven't been added. Updated Parasol Stars, Eeek, and Daytona USA. Added Cutey Fatty and Tap a Tune. And added Boon-Ga Boon-Ga, because people seem to keep bringing it up all the time! - 9th January 2005: UnMAMED - Updated for MAME 0.90u1. Removed MVP, Where's Wally, Ryu Kyu, Bloxeed, Laser Ghost, Desert Breaker, Flying Ball, SportTime Bowling, Leaderboard Golf, Ninja Mission, Road Wars, Turbo Out Run, Racing Hero, Thunder Blade, Progear no Arashi, World Darts, Xenon, Sea Bass Fishing, Dunk Shot, Action Fighter, Kabuki Z. Removed Marlbobo version of Super Monaco GP, Rougien. Added to NOT WORKING: GP Rider, Bullet, Super Monaco GP, AB Cop, Super Real Mahjong Part 6, SportTime Table Hockey, Sidewinder, Space Ranger, Hyper Crash, Buccaneers, Jackie Chan Fists of Fire, Dead Eye, Harley Davidson, Lost World, Scud Race, Sega Rally 2, Star Wars Trilogy, Virtua Fighter 3, Virtua Striker 2/98/99, Virtual On 2, Sega Bass Fishing, Daytona USA 2, Dirt Devils. Updated Congorilla, Super Masters Golf, Line of Fire. - 12 November 2004: UnMAMED - Updated for MAME 0.88u4. Removed F1 Grand Prix Star II, Sonic Boom, Field Combat, Gallop Racer 3, Tank 8, QB3, Fix Eight, Title Fight, Raiders, Whiz Quiz, Vamp 1/2, Bonk's Adventure / BC Kid, Professor Pac-Man, BC Story, Clutch Hitter, DD Crew, Yachtsman, Woodpecker, Cotton, Astro Chase, Bristles, Flip and Flop, Boulder Dash. Also removed SF High Splitter and Twin Cobra 2 because I missed 'em. Added to NOT WORKING: Super GX, Skelagon, Virtua Formula, Funny Strip, Ping Pong Masters '93, Twin Brats, Oriental Legend Super, Beat the Champ, Dynamite Deka 2, Apache 3, Round Up 5, Cycle Warriors, Behind Enemy Lines, Daytona USA, Desert Tank, Dead or Alive, Dynamite Baseball '97, Dynamite Cop, Fighting Vipers, Gunblade NY, House of the Dead, Indianapolis 500, Last Bronx, Manx TT Superbike, Pilot Kids, Sonic Championship, Super GT 24h, Sky Target, Sega Rally Championship, Sega Touring Car Championship, Top Skater, Virtua Cop, Virtua Cop 2, Virtua Fighter 2, Virtual On Cybertroopers, Virtua Striker, Zero Gunner, Alien Command, Schmeiser Robo, Paint & Puzzle, Twin Squash, Super Lup Lup Puzzle, Raiden Fighters Jet, Born to Fight, Strike Fighter, Rail Chase, Power Drift, G-LOC Air Battle, Galaxy Force 2. Cleaned up some old links. - 4th September 2004: UnMAMED - Updated for MAME 0.86u3. Removed Namco Classics Collection 2. Added Road's Edge / Round Trip, Samurai Showdown Warrior's Rage, Fatal Fury Wild Ambition. - 28th August 2004: UnMAMED - Updated for MAME 0.86u1. Removed Drakton, Alpine Racer, Cyber Cycles, Rave Racer, Ridge Racer, Ridge Racer 2. Removed VivaNonno section. Added Super Crown Golf and Diamond Derby to NON-WORKING games. - 25th August 2004: UnMAMED - Updated for MAME 0.86. Removed Knightmare, Return of Lady Frog, Virtua Fighter, Rabbit, Mayjinsen 2, Zupapa, Sengoku 3, Vasara 2, Gunbarich, Hangman, Psychic Force EX, Counter Run, Dunk Mania, Portraits, Hyperdrive, Field Goal, Robo Wres, Simpsons Bowling. Added to NON-WORKING GAMES: Party Time Gonta the Diver 2 / Ganbare Gonta 2, Phrase Craze, Tic Tac Trivia, Trivia Whiz, Trivia Whix II, Harem, Virtual Bowling, Champion List II, Long Hu Bang, Xing Yen Man Guan, Chuugokuryuu, Puzzle Star, Mortal Kombat 4, Invasion, Crusin Exotica, The Grid, Conquer, Idol Jahshi Su-Chi-Pi Special, The Killing Blade, Squash, Thunder Hoop, Pocket Gal Deluxe, Diet Go Go, Double Wings, Boogie Wings, Osman, Chain Reaction / Magical Drop / Magical Drop Plus, Charlie Ninja, Joe & Mac Returns, Heavy Smash, World Cup Volley 95, Backfire, BMC Bowling, Meijinsen, Mahjong Block Jongbou, Gals Panic 3, Tatakae Big Fighter, Cool Mini, Cool Riders, Gradius 4, GTI Club, Midnight Run, Pit Boss, Racing Jam, Racing Jam Chapter 2, Silent Scope, Silent Scope 2, Thrill Drive, Winding Heat. Updated Crazy Otto, NBA Jam Extreme, BC Story, Gallop Racer 3, Schmeiser Robo. - 26th June 2004: UnMAMED - Updated for MAME 0.83. Removed Shanghai The Great Wall, Victorious Nine, San Francisco Rush, Vapor TRX, Tondemo Crisis, Tetris the Grand Master, Battle Area Toshinden 2, Sonic Wings Limited, Street Fighter EX+, Street Fighter EX 2+, Dead or Alive++, Kikaioh / Tech Romancer, Star Gladiator 2, Magical Date EX, Psychic Force, G Darius, G Darius ver2. Added to NOT WORKING - Pachinko Gindama Shoubu / DX, Pinball Champ '95, GP500. Updated Holey Moley, Speed Racer, Max-a-Flex games (Exidy page), Charlie Ninja, Judge Dredd, NBA Jam Extreme. Removed "Knightmare" and "Antarctic Adventure" as they appear to simply be MSX games by Konami. Removed "Missionary" as it sounded a lot like Congo Bongo and there's no mention of it anywhere else on the web. Added Knightmare (Gottlieb prototype) and Party Time. - 12th May 2004: UnMAMED - Updated for MAME 0.82. Removed Star Gladiator, Street Fighter EX, Street Fighter EX 2, Dyna Gears, Super World Stadium, Time Crisis, Strider 2, Twin Eagle II, Megaplay Sonic / Tecmo World Cup, Golden Axe 2, Neratte Chu, Renju Kizoku, Brave Blade, Ray Storm, Pirate Treasure, Ghostlop, Super Rider, Groove on Fight, Othello Shiyouyo, Danchi de Hanafuda. Added to NON-WORKING section: Landing Gear, Side By Side 1/2, Densha de Go 1/1ex/2/2ex, Lord of Gun, Vapor TRX, San Francisco Rush: The Rock, Super Real Mahjong P5, Super Eagle Shot, Mayjinsen 1/2, Kisekae Hanafuda, Kisekae Mahjong, Hyperdrive, Seimei Kentei Meimei Ki Cult Name, Yu-Jan, Yu-Ka, Speed Racer, Final Lap R, Mission Craft, Racing Beat. - 4th April 2004: UnMAMED - Updated for MAME 0.81u3. Removed Cool Boarders Arcade Jam, Rival Schools, MTV Rock n Roll Trivia, Gallop Racer, Beastorizer. Added Swinging Singles, Taiwan Chess Legend, Parallel Turn, Change Lanes, Dragon World 3, Zero Target, Counter Steer, Senkyu / Battle Balls, Viper Phase 1, E-Jan High School, Raiden Fighters, Raiden Fighters 2, D-Day, Where's Wally?, Simpsons Bowling, Red Earth / Warzard, Street Fighter 3, Virtua Fighter, Virtua Racing, Star Wars Arcade, Wing War, Raiden DX, (New) Zero Team to NOT WORKING section. - 12th March 2004: UnMAMED - Updated for MAME 0.80u1. Added Air Rescue, Buriki One, Lethal Enforcers to NOT WORKING. Removed Radikal Bikers, Surf Planet, and Zintrick. Added Mahjong Daichuukaken, Mahjong Reach, Mahjong Lucky Mangan, and Mahjong Dragon Challenge Tiger II. - 2nd March 2004: UnMAMED - Updated for MAME 0.79u4. Removed Quasar, Botanic, Bongo, Pro Yakyuu Tryout, Mad Alien, Quiz 365. Added to Non-Working section: Radikal Bikers, Speed Up, Surf Planet, Battle of the Solar System, F-15 Strike Eagle, Super Tank Attack. Added Ms. Pac-Man Twin. Updated Bouncer pictures. Removed System 24 WIP page, added Model 3 WIP and Norbert's pages. - 18th February 2004: UnMAMED - Updated for MAME 0.79u1. Removed Driver's Edge, Varia Metal, Mahjong Electron Base, Space Launcher, and moved Double Cheese and Talbot to the NOT WORKING section. - 1st February 2004: UnMAMED - Updated for MAME 0.79. Removed Competition Golf, Space Thunderbird, Hard Head 2, Scramble Spirits, Winning Spike, Whizz, More More Plus, Vs Tennis Japan, Digger, Video Moon Tracker, Video Moon Raker. Added to NON-WORKING section: Varia Metal, Denjin Makai, Super Hang On Limited Edition, Plasma Sword. Moved DoDonPachi II, Knights of Valour 2 Plus, and Progear no Arashi from NOT WORKING to REMOVED section. Updated Winning Run '91, Super Tank Attack, Line of Fire. Added "helpful donation reminder" to the front page so that we all remember to support purchases of new games and hardware to dump the ROMs. - 4th January 2004: UnMAMED - Updated for MAME 0.78u1. Removed Princess Clara Daisakusen, Wild Pilot, Target Balls, International Cup '94. Added Stadium Hero '96 and Skull Fang to NOT WORKING section. - 27th December 2003: UnMAMED - Updated for MAME 0.78. Removed Bonanza Bros, Quiz Rouka, Dynamic Country Club, BioFreaks, California Speed, Tekken 3, Ehrgeiz, Fighting Layer, Mr Driller, Aquarush, Ashita no Joe, Borderline. Added to Non-Working section: Scramble Spirits, Super Masters Golf, Quiz Syukudai, Gain Ground, Crackdown, Mr Driller 2, Star Gladiator, Primal Rage 2, NBA Jam Extreme, Judge Dredd, Target Ball. - 14th December 2003: UnMAMED - Updated for MAME 0.77u3. Removed Hot Rod and Monkey Mole Panic. Added Malzak and Ashita no Joe to Non-Working section. Also removed Dump Matsumoto, Dynamite Dux, E-Swat, Flash Point, Passing Shot, Quartet, Quartet 2, Shinobi, Time Scanner, Toryumon, Tough Turf, Wonder Boy 3, and Wrestle War because at least one version of each generally works. Updated Speed Racer. Moved Badlands to Daphne section. Removed Thunder Ceptor II link and updated Mach 3 link, which now includes work on Firefox. - 2nd December 2003: UnMAMED - Updated for MAME 0.77u2. Removed NFL Blitz, Thunder Ceptor, Hatch Catch, Cookie and Bibi 2, Quiz Panicuru Fantasy, Rock'n Tread, Mahjong Angel Kiss. Added Rabbit, Tokimeki Mahjong Paradise, BioFreaks, Jackie Chan, and BC Story to Not Working, and arranged the MegaTech Games. Renamed Schmeiser Robo. Updated Bongo, Drakton, Cross Blades, and Borderline. Moved Submarine to no-CPU page. - 24th November 2003: UnMAMED - Updated for MAME 0.77. Removed Wayne Gretzky 3D Hockey, Dangerous Dungeons, T-Mek, Guardians of the Hood. Added/moved to non-working games in MAME - Godzilla, Bonk's Adventure, Seibu Cup Soccer, SF Rush, California Speed, Sport Fishing 2, Tekken 3, Soul Calibur, Ehrgeiz, Derby Quiz My Dream Horse, Fighting Layer, Paca Paca Passion, Super World Stadium 99, Tekken Tag Tournament, Mr Driller, Aqua Rush, and Golgo 13. On a side note, this is the first update from my new computer. I finally got it working! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ M A M E W O R K - I N - P R O G R E S S NOTE: The following news are not listed in the Mameinfo.dat MAME CORE: - 0.105u5 : Atari Ace and Aaron Giles xxtended the gfxlayout structure to support "extended" arrays of x and y offsets. These are used for layouts that are larger than 32x32. This enables the standard structure to be smaller for the vast majority of games that don't require huge graphics decodes. The end result is that the MAME .exe is ~3MB smaller. Improvements to the x86 drc engine and the Windows blitters [???]: Blitter CPUID features now accessed by drc_x86_get_features() call. Added win_blit_init(), to initialize the blitter. Changes to DRC to support usage for things other than CPU cores. Fixed drc_dasm() so it works once again. Added macros for a number of MMX/SSE instructions. Added a number of MMX/SSE instructions to the i386 disassembler. - 0.105u4 : Nathan Woods added a NULL check on memory_set_bankptr(), memory_configure_bank() and memory_configure_bank_decrypted(). Aaron Giles added a new tool jedutil, which will convert .JED files to binary form and back again. Added new ROM region REGION_PLDS, which is designed to hold binary dumps of PLD fusemaps (produced from .JED files by jedutil). Added logic to -romident to automatically parse .JED files to identify them against these binary dumps. Added PLD dumps to the Vindicators, Batman, Pit Fighter, ThunderJaws and Relief Pitcher drivers. More to come shortly. Converted PLDs for catnmous and lazarian to the new binary format. - 0.105u3 : Atari Ace fixed some remaining errors and inconsistencies in the content and usage of MAME header files by comparing declarations against actual definitions. Removed many orphaned/duplicate declarations. Added #includes where appropriate, and moved a few declarations to another file when they were in the wrong location. Aaron Giles removed a number of unused ROM regions. Most (but not all) of the empty ROM region warnings are now taken care of. - 0.105u2 : Made "This game doesn't work" text more explicit [Olivier Galibert]. - 0.105u1 : Aaron Giles changed automatic ROM assignment logic in the memory system so that it doesn't auto-assign out-of-bounds ROM regions. Aaron also changed -romident option so that it returns errorlevels based on how many ROMs were identified (0=all files identified, 1=all files except some non-ROM files identified, 2=some files identified, 3=no files identified). Atari Ace cleaned up the usage of includes/*.h files across the project, by ensuring that: 1. All includes/foo.h files are annotated with comments describing the source of the declarations. 2. Each source file so annotated also explicitly does an #include "includes/foo.h" to ensure consistent definitions. Along the way a number of inconsistent, irrelevant and incomplete declarations were removed/cleaned up. - 0.104u9 : Nathan Woods cleaned up error logging so that it is callback driven, allowing more than one potential output source. Fixed the -oslog option in the Windows build. - 0.104u8 : Andre Hufschmidt Improved the "out of context" error message to indicate the source of the problem. Aaron Giles moved logerror handling into the core. OSD ports should set options.logfile to a mame_file handle for the output file. - 0.104u7 : Wilbert Pol fixed window resizing bug when running in a window. Nathan Woods fixed crash when calling fatalerror before the system was ready for it. Aaron Giles moved read/write handlers for input ports, watchdog and interrupt enable out of the core and into machine/generic.c. Moved generic palette hanlders out of the core and into vidhrdw/generic.c. Clarified the names of many of the palette handlers and simplified the code. - 0.104u6 : Aaron Giles, Nathan Woods and Ville Linde fixed various problems introduced in the last set of changes. Atari Ace and Aaron Giles reduced global namespace pollution by marking many global functions explicitly static, especially in the CPU cores. - 0.104u5 : Nathan Woods added support for zero-length palettes (requires RGB direct mode). Aaron Giles rewrote winalloc to be more dynamic and to ignore memory leaks in the runtime. - 0.104u4 : Nathan Woods added "wb+" disposition to osd_tool_fopen. Lawrence Gold fixed a couple of small memory leaks and a crash bug found by Valgrind. Nathan Woods added sanity checking to the set_visible_area() call to ensure it is not set larger than the screen bitmap. More core file shuffling [Aaron Giles]: Split sndintrf.c into sound.c, sndintrf.c, and sndhrdw/generic.c and added #include vidhrdw/generic.h to mamecore.h, and removed all explicit includes elsewhere. - 0.104u3 : Aaron Giles reorganized the core initialization/exit sequencing to be "flatter" and more straightforward to understand. System cleanup is now no longer explicitly called by the code in mame.c. Rather, each init function is free to register an exit handler, which will be called in reverse order of registration upon a system exit. Removed default registrations from config_init() into the init functions of the associated modules. Now each system that has config data can register its own callbacks to process it. Aaron also refactored/renamed/removed/added several core files: Renamed driver.c to mamedriv.c, created a new driver.c containing functions defined in driver.h, split common.c into video.c and machine/generic.c, moved a number of mame.c functions to video.c. Renamed MACHINE_INIT to MACHINE_RESET to normalize the naming of the callbacks defined in the MACHINE_DRIVER structure. Added several new callbacks. The complete list is now: DRIVER_INIT -- per-game init called once at startup, MACHINE_START/SOUND_START/VIDEO_START -- called once at startup and MACHINE_RESET/SOUND_RESET/VIDEO_RESET -- called each reset. Save state registrations should be performed in DRIVER_INIT or (preferably) in the _START callbacks; they should be avoided in the _RESET callbacks if possible. Removed VIDEO_DUAL_MONITOR flag. smf replaced -high_priority with -priority, you can now specify from -15 to 1. The default is -15 as this makes Dell laptop keyboards work. It still won't raise the priority if running with the debugger, but it will lower it. Fixed a subtle bug at the same time as -high_priority was only working when you used rdtsc. - 16th February 2006: Aaron Giles - Every once in a while, you make a small change to the code, and then realize that you really should make a related change to keep things clean. Often, that second change cascades into a third, and a fourth, and then eventually you’re making another big core change that everyone loves. All you can do at that point is keep going and hope you can put all the pieces back together again. Thus begins my story of Dr. Frankenstein’s Latest Creation, or How I Ripped Apart the Core and Put it Back Together Again. The change in question this week was making some sense of the ordering of initialization in mame.c. If you look at the code now (before any changes), it’s pretty confusing. I even have a giant comment at the top of mame.c trying to explain all the steps and subsystems that are initialized and in what order. It’s pretty nuts. And it doesn’t have to be that complicated. So I flattened it all out. Now there is one init_machine() function which calls all the other init functions. Along the way, I documented why certain subsystems need to be initialized before other subsystems. Then I looked at the exiting code with the thought of simplifying that as well. - 0.104u2 : Aaron Giles deprecated the use of multimon.h in the Windows build, which is only necessary for producing Windows 95 and NT 4.0 compatible binaries. Windows 98 is now the minimum version of Windows supported for MAME. He also made a few minor tweaks to the Windows sources to support the latest build tools. See http://mamedev.org/tools if your tools are out of date. Aaron Giles split out ROM management from common.c and moved to a new file romload.c. Aaron Giles cleaned up structs/unions in the debugger and Windows code to match the new core conventions. Atari Ace made declarations and variables in a number of drivers static and const to reduce global namespace pollution. Fixed a number of multiply-defined global variables. - 0.104 : Aaron Giles ensured that all core and windows files have some indication of copyright on them. - 0.103u5 : Aaron Giles separated the allocation of graphics data from the decoding. This fixes the crashes that were introduced in u4, and will allow for decoding progress to be reported eventually. Aaron also made a clean-up pass over all the makefiles. rules.mak is gone now, replaced by cpu.mak and sound.mak. mame.mak has been reorganized. All the makefiles are now commented and should be easier to follow. Atari Ace improved auto_malloc so it uses less memory and doesn't have a hard-coded limit on the maximum number of allocations. Also audited the use of auto_malloc in the code and removed unnecessary checks for NULL (since auto_malloc doesn't return if it fails). - 0.103u4 : Atari Ace removed a number of unnecessary video_stop and machine_stop routines. Aaron Giles added assert macro to mamecore.h. - 0.103u3 : Nathan Woods added memory_install_* calls that are not specific to specific bus widths (only for static handlers, not for function pointers). - 0.103u2 : Sync Refresh / Waitvsync / Triplebuffer changes [Alan Kamrowski II]: * It changes the waitvsync code to wait for the beginning of the vertical blank. The previous code simply checked if it was in the vblank and only waited if it wasn't. This caused 2 problems. The first is that when using syncrefresh, if there was enough time, more than one frame can be rendered during a single vblank. This is why syncrefresh would have odd behavior such as the game speeding up or slowing during during less cpu intensive sequences. The second problem is that the retrace line could sometimes be seen because while the code checked to see if it was in the vblank, it did not check where in the vblank it was so it might be at the end of the vblank and by time the frame is rendered the monitor could be out of the vblank. * It removes the waitvsync only if game speed is above 95% restriction. This restriction would only cause waitvsync to vacillate between on and off depending on game speed. If someone enables waitvsync and it is too slow, then it is. * When syncrefresh and triplebuffer are used, MAME would run the waitvsync code anyway. The triplebuffer code takes care of this and having MAME wait for the retrace in the waitvsync code anyway is a waste of time and causes timing issues on some hardware. If triplebuffering is enabled, then there is no need to run the waitvsync code because triplebuffer already does. - 0.102u4 : William Krick cleaned up and standardized usage of M_PI constants (3.1415) in the code. - 0.102u3 : Brian Troha updated driver.c with more consistent and updated info. - 0.102u1 : Aaron Giles added new inline math functions to mamecore.h, along with mechanisms for the OSD layer to override them with platform-specific variants: count_leading_zeros, count_leading_ones, and fixed_mul_shift. Updated the TMS32031 core to make use of the first two. Aaron also changed the Windows blitters to use an array allocated by osd_alloc_executable() to prevent potential access violations on systems with no-execute support. Nathan Woods fixed compilation issue for MSVC when using the winalloc code and fixed output of mame.ini options that have spaces in them. - 0.102 : Aaron Giles removed ROMREGION_SOUNDONLY. Since -nosound no longer disables sound CPUs or sound cores (and hasn't for a while), failing to load sound ROMs was only leading to crashes. He also marked most gfx_layout and gfx_decode structures in the code as const. - 0.101u5 : Atari Ace marked several large arrays properly as const (see machine\fd1089.c). Aaron Giles changed the AM_REGION() macro to store region/offset information instead of a pointer to simplify some of the region valdation code. - 0.101u3 : Nathan Woods added check and failure for 0-sized mallocs. Aaron Giles removed "RAMROM" support from the memory subsystem altogether (thanks to the new opcode handling) and updated all drivers to simply limit their decryption to areas that the CPU decrypted. Aaron Giles, with contributions from El Condor, R. Belmont, Ville Linde, fixed a number of games that were broken with the u1 update. Just a few more cases remain. Most games are working at this point. - 0.101u2 : Aaron Giles imported a number of memory handler conversion helpers from MESS, placed them in memconv.h. Aaron also fixed a number of games that were broken due to the recent memory system changes. There are still more problems to fix; continue reporting them. - 0.101u1 : Significant change to the memory system. RAM areas are now no longer allocated out of the memory_region for a given CPU. This means that drivers which assume that RAM is located at some offset to the base of the memory region will be broken. Changed timer_alloc_ptr-style timers so that the pointer parameter is supplied at allocation time and is not changeable. This makes these timers more easily supported in save states. [Aaron Giles] - 0.100u4 : Aaron Giles converted a few more drivers over to using the new memory_configure_bank calls. Aaron Giles removed the GAMEX and GAMEBX macros. The flags parameter has been moved into the GAME and GAMEB macros and these are used for all games. Aaron Giles added new option -autosave which automatically loads a game at startup and saves it at exit time for any game which is explicitly marked with GAME_SUPPORTS_SAVE. For other games, this option has no effect. - 0.100u2 : Aaron Giles fixed bug that caused VIDEO_EOF routines to be called while paused (mame.c). This led to weird graphics and out of timers messages in some games. smf fixed error message when auditing optional files. - 0.99u9 : Aaron Giles removed tilemap_dispose call and fixed the two drivers that were using it. This fixes improper save state registrations in megasys1 and ygv608 games. - 0.99u8 : Aaron Giles added new functions memory_configure_bank() and memory_set_bank() which abstract bankswitching better. This allows current memory banking states to automatically be saved for drivers that use this feature. m62.c games have been updated to use this new feature as an example. - 0.99u6 : Aaron Giles finished renaming. Major changes this time: struct mame_bitmap -> mame_bitmap, struct rectangle -> rectangle, data8_t -> UINT8, data16_t -> UINT16, data32_t -> UINT32 and data64_t -> UINT64. - 0.99u5 : Aaron Giles completed renaming of core structures. Most pervasive change was "struct tilemap" is now just "tilemap". - 0.99u4 : Cleaned up/normalized the naming of several core structures in an attempt to impose some order on coding conventions in the core code. Plus many others along the same lines (follow the pattern). Note that this work is not yet complete. In addition, a few of the more pervasive structs (mame_bitmap, rectangle) will be left until a non-diff release (0.100). Removed -skip_disclaimer since it automatically goes away after the first time execution [Aaron Giles]. - 0.99u2 : Updated to the latest zlib [Atari Ace] - 0.99u1 : Aaron Giles rewrote the configuration reader/writer code to be more generic and easier for other subsystems to plug into. This necessitated a rewrite of the way the existing code reads config data. As a result, your game.cfg files will be invalid after this update. Your default.cfg and existing controller-specific .cfg files should work fine. - 0.98u2 : Aaron Giles added new 'screen' parameter to the VIDEO_UPDATE callbacks. It is not currently used but is a placeholder for the future. - 0.98u1 : Aaron Giles changed how perodic timers are defined. Previously, you would specify a number which was interpreted either as Hz (if less than 50000) or as nanoseconds (if greater than 50000). Now, the time is specified as a period and you use the standard TIME_IN_HZ or TIME_IN_NS macros. Created a new header file mamecore.h, which contains the core common useful macros and typedefs that were scattered throughout the header files. Also added endian swapping macros from MESS. And fully deprecated the use of cpu_setbank(), which was long ago replaced with memory_set_bankptr(). - 0.97u5 : Krick took another crack at fixing the compilation problems caused by using multi-monitor stubs on Windows. Santeri Saarimaa fixed zlib buffer overrun bug. - 0.97u2 : Krick fixed Windows build so it works again on Windows 95. - 0.97u1 : Aaron Giles fixed memory leak in the cpu subsystem (mame.c - The CPU system must be reset before memory goes away). - 0.97 : Nicola Salmoria fixed memory leak in hiscore system. - 5th May 2005: Aaron Giles - About the 0.96 Code Cleanup: I added a step to the build process which runs a little tool over all the source code to ensure some consistency. A lot of people are freaking out about this in ways that are really unwarranted. You have to keep in mind that code is submitted from many people running on various platforms, and certain things like line-endings are not necessarily consistent between platforms. For example, the file drivers/laserbas.c has had screwed up line endings for who knows how long. Diff is not the most robust tool when creating diffs against files with inconsistent line endings. When I tried to create a diff against this particular file, diff freaked, and I had to hand-modify the final patch to make it work. This was the impetus to writing the tool. Since there seems to be a lot of paranoia about what this tool does, let me make it 100% perfectly clear. The tool does three things and only three things: 1. It makes sure all line endings are DOS/Windows standard CR/LF. 2. It removes any extra spaces/tabs at the end of each source line. 3. It converts tabs to spaces (assumes 4-character tabs) within comments. It leaves all other tabs alone. That's it. The tool is also smart enough not to touch the file if nothing needs to be changed so that the datestamps remain consistent. Since all the files in MAME 0.96 were updated with this tool, they will all pass unscathed when I run it before releasing 0.96u1. Which means this is really the only time you will see a significant number of changes resulting from the use of the tool. Going forward into the future, you probably won't even notice. - 0.96 : IMPORTANT: As of MAME 0.96, the source code license has changed. Please see the new file license.txt for details. The new license is based off the BSD license, with additional prohibitions against commercial usage. See http://mamedev.com for additional details. Nathan Woods fixed implementation of memory_get_op_ptr() (src\memory.c). - 0.95u6 : Brad Oliver improved auditing error reporting internally (src\audit.c). Changed 'Max Players' dipswitch to 'Play Mode' in many drivers (aerofgt, cps1, hyhoo, seta, shisen, sslam, system24, taito_l.). - 0.95u4 : Aaron Giles removed CPU_16BIT_PORT hack; this means that all Z80 drivers must explicitly, clamp their I/O space address space to 8-bits via ADDRESS_MAP_FLAGS(AMEF_ABITS(8)), removed CPU_AUDIO_CPU; it was no longer having any effect, and it was a poor substitution for documentation since it wasn't used consistently across all games, added 'emulator' target to the makefile to make it easier to build just mame.exe, removed obsolete targets from the main makefile and added Pentium-M optimization target to the makefile. - 0.95u2 : Improved gamelist.txt generation code [Buddabing, Atari Ace] - 0.94u2 : Aaron Giles updated documentation in mame.c. Nathan Woods changed wavwrite type from 'void *' type to an opaque pointer 'wav_file *' in src/sound/wavwrite.c. - 0.94 : Added macros for ROM_REGION64_LE and ROM_REGION64_BE [Aaron Giles] - 0.93u2 : Derrick Renaud fixed -wavwrite (windows\sound.c). - 0.93 : Sound System update [Aaron Giles]. smf changed way .map file is generated. - 0.92 : Nathan Woods reated a memory_get_op_ptr() call (src/memory.c). This call is equivalent to memory_get_read_ptr() in ADDRESS_SPACE_PROGRAM with the exception that it is aware of the opbase handler. - 0.91 : Aaron Giles updated the memory system with improved mirroring support and removed obsolete orientation code from tilemap code and drivers. - 0.90u4 : Nathan Woods increased the amount of adjustable memory banks from 24 to 32. - 0.90u3 : Chris Kirmse added support for a new command line parameter, -screen, that specifies which screen to draw on (if the user has more than one). - 0.90u2 : Chad Hurwitz fixed multiple port recording (src\inptport.c). Santeri Saarimaa upgraded to zlib 1.2.2. - 0.89u4 : Nathan Woods fixed memory.c MAX BANKS problem. - 0.88 : Memory system changes / fixes [Aaron Giles]. Added explicit casting to the memory handler width when computing the shifted data/mask values for read/write handlers -- this should in theory fix R. Belmont's 64-bit issues. Added memory_install_read/write8/16/32/64_matchmask_handler functions to allow dynamic installation of match/mask (AM_SPACE-style) memory ranges -- this should satisfy Frank P's request for the astrocade driver. Changed masking behavior for match/mask pairs so that an AM_SPACE with an AM_MASK does not expand the explicitly-specified mask value -- this should fix dwidel's problem getting Pac-Man accurate. Changed dynamic bank assignment to always assign a bank if you have explicitly specified a mask value via AM_MASK -- this should allow mirroring via AM_MASK if you want to, though AM_MIRROR is still preferred. Derrick Renaud added a new watchdog functionality. Changed watchdog to allow it to start at machine run start. If not used, the previous watchdog functionality is retained. Only define 1 of the 2 watchdogs per game. If both are defined then MDRV_WATCHDOG_VBLANK_INIT will be used only. MDRV_WATCHDOG_VBLANK_INIT(watch_count)- Initializes the watchdog in MACHINE_DRIVER_. watch_count is the # of vertical blanking intervals before a forced reset. If the time is unkown then you can use these defaults: DEFAULT_60HZ_3S_VBLANK_WATCHDOG or DEFAULT_30HZ_3S_VBLANK_WATCHDOG. MDRV_WATCHDOG_TIME_INIT(time)- Initializes the watchdog in MACHINE_DRIVER_. time is the time in seconds before a forced reset. New function to enable/disable the watchdog in game. watchdog_enable(0 or 1) - used to 0=disable or !0=enable. Fixed some last remaining issues with the new watchdog. The watchdog would not remain disabled after a watchdog_enable(0) in some conditions. Added a new function to change CPU clock speed in game. The current scaling factor will still apply. eg. If you force the CPU to change clock to 1MHz while the scaling is at 50%, the effective CPU speed will be 500kHz. Then reading the clock speed will give 1MHz, because clock scaling is transparent to the driver. int cpunum_get_clock(int cpunum): Returns the current CPU's actual unscaled running clock speed and void cpunum_set_clock(int cpunum, int clock): Sets the current CPU's clock speed and then adjusts for scaling. - 0.87u4 : René Single hanged where source filename based config files are stored to avoid conflicts with set name configs. Brad Oliver changed the static function implementations in memory.h to inline. - 10th October 2004: R. Belmont - Removed two GPL source files from MAME to ensure MAMEdev's continued legal safety. - 0.85 : Aaron Giles fixed bug with new command line options when using -createconfig. Renamed the paddle/adstick/pedal/dial/trackball/lightgun default device selection options to paddle_device/adstick_device/pedal_device/dial_device/trackball_device/lightgun_device to prevent naming conflicts. - 0.84u6 : Aaron Giles added several new command line options to assist in the automatic enabling of analog controls: -paddle (keyboard|mouse|joystick|lightgun), -adstick (keyboard|mouse|joystick|lightgun), -lightgun (keyboard|mouse|joystick|lightgun), -pedal (keyboard|mouse|joystick|lightgun), -dial (keyboard|mouse|joystick|lightgun) and -trackball (keyboard|mouse|joystick|lightgun). For example -dial mouse will automatically enable mouse controls (just like -mouse) if a dial control is present for the selected game. - 0.84u5 : Aaron Giles fixed mame_fprintf to output various text file formats based on the compile-time define CRLF. This must be set and can be equal to 1 (CR only), 2 (LF only) or 3 (CR+LF). - 0.84u3 : Aaron Giles added the ability to tweak the refresh rate if -cheat is enabled. Use SHIFT to modify by 0.1fps, CONTROL to modify by 0.01fps, and ALT to modify by 0.001fps. - 0.84 : Aaron Giles removed a number of obsolete backward compatibility macros (see whatsnew.txt) and smf added a new option in the Windows version: -wavwrite to save sound output to a WAV file. - 0.82u3 : Nathan Woods added memory_install_*_handler_mirror() calls (memory.c). - 0.82u1 : Nathan Woods added memory_install_[read|write][8|16|32|64]_handler_mirror() calls, which install memory handlers that can mirror similar to the AM_MIRROR macro (src/memory.c). - 0.82 : Nathan Woods fixed MEM_DUMP debug code. - 9th April 2004: Aaron Giles removed a logerror from the vblank callback in cpuexec.c - 0.81u4 : Aaron Giles support OSD 'NO EXECUTE'. This patch introduces two new OSD functions: osd_alloc_executable() and osd_free_executable(). For most platforms, these can just map to malloc and free. However, starting with WinXP SP2, if you are running on a processor that supports the NO_EXECUTE bit (currently only 64-bit AMD chips), standard user-mode memory allocations won't allow you to put code in them and execute it. Since this is exactly what x86drc.c does, I've added the two functions above. On Windows, these map to calling VirtualAlloc and VirtualFree, which allow you to specify the read/write/execute states of the pages thus allocated. - 0.79u3 : Nathan Woods changed all fatalerror() calls to osd_die(). Aaron Giles removed some memory system test code. - 0.79u2 : Aaron Giles fixed the CPU specific memory map. - 13th February 2004: Aaron Giles fixed the support for CPU-specific internal memory maps in the memory system. - 9th February 2004: Nathan Woods sent in miscellaneous fixes to the core. - 0.79u1 : Aaron Giles fixed a bug with AM_SHARE (memory.c). - 6th February 2004: Aaron Giles added support for internal memory maps for CPUs. - 29th January 2004: Aaron Giles fixed a bug in the memory system involving shared RAM with a single memory map. - 0.79 : Warning screens are now skipped if running with -ftr for less than 5 minutes [Aaron Giles] - 28th January 2004: Nathan Woods fixed a bug when running multiple sessions. - 26th January 2004: Aaron Giles fixed a bug in the memory system that allowed programs to write to ROM. - 23rd January 2004: Olivier Galibert fixed the memory system to remove useless memory allocations, and he fixed compile warnings in various files. Aaron Giles fixed small bugs in the memory system. - 20th January 2004: Aaron Giles sent in another big memory system change, adding support for merged read/write memory maps and mirroring. - 14th January 2004: Olivier Galibert fixed a typo in the memory system error logging. - 13th January 2004: Aaron Giles sent in phase 2 of the memory system update, adding proper support for Harvard architecture CPUs (separate program and data memory), improving support for CPUs with an implicit address shift (TMS34010 and TMS32031), improving the memory allocation scheme and other things. - 8th January 2004: Aaron Giles sent in the first batch of massive memory system overhaul, adding support for separate address spaces (program, data, I/O) and unifying read/write handlers of different address bus widths. - 29th December 2003: Aaron Giles added the ability for drivers to change the refresh rate during emulation. - 0.77u3 : Brad Oliver made sure each bitmap is aligned on a 16-bit boundary (src/common.c). - 0.76u2 : Aaron Giles added new function: activecpu_eat_cycles(cycles), needed for idle skipping in certain situations. - 0.76u1 : Nathan Woods added 'GAMENOUN' and 'GAMESNOUN' macros; defined to be the human readable text for the words 'game' and 'games' respectively (this is so MESS can use the nouns 'system' and 'systems'). - 0.75 : Nathan Woods increases the size of the buffer used when logerror() output goes to OutputDebugString(). Also adds a call cpuintrf_set_dasm_override() that gives drivers the ability to customize disassemblies. This probably isn't very useful for MAME, but it is useful for MESS for things like software interrupts used for BIOS calls. - 0.74u1 : Nathan Woods moved some Config code around. - 0.70u5 : Barry Rodewald changed drivers to use mame_rand for random numbers. - 27th June 2003: Barry Rodewald changed all drivers needing random numbers to use MAME's own random number generation. - 12th June 2003: Chris Kirmse fixed an incorrect number of ROMs being passed to the OSD side when optional BIOS ROMs were used. Paul Priest further fixed the problem in the optional BIOS ROM loading. - 10th June 2003: Paul Priest changed the default BIOS selection behaviour, the default BIOS is now always the first one listed. - 6th June 2003: Paul Priest improved the BIOS switching, making the different BIOS ROMs recognizable by names instead of numbers. - 1st May 2003: Leon van Rooij submitted basic Direct3D support, giving the ability to turn off bi-linear filtering when using hardware stretch. - 17th April 2003: Bryan McPhail incorporated some fixes from MAME32 Plus! to the main version. - 13th April 2003: Nathan Woods fixed MAME from crashing on non-MMX machines. - 10th April 2003: Aaron Giles added an option to control the audio output latency and another option to set a maximum size for the error log file. - 8th April 2003: Nathan Woods moved the printf and exit functions from the core to the OS dependant part, allowing them to be handled differently. - 18th March 2003: Aaron Giles fixed a bug where suspended CPUs didn't update their cycle count correctly. - 26th January 2003: Bernd Wiebelt added a generic random number generator to the core. - 21st December 2002: smf changed the clock speed detection to a probably more compatible method in the Windows version and Nicola Salmoria improved its behavior with the debugger. - 14th December 2002: smf fixed another small logging bug. - 13th December 2002: smf fixed several memory interface bugs that may have caused crashes. - 21st October 2002: Olivier Galibert added support for getting the number of elapsed cycles for a given CPU. - 6th September 2002: Paul Priest added definitely correct keyboard LED handling but it only helps Windows NT / 2000 / XP. - 5th September 2002: Paul Priest fixed the keyboard LEDs from being incorrect reset after exiting MAME. - 21st July 2002: Aaron Giles fixed a few memory interface bugs. - 10th July 2002: Aaron Giles removed rotation support from the core. - 28th May 2002: Aaron Giles changed the display interface a little. - 17th May 2002: Zsolt Vasvari removed the use of plot_pixel2 which cleans up a few things. - 11th May 2002: Aaron Giles fixed a few more problems that occurred after the display update changes. - 7th May 2002: Aaron Giles fixed another small bug in the vector games that happened because of the display updating changes. - 6th May 2002: Aaron Giles fixed a small bug in the vector games that happened after yesterday's display update changes. - 5th May 2002: Aaron Giles sent in a massive update for the display updating, which is now a lot cleaner and more consistent. - 5th April 2002: Aaron Giles fixed a lot of invalid memory accesses in various drivers that caused crashes in 0.59. - 28th March 2002: Aaron Giles added a feature to the memory system that returns a pre-specified value from unmapped memory addresses. - 6th February 2002: William Kucharski re-submitted his batch of fixes for the various drivers. - 1st February 2002: Aaron Giles cleaned up the plot_pixel support. - 31st January 2002: Aaron Giles converted a few more drivers for the partial update support. - 30th January 2002: Aaron Giles added partial screen updating to the core, and converted a few drivers to support it. - 28th January 2002: David Graves fixed a few more problems in the Taito drivers that occurred with the latest core changes. Aaron Giles also fixed a crash that happened with the core changes and resetting 68k CPUs. - 27th January 2002: David Graves fixed a few more problems in the various Taito drivers that occurred with the core changes. - 26th January 2002: David Graves fixed a few problems with some Taito games that occurred with the core changes. - 23rd January 2002: Zsolt Vasvari updated the 8080bw driver to use the new core features. - 21st January 2002: Aaron Giles fixed a sound problem in the Williams T-unit driver that occurred with the newest core changes. - 16th January 2002: David Haywood re-submitted several drivers and clones to work with the newest core changes. - 15th January 2002: Aaron Giles sent in the major core rework, adding much more macroization, adding automatic resource management for bitmaps and timers, obsoleting the old interrupt system and adding generic NVRAM handlers. - 10th January 2002: Aaron Giles reported some progress on a major core rework, changing machine drivers to a macro system and automatizing timer and video drivers resource management. - 31st October 2001: Aaron Giles moved bitmap allocation to the core code as opposed to being in the OS-dependant code. - 9th March 2001: Nicola Salmoria added 4bpp packed graphics support to the core. WIN32 CONSOLE: - 0.105u3 : Fixed a number of issues in the Windows rendering code [Giuseppe Gorgoglione]: Fixed blit_vectors so it used the dirty pixel array in D3D mode. Fixed blit_vectors rotation issue for dirty pixels as well. Changed -full_screen_brightness to -full_screen_gamma (which is a more correct description). Changed -d3dfilter to be a boolean, since the other filtering modes are either obsolete or not applicable to MAME. Removed limitations on windowing position so you no longer need to be aligned on an 8-pixel boundary. Cleaned up a number of unused global variables. Improved multi-monitor support to work in GDI mode as well as in non-full-screen modes. Added missing documentation for the -screen parameter. - 0.105u1 : Olivier Galibert moved region and address space names out of the Windows-specific code and into more common locations. - 0.99u3 : Aaron Giles removed some obsolete and/or redundant command line options from the Windows build and removed the "Press any key" prompts when displaying ROM warnings. Instead, a warning about bad/missing ROMs is now displayed on the warnings screen. Details of the bad/missing ROMs are still printed to the console. - 0.98u3 : smf changed the windows code so the map file isn't loaded unless the profiler is enabled. This stops you running out of memory when the memory tracking is enabled. - 0.98u1 : Atari Ace removed usage of dirent.h APIs on Windows builds. - 0.87u2 : Nathan Woods changed the stat() call to use Win32 equivalents (src/windows/fronthlp.c). - 0.84u6 : Aaron Giles fixed enumeration of lightgun and joysticks in the Windows build. Joysticks now no longer show up unless you specify -joystick. And lightguns should work properly as absolute devices. - 0.83 : Nathan Woods added an optional definition for the S_ISDIR macro for when it is not present (src/windows/fronthlp.c), - 0.82u3 : Nathan Woods changed use_mouse to win_use_mouse and made it non-static. - 19th November 2003: Joe Redfish submitted a fix to a bug in setting the keyboard LEDs in the Windows version. - 0.76u1 : Leon van Rooij add size/prescale/rgb-auto effect can now change when the image size is changed by the game driver. - 0.75 : Nathan Woods moves config.c externs to a header file. Also adds another call, cli_rc_create(), which creates MAME's rc struct for use elsewhere. (I'm actually creating a debug time consistency check feature for MAME32, to verify at runtime that the arguments that MAME32 has are consistent with MAME's). - 0.70u5 : Leon van Rooij changed message for Double Clicking on EXE slightly. - 20th June 2003: Leon van Rooij added a little message box that is displayed if the executable is double-clicked. - 0.69b : Chris Kirmse fixed a problem in snprintf.c printing out floats with fractional partswith leading zeroes. - 31st May 2003: Chris Kirmse fixed a bug in the internal snprintf function that caused wrong output with some fractional numbers. - 28th March 2003: Nathan Woods further fixed the bug fix for switching between windowed and fullscreen modes and he enhanced the Win32 blitter to use SSE instructions if available. - 20th March 2003: Nathan Woods fixed a bug that caused wrong colors when switching between windowed and full screen modes sometimes. - 0.63 : The diff, snap, cfg, nvram, etc. directories are created automatically if they don't exist the first time MAME tries to create a file there [Aaron Giles]. - 13th October 2002: Aaron Giles attempted fixing the flickering window borders seen in the full screen mode under WinXP when using flashy desktop themes, however the fix has not been confirmed yet. - 27th May 2002: Bernd Wiebelt added support for multiple ini-directories to the Windows version. - 23rd May 2002: Nathan Woods fixed a crash in the command line parameters. - 26th January 2002: Aaron Giles added the "sharpness" filter effect. - 17th January 2002: Bryan McPhail fixed some of the Win32 port files to make them compile with Visual C. - 24th October 2001: Aaron also added a debugging feature to help tracing the crashes. - 23rd October 2001: Aaron Giles added a debugging feature to the Windows version which allows catching of some memory access bugs. - 4th September 2001: Mathis Rosenhauer converted all vector games to use the direct RGB modes. - 3rd September 2001: Mathis Rosenhauer added support for direct RGB modes in the vector graphics functions. - 0.53 : The Windows port is now called "MAME" (instead of "MAMEW"). The DOS port is called "DMAME". - 9th August 2001: Aaron Giles fixed a bug in scanline drawing. - 31st July 2001: Aaron Giles fixed the Windows 95 problem again. - 30th July 2001: Bernd Wiebelt fixed directory names with spaces in mame.ini, though you still need to wrap the directory with quotation marks. - 29th July 2001: Bernd Wiebelt integrated Paul Priest's steadykey config option and fixed a few other command line interface bugs. - 20th July 2001: Aaron Giles hopefully fixed the Windows 95 problem for good, and cleaned up the Win32 code. - 3rd July 2001: Olivier Galibert fixed a Win32 version bug with direct color modes. - 1st July 2001: Aaron Giles added a few new vertical scanlines and RGB blitters designed by Paul Priest. - 29th June 2001: Bernd Wiebelt fixed -playback command line parameter in the Win32 version. - 28th June 2001: Aaron Giles fixed the new blitters to handle single-pixel edge cases properly. - 27th June 2001: Aaron Giles adjusted the auto resolution selection for the new blitters. - 24th June 2001: Aaron Giles added RGB blitter effects to the Win32 version from AdvanceMAME. - 24th June 2001: Bernd Wiebelt sent in an update to the command line functions, cleaning up and fixing a few things. - 16th June 2001: Aaron Giles rewrote the blitters in Win32 version, making it easier to add special effects. - 31st May 2001: Tatsuyuki Satoh added state saving support to the FM sound core. Aaron Giles (hopefully) fixed the Windows NT sound crash in the Win32 version. - 26th May 2001: Aaron Giles added support for more analog axes and POV hats in the Win32 version, and he fixed the ghost GUI problem in scanline modes. - 9th May 2001: Aaron Giles fixed a few more problems in the Win32 version. - 8th May 2001: Aaron Giles fixed some graphics problems with the Win32 version. - 7th May 2001: Aaron Giles sent in yet another Win32 version update. - 5th May 2001: Aaron Giles updated the Win32 version yet again, fixing a lot of things. - 1st May 2001: Aaron Giles fixed a small interface bug in the Win32 version, and added better support for non-standard aspect ratios. - 30th April 2001: Bernd Wiebelt updated the Win32 version's config routines. Aaron Giles sent in another Win32 version update with some cleanups and bugfixes. - 27th April 2001: Aaron Giles fixed yet more crashes on the Win32 version. - 26th April 2001: Aaron Giles fixed several crashes that happened on the Win32 version, and he improved the new Win32 port as well. Dave Haywood also fixed Gunnail from crashing in the Win32 version. - 25th April 2001: Aaron Giles re-ported MAME to Win32 console with freely available tools, features including hardware stretching if available. MAME32: - 0.90u1 : Taken out the resource file from the windows objs when UI=1 (for MAME32) [Chris Kirmse] - 0.86 : Chris Kirmse fixed some Multisession win32 bugs. - 0.79 : Multiple Session fixes (for Mame32 etc.) [Nathan Woods] - 22nd June 2003: Nathan Woods fixed some slight problems with Direct3D fullscreen usage and Windows menus. - 19th June 2003: Nathan Woods sent in a patch to better support optional ROMs in the audit functions. - 27th March 2002: Aaron Giles fixed the problem in auditing samples and artwork in the Windows version. - 22nd April 2001: Bart Puype fixed Major Havoc from crashing in MAME32. - 9th April 2001: Ben Bruscella fixed some MAME32 compilation bugs. - 8th April 2001: Bart Puype submitted a few fixes to occasional MAME32 crashes. - 6th April 2001: Aaron Giles fixed a bug in Hydra and Pit Fighter, which caused crashes in MAME32. - 15th February 2001: Quench fixed a Twin Cobra driver compilation bug that affected MAME32. DOS VERSION: - 26th January 2003: smf fixed some blitter bugs in the DOS version and added aspect ratio support. - 25th January 2003: Stephane Humbert fixed some small things in yesterday's DECO16 update to make it compile in DOS. - 3rd December 2002: smf fixed another few bugs related to hard disk verifying. - 2nd December 2002: smf fixed various bugs in the DOS version that occurred when running in pure DOS mode, and he improved the hard disk MD5 verifying. - 29th November 2002: smf fixed some memory leaks in the DOS version. - 28th November 2002: smf added some extra error checks to the file I/O functions in the DOS version. - 24th November 2002: smf added ctrlr.ini support to the DOS version. - 23rd November 2002: smf fixed the path handling also in the DOS version. - 19th November 2002: smf updated his GCC 3.2 install instructions. - 16th November 2002: smf did a GCC 3.2 compiler package for DOS. - 14th November 2002: smf fixed some compile problems that happened with GCC 3.2. - 31st October 2002: smf added HD image support to the DOS version. - 26th October 2002: smf added support for 24bpp graphics modes to the DOS version. - 17th October 2002: smf updated the DOS version of MAME, adding a -createconfig parameter and improving various other things. - 7th October 2002: smf added vertical scanlines and a lot of configuration options to the DOS version of MAME. - 23rd September 2002: smf sent in another update to the DOS version of MAME, with support for reducing the number of colors for 8-bit graphics modes. - 3rd September 2002: smf sent in a major update to the DOS version. - 21st August 2002: Andre Cotrim submitted driver-specific config support for the DOS version. - 11th June 2002: smf sent in an update to the DOS version. - 3rd June 2002: smf submitted a major patch to the DOS version, bringing it up to date with the core changes. - 15th May 2002: Lawrence Gold sent a few patches that fix warnings with GCC 3.1. - 0.53 : The Windows port is now called "MAME" (instead of "MAMEW"). The DOS port is called "DMAME". LINUX: - 0.84u5 : Lawrence Goldf fixed several compilation issues for LinuxPPC and other ports. MAC VERSION: - 0.96 : Brad Oliver fixed problem with beatmania games on the Mac. - 0.79u3 : Nathan Woods added -createblankhd and -copydata commands, new arguments to -createhd and ported it to Macintosh. - 24th April 2003: Aaron Giles fixed the sound in Revolution X that got broken with the Mac changes. - 21st March 2003: Brad Oliver fixed a problem in the ADSP-210x CPU core that occurred in MacMAME. - 15th March 2003: Brad Oliver fixed a few compiling bugs that affected MacMAME. - 15th June 2002: Brad Oliver fixed a few more bugs that caused problems on the Mac side. - 19th February 2002: Brad Oliver re-submitted a few fixes to compile problems on the Mac side. - 24th January 2001: Brad Oliver fixed some compilation bugs which affected the Mac port. - 18th January 2002: Brad Oliver fixed several driver problems that occurred on MacMAME. UNIX VERSION: - 0.79u2 : R.Belmont fixed the Unix compile (renamed rand_r in namconb1 driver). SOLARIS VERION: - 0.77u3 : Path for Solaris [Lawrence Gold] - The patch replaces the uses of sqrtf and floorf, which aren't available on that platform, with their double-precision counterparts. Please let me know if this is a problem, in which case I can add some special-case #defines for Solaris. - 1st December 2003: Lawrence Gold sent in a patch that fixes some code on Solaris. MESS: - 0.104u1 : Nathan Woods altered the way MESS interacts with the core config system. - 0.102u3 : Nathan Woods added a MESS specific ROM entry type, and changed ROM entry processing code to ignore any unrecognized ROM entry types. Also merged in recent changes to the PC share code from MESS. - 0.101u3 : Lawrence Gold fixed MESS UI code that prevented P and Esc from being intercepted properly. Nathan Woods merged in recent updates from MESS PC emulation code. - 0.99u9 : Nathan Woods cleaned up MESS hooks into the input port system. - 0.95u1 : Nathan Woods added a MESS specific option to FILETYPE_SCREENSHOT (src/fileio.c). - 0.95 : MESS specific sndintrf update [Nathan Woods] - 0.93u2 : Nathan Woods added a MESS specific usrintrf patch. - 0.89u2 : Nathan Woods removed some obsolete Mess code. - 0.88u6 : Nathan Woods added a minor MESS specific patch. - 0.88u3 : Nathan Woods added a MESS specific CPU core and fixed a few input group declarations on MESS specific input types. - 0.86u5 : Nathan Woods cleaned up some MESS related code - 0.85u1 : Rene Single cleaned up some #ifdef MESS and united the two definitions of my_stricmp. - 0.85 : Nathan Woods made some MESS-specific additions to the new input configuration code. - 0.84u6 : Nathan Woods added several more default strings and some MESS-specific fixes. - 0.84 : Nathan Woods made miscellaneous cleanups and refactorings done primarily to support a new MESS specific feature. Also removed some '#if 0' code. - 0.83 : smf added PSX PAL support for MESS. - 0.81u6 : Nathan Woods added the MESS specific TMS7000 core to the list of CPU cores. - 0.81u4 : Nathan Woods fixes a problem with x86drc.c in rc/windows/windows.mak. Adds in a new (windows only) mode for opening files whereby files can be opened for read/write, but changes are not actually not written to the original file but rather to a temporary file. This trick is used by the MESS testing facility so that tests do not mutate the images they operate on (src/windows/fileio.c + small cleanups). Replaces a #ifdef MESS/#else/#endif combo with a usage of the APPNAME macro in png.c. - 0.80u2 : Nathan Woods changed MESS specific file type from FILETYPE_CRC to FILETYPE_HASH in src/windows/fileio.c - 0.80u1 : Nathan Woods added minor changes related to MESS's mouse device (within #ifdef MESS). - 0.80 : Nathan Woods changed video_window_proc() to win_video_window_proc() and made non-static so that MESS's window proc can call it. Changed win_init_window() to use MESS's window proc (within #ifdef MESS of course). Added a win_suspend_directx global variable to temporarily turn off DirectX usage (used in MESS). Added a few minor MESS specific #ifdefs. - 4th March 2004: Nathan Woods improved the window handling for MESS and added cpu_getscanline functions that return mame_time. - 1st December 2003: Nathan Woods fixed some small MESS-specific things in the code. - 0.77u2 : Nathan Woods add MESS related updates to windows/fileio.c - 7th November 2003: Nathan Woods improved some MESS-specific functionality in the UI code. - 0.76u2 : Nathan Woods removed the update procedure in a MESS specific sound core. - 26th October 2003: Nathan Woods sent another patch that integrates some MESS specific fileio functionality. - 0.76u1 : Nathan Woods removed wave_sh_stop() call from the MESS specific WAVE sound interface (it is extraneous now). - 20th October 2003: Nathan Woods sent in another small patch that improves some MESS-specific functionality. - 0.75 : Nathan Woods moves the MESS specific code into a separate module, reducing #ifdef clutter. - 0.74 : Nathan Woods made misc source changes mainly to improve compatibility with MESS. Nathan Woods did a minor change to recognize MESS IPT_CONFIG input ports. - 0.73 : Nathan Woods made various changes to keep the code inline with MESS. - 29th August 2003: Nathan Woods forwarded another patch for better intercompatibility with MESS.Nathan Woods forwarded another patch for better intercompatibility with MESS. - 14th August 2003: Nathan Woods sent in another patch improving the MESS side of things, a better fix for the scanline display interfering with the registers in the debugger and a fix for pausing so that MAME doesn't busy loop. - 0.72 : Nathan Woods adds some minor callbacks to the artwork system in order to enable some MESS specific functionality without polluting artwork.c with a bunch of ugly #ifdef MESS's. - 0.71u2 : Nathan Woods did minor tweaks in #ifdef MESS, and #ifndef MESS'ed a consistency check inapprpriate for MESS. Added very small hooks for MESS. Changed seq_name() so that instead of saying " or n/a", it will say "". - 10th July 2003: Nathan Woods sent in a few small MESS-specific patches. - 0.70u1 : Nathan Woods changed a few MAME core files for MESS. - 11th June 2003: Nathan Woods sent in a patch for MESS-specific stuff in the core. - 19th May 2003: Nathan Woods sent in another bunch of small changes, some needed for MESS. - 16th May 2003: Nathan Woods did some minor changes in the core to better accommodate MESS changes. - 7th April 2003: Nathan Woods cleaned up some MESS specific code in the core. - 14th February 2003: Pierpaolo Prazzoli ported the SNES driver from MESS and modified it to run some Nintendo Super System games. - 11th February 2003: Nathan Woods submitted a few minor patches to the core for better interoperability with MESS. - 28th January 2003: Nathan Woods fixed some MESS-specific code. - 13th November 2002: Nathan Woods re-submitted some old fixes and improved a few MESS-specific things. - 12th July 2002: Nathan Woods submitted another small patch, cleaning up some MESS-specific details. COMPILING: - 0.105u5 : Added preliminary support for 64-bit targets. A new makefile define PTR64 should be set if you are compiling for a 64-bit target. This propogates a PTR64 define into the C files as well. Made the makefile smart enough to auto-disable the drc cores for 64-bit, and removed most of the roadblocks to a 64-bit build, apart from the assembly blitters, which are currently undergoing a rewrite [Aaron Giles]. - 0.105u1 : Nathan Woods moved calls to ui_set_visible_area() into set_visible_area() to work around timing problems when they are called at separate times during a single frame. Nathan also added $(OBJ)/%.s target to the makefile for easy disassembly analysis of generated code (you can also use the $(OBJ)/%.pp to examine preprocessor output). Atari Ace and Aaron Giles removed hard linkage of game driver clones. This reduces hard inter-driver dependencies and allows for easier usage of tiny.mak. - 0.104u9 : smf and Aaron Giles fixed makefile to allow command-line override of MAMEOS and TARGET variables. - 0.104u7 : Atari Ace removed unnecessary #includes from a number of files. Added #includes to files that were defining items that were declared in the header. Better documented where items are defined in the header files from the includes directory. - 0.104u5 : Lawrence Gold fixed old debugger compilation on non-Windows platforms. Added mame_strnicmp along the way. Lawrence Gold fixed compile errors under GCC 4.1. - 0.104u4 : More global system cleanup [Aaron Giles, Atari Ace]: Remapped osd_die to fatalerror, which cleans up behind itself and returns to the osd code by returning from run_game, removed a number of unnecessary includes from driver.h, moved logerror into the core, moved 68000-specific build rules to cpu.mak, new function skip_this_frame, should be called by drivers instead of osd_skip_this_frame and removed includes of osdepend.h and osd_cpu.h from drivers; only the core should include these. - 0.104u3 : Nathan Woods created new osd_tool file which is used by utility tools to do file access in an OS independent manner. - 0.104u2 : Aaron Giles added assert_always macro which asserts even in a release build, and requires a friendly message. Aaron Giles fixed bug x86compile0104u1ora (problems with latest x86 changes). - 0.104u1 : Lawrence Gold fixed new makefiles to be more friendly to non-x86 builds. - 0.104 : Derrick Renaud fixed tiny.mak for the changes from 0.103u5. Aaron Giles shuffled a few more files around in mame.mak; rebuild clean once again to ensure correctness. - 0.103u4 : Oliver Stoneberg converted a few more exit() calls to osd_die(). - 0.103u1 : Atari Ace tagged a number of constant arrays in the source as static. Nathan Woods moved several BCD and date-related functions into mamecore.h. - 0.103 : Oliver Stoneberg replaced a few stray exit() calls with osd_die(). - 0.102u3 : Giuseppe Gorgoglione fixed a couple of minor compatibility exposed by VC2005 and removed several obsolete files: machine\s16math.h, vidhrdw\medlanes.h, windows\dirty.h and windows\snprintf.c. - 0.102u2 : Oshah fixed several uninitialized variables, incorrect string compares and inconsistent variable declarations found by the VC compiler. - 0.102 : Aaron Giles changed the makefile so that debug objects are not compiled on non-debug builds. He also renamed my_stricmp to mame_stricmp, converted all uses of stricmp in the code to call mame_stricmp, and #defined stricmp to something invalid to prevent code from using it in the future. William Krick fixed the implementation of mame_stricmp. - 0.99u1 : Aaron Giles turned off -fomit-frame-pointer in optimized builds. It was leading to crashes when used with setjmp/longjmp on Windows builds. - 0.98u1 : Atari Ace added some makefile tweaks to hopefully catch variable declaration problems that kept creeping into builds. Switched GCC compiler standard to GNU89. - 0.96u4 : Firewave replaced some logerror()/exit(), printf()/exit() and fprintf()/exit() combinations against an osd_die() call. - 0.96u1 : Ville Linde added dynamic recompiler for PowerPC cores (cpu\powerpc\ppcdrc.c). - 0.95u1 : Link Warning fixes [Lawrence Gold] - 0.94u5 : Atari Ace reorganized makefile slightly. Lawrence Gold fixed seibuspi link warning. - 0.94u3 : Compiler fixes [Atari Ace] - 0.94u1 : Fixed auto_malloc compiler warning with DOS tools [smf] - 0.93u2 : 0.93 link warning fixes [Lawrence Gold] - 0.93u1 : R. Belmont fixed Itech32 64-bit crash (src\vidhrdw\itech32.c). And misc compiler fixes [Lawrence Gold] - 0.93 : C89 fix [Lawrence Gold] - 0.92u1 : Compiler fixes [R. Belmont] - 0.92 : Misc compiler fixes [Lawrence Gold]. - 0.91u1 : Compiler Warning fixes for non-GCC compiles [Bryan McPhail]: Duplicate enum (cpuintrf.h), C99 variable fix & warning fix (cpu/mh68hc11/hc11ops.c), C99 variable fix (sound/streams.c), C99 variable fix (vidhrdw/pacman.c), C99 variable fix, unused variable fix and macro redefinition fix (vidhrdw/model3.c), fixed unused variable warning (vidhrdw/namcona1.c), fixed unused variable warning (vidhrdw/taitoic.c), fixed unused variable warning (vidhrdw/wgp.c) and Missing #include (windows/debugwin.c). More compiler fixes [Lawrence Gold]. - 0.90u2 : Lawrence Gold fixed several compile warnings. - 0.90 : Robert Alan Byer fixed model1 driver compiling problem with OpenVMS. R. Belmont fixed itech32 driver crash on AMD64 CPUs. Lawrence Gold fixed some C89 related compiler issues. - 0.89u1 : Lawrence Gold added misc Compiler patches. - 0.88u4 : Nathan Woods fixed some compile errors. - 0.88u3 : Hans de Goede added various fixes to prevent crashes in X86-64 compiles. - 0.88 : Jeff Mitchell and Lawrence Gold fixed some C99 related compiler issues. - 0.87u3 : Massive compiler warnings cleanup for GCC 3.4.2 [Olivier Galibert]. - 0.87u2 : Lawrence Gold fixed some Compiler warnings. - 0.87u1 : Brad Oliver made minor Compiler fixes. - 0.86u1 : Lawrence Gold substituted isnan() for inunordered(), which is only available in C99, fixed a few C89 warnings about an extra comma at the end of enums and updated the expat code to 1.95.8, which is the latest release. - 0.84u6 : Aaron Giles fixed several makefile errors in the last version. - 3rd June 2004: Aaron Giles - I start in on the debugger reworking I've been planning for a while. The new debugger relies on more support from the OSD layer to handle multiple windows and text-based drawing, but it allows a ton more flexibility than the old debugger. The cross-platform core is also greatly expanded in capabilities, supporting multiple breakpoints, conditional breakpoints, full-fledged watchpoints, a full expression parsing engine, and lots more. - 24th April 2004: Lawrence Gold sent in a small patch for romcmp.c compiling problems. - 0.81u5 : Nathan Woods added __attribute__((noreturn)) to osd_die() when compiling under GCC 2.5 and greater (osdepend.h). Converted printf()/exit() combination of calls to osd_die() in (src/memory.c, src/state.c, src/x86drc.c and src/cpu/i386/i386.c). osd_die() messages now get sent to both logerror and console output (src/windows/config.c). - 4th April 2004: Aaron Giles fixed a compiling error that happened without the x86 DRC core. - 31st March 2004: Lawrence Gold fixed a few compiling and link warnings in 0.80u3. - 0.80u1 : Lawrence Gold fixes the C89 compiler. - 3rd March 2004: Lawrence Gold fixed a bunch of compiling errors with GCC 3.3.3. - 0.79u3 : Nathan Woods added a new consistency check on CPUs to check for the existence of certain get_info cases needed for debugging. This consistency check is currently only enabled for MESS. And removed NEOMAME and CPSMAME declarations. - 0.79u2 : Nathan Woods added a new consistency check for drivers that use non-existent CPU cores in src/mame.c - 17th February 2004: Lawrence Gold fixed a bunch of compiling problems on other platforms. - 9th February 2004: R. Belmont sent in a small *nix-related compiling fix for u1. - 30th January 2004: Olivier Galibert fixed a slight compiling problem in the Vendetta driver. - 28th January 2004: smf fixed compiling the Dynax driver in VCMAME and memory.c in DJGPP. - 23rd January 2004: Olivier Galibert fixed the memory system to remove useless memory allocations, and he fixed compile warnings in various files. - 8th January 2004: smf sent in a small fix for compiling cpuintrf.c in DJGPP. - 0.79 : Various compiler specific fixes [Olivier Galibert, smf] - 0.78u1 : Nathan Woods adds workaround for deficiency in Metrowerks compiler in src/chd.c and adds a few more instruction declarations and a call to retrieve CPU feature flags from CPUID in src/x86drc.c. Also as compiler specific assembler code for feature reading replaced by call added above in src/windows/ticker.c - 19th November 2003: Lawrence Gold fixed several warnings and errors in compiling on different compilers. - 0.76u1 : Leon van Rooij added CFLAGSOSDEPEND variable. It is used when compiling osd code only (e.g. DirectX needs -Wno-strict-aliasing). COMPILESYSTEM_CYGWIN determines if nasm or nasmw is used (the cygwin version of nasm is called nasm). Quick fix for some #defines in that don't work with win32api 2.4 (windows\fileio.c). Changed a variable name that conflicts with a gcc built-in (windows\snprintf.c). - 0.75 : Lawrence Gold replaced instances of "inline", "static inline", and "static __inline" with "INLINE". This fixes some build problems with xmame and makes things more consistent. - 11th August 2003: smf fixed various compiling problems that happen with GCC 3.3. - 0.72 : Brad Oliver fixed compile problems in src/vidhrdw/bigevglf.c and segaic24.c - 25th July 2003: Jarek Burczynski and Martin Adrian fixed a compiling bug in the FM core that happened with some chip configurations. - 6th July 2003: Bryan McPhail fixed another compiling error on other compilers. - 5th July 2003: Brad Oliver fixed a small compiling bug. - 23rd June 2003: Nathan Woods fixed another few compiling problems. - 11th June 2003: Bryan McPhail sent in some fixes for warnings with other compilers. - 7th June 2003: Lawrence Gold sent in some fixes to compiler warnings and some xmame-specific patches. - 0.71u1 : Brad Oliver and Bryan McPhail did make some compiler fixes. - 16th May 2003: Bryan McPhail sent in some fixes to compiling errors on non-C99 compilers. - 12th April 2003: Lawrence Gold fixed several compiling bugs when using an older GCC or another compiler. - 6th April 2003: Brad Oliver fixed some compiling problems. - 5th March 2003: Nathan Woods fixed the function prototypes to use mame_file instead of void pointers in state.c/h. - 29th January 2003: Bryan McPhail fixed some compiling problems that happened with Visual C. - 14th January 2003: Andrea Mazzoleni sent in some small compiling fixes. - 9th December 2002: Brad Oliver fixed a minor compiling bug that affected 0.62. - 15th November 2002: Aaron Giles put together a compiler package with MinGW 2.0 (GCC 3.2) to be used with MAME. - 1st November 2002: Nathan Woods did some minor tweaks to allow compiling with the MinGW 2.0 distribution. - 29th October 2002: smf fixed some compile errors in the Williams V-unit driver. - 30th July 2002: Lawrence Gold fixed some compiling errors that happened with GCC 3.1 optimizations. - 31st March 2002: Lawrence Gold fixed some compile problems which occurred with a newer GCC. - 16th February 2002: Lawrence Gold sent in a few more patches fixing compile errors. - 15th February 2002: Brad Oliver fixed a few compile errors. - 4th February 2002: Stephane Humbert fixed some compilation problems. - 7th January 2002: Lawrence Gold forwarded some minor compilation fixes to the source. - 4th January 2002: Andrea Mazzoleni partially fixed a bug in compiling the Z80 CPU core with GCC 3.0.x. - 1st January 2002: Brad Oliver fixed a few compilation problems in MAME 0.57. - 1st November 2001: Brad Oliver and Aaron Giles fixed several compile problems. - 20th October 2001: Stefan Jokisch fixed several compilation errors which occurred in Visual C, and sent a project file to use with it. - 20th August 2001: Peter Trauner fixed a compile problem. - 30th March 2001: Aaron Giles fixed some compiling bugs. - 15th July 2001: Brad Oliver fixed some compilation problems. - 4th July 2001: Olivier Galibert fixed a compilation problem in jrcrypt.c (jrcrypt.c provide detailed documentation of the encryption used by Jr. Pac Man ROMs). - 28th June 2001: Lawrence Gold fixed several GCC 3.0 warnings in the source code. VISUAL C/OTHER COMPILER/OSD DEVELOPERS: - 0.105u5 : Added experimental support for building using Visual C++ 2003/2005. To do this, you still need the mingw environment (ironically) because we rely on the mingw make system to call out to the MSVC compilers. Set the variable MSVC_BUILD=1 on the command line or by modifying windows.mak, and it will build using the Microsoft compilers. This works through the use of a stub program vconv.exe which translates gcc options into MSVC options. As a bootstrapping measure, vconv.exe is compiled at the start of a clean build by mingw. Most of the standard build options just work (SYMBOLS, MAP, DEBUG, etc). If you have a beefy computer, you can also set MAXOPT=1 and use link-time code generation for maximum optimization effect [Aaron Giles]. - 0.104u5 : IMPORTANT CHANGE FOR OSD DEVELOPERS [Aaron Giles]: A new function osd_create_directory is now required in order to create memcard subdirectories. This function was previously defined only for the MESS core, so if there is a MESS port already available, you can just import that function. - 0.104u4 : IMPORTANT CHANGE FOR OSD DEVELOPERS [Aaron Giles]: 1. osd_pause is no longer called directly. Rather, your osd_init function should register the osd_pause callback (if necessary) using add_pause_callback. 2. osd_die is now handled by the core; you should remove this function from the OSD layer. 3. logerror is front-ended in the core; it calls to a new OSD function osd_logerror which handles the OS-specific file and/or debugger logging. - 0.104u3 : IMPORTANT CHANGE FOR OSD DEVELOPERS [Aaron Giles]: osd_exit is no longer called directly. Rather, your osd_init function should register the osd_exit callback (if necessary) using add_exit_callback. Also, several global variables have been moved into the Machine structure: mame_debug -> Machine->debug_mode, playback -> Machine->playback_file and record -> Machine->record_file. - 0.104u1 : Lawrence Gold fixed new makefiles to be more friendly to non-x86 builds. - 0.95u1 : Patches to fix compile errors with VC [Bryan McPhail] - 0.92 : Misc compiler fixes for VC [Bryan McPhail] - 0.90 : Kenneth Miller fixed namco54 sound driver compiling in VisualC++ - 0.89u2 : René Single fixed VC compiling. - 0.87u1 : Bryan McPhail fixes the Compiler for VC. Fixed warnings under VC: cpu\m37710\m37710op.h, cpu\powerpc\ppc.c and cpu\powerpc\ppc403.c. C99 fix: drivers\suprgolf.c - 2nd May 2004: Bryan McPhail sent in a small patch to fix compiling on VC. - 28th January 2004: smf fixed compiling the Dynax driver in VCMAME and memory.c in DJGPP. - 27th January 2004: smf fixed a compiling problem in VCMAME. - 0.75 : Nathan Woods moved some variable declarations out of for loops so that it can compile in non-GCC compilers. - 17th September 2003: Bryan McPhail sent in some fixes to make MAME compile with pre-C99 compilers. - 0.70u1 : Bryan McPhail did tiny changes to enable easy compiling under VC6/7 & older non-c99 compilers [Bryan McPhail] - 10th March 2003: Mike Haaland fixed a small compiling problem on VC. - 20th February 2003: Mike Haaland fixed some compile problems on Visual C. - 17th February 2002: Bryan McPhail fixed it to compile with Visual C as well. - 18th January 2002: Stefan Jokisch did a tiny clean-up on the ASM 68k core to make it compile with Visual C. - 17th January 2002: Bryan McPhail fixed some of the Win32 port files to make them compile with Visual C. - 20th October 2001: Stefan Jokisch fixed several compilation errors which occurred in Visual C, and sent a project file to use with it. DEBUGGER: - 0.105u4 : Andrew Gardner added function to change the number of bytes displayed per row in the debugger memory window. Aaron Giles fixed bug in the debugger that would prevent you from typing a command line longer than what was visible. - 0.105u1 : Olivier Galibert fixed crash bug in old debugger introduced in the last release. Andrew Gardner fixed a bug with code comments that led to incorrect display for long comments. - 0.104u9 : Nathan Woods changed comment prefix in debugger command scripts from '#' to '//'. Aaron Giles fixed "do" command in the debugger. - 0.104u7 : Nathan Woods fixed some crashes in the debugger if you tried to set breakpoints while the game was running and there was no active CPU. - 0.104u6 : Andrew Gardner fixed comment display for processors which use an ADDRBUS_SHIFT. - 0.104u5 : Nathan Woods added new debugger properties: logunmap, logunmapd, logunmapi which enable/disable logging of unmapped memory accesses. Andrew Gardne fixed a 0-length comment bug (no more "// 0, " allowed), added comment output to the new debugger's dasm command and changed the comment save path from /mame/comment to /mame/comments. New debugger features [Aaron Giles]: New command "print" is a simple way to display the result of one or more expressions. New command "symlist" displays all the symbols registered. All save state registered scalar globals are now available as symbols (prefixed by a '.'). All save state registered global arrays are now available for viewing/editing in the memory window. All registered memory regions are also available for viewing/editing in the memory window. - 0.104u4 : Andrew Gardner added comments support to the debugger. You can now dynamically add comments that are visible next to the disassembly view. Comments are saved to an XML-based .cmt file in a 'comments' directory by default upon exiting. Debugger changes/updates [Aaron Giles]: Added new streaming text buffer system, rewrote the console window to use the streaming text buffer, added new log window (Ctrl+L) which displays live error.log output, added disassembly view menu to control comments versus raw or encrypted opcodes, added disassembly menu to the main console window as well, now detect expressions with assignment or ++/-- operators as commands, do you can just say "pc=0" to modify registers instead of needing to type "do pc=0" and fixed bug that would sometimes lock the disassembly view to the top line. - 0.104u3 : Aaron Giles added a new file debugger.h contains abstracted debugging interfaces for both debuggers. Added a new call mame_debug_break() and a new macro DEBUGGER_BREAK to make it easier to hard-code breakpoints into code. Removed all old code that directly whacked debug_key_pressed or called debug_halt_on_next_instruction and replaced them with calls to DEBUGGER_BREAK. Aaron Giles added a number of new properties to the debug views to allow for more flexibility in the way the views are displayed. Also added an option to the disassembly window to display encrypted opcode data on the right. smf replaced -high_priority with -priority, you can now specify from -15 to 1. The default is -15 as this makes Dell laptop keyboards work. It still won't raise the priority if running with the debugger, but it will lower it. Fixed a subtle bug at the same time as -high_priority was only working when you used rdtsc. - 0.104u2 : Aaron Giles cleaned up structs/unions in the debugger and Windows code to match the new core conventions. - 0.104u1 : Juergen Buchmueller updated the old debugger recognize ~ prepended registers. - 0.104 : Aaron Giles fixed miscomputed registers view size in debugger and removed all but the default debugger font from the source distribution. - 0.103u5 : Nathan Woods and Aaron Giles added support for registers that are not to be displayed in the register list. This is useful for registers like AX on i386, so that AX can be used in expressions but not represented on the register list. Simply precede the register name with '~' to prevent display. - 0.103u4 : Nathan Woods changed debug view property code to pass property values as unions rather than void pointers, in order to appease compilers that whine about strict aliasing. - 0.103u3 : Alex Jackson fixed in the old debugger the display of opcodes for word-addressed CPUs like the TMS32010, which was completely broken before. Nathan Woods added CPUINFO_PTR_DEBUG_SETUP_COMMANDS: a callback that is invoked to tell CPU cores to set up commands specific to a CPU core. Aaron Giles separated debugger break key from OSD display. They can now be programmed differently. Also fixed behavior in the new debugger when using the break so that text doesn't get entered onto the command line. Aaron Giles and Nathan Woods fixed the handling of address masking and display within the debugger. Aaron Giles fixed order of operations in the expression engine (src\debug\express.c) if functions were used. - 0.103u2 : Debugger Improvements [Nathan Woods]: Added a 'gtime' command; like the "go" command, but breaks after a specified delay. - 0.103u1 : Nathan Woods added new debugger command traceflush. - 0.103 : Nathan Woods added an atexit handler to ensure trace files are closed in the debugger in the event of an early exit. - 0.102u5 : Aaron Giles added new debugger command 'map', which tells logical -> physical mappings as well as what read/write handlers are connected to an address. Also added 'mapd' and 'mapi' for performing the same operation on data and I/O space. AWJ fixed instruction alignment in the old debugger and added support for 64-bit qword display. Nathan Woods moved M6809, HD6309 and Z80 disassemblers to the new interface and did some cleanups. - 0.101u3 : Nathan Woods reduced how often the debugger display is refreshed if stepping and steps_until_stop is a high number. This makes commands like 'step #10000' a bit more usable. Aaron Giles added rudimentary hotspot detection to the debugger. Type "help hotspot" for details on how it works. Aaron also cleaned up the way the debugger hooks into the memory subsystem. Now, on each CPU switch, the debugger queries the memory system for callbacks to be called on every read/write. This allows more efficient watchpoint tracking and allows for non-watchpoint debugging behaviors like the hotspot detection. And Aaron fixed activecpu_dasm() and cpunum_dasm() to detect the presence of an updated disassembler and wraps the calls to that rather than crashing. - 0.101u2 : Aaron Giles added support for logical mapping to the CPU interfaces and debugger. CPUs that have an MMU now need to support several new interface bits, including a logical address mask and page size for each address space, as well as a new translate function. There is also a new disassembler interface that should be used going forward, which will make it much simpler to keep the disassemblers standalone and not dependent on MAME functions for opcode accesses. Converted the i386 core to use the new interfaces. - 0.100u4 : Changed break/watchpoints in the new debugger to display in hex. [Anonymous] - 0.100u2 : Some under-the-hood debugger changes [Olivier Galibert]: Added an osd-private void * to debug_views and made view sizing more dynamic. - 0.98u3 : Aaron Giles changed memory display in the debugger so that it doesn't lock to where the cursor is. Also fixed it so that it can align against odd addresses. - 0.97u3 : Aaron Giles fixed crash in the debugger when decoding instructions that were too long. - 0.97u2 : Nathan Woods added code to flush error.log every time the debugger is entered. Aaron Giles added support for character constants in the expression engine. - 0.97u1 : Aaron Giles made the expression engine in the debugger a little more generic to support its use in other tools. Moved gearshift display in polepos to debug-only build. - 0.96u4 : Aaron Giles improved Windows-specific memory debugging to track file/line numbers for allocations. This required a couple of changes to the core makefile. And he fixed remaining memory leaks in the new debugger code. Nathan Woods added logerror and memdump commands to the new debugger. - 0.96u3 : Old debugger no longer forces the memory display to 16-bit words regardless of the size specified with the M command. [Andrew Church]. Aaron Giles added 'find' command to the new debugger for performing memory searches. Nathan Woods changed trace and traceover commands so they can append to existing files by placing '>>' before the filename. - 0.96u2 : Nathan Woods added a -debugscript command line parameter that invokes a debugger script on startup. Aaron Giles added the ability to specify internal read/write handlers for CPUs so that the new debugger can view internal RAM. Hooked this up for the TMS32025 core. - 0.96u1 : Brad Oliver fixed big endian issues in the old debugger (debug\mamedbg.c). - 0.95u6 : Nathan Woods fixed debugger to close all trace files when quitting. - 0.95u4 : Nathan Woods added better protection against crashing in the debugger. - 0.94u5 : Aaron Giles turned off debugging code in the hotspots, giving a HUGE speed improvementto the V-unit games. - 0.94u4 : Ville Linde fixed memory dumping problem in debugger at very high addresses. - 0.94u2 : Aaron Giles added sound balancing assistance display to debug builds. - 0.93 : Nathan Woods changed in src/debug/debugcpu.c an instance of memory_get_read_ptr() to memory_get_op_ptr(). - 0.92 : Nathan Woods modified debugger to use memory_get_op_ptr() to determine if opcode memory is unmapped. - 0.91 : Debugger enhancements [Nathan Woods]: Adds a 'source' command, that reads in a set of debugger commands similar to the UNIX shell command of the same name, added a debug_trace_printf() call, for use during debugging to emit text into a trace file and petty compiler warning fixes. - 0.90u4 : Nathan Woods fixed the Debugger. Removed the VK_HOME and VK_END cases for the WM_KEYDOWN event. As far as I can tell, the default action does the trick, and additionally, Shift+Home and Shift+End are also handled correctly. - 0.90 : Nicola Salmoria fixed memory leaking and added a check in debug builds. Angelo Salese fixed a disassembler bug with the NEC V20/V30/V33 CPU core. - 0.89u5 : Nathan Woods added 'TRACEOVER' support to the debugger (see help). Aaron Giles added new Debugger Commands: - snap [] - takes a snapshot and saves it to the given ; if is omitted, this is equivalent to hitting F12 - gi[int] [] - executes until the current CPU takes the interrupt line specified by ; if is omitted, executes until any IRQ is taken on the current CPU. This has been mapped to F7 as well. - gv[blank] - executes until the next VBLANK; this is useful for stepping frame-by-frame from within the debugger. This has been mapped to F8. - 0.89u4 : Nathan Woods fixed a history list overrun in New Debugger when the down arrow key is pressed when the history list is empty. - 0.89u3 : Trace in debugger now defaults to current active CPU if non specified [Nathan Woods] - 0.89u2 : Aaron Giles fFixed sound issue when in debugger. - 0.88u5 : New debugger improvements [Aaron Giles]. Improved the drawing code on the Windows side so that the background color changes align properly (mostly noticeable when using the cursor in the memory view). - 0.88u4 : Misc debugger updates [Aaron Giles] - 0.88u3 : New Windows based debugger [Aaron Giles] - 0.85u1 : R. Belmont fixed a debugger crash when using F10 with the i960 core. - 0.85 : Nicola Salmoria fixed debugger memory access for 64-bit CPUs. - 3rd June 2004: Aaron Giles - I decided to take the plunge and start in on the debugger reworking I've been planning for a while. The new debugger relies on more support from the OSD layer to handle multiple windows and text-based drawing, but it allows a ton more flexibility than the old debugger. The cross-platform core is also greatly expanded in capabilities, supporting multiple breakpoints, conditional breakpoints, full-fledged watchpoints, a full expression parsing engine, and lots more. Hopefully I'll have the first pass submitted in the next few weeks, since I'm starting to close in on having enough features implemented to make it a win over the old debugger. - 0.82u2 : Nathan Woods enhance the debugger: Attempting to start a trace with non-existant registers will now raise a warning in the MAME debugger and implemented mame_debug_trace_write() call, an API to allow injecting text into the trace files of the MAME debugger. smf added a patch, so you can output traces to the console ( or grep etc ) by typing. - 0.81u4 : Aaron Giles fixes the debugger. This is a quick attempt to make the debugger more useable with the new memory system. The masking of addresses and data should now be working properly again. Also, you can go to any memory window and type 'P' to view program address space, or 'T' to view data address space. - 17th March 2004: Bryan McPhail fixed a hard crash that occurred when trying to debug HuC6280 code. - 14th March 2004: Sebastien Volpe submitted a bugfix for the debugger when switching window backwards. - 0.80u1 : Bryan McPhail fixed the opcode view which in some cases displayed too many bytes on 32 bit CPUs such as 68020 and Hyperstone. - 0.77 : Aaron Giles enable the OSD for non-debug builds regardless of the -debug flag. - 22nd August 2003: Nathan Woods added an optional facility to guard against ROM/RAM address range overflows, it is only enabled in debug builds. - 0.72u1 : Nathan Woods cleanup and fix of set_ea_info() so that negative offsets of 8 or 16 bits do not have extraneous FF's in front of them. More proper fix to the scanline display bug that prevented registers from being edited when the scanline display was on. 6309dasm.c - better message for when invalid opcodes are disassembled - 4th August 2003: Nathan Woods fixed a bug in the debugger that occurred when editing CPU registers. - 0.70u5 : Nathan Woods introduced a "debug cookie"; when in debug mode, puts a cookie value in the mame_file structure to prevent files from being closed twice without an assertion. - 11th June 2003: smf fixed the data size parameter of the DUMP command in the debugger, and he fixed the SAVE command that only used to work on 8-bit CPUs. - 1st June 2003: Pierpaolo Prazzoli added a debug sanity check for I/O ports. - 14th May 2003: Nathan Woods fixed a minor bug where entering the debugger didn't work sometimes. - 23rd November 2002: Bryan McPhail fixed a bug when switching between 68020 and 68000 in the debugger. - 24th October 2002: Reip fixed a bug in the DASM command in the debugger. - 11th October 2002: Aaron Giles fixed the address shifting code in the debugger. - 10th October 2002: Nathan Woods added a current scanline and horizontal beam position display to the MAME debugger. - 7th September 2002: Paul Priest sent in a patch to disable frameskipping when the debugger is activated. - 21st July 2002: Nathan Woods submitted another patch, improving the debug output. - 11th February 2002: Bryan McPhail fixed the screen not updating when using the debugger or pausing the emulation. - 3rd December 2001: Brad Oliver added some debug code to warn about some possible mis-uses of the internal timers. - 19th November 2001: Aaron Giles fixed a bug where the DUMP command in the debugger caused it to crash. - 14th November 2001: Aaron Giles re-submitted some debugging features that haven't been included yet. - 24th October 2001: Aaron also added a debugging feature to help tracing the crashes. - 23rd October 2001: Aaron Giles added a debugging feature to the Windows version which allows catching of some memory access bugs. - 11th August 2001: Nicola Salmoria fixed a bug in the debugger. - 6th June 2001: Aaron Giles fixed a debugger bug which caused the game window not to update properly. TILEMAP SYSTEM & SPRITES: - 0.99u8 : Aaron Giles added save/restore of tilemap parameters. - 0.94u2 : Fixed some bad GfxLayout [Atari Ace] (battlera.c, dcon.c, decocass.c, funkybee.c, jedi.c, merit.c, ojankohs.c, omegaf.c and srumbler.c) - 0.90u4 : Aaron Giles added a user_data field for tilemaps. You can call tilemap_set_user_data() to set this field internally in the tilemaps. Before rendering, this value will be copied into the (new) global tile_info.user_data field, so that your tilemap callback can use it. - 0.87u1 : Andrew Gardner modified tilemap.c so ROZ and RGB_DIRECT can be used together - 0.80u2 : Aaron Giles fixes various timer bugs and corrected some problems with SlySpy. - 0.79u1 : Nicola Salmoria converted all 80s Namco drivers to tilemaps, and made gfx emulation more accurate according to schematics. Curt Coder converted Jackal to tilemaps and fixed problems created when pacland was converted to tilemaps. - 1st February 2004: Curt Coder converted Gun Smoke, '1943' and Jackal to tilemaps and fixed other stuff in them. - 22nd December 2003: Curt Coder converted the Prehistoric Isle, Psychic 5 and Tunnel Hunt drivers to use the tilemap system, adding flipscreen/cocktail mode in the first two. - 17th November 2003: Curt Coder submitted cleanups and tilemap conversions for Cloak & Dagger, Jail Break, Pac-Land and Omega Fighter. - 26th July 2003: Olivier Galibert fixed a slight bug in the drawgfx functions, caused by some recent optimization. - 11th July 2003: Converted another few drivers to the tilemap system. - 0.71u1 : Acho A. Tang added tilemap_get_transparency_data() for transparency cache manipulation. Converted more drivers to use tilemaps. - 0.71 : Converted a bunch of drivers to tilemaps, fixed dipswitches etc. - 20th May 2003: Phil Stroffolino sent in a preliminary version of the new mixgfx graphics system, which allows some drivers to emulate their graphics priorities perfectly. - 11th April 2003: Eabair fixed a potential crash bug in the tilemap disposing code. - 9th April 2003: Phil Stroffolino sent in an update to drawgfx with preliminary zdrawgfx support and other fixes. - 31st March 2003: Paul Priest integrated the drawgfx updates and Acho's shadows/highlights updates. - 30th March 2003: Phil Stroffolino sent in a beta version of drawgfx with z-buffer support. - 25th March 2003: Acho A. Tang added support for 32bpp shadows and highlights in the core, improving the quality of some graphical effects in Mystic Warriors. - 4th March 2003: David Haywood converted the Super Qix driver to the tilemap system. - 2nd March 2003: Bryan McPhail fixed a crash in the tilemap viewer. - 18th November 2002: Olivier Galibert ported tilemap naming and pause brightness updates to 0.62. - 29th July 2002: Olivier Galibert added support for naming tilemaps and seeing the names in the tilemap view. - 7th June 2002: Aaron Giles fixed a problem with the tilemaps which could cause crashes. - 12th April 2002: Aaron Giles converted all the Atari drivers for the tilemap system and added some protection workarounds for Primal Rage and Road Riot's Revenge, but neither of them is perfect. - 23rd March 2002: Aaron Giles fixed the corrupt vertical lines in the tilemap graphics in several games. - 21st March 2002: Aaron Giles fixed a crash in the tilemap system. - 20th March 2002: Aaron Giles re-added Andrea Mazzoleni's MMX optimizations to the latest tilemap changes. - 15th March 2002: Aaron Giles did a minor update on the tilemap system, adding some minor speedups. - 11th March 2002: Aaron Giles fixed a bug in the tilemap routines which caused problems with asymmetric tilemaps and rotation. - 19th February 2002: Farfetch'd optimized the tilemap functions without having to use MMX. - 17th February 2002: Andrea Mazzoleni optimized a few tilemap functions with MMX, gaining about 5% to 10% more speed. - 9th December 2001: David Haywood sent in a Psikyo driver which allocates tilemaps during startup instead of during the emulation. - 30th November 2001: Uki converted the Fairyland Story / Onna Sanshirou driver to tilemaps and fixed some palette and sound problems. - 23rd November 2001: William Kucharski and Phil Stroffolino fixed the tilemap crashing, hopefully for good. - 22nd November 2001: Stefan Jokisch partially fixed another tilemap crash bug. - 2nd November 2001: Olivier Galibert resubmitted the OS dependant keys and tilemap viewing support. - 31st October 2001: Aaron Giles moved bitmap allocation to the core code as opposed to being in the OS-dependant code. - 29th October 2001: Olivier Galibert added tilemap viewing with the F4 key. - 12th October 2001: Phil Stroffolino fixed the tilemap bug which caused the Green Beret cocktail mode problem. - 1st October 2001: Insideoutboy fixed a tilemap bug which occurred when screen size didn't match the tilemap size. - 6th September 2001: David Haywood converted the Car Jamboree driver for tilemaps. - 19th August 2001: Olivier Galibert fixed bugs in the tilemap and drawgfx routines which affected Xexex graphics. - 11th August 2001: David Graves fixed Taito TC0480SCP and TC0080VCO chips' emulation to work with the new tilemap system. Phil Stroffolino did initial optimizations to the new tilemap system and cleaned up some obsolete definitions. - 8th August 2001: Bryan McPhail updated the Taito F3 driver to work with the new tilemap system. - 7th August 2001: Aaron Giles converted Pipe Dream and Tetris to the tilemap system. Nicola Salmoria adjusted the tilemap system to work better with Chequered Flag. - 6th August 2001: Phil Stroffolino sent in an update to the tilemap system, adding support for larger tile sizes and improving the rotation and zooming support. - 4th August 2001: Zsolt Vasvari converted D-Day to tilemap system and added shadow support to it. - 23rd July 2001: Nicola Salmoria added general support for shadows and highlights and used it for some Konami games. - 22nd July 2001: Phil Stroffolino added rotation and zoom support to the tilemap system - 19th July 2001: Phil Stroffolino updated the Nemesis graphics emulation, converting it to tilemaps. - 14th July 2001: Nicola Salmoria converted the CPS video hardware for tilemap system. - 12th July 2001: Nicola Salmoria decrypted the sprite graphics in both, so they are now fully playable. - 11th July 2001: Tatsuyuki Satoh fixed a long-standing bug in the tilemap system and converted Appooh to the tilemap system. Phil Stroffolino sent in another tilemap system update. - 28th June 2001: Phil Stroffolino updated the tilemap system, changing the set_transmask function to require specifying the front and back layer masks. - 26th June 2001: Phil Stroffolino added internal support for 4 bpp tilemaps to the tilemap system. Nicola Salmoria fixed a small bug in the new tilemap system. - 20th June 2001: David Graves converted the Cabal driver for tilemaps and fixed a few graphics problems. - 2nd April 2001: Olivier Galibert fixed a bug in the tilemap system which caused crashes under certain conditions. - 28th March 2001: Nicola Salmoria fixed a drawgfx.c bug that caused missing sprites in CVS games. - 11th March 2001: Nicola Salmoria fixed a drawgfx bug that caused missing sprites in Asterix. - 9th March 2001: Nicola Salmoria added 4bpp packed graphics support to the core. - 17th February 2001: Jürgen Buchmüller managed to get the background tiles partially working in the DECO Cassette system driver, but the graphics are still not perfect. - 16th February 2001: David Graves added sprite/tile priority to the Darius driver. - 11th February 2001: Quench sent in a Toaplan2 update which fixed disappearing sprites in the Raizing games. Phil Stroffolino sent in a tilemap system update which fixes a few bugs and is faster. Olivier Galibert re-merged his alpha blending functions into Phil's new tilemap system and fixed a few bugs in drawgfx functions. - 1st February 2001: Phil Stroffolino sent in the first version of the new tilemap system implementation, while better inside, it still lacks optimizations. - 18th January 2001: David Graves added proper sprite flipping support to Top Speed, fixing the round tunnel entrance graphics. - 14th January 2001: David Graves added double width tilemap support to the TC0480SCP chip emulation. COLOR PALETTE: - 0.91 : Nicola Salmoria fixed a problem in palette_get_color() causing an incorrect value to be returned in some specific cases (pointed out by Angelo Salese). - 4th August 2003: Acho A. Tang submitted an improvement to the highlight calculation in the palette functions. - 17th November 2002: Olivier Galibert fixed the palette regeneration when reloading a saved state. - 30th April 2002: Aaron Giles replaced the palette array in palette initialization functions with a function that changes the colors. - 21st January 2002: Jarek Burczynski fixed a long-standing (almost five years) color PROM decoding bug, which resulted in a slightly too low blue component of the color in about 60 drivers. - 13th July 2001: Nicola Salmoria completely removed 8bpp modes and updated a lot of files. - 4th July 2001: Olivier Galibert simplified color mapping in 16bpp modes to make it easier to add shadow handling. - 16th June 2001: Shiriru fixed sprite priority and added sprite transparency in the CPS-2 games. - 7th May 2001: Bryan McPhail added pixel layer color emulation to the Taito F3 driver, fixing a few color problems. - 25th April 2001: Aaron fixed the palette problems in Cyberball. - 22nd April 2001: Zsolt Vasvari fixed the colors in Dark Planet. - 14th March 2001: Nicola Salmoria fixed the color palette in Luca's SunA 8-bit driver. - 13th March 2001: Bryan McPhail added correct color palette emulation to Hard Head. - 16th February 2001: Olivier Galibert fixed a bug in palette.c which affected the alpha blending games. VECTOR: - 2nd March 2004: Alex Eddy fixed a vector clipping bug in the core vector functions. - 0.79 : Stefan Jokish fixed crash when taking screenshots of rotated vector games. - 5th December 2003: Brad Oliver sent in a small change to align bitmap lines to 16-byte boundaries for vector optimizations. - 24th July 2003: Frank Palazzolo sent in yet another fix for the positioning in some vector games. - 23rd July 2003: Frank Palazzolo fixed some positioning and clipping bugs that occurred in some vector games after the cleanups and fixes. - 20th July 2003: Frank Palazzolo cleaned up the vector graphics emulation and added capability to use an external vector renderer (for example a real vector monitor). - 15th February 2003: smf fixed a resolution selecting problem when rotating vector games with hardware stretch. - 21st January 2003: Bryan McPhail fixed an infinite loop in the Atari vector generators. - 2nd August 2002: Ken Reneris added phosphorescent persistence emulation to the vector graphics drawing code, possibly improving the look & feel of vector games. - 1st June 2002: Bernd Wiebelt added configurable vector intensity. - 29th May 2002: Aaron Giles fixed a bug in resizing the screen with vector games. - 30th January 2002: Aaron Giles added better vector sparkle effect emulation as used in Major Havoc and Tempest. Zsolt Vasvari made the artwork functions a bit faster, added the blue overlay for Phantom II and re-added the yellow overlay for Gunfight and the backdrop for Boot Hill. - 2nd October 2001: Mathis Rosenhauer fixed the bug which caused vector games to save incorrect screenshots. - 4th September 2001: Mathis Rosenhauer converted all vector games to use the direct RGB modes. - 3rd September 2001: Mathis Rosenhauer added support for direct RGB modes in the vector graphics functions. - 28th June 2001: Olivier Galibert fixed the vector games' resolution override setting. - 7th April 2001: Bernd Wiebelt fixed some problems in the screen flip / rotate support in the vector routines. - 5th April 2001: Nicola Salmoria added screen flip / rotate support to the vector routines, but the changes are not yet complete. - 18th March 2001: MASH submitted an adjustable vector flicker added to the on screen display. - 1st February 2001: Mathis Rosenhauer fixed a crash that occurred when vector games were rotated. RESOURCE MANAGEMENT: - 0.103u4 : Nathan Woods fixed resource allocation issue with bitmaps in the Windows code and MESS. - 18th January 2006: Aaron Giles - If you're writing a driver, or adding save state support to a driver, it's important to understand how resources are managed in MAME. In the old days, resources in MAME weren't tracked at all: if you did a malloc(), you had to do a free(); if you did a timer_alloc() you had to do a timer_free(), etc. Except that you probably didn't bother in a lot of cases because the standard command-line version of MAME only runs a single game at a time, and so it didn't really hurt to leave a bunch of extra resources allocated when you quit. Of course, those other ports like MacMAME — which allow you to stop one game and start another without quitting — would find that they would eventually crash due to running out of memory or some other resource thanks to all the leftovers. Enforcing good resource management in the core is pretty straightforward: it is a relatively small amount of code, and doesn't change very quickly. However, enforcing good resource management across the hundreds of drivers is pretty much a nightmare. Drivers are hooked into the main system by providing callbacks. This is a list of the common ones: DRIVER_INIT, VIDEO_START/VIDEO_STOP and MACHINE_INIT/MACHINE_STOP. Most drivers allocate resources in either MACHINE_INIT or VIDEO_START, and in theory are supposed to provide a MACHINE_STOP or VIDEO_STOP callback to free those resources. In practice, this was used inconsistently, and it's also kind of a pain. Furthermore, some systems would allocate memory in DRIVER_INIT, but there was nowhere to properly free the memory. I suppose we could have added a DRIVER_STOP callback, but ultimately a different approach was taken. If you think about it logically, 99% of the time, you would want MACHINE_STOP to free up all the resources allocated by MACHINE_INIT. Similarly, you would want VIDEO_STOP to free up all the resources allocated by VIDEO_START. So what if, instead of reqiring each driver to write code to release the resources, the core simply kept track of which resources were allocated when and automatically released them at the appropriate time? Turns out this works pretty well. If you look at the ordering of when the callbacks are called, it looks like this (excuse the pseudo-code): init// {// DRIVER_INIT// VIDEO_START// reset:// {// MACHINE_INIT// run-the-game-until-exit-or-reset// MACHINE_STOP// }// if we-exited-due-to-reset then loop back to reset:// VIDEO_STOP// }// exit. You'll notice that I have a couple of sets of curly braces embedded in the above pseudo-code. This gives you a hint as to how the automatic resource tracking works. It's very much like local variables in C/C++. As you leave each scope, all the tracked resources that were allocated within that scope go away automatically. When you hit the closing curly brace between MACHINE_STOP and VIDEO_STOP, the core will release all resources that were allocated since the corresponding open curly brace, which includes anything that was allocated at MACHINE_INIT time, as well as any tracked resources the core allocated at that time. Similarly, when you hit the second closing curly brace, all tracked resources allocated by DRIVER_INIT and VIDEO_START will be released. Note that I said tracked resources. Only certain resources are tracked, and some of them need to be explicit. Timers, for example, are always tracked. Anytime you allocate a timer in MACHINE_INIT, it will be released when you exit the inner scope. In fact, timers are tracked in such a way that there is no explicit timer_free() call anymore; you have to rely on resource tracking to get rid of them. The most obvious resource is not automatically tracked, and that is memory. The reason it is not automatically tracked is that there are some legitimate reasons for doing a malloc() and having it survive the boundaries of a scope. You can manually have MAME track memory by using auto_malloc() instead of malloc(). auto_malloc() works identically to malloc() except that any memory allocated will automatically be freed when you exit your current scope. You must be a little careful here because if you do an auto_malloc() in MACHINE_INIT and store that pointer in a global variable, the memory will be freed when the game is reset and MACHINE_INIT will be called again. Your global variable will still have that same pointer value, but the memory will be gone. The right approach is to never look at the old value of a global pointer like that, and simply always auto_malloc() in your MACHINE_INIT callback. Another common resource that needs to be manually tracked is bitmaps. There are auto_bitmap_alloc() functions that create bitmaps which are automatically reclaimed when leaving the current scope. The last major "resource" that is tracked in this fashion is a recent addition: saved state registrations. Prior to recent changes in the system, you could only register data to be saved in the outer scope (DRIVER_INIT/VIDEO_START) and no later. This was because MACHINE_INIT may be called multiple times if you hit F3 and reset the game, and the saved state system cannot handle duplicate reigstrations (I know, it doesn't seem that hard, but there were some major complications). In order to manage this, when you exit a scope, all saved state data that you registered within the scope will be forgotten, meaning you will need to re-register it again. Since the most likely case is that you registered it in your MACHINE_INIT callback, and since after a reset you will get another call to MACHINE_INIT, this doesn't really mean you need to do anything special. Simply perform your registrations there like nothing happened and it will all work out fine. - 0.99u5 : Significant changes to the save state system [Aaron Giles]: Added alternate save state pre-/post-load function types that take integer or pointer parameters. Updated several sound cores and other files to take advantage of this. Made state handler registrations track like other scoped resources (timers, memory) so that registrations can occur as late as MACHINE_INIT time. Added logic to detect registrations after MACHINE_INIT time and prevent saves in that case. Added logic to detect when CPUs or sound chips haven't registered anything to save/load. When this happens, info is logged to error.log and saves/loads are disallowed. Allocated timers are now automatically saved and restored as part of the save state. The global time is now restored as well as a bunch of CPU execution state. This should produce more reliable restores. Added logic to defer saves until all anonymous timers have cleared. If a driver uses many anonymous timers it may not be possible to ever successfully save, so the operation will time out after one second. Before restoring, the machine is now reset. This gives a more consistent environment for the load to occur. Re-enabled save state support for YM2151. Added save state support to the classic Namco sound system. Added save state support to the samples sound system. Removed anonymous timer usage in machine/scramble.c. - 15th January 2002: Aaron Giles sent in the major core rework, adding much more macroization, adding automatic resource management for bitmaps and timers, obsoleting the old interrupt system and adding generic NVRAM handlers. - 10th January 2002: Aaron Giles reported some progress on a major core rework, changing machine drivers to a macro system and automatizing timer and video drivers resource management. TIMER SYSTEM: - 3rd April 2004: Aaron Giles fixed the hard lockups that occurred in games that use scanline-based timers. - 18th March 2004: Aaron Giles fixed a potentially problematic timer bug pointed out by Raphael Nabet. - 15th March 2004: Aaron Giles fixed a interrupt queueing problem that started happening with the new interrupt/timer system. - 26th February 2004: Aaron Giles fixed a problem with resetting games that was caused by the integer timer system. - 0.79u2 : Aaron Giles update the Timer System: The timer system is now integer-based instead of floating-point based. It requires 64-bit ints. I've defined a new type 'mame_time' which is a 96-bit time value. There are 32 bits for counting full seconds, and 64 bits for counting subseconds. This type is used extensively in the core timer system and the CPU scheduler. The accuracy of the new system is down to 1 attosecond (10^-18 seconds). This may seem excessive, but for a 100MHz CPU, each clock cycle is 10^10 attoseconds. That works nicely because 100MHz divides evenly. For a 96MHz CPU, each clock cycle is 1.041666667 * 10^10 attoseconds. Rounding, we lose 1/3 of an attosecond per cycle in error. Multiply that error by 96000000 and you end up with an error of 32000000 attoseconds. Fortunately, that's only 0.032ns, but if I had much less accuracy than this, the errors would start to add up in a more significant way. All the existing APIs are still around, and doubles can still be passed as arguments. But they are all immediately connverted to 'mame_time' values for processing. The old system had some drifting errors due to FP rounding which are gone now. - 20th February 2004: Aaron Giles - The second core change I just submitted last night was a change to make the timer system use integers internally instead of floating point values. This has been on my to-do list for years, and I finally got the courage up to potentially break everything once again with a timer change. Fortunately, my limited testing indicates that things aren't really broken for the most part (except Hard Drivin', which always breaks anytime I change anything, and which I've already fixed). The main reason for using integers is accuracy. With floating point, the more time that accumulated, the more error we would see in the low bits. This was leading to some timing drift and other subtle errors. The new code keeps track of everything down to the nearest attosecond, which, by my calculations, only loses 1 cycle on a 96MHz CPU once every 5 minutes. And that's a case I manufactured to deliberately expose an error. - 0.75u1 : Aaron Giles attempted to fix remaining timer system related bugs - 0.75 : Aaron Giles fixed some bugs introduced with the timer system changes a while back. Now uses the active callback as a base time when adjusting timers outside of a CPU context. - 12th October 2003: Olivier Galibert and Aaron Giles fixed more bugs in the timer system and SH-2 CPU core. - 10th October 2003: Aaron Giles sent in another update to the timer system, fixing Exterminator and the Atari polygon games. - 0.70u5 : Nathan Woods fixes a bug in visible area changing in windowed, non-stretch mode and changes timers so that they are now 'mame_timer *' instead of 'void *'. - 0.69b : Aaron Giles fixed a problem which caused sound to break in games using a YM2610 using the new timer system. - 30th May 2003: Aaron Giles sent in the new timer code that cleans up the core significantly and allows for perfect synchronization if needed. - 25th April 2003: Stefan Jokisch sent in another bug fix to cycle counting in the timer system. - 23rd April 2003: Stefan Jokisch fixed a bug in the cycle counting that occurred when a new timer was fired within the current time slice. - 12th May 2003: Aaron Giles sent in an update to the timer system that moves the CPU scheduling from the timer system to the CPU execution engine, causing a lot of problems in different drivers so it'll need a bit more work before it gets included. - 3rd March 2003: Aaron Giles fixed a subtle bug in the timer functions that could cause a one-shot timer to get re-fired sometimes. - 27th November 2002: Aaron Giles fixed a bug in scanline timing that occurred if a game changed the visible area dynamically. - 19th March 2002: Aaron Giles improved the idle timeslice releasing by using more accurate timers. - 17th March 2002: Aaron Giles added support for idle timeslice releasing, which will avoid using 100% of the processing power with the less demanding games. INIT/RESET/RUNNUNG/PAUSE/EXIT ROUTINES: - 0.104u5 : Aaron Giles added mame_get_phase to determine which program phase (init/reset/running/exit) the system is in. This is intended primarily for assertions to enforce rules about when certain actions can be taken. - 0.104u4 : More initialization/reset/pause cleanup [Aaron Giles]: New function add_pause_callback can be called by other modules to register a callback for whenever MAME is paused/resumed, converted all existing pause hooks to use the new system, new function add_reset_callback can be called by other modules to register a callback for whenever MAME is reset, converted all existing reset hooks to use the new system, removed machine_reset; replaced with mame_schedule_soft_reset, new function mame_schedule_exit to force an exit cleanly from external events, removed all the "trying_to_quit" crap from the Windows code, moved save/restore system out of cpuexec.c into mame.c, moved core game loop out of cpuexec.c into mame.c and added hard reset support (complete tear down and re-init). - 30th December 2003: Erik Sipman submitted a modification to pause MAME automatically when it loses focus. - 18th November 2002: Olivier Galibert ported tilemap naming and pause brightness updates to 0.62. - 28th October 2002: Nathan Woods changed MAME to pause when the window is dragged or resized. - 1st September 2002: Olivier Galibert made the pause brightness level configurable. - 2nd June 2002: Ian Patterson fixed a bug in changing sound volume while paused. - 1st June 2001: Nicola Salmoria fixed CPS-2 games from crashing when resetting them. - 29th May 2001: Bart Puype submitted a fix for itech8 games crashing when resetting them. VALIDITY CHECKS - 0.105u1 : Aaron Giles added a warning during validity checks to point out empty memory regions. These should either be eliminated or marked with an explicit fill value (ROMREGION_ERASE00 or ROMREGION_ERASEFF) to clear the warnings. - 0.104u8 : Aaron Giles added -validate command to perform system-wide validation and exit with a proper errorcode. - 0.104u6 : Nathan Woods added validity checks to ensure CPU core completeness. - 0.104u5 : Nathan Woods added several validity checks related to display variables. Aaron Giles fixed bug that caused a full set of validity checks even on release builds. - 0.101u5 : Aaron Giles also rewrote most of the validity checks so the full set now completes in well under 1 second, minus I/O time from paging in data. Also added region size checking versus memory maps to the validity checks. Moved all validity checks to a new file validity.c. - 0.101 : Aaron Giles added validity check to ensure driver names are 8 characters or less. - 0.100u3 : Aaron Giles removed -skip_validitychecks option now that the time to execute the checks is not as bad. Paul Priest changed validity checks to use hashes for speed. Also changed them to only run on the drivers in the source file of the current game, rather than on all games, in non-debug builds. And fixed the coinage sorting check so that it doesn't depend on the linker to order the strings in a particular way. - 0.88 : Derrick Renaud added a runtime option to disable validity checks (-[no]skip_validitycheck). That forces MAME to skip doing the code validity checks. The default is OFF (-noskip_validitychecks). This new option will default to doing the test and force you to confirm you do not want to use it. This way users can test their submissions easily and then speed things up when confirmed ok. NOTE: DO NOT disable the checks when submitting code. - 0.87u2 : Nathan Woods created a MAME_VALIDITYCHECKS macro that when defined, can specify whether validity checks should be run. If undefined, it defaults to running the validity checks. This will facilitate turning off validity checks in MAME derivative projects. Please DO NOT turn these off if you are making changes to the Mame source, any changes which fail the validity checks will be rejected. DIPSWITCHES: - 0.104u7 : Aaron Giles added new PORT_DIPLOCATION() macro which allows you to specify the physical PCB location of a DIP switch and the switches that correspond to the bits in the DIPSETTING. See sega.c for an example. - 0.93u1 : UI Changes [Nicola Salmoria]. Now shows grouped consecutive identical CPUs and sound chips in the game information screen, so games like Gyruss fit again. Bumped the MAX dip switches that can be handled by the dip switch menu to 256 (and adds bounds checking so it doesn't crash anyway). - 0.84u6 : Aaron Giles added support for conditional dipswitch settings. This allows for multiple equivalent entries but with different text depending on the state of another dipswitch. See mappy.c for an example of how this works to handle the changing bonuses based on the number of lives. - 3rd February 2004: Curt Coder submitted DIP switch and input fixes to Guardians of the Hood, Heat Barrel, Shot Rider and Fire Battle. - 6th October 2003: Brian A. Troha updated various drivers with documentation and DIP switch fixes. - 4th October 2003: El Condor submitted some DIP switch fixes to various drivers. - 0.72u1 : Paul Priest change so DIP menu isn't displayed if no Dipswitches are defined in the driver instead of flashing a blank menu when you try and enter it. athan Woods parameterized the setdipswitches() call; so that a menu that looks like the DIP switch menu can easily be made with different IPT_* values (MESS has a configuration menu that functions a lot like the DIP switch menu). - 8th August 2003: Brian A. Troha fixed DIP switch settings in various drivers. - 16th June 2003: El Condor and others fixed some inputs and DIP switches. - 18th March 2003: Smitdogg submitted a bunch of fixes to input ports and DIP switches in various drivers. - 26th February 2003: Milan Koci submitted some DIP switch fixes to various drivers. - 31st August 2002: Stephane Humbert fixed DIP switches and a few other things in the old SNK games' driver. - 5th June 2002: Stephane Humbert updated DIP switches and inputs in various drivers. - 29th May 2002: Stephane Humbert fixed DIP switches in various drivers. - 28th May 2002: Stephane Humbert fixed the inputs and DIP switches in various drivers. - 10th May 2002: William Kucharski re-submitted the various cocktail mode patches. - 1st April 2002: Stephane Humbert fixed the DIP switch settings and input ports in various drivers. - 5th March 2002: Stephane Humbert fixed DIP switches and inputs in various drivers. - 23rd January 2002: Smitdogg submitted a fix for the Mad Crasher DIP switch settings. - 3rd January 2002: William Kucharski re-submitted a lot of cocktail mode support and other small fixes for various drivers. - 1st December 2001: Smitdogg fixed DIP switch settings in Truxton 2. - 29th November 2001: Stephane Humbert fixed DIP switch settings and flipscreen support in a few drivers. - 27th November 2001: Stephane Humbert fixed DIP switch settings and input ports in Congo Bongo, Xevious and Zaxxon drivers. - 10th November 2001: Stephane Humbert fixed DIP switch settings and input ports in several drivers. - 7th November 2001: Kale resubmitted some DIP switch and input port fixes. - 6th November 2001: Pierpaolo Prazzoli submitted several fixes for input ports and DIP switch settings. - 3rd November 2001: William Kucharski resubmitted a load of flip screen support and cocktail mode patches. - 19th October 2001: William Kucharski submitted a truckload of cocktail mode fixes to various drivers. - 6th September 2001: Gerardo Oporto fixed DIP switch settings in some Nichibutsu drivers. - 22nd August 2001: Takahiro Nogi corrected the DIP switch settings in the Final Romance driver. - 26th July 2001: Gerardo Oporto updated the Sega System E driver, fixing DIP switch settings in Hang-On Jr. - 25th July 2001: Marco Cassili fixed DIP switch settings in many M-92 games. - 17th July 2001: Marco Cassili fixed DIP switch settings in Oh My God. - 14th July 2001: Uki fixed DIP switch settings in the Nemesis / Gradius driver. - 24th June 2001: inside out boy added DIP switch settings and state saving to the Solomon's Key driver. - 15th June 2001: Gerardo Oporto added correct DIP switch settings to the Sega System E driver. - 29th May 2001: Brian A. Troha submitted the correct DIP switch settings for Macross and Macross 2. - 19th May 2001: Aaron Giles fixed the DIP switch settings in Shuffleshot. - 10th May 2001: Stephane Humbert submitted a few dip switch settings fixes. - 25th April 2001: Stephane Humbert submitted some dip switch fixes to several drivers. - 23rd April 2001: Gerardo Oporto fixed dip switch settings in Exzisus. - 21st April 2001: Marco Cassili fixed dip switch settings in Tunnel Hunt. - 10th April 2001: Marco Cassili fixed dip switch settings in suna8 and balsente drivers. - 9th April 2001: Zsolt Vasvari fixed the dip switch settings in Phoenix and Pleiads. - 7th April 2001: Guru fixed dip switch settings in Yie Ar Kung Fu. - 29th March 2001: Gerardo Oporto fixed yet more dip switch settings in the Taito L driver. - 27th March 2001: Gerardo Oporto fixed some dip switch settings in the Taito F2 driver. - 20th March 2001: Marco Cassili fixed some more dip switch settings. - 19th March 2001: Marco Cassili fixed dip switch settings in a few drivers. - 18th March 2001: Uki added screen flip and fixed some dip switch settings in Momoko 120%. - 16th March 2001: Marco Cassili fixed dip switch settings in Gunnail, Mouja and Momoko 120%. - 11th March 2001: Marco Cassili fixed some dip switches in the Seta games. - 9th March 2001: Mike Coates improved the ASM 68k core's save state support. - 8th March 2001: Marco Cassili fixed some dip switch settings in Rolling Thunder and Konami Twin16 games. - 15th February 2001: Gerardo Oporto fixed some more Taito drivers' dip switch settings. Marco Cassili fixed dip switch settings in Chinese Hero. - 10th February 2001: Gerardo Oporto fixed dip switch settings in Taito B system and Ninja Warriors drivers. - 31st January 2001: Marco Cassili added the dip switch settings to the Roller Aces driver. - 31st January 2001: Gerardo Oporto fixed dip switch settings in the Taito L system driver. - 9th January 2001: Gerardo Oporto fixed some more Taito games' dip switch settings. - 4th January 2001: Gerardo Oporto fixed dip switches in the Top Speed driver. INPUT PORTS: - 0.105u3 : Derrick Renaud fixed incorrect lightgun names. - 0.104u7 : Nathan Woods and Aaron Giles added new function input_port_set_changed_callback() which lets you receive a change notification when certain bits in an input port have changed. See sega.c for an example. Aaron Giles added new PORT_CUSTOM() macro which allows you to specify a callback to return the value of bits in an input port. This saves you from needing to intercept the port read and modify the bits there. See sega.c for an example. Aaron Giles moved read/write handlers for input ports, watchdog and interrupt enable out of the core and into machine/generic.c. Updated raw mouse support for Windows XP [Derrick Renaud]: Reversed the RAWMOUSE device list. RAWMOUSE reports the last installed mouse as the first device. I now place new mice at the end. Added clipping to RAWMOUSE support so the cursor does not leave the game area in Windowed mode. Also fixed the non-RAWMOUSE Windowed mode clipping I broke by my last changes. You can now see the names of the mice attached by using -verbose. Changed Lightgun functionality if using XP. You no longer need to use -lightgun or -dual_lightgun. Use -mouse and multiple (2+) "HID-compliant mouse" lightguns will be detected. Lightgun support in Win98/Me remains unchanged. -offscreen_reload can still be used on Win98/Me/XP. See windows.txt for further info. - 0.104u5 : Updated windows input code [Derrick Renaud]: Now using RAWMOUSE mode if available. This means you can now use multiple mice in Windows XP. Lightgun support has not been changed yet. Added back DX7 support for the windows input system to support multiple mice. It was set to DX5 in 104u2. Removed the system mouse from the list of available mice on non-XP systems. This allows you to now properly select the individual mouse. Modified the Analog Axes selection of the player controls to be more responsive. - 0.104u1 : SilverFox fixed default gun location for a number of lightgun games. - 0.103u3 : Nathan Woods cleaned up PC keyboard code. - 0.99u10 : Aaron Giles fixed bug in INP recording that crashed MAME. - 0.99u8 : Aaron Giles made input port conditionals work more generically. This necessitated a bit of a minor reorg in the input port code. Please verify that controls work as before. This change has also required a modification to how analog ports are recorded, so existing INPs may not work. - 0.99u7 : Aaron Giles fixed custom analog input settings saving (analogconfig099u6). - 0.99u2 : More input port cleanup [Aaron Giles]: Fixed input port handlers that used the port_tag_to_handler calls. Simplified the reading/writing of input ports so they work more reliably. Only write changed settings to the .cfg files. Fixed saving of analog port configurations. - 0.98u4 : Anssi fixed seq_analog_value(), the value 0 was ignored. - 0.96u4 : Aaron Giles added 4 different crosshair styles to differentiate different players' crosshairs. - 0.96 : Jonathan Lunman fixed -dual_lightguns option. - 0.95u5 : Fixed Windows-specific input bug (windows\input.c) introduced in 0.95u4. [Aaron Giles] - 0.95u3 : Speed up reading of input ports with a lookup list. [wpcmame] - 0.94u2 : Allow for more than 40 entries in the Analog menu [Christopher Stone]. Robin Merrill added scroll mouse support. - 0.92u1 : James Wallace updated Mahjong drivers to use new default controls. - 0.92 : James Wallace updated some mahjong drivers to use the new standard inputs. - 0.90u4 : Aaron Giles added standard Mahjong inputs to the input port (inptport.c). - 0.88u2 : Aaron Giles fixed a Joystick Axis problem. - 0.88 : Input Port System Update [Aaron Giles] PORT_INCLUDE() works the same as before. PORT_MODIFY("tag") allows you to modify any given input port by specifying its tag. Any PORT_BIT() entries that you put after a PORT_MODIFY will nuke any matching entries in the previous definition, allowing you to overwrite them with new stuff. Aaron added also a few new functions: readinputportbytag_safe() takes a tag and a default value. If the tag is not found, the default value is returned. port_tag_to_handler8(), port_tag_to_handler16() and port_tag_to_handler32() -- these 3 new functions take a tag string, find the input port, and return the appropriate handler. They can be used in AM_READ, so instead of: AM_RANGE(0x00, 0x00) AM_READ(input_port_1_r). You can use AM_RANGE(0x00, 0x00) AM_READ(port_tag_to_handler8("MyPortName")). Aaron modified exidy.c to use these features as a testbed. Let me know if you see any problems. - 0.87u1 : Barry Rodewald changes the INP routine. asically, reading/writing analog port data every single time interpolate_analog_port() isn't a good idea, especially since it's called every time readinputport() is. So moved the analogue port reading/writing into the for loop, so analogue ports are only read/written if the port is actually is analogue. - 0.87 : Norix added support for 16 joystick buttons. - 0.86u3 : Aaron Giles fixed the random key mappings bug. Also the reversed pedals now work correctly (e.g., brake in Hard Drivin') and all relative controls (dial, trackball, mouse) scale the same regardless of the number of bits allocated for that port. - 0.86u1 : B.S. Ruggeri fixed some inputs. - 0.86 : Nathan Woods fixes PORT_INCLUDE by making the final IPT_END appended within input_port_allocate(), added some MESS specific defaults and spelling fix in IPT_BILL default. - 0.85u2 : Aaron Giles renamed PORT_CENTER to PORT_RESET to more accurates describe what it does. Also added PORT_CENTERDELTA(x) to control the autocentering behavior. El Condor fixed a number of recent errors introduced into the input port definitions of several drivers. - 0.85u1 : Aaron Giles fixed loading of ctrlr files so that they actually take effect now, changed all the analog mapping defaults back to 'keyboard' as the default values were confusing people, fixed bug preventing saving of lightgun control changes and Added the ability for analog axes to return "invalid" as a value from the OSD layer, allowing them to dynamically disable themselves. Using this feature, the Windows version now autodetects analog versus digital axes and dynamically disables the analog values if it thinks you are using a digital axis. Note that this even works if you have a "switchable" gamepad. - 0.85 : Aaron Giles added feature to the general input settings so that if you hit Esc to cancel setting a new input sequence, it toggles between "None" (old behavior) and the default. This is similar to the change that went into u6 for the game-specific inputs. Also changed the way the remapping works in the ctrlr .cfg files so that it works more like the way the old system did and fixed load order for ctrlr files so that they don't stick in the default.cfg if you switch between ctrlrs. He also added a new port type IPT_OTHER to use for controls that don't map in a standard way. Modified all the Mahjong games to use this instead of 0 for the port type, and changed the UI to recognize this and show it in the game-specific inputs. - 0.84u6 : Aaron Giles disabled input to the game while the user interface is in active use (prevents keypresses from affecting the underlying game). Made it possible to assign game-specific inputs to "None", effectively disabling them. To do this, select the input and hit enter, then cancel by hitting escape. Previously, cancelling would always reset you to the default key sequence for that input. Now, MAME alternates between the default key sequence and "None". Added groupings to the master controls list so that the list size is not so unwieldy. Added core-level support for the previously only Windows-supported controller files. These files now have the extension .cfg instead of .ini and are in the same format as the new XML-based .cfg files. See the ctrlr directory for some examples. Improved handling of interpolation for analog ports so that they don't wrap around and cause artifacts. Improved -verbose output display to enumerate all joysticks and joystick axes that have been detected. Useful for the new -digital command line parameter. Added a command line parameter to control which joystick axes are considered digital. If you are using a digital gamepad with MAME, you will want to use this option. There are a number of ways to do this: * -digital all means that all axes of all connected joysticks will be treated as digital. * -digital none means that all axes of all connected joysticks will be treated as analog (this is the previous behavior). * -digital j2 will treat all axes of joystick #2 as digital; axes on all other joysticks will be treated as analog. * -digital j1a0a1 will treat axis 0 and 1 on joystick #1 as digital; all other axes will be treated as analog. * -digital j1a0a1,j2a5 will treat axis 0 and 1 on joystick #1 as digital, as well as axis 5 on joystick #2; all other axes will be treated as analog. Make use of the new -verbose information to determine which joysticks and axes you should be configuring this way. El Condor removed PORT_CHEAT from a number of drivers and documented the cheats in the port names. - 0.84u5 : Aaron Giles fixed several bugs in the new input system and removed PORT_CENTER from drivers that were using it for autocentering and added a user-configurable autocentering property that applies to all absolute analog controls. Also made this autocentering intelligent so that it shouldn't need to be manually set to 0 if using a real analog device. - 0.84u4 : Aaron Giles added a number of commented-out default strings and modified all drivers to use them. Revamped most of the input and input port system. This means a number of changes for those who do their own OSD layer. All input APIs are now unified -- there is no notion of "keyboard" versus "joystick" anymore. The configuration of ports has changed a bit now as well. You can now map any analog axis to an analog port in the standard input UI. There are now three entries per analog port. The first entry is the analog mapping. The second and third control the digital decrementing and incrementing sequences. To map an analog axis, just hit ENTER and then move the axis in question by a large amount. Added 32-bit port read handlers, and extended input port internals to 32 bits. - 20th July 2004: Aaron Giles - After struggling to patch up the input port system with the recent changes, I've finally come to the conclusion that it has been hacked and patched way too much over the years so I am doing a serious cleanup/reworking. While I'm at it, the .CFG files are moving to XML format. Next release should be a big barrel of laughs while the kinks get ironed out. - 0.84u2 : Aaron Giles fixed a bug that prevented changes to the default controls from sticking. El Condor cleaned up PORT_CHEAT and tagged ports for a number of drivers. - 0.84u1 : Aaron Giles fully obsoleted the old input ports, modifying all drivers to use the new forms. Added a number of new PORT_* macros to handle all the previously-defined flags and fixed several issues with the new input port system. - 0.84 : Nathan Woods added new input port definitions, similar to the new memory map definitions. You can continue to use the old PORT_BIT, PORT_BITX, and PORT_ANALOG macros for now, but it is preferred going forward that all ports use only PORT_BIT, and append all other flags and options using the new macros. See pacman.c for an example of the new format. The new input ports also support tagging for easier tracking of ports, and the ability to import port definitions from another set. - 0.83 : Nathan Woods witched input_port_allocate() to use auto_malloc(), removing the need for input_port_free(). - 0.82u3 : Nathan Woods added more MESS specific stuff within #ifdef MESS in inptport.h. - 0.79u3 : Nathan Woods changed key_trans_table to be non static and renamed to win_key_trans_table (this table is now used in MAME32). - 0.79u1 : IP_KEY_PREVIOUS and IP_JOY_PREVIOUS are no longer used by any Namco driver: they may be removed from the core [Nicola Salmoria]. - 0.78u5 : Support USB Keyboard LEDs [smf]: led_mode ps/2 is the default and uses DeviceIOControl and led_mode usb uses keybd_event(). This only affects windows nt/2000/xp. There might be a way of using DeviceIOControl to change the led's on usb keyboards, but I can't find it. Using keybd_event() may have problems restoring on exit, but at least it does work. - 0.78 : Bryan McPhail improved Lightgun code / reload handling: '-lightgun' now enables the lightgun only - no button remapping is performed. '-reload' (formally '-offscreen_reload') is now needed for 2nd button presses to map to offscreen shots. '-dual' (formally '-dual_lightgun') adds support for the Actlabs Dual Lightgun setup, it may be used with and without '-reload' and it requires '-lightgun'. This mode attempts to automatically remap the player 1 & 2 buttons to suit the lightgun setup. If it doesn't work you probably need to delete the .cfg file for that game. - 18th December 2003: Curt Coder fixed inputs in a few games in the Sega System 32 driver, in Relief Pitcher and in WEC Le Mans 24 / Hot Chase. - 14th December 2003: Bryan McPhail sent in an update to the lightgun support, adding support for dual lightguns and fixing other things. - 19th November 2003: El Condor submitted some input port fixes. - 18th November 2003: Curt Coder fixed the inputs in Sonic the Hedgehog and Dead Angle / Gang Hunter. - 12th November 2003: Dave D. submitted a few input port and DIP switch corrections to various Midway drivers. - 7th November 2003: Howard Casto submitted a bunch of fixes to input port defitinions. - 6th November 2003: Robin Merrill fixed the input ports in various games that mapped the 'A' key instead of nothing to some inputs. - 27th October 2003: Howard Casto submitted some more input port fixes to various drivers. - 8th October 2003: Submitted fixed inputs to Hanaroku and cocktail mode fixes to the Shoot Out driver. - 26th September 2003: Howard Casto submitted a bunch of drivers with old pedal hacks replaced with the new z axis and second pedal inputs. - 22nd September 2003: Bryan McPhail sent in a patch to the light gun support code to fix shooting outside the screen. - 18th September 2003: Robin Merrill fixed the default settings for the player 5-8 pedal2 input sequence. - 7th September 2003: Stefan Jokisch fixed a user interface bug that caused the selector to jump around when editing an input in the general input menu. - 5th September 2003: Robin Merrill further improved the 8 controller support. - 4th September 2003: Robin Merrill submitted an improvement to the 8 player support, adding proper JOYCODEs for devices 5-8 and increasing the maximum number of mice and joysticks to 8. Nathan Woods sent some more MESS-specific fixes to the core. - 3rd September 2003: Stefan Jokisch improved the 8 player support and fixed a crash that happened when entering the general inputs menu. - 31st August 2003: Stefan Jokisch added 8 Player support to the core. - 15th August 2003: El Condor re-submitted some input port fixes. - 4th May 2003: Lawrence Gold forwarded a few patches to add support for multiple mice button inputs and more joystick buttons. - 18th March 2003: BUT fixed a bug that happened when using -skip_gameinfo with -nojoy. - 17th March 2003: Nathan Woods fixed possible crashes when reading certain INI files. - 1st March 2003: Carlos Irigaray submitted another fix for light guns and frame skipping. - 17th February 2003: Carlos Irigaray fixed a problem in light gun suddenly jumping around, and he fixed a light gun problem in Bang!. - 1st September 2002: Bryan McPhail fixed several problems with the light gun support. - 22nd July 2002: Robin Merrill fixed an input bug in light gun games with analog joysticks. - 8th July 2002: Paul Priest added support for reading controller .ini files named after the driver file name. - 26th June 2002: Ron Fries fixed a small typo in the input remapping system. - 19th June 2002: smf merged the various input system updates. - 18th June 2002: Robin Merrill submitted a patch to allow mapping of analog joystick inputs and fixed a bug regarding pedal inputs. - 14th June 2002: Bryan McPhail updated a few more drivers for the light gun support, and changed the order of mouse buttons. - 13th June 2002: Bryan McPhail submitted a major update to the input system, adding support for light guns. - 5th June 2002: Robin Merrill submitted an improvement to the input support that allows remapping of the analog joystick inputs and it also fixes a bug with analog joysticks. - 29th May 2002: Bernd Wiebelt added a configurable dead zone for analog joysticks to the Windows version. - 14th May 2002: Derrick Renaud submitted an addition of proper optical joysticks input to the Exterminator driver. - 10th May 2002: Ron Fries fixed a memory corrupting bug in the new controller input remapping support. - 12th April 2002: Ron Fries sent in another update to the controller-specific .ini file support system. - 4th April 2002: Ron Fries added a little better support for joysticks with start and select buttons. - 25th March 2002: Ron Fries finished adding the support for adding controller-specific mapping using .ini files. - 24th March 2002: Paul Priest re-submitted the improvements to the hotrod/hotrodse presets. - 21st March 2002: Ron Fries started adding support for re-mapping inputs using standard .ini files. - 7th February 2002: Paul Priest improved the key remapping with the hotrod/hotrodse presets. Robin Merrill re-submitted his analog pedal support patch which fixes several driving games' inputs. - 12th December 2001: Phil Stroffolino submitted a change to the input port system that is more responsive and intuitive with the 4-way joystick games. - 8th December 2001: Robin Merrill submitted an improved patch to fix analog pedals. - 10th November 2001: Stephane Humbert fixed DIP switch settings and input ports in several drivers. - 7th November 2001: Kale resubmitted some DIP switch and input port fixes. - 6th November 2001: Pierpaolo Prazzoli submitted several fixes for input ports and DIP switch settings. - 14th October 2001: Martin M. submitted some changes to various drivers, such as correct input ports. - 28th August 2001: Robin Merrill submitted a hack to improve the handling of analog pedals. - 0.53 : Aley Keprt support for C64/Atari/Sinclair joysticks connected via DB9 or Turbografix interface. - 9th August 2001: David Graves made the default light gun values centered to overcome problems with some input devices. - 11th May 2001: Aaron Giles added an easier way to set names for buttons. - 22nd April 2001: Zsolt Vasvari added the spinner emulation. - 4th March 2001: Warlock submitted an update to the input port routines, fixing some bugs and improving wheel and pedal support. Bryan McPhail fixed Super Chase input ports and cleaned up the driver a little. - 22nd February 2001: Aaron Giles fixed a bug in the analog port input system which sometimes caused analog inputs to jump quickly between the minimum and maximum values. - 16th February 2001: Nicola Salmoria fixed the input ports for third and fourth player in the CPS-2 games. - 12th February 2001: Jarek Burczynski added trackball control to Rambo III in addition to joystick control. FILE SYSTEM: - 0.103u5 : Nathan Woods fixed osd_fopen error reporting to return the correct value if you hit MAX_OPEN_FILES. - 0.103u2 : Lawrence Gold fixed fileio.c buffer overrun. - 0.84u3 : Andrea Mazzoleni fixed the generic_fopen() function to ensure that a rom CRC is present before using it. Otherwise, for NO_DUMP roms an uninitialized string variable is used in the search. - 0.81u9 : Andrea Mazzoleni changed file handling behavior, adding a one character buffer. - 17th June 2003: Nathan Woods sent a small patch to the Windows file I/O functions, changing the file read mode to support reading files opened by MAME in other programs too. - 5th June 2003: Paul Priest fixed a memory leaking bug in the .ini file reading functions. - 21st January 2003: Chris Kirmse sped up the data file handling. - 9th December 2002: Aaron Giles removed attribute caching in the core file I/O functions. - 1st December 2002: Chris Kirmse added a function to the Windows file I/O that helps MAME32. - 25th November 2002: Aaron Giles improved file read performance in the Windows version. - 24th November 2003: Nathan Woods merged some MESS code in the file I/O functions. - 22nd November 2002: Aaron Giles cleaned up the Windows file I/O and path handling. - 21st November 2002: Aaron Giles changed the file I/O to happen mostly in the core instead of the OS dependant part, and he modified the routines to automatically generate the snap, cfg, nvram etc. paths if they are missing. - 18th November 2002: Rene Single fixed the bug in datafile routines that caused some missing information. - 27th February 2002: Aaron Giles fixed some more problems in the updated file routines. - 19th February 2002: Aaron Giles cleaned up the file I/O functions in the Windows version and added support for hard disk images. USER INTERFACE (UI) & CONFIGURATION: - 0.105u4 : Giuseppe Gorgoglione fixed UI positioning when artwork is enabled. - 0.104u7 : Aaron Giles added code to the UI to sort the per-game inputs in a standard order. - 0.100u4 : Aaron Giles changed ui_popup to display longer by default for longer messages. He also added "Uptime" to the bookkeeping info displayed in the UI. Nathan Woods updated usrintrf.c to work better with MESS. - 0.99u3 : Significant overhaul of the user interface infrastructure [Aaron Giles]: All user interface rendering is now cached until the end and rendered in one pass. A large number of extraneous and redundant functions have been removed and replaced with a smaller set of more flexible APIs. Global access to the UI fonts and colortables is now gone, they are private to the user interface code. All global user interface function names have been normalized. Most importantly, usrintf_showmessage is now ui_popup. Pause behavior has been redefined; instead of sitting in a tight loop, the code proceeds normally, but the CPU execution system does not advance time. Code for the menus has been reworked; some menus are temporarily not available (cheats, memory cards). Removed the internal display of history.dat. Cramming this kind of data into MAME's limited UI is not really useful, and viewing the history.dat information is supported by many frontends and websites. - 0.96u2 : Aaron Giles swapped On Screen Display and Config Menu items so that accidental key configuration changes don't kill your ability to get to the menu by default. Curt Coder added the ability to clear an input configure via the delete key (inptport.c). - 0.96 : Aaron Giles added explanation that left/right joystick wiggle works on "OK" screens. - 0.93u1 : UI Changes [Nicola Salmoria]. Now shows grouped consecutive identical CPUs and sound chips in the game information screen, so games like Gyruss fit again. Bumped the MAX dip switches that can be handled by the dip switch menu to 256 (and adds bounds checking so it doesn't crash anyway). - 0.85 : Aaron Giles fixed a bug that prevented default controls that were set to "None" from saving/restoring properly. - 0.84u5 : Aaron Giles improved the CFG file format. - 0.84u4 : Aaron Giles changed the format of .cfg files to use XML. All old .cfg files are useless, just toss them away. This should allow for easier backwards compatibility in the future. - 20th July 2004: Aaron Giles - After struggling to patch up the input port system with the recent changes, I've finally come to the conclusion that it has been hacked and patched way too much over the years so I am doing a serious cleanup/reworking. While I'm at it, the .CFG files are moving to XML format. Next release should be a big barrel of laughs while the kinks get ironed out. - 0.84u1 : Aaron Giles removed support for older format CFG files and support for "cheat" ports and "reset CPU 0" ports. - 0.77u3 : Nathan Woods cleanups the UI string support, primarily to more easily support MESS specific strings without modifying MAME files. Also removed uistring_shutdown(), which is made unnecessary by auto_strdup(). - 5th December 2003: Nathan Woods cleaned up the UI string support, to help MESS functionality. - 0.77 : Nathan Woods adds a handful of comments to uifontdata, change character 14 to a solid circle; previously this character was blank and unused and miscellaneous changes within #ifdef MESS. - 0.75u1 : BUT fixed default.cfg saving - 25th September 2003: BUT fixed a bug where default key and mixer settings wouldn't get saved. - 14th September 2003: Stefan Jokisch added a little sanity check to the .cfg file loading, to prevent further problems with .cfg files that have been corrupted. - 6th September 2003: Nathan Woods sent in a patch that moves the .cfg file handling out of inptport.c into its own source file. - 4th September 2003: Stefan Jokisch fixed a bug that caused the volume settings get corrupted when loading old .cfg files. - 10th August 2003: Paul Priest changed the user interface so that the DIP menu item is not displayed if the game does not use DIP switches. - 31st October 2002: Nathan Wood merged in some minor user interface related changes. - 25th February 2002: Olivier Galibert made the full screen key configurable in Windows and fixed a few other user interface bugs. STATE SAVING: - 0.105u2 : Nathan Woods added PAIR and PAIR64 as valid save state types. - 0.105u1 : Aaron Giles changed memory save state registration so it doesn't register for saving memory areas that overlap memory regions. This means that drivers which rely on extra memory regions for RAM will need to fix that before supporting save. Aaron also added stricter type checking for save state registrations (only works in gcc). - 0.104u9 : Aaron Giles undo the use of timers to trigger save/restore of states. This leads to one less timer in the system, and hence will break the save states from previous versions. The current save state system is extremely sensitive to such changes, unfortunately. This will be addressed in a future version. - 0.104u3 : Aaron Giles added #include "state.h" to driver.h. This means most driver files no longer need to explicitly include it. Went through and removed it from most drivers. Save state changes [Aaron Giles]: Audited the use of save state registrations throughout the code, switching most cases over to using the state_save_register_global or state_save_register_item macros to simplify the code. Deprecated the save_state_register_ calls since nearly all cases can be automatically handled by the macros. For odd cases, there is now a save_state_register_memory call which is generic. Simplified the save state logic, allowing for unlimited instances and reducing the complexity of the code. This breaks existing save states. Sorry, I'll try not to do it again. - 0.104u2 : Aaron Giles added new function state_save_register_bitmap to simplify bitmap saving. - 16th February 2006: Aaron Giles - Part 4: In this final article in the series on adding save state support to MAME drivers, I will walk through the process of adding support to a basic driver. Although there were a number of great suggestions for which driver to look at, all the proposed drivers had a large number of games and some hidden complexities that would hide the fundamentals I am trying to illustrate here. So for this example, we will add save state support to the Return of the Jedi driver. To follow along, you will need MAME 0.104u2. The first step in adding support to a driver is to identify what files are relevant. For Return of the Jedi we have the obvious file drivers/jedi.c. There is also a matching jedi.c in the vidhrdw directory, so we will need to look at that as well. These are our starting points. From there, we should determine what the dependencies are. If a driver depends on code elsewhere in the MAME system, we need to make sure that that code also has save state support. The easiest way to do this is to look at the #includes at the top of each file. In drivers/jedi.c, we see that it references the m6502 CPU core (cpu/m6502/m6502.h), the TMS5220 sound core (sound/5220intf.h), the POKEY sound core (sound/pokey.h), and some generic video hardware functions (vidhrdw/generic.h). Doing my homework, I searched the CPU and sound cores to see if there were any state_save functions being called. The 6502 and TMS5220 already had support built-in. I did this before 0.104u2 was released and found that the POKEY emulator was lacking save state support, so I added it quickly to make sure we would be able to make this work. We’ll have to wait until we look more closely at the video system before we can determine what functions in vidhrdw/generic.c were used. - 14th February 2006: Aaron Giles - Part 3: Consider this a "sidebar" to the save state fundamentals articles. Part 4 will work through the driver example. This brief article is meant to explain the new and improved memory banking changes that went into MAME a little while back. In the "old days", let's say you had a banked ROM which you loaded like this: ROM_LOAD ( 0x0c000, 0x1000, CRC(...) SHA1(...) ) and ROM_CONTINUE( 0x10000, 0x7000 ). This is a common way of loading a banked ROM. Bank 0, which lives in the first 4k, is loaded at the address where the CPU actually reads data from. The remaining banks are loaded outside of the CPU's address space (in this case, the CPU is an 8-bit CPU with a 16-bit address space, so it can't access memory beyond 0xFFFF). Then you would need to map the memory where the ROM appears in the address space, as well as a handler for actually changing the banks. Let's say it looked something like this: AM_RANGE( 0xc000, 0xcfff ) AM_ROMBANK(1) and AM_RANGE( 0xffff, 0xffff ) AM_WRITE( bank_select_w ). - 12th February 2006: Aaron Giles - Part 2: So, after reading part 1, you now know that in order to save the state of a driver, you need to register with the save state system all the bits of memory that need to be preserved. The next obvious questions is, how does it actually work? As I mentioned before, all registration must occur in the window between early initialization and just after the driver's MACHINE_INIT callback is called. The reason for this is simple: after that point, the game is actually up and running, and the user can request a save at any point thereafter. Before a request to save the state can actually transpire, the state of the system must meet a few basic requirements. Usually these are met within a few milliseconds of the save state request, so it is usually not noticeable what is happening under the covers. To begin with, a save will only occur in between timeslices of CPU execution. That is, the state will only ever be saved at the start of a round-robin timeslice of the CPUs. This reduces the chances that any CPU will be in an odd state. The second major requirement is that there can be no "anonymous" timers active in the system. What is an anonymous timer? It is any timer that is set using the timer_set call. Timers created this way are one-shot disposable timers and are intended primarily for things like timer_set(TIME_NOW)-style synchronization callbacks. Some games (including many I've written unfortunately) will cascade these anonymous timers by calling timer_set in the callback from a previous timer_set. This means that at any given instant, there is always at least one anonymous timer pending, and you will get an error after 1 second if the system can't get to a state where there are no pending anonymous timers. (The solution to this problem is to create a timer at init time using timer_alloc and then use timer_adjust on that timer to get the same behavior). Once these requirements are met, the actual save can occur. - 31st January 2006: Aaron Giles - Part 1: Before adding save state support to a driver in MAME, it's important to understand how the overall save state system works. But first, a word of warning: it's been said in the past that adding save state support to a driver is easy. Let me clarify that by saying: adding save state support a driver is relatively easy if you know C well. How do you know whether or not you know C well? Read onward, and I'll explain. The basic concept of saving the state of any emulator involves first identifying all the information that represents the current state of the system, and then writing that data out to disk in some fashion for later retrieval. There are many ways this can be done. Let's look at the first step: what comprises the set of data that needs to be saved in order to fully represent the state of an emulated system? Some obvious candidates are: 1. The registers and internal state on each CPU, 2. Information about what each sound chip is doing, 3. The contents of all RAM (including video, palette, sound RAM) in the system, 4. All timing information, 5. The state of any peripheral devices (EEPROMs, IDE controllers, etc.), 6. The currently selected memory bank for banked RAM/ROM and 7. The state of any driver-specific devices. Fortunately, due to MAME's modular design, a lot of this is taken care of centrally. For example, many common CPU cores already have built-in support for saving their registers and internal state. Many common sound chip emulators do likewise. Similarly, the MAME core handles saving the contents of all RAM and timers. And many peripheral devices can save their state as well, as long as they have some sort of init() function that is called to set them up. This leaves memory banks and driver-specific devices as the two main things that need to be managed manually for each driver. - 0.101u4 : smf updated the save state interfaces. Added new macro state_save_register_item_pointer() for dynamically allocated arrays. - 0.101u1 : Deferred state loading until all anonymous timers have cleared. This fixes issues where the timers would fire after the load and would clobber data that was just loaded. Changed timer_alloc_ptr-style timers so that the pointer parameter is supplied at allocation time and is not changeable. This makes these timers more easily supported in save states. [Aaron Giles] - 0.101 : Aaron Giles hanged the timing of save state bank registration so that dynamically installed banks will work properly. Added new generic macros to state.h to make it simpler to do save states. Use state_save_register_global(var) to register a driver-related global variable. Use state_save_register_item(module, instance, var) to register other variables with specific module and instance names. Converted the MCR and Cinematronics vector saves over to this. As a result, save states for games will be incompatible with prior versions of MAME. - 0.100u4 : Aaron Giles added new driver flag: GAME_SUPPORTS_SAVE, to indicate drivers which have save state support that is supposed to work. Attempting to save state on a game without this flag will give a warning. Save state-related bugs may be filed against drivers with this flag set. - 0.99u7 : Aaron Giles fixed crash when running games whose CPU core did not support save states. - 0.99u6 : Aaron Giles fixed crash that was introduced with the state saving updates in 0.99u5. - 0.99u5 : Significant changes to the save state system [Aaron Giles]: Added alternate save state pre-/post-load function types that take integer or pointer parameters. Updated several sound cores and other files to take advantage of this. Made state handler registrations track like other scoped resources (timers, memory) so that registrations can occur as late as MACHINE_INIT time. Added logic to detect registrations after MACHINE_INIT time and prevent saves in that case. Added logic to detect when CPUs or sound chips haven't registered anything to save/load. When this happens, info is logged to error.log and saves/loads are disallowed. Allocated timers are now automatically saved and restored as part of the save state. The global time is now restored as well as a bunch of CPU execution state. This should produce more reliable restores. Added logic to defer saves until all anonymous timers have cleared. If a driver uses many anonymous timers it may not be possible to ever successfully save, so the operation will time out after one second. Before restoring, the machine is now reset. This gives a more consistent environment for the load to occur. Re-enabled save state support for YM2151. Added save state support to the classic Namco sound system. Added save state support to the samples sound system. Removed anonymous timer usage in machine/scramble.c. - 0.99u4 : Tim Lindner fixed the state save facility play better on multisession ports if initialization fails. - 0.95u3 : smf increased MAX_INSTANCES to 56 in src\state.c - 0.94u4 : BUT fix crash games using FM sound chips when you load state. - 0.84u5 : Andrew Gardner added generic support for save states on games using the generic bitmap video hardware. Also converted a number of drivers over to using that system. - 0.80u3 : Nathan Woods changed options.savegame to be a string (src/windows/config.c). If this is a one character string, then the save state is loaded as before. If it is a larger string, then cpu_loadsave_schedule_file() is used. Also added a state_save_check_file(); a call that front ends can use to validate a state save file (src/state.c). - 24th March 2004: Nathan Woods sent in a few changes to the save state system, adding support for validating state files and loading arbitrarily named files. - 17th March 2004: Bryan McPhail fixed another state saving related crash that happened in YM2610 games that don't use external sample ROM memory, for example Gun Frontier. - 19th January 2004: Olivier Galibert added 64 bit datatype support to the save state functions. - 0.78u5 : smf added Save state loading from command line. Adds -state to the windows version. The code was already in the core to handle it, all this patch does is allows you to set options.savegame Not sure how reliable it is, it worked for galaxian. - 0.78u4 : Aaron Giles fully integrated save/restore memory blocks. Before, the save/restore system had its own memory map walking routines. That's gone now. Instead, memory blocks are registered as they are allocated by the dynamic memory allocator. Note that this will likely cause save states to be bigger than they were before (and certainly, they will not be compatible), but disk space is cheap, live with it. - 27th November 2003: Leon van Rooij fixed the state saving support in the YM2610 sound core. - 2nd May 2003: Nathan Woods updated the 6821 PIA init function to support save states. - 7th January 2003: Bryan McPhail added save state support to V20, V30 and V33 CPU cores. - 12th July 2002: Nathan Woods adding save state capability to the TMS34010 CPU core. - 9th July 2002: Bryan McPhail fixed a crash that happened if you tried to save a state but didn't have the directory. - 24th June 2001: inside out boy added DIP switch settings and state saving to the Solomon's Key driver. - 7th June 2001: David Graves added save states, coin lockouts and counters to the Superman driver. - 31st May 2001: Tatsuyuki Satoh added state saving support to the FM sound core. - 30th May 2001: Shiriru added state saving support to the Cave driver and did many other fixes. - 23nd May 2001: David Graves added state saving support to the Asuka driver. - 21st May 2001: David Graves added state saving support to World Grand Prix and fixed some graphics problems. - 5th May 2001: David Graves added state saving support to the Taito H system driver. - 29th April 2001: Nathan Woods added state saving support for the 6821 PIA chip. - 23rd April 2001: David Graves added state saving support to Top Speed and did some minor cleanups. - 8th April 2001: Olivier Galibert fixed the state saving code to work in multisession environments. - 3rd April 2001: Jarek Burczynski added state saving support to the YM2151 sound core.# - 2nd April 2001: Jarek Burczynski added state saving support to ADPCM and OKIM6295 sound emulation cores. - 30th March 2001: David Graves and Jarek Burczynski fixed a few bugs and added state saving support to Rainbow Islands, Rastan and Operation Wolf. - 27th March 2001: Olivier Galibert fixed multi-z80 games that were broken because of a bug in the save state routines. - 26th March 2001: Olivier Galibert changed the keys that are used for state saving. - 25th March 2001: David Graves added state saving support to the Operation Thunderbolt driver. - 22nd March 2001: David Graves fixed some bugs in the Taito F2 drivers and added state saving support to Taito F2 and Darius drivers, but it still needs some work. - 12th March 2001: Olivier Galibert fixed a small save state bug which occurred with drivers using multiple identical CPUs. Brad Oliver fixed the state save routines to be proper ANSI C code. - 8th March 2001: Marco Cassili fixed some dip switch settings in Rolling Thunder and Konami Twin16 games. - 6th March 2001: Jürgen Buchmüller fixed some bugs in the state saving functions, added support for them to the DECO Cassette system driver. - 5th March 2001: David Haywood added state saving to the Sega C2 driver, fixed some small bugs in it and also added state saving to Ninja Kid. Olivier Galibert fixed a bug in the 6502 core which was introduced by the saved states support, and some Taito games that were broken because of some bugs in the state saving code. - 25th February 2001: Olivier Galibert added save states support, which works in Xexex, X-men and Bomb Jack already. However, every driver needs to be updated to include the save states. CHEAT ENGINE: - 0.104u4 : Ian Patterson fixed cheat timer to fire at the correct rate (cheat0104u3ora). Also fixed initialization order to work around dependency on the video/UI system. - 0.99u4 : Added memory card and cheat menus back into the system [Aaron Giles]. - 0.95 : Thorwak added 24-bit cheat finding support. - 0.94u1 : Atari Ace fixed cheat.c typo + other. - 0.83 : Ian Patterson fixed cheat engine bug preventing assignment of controller buttons as activation keys. - 21st December 2003: Martin Adrian submitted an update to the cheat system adding support for favourite cheats and not loading the cheat file until it is used. - 18th April 2003: Ian Patterson sent in an update to the cheat engine, fixing some bugs and adding a few new features. - 14th November 2002: Stephane Humbert re-added a small fix to the cheat engine. - 25th September 2002: Ian Patterson added new cheat types and fixed some bugs in the cheat engine. - 11th June 2002: Ian Patterson sent in a small bug fix to the cheat engine. - 11th April 2002: Ian Patterson sent in a new, completely rewritten cheat engine that allows for much more flexible cheats than currently. - 29th September 2001: Ian Patterson added support for NVRAM modification in the cheat engine, and he fixed a memory violation bug in it as well. - 25th July 2001: Ian Patterson updated the cheat engine with a few new features. - 19th June 2001: Ian Patterson fixed some cheat engine compilation problems. - 16th June 2001: Ian Patterson updated the cheat engine, adding ROM area writes and support for more cheats. - 19th April 2001: Ian Patterson submitted an updated version of the cheat engine, including a lot of bugfixes and functionality enhancements. inside out boy sent a fix for playing back inp files on certain games. SCREENSHOT / MNG: - 0.104u3 : New option -mngwrite, which records an MNG movie of the game from the get-go and allows you to specify a target filename [Buddabing]. - 0.99u7 : Mathis Rosenhauer fixed MNG recording size. - 0.99u4 : Fixed MNG recording problem that was introduced in 0.99u3 [Aaron Giles]. - 0.99u2 : Mathis Rosenhauer added MNG recording support (shift+F12 by default). - 24th February 2004: Nathan Woods fixed taking screenshots with artwork and wrong colors that sometimes happened when changing to fullscreen mode. - 27th January 2004: Stefan Jokisch fixed the screenshot function from crashing in some vector games. - 8th October 2003: Nathan Woods fixed a screenshot handling bug that affected Space Invaders. - 0.74u1 : McPhail Mame now recognises off-screen shots with the Act-Labs gun in a way which works better with certain drivers (Area 51 etc,) [Bryan McPhail] - 14th July 2003: Nathan Woods improved the snapshot saving cleanup patch. - 12th July 2003: Nathan Woods sent in another patch cleaning up the snapshot saving system. - 29th June 2003: Nathan Woods cleaned up the screen snapshot system to be more logical. - 27th August 2002: Luis Faria submitted a fix for the black & white screenshots and the vector game screenshot crashes. - 20th February 2002: Aaron Giles fixed an audit problem that caused problems when finding files by the CRC32, and he fixed snapshot handling and memcard saving in it. - 2nd October 2001: Mathis Rosenhauer fixed the bug which caused vector games to save incorrect screenshots. - 19th July 2001: Mathis Rosenhauer fixed screenshots of games that use less than 256 colors. - 27th April 2001: Mathis Rosenhauer added core functions for MNG (animated PNG) video capturing. - 28th March 2001: Lawrence Gold changed some function definitions in the screenshot routines. - 1st March 2001: Mathis Rosenhauer fixed screenshots in the direct color modes. ARTWORK: - 0.105u4 : Giuseppe Gorgoglione fixed UI positioning when artwork is enabled. - 0.103u5 : Aaron Giles rewroted artwork scaling function to compute accurate sum over all contributing pixels. This produces better results when scaling high resolution artwork down to lower resolutions. Kept existing bilinear filter for scaling low resolution art to higher resolutions. - 0.95u3 : smf added rudimentary support in artwork.c for resizing after a visible area change - 0.89u4 : BUT fixed the artwork070u4 bug (Some games get turned red when using artwork. Most likey anything using VIDEO_RGB_DIRECT and/or VIDEO_NEEDS_6BITS_PER_GUN. Ex.: spcinv95. Fix from BUT: artwork.c in function compute_rgb_components: change memcpy(rgb_components, rgb32_components, sizeof(rgb_components)); to memcpy(rgb_components, rgb32_components, sizeof(rgb_components[0]) * 3); artwork070u4ora) - 0.79u3 : Nathan Woods changed artwork_override_screenshot_params() so that its functionality will kick in whenever the artwork system is active, even without artwork pieces. And introduced a static artwork_system_active(); a call to check to see if the artwork system is active. - 31st December 2003: Erik Sipman submitted a modification to fill black borders with artwork without changing the resolution. - 15th August 2003: Nathan Woods fixed the crash that happened when artwork was loaded on clone drivers. - 6th June 2003: SirPoonga re-submitted the artwork filling edges support. - 13th April 2003: Sir Poonga submitted a new artwork option that crops the artwork just enough to make it fill the screen. - 2nd October 2002: smf fixed the -nobezel command line parameter to function correctly. - 15th July 2002: Valerio Verrando fixed the artwork functions to accept more than one path for the artwork files. - 9th July 2002: Brad Oliver fixed an artwork crash that happened with disabled bezels. - 11th June 2002: Aaron Giles fixed a bug in the new artwork system. - 6th June 2002: Aaron Giles fixed some more artwork bugs. - 4th June 2002: Aaron Giles fixed several artwork support bugs. - 30th May 2002: Aaron Giles fixed the artwork-related command line parameters. - 26th May 2002: Aaron Giles fixed a few artwork bugs. - 25th May 2002: Aaron Giles fixed another two bugs in the new artwork functions. - 24th May 2002: Aaron Giles fixed another crash bug in the new artwork functions. - 23rd May 2002: Aaron Giles fixed yet another load of bugs in the new artwork functions, and he added support for blit-time rotation which may or may not speed up some games, but it will at the very least make it easier to write custom drawing routines. - 21st May 2002: Aaron Giles optimized a few things in the new artwork system. - 18th May 2002: Aaron Giles fixed yet another pile of bugs that were caused by the artwork updates. - 17th May 2002: Aaron Giles fixed several bugs that were caused by the artwork updates. - 16th May 2002: Aaron Giles sent in a massive update to the artwork system, which is now much more flexible and easier to use. - 5th April 2002: Zsolt Vasvari added support for scaling graphics to allow higher resolution for artwork. - 30th January 2002: Aaron Giles fixed a crash with the artwork functions. Zsolt Vasvari made the artwork functions a bit faster - 27th September 2001: Mathis Rosenhauer added support for artwork that is of different size or position than the game graphics. - 25th August 2001: Mathis Rosenhauer fixed yet some more issues in the artwork functions. - 23rd August 2001: Mathis Rosenhauer fixed a crash bug in the artwork functions. - 21st August 2001: Mathis Rosenhauer added software alpha blending support to the artwork functions. - 17th July 2001: Mathis Rosenhauer removed 8bpp artwork support and cleaned up the artwork code. - 16th April 2001: Mathis Rosenhauer fixed another artwork system problem. SCANLINES/BLITTERS: - 0.104u2 : Derrick Renaud fixed Windows rendering code bug where -waitvsync had no effect when using -nohws -nod3d -notb. - 0.75 : Aaron Giles changed scanline timing to use floor() to get consistent results and fixed bug in time computation if requesting a scanline in the next frame. - 24th October 2001: Aaron Giles fixed a bug in scanline rendering which affected Turbo, and he fixed Hard Drivin' from crashing randomly. - 24th June 2001: Aaron Giles added RGB blitter effects to the Win32 version from AdvanceMAME. - 22nd June 2001: Aaron Giles added several MMX blitters and optimized the old ones too. - 20th June 2001: Aaron Giles optimized the new blitters a little. - 19th June 2001: Aaron Giles added 25%, 50%, 75% scanlines thanks to the blitter effects support. - 18th February 2001: Bernd Wiebelt fixed the 32-bit MMX blitting routines. LISTXML/INFO: - 0.104u3 : Nathan Woods added an optional xml_parse_options parameter to xml_file_read() and xml_string_read(), to provide options for preserving whitespace, error reporting and parser setup. - 0.104u2 : Aaron Giles added new function xml_read_string, which allows for parsing of internal strings into XML trees. - 0.101u4 : cutebutwrong added MAME build information to the listxml output and updated xml2info to handle the save state tag. - 0.101u3 : Oliver Stoneberg fixed DTD in the -listxml output. - 0.100u4 : Buddabing improved accuracy of joystick types reported in -listxml. - 0.94u1 : Updates to XML output [Logiqx] - 0.89u4 : Rene Single fixed bug 074u1ora (Games that start with parentheses in their description show up twice with using -listfull & -listgames. For example mmcamera.) - 0.85 : Logiqx added sourcefile attribute to the -listxml output. - 0.84u4 : MAME now requires the expat library for XML support. This is included in the distribution, and is built automatically by default. You can comment out BUILD_EXPAT in the main makefile to disable this behavior and link against a precompiled version if you wish. Similarly, zlib has been modified to do the same thing and is now included with the MAME source. Comment out the BUILD_ZLIB flag to turn off this behavior and link against a precompiled lib. [Aaron Giles] - 0.84u3 : Andrea Mazzoleni changed the "driver.status" entry in -listxml to summarize all the status entries allowing frontends to completely ignore all the other flags. - 0.84u2 : Change 'graphic preliminary' to 'graphic imperfect' in listxml output. - 0.84u1 : Fujix changed listxml to output all game flags. - 0.84 : Aaron Giles removed -listinfo option now that xml2info produces fully correct output and Logiqx fixes xml2info so that 'mame -listxml|xml2info' matches 'mame -listinfo' exactly. - 29th February 2004: Andrea Mazzoleni updated the -listinfo output a little. - 19th October 2003: James Bright submitted a modification to the -listxml function to also list the memory maps of the driver. - 0.71u2 : Added missing resources. - 3rd June 2003: Andrea Mazzoleni fixed some problems in the makefile with the xml2info program. - 25th May 2003: Andrea Mazzoleni sent in the first version of a XML to standard -listinfo format converter. - 21st May 2003: Andrea Mazzoleni fixed the "merge" element in the -listinfo output. - 4th February 2003: Paul Priest fixed a bug in -listinfo that caused it to report a too high number of players supported. - 16th November 2002: Andrea Mazzoleni fixed -listinfo with MD5 checksums. - 31st October 2002: Aaron Giles fixed the -listinfo output for HD images and added optional XML output. - 13th June 2002: Robin Merrill fixed a small omission in -listinfo. - 10th July 2001: Bernd Wiebelt fixed a command line bug with the -log parameter. - 3rd June 2001: Andrea Mazzoleni updated the -listinfo system, adding some extra information. - 23rd February 2001: Logiqx submitted some fixes to the -listinfo output. - 20th January 2001: Stig Remnes and Valerio Cannone fixed -listinfo to list the PC10 and CVS resources. OTHER DRIVERS: - 0.105u1 : Aaron Giles modified a number of drivers that were using empty RAM regions for RAM or which had extraneous memory regions. Most significant changes were to the arcadia, nss and stv drivers. - 0.104u6 : Nathan Woods added movie recording time to the internal profiler. - 0.104u5 : Aaron Giles fixed memcards properly. They are no longer hardcoded for the NeoGeo. The implementation has moved to generic/machine.c, and a callback handler very similar to NVRAM is now supported in the machine driver definition. Cards are created per-game, so the memcard directory now has a subfolder per game with each game's cards stored underneath. - 0.103u3 : William Krick fixed leapyear calculation. - 0.103u2 : William Krick and smf fixed some Leap Year calculates. - 0.99u4 : Fixed crash when running vector games that was introduced in 0.99u3 - vidhrdw\vector.c [Aaron Giles]. - 0.98u2 : Mamesick normalized names in Konami drivers according R. Belmont's wishes - 0.97u1 : Samuele Zannoli added home/end key support in the history display. - 0.96u4 : Aaron Giles cleaned up several video drivers that were using non-auto memory allocation functions for bitmaps and memory (vidhrdw\dogfgt.c, hng64.c, lemmings.c, mjsister.c, tatsumi.c, ygv608.c (namcond1.c)). - 0.92 : HIGHWAYMAN added missing PROMs to many drivers. - 0.90u3 : Steve Ellenoff added some missing SHA1s. - 0.89u5 : Fixed SH2 bounds overflow (thanks to Mame32Plus). - 0.89u1 : Atari Ace cleanup various driver. - 0.87u4 : Olivier Galibert fixed bugs introduced in u3 causing Atari / Midway drivers to crash. - 0.87u1 : Brad Oliver removed options.color_depth (obsolete anyway) - 0.85u2 : Rene Single removed the static MAX_DATAFILE_ENTRIES define, by retrieving the game count at runtime. - 0.84u5 : Jarek Burczynski added new function: compute_resistor_net_outputs() in res_net.h. This function calculates outputs (not weights) of color circuits where the hardware consists of open collector PROMs. - 0.84 : Logiqx added missing SHA1 checksums to several ROMsets. Nathan Woods added consistency checking for the year field. - 0.80u2 : Nathan Woods added hash_data_insert_printable_checksum() call and made things more const correct in src/hash.c - 17th February 2004: Curt Coder sent in memory map conversions and DIP switch / input cleanups for various drivers. - 0.79u1 : Aaron Giles cleaned up / merged various Atari drivers (clayshoo.c, cloak.c, cloud9.c, copsnrob.c, cyberbal.c, destroyr.c, eprom.c, fastfred.c, firetrk.c, flyball.c and foodf.c). - 8th February 2004: Nicola Salmoria sent in another Namco update, converting drivers to the tilemap system, fixing some graphics priority problems. - 5th February 2004: Nicola Salmoria sent in another big Namco drivers update, fixing many bugs, improving the custom Namco sound chip emulation and converting drivers to the tilemap system. - 27th January 2004: Aaron Giles fixed a bunch of drivers that were broken by the memory system changes. - 0.79 : Updated many Atari / Midway drivers to use new style Memory Maps and cleaned them up [Aaron Giles]. - 23rd January 2004: Aaron Giles cleaned up a bunch of Atari drivers. - 13th January 2004: Nicola Salmoria sent in a big Namco drivers update, converting them to tilemaps and merging a lot of the drivers, and documenting the easter eggs. - 0.78u1 : Paul Priest removed final traces of TESTDRIVER code. - 25th December 2003: Stefan Jokisch added some unused PROMs to a few drivers. Nathan Woods sent in another few miscellaneous patches to various files. - 0.78 : Olivier Galibert removed the 8.3 rom filename limitation. Removed '(hack?) from descriptions of newly added Raizing games, stickers on the boards seem to indicate they are genuine Korean release versions. - 3rd December 2003: David Haywood added the SHA1 checksums to the rest of the drivers. - 0.77 : Aaron Giles fixed bad handling of EEPROM data in 32-bit mode (machine/atarigen.c - all Atari raster games) and implemented the MO command register and checksumming (vidhrdw/atarirle.c - early 90's Atari raster games). - 10th November 2003: Rene Single submitted a few manufacturer / year corrections. - 7th November 2003: Aaron Giles added graphics checksumming support to various Atari drivers and fixed sprite/playfield priorities in them. Rene Single added a sanity check for get_path_for_filetype. - 0.76u2 : Sébastien Volpe fixed aspect ratio calculation bug on some rotated games (galspnbl for example). Howard Casto added some input fixes. - 7th October 2003: Lawrence Gold sent in a patch that makes the usage of inline functions more consistent. - 8th August 2003: Rene Single submitted some corrections to manufacturer descriptions. - 24th July 2003: Nathan Woods sent in a patch that verifies hash strings to make sure they're valid. - 23rd July 2003: Martin Adrian submitted a bug fix for loading ROMs to non-existent CPU regions. - 16th July 2003: Aaron Giles added information about European slapstics to the slapstic emulation. - 15th June 2003: smf fixed some slight errors in I/O port definitions in various testdrivers, unearthed by the recent ports sanity check addition. - 20th May 2003: Brian A. Troha sent some fixes to the game and ROM set names. - 20th May 2003: Angelo Salese re-submitted some old submissions, updated to the current MAME version. - 19th May 2003: Farfetch'd fixed a bug in the audit routines that caused erroneous reports about undumped ROMs. - 18th May 2003: Paul Priest fixed a small bug in -crconly that might have caused problems. - 24th March 2003: Acho A. Tang resubmitted some old fixes. - 19th March 2003: Yorik submitted various small improvements to some old Capcom drivers. - 12th March 2003: Paul Priest sent in a patch to add auto-rotate for rotating monitors. - 10th March 2003: Toby Broyad sent in an update fixing most of the game names, years etc. - 2nd March 2003: Lawrence Gold fixed a slight ANSI/POSIX incompliance in datafile.c. - 20th February 2003: Smitdogg submitted fixes to 5 incredibly small bugs. - 20th January 2003: smf forwarded a small fix that allows using hidden UNC paths in the directory list. - 13th January 2003: David Haywood re-merged some old submissions with 0.63. - 18th December 2002: Guru fixed the filenames in Grobda, Baraduke and Metro-Cross. - 8th December 2002: Aaron Giles re-organized the Williams / Midway drivers a lot. - 26th November 2002: Zsolt Vasvari added sprite y-flip to all games and cleaned up a bunch of other small things. - 21st November 2002: Chris Kirmse fixed the ROM loading message displays for ports that include a GUI. - 16th November 2002: Stephane Humbert and David Haywood re-submitted some drivers and fixes that were omitted from 0.62. - 15th November 2002: Nicola Salmoria also did some related cleanups. - 21st September 2002: Olivier Galibert improved the game information screen, combining multiple instances of identical processors to one entry. - 17th September 2002: Ryan Holtz submitted an addition of manual RGB levels control to the OSD menu. - 9th September 2002: Reip submitted some drivers with clone ROM sets added. - 29th August 2002: Steve Fewell submitted a fix for viewing clone ROM sets' history data. - 22nd August 2002: Steve Fewell submitted a better fix for the buffer overflow problems with the data files, now they are truncated. - 15th August 2002: Steve Fewell submitted a small change to the history.dat view to avoid crashing with big amounts of information. - 5th July 2002: Olivier Galibert fixed a few minor annoyances in 0.61. Kale re-submitted several fixes to various drivers. - 16th June 2002: David Haywood resubmitted some old clones. - 9th June 2002: Brad Oliver fixed a small logging problem. - 6th June 2002: MASH added a few clones. - 3rd June 2002: MASH submitted clone ROMs to two drivers. Bernd Wiebelt fixed verifying samples and updated the documents. - 1st June 2002: MASH submitted a few clones to various drivers. - 25th May 2002: Bryan McPhail fixed some memory leaks. - 22nd May 2002: MASH added various clone ROM sets to several drivers. - 15th May 2002: SUZ fixed screen refresh rates in a few drivers. - 2nd May 2002: Nicola Salmoria improved romcmp's bad address line detection and output message. - 13th May 2002: MASH submitted clones of Frogger on Scramble hardware and Ginga Ninkyouden. - 11th May 2002: MASH added some clone ROMs to a few drivers. - 9th May 2002: Chack'n submitted some input fixes to the Toaplan drivers and added a few clone ROM sets. - 6th April 2002: Phil Stroffolino sent in an update to the various Namco drivers, further abstracting the support of different emulated custom chips. - 24th March 2002: Phil Stroffolino started abstracting some of the newer Namco graphics chips for a more general level of support for them. - 22nd March 2002: Aaron Giles fixed a small bug in Atari drivers' memory allocation. Chack'n submitted some ROM filename fixes. - 25th February 2002: Ian Patterson also fixed a crash in the user interface. - 20th February 2002: Aaron Giles fixed an audit problem that caused problems when finding files by the CRC32, and he fixed snapshot handling and memcard saving in it. - 13th February 2002: Acho A. Tang submitted a major improvement to the old SNK games drivers, fixing a lot of bugs. - 12th February 2002: Stephane Humbert updated his various fixes for 0.58. - 8th December 2001: Brad Oliver sent in several fixes for 0.56. - 30th September 2001: Olivier Galibert added support for port-dependent user-configurable keys, for example for changing the fullscreen toggle key. - 15th September 2001: Andrea Mazzoleni fixed a ROM loading problem which may have caused slow loading or unwanted network accesses. - 14th September 2001: Aaron Giles fixed Battler fire buttons. - 8th August 2001: Aaron Giles merged the Final Romance and Pipe Dream drivers and fixed a few bugs in Final Romance. - 27th July 2001: Nicola Salmoria added nibble compare to romcmp. - 26th July 2001: Aaron Giles added support for automatically freeing pointers. - 16th July 2001: Zsolt Vasvari fixed several drivers that didn't handle full refresh screen updates properly. - 30th June 2001: Bernd Wiebelt updated the documentation. - 3rd May 2001: Aaron Giles updated the memory system, re-organizing a bit. - 31st March 2001: Mike Coates changed the steady key code to be dependant of an option in MAME.CFG. - 28th March 2001: Panther fixed a bug with the handling of -romdir switch. - 13th March 2001: Olivier Galibert fixed some bugs in the EEPROM emulation code. DECLARATION ----------- * DIFF FOLDER Some newer games used hard drives. The games need the data from a harddisk device as well as from roms in order to actually play the game. The hard disks are rather big (Gigabytes). Fortunally mame is caple of reading compressed disk images. To avoid changing the original image, the changed data is saved in the DIFF folder. It can't be placed on read only media. The original game hard drive image remains untouched, if the game crashed and trashed the content of the hard drive somehow you wouldn't be too amused if you only had 1 copy of the image. Also the crc would keep changing if it wrote to the actual file. * PARTIAL SCREEN UPDATING Partial updating is a mechanism to clean up games that, in the middle of the screen refresh, change global screen parameters like scroll offsets, palette banks, flipping, etc. Right now, in order to support that, games have to cache all these parameters, including large chunks of bitmaps (e.g., in the Williams games). With partial updating support, all the games need to do is detect when something has changed mid-screen, and call force_partial_update(scanline). Then the video update routine is called for you to update the screen up to the given scanline. Then, you need not cache anything because you've updated the screen already with the current parameters. This removes a lot of code in drivers that need to handle these cases. It can also speed up some games if they were previously caching partial bitmaps. Narc runs a little faster now, for example. Would this also affect raster effects in things like NeoGeo? It could, but there's one piece of the puzzle missing. AFAIK, the Neo-Geo games change the palette in the middle of the screen. That's one change that we can't yet handle mid-screen without hacks, so for now, they'll have to remain as-is. [Aaron Giles] Converted games: classic Williams, Williams Y-Unit, Exidy 440, Hard Drivin', BattleToads, Gridlee, Qix-hardware and Leland games. There are a few more that can benefit from these changes. # (c) 2000-2006 M.A.S.H.