0.88 (includes 0.87u5 whatsnew.txt details)

General Improvements
--------------------

Emulation of Sega FD1094 encrypted 68k CPUs, this will allow for significant progress
in the emulation of the remaining encrypted Sega games.  Note that we require working
CPUs to extract encryption data from in order to emulate the encrypted titles, see
http://cgfm2.emuviews.com/ for more details.  As a result of this code several of the
encrypted games will now boot (astorm, ddcrew, wb3a, wb3b, tetris, ddux, sonicbom etc.)
	[Charles MacDonald - extracting data from CPUs,
	  Nicola Salmoria - decryption code]

Misc fixes from Mame32Plus
	ay.diff: add save state support for AY8910 and friends
	crbaloon.diff: add music support
	darius.diff: adjust FM/ADPCM balance
	f3.diff: fix landmakr sound loading
	harddriv.diff: fix undersized array causing memory trashing
	mario.diff: added save state support
	qsound.diff: added save state support
	renegade.diff: fixed missing break; in MCU simulation
	s16.diff: adjust FM/ADPCM balance
	scsp.diff: fixed undersized array causing stack trashing
	ssv.diff: fixed hypreac2 sound loading

i960 and model 2 update [R.Belmont, ElSemi]
	i960:
	- Fixed bug in movl (ElSemi)

	model2:
	- Removed hotd and lastbrnx hacks, the i960 fix
	obsoletes them
	- Added port 0 switching, player 2 start works in
	several games now (ElSemi)
	- Added working timer support, including timer IRQs
	- Updated game status listing

Fixed some c99 related compiler issues [Jeff Mitchell, Lawrence Gold]

update to ppmast93 driver, still not playable [David Haywood]

Discrete sound changes [Derrick Renaud]

	Discrete Sound Changes
	======================
	* Continued cleanup of code to make it more readable

	New Discrete Modules Added
	==========================
	* DISCRETE_NOTE - counter circuit used to create tones/music.
	* DISCRETE_INTEGRATE - various op amp integration (ramp) circuits.
	* DISCRETE_OP_AMP_TRIG_VCA - Did not know what to call this. :-)  Basically it
	is a programable voltage controlled amp.  But uses only an on/off trigger.  It
	has resistors to select the rise/fall times.  Also it is not a true VCA.  It
	actually adjusts amplitude by clipping more/less off the bottom of the input
	signal.  But it is a common circuit.
	
	Game Driver Changes
	===================
	* polaris - complete sound rewrite to use new component value code.  Hooked up
	watchdog timer.

New watchdog functionality [Derrick Renaud]

	Game Driver Changes
	===================
	* dominos, sprint1, sprint2, dragrace, canyon, nitedrvr - added watchdog and
	set to proper time using new MDRV_WATCHDOG_VBLANK_INIT function.
	* firetrk, montecar, superbug, pacman, polaris - changed watchdog to proper
	time using new MDRV_WATCHDOG_VBLANK_INIT function.
	* galpania, galpanib - changed to MDRV_WATCHDOG_VBLANK_INIT because these
	games need watchdog init at game start.
	
	Core Changes
	============
	Changed watchdog to allow it to start at machine run start.  If not used, the
	previous watchdog functionality is retained.  Only define 1 of the 2 watchdogs
	per game.  If both are defined then  MDRV_WATCHDOG_VBLANK_INIT will be used
	only.
	
	* MDRV_WATCHDOG_VBLANK_INIT(watch_count)- Initializes the watchdog in
	MACHINE_DRIVER_.  watch_count is the # of vertical blanking intervals before a
	forced reset.  If the time is unkown then you can use these defaults:
	DEFAULT_60HZ_3S_VBLANK_WATCHDOG or DEFAULT_30HZ_3S_VBLANK_WATCHDOG
	
	* MDRV_WATCHDOG_TIME_INIT(time)- Initializes the watchdog in MACHINE_DRIVER_.
	time is the time in seconds before a forced reset.
	
	New function to enable/disable the watchdog in game.
	watchdog_enable(0 or 1) - used to 0=disable or !0=enable.
	
	Made a macro that calculates the pulse time of a 74LS122 or LS123.
	TIME_OF_74LS123(r,c)
	r is in Ohms.  c is in Farads.
	c must be greater then 1000pF to use this function
	

