summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
Commit message (Collapse)AuthorAgeFilesLines
* Moved the state saving system to C++. For now the registration macros Aaron Giles2011-02-0857-745/+636
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | are still intact. The new state_manager class has templatized methods for saving the various types, and through template specialization can save more complex system types cleanly (like bitmaps and attotimes). Added new mechanism to detect proper state save types. This is much more strict and there will likely be some games/devices that fatalerror at startup until they are remedied. Spot checking has caught the more common situations. The new state_manager is embedded directly in the running_machine, allowing objects to register state saving in their constructors now. Added NAME() macro which is a generalization of FUNC() and can be used to wrap variables that are registered when directly using the new methods as opposed to the previous macros. For example: machine->state().save_item(NAME(global_item)) Added methods in the device_t class that implicitly register state against the current device, making for a cleaner interface. Just a couple of required regexes for now: state_save_register_postload( *)\(( *)([^,;]+), * \3->state().register_postload\1\(\2 state_save_register_presave( *)\(( *)([^,;]+), * \3->state().register_presave\1\(\2
* Move generic templates from emucore.h to emutempl.h. Aaron Giles2011-02-0719-358/+423
| | | | | | Normalize the tagged_list template to wrap a regular standard_list and have similar semantics. Updated a few direct callers to handle the changes.
* G65816: fixed operation on PowerPC Linux where char is unsigned [R. Belmont, ↵ R. Belmont2011-02-071-1/+1
| | | | billb]
* tms57002: significantly improved build speed on lower-end h/w [R. Belmont] R. Belmont2011-02-064-243/+270
| | | | | | | | No-whatsnew explanation: this takes OPTIMIZE=3 compile time for this core from over 1 hour down to about 2 minutes on PS3 Linux. (Yes, the tms57002 itself took over an hour to compile before - the thing has 256 MB of RAM and a very slow HDD so when it hits swap, swap hits back).
* Expand video output for EZV20-Monitor to the full dynamic range. Couriersud2011-02-061-2/+4
|
* As promised, the bulk update of timer calls: Aaron Giles2011-02-06117-622/+597
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timer_adjust_oneshot(t,...) => t->adjust(...) timer_adjust_periodic(t,...) => t->adjust(...) timer_reset(t,...) => t->reset(...) timer_enable(t,...) => t->enable(...) timer_enabled(t) => t->enabled() timer_get_param(t) => t->param() timer_get_ptr(t) => t->ptr() timer_set_param(t,...) => t->set_param(...) timer_set_ptr(t) => t->set_ptr(...) timer_timeelapsed(t) => t->elapsed() timer_timeleft(t) => t->remaining() timer_starttime(t) => t->start() timer_firetime(t) => t->expire() Also remove some stray legacy cpuexec* macros that were lurking in schedule.h): cpuexec_describe_context(m) => m->describe_context() cpuexec_boost_interleave(m,...) => m->scheduler().boot_interleave(...) cpuexec_trigger(m,...) => m->scheduler().trigger(...) cpuexec_triggertime(m,...) => m->scheduler().trigger(...) Specific regex'es used: timer_adjust_oneshot( *)\(( *)([^,;]+), * \3->adjust\1\(\2 timer_adjust_periodic( *)\(( *)([^,;]+), * \3->adjust\1\(\2 (->adjust.*), *0( *)\) \1\2\) timer_reset( *)\(( *)([^,;]+), * \3->reset\1\(\2 (->reset *\(.*)attotime::never \1 timer_enable( *)\(( *)([^,;]+), * \3->enable\1\(\2 timer_enabled( *)\(( *)([^,;)]+)\) \3->enabled\1\(\2\) timer_get_param( *)\(( *)([^,;)]+)\) \3->param\1\(\2\) timer_get_ptr( *)\(( *)([^,;)]+)\) \3->ptr\1\(\2\) timer_timeelapsed( *)\(( *)([^,;)]+)\) \3->elapsed\1\(\2\) timer_timeleft( *)\(( *)([^,;)]+)\) \3->remaining\1\(\2\) timer_starttime( *)\(( *)([^,;)]+)\) \3->start\1\(\2\) timer_firetime( *)\(( *)([^,;)]+)\) \3->expire\1\(\2\) timer_set_param( *)\(( *)([^,;]+), * \3->set_param\1\(\2 timer_set_ptr( *)\(( *)([^,;]+), * \3->set_ptr\1\(\2 cpuexec_describe_context( *)\(( *)([^,;)]+)\) \3->describe_context\1\(\2\) \&m_machine->describe_context m_machine.describe_context cpuexec_boost_interleave( *)\(( *)([^,;]+), * \3->scheduler().boost_interleave\1\(\2 cpuexec_trigger( *)\(( *)([^,;]+), * \3->scheduler().trigger\1\(\2 cpuexec_triggertime( *)\(( *)([^,;]+), * \3->scheduler().trigger\1\(\2
* Fix timer_pulse. Better would be not to use it at all, though. Aaron Giles2011-02-061-1/+1
|
* Fix build break from last checkin. Aaron Giles2011-02-0626-97/+84
| | | | | | | | | | | | | | | | | Also replace timer_get_time() with machine->time() 1. Main conversion timer_get_time( *)\( *([^)]+) *\) \2->time\1() 2. Cleanup #1 &machine->time machine.time 3. Cleanup #2 &m_machine->time m_machine.time
* Convert emu_timers to objects. Move implementation and management of Aaron Giles2011-02-06123-1553/+1282
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timers into the scheduler. Retain TIMER devices as a separate wrapper in timer.c/.h. Inline wrappers are currently provided for all timer operations; a future update will bulk clean these up. Rather than using macros which hide generation of a string-ified name for callback functions, the new methods require passing both a function pointer plus a name string. A new macro FUNC() can be used to output both, and another macro MFUNC() can be used to output a stub-wrapped class member as a callback. Also added a time() method on the machine, so that machine->time() gives the current emulated time. A wrapper for timer_get_time is currently provided but will be bulk replaced in the future. For this update, convert all classic timer_alloc, timer_set, timer_pulse, and timer_call_after_resynch calls into method calls on the scheduler. For new device timers, added methods to the device_t class that make creating and managing these much simpler. Modern devices were updated to use these. Here are the regexes used; some manual cleanup (compiler-caught) will be needed since regex doesn't handle nested parentheses cleanly 1. Convert timer_call_after_resynch calls timer_call_after_resynch( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().synchronize\1\(\2FUNC(\6), \5, \4\) 2. Clean up trailing 0, NULL parameters (synchronize[^;]+), 0, NULL\) \1) 3. Clean up trailing NULL parameters (synchronize[^;]+), NULL\) \1) 4. Clean up completely empty parameter lists synchronize\(FUNC\(NULL\)\) synchronize() 5. Convert timer_set calls timer_set( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_set\1\(\2\4, FUNC(\7), \6, \5\) 6. Clean up trailing 0, NULL parameters (timer_set[^;]+), 0, NULL\) \1) 7. Clean up trailing NULL parameters (timer_set[^;]+), NULL\) \1) 8. Convert timer_set calls timer_pulse( *)\(( *)([^,;]+), *([^,;]+), *([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_pulse\1\(\2\4, FUNC(\7), \6, \5\) 9. Clean up trailing 0, NULL parameters (timer_pulse[^;]+), 0, NULL\) \1) 10. Clean up trailing NULL parameters (timer_pulse[^;]+), NULL\) \1) 11. Convert timer_alloc calls timer_alloc( *)\(( *)([^,;]+), *([^,;]+), *([^);]+)\) \3->scheduler().timer_alloc\1\(\2FUNC(\4), \5\) 12. Clean up trailing NULL parameters (timer_alloc[^;]+), NULL\) \1) 13. Clean up trailing 0 parameters (timer_alloc[^;]+), 0\) \1) 14. Fix oddities introduced \&m_machine->scheduler() m_machine.scheduler()
* Added some information. (no whatsnew) Curt Coder2011-02-051-0/+18
|
* drcbex64: fix compile on Apple GCC (no whatsnew) R. Belmont2011-02-051-2/+2
|
* drcuml: fix compile on systems that use the C backend [R. Belmont] R. Belmont2011-02-051-0/+1
|
* stop LOG_BIOSCALL triggering dbe when outputting parameters. smf-2011-02-051-0/+1
|
* take two smf-2011-02-041-0/+4
|
* fixed msvc compilation (min/max conflict) smf-2011-02-041-1/+0
|
* fixed msvc compilation smf-2011-02-041-1/+1
|
* 68681 patch to fix dectalk's startup test in MESS [Hans Ostermeyer] Jonathan Gevaryahu2011-02-041-22/+22
|
* Add basic LOAD function to the debugger to complement the existing SAVE ↵ Scott Stone2011-02-032-0/+80
| | | | function. It allows you to load a binary file straight into writeable memory. The format is the same as the SAVE function with the exception that the <length> can be handled differently. [Pugsy]
* Attotime bulk conversion step: Aaron Giles2011-02-0398-346/+319
| | | | | | | | | | | | | | | | | | attotime_zero => attotime::zero attotime_never => attotime::never ATTOTIME_IN_SEC(s) => attotime::from_seconds(s) ATTOTIME_IN_MSEC(m) => attotime::from_msec(m) ATTOTIME_IN_USEC(u) => attotime::from_usec(u) ATTOTIME_IN_NSEC(n) => attotime::from_nsec(n) ATTOTIME_IN_HZ(h) => attotime::from_hz(h) Also, changed the following MCFG macros to require a full attotime specification: MCFG_TIMER_ADD_PERIODIC MCFG_QUANTUM_TIME MCFG_WATCHDOG_TIME_INIT
* Converted attotime to a class, with proper operators. Removed old Aaron Giles2011-02-0378-679/+715
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | global functions which are now superceded by the operators and methods on the class. [Aaron Giles] Required mappings are: attotime_make(a,b) => attotime(a,b) attotime_to_double(t) => t.as_double() double_to_attotime(d) => attotime::from_double(d) attotime_to_attoseconds(t) => t.as_attoseconds() attotime_to_ticks(t,f) => t.as_ticks(f) ticks_to_attotime(t,f) => attotime::from_ticks(t,f) attotime_add(a,b) => a + b attotime_add_attoseconds(a,b) => a + attotime(0, b) attotime_sub(a,b) => a - b attotime_sub_attoseconds(a,b) => a - attotime(0, b) attotime_compare(a,b) == 0 => a == b attotime_compare(a,b) != 0 => a != b attotime_compare(a,b) < 0 => a < b attotime_compare(a,b) <= 0 => a <= b attotime_compare(a,b) > 0 => a > b attotime_compare(a,b) >= 0 => a >= b attotime_mul(a,f) => a * f attotime_div(a,f) => a / f attotime_min(a,b) => min(a,b) attotime_max(a,b) => max(a,b) attotime_is_never(t) => t.is_never() attotime_string(t,p) => t.as_string(p) In addition, some existing #defines still exist but will go away: attotime_zero => attotime::zero attotime_never => attotime::never ATTOTIME_IN_SEC(s) => attotime::from_seconds(s) ATTOTIME_IN_MSEC(m) => attotime::from_msec(m) ATTOTIME_IN_USEC(u) => attotime::from_usec(u) ATTOTIME_IN_NSEC(n) => attotime::from_nsec(n) ATTOTIME_IN_HZ(h) => attotime::from_hz(h)
* NetBSD support [Thomas Klausner] R. Belmont2011-02-022-1/+3
| | | | | | | | | Not for whatsnew: I added -Wno-conversion unconditionally to disable the warnings Thomas reported. That setting is the default for GCC out-of-the-box but apparently not on NetBSD. As far as I know it shouldn't cause a problem with any GCC version back to at least 4.0.0 so we're safe even on PPC OSX, but do let me know if hilarity ensues.
* Converted TMS3203X to a modern device. Aaron Giles2011-01-318-3642/+4720
| | | | | | Also removed redundant m_machine from the state and execute interfaces to fix ambiguity when using m_machine from within a device that inherits from these.
* Fixed interrupt vector in F8 CPU core [Sandro Ronco] Miodrag Milanovic2011-01-301-1/+1
|
* ARM7: Fix an LDM base register write-back bug. [Tim Schuerewegen] R. Belmont2011-01-301-2/+11
|
* ksys573: Hook up part of the i2c communication with the mas3507d. [O. Galibert] Angelo Salese2011-01-293-0/+370
|
* Imported the MC68901 device from MESS so it can be shared with micro3d.c. ↵ Curt Coder2011-01-293-0/+1744
| | | | [Curt Coder]
* arm7: - Improved LDM/STM unaligned word access in THUMB mode. [Tim Schuerewegen] Miodrag Milanovic2011-01-291-3/+10
| | | -Fixed LDM unaligned read in THUMB mode.
* Added all CPU and sound devices in emu folder to the MAME build. [Curt Coder] Curt Coder2011-01-291-4/+0
|
* v25: added commented line useful for decryption process Roberto Zandona2011-01-291-1/+1
|
* ASC: fix AaronDamage(tm) (no whatsnew) R. Belmont2011-01-292-8/+5
| | | | | | | So if I read this right, you updated the ASC, then decided to enforce sound_stream_update() as a pure virtual function, and didn't update the ASC again? :)
* C++-ified the DSP32 code so Andrew has something modern to work from. Aaron Giles2011-01-285-2002/+2491
|
* Whoops, missed some files. Aaron Giles2011-01-272-0/+456
|
* > From: atari_ace@frontier.com Aaron Giles2011-01-272-78/+94
| | | | | | | | | | | | | | | | | | | | | > To: submit@mamedev.org > CC: atariace@hotmail.com > Subject: [patch] Cleanup natural keyboard support > Date: Tue, 14 Dec 2010 07:20:08 -0800 > > Hi mamedev, > > inputx_setup_natural_keyboard sets callbacks from the core into the > drivers which lack machine or device pointers. This means that > drivers that use this api can't completely place their state in > non-global storage. This patch fixes that by adding the machine > parameter to the callbacks, and places the implementation data into > input_port_private as well. > > This really only affects MESS, since nothing in MAME uses this api. > > ~aa
* C++-ified the sound and streams interfaces. Combined sound.c and streams.c Aaron Giles2011-01-27114-2405/+1581
| | | | | | | | | | | | | | | | | | | into one file, and separated the speaker device into its own file. Generalized the concept of dynamically assigned inputs and re-wired the speaker to work this way, so it is now treated just like any other sound device. Added methods to the device_sound_interface for controlling output gain and mapping device inputs/outputs to stream inputs/outputs. Also made the sound_stream_update() method pure virtual, so all modern sound devices must use the new mechanism for stream updates. Primary changes outside of the core are: stream_update(stream) == stream->update() stream_create(device,...) == machine->sound().stream_alloc(*device,...) sound_global_enable(machine,enable) == machine->sound().system_enable(enable) Beyond this, the patterns are relatively obvious for the remaining calls.
* Added game types (no whatsnew) Miodrag Milanovic2011-01-261-4/+25
|
* Completed the DSP16A disassembler. [Andrew Gardner] Andrew Gardner2011-01-261-37/+129
| | | | | | | | | | | Notes out of whatsnew.txt * It's sure to have bugs, but it should get the job done for now. * It's unbelievable how many typos (major or otherwise) docs like this have. * I haven't heard from s_bastian about making the ROM images available in the monkey project, but we'll have 'em up as soon as he pops up again. * Does anyone know of any hardware that incorporated one of these? I'm looking for things to disassemble in the meantime :).
* Naming cleanups. (no whatsnew) Curt Coder2011-01-252-209/+44
|
* Removed IRQ line clear on ACK, consulted Hans Ostermeyer about this, this ↵ Miodrag Milanovic2011-01-251-1/+0
| | | | change fixes generic PC drivers booting in MESS (no whatsnew)
* A new WE DSP16A cpu disassembler. [Andrew Gardner] Andrew Gardner2011-01-254-0/+872
| | | | | | | | | | | | | Notes out of whatsnew.txt * This uses modern devices, but has not been tested in a driver yet, so I may have done something wrong. I will fix it when the time comes. * 60% of the disassembler is complete. I will finish it over the next few days. * There are many similarities in execution to the dsp32, and the existing 32 code will come in handy when it's time to write the execution engine. * This thing is a pleasure compared to the dsp56k.
* Not Worth Mentioning Derrick Renaud2011-01-251-1/+1
| | | removed duplicate bzone_pokey_interface
* intelfsh: Support flash ROMs that have a bankswitch command [Tim Schuerewegen] R. Belmont2011-01-252-1/+15
|
* Fixed DISCRETE_WAVLOG & DISCRETE_RCFILTER fixing dkongjr and likely other ↵ Derrick Renaud2011-01-243-5/+5
| | | | | | sounds. [Derrick Renaud] Only worth mentioning due to the complaints we will hear soon. :)
* Not Worth Mentioning - uimenu.c - changed event to menu_event to not ↵ Derrick Renaud2011-01-242-109/+109
| | | | conflict with the C++ keyword. Can't monitor the event variable in Visual Studio due to the conflict.
* Only display suggestions in case there were really no matching drivers, but ↵ Miodrag Milanovic2011-01-241-3/+10
| | | | display empty output in case there were really no clones for such machine same as before (no whatsnew)
* Added the HCD62121 cpu to cpu.mak (used by MESS) Fabio Priuli2011-01-241-0/+15
|
* arm7: Fix for "MOV LR, Rx" (where Rx bit 0 = 1) + "F800" situation. This ↵ Fabio Priuli2011-01-241-1/+1
| | | | | fixes the lockup in GBA "Golden Sun: The Lost Age". [Tim Schuerewegen] sync with latest MESS, before the fix got lost in source merging
* Cleanups and version bump.mame0141u1 Aaron Giles2011-01-2459-941/+941
|
* Carved out a discrete_sound_device from discrete_device. Couriersud2011-01-234-151/+278
| | | | | This now has all the stream related code. discrete_device thus now contains all the generic code and may be used going forward to implement not sound related use cases. [Couriersud]
* hcd62121: Fixed some instructions. No whatsnew. Wilbert Pol2011-01-234-36/+100
|
* softlist: now we suggest items in compatible lists as well, when choosing ↵ Fabio Priuli2011-01-231-2/+5
| | | | best match results. no whatsnew