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)
- added support for arbitrary number of containers for render_target
- added command-line parameter -debug_internal (-di) to use the internal debugger when in debug mode
- internal debugger supports all views except memory view
- added "Debug" view to layout/vertical.lay to create more place for debug views in vertical games.
The colors are ugly. Font rendering needs improvement. There are no shortcut keys right now. There is still a lot of room for more improvements.
However, it works and does not depend on any ui toolkit. The interface has been designed to support displaying views programmatically e.g. from the ui.
Currently, the ui render target is used. In order to support views being displayed in separate windows further changes are needed:
- the osd layer must support creating and closing windows (render targets) on demand.
- There must be a mode for render targets where their bounds follows the window size - Currently the render target size depends on the aspect of currently selected "artwork" view.
- Render target needs a name property.
Short HowTo:
- Start MAME with "-debug -di"
- Console, register and disasm views will be shown. Place them by dragging the view on the title bar.
- Views can be resized by dragging the bottom-right yellow square.
- The view having the focus has a green background title bar.
- Hit "Tab" (IPT_UI_CONFIGURE) to show the menu.
- Console and disasm views support a very simple facility to support entering commands and addresses. Just start typing. Hit "enter" when finished.
ACRTC implementation is a bit hacky due to its preliminary emulation status.
New games marked as GAME_NOT_WORKING
------------------------------------
Joker's Wild (B52 system, set 1) [Roberto Fresca, Tomasz Slanina, Gerald Vanderick]
Joker's Wild (B52 system, set 2) [Roberto Fresca, Tomasz Slanina]
Joker's Wild (B52 system, Harrah's GFX) [Roberto Fresca, Tomasz Slanina, Gerald Vanderick]
Doesn't do much at the moment, but the increase in documentation value is
significant (we're documenting the sample compression format, for one thing).
---
This is just stage one of converting OG's stuff, please do not touch any
of it yet. Next up is the skeleton of the ZOOM chip, finishing up
the missing bits of the CPU core (the interrupt controller and timers), and
debugging the results.
- Added proper inputs.
- Added coin/keyin/keyout/payout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added main game and double-up rates DIP switches.
- Added minimum bet DIP switches.
- Added maximum bet DIP switches.
- Added main game and double-up limit DIP switches.
- Added payout mode and auto take DIP switches.
- Added DIP locations as seen in the settings mode.
- Added demo sounds DIP switch.
- Created proper button-lamps layout.
- Added technical notes.
- Some clean-ups...
(promoted from not working status....)
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Treasure Island (Subsino) [Team Europe, Dumping Union, Angelo Salese, David Haywood, Roberto Fresca]
- split dependences of system16 games from bootleg ones
- moved some .h files to includes/
- removed some unneeded include
- removed some dead code
- added driver data struct to segahang.c, segaorun.c, segas16a.c, sega16b.c, segas18.c, segaxbd.c & segaybd.c
- added save states to segas16a.c
Side notes:
* save states for other drivers do not work atm due to timer issues and/or missing item registrations in video/segaic16.c
* next, I'm going to see if bootlegs can be cleaned up a bit and if some segaic16 components can be device-fied
- Added sdlmisc_<targetos>.c again. This was necessary since
certain tools create stubs for e.g. osd_break_into_debugger.
If we do not have this in a separate file, the link stage may
break.
- Applied OS/2 patch [Credit: KO Myung-Hun]
- Cleaned up #includes. Removed stdlib.h were possible.
- More malloc to osd_malloc rename.
- SDL monitor modes are read now when they are needed. This is now consistent across platforms.
-------------------------------
Penguin Adventure (bootleg) [Mariusz Wojcieszek]
Game is playable, but coin system is missing, so I left NOT_WORKING flag.
--------------------------------------------
F-15 Strike Eagle (2 sets) [Phil Bennett]
Battle of the Solar System (rev. 1.1) [Phil Bennett]
Tank Battle (prototype rev. 4/21/92) [Phil Bennett]
Added Am29000 CPU core [Phil Bennett]
(general):
- Lowered CPU clock to 1.5 MHz.
- Reworked former inputs.
- Added specific game and technical notes.
- Added lamps support.
- Cleaned-up a bit the driver.
Victor 5:
- Mapped the M6295 but commented out due to missing sample roms.
- Added keyin, keyout, payout, stats and settings inputs.
- Added coin/keyin/keyout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added main game and double-up rates DIP switches.
- Added minimum bet DIP switches.
- Added maximum bet DIP switches.
- Added attract music DIP switch.
- Added button-lamps layout.
Victor 21:
- Mapped the M6295 but commented out due to missing sample roms.
- Added bet x10, keyin, keyout, stats and settings inputs.
- Added coin/keyin/keyout/payout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added main game rate DIP switches.
- Added minimum bet DIP switches.
- Added attract music DIP switch.
- Added button-lamps layout.
Poker Carnival (crsbingo):
- Added change card, keyin, keyout, stats and settings inputs.
- Added coin/keyin/keyout/payout counters.
- Limited the bet and coin pulses to avoid repeats and coin jams.
- Added complete coinage and keyin DIP switches.
- Added double-up rate DIP switches.
- Added minimum bet DIP switches.
- Added maximum bet DIP switches.
- Added cards graphics DIP switches.
- Added double-up type DIP switches.
- Added button-lamps layout.
Super Rider, Super Moto:
- Added stats and settings inputs.
- Added coin counters.
- Added main game and double-up rates DIP switches.
- Added double-up and control type DIP switches.
- Added coinage and demo sounds DIP switches.
- Added button-lamps layout.
Shark Party:
- Added stats and settings inputs.
- Added coin counters.
- Added main game and double-up rates DIP switches.
- Added double-up, coinage and demo sounds DIP switches.
- Added button-lamps layout.
- Created new central header "emu.h"; this should be included
by pretty much any driver or device as the first include. This
file in turn includes pretty much everything a driver or device
will need, minus any other devices it references. Note that
emu.h should *never* be included by another header file.
- Updated all files in the core (src/emu) to use emu.h.
- Removed a ton of redundant and poorly-tracked header includes
from within other header files.
- Temporarily changed driver.h to map to emu.h until we update
files outside of the core.
Added class wrapper around tagmap so it can be directly included
and accessed within objects that need it. Updated all users to
embed tagmap objects and changed them to call through the class.
Added nicer functions for finding devices, ports, and regions in
a machine:
machine->device("tag") -- return the named device, or NULL
machine->port("tag") -- return the named port, or NULL
machine->region("tag"[, &length[, &flags]]) -- return the
named region and optionally its length and flags
Made the device tag an astring. This required touching a lot of
code that printed the device to explicitly fetch the C-string
from it. (Thank you gcc for flagging that issue!)
Added driver data struct to ninjaw.c, slapshot.c, warriorb.c, wgp.c
There is still some TC0100SCN issue when reloading, which corrupts tilemap2, hence no save states in the latter drivers atm
osd_free(). They take the same parameters as malloc() and free().
Renamed mamecore.h -> emucore.h.
New C++-aware memory manager, implemented in emualloc.*. This is a
simple manager that allows you to add any type of object to a
resource pool. Most commonly, allocated objects are added, and so
a set of allocation macros is provided to allow you to manage
objects in a particular pool:
pool_alloc(p, t) = allocate object of type 't' and add to pool 'p'
pool_alloc_clear(p, t) = same as above, but clear the memory first
pool_alloc_array(p, t, c) = allocate an array of 'c' objects of type
't' and add to pool 'p'
pool_alloc_array_clear(p, t, c) = same, but with clearing
pool_free(p, v) = free object 'v' and remove it from the pool
Note that pool_alloc[_clear] is roughly equivalent to "new t" and
pool_alloc_array[_clear] is roughly equivalent to "new t[c]". Also
note that pool_free works for single objects and arrays.
There is a single global_resource_pool defined which should be used
for any global allocations. It has equivalent macros to the pool_*
macros above that automatically target the global pool.
In addition, the memory module defines global new/delete overrides
that access file and line number parameters so that allocations can
be tracked. Currently this tracking is only done if MAME_DEBUG is
enabled. In debug builds, any unfreed memory will be printed at
the end of the session.
emualloc.h also has #defines to disable malloc/free/realloc/calloc.
Since emualloc.h is included by emucore.h, this means pretty much
all code within the emulator is forced to use the new allocators.
Although straight new/delete do work, their use is discouraged, as
any allocations made with them will not be tracked.
Changed the familar auto_alloc_* macros to map to the resource pool
model described above. The running_machine is now a class and contains
a resource pool which is automatically destructed upon deletion. If
you are a driver writer, all your allocations should be done with
auto_alloc_*.
Changed all drivers and files in the core using malloc/realloc or the
old alloc_*_or_die macros to use (preferably) the auto_alloc_* macros
instead, or the global_alloc_* macros if necessary.
Added simple C++ wrappers for astring and bitmap_t, as these need
proper constructors/destructors to be used for auto_alloc_astring and
auto_alloc_bitmap.
Removed references to the winalloc prefix file. Most of its
functionality has moved into the core, save for the guard page
allocations, which are now implemented in osd_alloc and osd_free.
* added driver data struct to taito_l.c & opwolf.c
* added driver data struct + save states to asuka.c (cadash was not supporting saves), rainbow.c, rastan.c, taito_f2.c, taito_h.c, taito_o.c, taito_z.c, topspeed.c & volfied.c
not worth mentions:
* renamed a couple of megablst clones for consistency (as per stephh's remark)
* slightly changed tnzs RAM/ROM banks behaviour to avoid writes on ROM banks
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Sat, Dec 26, 2009 at 5:01 PM
Subject: [patch] Header/static cleanups
To: submit@mamedev.org
Cc: atariace@hotmail.com
- Hide quoted text -
Hi mamedev,
This patch add some missing header declarations and static qualifiers,
and adjusts a few names. In the core, it adds validity.h for
consistency as well as an explicit foo.h in each foo.c.
~aa
* moved a few routines (used for sorting graphics layers) to konicdev.c since they are shared by several drivers
* added driver data struct to ajax.c and aliens.c
* added driver data struct + save states to: asterix.c, bishi.c, blockhl.c, bottom9.c, chqflag.c, crimfght.c, dbz.c,
gbusters.c, gijoe.c, lethal.c, mainevt.c, moo.c, overdriv.c, parodius.c,
rollerg.c, rungun.c, simpsons.c, spy.c, surpratk.c, tail2nos.c, thunderx.c,
tmnt.c, ultraman.c, vendetta.c, xexex.c and xmen.c
* updated some Konami drivers above to separately allocate palette/extra/work RAM instead of appending them to maincpu ROM; also, reduced maincpu rom regions where appropriate
* replaced memory_set_bankptr with memory_set_bank where necessary
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Fri, Jan 1, 2010 at 5:27 PM
Subject: [patch][resubmit] Convert goldstar/liberate/sidearms/sidepckt
to use driver_data
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This is a resubmit of my last driver_data patch. It should be
non-controversial, although it contains some additional whitespace
cleanup in the affected files.
~aa
* split I/O devices from video ones
* converted all taito drivers to use these I/O devices
* removed old I/O code from taitoic.c
* added preliminary tc0180vcu video device
Date: Tue, Dec 22, 2009 at 11:57 AM
Subject: Core for PIC 16c62x series of processors
To: submit@mamedev.org
Hello,
this patch contains a core for the PIC 16c62x series of processors.
It has been made starting from the pic16c5x that is already present.
This version stil misses the various internal devices, however the
opcodes and i/o ports work, and it is enough to run the emulation of
the security pics used with the gd-roms.
Bye,
Samuele Zannoli
* fixed 053936 init which was giving problems to f1gp2 (in debug build only, apparently)
* removed banptr preventing proper save states in rockrage.c: now save works fine
* added driver data struct and saves states to f1gp.c, fastlane.c, flkatck.c, hcastle.c, labyrunr.c and suprslam.c
* fixed 056832 device start order to avoid wrong settings for layer 0. updated asterix.c and moo.c to use the device implementation now that it's working correctly.
* added driver data struct to 88games.c, combatsc.c and rockrage.c
* added driver data struct and save states to battlnts.c, bladestl.c, crshrace.c and contra.c
* renamed combasc to combatsc now that clones can have longer names
* moved k056800 sound device to emu/sound and removed the old code (mame/machine/konamiic.c )
* updated gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c to use this implementation
* fixed various small (and not so small) problems in konicdev.c
* as a result Konami 007342, 007420, 052109, 052160 and 051316 devices are now working and 88games.c, battlnts.c, bladestl.c and rockrage.c have been updated to use them
In particular, device-fied Konami 007121, 051733 and 053251 work fine and combatsc.c, contra.c, crshrace.c, f1gp.c, fastlane.c, flkatck.c, hcastle.c, labyrunr.c and suprslam.c have been converted to use the new code.
Side notes:
* chips which have their own tilemap in MAME (e.g. 056832 and 052109) are not working yet, and other chips cannot be fully tested because they're used together with these... it's still wip
* some cleanup is in order (especially for interfaces), once I get the remaining chips to working state
* converting the drivers above, I noticed that f1gp2 was only using half of the k053936 regs: this is now fixed and, even if I don't know of any visible improvements, now there are definitely less unmapped writes logged by the debugger ;)
Added driver data struct and save states to: cbasebal.c, chinsan.c, mitchell.c and quasar.c
Not to be mentioned: I also removed use of memory_set_bankptr from CPS1 sound banking and renamed a couple of rallyx.c constants to be less generic
Out of whatsnew: Unfortunately, I was unable to make both malzak and p2000t (in MESS) to work without a small kludge, clearly documented in the source. I plan to further investigating the problem once I manage to merge the other 505x variants (later)
* added saves to 6522via.c. this fixes problems of gameplan.c and trvquest.c games with -autosave
* added driver data struct and save states to toratora.c and sf.c
* enable GAME_SUPPORTS_SAVE flag to dday.c because some of the core changes have fixed the sound problem at loading
* added a couple of comments about header inclusions
Also, added driver data struct and save states to laserbas.c, laserbat.c, lastfght.c, lazercmd.c and lemmings.c
Finally, added driver data struct to lasso.c
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.