Added runtime option to disable validity checks [Derrick Renaud]

	Added run time option:
	-[no]skip_validitychecks
	    Forces MAME to skip doing the code validity checks. The default is
	    OFF (-noskip_validitychecks).
	This new option will default to doing the test and force you to confirm you
	do not want to use it.  This way users can test their submissions easily and
	then speed things up when confirmed ok.
	
	NOTE: DO NOT disable the checks when submitting code

Fixed voodoo code broken by cleanup in u3 [Aaron Giles]

Fixed qdrmfgp broken by cleanup in u3 [Olivier Galibert]

Fixed cut and paste error in chdman [Ren Single]

Fixed mayday inputs [Stefan Jokisch]

Fixed Puzzle Club dips [Brian Troha]

Input Port System Update [Aaron Giles]
	PORT_INCLUDE() works the same as before.

	PORT_MODIFY("tag") allows you to modify any given input port by specifying 
	its tag.

	Any PORT_BIT() entries that you put after a PORT_MODIFY will nuke any 
	matching entries in the previous definition, allowing you to overwrite them 
	with new stuff.
	
	I also added a few new functions:
	
	readinputportbytag_safe() takes a tag and a default value. If the tag is not 
	found, the default value is returned.
	
	port_tag_to_handler8()
	port_tag_to_handler16()
	port_tag_to_handler32() -- these 3 new functions take a tag string, find the 
	input port, and return the appropriate handler. They can be used in AM_READ, 
	so instead of:
	
	  AM_RANGE(0x00, 0x00) AM_READ(input_port_1_r)
	
	You can use
	
	  AM_RANGE(0x00, 0x00) AM_READ(port_tag_to_handler8("MyPortName"))

	I've modified exidy.c to use these features as a testbed. Let me know if you 
	see any problems.

Memory system changes / fixes [Aaron Giles]
	* added explicit casting to the memory handler width when computing the 
	shifted data/mask values for read/write handlers -- this should in theory 
	fix R. Belmont's 64-bit issues

	* added memory_install_read/write8/16/32/64_matchmask_handler functions to 
	allow dynamic installation of match/mask (AM_SPACE-style) memory ranges --  
	this should satisfy Frank P's request for the astrocade driver
	
	* changed masking behavior for match/mask pairs so that an AM_SPACE with an 
	AM_MASK does not expand the explicitly-specified mask value -- this should 
	fix dwidel's problem getting Pac-Man accurate
	
	* changed dynamic bank assignment to always assign a bank if you have 
	explicitly specified a mask value via AM_MASK -- this should allow mirroring 
	via AM_MASK if you want to, though AM_MIRROR is still preferred
	
Fixed OKI banking in Fixeight bootleg [Quench]

More changes [Derrick Renaud]

	Game Driver Changes
	===================
	* firetrk, montecar - added proper CPU clock frequency change when going
	in/out of service mode.
	
	Core Changes
	============
	Fixed some last remaining issues with the new watchdog.  The watchdog would
	not remain disabled after a watchdog_enable(0) in some conditions.

	Added a new function to change CPU clock speed in game.  The current scaling
	factor will still apply.  eg. If you force the CPU to change clock to 1MHz
	while the scaling is at 50%, the effective CPU speed will be 500kHz.  Then
	reading the clock speed will give 1MHz, because clock scaling is transparent
	to the driver.

	/* Returns the current CPU's actual unscaled running clock speed */
	int cpunum_get_clock(int cpunum);

	/* Sets the current CPU's clock speed and then adjusts for scaling */
	void cpunum_set_clock(int cpunum, int clock);

