summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Remove up to one frame of input latency. (#5901) antonioginer2019-11-164-1/+13
| | | | | | | | | | * Remove up to one frame of input latency. Makes MAME virtually lagless on VRR monitors. * Use empty parentheses and clean interface member calls * Add new option -instant_blit to make this feature optional * Rename new option to -lowlatency, -ll
* cgsix: Add raw parameters for screen (nw) AJR2019-11-161-0/+1
|
* schedule: pick some really low-hanging fruit (nw) Vas Crabb2019-11-152-43/+53
|
* Correct one XTAL value (nw) AJR2019-11-131-0/+1
|
* These two should be noexcept as well (nw) AJR2019-11-092-4/+4
|
* assert aborts on failure - abort is not an exception. conditional noexcept ↵ Vas Crabb2019-11-106-27/+19
| | | | is an antipattern, get rid of it. (nw)
* Make many device_execute_interface functions noexcept, including the ↵ AJR2019-11-097-59/+69
| | | | | | | | "information" overrides. This also covers several time-related functions in attotime, running_machine and emu_timer. (nw) m6805: Calculate min_cycles and max_cycles once at device_start time (Nw) attotime: Add as_khz and as_mhz (nw)
* start putting noexcept on things that have no business throwing exceptions, ↵ Vas Crabb2019-11-104-93/+102
| | | | starting with diimage. also fix a slight bug in the interface matching function for software list parts. (nw)
* Cleaned up Virtal Boy slot code. Vas Crabb2019-11-101-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vboy.xml updates: * Set width and endianness for all ROM regions * Added width and endianness for SRAM, assuming all cartridges have 8k*32 SRAM for now * Removed mirroring - this is an implementation detail * Removed "slot" features - there's enough information to work this out anyway bus/vboy updates: * Made slot probe software part to determine cartridge type * Made cartridges responsible for installing themselves * Added support for arbitrary cartridge sizes, assuming simplistic decoding * Added support for 8-bit and 16-bit SRAM on LSBs * Added support for EXP space and INTCRO output * Fixed SRAM not being loaded bus/generic: added a helper for mapping non-power-of-two memory with simple decoding cpu/v810: send I/O accesses to program space if I/O space is unconfigured vboy.cpp: updated for changed slot and CPU code bus/wswan: added notes The Virtual Boy software list is still in pretty poor shape. It's assuming all carts with SRAM have 8k*32, there are a bunch of feature tags for ICs that don't actually give an IC type, making them useless, 3-D Tetris mentions a battery but doesn't have an SRAM data area, Virtual Fishing refers to a HY6254ALLJ-10 which isn't a real part (I assume it means HY6264ALLJ-10 which is an 8k*8 50µA standby SRAM).
* -screen: Only clear or allocate scan bitmaps in excess of the previous ↵ MooglyGuy2019-11-051-11/+30
| | | | height. Fixes blank portions of smw2u, possibly others. [Ryan Holtz]
* (nw) be strictly POSIX compliant, reduce fragmentation, get rid of an unused ↵ Vas Crabb2019-11-051-16/+16
| | | | member
* Set global locale when parsing with nanosvg - fixes SVG display issues when ↵ Vas Crabb2019-11-051-0/+10
| | | | locale is not English
* -screen: Fixed out-of-bounds vector accesses on interlaced snes games, nw MooglyGuy2019-11-032-28/+63
|
* Spring cleaning: Vas Crabb2019-11-0114-255/+407
| | | | | | | | | | | | * Changed emu_fatalerror to use util::string_format semantics * Fixed some incorrectly marked up stuff in build scripts * Make internal layout compression type a scoped enum (only zlib is supported still, but at least the values aren't magic numbers now) * Fixed memory leaks in Xbox USB * There can only be one "perfect quantum" device - enforce that only the root machine can set it, as allowing subdevices to will cause weird issues with slot cards overiding it * Allow multiple devices to set maximum quantum and use the most restrictive one (it's maximum quantum, it would be minimum interleave) * Got rid of device_slot_card_interface as it wasn't providing value * Added a helper template to reduce certain kinds of boilerplate in slots/buses * Cleaned up some particularly bad slot code (plenty more of that to do), and made some slots more idiomatic
* screen.cpp: remove leftover debug print (nw) Vas Crabb2019-10-291-5/+0
|
* (nw) move some stuff to an anonymous namespace, and fully specialise ↵ Vas Crabb2019-10-261-50/+54
| | | | templates that are no longer member classes
* tilemap.cpp: Relax assert and do some sanity checks (fixes mtrain and strain ↵ AJR2019-10-261-14/+20
| | | | | | with DEBUG=1) Note that opengolf is still broken, with a segmentation fault occurring at some point.
* Make devdelegate more like devcb for configuration. This is a Vas Crabb2019-10-2623-1263/+1110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* srcclean (nw) Vas Crabb2019-10-263-4/+4
|
* dvmemory: migrate to softfloat3 (nw) Patrick Mackinlay2019-10-252-11/+10
|
* disable VALIDATE_REFCOUNTS, due to nforcepc installing a device map while a ↵ smf-2019-10-251-1/+1
| | | | handler is being temporarily ref counted to prevent it being deleted. (nw)
* (nw) keep a persistent temporary palette buffer in bgfx chain manager, back ↵ Vas Crabb2019-10-253-18/+10
| | | | out some unintentional screen changes
* New machines marked as NOT_WORKING AJR2019-10-251-0/+1
| | | | | ---------------------------------- Teleray Model 10 [Bitsavers]
* -screen: Added support for screens that vary horizontal width mid-frame, and ↵ MooglyGuy2019-10-243-63/+266
| | | | hooked it up to the SNES driver. Fixes dkongcu intro and others. [Ryan Holtz]
* Spelling (#5796) Zoë Blade2019-10-241-1/+1
| | | | | | | | | | | | * Tidy up comments * Fix typos * Fix spelling * Tidy * Tidy
* Tidy grammar Zoë Blade2019-10-231-2/+2
|
* Ref count in flight calls when a tap is installed, plus fix for less ↵ smf-2019-10-212-4/+12
| | | | permissive compilers [O. Galibert, smf]
* ref count in flight calls, fixes MT07456 [O. Galibert, smf] smf-2019-10-211-0/+8
|
* (nw) add doxygen comments for a bunch of core stuff, and convert a bunch of ↵ Vas Crabb2019-10-166-46/+303
| | | | comments to doxygen format
* xtal.cpp: Some more Macintosh XTALs for later use (nw) AJR2019-10-151-0/+3
|
* -bgfx: Do texture format conversion via a full-screen GPU pass. [Ryan Holtz] MooglyGuy2019-10-132-7/+11
|
* xtal: add comment (nw) hap2019-10-131-1/+1
|
* Merge pull request #5686 from JoakimLarsson/epc_3 Joakim Larsson Edström2019-10-111-0/+1
|\ | | | | Rebase and completion of split out of epc driver and addition of graphics card
| * mda: Added Ericsson Monochrome HR Graphics Board 1070 (might be splitted out ↵ Joakim Larsson Edstrom2019-09-261-0/+1
| | | | | | | | later) and introduced logmacro.h
* | (nw) clean up more stuff, mostly leftover from MCFG removal Vas Crabb2019-10-112-10/+10
| |
* | (nw) removed every remaining AM_ macro I could find in comments, but one in ↵ Ivan Vangelista2019-10-101-1/+1
| | | | | | | | emu\memarray.h cause I didn't want to cause a full recompile for this (nw)
* | swtpc8212: Split into separate driver (nw) AJR2019-10-081-0/+1
| |
* | (nw) misc stuff: Vas Crabb2019-10-094-108/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * screen: validate crystal values used for set_raw * driver: get rid of sound start/reset overrides in machine configuration * vrender0.cpp, nexus3d.cpp: corrected pixel clock crystal value * mw8080bw.cpp: turned several audio subsystems into devices * bus/sat_ctrl: don't start subdevices in device_start - the machine does it for you * mb14241.cpp: simplify handlers * fgoal.cpp: updated for simplified handlers * devfind, screen: repair some doxy comments that had rotted with refactoring * doxygen: disable warnings for undocumented things - it's most of our codebase * snowbros.cpp: restore an output level setting lost in MCFG removal There's an outstanding validation error from the HP98543 DIO video card not using a valid crystal value. Someone needs to find a picture of the card and confirm or deny the existence of the 39.504MHz crystal. The various start/reset overrides are bugs waiting to happen. It's not immediately obvious that the ones run earlier can end up being called multiple times if subsequent ones throw missing dependencies exceptions. They're a relic of when everything from the old C-style drivers was thrown into classes all jumbled together.
* | addrmap.h: Replace assert with emu_fatalerror using helper function (nw) AJR2019-10-051-50/+35
| |
* | addrmap.h: Assert in case subdevice fails to find things (nw) AJR2019-10-041-8/+50
| |
* | 'subwoofer' does not describe a position (nw) Vas Crabb2019-10-051-7/+12
| |
* | Add rudimentary validity checking for address_space_config objects (nw) AJR2019-10-041-1/+12
| |
* | Fix AVI framerate feos2019-10-032-10/+10
| | | | | | | | | | | | MAME was setting up AVI before devices have properly launched, so default 60fps was used, which resulted in skipped frames in the video if machine's framerate is above 60 (btoads), and presumably duplicate frames for machines below 60fps (haven't tested). Now every frame that is generated is also present in the video.
* | prof180x: Correct CPU type and XTAL frequency (nw) AJR2019-09-301-1/+1
| |
* | stop breaking msvc (nw) Patrick Mackinlay2019-09-271-1/+2
| | | | | | This isn't the right solution, the ASIO stuff should move to the build system according to @cuavas, but this gets msvc working again.
* | Make osd_printf_* use util/strformat semantics. Vas Crabb2019-09-2615-111/+105
|/ | | | | | | | | | | | | | | | | (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.
* Merge pull request #5683 from vadosnaprimer/sound_callback R. Belmont2019-09-252-0/+4
|\ | | | | Lua callback after sound update has generated new samples
| * callback after sound update has generated new samples feos2019-09-242-0/+4
| |
* | xtal.cpp: Slight correction to one value (nw) AJR2019-09-251-1/+1
| |
* | tilemap.cpp: Improve contains assert, fixing tilemap viewer in debug build AJR2019-09-231-1/+4
| |