* Added 3 new Witch Card sets.
* Added 3 new Falcons Wild sets (from 3 different hardwares).
* Hooked the second CPU (still encrypted) to the Falcon hardware.
* Partially decrypted the second CPU program from Falcon hardware.
* Figured out the Falcons Wild (Video Klein) memory map and machine.
* Defeated the evil Video Klein's Witch Card hardware.
* Reworked inputs for some sets.
* Added lamps layouts/connections to the new sets.
* Figured out the multiplexed data/address from Falcon's boards sound.
* Added full sound support to Falcon hardware.
* Reorganized and partially cleaned-up the driver.
* Added more technical notes.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Witch Card (Falcon, enhanced sound) [Roberto Fresca, Team Europe]
Witch Card (German, set 3, alt gfx) [Roberto Fresca, Team Europe]
Witch Game (Video Klein) [Roberto Fresca, Team Europe]
Falcons Wild - Wild Card 1991 (TVG) [Roberto Fresca, Team Europe]
Falcons Wild - World Wide Poker (Video Klein) [Roberto Fresca, Team Europe]
New games marked as GAME_NOT_WORKING
------------------------------------
Falcons Wild - World Wide Poker (Falcon original) [Roberto Fresca, Darran]
Added a function to SH2 to allow the 32x to tell it when data is available to DMA, prevents excessive polling with high frequency timer in Chaotix, and improves performance in said game.
---------- Forwarded message ----------
From: f205v <f205v.f205v@gmail.com>
Date: Mon, Sep 13, 2010 at 9:35 AM
Subject: naomi.c small update
To: submit@mamedev.org
Dear Aaron,
please find herewith attached a small update to naomi.c driver against 0.139u2.
It contains a description of "Mamonoro" cart.
All the best
----
Ciao
Antonio (f205v)
www.citylan.it
* savagere, kizuna - Reverted C1 change from u2 (chip was bad, C1 was correct)
* gururin - Added correct M1 ROM
* quizdai2 - Tagged as MVS and AES version
* Started to document mask ROM types
* Added a workaround to get the game booting.
* Created inputs from the scratch.
* Promoted to 'working'.
* Added technical and game notes.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Piccolo Poker 100 [Roberto Fresca]
Haze: "I need to review save state support in the core again, a few extra things probably need saving now.
It might be possible to avoid the high frequency timer if it causes too many performance issues by moving the update of the DMA to the EXECUTE loop instead.
(I want to experiment with this before updating the save state support, however if somebody else wants to fix savestates in the meantime they're welcome,
as long as they don't get offended if their code gets changed...)"
-----------------
Hit Me [Siftware]
New set is the parent, as it is clearly newer revision of the code: one more rom, added attract mode and title screen.
Moved generalized EAROM handling to atarigen.
Added new (modern) address map macros for referencing member
functions in base classes: AM_READ_BASE(_class, _member),
AM_WRITE_BASE, AM_READWRITE_BASE, etc.
Added BSD licenses to atarigen and er2055.
Log: Added preliminary support for saving debugger window locations. [Andrew Gardner]
(Notes)
* I only save the values for the SDL debugger for now.
* There is no loading of these values yet, but if this patch is confirmed good,
loading should be relatively straightforward to add.
* There is a slight chance this might not compile on OSes other than linux.
I will be available via e-mail for the next 10 hours and will assist
with any compilation problems if they occur.
* The patch seems like the "right way" to do things, but if I am doing anything
suspect, please feel free to make suggestions and corrections.
legacy Amiga and AGA video systems. [Atari Ace]
From: Atari Ace <atari_ace@frontier.com>
Date: Sun, Sep 19, 2010 at 4:17 PM
Subject: [patch] Implement amiga_state
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
These two patches add an amiga_state class to the amiga drivers. The
first adds missing machine, device params to external functions, makes
akiko a proper device and adjusts video/amiga.c and video/amigaaga.c
to be more similar. The second patch then implements the classes,
also merging ~300 lines of identical code in amigaaga.c. More code
code be merged if desired with a little more effort.
~aa
cleaner way to differentiate between multiple timers rather than
relying on the pointers. These values are also saved with the
timers. Updated the few devices using device timers to leverage
this.
Added new function device_timer_call_after_resynch() which creates
a temporary 0-length timer that calls back through the device's
device_timer() method with a given device_timer_id.
Updated i8257_device to initialize its state and use device
timers.
(Fixes 04032: All sets in dkong.c: [debug] Game does not start.)
broadly used.
Added memory interface to the intelfsh device so you can access/view the
data in the debugger and via the standard memory interfaces. Removed the
old memory() method in favor of new functions read_raw()/write_raw() which
do direct reads/writes of the data.
Cleaned up CPS3 No-CD sets to break up the "ROMs" into individual flash
pieces which are automatically loaded by the intelfsh device on initialization.
Also split the MACHINE_CONFIG to only populate the number of SIMMs actually
present for each game, as documented in the top of the file. And replaced
the NVRAM_HANDLER with an NVRAM device.
Does basic dependency analysis and supports excluding paths.
Makefile now supports a depend target which will run makedep
on the src/$(TARGET) tree and create dependencies. It deliberately
excludes the root of src/emu as well as the osd directories in
order to keep the dependency file down to a reasonable size, so
if a core header file changes, you still need to clean and build
all.
New games marked as GAME_NOT_WORKING
------------------------------------
Swiss Poker ('50 SG-.10', V2.5) [Roberto Fresca, Tomasz Slanina, Team Europe & Housi]
so that read/write line callbacks can be defined as member functions.
Added stubs and new macro DEVCB_DEVICE_LINE_MEMBER to allow these to be
referenced from device callbacks.
Modernized the 6522 VIA device:
* changed to use the new device timer mechanism
* removed all trampolines in favor of modern methods
out of megadriv.c [Sonikos]
---------- Forwarded message ----------
From: abcd efgh <cix_999@yahoo.it>
Date: Thu, Sep 2, 2010 at 8:50 PM
Subject: megadrvb.c - ssgbl
To: submit@mamedev.org
Hi
This is the finished work for megadrvb.c:
Merge ssgbl into megadrvb
Moved inputs game from megadriv.c to megadrvb.c
if you use R2 diff i change also the roms names for a better fit the
drive in ending with "mdb" wich means "mega drive bootleg" so the
result is:
aladbl -> aladmdb
mk3ghw -> mk3mdb
ssf2ghw -> ssf2mdb
ssgbl -> srmdb
The R2 diff is the better way but you choose the best for you.
Bye Sonikos
for namcos2 and a bunch of the Nichibutsu mahjong games. Also
did it for the Atari games, moving the old hard-coded EEPROM
data out into files finally. The harddriv EEPROMs in particular
are pre-calibrated now to hopefully reduce whining.
- implemented y tilemap offset register; (Roberto Zandona')
- implemented x and y visible area register; (Roberto Zandona')
- disabled tilemap draw when mode=0; (Roberto Zandona')
- confirmed visible area register with a twin eagle II PCB (Corrado Tomaselli)
definition of devices that are based off of a parent device, but which
differ in name and a single parameter.
Added a UINT32 param to the device_config constructor to facilitate
the use of the new macros.
have no core use, they are simply there for the convenience of drivers.
Now that drivers are required to have devices, the data should move there.
[Atari Ace]
---------- Forwarded message ----------
From: Atari Ace <atari_ace@frontier.com>
Date: Sun, Sep 5, 2010 at 4:45 PM
Subject: [patch] Eliminate generic.videoramm generic.videoram_size
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This set of patches removes generic.videoram and
generic.videoram_size. These generics have no core use, they are
simply there for the convenience of drivers. Now that drivers are
required to have devices, the data should move there.
The first patch sets the stage for the rest of the patch. It includes
several changes.
1. It replaces all the uses of generic.videoram_size with appropriate
constants.
2. It eliminates the write handlers from pc_video.c. These are
unused in MAME and MESS appears to have a private copy.
3. It splits some drivers:
a. It separates mcr68 from the mcr driver, mostly by dividing
machine/mcr.c.
b. It separates naughtyb from the phoenix driver by introducing an
audio/pleiads.h include.
c. It replaces video/system1.h with includes/system1.h.
4. It fixes some videoram related bugs.
a. balsente, mole didn't need videoram.
b. sbowling has a dangling reference to videoram from an earlier
driver_data conversion
5. It expands some namcona functions to multiple lines so that later
scripted-edits look sensible.
The second patch is generated by vram01_1.pl. It introduces videoram
local variables in function that use videoram read-only and removes
AM_SIZE_GENERIC(videoram).
The third patch is generated by vram01_2.pl. It replaces all
occurances of generic.videoram with state->videoram,
introducing/modifying driver_device classes as needed.
The fourth patch then actually removes the generics, and fixes one
issue the scripts didn't handle.
~aa
Not for whatsnew: This is not complete or well-tested yet, I'm checking in
early mostly so Kale can play with it while I'm at work today. It should at
least function better than current for most images.
for the common case where these are done outside the context of a read
or write handler (it was annoying to pass in the fake address space
for these cases).
Added DEVCB_DEVICE_MEMBER() macros which allow you to specify a
READ8_MEMBER or WRITE8_MEMBER in a device callback (via dynamically
generated trampolines).
Replaced all remaining calls to okim6295_r/okim6295_w with calls to
the new methods, and removed the static functions.
address map case so that updated devices can shed their old-style read/write
handlers in favor of member functions.
Bulk converted all okim6295_r/okim6295_w references in the address maps to
call to the modern member functions.
properly. Hooked the correct TMS9980 CPU, added a preliminary memory
map and some technical notes. [Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Jubilee Double-Up Poker [Roberto Fresca]
debugger do it. This allows the device to start itself up before the
debugger tries to figure out what to do with it. Fixes the problem
where register names were not populated into the symbol table
correctly after I shuffled the initialization order.
work just like required_device<> and optional_device<> for retrieving a
pointer by tag from an address space that specifies AM_SHARE("tag").
Also added templates required_shared_size<> and optional_shared_size<>
for retrieving the size of the AM_SHARE region.
Created a new generic NVRAM device. It can be configured to default to
0-fill, 1-fill, random-fill, or custom fill. In all cases, a same-named
memory region overrides the default fill. The address range where the
NVRAM can be found is now identified by an AM_SHARE() region of the
same tag as the NVRAM device. Drivers can also explicitly configure a
separately-allocated NVRAM region via nvram_device::set_base().
Replaced all instances of MDRV_NVRAM_HANDLER(generic_*) with
MDRV_NVRAM_ADD_*("nvram"). Replaced all AM_BASE_GENERIC/AM_SIZE_GENERIC(nvram)
with AM_SHARE("nvram"). For all remaining drivers that referenced the
generic.nvram directly, changed them to hold a required_shared_ptr<UINTx>
to the NVRAM in their driver state, and use that instead. Removed
nvram and nvram_size from the generic_ptrs.
Comment:
There is still a major issue where this printf shows up when using many of the output commands -listxml, -romident and more. It should only show up when emulating the game, right?
----------
Vigilante (World, set 2) [porchy]
(just a minor random driver clean-up, because I've forgot to write the aforementioned whatsnew string in my previous commit ...)
recently-introduced find_devices() method.
There are two new template classes optional_device<> and required_device<>.
Use these to declare the device pointers in the class. The only difference
between the two is that required will fatalerror if the device is not found.
These new classes are "pass-through" so m_oki can be passed anywhere an
okim6295_device would work, and you can use m_oki->x to reference methods
or variables.
Each of these new classes needs to be specified in the initializer,
passing a reference to the driver_device object and the device tag. So,
for example:
class example_state : public driver_device
{
public:
example_state(running_machine &machine, const driver_device_config_base &config)
: driver_device(machine, config),
m_maincpu(*this, "maincpu"),
m_oki(*this, "oki") { }
required_device<okim6295_device> m_oki;
optional_device<cpu_device> m_maincpu;
};
Given that, the driver_device will auto-populate each device with a
pointer to the device prior to calling any of the initialization methods.
device interface. This means all ROMs are now exposed via devices,
and thus the process of enumerating ROMs gets simpler.
Changed all instances of temporarily allocating machine_config objects
to just put them on the stack for simplicity, letting the destructor
handle the cleanup work automatically.
Changed machine_config constructor to take a game_driver, from which
the machine_config constructor is obtained. This also means the
resulting machine_config holds a reference to the game_driver.
Changed running_machine constructor to no longer take a game_driver,
since the game_driver is now obtainable via the machine_config.
[Atari Ace]
---------- Forwarded message ----------
From: Atari Ace <atari_ace@frontier.com>
Date: Sun, Aug 29, 2010 at 10:35 PM
Subject: [patch] Add missing include files for multi-file drivers
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamdev,
Converting a driver to use driver_data requires that multi-file
drivers have a common include file to host the driver_data class. Thus
this patch, which gets ahead of the curve and adds missing include
files to all multi-file drivers (minus ones covered by my last
driver_data patch). The first patch is include-related cleanup of the
existing drivers. The second patch then adds ~100 files to
mame/includes.
~aa
[Atari Ace]
---------- Forwarded message ----------
From: Atari Ace <atari_ace@frontier.com>
Date: Tue, Aug 31, 2010 at 5:50 AM
Subject: [patch] Despecialize legacy sound devices
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
While poking around in the MAME source code, I came across the odd
type snes_sound_sound_device, which led me to the fact that legacy
sound devices are named a bit differently than other legacy devices,
probably a kludge intended to be changed later but forgotten. Anyhow,
this patch fixes it. The first patch goes part way, changing all but
the tag (which fixes the weird type issue). It also changes type
names in the scsp and msm5232 cores to avoid a name collision if/when
the second patch is applied. The second patch then touches a lot of
files, mostly removing the SOUND_ prefix from type asserts, but it
also needed to change the tags for the LASERDISC, S2636 and SPEAKER
sound cores to avoid collisions with other devices with the same name.
~aa
class with a new driver_device class, which is the base class for all
driver_data objects now. The new driver devices are added as the
first device in the device list, with a tag of "root"; all other
devices are now owned by the driver device.
Moved core callbacks (machine_start/_reset, sound_start/_reset,
video_start/_reset/_eof/_update, and palette_init) into device
configuration parameters on these new devices. The driver_device
base class overrides device_start(), ensures all other devices have
been started, and then calls, in order, the following overridable
methods:
find_devices() - new, used to locate devices prior to DRIVER_INIT
DRIVER_INIT function from the game driver
palette_init() - by default calls the MDRV_PALETTE_INIT function
driver_start() - new
machine_start() - by default calls the MDRV_MACHINE_START function
sound_start() - by default calls the MDRV_SOUND_START function
video_start() - by default calls the MDRV_VIDEO_START function
Similarly, the driver_device class overrides device_reset() and then
calls these methods in order:
driver_reset() - new
machine_reset() - by default calls the MDRV_MACHINE_RESET function
sound_reset() - by default calls the MDRV_SOUND_RESET function
video_reset() - by default calls the MDRV_VIDEO_RESET function
To accommodate these changes, initialization order is slightly
altered from before. The tilemap, video, sound, and debug systems
are now initialized prior to the devices' start. And the user
callbacks for DRIVER_INIT, PALETTE_INIT, MACHINE_START, SOUND_START,
and VIDEO_START are all called back-to-back. The net effect should
be similar, however.
Added methods (optional_device and required_device) to the new
driver_device class to find devices, intended to be used from the
find_devices() callback. See harddriv.h and beathead.h for examples
of usage.
Changed device_t::subtag to only prepend a prefix if the device is
not the 'root' device, in order to keep compatibility with existing
tag searching.
Changed device startup to actively reorder devices when they report
missing dependencies. This ensures that the reset functions get
called in the same order that the start functions did.
Bulk updated drivers as follows:
First removed the old static alloc function from the driver_data_t:
S: [ \t]*static driver_device \*alloc *\( *running_machine *\&machine *\) *\{ *return auto_alloc_clear *\( *\&machine *, *[a-zA-Z0-9_]+_state *\( *machine *\) *\); *\}[\r\n]*
R:
Then switched from driver_data_t to driver_device:
S: driver_data_t
R: driver_device
Then changed the constructors to pass the correct parameters:
S: ([a-zA-Z0-9_]+)_state *\( *running_machine *\&machine *\)([\r\n\t ]+): *driver_device *\( *machine *\)
R: \1_state\(running_machine \&machine, const driver_device_config_base \&config\)\2: driver_device\(machine, config\)
* Cashcade workaround for topgear [Frasher]
* Improved a few memory handlers [Palindrome]
out of whatsnew: the original patch contained more changes so probably someone might want to contact Palindrome & c. about these.
1. the way ticket output was handled has been rejected (MAME should not print out files like they did)
2. they changed a rom in autmoon and another PROM: since I'm not sure if the roms are available and the commit message did not mention them at all, I cannot judge if the change is fine
3. the way they implemented Robot Test is debatable, but I know nothing about the hardware, so someone should review that part
4. if they want to remap Jackpot inputs, they should choose a key not already in use ('I' is taken as well) and possibly use the common IPT_GAMBLE we have
1. Renamed MACHINE_DRIVER_* to MACHINE_CONFIG_* to match the name
of the object it actually describes. The MDRV_* prefix may
eventually be bulk updated at some point, but not now.
2. MACHINE_CONFIG_START() now takes a driver_data_t-derived
class as a required second parameter. This means that
MDRV_DRIVER_DATA() is no longer required, and every "root"
machine config *must* specify a driver data class (or driver_data_t
itself if the driver has not yet been updated to use driver data).
3. New MACHINE_CONFIG_DERIVED() macro defines a machine_config
that is derived from another machine_config. This takes the place
of the very typical MACHINE_DRIVER_START()/MDRV_IMPORT_FROM()
combination.
4. New MACHINE_CONFIG_FRAGMENT() macro defines a partial
machine_config that can only be included in another "root"
machine_config. This is also used for machine_configs that are
specified as part of a device.
5. Changed MDRV_IMPORT_FROM() to MDRV_FRAGMENT_ADD() to more
accurately describe what is happening.
6. Added asserts to the above three macros to ensure they are
properly used.
Updated all machine drivers to use the new macros. Search & replace
lists below cover 99% of the changes, with just a few manual fixups.
S: MACHINE_DRIVER_START\( *([a-zA-Z0-9_]+) *\)[\r\n\t ]*MDRV_DRIVER_DATA\( *([a-zA-Z0-9_]+) *\)
R: MACHINE_CONFIG_START\( \1, \2 \)
S: MACHINE_DRIVER_START\( *([a-zA-Z0-9_]+) *\)[\r\n\t ]*/\* driver data \*/[\r\n\t ]*MDRV_DRIVER_DATA\( *([a-zA-Z0-9_]+) *\)
R: MACHINE_CONFIG_START\( \1, \2 \)
S: MACHINE_DRIVER_START\( *([a-zA-Z0-9_]+) *\)[\r\n\t ]*MDRV_IMPORT_FROM\( *([a-zA-Z0-9_]+) *\)
R: MACHINE_CONFIG_DERIVED\( \1, \2 \)
S: MACHINE_DRIVER_START\( *([a-zA-Z0-9_]+) *\)[\r\n\t ]*/\* basic machine hardware \*/[\r\n\t ]*MDRV_IMPORT_FROM\( *([a-zA-Z0-9_]+) *\)
R: MACHINE_CONFIG_DERIVED\( \1, \2 \)\r\n\r\n\t/\* basic machine hardware \*/
For all files outside of mame/drivers....
S: MACHINE_DRIVER_START
R: MACHINE_CONFIG_FRAGMENT in all non-drivers
For all files within mame/drivers....
S: MACHINE_DRIVER_START\( *([a-zA-Z0-9_]+) *\)
R: MACHINE_CONFIG_START\( \1, driver_data_t \)
S: MDRV_IMPORT_FROM
R: MDRV_FRAGMENT_ADD
S: MACHINE_DRIVER_END
R: MACHINE_CONFIG_END
S: MACHINE_DRIVER_NAME
R: MACHINE_CONFIG_NAME
S: MACHINE_DRIVER_EXTERN
R: MACHINE_CONFIG_EXTERN
Final step: run mame -valid and fix the incorrect macros at the lines
where the asserts show up.
split screen and scrolling effects using a regular mc6845. [Wilbert Pol]
Interface change:
The screen tag is no longer mandatory. If a screen tag is provided then the mc6845 device will resize
the screen and visible area based on the parameters set in the 6845 config and registers. If the screen
tag is not provided then the driver is supposed to be in charge of setting the proper screen configuration.
Warning: This breaks the relationship between the timing of a screen device and the signals generated
by the 6845.
it's related to:
00171: lethalen: mask rom check they all come up bad.
in konicdev.c there's in READ8_DEVICE_HANDLER( k053244_r ):
addr = (k053244->rombank << 19) | ((k053244->regs[11] & 0x7) << 18) | (k053244->regs[8] << 10) | (k053244->regs[9] << 2) | ((offset & 3) ^ 1 );
for the A10 test and A8 test (GFX2 region of lethalen) we need:
........ | ((offset & 3) ^ 3 );
is there any doc about k053244?
Chihiro.c Improvements: [Samuele Zannoli]
- Fixed the mapping of the bios at the top of the cpu addrsss space
- Updated the ram size to 128 megabytes
- Added some SMBus handling, to let the bios run
- Added placeholders for a few devices on the PCI bus
- Added the "jamdis StartAddress,Length" command to the debugger that lets you disassemble the "jam table" instructions used by the bios to do some basic hardware initialization.
This time it works for good ;)