From 1997–2007 I kept fairly detailed logs of all the contributions I made to the MAME project. They are reproduced here, separated into yearly chunks.

Each chunk is listed in reverse chronological order, with the most recent contributions at the top. The original idea was to make it easy to see the most recent progress, though obviously now that they are all well in the past, it is all historical in nature.

Someday if I’m bored, I may go back and fill in the remaining years (don’t hold your breath though!)

2007

December 2007: Made some initial progress on the Zeus 2 games • Got the first generation Midway Zeus games up and running

November 2007: Optimized the Hyperstone CPU core • More Midway Zeus work • Cleaned up the timer interfaces and normalized on attotime

October 2007: Began digging into the Midway Zeus system • Converted other 3D systems to use new rasterization helpers

August 2007: Added generic palette management in the core library • Added alternate colortable management system • Updated i386 disassembler for 64-bit support • Added new code emitters for unified x86/x64 DRC code generation • Changed V30 and i86 to use a 16-bit data bus and updated all affected drivers • Added control for overall emulation speed • Reworked the tilemap code to be both simpler and more flexible

July 2007: Added astring to the core library for managing strings • Wrote source code to HTML conversion program • Moved INI file handling into the core • Reworked input system to push most of the hard work into the core • Added minimal built-in game selection user interface

June 2007: Began looking into input system simplification • Various internal changes/cleanups

May 2007: Fixed Inferno sound at long last • Rewrote the Bally Astrocade driver from patent information and fixed Gorf • Added more accurate video timings to several drivers

April 2007: Moved command-line frontend utilities into the core system • Significantly simplified the TMS34010 and made it generate video timing • Updated a number of drivers with proper video timing • Added better video timing primitives to the core

March 2007: Moved support for a number of options into the core system • Added first multicore rendering support to the Gaelco 3D driver • Added accurate video timing and full memory maps to the Food Fight driver • Moved throttling, frameskipping, and timing code into the core system • Introduced the new proportional built-in font

February 2007: Created tools and scripts for regression testing • Fixed BSMT2000 emulation to support the mysterious ADPCM format • Changed sound engine to be OSD independent and many sound cores to generate at native rates • Identified algorithm used to generate FD1094 keys • Added laserdisc support to the CHD code • Released the 10th anniversary build!

January 2007: Cleaned up and abstracted the core bitmap objects • Added support for automatic crosshair rendering • Added emulated sound generation to the Berzerk driver • Added UTF-8 support to the internal rendering system • Added laserdisc support to the rendering system • Created osdcore library

2006

December 2006: Improved Amiga hardware emulation to support American Laser Games • Added support for the Sony LDP-1450 laserdisc player • Added enhanced texture modes to support eventual laserdisc video

October 2006: Improved functionality of the options manager • Abstracted printf interfaces so they can be re-routed by the OSD layer • Fixed the Looping driver protection issues and speed • Converted all disassemblers to the new callback format and added step in/out support

September 2006: Removed support for the old debugger • Moved a few interfaces in the core to be more object oriented • Cleaned up and reorganized the palette code • Rewrote Grand Champion driver from the schematics • Rewrote the PNG, ZIP, and auditing code to be much more straightforward • Redesigned the file I/O interfaces to be simpler

August 2006: Connected Sega Universal Sound Board to Razmataz and Ixion • Rewrote the Sega G-80 raster game driver from the schematics • Added accurate scanline timing routines that work with multiple screens • Introduced new output system, and added Windows OSD code to expose output changes to external clients • Rewrote the Turbo driver from the schematics • Added native 7-segment LED and text support to the layouts

July 2006: Added generic raster effects support • Added per-game-screen brightness / contrast / gamma / position / stretch support • Rewrote the Crystal Castles driver from the schematics • Rewrote the Cloud 9 driver based on analyzing a Firebeast prototype PCB • Rewrote the Missile Command driver from the schematics • Removed old renderer and artwork system • Rewrote the user interface to rely on the new renderer • Rewrote the Zaxxon driver from the schematics

