Commit Graph

81 Commits

Author SHA1 Message Date
Miodrag Milanovic
cfee536f22 Cleanups and version bump 2016-04-27 08:13:59 +02:00
Miodrag Milanovic
89c5e1f681 Various cleanups suggested by static analyzer (nw) 2016-04-24 12:58:31 +02:00
Miodrag Milanovic
1c726824f2 Split UI and frontend part from core [Miodrag Milanovic] 2016-04-23 11:26:47 +02:00
etabeta78
c1600cafd9 diimage.cpp: Allow image devices to be configured with a fixed
(not user selectable) piece of software and updated a few options
and menu to acknowledge such possibility. [Fabio Priuli]

macs.cpp: Converted to use generic cartslot with fixed software
configuration. Cleaned up loading and banking systems in the driver
as a result. [Fabio Priuli]
2016-04-12 14:37:22 +02:00
AJR
b0e033146a Avoid auto return types; silence some unused variable warnings (nw) 2016-03-31 13:50:31 -04:00
AJR
a7e393b36b Iterate over core classes C++11 style
C++11 range-based for loops can now iterate over simple_list, tagged_list, core_options, device_t::subdevice_list, device_t::interface_list, render_primitive_list and all subclasses of the above, and much code has been refactored to use them. Most core classes that have these lists as members now have methods that return the lists themselves, replacing most of the methods that returned the object at an owned list's head. (A few have been retained due to their use in drivers or OSD.)

device_t now manages subdevice and interface lists through subclasses, but has given up the work of adding and removing subdevices to machine_config.

memory_manager has its tagged lists exposed, though the old rooted tag lookup methods have been removed (they were privatized already).
2016-03-31 09:43:53 -04:00
Vas Crabb
73b44c9429 Turn core_file into a proper class that gets cleaned up safely using unique_ptr
Subverted somewhat by chd_file class
2016-03-06 21:49:56 +11:00
Miodrag Milanovic
4e8e3066f8 reverting:
SHA-1: 1f90ceab07

* tags are now strings (nw)
fix start project for custom builds in Visual Studio (nw)
2016-01-20 21:42:13 +01:00
Miodrag Milanovic
1f90ceab07 tags are now strings (nw)
fix start project for custom builds in Visual Studio (nw)
2016-01-16 14:54:42 +01:00
Miodrag Milanovic
43cc0ac675 final touch on romload modernization (nw) 2016-01-11 21:27:11 +01:00
Miodrag Milanovic
f0dc809ab8 image_manager modernized and move some things around (nw) 2016-01-11 14:59:24 +01:00
AJR
115db95642 Return std::string objects by value rather than pass by reference
- strprintf is unaltered, but strformat now takes one fewer argument
- state_string_export still fills a buffer, but has been made const
- get_default_card_software now takes no arguments but returns a string
2016-01-10 16:36:18 -05:00
Miodrag Milanovic
91605d3f4d clang-modernize part 1 (nw) 2015-12-03 18:17:25 +01:00
Miodrag Milanovic
d1dc775f9b Some cleanups and init fixes with help of ReSharper C++ (nw) 2015-11-11 16:31:18 +01:00
Miodrag Milanovic
41fea29de5 Relaxed emu.h a bit, should make compile a bit faster (nw) 2015-11-05 20:39:57 +01:00
Miodrag Milanovic
54f8b3ae5d moved all to std::string (nw) 2015-04-22 11:30:45 +02:00
Miodrag Milanovic
7e1f926b94 more astring -> std::string (nw) 2015-04-19 15:06:07 +02:00
Miodrag Milanovic
71c4d9f304 removed bool conversion and implicit empty check (nw) 2015-04-19 12:08:52 +02:00
Miodrag Milanovic
3c3ee1d177 more conversions to std::string (nw) 2015-04-19 08:08:34 +02:00
Miodrag Milanovic
59bb9d4fd6 some astring to std::string conversion (nw) 2015-04-18 18:35:04 +02:00
Miodrag Milanovic
7faba31b1b There is no implicit conversion to char* in std::string (nw) 2015-04-12 08:05:43 +02:00
Miodrag Milanovic
0ac942c9b8 Cleanup of image device interfaces (nw) 2014-05-02 12:10:55 +00:00
Fabio Priuli
593b53d73b image.c: Added support for loading a default battery, instead of a fixed fill value, when no
battery is found. This allows for loading factory formatted sram/nvram from softlist. [Fabio Priuli]

