| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
| |
----------------------------------
Mega-CD with 32X (Japan, NTSC) [Shideravan]
Mega-CD with 32X (Europe, PAL) [Shideravan]
(I'll edit mess.lst for these drivers too)
|
|
|
| |
Of course, "Sega CD (USA, NTSC, w/32X)" needs to have compatibility with Sega CD softwarelist too.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
driver_device classes have an m_ prefix on them. When we
eventually move functions using these into member functions,
we will be able to remove the state-> pointers, and having
the member variables prefixed will allow them to be
distinguished from local variables.
Some regex'es used (plus manually fixing the remaining stuff):
In src/mame/...
state->([a-zA-Z_][^_][a-zA-Z0-9_]*)
state->m_\1
state->([^m]_[a-zA-Z0-9_]*)
state->m_\1
state->m_save_item
state->save_item
state->m_save_pointer
state->save_pointer
(AM_BASE_MEMBER *\( *[a-zA-Z0-9_]+ *, *)([a-zA-Z_][^_])
\1m_\2
(AM_BASE_SIZE_MEMBER *\( *[a-zA-Z0-9_]+ *, *)([a-zA-Z_][^_][a-zA-Z0-9_]* *, *)([a-zA-Z_][^_])
\1m_\2m_\3
(AM_SIZE_MEMBER *\( *[a-zA-Z0-9_]+ *, *)([a-zA-Z_][^_])
\1m_\2
m__
m_
In src/mame/includes/...
(\t[a-zA-Z0-9_<>]+[ \t]+[&*]*[ \t]*)([a-zA-Z_][^_][][a-zA-Z0-9_]*;)$
\1m_\2
(\t[a-zA-Z0-9_<>]+[ \t]*[&*]*[ \t]+)([a-zA-Z_][^_][][a-zA-Z0-9_]*;)$
\1m_\2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove redundant machine items from address_space and device_t.
Neither machine nor m_machine are directly accessible anymore.
Instead a new getter machine() is available which returns a
machine reference. So:
space->machine->xxx ==> space->machine().xxx
device->machine->yyy ==> device->machine().yyy
Globally changed all running_machine pointers to running_machine
references. Any function/method that takes a running_machine takes
it as a required parameter (1 or 2 exceptions). Being consistent
here gets rid of a lot of odd &machine or *machine, but it does
mean a very large bulk change across the project.
Structs which have a running_machine * now have that variable
renamed to m_machine, and now have a shiny new machine() method
that works like the space and device methods above. Since most of
these are things that should eventually be devices anyway, consider
this a step in that direction.
98% of the update was done with regex searches. The changes are
architected such that the compiler will catch the remaining
errors:
// find things that use an embedded machine directly and replace
// with a machine() getter call
S: ->machine->
R: ->machine\(\)\.
// do the same if via a reference
S: \.machine->
R: \.machine\(\)\.
// convert function parameters to running_machine &
S: running_machine \*machine([^;])
R: running_machine \&machine\1
// replace machine-> with machine.
S: machine->
R: machine\.
// replace &machine() with machine()
S: \&([()->a-z0-9_]+machine\(\))
R: \1
// sanity check: look for this used as a cast
(running_machine &)
// and change to this:
*(running_machine *)
|
|
|
|
|
|
|
|
|
|
|
|
| |
space by index. Update functions and methods that accepted an
address space index to take an address_spacenum instead. Note that
this means you can't use a raw integer in ADDRESS_SPACE macros, so
instead of 0 use the enumerated AS_0.
Standardized the project on the shortened constants AS_* over the
older ADDRESS_SPACE_*. Removed the latter to prevent confusion.
Also centralized the location of these definitions to memory.h.
|
| |
|
|
|
|
| |
MESS-only).
|
| |
|
|
|
| |
cdrom.h: Added alt lba_to_msf conversion needed by SegaCD/MegaCD [David Haywood]
|
|
|
|
|
| |
Priuli]
out of whatsnew: this can be considered as preliminary. things like the empty md_base_state class have been done in purpose to reduce as much as possible changes in machine/megadriv.c (so to avoid overlaps/conflicts with Haze's work on segacd). next steps will start to move megadrive variables to the class.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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()
|
| |
|
|
|
|
|
|
|
|
| |
* machine/megadriv.c + md_pcb.c (originally from MESS) -> machine/md_cart.c [since they only contained code to handle cart loading]
* first half of drivers/megadriv.c (the code shared by mtech/mplay/c2 with MESS) -> machine/megadriv.c [since these are the 'machine' functions shared by arcade and console systems]
* second half of drivers/megadriv.c (the part recently imported from MESS) -> it remains where it was [since it is 'driver'-specific, even if in this case it is a MESS driver]
* drivers/segamsys.c (SMS part of the code used for mtech/mplay) -> machine/segamsys.c [again, these are 'machine' functions]
among other things, this new setup makes the MESS-specific parts (machine/md_cart.c & drivers/megadriv.c) independent from the MAME files, i.e. if we ever decide to change the tree structure, it will be much easier to move these files in any other location of the tree without affecting MAME (or MESS) compile process
|
| |
|
| |
|
|
|
|
| |
(no whatsnew)
|
| |
|
|
|
|
| |
from MESS [Miodrag Milanovic]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
memory_region() == machine->region()->base()
memory_region_length() == machine->region()->bytes()
region_info -> memory_region
Regex searches:
S: memory_region( *)\(( *)([^,&]+), *([^)]+)\)
R: \3->region\1\(\2\4\)->base\(\)
S: memory_region_length( *)\(( *)([^,&]+), *([^)]+)\)
R: \3->region\1\(\2\4\)->bytes\(\)
|
| |
|
|
|
|
|
| |
They both already existed. No sense in having two names for the
same object type.
|
|
|
|
|
| |
There hasn't been a machine driver for many years.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Sega logos.
|
|
|
|
| |
SegaCD intro rotations etc. which now appear correct.
|
| |
|
|
|
|
| |
the very end)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|