| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
| |
logic into the execute interface. Added minimum duration parameter to the timeslice function. Switched to using delegates to call the various execute paths.
|
| |
|
|
| |
timer. Switched back to a permanent tail timer to dodge nullptr checks. Moved timer list management out of helper class and back into the core logic now that we're back to a single list. Reduced some unecessary friending.
|
| |
|
|
| |
data, and postsave to restore it, rather than saving each timer. Add a device_persistent_timer to accept device parameters and keep those details out of schedule.cpp. Device timers now using parameter 2 to store the ID, rather than the ID being special.
|
| |
|
|
| |
that were caught by this. Updated all interfaces and core systems to use new timer classes.
|
| |
|
|
| |
timers. Update sound manager to use native callback form. Update screen to use persistent timers.
|
| | |
|
| |
|
|
| |
callback types. timer_callback is a class containing a timer_expired_delegate plus a user-supplied pointer, and accounting information for registration. timer_instance is a single active timer in the scheduler. persistent_timer is what you get back from timer_alloc() now, and has methods for dynamic changes. transient_timer_factory is what you use to create transient timers. Devices now own a transient_timer_factory for transient device timers. persistent_timers can be emedded and initialized directly.
|
| |
|
|
| |
parameters to u64. Change first parameter of device timers to be emu_timer const. Updated all device timers to follow suit.
|
| |
|
|
| |
order. Created new timer_expired_delegate class which is based on a new native timer expired function signature, and which can convert the old function signature automatically via a trampoline. Added several other function signatures which can now be used directly as timer callbacks.
|
| |
|
|
| |
emu_timer_cb for all timers internally. Split out timer-related classes into their own header timer.h, which is included before device.h. Devices now own their own emu_timer_cb for device timers.
|
| |
|
|
| |
to enregistration to help differentiate in non-device cases.
|
| |
|
|
| |
this will be addressed once we have flexible callback signatures. A few more synchronize conversions.
|
| | |
|
| |
|
|
| |
timer_set instances and moved timer_set to private (since it's still used by synchronize). Added timer_alloc template to device_t for common case of allocating a device callback bound to the device. Added interface_timer_alloc template to device_interface as well. Extended emu_timer_cb to allow enregistering directly on the scheduler or on a device_interface.
|
| |
|
|
| |
used it. Created timer_expired_registered_delegate for registering timer callbacks. Updated the callbacks in dcs.cpp to use them as a testbed.
|
| |
|
|
| |
several situations where timers would be inserted/removed unnecessarily. Moved basetime_relative class into the device scheduler.
|
| |
|
|
| |
relative times on all timers. More heavily document the inner scheduler loop. Cache several variables locally. Split cycle eating logic out.
|
| |
|
|
| |
compare in the inner loop.
|
| |
|
|
| |
needless extra loops in core scheduler.
|
| |
|
|
| |
during core scheduling. Seems to be ~4% on firetrap as an example.
|
| |
|
|
| |
happen. Small performance uplift from removing code in the inner scheduling loop.
|
| |
|
|
|
|
|
|
|
|
| |
* Removed inline assembly for operations compilers handle well.
* Added ARM and AArch64 implementation for a few operations.
* Added unsigned integer add with carry out operations.
-cpu/drccache.cpp: Detect whether RWX pages are supported.
-dynax.cpp: Improved a few hanafuda DIP switch descriptions.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The things that were previously called device iterators are not
iterators in the C++ sense of the word. This is confusing for
newcomers. These have been renamed to be device enumerators.
Several Lua methods and properties that previously returned tables now
return lightweight wrappers for the underlying objects. This means
creating them is a lot faster, but you can't modify them, and the
performance characteristics of different operations varies.
The render manager's target list uses 1-based indexing to be more like
idiomatic Lua.
It's now possible to create a device enumerator on any device, and then
get subdevices (or sibling devices) using a relative tag.
Much more render/layout functionality has been exposed to Lua. Layout
scripts now have access to the layout file and can directly set the
state of an item with no bindings, or register callbacks to obtain
state. Some things that were previously methods are now read-only
properties.
Layout files are no longer required to supply a "name". This was
problematic because the same layout file could be loaded for multiple
instances of the same device, and each instance of the layout file
should use the correct inputs (and in the future outputs) for the device
instance it's associated with.
This should also fix video output with MSVC builds by avoiding delegates
that return things that don't fit in a register.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
is an antipattern, get rid of it. (nw)
|
| |
|
|
|
|
|
|
| |
"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)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
| |
crash. (nw)
|
| | |
|
| |
|
|
| |
rate is zero. This fixes all reported bugs. (nw)
|
| |
|
|
|
|
|
| |
This is damn sensitive code, and generates differences all over the
place we don't really explain. The changes should be justified by
themselves and tested in collaboration with Tafoid to ensure the
differences are not a problem.
|
| |
|
|
| |
[smf]
|
| | |
|
| |
|
|
|
|
| |
* Move around the debugger hooks to get a small but measurable performance increase
* Remove emucore from external tools
* Improve performance of DSP16 interpreter a little by generating six variants of execution loop
|
| | |
|
| |
|
|
| |
in a second
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* New abbreviated types are in osd and util namespaces, and also in global namespace for things that #include "emu.h"
* Get rid of import of cstdint types to global namespace (C99 does this anyway)
* Remove the cstdint types from everything in emu
* Get rid of U64/S64 macros
* Fix a bug in dps16 caused by incorrect use of macro
* Fix debugcon not checking for "do " prefix case-insensitively
* Fix a lot of messed up tabulation
* More constexpr
* Fix up many __names
|
| |
|
|
|
| |
Use standard uint64_t, uint32_t, uint16_t or uint8_t instead of UINT64, UINT32, UINT16 or UINT8
also use standard int64_t, int32_t, int16_t or int8_t instead of INT64, INT32, INT16 or INT8
|
| |
|
|
| |
to inline functions (nw)
|
| |
|
|
|
| |
- made emu_timer register_save properly handle timer_expired_delegate()
- removed timer_expired_func and calls using it
|
| |
|
|
|
|
| |
Replace the old device_iterator and its specialized versions with functionally equivalent classes that use standard operators to yield references to devices/interfaces rather than pointers. With range-based for loops, they no longer have to be stored in named variables, though they can also be reused concurrently since the iteration state is now maintained by a subclass.
Add a few more typical getters to device_t::subdevice_list.
|
| |
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
| |
* Make stream_format return characters printed
* Add iostreams with std::vector storage
* Move to type-safe templates for logerror and popmessage
* Remove now-unnecessary I64FMT from calls to logerror/popmessage
* Put some lib/util stuff in util:: namespace
* Some fixes to Japanese translation
|