Fixed some problems in Steel Force [Pierpaolo Prazzoli]


New Games supported or promoted from GAME_NOT_WORKING status:
-------------------------------------------------------------

F1 Grand Prix Star II [Brian Troha]
	roms redumped

Sonic Boom [Charles MacDonald, Nicola Salmoria]

Mighty Warriors [Pierpaolo Prazzoli]
	some sprite problems

Twins [David Haywood]
	missing eeprom

Greyhound Selection [Pierpaolo Prazzoli]

BMC Bowling [Tomasz Slanina]
	missing music, some wrong gfx

Field Combat [Tomasz Slanina]
	bad sprite colours
	
Gallop Racer 3 [smf]
	sound problems
	
Tank 8 [Stefan Jokisch]
	
New Clones supported or promoted from GAME_NOT_WORKING status:
--------------------------------------------------------------

Tetris (Sega) (2 encrypted sets) [Charles MacDonald, Nicola Salmoria]

Wonderboy 3 (2 encrypted sets) [Charles MacDonald, Nicola Salmoria]

Greyhound trivia (alt questions) [Pierpaolo Prazzoli]

Astro Blaster (version 2a) [Mash]

New Non-Working games / clones supported
----------------------------------------

D.D. Crew [Charles MacDonald, Nicola Salmoria]
	some issues with system18 emulation

Dynamite Dux (original) [Charles MacDonald, Nicola Salmoria]
	some issues with system16 emulation
	
BC Story (set 2) [David Haywood]
	more protection issues?
	
Super GX [Mash]
	bad rom
	
Skelagon [Mash]
	bad rom

Virtua Formula
	same issues as VR



0.87u4

General Improvements
--------------------

Fixed bugs introduced in u3 causing Atari / Midway drivers to crash [Olivier Galibert]

Changed where source filename based config files are stored to avoid conflicts with
set name configs [Ren Single]

Changes the static function implementations in memory.h to inline [Brad Oliver]

Improvements to Hyper Neogeo 64 rendering, 3d graphics can now be seen although
emulation is still incomplete and Fatal Fury WA still needs a hack to boot
	[Andrew Gardner, Rasterizing code provided in part by Andrew Zaferakis]
	
Code to decrypt FD1094 CPU 317-0092 in states 0x00-0xff (0x00 is reset, 0x10 is IRQ)
this is the CPU used by tetris, code is not hooked up yet [Nicola Salmoria]

Changed instr86.c based on comment below:
In the cpu/i86 code emulating the CMPSW instruction there is what seems to
be a cut+paste bug: It calls the SUBB() macro where it should call SUBW().
Line 524 of instr86.c.
	[Juergen Buchmueller]


New Games supported or promoted from GAME_NOT_WORKING status:
-------------------------------------------------------------

Puzzle Club (Yun Sung) [Pierpaolo Prazzoli]
Pop Bingo [David Haywood]

New Clones supported or promoted from GAME_NOT_WORKING status:
--------------------------------------------------------------

Explosive Breaker (parent of bakubrkr) [David Haywood]
Street Fighter 2 EX (USA) [Brian Troha]
Top Racer (bootleg, set 2) [Pierpaolo Prazzoli]

New Non-Working games / clones supported
----------------------------------------

Funny Strip [David Haywood]
	unemulated protection?
	
Ping Pong Masters '93
Twin Brats
Twins
Mighty Warriors
	these four drivers are still being worked on

0.87u3

General Improvements
--------------------

Exidy Games update [Aaron Giles]
	This update is mainly a bunch of cleanup on the classic Exidy drivers. The 
	memory maps are merged now, and I've gone through and removed a bunch of RAM 
	that wasn't actually present on the real boards. I also fixed up the input 
	ports on several of the bootlegs.

