Subject: cps3 sfiii3 title+linear zoom effect fix
fix the sfiii3's title animation (cps3.c line 1055)
also fix the linear zoom effect that OopsWare didn't improve properly
since 0.122u7(cps3.c line 1168,1189,1190)
i've attached 2 images to show the difference between the priginal and
fixed one~
hope this helps~
Subject: two more patches
Hi,
enclosed please find the following patches
* portM.diff which completes the basic port cleanup in
drivers starting with M. It's mostly conversion of 8bit
-> 16/32bit inputs and usage of AM_READ_PORT in memory maps
(plus a couple of eeprom_bit_r replaced with PORT_CUSTOM
and daitorid_soundstatus_r in metro.c converted to a
CUSTOM_INPUT as well)
* avgdvg.diff converts most of the games checking avgdvg_done()
in inputs to use a CUSTOM_INPUT (which I added to video/avgdvg.c).
avgdvg_done() is still in use in mhavoc.c (which requires some
more changes, so I'll take a look later) and in omegrace.c (which
reads it directly and not through inputs). While at it, I've
also done a small cleanup of inputs in starwars.c and tempest.c.
Regards,
Fabio
Subject: [patch] Collapse timer callbacks
Hi mamedev,
The following patch collapses timer callbacks in some cases to avoid
duplicating code. In the case of crystal.c, it also refactors two DMA
handlers and shuffles the init/reset code around a bit. I noticed
while doing this that h8_itu_read8 is missing cases 0x96,0x97 which is
almost certainly a bug, but I left it alone.
~aa
Subject: [patch] Fix i386 bsr implementation
Hi mamedev,
The i386 cpu emulator will return the wrong result for bsr when the
highest bit is set (0 instead of 15 or 31). The attached patch fixes
this.
~aa
Subject: few more patches
Hi,
enclosed please find a few patches to continue the input port
clean up (and to fix a mistake in the previous submission). In
detail:
* hal21.diff: with my last submission I made a mistake in hal21.c
(I converted it only partially to custom inputs, still returning
1<<5 instead of 1 from the handler). please revert that change
(it was in u4_custom04.diff) and apply this one, to fix the
communication with sound cpu
* clean_new.diff: introduce AM_READ_PORT & c. in drivers starting
with M (only few of them updated, more to come)
* custom_new.diff: improves input handling in mainsnk.c and marvins.c
by using CUSTOM_INPUTs and AM_READ_PORTs
* gaelco3d.diff: converts radilkalb inputs to 32bit inputs (as
they are), removing the need of AM_READ16 for those
* itech32.diff: converts inputs of later games to 32bit inputs and
updates all the occurrences as needed. It also simplifies input
handling by removing special_port_r from most of the maps (replaced
by a CUSTOM_INPUT). Now only drivedge still uses 16bit inputs and
special_port_r, but I'll investigate it later.
* arkanoid.diff: changes mcu reads to CUSTOM_INPUTS (and muxed
inputs as well). Bootleg inputs has been slightly changed as well
to cope with the new implementation of the protection
* irem.diff: this patch changes a lot of input related things in
m10->m107 irem boards. First of all, it moves input definitions from
drivers/m92.h to include/iremipt.h (which was already there, just
a bit unused ;) ) and it removes completely drivers/m92.h (which
only contained those definitions). Moreover, it adds more common
inputs to iremipt.h and starts to use that file in m62->m107 instead
of local #defines. Finally, it adds diplocations to all the games in
m62->m107 which were missing and it implements coinage mode 2 through
dipconditions in the drivers which didn't support it.
I tested as much as I could these changes and I can see no regressions.
Regards,
Fabio
Subject: [patch] Fix 1802 cybrcomm, raveracw, raveracj, raveraja,
ridgerac, ridgerab, ridgeraj, acedrvrw, victlapw: No sound in games
after reloading via the MAME UI
Hi mamedev,
The problem with namcos22 games losing sound when running multisession
is actually an m37710 cpu initialization bug. The attached patch
fixes it, and also collapses all the timer callbacks together as an
unrelated code cleanup.
Note: namcos22 has a lot of uninitialized state, so I wouldn't be
surprised if there are other multisession issues.
Subject: some more input clean-ups
Hi,
attached please find a few patches against u4. These diffs improve
input ports for drivers starting with F->L. In particular: they add
AM_READ_PORT whenever suitable, they make inputs fully 32bit where
needed, they remove indexed input read handlers from INITs, they
replace many read handlers with appropriate CUSTOM_INPUTs.
Additional improvements:
* added dip switches and locations to go2000 (even if they were
partially documented in the source)
* fixed artmagic protection (it used a wrong tag, which probably
I added somewhere in 0.125uX); even if I haven't experienced any
problems due to the bug since the regression now it's fixed
More details on the patches:
* u4_clean01 -> u4_clean07: these are standard changes like the
one I submitted previously (no custom inputs involved)
* u4_custom01 -> u4_custom04: here there are also changes involving
custom inputs (they mainly deal with eeprom reads, but a few were a
bit more interesting); I separated these from the other ones in
case you want to check them more in detail
* itech8.diff: this patch improves ports & their handling in itech8.c.
In particular, it replaces the 'special' handlers with a single
custom input and I would like a confirmation that it was the right
choice in this case.
Patches are independent one from the other and should apply with
no problems. Let me know if this is not the case.
Regards,
Fabio
included by generic components in emu/ and thus should have no
dependencies on the MAME code.
Added new target ldplayer, which is based on MAME but serves as
a standalone laserdisc player for CHDs. Right now only the
Pioneer LD-V1000 is connected, and limited commands are available.
Each player type is a driver, so you specify the player type on
the command-line. The driver then opens the first CHD it finds
in your ROM path and uses that as the laserdisc. The intention is
that you specify the -rompath each time on the command-line, so
a typical approach might be:
ldplayer ldv1000 -rompath j:\mach3
where it will pick up the mach3.chd lurking in your j:\mach3
folder. Several basic commands are supported:
Space = play/pause
Alt = toggle frame display
Left = scan forward (when playing) or step forward (when paused)
Right = scan backward (when playing) or step backward (when paused)
0-9 = enter numbers for search
Enter = execute search to frame
item will be visible but not selectable.
Fixed bug that prevented the cheat engine from working when the
debugger was disabled.
Modified xmlfile.c to accept integer values in decimal or hex. The
default is decimal. Numbers may be prefixed by '#' for decimal
values, or by '$' or '0x' to indicate hexadecimal values. Also
added function xml_get_attribute_int_format() to return the format
of the attribute, so that it can be later replicated.
Updated cheat parser to preserve the format of attribute values
used for cheat parameters and items.
Added support for information-only cheat items, which will be
displayed in the menu but which are not selectable and have no
action associated with them. Empty information-only items are
automatically converted to menu separators.
The structures/names were getting too complex for my macros to handle. They would require hand editing and my computer is too slow to keep re-compiling.
Passes a clean compile.
Removed channels parameter from avcomp decode configuration.
Fixed incorrect test in winwork that led to spinning instead
of using the nicely allocated events we had on hand.
Forced a sound synchronization on each vsync in the laserdisc
playback. This prevents overwriting the tail end of the
buffer which was fouling up the MACH 3 audio decoding.
Removed obsolete size check for uncompressable audio data.
1) convert framebuffer's ram from 8 bit to 16 bit
2) convert dma command from 8 bit to 16 bit
3) convert gfx command from 8 bit to 16 bit
4) implemented all gfx mode: 1,2,4,8,16 bpp
for now the rendering is only 8 bpp
now we can use this gfx chip for adp driver that use 4bpp
streams and a delta-RLE pre-encoding. Added optimized
case for the Y/Cb/Y/Cr video encoding case. Cleaned up
the code.
Updated avcomp.c to use the new huffman.c functions.
Reworked configuration options to allow for both input
and output of naturally aligned data streams. Updated
chdman and laserdsc to use the new interfaces. New
compression gives an additional 3-7% over previous
attempt and compresses the dummy CHDs down significantly.
Marked madalien and madalina as Imperfect Graphics. They are missing an effect. When you shoot an enemy in the dark, the whole screen lights up. Basically the headlights fill the whole screen.
credit Guru, Derrick Renaud
I did not do much to the following files because I did not know the best way to name them.
aicadsp.h
sid.h
sidenvel.h
sidvoice.h
ymdeltat.h
I did not update structures only used in the src\emu\sound\*.c files. They are only used locally in the file so they were not worth the effort.
Credit Guru.
(This completes adding all of Guru's readmes to the MAME source. There remain ~20 readmes that I still need to compare to what's in MAME to see if they have any additional information, but beyond that, this little project is done!)
---------------------------------------------------
Killer Instinct (SNES bootleg) [Tomasz Slanina]
Final Fight 2 (SNES bootleg) [David Haywood, Tomasz Slanina, Kowal]
New games marked as GAME_NOT_WORKING
------------------------------------
Sonic Blast Man TURBO 2 (SNES bootleg) [Corrado Tomaselli]
- General clean up (merged memory maps, inputs, readme's)
- Marked vbowl program rom as bad, patched to not crash (fixes bug 00492)
- Protection emulation / patches, promoting to working:
dbc, xymg, lhba (fixes bug 02027), drgwrld3 (fixes bug 00491), chindrac, chindrah
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Da Ban Cheng [Pierpaolo Prazzoli, Luca Elia]
Xing Yen Man Guan [Luca Elia, Wei Mingzhi]
New clones added
----------------
Zhong Guo Long (China, V010C) [Luca Elia]
Zhong Guo Long? (Hong Kong, V011H) [Luca Elia]
- Pass chip type around and restore Jarek's original behavior for YM2203/YM2610
- Always recalculate attack rate in set_ar_ksr, fixes Megadrive/Genesis "Batman & Robin"
What a PITA. :) I'll have to go back and do A-J to lower case the handlers to match the new structure names I already did.
Sorry Mess and other port developers, but the code should match what is stated on the official WIKI. But don't worry, I don't plan on updating anything but the sound cores.
- Reverse engineering of custom IC's 06B49P, 06B53P & 09R81P.
- Mapped the missing 3x SN76489.
- Measured and traced all clocks on the board.
- Measured and fixed the interrupt system.
- Implemented timings/clocks from custom 06B49P.
- Added sound support. All regular game sounds/musics are working.
- Implemented the ADPCM samples system through 09R81P + M5205 emulation.
- Added pinouts and technical notes about custom IC's 06B49P, 06B53P & 09R81P.
- Added flip screen mode.
- Inverted the order of double-up difficult DIP switches.
(Seems to be the opposite of the indicated in the instruction sheet).
- Changed 'Key In' to be active LOW instead of HIGH (checked in the PCB).
- Complete memory map and ports scheme.
- Created handlers for USART port and co-processor communication.
- Renamed the sets accordingly.
- Updated all notes.
- Cleaned-up the driver.
Please co-credit Grull Osgo.
You may have to do a clean compile, or delete the affected driver object files.
struct C140interface to c140_interface
struct cem3394_interface to cem3394_interface
struct ES5503interface to es5503_interface
struct ES5505interface to es5505_interface
struct ES5506interface to es5506_interface
struct ssg_callbacks to ssg_callbacks
struct gaelcosnd_interface to gaelcosnd_interface
struct ics2115_interface to ics2115_interface
I'll stop until my posted question about chip names and upper case is answered.
FWIW, I first check for variables named name_interface and rename them as name_cofig, so they don't conflict with the new interface names.
struct YMF262interface to ymf262_interface
struct YM2151interface to ym2151_interface
struct YM2203interface to ym2203_interface
struct YM2608interface to ym2608_interface
struct YM2610interface to ym2610_interface
struct YM2612interface to ym2612_interface
struct YM3812interface to ym3812_interface
struct Y8950interface to y8950_interface
struct YM3526interface to ym3526_interface
struct TMS5110interface to tms5110_interface
struct TMS5220interface to tms5220_interface
struct AICAinterface to aica_interface
Added a new Japanese version of Ghouls'n Ghosts.
This could be a hack since, running on a 91634B board, it must have been made at least three years after the initial release of the game. However, if if it's a hack, it's exceptionally well made since all ROM stickers look original and the B-board DAM63B PAL label is printed on the chip.
Also, hack or not, the code alignment of none of the already supported versions matches this one so it appears to at least be based on a new version.
The dip switches need to be checked. The Lives dips, and the two unused dips after those, also change the starting level. This could be further evidence that the game is a hack.
New clones added
----------------
Dai Makai-Mura (Japan new version)
struct CustomSound_interface to custom_sound_interface
struct Samplesinterface to samples_interface
struct SN76477interface to SN76477_interface
struct AY8910interface to AY8910_interface
The algorithm is more complex than it should be, but I haven't been able to simplify it more.
The keys are still embedded in the source. It would now be reasonable to move them to external files; however, for several games we only have partial keys so the files would need to be BAD_DUMP.
memory regions. Extended error codes to report incorrect memory
spaces, memory names, or memory sizes. Added verification callback
to the debugger to validate CPU and memory region names, as well
as verifying that a requested address space exists for a given
CPU.
Added support for oneshot cheats (those with only an "on" script).
They are activated via UI_SELECT in the cheat menu, and pop up a
message when activated. Also added a "Reset All" item in the cheat
menu to reset all cheats back to their default state, and added
support for UI_SELECT on a non-oneshot cheat so that it resets that
cheat to its default value.
Restored previous behavior that allowed popmessage() messages to
overlay menus and other UI.
and reports if no white flags were seen.
Fixed bug in aviio.c which could cause an infinite loop if attempting
to read sound beyond the end of the file.
Rewrote the white flag detection to use a histogram for outlier detection
and peak identification.
+ plus
- minus
* times or mul
/ div
% mod
! not
~ bnot
&& and
& band
|| or
| bor
^ bxor
lt <
le <=
gt >
ge >=
eq ==
ne !=
Changed cheat escaping to automatically escape && & < and <=
to and band lt and le.
Subject: New russian game
Dear Aaron,
thanks to the very kind and good guys at the "Soviet Arcade Games Museum"
(www.15kop.ru), namely Alex and Max; and thanks to Antro (a good friend of
mine), we have a new dump for a previously unknown Russian game: S.O.S. by Terminal.
It works on the same hardware as Konek (already in MAME), it's a simple rom
swap. I still have to chek about PROMs.
A diff file is included, together with roms.
All the best
Antonio (f205v)
Subject: some diplocations
Hi, enclosed please find a patch to add diplocations to the some
drivers which still missed them. The patch assumes my changes to
drivers starting with C,D,E have been applied (port01.diff -
>port09.diff I sent on Aug 1st... there is at least crshrace.c w
hich could fail to correctly patch, due to possibly different tags,
and probably 1 or 2 more... not many, but maybe annoying anyway).
It adds diplocations to the following drivers: combatsc.c, copsnrob.c,
cosmic.c, crgolf.c, crimfght.c, crospang.c (here I also added service
dips to heuksun and bestri, which allowed me to verify locations),
crshrace.c, dambustr.c, darkseal.c, dassault.c, dblewing.c, ddrible.c,
deadang.c
It also adds locations to the following games: ddragon & ddragon2 on
ddragon.c and docastle, dorunrun & dowild in docastle.c
Regards,
Fabio Priuli
From: Fabio Priuli [mailto:doge.fabio@gmail.com]
Subject: to simplify cischeat inputs
Hi,
the enclosed diff has a twofold effect on cischeat.c:
on one side: it adds diplocations to bigrun, scudhamm,
cischeat & f1gpstar
on the other side: it removes the current hacky handling of
f1gpstar coinage dips (check video/cischeat.c to see what I
mean with hacky!) to use conditional ports instead. BUT in
order to do this, I had to add more possible values for the
PORTCOND in iptport.c. The problem is that f1gpstar has a set
of coinage settings when you set the region to JPN or USA and
another one when you set the region to EUR or FRA. To implement
this I added the following self-explanatory new PORTCOND:
ISLARGER (>), ISNOTLARGER (<=), ISSMALLER (<), ISNOTSMALLER (<=).
Only two were really needed to implement f1gpstar dips, but
the other two seemed costless to me while offering even more
flexibility to the PORT_CONDITION macro.
Also notice that the handling of conditional ports in 'TAB>Dip
Switches' menu doesn't work well (in the current source, not
affected by my patch) with contracted expressions like
PORT_DIPUNKNOWN_DIPLOC: the wrong items remain listed in the
UI menu even when you change the condition! If you leave the
DEF_STR( Unknown ) with ON/OFF cases, everything is displayed
correctly in the menu. However, I was not able to track down
what part of code is responsible for this bug.
Regards,
Fabio Priuli
Subject: another small fix
Hi,
with this last patch I hope to have fixed all regressions I could
had introduced with my past submissions. This time it was a small
problem due to my fix to bug 1565 (alleymas duplicated inputs):
the game was unplayable in u3 (even if not reported to MT).
Regards,
Fabio Priuli
Subject: fix for MT bug 2056
I failed to see this wrong tag for almost 2 days!! One would guess that
looking for the cause of coins problems, an handler with the comment "coin
inputs" should have been noticed immediately. I saw it only this morning :(
However, fix in attachment.
Regards,
Fabio Priuli
PORT_START_TAG to PORT_START.
From: Fabio Priuli [mailto:doge.fabio@gmail.com]
Subject: let's say goodbye to untagged input ports ;)
Hi,
enclosed please find a few patches against 126u3 source
* port01.diff -> port09.diff : these patches continues the
cleanup of inputs in drivers starting with C (the remaining ones),
D and E. No ambiguous situations this time, so I guess there should
be no problem with the changes. Improvements include conditional dips
added to dynduke and diplocations for chinagat, chqflag, circus,
citycon, cloak, contra and dynduke
* tag01.diff -> tag09.diff : these patches add tag to EVERY input port
in drivers starting with F->Z. Notice that only tags are added, no
AM_READ_PORT, nor PORT_INCLUDE (and I saw a lot of drivers would need
it ;) ), nor other cleanups contained in the patches above. I'll keep
cleaning input next week, probably, but at least we can definitely
remove the untagged version of PORT_START :) Notice I was able to
compile the source commenting out the definition of PORT_START, so
I guess every occurrence is covered...
- new tag <comment> (within <cheat>) is read and preserved
when saved
- removed variable attribute from <parameter>; it is now
assumed to be 'param'
- added default attribute for <parameter>
Added new variable 'frame' accessible from cheat scripts. This
can be used in the conditional to prevent execution on every
frame, or for other effects (like displaying temporary messages).
Added new variable 'argindex' which is the index when processing
an <argument> with a count attribute greater than 1. Can be used
in expressions like:
<argument count="3">main.pb@(1000+argindex)</argument>
Reinstated the cheat menu. It now displays all loaded cheats and
allows for them to be activated. All known cheat behaviors should
be working now.
* moved a couple of exp(x) from _step into _reset where appropriate
* use tabulated function values for the transfer function in DSS_INVERTER_OSC
==> 40% speed increase in dkong - from 520% to
$ ./mame64 -noautosave -nothrottle -str 30 -video none dkong -nomt -nosleep
Average speed: 722.48% (29 seconds)
tool which walks through either an AVI or CHD capture from a
laserdisc and ensures that there are no anomalies lurking in
the VBI data.
Added new option to chdman, where if you use -createav with
a special filename (either 2:2 or 3:2) it will create a fake
laserdisc files with the equivalent cadence. This can be used
for testing until full captures are available. Most games used
2:2 apart from Dragon's Lair and Space Ace, which were 3:2.
Note that even though these files are essentially blank, they
are Huffman-compressed, meaning that the maximum compression
ratio you will get is 8:1, so they still end up ~5GB.
Moved error strings from chdman.c to chd.c, where they can be
fetched from any caller via the new chd_error_string()
function.
Updated vbiparse to improve Manchester code decoding. It now
assigns a confidence level per bit based on how solid the
data is. Also added a new function vbi_parse_all which parses
the white flag and all three lines of metadata from a
laserdisc frame. It then compares line 17 and 18 against each
other and selects the most likely candidate based on per-bit
confidence and other factors.
Added frame number display to laserdsc.c. It is off by
default, though most players can be configured to turn it on
(not sure if any actually do). It can be manually toggled via
the backslash key during playback.
Commander (MACH 3 hardware). Old laserdisc hacks are now removed.
The code now talks to the standard Pioneer PR-8210 interface. Also
removed hacky "target list" from the MACH 3 ROMs; this information
is now decoded on the fly from the right channel laserdisc audio.
Other Gottlieb cleanups:
- moved sound inputs to audio/gottlieb and included them in
all relevant drivers
- ordered input ports and ROM definitions consistently
Other laserdisc changes:
- changed PR-8210 interface to work consistently for both Gottlieb
and Stern games
- added audio callback mechanism to allow drivers to peek at the
raw audio streams
- extended the VBI parser to be even more lenient
Instead, they are identified by the region they were loaded in. This
generally means one disk per region. get_disk_handle() now takes a
region name in place of an index. Updated all callers to do this.
The SCSI modules in particular posed a challenge to make this work,
so watch out for potential bugs there.
Changed the IDE interfaces to default to choosing the region with the
same tag as the device for its master disk (assuming no slave). Added
support for specifying explicit master/slave disk regions as part of
the configuration, though slave disks are still not supported yet.
Change the laserdisc interface to no longer require a disk number or
a custom sound device. Both are now assumed to be tagged the same as
the laserdisc device. Updated all drivers accordingly.
maps and behaviors according to the schematics. Hooked up coin
counters.
Added new functions cputag_set_input_line() to assert input lines
via CPU tag instead of index.
Formerly known as pokerigs in iqblock.c (wrong driver).
I've renamed it to cpokert and moved it to csk.c.
It works now.
New clones added
----------------
Champion Poker (v200G) [Luca Elia]
now simply requires an AVI file input.
Relaxed VBI Manchester code clocking to allow for a little bit
of wiggle when finding the clock.
Changed laserdisc support to parse white flags and other data
from the VBI data directly, rather than relying on the textual
metadata. Expanded video frame cache to 3. Changed the way
frames are assembled to decrease the likelihood of getting an
interlaced weave. Fixed sound creation so that it is done at
reset time instead of device start, when the sound devices aren't
yet live.
Fixed bug in winwork that caused the creation of single work
items to return NULL, and thus lead to massive memory leaks when
using A/V CHDs.
Removed the Enable line from the DISCRETE_ADJUSTMENT modules. They should never be disabled.
Some before/after speed tests:
dkong - from 203% to 204%
firetrk - from 418% to 429%
phoenix - from 253% to 257%
polaris - from 448% to 476%
(roms in current/j/jingbell.zip)
The background (slot reels) is not emulated properly,
hence it's not playable and marked as not working.
New games marked as GAME_NOT_WORKING
------------------------------------
Jingle Bell [Luca Elia]
Like some other Space games (mosaic.c), it is protected by an MCU
that supplies the addresses to jump to.
I've done some basic simulation that at least shows the service mode.
This is a candidate for decapping / trojaning, or for Nicola to examine
like he did with Mosaic ;-)
Note to Guru: u118 is probably bad, it fails the rom test.
New games marked as GAME_NOT_WORKING
------------------------------------
Quiz Punch 2 [Luca Elia]
to whole functions. The other one I'm not so sure about. Commented
code is usually hilighted differently, making it very easy to spot.)
Hi mamedev,
This set of patches has one aim only, to identify chunks of code that
have been disabled by the use of C/C++ comments, and to disable them
instead by using the preprocessor. The C comment approach to
disabling code isn't safe (embedded comments will trip it up), and the
C++ comment approach isn't elegant (you shouldn't need to touch every
line to disable a chunk of code). Using #if...#endif is preferable
always, excepting perhaps if (0) { ... }.
The patch has three parts. The first only handles cases where full
functions were disabled. The second handles cases where parts of
functions were disabled. The third then tries to restore the
whitespace that the use of comments converted from tabs to spaces via
srcclean.exe. It also cleans up the whitespace in a handful of the
files in areas outside of the original two patches.
~aa
Subject: a few cleanups
This patch contains:
- removal of unprintable chars (newlines) in SH-2 disassembler (I
submitted this in the past nd it wasn't included)
- a few unnecessary checks after malloc_ort_die() calls
- changes two romload.c warnings to use GAMENOUN instead
- adds "deprecat.h" in a few src/mame/drivers files (would be
necessary, if the debugger.h one would be removed)
- cleans up the mame.mak by adding all missing defines and grouping
them based on cpu.mak
- renamed video_exit() to winvideo_exit() for consistency in function
names
files. Removed old option 'cheat_file'.
Updated xmlfile.c to specify the line number for each node, for more
accurate error reporting.
Removed old cheat.c/.h and replaced them with code that will read and
write the new XML-based cheat format using the new cheatpath option
(cheats still need to be enabled in order to load at all). Note that
the cheats are not implemented yet, but they are fully parsed. To test
saving, whenever a cheat file is successfully loaded, it is immediately
written back out as 'output.xml' to the cheat directory for validation.
Game is NOT WORKING because it uses an H8/3644 MCU plus an IDE HDD to emulate the home PS1 version's redbook audio tracks. Cross your fingers for decapping.
Roms are in current/g/galaxi.zip.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Galaxi [Luca Elia]
The ROL/ROR/SHL/SHR opcodes provide the carry flags typically generated by
almost all CPUs. The RORC/ROLC opcdes map directly to the rotate through
carry of most CPUs as well.
auto-filled by the device manager before starting the device. This
simplifies the auto-binding process for devices.
Added new selector for device-specific ROM regions. Not yet wired
up in the ROM loader.
1) refactors many global and static variables in video\dc.c into a
structure to hold the tile accelerator state
2) textures should be better decoded with more pixel formats
3) adds placeholders for some register probably used by the dimm board
4) corrects a little error in a rom board register (very important, now at
least the gdrom games try to start)
Sent: Sunday, July 27, 2008 2:46 PM
To: submit@mamedev.org
Subject: misc patches
Hi,
enclosed please find a few more patches based on 126u2. It's just a few
minor bugfixes because I'm quite busy and I still have to test the other
changes to tagged inputs (I will send them in the next few days)
In misc2.zip you'll find a few corrections to my previous patches and a
few new bugfixes:
* cachat.diff: It fixes bug 2046. This is a bug I introduced misreading
the default value of the flip dip when updating taito_l.c to use
taitoipt.h definitions. My bad, sorry.
* witch.diff: It fixes another small 'mistake' I introduced when tagging
the ports in witch.c. I searched and replaced a few too many 'port'
occurrences, making some comments unreadable. Again, sorry for the
inconvenience.
* btime.diff: It's an updated version of my previous patch, following
your suggestions. 'Off' comes always first now and manual settings which
do not work on the emulated game are commented out
* skyfox.diff: It fixes bug 2050. Being at it, I also added dip
locations to the driver and updated memory maps to use AM_READ_PORT
* combatsc.diff: It fixes bug 456, solving both the regression which
made disappear all sprites (they were covered by the non-transparent
text layer since 118u1) and the corruption of the graphics in title
screen (due to the wrong drawing order). Mind that bug 400 (scrolling
problems present since 0.79) is not fixed yet, unfortunately.
Regards,
Fabio
From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Stricter ADDRESS_MAP checks
Hi mamedev,
The current implementation of address maps is lacking some useful
checks of the initial tokens. In particular, it doesn't validate that
a particular entry doesn't try to define the same handler multiple
times.
The attached patch adds this and some other validations as fatalerrors
in address_map_detokenize, and fixes the affected maps. The errors
generally fall into the following categories.
1. AM_RAM AM_WRITE(...). Should have been AM_RAM_WRITE(...)
2. AM_RAM AM_READWRITE(...). The AM_RAM is a NOP.
3. AM_RAM AM_RAMBANK(...). The AM_RAM is a NOP.
4. AM_ROM AM_ROMBANK(...). The AM_ROM is a NOP.
5. AM_ROM AM_READ(...). The AM_ROM is a NOP.
One peculiar error was in equites.c, where there were two AM_BASE
entries.
~aa
second SH2 for ST-V games.
Fixed buffer overrun in latest SCSP code. Not sure how that ever
worked.
colmns97 still asserts in SCSPDSP, but this happened before the
region change.
- Pre-defined CPU and SND clocks.
- Switched the color system to RESNET calculations.
- Completed the remaining DIP switches.
- Added lamps support. Created a layout to show them.
- Changes on the interrupt system (need to be verified on the PCB).
- Renamed the graphics regions to more descriptive names.
- Corrected the manufacturer's name.
- Splitted the driver to driver + video.
- Updated technical notes.
integer value, regions are now referred to by a region class and
a region tag. The class specifies the type of region (one of CPU,
gfx, sound, user, disk, prom, pld) while the tag uniquely specifies
the region. This change required updating all the ROM region
definitions in the project to specify the class/tag instead of
region number.
Updated the core memory_region_* functions to accept a class/tag
pair. Added new memory_region_next() function to allow for iteration
over all memory regions of a given class. Added new function
memory_region_class_name() to return the name for a given CPU
memory region class.
Changed the auto-binding behavior of CPU regions. Previously, the
first CPU would auto-bind to REGION_CPU1 (that is, any ROM references
would automatically assume that they lived in the corresponding
region). Now, each CPU automatically binds to the RGNCLASS_CPU region
with the same tag as the CPU itself. This behavior required ensuring
that all previous REGION_CPU* regions were changed to RGNCLASS_CPU
with the same tag as the CPU.
Introduced a new auto-binding mechanism for sound cores. This works
similarly to the CPU binding. Each sound core that requires a memory
region now auto-binds to the RGNCLASS_SOUND with the same tag as the
sound core. In almost all cases, this allowed for the removal of the
explicit region item in the sound configuration, which in turn
allowed for many sound configurations to removed altogether.
Updated the expression engine's memory reference behavior. A recent
update expanded the scope of memory references to allow for referencing
data in non-active CPU spaces, in memory regions, and in EEPROMs.
However, this previous update required an index, which is no longer
appropriate for regions and will become increasingly less appropriate
for CPUs over time. Instead, a new syntax is supported, of the form:
"[tag.][space]size@addr", where 'tag' is an optional tag for the CPU
or memory region you wish to access, followed by a period as a
separator; 'space' is the memory address space or region class you
wish to access (p/d/i for program/data/I/O spaces; o for opcode space;
r for direct RAM; c/u/g/s for CPU/user/gfx/sound regions; e for
EEPROMs); and 'size' is the usual b/w/d/q for byte/word/dword/qword.
Cleaned up ROM definition flags and removed some ugly hacks that had
existed previously. Expanded to support up to 256 BIOSes. Updated
ROM_COPY to support specifying class/tag for the source region.
Updated the address map AM_REGION macro to support specifying a
class/tag for the region.
Updated debugger windows to display the CPU and region tags where
appropriate.
Updated -listxml to output region class and tag for each ROM entry.
- Fixed ADPCM decoder to remove bad optimization and match YMZ280B. DC offset is fixed and output quality is higher
- Improved handling of slot monitor and timers B and C
- Simplified interpolation code
- Rewrote core logic, communications, and interfaces.
- Added three parallel memory moves to the disassembler.
- Initial interrupt logic in place.
Plygonet.c updates.
- All communication hacks have been removed.
- Memory maps have been temporarily reverted while new DSP56k cpu core catches up.
Subject: [patch] Conditional code cleanup resubmit
Hi mamedev,
This is a resubmit of a previous patch. The earlier version would not
compile with 32-bit MSVC, due to the fact that its linker required
external dependencies in dead code to be met before dead code
elimination was done, causing linker errors. The proper fix for this
would be to add the necessary dependencies, so I instead simply left
the conditional code in place in winalloc.c and chd.c.
~aa
Original submission email below:
----
Conditionally compiled code tends to bitrot, so MAME should try to
avoid it as much as possible. I sent a patch six months ago to
eliminate conditional code associated with logging, here's another
patch that does more of this. Some notes:
1. drc_ops.c: I couldn't find a LOG_CODE anywhere, so I used if (0).
2. romload.c: I converted all the users of debugload to use
LOG((...)) instead, following the traditional conditional logging
pattern.
3. windows/sound.c: I eliminated the separate sound log and directed
the few outputs to the error log.
~aa
Subject: [patch] .data removals to fix reset/multisession bugs
Hi mamedev,
One nice artifact of properly constifying data structures in MAME is
that it makes it relatively easy to spot a class of reset/multisession
bugs, namely that almost any object in .data is probably in error.
Unless the value is properly initialized in a reset routine the
initial non-zero value can't be relied upon, so there's no need to
have a non-zero value to begin with.
With that in mind, here's a patch to move more items out of .data by
either applying const, removing the non-zero initializer (if its
overwritten by init/reset) or by adding appropriate initialization
code. In most cases I tried to add initialization code to a reset
routine, but in some cases I chose an init routine, possibly leaving a
reset bug intact.
Some interesting bits:
1. tms9900 core. The use of .data to initialize the irq_level wasn't
correct in some cases as the layout of the structure was core
dependent.
2. bfcobra.c. By introducing a VIDEO_START routine a hack in
VIDEO_UPDATE could be removed.
~aa
Sent: Wed 7/23/2008 8:15 AM
To: submit@mamedev.org
Subject: more input patches
Hi,
with the attached diff I started drivers with C. Added all the missing
tags, made more extensive use of PORT_INCLUDE where possible and added
AM_READ_PORT where suitable. I also added dip locations for: cabal,
canyon, cbuster, cclimber, swimmer and guzzler.
Patch for cave.c is separated in case fix for bug 1681 has been submitted
and accepted (changing maybe the driver)
Regards
Fabio
Sent: Tue 7/22/2008 11:30 AM
To: submit@mamedev.org
Subject: Demon's world set 5
Enclosed another revision of Demon's World (my pcb has the jumpers set
to japan).
I renamed the other sets because in my opinion the code needs to be
studied before saying what's older and newer revisions.
Demon's World / Horror Story (set 5)
Sent: Tue 7/22/2008 11:30 AM
To: submit@mamedev.org
Subject: more tags and AM_READ_PORT
Hi,
with the following patches I added tags to all ports (and used AM_READ_PORT
in the memory maps of all the drivers which didn't) in drivers starting with
B. I also added diplocations and factory settings for the games which had
either a manual or a dips listing at crazykong (and to squaitsa, thanks to
a scan from f205v) [1]. A couple of patches are separated from the main ones
because they contain changes which could need additional review
In details:
* diffB01->diffB07 contains standard addition of tags and AM_READ_PORTS to
driver starting with B (a diff each 4/5 drivers).
* bsktball.diff adds diplocations to the driver, but also removes the fake
handling of P1 Start/P1 Button1. Since other games have no separate P1 Start
in MAME (e.g bagman, or joust2 as noticed in the invalid bug 1734), I
personally see no reason to duplicate inputs in this game.
[1] In details, I added locations to: bwidow.c & bzone.c games, bestleag,
blackt96, bogeyman, bombjack, boogwing, bottom9, brkthru, darwin, buggychl,
squaitsa, btime, bnj, lnc, zoar and disco
Sent: Monday, July 21, 2008 2:16 PM
To: submit@mamedev.org
Subject: fix for MT 2029
I noticed only today the silly mistake which produced the bug passing from 126 to 126u1. Stupid typo.
Attached you find the fix.
Regards,
Fabio
Sent: Monday, July 21, 2008 9:16 AM
To: submit@mamedev.org
Subject: Plotting/Flipull pal dump
The pal was dumped by Charles Mcdonald, I enclose the raw dump, pld and
jed files.
It works perfectly as a replacement on the pcb
Sent: Sunday, July 20, 2008 5:46 AM
To: submit@mamedev.org
Subject: last batch of misc. diffs
Hi,
attached please find a few patches to fix some (trivial) mametesters' bug
and a patch to use whenever possible AM_PORT_READ in drivers starting with
# or A. More in detail
* hypreact.diff 'fixes' bug 1572 on MT (not really a bug, in fact), adding
a better description to inputs only used in Joystick Mode
* alleymas.diff 'fixes' bug 1565 on MT. In this case I'd like some dev to
review the patch: the two duplicate inputs in alleymas are properly detected
also in service mode, so MAME is not wrong as is. Nevertheless, inspired to
the common habit of commenting out duplicate coinage inputs, I decided to
comment them out but leaving them in the source for documentation purpose
* bishi.diff fixes bug 1718 on MT. Duplicate inputs did nothing and the new
inputs are now correct both during the game and in Service Mode
* Finally, portA.diff is a bit more interesting and converts a few driver to
use AM_READ_PORTs and tags. Here and there, I also changed a few tags to e.g. s
tress similarities in the handling which were hidden by anonymous "INn" tags
(see atarifb & atarifb4 for instance)
Regards,
Fabio Priuli
Sent: Saturday, July 19, 2008 7:46 AM
To: submit@mamedev.org
Subject: a few bugfixes (or at least proposals of fix)
Hi,
enclosed please find the following patches for bugs currently
in MAME (sorry for the verbose explanations, but I hope it makes
faster the verification and not to steal too much time to the
reviewer)
correct fixes (IMHO)
* harddriv.diff : Fixes a bug introduced in u7 which broke racedrvc,
hdrivair and their clones (due to some tags not being renamed).
Strange no one has noticed this (not even Firevawe when he ran its
regtest before 0.126!), anyway now it's fixed...
* gstrik2.diff : This patch fixes bug 1568. One of the two service
mode keys doesn't give access to the service mode (and in fact it's
not read at all in the input test in service mode). I changed it to
an unknown dipswitch
* atarijsa.diff : This changes the ports #defined in
src/mame/audio/atarijsa.h to be EXTERNAL_INPUTS (and modifies
accordingly the drivers using them). It allows to remove the SWAPPED
version (modified locally in xybots.c) and it allowed me to fix half
of bug 818 (duplicated coins in stunrun). Indeed, stunrun and steeltal
use their own coin input and the jsa ones are not recognized in
Service Mode. Therefore, I removed them through PORT_MODIFY. @Aaron: I
left in COIN3, even if those games do not use it, maybe it can be made
UNUSED as well
proposals:
* leland.diff : I noticed that the SERVICE MODE key in leland.c games
doesn't do anything service related, but it simply adds a coin. This
patch changes them to IPT_COIN3 (because this is the mapping of the same
inputs for offroad and pigout). Actually, it could be an IPT_SERVICE1
(but I don't have currently access to any manual to verify it) or there
could be a different bug in the driver causing the input to be read as a
coin... If one of the latter options sounds more correct to you, please
change the IPT or ignore this patch.
[Note: this was changed to IPT_SERVICE1]
* pc10.diff: This one fixes bug 595, i.e. Start button in playch10.c is
currently mapped to key "2". This could be by design, but it's a bit
confusing since it works the other way around in vsnes.c. If it was by
design and you don't plan to change it, please post at MameTesters so
that we can close the report as Not-a-bug.
* twotiger.diff : This addresses bug 1448. The wheel is completely
centered for any value in the (closed) interval [0x64, 0x69] (goes to
left for 0x63 and to right for 0x70). I've chosen 0x67 because it's in
between, but I'm not sure 100% about the way analog inputs are managed
in the core, so feel free to use another value in that range if it m
akes more sense than 0x67.
That's all. Thanks for the atention
Regards,
Fabio
Subject: [patch] Fix zr107 multisession issues
Hi mamedev,
The attached patch makes the initialization of various Konami PPC
drivers consistent from run to run, hopefully fixing most multisession
issues. I confirmed that this resolves running midnrun multisession,
but it is possible other issues remain.
The patch also moves some allocations from static to dynamic storage.
~aa
Subject: a last bunch of patches
Hi,
attached please find a last block of diffs which completely removes
every explicit use of input_port_read_indexed from src/mame/ (it
remains in the various input_port_N_r, but I'll move to those later
:) ) and fixes a small input bug
Namely:
nbmj_fix.diff: fixes bug MT 479. livegal turns out to use in a
slightly different way the nichibutsu mahjong panel and inputs in
test mode confirms that my change is correct ;)
patch01.diff -> patch03.diff: convert to use tagged inputs and
handlers the remaining drivers (U to Z and a few others)
taito.diff: converts taitoic.c handlers to use tags (this required
some more re-tagging in a few taito drivers, which I overlooked previously)
namcos22.diff: converts namcos22 read handlers to use tags. I have
been very carefully about where each read handler is used (and adopted
read_safe where necessary), so there shall be no problem with this
(despite the complexity of the driver)
mediagx.diff: finally, I re-submit this patch about mediagx.c. Much more
work would be needed to correctly map inputs for this driver, but I fear
is still a bit beyond my current skills. However, from inspection through
the debugger and from error.log, you can notice that the variable
parallel_latched (used to read inputs) takes values 0,...,23 so this diff
does no harm to the driver and allows to remove also the last occurrence
of input_port_read_indexed!
As usual, I tested as much as I could the changes and I expect no
regressions is introduced
Regards,
Fabio Priuli
Subject: 8257dma
Hi Aaron,
Small changes for 8257.
Fixed terminal count stop for autoload mode and added callback function existance check [Miodrag Milanovic]
Regards,
Miodrag
convert between attotimes and a clock tick at an integral frequency.
Changed the 6532 RIOT device into a proper device. Rewrote the
logic to be simpler and leverage the new attotime functions. Changed
the I/O port setters to specify a mask, and changed the I/O port
callbacks to pass in the previous value. Updated tourtabl and
gameplan drivers to use the new device interface.
Converted audio/starwars.c, audio/exidy.c, and audio/gottlieb.c to
use the new RIOT implementation instead of rolling their own.
Began gottlieb.c cleanup. Converted palette calculations to resistor
weights. Corrected video timing. Reduced the number of separate
machine drivers. Fixed incorrect spriteram sizes. Populated full
memory maps for the main CPU and the rev 1 sound board. More to
come.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Shinobi III (Mega Play) [Tomasz Slanina, Kowal]
- Rearranged decoding behavior.
- Updated code style to MAME standards.
- Tested each single-word opcode with custom ROMs.
(This is a precursor to other major dsp56k changes I have made. I just gotta' get plygonet commanders up and running to do some tests)
- TGP now correctly uses table roms (model1/2 updated accordingly)
- removed FIFO hack on srallyc (game now runs)
- added analog ports reading for model 2A/B/C
- fixed some loading instructions in the TGP. that fixes srallyc automatic transmission bug
Added validity checks to ensure no duplicate sound or CPU tags.
Fixed several duplicate sound tags from the last checkin.
-listxml now outputs the tag names for CPUs and sound chips.
well, the fix is not that but changing them this way:
program_write_dword_32le(i960.r[I960_FP]-16, i960.PC);
program_write_dword_32le(i960.r[I960_FP]-12, i960.AC);
in take_interrupt.
It seems it came from a partial fix in the ret instruction. the manual says that PC is saved at FP-16 and AC at FP-12
it was reversed in mame, so when trying to fix it, i suppose Ernesto forgot to change the push too.
I've tested this fix and apart from having daytona working, pilot kids 2A works too (that I think has been broken for ages).
MDRV_SOUND_ADD. All sound chips must now include a tag.
Laboriously changed all existing drivers to define a
unique tag for each sound chip.
CPUs are next, but will require a more hands-on manual
process to produce reasonable tags.
properly ignore the "break into debugger" keypress and not allow
related characters to filter through. Removed some hacks related to
making that work in the past.
Changed osd_wait_for_debugger() to take a machine parameter and a
"firsttime" parameter, which is set to 1 the first time the function
is called after a break. The Windows debugger uses this to ensure
that the debugger has focus when you break into it.
I start to think that my computer was infested by a gremlin when I sent my patches for S-starting drivers... Indeed, I could have sent a not complete version of the diff for segas16b.c. In attachment, you can find a small patch which changes apoint & snapper input tags as they should be for those games to work. If these tags were already fixed in the diff I sent, please simply disregard this submission :)
Good work
Fabio
Subject: some more read_indexed removal
Hi,
enclosed please find a few patches which
* convert to use tagged inputs and handlers all drivers starting with S
* simplify input reads in system24 (removing a redundant handler)
* clean up a bit inputs in system 16 & 18 bootlegs (among the other things, now coinage and P2 inputs in fpointbl & fpointbj work again)
Note that I put ssv.c changes in a separate patch because, according to MT1959 bug, the driver could have been modified. Let me know, however, if this patch or any other fails to apply.
Once again, I spent a lot of time testing these changes (both with automated tests with -str 25 and by playing emulated sets) so I hope everything is correct.
Regards,
Fabio Priuli
--
From: Fabio Priuli [mailto:doge.fabio@gmail.com]
Subject: fixed patch
Hi,
applying to a fresh source my recent patches I noticed that patchS09.diff got corrupted somehow before being submitted (it misses a few lines). While not terrible (each patch was as usual independent from the others), yet it's a bit annoying that part of the changes (system 16 & 18 bootlegs) would have been 'lost' :)
I attached a fixed patchS09.diff, which contains all the changes done in my previous patchS09.diff but shall now correctly apply
Sorry for the inconvenience
Fabio Priuli
--
From: Fabio Priuli [mailto:doge.fabio@gmail.com]
Subject: two more patches
Hi,
enclosed please find two patches which
* convert to use tagged inputs and handlers most drivers starting with T
* fix MT bug #2006
* remove a lot of redundant #define from taito drivers, replacing them with PORT_INCLUDEs and definitions from taitoipt.h
Hopefully, both .diff will apply with no problems despite their size. Let me know if something fails to apply and I will generate per-case .diff :)
As usual, I tested as much as I could the changes, so there shall be no regression.
Regards,
Fabio Priuli
Subject: srmp5 some work
- Removed hack in drive machine R3000
- Adjusted R3000 frequency to 25 Mhz according to speglsht (the hardware is the same)
- Adjusted visible area (but i'm not sure it's correct)
- Fix one rom loading
Bye Sonikos
Sent: Tue 7/8/2008 3:16 PM
To: submit@mamedev.org
Subject: Tinymame sumition...
Hi
I try a small update for Tinymame..
While Gaelco has offers their roms for World Rally for download on their website, they are supposed to be free...
I supposed i can add this game to tinymame.
I think i didn't make mistake implementing it (i'm not dev at all... I'm hebus on mamewold messageboard)...
If it can be accepted, my name "macareno" for signing, would be more discreet than hebus...
Attached-files are the diff file and the .exe for trying...
Richard
EEPROM data, and the size is in terms of units, not bytes. Updated all
drivers accordingly.
Changed the ROM loading code to actually alter the region flags based
on the CPU endianness and bus width when creating the region, rather
than fixing them up on the fly. This means that callers to
memory_region_flags() will get the correct results.
Changed the expression engine to use two callbacks for read/write rather
than relying on externally defined functions.
Expanded memory access support in the expression engine. Memory accesses
can now be specified as [space][num]<size>@<address>. 'space' can be
one of the following:
p = program address space of CPU #num (default)
d = data address space of CPU #num
i = I/O address space of CPU #num
o = opcode address space of CPU #num (R/W access to decrypted opcodes)
r = direct RAM space of CPU #num (always allows writes, even for ROM)
e = EEPROM index #num
c = direct REGION_CPU#num access
u = direct REGION_USER#num access
g = direct REGION_GFX#num access
s = direct REGION_SOUND#num access
The 'num' field is optional for p/d/i/o/r, where is defaults to the
current CPU, and for e, where it defaults to EEPROM #0. 'num' is required
for all region-related prefixes. Some examples:
w@curpc = word at 'curpc' in the active CPU's program address space
dd@0 = dword at 0x0 in the active CPU's data address space
r2b@100 = byte at 0x100 from a RAM/ROM region in CPU #2's program space
ew@7f = word from EEPROM address 0x7f
u2q@40 = qword from REGION_USER2, offset 0x40
The 'size' field is always required, and can be b/w/d/q for byte, word,
dword, and qword accesses.
* also fixes that the frog disappears for player 2 if moved backwards. This will
position him on x=242.
All games in this driver now have the sprites in cocktail/player 2 now offset by 2
- All games on all drivers should work as before except "colmns97" and "stress" which crash due to sound system trouble.
- All idle skips are still included. They are quite a bit less effective than they were on the interpreter, but they still give a boost.
- Fast RAM bypass is not included yet so this does not represent final performance. That said, it's consistently faster than the interpreter even now. Example: sfiii3 on 0.126 gets 609% on the interpreter and 961% on the DRC.
Major thanks to Aaron for his assistance with several sticky core bugs and other issues encountered writing this.
lurking. If you run into anything odd, please let me know.
Added new module uiinput.c which manages input for the user interface.
The OSD is responsible for pushing mouse events and character events
to this interface in order to support mouse movement and text-based
input (currently only used for the select game menu). Added support
for navigating through the menus using the mouse.
[Nathan Woods, Aaron Giles]
Redesigned the UI menus so that they can maintain a richer state. Now
the menus can be generated once and reused, rather than requiring them
to be regenerated on each frame. All menus also share a comment eventing
system and navigation through them is managed centrally. Rewrote all the
menus to use the new system, apart from the cheat menus, which are now
disabled. Reorganized the video menu to make it easier to understand.
[Aaron Giles]
01917: gunlock, rayforce, rayfocj: The color of Battleships is wrong in the 1st stage.
01925: gunlock, rayforce, rayforcj: The explosive color of the demo is different.
----------------
World Class Bowling v1.6N [Brian Troha]
First WCB set to move the single board PCB platform. Also contains an earlier sound program.
Redumped sound 1 rom.