MDEC is now an internal device of the PlayStation CPU [smf]
PlayStation DMA uses delegates so devices can be hooked up.
device_t::siblingdevice() uses device list on mconfig() so it can work before the machine is constructed.
moved unused console code back to mess.
Note that msm8251 would be nice to have on emu section but it depends of serial.c which needs to be rewritten in order to be useful. Also upd765 is used only by MESS and it's pain to keep it in emu since it is not yet bug free.
Converted PlayStation DMA to an internal device to the CPU core. DMA to external devices can be set in the machine config, the old calls are still there until the rest of the code is converted. [smf]
The following MAME core changes have been required to allow internal devices to be configurable by the main machine config & to work with internal memory maps.
device.machine_config_additions() are now processed as soon as the device is added, so sub devices can be configured straight away.
replacing or removing a device removes any devices owned by the device being removed, as now they are added straight away.
device_t::subdevice() uses the machine config device list instead of the machine to find the device as the machine is not created until after all the devices have been created.
devices in an internal address map are assumed to be owned by the CPU, while devices in a standard address maps are assumed to be siblings of the CPU.
A code review and regression test would be a good idea.
mpu4.c: Documented MOD 4 OKI program card ROM banking and improved the BwB characteriser emulation. [James Wallace]
New games added as GAME_NOT_WORKING:
------------------------------------
MPU3 Unit Test (Program 5)
Hyper Viper
loader rewrite, which is still in progress....)
Replaced mamedriv.c with a new driver list mechanism that is generated
by the build tools. The emulator core now expects the presence of a
file called src/$(TARGET)/$(SUBTARGET).lst which is just a raw list of
driver names, one per line. C and C++ comments are still permitted.
This file is parsed by a new build tool makelist which extracts the
driver names, sorts them, and generates a file called drivlist.c, which
is consumed by the core. [Aaron Giles]
Added new osdcore function osd_malloc_array() which is identical to
osd_malloc() but obviously hints that the underlying allocation is for
an array. Updated all callers to use the appropriate form. Modified the
Windows allocator to only use guard pages for array-style allocations,
allowing us to enable them once again in debug builds. [Aaron Giles]
Created new static class driver_list to wrap accesses to the list of
available drivers. Improved speed of driver lookups by relying on the
presorting done by makelist. [Aaron Giles]
Created helper class driver_enumerator as a helper for iterating through
the list of drivers. This class supports basic filtering and iteration,
and also serves as a temporary cache of machine_configs. [Aaron Giles]
Created cli_frontend object to wrap all the CLI handling code in
clifront.c. Updated/simplified all the code to take advantage of the
driver_enumerator. [Aaron Giles]
Created media_auditor object to wrap all the auditing functions in
audit.c. Updated all users to the new interface. Note that the new
auditing mechanism is slightly out of sync with the romload code in
terms of finding ROMs owned by devices, so it may mis-report some
issues until the new ROM loading code is in. [Aaron Giles]
Added concept of a per-device searchpath. For most devices, their
searchpath is just the short name of the device. For driver_devices, the
searchpath is driver[;parent[;bios]]. This searchpath will eventually be
used by the rom loader to find ROMs. For now it is used by the media
auditor only. [Aaron Giles]
Created info_xml_creator object to wrap all the info generation functions
in info.c. Converted the file to C++ and cleaned up the input processing
code. [Aaron Giles]
(not for whatsnew ... Known issues: auditing of CHDs appears busted, and
debug builds report unfreed memory if you use the built-in game picker)
-------------------------------
Home Run Classic [Mariusz Wojcieszek]
Country Club Classic [Mariusz Wojcieszek]
Trap Shoot Classic [Mariusz Wojcieszek]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Water-Nymph (Ver. 1.4) [Team Europe, Luca Elia]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Major Poker (v2.0) [Roberto Fresca, Tomasz Slanina, Rob Ragon]
conversion efforts: [Atari Ace]
* taito_f3 is disentangled from a number of other drivers by using
an AM_SHARE tag instead of a common variable.
* Several drivers are made into explicit subclasses of other drivers:
8080bw from mw8080bw, missb2 from bublbobl, quasar from cvs, taito_x
from seta.
* arcadecl is separated from rampart by duplicating the bitmap
rendering code.
* jaleco decryption code is moved to jalcrpt.c.
* cischeat is separated from megasys1 by duplicating some video code.
* mcr3 is partly separated from mcr.
* machine/midwunit.c is split into wunit and xunit files with some
code duplication.
* midtunit gfx_rom variables are made distinct from midyunit
variables, making midyunit independent of midtunit.
* contants in namconb1 are duplicated/renamed in namcofl.
* namcos2 uses of namcos21 are eliminated by introducing
namcos2_kickstart.
* toypop is separated from mappy by duplicating some video code.
- Some sets reparented and renamed as well as a cleanup of source comments:
grindstm (parent), vfive (clone)
kingdmgp (parent), shippumd (clone)
The set formerly known as "sstrikera" is now "sstriker" and is now the parent of mahoudai (clone).
Reverted batrid to batrider and bkraid to bbakraid.
- Put common init code into MACHINE_START, leaving DRIVER_INITs only for games that actually need unique initialization.
- Dead code cleanup: Removed old hacks and some no-longer-used used member variables from the driver class.
- ROM banking cleanup: Added a device address map for the OKI in fixeightbl. Stopped misusing the bank system for memory that isn't actually bankswitched (fixeightbl again) Simplified the Z80 ROM banking (and loading) in the Raizing games.
- Address map cleanup: Unified 8-bit shared RAM handling between the Z80-based and the V25-based games. Replaced lots of pointless READ_HANDLERs with AM_RAM_WRITE. Moved fixeight EEPROM handling into the input ports instead of using READ/WRITE_HANDLERs. Incidentally, this makes toaplan2.c the very first MAME driver to use the AM_READWRITE_PORT macro.
- Removed IPT_VBLANK input ports (no longer used since the video rewrite)
- Removed Truxton 2 player 2 "button 4" (after confirming that the game never reads it) and changed player 1 "button 4" to an IPT_OTHER not bound to any key by default, since it's clearly some kind of test/debug input not meant to be hooked up in a regular cabinet (for one thing, it works whether you're actually playing or in attract mode)
- Added button 3 to Batsugun Special Version. It's a full auto fire button like Cave games have. The service mode input test doesn't show it, presumably because Toaplan didn't bother to update the service mode code from the original version of the game.
- Fixed region jumpers and dipswitches in many sets, based on analysis of the program code and strings in the ROMs.
- Added a #define to optionally make Truxton 2 stereo (commented out by default). See the comments at the top of the driver and in the MACHINE_CONFIG.
- Corrected kbash ROM names, thanks to information from Charles MacDonald. Also fixed inconsistent ROM naming between some of the batrider clones.
- Loaded bbakraid default EEPROM as a ROM rather than hardcoding the contents into the driver.
- Completely removed audio/toaplan2.c, which isn't needed any more now that all the V25s are decrypted and hooked up.
memory map, and complete multiplexed inputs/outputs for
Lucky Roulette type games. Also added NVRAM and inverted
blitter [Roberto Fresca]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Lucky Roulette (6-players, Spanish) [Roberto Fresca, Rob Ragon]
New games marked as GAME_NOT_WORKING
------------------------------------
Winners Circle (81) [Roberto Fresca, Rob Ragon]
Winners Circle (82) [Roberto Fresca, Rob Ragon]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Ruleta RE-800 (earlier) [Roberto Fresca]
Ruleta RE-800 (v1.0) [Roberto Fresca]
Ruleta RE-800 (v3.0) [Roberto Fresca, Grull Osgo]
- Removed unneeded #include lines (gal3.c galaxold.c asic65.c)
- Split part of the driver include into a separate multi-driver
include file (audio/exidy.h audio/exidy440.h audio/wiping.h
machine/segag80.h)
- Moved code to a new file/include to be referenced in multiple
drivers (ms32crpt.[ch] opwolf.c rainbow.c)
- Duplicated some code (palette related) between drivers (mainsnk
rollrace sslam)
- Moved a driver specific routine to a generic device file (atarimo)
- Cleaned up a few include files (cubocd32 cidelsa metalmx seicross
thoop2).
[out of whatsnew]
It sounds ~60% correct, and appears to play the right stuff, but there is still much to do.
I'm not respecting the volume command.
I'm not taking sample rate into account.
I'm not doing anything with stereo yet (though funcube doesn't tickle that functionality).
The ADPCM(2?) decoding clearly isn't perfect (I've made a local copy of the oki_adpcm class to mess around with).
The way i set the clock in the seta2 driver should show I don't know what I'm doing :).
None of the channel flags are being interpreted yet.
I haven't hooked up Luca's sigma98 games yet.
--------------------
Dream Fruit [Yohji, Smitdogg, The Dumping Union]
(being very busy lately, so if somebody wants to do this be my guest, shouldn't be too hard as the basics are inside Taito L driver ...)
No-whatsnew explanation: this takes OPTIMIZE=3 compile time for this core from
over 1 hour down to about 2 minutes on PS3 Linux. (Yes, the tms57002 itself
took over an hour to compile before - the thing has 256 MB of RAM and
a very slow HDD so when it hits swap, swap hits back).
- Rewritten some checks to be runtime instead of compile dependent
- Added winmenu.c and "menu" option in windows build
- winmenu.c provide just dummy implementation, and makes linking with actual menu implementation easier.
* New inputs from the scratch for Music Sort.
* Complete DIP Switches and DIP locations for Music Sort.
* Added a new button-lamps layout for Music Sort.
* Created a default NVRAM that allow Music Sort work properly.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Music Sort (ver 2.02, English) [Roberto Fresca, Team Europe]
- Implemented reel layer
- Fixed rogue tiles in xplan
- Hopper emulation in bishjan
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Express Card / Top Card [Smitdogg, The Dumping Union, Luca Elia]
Magic Train [Grull Osgo, Roberto Fresca, David Haywood, Luca Elia]
X-Train [Smitdogg, The Dumping Union, Luca Elia]
into one file, and separated the speaker device into its own file.
Generalized the concept of dynamically assigned inputs and re-wired the
speaker to work this way, so it is now treated just like any other
sound device. Added methods to the device_sound_interface for controlling
output gain and mapping device inputs/outputs to stream inputs/outputs.
Also made the sound_stream_update() method pure virtual, so all modern
sound devices must use the new mechanism for stream updates.
Primary changes outside of the core are:
stream_update(stream) == stream->update()
stream_create(device,...) == machine->sound().stream_alloc(*device,...)
sound_global_enable(machine,enable) == machine->sound().system_enable(enable)
Beyond this, the patterns are relatively obvious for the remaining calls.
- SoftList is incompelte, I hate working with the XML, if somebody wants to add the remaining titles, be my guest
- SMS games have issues, the CPU isn't being properly reset (or something) when moving between games, so stick to only a single SMS game for now or the z80 will crash.
It used to work, but the code has been out of use for a while.
- syntax is MAME megatech -cart1 mt_beast -cart2 mt_soni2 -cart8 mt_shar2
Notes out of whatsnew.txt
* This uses modern devices, but has not been tested in a driver yet, so I may
have done something wrong. I will fix it when the time comes.
* 60% of the disassembler is complete. I will finish it over the next few days.
* There are many similarities in execution to the dsp32, and the existing 32 code
will come in handy when it's time to write the execution engine.
* This thing is a pleasure compared to the dsp56k.
- Now supports uPD7725 and uPD96050
- Hooked up SNES common code to use uPD96050 for ST-010/011
- Removed ST-010 HLE simulation
Non-whatsnew: ST-010 is also found in some ssv.c games so this will be
hooked up there soon.
* machine/megadriv.c + md_pcb.c (originally from MESS) -> machine/md_cart.c [since they only contained code to handle cart loading]
* first half of drivers/megadriv.c (the code shared by mtech/mplay/c2 with MESS) -> machine/megadriv.c [since these are the 'machine' functions shared by arcade and console systems]
* second half of drivers/megadriv.c (the part recently imported from MESS) -> it remains where it was [since it is 'driver'-specific, even if in this case it is a MESS driver]
* drivers/segamsys.c (SMS part of the code used for mtech/mplay) -> machine/segamsys.c [again, these are 'machine' functions]
among other things, this new setup makes the MESS-specific parts (machine/md_cart.c & drivers/megadriv.c) independent from the MAME files, i.e. if we ever decide to change the tree structure, it will be much easier to move these files in any other location of the tree without affecting MAME (or MESS) compile process
This is a proof-of-concept commit. It works but is far from stable. Synchronization between two mame processes is *somehow* (trying to avoid hacked) in. However, this is not HLE. Shared memory is used to share the serial interface lines.
If the shared memory code is not enable, stub functions are used. If you set the link mode to master or slave, "not linked" will be shown in the game. That's better than the previous hang.
Please, no whatsnew.
Yes, it is intentional that the x86/x64 backends compile everywhere.
Backends are now derived from drcbe_interface and implement several
required overrides.
x86emit.h now uses namespaces so that the x86/x64 emitters can co-exist.
New file uml.h/uml.c actually describes the UML language, separating
out several concepts from drcuml.c.
Lots of other changes/fixes.
- Also fixes bzone regression.
- Contexts have disappeared now. All modules use class level private variables now.
- Reorganized code and added more include files.
- This is still work in progress. It is working though.
- all nodes are now class based
- removed all support for "legacy", i.e. procedural node functions.
- nodes are created using a class factory whose instances
are set up in discrete blocks. There is no separation of
node vs. module any longer.
- Custom modules are now just implemented like "normal" nodes.
- Converted all custom modules.
- Context variables can now be migrated to be private class members.
[Couriersud]
- Implemented dynamic tile sizes
- Generalized video routines to support more layers
- Moved mtrain in from subsino.c
New games added or promoted from NOT_WORKING status
---------------------------------------------------
X-Plan [Bicycle Repair Man, Luca Elia]
---------
X-Plan [Bicycle Repairman]
vram is weird to say the least but run out of time, if somebody (Haze, Arbee, Dox?) wants to look at it be my guest.
* Note: This patch simply adds the ROM to MAME. Much work still needs to be done to
hook it up to gaplus and document the chip itself.
Please note the MCU is currently disabled because the device has a
MCFG_DEVICE_DISABLE() in namco62.c.
- Added GAME_MECHANICAL flag to mark games having mechanical interface (such as pinball,redemption, bowling games ...)
- Imported games from PinMAME as skeletons
New games marked as GAME_NOT_WORKING
------------------------------------
Bank Robbery (Ver. 2.00) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Bank Robbery (Ver. 3.32) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Deuces Wild 2 - American Heritage (Ver. 2.02F) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Maxi Double Poker (Ver. 1.10) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Mega Double Poker (Ver. 1.63 Espagnol) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Mega Double Poker Jackpot (Ver. 1.26) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
Poker 52 (Ver. 1.2) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
The Hermit (Ver. 1.14) [ChrisQC, Smitdogg, Luca Elia, The Dumping Union]
---------------------------------------------------
Dai San Wakusei Meteor - Hau, Chack'n
Comments:
This is the initial check-in of the driver which was posted (plus some driver notes based on some quick tests). If anyone has work they need to add (discrete audio, dip/input improvements), please work with this as a base.
Date: Sun, Nov 7, 2010 at 3:43 PM
Subject: [patch] Split entangled drivers
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This patch takes some driver_device classes that cover multiple
drivers and splits them so that each driver gets their own
driver_device class. In most cases, these drivers got entangled
because of audio/mcu code that was shared between multiple drivers.
The first patch breaks that dependency by making a separate base class
for the common code and having each driver_device derive from that.
That solution isn't really the typical MAME approach, so the second
incremental patch changes them into proper devices.
espial/marineb/zodiak
- common code duplicated
m52/m57/m58/m62/travrusa
- common code in audio/irem.c
junofrst/pooyan/rallyx/rocnrope/timeplt/tutankm
- common code in audio/timeplt.c
hyperspt/sbasketb/trackfld/yiear
- common code in audio/trackfld and audio/hyprolyb.c
40love/bking/buggychl/msisaac
- common code in machine/buggychl.c
module osdepend.c with default empty implementations. Changed
mame_execute() and cli_execute() to accept a reference to an
osd_interface which is provided by the caller.
Updated SDL and Windows OSD to create an osd_interface-derived
class and moved their OSD callbacks to be members.
This needs an unfortunate hack with a dummy driver added to seed references to
the devices that are only otherwise referenced by libemu.a.
Also removed SOUNDS += CUSTOM since such a sound device no longer exists.
* Almost accurate memory map.
* Decoded graphics.
* Decoded the bipolar PROM.
* Detected a CRTC (MC6845 type) reversing the code.
* Guessed the CRTC clock to get proper values.
* Hooked the AY-3-8910.
* Added games notes.
* Added technical notes.
New games marked as GAME_NOT_WORKING
------------------------------------
Symbols (ver 1.4) [Roberto Fresca, Dave Ormiston]
Symbols (ver 2.5) [Roberto Fresca, Dave Ormiston]
Arrow Bingo [Roberto Fresca, Dave Ormiston]
NFL (ver 109) [Roberto Fresca, Dave Ormiston]
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]
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
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
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]
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.
[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
address_space. Also added unaligned variants that can read
unaligned values. Rewrote the core handler as a template that
handles all cases, along with a simple unit test to verify that
everything is correct.
Updated 68k, v60, i86, and nec cores to use unaligned read/
write instead of their own stubs for handling misalinged reads.
Fixed memory management of ga2 decryption.
supporting cleaner implementations of drivers in the explicitly OO world.
Expect a follow-on of several more changes to clean up from this one, which
deliberately tried to avoid touching much driver code.
Converted address_space to a class, and moved most members behind accessor
methods, apart from space->machine and space->cpu. Removed external references
to 8le/8be/16le/16be/32le/32be/64le/64be. All external access is now done via
virtual functions read_byte()/read_word()/etc. Moved differentiation between
the endianness and the bus width internal to memory.c, and also added a new
axis to support small/large address spaces, which allows for faster lookups
on spaces smaller than 18 bits.
Provided methods for most global memory operations within the new address_space
class. These will be bulk converted in a future update, but for now there are
inline wrappers to hide this change from existing callers.
Created new module delegate.h which implements C++ delegates in a form that
works for MAME. Details are in the opening comment. Delegates allow member
functions of certain classes to be used as callbacks, which will hopefully
be the beginning of the end of fetching the driver_data field in most
callbacks. All classes that host delegates must derive from bindable_object.
Today, all devices and driver_data do implicitly via their base class.
Defined delegates for read/write handlers. The new delegates are always
passed an address_space reference, along with offset, data, and mask. Delegates
can refer to methods either in the driver_data class or in a device class.
To specify a callback in an address map, just use AM_READ_MEMBER(class, member).
In fact, all existing AM_ macros that take read/write handlers can now accept
delegates in their place. Delegates that are specified in an address map are
proto-delegates which have no object; they are bound to their object when
the corresponding address_space is created.
Added machine->m_nonspecific_space which can be passed as the required
address_space parameter to the new read/write methods in legacy situations
where the space is not provided. Eventually this can go away but we will
need it for a while yet.
Added methods to the new address_space class to dynamically install delegates
just like you can dynamically install handlers today. Delegates installed this
way must be pre-bound to their object.
Moved beathead's read/write handlers into members of beathead_state as an
example of using the new delegates. This provides examples of both static (via
an address_map) and dynamic (via install_handler calls) mapping using delegates.
Added read/write member functions to okim6295_device as an example of using
delegates to call devices. Updated audio/williams.c as a single example of
calling the device via its member function callbacks. These will be bulk
updated in a future update, and the old global callbacks removed.
Changed the DIRECT_UPDATE_CALLBACKs into delegates as well. Updated all users
to the new function format. Added methods on direct_read_data for configuring the
parameters in a standard way to make the implementation clearer.
Created a simple_list template container class for managing the common
singly-linked lists we use all over in the project.
Many other internal changes in memory.c, mostly involving restructuring the code
into proper classes.
---------- Forwarded message ----------
From: abcd efgh <cix_999@yahoo.it>
- Hide quoted text -
Date: Sat, Aug 14, 2010 at 8:41 PM
Subject: topshoot/genesisb
To: submit@mamedev.org
Hi
I merge topshoot into genesisb driver.
bye sonikos
---------- Forwarded message ----------
From: abcd efgh <cix_999@yahoo.it>
Date: Mon, Aug 9, 2010 at 7:51 PM
Subject: genesisb.c
To: submit@mamedev.org
Hi everybody !
I made just a little work, i moved ssf2md in to aladinb.c driver and
renamed this one genesisb.c for create a new driver for all the
Genesis\Megadrive bootleg.
Bye Sonikos.
--------------------------------------------
The Last Starfighter (prototype) [Phil Bennett, Ken Van Mersbergen]
Air Race (prototype) [Phil Bennett, Ken Van Mersbergen]
--
From: Atari Ace <atari_ace@frontier.com>
Date: Tue, Aug 3, 2010 at 3:03 PM
Subject: [patch] Convert seta/seta2/ssv to driver_data
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This patch removes all global variables from seta.c, seta2.c and
ssv.c. The number of AM_BASE() macros drops by 4% from 3111 to 2989.
Note: ssv.h and seta2.h are new files.
~aa
up the definition, rather than the whole tokenizing system, which lost type
checking. Added a new module addrmap.c which implements the address map
classes, and changed the macros to call methods on the address_map and
address_map_entry classes which are strongly typed.
Fixed a few incorrectly specified memory map entries along the way. Please
double-check to make sure the behavior is expected in: twincobr.c, lordgun.c,
galaxold.c.
This change also means that since the address_maps are now constructor
functions, they are detected when not used, so a number of #ifdef UNUSED_CODE
were added around dangling address map definitions.
Also included with this change:
- removed cputag_clocks_to_attotime() and cputag_attotime_to_clocks() in
favor of just expanding the class
- same for cputag_suspend() and cputag_resume()
* Initial release.
* Preliminary memory map.
* Hooked both PIAs, but need more analysis to confirm the offsets.
* Accurate graphics and color decode.
* Added main PCB and daughterboard layouts.
* Added partial docs and diagrams about the CPU/MCU/ROMs addressing.
* Added debug and technical notes.
New games marked as GAME_NOT_WORKING
------------------------------------
Mega Double Poker (conversion kit) [Roberto Fresca, ChrisQC, Smitdogg]
* Corrected the way the steering wheel is hooked up, fixing the jittery
steering in the sets with MCUs.
* Added a new layout file for the bootleg sets without MCUs (topracern and polepos2bi).
* Converted clock frequencies to crystal values from xtal.c.
* Added correct ROM names for the Namco-manufactured sets (polepos and polepos2).
* Completely removed the unused global variable polepos_gear_bit.
* Fixed a couple of bootleg ROMs that were very likely bit-rotted.
running_machine definition and implementation.
Moved global machine-level operations and accessors into methods on the
running_machine class. For the most part, this doesn't affect drivers
except for a few occasional bits:
mame_get_phase() == machine->phase()
add_reset_callback() == machine->add_notifier(MACHINE_NOTIFY_RESET, ...)
add_exit_callback() == machine->add_notifier(MACHINE_NOTIFY_EXIT, ...)
mame_get_base_datetime() == machine->base_datetime()
mame_get_current_datetime() == machine->current_datetime()
Cleaned up the region_info class, removing most global region accessors
except for memory_region() and memory_region_length(). Again, this doesn't
generally affect drivers.
like them, but it's a start. Split implementation of individual view
types out to separate files. Updated all callers.
Also:
* fixed okim6295 memory view
* changed emualloc to free resource pools from earliest to latest
so that early objects can safely clean up stuff they allocated
- moved image legacy device implementation to devimage.c
- created image.c implementation with initialization of devices/configuration for image devices, used those calls from mame.c
- some minor cleanup of legacy device and initial implementation of some calls
(no whatsnew for now, this is just for log,will put more info on final commit)
- Created legacy image device
- Moved opresolv implementation from MESS
- listmedia is option is available in MAME too
- listxml output now contains image devices
performance as a result of this change. Do not panic; report issues to the
list in the short term and I will look into them. There are probably also
some details I forgot to mention. Please ask questions if anything is not
clear.
NOTE: This is a major internal change to the way devices are handled in
MAME. There is a small impact on drivers, but the bulk of the changes are
to the devices themselves. Full documentation on the new device handling
is in progress at http://mamedev.org/devwiki/index.php/MAME_Device_Basics
Defined two new casting helpers: [Aaron Giles]
downcast<type>(value) should be used for safe and efficient downcasting
from a base class to a derived class. It wraps static_cast<> by adding
an assert that a matching dynamic_cast<> returns the same result in
debug builds.
crosscast<type>(value) should be used for safe casting from one type to
another in multiple inheritance scenarios. It compiles to a
dynamic_cast<> plus an assert on the result. Since it does not optimize
down to static_cast<>, you should prefer downcast<> over crosscast<>
when you can.
Redefined running_device to be a proper C++ class (now called device_t).
Same for device_config (still called device_config). All devices and
device_configs must now be derived from these base classes. This means
each device type now has a pair of its own unique classes that describe
the device. Drivers are encouraged to use the specific device types
instead of the generic running_device or device_t classes. Drivers that
have a state class defined in their header file are encouraged to use
initializers off the constructor to locate devices. [Aaron Giles]
Removed the following fields from the device and device configuration
classes as they never were necessary or provided any use: device class,
device family, source file, version, credits. [Aaron Giles]
Added templatized variant of machine->device() which performs a downcast
as part of the device fetch. Thus machine->device<timer_device>("timer")
will locate a device named "timer", downcast it to a timer_device, and
assert if the downcast fails. [Aaron Giles]
Removed most publically accessible members of running_device/device_t in
favor of inline accessor functions. The only remaining public member is
machine. Thus all references to device->type are now device->type(), etc.
[Aaron Giles]
Created a number of device interface classes which are designed to be mix-
ins for the device classes, providing specific extended functionality and
information. There are standard interface classes for sound, execution,
state, nvram, memory, and disassembly. Devices can opt into 0 or more of
these classes. [Aaron Giles]
Converted the classic CPU device to a standard device that uses the
execution, state, memory, and disassembly interfaces. Used this new class
(cpu_device) to implement the existing CPU device interface. In the future
it will be possible to convert each CPU core to its own device type, but
for now they are still all CPU devices with a cpu_type() that specifies
exactly which kind of CPU. [Aaron Giles]
Created a new header devlegcy.h which wraps the old device interface using
some special template classes. To use these with an existing device,
simply remove from the device header the DEVICE_GET_INFO() declaration and
the #define mapping the ALL_CAPS name to the DEVICE_GET_INFO. In their
place #include "devlegcy.h" and use the DECLARE_LEGACY_DEVICE() macro.
In addition, there is a DECLARE_LEGACY_SOUND_DEVICE() macro for wrapping
existing sound devices into new-style devices, and a
DECLARE_LEGACY_NVRAM_DEVICE() for wrapping NVRAM devices. Also moved the
token and inline_config members to the legacy device class, as these are
not used in modern devices. [Aaron Giles]
Converted the standard base devices (VIDEO_SCREEN, SPEAKER, and TIMER)
from legacy devices to the new C++ style. Also renamed VIDEO_SCREEN to
simply SCREEN. The various global functions that were previously used to
access information or modify the state of these devices are now replaced
by methods on the device classes. Specifically:
video_screen_configure() == screen->configure()
video_screen_set_visarea() == screen->set_visible_area()
video_screen_update_partial() == screen->update_partial()
video_screen_update_now() == screen->update_now()
video_screen_get_vpos() == screen->vpos()
video_screen_get_hpos() == screen->hpos()
video_screen_get_vblank() == screen->vblank()
video_screen_get_hblank() == screen->hblank()
video_screen_get_width() == screen->width()
video_screen_get_height() == screen->height()
video_screen_get_visible_area() == screen->visible_area()
video_screen_get_time_until_pos() == screen->time_until_pos()
video_screen_get_time_until_vblank_start() ==
screen->time_until_vblank_start()
video_screen_get_time_until_vblank_end() ==
screen->time_until_vblank_end()
video_screen_get_time_until_update() == screen->time_until_update()
video_screen_get_scan_period() == screen->scan_period()
video_screen_get_frame_period() == screen->frame_period()
video_screen_get_frame_number() == screen->frame_number()
timer_device_adjust_oneshot() == timer->adjust()
timer_device_adjust_periodic() == timer->adjust()
timer_device_reset() == timer->reset()
timer_device_enable() == timer->enable()
timer_device_enabled() == timer->enabled()
timer_device_get_param() == timer->param()
timer_device_set_param() == timer->set_param()
timer_device_get_ptr() == timer->get_ptr()
timer_device_set_ptr() == timer->set_ptr()
timer_device_timeelapsed() == timer->time_elapsed()
timer_device_timeleft() == timer->time_left()
timer_device_starttime() == timer->start_time()
timer_device_firetime() == timer->fire_time()
Updated all drivers that use the above functions to fetch the specific
device type (timer_device or screen_device) and call the appropriate
method. [Aaron Giles]
Changed machine->primary_screen and the 'screen' parameter to VIDEO_UPDATE
to specifically pass in a screen_device object. [Aaron Giles]
Defined a new custom interface for the Z80 daisy chain. This interface
behaves like the standard interfaces, and can be added to any device that
implements the Z80 daisy chain behavior. Converted all existing Z80 daisy
chain devices to new-style devices that inherit this interface.
[Aaron Giles]
Changed the way CPU state tables are built up. Previously, these were data
structures defined by a CPU core which described all the registers and how
to output them. This functionality is now part of the state interface and
is implemented via the device_state_entry class. Updated all CPU cores
which were using the old data structure to use the new form. The syntax is
currently awkward, but will be cleaner for CPUs that are native new
devices. [Aaron Giles]
Converted the okim6295 and eeprom devices to the new model. These were
necessary because they both require multiple interfaces to operate and it
didn't make sense to create legacy device templates for these single cases.
(okim6295 needs the sound interface and the memory interface, while eeprom
requires both the nvram and memory interfaces). [Aaron Giles]
Changed parameters in a few callback functions from pointers to references
in situations where they are guaranteed to never be NULL. [Aaron Giles]
Removed MDRV_CPU_FLAGS() which was only used for disabling a CPU. Changed
it to MDRV_DEVICE_DISABLE() instead. Updated drivers. [Aaron Giles]
Reorganized the token parsing for machine configurations. The core parsing
code knows how to create/replace/remove devices, but all device token
parsing is now handled in the device_config class, which in turn will make
use of any interface classes or device-specific token handling for custom
token processing. [Aaron Giles]
Moved many validity checks out of validity.c and into the device interface
classes. For example, address space validation is now part of the memory
interface class. [Aaron Giles]
Consolidated address space parameters (bus width, endianness, etc.) into
a single address_space_config class. Updated all code that queried for
address space parameters to use the new mechanism. [Aaron Giles]
* Improved the input system, added missing buttons.
* Figured out the full coinage DIP switches. (Coins A, B, C, Key In)
* Found and documented the output ports.
* Added full lamps support.
* Created a new button-lamps layout.
* Hooked the coin and key in counters.
* Added technical notes.
- added VGA emulation from MESS
- added INS8250 emulation from MESS
- added format decimal support to Microtouch
- added rom banking and inputs to pcat_nit games
- streetg(2) now boot properly
Modified the naomi clipping a bit to avoid so many black lines at the bottom [David Haywood]
new clones
----------
Road Riot's Revenge (prototype, set 3) [Siftware]
Indoor Soccer (set 2) [Siftware]
new not working
---------------
Super Famicom Box BIOS [Angelo Salese]
New Super 3D Golf Simulation - Waialae No Kiseki / Super Mahjong 2 (Super Famicom Box) [Angelo Salese]
snes.c: moved some more elements to driver_data class and added skeleton support for the BS-X satellaview addon (which will be used by MESS, eventually). No whatsnew.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
GeGeGe no Kitarou Youkai Slot [A. Hoekman, ranger_lennier, Smitdogg, The Dumping Union, Luca Elia]
New games marked as GAME_NOT_WORKING
------------------------------------
Win Win Bingo (2 sets) [f205v, Filippo Tarderia]
Zoo [Brian Troha, The Dumping Union]
* Added lamps support to lucky8, lucky8a, lucky8b,
ns8liner, ns8linew and kkojnoli.
* Created lamps layout for the above sets.
* New inputs for ns8linew. This set has a second set of inputs,
and can be switched between them. No lamps activity or Big/Small
buttons are present while this alternative controls are used.
Maybe is a leftover.
* Some DIP switches were figured out. Coinage and limits are still
a real mystery since all DIP switches are reflected in the test mode.
* Remapped inputs to be straightforward with the control panel.
* Added the type (W-4/F-5) to the sets description.
* General inputs clean-up.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus)
[Roberto Fresca, incog, Smitdogg, The Dumping Union]
* Fixed inverted functions and buggy inputs.
* Added lamps support.
* Created button-lamps layout.
* Remapped inputs to reflect the controls layout. This way is more
user-friendly since controls are straight with button-lamps.
* Added coin/keyin/keyout/payout counters.
* Removed the pulse limitation in the BET input. This allow it to work
as BET and STOP2 properly.
* Added technical notes.
* Created complete inputs from the scratch.
* Added coin/keyin/keyout counters.
* Added main game and double-up rates DIP switches.
* Added minimum bet DIP switches.
* Added maximum bet DIP switches.
* Added complete coinage and remote credits DIP switches.
* Added jokers and demo sounds DIP switches.
* Figured out and documented all the game outputs.
* Created proper button-lamps layout.
Now the game is in full-working state.
Hooked up default NVRAM for Golly Ghost / Bubble Trouble [David Haywood]
clones
---
Moon Base (set 2) [jmurjr, D. Maeby, Charles MacDonald, The Dumping Union]
Vapor Trail - Hyper Offence Formation (World revision 3?) [f205v, Tirino73]
Cherry Bonus III (alt, set 2) [Anonymous]
new NOT WORKING games
---------------------
Lucky Boy / Poker 72 [David Haywood]
vmetal: added driver data class and save states [Fabio Priuli]
no save states in metro.c (yet) because some games like 3kokushi have serious glitches when loading a state. any help is welcome...
* Reworked button-lamps layouts per game. Cleaned-up the code.
* Added specific button-lamps layout for bigdeal games.
* Added specific button-lamps layout for royalcrd & jolycdit,
but there is a bug in the d-up select code that lights the
wrong lamp. This is a leftover from jollycrd routines.
* Flagged vegasfte as GAME_NOT_WORKING, since is not receiving
any coins or remote credits anymore.
with CRT controller, AY8910 and OKI M6295. Main program, graphics
and sound samples are encrypted. [Roberto Fresca, Grull Osgo]
- Hooked both 6502 CPU's.
- Hooked the M6845 CRT.
- Decrypted main program and bulk GFX.
- Decoded GFX and color PROM.
- Hooked both PIA's 6821.
- Worked inputs from the scratch.
- Hooked DIP Switches banks 2 & 4.
- Hooked proper interrupts for audio CPU.
- Hooked the AY8910 latches...
- Hooked the OKI6295.
- Hooked DIP switches ports $C400 & $CC00.
- Found the sound samples decryption algorithm.
- Added NVRAM support.
- Added a complete PCB layout.
- Added game notes.
- Added technical notes.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Five Clown (english) [Roberto Fresca, Grull Osgo]
Five Clown (spanish hack) [Roberto Fresca, Grull Osgo]
As previously discussed, this will be used for the MC680x0 FPU in
order to handle high-precision floats portably. The license is
included in README.txt and is MAME compatible.
Converted backfire.c, boogwing.c, dietgo.c, mirage.c, pktgaldx.c, simpl156.c, supbtime.c, tumblep.c to use the device-fied video chips [Fabio Priuli]
Added driver data struct and save states to the following drivers: dietgo.c, mirage.c, pktgaldx.c, supbtime.c and tumblep.c [Fabio Priuli]
side note: the device-fied code (currently included in video/decodev.c) still needs various refinements, but I will clean it up after all the drivers have been converted.
Added driver_data struct to the following drivers: mgolf.c, minivadr.c, mosaic.c and mrdo.c
Enabled save states to mugsmash.c (everything was already saved)