Cinematronics Vector driver update [Aaron Giles]
	* completely rewrote the CCPU core to be much simpler and follow MAME 
	semantics
	* rewrote the CCPU disassembler to use the "official" syntax
	* added newly dug-up prototype game QB-3
	* now require the CCPU PROMs for all the games
	* added sound to Barrier, Star Hawk, War of the Worlds, and Boxing Bugs 
	(note that samples don't exist yet, but I'm working with Zonn Moore to get 
	them for everything except Barrier)
	* rewrote sound routines for all the games based on schematics and Zonn's 
	documentation
	* fixed sound in Demon (was seriously wrong)
	* changed sound handling in Solar Quest to play the music by looping a 
	square wave instead of using canned samples
	* added 64-level support for Solar Quest
	* added proper color support for Boxing Bugs and War of the Worlds
	* added star twinkle effects (not really visible without my future update to 
	vector.c)
	* made wotw the black & white hardware which was commonly seen as a Star 
	Castle upgrade
	* added wotwc as the color hardware version (same ROMs)
	* cleaned up and fixed input ports for all the games

Namco IC update [Phil Stroffolino]
	Fixes to the advanced ROZ chip used by System FL, Namco NB2, and some Namco System 2
	games.  Huge improvements to Mach Breakers, and game specific ROZ hacks have been removed.

	Fixes for the ROZ system used in older System2 games; in particular Dragon Blade glitches
	are no more.

	Abstraction for the tilemap system used in many Namco titles.

	Merged memory maps.

	The ROZ fixes unfortunately use a handful of custom code, to work around limitations of
	tilemap.c's roz support.  I'll improve tilemap.c when I get a chance.

Improvements to jalmah.c [Angelo Salese]

Improvements to sound in recalh and intcup94 [David Haywood]

Massive compiler warnings cleanup for gcc 3.4.2 [Olivier Galibert]

Added some hooks to C 68k core in preparation for Sega decryption updates [Olivier Galibert]

Hooked up GNET bios roms so boot screen shows [smf]

Improvement to (se)xfiles driver, now shows some startup screens [Tomasz Slanina]

New Games supported or promoted from GAME_NOT_WORKING status:
-------------------------------------------------------------

QB-3 (prototype) [Aaron Giles]
	some gfx problems
Space Raiders [Frank Palazzolo]
	some gfx problems, things need verifying against board

New Clones supported or promoted from GAME_NOT_WORKING status:
--------------------------------------------------------------

War of the Worlds (color) [Aaron Giles]
Operation Thunderbolt (US, older) [Fabrice Arzeno] 
Killer Instinct (proto v4.7) [Aaron Giles]
Killer Instinct 2 (v1.0) [Aaron Giles]
Farmer Rebelion (clone of ikki) [Pierpaolo Prazzoli]
Atlant Olimpic (bootleg of trackfld) [Pierpaolo Prazzoli]
Ginga NinkyouDen (set 2) [Mash]
'99: The Last War (Kyugo) [Mash]
Tron (set 3) and (set 4) [Mash]

New Non-Working games / clones supported
----------------------------------------

Oriental Legend Super
	unemulated protection
Killer Instinct 2 (v1.4k, upgrade kit) [Aaron Giles]
Beat the Champ [R.Belmont]
	SCSI / CD-ROM emulation problems



0.87u2

i960 updates [R.Belmont]
	- Added spanbit
	- Fixed error noted by ElSemi in spanbit and scanbit
	- Added non-queued interrupts to support games with
	the interrupt table in ROM (this fixes the colors and
	hanging in Sky Target, and Pilot Kids will need it
	too)
	- Added the ability for read/write handlers to declare
	themselves "noburst", for memory regions which don't
	auto-increment the address on i960 bulk transfers
	- General cleanup of the interrupt handling to remove
	duplicated code.  There should be no functional
	difference