June 2006: Fixed many bugs introduced by the new rendering system • Added preliminary multi-threading support for the renderer • Updated a number of drivers to take advantage of multi-screen support • Rewrote the palette/graphics/tilemap viewer to use the new renderer • Added support for “compiling” built-in layouts • Added fast-forward function • Added progress displays during initialization • Converted a number of drivers from the old artwork system to use new layouts

May 2006: Added support for building with Microsoft tools under Windows • Officially added support for 64-bit targets • Introduced the new rendering system • Added true support for multiple monitors in drivers as well as in the Windows OSD code • Rewrote the options parsing system

April 2006: Stopped using UPX to compress official binaries • Removed empty regions from most drivers • Rewrote much of the Amiga driver to support sound and additional video modes • Finally managed to get a good dump of Speed Up, and added it to the Gaelco 3D driver • Wrote jedutil tool, and added PLDs to a number of games as required files

March 2006: Made save state registrations visible in the debugger • Rewrote memory card support to be more generic • Rewrote Sega G-80 vector game driver from the schematics • Emulated the Sega Universal Sound board • Added custom input callbacks and DIP switch location information to input ports

February 2006: Cleaned up Z80 CTC/SIO/PIO peripherals code • Reorganized several pieces of the core into more logical divisions • Reorganized the initialization and exit sequences • Added pause/reset/exit callbacks, and normalized driver callbacks • Added live error logging view to the debugger • Normalized save state code and added save state support to a number of modules • Added Fred Flintstone’s Memory Match to the Double Cheese driver

January 2006: Fixed a number of issues in the new debugger • Added preliminary Voodoo 3 and Voodoo Banshee support to the 3dfx emulator • Added support for dynamic output frequencies to the sound streaming engine • Added Crowns Golf in Hawaii to the crgolf driver • Cleaned up and reorganized all the makefiles

2005

December 2005: implemented support for ADSP-2181 and hooked up sound in Road Burners • fixed many problems caused by the Voodoo rewrite

November 2005: rewrote the Voodoo emulation to be more accurate and flexible • rewrote validity checks to complete much faster

October 2005: cleaned up the way encryption is handled; removed RAMROM hack from memory system • added MMU support to the MIPS3 cores • added logical memory mapping support to the debugger • changed memory system to no longer use regions for RAM • added flag for games that support saves, and added -autosave option • added save state support to several drivers

September 2005: added Twin Squash to the Sega System C driver • fixed a number of problems due to save state changes • continued to add save state support to core systems

August 2005: added save state support for timers and several sound systems • made the save state system easier to write for • cleaned up and normalized struct naming in the core files • changed the way UI text is rendered in anticipation of future rendering changes • added Lotto Fun 2 to the Double Cheese driver • redesigned the way configuration data is handled to be more flexible • reverse engineered the blitter in Double Cheese

July 2005: rewrote Z80 daisy chaining code • changed a number of Irem games over to using force_partial_update • rewrote/reorganized the MCR system code to be more accurate • updated memory maps for the MCR sound boards • continued rewriting the System 32 driver

June 2005: fixed several major problems in the V60 core • wrote an NEC V60 assembler to assist in System 32 testing • started cleaning up the Sega System 32 driver • rolled out the new license and mamedev.org

May 2005: rewrote the RF5C68 sound emulator from the specs • faked the coprocessor to get AmeriDarts playable • fixed the TMS34010 enough to get Cool Pool and 9 Ball Shootout working

April 2005: added X the Ball • significantly cleaned up the Exterminator driver • finally removed CPU_16BIT_PORT and CPU_AUDIO_CPU flags • took over for Haze doing official updates and builds • improved blitter timing in the Williams games • added accurate blitter timing to the 8-bit Incredible Technologies games • added Up Your Alley to the Cinematronics driver

March 2005: fixed a number of problems introduced by the sound rewrite • fixed bugs in the Sega X-board driver • added a Sega Y-boad driver

February 2005: added the 32-bit Golden Tee Golf games to the Incredible Tech driver • rewrote the sound system to be more flexible and higher quality • modified all drivers to add speaker definitions

