summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/softlist.h
Commit message (Collapse)AuthorAgeFilesLines
* (MESS) nes.xml: added a couple of new multigame dumps using Fabio Priuli2014-10-131-2/+2
| | | OneBus PCB. [TeamEurope]
* Cleanups and version bumpmame0153 Miodrag Milanovic2014-04-071-29/+29
|
* Moved core template container classes up from emutempl.h to coretmpl.h: Aaron Giles2014-03-111-118/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [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)
* Renamed uimenu.? ==> ui/menu.?, uimain.? ==> Jürgen Buchmüller2014-01-171-1/+1
| | | mainmenu.?/miscmenu.?/selgame.?
* (MESS) Fixed software list hookups. (nw) Curt Coder2013-01-231-0/+3
|
* Cleanups and version bumpmame0148 Miodrag Milanovic2013-01-111-22/+22
|
* floppy: Correctly reach files inside zips or softlists [O. Galibert] Olivier Galibert2013-01-021-0/+1
|
* Added support for multiple comma separated interfaces for device (no whatsnew) Miodrag Milanovic2012-03-291-0/+1
|
* Fix regression on softload item load using menus (no whatsnew) Miodrag Milanovic2012-01-301-1/+1
|
* Clean-ups and version bumpmame0144u7 Angelo Salese2012-01-291-4/+4
|
* Move devices into a proper hierarchy and handle naming Aaron Giles2012-01-241-52/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* softlist: Fix entry count tracking issue [O. Galibert] Olivier Galibert2012-01-081-8/+5
|
* uiimage/diimage: Dumbify the menus and add a control layer [O. Galibert] Olivier Galibert2012-01-071-4/+10
|
* Enabled filtering in best matches and also in "noswitch" aka MAME like start ↵ Miodrag Milanovic2011-12-221-8/+10
| | | | | | or software (no whatsnew) Note that it is possible to mount wrong region image manually,for example with cart parameter and that prints warning
* Softlist support cleanup and addition of compatibility filtering [Miodrag ↵ Miodrag Milanovic2011-12-221-15/+12
| | | | Milanovic]
* Added validate lists option and removed on startup softlist validation (no ↵ Miodrag Milanovic2011-11-281-0/+1
| | | | | whatsnew) Highly improve startup time for drivers with big softlists
* Fixed handling slot/image options so it's possible to override slot setting ↵ Miodrag Milanovic2011-11-231-1/+1
| | | | by softlist (no whatsnew)
* Fix for softlist loading (no whatsnew) Miodrag Milanovic2011-07-251-1/+1
|
* Update support for slot devices based softlists (no whatsnew) Miodrag Milanovic2011-07-171-1/+3
|
* Made approx matches code to be used from one place (no whatsnew) Miodrag Milanovic2011-06-151-1/+1
|
* Display approximate matches if softlist item is not found (no whatsnew) Miodrag Milanovic2011-06-151-0/+1
|
* Removed memory allocation calls from image device (no whatsnew) Miodrag Milanovic2011-05-251-0/+1
|
* Cleanups again Angelo Salese2011-04-181-2/+2
|
* softlist: moved software list handling (in the Internal UI) to a separate ↵ Fabio Priuli2011-04-061-2/+42
| | | | | source, and made the code more similar to the File Manager handling code. [Fabio Priuli] out of whatsnew: this log covers all changes done today, for MAME. A more detailed log will be in MESS whatsnew.
* Cleanups and version bump.mame0142 Aaron Giles2011-04-031-1/+1
|
* BIG update. Aaron Giles2011-03-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove redundant machine items from address_space and device_t. Neither machine nor m_machine are directly accessible anymore. Instead a new getter machine() is available which returns a machine reference. So: space->machine->xxx ==> space->machine().xxx device->machine->yyy ==> device->machine().yyy Globally changed all running_machine pointers to running_machine references. Any function/method that takes a running_machine takes it as a required parameter (1 or 2 exceptions). Being consistent here gets rid of a lot of odd &machine or *machine, but it does mean a very large bulk change across the project. Structs which have a running_machine * now have that variable renamed to m_machine, and now have a shiny new machine() method that works like the space and device methods above. Since most of these are things that should eventually be devices anyway, consider this a step in that direction. 98% of the update was done with regex searches. The changes are architected such that the compiler will catch the remaining errors: // find things that use an embedded machine directly and replace // with a machine() getter call S: ->machine-> R: ->machine\(\)\. // do the same if via a reference S: \.machine-> R: \.machine\(\)\. // convert function parameters to running_machine & S: running_machine \*machine([^;]) R: running_machine \&machine\1 // replace machine-> with machine. S: machine-> R: machine\. // replace &machine() with machine() S: \&([()->a-z0-9_]+machine\(\)) R: \1 // sanity check: look for this used as a cast (running_machine &) // and change to this: *(running_machine *)
* softlist.c: split the <info> field (added some time ago to handle ↵ Fabio Priuli2011-03-271-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | compatibility requirements) into <info> and <sharedfeat>. the former stays tied to the whole software entry, the latter gets inherited by each part. out of whatsnew 1: Arbee, this change finalizes the xml format once for all. feel free to create an apple II or ||gs list, if you are interested out of whatsnew 2: A bunch of comments about this change: with the latest code, each software entry can store three different kind of 'extrainfo' strings. They are thought to be used in specific cases, so let me briefly explain the big picture behind them. 1. <feature> fields: these are well established in current lists. they belong to a <part> element (i.e. a specific cart or cd disc or floppy disk) and they can be used to store hardware details that belongs to that specific <part>. typically, we have used these to describe the pcb_type of a cart (e.g. the board type in NES carts or in AES carts, to remove the need of specific mappers), so that at loading time they can be checked and the emulation can be setup accordingly. However, some lists (e.g. snes.xml and, in a few months, nes.xml as well) use these more creatively, to e.g. document the exact chip locations on the pcb examples <feature name="pcb_type" value="MMC3C"/> <feature name="u3" value="SRAM-64M"/> ---------- 2. <sharedfeat> fields: these are listed in the main <software> entry, but get stored together with the <feature> of each part of this software. E.g. if your software entry consists of 9 floppies, these shared features will be inherited by *all* the disks. The typical usage for this is to list the compatibility requirements of the software entry, e.g. a PAL system, or the presence of an expansion card, or the presence of additional RAM. These compatibility settings have to be manually parsed in the loading code by the driver author, but it makes more sense to define them only once for each software entry than to copy and paste it for each <part> (and believe me, it makes a difference both in terms of avoiding redundant lines and in terms of time necessary to create the xml list itself, when you deal with hundreds of multidisk entries like in the forthcoming pc8801 floppy list). consider this as a shortcut for 1. when you have multidisk software. examples <sharedfeat name="compatibility" value="EUR-JPN"/> (the value can be freely chosen by the driver author as long as he also add the correct values in the loading routine ;) ) <sharedfeat name="addon" value="DVC"/> (this can be of use in cdi titles which won't work without the DigitalVideoCard expansion) ---------- 3. <info> fields: these belongs directly to the main <software> entry, like the <sharedfeat>, but they do get stored in the main software entry, not with the <part>. They should be used to store additional info which might be of use for frontends, but that are not strictly necessary for emulation (if you have to describe some fundamental hardware characteristic that has to be checked during emulation, then you should use <sharedfeat> not <info>). Possible examples include the name of the development team, or the serial number of the cart, etc but it's up to the list creator to decide what to use this for and if to use it at all examples <info name="developer" value="Treasure"/> <info name="serial" value="NUS-NSMJ-JPN"/> As already said, imho the format can now be considered finalized. I cannot really think of anything else that we might want to include in the format, without getting redundant. p.s. In fact, some small change is still required in the core to fully support the new fields (e.g. at the moment <info> are not loaded by the core), but the xml format won't be touched.
* Converted core_options to a class. Removed a bunch of marginal Aaron Giles2011-03-031-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | functionality in favor of alternate mechanisms. Errors are now reported via an astring rather than via callbacks. Every option must now specify a type (command, integer, float, string, boolean, etc). Command behavior has changed so that only one command is permitted. [Aaron Giles] Changed fileio system to accept just a raw searchpath instead of an options/option name combination. [Aaron Giles] Created emu_options class dervied from core_options which wraps core emulator options. Added mechanisms to cleanly change the system name and add/remove system-specific options, versus the old way using callbacks. Also added read accessors for all the options, to ensure consistency in how parameters are handled. Changed most core systems to access emu_options instead of core_options. Also changed machine->options() to return emu_options. [Aaron Giles] Created cli_options class derived from emu_options which adds the command-line specific options. Updated clifront code to leverage the new class and the new core behaviors. cli_execute() now accepts a cli_options object when called. [Aaron Giles] Updated both SDL and Windows to have their own options classes, derived from cli_options, which add the OSD-specific options on top of everything else. Added accessors for all the options so that queries are strongly typed and simplified. [Aaron Giles] Out of whatsnew: I've surely screwed up some stuff, though I have smoke tested a bunch of things. Let me know if you hit anything odd. Also I know this change will impact the WINUI stuff, please let me know if there are issues. All the functionality necessary should still be present. If it's not obvious, please talk to me before adding stuff to the core_options class.
* softlist wip code to add more info nodes [Fabio Priuli] Miodrag Milanovic2011-02-271-0/+1
|
* mame_file is now emu_file and is a class. It is required Aaron Giles2011-02-121-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | to pass a core_options object to the constructor, along with a search path. This required pushing either a running_machine or a core_options through some code that wasn't previously ready to handle it. emu_files can be reused over multiple open/close sessions, and a lot of core code cleaned up nicely as things were converted to them. Also created a file_enumerator class for iterating over files in a searchpath. This replaces the old mame_openpath functions. Changed machine->options() to return a reference. Removed public nvram_open() and fixed jchan/kaneko16 to stop directly saving NVRAM. Removed most of the mame_options() calls; this will soon go away entirely, so don't add any more. Added core_options to device_validity_check() so they can be used to validate things.
* Added code to display additional software info in the internal file manager ↵ Fabio Priuli2011-01-181-0/+1
| | | | (if the software list contains it). No whatsnew needed, being targeted to MESS usage.
* softlists: added WARNING if loading a software with supported="partial" or ↵ Fabio Priuli2011-01-141-0/+3
| | | | "no" [Fabio Priuli]
* clifront.c: improved the behavior of -listsoftware by updating DTD, by ↵ Fabio Priuli2011-01-121-0/+2
| | | | adding output of most missing elements and attributes (softlist description, features & diskdata) and by fixing size and offset formats [Fabio Priuli]
* MDRV_* -> MCFG_* Aaron Giles2010-12-311-15/+15
| | | | | There hasn't been a machine driver for many years.
* - Added MDRV_SOFTWARE_LIST_COMPATIBLE_ADD for adding compatible software ↵ Miodrag Milanovic2010-07-061-4/+16
| | | | | | | lists (for documentation purposes) [Miodrag Milanovic] - listsoftware option now return only original software lists - UI is updated to enable mounting software items per device, it will display only items from list that are for specific device - Separate compatible software lists in UI
* Support for multiple software list per driver [Miodrag Milanovic] Miodrag Milanovic2010-07-061-6/+4
|
* Software list update: [Wilbert Pol] Miodrag Milanovic2010-07-041-3/+2
| | | | | - Software list xml files are now read in full such that information for clone and parent sets is available. - Added validity check to check for existence of parent sets.
* - Moved softlist implementation from MESS [Miodrag Milanovic] Miodrag Milanovic2010-06-201-0/+113
- Moved image related UI from MESS to emu core - Reimplemented filename related image device calls