03589: mystston, myststono: VSYNC does not match original PCB [Corrado Tomaselli]
03588: mystston, myststono: Music is faster than original PCB [Corrado Tomaselli]
- simplified RSP's misaligned memory accesses
- removed now-unnecessary shifts from direct memory accesses in
mips3/powerpc drcs
- optimized AND with 0xff/0xffff/0xffffffff cases for x86/x64
- added rudimentary memory/register tracking in x86 backend to
remove redundant loads
-numprocessors <auto|value>
Specify the number of processors to use for work queues. Specifying
"auto" will use the value reported by the system or environment
variable OSDPROCESSORS. To avoid abuse, this value is internally limited
to 4 times the number of processors reported by the system.
The default is "auto".
- Split SATURATE_ACCUM into a signed and unsigned version to reduce stack usage.
- Corrected an issue with the 0h variants of VMRG, VAND, VNAND, VOR, VNOR, VXOR and VNXOR.
- Slightly optimized unaligned reads and writes
- Optimized unaligned dword reads
- Corrected an issue where badly-written RSP programs could jump to invalid addresses
Comments: I've noticed enough similarities in this game to Arkanoid to consider merging this into arkanoid.c, or establishing a drkorea.c file containing Hexa and Tetris (D.R. Korea) version which is already in arkanoid.c. Any thoughts?
(This unfortunately didn't solve the flicker problem, but there
are other theories as to why that happens. They will be tested
soon.)
(But first I'm going to try to get the 3d rendering in games other
than fatfurwa and buriki)
* fixed 053936 init which was giving problems to f1gp2 (in debug build only, apparently)
* removed banptr preventing proper save states in rockrage.c: now save works fine
* added driver data struct and saves states to f1gp.c, fastlane.c, flkatck.c, hcastle.c, labyrunr.c and suprslam.c
New Clone Added
-------------------------------------------
Hyper Street Fighter 2: The Anniversary Edition (USA 040202) [Artemio Urbina, David Haywood]
* fixed 056832 device start order to avoid wrong settings for layer 0. updated asterix.c and moo.c to use the device implementation now that it's working correctly.
* added driver data struct to 88games.c, combatsc.c and rockrage.c
* added driver data struct and save states to battlnts.c, bladestl.c, crshrace.c and contra.c
* renamed combasc to combatsc now that clones can have longer names
- added warning messages for auto_malloc, timer, and save state
allocations done after init time. These should be fixed when
detected, as I would eventually like to disallow them entirely.
- changed state registration functions to pass through the caller's
file and line number to facilitate fixing the above warnings
- converted Taito F3 sound to a separate machine driver which is
imported into games that use it
- converted the balsente driver to driver_data structure
- converted harddriv timers into devices
- fixed crash in cps2 games due to not configuring the qsound bank
- cleaned up initialization in taito_l to allocate at init time
instead of reset time
* moved k056800 sound device to emu/sound and removed the old code (mame/machine/konamiic.c )
* updated gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c to use this implementation
* fixed various small (and not so small) problems in konicdev.c
* as a result Konami 007342, 007420, 052109, 052160 and 051316 devices are now working and 88games.c, battlnts.c, bladestl.c and rockrage.c have been updated to use them
In particular, device-fied Konami 007121, 051733 and 053251 work fine and combatsc.c, contra.c, crshrace.c, f1gp.c, fastlane.c, flkatck.c, hcastle.c, labyrunr.c and suprslam.c have been converted to use the new code.
Side notes:
* chips which have their own tilemap in MAME (e.g. 056832 and 052109) are not working yet, and other chips cannot be fully tested because they're used together with these... it's still wip
* some cleanup is in order (especially for interfaces), once I get the remaining chips to working state
* converting the drivers above, I noticed that f1gp2 was only using half of the k053936 regs: this is now fixed and, even if I don't know of any visible improvements, now there are definitely less unmapped writes logged by the debugger ;)
arbitrary scaling factors. Previously, specifying a size implied
a scaling factor equal to the size (i.e., specifying DWORD meant
the index was scaled by 4). This is still the default. However,
now you can specify the scale explicitly for other cases. For
example, you can specify DWORD_x1 to fetch a DWORD but don't
scale the index at all, or BYTE_x8 to fetch a BYTE while scaling
the index by 8. Updated all backends to make this work.
Added driver data struct and save states to: cbasebal.c, chinsan.c, mitchell.c and quasar.c
Not to be mentioned: I also removed use of memory_set_bankptr from CPS1 sound banking and renamed a couple of rallyx.c constants to be less generic
Out of whatsnew: Unfortunately, I was unable to make both malzak and p2000t (in MESS) to work without a small kludge, clearly documented in the source. I plan to further investigating the problem once I manage to merge the other 505x variants (later)
* added driver data struct to neogeo.c and added GAME_SUPPORTS_SAVE flag to all sets, because save state support was already there
* added driver data struct and save state support to cps1.c, cps2.c and fcrash.c
* added saves to 6522via.c. this fixes problems of gameplan.c and trvquest.c games with -autosave
* added driver data struct and save states to toratora.c and sf.c
* enable GAME_SUPPORTS_SAVE flag to dday.c because some of the core changes have fixed the sound problem at loading
* added a couple of comments about header inclusions
@Aaron: now I think there is only a single occurrence of input_port_by_index in the whole source (in src/emu/sound/disc_inp.c), in case you want to remove the whole handler
Also, added driver data struct and save states to laserbas.c, laserbat.c, lastfght.c, lazercmd.c and lemmings.c
Finally, added driver data struct to lasso.c
* Fixed EIP displacement when executing FPU instructions with no 80387 present
* Added 32-bit implementations of SLDT and STR
---------- Forwarded message ----------
From: Barry Rodewald <bsr@xnet.co.nz>
Date: Wed, Dec 9, 2009 at 2:02 AM
Subject: More i386 fixes
To: submit@mamedev.org
Hi,
Here's two more small fixes for the i386 core.
First, is FPU instructions used on 80386. On a system without a
80387, FPU instructions should have no effect. Part of the FM Towns
TBIOS (runs as an MS-DOS device driver, providing extra system
functions) initialises the FPU, and tries to detect it. Upon hitting
the FSTCW instruction, though, it doesn't increase EIP enough when an
extra displacement byte is needed. So, I've added a call to GetEA to
the escape() function (called when there is no FPU) which will fetch
the extra byte if necessary.
Second, is a 32-bit implementation of the SLDT and STR instructions.
Basically, I copied it from the 16-bit versions, and modified it to
use 32-bit registers.
Thanks,
Barry Rodewald
mailto:bsr@xnet.co.nz
Identified Semicom's Dream World hardware as a copy of Psikyo's 68020 hardware (it was already known that their older platforms were copied from Snow Bros, and Tumble Pop) [David Haywood]
new clones
-----------
Fighting Fantasy (bootleg with 68705) [f205v] (not working)
Phantom (Spectar bootleg) [Team Europe & rades]
Panzar (Spectar bootleg) [f205v]
Fatsy Gambler (Video Hustler bootleg) [f205v]
Fitter (bootleg) [f205v]
Vs. Super Mario Bros. (bootleg with Z80) (2 sets) [f205v, Dante Profeta] (not working)
new NOT WORKING
------------------------
Video Stars [Andrew Welburn]
part. Some shared systems still exist with globals, but this
tackles the atarigen module and the variables local to each
driver.
Also added validity check that AM_BASE_MEMBER and AM_SIZE_MEMBER
items point within the bounds of the driver_data structure.
Added driver data struct to jackal.c
out of the whatsnew, a couple of remarks:
- rallyx and nrallyx might require a separate driver data struct to deal with namco_soundregs, but I'll take care of this eventually (if really needed)
- jackal does not properly save the work ram banks atm, hence no SUPPORTS_SAVE flag, but I keep looking for a clean solution to the problem
Added driver data struct to pipedrm.c and added devices to gameplan.c driver data struct (to remove a few cputag calls)
Also, removed a couple of memory_set_bankptr that I had forgotten (buggychl.c & homedata.c)
marked non-exported functions as static and removed cases of #include "deprecat.h" [Atari Ace]
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Sat, Dec 5, 2009 at 7:18 AM
Subject: [patch] Header cleanups
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This patch improves the quality of the mame driver headers, by adding
missing prototypes and source comments, removing dead prototypes, and
marking some non-exported functions as static within the drivers. It
also eliminates about a dozen cases of #include "deprecat.h".
~aa
(Update of r7501)
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Sun, Dec 6, 2009 at 5:51 PM
Subject: [patch] srcclean bugfix
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
My srcclean changes to track C-style quotes didn't handle all the
special cases correctly (for instance, '\"' and "\\\""). This fixes
it, and adds some /* ... */ to m68k_in.c so that src2html.exe does a
better job on it.
~aa
memory_install_ram() to assign a un-named bank to a region and specify
a pointer to where the RAM lives. If this is called in the DRIVER_INIT
function or MACHINE/SOUND/VIDEO_START functions, then it is permissible
to specify NULL, in which case the memory system will allocate memory
and register it for save states.
memory_install_rom() is like the above except that it only installs a
read handler.
memory_install_writeonly() is like the above except that it only installs
a write handler.
Updated several instances in the code that were assigning banks to these
sorts of static RAM regions and simplified the code.
Also fixed several regressions reported by Tafoid.
The AM_SHARE() macro now takes a tag parameter. All existing
shares have been bulk renamed to "share##". However, the name
does not matter, so please use descriptive tags going forward.
Also added tag validation for bank and share tags.
Added flag to tagmap_add functions that optionally will
replace existing objects if a duplicate is found.
* Added new technical notes.
* Added Kimble Z80 hardware support.
* Added Prologic-Noraut hardware support.
* Added proper discrete sound support to Kimble games,
and Prologic-Noraut Joker Poker.
* Slightly adjusted the visual area.
This can be wrong and must be rechecked.
* Relocated the hardware notes and layouts to ROM_LOAD section,
so can be seen/maintained in a cleaner way.
* Fixed the default lamps state.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Noraut Joker Poker (Prologic HW) [Roberto Fresca, Alan Griffin]
New games marked as GAME_NOT_WORKING
------------------------------------
Kimble Double HI-LO (z80 version) [Roberto Fresca, Alan Griffin]
their place are a series of expanded macros and new memory
installation helpers. Some mappings below (not all are new):
AM_READ(SMH_RAM) -> AM_READONLY
AM_WRITE(SMH_RAM) -> AM_WRITEONLY
AM_READWRITE(SMH_RAM, SMH_RAM) -> AM_RAM
AM_READ(rhandler) AM_WRITE(SMH_RAM) -> AM_RAM_READ(rhandler)
AM_READ(SMH_RAM) AM_WRITE(whandler) -> AM_RAM_WRITE(whandler)
AM_DEVREAD(tag, rhandler) AM_WRITE(SMH_RAM)
-> AM_RAM_DEVREAD(tag, rhandler)
AM_READ(SMH_RAM) AM_DEVWRITE(tag, whandler)
-> AM_RAM_DEVWRITE(tag, whandler)
AM_READ(SMH_ROM) -> AM_ROM
AM_WRITE(SMH_ROM) -> (was a no-op)
AM_READ(SMH_NOP) -> AM_READNOP
AM_WRITE(SMH_NOP) -> AM_WRITENOP
AM_READWRITE(SMH_NOP, SMH_NOP) -> AM_NOP
For dynamic memory handler installation of the various types,
use the new functions:
memory_unmap_read()
memory_unmap_write()
memory_unmap_readwrite() -- unmaps a section of address space
memory_nop_read()
memory_nop_write()
memory_nop_readwrite() -- nops a section of address space
Cleaned up the internals of the address_map_entry structure, and
also normalized the way the address map macros work to remove a
lot of redundancy.
-----------
Invasion (4 bootleg sets) [f205v, ANY]
Head On (Sidam bootleg, set 2) [f205v, ANY]
Head On 2 (Sidam bootleg) [f205v, ANY]
Arkanoid (bootleg on Block hardware, set 2) [f205v, ANY]
* Added the board xtal's for Battlantis, Contra and Pandora's Palace
* Corrected the MCU dump for Pandora's Palace
* Added indication of an undumped PAL for Contra/Gryzor
* Added PAL dumps for Cruis'n USA - rev L4.1
* Added information on the PROM from the 2 Board version of Congo Bongo
--------- Forwarded message ----------
From: Kevin Eshbach <keshbach@comcast.net>
Date: Fri, Nov 27, 2009 at 2:00 AM
Subject: Patch file with assorted updates
To: submit@mamedev.org
Enclosed is a patch file with the following updates.
* Added the board xtal's for Battlantis, Contra and Pandora's Palace (I did
not verify if cpu's/sound chips are using the correct clock speed though.)
* Added indication of an undumped pal for Contra/Gryzor
* Added pal dumps for Cruis'n USA - rev L4.1 (one pal could not be dumped.)
* Corrected the mcu dump for Pandora's Palace
* Added information on the PROM from the 2 Board version of Congo Bongo
All dumps have been previously forwarded to The Dumping Union.
Kevin Eshbach
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Wed, Dec 2, 2009 at 2:14 AM
Subject: [patch] Fix srcclean to handle strings
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
I noticed an odd case in src2html.c where tabs were converted to
spaces unnecessarily. Turns out srcclean does not track quoted
strings, so an embedded comment in a string will be treated the same
as a comment. Attached is a patch to fix this.
~aa
P.S. The *.lay files could use a run through srcclean.
-----Messaggio originale-----
Da: David Haywood [mailto:neohaze@nildram.co.uk]
Inviato: martedì 1 dicembre 2009 22.47
A: Angelo Salese
Oggetto: hng64 additive tilemap blending debug
not very optimal, but some debug-key based support for this.
t/y/u/i enable / disable additive blend mode for the tilemaps.
note, when drawing onto a black background the tilemap will look exactly
the same, because black + colour = colour ;-)
the most obvious use are the effects layers in the samurai games, used
for a light beam effect, and snow / storm effects.
I don't know how the hw enables it.
Changed all memory_bank_* functions to specify a tag.
Bulk-converted existing banks to be tagged "bank##" in
order to ensure consistency. However, going forward, the
tags don't matter, so please name them something useful.
Added AM_BANK_READ/AM_BANK_WRITE macros to let you specify
bank tags. Also changed AM_ROMBANK and AM_RAMBANK macros to
accept tags as well.
Added new functions memory_install_read_bank_handler and
memory_install_write_bank_handler to install banks by tag
name, similar to input ports.
Changed internals of memory system to dynamically allocate
all banks. The first time a bank with an unknown tag is
installed, a new bank object is created and tracked
internally. Removed all SMH_BANK(n) references outside of
the main code; these should never, ever be useful anymore.
Anyone who's ever been confused by the meaning of a given GCC or MSVC error diagnostic will enjoy this (it's color-coded in real life for added "wow"):
src/emu/memory.c:2148:5: error: comparison of distinct pointer types ('genf *' and 'void *')
check_entry_handler(write);
^~~~~~~~~~~~~~~~~~~~~~~~~~
src/emu/memory.c:2052:63: note: instantiated from:
if (entry->handler.generic != NULL && entry->handler.generic != SMH_RAM) \
~~~~~~~~~~~~~~~~~~~~~~ ^
Also, added driver data struct to: alpha68k.c, amspdwy.c, gng.c, gunsmoke.c, hotblock.c
Finally, removed a couple of memory_set_bankptr I hadn't noticed in ddrible.c and gberet.c
-----------------------------------
White Tiger - 3VXFC5342 (New Zealand) [Heihachi_73]
Magic Mask (A - 09/05/2000, Export) [Heihachi_73]
Geisha (A - 05/03/01, New Zealand) [Heihachi_73]
---------- Forwarded message ----------
From: AGEMAME Development <agemame@gmail.com>
Date: Thu, Nov 19, 2009 at 9:07 PM
Subject: Aristocrat MK4 and Mk5 ROMS
To: submit@mamedev.org
Courtesy of Heihachi_73
White Tiger
KG Bird (just a fix)
Magic Mask
Geisha
All ROMs at http://agemame.fruit-emu.com/aristo/ (split sets, so only
the fixed file for KG bird)
>
> The cp1610 CPU is only used by the Intellivision (in MESS). However the
> disassembler produces garbage. Also I noticed a tiny error in the CPU
> itself.
>
> Here are the fixes:
>
> Firstly, the CPU, a one-line change. In cp1610.c, at line 3515, you may
> notice that 2 flags are sharing the same bit. Please change the V flag
> to
> use 0x20 (instead of 0x10). That's all there.
>
> Next, the disassembler. It assumes oprom to be 16 bits when in fact it
> is 8.
> I could not see a way of specifying the size of oprom, so assuming it
> is
> always 8 bits. If that's the case, please replace 1610dasm.c with the
> enclosed one.
>
> Thanks and have a great day :)
>
> - Robbbert
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Sun, Nov 29, 2009 at 3:28 AM
Subject: [patch] Convert cabal/mappy/toypop/zaxxon to use driver_data
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This patch is a resubmit of my earlier patch to have mappy and zaxxon
store their state in driver_data. It extends the patch to toypop
(which uses some mappy code), and also converts cabal which I also did
some time ago. cabal.h and toypop.h are new header files.
~aa
================================================================================
Taito should explain to me why doing a sound command latch writeable by the
Sound CPU itself... >_>
Comments:
Corrected long-standing issue in Tron where the cocktail fire button never worked at all or was always held down. Work still needs to be done with the 10 position dip which isn't properly hooked up yet.
I found that it needs to be slightly different if you want correctly
terminated audio streams:
/* add up the samples */
if (channelsamples > chunksamples)
file->info.audio_numsamples = stream->samples += chunksamples;
else if (channelsamples > 0)
file->info.audio_numsamples = stream->samples += channelsamples;
Otherwise extra silence will be counted at the end of the audio stream.
Not really that big an issue but a bit sloppy...
Added driver data struct to fuukifg2.c and fuukifg3.c (no save states yet due to anonymous timers)
Also, added more devices to dkong driver data (to minimize # of cputag_xxxx calls)
As a side note, now drgnbowl (one of the worst game ever) supports saves! enjoy :-P
Please disreguard the previous "Not Working" submission of the same in the what's new. Thank you!
New Clone Added
--------------------------------
Super Puzzle Fighter II Turbo (Hispanic 960531) [Artemio Urbina, David Haywood]
* drop almost completely the use of generic sizes with struct members
* reduce as much as possible accesses to cputag calls during emulation (they are now mainly concentrated at MACHINE_START & DRIVER_INIT)
unfortunately I had been away for half a day and I have found only now rev 7446 (which could have been used in many of these cases). too late to use the new macro, sorry (almost 3AM here)
Date: Sat, Nov 28, 2009 at 5:49 PM
Subject: [patch] Eliminate spriteram3
To: submit@mamedev.org
Cc: atariace@hotmail.com
Aaron's patch to move the generic pointers into machine conflicts with
a patch I'd worked on some time ago to start eliminating those globals
altogether, so I've become motivated to finally submit it ;-). This
patch eliminates spriteram3, which unlike the other spriteram
variables, is only a convenience for some drivers.
~aa
This one needs a decrypt key.
WARNING: Due to the small size of encrypted code and the requirements of the key finding code, this set may never have a key. Haze tried and ran the key exctractor for 25 hours with "no key found"... Nicola or Andreas will have to work this one over.
New Clone Added
--------------------------------
Super Puzzle Fighter II Turbo (Hispanic 960529) [Artemio Urbina]
---------- Forwarded message ----------
From: Barry Rodewald <bsr@xnet.co.nz>
Date: Sat, Nov 28, 2009 at 6:55 AM
Subject: Another i386 fix
To: submit@mamedev.org
Hi,
Small fix this time. This fixes an issue with the FM Towns version of
MS-DOS where it was feeding nonsense parameters to the CD-ROM
controller. MS-DOS uses REP OUTSB to send the parameters, and I
noticed that the expected data was not what was sent to the I/O port.
Looking at the i386 code, I saw that it always used segment:ESI,
regardless of address size. This fix makes it use segment:SI when
address size is 16-bit (ie: when using OUTSB or OUTSW).
Patch is based on 0.135u1.
Thanks,
Barry Rodewald
mailto:bsr@xnet.co.nz
----------------
Wizard of Wor (with German Language ROM) [Volker Hann]
Gorf (program 1, with German Language ROM) [Volker Hann]
---------- Forwarded message ----------
From: David Haywood <neohaze@nildram.co.uk>
Date: Fri, Nov 27, 2009 at 10:52 AM
Subject: Re: new dumps
To: klaus@hotsummer.at, Philip Bennett <p.j.bennett@gmail.com>
new clones
------------
Wizard of Wor (with German Language ROM) [Volker Hann]
Gorf (program 1, with German Language ROM) [Volker Hann]
------------------------------------
Iron Commando (SNES bootleg) [Volker Hann & Team Europe]
--------- Forwarded message ----------
From: David Haywood <neohaze@nildram.co.uk>
Date: Thu, Nov 26, 2009 at 11:34 PM
Subject: Re: new dumps
To: Klaus Sommer <klaus@hotsummer.at>, Philip Bennett <p.j.bennett@gmail.com>
It dosen't work as a rom-swap (boot vector probably needs to be
different at least, maybe swaps, haven't checked against the snes
version)
New NOT WORKING
-------------------------
Iron Commander (SNES bootleg) [Volker Hann & Team Europe]
* Added specific memory map & machine driver to Kimble Double Hi-Lo.
* Fix the Kimble Double Hi-Lo CPU type.
* Added notes about the code obfuscation and PPI's handling/offsets.
Aaron: Please, in the New games marked as GAME_NOT_WORKING,
change the line: "Kimble Joker Poker [Roberto Fresca, Alan Griffin]"
to: "Kimble Double Hi-Lo [Roberto Fresca, Alan Griffin]"
Added equivalent pointers to machine->generic. Updated all
references.
Now that accessing these is more awkward, it is probably best
to put these pointers in the driver data structures instead
of using the generic pointers. The main reason to continue
using generic pointers is to allow use of paletteram shortcuts
and buffered spriteram handling.
----------------
Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game) [Volker Hann, Team Europe]
From: David Haywood <neohaze@nildram.co.uk>
Date: Wed, Nov 25, 2009 at 1:57 PM
Subject: Cannon Ball bootleg
To: Philip Bennett <p.j.bennett@gmail.com>
this one has the bonus round ripped out to avoid the protection
check.... of course that introduces it's own visual glitches, but
bootleggers will be bootleggers and I guess not crashing was more
important ;-)
new clones
-----------
Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game) [Volker Hann & Team Europe]