September 2004: began rewriting the Cinematronics CCPU core and the Cinematronics vector driver

August 2004: continued fixing bugs in the new input system • reinvented the ctrlr files as cfg files • added sound to the Gaelco 3D games

July 2004: rewrote the input port system from scratch and fixed bugs • changed the cfg files to an XML format

June 2004: added support for new ADSP2181 opcodes to the ADSP21xx core

May 2004: worked on a failed attempt to get the MIPS recompiler going faster • added emulation of the SMC91C94 ethernet controller

April 2004: continued fixing timer problems • fixed a number of problems in the Killer Instinct driver • added a driver for Super Rider • fixed some problems with the debugger and the new memory system • fixed a number of bugs in the MIPS dynamic recompiler • fixed a number of problems in the Seattle driver and added Vapor TRX support

March 2004: finished up the Gaelco 3D games driver • added multichannel support for the discrete sound system • added discrete sounds to Hit Me • fixed some more timer problems

February 2004: rewrote the internals of the timer system to use integers instead of floating point values • added the DMA-driven DAC sound device, and modified the DCS and CAGE sound cores to use it • added a preliminary driver for the Gaelco 3D games • fixed the TMS32031 core to support a few unimplemented opcodes • added support for built-in memory maps provided by CPU cores • finally submitted a driver for Driver’s Edge

January 2004: tweaked the -ftr option to allow for automating some MAME testing • fixed and cleaned up several dozen drivers to take advantage of the new memory system • rewrote the internals of the memory system to support multiple address spaces and many new features • changed the way CPUs are referenced, greatly cleaning up access to the CPU cores

2003

December 2003: added support for dynamically modifying the refresh rate • added Voodoo 2 support to the Voodoo code • fixed two very difficult to find bugs in the MIPS III recompiler • added California Speed and Biofreaks to the Seattle driver • fixed several bugs in the Voodoo emulation

November 2003: redesigned the CHD format to be less hard-drive centric, and to compress data more effectively • fixed T-Mek video, and got the prototype version up & running • added CAGE audio support for T-Mek, Primal Rage, and San Francisco Rush • improved ASIC65 protection in Road Riot 4WD • implemented the SLOOP/ASIC65 protection in Guardians of the Hood • fixed motion object handling in the Atari growth object games • fixed some major bugs in the TMS32031 core, almost fixing Offroad Challenge • added support for the Seattle games, including a mostly complete 3dfx Voodoo emulator

October 2003: fixed several bugs in the ADSP-2100 and MIPS3 CPU cores • fixed DCS2 sound in War Gods • fixed several more bugs related to the timer change back in May • added over 100 alternate Atari game variants

August-September 2003: busy with work (Microsoft Virtual PC 2004)

July 2003: added Japanese version of Pit Fighter to the Atari G1 driver • added information on a couple of long lost slapstic variants • fixed a few more issues with the new timing system

June 2003: fixed a number of games that broke under the new timing system

May 2003: change the way the timer system works to improve accuracy • fixed audio pitch in Hard Drivin’ and Race Drivin’ • added more support to the IDE controller to handle commands needed by the Seattle games • added a second prototype to the Hydra driver

April 2003: added new command line parameters to control sound latency and logfile size

March 2003: added MIPS IV dynamic recompiler • fixed a few bugs in the timer code dealing with how suspended CPUs get cycles counted

February 2003: added missing microcode ROMs to the Atari G1/G42 drivers • sped up the V60 code by using direct opcode fetches • fixed long standing sprite glitch in Road Blasters • added Ribbit! to the Sega System C driver

November 2002: fixed sprite/background priorities in ThunderJaws, Relief Pitcher, Shuuz, and Escape from the Planet of the Robot Monsters • did some more cleanup/restructuring of the machine driver internals • moved ZIP file handling into the core MAME code • helped get the Windows code moved over to mingw 2.0 (gcc 3.2) • added verification, info, and some other features to hdcomp • added Sharpshooter to the Police Trainer driver • changed the Windows code to automatically create non-existant directories

