summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/emumem_het.h
Commit message (Collapse)AuthorAgeFilesLines
* Encourage use of read/write delegate creator helpers (demo on Game Boy ↵ Vas Crabb2023-04-111-2/+2
| | | | | cartridges). (#11091) This makes it simpler to install read-write handlers, as you don't need to think about the "smo" suffixes.
* emumem: First try at wait states Olivier Galibert2023-02-221-4/+6
|
* emumem: Add accessors lookup_{read,write]_*_flags to lookup flags without ↵ Olivier Galibert2022-08-041-0/+2
| | | | actually doing the access
* Addressed some Lua scripting pitfalls. (#9294) Vas Crabb2022-02-121-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | Addressed pure virtual function call crash on end of emulation session if you haven't explicitly removed all address space taps, memory corruption on end of emulation session if you haven't explicitly removed all address space change notifiers, and symbol being garbage-collected out from under you while you have parsed expressions or other symbol tables that depend on them. Removed the copy constructor for parsed expressions as the underlying C++ copy constructor appears to be broken, and simplified symbol table constructors. Also made symbol table add methods return the new entry to avoid the need for an extra lookup. Fixed breakpoint/watchpoint objects being inappropriately copied into the tables returned by bplist() and wplist(), allowing the enabled property to be modifiable for breakpoint and watchpoint objects in Lua. Fixed drivers and devices causing a new memory pass-through handler to be allocated on each soft reset, and fixed multiple instances of taps being installed in the event the machine is reset before the tap is removed. Added classes for managing broadcast subscriptions, and adapted address spaces to use this for change notifications.
* Fun with flags: Allows handlers to have user-defined flags set on Olivier Galibert2021-11-281-0/+2
| | | | | | them, which can them be picked up on access with the {read,write}_*_flags variants of the accessors. Example use with the i960 and its burstable rom/ram.
* emu/emumem*: Removed endianness template parameter from handler_entry_read, ↵ ajrhacker2021-07-091-8/+8
| | | | | handler_entry_write and closely related classes. (#8255) This appears to substantially reduce compilation time and binary size without too much impact on critical paths. The only critical-path parts really touched by this are probably handler_entry_read_units<Width, AddrShift, Endian>::read and handler_entry_write_units<Width, AddrShift, Endian>::write, which no longer need a branch on descriptor endianness for the downcast. The other instances of where the endianness now needs to be fetched from the address space are practically all in constructors, which probably don't get called too often except in drivers where the memory map is regularly rewritten (e.g. segas16b.cpp); even then the performance impact probably isn't huge.
* emumem: more idiomatic way to access members inherited from ↵ Vas Crabb2021-01-041-2/+6
| | | | argument-dependent base templates (may or may not work around GCC11 bug causing #7616)
* emumem: A little more speedup. cache and specific change syntax, and are ↵ Olivier Galibert2020-05-251-4/+4
| | | | | | | | | | | | | | | | not pointers anymore [O. Galibert] The last(?) two changes are: - Add a template parameter to everything (theoretically the address space width, in practice a level derived from it to keep as much compatibility between widths as possible) so that the shift size becomes a constant. - Change the syntax of declaring and initializing the caches and specifics so that they're embedded in the owner device. Solves lifetime issues and also removes one indirection (looking up the base dispatch pointer through the cache/specific pointer).
* memory: Allow simplified versions of handlers [O. Galibert] Olivier Galibert2018-08-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | A standard memory handler has as a prototype (where uX = u8, u16, u32 or u64): uX device::read(address_space &space, offs_t offset, uX mem_mask); void device::write(address_space &space, offs_t offset, uX data, uX mem_mask); We now allow simplified versions which are: uX device::read(offs_t offset, uX mem_mask); void device::write(offs_t offset, uX data, uX mem_mask); uX device::read(offs_t offset); void device::write(offs_t offset, uX data); uX device::read(); void device::write(uX data); Use them at will. Also consider (DECLARE_)(READ|WRITE)(8|16|32|64)_MEMBER on the way out, use the explicit prototypes. Same for lambdas in the memory map, the parameters are now optional following the same combinations.
* emumem: Backend modernization [O. Galibert] Olivier Galibert2018-06-291-0/+50