Features, Supports and Changes in MAME ====================================== 0.127 - New games: Cube Quest and WW III - New Non-Working games: Astro Wars, Hot Slot (ver 05.01), I P M Invader (Incomplete Dump) and Magic Colors (ver 1.7a) - New clones: Red Hawk (Italy), Shogun Warriors (Euro) and Snow Bros. - Nick & Tom (Dooyong license) - New drivers: cubeqst.c - G65C816 CPU: Added save states (nss.c and snesb.c) - SH-1 CPU: Added SH-1 CPU support (Cool Riders), including lower precision on MAC.W and locking out SH-2 only instructions. - SH-2 CPU / DRC (Dynamic Re-Compiling) . Moved IRQ handling front-end into recompiled code . Added TSTM/ANDM/XORM instructions . Removed more unprintable characters in SH-2 disassembler - SH-4 CPU: Split out SH-4 non-interpreter-specific stuff to sh4comn.c - T5182 CPU: Updated documentation/pinout - TMS5110 sound: Removed duplicated TMS5110 entry in sound.mak - YM2612/FM sound: Reduced YM2612 DAC level relative to FM. This better matches real hardware. - HD63484 video controller (adp.c and shanghai.c): Improved core to support some initial graphics - EEPROM: Changed AT28C16 memory handlers to 8 bits and perform the conversion in the memory mapping - Laser Disc . Added driver for Cube Quest (Simutrek 1983), include 3x bit-sliced CPUs for Rotate, Line and Sound (AM2901-based), as well as laserdisc support (12 GB) for the hacked laserdisc that was used to drive the games. . Added DISK_IMAGE_READONLY_OPTIONAL to support games where the disk is non-essential to the game's operation (like Cube Quest) . Added DISK_REGIONS and fixed visible area and VSync in all laserdisc drivers (astron, cliffhga, cliffhgr, cobram3, cubeqst, dlair, esh, galaxyr, goaltogo, gpworld, istellar, lgp, mach3, maddog, spaceace, superdq, thayers and usvsthem) . Added new generic laserdisc VIDEO_UPDATE handler to the laserdisc code. This handler works for both disc-only games and those with overlays. For disc-only games, the base macro is sufficient. For games with overlays, an additional set of configuration macros are provided: MDRV_LASERDISC_OVERLAY - specifies update function, width, height and bitmap format of the overlay, MDRV_LASERDISC_OVERLAY_CLIP - specifies the visible area of the overlay bitmap, MDRV_LASERDISC_OVERLAY_POSITION - specifies default x,y position and MDRV_LASERDISC_OVERLAY_SCALE - specifies default x,y scale factors. The update function provided to MDRV_LASERDISC_OVERLAY is identical to a normal VIDEO_UPDATE callback, so a standard one can be used. All existing laserdisc drivers have been updated to support this new rendering mechanism, removing much duplicated code. . Added new macros MDRV_LASERDISC_SCREEN_ADD_NTSC and _PAL, which defines a standard screen with the correct video timing characteristics and update function for laserdiscs. Updated all drivers to use these macros instead of defining their own screens. . Fixed bug in identifying the custom sound driver for the laserdisc . Updated ldverify to identify blank regions of the disc for post-processing . Fixed rendering 16bpp with alpha using bilinear filters (fixes screenshots of laserdisc games with overlays) . Added the ability to configure the overlay position and scale parameters at runtime. Added OSD menus to control them. Added logic to save/restore the data in the game's configuration file. - adp.c . Converted driver to 4bpp rendering . Fixed visible area and VSync in Fashion Gambler and Quick Jack - alg.c: Fixed VSync in all games (except Zorton Brothers = 50 Hz) - cischeat.c: Fixed missing sound in Big Run and Cisco Heat (ID 02119) - cps1.c . Updated driver to use proper gfx ROMs + PALs for Varth (Japan 920714), and to load correct A-Board PALs for QSound games. . Added new A-board PLDs to Cadillacs and Dinosaurs, Muscle Bomber Duo, The Punisher and Saturday Night Slam Masters . Added new A-board PLD and B- and C-boards PLDs in Warriors of Fate - cps2.c: Fixed graphics (ID 02116) - dooyong.c: Added DIP locations - eolith.c: Fixed colors shifted to blue (ID 02114) - magic10.c . Simulated the Co-processor to pass the initial test . All Inputs worked from the scratch . Fixed position of tilemap layers . Added scroll register preliminary support . Fixed Super Pool graphics - midzeus.c: Identified compatible timekeeper used by Midway Zeus II. Removed all the timekeeper memory handlers, except for 8 bit & changed the drivers to use the conversion built into the memory system. - namcos22.c: Added new hardware info to the driver - paradise.c . Added PCB layout for Torus & Mad Ball . Corrected rom names and/or added U locations - Berlin Wall: Fixed P1 inputs not working (ID 02115) - Cool Riders: Replaced SH-2 CPU1 with SH-1 - Donkey Kong 3: Added address decode prom - Dead or Alive 2: Added correct CRCs/SHA1 - Q*bert: Fixed misplaced graphics (02105) - Reactor: Fixed input controls and startup tone (ID 02121) - Skat TV . Began implementing 68681 DUART device . Improved HD63484 core to support some initial graphics . Fixed visible area and VSync - Time Crisis: Fixed SubCPU start wait fails test (ID 01992) - Fixed rom names in doa2, madballn, tgtball, torus and varthj - Dipswitch fixes in megaplay.c, mp_col3, dooyong.c and sharkpy - Cheat engine: Added cheat functions frombcd() and tobcd() to convert numbers to/from BCD format. Changed "Activate" to "Set" in the menus. - MAME . Added the ability to configure the overlay position and scale parameters at runtime. Added OSD menus to control them. Added logic to save/restore the data in the game's configuration file. . Fixed rendering 16bpp with alpha using bilinear filters (fixes screenshots of laserdisc games with overlays) . Added validity check to ensure that AM_READ_PORT() macros reference valid ports. Fixed several cases where the check failed. . Added validity check to ensure that ports referenced by a condition actually exist. Fixed a case where this was violated. . Use machine in uigfx.c where it's already available . Cleanup of memset() usage . Included support for parsing .gdi files in CHDMAN . Removed included "profiler.h" from files that do not use profiling functions - Debugger: Removed obsolete ENABLE_DEBUGGER occurance 0.126u5 - New games: Final Fight 2 (SNES bootleg) - New Working games: Da Ban Cheng (V027H), Killer Instinct (SNES bootleg), 'PinYin: Xing Yun Man Guan' and Zhong Guo Long (China, V010C) - New Non-Working games: Sonic Blast Man TURBO 2 (SNES bootleg) - New clones: Dai Makai-Mura (Japan hack?), Defender (White label), Free Kick (bootleg set 2), Zhong Guo Long? (Hong Kong, V011H) - FD1089 CPU: Updated decryption algorythm to use the real keys generated by the LCG. The algorithm is more complex than it should be, but I haven't been able to simplify it more. The keys are still embedded in the source. It would now be reasonable to move them to external files; however, for several games we only have partial keys so the files would need to be BAD_DUMP. (see machine\fd1089.c) - I386 CPU: Fixed core's BSR implementation for the case where the high bit is set - FM sound . Pass chip type around and restore Jarek's original behavior for YM2203/YM2610 . Always recalculate attack rate in set_ar_ksr, fixes Megadrive/Genesis "Batman & Robin" - Laser Disc . Added new target ldplayer, which is based on MAME but serves as a standalone laserdisc player for CHDs. Right now only the Pioneer LD-V1000 is connected, and limited commands are available. Each player type is a driver, so you specify the player type on the command-line. The driver then opens the first CHD it finds in your ROM path and uses that as the laserdisc. The intention is that you specify the -rompath each time on the command-line, so a typical approach might be: ldplayer ldv1000 -rompath j:\mach3 , where it will pick up the mach3.chd lurking in your j:\mach3 folder. Several basic commands are supported: Space = play/pause, Alt = toggle frame display, Left = scan forward (when playing) or step forward (when paused), Right = scan backward (when playing) or step backward (when paused), 0-9 = enter numbers for search and Enter = execute search to frame. . Rejiggered huffman.c to support multiple interleaving streams and a delta-RLE pre-encoding. Added optimized case for the Y/Cb/Y/Cr video encoding case. Cleaned up the code. . Updated avcomp.c to use the new huffman.c functions. Reworked configuration options to allow for both input and output of naturally aligned data streams. Updated chdman and laserdsc to use the new interfaces. New compression gives an additional 3-7% over previous attempt and compresses the dummy CHDs down significantly. . Added video level detection and reporting to ldverify . Forced a sound synchronization on each vsync in the laserdisc playback. This prevents overwriting the tail end of the buffer which was fouling up the MACH 3 audio decoding. . Fixed visible area and VSync in Dragon's Lair and Space Ace - adp.c: Added the new Shanghai HD63484 video controller to the ADP driver (see video\hd63484.c) - artmagic.c: Fixed protection (it used a wrong tag, which was probably added somewhere in 0.125uX) - cps1.c: Added reverse engineered PLD images (A-board to all and B-board and C-board to many) - cps3.c: Fixed refresh rate for all games (video from a DV cam proves the refresh rate of CPS3 in MAME is wrong) (ID 02110) - crystal.c: Collapsed timer callbacks in some cases to avoid duplicating code. In the case of crystal.c, also refactored two DMA handlers and shuffleed the init/reset code around a bit. - jcross.c, sgladiat.c, hal21.c, marvins.c and snk.c: Implemented proper shadow handling in the SNK video driver. This fixed the shadow in Ikari Warriors and Victory Road (ID 00233). - m10.c, m52.c, m62.c, m63.c, m72.c, m90.c, m92.c, m107.c: Changed a lot of input related things in IREM M10->M107 boards. First of all, moved input definitions from drivers/m92.h to include/iremipt.h and removed completely drivers/m92.h (which only contained those definitions). Added more common inputs to iremipt.h and started to use that file in m62->m107 instead of local #defines. Finally, added diplocations to all the games in m62->m107 which were missing and it implemented coinage mode 2 through dipconditions in the drivers which didn't support it. - m63.c: Added sprite wrapping to the driver (Fighting Basketball and Wily Tower) - namcos22.c: Fixed no sound in games after reloading via the MAME UI (cybrcomm, raveracw, raveracj, raveraja, ridgerac, ridgerab, ridgeraj, acedrvrw and victlapw) (ID 01802) - shanghai.c . Convert framebuffer's ram from 8 bit to 16 bit. Convert dma command from 8 bit to 16 bit. Convert gfx command from 8 bit to 16 bit. Implemented all gfx mode: 1,2,4,8,16 bpp. (see video\hd63484.c) . Implemented MWR (memory width register) in Shanghai to avoid hardcoded 384 value for screen width . Fixed visible area in Kyuukyoku no Othello - snesb.c: Changed kinstb.c to snesb.c driver - snk.c: Fixed gfx3 rom addresses - A. D. 2083: Changed game to load TMS5110 PROM data instead of using hardcoded values - Champion Base Ball Part-2: Updated Alpha 8302 MCU simulation to match newly dumped internal ROM - Chequered Flag: Fixed memory leak warning (ID 02095) - Cool Riders: Fixed crash with DRC (ID 02071), now hangs waiting for impossible conditions again. - Cotton Boomerang: Fixed sprite layer offset toward upper-left (ID 02021) and Fatal Error crash (ID 02022) - Dragon World (World, V0400): Fixed crash, when continue inserting credits and play in clone (World, V0300) (ID 00491) - Galaxia: Fixed ROM mapping and added preliminary video emulation (working attract mode) - Go 2000: Added dipswitches and locations to Go 2000 (even if they were partially documented in the source). Added dipswitches 'Coin / Credits', 'Minimum Coin', 'Service Mode', 'Difficult-1', 'M1 valu' and 'Difficult-2'. - KO Punch: Fixed boxer graphics (had to be doubled) (video\kopunch.c) - Long Hu Bang (V035C): Fixed clone (V033C) which does not work (ID 02027) - Lucky 74 . Reverse engineering of custom IC's 06B49P, 06B53P and 09R81P . Added missing 3x SN76489 and MSM5205 . Measured and traced all clocks on the board . Measured and fixed the interrupt system . Implemented timings/clocks from custom 06B49P . Added sound support. All regular game sounds/musics are working. . Implemented the ADPCM samples system through 09R81P and M5205 emulation . Added pinouts and technical notes about custom IC's 06B49P, 06B53P and 09R81P . Added flip screen mode . Inverted the order of double-up difficult DIP switches . Changed 'Key In' to be active LOW instead of HIGH . Complete memory map and ports scheme . Created handlers for USART port and co-processor communication . Renamed the sets accordingly . Updated all notes . Cleaned-up the driver - Mad Alien . Added discrete sound (amplification and motor sound - audio\madalien.c) . Fixed NMI on sound CPU. This fixes shot sound and various other sound glitches. . Marked Mad Alien and clone as 'Imperfect Graphics'. They are missing an effect. When you shoot an enemy in the dark, the whole screen lights up. Basically the headlights fill the whole screen. - Panic Street: Fixed hangs after choosing stage (ID 02059) - Plotting: Added the Plotting PAL to clone Flipull (Japan). Also corrected the PAL ROM name. - Space Chaser: Hooked up discrete filtering to SN76477 - Street Fighter III 3rd Strike: Fixed title animation and the linear zoom effect - Virtua Bowling: Fixed resets after the 3rd launched ball (ID 00492) - Wonder Boy: Fixed Access Violation (ID 02101) - Input port . Improved input ports for drivers starting with F->M. In particular: Added AM_READ_PORT whenever suitable, make inputs fully 32bit where needed, removed indexed input read handlers from INITs, replaced many read handlers with appropriate CUSTOM_INPUTs. . Converted most of the games checking avgdvg_done() in inputs to use a CUSTOM_INPUT (defined in video/avgdvg.c) - Merged memory maps in The Deep, timelimt.c, Tecmo Bowl, thief.c, tigeroad.c, Toobin' and tumbleb.c - Fixed rom names in Cosmic Avenger, Fighting Soccer, Lady Bug, Road Riot 4WD, Snap Jack, - Dipswitches . Added DIP locations to Clash-Road, Fire Battle and Go 2000 . Fixes in clshroad, dbc, drgnwrld, f1gp2, go2000, gravitar, lhb, loverboy and xymg - Description changes of Long Hu Bang (V035C) + (V033C), Lucky 74 (bootleg, set 1)+ (bootleg, set 2), 'PinYin: Xing Yun Man Guan' (ID 02113) and Zhong Guo Long (China, V010C) - Cheat engine . Fixed bug that prevented the cheat engine from working when the debugger was disabled . Updated cheat parser to preserve the format of attribute values used for cheat parameters and items. . Added support for information-only cheat items, which will be displayed in the menu but which are not selectable and have no action associated with them. Empty information-only items are automatically converted to menu separators. - MAME . Updated structure and naming conventions of sound and CPU cores to match core conventions . Cleaned up and grouped the sound chip entries based on sound.mak . Collapsed timer callbacks in some cases to avoid duplicating code. In the case of crystal.c, also refactored two DMA handlers and shuffleed the init/reset code around a bit. . Added new flag to menu items: MENU_FLAG_DISABLE, which means the item will be visible but not selectable. . Fixed incorrect test in winwork that led to spinning instead of using the nicely allocated events we had on hand. . Modified xmlfile.c to accept integer values in decimal or hex. The default is decimal. Numbers may be prefixed by '#' for decimal values, or by '$' or '0x' to indicate hexadecimal values. Also added function xml_get_attribute_int_format() to return the format of the attribute, so that it can be later replicated. . Added README's for Cosmo, Don Den Lover, Beatmania (CHD dumping), Dragon Master, Gals Panic, Fantasia II, Grand Tour, New Dyna Blaster Global Quest, Daytona "To The MAXX" upgrade, Namco System FL, Great Sluggers, Gun Nail, Gun & Frontier, Elevator Action Returns, Battle Bakraid, Koro Koro Quest, Gigas (bootleg), Race Drivin', Hexa, IQ Block, Open Golf Championship, Macross Plus, Malzak, Puzzle Club, Naomi, Puzzle Star, Puckman Pockimon, Raiden 2, Raiden Fighters 2 (single board), Light Bringer, Landmaker, Knuckle Bash 2, Mahjong Fight Club, Vivid Dolls, Tower and Shaft, Star Soldier Vanishing Earth, Stone Ball, Sky Lancer, Squash, Winning Spike, Versus Net Soccer, Undercover Cops, War Gods, Space Fever, Strikers 1945, Rohga, Super Eagle Shot, Treasure Hunt (stv), Tickee Tickats, Great 1000 Miles Rally 2 and Super Monaco GP. - Compiling . Moved several include files from mame/ to emu/, as they were included by generic components in emu/ and thus should have no dependencies on the MAME code. . Changed gfx memory region tags in obvious cases 0.126u4 - New games: S.O.S. - New Working games: Kyuukyoku no Othello - New Non-Working games: Jingle Bell (Italy, V133I) and Quiz Punch 2 - New clones: Crystal Castles (joystick version), INDY 500 Deluxe and Megatouch III (9255-20-01 RON) - New drivers: igs009.c and quizpun2.c - Z80 CPU: Z80DMA device now require device callback handlers instead of machine handlers. Updated affected drivers accordingly. - Discrete sound . Added discrete sound to Fantasy, Nibbler and Pioneer Balloon . Minor optimization to the DISCRETE_INPUT modules. The node output is now calculated when a discrete_sound_w() is called instead of each step in the simulation. Also removed the Enable line from the DISCRETE_ADJUSTMENT modules. They should never be disabled. . Discrete sound core optimizations: Moved a couple of exp(x) from _step into _reset where appropriate. Use tabulated function values for the transfer function in DSS_INVERTER_OSC. . Added module profiling to discrete sound core: Added DISCRETE_PROFILING macro to discrete.h. Upon discrete_stop, the worst performing modules will be listed. - FM sound: Backported a bunch of FM OPN (YM2608/2612) fixes from Genesis Plus GX. All of this was verified on real hardware: Implemented PG overflow, aka "detune bug". Fixed SSG-EG support. Modified EG rates and frequency. Fixed EG attenuation level on KEY ON (Ecco 2 splash sound). Fixed LFO phase update for CH3 special mode. - YM2151 sound: Forced synchronization (stream_update()) before the YM2151 status is actually read - 8253 PIT: Set the initial 8253 timer output to 2 to indicate that it is undetermined - Laser Disc . Added proper laserdisc support for MACH 3, Us vs. Them and Cobra Command (MACH 3 hardware). Old laserdisc hacks are now removed. The code now talks to the standard Pioneer PR-8210 interface. Also removed hacky "target list" from the MACH 3 ROMs; this information is now decoded on the fly from the right channel laserdisc audio. . Changed laserdisc support to parse white flags and other data from the VBI data directly, rather than relying on the textual metadata. Expanded video frame cache to 3. Changed the way frames are assembled to decrease the likelihood of getting an interlaced weave. Fixed sound creation so that it is done at reset time instead of device start, when the sound devices aren't yet live. . Changed the laserdisc interface to no longer require a disk number or a custom sound device. Both are now assumed to be tagged the same as the laserdisc device. Updated all drivers accordingly. . Other laserdisc changes: Changed PR-8210 interface to work consistently for both Gottlieb and Stern games. Added audio callback mechanism to allow drivers to peek at the raw audio streams. . Removed obsolete makemeta tool. Replaced it with new ldverify tool which walks through either an AVI or CHD capture from a laserdisc and ensures that there are no anomalies lurking in the VBI data. . Added new option to chdman, where if you use -createav with a special filename (either 2:2 or 3:2) it will create a fake laserdisc files with the equivalent cadence. This can be used for testing until full captures are available. Most games used 2:2 apart from Dragon's Lair and Space Ace, which were 3:2. Note that even though these files are essentially blank, they are Huffman-compressed, meaning that the maximum compression ratio you will get is 8:1, so they still end up ~5GB. . Updated vbiparse to improve Manchester code decoding. It now assigns a confidence level per bit based on how solid the data is. Also added a new function vbi_parse_all which parses the white flag and all three lines of metadata from a laserdisc frame. It then compares line 17 and 18 against each other and selects the most likely candidate based on per-bit confidence and other factors. . Added frame number display to laserdsc.c. It is off by default, though most players can be configured to turn it on (not sure if any actually do). It can be manually toggled via the backslash key during playback. - 1943.c: Added information to the video driver about priorities encoded in PROM - adp.c: Some initial work on the driver - cps1.c: Verified and fixed VSync to 59.610000 Hz - gottlieb.c . Added proper laserdisc support for MACH 3, Us vs. Them and Cobra Command (MACH 3 hardware). Old laserdisc hacks are now removed. The code now talks to the standard Pioneer PR-8210 interface. Also removed hacky "target list" from the MACH 3 ROMs; this information is now decoded on the fly from the right channel laserdisc audio. Added Custom sound. Fixed visible area and VSync. . Fixed revision 2 sound board again . Fleshed out memory maps and behaviors according to the schematics . Hooked up coin counters . Moved sound inputs to audio/gottlieb and included them in all relevant drivers . Ordered input ports and ROM definitions consistently . Fixed audio rom address in 'The Three Stooges', Screw Loose, 'Video Vince and the Game Factory' and Wiz Warz - mpu4drvr.c: Corrected AY8910 output weightings - nmk16.c: Fixed access violation in US AAF Mustang (bootleg) and Thunder Dragon (Bootleg) (ID 02067) - psikyo4.c: Fixed region jumper - snk.c: Fixed clock speed of the 2x Z80 in Fighting Golf - suprnova.c: Fixed segfaults on load (01958) - taito_b.c: Fixed unable to enter coins in pbobble, qzshowby, spacedx and spacedxj (ID 02056) - A. D. 2083: Removed the bad dumps flags - Athena: Verified CPU clocks (fixed clock speed of the 2x Z80) - Champion Poker: Moved Poker? (IGS) from IQ Block to Champion Poker driver and changed description to 'Champion Poker (v200G)'. Changed description of 'Champion Poker' to 'Champion Poker (v220I)'. - Da Ban Cheng: Decrypted main cpu rom - The Deep: Fixed game didn't start (changed region cpu2 to cpu3) (ID 02090) - Donkey Kong . Added scanline exact rendering . Sprite limit of 16 sprites per scanline implemented from schematics . Proper wrap around from bottom to top . Added some notes about sprite limits and hardware . 8257 DMA: Device now require device callback handlers instead of machine handlers. Updated affected driver accordingly. - Flower: Added edge connector pinout info for the 2x 8-Way joysticks with 3x fire buttons (Laser, Missle and Cutter) - Grand Prix Star and F-1 Grand Prix Star II: Removed the current hacky handling of Grand Prix Star coinage dips to use conditional ports instead. In order to do this, the possible conditions were extended to support less than/greater than comparisons. - Intrepid: Fixed clone (set 2) stops at PCB test (ID 01817) - Major Havoc: Fixed access violation and all graphics are missing (ID 02066, 02068) - Operation Wolf: Fixed 68000 CPU1 clock speed - Polygonet Commanders: Improved DSP56k CPU interrupt handling, the game now advances past its first DSP handshake. - Rim Rockin' Basketball: Replaced M6809 CPU1 with HD6309 - Shanghai / II: Fixed window - Soccer Superstars: Fixed the romtest report two bad roms (ID 02033) - Space Invaders: Fixed built in red color overlay goes too low and shows on top line of invaders heads in Vista only (ID 02049) - Spinal Breakers . Fixed Z80 CPU2 clock speed as verified on the PCB . Fixed wrong priorities in second level (ID 02060) - Track & Field: Fixed access violation in clone Atlant Olimpic (ID 02070) - Transformer: Fixed access violation in clone Astro Flash (Japan) (ID 02069) - Input port . Removed PORT_START macro. Renamed old PORT_START_TAG to PORT_START. All input ports must have tags. . Fixed bug that would break conditions on ports using the PORT_DIPUNKNOWN_DIPLOC macro . Continued the cleanup of inputs in drivers starting with C (the remaining ones), D and E . Added tags to EVERY input port in drivers starting with F->Z - Memory maps merged in blockout.c, blmbycar.c, blockade.c, blockhl, bombjack, boogwing and bottom9 - Dipswitches . Added DIP locations to Big Run, China Gate, Chequered Flag, Circus, Cisco Heat, City Connection, Cloak & Dagger, Combat School, Contra, Cops'n Robbers, cosmic.c, crospang.c, Crowns Golf/Hawaii, Crime Fighters, Dambusters, Dark Seal, Dead Angle, Do! Run Run, Double Dragon, Double Dragon II, Double Dribble, Double Wings, Dynamite Duke, Grand Prix Star, Lethal Crash Race, Mr. Do's Castle, Mr. Do's Wild Ride, Scud Hammer and Thunder Zone . Added conditional dips to Dynamite Duke . Fixes in 3stooges, bestri, bigrun, cischeat, citycon, cobram3, crimfght, ddribble, dynduke, f1gpstar, heuksun, kokoroj2, kothello, mach3, radr, screwloo, usvsthem, vidvince and wizwarz - Fixed rom names in New Rally X, Rally X - Description changes of Champion Poker (v200G), Champion Poker (v220I), Defender (Blue label), INDY 500 Twin - Cheat engine . Changes to the cheat.xml format: New tag (within ) is read and preserved when saved. Removed variable attribute from ; it is now assumed to be 'param'. Added default attribute for . . Added new variable 'frame' accessible from cheat scripts. This can be used in the conditional to prevent execution on every frame, or for other effects (like displaying temporary messages). . Added new variable 'argindex' which is the index when processing an with a count attribute greater than 1. . Reinstated the cheat menu. It now displays all loaded cheats and allows for them to be activated. All known cheat behaviors should be working now. Cheats are toggled on/off with the left/right arrow keys. Oneshot cheats are activated by hitting enter. Pressing enter on other cheats resets them to their default values. . Changed cheat escaping to automatically escape && & < and <= to and band lt and le. - MAME . Added new functions cputag_set_input_line() to assert input lines via CPU tag instead of index . Changed the IDE interfaces to default to choosing the region with the same tag as the device for its master disk (assuming no slave). Added support for specifying explicit master/slave disk regions as part of the configuration, though slave disks are still not supported yet. . Disks opened by the romload module are no longer identified by index. Instead, they are identified by the region they were loaded in. This generally means one disk per region. get_disk_handle() now takes a region name in place of an index. Updated all callers to do this. The SCSI modules in particular posed a challenge to make this work, so watch out for potential bugs there. . Removed per-frame metadata support from chdman. Creating an A/V now simply requires an AVI file input. . Fixed bug in winwork that caused the creation of single work items to return NULL, and thus lead to massive memory leaks when using A/V CHDs. . Disks opened by the romload module are no longer identified by index. Instead, they are identified by the region they were loaded in. This generally means one disk per region. get_disk_handle() now takes a region name in place of an index. Updated all callers to do this. The SCSI modules in particular posed a challenge to make this work, so watch out for potential bugs there. . Added new option to chdman, where if you use -createav with a special filename (either 2:2 or 3:2) it will create a fake laserdisc files with the equivalent cadence. This can be used for testing until full captures are available. Most games used 2:2 apart from Dragon's Lair and Space Ace, which were 3:2. Note that even though these files are essentially blank, they are Huffman-compressed, meaning that the maximum compression ratio you will get is 8:1, so they still end up ~5GB. . Moved error strings from chdman.c to chd.c, where they can be fetched from any caller via the new chd_error_string() function. . Added support for DEL as well as BS for backspacing in the game select menu. Also limited input to ASCII characters. . Restored previous behavior that allowed popmessage() messages to overlay menus and other UI . Fixed bug in aviio.c which could cause an infinite loop if attempting to read sound beyond the end of the file. . Added README's for Galaga, The Outfoxies, Splatter House, Top Racer, Kyros No Yakata, Bombs Away, Meikyuu Hunter G, Crazy Kong, Moero Pro Yakyuu Homerun Kyousou, Lucky & Wild, Match It, Country Club, Enforce, Elevator Action, Chuka Taisen, The New Zealand Story, Buck Rogers Zoom 909, Head On, Victorious Nine, Youma Ninpou Chou, Pairs, Woodpecker, Slap Fight, Alcon, Tiger Heli, Superman, WWF Superstars, Area 51, Animalandia Jr, Avengers In Galactic Storm, Alien 3: The Gun, Aquajack and Missile Command. - Compiling: Fixed I/O watchpoints - Debugger . Added word alternates for operators in expressions: + plus, - minus, * times or mul, / div, % mod, ! not, ~ bnot,&& and, & band, || or, | bor, ^ bxor, lt <, le <=, gt >, ge >=, eq == and ne != . Added expression validation callback to verify names for CPUs and memory regions. Extended error codes to report incorrect memory spaces, memory names or memory sizes. Added verification callback to the debugger to validate CPU and memory region names, as well as verifying that a requested address space exists for a given CPU. 0.126u3 - NOTE: Due to a change internally with the way memory regions are handled, a large percentage of all files in the project needed to be updated. There's been a regression test against the change already, so we should be beyond crashing problems. But it is possible that some games may be missing sound due to mismatched sound regions. If you hear anything funky, please report it to MAMETesters so that we can get the problems ironed out in time for u4. - New games: Galaxi (v2.0) - New Non-Working games: Bust a Move 2 (JAPANESE ROM ver. 1999/07/17 10:00:00), Donchan no Hanabi de Doon, Hi Pai Paradise, Kurukuru Fever and Mayjinsen 3 - New clones: Killer Instinct 2 (v1.3k, upgrade kit) and Pool 10 (italian, set 3) - New drivers: galaxi.c - I8051 CPU . Added support for timer mode 0 (13 bit timer) . Cleaned up timer code a bit, fixing some off-by-one errors when timers overflow. - SH-2 CPU . Removed of unprintable chars (newlines) in SH-2 disassembler . SH2DRC . Add PC-relative load optimization and ability to disable if necessary . Add SUBV, replace ADDV with C version as a precaution (this fixes most of Mantis #2026, except the part which is a separate bug). . Added new implementation which uses flags directly, keeping the C versions in reserve in case they are needed. . Simplified shift/rotate instruction implementations - cps2.c: Fixed 'Abort' in all CPS2 parent sets (ID 02043) - freekick.c . Verified Free Kick PROMs and improved documentation . Fixed proms names in countrun and freekick - gottlieb.c . A bit more cleanup in the driver, still incomplete . Replaced the 2x AY-3-8910A sound with AY-3-8913A in the 3stooges, cobram3, mach3, screwloo, usvsthem, vidvince and wizwarz - m63.c: Adjusted AY frequencies to proper 1.5 MHz - naomi.c . Refactors many global and static variables in video\dc.c into a structure to hold the tile accelerator state . Textures should be better decoded with more pixel formats . Adds placeholders for some register probably used by the dimm board . Corrects a little error in a rom board register (very important, now at least the gdrom games try to start) . Added 317-5078 PIC data (80 bytes) in Capcom Vs. SNK 2 and Street Fighter Zero 3 Upper . AICA updates . Fixed ADPCM decoder to remove bad optimization and match YMZ280B. DC offset is fixed and output quality is higher. . Improved handling of slot monitor and timers B and C . Simplified interpolation code - stv.c: Enable strict PC relative loads for ST-V games; at least Cotton Boomerang needs them. - taito_l.c: Fixed upsidedown screen in Cachat and Tube-It (ID 02046) - warpwarp.c: Changed region cpu1 ($3000, 3400, 4800) to gfx1 - Combat School: Fixed missing graphics in clone Combat School (bootleg) (ID 00456) - Gee Bee: Changed region cpu1 ($3000) to gfx1 ($0). Replaced rom geebeeg.3a in clone clone Gee Bee (Gremlin) with geebeeg.3 from Gee Bee (Namco). - I, Robot: Fixed hang (ID 02023) - Kiki KaiKai: Added more documentation on the MCU - Lucky 74 . Pre-defined CPU and SND clocks . Switched the color system to RESNET calculations . Completed the remaining DIP switches . Added lamps support. Created a layout to show them. . Changes on the interrupt system (need to be verified on the PCB) . Renamed the graphics regions to more descriptive names . Corrected the manufacturer's name . Splitted the driver to driver + video . Updated technical notes - Ms. Pac-Man: Changed unmapped read to see if it changes tunnel behavior - Polygonet Commanders . All communication hacks have been removed . Memory maps have been temporarily reverted while new DSP56k cpu core catches up . DSP56156 CPU core updates . Rewrote core logic, communications and interfaces . Added three parallel memory moves to the disassembler . Initial interrupt logic in place - Sky Fox: Fixed issue with credits input (ID 02050) - Warriors of Fate: Fixed P3 inputs aren't working in clone (Chinese bootleg) (ID 02045) - Wily Tower: Fixed AY-3-8910A clock speeds - Memory maps merged in Beezer, bishi.c and Blades of Steel - Dipswitch fixes in btime, disco, lnc, lucky74s, mmonkey and zoar - Cheat engine . Added new option 'cheatpath' to specify one or more paths for cheat files. Removed old option 'cheat_file' . Removed old cheat.c/.h and replaced them with code that will read and write the new XML-based cheat format using the new cheatpath option (cheats still need to be enabled in order to load at all). Note that the cheats are not implemented yet, but they are fully parsed. To test saving, whenever a cheat file is successfully loaded, it is immediately written back out as 'output.xml' to the cheat directory for validation. - MAME . Cleaned up ROM definition flags and removed some ugly hacks that had existed previously. Expanded to support up to 256 BIOSes. Updated ROM_COPY to support specifying a tag for the source region. Also updated the address map AM_REGION macro to support specifying a tag for the region. . Added region and regionbytes fields to the deviceconfig, which are auto-filled by the device manager before starting the device. This simplifies the auto-binding process for devices. Added new selector for device-specific ROM regions. Not yet wired up in the ROM loader. . Updated to build with the latest DirectX SDK, which doesn't support Direct 3D 8 & Direct Input 7. By default, the makefile is set up to compile the old way, but you can set DIRECT3D=9 and DIRECTINPUT=8 in windows.mak or on the command-line to build with a more modern SDK. . Changed the auto-binding behavior of CPU regions. Previously, the first CPU would auto-bind to REGION_CPU1 (that is, any ROM references would automatically assume that they lived in the corresponding region). Now, each CPU automatically binds to the region with the same tag as the CPU itself. This behavior required ensuring that all previous REGION_CPU* regions were changed to regions with the same tag as the CPU. . Introduced a new auto-binding mechanism for sound cores. This works similarly to the CPU binding. Each sound core that requires a memory region now auto-binds to the region with the same tag as the sound core. In almost all cases, this allowed for the removal of the explicit region item in the sound configuration, which in turn allowed for many sound configurations to removed altogether. . Changed symbol table reference parameters to void * from UINT32 . Updated the core memory_region_* functions to accept a tag instead of an integer. Added new memory_region_next() function to allow for iteration over all memory regions . Changed the way memory regions are referenced. Instead of a single integer value, regions are now referred to by a region tag. The region tag must be unique among all regions defined for a given game. This change required updating all the ROM region definitions in the project to specify the tag instead of region number. . Added the ability to pass an optional destructor to ui_menu_alloc_state() . Fixed menu handling so it doesn't swallow the tab key . Added more validation to the address map detokenization, in order to catch cases where multiple read/write handlers are assigned to a range. Fixed cases in the code that failed these checks. . Updated -listxml to output region class and tag for each ROM entry. . Updated xmlfile.c to specify the line number for each node, for more accurate error reporting. . Renamed video_exit() to winvideo_exit() for consistency in function names - Compiling . Cleaned up the mame.mak by adding all missing defines and grouping them based on cpu.mak . Added "deprecat.h" in a few src/mame/drivers files . Removed a few unnecessary checks after malloc_ort_die() calls . Changed two romload.c warnings to use GAMENOUN instead . Changed commented-out functions to #ifdefs. - Debugger . Updated debugger windows to display the CPU and region tags where appropriate. . Updated the expression engine's memory reference behavior. A recent update expanded the scope of memory references to allow for referencing data in non-active CPU spaces, in memory regions, and in EEPROMs. However, this previous update required an index, which is no longer appropriate for regions and will become increasingly less appropriate for CPUs over time. Instead, a new syntax is supported, of the form: "[tag.][space]size@addr", where 'tag' is an optional tag for the CPU or memory region you wish to access, followed by a period as a separator; 'space' is the memory address space or memory class you wish to access (p/d/i for program/data/I/O spaces; o for opcode space; r for direct RAM; m for memory regions; e for EEPROMs); and 'size' is the usual b/w/d/q for byte/word/dword/qword. 0.126u2 - New games: Shinobi III (Mega Play) and Player's Edge Plus (X002069P) Double Double Bonus Poker - New Non-Working games: Rail Chase 2 (Revision A) - New clones: Demon's World / Horror Story (set 5), Major Title (World) and Winding Heat (EAA, Euro v2.11) - DSP56156 CPU (Polygonet Commanders) . Disassembler rewrite . Rearranged decoding behavior . Updated code style to MAME standards . Tested each single-word opcode with custom ROMs - I960 CPU: Fixed incorrect behavior when generating interrupts - 8257 DMA (dkong.c): Fixed 8257 DMA terminal count stop for autoload mode and added callback function existance check. - 6532 RIOT (exidy.c, gameplan.c, starwars.c, tourtabl.c): Changed the 6532 RIOT device into a proper device. Rewrote the logic to be simpler and leverage the new attotime functions. Changed the I/O port setters to specify a mask, and changed the I/O port callbacks to pass in the previous value. Converted audio/exidy.c, audio/gottlieb.c and audio/starwars.c to use the new RIOT implementation instead of rolling their own. Updated gameplan and tourtabl driver to use the new device interface. - Laser Disc . Laserdiscs are now devices. Updated all drivers accordingly. . Added 2 channel Custom sound to esh.c, gpworld.c, istellar.c, lgp.c and segald.c - gottlieb.c . Began cleanup . Converted palette calculations to resistor weights . Corrected video timing . Reduced the number of separate machine drivers . Fixed incorrect spriteram sizes . Populated full memory maps for the main CPU and the rev 1 sound board . Fixed gfx1 rom address in Video Vince and the Game Factory . More to come - gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c: Made the initialization of various Konami PPC drivers consistent from run to run, hopefully fixing most multisession issues. Also moved some allocations from static to dynamic storage. - model1/2.c: . TGP now correctly uses table roms (model1/2 updated accordingly) . Fixed some loading instructions in the TGP, that fixes Sega Rally Championship automatic transmission bug. . Removed FIFO hack on Sega Rally Championship (game now runs) . Added analog ports reading for model2 2A/B/C . Fixed user5 rom address in model2 games - namconb1.c: Removed unnecessary ROM shuffling code in Namco System NB-2 - playch10.c: Fixed Button 1/2 mapping (ID 00595) - stv.c: Changed short names for STV BIOS back to single words - Aurail: Fixed coinage dipswitch (ID 02029) - Avengers In Galactic Storm: Fixed crash (SH2 recompiler bug) (ID 02007) - Bishi Bashi Championship Mini Game Senshuken: Fixed Coin 1 and Service 1 mapped twice (ID 01718) - Battle K-Road: Fixed game speed (ID 01113) - California Speed: Fixed refreshspeed causes horrible screetching (01892) - Flower: Merged CPU0 and 1 memory maps, improved interrupt generation. This fixed starting a game doesn't always register (ID 01472) - Gals Panic 3: Fixed crash at start (ID 01902) - Grand Striker 2: Fixed service mode is mapped twice (ID 01568) - Liberation: Replaced M6502 CPU1 with DECO CPU16 in clone Liberation (bootleg) - Live Gal: Fixed 'P1 Start' start a P2 game (and some inputs are misread in Test Mode) (ID 00479) - Mahjong Hyper Reaction: Fixed Kan, Pon, Chi, Reach and Ron are mapped twice (ID 01572) - Ms. Pac-Man: Added information on how to toggle the built-in speedup - Ms. Pac-Man/Galaga - 20 Year Reunion: Added information on how to toggle the fast shot in Galaga - Plotting: Added pld (gal16v8-b6-04.bin) - Pro Soccer: Fixedd DECO CPU16 CPU1 clock speed - Sega Rally Championship: Removed FIFO hack (game now runs) and fixed some loading instructions in the TGP, that fixes the automatic transmission bug. - Tinkle Pit: Converted KEYCUS implementation from a table to a LFSR - Two Tigers: Fixed controller calibration (ID 01448) - Virtua Cop 2: Added new user2 rom - Virtua Fighter Kids: Fixed logging for the SH-2 has been left on (ID 02019) - Virtua Racing: Added all missing user5 roms ($0, 2, 40000, 60000, 80000, a0000 and c0000). - Memory maps merged in battlnts.c, bbusters.c, Big Event Golf, Big Striker (bootleg) and Bionic Commando - Input port . Completed removal of all explicit calls to input_port_read_indexed() . Converted a number of drivers from A-C to using tagged input ports and AM_PORT_READ in the address maps . Made input_port_read_indexed() private to machine/generic.c. Eventually it will probably disappear altogether. Fixed the two remaining instances. - Dipswitches . Made dipswitch renderings consistent regardless of UI aspect . Added DIP locations in Best League, Black Touch '96, Bogey Manor, Bomb Jack, Boogie Wings, Bottom of the Ninth, Break Thru, Buggy Challenge, Bump 'n' Jump, btime.c, bwidow.c, bzone.c, Cabal, Canyon Bomber, cclimber.c, Crude Buster, Darwin 4078, Disco No.1, Guzzler, Lock'n'Chase, Squash (Itisa), Swimmer and Zoar . Fixes in bottom9, canyon, darwin, gottlieb.c, gstrik2 and squaitsa - Description changes of Demon's World and clones, Jet Wave (UAB, USA v1.04), Midnight Run (Euro v1.11) and Winding Heat (UBC, USA v2.22) - MAME . Changed MDRV_CPU_ADD to require a tag. Removed MDRV_CPU_ADD_TAG. Tagged all CPUs. . Removed MDRV_SOUND_ADD. Renamed MDRV_SOUND_ADD_TAG to MDRV_SOUND_ADD. All sound chips must now include a tag. Changed all existing drivers to define a unique tag for each sound chip. . Added validity checks to ensure no duplicate sound or CPU tags. Fixed several duplicates. . Added new functions attotime_to_ticks() and ticks_to_attotime() to convert between attotimes and a clock tick at an integral frequency. . Changed -listxml to now output the tag names for CPUs and sound chips - Compiling . Removed conditional logging code in favor of allowing the compiler to optimize it out. This prevents bitrot of #ifdef'ed code. . Moved more items out of .data by either applying const, removing the non-zero initializer (if its overwritten by init/reset) or by adding appropriate initialization code. - Debugger . Robustified key behavior when the debugger is visible. Should now properly ignore the "break into debugger" keypress and not allow related characters to filter through. Removed some hacks related to making that work in the past. . Changed osd_wait_for_debugger() to take a machine parameter and a "firsttime" parameter, which is set to 1 the first time the function is called after a break. The Windows debugger uses this to ensure that the debugger has focus when you break into it. 0.126u1 - NOTE: The cheat engine is disabled as of this version. It is currently undergoing a desperately-needed complete redesign and rewrite from scratch. By the time 0.127 is ready, we should have support for the vast majority of existing cheats working once again. - New games: --- - New Non-Working games: Capcom Vs. SNK 2 - New clones: Daytona USA Deluxe '93, Virtua Fighter 2 (Revision A) and World Class Bowling (v1.6) - I960 CPU: Respect the rounding mode for CVTRI - KONAMI CPU: Added save state suport - SH-2 CPU: UDRC-based SH-2 dynamic recompiler: All games on all drivers should work as before except "colmns97" and "stress" which crash due to sound system trouble. All idle skips are still included. They are quite a bit less effective than they were on the interpreter, but they still give a boost. Fast RAM bypass is not included yet so this does not represent final performance. That said, it's consistently faster than the interpreter even now. Example: sfiii3 on 0.126 gets 609% on the interpreter and 961% on the DRC. - SH-4 CPU . Fixed TRAPA and some versions of FMOV . Improved disassembly for MOV.W, MOVA, MOV.L, FIPR and FSCA - Dynamic Re-Compiling: Fixed edge case in the DRC front-end that would incorrectly tag the end of a sequence as "return to start" even if the last instruction did not abet the starting instruction. - 8253 PIT . Changed the implementation to use timers internally . Removed the frequency change callbacks - EEPROM: Changed direct access EEPROM interface to return the "bus width" of the EEPROM data, and the size is in terms of units, not bytes. Updated all drivers accordingly. - Laser Disc (makemeta changes) . Split out Manchester code parsing into a separate utility module . Rewrote Manchester code parsing to be clock based . Updated tools\makemeta.c to call the new functions . Changed makemeta to parse a different format for metadata . Fixed Huffyuv decompression in aviio . Added more robust logic to parse out the white flag - champbas.c: Merged exctsccr.c into champbas.c - galaxold.c/galdrvr.c . Fixed cocktail sprite position in video\galaxian.c . Fixes that the frog disappears for player 2 if moved backwards - naomi.c . Added newest Japanese NAOMI BIOS (epr-21576h (Japan)) . Added machine\gdcrypt.c (DES decryption, used by GD-ROM based titles) - snk68.c . Changed partial refresh policy in snk68.c and updated comments . Fixed gfx2 rom loading . Fixed 68000 clock speed and VSync . Fixed large pillar in P.O.W., which pops up too late at 3/4 of the 1st level (ID 00871) - stv.c . Added ST-V BIOS info based on text at 0x800 (byte swapped) . Reorganized the BIOS list & description . Added the USA bios to Super Major League and it's a USA only cart - Naomi House of the Dead 2 BIOS: Changed/added the HOTD2-specific BIOSes from NAOMI BIOS to 'Naomi House of the Dead 2 BIOS' - Aliens . Added save state suport . Fixed a few graphics glitches (ID 00368) and player sprites in two player mode (ID 00244) . Fixed KONAMI CPU clock speed - Arabian Magic: Fixed rain effect water color in level 6 (ID 00895) - Cabal . Merged memory maps . Fixed wrong soundfx in clone Cabal (bootleg of Joystick version) (ID 01547) - Champion Base Ball: Fixed Game resets itself in the middle of test process in clone (Japan set 1) (ID 01973) - Change Lanes . Dipswitch fixes . Added DIP locations . Set Gear Shift defaults to Reverse (ID 01910) - Exciting Soccer / II . Merged Exciting Soccer with Champion Base Ball (ID 01058) . Fixed ALPHA-8301 clock speed and proms rom loading - Face Off: Fixed screen is upside down, when you go for a penalty shot (ID 00079) - Frogger: Fixed background doesn't rotate in cocktail mode (ID 02009) - Golgo 13 Kiseki no Dandou: Fixed sound1 rom address from $90000 to $0 - Guardian . Added MCU simulation for 'getstar' and 'getstarj' heavily based on 'gtstarb1' bootleg . Cleaned/fixed dipswitches and added port locations . Added notes with the differences between the different sets (and especially detailed the numerous ingame bugs in 'gtstarb2') - Gunlock: Fixed color of battleships in 1st stage (ID 01917) and explosive color of the demo (ID 01925) - Kaiser Knuckle . Fixed P1/2 button 4 mapped twice (ID 01574) . Fixed character gets all messed up when thrown by Azteca's medium punch throw the palette of the thrown (ID 00900) - The King of Dragons: Moved clone The King of Dragons (bootleg) to Final Crash driver (which will probably end up being the home of the CPS1 bootlegs). - Match It: Fixed flipscreen dipswitch (ID 01891) - Performan: Cleaned/fixed dipswitches and added port locations - Pushman: Fixed 'Flip Screen' dipswitch (ID 01887) - Romar Triv: Fixed wrong mapped buttons for Player1 (ID 02006) - San Francisco Rush 2049: Added new user1 rom to clone 'San Francisco Rush 2049: Special Edition' - Street Fighter Zero 3 Upper . Marked 'Street Fighter Zero 3 Upper' as a GAME and not BIOS as before . Added user1 rom ($0), once the GDROM DISC is emulated this won't be loaded - Super Real Mahjong P5 . Removed hack in drive machine R3000 . Adjusted R3000 frequency to 25 Mhz according to speglsht (the hardware is the same) . Adjusted visible area (not sure it's correct) . Fixed cpu1 rom address - Tiger Heli . Added MCU simulation for (bootleg set 1) . Cleaned/fixed dipswitches and added port locations . Added notes with the differences between the different sets - Virtua Fighter 2: Added sound1 rom ($400000) from clone (Revision A) to Virtua Fighter 2, (ver 2.1) and (Revision B) - World Class Bowling: Added sound1 rom ($200000) from clone (v1.6) to (v1.61) - World Rally: Added game support to tiny.mak/.c - Input port: Converted to use tagged inputs and handlers all drivers starting with S & T. Simplified input reads in system24 (removing a redundant handler). Cleaned up a bit inputs in system 16 & 18 bootlegs (among the other things, now coinage and P2 inputs in fpointbl & fpointbj work again). Removed a lot of redundant #define from taito drivers, replacing them with PORT_INCLUDEs and definitions from taitoipt.h. - Dipswitch fixes in changela, getstar, hypreact, perfrman, pushman, tigerh and victroad - Description changes of Final Crash (bootleg of Final Fight) and Guardian (US) - MAME . Changed the ROM loading code to actually alter the region flags based on the CPU endianness and bus width when creating the region, rather than fixing them up on the fly. This means that callers to memory_region_flags() will get the correct results. . Replaced the crazy number of get/set functions for render containers with a single get/set of a user settings struct. . Added new module uiinput.c which manages input for the user interface. The OSD is responsible for pushing mouse events and character events to this interface in order to support mouse movement and text-based input (currently only used for the select game menu). Added support for navigating through the menus using the mouse. . Redesigned the UI menus so that they can maintain a richer state. Now the menus can be generated once and reused, rather than requiring them to be regenerated on each frame. All menus also share a comment eventing system and navigation through them is managed centrally. Rewrote all the menus to use the new system, apart from the cheat menus, which are now disabled. Reorganized the video menu to make it easier to understand. . Converted UI startup screens to use astrings . Fixed memory leak in romcmp - Debugger . Changed the expression engine to use two callbacks for read/write rather than relying on externally defined functions . Expanded memory access support in the expression engine. Memory accesses can now be specified as [space][num]@
. 'space' can be one of the following: p = program address space of CPU #num (default), d = data address space of CPU #num, i = I/O address space of CPU #num, o = opcode address space of CPU #num (R/W access to decrypted opcodes), r = direct RAM space of CPU #num (always allows writes, even for ROM), e = EEPROM index #num, c = direct REGION_CPU#num access, u = direct REGION_USER#num access, g = direct REGION_GFX#num access and s = direct REGION_SOUND#num access. The 'num' field is optional for p/d/i/o/r, where is defaults to the current CPU, and for e, where it defaults to EEPROM #0. 'num' is required for all region-related prefixes. Some examples: w@curpc = word at 'curpc' in the active CPU's program address space, dd@0 = dword at 0x0 in the active CPU's data address space, r2b@100 = byte at 0x100 from a RAM region in CPU #2's program space, ew@7f = word from EEPROM address 0x7f and u2q@40 = qword from REGION_USER2, offset 0x40. The 'size' field is always required, and can be b/w/d/q for byte, word, dword, and qword accesses. ---------------------------------------------------------------------------------------------- 0.126 - New games: Lucky 74 (small) - New Non-Working games: Air Trix, Planet Harriers, Star Wars Pod Racer, Street Fighter Zero 3 Upper and Wave Runner (Revision A) - New clones: Bubble Symphony (bootleg with OKI6295), Emergency Call Ambulance (Export), Lucky 74 (big), Sangokushi II: Huo Fenghuang (Chinese bootleg), Street Fighter II' - Champion Edition (Magic Delta Turbo, bootleg), Virtua Fighter 3 (Revision A) and Zhong Guo Long (China, V0303) - New drivers: hikaru.c and lucky74.c - hikaru.c . Added Hikaru BIOS (Sega 2000) . Added Sega games: Air Trix, Planet Harriers and Star Wars Pod Racer - model2.c: Added Revision numbers to Daytona USA, Dead or Alive, Manx TT Superbike, Over Rev, Pilot Kids, Sega Touring Car Championship, Top Skater and Virtua Fighter 2. - model3.c: Added Revision numbers to Daytona USA 2, Dirt Devils, Fighting Vipers 2, Harley-Davidson, Scud Race Plus, Spikeout, Star Wars Trilogy, Virtua Fighter 3, Virtua Striker 2 '99.1 and Virtual On 2. - naomi.c . Added Ferrari F355 USA BIOS to NAOMI . Added support for Naomi GD-ROM BIOS (Sega 2001) and Street Fighter Zero 3 Upper - tatsumi.c: Fixed access violation crash in Big Fight and Cycle Warriors (ID 01896) - thepit.c: Fixed reversed screen in cocktail mode in all games (ID 01854) - Cyber Cycle: Fixed crash during intro (ID 01951) - Driver's Eyes . The communication work between CPU and 3D DSP should be limited to the master M68000, if the address mapping is done in the shared memory, master CPU would be disturbed by the slave one. . DIP Switches: DIP3 ON for Screen on the left and DIP4 ON for Screen on the right should not toggle on both. . The left, center and right screens have separate programs and boards, each would work independantly. About projection angles of left and right screen, the angle is correct on 'DRIVER'S EYES' title screen, however in the tracks of demo mode it doesn't seem correct. . The game also features a pretty nice 2D sprite layer, which still doesn't show up yet. It is known that the CPU does constantly feed the 2D video memory some meaningful and logical data. . Fixed access violation (ID 01965) - Gaia Crusaders . Improved sprite rendering on Gaia Crusaders (animate at 60fps now, not 30) . Fixed missing shadows beneath enemies or the sprites of the old man that talks to you (ID 00388). - Golden Tee Golf II: Fixed access violation in clone (Joystick, V1.0) (ID 01964) - The King of Dragons: Replaced The King of Dragons (bootleg) (kodb) set with complete dump from known bootleg board (different gfx rom layout) - The Lost World: Removed region sound1 ($200000, 600000) - Lucky 74: Set the proper screen size. Decoded graphics. Decoded the dual-state color circuitry. Mapped the NVRAM, VRAM1-1, VRAM1-2, VRAM2-1 and VRAM2-2 properly. Emulated 2x PPI 8255 devices. Mapped the 4x DIP switches banks. Added PORT_DIPLOCATION to all DIP switches. Added dipswitches 'Bet Max', 'Limit', 'Jackpot' and 'Pay Table'. Added the Memory Reset Switch. Added the 2nd video & color RAM. Added a 2nd tilemap for background graphics. Simplified the graphics banks. Fixed colors for foreground graphics. Fixed visible area to show the top of background graphics. Finally fixed colors for background graphics. Added all coinage DIP switches. Mapped all remaining inputs (service and player buttons). Added pulse time limitation to coins A, B & C. Switched to use 4x 8255 in replace of 2x 82c255 for I/O. Created a handler to feed the z80 port0 requests. Promoted lucky74s to 'working' state. Added an alternate set, but the program ROM looks like incomplete, protected or just a bad dump. Parent/clone relationship. Added technical notes. Hooked interrupts. Hooked the AY8910 and therefore the NMI trigger. Changed the input "Key In" to active high. - Street Fighter EX 2 Plus: Fixed cheat crash (ID 01952) - Survival: Fixed possible 64-bit crash/hang (video\phoenix.c) - Cheat engine . Fixed scrolling speed in case a cheat dat has invalid (i.e. 0) settings . Fixed Force Range cheats not working (ID 01983) . Fixed incorrectly populating empty spacer comment cheats (ID 01984) . Fixed Enable Cheats menu only showing the first 24 cheats for ANY game (ID 01980) . Fixed Cheat menu flickers (ID 01971) . Fixed -CHEAT trigger causes MAME crash when starting or exiting with some sets (ID 01968) . Fixed some problem with cheat system (ID 01969) - MAME . Added per-device and per-CPU validity checks . MAME output routines: Fixed osd\windows\output.c unregister_client crash (ID 01967) . Fixed memory leak in screenless systems with -mngwrite (ID 01963) 0.125u9 - New games: Galactic Storm (Japan) and Touchmaster 8000 (v9.04 Standard) - New Non-Working games: King of Football - New clones: Captain Commando (bootleg), 2x Cadillacs and Dinosaurs (bootleg with PIC16c57), Hell Night (ver EAA), Moon Lander (bootleg of Lunar Rescue), Night Striker (World), Night Striker (Japan), 2x The Punisher (bootleg with PIC16c57), Spy Hunter (Playtronic license), Star Force (encrypted, set 2) and Wiz (Taito, set 2) - New drivers: galastrm.c and koftball.c - ADSP2100 CPU: Split execution loop between debug/non-debug - I80286 CPU: Fixed POP ES in protected mode - SH-2 CPU . Refactored to separate out things that aren't part of the interpreter . Converted context struct to go through a pointer - TMS32031 CPU: Fixed core so that it doesn't call the debugger if not enabled - MIPS3 recompiler: Don't generate compare interrupts unless the compare register was written to; fixes hangs in blitz, calspeed and others. Stash jump target address before executing delay slot; also, don't update link register until delay slot has finished executing; fixes hang in gauntleg. Marked IDT instructions for R4650 only. Accounted for time taken in throwaway likely branch slots. Fixed jalr to respect the correct link register. Fixed c.eq, c.lt, c.le to fail if unordered. Fixed swxc1, sdxc1 to use the correct source register (fixes many Gauntlet problems). Fixed CCR31 display in debugger. Fixed LWXC1/LDXC1; corrects gauntleg camera. - NiLe sound (ST-0026): Fixed pitch calculation (see Super Real Mahjong P6) - Midway DCS Audio sound: Fixed some save state problems in audio\dcs.c. Still comes out garbled on a load, however. Extended memory.c to support up to 4096 banks. - S14001A sound . Improved filtering to be more accurate to the chip . Changed internal audio renderer to produce 4 bit sound as the real chip does . Moved filter outside of the main rendering loop into the glue code . Note: With this update, you may hear a whining noise that was not previously present. This is accurate to the chip! The real chip would almost always have an analog filter placed on its output to suppress this whine. - alg.c: Fixed access violation when taking a snapshot - asteroid.c: Fixed assertions in all sets - calomega.c . Unified MACHINE_RESET for systems 903/904/905 . Created a new handler to manage the first 4 bits of system 905's PIA1 portB as input mux selector (905 is still not working) . Updated technical notes - cps3.c: Fixed access violation - namcos21.c: Fixed unable to locate input port 'AN7' - pgm.c: Improved behavior of PGM on big-endian. The ARM7 boots properly now but can't sync with the 68k for some reason. - segag80v.c: Fixed assertions - seta.c: Cleaned up input handling - wilytowr.c: Changed driver wilytowr.c to m63.c. Added Irem M63 PCB layout (based on Atomic Boy) - taito_z.c: Added diplocations to all games - tumbleb.c: Added port tags and updated memory definitions and read handlers - Big Event Golf: Cleaned up input handling - Cliff Hanger: Fixed access violation when taking a snapshot - Cadillacs and Dinosaurs: Added rom loading for the Cadillacs and Dinosaurs sets with PICs. No good dumps of the PICs exist, and this is mainly for reference so that we don't forget the graphic rom loading on them. They don't work. They're basically the same set from different PCBs, so one will probably be removed eventually. - Flower: Added state saving - Gauntlet Legends: Fixed unable to locate input port 'IN1', game cannot start. - Hacha Mecha Fighter: Fixed unable to locate input port 'DSW' - Night Striker: Removed unnecessary analog input remapping. Added analog stick adjusting port. - Omega Race: Fixed assertions - Pleiads: Fixed Fatal error: activecpu_get_info_int() called with no active cpu! - Punisher: Added rom loading for the Punisher sets with PICs. No good dumps of the PICs exist, and this is mainly for reference so that we don't forget the graphic rom loading on them. They don't work. They're basically the same set from different PCBs, so one will probably be removed eventually. - Strip Teaser: Preliminary emulation of video hardware (simple blitter). Fixed visible area. - Tailgunner: Fixed Fatal error: Input ports cannot be read at init time!" with -debug - U.S. Classic: Fixed start 2P game. Seems like 2P Start key has no effect. - Vapor TRX: Fixed freeze - World Rally 2: Added pot wheel support - Input port: Fixed Various games with Fatal error: Input ports cannot be read at init time. - Dipswitch fixes in bigevglf, bshark, contcirc, dblaxle, enforce, nightstr, racingb, riskchal, wlstar and wondl96 - MAME . Fixed Fatal Exception on In-Game Menu . Removed calls to memory_set_context() in favor of cpuintrf_push_context() . Fixed memory leak in ledutil.c . Fixed 64-bit writes in UML C back-end . Fixed incorrect assumption in the x86/x64 implementation of HASHJMP that the base table for a mode will always be allocated when a fixed mode is first used. . Cheat engine: Roll back older periodic function. Now standard/old format work in this function. Otherwords, several operations which doesn't exist in older function and added recently are now disabled. Separated load_cheat_code() to 3 indipendent functions and added new cheat options, "Load New/Standard/Old Format Code" (Default : load all format codes). NOTE: Delete all cheat options in the database before start or reload default options (Shift + Reload key) in cheat general menu. Added format strings structure to accept huge size strings in loading a database to prevent from breaking other strings. Changed Link in new format. Label code is now "Link-Label" and sub-label is "Label-Sub-Link", "Standard-Link" is no longer label. Added choose_label_index() to manage label selection. Fixed build_label_index_table() to prevent from crashing and disabled to build label index table in case of standard/old format. Fixed memory free problem in case of standard/old code. Fixed several reported/found bugs. - Compiling: Fixed assertion in astring.c when compiled against MSVC and the string is UTF-8 - Debugger . Changed how watchpoints work so that supporting them adds 0 overhead unless some are actually live. . Fixed access violation on hardreset with -debug . Fixed TMS32031 so that it doesn't call the debugger if not enabled 0.125u8 - New games: --- - New Clones: Mahjong Electron Base (parts 2 & 4, Japan, BOOTLEG) - namcos22.c: Fixed input port read during init on most (Super) System 22 games - Flower: Changed Flower (bootleg) to the parent set Flower (Sega/Alpha) (Sega game number 834-5998). The game has also all proms. - Description changes of Flower (Komax) and Flower (Sega/Alpha) - Debugger: Updated config.txt to describe debugger. Turned off debugger flag by default. - MAMETesters Bugs: Fixed 01935: [Core] All output commands (-listxml, -cc, -listfull, ETC) crash with error 0.125u7 - New games: --- - New Non-Working games: Cal Omega - Game 8.0 (Arcade Black Jack), Cal Omega - Game 12.3 (Ticket Poker) and Cal Omega - Game 23.0 (FC Bingo (4-card)) - New Working games: Survival and Wonder League '96 (Korea) - I8x41 CPU: (see chukatai, decocass.c, tnzsj) . Removed i8x41.ram hack from the I8x41 CPU core . Added configurable I8x41/I8x42 subtype support . Fixed carry flag handling in ADDC A,#N and RLC A instruction . Fixed cycle count for DJNZ instruction . Fixed disassembly for opcode 0x67 . Updated the ram sizes (8041 uses 128 bytes, 8042 uses 256 bytes) . Added support for re-enabling interrupts inside an interrupt handler - ADSP21062 (SHARC) CPU: Added save state support - Z80 CPU . Removed compatibility to old Z80DMA driver . Now uses std. callbacks (READ8_HANDLER, WRITE8_HANDLER) . Updated Mario Bros. and Donkey Kong 3 accordingly - Dynamic Recompiling . Fixed DRC WRITEM opcode on 64-bit to call through memory instead of directly. Solves assertions with gcc 4.3 and 64-bit linux. Fixed DCMP opcode on the 32-bit back-end. Fixed LZCNT opcode in x86 and x64 back-ends. Added support for flags in LZCNT and BSWAP opcodes on x86 and x64 back-ends. . Changed DRC frontend to pass a pointer to the previous instruction when describing. Updated PowerPC frontend to approximately take into account branch and CR logic folding in timing computations. . Added save state support to the MIPS3 recompiler and virtual TLB system . Corrected the dependencies for the MIPS core . Changed DRC frontend to pass a pointer to the previous instruction when describing. Updated PowerPC frontend to approximately take into account branch and CR logic folding in timing computations. . Added save state support to the PowerPC recompiler - NiLe sound: Added ST-0026 NiLe (sound) emulation to Super Real Mahjong P6 - RF5C400 sound: Added save state support - Sega/Yamaha 315-5560: MultiPCM/315-5560 rewrite. All features are now supported including PLFO and ALFO. - CAGE audio system: Added save state support (atarigt.c, kinst.c, midvunit.c, midzeus.c, seattle.c, vegas.c) - K056800 (MIRAC): Added save state support (gticlub.c, hornet.c , nwk-tr.c, ultrsprt.c, zr107.c) - ALPHA8201 CPU, M65CE02 CPU, TMC0285 sound, TMS5200 sound: Fixed a few build problems - 8257 DMA (dkong.c) . Implemented 8257 DMA controller as proper device . Rewrote 8257dma.[ch]. Updated dkong.c accordingly. - SMC91C9x Ethernet & Modem Controller . Converted to proper device . Updated seattle.c and vegas.c drivers to allocate devices . Added separate 91C96 device for eventual 'San Francisco Rush 2049' use . Cleaned up code . Added save state support - Voodoo GFX . Converted Voodoo into a proper device. Updated drivers accordingly. . Added save state support . Fixed poor default CLUT handling in the driver - ampoker2.c, atarigx2.c, cabal.c and ksys573.c: Fixed missing SHA1 values - atarig1.c: Fixed 'Fatal Exception' crash - calomega.c . Lots of improvements on the input system . Adjusted the CPU adressing to 14 bits for systems 903/904 and to 15 bits for system 905. Rewrote all the ROM loads based on these changes. . Defined CPU, UART and sound clocks . Splitted the PIAs and sound interface to cover different systems . Added sound to system 905 games . Added MACHINE_START and MACHINE_RESET to initialize the devices properly . Documented the systems 903/904 UART connections . Traced and added PIAs connection diagrams for systems 903/904/905 . Hooked the missing dipswitches bank to the AY8912 for system 903 . Added preliminary serial/UART support to systems 903/904 . Hooked the missing dipswitches bank to the ACIA 6850 for systems 903/904. It allow to choose the proper transfer rate for UART. . Fixed graphics ROM loads for different Hotline versions . Renamed all roms of each set according to the systems schematics and official list . Cleaned-up sets and driver . Updated technical notes. - dkong.c . Merged driver init code for drakton and strtheat and made decryption more compact . Moved decryption and driver init code into dkong.c . Implemented 8257 DMA controller as proper device. Rewrote 8257dma.[ch]. Updated dkong.c accordingly. - gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c . Added save state support to konppc module . Cleaned up system register access in Konami PowerPC games . Connected EEPROM in Hornet driver (doesn't seem to affect much) . Altered network IRQ timing to fix several problems . Most games are back to their previous "working" states . Added more complete README's - hornet.c: Added save state support - kinst.c . Added save state support . Fixed mass coin input disables dipswitch access, and thus further coin input during a fight in all sets . Fixed attract mode graphics regression in clones Killer Instinct (v1.3), (v1.4) and (proto v4.7) - konamigx.c: Update video parameters to use actual values written to the CCU. Fixed VSync. - megadriv.c: Removed indexed reads - midtunit.c, midvunit.c, midwunit.c, midxunit.c, midyunit.c, midzeus.c and seattle.c: Updated drivers which shared some input code - mystwarr.c: Fixed VSync - namcofl.c: Fixed read from input port during VIDEO_START - namcos1.c, namcos2.c, namcos10.c, namcos11.c, namcos12.c, namcos21.c and namcos23.c: Updated most Namco systems + a couple of old drivers sharing the input handling - naomi.c: Added 4x Japan BIOSes to Naomi and 1x Japan BIOS to Naomi 2 - nbmj9195.c...: Unified Nichibutsu Mahjong input ports (using common ports in nbmj9195.c as well as in the other drivers), removed indexed read and exploited tags to reduce complexity in a couple of handlers. - royalmah.c: Simplify input - segag80v.c: Fixed duplicate P1 + P2 Starts mapped in Star Trek, Tac/Scan and Zektor. - superqix.c: Fixed game resets after starting in Super Qix (bootleg), Perestroika Girls and Perestroika Girls (Fuuki license) - Balloon Bomber: Fixed Player1 Left+Right and Button 1 mapped twice - Choplifter: Fixed Player2 video is upside down - Combatribes . Finish work on ddragon3 driver . Mapped the correct dip "SW1-8", before it was incorrect: Added "FBI Logo" dipswitch and fixed the dips condition's implementation to avoid the MAME crash. - Fairyland Story: Verified clocks and adjusted sound volumes. Fixed M68705 CPU3 clock speed. - Got-cha Mini Game Festival: Set OKI6295 pin 7 to high - Gradius 4: Fixed 3D gfx problem - Grand Champion: Fixed input port read at init time - 1000 Miglia/Mille Miglia 2: Great 1000 Miles Rally: Added 360degree wheel (dial) input to GTMR, which is available when the Controller dip is set to 'Wheel', and Controls dip is set to '1P Side'. Note when Controls dip is set to 'Both Sides', 270degree wheel (paddle) input is used. - Joust: Fixed Player1 and Player2 Start buttons are mapped twice - Moon Cresta: Fixed corrupted enemies in 3rd + 4th Wave - No Man's Land: Fixed unable to locate input port 'DSW' - Sky Fox: Fixed Coin 1 mapped twice - Super Qix: Fixed sprites slowdown - Super Real Mahjong P6: Added ST-0026 NiLe (sound) emulation - Super Real Mahjong VS: Fixed assertion - See See Find Out: Fixed Player 2 Start mapped twice - Survival: Added DL57S22/AY-3-8910A input protection - Game now playable. - Teeter Torture: Fixed player movement has slowed - Winding Heat: Fixed game freeze - Wonder League '96: Added protdata.bin (shared ram data) and fixed dipswitches - Game now playable. - Xexex: Fixed VSync - Input port . Fixed input port read validation. The previous check was way too aggressive, and prevented CUSTOM_INPUT handlers from reading other ports. This one sets an "all clear" flag as soon as the configuration data is loaded. . More conversion to input_port_read: Updated the whole mid*unit family of drivers + seattle & zeus which shared some input code. Updated most namco systems + a couple of old drivers sharing the input handling, minus namcos22. Updated most of the M->Q drivers + finally removed indexed reads from megadriv.c (without breaking ssf2ghw). Removed indexed read from drivers starting with r (and slightly simplify inputs in royalmah.c). Unified nichibustu mahjong input ports (using common ports in nbmj9195.c as well as in the other drivers), removed indexed read and exploited tags to reduce complexity in a couple of handlers. . Fixed duplicated inputs in G-Stream G2020 and williams.c - Dipswitch fixes dquizgo, rastan, realbrk, wlstar, wondl96 - Description changes of Action Fighter (FD1089A 317-0018), The Combatribes (bootleg Set 2) - MAME . Fixed core video handling of save states with dynamic screen resolutions . Added machine parameter to memory_region() and memory_region_length() functions. Cleaned up usage of these throughout the code to cache pointers rather than calling these functions repeatedly during loops. . Cleaned up most of the machine stuff in src/emu/machine. There is a bit left to clean up, but it's mostly stuck at some interfaces now. . Cheat engine: Updated cheat system [Shimapong]: Merged 3 different search menu functions to search_main_menu(). Added new cheat options, "Vertical/Horizontal Key Repeat Speed". NOTE: Delete all cheat options in the database before start or reload default options (Shift + Reload key) in cheat general menu. Changed assignment of Entry for Activation Key and Pre-enable command code. Now there are check the tag in comment field instead of index number. But it's only for new format command and old is as before. Added tag output in save_activation_key() and save_pre_enable(). Cleaned up save_cheat_options() to output description. Changed memory read function in watchpoints. No longer "Debugger" watchpoint mis-hit "Cheat" watchpoint. Fixed several reported/found bugs. Renamed funcitons/enum based on coding guidlines. All functions are completed in this update. . Explicitly disabled overlays for non-native snapshots (native snapshots already had them disabled). . Fixed input port read validation. The previous check was way too aggressive, and prevented CUSTOM_INPUT handlers from reading other ports. This one sets an "all clear" flag as soon as the configuration data is loaded. - Compiling: Fixed make MSVC_BUILD=1 -j2 and corrected an oversight in the cross-build support - Debugger . Changed debugger so it does not stop while we are waiting for a pending event to occur. This eliminates some confusion during reset and state loading. . Removed DEBUGGER flag from makefile and ENABLE_DEBUGGER macro from the source code. All MAME builds now include the debugger, and it is enabled/disabled exclusively by the runtime command-line/ini settings. This is a minor speed hit for now, but will be further optimized going forward. . Changed the 'd' suffix in the makefile to apply to DEBUG builds (versus DEBUGGER builds as it did before) . Changed machine->debug_mode to machine->debug_flags. These flags now indicate several things, such as whether debugging is enabled, whether CPU cores should call the debugger on each instruction, and whether there are live watchpoints on each address space. Redesigned a significant portion of debugcpu.c around the concept of maintaining these flags globally and a similar, more complete set of flags internally for each CPU. All previous functionality should work as designed but should be more robust and faster to work with. . Added new debugger hooks for starting/stopping CPU execution. This allows the debugger to decide whether or not a given CPU needs to call the debugger on each instruction during the coming timeslice. Also added new debugger hook for reporting exceptions. Proper exception breakpoints are not yet implemented. 0.125u6 - New games: --- - New Working games: Alien Storm (set 4, World, 2 Players, FD1094 317-0154) - New clones: The Combatribes (Italian bootleg), Terra Force (bootleg with additional Z80), Turbo Out Run (cockpit, FD1094 317-0109) and Wonder Boy III - Monster Lair (set 5, System 16A, FD1089A 317-xxxx) - MIPS3 recompiler . Added UML comments for common state variables . Removed some unused fields . Implemented LL/LLD/SC/SCD (only works single-processor for now) . UML: Reactivated back-end validation mechanism. Added back-end validation for ADD/SUB/MUL/DIV/CMP forms. Fixed several errors in dealing with more obscure flag combinations. - MIPS and PowerPC CPUs: Created common virtual TLB managment module. Updated MIPS and PowerPC code to make use of it. - Sharp LR35902 CPU: Renamed "Nintendo Z80GB" GameBoy CPU core to "Sharp LR35902". - bagman.c: Added 2nd AY-3-8910A sound to Botanic, Pickin' and Squash (Itisa) - cps1.c . Changed all games after Street Fighter 2 CE to have a 12mhz clock. Verified on Mega Man and Quiz & Dragons (original kits with plastic case) . Changed 68000 CPU1 clock speed to 12MHz in Capcom World 2, Mega Man - The Power Battle and clone Rockman - The Power Battle (CPS1 Japan 950922), Pnickies, Quiz & Dragons (Japan 940921) and Quiz Tonosama no Yabou 2 Zenkoku-ban - crystal.c . Progress on protection simulation for 2 Crystal System titles. Still not working. . Fixed manufacturer in Office Yeo In Cheon Ha . Fixed visible area, year and manufacturer in Top Blade V - ddragon3.c . The Combatribes: Fixed the mess dips location. Added the missing dips (now are 8x2). Fixed the "Stage Clear Energy" dips. Adjusted the frame rate from 60Hz to around 57Hz as reported on mametester ID 00417. Adjusted OKI frequency to 1MHz (according to recording on mametester ID 00181). Adjusted the volume (according to recording on mametester ID 00181 and 01441). . Double Dragon 3: Added dips location in all sets. Added the missing dips (now are 8x2) on clone 'Double Dragon 3 - The Rosetta Stone (bootleg)'. Adjusted the frame rate from 60 to around 57Hz as reported on mametester ID 00417. Adjusted OKI frequency to 1MHz (according to recording on mametester ID 00181). Adjusted the volume (according to recording on mametester ID 00181 and 01441). - gstriker.c . Some protection improvements for Tecmo World Cup '94 and V Goal Soccer . Fixed 68000 CPU1 clock speed in V Goal Soccer - konamigx.c . Set screen refresh rate to 58Hz (parameters from developer manual are not 100% correct) . Removed sound CPU clock hack. Fixed 68000 CPU2 clock speed. - tecmosys.c: Set Tecmo System screen refresh rate to measured 57.4458Hz in Deroon DeroDero and Touki Denshou -Angel Eyes- - wilytowr.c . Added sound emulation to Wily Tower, clone Atomic Boy and Fighting Basketball. . Changed region cpu2 to user1 in Fighting Basketball. . NOTE: Atomic Boy and Fighting Basketball req different interrupt (T1) timing than wilytowr, otherwise music/fx tempo is too fast. Maybe both tmings are wrong - must be verified on real pcb. Extra space in atomboy 2764 eproms is filled with garbage z80 code (taken from one of code roms, but from different offset). Fghtbskt has one AY, but every frame writes 0 to 2nd AY regs - probably leftover from Wily Tower sound driver/code. I'm not sure about sound_status write - maybe it's something else or different data (p1?) is used as status. - Alien Stormed missing FD1094 317-0154 key to clone Alien Storm (set 4, World, 2 Players, FD1094 317-0154) - Game now playable. - Raiden: Fixed Flip_Screen dipswitch in clones raidena, raidenk and raident. - Squash (Itisa) . Improvements to the driver . Added 2nd AY-3-8910A (1.5MHz) sound and dipswitches 'Protection?' and 4x 'Unknown'. - Tank Force: Some progress on clone Tank Force (US, 4 Player) inputs - Tetris: Added new cpu1 roms to clone Tetris (set 2, Japan, System 16B, FD1094 317-0092) - Dipswitch fixes in bagman.c, battlcry, ddragon3.c, gstriker.c and squaitsa - Description changes of Alex Kidd: The Lost Stars (set 1, FD1089A 317-0021), Alien Storm (set 4, World, 2 Players, FD1094 317-0154) and Office Yeo In Cheon Ha (version 1.2) - MAME . Cleaned up software bilinear filtering code. Added bounds checking. Enabled by default for snapshots and movie rendering. . Added a validity check against reading input ports at init time. . Added missing machine parameters and removed deprecat.h usage in a number of drivers/ and machine/ files. . Converted many drivers in the d-j alphabetical range to use input_port_read() instead of input_port_read_indexed(). . Improved AVI and MNG recording to properly duplicate/skip frames as appropriate to keep the correct framerate. . Added new function video_get_view_for_target() which selects a view based on a command-line parameter and the configuration. Changed Windows OSD code to use this instead of its own logic. Changed -snapview to share the logic as well, enabling 'auto' as a -snapview option. . Added new option: -snapsize, which lets you specify the target resolution for snapshots and movies. The existing behavior is still the default: create snapshots and movies at native pixel resolutions. . Added new option: -snapview, which lets you specify a particular view to use for rendering snapshots and movies. The existing behavior is still the default: use a special internal view and render each screen to its own snapshot in its own file. When using this option to specify a view other than 'internal', only a single snapshot file will be produced regardless of how many screens the game has. 0.125u5 - New games: 5x Player's Edge Plus (PS0014, PS0022, PS0043, PS0045 and PS0308), 2x Super Moto (Italy) and SWAT Police - New Non-Working games: Cal Omega - Game 18.7 (Amusement Poker), Euro Jolly X5, Grand Prix, Mystery Number, 2x Shark Party, Squash (Itisa), Victor 21 and Victor 5 - New clones: Head Panic (ver. 0117, 17/01/2000), Tank Force (US, 4 Player) and Videomat (polish bootleg) - New drivers: itgambl3.c and subsino.c - 8085A CPU: Improved 8085 timing and fixed flag calculations based on differences between it and the 8080. - COP420 CPU . Fixed LEI instruction (cpu\cop400\410ops.c) . Added COP421 variant for Thayer's Quest (cpu\cop400\cop420.c) - I8051 CPU: Fixed the timer 0's second split counter in the core, that was incorrectly checking the Timer 1 Run Control Bit. - Minx CPU (Nintendo handheld console): Fixed handling of the U register in the RET instructions and when taking an interrupt in the Nintendo Minx CPU core. - MIPS CPUs : MIPS recompiler update: Updated to no longer explicitly specify flags. Tweaked register tracking to match new DRC frontend system. Updated UML logging to output new frontend statistics. Fixed left/right accesses to work with recent memory handler changes. - PPC403 CPU: Fixed compilation error when neither HAS_PPC403GA nor HAS_PPC403GCX are defined. - PowerPC recompiler: Fixed bug where a branch and link to the link register would overwrite the link register before fetching the target address. Updated to no longer explicitly specify flags. Added symbols for most common variables. Fixed bug in handling XER carry flag for subo forms. Simplified flag insertion logic for opcodeo forms. Rewrote lswi/stswi as subroutines. Made accesses to tempdata explicitly dword or qword. Fixed SRR0 when generating a syscall. Removed no longer necessary TESTs on extsb/w, rlwinm, rlwnm, rlwimi and cntlzw. Fixed bug where the SO flag was not being computed for compares. Fixed flag computations for mulhw/mulhwu/mullw. Fixed subtlety of shifts between 32 and 63 in srw/sraw. Fixed mffs/mtfsf to use FP registers. Fixed mtfsfi to use the immediate value properly. Now marking terminal count bit in DMA status register. Added support for 4xx protection registers via the MMU. Added TLBH, TLBU, and DEC to the list of registers in the debugger. Turned off "end of transfer" DMA signals in favor of "transfer count 0" signals; fixes memory-to-memory DMA in fiveside. Minor flags optimizations: * Broke CR into several individual bits of state and * Extracted the SO bit from XER into its own state. Cleaned up register tracking implementation. Fixed numerous errors and shortcomings in the tracking. Added support for removing unnecessary XER CA and CR0 computations. Updated UML logging to output new frontend statistics. Added basic cycle counts for longer instructions. Added penalty for polling timebase and decrementer registers. Fixed dependencies in cpu.mak. Reduced address bus width of 4xx series to 31 bits per the documentation. Fixed bug that would jump to incorrect PC after filling the TLB during a mismatch event. Added explicit address truncation to 31 bits for 4xx series. Added new PPCDRC_ACCURATE_SINGLES option, which removes the excessive (and very likely unecessary) extra rounding when performing the "fast" single-precision floating point ops. Fixed TLB filling for 4XX protection ranges. Fixed parameter ordering for masked reads/writes. Added detection of MMU enablement in 403GCX case. Fixed bug in protection bounds violation detection for 4XX. Changed SPU receive model to a push model; updated drivers accordingly. Added macros for setting the SPU transmit handler and sending bytes. Cleaned up ppc.h. Fixed lmw/stmw if rA is one of the loaded/stored registers. Removed unnecessary variables & structure members. Optimized for the XER and CR0 case where XER doesn't need an overflow calculation. - Dynamic Recompiling . DRC UML changes: Separated conditions and flags into two separate fields. Added more extensive per-opcode information. Made validation more thorough using the extended information. Disabled back-end validation for now until it can be revisited using the new tables. Changed GETFLGS encoding so that the mask is in parameter 2 instead of the flags field. Wrote new disassembler based on enhanced opcode info structure. Moved disassembler into drcuml.c and removed old code. Extended disassembler buffer sizes to at least 256 bytes. Removed explicit flag requests from the shorthand opcodes. Added optimization function to drcuml which is called at block end. Added logic to compute the necessary flags based on upcoming opcodes and only select those flags which are required. Added NOP opcode. Added logic to simplify opcodes as much as possible at the UML layer. Removed similar logic in the x86 and x64 back-ends. Added stricter parameter validation for registers and mapvars. Improved disassembly output. Added simple symbol table to the UML for improved disassembly. Changed optional disassembler cache parameter to a drcuml object. Fixed STORE opcode description to allow immediate source operands. . DRC frontend changes: Changed from tracking "live" registers to tracking "necessary" registers. Genericized register tracking to be more flexible. Added previous instruction pointer to opcode descriptions. . x86/x64 back-ends: Added flag support to SEXT, ROLAND, ROLINS, LZCNT opcodes. Fixed bug where sometimes the flags would be corrupted; in particular, we always clobbered the flags for the subfze instruction, which broke the nbapbp camera and some other things. Fixed DIVS/DIVU opcode so they properly compute SZ flags when requested; fixes camera wackiness in nbapbp. Added a "hop" around the prolog of the HANDLE opcode to allow fall-through. Redesigned x86 stack management to keep the stack at the same 16-byte alignment. Fixed adc/sbb so that they don't optimize out ever. Fixed detection of special and/or/xor cases. Fixed GETFLGS opcode so that it doesn't return anything other than requested flags. Changed LZCNT/BSWAP to be more flexible in register selection. - SN76496 and TMS5220 sound: Additional documentation in the core - 68681 DUART: Converted to device interface and 8 bit device. Added input and output port. Added X1/16 timer (machine\68681.c, micro3d.c and tmaster.c). - calomega.c . Cleaned up the driver following the MAME Coding Conventions . Improved the input system for some games . Fixed some wrong color codes . Updated technical notes - dacholer.c: Added sound emulation (3x AY-3-8910A and MSM5205) to Dacholer and Kick Boy - firebeat.c . Added VBLANK IRQ clear . Added ATAPI IRQ clear . Tried to add UART IRQ clear but it doesn't yet work . Most of the games start to show something again with these changes. . Added fast RAM region - funkybee.c: Fixed visible area in Funky Bee and Sky Lancer - galdrvr.c: Moved Calipso, Moonwar, Speed Coin and Super Bond to the Galaxian driver. Added Discrete sound. Fixed visible area and palettesize. - gticlub.c . Converted GTI Club driver sysreg_r/w to 8-bit handlers . Added hack to make network IRQs work; brings some games back to life - gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c: Designated the Konami PowerPC fast RAM accesses for work RAM. Removed unnecessary mirroring. - neodrvr.c: . Updated Neo-Geo game PCB infos . Added some comments about 'M1' and 'S1' roms . Different changes to 2020bb, aof3, burningf, joyjoy, kof2001, kof99, kotm, lastblad, lbowling, marukodq, mslug3, mutnat, pbobblen, rbff2, samsh5sp, samsho3, socbrawl and wh1. - m90.c . Simplified video update routine (video\m90.c) . Improvements to Bomber Lord (bootleg): Partially fixed the background, fixed the sprites, implemented video register for selecting different resolutions; this fixes graphic in the game screen, fixed scroll video register, cleaned up offset and priorities, implemented linescroll and promoted to working. . Improvements to Dynablaster (bootleg): Partially fixed the background, fixed the sprites, fixed mark for last sprite, fixed player #1 and player #2 controls, fixed graphics layer and offset, fixed layer select, implementated the scroll video register, cleaned up offset and priorities and promoted to working. - model3.c . Identified and fixed VBLANK bit in Real3D status which was causing the system to hang at startup. Designated fast RAM accesses for work RAM. . Changed the 53C810 SCSI controller read/write handles to proper READ8/WRITE8_HANDLER callbacks so they can eventually be used directly. - peplus.c: All video slot titles now accept coins and play normally - punchout.c . Simplified palette handling in driver . Fixed big sprite palette in top monitor . Fixed proms loading and palettesize - snookr10.c: Fixed the tilemap size. Fixed the screen size. Updated technical notes. - suprnova.c . Driver uses now its own draw ROZ function, which supports linescroll or columnscroll, and will give us the ability to 'render' priority data (with roz applied) from the flagsmap to a temp bitmap to work with. . Priorities should be correct from start to end in Cyvern now (still not perfect) . Added a note about what needs fixing for the sengekis sprite zoom (shrink flag we're not handling) . Allow wraparound to be turned off (sarukani..) - Armored Car: Removed Armored Car remains (INPUT_PORT, ROM_START etc.) from Super Cobra driver. - Black Touch '96: Numerous improvements to the driver. Added PIC16C57 (8MHz) CPU2. Changed visible area to 256x224. Fixed gfx1/2/3 rom loading. Added missing dipswitches. - Draco: Fixed AY-3-8910 output mode - Jackal . Fixed palette animation (very subtle!) . Verified on the schematics and on the PCB that the high score table text cannot change color. . Removed the IMPERFECT_GRAPHICS flag. Fixed music with a kludge in machine\jackal.c (overclock sound CPU) . Added dipswitch locations and sorted input ports - Mr. Do!: Fixed colortable creation in video\mrdo.c. Fixed diode voltage drop value which caused apples to be orange instead of red-orange. The title screen now perfectly matches http://www.flickr.com/photos/arecee/2384126902/sizes/l/ including the logo outline. - NBA Play By Play: DRC x86/x64: Fixed bug where sometimes the flags would be corrupted; in particular, we always clobbered the flags for the subfze instruction, which broke the NBA Play By Play camera and some other things. Fixed DIVS/DIVU opcode so they properly compute SZ flags when requested; fixes camera wackiness in NBA Play By Play. - Player's Edge Plus (PS0615) Chaos Slots: Added new CAP (cap0960.u50) with closer colors (still wrong) - Player's Edge Plus (PS0716) River Gambler Slots: Added new CAP (cap2266.u50) - Thayer's Quest: Cleaned up driver. Added LED layout from Dragon's Lair. Mapped keyboard and dips correctly. Added laser disc drive selection. Fixed Z80-COP communications. Figured out ports from disassembly. Added cart presence detection logic. Fixed SSI-263 timings, service mode works now. Changed to use COP421 (2MHz). - Wizard: Fixed year and manufacturer - Input port . Converted a number of drivers over to using input_port_read() from input_port_read_indexed(). . Added option -[no]coin_lockout (-[no]coinlock) to control coin lockout behavior. - Description changes of Agent Super Bond, Lady Bug (bootleg on Galaxian hardware), 'Office Yeo In Cheon Ha' and Player's Edge Plus (PS0716) River Gambler Slots - Dipswitch fixes in blackt96, jackal, m90.c, funkybee.c and thayers - MAME . Added bilinear filter option to software rendering. Not hooked up to anything yet. . Cleaned up the usage of Machine in many of the src/video files. . Cheat engine: Changed the function of default memory read in case of the search to prevent from crashing if a game uses cpu_spinutil(). Now basically used do_memory_read() instead of do_cpu_read() (Try to search in actfancr between this and previous version). NOTE : It's not fundamental solution but no longer crash. Cleaned up read_data() and write_data(). Cleaned up save/load routine and added open_cheat_database(). Added new menu "Cheat Commands" into the cheat main menu the following commands are supported in this menu: * Reload cheat code (the same as Reload Database key), * Cheats ON/OFF (the same as Toggle Cheat key), * Watchpoints ON/OFF (the same as Shift + Toggle Cheat key), * Save description (save the title of the game) and * Save raw code (save raw cheat code with new format). Fixed several bugs which has found in testing. Renamed functions based on coding guidlines. . Correctness pass over the source tree: Added static qualifiers where appropriate. Added missing #include statements, source comments and header declarations. Removed dead declarations. Added ~30 header files for a number of drivers. Consolidated various cchip declarations. - Debugger: Changed map command in the debugger to now perform separate read/write/fetch lookups. 0.125u4 - New games: Black Touch (Korea) - New Working games: The Dealer, Deroon DeroDero, Sigma Poker 2000, Touki Denshou -Angel Eyes- and World PK Soccer V2 (almost playable) - New Non-Working games: Black Touch '96, Capitan Uncino, Capitani Coraggiosi, Carta Magica, Elvis?, 2x Europa 2002, La Perla Ner, La Perla Nera Gold, Laser 2001, Magic Drink, Millennium Sun, NtCash, Office Yeo ln Cheon Ha, Super Space 2001, Top Blade V, 'Unknown italian gambling game' and Wizard - New clones: Double Dragon (bootleg with 3xM6809, set 2), Monky Elf (Korean bootleg of Avenging Spirit), Quiz Olympic (set 2), Raiden Fighters 2 (Taiwan, SPI) and Touki Denshou -Angel Eyes- (VER. 960427) - New drivers: blackt96.c, itgambl2.c and itgamble.c - COP410/20 CPUs . Added HALT opcode and halt mode to the COP410 . Added Microbus support, clock divisor selection and CKO mode selection to the COP420. Changed Thayer's Quest keyboard interface to at least slightly resemble the schematics. - I386 CPU: Added fisttp opcode to i386 disassembler - Minx CPU (Nintendo handheld console): Styling changes. Added instruction cycle counts. Added interrupt support. Added HALT support. Fixed INT instruction. Added incomplete support for DIV and MUL instructions. Fixed MOV [#nnnn],BA and MOV [#nnnn],HL instructions. Fixed interrupt handling. Fixed opcodes 45, 4D, 55, 5D, B5, B6, B7, FC, FD and CF 70-7F. Fixed flag results for INC, DEC, AND, OR and XOR instructions. - Universal recompiler: * Fixed frontend to handle opcode widths different from bus width. * Added several new opcodes: (D)GETFLGS - copies the UML flags to a destination operand and FDRNDS - rounds a double precision value to single precision. * Renamed several opcodes: (SETC -> CARRY), (XTRACT -> ROLAND) and (INSERT -> ROLINS). * Consolidated the following opcodes: (LOAD?U -> LOAD), (LOAD?S -> LOADS), (STORE? -> STORE), (READ?U -> READ), (READ?M -> READM), (WRITE? -> WRITE), (WRITM? -> WRITEM), (SEXT? -> SEXT), (FTOI?? -> FTOINT), (FFRI? -> FFRINT) and (FFRF? -> FFRFLT). * Removed some opcodes: FLAGS (can be done with GETFLGS/LOAD4/ROLINS), ZEXT (can be achieved with AND) and READ?S (can be achieved with READ/SEXT). * Updated C, x86, and x64 back-ends to support these opcode changes. * Updated disassembler to support these opcode changes. - PowerPC CPUs (dynamic recompiler): Rewrote PowerPC implementation as a dynamic recompiler on top of the universal recompiler engine. * Wrote a front-end to analyze PowerPC code paths and register usage. * Wrote a common shared module with C implementations of tricky CPU behaviors. * Added separate CPU types for the variants supported, instead of relying on a hidden model enum. * Rewrote the serial port emulation for the 4xx series to be more accurate and not rely on separate DMA handlers. * Rewrote the MMU handling to implement a software TLB that faults in pages and handles changed bits appropriately. * Implemented emulation of the PowerPC 603's software TLB, which allows the model 3 games to run without a hack to disable the MMU. Updated the PowerPC disassembler to share constants with the rest of the core, and to more aggressively use simplified mnemonics, especially for branches. - MIPS3 dynamic recompiler . Fixed Cause register for bad COP instructions . Updated to use new/changed opcode forms . Changed context switch so that it only swaps a single pointer - Discrete sound: Added NODE_RELATIVE(NODE, offset) macro to discrete.h. Fixed asteroid.c, canyon.c, skydiver.c and tank8.c to use this macro instead of adding directly to the node. - Konami 056832 GFX: Fixed crasher due to some Konami games using 8 layers in the K056832 implementation, even though it was only written for 4 (asterix.c, bishi.c, dbz.c, djmain.c, gijoe.c, konamigx.c, lethalen.c, moo.c, mystwarr.c, qdrmfgp.c, xexex.c and zr107.c) - calomega.c: Updated Cal Omega driver with correct dumps - gatron.c . Changed description of Card Games? and Slots Game? to Poker 4-1 and Pull Tabs . Renamed the ROMs in each set according to their own stickers . Moved the driver into gametron.a group . Added the missing input port C to 8255 PPI I/O chip. Poker 4-1 and Pull Tabs don't make use of it, but is present in the Test/Setting Mode. . Updated technical notes - gticlub.c/hornet.c/model3.c/viper.c/zr107.c . Updated to new PowerPC configurations . Updated some memory handlers to be native 8-bit handlers - hornet.c . Cleaned up JVS implementation to work with new serial code . Added fast RAM for the work RAM to give a small speed boost - model3.c . Reimplemented/centralized interrupt handling. These games are broken for the moment . Updated the 53c810 SCSI adapter to pass IRQ state with the IRQ callback - namcona1.c . Adjusted NamcoNA output rate to match pitch with F/A and Cosmo Gang the Puzzle soundtrack CDs . Fixed C140 clock speed in bkrtmaq, cgangpzl, emeraldj, emerldja, exvania, fghtatck, swcourt and tinklpit - snookr10.c (Sandii' games) . Switched the color system to RESNET calculations . Hooked the infamous bit7 of Input Port 0x3004 in parallel to DIP switch 1 . This allow to use the PAYOUT button to trigger the Super Game instead of STOP 5 . Demultiplexed lamps matrix . Added lamps support, but is still imperfect . Updated technical notes - stv.c: Upped max directory size for ST-V/Saturn driver (machine\stvcd.c) - suprnova.c: Changed blending implementation a bit (still not right) - tecmosys.c . Added simulaton of tecmosys protection - Deroon DeroDero and Touki Denshou are now playable . Added many improvements to the tecmosys video and sound emulation . Added new gfx1 rom and fixed rom loading to Deroon DeroDero . Fixed 68000 CPU1 and OKI6295 clock speeds and visible area in Deroon DeroDero and Touki Denshou - Cross Shooter: Verified/Fixed clock frequencies on Air Raid/Cross Shooter - The Dealer: Added proper bankswitching to the dealer driver, validating a ROM previously thought to be bad - Game now playable. - El Grande: Added new gfx2 rom (some bad bits) and prom - GunNail: Optimised tilemap_draw rowscroll case to avoid overhead when used with clip rects smaller than the tilemap. This reduces by an order of magnitude the time taken to render the background in Gunnail stage 5. Fixed 68000 clock speed. - Inca: Changed game to a parent set - Space Harrier: Fixed rom names - Sigma Poker 2000: Reworked the input system - Game now playable. Updated technical notes. - Thayer's Quest: Changed keyboard interface to at least slightly resemble the schematics - World PK Soccer V2: Fixed some dips and added correct inputs, despite still missing the correct input for begin the left right movement the game is almost playable. - Input port . Removed port_input_read_indexed in favor of the use of proper tags in a number of drivers . Fixed duplicate input port bits. Made duplicate input port bits an error now that all the warnings are fixed - Description changes of Poker 4-1 and Pull Tabs - Dipswitch fixes in aquarium, ddungeon, equites.c, glfgreat, mdrawpkr, pclubys, sigma2k, tattack, trojan, wilytowr, wndrplnt and wpksocv2 - MAME . Optimised tilemap_draw rowscroll case to avoid overhead when used with clip rects smaller than the tilemap. This reduces by an order of magnitude the time taken to render the background in Gunnail stage 5. . Cheat engine: * Locked search region when malloc fails to allocate gigantic memory instead of fatal error. Also locked zero malloc error in case of search speed = all memory in 32-bit CPU. And added search region range checker to lock a search region with a big risk. * Fixed a bug that old code is always converted to specified separator in enable/disable menu. * Refined new cheat format. - Rewritten cheat format again. Newest format is ":gamename::type::address::data::extend_data: (description:comment)". Expanded type field now requires 10 bytes (not 8 bytes) and it divides internal cpu (2 bytes) and type (8 bytes) parameters. - Removed VWrite, VRWrite. The flag of Value Selection is merged into expanded type field now. - Added CBit (Condition Bit). This checks bit in read data then set or clear bit in case of true. - Rearranged cheat code viwer based on newest cheat format. * Fixed unworking Load Old Format option. If you want to load old or older format code, set it (default is OFF). * Renamed functions/structures based on coding guidlines. All structures and included parameters are completed. * Merged resize_*_no_dispose() into resize_*(). * Removed the hack of search region for SH-2 CPU because required region is now set as expected without this hack. . Introduced/updated some include files for files that export functions whose apis will need to be changed to handle machine parameters (cps1.h, decocrpt.h, ms32.h, pgm.h, fd1089.h, konami1.h). In the case of konami.c, renamed the file konami1.c and changed the api and callers to only require one function export. Pulled memory_region*() calls out of for loops and folded the occasional duplicated call. The compiler can't likely infer that the results are constant, so this should be a minor performance win as well. . Made it possible to pass a NULL errorbug to input_port_config_alloc(), this fixes -listxml crashes - Compiling: Added compile-time error if PTR64 is incorrectly set 0.125u3 - New games: ChuckECheese's Match Game, Coronation Street Quiz Game and 'Player's Edge Plus (XP000112) White Hot Aces Poker' - New Working games: beatmania THE FINAL (ver JA-A) - New clones: Atomic Boy (revision B), Dynamite Cop (USA, Model 2C), 5x Fred Flintstones' Memory Match and Mighty! Pang (Euro 001010) - 80286 CPU: Fixed memory access in the core which made i286.h obsolete. Changed CPUINFO_INT_MAX_INSTRUCTION_BYTES to prevent crashes during disassembly. - MIPS CPUs . Renamed struct mips3_config -> mips3_config . Updated all drivers to the new names . Removed MIPS3DRC_STRICT_COP0 flag, which is no longer used. . A few minor cleanups . Moved implementation-specific state into a pointer hanging off of the core MIPS3 state . Removed large context in favor of a pointer to the large context to help improve context switch times - COP420 CPU: . Fixed COP420 instructions JSRP, LBI, LQID, SKT, XAS and INIL (Draco now has sound) . Fixed cycle count for extended opcodes . Added CKO general purpose input - 8257 DMA (dkong.c) . Added support for autoload mode . Fixed bug in calculating count - EEPROM: Renamed EEPROM_* to eeprom_*. Updated all drivers accordingly. Typedef'ed a real eeprom_interface structure. - ampoker2.c . Reworked the color routines switching to resnet system . Added a resistor network diagram . Switch to pre-defined crystal value . Changed the WATCHDOG_TIME_INIT to be based on miliseconds instead of hertz . Other minor cleanup/fixes . Updated technical notes - dcheese.c: Added a PORT_CUSTOM for the ticket dispenser callback. Updated the dcheese driver to use it. Many more drivers can be updated to use these new PORT_CUSTOMs in the future, eliminating hacky input port read handlers. - peplus.c . Updated coin-in timing . Extended memory address range of DUART . Fixed overlapping input port bits - zaxxon.c: Removed meaningless service_coin_lockout_w function. Updated the Zaxxon driver to correctly handle the coin enable lines. There is no external coin lockout circuitry in Zaxxon; instead, the pcb simply latches the coin input, which then needs to be explicitly cleared by the game. - beatmania THE FINAL (ver JA-A): Added missing harddisk (Game now playable) - Clash-Road: Fixed Z80 CPU1 clock speed - Draco: Game has now sound (COP420 fixes) - GI Joe: Made game not crash, but still don't understand what the original code was trying to do. - Hyper Duel: Fixed rom names - Jack Rabbit/Money Money: Replaced TMS5220 sound with TMS5200 - Magical Error wo Sagase: Fixed gfx1 rom loading - One + Two: Changed default dipswitches in driver. Common coinslot mode seems broken, or our code is wrong. - Portraits: Replaced TMS5220 sound with TMS5200 - Power Spikes: Fixed visible area in clone clone '1991 Spikes (Italian bootleg)' - Rainbow Islands: Fixed clocks in clone Jumping - Super Pool (9743 Rev.01) . Moved game to a better match hardware (magic10 driver) . Fixed the ROM load and added a list of PCB components . Fixed description, 68000 CPU1 clock speed, visible area and palettesize - Wily Tower: Fixed Z80 CPU1 and I8039 CPU2 clock speeds - Input port . Fixed PORT_IMPULSE handling. The old code would force inputs to be asserted for at least the number of frames indicated, but keeping the button pressed would keep the input asserted. Now the input is asserted far exactly the number of frames indicated. . Added a PORT_CUSTOM for the eeprom bit reading. Updated several drivers to use that by specifying it in their input ports instead of having a custom read handler that inserted the bit forcefully. Also added a PORT_CUSTOM for the ticket dispenser callback as well. Updated the dcheese driver to use it. Many more drivers can be updated to use these new PORT_CUSTOMs in the future, eliminating hacky input port read handlers. . Changed error reporting during input port detokenization to fill a buffer rather than fatalerror-ing immediately. Should now properly skip over any invalid tokens. Enhanced error detection during input port detokenization to catch duplicate bits. There are a lot of these! Updated initialization code to print errors and fatal only if the input ports were unable to be constructed at all. . Added internal default tags for input ports when saving/loading . Removed meaningless service_coin_lockout_w function . Added support for a NULL set of input ports, used by the empty driver. . Fixed duplicate input port bits in cps1.c, dkong.c, gottlieb.c, megadriv.c, pacman.c and segae.c - Description changes of Dynamite Cop (Export, Model 2A), Fred Flintstones' Memory Match (World?, Ticket version, 3/17/95), Magical Error wo Sagase, Super Pool (9743 Rev.01) - Dipswitch . Fixed bug that caused dipswitches to be improperly read from game cfg file in certain circumstances . Fixes in dkong3, ghouls, knights, onetwoe, qbert, sqbert, tetrisse and tomahawk - MAME . Fixed cpu_getiloops() which was not returning the correct value . Changed the behavior of the translate callback in the CPU interface: Added new 'intention' parameter to the translate callback to indicate read/write/fetch access, user/supervisor mode, and a flag for debugging. Updated all call sites to pass an appropriate value. Updated all CPU cores to the new prototype. . Added new astring functions astring_del, astring_replace and astring_replacec . Cheat engine: * Supported (preliminary) new cheat format: Added new operations: PDWWrite, RWrite, VRWrite, CWrite, Move, Branch, Loop and Popup. Added new options: ValueSelectNegative, Return, AddressReadFrom and DataReadFrom. Added cheat variables. You can store data with Write or Move operations and read as an address or data from each fields. Added condition check for CWrite, Branch and Popup operations. Added new custom codes: Separator and Layer. Supported Shared Code [MESS ONLY]. Different machine shares common code for a game. * Allowed mixed label-select or user-select with standard code. * Added label selector menu for label-selection code. * Added extend comment displayer for multi-line comments. * Added command menu for cheat list and watchpoint. Easy selectable cheat commands in this menu. * Added debug view menu [DEBUG BUILD ONLY]. It displays internal info to debug cheat system. * Supported unique separator by ui_draw_menu() in several menus. * Added user defined search region. You can set free memory range from cheat database. * Enhanced error check for cheat code to prevent from unexpected working. Error code is locked. If you select this code, the analyser works instead of the code activater. * Enhanced value input with keyboard-less. Cheat edit key gives new input system in several menus Left/right keys moves the edit cursor and up/down keys changes a value. * Added cheat command save, reload and reset in option menu. * Supported address shift in searching. Now searchable default region in TMS340*0 cpu games (Trog, Smash T.V. etc). * Refined cheat menu handling with function pointer called cheat_menu_handler. * Added format strings table to manage in an integrated fashion. * Deleted unused hacks of default search region for Neo Geo and TMS34010. * Refined code based on MAME coding guidelines: Renamed many functions/structures/constants. But not complete due to too many items. Converted small but often used functions to INLINE. Fixed a comparison in case of 0 or NULL. Added missing function prototype for several functions. . Added new option -snapname which lets you provide a template for how snapshot names are generated. See config.txt for details. . Updated documentation in several drivers based on old readmes and other data that might get lost . UI menu . Fixed behavior of toggle switches so that they don't lose their value when the UI is up. They also can now be used for multibit DIP switch settings in which case they toggle through all the options. Added new functions input_field_select_next_setting() and input_field_select_previous_setting() which can be used to iterate properly through DIP switches. Fixed the behavior for cases where conditional ports are in play (you could get stuck). Changed uimenu.c to call these instead of implementing its own. . Changed uimenu.c so that hitting ENTER on a DIP switch resets it to its default value. This is analagous to how the OSD sliders behave. . Changed text used to specify a menu separator in uimenu.c, and added a #define for the new string. - Compiling . DRC frontend changes: Fixed bug in handling edge case with the PC near the 0 or ~0. Added new flag to tag privileged instructions. . UML updates: Added new opcode SETC to set the carry flag from a source bit. Added new opcode BSWAP to swap bytes within a value. Updated C, x86, x64 back-ends to support the new opcodes. Updated disassembler to support the new opcodes. . Added TOKEN_SKIP_* macros to tokenize.h 0.125u2 - New games: --- - New Working games: 1991 Spikes (Italian bootleg) - New Non-Working games: Beauty Block - New clones: Gals Panic SU (Korea), Last Fortress - Toride (Korea) and Miss Puzzle (Clone of Gumbo) - 80286 CPU: Fixed databus widths - TMS5110/TMS5220 sound: Added proper interpolation sub-cycles ('PC' cycles and A/B subcycles of each) and updated comments. - aleck64.c: Fixed N64 rendering on big-endian targets - cidelsa.c: Fixed CDP1869 character memory access and Cidelsa sprite flashing - lwings.c . Input clean up . Added DIP locations . Merged machine drivers . Fixed Legendary Wings (bootleg) life DIP switches - namcona1.c . Adjusted alternate palette handling weights to more accurately match real hardware - text anti-aliasing is much more noticable. . Adjustment to ROZ layer priority - prevents roz layer from incorrectly being displayed over backgrounds in some games (i.e. Numan Athletics (Japan)) . Added a mask when processing the ROZ tilemap to avoid defects in Emeraldia (Japan Version B) . Emeralda: Fixed long-standing bug with text colors. A sprite attribute exists which signals an alternate interpretation of palette ram. . Numan Athletics: Fixed priority for the bitmap layer used . Changed palettesize to 8192 colors - Apple 10/Snooker 10 . Some improvements to Sandii' games . Confirmed the CPU clock after some PCB measurements . Changed the SND clock to 1MHz to match the PCB measurement . Corrected the internal OKI6295 frequency turning the pin 7 state to HIGH . Inputs: Eliminated all pulse limitations. Affected buttons have a rattled sound in the real thing too. . Updated technical notes . Changed OKI6295 clock speed to 1MHz - Gorf: Added new samples and updated the sample volume. Download samples at http://www.mameworld.net/samples/wav/gorf.zip - Ground Effects/Under Fire: Fixed black pixel patches present in the TC0100SCN fg layer - Hyper Sports/Track & Field: Restructured input port internals and cleaned up inptport. Removed gross hacks in Hyper Sports and Track & Field NVRAM. These may be broken as a result. - Power Spikes: Fixed clone '1991 Spikes (Italian bootleg)' sprite colours without resorting to hacks - Game now playable. - Q*bert: Added new cpu2 roms to clone Mello Yello Q*bert - Q*bert's Qubes: Added new cpu2 roms - Shuttle Invader: Added built-in overlay (8080bw.c) - World Rally . Fixed MCU comms on big-endian . Added wheel support. When optical wheel is selected (via dipswitch), then gear shift (low/high) is enabled. - MAME . Eliminated a large number of global Machine references. Added machine parameters to IRQ callbacks throughout the system to help remove more. Reduced the number of files needing deprecat.h by ~200. . Changed defaults so that joysticks are enabled standard . Restructured input port internals and cleaned up inptport.c: * Input ports are now maintained hierarchically. At the top level are input ports, which contain a list of fields. Each field represents one or more bits of the port. Certain fields such as DIP switches and configuration switches contain a list of settings, which can be selected. DIP switch fields can also contain a list of DIP switch locations. * Normalized behavior of port overrides (via PORT_INCLUDE or by defining multiple overlapping bits). All fields within a port are kept in strict increasing bit order, so altered DIP switches are now kept in the appropriate order. This addresses MAMETesters bug 01671. * Live port state is now fully separate from configured state. This is manifested in a similar way to devices, where a const list of ports can be managed either offline or live. Each port has a pointer to an opaque set of live state which is NULL when offline or valid when live. Each port also has a running_machine * which is also NULL when offline. * Because of this new arrangement, the conversion from tokens to a list of ports now requires reasonably complex memory allocation, so these port lists must be explicitly allocated and freed (they are not mantained by automatic resource allocation). * Custom and changed callbacks now take a pointer to a field config instead of a running machine. This provides more information about what field triggered the change notification. The machine can be found by referenced field->port->machine. * The inptport.c module has been cleaned up and many ambiguities resolved. Most of this is internal, though it did result in osd_customize_inputport_list() being changed to osd_customize_input_type_list(). The parameter to this function is now a linked list instead of an array, and the structures referenced have been reorganized somewhat. * Updated config.c to pass machine parameters to its callbacks. * Updated validity checks, XML output, and UI system to handle the new structures. * Moved large table of default input settings to a separate include file inpttype.h. * Removed gross hacks in trackfld and hyperspt NVRAM. These may be broken as a result. - MESS: Corrected several bugs in the emulation of the Saturn CPU. These corrections are needed to make new HP48 drivers (to be submitted to MESS imminently) work. - Compiling: Universal DRC system updates and improvements: UML: * Added back-end validation mechanism, and a handful of tests as examples. This will be expanded in the future. * Added several new opcodes: SAVE dumps the entire virtual machine state to a struct, RESTORE applies the data in a struct to the live state, LZCNT counts leading zeros in an operand, XTRACT extracts a bitfield to another register (rlwinm) and INSERT inserts a bitfield into a register (rlwimi). * Added new back-end function get_info() which returns information from the back-end about how many actual registers will be mapped. x86 back-end: * Implemented all new opcodes. * Implemented get_info() function. * Fixed several bugs relating to shifts/rotates and optimizing out cases incorrectly. x64 back-end: * Implemented all new opcodes. * Implemented get_info() function. * Added defines for new Penryn opcodes to x86emit.h. * Added support for ROUNDSS and ROUNDSD on Penryn architectures. This hasn't been tested. If you have a Penryn-based system, give it a try. * Fixed several bugs relating to shifts/rotates and optimizing out cases incorrectly. C back-end: * Implemented all new opcodes. * Implemented get_info() function. * Cleaned up operand sizing. * Fixed several errors that made it not work on bigendian systems. MIPS DRC: * Added some instrumentation for the MMU. To enable it, turn on PRINTF_MMU at the top of the file. * Fixed front-end so that virtual no-op instructions are still targeted as branch targets. * Fixed front-end to mark the beginning of each sequence as needing TLB validation, since any sequence can be jumped to from anywhere. * Redid the MIPS3 TLB implementation. Fixed the exception vector and type handling. Changed the bitfields to directly map from the MIPS TLB format. Added distinction between TLB fill and TLB valid/modified exceptions. * Added separate modes for user, supervisor, and kernel modes. Each mode does proper verification of addresses now and generates address errors for invalid accesses. * Fixed several bugs in the TLB implementation; not everything works yet but it's a lot closer. * Made COP0 access checking mandatory in non-kernel modes. * Fixed several crashes when recompiling virtual no-ops. * Fixed TLB bug where entries for virtual address 0 were present by default. * Fixed bug in the map variable implementation that would sometimes result in incorrectly recovered values.* Implemented IDT instructions. All invalid instruction asserts are now runtime-only. * Added support to map a few common registers to machine registers if the machine supports it. Currently only x64 on Windows has enough free registers to do so, though PowerPC will almost certainly be able to take advantage of this. Gives a minor speedup. * Updated to use INSERT and XTRACT where appropriate. * Cleaned up register usage to free up one machine register for x64 on Linux. - MAMETesters Bugs Fixed . All Sets: Saved machine states do not properly adjust to changes in -samplerate [Save/Restore ID 01815] . Every set with PORT_MODIFY used for DIPs (e.g. arknoidj): The modified dipswitches are always listed at the bottom of the list [Interface ID 01671] . YM2608 games (tail2nos, sformula, wc90, mechatt): Only basic music, no more samples [Sound ID 01814] . numanath, numanatj: Graphics corruption on title screen [Graphics ID 01497] . carnevil, sfrush: Seattle games crash on startup [Core ID 01804] 0.125u1 - New games: Card Games?, Pit Boss Superstar and Slots Game? - New Working games: beatmania 7th MIX (ver JA-B), Chase Bombers and World Rally - New Non-Working games: beatmania THE FINAL (ver JA-A) - New clones: Demon's World / Horror Story (early edition), Ghox (set 2), The Legend of Kage, Legendary Wings (bootleg) and Megatouch III (9255-20-06 RON) - New drivers: gatron.c - Support for DS5002FP CPU (World Rally) - TMS51xx/52xx sound . Updated TMS5200/5220 documentation and comments . Fixed the chirp table implementation in both the 51xx and 52xx chips - 6526 CIA: Added feature in READ operation the value can be forced by a external circuit; this feature is necessary for MESS. MAME - Amiga system (alg.c, arcadia.c, cubocd32.c, mquake.c and upscope.c) - cidelsa.c . Added memory address parameter to CDP1802 DMA callbacks and a macro for the CPU interface . Added CDP1852 I/O buffer chip, and used it in Altair/Draco - dynax.c: Fixed crash in games due to missing MSM6242 device - funworld.c: Found the proper algorithm to decrypt the blue TAB PCB in the driver. Replaced the old decryption tables with the proper decryption scheme. Updated technical notes - gaelco.c: Rewroted the Gaelco video ram encryption, which finally makes sense. The key observation was that when decrypting the second word, both encrypted and decrypted bits of the first word are used. Many thanks to Javier Valero for the detailed information that made this possible. - gatron.c: New driver for old Game-A-Tron gambling games hardware: Properly decoded graphics. Proper memory map. Added NVRAM support. Proper Inputs through 8255 PPI I/O chip. Both games are working. Added technical & game notes. - namcona1.c . Fixed the ROZ effect in the driver . ROZ tilemap is actually an additional tilemap . Fixes a bug where a "roz enable" test was causing a normal layer to be rendered with ROZ effects in-game. There is no roz enable register - it's always available for mixing with other tilemaps and sprites. This also adds a missing NAMCO logo zoom/spin effect in Emeralda's attract mode. . Support for scanline effect (fixes invisible dolphin in Emeralda attract mode) . ROZ implementation no longer breaks Numan Athletics pixmap layer . Blitter fixes; xday graphics are now correct . Identified extra communications RAM used by xday (probably to control printer) - tmaster.c . Fixed coin inputs . Added validator input and notes on inputs to the driver - undrfire.c . Changed ES5505 clock rate to 15238050 Hz (30476100/2) . Chase Bombers (Game now playable) . Improved sprites . Hooked up steering wheel input . Unified memory maps and tidied up some code . Under Fire: Removed the undrfire speedup hack - Arcade Classics: Renamed ports and used AM_READ_PORT macros - Black Tiger: Fixed main Z80 clock and sound Z80 clock as verified on PCB - beatmania 7th MIX (ver JA-B): Added missing harddisk image - Game now playable - Columns: Added 'Background Music' dipswitch to clone Columns (US, cocktail) - Emeraldia: Fixed the ROZ effect in Namco NA1 driver. This adds a missing NAMCO logo zoom/spin effect in attract mode. Also added support for scanline effect (this fixes invisible dolphin in attract mode). - Numan Athletics: Fixed the NamcoNA ROZ implementation, this no longer breaks Numan Athletics pixmap layer. - Quiz & Dragons: Fixed rom names - Q*bert's Qubes: Marked the sound roms on Q*Bert's Qubes as bad and changed the flag to imperfect sound. The current sound cpu roms are the same as on a normal Q*Bert board, which is incorrect. At least three sound effects are present in the real qq-snd roms but not the Q*Bert qb-snd ones. - Space Guerrilla: Fixed input and dipswitches - Thunder Hoop: Fixed default dipswitches to give more than 1 life - Varth: Fixed rom names - World Rally: Added DS5002FP CPU2 and rom. Fixed visible area - Game now playable - X-Day 2 . Fixed the NamcoNA blitter, this fixes X-Day 2 graphics . Identified extra communications RAM used by X-Day 2 (probably to control printer) - Zero Wing: Added 'Region' dipswitch to clone (2 player) - Merged memory maps in Big Pro Wrestling, Tail to Nose, Tank Battalion, Tank Busters, Tao Taido, Target Hits and Taxi Driver - Description changes of Janpai Puzzle Choukou, Megatouch 5 (9255-60-01 ROC) and Mahjong Neruton Haikujiradan - MAME . Added uncompressed AVI recording: Extended aviio to be able to write RGB bitmaps. Unfortunately, the only option is fully uncompressed, which means the resulting AVIs are *HUGE* and may not play correctly in realtime due to high data rate. The intention is that these uncompressed AVIs are post-processed by other utilities to compress the video and produce a realtime playable result. Added new command-line option -aviwrite which works just like -mngwrite, except it produces AVIs and streams sound to them. Updated documentation accordingly. Shift+F12 still produces MNGs for now, though this might change in the future. Modified fileio.c to retain the full pathname to the file so that it can be queried while the file is open. . New universal dynamic recompiler system: The central module is drcuml.c, which defines a universal machine language syntax that can be generated by a frontend recompiler and then retargeted via a generic backend interface to any of a number of different architectures. A disassembler for the UML is also included to allow examination of the generated UML code. Currently supported backend architectures include 32-bit x86, 64-bit x86, and a platform-neutral interpreted C backend that can be used as a fallback for platforms without native support. The C backend also performs additional validation to ensure assumptions are met. Along with the new architecture is a new MIPS III/IV recompiler frontend. This frontend has been rewritten from the old x64-specific recompiler to generate UML opcodes instead. This means that the single recompiler can be used to target multiple backend architectures and should in theory produce identical results across all of them. The old 32-bit and 64-bit MIPS recompilers are now officially retired. The new system provides similar performance (within 5% generally) to the old system and has similar compatibility. The only currently known issues are some problems with the two Gauntlet 3D games. . Consolidated opbase variables into a structure and rescoped them so they are hidden for general access. ---------------------------------------------------------------------------------------------- 0.125 - New games: --- - New Working games: Megatouch III (9255-20-01 ROF) - New clones: Megatouch III Tournament Edition (9255-30-01 ROE) and Touchmaster 7000 (v8.04 Standard) - SCSP and AICA sound: Fixed an envelope corner case - m90.c: Added video enable/disable feature - Denjin Makai: Added extra tile banking and layer enable - Dynablaster: Verified clocks on clone Bomber Man PCB which runs on M90 hardware - Megatouch III: Added new 1MB cpu1 rom - Game now playable - P.O.W.: Fixed rom names - namcona1.c: Fixed ROZ centering - MAME . x86/x64 Dynamic recompiler: Added xchg and a few other missing opcodes to x86emit.h . Removed bogus assertion in device code (emu\devintrf.c, DEVICE_TYPE_WILDCARD is NULL) . Added -watchdog to runtest.cmd 0.124u5 - New games: Paparazzi - New Working games: Apple 10, PinBot (PlayChoice-10), Quiz F-1 and Snooker 10 - New clones: Dynasty Wars (US set 2), Final Fight (Japan 900112), Forgotten Worlds (World?), Heated Barrel (World version 3), Megatouch IV (9255-40-01 ROE), Raimais (Japan / First Revision), Raiden 2 (set 7), Street Fighter Alpha 2 (Euro 960229) and Touchmaster 3000 (v5.02 Standard) - AY-3-8910/YM2149 sound: Fixed AY-3-8910/YM2149 and derivatives envelope handling - 8259 PIC: Added support for 8080/85 mode interr