October 2002: worked on reverse engineering the ASIC65 math chip • added Hard Drivin’s Airborne to the Atari polygon driver • got Race Drivin’ and Steel Talons up and running finally • added Asylum to the Leland driver • wrote a CPU core for the TMS32031 • wrote a driver for the Williams V-unit games Cruis’n USA and Cruis’n World • finally fixed the CoJag driver enough to submit the hard disk-based games • added an XML option to the -listinfo output

September 2002: added Speed Ball to the Williams driver • started work on a DSP32C emulator for Race Drivin’

August 2002: started working on the Atari polygon games again

July 2002: removed rotation support from the core drawgfx functions • fixed edge cases in memory system

June 2002: debugged the new artwork handling • wrote a driver for the obscure Italian game Dribbling

May 2002: rewrote artwork handling from scratch • changed the OS-dependent display interfaces to accommodate new artwork support • added blit-level rotation to the Windows blitters • dumped and added a new Gravitar prototype

March 2002: added Judge Dredd to the Midway T-unit driver • fixed missing shadows in Mortal Kombat II/III • converted old Atari drivers to use tilemaps • continued polishing the Cojag driver • made MAME more friendly by giving unneeded time back to the system • fixed and improved some things in the tilemap system • added support for hard disks

February 2002: fixed several bugs I introduced in my MAME core reworking • added a driver for Police Trainer • added a driver for Rapid Fire • worked on the Cojag driver, finally got the games running • rewrote Windows file access routines to simplify the code

January 2002: spent two weeks straight gutting the whole MAME source tree • converted all drivers to use new machine driver system • added clipping to update routines (in anticipation of partial updating) • added auto resource tracking for memory, bitmaps, and timers • added preliminary driver for the Bradley Trainer • added driver for the Alpha One, a prototype Majoc Havoc • added support for an alternate Blaster romset • added partial updating support to the core • converted a bunch of games over to using partial updating instead of hacks

2001

December 2001: added PlayBall! to the Williams driver • fixed annoying crackling noise in YMZ280B sound emulator • started reworking the way machine drivers are defined in the code

October 2001: added Star Guards to the MCR driver; fixed general timing and interrupt issues in the MCR games • added better out-of-bounds checking on the Windows verson, and fixed a few games that had problems • added Catch 22 to the Exidy 440 driver

September 2001: greatly improved the accuracy of the older Exidy sounds (thanks to Tom McClintock for recording Venture samples for me!) • fixed some more interrupt issues caused by my rewrite • fixed some (not all) of the issues with the Ensoniq sound driver

August 2001: added two early Klax prototypes, which ran on Escape from the Planet of the Robot Monsters hardware • added proper timings, reset, and interrupt handling to the DEC T-11 core • fixed terrible scratchy noise in the ES550x emulator • restructured the core CPU interface, removing a lot of old junk and simplifying the code

July 2001: cleaned up Tetris and Star Wars drivers • removed slapstic kludges for the various Gauntlets and Xybots • fixed slapstic issues in Pit Fighter and Rampart • went on vacation!

June 2001: added Slither and cleaned up the Qix driver • cleaned up the Arabian driver and fixed the colors • added new blitter and scanline/RGB effects to MAMEW • optimized the 68k assembly core a little; fixed bugs in a couple of 68020 instructions • added new All American Football (4 player) set to the Leland driver

May 2001: continued fixes for MAMEW • added aspect ratio specification to the core • added overlay to Avalanche • marked a number of drivers with NEEDS_6BITS_PER_GUN flag • added Neck & Neck to the IT/Strata 8-bit driver • added Shuffleshot to the IT/Strata 32-bit driver • cleaned up the Return of the Jedi driver • added Gridlee driver

April 2001: continued work on MAMEW, including first official submission • added Power Play to the Leland driver • submitted the partially complete Atari G42/GX2/GT drivers • added crude input support for Slick Shot • fixed Cyberball palette • cleaned up Food Fight driver • fixed Atari JSA sound frequencies

