Commit Graph

930 Commits

Author SHA1 Message Date
Aaron Giles
ed0207f126 Move devices into a proper hierarchy and handle naming
and paths consistently for devices, I/O ports, memory
regions, memory banks, and memory shares. [Aaron Giles]

NOTE: there are likely regressions lurking here, mostly
due to devices not being properly found. I have temporarily
added more logging to -verbose to help understand what's
going on. Please let me know ASAP if anything that is being
actively worked on got broken.

As before, the driver device is the root device and all 
other devices are owned by it. Previously all devices
were kept in a single master list, and the hierarchy was
purely logical. With this change, each device owns its
own list of subdevices, and the hierarchy is explicitly
manifest. This means when a device is removed, all of its
subdevices are automatically removed as well.

A side effect of this is that walking the device list is
no longer simple. To address this, a new set of iterator
classes is provided, which walks the device tree in a depth
first manner. There is a general device_iterator class for
walking all devices, plus templates for a device_type_iterator
and a device_interface_iterator which are used to build
iterators for identifying only devices of a given type or
with a given interface. Typedefs for commonly-used cases
(e.g., screen_device_iterator, memory_interface_iterator)
are provided. Iterators can also provide counts, and can
perform indexed lookups.

All device name lookups are now done relative to another 
device. The maching_config and running_machine classes now
have a root_device() method to get the root of the hierarchy. 
The  existing machine->device("name") is now equivalent to
machine->root_device().subdevice("name").

A proper and normalized device path structure is now
supported. Device names that start with a colon are
treated as absolute paths from the root device. Device
names can also use a caret (^) to refer to the owning
device. Querying the device's tag() returns the device's
full path from the root. A new method basetag() returns
just the final tag.

The new pathing system is built on top of the 
device_t::subtag() method, so anyone using that will 
automatically support the new pathing rules. Each device
has its own internal map to cache successful lookups so
that subsequent lookups should be very fast.

Updated every place I could find that referenced devices,
memory regions, I/O ports, memory banks and memory shares
to leverage subtag/subdevice (or siblingtag/siblingdevice
which are built on top).

Removed the device_list class, as it doesn't apply any
more. Moved some of its methods into running_machine
instead.

Simplified the device callback system since the new 
pathing can describe all of the special-case devices that
were previously handled manually.

Changed the core output function callbacks to be delegates.

Completely rewrote the validity checking mechanism. The
validity checker is now a proper C++ class, and temporarily
takes over the error and warning outputs. All errors and 
warnings are collected during a session, and then output in
a consistent manner, with an explicit driver and source file
listed for each one, as well as additional device and/or
I/O port contexts where appropriate. Validity checkers 
should no longer explicitly output this information, just
the error, assuming that the context is provided.

Rewrote the software_list_device as a modern device, getting
rid of the software_list_config abstraction and simplifying
things.

Changed the way FLAC compiles so that it works like other
external libraries, and also compiles successfully for MSVC
builds.
2012-01-24 20:18:55 +00:00
Olivier Galibert
c8822a8937 mess sync (nw) 2012-01-23 21:49:46 +00:00
R. Belmont
8703f92910 Added FLAC (lossless audio) codec support plus experimental hooks in samples and chdman. Bumped up CHD-CD hunk size to get better compression ratios on both zlib and flac. [David Haywood, R. Belmont] 2012-01-22 18:38:22 +00:00
Curt Coder
2af25c4c7e Added Intersil IM6402 UART emulation. [Curt Coder] 2012-01-20 14:07:54 +00:00
Angelo Salese
8e09bd59fa New NOT WORKING game
--------------------
Popo Bear [R. Mucciarelli, N. Francfort, Smitdogg, The Dumping Union]
2012-01-18 18:13:08 +00:00
Aaron Giles
49f15acb7d tagmap is just a C++ template now. Added iterators to it as
well. Updated a few outlying uses.
2012-01-17 19:06:55 +00:00
R. Belmont
f6b2c736c4 Add libjpeg; converted Sliver to decompress pictures on the fly [David Haywood, R. Belmont] 2012-01-16 17:06:42 +00:00
mariuszw1
a70481349e New games added as NOT_WORKING
------------------------------
Ichi Ban Jyan [Guru]
2012-01-15 22:10:00 +00:00
Aaron Giles
845c34f586 Created new testcpu driver that shows how to develop an empty
test driver that (ab)uses the core to single step a CPU executing
arbitrary instructions and capturing before/after state and 
tracking memory. Currently this driver is always compiled, but is
not referenced in mame.lst.

Also updated and modernized the dummy empty driver.
2012-01-14 09:14:28 +00:00
Aaron Giles
e4238fb654 Major bitmap-related changes throughout the system. There are
almost certainly some regressions lurking. Let me know if
something seems busted.