model2 updates [R.Belmont]
	- Properly mapped 'unplaced' ROMs for Daytona and
	Desert Tank
	- Added calls to i960 noburst support for the timer
	and interrupt control registers
	- Updated game status with latest knowledge
	- Noted that Last Bronx boots now
	- VF2 reparent: 2.1 is parent, ver. B and original are
	children
	- SHA1s for lastbexp, doa, and pltkids
	- Removed unnecessary code patch from DOA
	- Added Martin Marietta co-credit for Desert Tank
	- Added EPL Productions co-credit for Behind Enemy
	Lines
	- "Sonic Championship" renamed to "Sonic The Fighters"
	- Virtual On is "Cyber Troopers" (two words) on the
	title screen, not "Cybertroopers"
	- Zero Gunner changed from (Jap) to (Japan)
	- Mapped framebuffer RAM (used by Last Bronx)
	- Fixed non-32 bit writes to the interrupt registers
	- Fixed serial hardware mapping
	- Temporary hack to keep HOTD from freezing until I
	properly implement the timers
	- Split the 2O/2A/2B/2C drivers better.  von now
	prints "MODEL 2BCRX" correctly
	- Hack to make Last Bronx run while I track down an
	i960 core bug that's haunting it
	- Patch from ElSemi for Zero Gunner crashing
	- Patched Daytona busywait for the TGPs (not sure how
	it worked without this before)
	- Fixed 68000 ROM load for skytargt
	- Fixed thinko in the interrupt register handling
	(still no help for Last Bronx, but the wrong way was
	definitely hurting it worse)
	- Fixed issue on big-endian machines
	- Added framework so the DSP program uploads are now
	handled correctly
	
C352 Pitch adjustment [R.Belmont, Cap]

Analog Port Fixes [Derrick Renaud]
	downtown - Both analog controls were set to player 1.
	eterm - Crashed, due to inc/dec buttons not being defined for the analog
	ports.
	
Now loading sync prom in Atari Soccer [Stefan Jokisch]

Added eeprom and flipscreen to the games in vamphalf driver [Pierpaolo Prazzoli]

Improved sound in Hard Head / Popper [Pierpaolo Prazzoli, Corrado Tomaselli]

Misc updates [Nathan Woods]
	src/mame.c:
	    - Created a MAME_VALIDITYCHECKS macro that when defined, can specify 
	whether validity checks should be run.  If undefined, it defaults to 
	running the validity checks.  This will facilitate turning off validity 
	checks in MAME derivative projects.
	
	Please DO NOT turn these off if you are making changes to the Mame
	source, any changes which fail the validity checks will be rejected.

	src/windows/fronthlp.c:
	    - Changed the stat() call to use Win32 equivalents.
	    
Fixed some Compiler Warnings [Lawrence Gold]

Improvements to SPI sprite decryption in rf2_2k [Ville Linde]

New Games supported or promoted from GAME_NOT_WORKING status:
-------------------------------------------------------------

Fix Eight (bootleg) [Tomasz Slanina]
	turn on invunerability dipswitch to see an intro!
Title Fight [David Haywood]
Raiders [Mash]

New Clones supported or promoted from GAME_NOT_WORKING status:
--------------------------------------------------------------

Sega Space Attack (set 3) [Mash]
Pengo (set 4) [Mash]
Eagle (set 3) [chaneman]
Crazy climber 2 (Japan Harder) [chaneman]
Nibbler (Olympia) [Costa Sgantzos]

New Non-Working games / clones supported
----------------------------------------

Mazer Blazer (set 2) [chaneman]
Zero Team (set 2)
Dark Edge (World)
Farmer Rebelion (clone of ikki) [Pierpaolo Prazzoli]
	maybe a rom is bad?
Dynamite Deka 2 (clone of Dynamite cop) [Chris Hardy]


0.87u1

General Improvements
--------------------

Minor Compiler fixes [Brad Oliver]

Removed options.color_depth (obsolete anyway) [Brad Oliver]

