---------- Forwarded message ----------
From: Oliver Stöneberg <oliverst@online.de>
Date: Thu, Dec 31, 2009 at 1:06 AM
Subject: enhanced dipswitch/configuration information in -listxml
To: submit@mamedev.org
This patch adds some additional information to the dipswitches and
configurations in the -listxml output, so I can test
dipswitches/configurations in mame_regtest by creating .cfg files.
By using this I already found two issues in MESS and the 1943
"Service Mode" issue in MAME would have been detected.
I am also wondering, if there are any dipswitches, that rely on more
than one port. If that's the case I might have to look at them and
change the output.
Date: Mon, 28 Dec 2009 00:29:31 +0000
From: Phill Harvey-Smith <afra@aurigae.demon.co.uk>
To: submit@mamedev.org
Subject: i86 patch
Hi,
Attatched is a patch correcting the operation of the hlt instruction in
the i86 core. I have done test builds with both the current mame and
mess source for both debug and normal builds, and all seems to be ok.
Cheers.
Phill.
--
Phill Harvey-Smith, Programmer, Hardware hacker, and general eccentric !
"You can twist perceptions, but reality won't budge" -- Rush.
side-effects:
- EEPROM memory is now visible in the debugger
- EEPROM memory can be accessed like any CPU/device memory
(i.e., use eeprom.b@<addr> instead of eeprom.eb@<addr>)
Removed support in the expression engine for EEPROM-specific
accesses.
Updated all systems that muck directly with EEPROM memory to
use memory accessors instead on the EEPROM address space.
Extended the devtempl.h file to support device address spaces.
Cleaned up romload a bit to make it clear that region flags are
enforced for any device with an address space, not just CPUs.
EEPROM data.
Updated EEPROM device to initialize EEPROM at NVRAM load time rather
than init time, giving DEVICE_INIT handlers a chance to muck with the
data first.
- Made compatible_with attribute available for MAME too (with NULL value set in GAMEL macro)
This patch require full recompile due to change of GAMEL macro
Comment: Added a MACHINE_START for LAGIRL, which doesn't want to work properly (assumes I have service mode ON?) The working method is still in place (using cachat's startup). The clock changes were per the source notes above the ROM_START. If anyone wants to get it working with the proper speeds, be my guest.
sub.c - Put in board ETAL and came up with some seeming better clock speed approximations until board readings can be done.
tron.c - Sets tron3 and tron4 don't appear to have a valid working cocktail mode video or controls (upright player2 works fine). Flagged as GAME_NO_COCKTAIL.
subs.c - Added DIP LOCATIONS.
Comment: I failed to look at the video timing when Guru's readme, this should correct the behavior. I also added the cpu/video bd numbers listed on Stefan Lindberg's reference board for Outrun.
Date: Tue, Dec 22, 2009 at 11:57 AM
Subject: Core for PIC 16c62x series of processors
To: submit@mamedev.org
Hello,
this patch contains a core for the PIC 16c62x series of processors.
It has been made starting from the pic16c5x that is already present.
This version stil misses the various internal devices, however the
opcodes and i/o ports work, and it is enough to run the emulation of
the security pics used with the gd-roms.
Bye,
Samuele Zannoli
Date: Tue, Dec 22, 2009 at 4:44 PM
Subject: [patch] Fix srcclean/src2html bugs, misbalanced tokens and
visible whitespace errors
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
While experimenting with srcclean and src2html as indentation
validators, I stumbled across a couple of bugs. The first is that
srcclean doesn't properly handle /*...*//. It sees the last / char at
the end as the second / of an inline comment, where it might be a
division token or the start of either type of comment.
The second bug is that src2html improperly handles strings with
embedded quotes preceded by escaped backslashes, e.g. "ab\\\"cd". It
believes the string terminated in the middle, and the last quote
starts a new string. This issue is unlikely in actual code, but
should be handled correctly.
The first patch fixes these, and a some cases where there are
dangling/missing tokens which my validation tools are noticing. These
occur in some unused macros, dead code sections, and in some macros
that are deliberately misbalanced (v9938.c, psx.c). In the deliberate
cases, I balanced the braces by making exactly one open and one close
macro and using those throughout.
The second patch is then a set of visible whitespace "problems". Cases
where the closing brace isn't at the same indent level as the open
brace, and some cases where the indent level isn't a multiple of four.
In the case of ssv.c I folded the assignments into init_ssv() to
simplify the code and restore the brace balance, otherwise I kept to
simply adding or removing whitespace.
~aa
From: Barry Rodewald <bsr@xnet.co.nz>
Date: Wed, Dec 23, 2009 at 2:37 AM
Subject: Yet more i386 fixes
To: submit@mamedev.org
Hi,
Here's two more small i386 fixes.
First, is an implementation of the LSL protected mode instruction.
While it's far from perfect (ie: it doesn't check for anything other
than a null segment selector), it does help get a little bit further
for some FM Towns applications.
Second, is a fix for the REP instruction when used with a segment
prefix. Essentially, it reverses the use of the segment_override and
segment_prefix variables compared to other instructions. This fixes
sprite data copied into sprite RAM on the FM Towns version of Raiden
Trad.
Thanks,
Barry Rodewald
mailto:bsr@xnet.co.nz
default values from. Fixed bug in ROM loader that would change the
memory region flags to match devices with no address bus. Updated
groundfx to use the new default loading scheme.
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Mon, Dec 14, 2009 at 5:43 AM
Subject: [patch] Eliminate generic.colorram
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
generic.colorram and generic.videoram are unused by the MAME core, and
are simply slots convenient for driver use. As such, the drivers are
better off using their own driver_data slots for these. To discourage
further use of colorram, this patch eliminates all current uses of it,
and the uses of videoram as well in the affected drivers. This is
partially a retrograde step, since ideally we'd like to introduce the
driver_data structs as well for these drivers, but eliminating
colorram and disentangling the various uses of generic makes it on the
balance an improvement IMHO.
~aa
---------- Forwarded message ----------
From: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
Date: Mon, Dec 14, 2009 at 9:56 PM
Subject: Removal of a deprecated function
To: submit@mamedev.org
Hi,
a function in "drawgfx.c" is declared in "deprecat.h"
This function ("decodegfx(...)") is not used any more in the code, so it
could be removed.
Hope this help.
Best regards,
CJ
- simplified RSP's misaligned memory accesses
- removed now-unnecessary shifts from direct memory accesses in
mips3/powerpc drcs
- optimized AND with 0xff/0xffff/0xffffffff cases for x86/x64
- added rudimentary memory/register tracking in x86 backend to
remove redundant loads
- Split SATURATE_ACCUM into a signed and unsigned version to reduce stack usage.
- Corrected an issue with the 0h variants of VMRG, VAND, VNAND, VOR, VNOR, VXOR and VNXOR.
- Slightly optimized unaligned reads and writes
- Optimized unaligned dword reads
- Corrected an issue where badly-written RSP programs could jump to invalid addresses
- added warning messages for auto_malloc, timer, and save state
allocations done after init time. These should be fixed when
detected, as I would eventually like to disallow them entirely.
- changed state registration functions to pass through the caller's
file and line number to facilitate fixing the above warnings
- converted Taito F3 sound to a separate machine driver which is
imported into games that use it
- converted the balsente driver to driver_data structure
- converted harddriv timers into devices
- fixed crash in cps2 games due to not configuring the qsound bank
- cleaned up initialization in taito_l to allocate at init time
instead of reset time
* moved k056800 sound device to emu/sound and removed the old code (mame/machine/konamiic.c )
* updated gticlub.c, hornet.c, nwk-tr.c, ultrsprt.c and zr107.c to use this implementation
* fixed various small (and not so small) problems in konicdev.c
* as a result Konami 007342, 007420, 052109, 052160 and 051316 devices are now working and 88games.c, battlnts.c, bladestl.c and rockrage.c have been updated to use them
arbitrary scaling factors. Previously, specifying a size implied
a scaling factor equal to the size (i.e., specifying DWORD meant
the index was scaled by 4). This is still the default. However,
now you can specify the scale explicitly for other cases. For
example, you can specify DWORD_x1 to fetch a DWORD but don't
scale the index at all, or BYTE_x8 to fetch a BYTE while scaling
the index by 8. Updated all backends to make this work.
Out of whatsnew: Unfortunately, I was unable to make both malzak and p2000t (in MESS) to work without a small kludge, clearly documented in the source. I plan to further investigating the problem once I manage to merge the other 505x variants (later)
* added saves to 6522via.c. this fixes problems of gameplan.c and trvquest.c games with -autosave
* added driver data struct and save states to toratora.c and sf.c
* enable GAME_SUPPORTS_SAVE flag to dday.c because some of the core changes have fixed the sound problem at loading
* added a couple of comments about header inclusions
Also, added driver data struct and save states to laserbas.c, laserbat.c, lastfght.c, lazercmd.c and lemmings.c
Finally, added driver data struct to lasso.c
* Fixed EIP displacement when executing FPU instructions with no 80387 present
* Added 32-bit implementations of SLDT and STR
---------- Forwarded message ----------
From: Barry Rodewald <bsr@xnet.co.nz>
Date: Wed, Dec 9, 2009 at 2:02 AM
Subject: More i386 fixes
To: submit@mamedev.org
Hi,
Here's two more small fixes for the i386 core.
First, is FPU instructions used on 80386. On a system without a
80387, FPU instructions should have no effect. Part of the FM Towns
TBIOS (runs as an MS-DOS device driver, providing extra system
functions) initialises the FPU, and tries to detect it. Upon hitting
the FSTCW instruction, though, it doesn't increase EIP enough when an
extra displacement byte is needed. So, I've added a call to GetEA to
the escape() function (called when there is no FPU) which will fetch
the extra byte if necessary.
Second, is a 32-bit implementation of the SLDT and STR instructions.
Basically, I copied it from the 16-bit versions, and modified it to
use 32-bit registers.
Thanks,
Barry Rodewald
mailto:bsr@xnet.co.nz
part. Some shared systems still exist with globals, but this
tackles the atarigen module and the variables local to each
driver.
Also added validity check that AM_BASE_MEMBER and AM_SIZE_MEMBER
items point within the bounds of the driver_data structure.
marked non-exported functions as static and removed cases of #include "deprecat.h" [Atari Ace]
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Sat, Dec 5, 2009 at 7:18 AM
Subject: [patch] Header cleanups
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This patch improves the quality of the mame driver headers, by adding
missing prototypes and source comments, removing dead prototypes, and
marking some non-exported functions as static within the drivers. It
also eliminates about a dozen cases of #include "deprecat.h".
~aa
(Update of r7501)
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Sun, Dec 6, 2009 at 5:51 PM
Subject: [patch] srcclean bugfix
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
My srcclean changes to track C-style quotes didn't handle all the
special cases correctly (for instance, '\"' and "\\\""). This fixes
it, and adds some /* ... */ to m68k_in.c so that src2html.exe does a
better job on it.
~aa
memory_install_ram() to assign a un-named bank to a region and specify
a pointer to where the RAM lives. If this is called in the DRIVER_INIT
function or MACHINE/SOUND/VIDEO_START functions, then it is permissible
to specify NULL, in which case the memory system will allocate memory
and register it for save states.
memory_install_rom() is like the above except that it only installs a
read handler.
memory_install_writeonly() is like the above except that it only installs
a write handler.
Updated several instances in the code that were assigning banks to these
sorts of static RAM regions and simplified the code.
Also fixed several regressions reported by Tafoid.
The AM_SHARE() macro now takes a tag parameter. All existing
shares have been bulk renamed to "share##". However, the name
does not matter, so please use descriptive tags going forward.
Also added tag validation for bank and share tags.
Added flag to tagmap_add functions that optionally will
replace existing objects if a duplicate is found.
their place are a series of expanded macros and new memory
installation helpers. Some mappings below (not all are new):
AM_READ(SMH_RAM) -> AM_READONLY
AM_WRITE(SMH_RAM) -> AM_WRITEONLY
AM_READWRITE(SMH_RAM, SMH_RAM) -> AM_RAM
AM_READ(rhandler) AM_WRITE(SMH_RAM) -> AM_RAM_READ(rhandler)
AM_READ(SMH_RAM) AM_WRITE(whandler) -> AM_RAM_WRITE(whandler)
AM_DEVREAD(tag, rhandler) AM_WRITE(SMH_RAM)
-> AM_RAM_DEVREAD(tag, rhandler)
AM_READ(SMH_RAM) AM_DEVWRITE(tag, whandler)
-> AM_RAM_DEVWRITE(tag, whandler)
AM_READ(SMH_ROM) -> AM_ROM
AM_WRITE(SMH_ROM) -> (was a no-op)
AM_READ(SMH_NOP) -> AM_READNOP
AM_WRITE(SMH_NOP) -> AM_WRITENOP
AM_READWRITE(SMH_NOP, SMH_NOP) -> AM_NOP
For dynamic memory handler installation of the various types,
use the new functions:
memory_unmap_read()
memory_unmap_write()
memory_unmap_readwrite() -- unmaps a section of address space
memory_nop_read()
memory_nop_write()
memory_nop_readwrite() -- nops a section of address space
Cleaned up the internals of the address_map_entry structure, and
also normalized the way the address map macros work to remove a
lot of redundancy.
Changed all memory_bank_* functions to specify a tag.
Bulk-converted existing banks to be tagged "bank##" in
order to ensure consistency. However, going forward, the
tags don't matter, so please name them something useful.
Added AM_BANK_READ/AM_BANK_WRITE macros to let you specify
bank tags. Also changed AM_ROMBANK and AM_RAMBANK macros to
accept tags as well.
Added new functions memory_install_read_bank_handler and
memory_install_write_bank_handler to install banks by tag
name, similar to input ports.
Changed internals of memory system to dynamically allocate
all banks. The first time a bank with an unknown tag is
installed, a new bank object is created and tracked
internally. Removed all SMH_BANK(n) references outside of
the main code; these should never, ever be useful anymore.
Anyone who's ever been confused by the meaning of a given GCC or MSVC error diagnostic will enjoy this (it's color-coded in real life for added "wow"):
src/emu/memory.c:2148:5: error: comparison of distinct pointer types ('genf *' and 'void *')
check_entry_handler(write);
^~~~~~~~~~~~~~~~~~~~~~~~~~
src/emu/memory.c:2052:63: note: instantiated from:
if (entry->handler.generic != NULL && entry->handler.generic != SMH_RAM) \
~~~~~~~~~~~~~~~~~~~~~~ ^
>
> The cp1610 CPU is only used by the Intellivision (in MESS). However the
> disassembler produces garbage. Also I noticed a tiny error in the CPU
> itself.
>
> Here are the fixes:
>
> Firstly, the CPU, a one-line change. In cp1610.c, at line 3515, you may
> notice that 2 flags are sharing the same bit. Please change the V flag
> to
> use 0x20 (instead of 0x10). That's all there.
>
> Next, the disassembler. It assumes oprom to be 16 bits when in fact it
> is 8.
> I could not see a way of specifying the size of oprom, so assuming it
> is
> always 8 bits. If that's the case, please replace 1610dasm.c with the
> enclosed one.
>
> Thanks and have a great day :)
>
> - Robbbert
---------- Forwarded message ----------
From: Atari Ace <atari_ace@verizon.net>
Date: Sun, Nov 29, 2009 at 3:28 AM
Subject: [patch] Convert cabal/mappy/toypop/zaxxon to use driver_data
To: submit@mamedev.org
Cc: atariace@hotmail.com
Hi mamedev,
This patch is a resubmit of my earlier patch to have mappy and zaxxon
store their state in driver_data. It extends the patch to toypop
(which uses some mappy code), and also converts cabal which I also did
some time ago. cabal.h and toypop.h are new header files.
~aa
Date: Sat, Nov 28, 2009 at 5:49 PM
Subject: [patch] Eliminate spriteram3
To: submit@mamedev.org
Cc: atariace@hotmail.com
Aaron's patch to move the generic pointers into machine conflicts with
a patch I'd worked on some time ago to start eliminating those globals
altogether, so I've become motivated to finally submit it ;-). This
patch eliminates spriteram3, which unlike the other spriteram
variables, is only a convenience for some drivers.
~aa
---------- Forwarded message ----------
From: Barry Rodewald <bsr@xnet.co.nz>
Date: Sat, Nov 28, 2009 at 6:55 AM
Subject: Another i386 fix
To: submit@mamedev.org
Hi,
Small fix this time. This fixes an issue with the FM Towns version of
MS-DOS where it was feeding nonsense parameters to the CD-ROM
controller. MS-DOS uses REP OUTSB to send the parameters, and I
noticed that the expected data was not what was sent to the I/O port.
Looking at the i386 code, I saw that it always used segment:ESI,
regardless of address size. This fix makes it use segment:SI when
address size is 16-bit (ie: when using OUTSB or OUTSW).
Patch is based on 0.135u1.
Thanks,
Barry Rodewald
mailto:bsr@xnet.co.nz
Added equivalent pointers to machine->generic. Updated all
references.
Now that accessing these is more awkward, it is probably best
to put these pointers in the driver data structures instead
of using the generic pointers. The main reason to continue
using generic pointers is to allow use of paletteram shortcuts
and buffered spriteram handling.
designed to hold generic pointers that are commonly used. For
now, only generic_nvram has moved there. Added AM_BASE_GENERIC
and AM_SIZE_GENERIC macros for initializing generic pointers
in memory maps. Also added AM_BASE_SIZE_GENERIC to set both
base and size in one step.
Moved global variables out of machine/generic and into a private
data structure hanging off of the running_machine. Added newly-
needed machine parameters to coin_counter_w, coin_lockout_w, and
coin_lockout_global_w. Also added machine parameter to
set_led_state.
Added interface functions to get the number of dispensed tickets
and to increment the count, to remove the need for direct access
to these global variables. Also added functions to get the
current count on a particular coin counter and to determine the
lockout state.
Future checkins will move the remaining generic pointers (for
paletteram, videoram, spriteram, colorram, etc.) into the new
generic_pointers structure.
Output ports are now affected by IP_ACTIVE_HIGH/IP_ACTIVE_LOW (eepromdev.c has active low cs).
The previous value for callbacks in inptport.c is now tracked per field. This saves recalculating it for PORT_CHANGED & conditional fields wouldn't always get updated correctly.
Tidied up eepromdev.c interface.
Updated device and input port lists to use the tagmap for
tag searches. Also removed the whole "quark" thing from the
validity checker in favor of using the tagmaps.
added output lines (IPT_OUTPUT), which can be written using new input_port_write* functions or directly from a memory map using AM_WRITE_PORT
converted adc083x to use io lines.
adc08x chips are all hooked up using input/output ports
reversed racing force steering wheel input and gas pedal, which is enough to get the game to boot.
reversed steering wheel input on winding heat, the usa cabinets are however hooked up the other way.
renamed adc0831_interface to adc083x_interface.
fixed adc083x gnd input
removed stray call logerror from adc083x.c
fixed default adc083x sars value
adc083x reset only affects outputs
Not 100% sure this is the better way to implement this (we pass the eeprom tag as parameter of the PORT_CUSTOM), but I haven't been able to find a better solution.
No driver uses this yet, so I'm open to any suggestion before to use it extensively ;)
I don't like too much this solution, but now the code is self contained: hence, better fixes (e.g. no MDRV_DEVICE_CONFIG_DATAPTR(eeprom_config, default_data, &_data) at all for the NODEFAULT eeprom?) could be added without further modifying the behavior across the drivers.
- fixed bug in vtlb code that caused us to lose track of previously
registered fixed page ranges
- fixed MIPS3 behavior that would not clear out invalid page ranges
from the VTLB under certain circumstances
- added support for TLB sizes less than 48 entries
Switched the SMS and Game gear PSGs to use an XOR instead of XNOR feedback, but this needs further verification. Updated comments to show which chips are currently verified. Cleaned up comments.
- now properly generating TLB fill exceptions under correct circumstances
- TLB exceptions no longer trash low 4 bits of Context
- exceptions with the EXL bit set always go to vector 0x180
future lookup optimizations.
By and large, the only things that used 2-character tags were bulk-
converted sound chips which were generally mapped to "ym" or "ay"
(and a few others). These were changed to "ymsnd" and "aysnd",
mimicking the way CPUs were changed from "main" to "maincpu" a while
back.
- Reworked PMMU/core interface so PMMU now sees all cop 0 instructions
- Improved disassembly of PMMU instructions
- Preliminary 68LC040 support
- Fixed disassembly for EC/LC variants of '030/'040
* Added Nested Task flag, and I/O Privilege flags. They aren't
implemented in any way, but can now be set or reset. Can be used to
detect a 80386 or later CPU.
* Implemented ENTER instruction.
* Made IRQ vectors treated as 8 bytes when in protected mode, and made
the addresses pushed onto the stack 32-bit if the gate descriptor used
is a 386 interrupt or trap gate (also when in protected mode, will
always be 16-bit if in real mode).
---------- Forwarded message ----------
From: Barry Rodewald <bsr@xnet.co.nz>
Date: Tue, Nov 3, 2009 at 10:12 PM
Subject: i386 update
To: submit@mamedev.org
Hi,
Here's a few small fixes for the i386 core, based from the work I've
been doing on emulating the FM Towns in MESS. Mostly based from the
i386 Programmer's Reference Manual.
The fixes are as follows:
* Added Nested Task flag, and I/O Privilege flags. They aren't
implemented in any way, but can now be set or reset. Can be used to
detect a 80386 or later CPU.
* Implemented ENTER instruction, this is used by the FM Towns version of MS-DOS.
* Made IRQ vectors treated as 8 bytes when in protected mode, and made
the addresses pushed onto the stack 32-bit if the gate descriptor used
is a 386 interrupt or trap gate (also when in protected mode, will
always be 16-bit if in real mode).
I've tested a few i386 games (Seibu SPI, PC-AT, and Wolf System) in
MAME 0.135, with no obvious regressions.
Diff is based on MAME 0.135.
Thanks,
Barry Rodewald
mailto:bsr@xnet.co.nz
* Added JF table decode function.
* Added ABS, IMAC, and TFR2 opcodes.
* Fixed various flags for TST, INC24, SUB, CMP, and CMPM.
* Added hack to DO function to accommodate for the CPU core's inaccurate math.
(Polygonet Commanders goes 'ingame' yet again, but it's because of a hack I added
to the hardware DO function to ignore negative values. The do loop, of course, should
not be getting negative values, but that will require accurate math functions with
accurate rounding and limiting, and I'm not there yet. Oddly enough, i've also
broken the sky ROZ layer.)
- Support PMOVE modes from PMMU
- Allow the FPU to be used for both '030 and '040
- Add byte and word FPU loads/stores
- Fixed buggy FPU 64-bit stores in the (An) addressing mode
If anyone has any ideas on how to sanely handle the 68k FPU's 96-bit "take
that, Intel" mode let me know ;-)
> From: Christophe Jaillet [mailto:christophe.jaillet@wanadoo.fr]
> Sent: Saturday, October 17, 2009 9:02 AM
> To: submit@mamedev.org
> Subject: Correct 3 unbalanced calls to 'profiler_mark_start' and
> improve warning message
>
> Hi,
>
> while profiling the game 'silentd', I found some 'FILO overflow'
> warning.
>
> This was linked to 2 different unbalanced 'profiler_mark_start' calls.
>
> The attached patch does the folowing :
> - add a missing 'profiler_mark_end' call in 'drawgfxm.h'
> - add a missing 'profiler_mark_end' call in 'video/taito_b.c'. I
> think
> that this one could probably be completely removed
> - add a missing 'profiler_mark_end' call in 'profiler.c'. This one
> is
> very unlikely to happen. This has been done by rearranging a bit the
> code in
> order to have only one exit in the function
> - add more information about the likely type of profiling data that
> has
> made the fifo overflow. (This is that information that has help me find
> the
> two first issues).
>
> Hope this help.
> Best regards,
>
> CJ
Date: Sun, Oct 11, 2009 at 00:38
Subject: patch for devcb.c
To: submit@mamedev.org
Hello,
attached is a patch for devcb.c which allows devices to directly call
child devices. An example would be a device with its own CPU and a
child device that calls DEVCB_CPU_INPUT_LINE. Without the patch, this
would have only worked with tags like
DEVCB_CPU_INPUT_LINE("parent:device_cpu", 0). With the patch, its
enough to write DEVCB_CPU_INPUT_LINE("device_cpu", 0).
Dirk
Date: Sat, Oct 10, 2009 at 20:09
Subject: patch for ui.c
To: submit@mamedev.org
Hello,
attached is a small patch that changes the way cpu clocks are
displayed on the initial information page. It now displays the real
values, which takes internal mulitpliers/dividers into account.
Dirk
> Sent: Wednesday, October 14, 2009 4:58 AM
> To: Aaron Giles
> Subject: mame submission for mess
>
> Hi Aaron,
>
> Here is a fix (MESS svn 5957) to correct issues when a clone computer
> has
> less devices than the parent (example exidy and exidyd). Currently, if
> you
> run exidyd, the devices from exidy will be used, causing warning
> messages
> which cannot be got rid of. The solution is to remove the use of parent
> ini
> files because in truth, MESS does not really need MAME's ini heirarchy.
>
> (see attachemnt for dif).
>
> I've had this change for about 2 years privately, and no problems have
> been
> found.
> -----Original Message-----
> From: Christophe Jaillet [mailto:christophe.jaillet@wanadoo.fr]
> Sent: Saturday, October 17, 2009 9:00 AM
> To: submit@mamedev.org
> Subject: Speed up emu\cpu\e132xs
>
> Hi,
>
> this patch speeds up the emulation of the CPU e132xs.
>
> For the emulation of this CPU, two structures are used :
> - '_hyperstone_state' which keep track of the state of the
> processor
> - 'regs_decode' which is used when decoding the opcode being
> executed
>
> Both of these structures have a field 'op' but only the one of
> 'regs_decode'
> is actually used.
>
> The emulation of the CPU is done this way :
> - read the opcode
> - call the corresponding function which emulate this opcode. Two
> parameters are passed :
> o a pointer to hyperstone_state
> o the opcode itself
> - the opcode is then stored in the relevant field of a local stack
> stored 'regs_decode' structure.
>
> The field 'op' of '_hyperstone_state' is never used.
>
>
> So the proposed patch does the following :
> - use the 'op' field of '_hyperstone_state' instead of the one of
> 'regs_decode'
> - initialise this 'op' field before calling the function which
> emulate
> this opcode
> - remove the need of the second parameter ('opcode') of these
> functions
> - remove the now useless 'op' field of the structure 'regs_decode'
>
> Doing so removes the need of pushing a parameter on the stack for each
> opcode simulated and give a average speed up of 1 % or 2 % of the
> emulation.
>
> Hope this help.
> Best regards,
>
> CJ
> -----Original Message-----
> From: Christophe Jaillet [mailto:christophe.jaillet@wanadoo.fr]
> Sent: Saturday, October 17, 2009 9:03 AM
> To: submit@mamedev.org
> Subject: Patch against 2 typo in comments
>
> Hi,
>
> all is said in the object of the mail. Catch while going thrue the
> code.
>
> Hope this help.
> Best regards,
>
> CJ
> From: Atari Ace [mailto:atari_ace@verizon.net]
> Sent: Saturday, October 17, 2009 12:14 PM
> To: submit@mamedev.org
> Cc: atariace@hotmail.com
> Subject: [patch] Remove dead prototypes
>
> Hi mamedev,
>
> This patch mostly removes dead prototypes, especially in source files
> as opposed to header files which I've previously audited. It also
> migrates a few prototypes to existing header files, and adds missing
> prototypes to segamsys.h.
>
> ~aa
> To: submit@mamedev.org
> CC: atariace@hotmail.com
> Subject: [patch] Eliminate more .data
> Date: Wed, 7 Oct 2009 08:51:56 -0700
>
> Hi mamedev,
>
> Most variables in .data are likely to lead to multisession bugs, so it
> is best to eliminate them and add explicit init/reset code for them
> instead. This patch does that for almost all the cases, with a few
> changes deserving some comments:
>
> z180: cc was global when it should be per-cpu.
> nesapu: the noise table would be different run to run in multisession
> which probably wasn't intended.
> astring: i constified the dummy string to make it impossible to
> modify.
> mediagx: hits was separated from the constant data
> tecmosys: i reduced the number of exports and renamed them to use
> tecmosys_ as a prefix.
> atari: i moved the renderer function into ANTIC.
> naomibd: the array provided to x76f100 was too small and might have
> caused memory corruption.
> n64: i constified the one and zero colors, requiring many more const
> qualifiers to be added.
> ldverify: i encapsulated the audio and video variables to reduce the
> amount of global state.
Battlezone - updated to use new module. Adjusted sound levels. Adjusted engine frequency. Remember there is a slider to adjust the frequency.
Donkey Kong Jr. - set noise clock to a fixed measured frequency. (Speed optimization)
(Also makes the code prettier in parts)
(The dsp now goes into its calculation loop, but some
opcode doesn't set flags properly, so it never drops
out of the loop).
This following is not worth mentioning yet.
Started the new 74LS624 code. Called it DISCRETE_74LS629 for now, until it is ready to replace the old code. You can enable it in dkongjr and mario using the USE_LS629 define.
I still need to work out the threshold/range relationship. I'm having the old schrodinger's cat problem. I need to measure the cap threshold, but doing so changes it. I'll work it out.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Mahjong Gekisha [Luca Elia, Guru, Dyq, Bnathan]
New clones added
----------------
Hana Jingi (Japan, Bet) [Luca Elia, Guru, Brian Troha, Yasuhiro Ogawa]
Types are pretty much unified now.
Multiply operations are handled by eminline.h.
Divide operations were just silly in macros.
64/32-bit combination/extraction macros moved to osdcomm.h and renamed.
Also fixed compile errors in recent 68k changes.
- Added working PMMU address translation (not feature complete, but sufficient
to boot several 68030 Macs in MESS)
- Fixed up disassembly of some PMMU instructions
- Added "68020 with 68851" CPU type
the speed improvement in dkong from 1230% to 1470% due to
this change (setting context->data to 0 in reset).
Actually, it will avoid the first stream_update of buffer_stream when
after approx. 11 samples the dac is written.
Without setting data to 0, stream_update(buffer_stream) is called before
stream_update(discrete_stream) is called.
With the patch, the order is of the stream_updates is determined by streams.c.
What makes this interesting is, that the startup order of the stream_updates
determines the whole run-time of the game. When profiling, NODE_73 (Sallen-Key-Filter)
needs 1066 cycles without the patch and under 135 with the patch, although it is the 4th node
after DISCRETE_INPUT_BUFFER.
All in all this looks like a caching issue, however I am currently clueless what in the end
is causing it.
- tasks are now processed according to their dependency lists. Tasks
can now start early and will only process samples which are
already available. This has most impact on drivers which have
significant variance in the run-time of individual tasks.
- tasks now process samples in slices, currently max 240 samples / slice.
- TASK_GROUP is now obsolete - Will update drivers at a later stage.
- step function pointer now back in node, modules may register
optimized step functions.
- profiling code now always compiled, introduced static int profiling = ...
- some more EXPECTED/UNEXPECTED usage.
- fix some "const" weirdness I introduced
- fix VREF in CRFILTER_VREF and RCFILTER_VREF. VREF never got used since it was only a static parameter.
- Removed enable from CR_FILTER* and RC_FILTER*
- Updated drivers accordingly.
- Use EXPECTED/UNEXPECTED to help the compiler
--
> From: David Haywood [mailto:neohaze@nildram.co.uk]
> Sent: Tuesday, September 29, 2009 6:55 AM
> To: Aaron Giles; Klaus Sommer, B.Sc
> Subject: Re: Astro Blaster (German) Romset
>
> I've added a note by that rom in 'version 1', it should be checked at
> least. With the u25 supplied the german set works.
>
> new clones
> ------------
>
> Astro Blaster (German) [Volker Hann & Team Europe]
>
> Sommer wrote:
> > hi!
> >
> > attached is the new dumped u25 rom....it's the same as in all other
> romsets!
> >
> > could it be that the u25 dump from "version 1" is bad...and if you
> replace it with an u25 from another dump that it will work?
> >
> > regards,
> > klaus
- DISCRETE_TASK_START now requires a parameter TASK_GROUP (>=0, <=9)
- Tasks are scheduled in the order of their task group
- Nodes are automatically buffered between task groups
- Discrete core determines nodes which need buffering to minimize overhead (information in DISCRETE_LOG)
- A discrete block list now must put each stepped node into a task if it uses tasks
- Drivers not using tasks will get one task allocated automatically
- Updated drivers accordingly
- Some more constification
> From: Atari Ace [mailto:atari_ace@verizon.net]
> Sent: Wednesday, September 30, 2009 7:56 AM
> To: submit@mamedev.org
> Cc: atariace@hotmail.com
> Subject: [patch] More static qualifiers
>
> Hi mamedev,
>
> This patch makes more of MAME static, primarily targeting functions
> exported by header files that are in fact unused outside their own
> file, and the chip emulators in machine/snes.c. It also degenericizes
> some exported names in archimds, bublbobl, and lucky74.
>
> ~aa
- preparation work so that a task node output buffer may be read by
more than one following task.
- target: implementation of task groups: tasks in a task group run parallel, task groups serial. The current main task may than just be task (in the last task group)
> From: Atari Ace [mailto:atari_ace@verizon.net]
> Sent: Sunday, September 27, 2009 7:58 AM
> To: submit@mamedev.org
> Cc: atariace@hotmail.com
> Subject: [patch] More _NAME macros
>
> Hi mamedev,
>
> MAME's idiom for function/data macros is to first implement
> <name>_NAME, then implement the other macros in terms of the _NAME
> macro. Then in principle only a single line needs editing to change
> the naming convention.
>
> This patchset implements this idiom more completely. The first patch
> adds some missing _NAME macros and fixes cases in source files that
> should be using the macros. The second patch then changes header
> files where the macros should have been used, but weren't. This
> required changing the idiom for removing a machine driver function
> pointer from MDRV_<FUNCTION>(NULL) to MDRV_<FUNCTION>(0), to avoid
> problems with NULL being macro expanded. This actually unifies the
> handling of all such cases, as we already had ipt_0 and driver_init_0.
> It also required reworking the devtempl.h implementation in a way that
> triggered a warning on MSVC about using empty macros, so vconv.c
> needed to be updated. The third patch then renames all the _NAME and
> _0 macros to verify that all the cases have been covered, so it isn't
> intended to be applied.
>
> ~aa
> Sent: Sunday, September 27, 2009 5:45 AM
> To: submit@mamedev.org
> Subject: Increase the number of PROFILER_USERx slots when profiling
>
> Hi,
>
> sometimes, when I profile a game in order to see what is the most time
> consuming part of its emulation, the 4 PROFILER_USERx are just not
> enough.
> The attached patch increases this number to 8 in order to give more
> flexibility.
>
> It also removes the now unused and obsolete PROFILER_END constant in
> order
> to be sure that 'profiler_mark_start' will never be called with it
>
> Hope this help.
> Best regards,
>
> CJ
Sent: Friday, September 25, 2009 12:15 PM
To: Aaron Giles
Subject: 360 pad crash
This 'fixes' the bug where MAME crashes and corrupts your config files
if you connect a pad at runtime. Previously there was an assert, now it
simply doesn't execute that block of code if devcode is null.
I don't know if this is the best fix (it would probably be quite nice if
it could detect pads being added removed at runtime and adapt to that)
but at least it stops it crashing and corrupting files.
> Sent: Wednesday, September 30, 2009 4:05 AM
> To: submit@mamedev.org
> Subject: Cheat
>
> I have added a simple system for auto-detect the ram region for make
> more fast the cheatinit. But I have a problem on some address
> translation, for example in seattle.c the ram region have a physical
> address of 0x00000000 - 0x007fffff and the logical address is
> 0x80000000 - 0x807fffff, I not have found a way for convert the
> physical
> address to the logical address. For now the only way for initialize the
> cheat on seattle.c is force the address to the right range ("ci ub,
> 0x80000000, 0x7fffff") but is not a good solution.
> I hope can help me to fix this problem.
>
> Regards
>
> Sandro Ronco
Fixed the logical/physical issue by having the cheat system always
work at the physical layer and output cheats that explicitly point
to the physical space.
by prepending with an 'l' or 'p'. Logical remains the default. Example:
ppb@1000 = physical program space byte at address $1000. ldw@2000 =
logical data space word at address $2000.
- the return type is UINT8, consequently the designer needs to ensure that the node delivers adequately scaled data.
- input nodes allow the input data to be scaled. The return value is the node value *after* scaling.
> Sent: Wednesday, September 23, 2009 4:41 AM
> To: submit@mamedev.org
> Subject: optional flag in -listxml
>
> This patch:
> - adds an "optional" flag for rom/disk entries to -listxml output
> - removed the obsolete "dispose" flag from the DTD in the -listxml
> output
> From: Atari Ace [mailto:atari_ace@verizon.net]
> Sent: Sunday, September 20, 2009 9:54 AM
> To: submit@mamedev.org
> Cc: atariace@hotmail.com
> Subject: [patch] Eliminate more #ifdef LSB_FIRST
>
> Hi mamedev,
>
> This patch recodes more cases where LSB_FIRST is used to conditionally
> compile separate code for LSB and MSB targets. The atari.h chunk was
> dead code (both in MAME and MESS) so I simply removed it.
>
> ~aa
- implemented reset for TMS5220C if /RS and /WS are pulled down together
- Inserted LNs email and corrections as comment into source
- Created a TODO section.
> From: Sandro Ronco [mailto:sandroronco@gmail.com]
> Sent: Wednesday, September 16, 2009 12:48 AM
> To: submit@mamedev.org
> Subject: MAME cheat update
>
> I have added the byte swap to the cheat search.
Sent: Thursday, September 10, 2009 7:10 AM
To: submit@mamedev.org
Cc: upstephh_wip@yahoo.com
Subject: Quick fix for the F6 toggle
Hi
My last diff got altered before getting included, I appreciate this would likely get done (and many
thanks for doing it) but it did lose the F6 functionality when a cheat was selected. Eg. if you have
the cursor bar over Infinite Time then F6 will not work. My original solution using numbered calls
was not ideal but it did work, I'd spent ages trying to find the appropriate routine to call without
joy. Annoyingly I just tried again with 0.134 and it took less than 5 minutes to fix it
properly....DOH!!!
Anyway I've attached a simple one-line diff for 0.134 to hook up F6 wherever the cursor bar is on
the cheat menu screens.
It just changes this in uimenu.c.:-
- if (exclusive_input_pressed(menu, IPT_UI_TOGGLE_CHEAT, 0))
+ if (ui_input_pressed_repeat(menu->machine, IPT_UI_TOGGLE_CHEAT, 0))
Martin 'Pugsy' Pugh
- this emulates the RS/WS and READY handshaking according
to the tms5220 manual. Drivers reading the ready line
should most probably use it.
- Note: For cases where the READY handshake is done by the cpu
sufficient cycles have to be burnt to simulate that the
cpu waited. This yet has to be implemented.
(Off the record)
I verified this thing against IDA Pro's 56156 disassembler and the docs.
Every time I found a bug in IDA's disassembler, I cross-referenced the
manual. There remain 3 opcodes which are questionably disassembled,
since even the manual is ambiguous on the details, but beyond that,
this thing should be 100% correct.
Whew. This might have actually fleshed out a bug in the
disassembly/execution. Time will tell...
CVS:
- hook up speech cpu
- get rid of "temporary" code which hardwire ctl & pdc writes
tms5110:
- Implement ctl port input/output for status reads.
- Input/output is switched by clocking pdc after a TALK STATUS command.
- update drivers to support new tms5110_ctl_r
> Sent: Monday, September 07, 2009 8:08 PM
> To: submit@mamedev.org
> Cc: atariace@hotmail.com
> Subject: [patch] const/static/include fixes
>
> Hi mamedev,
>
> A result of some code auditing, this patch adds missing static and
> const qualifiers, and fixes up some header files.
>
> ~aa
> Sent: Wednesday, September 09, 2009 10:32 PM
> To: submit@mamedev.org
> Subject: cheat update
>
> Simple update for add "increase or equal" and "decrease or equal" in
> cheatnext conditions
[Sandro Ronco]
so this code will crash if machine == NULL and the keycode was not a built in
keycode. Changing this so that it will gracefully fail if machine == NULL
> Sent: Sunday, September 06, 2009 7:25 AM
> To: submit@mamedev.org
> Cc: atariace@hotmail.com
> Subject: [patch] Deglobalize input.c
>
> Hi mamedev,
>
> These patches deglobalize input.c. The first adds running_machine to
> some driver apis. The (large) second patch adds the machine parameter
> to the most input_code_pressed apis (generated by script, not
> compilable). The last patch then actually changes those apis and
> others to take running_machine, and adds struct _input_private to hold
> the input state variables.
>
> ~aa
> Sent: Saturday, September 05, 2009 2:11 PM
> To: submit@mamedev.org
> Subject: I386: fix loop instructions when address_size is 16-bit
>
> Original code always assume address_size to be 32-bit
> The patch will use the correct size based on the status of the
> address_size flag.
>