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)
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
---------- 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
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
Unfortunately, if you load a save state too early the game starts with no sound. For the moment, no SUPPORT_SAVE flag, but the game goes in my list of drivers which needs a second look. Feel free to step up and fix saves, if you like
hng64: Added alt layout for the roz, fixes Roads Edge graphics before the title screen [David Haywood]
-----Messaggio originale-----
Da: David Haywood [mailto:neohaze@nildram.co.uk]
Inviato: martedì 24 novembre 2009 16.04
A: Angelo Salese
Oggetto: Hyper 64 alt layout
here..
apply over previous
alt layout for the roz.
From David Haywood (thru IM channels):
...and added 8x8 and 16x16 tilemaps for each mode.
corrects one scene in Xrally intro, and also transition layer in fatfurwa (see squares when you press start on title screen)
(doesn't fix road edge alt tilemap mode yet)
note: includes/hng64.h added, 3d disabled in driving games.
------------------------------------
Dragon Chronicles (DC001 Ver. A) [Guru]
Netchuu Pro Yakyuu 2002 (NPY1 Ver. A) [Guru]
Soul Calibur II (SC23 Ver. A) [Guru]
Soul Calibur II (SC21 Ver. A) [Guru]
Tekken 4 (TEF3 Ver. C) [Guru]
Tekken 4 (TEF2 Ver. A) [Guru]
Tekken 4 (TEF1 Ver. A) [Guru]
Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A) [Guru]
Capcom Fighting Jam (JAM1 Ver. A) [Guru]
Quiz and Veriety Suku Suku Inufuku 2 (IN2 Ver. A) [Guru]
Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A) [Guru]
Soul Calibur III (SC31001-NA-A) [Guru]
Kinnikuman Muscle Grand Prix (KN1 Ver. A) [Guru]
Taiko No Tatsujin 9 (TK91001-NA-A) [Guru]
Tekken 5.1 (TE51 Ver. B) [Guru]
This covers the BIOSes and memory card keys. DVDs will be added later. Please credit only Guru for these games.
Added save states to 2mindril.c, ashnojoe.c, bigfghtr.c, bublbobl.c, cchance.c, champbwl.c, missb2.c
Removed use of memory_set_bankptr where possible (in the drivers above and in angelkds.c)
i.e. some Taito love :)
as usual, drivers with only save state added also have almost complete driver_data struct, but the missing items do not affect saves (generic palette/sprite ram is automatically saved)
Out of whatsnew: I also added driver_data struct to these drivers (and to bombjack.c & blktiger.c as well) BUT, as in bionicc.c, some memory pointers (spriteram, paletteram or nvram) are commented out due to use of generic handlers
Out of whatsnew: this driver also has 99% of driver data stored in the struct.
it still misses paletteram16, which currently uses a generic handler(and hence does not fit the struct approach), but I wanted save states so much for this game that I commit it anyway :-)
Side-notes (not worth mention):
* I fear we were missing a local static array in 1942 save states (now it is saved)
* I haven't found a better way to configure 1943 banks than to split the 0x4000 bank into 4 pieces. can anyone come up with a better approach?
-----Messaggio originale-----
Da: David Haywood [mailto:neohaze@nildram.co.uk]
Inviato: mercoledì 11 novembre 2009 13.38
Cc: Angelo Salese
Oggetto: Re: Slam Dunk 2
Improved video offsets for these games (they're not perfect, I think in reality they depend on layers enabled etc. but they're much improved)
apply after previous.
David Haywood wrote:
> with this I think you can mark it as working
>
> - added a workaround for it not enabling the display (tied to the
> type4/rushing heroes hack we already have)
> - fixed rom loading for other sets (also swapped the data roms on
> vsnet around so that the load positions match up with the working
> games)
> - moved most of machine/konamigx.c to video/konamigx.c (mixer code
> etc.) left the protection related code in machine/konamigx.c
>
> note, you'll need to DELETE machine/konamigx.h from svn and ADD
> includes/konamigx.h to it.
>
- Renamed driver to igs011.c and cleaned it up
- Renamed some sets according to chinese title
- Implemented hopper in lhb, lhb2, wlcc
- Decrypted ryukobou
New clones added
----------------
Mahjong Ryukobou (Japan, V030J) [Luca Elia, Guru, Dyq, Bnathan]
New games marked as GAME_NOT_WORKING
------------------------------------
Mahjong Nenrikishu SP [Guru, Dyq, Bnathan]
- Merged in some IGS031 based games (igs_m68.c, tarzan.c)
- Implemented tiles flip x and video disable
- Added hopper simulation to mgcs
- Decrypted mgdh
Almost complete decryption of starzan and tarzana [iq_132]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Mahjong Super Da Man Guan II [Luca Elia, Pierpaolo Prazzoli, Guru, Xing Xing]
Mahjong Man Guan Da Heng [Luca Elia, Guru, The Dumping Union]
New clones added
----------------
Tarzan (V107) (not working) [iq_132]
New games marked as GAME_NOT_WORKING
------------------------------------
Super Tarzan [f205v, Mirko Buffoni, iq_132]
------------------------------------
Miracle Derby - Ascot [Stefan Lindberg, David Haywood]
Date: Thu, 22 Oct 2009 19:03:48 +0100
From: David Haywood <neohaze@nildram.co.uk>
CC: Philip Bennett <p.j.bennett@gmail.com>
Subject: Re: Miracle Derby
Well here is some initial rom loading, gfx decode, palette decode.
I haven't mapped the CPUs yet, but I imagine it will end up using mostly
the home data code in the end (although that seems to have game specific
code for a lot of games anyway, so there are probably some issues with
that driver)
You can check this in for now, and it can be returned to later.
Types are pretty much unified now.
Multiply operations are handled by eminline.h.
Divide operations were just silly in macros.
64/32-bit combination/extraction macros moved to osdcomm.h and renamed.
Also fixed compile errors in recent 68k changes.
- Added working PMMU address translation (not feature complete, but sufficient
to boot several 68030 Macs in MESS)
- Fixed up disassembly of some PMMU instructions
- Added "68020 with 68851" CPU type
Sent: Thursday, October 01, 2009 5:25 AM
To: Aaron Giles
Subject: MD update
I'm trying to get the HazeMD code running again (by request, and so
that
I can look at fixing some of the bugs that have surfaced, including
ones
which affect MAME)
This shuffles a bunch of stuff around in order to help with that
process, I've also killed off some old megaplay code which wasn't
really
needed anymore, and used the newer code instead.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Othello (version 3.0) [Tomasz Slanina, Stefan Lindberg]
This system is based on a custom CPU. Graphics are decoded but only 2 bitplanes hooked.
All the needed devices are in the driver, but commented out till can properly decrypt the program ROMs and identify the CPU.
About the encryption scheme, see the driver notes about my findings.
New games marked as GAME_NOT_WORKING
------------------------------------
Amatic Unknown Slots Game [Roberto Fresca, Team Europe]
Multi Game I (V.Ger 2.4) [Roberto Fresca, Team Europe]
Multi Game III (V.Ger 3.5) [Roberto Fresca, Team Europe]
Fixed a register naming issue in the MIPS core [Harmony]
Numerous SuperFX updates: [Harmony]
- Hooked up RAM and ROM buffering
- Inlined several more functions
- Removed debug spew
- Added the ability to define an external IRQ line callback, and hooked it up to the 65C816
- Fixed flag calculation for HIB opcode
- Hooked SuperFX chip up to the SNES machine driver
* Fixed the coin counters.
* Documented all the output ports.
* Added a scheme with descriptions for every existent port.
* Added full lamps support to naroutp, naroutjp, naroutrh and naroutpn.
* Created lamps layouts for 11 and 12-lamps scheme.
* Rerouted some inputs to mantain the inputs layout.
* Renamed some inputs to match the text with the real cab buttons.
* Removed the imperfect colors flag from the existent sets.
* Added 2 different control panel layouts to the source.
* Updated technical notes.
- added unidasm to the tools build
- split the disassemblers out of libcpu and into new libdasm
- ensured the disassembly entry points for all disassemblers are
in the source file for the disassembler (sometimes new generic
versions were created)
Still needs command line options and file loading, but the
fundamentals are present, and it links.
Colorama is a standalone game driven for 1x VGA board plus a mechanical arm.
Roulette is just the bet station, since the phisical wheel has its own controller. Each roulette has 10/15 stations.
New games marked as GAME_NOT_WORKING
------------------------------------
Colorama (english) [Roberto Fresca, Angelo Salese]
Roulette V75 (spanish) [Roberto Fresca, Angelo Salese]
- Split YM2612/3834 to a separate file to avoid disturbing other OPN chips
- SSG-EG, envelope, LFO, and CSM behavior all improved to better match
tested behavior on real YM2612 chips
I have done Intel 4004 implementation, here is a patch (it also
contain a POC driver for 4004 Nixie tube clock, that runs under MESS).
4004clk is artwork file, and roms file contain needed roms (just rename ZIP).
Regards,
Miodrag
> -----Original Message-----
> From: Micko [mailto:mmicko@gmail.com]
> Sent: Tuesday, August 04, 2009 8:11 AM
> To: Aaron Giles
> Subject: Intel 4004 core
>
> Hi Aaron,
>
> Here is a final version of CPU core for MAME submition.
>
> Regards,
> Miodrag
* Full Inputs.
* DIP Switches.
* Simulated spark-watchdog circuitery.
* Demuxed custom port.
* NVRAM support.
* CPU clock derived from #defined crystal.
* 8000-8007 Output ports.
* Coin related counters.
* Sound components and trigger found at 8000-8003, bit2.
* Full lamps support.
* PCBs layouts & technical notes.
The 4 games are fully playable. Sound seems to be discrete, so the circuitery need to be traced.
Colors are still wrong.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Multi-Poker [Roberto Fresca]
- Added a new implementation of the I8255A device. Rewritten from scratch to properly support handshaking in modes 1 and 2.
- Refactored sg1000a.c to use the new implementation.
Sent: Sunday, July 05, 2009 11:47 PM
To: Aaron Giles
Subject: Bugfix - MT # 3019
http://www.mametesters.org/view.php?id=3019
Looks like I messed up a few of the driving games. Here are the fixed layout files,
along with a small change in \src\mame\drivers\mw8080.c, as lagunar was referencing 280zzzap.
------------------------------------
Johnny Nero Action Hero [R. Belmont, The Dumping Union]
The boot ROM has a lot to say on two different TTY ports (really).
---------------------------------------------------
Tokimeki Mahjong Paradise - Dear My Love [David Haywood, Angelo Salese]
Tokimeki Mahjong Paradise - Doki Doki Hen [David Haywood, Angelo Salese]
changes:
- split tmmjprd / tmpdoki from rabbit.c as it uses the graphic chip in a very different way, and having them together was making it more difficult to make progress on [David Haywood]
- changed them to use custom rendering code instead of tilemaps, as they can address tile data at a sub-tile level, this fixes the girls in the intro [David Haywood]
- added inputs [Angelo Salese]
- added some notes about a hang, and possible reason [David Haywood]
- marked the graphic roms of tmpdoki as BAD as it appears to be using tiles which are not present in the tmmjprd roms for the title screen [David Haywood]
------------------------------------
Hit Poker
=======================================================================
No credit please, it's just a skeleton driver with another unknown CPU
(Haze did the gfxdecoding iirc)
Sent: Sunday, June 07, 2009 9:54 AM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] "Regularize" some interfaces in MAME
Hi mamedev,
This patch adjusts the code in a few places to be more regular in it
object approach. It recognizes five idioms.
1. device_configs should be passed const. dsp56k.h took a non-const
device_config for no particular reason, necessitating casting where
used. A few other places cast to non-const, in most cases
unnecessarily.
2. running_machines should be passed non-const. A few places used
const in different ways on running_machines, instead of the idiomatic
non-const running_machine.
3. Eliminate passing running_machine explicitly where it can be
computed. esrip.c, m37710.c, sfbonus.c had cases where the machine
could easily be eliminated.
4. Pass the object machine/config first. In some cases this makes
the interface object oriented, in some cases it simply makes it more
idiomatic with the rest of MAME.
5. Prefer (screen, bitmap, cliprect) to (machine, bitmap, cliprect).
Fully implementing this would be a large patch, this patch simply does
it for the one core 'device', tms9928a.c.
Namco custom IDs where appropriate.
Added clocks to the Namco 06xx in anticipation of improved
device interconnection.
Added new file devtempl.h which can be used to generate the
DEVICE_GET_INFO function. Updated all the Namco I/O devices
to use this.
Updated galaga driver to use computed video timing.
Updated polepos and bosco drivers to use the new 52xx sound
emulation, wiring up the output through the discrete mixer that
Derrick had already plumbed but left disabled.
This required several MB88xx changes/fixes:
- internal timer support now works; prescaler is guessed based
on Pole Position sample playback frequency
- external counter support works
- a basic mechanism for reading serial input has been added; it
is not sufficient for a full implementation, but good enough
to sample the SI pin at startup
- fixed TSTS/TSTV to clear their respective flags
- fixed CI and CYI to compute imm-reg instead of reg-imm
- added masking of the PA register upon RTI/RTS to prevent bogus
PC values
the information needed to connect to the CPU and other devices
specified in the definition.
Updated drivers to use this new device.
(I notice that the bosco shoot sound no longer changes pitch during
another explosion. Not sure if this was fixed prior or if the
recent device-ification cleaned something up....)
Converted Namco 51xx and 53xx into proper devices. The MB84xx is not
yet emulated, but is now present.
Converted 51xx and 53xx interfaces to use the devcb system for
port I/O callbacks.
Dig Dug is known to be somewhat broken at the moment.
and thief drivers.
Bunch of improvements to the Status system emulation. Correct
video timing, hooked up TMS9927, corrected colors, etc. Still
some work to do.
New games
=========
Status Blackjack
Status Fun Casino
The eepromdev.* files are the device impementation for the serial eeproms
The i2cmemdev.* files are the device impementation for the i2c memory
These aren't currently hooked up
I'm committing this so that the Naomi changes don't accidentally get applied. The idea seems good, but they conflict with the current driver and I'd rather not have them accidentally slipping in and breaking things just yet.
* Added source file konamipt.h to unify Konami inputs where possible (e.g. most 80s-90s games were using basically the same coinage settings and joystick inputs).
* While at it, verified all 0x00 coinage effects in drivers which now use konamipt.h (fixing a few mistakes: hexion, mikie, crimfgtj...).
* Added finalizb service coin. Removed roadf coin4 & asterix coin3 (neither used by the games nor present in service mode).
* Fixed gberetb coin inputs (they were switched).
* Added port_condition to hcrash so that brake appears only when present in the chosen cabinet.
* Cleaned up mystwarr.c & moo.c input handlers.
- derived clocks where possible
- complete memory maps from the schematics
- hooked up proper sound command latching
- reimplemented 6802-based ADPCM samples for the bootlegs
- merged memory maps
- extended NVRAM to the full RAM range (according to schematics)
- created common include file and modified drivers to use it instead of explicit externs
Done:
- AGA palette
- AGA bitplane data fetching
- support for up to 8 standard bitplanes
- HAM8 mode
To do (for devs):
- inputs (buttons/coins are connected as CD32 pad, current implementation (copied from WinUAE) doesn't work, help is welcome)
- sprites (current implementation is incomplete - see CD32 logo)
- incorrect hstart/hstop values in CD32 logo, lsrquiz & lsrquiz2
------------------------------------
Street Games II [Guru, Angelo Salese]
==========================================================
Basic driver, will add the other romsets soonish.
------------------------------------
California Chase [Angelo Salese]
==========================================================
Basic skelly, will improve it soonish.
* Fixes Royal Casino colors;
* Added flip screen support to the driver;
* Changed Casino Winner to be a clone of Royal Casino;
* Cleaned-up the driver;
OK, here we go so far. Layouts for all the games that have a simple one-input shifter. Except
Turbo, because I'll need to update the whole file, which will take a little more work.
And below is the rest of the games that have shifters, but use a separate input for each gear,
so something different will need to be done.
There are also six games that use a simple shifter, but the button isn't set to toggle. So to
play the game, you hold the button for low gear, then let go for high gear. Not sure if you
wanted to change these or not, so I just included the layout file for now.
Games to update for PORT_TOGGLE
buggychl - src/mame/drivers/buggychl.c
chasehq - src/mame/drivers/taito_z.c
contcirc - src/mame/drivers/taito_z.c
sci - src/mame/drivers/taito_z.c
roundup5 - src/mame/drivers/tatsumi.c
superchs - src/mame/drivers/superchs.c
------------------------------------
King Derby? [Stefan Lindberg, Andrew Gardner, Angelo Salese, Roberto Fresca]
======================================
aka the original "Cow Race", made by Tazmi in 1981 -> http://mamedev.emulab.it/kale/fast/files/0000(183371730).png
HW is pretty much hellish...
Some of these sets might not be available, they're based off operator manuals, so should be accurate. The sets which are not available will be disabled once it's been firmly established exactly which ones they are I'm not 100% sure.
No credit wanted / anonymous submission
Please note: regression testing is in progress, but the first round
of glaring regressions have already been taken care of. That said,
there is likely to be a host of regressions as a result of this
change.
Also note: There are still a few rough edges in the interfaces. I
will try to clean them up systematically once the basic system is
working.
All sound chips are now proper devices.
Merged the sound chip interface into the device interface,
removing any differences (such as the whole ALIASing concept).
Modified every sound chip in the following ways:
* updated to match the device interface
* reduced read/write handlers down to the minimal number
* added the use of get_safe_token() for ensuring correctness
* other minor cleanup
Removed the custom sound device. The additional work to just make
custom sound cases into full devices is minimal, so I just converted
them all over to be actual devices.
Vastly simplified the sound interfaces, removing the ghastly
sndti_* business and moving everyone over to using tags for
sound identity. sndintrf, like cpuintrf, is now just a header
file with no implementation.
Modified each and every driver that references a sound chip:
* all memory maps explicitly reference the targeted device via
AM_DEVREAD/AM_DEVWRITE/AM_DEVREADWRITE
* 16-bit and 32-bit accesses to 8-bit chips no longer use
trampoline functions but instead use the 8-bit AM_DEVREAD/WRITE
macros
* all references to sound chips are now done via tags
* note that these changes are brute force, not optimal; in many
cases drivers should grab pointers to devices in MACHINE_START
and stash them away
New games added or promoted from NOT_WORKING status
---------------------------------------------------
TomCat (prototype) [Mariusz Wojcieszek]
There are still some small issues (complete list in driver), if somebody with more experience with Atari and/or vector hardware wants to take a look, feel free.
Merging back in the PinMAME drivers is proposed every now and again, and since we've just added other non-video based things I figured that now might be a good time to look at it.
This is likely to be a HUGE undertaking as PinMAME is based on old code, and is Macro-hell, I see it as a several step plan.
1) Convert all the PinMAME drivers to compile their ROM Loading with current versions of MAME
2) Clean up the ROM loading, removing the excessive Macros which really don't help readability at all IMO
3) Hook up the Machine Drivers again for each system, so that the CPU core runs again
4) Look at ways in which the artwork system can be used to simulate the display parts etc. (there is a scary amount of code in PinMAME for handling this stuff)
5) See how feasible it is to allow MAME to communicate with another program, as it's unlikely we'll be able to simulate the full table physics in MAME.
I've updated the System11 rom loading to compile for now. The old PinMAME code which hasn't been updated is there #if 0'd out for reference for when a stab is made at hooking back up the actual CPUs to run etc.
Part of me wonders if just rewriting it from scratch would be easier, but it would be a shame to throw away the information that was figured out in PinMAME.
This was done by request, so I'm not especially bothered if it doesn't get included, PinMAME is rather hideous ;-)
If anybody wants to help they're more than welcome. The other Williams systems should be easy to hook up the rom loading for because they share most of the Macros that have already been updated to compile.
---------------------------------------------------
Monopoly [Phil Bennett]
Monopoly Classic [Phil Bennett]
Monopoly Deluxe [Phil Bennett]
6850acia: Only adjust the rx/tx bit timers on a control write if the divide ratios have changed.
- Merged GTI Poker (gtipoker.c) with this driver.
- Added new memory map and machine driver for gtipoker.
- Hooked 2x PPI 8255 to gtipoker.
- Hooked the video RAM access ports to gtipoker.
- Changed norautpn description from Noraut Poker (No Payout),
to Noraut Poker (bootleg), since the game has payout system.
- Some clean-ups.
read/write functions and various other types of functions. Introduced new
structures and macros to make this possible.
To take advantage of this, a device must change its interface to replace and
read/write callbacks with the new devcb_read/write structures. During device
start time, the device then uses this new devcb module to resolve the information
in the devcb_read/write structures into a more efficient form. When the device
needs to call one of the callbacks, it uses the inline devcb_call_read/write
functions.
Once a device has defined its callbacks as devcb_read/write structures, users
of the device must use the DEVCB_* macros to specify the type and information
about the handler to use:
DEVCB_NULL = no handler
DEVCB_HANDLER = a standard device read/write handler
DEVCB_MEMORY_HANDLER = a memory address space read/write handler
DEVCB_DEVICE_HANDLER = a device read/write handler for a different device
DEVCB_INPUT_PORT = an input port
Converted the 8255PPI device to use this new structure, and updated all users
to use the DEVCB macros, removing some unnecessary trampoline functions along
the way.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Big 10 [Angelo Salese,Roberto Fresca,Tomasz Slanina]
Sent: Thursday, January 15, 2009 12:16 PM
To: submit@mamedev.org
Subject: stepstag.c
-added custom 3-screen layout;
-added recently dumpped game "Stepping 3 Surperior"(incomplete ROM/CHD set);
The game name of "stepstag" romset is actually "Stepping Stage Special", not the original "Stepping Stage".
/current/s/sothello.zip
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Super Othello [Tomasz Slanina]
- Renamed csk driver to igspoker. This includes Champion Poker, Champion Skill,
New Champion Skill
- Converted drivers to tilemap system and unified video section
- Unified memory maps and checked all input ports
- Removed obsolete palette handlers and made use of generic handlers
- Added layout for lamps handling
- Added hopper simulation
- Added New Champion Skill (different set, maybe original international release)
and renamed current igs_ncs to igs_ncs2 (2000 version for italian market)
- Promoted igs_ncs2 to working state, but set GAME_IMPERFECT_GRAPHICS (missing
initial notice screen)
- Moved Jackie to a separate driver (it's a slot machine game)
- Made some progress on Jackie which now boots (toggle mode to play, but work
still needs to be done)
* Merged Sengoku Mahjong & Good e Jong video HWs
* Added correct scrolling functions for Sengoku Mahjong
* Removed some positioning kludges in both drivers
Fixed Sengoku Mahjong hopper error after first winning match [Angelo Salese]
Removed deprecat dependancy from Good e Jong,one irq wasn't needed at all (points to a reti) [Angelo Salese]
* Graphics decoded, video improved, inputs mapped.
Intel i860 CPU core added. [Jason Eckhardt]
(The CPU core doesn't have accurate cycle counts for each opcode yet, but it'll have them soon. I believe that is the main culprit behind the sync of the two i860s and the 68k being outta' whack. You can still see the i860s do their thing and rasterize a voxel? groundplane and some simple polygon bad guys).
- Added built-in dirty tile tracking to the gfx_element. This removes
the need for all drivers that had dynamically populated graphics
to do their own dirty tracking. Tiles are marked dirty via the
new function gfx_element_mark_dirty(). Any driver that needs access
to the decoded data must call gfx_element_get_data() in order to
ensure that the referenced tile is clean before proceeding.
- In order to support dirty tracking, the gfx_element was enhanced to
keep track of the original source pointer, so that it can go back
and regenerate tiles on demand. For systems that set NULL for the
region in the gfxdecode, they must use gfx_element_set_source()
to specify a pointer to the raw data before drawing anything.
- Changed allocgfx() to gfx_element_alloc(), and added parameters to
specify the source data pointer, base color index, and total colors.
Many drivers had to whack these values in after the fact, so this
allowed for some minor additional cleanup.
- Added a dirtyseq member to the gfx_element struct. This is
incremented on each tile dirty, and can be used to sniff if
something has changed.
- Added logic in the tilemap engine to track which gfx_elements are
used for a given tilemap, and automatically detect changes to the
tiles so that drivers no longer have to explicitly invalidate the
tilemap when tiles change. In the future, this may grow smarter to
only invalidate the affected tiles, but for now it invalidates the
entire tilemap.
- Updated a number of drivers to remove their own dirty handling and
leverage the new internal dirty marking.
- Because the source data must always be present, updated the atarigen
zwackery and mystwarr graphics handing code to support this.
- Thanks to the dirty tracking, this actually allows all gfx decoding
to happen on the fly instead of all at once up front. Since there
was some concern that this would cause undesirable behavior due to
decoding lots of tiles on the fly, it is controlled with a compile-
time constant in mame.h (PREDECODE_GFX). Set this to 1 to get the
old behavior back.
- Moved decodechar() and decodegfx() to deprecat.h. All drivers in MAME
have been updated to simply mark tiles dirty and let the rendering
system decode them as needed, so these functions may go away in the
future.
- Rewrote entirely the rendering code in drawgfx. This code previously
used extensive recursive #includes and tricks to build, and was
very difficult to understand. The new code is based off of a set of
macros defined in drawgfxm.h. These new macros separate the core
rendering logic from the per-pixel operation, allowing the operation
to be easily "plugged" into any of the renderers. These macros are
also available to any driver that wants custom rendering behavior
that is similar to existing core behavior, without needing to
populate the core with esoteric one-off rendering behaviors.
- Added a set of new functions for [p]drawgfx[zoom], one for each
transparency type. The old [p]drawgfx[zoom] functions are still
present, but now switch off the transparency type and call through
to one of these new transparency-specific functions. The old
functions are also now reduced to only supporting TRANSPARENCY_NONE,
TRANSPARENCY_PEN, and TRANSPARENCY_PENS. All other rendering types
must use the new functions.
- All new rendering functions have extensive asserts to catch improper
clipping rectangles and other common errors.
- All new rendering functions automatically downgrade to optimized
versions where appropriate. For example, calling drawgfx_transpen
with an out-of-range pen automatically falls back to drawgfx_opaque.
And drawgfxzoom_* with xscale=yscale=1.0 automatically falls back
to drawgfx_*. And many other examples. In general, this relieves
drivers from needing to make these sorts of decisions.
- All new rendering functions have a consistent parameter order that
is a bit different from the existing functions. The cliprect
parameter is now specified immediately after the destination bitmap,
to match the convention used throughout the rest of the system.
The core parameters are followed by the scale parameters (for the
zoom functions), and then followed by the priority parameters (for
the pdrawgfx* functions), finally followed by any PIXEL_OP*-specific
parameters (such as transparent pen, alpha, drawing tables, etc.)
- Removed drawgfx_alpha_cache, alpha_set_level(), and the inline
functions alpha_blend16() and alpha_blend32(). To render graphics
with alpha, use the new [p]drawgfx[zoom]_alpha functions, which
take an explicit alpha value. To render tilemaps with alpha, the
TILEMAP_DRAW_ALPHA option now takes an explicit alpha parameter.
And to do you own alpha blending, use the alpha_blend_r16() and
alpha_blend_r32() functions, which take an explicit alpha.
- Updated a number of drivers as a result of removing the implicit
alpha in the drawgfx_alpha_cache.
- Removed drawgfx_pen_table and TRANSPARENCY_PEN_TABLE. To achieve
the same effect, build your own table and pass it to
[p]drawgfx[zoom]_transtable, along with a pointer to the
machine->shadow_table to use for shadows. Eventually
machine->shadow_table is likely to go away, and drivers will need
to fetch the shadow table from the palette directly.
- Updated a number of drivers to remove use of drawgfx_pen_table.
- Removed TRANSPARENCY_ALPHARANGE; it was only used by the psikyosh
driver, so it is now moved locally into that driver and built
using the macros in drawgfxm.h.
- Removed TRANSPARENCY_PEN_RAW; to achieve the same effect, call the
new [p]drawgfx[zoom]_transpen_raw() functions. Updated drivers to
make this change.
- Removed the unused mdrawgfx* functions entirely.
- Added new function gfx_element_set_source_clip() to specify a
source clipping rectangle for any element. This replaces the nasty
hacks that were being used in bnstars, ms32, namcos86, and namcos1
to achieve similar behaviors.
- Simplified the copyrozbitmap() functions to match the copybitmap()
functions in having separate opaque and transparent versions. Also
removed the 'priority' parameter which was only used by one driver,
and moved that logic into a custom renderer built using macros in
drawgfxm.h. Updated copyrozbitmap* to use the destbitmap, cliprect
parameter ordering convention as well.
- Simplified the draw_scanline*() functions to always render opaque.
Only one driver was doing otherwise, and it now does its work
internally (draw_scanline is dead-simple ever since we moved
rotation to the OSD code; I almost just removed it entirely).
Other changes:
- Added a cliprect to the bitmap_t type, which describes the full
bitmap.
- Removed tilemap_set_pen_data_offset; unfortunately, this adds a
random tile offset behind the scenes and goes against the dirty
tile detection and invalidation. Updated the mainsnk, snk, and
snk68 drivers to use old fashioned tile banking. (Sorry Nicola.)
- Changed zac2650 gfxdecode to use scale factors.
- Added function video_assert_out_of_range_pixels() to help find
the source of invalid pixels (generally out-of-range palette
entries due to invalid data or sloppy calculations). Place this
after each step in your rendering in a debug build to discover
which code is generating improper pixels.
* At the moment only the ADPCM part is implemented, while it's missing the BEEP
generator and the 2nd channel handling, used mainly for echoing or continuous
speech.
Added OKIM6376 sound emulation to High Video games [Mirko Buffoni]
* Removed GAME_NO_SOUND from newmcard, brasil and fashion
* Sound frequency may be incorrect
* Although the manual says OKIM6376 is straight ADPCM, generated sound is
distorted (over-clamped?)
* Merged tetriunk.c and filetto.c,and renamed tetriunk set to tetriskr;
* Fixed inputs & gameplay quirks in tetriskr,so it's now playable;
* Added preliminary external graphics emulation hook-up for the backgrounds in tetriskr;
* Rearranged & cleaned up the palette initialization,now 0x000-0x1ff offsets are for the char modes and 0x200-0x2ff are for the bitmap modes;
* Fixed color attributes bits;
* Cleaned up and fixed colors in CGA bitmap mode for Filetto;
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Tetris (bootleg of Mirrorsoft PC-XT Tetris version) [Angelo Salese]
The driver is quite complete, but need some work to get proper colors and reels support.
New games marked as GAME_NOT_WORKING
------------------------------------
Slot Carnival [David Haywood, Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Magic Card [Roberto Fresca,David Haywood,Angelo Salese]
=============
This thing is pretty Amiga-ish...How much similar is this one to the Amiga HW?
Added new sets, created new machine drivers, fixed colors, added PPI devices, created new 8255 and ay8910 interfaces, worked out inputs and DIP switches from the scratch, fixed memory maps, merged the cherrym2.c driver with goldstar.c and much more...
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Cherry Master (Corsica, ver.8.01) [Roberto Fresca]
Cherry Master (ver.4) [Roberto Fresca, David Haywood]
Cherry Master I (ver.1.01) [Roberto Fresca, David Haywood]
(this works thanks to recent changes from Nathan; in fact, any input can
affect the state of an artwork element). Removed debug build hack to popmessage
the shifter state.
* all code now lives in mcs48.c
* rewrote disassembler as unified MCS-48/UPI-41 disassembler
* changed UPI-41 interfaces to match MCS-48
* added new master read/write interfaces for external access
* unified interface to 8243 expander chip
* converted tnzs and decocass to the new interfaces
DECO Cassette fixes/cleanups:
* converted tape handling to a device
* changed tape handling to use a timer callback
* updated to work with new UPI-41 core
* corrected clock speeds for all chips (esp. the 8041)
* fixed very wrong CRC implementation (how did it ever work?)
* corrected sound IRQ rate
* corrected video timing
Burger Time hardware fixes:
* corrected sound IRQ rate and handling
* removed lnc audio reset hack
* full audio memory maps based on schematics
* corrected video timing
Sent: Monday, December 22, 2008 8:04 AM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] Update sound core header files
Hi mamedev,
This patch updates all the sound core header files to declare their
SND_GET_INFO functions, which will be needed once the sound cores
become proper devices. It also makes a handful of other header
declaration fixes in emu/sound, and makes one SND_RESET routine
static. Note: votrax.h is a new include file altogether.
~aa
New games marked as GAME_NOT_WORKING
------------------------------------
Night Bunny / Royal Night [David Haywood,Angelo Salese]
Night Gal [David Haywood,Angelo Salese]
Night Gal Summer [David Haywood,Angelo Salese]
Sexy Gal / Sweet Gal [David Haywood,Angelo Salese]
describes the interface, but does not contain any implementation.
All remaining bits of implementation have been migrated either to
cpuexec.c or to debugcpu.c. Specifically, cpu_dasm() is now
debug_cpu_disassemble(), and cpu_set_dasm_override() is now
debug_cpu_set_dasm_override(). Also moved memory_address_physical()
to debug_cpu_translate(), since it was only ever used for
debugging.
Changed all CPU and sound cores to use memory_find_address_space()
instead of cpu_get_address_space(). The former is reliable even
during early initialization when the CPU cores generally need it.
Removed the dummy CPU core and cpuintrf.c.
Changed the core execution loop to directly call the execute
function instead of using the inline helper (which has been removed).
necessary to remove 12 of the final 14 references to the global
Machine. The remaining 2 are in fatalerror() and logerror(), which
are both local to mame.c, so Machine is now fully static.
--
From: Atari Ace [mailto:atari_ace@verizon.net]
Sent: Thursday, December 18, 2008 5:47 PM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] Make Machine static followup
Hi mamedev,
This incremental patch to my last patch undoes the change that caches
the ppu2c0x videorom. I changed the code back to how it behaved
originally, using an existing machine on the chip struct to eliminate
the one troublesome Machine reference.
~aa
--
From: Atari Ace [mailto:atari_ace@verizon.net]
Sent: Thursday, December 18, 2008 2:54 PM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] Make Machine static!
Hi mamedev,
This large patch completes the removal of the use of Machine
throughout MAME. It does so primarily by adding machine, device or
space to various apis and modifying the callers, but for some
remaining cases it adds a new api, mame_get_running_machine(), which
will be called instead. There are only 14 uses of this api currently,
and that number should drop over time.
There are a few changes of note:
1. 6821pia.c. I attached machine to the 'device' structure. I'm
working on converting this to a proper device, but that change isn't
ready.
2. fddebug.c. I added a proper header so that the apis won't get
accidentally converted to static again.
3. scsi.c. I added a machine to SCSIInstance.
4. system16.c. I modified sys16_patch_code to take an array of
patches.
4. custom.h. I added the owning sound device to the reset/stop
routines as well as the token. Note that passing only the device
would require exposing the internals of custom_sound, as the token
passed is not the device token, but the token returned from the
CUSTOM_START routine. Better ideas here are welcome.
4. ppc2c0x.c. To avoid changing more interfaces, the init routine
saves the videorom location rather than looks it up each time.
I tried to choose what I felt was the natural parameter for an api,
rather than always pass machine, but in some cases I used machine to
limit the number of additional changes. Some additional cleanup here
is probably warranted, I'll look into that later once I'm recovered
from this two-week project.
~aa
interfaces when handling strings. Namely, the generic
get_info functions allocate a temporary string and the
device in question copies its string to the target,
instead of assigning a const char *. Updated all device
and sound cores to operate this way.
Added the concept of a cpu_state_table, which is
supplied by the CPU cores and which describes all the
register state accessible to the debugger and other
subsystems. The format of the table is such that most
data can be simply fetched from memory without the
further involvement of the CPU core, including the
display of common formats. Extensibility points are
available for custom display and for importing/exporting
the data to intermediate variables for more complicated
scenarios. Updated the ADSP21xx, TMS340x0, and i86 cores
to use this.
Removed the old debugger register list, which was never
used. Replaced it with using ordering from the
cpu_state_table.
Renamed REG_PC -> REG_GENPC, REG_SP -> REG_GENSP, and
REG_PREVIOUSPC -> REG_GENPCBASE. Updated a few spots
that were using these directly. Moved these definitions
into the end of the register area rather than leaving
them outside which put them in a weird range.
i86/i286/i386/nec/v30mz:
* renamed i86.h -> i86priv.h
* renamed i86intrf.h -> i86.h
* consolidated i88intrf.h, i186intf.h, i188intf.h, etc into i86.h
m6805:
* moved memory read/write macros out of public header
m37710:
* moved memory read/write macros out of public header
spc700:
* moved many structs/functions/macros out of public header
tms32010:
* moved memory read/write macros out of public header
sm8500:
* pointer-ified the core (apparently never had get/set context!)
g65816:
* moved memory read/write macros out of public header
pic16c5x:
* moved memory read/write macros out of public header
t11:
* moved memory read/write macros out of public header
-----Messaggio originale-----
Da: David Haywood [mailto:neohaze@nildram.co.uk]
Inviato: domenica 14 dicembre 2008 23.56
A: Angelo Salese
Oggetto: Gridiron update
Changed it from using a hack using the gfx rom to display the 'play
number' to using the LEDs in the artwork system.
This adds the "Queen" game into a driver (a.k.a. the 2002 PC-era game)
(roms are already on the ftp,I believe)
-----Messaggio originale-----
Da: David Haywood [mailto:neohaze@nildram.co.uk]
Inviato: venerdi 12 dicembre 2008 0.05
A: Angelo Salese
Oggetto: Queen Skeleton..
Didn't think the queen was dead yet, but here is her skeleton ...
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Jangou [David Haywood,Angelo Salese,Phil Bennett]
Added hardware and tech notes.
New games marked as GAME_NOT_WORKING
------------------------------------
Four Roses (encrypted, 2 sets)[Roberto Fresca]
- Completed normal Inputs/Outputs.
- Added button-lamps calculation.
- Created button-lamps layout.
- Documented the PCB RAM.
- Fixed NVRAM size based on PCB picture (2x CY62256L-70PC near the battery).
- Added notes about the method to make appear the real poker cards.
- Fixed the OKI 6295 frequency (1000 kHz resonator near). Now the game has more decent sounds.
- Corrected CPU clock to 12 MHz. (main Xtal).
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Millenium Nuovo 4000 [David Haywood,Angelo Salese]
New games marked as GAME_NOT_WORKING
------------------------------------
Il Pagliaccio [David Haywood,Angelo Salese]
- Changed the driver name to goldnpkr.c (Golden Poker is the most representative hardware).
- Splitted the PIA interfases to cover witchcrd/pottenpkr connections.
- Fixed the witchcrd/pottnpkr/sloco93 double up mode.
- Replaced the pottenpkr layout with goldnpkr one in all Jack Potten's Poker sets.
- Updated game notes for Witch Card and Super Loco 93 sets.
- Fixed al inputs & lamps to allow double up mode to the above games.
- Added Witch Card (Video Klein) but still not working.
- Added several Buena Suerte! sets.
- Added new games: Maverik, Brasil 89 & Poker'91.
- Reworked the sets parent-clone relationship (still in progress).
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Maverik [Roberto Fresca]
Brasil 89 [Roberto Fresca]
Poker'91 [Roberto Fresca]
New clones added
----------------
Buena Suerte (21 new sets) [Roberto Fresca]
Royalea [Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Witch Card (Video Klein) [Roberto Fresca, Guru]
I won't be writing this driver, it fits somewhere between System21 and System22, with multiple PCBs etc. I just created this to document what we know so far. Chances are Phil or somebody with good Namco knowledge will have to emulate it.
Sent: Sunday, November 23, 2008 12:17 AM
To: submit@mamedev.org
Subject: Oki MSM6258 ADPCM core
Hi,
I have attached the Oki MSM6258 ADPCM sound core, which is intended for
use with the MESS Sharp X68000 driver. This code was written by Phil
Bennett, so he ought to be the one getting the credit for it. I have
mostly worked on the MESS X68000 driver and HD63450 (DMA controller)
code to get the ADPCM working for most X68000 software. I am unaware as
to if Phil has already submitted this or not yet.
I've tested compiling and running MAME itself (including a debug build)
with the MSM6258 core in it, and experienced no issues. Although there
is nothing in MAME to test it specifically with, it doesn't cause any
problems with MAME use in general.
The current MESS X68000 driver code with the MSM6258 enabled is
available for those that want to test that out -
http://mahlemiut.marpirc.net/msm6258-211108.zip
Thanks,
Barry Rodewald
mailto:bsr@xnet.co.nz
This more accurately describes the aux board behavior for Ms. Pac-Man. There
is a thorough description of how the board works. mspacman is a more faithful
emulation. In particular you can now enter service mode (F2) at anytime during
game play.