Bitmaps are now strongly typed based on format. bitmap_t still
exists as an abstract base class, but it is almost never used.
Instead, format-specific bitmap classes are provided:

   bitmap_ind8 == 8bpp indexed
   bitmap_ind16 == 16bpp indexed
   bitmap_ind32 == 32bpp indexed
   bitmap_ind64 == 64bpp indexed
   bitmap_rgb32 == 32bpp RGB
   bitmap_argb32 == 32bpp ARGB
   bitmap_yuy16 == 16bpp YUY

For each format, a generic pix() method is provided which
references pixels of the correct type. The old pix8/pix16/pix32/
pix64 methods still exist in the short term, but the only one
available is the one that matches the bitmap's pixel size. Note
also that the old RGB15 format bitmaps are no longer supported
at all.

Converted model1, megadriv, and stv drivers away from the RGB15
format bitmaps.

New auto_bitmap_<type>_alloc() macros are provided for allocating
the appropriate type of bitmap.

Screen update functions now must specify the correct bitmap type
as their input parameters. For static update functions the
SCREEN_UPDATE macro is now replaced with SCREEN_UPDATE_RGB32 and
SCREEN_UPDATE_IND16 macros. All existing drivers have been 
updated to use the correct macros. 

Screen update functions are now required for all screens; there
is no longer any default behavior of copying a "default" bitmap
to the screen (in fact the default bitmap has been deprecated).
Use one of the following to specify your screen_update callback:

   MCFG_SCREEN_UPDATE_STATIC(name) - static functions
   MCFG_SCREEN_UPDATE_DRIVER(class, func) - driver members
   MCFG_SCREEN_UPDATE_DEVICE(tag, class, func) - device members

Because the target bitmap format can now be deduced from the
screen update function itself, the MCFG_SCREEN_FORMAT macro is
no longer necessary, and has been removed. If you specify a
screen update callback that takes a bitmap_ind16, then the screen
will be configured to use a 16bpp indexed bitmap, and if you
specify a callback that takes a bitmap_rgb32, then a 32bpp RGB
bitmap will be provided.

Extended the bitmap classes to support wrapping a subregion of
another bitmap, and cleaner allocation/resetting. The preferred
use of bitmaps now is to define them directly in drivers/devices
and use allocate() or wrap() to set them up, rather than 
allocating them via auto_bitmap_*_alloc().

Several common devices needed overhauls or changes as a result
of the above changes:

 * Reorganized the laserdisc base driver and all the laserdisc 
    drivers as modern C++ devices, cleaning the code up 
    considerably. Merged ldsound device into the laserdsc
    device since modern devices are flexible enough to handle
    it.

 * Reorganized the v9938 device as a modern C++ device. Removed
    v9938mod.c in favor of template functions in v9938.c directly.

 * Added independent ind16 and rgb32 callbacks for TMS340x0 devices.

 * All video devices are now hard-coded to either ind16 or rgb32
    bitmaps. The most notable is the mc6845 which is rgb32, and
    required changes to a number of consumers.

 * Added screen_update methods to most video devices so they can be
    directly called via MCFG_SCREEN_UPDATE_DEVICE instead of creating
    tons of stub functions.
2012-01-12 21:19:49 +00:00
Michaël Banaan Ananas
2dd6b44714 beaminv.c: added color overlay [MASH] 2012-01-12 14:51:04 +00:00
R. Belmont
f44cec2da5 ARM7: Gave ARM mode its own file & cleaned up formatting/indenting [David Haywood] 2012-01-11 17:47:39 +00:00
R. Belmont
749b1fa9e7 and 2 more (nw) 2012-01-11 03:49:08 +00:00
R. Belmont
ab2555b4d0 missed a file (nw) 2012-01-11 03:48:06 +00:00
Olivier Galibert
517ae1369f Placeholders. 2012-01-07 20:50:20 +00:00
Angelo Salese
532dff205f New file addition 2012-01-06 17:50:46 +00:00
Phil Bennett
2bec585837 New games added as NOT_WORKING
----------------------------------
Virtuality SU2000 [Phil Bennett, SailorSat]
2012-01-05 18:08:59 +00:00
Scott Stone
15d533f21b Consistency fix: Moved .h file out of DRIVERS and placed into INCLUDES (nw) 2012-01-05 00:13:16 +00:00
Miodrag Milanovic
35af256640 Removed not needed files (no whatsnew) 2012-01-01 17:23:43 +00:00
Wilbert Pol
25818c4b1a Fix svn properties. 2011-12-31 19:15:58 +00:00
Wilbert Pol
65d63e8e0b Moved the implementation for the Sega 315-5124, 315-5246, and 315-5378 video chips from MESS to src/emu/video. 2011-12-31 19:15:02 +00:00
Angelo Salese
48687df54a Moved pc_cga again 2011-12-27 13:59:30 +00:00
Miodrag Milanovic
d27e240394 Added missing files (no whatsnew) 2011-12-25 08:19:37 +00:00
Angelo Salese
2300eaa029 Ported PC CGA device emulation from MESS to MAME, and updated Filetto and Tetris (KR) to use it accordingly [Angelo Salese] 2011-12-25 04:16:20 +00:00
Angelo Salese
54ffceb6ac Added proper ROM labels for Taxi Driver [f205v] 2011-12-24 18:39:48 +00:00
Angelo Salese
18c5b64f2b Merged dacholer.c and itaten.c drivers, fixes priority and sprite Y positions in Dacholer and Kick Boy [Angelo Salese] 2011-12-24 17:31:48 +00:00
Yasuhiro Ogawa
46e4689e38 New game added
--------------
Itazura Tenshi [Team Japump!!!, Hau, Yohji]
2011-12-24 03:39:48 +00:00
mariuszw1
ef97ae5210 New games added as NOT_WORKING
----------------------------------
Special Criminal Investigation (Tourvision PCE bootleg) [Mariusz Wojcieszek, Clawgrip, Charles MacDonald, AUMAP]
2011-12-19 22:15:02 +00:00
Roberto Fresca
e97020e394 Forte Card improvements: [Roberto Fresca]
- A lot of work on inputs.
 - Added DIP locations.
 - Lamps documentation and support.
 - Added Lamps layout.
