summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/emumem_hedw.h
Commit message (Collapse)AuthorAgeFilesLines
* Encourage use of read/write delegate creator helpers (demo on Game Boy ↵ Vas Crabb2023-04-111-1/+1
| | | | | 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-0/+1
|
* emumem: Add accessors lookup_{read,write]_*_flags to lookup flags without ↵ Olivier Galibert2022-08-041-0/+1
| | | | actually doing the access
* Fun with flags: Allows handlers to have user-defined flags set on Olivier Galibert2021-11-281-0/+1
| | | | | | 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.
* views: Fix a number of problems with specific boundaries. Olivier Galibert2021-09-111-1/+2
|
* emu/emumem*: Removed endianness template parameter from handler_entry_read, ↵ ajrhacker2021-07-091-26/+26
| | | | | 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/+7
| | | | argument-dependent base templates (may or may not work around GCC11 bug causing #7616)
* Work around GNU libstdc++ wanting to stack large temporaries when vector ↵ Vas Crabb2020-11-231-2/+22
| | | | elements can be trivially constructed.
* Implement views, which are essentially bankdevs integrated into the Olivier Galibert2020-11-221-6/+20
| | | | memory map system. [O. Galibert]
* emumem: A little more speedup. cache and specific change syntax, and are ↵ Olivier Galibert2020-05-251-3/+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).
* emumem: Another slight speedup. masking before dispatch at top level is not ↵ Olivier Galibert2020-05-211-1/+1
| | | | needed because it's already done at the global mask level. [O. Galibert]
* emumem: Slight speedup [O. Galibert] Olivier Galibert2020-05-191-0/+2
|
* 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/+61