(MESS) nes.c: Fixed Silva Saga, which relies on SRAM not being 0x00 filled from factory,
with many thanks to naruko for investigating the problem. [Fabio Priuli]
2014-05-02 08:32:21 +00:00
Miodrag Milanovic
fec65e0b57 Cleanups and version bump 2014-04-07 06:04:18 +00:00
Nathan Woods
01d2320c95 Factored ui_menu_control_device_image into ui/imgcntrl.c 2014-04-05 14:11:56 +00:00
Miodrag Milanovic
72292ef70a modernized 990_hd, moved some code into ti990_10.c, and simplified harddriv.c and remove some legacy leftovers (nw) 2014-03-23 14:45:18 +00:00
Oliver Stöneberg
c8ea1c0d04 fixed GCC/clang compilation / fixed some forward declarations (nw) 2014-03-11 17:13:40 +00:00
Aaron Giles
4ea9df02a1 Moved core template container classes up from emutempl.h to coretmpl.h:
[Aaron Giles]
 * these classes now no longer take a resource_pool; everything is
    managed globally -- this means that objects added to lists must be
    allocated with global_alloc
 * added new auto_pointer<> template which wraps a pointer and auto-frees
    it upon destruction; it also defaults to NULL so it doesn't need to
    be explicitly initialized
 * moved tagged_list template to tagmap.h

Redo of the low-level memory tracking system: [Aaron Giles]
 * moved low-level tracking out of emu\emualloc into lib\util\corealloc
    so it can be shared among all components and used by core libraries
 * global_alloc and friends no longer use a resource pool to track
    allocations; turns out this was a wholly redundant system that wasted
    a lot of memory
 * removed global_resource_pool entirely
 * added global_free_array to delete arrays allocated with 
    global_alloc_array
 * added tracking of object versus array allocation; we will now error
    if you use global_free on an array, or global_free_array on an object

Added new utility helper const_string_pool which can be used to 
efficiently accumulate strings that are not intended to be modified.
Used by updated makelist and software list code. [Aaron Giles]

Updated png2bdc and makelist tools to not leak memory and use more modern
techniques (no more MAX_DRIVERS in makelist, for example). [Aaron Giles]

Deprecated auto_strdup and removed all uses by way of caller-managed 
astrings and the software list rewrite. [Aaron Giles]

Rewrote software list management: [Aaron Giles]
 * removed the notion of a software_list that is separate from a
    software_list_device; they are one and the same now
 * moved several functions into device_image_interface since they really
    didn't belong in the core software list class
 * lots of simplification as a result of the above changes

Additional notes (no whatsnew):

Moved definition of FPTR to osdcomm.h.

Some changes happened in the OSD code to fix issues, especially regarding
freeing arrays. SDL folks may need to fix up some of these.