2011-12-15 06:23:10 +00:00
Angelo Salese
d31830b994 deprecat.h for seta.c, nuked deprecat library (at last) 2011-12-14 20:37:10 +00:00
Miodrag Milanovic
6e79bb2629 Sync with MESS all credited there (no whatsnew) 2011-12-12 14:20:12 +00:00
Angelo Salese
c6d91f775e Missing files, nothing new ... 2011-12-01 17:21:07 +00:00
Angelo Salese
086a5e453e Added a template for devices (new model) in etc/ folder, nw 2011-11-30 23:48:28 +00:00
Angelo Salese
0d9dca1964 Added a template for drivers (old model) in etc/ folder, nw 2011-11-30 23:42:38 +00:00
Miodrag Milanovic
f37d6fb4ab Removed multcart from imagedev, slots and softlists replaces this functionality (no whatsnew) 2011-11-26 08:26:58 +00:00
Angelo Salese
3c4c946e66 svn add the files ... 2011-11-22 22:41:02 +00:00
Miodrag Milanovic
6aadd7d787 Sync with MESS, also placed back sdlmain change since it proved working on BSD (no whatsnew) 2011-11-22 09:07:58 +00:00
Aaron Giles
b4a1e04703 Introduce polynew.h which is a modernized C++ version of the old poly.c.
Cleaned up a lot of stuff and made some changes in preparation for the
future. Converted gaelco3d and midvunit over to the new system.
2011-11-21 18:23:01 +00:00
R. Belmont
f5a4b7dc30 SDL updates [R. Belmont, Carl, cgwg]
- pcap network support for OS X and Windows SDL targets
- GLSL tweaks to better support the "CRT" shader
2011-11-18 22:16:21 +00:00
Miodrag Milanovic
be8bd3552f Move per emulator constants info into separate class [Miodrag Milanovic]
out of log:
This way it is possible to link two or more separated executables with different 
copyright/xml out/name/... in one compilation, just one step closer...
2011-11-17 10:02:55 +00:00
Olivier Galibert
66a7a12491 placeholders 2011-11-10 16:42:32 +00:00
Olivier Galibert
be2ada81fd http://www.flickr.com/photos/discoweasel/2851814771/ 2011-11-08 17:10:35 +00:00
Olivier Galibert
bef9812970 cavesh3: Cave says "Please don't" 2011-11-07 10:02:35 +00:00
Angelo Salese
aec813c34e Converted neogeo mvs driver to use software lists in preparation for
multislot support [David Haywood]

Please note: launching convention for Neo-Geo games is now the same as
MESS software lists "mame neogeo gamename" or "mame neogeo -cart
gamename".
2011-11-06 18:26:09 +00:00
R. Belmont
2f3b6bc006 Rewrote NCR539x SCSI emulation from scratch [R. Belmont] 2011-11-02 02:07:46 +00:00
Olivier Galibert
55e17a2bb9 ipf: Describe the remaining fields [O. Galibert, SPS] 2011-11-01 11:36:43 +00:00
Olivier Galibert
974ea3d59e placeholders 2011-11-01 11:13:54 +00:00
mariuszw1
c0cfcc0c68 New games marked as NOT_WORKING
-------------------------------
Galaxy Game [Mariusz Wojcieszek]
2011-10-31 21:04:34 +00:00
R. Belmont
fd0be74ab4 SDL: Add TAP/TUN networking capability and shell script for configuration [Carl] 2011-10-31 01:30:24 +00:00
Scott Stone
ab7999d477 New games marked as GAME_NOT_WORKING
------------------------------------
Arcana Heart Full [Tormod, Smitdogg, The Dumping Union]


Comments from Haze: Note, I haven't marked this as a bootleg, but 75% of the rom is actually MAME ROM zips, they've clearly recycled flash chips from one of the MAME multi-boots, so I have a feeling that this might have been a 3rd party upgrade.  I doubt they shipped like this from the factory, so I've added a comment to that effect because it should definitely be verified against other copies of the game at some point.
2011-10-30 23:33:33 +00:00