Homepage - mameworld.info/mameinfo
E-Mail - mameinfo@ewetel.net
Visit ARCADE AT THE MOVIES

00.136u2 - New games: Penguin Adventure (bootleg) - New Working games: Battle of the Solar System, F-15 Strike Eagle, Island 2 (060529, banking address hack), Tank Battle and Versus Net Soccer - New Non-Working games: Gundam Wing: Endless Duel (SNES bootleg), King Tut (Australia), Money Bank (Australia), Mortal Kombat 3 (bootleg of Megadrive version), Pinkiri 8 and Quarter Horse Classic - New clones: Cube Quest (12/30/83), Fortune I (PK485-S) Draw Poker, Insector X (Japan), Poker Ladies (Censored bootleg) and Viper Phase 1 (USA) - New drivers: kongambl.c, pengadvb.c and pinkiri8.c - ARM7 CPU: Added preliminary SA-1110 support - SN76489A sound . Fixed SN76489a periodic noise once again (and simplified a bit of code), now should be closer to or match real chips as sampled. Added true clock divider emulation, so emulation may be a bit slower. . Changed the following games to use the 76489A variant (verified on PCB): docastle, dorunrun, dowild, gberet, idsoccer, jailbrek, jjack, kicker, kickridr, mrgoemon and yiear - S14001A sound: Updated comments; got rid of the squealing noise (hidden behind a #define now, code is still there) until some other issues can be resolved. - 6526 CIA: Refactored the interface, adding SP/CNT callbacks. Fixed serial transfer. (alg.c, arcadia.c, cubocd32.c, mquake.c and upscope.c) - HD63484 video controller (adp.c and shanghai.c): Converted HD63484 ACRTC to be device - MC6845 CRT: Popmessages can now be used in drivers which have an MC6845 - dec0.c . Added MEC-M1 PCB layout to the driver and updated some clocks and ROM names . Fixed OKI6295 clock speed in baddudes, birdtry and hbarrel . Fixed HuC6280 and OKI6295 clock speeds in hippodrm and robocop . Bad Dudes vs. Dragonninja: Replaced clone Dragonninja set with one dumped from a genuine Data East PCB. Fixed rom names. - deco32.c . Verified all DECO32 clocks and corrected HuC6280 clock following old Charles McDonald notes I had about internal divisor. Fixed HuC6280 CPU2 clock speed in captaven. . Added a note on the ARM CPU used by this game: it's a Data East 101 custom. - hng64.c . Implemented HNG64 low-res texture decoding. All red/green polygons should now be textured. . Partially decodes translation-only geometry type 0102. This makes the road appear in the racing games, the edge of the ring in buriki, and a hallway during the buriki attract. . Hacks the camera to work in Samurai Shodown 64 - micro3d.c: Added AM29000 CPU core and 2x Microprose Custom sound - ms32.c: Ensure that RAM and bitmaps are cleared when the Mega System 32 driver is started to avoid 64-bit build crashes - pgm.c: Fixed a typo in PGM driver that was causing a memory test error and corrected some comments - psikyosh.c . Added support for per-scanline scroll/zoom and per-column effects. This is adds a significant performance penalty when enabled. Removed warning flag from s1945ii and s1945iii. s1945iii needs confirmation of correctness and x-zoom is a guess. . Virtually completed video rendering. Only flipscreen missing (and conversion to tilemaps one day). Per-line effects now respect per-line alpha, priority and bank. As a result daraku text works without any hacks. . Added various optimisations to get back all games to a playable speed . Fixed missing Sol Divid effect on final boss that was broken due to above Daraku Tenshi hack . Added accurate scaling effects based on measurements from hardware - subsino.c . Improvements to the driver: Lowered Z180 CPU1 clock to 1.5 MHz. Reworked former inputs. Added specific game and technical notes. Added lamps support and dipswitches. Cleaned-up a bit the driver. . Poker Carnival: Added change card, keyin, keyout, stats and settings inputs. Added coin/keyin/keyout/payout counters. Limited the bet and coin pulses to avoid repeats and coin jams. Added button-lamps layout. . Shark Party: Added stats and settings inputs. Added coin counters. Added button-lamps layout. . Super Rider/Super Moto: Added stats and settings inputs. . Victor 5: Mapped the M6295 but commented out due to missing sample roms. Added keyin, keyout, payout, stats and settings inputs. Added coin/keyin/keyout counters. Limited the bet and coin pulses to avoid repeats and coin jams. Added button-lamps layout. . Victor 21: Mapped the M6295 but commented out due to missing sample roms. Added bet x10, keyin, keyout, stats and settings inputs. Added coin/keyin/keyout/payout counters. Limited the bet and coin pulses to avoid repeats and coin jams. Added button-lamps layout. - vsnes.c: Replaced VSNES bank installs with RAM installs, since the banks were never changed. - Laser Disc: Fixed build fails with missing OPTION_ROMPATH (ID 03664) - Carrera: Fixed Access Violation before OK (Debug build) (ID 03665) - Cyber Tank . Redumped sound roms . Fixed sprite height . Implemented flip x and negative y offsets and preliminary zooming - D-Day (Jaleco) . Fixed background and sprites colors . Dumped the 5x proms - Jockey Club II: Fixed Access Violation before OK (Debug build) (ID 03666) - Final Fight: Fixed bad sound in clone Final Crash (bootleg of Final Fight) (ID 03671) - Multi Champ Deluxe: Fixed crash issues - Tetris the Absolute The Grand Master 2/Plus: Fixed background color in the warning boot screen (ID 03663) - Versus Net Soccer . Replaced GFX ROMs with correct dumps . Improved sprite/roz alignment - Converted the following drivers to use a driver_data structure: 39in1, bigstrik, mugsmash, pass, safarir, sbowling, sbugger, sderby.c, shadfrce, shootout, shougi, silkroad, skeetsht, skyarmy, sliver, spbactn, spk116it, spool99, srmp5, srmp6, ssingles, sslam, sstrangr, stlforce, sub, supdrapo, superdq, supertnk, suprgolf, taitojc.c, tunhunt, welltris.c, wwfsstar and xyonix - Dipswitch fixes in micro3d.c and subsino.c - Description changes of Capcom Vs. SNK Millenium Fight 2000 Pro (GDL-0004), Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A), Cube Quest (01/04/84), Tank Battle (prototype rev. 4/21/92 ) and Viper Phase 1 (Hong Kong) - Renamed (stankatk) to (tankbatl) and (viprp1o) to (viprp1oj) - MAME . Fixed bug introduced with astring changes that caused malformed tokens when writing out cfg files (ID 03667) . Fixed bug where memory regions were not properly enumerated for the debugger memory view. Also, stop creating empty regions for disk regions. . Improved stack walking on crash in Windows. Now using StackWalk64 to do the stack walk, resulting in cleaner logs. Also will try to use system function to look up symbol and source/line information if present. . Created new template class tagged_list which manages a simple list along with a tagmap. Changed memory regions, input ports, and devices to use this class. For devices, converted typenext and classnext fields into methods which dynamically search for the next item. Changed a number of macros to use the features of the class, removing the need for a bunch of helper functions. . Corrected a long-standing design flaw: device configuration state is now separate from runtime device state: * There is a new class 'running_device' which represents the state of a live device. A list of these running_devices sits in machine->devicelist and is created when a running_machine is instantiated. * To access the configuration state, use device->baseconfig() which returns a reference to the configuration. * The list of running_devices in machine->devicelist has a 1:1 correspondance with the list of device configurations in machine->config->devicelist, and most navigation options work equally on either (scanning by class, type, etc.). * For the most part, drivers will now deal with running_device objects instead of const device_config objects. In fact, in order to do this patch, I did the following global search & replace: const device_config -> running_device, device->static_config -> device->baseconfig().static_config, device->inline_config -> device->baseconfig().inline_config and then fixed up the compiler errors that fell out. * Removed device_get_info_ functions and replaced them with methods called get_config_. * Added methods for get_runtime_* to access runtime state from the running_device. * DEVICE_GET_INFO callbacks are only passed a device_config. This means they have no access to the token or runtime state at all. For most cases this is fine. * Added new DEVICE_GET_RUNTIME_INFO callback that is passed the running_device for accessing data that is live at runtime. In the future this will go away to make room for a cleaner mechanism. * Cleaned up the handoff of memory regions from the memory subsystem to the devices. . Converted the rest of devintrf to classes and moved management functions into methods of those classes. The most wide-ranging change was converting device_reset() to device->reset(). Apart from that it was mostly internal shuffling in the core. . Made direct accessors for device configuration state. Currently they just call through to the get info function. Removed old macros that wrapped calls. . Removed some aliases between CPUINFO_ and DEVINFO_ to help clarify usage. Also converted a few more places to use the new accessors. . Fixed bug that mistook a non-NULL token to mean that a device was started. Fixes -video ddraw issue. . Exit from the unhandled exception filter cleanly now. Use SetErrorMode() to disable the appearance of dialog boxes when crashes occur. . UI menu interface changes: All ui functions now expect a render_container. Removed all macros referencing render_container_get_ui. ui_menu_alloc now is passed a container to which to render the menu. . Replaced device_find_child_by_tag() -> device->subdevice() . Added Guru(TM)-PCB info to Track & Field driver - Compiling . Added makefile autotest for BIGENDIAN. A bit hacked, though. . Added checkautodetect target to makefile . Added OS/2 autodetect to makefile . Autodetection of PTR64 can be inhibited now by specifying PTR64=0. On mixed 32bit/64bit targets identifying themselves as 64bit this can be used to build a 32bit executable. . Added OpenBSD support in makefile/sdl.mak. Fixed XBSD detection of PTR64 (uses amd64). . Removed stdlib.h from osdcomm.h: Added #include stdlib.h where now necessary. Fixed Solaris build. Fixed building unidasm for OSD=sdl on win32. Tools now include stdlib.h where needed. . Changed core library files to use osd_malloc/osd_free where appropriate . Permitt zlib and expat to be linked dynamically without changing the makefile by specifying "=0": make BUILD_ZLIB=0 BUILD_EXPAT=0. . sdl.mak rewrite: TARGETOS=freebsd may now be given on make invocation. Modular approach, separate sections for opengl, x11, debugger. Most target specific settings parametrized. Added GTL_INSTLL_ROOT to optionally build win32 with the mame debugger. On targets supporting "-m64" and "-m32" use them. On unix ppc targets, add -Dpowerpc automatically. . Added sdlmisc_.c again. This was necessary since certain tools create stubs for e.g. osd_break_into_debugger. If we do not have this in a separate file, the link stage may break. Applied OS/2 patch [Credit: KO Myung-Hun]. Cleaned up #includes. Removed stdlib.h were possible. More malloc to osd_malloc rename. SDL monitor modes are read now when they are needed. This is now consistent across platforms. - Debugger . Fixed memory allocation issue in debug builds . GTK Debugger work: glade-2 can now be used again to edit the debug.glade file. No more need to edit the files created by glade-2. All "activate" handlers now pass the parent window pointer. malloc ==> osd_malloc to prevent mixed c++/c window allocations. Run to cursor (main view). In place memory editing (memory view). implement key handling (Up, down, ..) like in windows. Tab and ESC not yet handled. Functionality now matches win32 debugger. Further code review/rewrite/simplification. Added more comment headings. Fixed a compile warning for gcc-4.4 (not detected by gcc-4.2). Horizontal divider bar to individually size views. Minimum height aligned to win32 debugger. 0.136u1 - NOTES . A new tool chain for Windows, based off of gcc 4.4.3 prerelease, is now REQUIRED. Go to http://mamedev.org/tools to get the new tools. The updated included with 0.136u1 WILL NOT BUILD with the old tools. The new tool chain has support for building 64-bit MAME builds with gcc, as well as built-in DirectX headers, and C++ support, which was missing from the old tools. . Non-Unicode builds of Windows MAME are no longer supported. The options to turn this off in the makefile have been removed, and future changes are likely to solidify this requirement. If you are still (God forbid) running on Win9x, you will need the unicows.dll library to run MAME. Download unicows from Microsoft. . All code in MAME is now compiled as C++, plus there have been a few small changes that take advantage of the C++ language. For the most part, there is no effect on how drivers are written, except for some nicer accessors to devices and address spaces. Future improvements to take advantage of the C++ syntax will evolve slowly, and will be done internally. We are not interest in outside attempts to do this work for now. . The SDL OSD for MAME is now shipped as part of the main source package. SDL builds for Windows are now regularly built as part of the validation sequence for a new release. Thanks to R. Belmont, couriersud, and Olivier Galibert for their work on the SDL port over the years. - New games: Multi Game (Tung Sheng Electronics) and Second Chance - New Non-Working games: 2x Bega's Battle, Computer Quiz Atama no Taisou, Fun Station Spielekoffer 9 Spiele, Monza GP, 3x Quarter Horse, Vega and Vortex - New clones: Exciting Soccer (Japan set 2), Mega Blast (US), Super Bar and Track & Field (NZ Bootleg?) - New drivers: monzagp.c and vega.c - I386 CPU . Improved accuracy of the various emulated models, makes CPU detection programs detect the correct CPU (in MESS) [Dirk Best]: . eflags mask added . Initial values for the EAX and EDX registers fixed . cpuid values improved . Feature flags improved . Initial value for the cr0 register improved . Changed 486 to not support the cpuid instruction by default . Take a trap on invalid instructions instead of throwing a fatalerror . Emulated the undefined flag behavior for the DIV/IDIV instructions on Intel CPUs - UNSP CPU: Added a mostly-complete SunPlus u'nSP core based on the one in Segher's "Unununium" - uPD7801 CPU: Fixed incorrect disassembly of some instructions. Updated the handling of interrupts to match the documentation. Implemented uPD7801 timers. Configured port A on the uPD7801 to an output port. - TC0140SYT custom: Converted taitosnd (aka tc0140syt) to be a device and updated the related drivers to use the new code - RF5C68 sound: Added a PCM sample end/loop callback - SN76489/A sound . Fixed period for both SN76489 and SN76489A periodic noise . Fixed pitch in 'smooth criminal' demo for colecovision . Fixed pitch of music in Do! Run Run (but not the waveform, which will require more work) . More work is required before the code will be bit accurate due to the way the real LFSR and periodic generator work - YM2612 sound: More accurate LFO implementation and channel clipping (megaplay.c, megatech.c) - 6522 VIA: Refactored the interface to use READ/WRITE_LINE - 8253 PIT:: Updated counter even if there was no elapsed cycles (this only affects fast drivers like at586 in MESS) - Konami custom ICs: Moved a few routines (used for sorting graphics layers) to konicdev.c since they are shared by several drivers. Updated some Konami drivers above to separately allocate palette/extra/work RAM instead of appending them to maincpu ROM; also, reduced maincpu rom regions where appropriate. Replaced memory_set_bankptr with memory_set_bank where necessary. - EEPROM . Fixed typo in 8-bit EEPROM case that broke operation in some games (ID 03630) . The starting value for an output port is now the default value, which is based on whether it is active high or low. So the device will be called the first time the line becomes active. Changed the EEPROM device to assume that the reset and clock are cleared until it's told otherwise. - aleck64.c . RSP DRC changes . Fixed misaligned 32-bit accesses . Disabled DRC_SQV implementation as it breaks music in Magical Tetris Challenge . Converted RSP callbacks into device callbacks. Removed a ton of tag-based queries in favor of using the device passed. . Added profiler_mark() calls around rdp_process_list() so that the RDP time is separated from the RSP time. - cb2001.c . Added more decrypted V30 opcodes . Added base tilemap hook-up - cps1.c: Fixed NVRAM for dino, punisher, wof and clones (ID 03637) - crystal.c: Fixed multi-session/static issue in SE3208 CPU core. Fixed with r7990. (ID 03233) - cvs.c: Fixed missing background star field in Raiders and Space Fortress (ID 03626) - halleys.c: Fixed VSync in Ben Bero Beh and Halley's Comet - hng64.c . Beast Busters 2nd Nightmare now has 3D geometry. Found the 'explicit palette' word. Colors are now correct implemented what looks like a 'dynamic palette' bit. . Hacked 3D acknowledge in a slightly different manner. Sams64 games now show 3D. . Fixed improperly loaded ROMs in sams64* games . Fixed colors in sams64 games, but not roadedge or buriki. - laserbat.c: Fixed massive slowdown (ID 03623) - mitchell.c . Changed Z80 clock from 6Mhz to 8MHz in Mahjong Gakuen to match the other Mitchell hardware games . Fixed OKI6295 clock speed in marukin, mgakuen2 and pkladies - Crazy Kong (bootleg on Galaxian hardware) . Fixed dipswitches, inputs and wrong coinage settings (ID 02154/02157) . Updated clone Crazy Kong (bootleg on Moon Cresta hardware) memory map - Crazy Rally: Fixed incorrect default high scores (ID 03653) - Cyber Tank . Redumped program and sprite roms . Fixed bitplane order . Decoded sprite gfx format . Hooked up the two bg tilemaps . Wrote bare-bones video emulation for the Cyber Tank sprite chip / blitter . Added video boundary checks for the blitter - Daraku Tenshi: Fixed graphic issues at region warning and during super move (ID 00266) - Dwarfs Den: Fixed a bunch of minor quirks and gfxs - Exciting Soccer / II: Fixed 1st AY-3-8910A clock speed and VSync - Gals Panic 4: Added missing sample rom to clone (Korea) - Gunbird 2: Fixed game crashes during the 4th level boss fight (North Pole) when using Vampiro (ID 00111) - Gunpey . Implemented basic blitter support . Implemented inputs and sound . Converted game to use RGB pens instead of hardcoded palette table . Added OKI6295 and YMZ280B sound. Fixed visible area and added dipswitches. - Killer Instinct / 2: Fixed x86 DRC backend codegen bug that broke Killer Instinct. Fixed game hangs at black screen with 32-bit build (ID 03632). - Mahjong Games: Added lots of comments relating to 56-pin Mahjong interface and Psikyo SK-G001 interface PCB based on discussion with Alien_Mame and documents from other Mahjong PCBs. - Mahjong G-Taste: Added support for Mahjong panel. Makes this the default input and alters the default eeprom accordingly to match factory default. Note that you need to change both the game and the controller setting from the driver configuration when switching input sources since the two are mutually exclusive. Added new EEPROM eeprom-mjgtaste.bin. - Mahjong Gekisha: Added 'Auto Tsumo after Reach' dipswitch. Fixed MAME crashes, if this dipswitch is enabled (ID 03649). - Mat Mania: Fixed graphical corruption (typo in the video driver) (ID 03651) - Metal Maniax . Fixed frame buffer display . Started to add the other CPUs (ADSP2105, TMS34020, 2x DSP32C and TMS32031) . Added PCB layouts for layers 1 and 2 . Hooked up TMS34020 . Started to implement the ADSP-2105 network CPU and the CAGE audio system (4x DMA-driven DAC) - Mikie: Fixed possible priority issue (ID 03485) - Premier Soccer: Fixed assert - Quasar: Fixed massive slowdown (ID 03620) - Race Drivin': Fixed gfx rom loading in clone Race Drivin' Panorama - Solomon's Key: Fixed graphics bugs (ID 03622) - Strikers 1945 III: Fixed MAME popup a message at the very last boss (ID 00892) - Trivia ? Whiz (Edition 3 - Horizontal): Fixed user1 rom loading in clone Trivia ? Whiz (Edition 3 - Vertical) - Versus Net Soccer . Emulated DMA protection for startup-checks . Fixed Data ROM loading, game now boots and marked sprite and sound roms as BAD_DUMP - Victor 21: Fixed a bogus protection check - Vs. Super Mario Bros.: Fixed game hangs at a black screen (ID 03573) - Zeroize (Cassette): Fixed protection simulation in lack of proper dongle dump (machine\decocass.c) - Zoar: Fixed cabinet 'Upright' dipswitch (ID 00660) - Cheat engine: Fixed hitting F6 without -cheat trigger causes crash (ID 03621) - Added driver data struct to ajax, aliens, cave.c, ninjaw.c, opwolf, slapshot.c, taito_b.c, taito_l.c, taitoair.c, warriorb and wgp - Added driver data struct and save states to asterix, asuka.c, bishi, blockhl, bottom9, chqflag, crimfght, darius, dbz, gbusters, gijoe, gradius3, lethalen, mainevt.c, moo.c, othunder, overdriv, parodius, rainbow, rastan, rollerg, rungun, simpsons, spy, suratk, tail2nos, taito_f2.c, taito_h.c, taito_o.c, taito_z.c, thunderx.c, tmnt.c, topspeed, ultraman, vendetta.c, volfied, xexex and xmen - Converted goldstar.c, liberate.c, sidearms.c and sidepckt.c to use driver_data - Replaced AY-3-8910A sound with YM2149 in arkanoid, berlwall, bakubrkr, mgcrystl, tetrsark and wink - Dipswitch fixes in gekisha, gunpey and zoar - Rom names fixes in cybertnk, galaxold.c, knights, merit.c, suprnova.c and wiggie - Description changes of Crazy Kong (bootleg on Galaxian hardware), Crazy Kong (bootleg on Moon Cresta hardware) and G.I. Joe (World) - Renamed (cameltryua) to (cameltryau), (kkgalax) to (ckongmc), (megab) to (megablst) and (megabj) to (megablstj) - MAME . New C++-aware memory manager: This is a simple manager that allows you to add any type of object to a resource pool. Most commonly, allocated objects are added, and so a set of allocation macros is provided to allow you to manage objects in a particular pool: pool_alloc(p, t) = allocate object of type 't' and add to pool 'p'. pool_alloc_clear(p, t) = same as above, but clear the memory first. pool_alloc_array(p, t, c) = allocate an array of 'c' objects of type 't' and add to pool 'p'. pool_alloc_array_clear(p, t, c) = same, but with clearing. pool_free(p, v) = free object 'v' and remove it from the pool. Note that pool_alloc[_clear] is roughly equivalent to "new t" and pool_alloc_array[_clear] is roughly equivalent to "new t[c]". Also note that pool_free works for single objects and arrays. There is a single global_resource_pool defined which should be used for any global allocations. It has equivalent macros to the pool_* macros above that automatically target the global pool. In addition, the memory module defines global new/delete overrides that access file and line number parameters so that allocations can be tracked. Currently this tracking is only done if MAME_DEBUG is enabled. In debug builds, any unfreed memory will be printed at the end of the session. emualloc.h also has #defines to disable malloc/free/realloc/calloc. Since emualloc.h is included by emucore.h, this means pretty much all code within the emulator is forced to use the new allocators. Although straight new/delete do work, their use is discouraged, as any allocations made with them will not be tracked. Changed the familar auto_alloc_* macros to map to the resource pool model described above. The running_machine is now a class and contains a resource pool which is automatically destructed upon deletion. If you are a driver writer, all your allocations should be done with auto_alloc_*. Changed all drivers and files in the core using malloc/realloc or the old alloc_*_or_die macros to use (preferably) the auto_alloc_* macros instead, or the global_alloc_* macros if necessary. Added simple C++ wrappers for astring and bitmap_t, as these need proper constructors/destructors to be used for auto_alloc_astring and auto_alloc_bitmap. Removed references to the winalloc prefix file. Most of its functionality has moved into the core, save for the guard page allocations, which are now implemented in osd_alloc and osd_free. . Replaced all occurrences of cputag_get_cpu with devtag_get_device: the former function was just an alias and now cpus are no different from other devices. Also removed cputag_get_cpu and cputag_reset (another alias, not even used in the source) from cpuexec.h. . Removed the various HAS_xxxx for sound cores. To select sound cores, just choose them in the make system. Further granularity is not necessary. This also means that the samples core is always required. . Fixed unidasm fails to link when ldplayer is the specified target (ID 03415) . Removed hacks surrounding unicode handling in main(). They are no longer necessary with the new tools. . Got rid of setjmp/longjmp for error handling in favor of exceptions. Fatalerror now maps to throwing an exception. . Added nicer functions for finding devices, ports and regions in a machine: machine->device("tag") -- return the named device, or NULL, machine->port("tag") -- return the named port, or NULL and machine->region("tag") -- return the named region (Note that machine->region() returns a pointer to a region_info class which describes a region, not a pointer to the region's memory). . Made the device tag an astring. This required touching a lot of code that printed the device to explicitly fetch the C-string from it (thank you GCC for flagging that issue!). . Extended the astring class wrapper into something useful, and useable as a stack object. Also designed the interfaces to allow for chaining operations. And added a casting operator to const char * for seamless use in most functions that take plain old C strings. . Changed all uses of astring to use the object directly on the stack or embedded in objects instead of explicitly allocating and deallocating it. Removed a lot of annoying memory management code as a result. . Added new member function space() to the device_config, along with shorter constants to be used (AS_PROGRAM, AS_DATA, AS_IO). With no parameters, space() returns the first address space, which is commonly the only space present. Updated a few devices that referenced the old space[] array to call the new function instead. . Added casting operators to the region_info class so you can assign a region to a generic type pointer and have it automatically convert. Also added a bytes() method which is safe if the region is NULL (useful for saying machine->region("foo")->bytes() and not crashing if foo doesn't exist). . Changed the region field in the device_config to be a region_info *, and removed the regionbytes field. Updated all users of these fields to use the new casting operators and bytes() methods instead. . Added subdevice and subregion methods to the device_config class, so you can easily query for devices and regions that are device-specific. The device prefix ("devicename:") is automatically prepended. . Changed inline_config to be allocated separately to avoid alignment issues . Changed interfaces that accepted/returned an astring * to use an astring & instead . Removed auto_alloc_astring(machine). Use auto_alloc(machine, astring) instead. . Major header file cleanup: Created new central header "emu.h"; this should be included by pretty much any driver or device as the first include. This file in turn includes pretty much everything a driver or device will need, minus any other devices it references. Note that emu.h should *never* be included by another header file. Updated all files in the core (src/emu) to use emu.h. Removed a ton of redundant and poorly-tracked header includes from within other header files. Temporarily changed driver.h to map to emu.h until we update files outside of the core. . Added class wrapper around tagmap so it can be directly included and accessed within objects that need it. Updated all users to embed tagmap objects and changed them to call through the class. . Added some missing header declarations and static qualifiers. Added validity.h to the core for consistency as well as an explicit foo.h in each foo.c. . Enforce that numbers are all the same exact width when loading fonts . Added the mameconfig version to the -listxml output - Compiling . Makefile changes: Removed CPP_COMPILE flag; all code is now compiled as C++ except for zlib and expat. Mapped INLINE to "static inline" since C++ has real inlining. Added new 'default' make target which just builds the emulator. Use 'make tools' to build the tools, or 'make all' to build the whole thing. 64-bit builds now get a '64' suffix on them. Removed UNICODE flag from Windows; UNICODE is always enabled now. If OSD is not defined, we look for the built-in Windows environment variable 'OS' and if it is set to 'Windows_NT', we assume OSD=windows; otherwise we assume OSD=sdl. If TARGETOS is not defined, we look for the same variable and set TARGETOS=win32 if it is set to 'Windows_NT'. Windows SDL builds have an 'sdl' prefix on the executable so they can live side-by-side. Added cheesy auto-detection of 64-bit Windows builds (based on the PATH including 'mingw64-w64'). . SDLMAME makefile improvements: Fixed TARGETOS detection on OS X. Do not try to check TARGETOS when cross-compiling. For non-windows targets, try to auto-detect PTR64. Testkeys now builds again. For unix targets, added a depend rule to sdl.mak which builds a .depend file. Improved OS X and SDL 1.3 SVN support, try to autodetect SDLMAME targets. Added BGRA support to -video soft. . Fixed a number of compiler bugs found by PowerPC MacOS X . Fixed controller input not functional in 64bit version (ID 03613) . Renamed mamecore.h -> emucore.h 0.136 - New games: --- - New Non-Working games: Cherry Master '92, Cycle Mahbou, 2x Melty Blood Act Cadenza Ver B, Metal Maniax and Noukone Puzzle Takoron - New clones: Block (Game Corporation bootleg, set 3), 4x Cherry Master I (ver.1.01, set 4/5/6/7), Multi Fish (030124), Race Drivin' Panorama (prototype, rev 2.1), Shao-lin's Road (bootleg), Spark Man (v 2.0, set 2) and Street Smart / Final Fight (Japan, hack). - New drivers: cyclemb.c and metalmx.c - Dynamic Recompiling . Fixed x86 HLT instruction handling . Fixed error in codegen for drol/dror opcodes in the x86 back-end - EEPROM . Fixed auto EEPROM region to properly handle 16-bit data . Changed EEPROM device to initialize EEPROM at NVRAM load time rather than init time, giving DEVICE_INIT handlers a chance to muck with the data first. . Removed _NODEFAULT_ forms of EEPROM driver macros. If you need to add default data, follow the MDRV_EEPROM_ADD() with MDRV_EEPROM_DATA(). . Updated remaining drivers to the new EEPROM device code. Many of them now require a default EEPROM to be loaded along with the ROMs, rather than hard-coded data in the driver. . Exposed an address space for EEPROM devices, meaning the memory is now visible in the debugger and can be accessed via expressions. . Updated all systems that muck directly with EEPROM memory to use memory accessors instead on the EEPROM address space. . Removed old EEPROM implementation - Konami custom ICs (video\konicdev.c): Added preliminary device version of Konami video ICs used in PowerPC games (001005, 001006, 001604 and 037122). - Namco IO chips 56xx, 58xx and 59xx: Converted chips to be devices and converted gaplus.c, mappy.c and toypop.c to use the new code - NMK112: Converted chip to be a device and updated drivers using it accordingly (cave.c, nmk16.c, powerins.c, quizpani.c and toaplan2.c). - Taito custom I/O and video ICs (machine\taitoio.c): Converted all Taito custom I/O and video ICs to devices and updated all drivers to use them (asuka.c, ninjaw.c, othunder.c, slapshot.c, taitoair.c, taito_b.c, taito_f2.c, taito_h.c, taito_z.c, topspeed.c, warriorb.c and wgp.c). - adp.c . Fixed some minor quirks . Improved Backgammon memory map . Implemented RAMDAC and fixed palettesize and VSync in 'Funny Land de Luxe' . Changed VSync to 60Hz in Fashion Gambler, Quick Jack, Skat TV - aleck64.c . Converted a number of vector opcodes to the RSP DRC core . Unrolled and optimized a number of vector opcodes in the interpreter RSP core . Fixed a few DRC-ized vector load/store opcodes in the RSP core . Optimized RDP implementation further with more flattened branches . Re-implemented misaligned memory handling in the RSP DRC as before . Explicitly sign-extend 32-bit indexes for load/loads/store on 64-bit machines to prevent overflow issues. Fixes DRC crash in 'Magical Tetris Challenge'. - cb2001.c: Added many new V30 opcodes - cninja.c: Changed driver to use partial updates for raster effects instead of buffering scanline data - deco32.c: Changed driver to use partial updates for raster effects instead of buffering scanline data (but left Dragon Gun using the buffering, because the video rendering code is far too slow with 224 partial updates for now). - gticlub.c: Split ADC1038, Konami 033906 and Konami 056230 emulation from gticlub.c and konppc.c. Also converted them to be devices and updated PPC Konami games to use the new code. - gladiatr.c: Cleaned up a bunch of things in the driver - hng64.c: . Roads Edge & Xtreme Rally polygons are now visible . Improved geometry chunk type 0x2e . Fleshed out the 'chunk type bits' a little. This will be verified against type 0x24. . Xtreme Rally and Roads Edge HNG64 screens no longer run at 10fps . Fixed polygon lookup in driving games - konamigv.c and mitchell.c: Fixed driver attempt to register save state entry after state registration is closed (ID 03596) - namcond1.c: Commented out some harmful and suspicious looking interrupt generation in NamcoND1 driver until it's being properly verified; fixes game options menu in NCV2 test mode. - nss.c and snesb.c: Hardware multiplication and division on the SNES takes 8 machine cycles to complete - qdrmfgp.c: Updated driver to use Konami video devices - psikyosh.c: Added GAME_SUPPORTS_SAVE flag, since the conversion to EEPROM devices fixed the remaining issues with save states. - taito_b.c: Converted Fujitsu MB87078 volume controller to be a device and updated driver to use the new code - taito_l.c: Fixed YM2203 clock speed in cachat, cubybop, horshoes, palamed, plgirls, plgirls2, plotting and puzznic (ID 03598) - 1943, 1943j: Fixed 1943 crashed when starting service mode (ID 03611) - Blood Bros . Simplified Blood Bros. gfx decoding . Removed unnecessary DRIVER_INIT . Marked two sprite ROMs as BAD_DUMP in clone West Story - Captain America and The Avengers: Fixed intro text scrolls from wrong direction (ID 03593) - Green Beret: Changed sound chip to SN76489 and indicated that Green Beret (bootleg) has an undumped PAL and PROMs. - Karnov: Fixed incorrect 'Difficulty' dipswitch (ID 03603) - Mr. Goemon: Replaced SN76496 sound with SN76489 - Multipede: Identified and marked 'Service Mode' dipswitch - Outrun and Turbo Out Run: Fixed incorrect vsync speed (ID 03597) - Play Girls: Made LA Girls to a clone of Play Girls. It's clearly a bootleg hardware clone. Title & background change, but the demo play and block arrangement are identical. Added info from the Guru's website about the reported manufacture company and year for LA Girls. Added a note about Tube-it having the copyright and manufacture info removed. - Psycho-Nics Oscar: Fixed incorrect 'Difficulty' dipswitch (ID 03604) - Space Invaders DX: Fixed game reboots itself after title screen in clone (Japan, v2.0) (ID 03493) - Spark Man: Added a bunch of new protection handlers - Submarine: Put in board XTAL to Submarine and came up with some seeming better clock speed approximations until board readings can be done. Fixed Z80 CPU1/2 and th 2x AY-3-8910A clock speeds to 3072000 Hz and the 2x AY-3-8910A. - Subs: Added DIP location - Super Contra: Fixed tile/graphic corruption on multiple launches (ID 03608) - Trivia ? Whiz (Edition 3 - Horizontal): Fixed what might be a copy/paste error in two sets (trvwz3h and clone trvwz3v) where two roms had the same filename in the same romset. - Tron: Clones Tron (6/17) and Tron (6/15) don't appear to have a valid working cocktail mode video or controls (upright player2 works fine). Flagged as GAME_NO_COCKTAIL. - Input port: Added a fix for INP recording ports that have changed notification. Also prevents new inputs from affecting recorded inputs during playback. (ID 03142) - Dipswitch fixes in adp.c, cmmb.c, dec8.c, karnov.c and subs.c - Description changes of Multi Fish (021124), Multi Fish (021124, banking address hack), Space Invaders DX (US, v2.1), Space Invaders DX (Japan, v2.1), Space Invaders DX (Japan, v2.0), Spark Man (v 2.0, set 1) and West Story (bootleg of Blood Bros.) - Renamed (offrdtp2) to (offroadt2p) - MAME . Renamed tilemap -> tilemap_t, as the name 'tilemap' is too commonly used for statics and structure members, and some compilers (esp. C++ compilers) don't allow that. . Changed behavior of -watchdog option to act like a real watchdog. It now specifies the number of seconds after the last video update that will cause auto-termination of MAME. Also modified it to output a message when the watchdog triggers the exit. Updated windows.txt to reflect this option and the debugger_font options which were never previously documented. . Removed sysconfig section from game_driver struct. Made compatible_with attribute available for MAME too (with NULL value set in GAMEL macro). . Allow any device memory (not just CPU's) to be accessed via debug expressions. Removed support in the expression engine for EEPROM-specific accesses. . Cleaned up braces in the code so that they are properly balanced . Extended the devtempl.h file to support device address spaces . Added additional information to the dipswitches and configurations sections in the -listxml output . Updated srcclean to remove "invisible spaces" immediately preceding tabs 0.135u4 - New games: --- - New Working games: Poker Carnival, Shark Party, Victor 5 and Victor 21 - New Non-Working games: Happy 6-in-1 - New clones: Blood Bros. (set 3), Caveman Ninja (bootleg), Hyper Street Fighter 2: The Anniversary Edition (USA 040202), Mortal Kombat 4 (version 1.0) and Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2) - Dynamic Re-Compiling . Simplified RSP's misaligned memory accesses . Removed now-unnecessary shifts from direct memory accesses in mips3/powerpc drcs . Optimized AND with 0xff/0xffff/0xffffffff cases for x86/x64 . Added rudimentary memory/register tracking in x86 backend to remove redundant loads . Added new profiler bucket for DRC recompilation - I386 CPU . Minimal implementation of the LSL protected mode instruction . Fixed the REP instruction when used with a segment prefix - MIPS CPUs: Enhanced the UML opcodes for LOAD, LOADS and STORE to support arbitrary scaling factors. Previously, specifying a size implied a scaling factor equal to the size (i.e., specifying DWORD meant the index was scaled by 4). This is still the default. However, now you can specify the scale explicitly for other cases. For example, you can specify DWORD_x1 to fetch a DWORD but don't scale the index at all, or BYTE_x8 to fetch a BYTE while scaling the index by 8. Updated all backends to make this work. - PIC16C62x CPUs: Added a new CPU core for the PIC 16c62x series of processors - Discrete sound: Removed old index-based DISCRETE_ADJUSTMENT and then renamed the newer DISCRETE_ADJUSTMENT_TAG to replace it. Updated all callers. - SN76496 sound . Fixed megadrive emulation to use the SMSIII version of the SN76489 sound chip . Replaced SN76496 sound with SMSIII PSG in Aladdin, High Seas Havoc, megaplay.c, megatech.c, Puckman Pockimon, Super Street Fighter II (ssf2ghw), Sunset Riders (bootleg) and Top Shooter - ICS2115 sound (Wavetable syntesizer): Added save states (pgm.c) - S2636 video: Fixed all sets using S2636 video chip (cvs.c, galaxia.c, laserbat.c, Malzak and Quasar) (ID 03574) - 6522 VIA: Added save states. This fixes problems of gameplan.c and trvquest.c games with -autosave. - 6526 CIA: Fixed FLAG handling and slight interface cleanup (alg.c, arcadia.c, cubocd32.c, mquake.c and upscope.c) - 7474, 74148 and 74153 TTL: Converted implementation to devices - EEPROM . Changed EEPROM usage in many drivers to use the new device version . Cleaned up EEPROM device implementation a bit . EEPROM device now looks for a matching memory region to fetch the default values from. Fixed bug in ROM loader that would change the memory region flags to match devices with no address bus. Updated Ground Effects to use the new default loading scheme. - machine\atarigen.c: Added atarigen_init() function which allocates all timers and registers for save states. Updated all drivers to call it. Converted some drivers to use device timers (arcadecl.c, atarig1.c, atarig42.c, atarigt.c, atarigx2.c, atarisy1.c, atarisy2.c, badlands.c, batman.c, beathead.c, blstroid.c, cyberbal.c, eprom.c, foodf.c, gauntlet.c, harddriv.c, klax.c, offtwall.c, rampart.c, relief.c, shuuz.c, skullxbo.c, thunderj.c, toobin.c, vindictr.c and xybots.c) - 8080bw.c, mw8080bw.c and Field Goal: Made MB14241 Shifter IC a device and moved its source to emu/machine. Updated drivers accordingly. Converted Field Goal to use this implementation in place of its own version. - aleck64.c (N64-based games) . Preliminary RSP recompiler, with all vector ops stubbed out to C functions for now. Split SATURATE_ACCUM into a signed and unsigned version to reduce stack usage. Corrected an issue with the 0h variants of VMRG, VAND, VNAND, VOR, VNOR, VXOR and VNXOR. Slightly optimized unaligned reads and writes. Optimized unaligned dword reads. Corrected an issue where badly-written RSP programs could jump to invalid addresses. . Optimized N64 RDP renderer by using function pointers to function variants that eliminate costly branches. - cb2001.c . Added AY-3-8910A (1.5MHz), 8255ppi devices and dipswitches . Added some info about relation between Cherry Master '91 and Cherry Bonus 2001 . Added many custom V30 CPU opcodes - firebeat.c and twinkle.c: Converted RTC65271 to a device - hng64.c . Re-implemented 3D rasterization in the HNG64 driver as a FIFO system . Reworked the HNG64 polygon chunk recovery code to be more crash-proof . Documented what's known about the 3D data much better . Fixed vertex ROM loading for Buriki One and Fatal Fury: Wild Ambition - itech8.c: Fixed all games hardlocks after pressing F3 to reset (ID 03610) - naomi.c: Added BIOS 6 epr-21578h.ic27 (Export) - naomi2.c: Added BIOS 4 epr-23608c.bin (Export) - naomigd.c: Added BIOS 4/5 roms epr-21578h.ic27 and epr-21578g.ic27 (Export) - nss.c and snesb.c: Moved SNES timer allocation to MACHINE_START - plygonet.c: Updated driver to use Konami video devices and input_port_write for eepromdev_read_bit - segaorun.c . Fixed incorrect master clock in Out Run, Super Hang-On and Turbo Out Run (ID 03592) . Added board notes - seibuspi.c: Converted the DS2404 to a device - stvbios: Added BIOS roms stvb111j.ic8 and stvb111t.ic8 - subsino.c . Added preliminary decryption to Poker Carnival, Victor 5 and Victor 21 . Decoded Poker Carnival proms . Improved Super Rider (Italy, v2.0) bitplane order and colors . Added proms 74s287.u35 and 74s287.u36 to Victor 5 - suna8.c . Fixed Brick Zone parent set bitplane graphics . Spark Man: Refactored the protection. Implemented thrash protection that's used after the title screen. Fixed sprite bank bit. . Super Ranger: Changed clone Super Ranger (v2.0) to parent set. Added worked around protection in sranger, srangerw and srangerb. - taito_f3.c: Converted Taito F3 sound to a separate machine driver which is imported into games that use it. - taitojc.c: Changed 68000 CPU2 to CPU4 - Konami devic-fication and improvements . Added device versions of all the Konami custom ICs currently emulated in machine/konamiic.c and video/konamiic.c. Updated 88games.c, asterix.c, battlnts.c, combatsc.c, contra.c, crshrace.c, f1gp.c, fastlane.c, flkatck.c, hcastle.c, labyrunr.c, moo.c, rockrage.c and suprslam.c to use the new devices. . Updated ajax.c, aliens.c, bishi.c, blockhl.c, bottom9.c, chqflag.c, crimfght.c, djmain.c, gbusters.c, gijoe.c, gradius3.c, mainevt.c, overdriv.c, parodius.c, rollerg.c, simpsons.c, spy.c, surpratk.c, thunderx.c, vendetta.c and xexex.c to use new Konami video devices. . Updated dbz.c, lethal.c, metro.c, rungun.c, tail2nos, tmnt.c, ultraman.c, wecleman.c, xmen.c and zr107.c driver to use Konami video devices instead of konamiic.h code. . Updated asterix.c, gaelco3d.c, gijoe.c, hornet.c, konamigx.c, lethal.c, moo.c, mystwarr.c, overdriv.c, rungun.c, tmnt.c, vendetta.c, xexex.c, xmen.c to use EEPROM device. . Moved K056800 sound device to emu/sound and removed the old code. Updated gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c drivers to use this implementation. . Removed auto-init hack from some Konami games. Hold down F2 and reset (via F3) to initialize the EEPROM, like all the other Konami games. - Arkanoid: Fixed memory leak in debug mode in clone Block 2 (S.P.A. CO. bootleg) (ID 03575) - Carrera: Fixed colors - Combat School: Fixed graphic issues on the "players" screen as scrolling problems on 1st stage of Combat School (bootleg) (ID 00400) - Cool Riders: Added redumped gfx5 roms - D-Day: Enabled GAME_SUPPORTS_SAVE flag because some of the core changes have fixed the sound problem at loading - Every Second Counts: Fixed access violation (ID 03569) - Go! Go! Connie chan Jaka Jaka Janken: Added DIP locations to match those showing in service mode. Added game year to source from title screen. - Gomoku Narabe Renju: Added dipswitches and changed clock values to XTAL - Ground Effects: EEPROM device now looks for a matching memory region to fetch the default values from. Fixed bug in ROM loader that would change the memory region flags to match devices with no address bus. Updated Ground Effects to use the new default loading scheme. Added 93c46.164 EEPROM (128 bytes). - Hexa: Added DIP locations as well as assigned XTAL for the clock speeds to Hexa, using those from Arkanoid, since the boards are nearly identical in many aspects. - The King of Fighters 2003 (Japan, JAMMA PCB): Fixed access violation (ID 03570) - Koi Koi Part 2 . Added hardcoded table (disabled by default), concluded that a color prom is currently undumped. . Also documented a bunch of unused ports - Lucky Girl (newer Z180 based hardware): Implemented CRT Controller hook-up - Malzak: Imported SAA5050 emulation from MESS and made it a device. Updated game to use it, removing the almost identical implementation in the driver. - Mobile Suit Gundam EX Revue: Added EEPROM - Mysterious Stones: Fixed music is faster than original PCB and VSYNC does not match original PCB (ID 03588 + 03589) - Night Driver: Changed clock values to XTAL - Pandora's Palace: Fixed music pitch/speed is too high. Changed Z80 CPU3, I8039 CPU4 and AY-3-8910A clock speeds (ID 03572). - Race Drivin': Updated PCB layout README - Sky Army: Cleaned up driver, also removed the GAME_WRONG_COLORS flag since the colors actually seems correct according to the references. - Strike Bowling . Added proper COINAGE selections as well DIP locations to the driver . Added mapping for button 1 which is used to allow change from curve to straight throw . Replaced clock speeds with XTAL values - Super Slams . Fixed sprite-tilemap priorities . Added flickering effect in title screen - Super Speed Race: Added DIPS and changed clock values to XTAL - Tournament Table: Changed clock values to XTAL - Trivia Madness: Improved graphics and colors - Trivia Quest . Added save states to 6522via.c. This fixes problems of Trivia Quest games with -autosave. . Fixed access violation (ID 03567) - Trivia ? Whiz (Edition 2): Added sc-002 prom - Trivia ? Whiz (Edition 3 - Horizontal): Added sc-002 prom and region misc roms dec002.u13 and sex-001_01. - Trivia ? Whiz (Edition 4): Fixed user1 roms rom loading - Trivia ? Whiz (Horizontal): Added user1 roms (spo-001_01a, spo-001_02a and spo-001_03a) - Input port . Removed all uses of input_port_by_index() and removed the function . Changed ticket.c into a device, updated all users - Save states: Got rid of explicit resource tracking for state saving. Now we just use the auto_ allocators, since registration is restricted to initialization. - Added driver data struct to 8080bw.c, 88games.c, airbustr.c, balsente.c, combatsc.c, cvs.c, mw8080bw.c, psikyo4.c, psikyosh.c and rockrage.c. - Added driver data struct and save states to battlnts.c, bladestl.c, cbasebal.c, chinsan.c, contra.c, cps1.c, cps2.c, crshrace.c, djboy.c, f1gp.c, fastlane.c, fcrash.c, flkatck.c, hcastle.c, labyrunr.c, malzak.c, mitchell.c, neodrvr.c, pgm.c, psikyo.c, quasar.c, sf.c, suprslam.c and toratora.c. - Rom names fixes in bigappg, casino5, phrcraze, pitboss, trvwz2, trvwz3h, trvwz4 and trvwzh - Dipswitch fixes in gomoku, cb2001.c, sbowling and subsino.c - Description changes of Poker Carnival, Stoneage (bootleg of Caveman Ninja), Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1), Shark Party (Italy, v1.3) and Rough Ranger (v2.0, unprotected, bootleg?) - Renamed (combasc) to (combatsc), (combasct) to (combatsct), (combascj) to (combatscj), (combascb) to (combatscb) and (hsf2) to (hsf2a). - MAME . Added new option -numprocessors . Specify the number of processors to use for work queues. Specifying "auto" will use the value reported by the system or environment variable OSDPROCESSORS. To avoid abuse, this value is internally limited to 4 times the number of processors reported by the system. The default is "auto". . Added "new" command -listdevices (or -ld) to list the devices attached to a driver. Example: mame gundamex -ld. I notice that MESS has a command with the same name; hopefully the behaviors can be combined eventually. . Moved machine->gfx initialization out of the video module and into drawgfx. We now call this before devices are initialized, so that devices can dynamically append to the machine->gfx as needed. . Removed deprecated core function decodegfx() . Fixed tilemaps so they can be initialized at device start time . Fixed crash on exit for systems with no tilemaps . Added TILE_GET_INFO_DEVICE and SET_TILE_INFO_DEVICE macros to tilemap.c . Eliminated the use of generic.colorram and generic.videoram in several drivers . Added warning messages for auto_malloc, timer and save state allocations done after init time. These should be fixed when detected, and will soon be disallowed entirely. Fixed many cases in the code where this was being done. - Compiling . Removed the global "includes" include and instead specify the "includes" path in all #include occurences . Fixed some unbalanced quotes/braces lurking in the source (mostly in disabled code) . Fixed a couple of edge case parsing bugs in srcclean.c - Debugger . Fixed stack crawl is not generated anymore (Windows Debug) (ID 03583) . Fixed registered ram blocks registered with save state cannot be viewed with debugger (ID 03444)