Compiler Fixes for VC [Bryan McPhail]
	src\drivers\suprgolf.c		- C99 fix
	src\cpu\m37710\m37710op.h	- Fixed warnings under VC
	src\cpu\powerpc\ppc.c		- Fixed warnings under VC
	src\cpu\powerpc\ppc403.c	- Fixed warnings under VC

Added default eeprom to Recalhorn to prevent crash [Bryan McPhail]

Fixed Mametesters bug sotsugyo069u3gre [Bryan McPhail].
	sotsugyo: On the result screen (the one that appears when finishing a stage
	i.e after the first two trials), zeroes don't appear at all.

Modified tilemap.c so roz and RGB_DIRECT can be used together [Andrew Gardner]

Fixed I/O addresses in Hyperstone and so removed the hack from vamphalf
driver [Pierpaolo Prazzoli]

Yumefuda update (eeprom etc.) [Gondos, Pierpaolo Prazzoli]

fixed some gfx in tmmjprd [Pierpaolo Prazzoli]

i960 updates [R.Belmont]
	- Added support for the following opcodes: nor, addc,
	subc, atanr, sinr, cosr, tanr, atanrl, logrl, sinrl,
	cosrl, and tanrl.
	- Added those and some others to the disassembler.
	- Added parens for the compiler warning.
	- Fixed stt to only store 3 words instead of 4.
	- Added logepr and cvtri.
	- Fixed cmpr and cmprl - they were comparing garbage
	instead of the correct registers.
	- Added disassembly for movrl.
	- Added scanbit.
	- Rewrote flushreg, it was *totally* wrong before. 
	HOTD now runs, among others.
	- Added hack to divo so divide by zero doesn't crash
	MAME (some games read back 0 from the not-yet-existing
	DSP and do this).
	- More disassembler improvements.
	- Added NAND, EDIV, SCALER, SCALERL, ROUNDR, ROUNDRL,
	EXPRL, MOVRE, and CPYSRE opcodes.
	- Fixed some errors in interrupt handling.  Solves
	corrupt graphics in fvipers and crashes in fvipers,
	schamp, and dynamcop.
	- Added REMR opcode.

SegaIC24 update [R.Belmont]
	Add 32-bit access methods for char and tile RAM.

Grand Champion sound fix [Justin Szczap]

INP changes [Barry Rodewald]
	Basically, reading/writing analog port data every single time
	interpolate_analog_port() isn't a good idea, especially since it's called
	every time readinputport() is.  I've just moved the analogue port
	reading/writing into the for loop, so analogue ports are only read/written
	if the port is actually is analogue. 

Dynagears dip fix [Derrick Renaud]

ZN1/ZN2 big endian fix [smf]

SPI decryption improvements (for rf2_2k) [Ville Linde]



New Clones supported or promoted from GAME_NOT_WORKING status:
--------------------------------------------------------------

Painted Lady (Splash) (Ver 1.3 US) [Manuel Abadia]

New Non-Working games / clones supported
----------------------------------------

Tatsumi Driver [Bryan McPhail]
	playable to a degree, but not really working properly

	Apache 3
	Round Up 5
	Cycle Warriors

	Incredibly complex hardware!  These are all different boards, but share
	a similar sprite chip (TZB215 on Apache 3, TZB315 on others).  Other
	graphics (road, sky, bg/fg layers) all differ between games.

	Todo:
		Sprite rotation
		Finish road layer (Round Up 5)
		Implement road layer (Apache 3, Cycle Warriors)
		BG layer(s) (Cycle Warriors)
		BG layer (Round Up 5) - May be driven by missing VRAM data
		Round Up 5 always boots with a coin inserted
		Round Up 5 doesn't survive a reset
		Dip switches
		Various other things..

Sega Model 2 Driver [R.Belmont]
	(see model2.c for list of games)
	Tilemaps, sound, and inputs working to varying degrees
	in various games.  Most of the games at least start
	up, although some don't and some crash.
