summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/util
Commit message (Collapse)AuthorAgeFilesLines
* xmlfile.cpp: Put newline where it’s supposed to go after element content. Vas Crabb2020-09-061-1/+2
|
* -util/xmlfile: Escape attribute and element content. Vas Crabb2020-09-061-4/+42
| | | | | | | | | | | | | | | | | | | | The previous behaviour was unintuitive - parsing an XML file and writing it out immediately would produce invalid XML if the file contained any characters that needed escaping. It makes far more sense to escape on writing rather than expecting the user to escape input. -Add preliminary support for visibility toggles to artwork system. This allows the user to show/hide related elements in a view, with nesting. The view can specify whether elements are shown or hidden by default. Settings are saved per host window/screen per view. There is no way to set the initial visibility state on the command line. Legacy "Space Invaders cabinet model" layers are mapped onto visibility toggles. This is not stable yet. In particular, the XML element/attribute names have not been finalised. The new features have not been added to complay.py to prevent them from being used before they're finalised.
* Don't ignore config elements with attributes but no child nodes. Vas Crabb2020-09-022-5/+16
|
* frontend: Added option to skip repeated imperfect emulation warnings. Vas Crabb2020-09-022-11/+10
| | | | | | | | | | | | | | | | The option is called skip_warnings, and it must be set in ui.ini (it can be set using the internal UI). Red warnings cannot be skipped; yellow warning can be skipped under certain circumstances. For a yellow warning to be skipped, the system must have been launched in a way that allows warnings to be displayed, in a configuration with the same set of devices flagged with unemulated/imperfect features, within the last seven days, and the warning must have been displayed within the past 14 days. Also fixed a bug with display of the MACHINE_NO_COCKTAIL flag in the internal UI, and increased the size of XML integer attributes to 64 bits.
* recording: fix frame sync regression (nw) hap2020-06-192-4/+4
|
* With permission from Dirk Best, apply 3-clause BSD license to common devices ↵ Vas Crabb2020-04-131-1/+0
| | | | | | and image handling (nw) Note that this does not apply to machine drivers or device implementations for a single machine family (e.g. Amiga chips or VTech expansion bus)
* split was using sha1.h directly - fix that (nw) Vas Crabb2020-04-131-1/+1
|
* util: re-implement SHA-1 and get rid of the two third-party implementations (nw) Vas Crabb2020-04-137-731/+198
|
* Revert "fixed some modernize-use-equals-default clang-tidy warnings (… (#6360) Oliver Stöneberg2020-04-0818-15/+110
| | | | | | | * Revert "fixed some modernize-use-equals-default clang-tidy warnings (nw)" This reverts commit 54486ab9 * fixed merge error
* centralise instantiation of more of the util::strformat engine Vas Crabb2020-04-082-0/+1066
|
* (nw) Cleanup on the way: Vas Crabb2020-03-101-11/+95
| | | | | | | | | | * Add doxygen comments for bit manipulation functions * Add an overload of BIT that works like the AArch64 UBFX instruction * Kill off some of the silly concatenating overloads for emu_file::open * Make searchpath acually useful for devices This is a checkpoint - I'm planning to improve ROM loading behaviour at least a little.
* util/strformat.h: future-proof for C++20 (GitHub #6275) Vas Crabb2020-02-091-31/+54
| | | | | | | (nw) I've triple-checked the code and it looks sane, but I'm still a bit nervous about changing such a fundamental part of MAME. If integer formatting appears to have changed after this, let me know ASAP. Also removed a workaround for older versions of GNU libstdc++ with incomplete C++14 support.
* Revert "Alfaskop improvements" Vas Crabb2020-01-312-21/+3
|
* Merge pull request #6068 from JoakimLarsson/alfaskop_pla Joakim Larsson Edström2020-01-312-3/+21
|\ | | | | Alfaskop improvements
| * alfaskop41xx.cpp, jedparse.h, mc6844.cpp : addressed PR feedback Joakim Larsson Edstrom2019-12-271-7/+6
| |
| * pla.cpp, jedparse, jedutil: Added recognition and some support for ↵ Joakim Larsson Edstrom2019-12-182-1/+20
| | | | | | | | alternative PLA binary format DataIO
* | there are reasons for things being the way they were (nw) Vas Crabb2020-01-318-6/+57
| |
* | fixed some modernize-use-auto clang-tidy warnings (nw) (#6238) Oliver Stöneberg2020-01-3012-38/+38
| |
* | fixed some modernize-use-equals-default clang-tidy warnings (nw) (#6237) Oliver Stöneberg2020-01-3022-166/+20
| |
* | fixed some clang-tidy warnings (nw) (#6236) Oliver Stöneberg2020-01-307-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fixed some modernize-redundant-void-arg clang-tidy warnings (nw) * fixed some modernize-use-bool-literals clang-tidy warnings (nw) * fixed some modernize-use-emplace clang-tidy warnings (nw) * fixed some performance-move-const-arg clang-tidy warnings (nw) * fixed some readability-redundant-control-flow clang-tidy warnings (nw) * fixed some readability-redundant-string-cstr clang-tidy warnings (nw) * fixed some performance-unnecessary-value-param clang-tidy warnings (nw)
* | Merge pull request #6195 from firewave/includes R. Belmont2020-01-2230-61/+61
|\ \ | | | | | | use C++ library includes (nw)
| * | use C++ library includes (nw) firewave2020-01-2230-61/+61
| | |
* | | fixed some clang-tidy warnings (nw) (#6197) Oliver Stöneberg2020-01-222-2/+2
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | * fixed some bugprone-throw-keyword-missing clang-tidy warnings (nw) * fixed some modernize-use-nullptr clang-tidy warnings (nw) * fixed some readability-delete-null-pointer clang-tidy warnings (nw) * fixed some performance-faster-string-find clang-tidy warnings (nw) * fixed some performance-for-range-copy clang-tidy warnings (nw) * fixed some readability-redundant-string-cstr clang-tidy warnings (nw)
* | Eliminate simple_list_wrapper and replace its only use (nw) AJR2020-01-181-34/+0
| | | | | | | | The replacement of append with emplace_front alters the sequence, but that should cause no difference in behavior here.
* | add missing return statement for LRU cache assignment operator (nw) Vas Crabb2019-12-201-0/+1
| |
* | coretmpl.h: different approach to member initialisation - hopefully work ↵ Vas Crabb2019-12-201-65/+62
|/ | | | around issue with move constructor; also stop using names that start with underscore followed by capital letter as they're reserved (nw)
* Fix clang error: cannot initialize a parameter of type 'void *' with an ↵ AJR2019-11-241-1/+1
| | | | lvalue of type 'volatile unsigned char *' (nw)
* apparently 3AM is not the time to code (nw) Vas Crabb2019-11-251-3/+3
|
* helps to git add before git commit (nw) Vas Crabb2019-11-251-1/+1
|
* pre-fill things allocated with operator new with 0xcd in debug builds (value ↵ Vas Crabb2019-11-251-0/+34
| | | | can be changed by setting global g_mame_new_prefill_byte with a debugger) - this is gonna hurt performance, but it will help catch issues exposed when we remove pre-clearing before constructing devices
* util/options.cpp: fix locale issues and a const correctness issue Vas Crabb2019-11-232-89/+169
|
* misc cleanup: Vas Crabb2019-11-183-101/+99
| | | | | | | * Got rid of some more simple_list in core debugger code * Fixed a buffer overrun in wavwrite (buffer half requried size) * Slightly reduced dependencies and overhead in wavwrite * Made new disassembly windows in Qt debugger default to current CPU
* Fix invalid std::vector<> lookup in aviio.cpp npwoods2019-11-041-1/+2
| | | | | | | | | | | | | This fixes a case where: * m_soundbuf_samples == processedsamples * processedsamples > 0 * processedsamples * stream->channels() == m_soundbuf.size() In this scenario, the std::memmove() would do nothing (moving zero bytes), but the operator[] on the second parameter to std::memmove() overflows the array. This can be benign in optimized builds (because the third parameter to std::memmove() is 0), but on debugging builds this can cause an assert.
* Make devdelegate more like devcb for configuration. This is a Vas Crabb2019-10-261-32/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fundamental change to show device delegates are configured. Device delegates are now aware of the current device during configuration and will resolve string tags relative to it. This means that device delegates need a device to be supplied on construction so they can find the machine configuration object. There's a one-dimensional array helper to make it easier to construct arrays of device delegates with the same owner. (I didn't make an n-dimensional one because I didn't hit a use case, but it would be a simple addition.) There's no more bind_relative_to member - just call resolve() like you would for a devcb. There's also no need to cast nullptr when creating a late bind device delegate. The flip side is that for an overloaded or non-capturing lambda you'll need to cast to the desired type. There is one less conditional branch in the hot path for calls for delegates bound to a function pointer of member function pointer. This comes at the cost of one additional unconditional branch in the hot path for calls to delegates bound to functoids (lambdas, functions that don't take an object reference, other callable objects). This applies to all delegates, not just device delegates. Address spaces will now print an error message if a late bind error is encountered while installing a handler. This will give the range and address range, hopefully making it easier to guess which memory map is faulty. For the simple case of allowing a device_delegate member to be configured, use a member like this: template <typename... T> void set_foo(T &&...args) { m_foo_cb.set(std::forward<T>(args)...); } For a case where different delegates need to be used depending on the function signature, see src/emu/screen.h (the screen update function setters). Device delegates now take a target specification and function pointer. The target may be: * Target omitted, implying the current device being configured. This can only be used during configuration. It will work as long as the current device is not removed/replaced. * A tag string relative to the current device being configured. This can only be used during configuration. It will not be callable until .resolve() is called. It will work as long as the current device is not removed/replaced. * A device finder (required_device/optional_device). The delegate will late bind to the current target of the device finder. It will not be callable until .resolve() is called. It will work properly if the target device is replaced, as long as the device finder's base object isn't removed/replaced. * A reference to an object. It will be callable immediately. It will work as long as the target object is not removed/replaced. The target types and restrictions are pretty similar to what you already have on object finders and devcb, so it shouldn't cause any surprises. Note that dereferencing a device finder will changes the effect. To illustrate this: ... required_device<some_device> m_dev; ... m_dev(*this, "dev") ... // will late bind to "dev" relative to *this // will work if "dev" hasn't been created yet or is replaced later // won't work if *this is removed/replaced // won't be callable until resolve() is called cb1.set(m_dev, FUNC(some_device::w)); ... // will bind to current target of m_dev // will not work if m_dev is not resolved // will not work if "dev" is replaced later // will be callable immediately cb2.set(*m_dev, FUNC(some_device::w)); ... The order of the target and name has been reversed for functoids (lambdas and other callable objects). This allows the NAME macro to be used on lambdas and functoids. For example: foo.set_something(NAME([this] (u8 data) { m_something = data; })); I realise the diagnostic messages get ugly if you use NAME on a large lambda. You can still give a literal name, you just have to place it after the lambda rather than before. This is uglier, but it's intentional. I'm trying to drive developers away from a certain style. While it's nice that you can put half the driver code in the memory map, it detracts from readability. It's hard to visualise the memory range mappings if the memory map functions are punctuated by large lambdas. There's also slightly higher overhead for calling a delegate bound to a functoid. If the code is prettier for trivial lambdas but uglier for non-trivial lambdas in address maps, it will hopefully steer people away from putting non-trivial lambdas in memory maps. There were some devices that were converted from using plain delegates without adding bind_relative_to calls. I fixed some of them (e.g. LaserDisc) but I probably missed some. These will likely crash on unresolved delegate calls. There are some devices that reset delegates at configuration complete or start time, preventing them from being set up during configuration (e.g. src/devices/video/ppu2c0x.cpp and src/devices/machine/68307.cpp). This goes against the design principles of how device delegates should be used, but I didn't change them because I don't trust myself to find all the places they're used. I've definitely broken some stuff with this (I know about asterix), so report issues and bear with me until I get it all fixed.
* Fix spelling, tidy whitespace Zoë Blade2019-10-212-14/+14
|
* aviio: increase max size (nw) hap2019-10-051-1/+1
|
* aviio: dont crash on buffer overflow (nw) hap2019-10-041-0/+3
|
* Make osd_printf_* use util/strformat semantics. Vas Crabb2019-09-264-56/+44
| | | | | | | | | | | | | | | | | (nw) This has been a long time coming but it's here at last. It should be easier now that logerror, popmessage and osd_printf_* behave like string_format and stream_format. Remember the differences from printf: * Any object with a stream out operator works with %s * %d, %i, %o, %x, %X, etc. work out the size by magic * No sign extending promotion to int for short/char * No widening/narrowing conversions for characters/strings * Same rules on all platforms, insulated from C runtime library * No format warnings from compiler * Assert in debug builds if number of arguments doesn't match format (nw) Also removed a pile of redundant c_str and string_format, and some workarounds for not being able to portably format 64-bit integers or long long.
* -avivideo.cpp: Added an image device to provide looping uncompressed AVI ↵ mooglyguy2019-09-232-14/+14
| | | | | | frames as input. [Ryan Holtz] -vino.cpp: Adapted to support both avivideo_image_device and picture_image_device. [Ryan Holtz]
* Make bitmap8_t, bitmap16_t, bitmap32_t and bitmap64_t specializations of one ↵ AJR2019-09-162-91/+66
| | | | class template (nw)
* render.cpp: print a warning and continue on encountering malformed XML in a ↵ Vas Crabb2019-09-081-6/+10
| | | | layout file (nw)
* Fix build in newer Emscripten versions (nw) Justin Kerk2019-08-081-1/+1
|
* Use canonical spelling of "canonical" (nw) AJR2019-08-022-2/+2
|
* harddisk: Support non-CHD harddisk images in raw and 2MG format [R. Belmont] arbee2019-08-012-7/+73
|
* Merge pull request #5423 from npwoods/core_options_moves ajrhacker2019-08-011-2/+2
|\ | | | | Enabled default move ctor/assignments in core_options, and changed plugin_options code to use them
| * Enabled default move ctor/assignments in core_options, and changed npwoods2019-08-011-2/+2
| | | | | | | | plugin_options code to use them
* | coreutil: remove single-use (and savestate unsafe) rand_memory function (nw) hap2019-08-012-25/+0
|/
* srcclean (nw) Vas Crabb2019-07-282-5/+5
|
* -aviio: Added functionality to read RGB24 and YUV420p uncompressed video ↵ mooglyguy2019-07-212-15/+137
| | | | frames. [Ryan Holtz]
* imgtool: MT 6693 wip, solves mess_hd issue (nw) Sergey Svishchev2019-06-021-0/+1
|