The following devices still are using tokens and should be modernized
(I found them because they kept their token as void * and tried to
delete it, which you can't):

namco_52xx_device (mame/audio/namco52.c)
namco_54xx_device (mame/audio/namco54.c)
namco_06xx_device (mame/machine/namco06.c)
namco_50xx_device (mame/machine/namco50.c)
namco_51xx_device (mame/machine/namco51.c)
namco_53xx_device (mame/machine/namco53.c)
voodoo_device (emu/video/voodoo.c)
mos6581_device (emu/sound/mos6581.c)
aica_device (emu/sound/aica.c)
scsp_device (emu/sound/scsp.c)
dmadac_sound_device (emu/sound/dmadac.c)
s3c2440_device (emu/machine/s3c2440.c)
wd1770_device (emu/machine/wd17xx.c)
latch8_device (emu/machine/latch8.c)
duart68681_device (emu/machine/68681.c)
s3c2400_device (emu/machine/s3c2400.c)
s3c2410_device (emu/machine/s3c2410.c)
strataflash_device (mess/machine/strata.c)
hd63450_device (mess/machine/hd63450.c)
tap_990_device (mess/machine/ti99/990_tap.c)
omti8621_device (mess/machine/omti8621.c)
vdt911_device (mess/video/911_vdt.c)
apollo_graphics_15i (mess/video/apollo.c)
asr733_device (mess/video/733_asr.c)
2014-03-11 15:54:58 +00:00
Oliver Stöneberg
5278254236 rest of ATTR_PRINTF review (nw) 2014-02-25 12:25:33 +00:00
smf-
dafb99627b fix for MSVC "warning C4717: 'device_image_interface::fread' : recursive on all control paths, function will cause runtime stack overflow" (nw) 2013-12-21 09:45:08 +00:00
Curt Coder
7afab9bda2 diimage: Added load_software_region() function that loads a software list region into a shared_ptr. [Curt Coder] 2013-12-20 16:03:02 +00:00
Aaron Giles
71fbb5edc2 Added license tags to a few more files. Also converted many of OG's
BSD licenses to tags since when he copied & pasted them he forgot to
remove one instance of my name, which I caught while searching. ;-)
2013-10-16 09:38:09 +00:00
Miodrag Milanovic
a440a8e020 Cleanups and version bump 2013-02-11 07:44:56 +00:00
Wilbert Pol
871d4c7ac6 Getting rid of DEVICE_IMAGE_START (nw) 2013-02-06 20:32:33 +00:00
Wilbert Pol
400b9bcc29 Started moving DEVICE_IMAGE_ functions into driver_device classes. (nw) 2013-02-05 20:54:03 +00:00
R. Belmont
f6c44c6e9b MIDI core updates: [R. Belmont]
- Add MIDI in and out ports as image device types
- Add OSD calls to check for and read MIDI input
- Add MIDI in image device which reads input and converts it to a serial bitstream

nw section:
Note that the MIDI In device uses the new image device override to prevent the core from attempting to fopen() the "file" name and instead it handles open/close itself in call_load/call_unload.  This allows greater flexibilty than the hack used for sockets/ptys/named pipes where the OSD file layer has to know about them.
2013-01-13 03:48:10 +00:00
R. Belmont
7cd142d28d diimage: allow image devices to skip core fopen() of the image's filename and handle themselves in call_load() [R. Belmont] 2013-01-12 04:46:30 +00:00
Miodrag Milanovic
0e19f641d3 Cleanups and version bump 2013-01-11 07:32:46 +00:00
mahlemiut
462073ccf4 Added device image type for individual ROM images (as used in some Amstrad CPC applications) (no whatsnew) 2012-05-07 12:12:57 +00:00
Miodrag Milanovic
95b451277d Removed legacy image devices and related code (no whatsnew) 2012-03-06 12:57:06 +00:00
Miodrag Milanovic
686e8cea52 Sync with MESS (no whatsnew) 2012-03-06 07:30:55 +00:00
Miodrag Milanovic
bb0f3da064 Give more proper name and disabled loading of soflist items in open_image_file call (no whatsnew) 2012-02-21 12:43:14 +00:00
Miodrag Milanovic
dab559f2aa Added helpers for loading file for slot determination (no whatsnew) 2012-02-21 10:27:17 +00:00
Miodrag Milanovic
9720d9b577 Fix regression on softload item load using menus (no whatsnew) 2012-01-30 14:32:31 +00:00
Angelo Salese
505442d0a0 Clean-ups and version bump 2012-01-29 16:34:26 +00:00
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
afb7d8fb6a floppy: Do specific UI handling [O. Galibert] 2012-01-23 21:49:30 +00:00
Olivier Galibert
b9209b1c35 uiimage/diimage: Dumbify the menus and add a control layer [O. Galibert] 2012-01-07 09:03:36 +00:00
Miodrag Milanovic
0c2165a5ea Removed not used legacy call (no whatsnew) 2011-11-26 18:10:06 +00:00
Angelo Salese
e6050ace10 Cleanups and version bump 2011-06-19 19:29:25 +00:00