March 2001: started work on MAMEW • fixed a number of compilation/crashing bugs in the existing MAME code

February 2000: added the core sound mixer module • demonstrated non-working drivers for Atari G42, GX2, and GT boards • fixed several 68020 bugs in the WIP C core • updated the TMS5220 and ADPCM cores to do linear interpolation • fixed shadows in Gauntlet and graphics in Vindicators Part II • added emulation of the protection in Pole Position II

January 2000: added vertical dials and wheels as core analog input types • added multiplexed sprite support to the Exidy 440 driver, fixing Chiller • did a major cleanup of the core memory system • added READ_HANDLER and WRITE_HANDLER macros

1999

December 1999: added 16-bit support to the Williams drivers • disabled the fast stack optimization in the TMS34010 core • added CPU suspension reasons to the timer system • added the ADSP-2100 CPU core • optimized the mathbox in the newly-working I, Robot driver

November 1999: attempted to optimize the M72 driver • optimized sound in Williams TMS34010 games and later MCR games • fixed (with Ernesto and Juergen) the Pole Position/Pole Position II driver • fixed (with Ernesto) the Turbo driver • added 16-bit support to the Bally/Sente and Exidy 440 drivers

April 1999: continued fixing CPU core bugs, and updating the PowerPC assembly cores • added .WAV file sample support • did a major cleanup of the Atari drivers • added fast interrupt support to the 68000 and T-11 cores • added Vindicators Part II to the Gauntlet driver • rewrote Gauntlet video to use tilemaps • abstracted Atari sound system into a separate file

March 1999: added rotation support to a number of drivers • added Crackshot to the Exidy 440 driver • fixed a number of bugs in the 6800, 6809 and Z80 cores • added proper distinction between 6800, 6803, and 63701 timings

June 1998: updated all Atari drivers to use the new built-in palette compression • changed a number of drivers to use palette compression • added proper cycle timing to the 68000 • added software timers on top of the OPL-based YM3812 emulation • fixed nasty reset bug in the MCR games • added Vindicators driver

April 1998: added slapstic-protected versions of Gauntlet • added Toobin’ driver • added Atari System I driver • added 2-player Gauntlet to the Gauntlet driver • began working on a Blasteroids driver

March 1998: began work on slapstic decoding • optimized the timer system • improved ADPCM sample support • added Crater Raider to the MCR driver • added OKI6295 ADPCM support, using Block Out as a test case • rewrote Williams blitters, fixing Sinistar • fixed colors in Motos • implemented YM2151 timers using the new timer system

February 1998: abstracted the vector code to allow for platform-specific optimizations • reworked the memory system and the 68000 core to support 16-bit accesses • added 16-bit color support to the core • updated a number of drivers to use 16-bit color • fixed 68000 interrupt priorities • cleaned up the Williams driver some more • fixed ADPCM sound in Lode Runner and Traverse USA

January 1998: fixed 6809 core to support sync instructions that Zookeeper was using • optimized Zookeeper video • added sound to Colony 7 • wrote the core timer system and rearchitected CPU execution around it • rewrite the Z80 CTC code using timers • added automatic memory allocation for 24-bit (and larger) address spaces • added 68705 CPU core, and emulated the MCU in Arkanoid • began writing the Atari System I driver

1997

December 1997: improved Quantum driver into a playable state • optimized Rastan driver • added full 6821 PIA emulation • majorly rewrote the TMS-5220 speech driver • added speech to Discs of Tron • added Sarge to the MCR driver • modified all CPU cores to use the same interface • reworked cpuintrf.c to be table-driven

August 1997: general Namco cleanups • rewrote Atari vector generator to be more accurate • added palette handling to the Tapper driver • improved speed of the Tapper driver • added video_attribute field to the driver structure • added osd_modify_pen() to the core • modified Williams, Tapper and Tutankham drivers to use dynamic palettes • added sound to the Tapper driver • rewrote the Z80 CTC emulation for the MCR games • added Discs of Tron to the Tapper driver • helped add the remaining MCR games to the Tapper driver