Funworld updates:
- Removed the temporary hack to jolyc980.
- Updated technical notes regarding Magic Card II & Jolly Card Professional 2.0.
- Moved snookr10 to its own driver.
- Minor clean-up.
New games marked as GAME_NOT_WORKING
------------------------------------
Apple 10 (Ver 1.21) [Roberto Fresca]
Ten Balls (Ver 1.05) [Roberto Fresca]
there are some issues, the unused palette bits are significant as the colours are wrong at the moment, also maybe it should be joystick, not spinner etc.. It's an ugly Korean hack game ;-)
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Jumping Pop (NICs, Korean bootleg of Plump Pop) [Robin Cooper, David Haywood]
increased Varth CPU clock to 12MHz to reduce slowdowns (the game was released after sf2ce so the faster A-board was available).
verified more gfx rom mappings against PAL dumps (thanks to Corrado Tomaselli).
verified memory maps using A-board PAL dumps (thanks to Charles McDonald).
separated the address ranges for CPS-A and CPS-B customs. This finally clarifies why some registers are fixed and some change with every game.
identified three new unknown registers in the CPS-B-21 custom. Their purpose is unknown.
all unhandled accesses to CPS-A/CPS-B registers will now be reported. There shouldn't be any left. Look out for "contact MAMDEV" popups.
cleaned memory maps. Moved forgotten worlds special input mmeory handlers to DRIVER_INIT.
moved extra input handlers to video/cps1.c since the extra connectors are on the C-board.
added sound to Final Crash.
direct byte, word, dword, and qword accessors for all bus sizes,
there are now masked word, dword, and qword accessors for all
bus sizes.
IMPORTANT: masks that are passed to the _masked_* functions are
NOT inverted. Although inverted masks are still passed to callback
functions, when you request a masked read or write the masks should
represent the bits you want.
Updated the various MIPS cores that use these functions to invert
their masks.
Added support in the T-11 core for an external vector via irq_callback.
Apparently the hardware actually did support this and it is necessary
for emulating the BK 0010/11 computer in MESS.
range to be RAM-like for reads but calls the given handler for writes.
Replaced AM_READWRITE(SMH_RAM, handler) with AM_RAM_WRITE(handler).
Also replaced AM_RAM AM_WRITE(handler) with AM_RAM_WRITE(handler).
accordingly.
Added new functions for dynamically installing device memory
read/write handlers.
Updated install_memory_XXX_handler() functions to take a machine
parameter. Updated all drivers accordingly.
Merged installation of read and write handlers where appropriate.
Simplified memory.c code for dynamic installation so that a single
function handles all the work; a NULL read or write handler
indicates not to install anything for reads or writes.
Batsugun does upload what looks to be the entire program, unencrypted. If enabled it runs to the point of waiting for interrupts, however, for those it looks like it needs a real V25 core with register banks etc.
The other games using the V25 (Dogyuun, Fix Eight, VFive/GrindStormer) only upload a 'stub' program and are encrypted, maybe they upload the rest later? Knuckle Bash is ROM based V25 (and encrypted). Charles is working on decrypting them anyway, but core updates would be handy.
New games marked as GAME_NOT_WORKING
------------------------------------
Nandemo Seal Iinkai [Luca Elia]
P.S.
missing from the 0.124u1 whatsnew:
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Show Hand [Luca Elia]
memory maps. To do so, you either need to specify a shift amount
(mapping to a particular subset of the bus) or SHIFT_PACKED, which
maps a single larger sized read/write down to multiple reads or
writes at the smaller size.
Removed word-sized handlers from 6821pia.c. Updated drivers that
needed them to use these new interfaces instead.
Updated gaelco3d.c and itech8.c to remove the need for memconv.h
by using this new feature.
Re-removed input_port_set_digital_value().
src/emu/cpu/m68000/m68kmame.c:
src/emu/cpu/minx/minx.c:
- Fixed compilation errors on CPU cores not enabled in MAME
src/emu/inptport.c:
src/emu/inptport.h:
- Readded input_port_set_digital_value() (which is needed for natural
keyboard inpout in MESS)
- Added a running_machine parameter to inputx_update()
Subject: xml_normalize_string() bogusly escapes UTF-8
Various parts of MAME have recently been changed to support UTF-8
strings, so I thought I'd test out using a UTF-8 driver name for the
Sam Coupe driver in MESS, just to see if anything breaks. Most things
do seem to work well - the name is correctly drawn in the UI etc. One
thing that doesn't work properly is the output from -listxml: "Sam
Coupe" becomes "Sam Coupé" - each UTF-8 byte is
individually escaped, resulting in two gibberish characters instead of
the correct character.
The culprit here is xml_normalize_string() in src/lib/util/xmlfile.c -
the code converts any high-bit byte to an XML escape, which is totally
bogus for any encoding but ISO-8859-1 because XML escapes are defined
as Unicode codepoints regardless of the document encoding.
Fortunately, this is very simple to fix - in fact, it is sufficient
just to remove the escaping code and pass through the UTF-8 bytes
directly, because UTF-8 is mandated as the default encoding in the XML
standard.[1] The attached patch does this.
This should be a pretty safe change since as far as I can tell nothing
in MAME or MESS currently triggers this code (that is, the string "&#"
does not occur in the -listxml output of either). One potentially
negative effect is that the ASCII controls which are illegal in XML
(0x00-0x19 excepting line breaks and tabs) would no longer be escaped.
However, I can't imagine why you would want any in a string destined
for -listxml, so IMO that would be a problem elsewhere in the code and
having XML parsers barf on it would be desirable.
-Justin Kerk
* save state support for FD1094 chips
* improved graphics in athena
* improved sound balance in armedf
* derived refresh rate for toaplan1 games
* improved sound balance in tmnt games
* derived clocks for suprridr
* tweaked xmen visible area
* derived clocks and refresh rate in twin16 driver
I cleaned up the Machine usage in the osd/windows files and added the
running_machine parameter where possible.
I didn't add it to osd_wait_for_debugger() yet, but I would make
sense to have it.
Subject: change for cpunum_set_irq_callback() callback function
This patch adds the running_machine* parameter to the function passed
into cpunum_set_irq_callback() and adds the IRQ_CALLBACK macro for
the callback function.
Subject: Update for "Euro League (bootleg)"
Hello,
some tiny updates for the driver wc90b.c :
-Added dumps for all GALs on the PCB
-Removed the second YM2203, it isn't present on the bootleg boards
-Changed the clocks according to the oscilators found on the board,
the previous speeds were measured on a goal92 PCB, not using a real "Euro League" PCB.
-Added a new osc to xtal.h
If you need any info about this update, please mail me.
Regards: ClawGrip (Tomas Garcia-Meras)
--
Also merged memory maps [Aaron Giles]
only remaining form is the one that takes a pointer parameter.
Added macros for STATE_PRESAVE and STATE_POSTLOAD to define common
functions. Added machine parameter to these functions.
Updated all drivers and CPU/sound cores to use the new macros
and consolidate on the single function type. As a result pushed
the machine parameter through a few initialization stacks.
Removed unnecessary postload callbacks which only marked all tiles
dirty, since this is done automatically by the tilemap engine.
Subject: bugfix to 1673 on MT
Enclosed please find a patch which fixes bug 1673 in MT. in 123u4 a few
machine parameter where added to the routines drawing bg and fg, but all
of them where moved to use the _fg function. putting _bg where they were
in 123u3 fixes the bug
Subject: some dips
dips.diff adds tags and locations to dips for marvins.c and matmania.c
(also adding a couple of corrections in names and default settings,
explained in short notes added to the drivers)
trace through in a debug build, yet should operate the same as before.
Created a complete set of functions for all databus sizes (8,16,32,64) and
all endiannesses. A few functions are redundant, but it is now very clear
which functions to use in which scenarios. It is also now possible to rely
on being able to access values of 8, 16, 32 or 64 bits via the built-in
accessors without fear of crashing.
Updated all cores using 8-bit handlers to explicitly call the 8-bit handlers
with the appropriate endianness.
Fixed a few games which were calling n-bit handlers directly to use the
generic forms. In the future, this is all the access drivers will have.
Checked inputs for all games but 'survival' (Dip Switches still need to be done), so now cocktail mode is correctly supported by 'pleiads' and its clones.
Renamed sets :
- falcona -> falconz
- vautour2 -> vautourz
fixed reading from SXYP
fixed reading from IRGB
fixed writing to LZCR
fixed sign extension of GTE control registers
fixed writing to FLAG
New games added or promoted from NOT_WORKING status
---------------------------------------------------
1 on 1 Government (JAPAN)
1) sprite offset are now correct
2) split spriteram in two parts
3) identified last sprite for the two parts
4) promoted to "working" (no sound)
for pallavol:
1) fix for sprite's y-coordinate
2) implement lookup table for convert sprite code in the real code
3) change the name to "1991 Spikes (Italian bootleg) (see the snapshot)
4) fix scroll
5) fix offset
Added ability to test the instruction/data cache ram. The scratchpad and BIU register are now handled internally to the CPU.
All writes are performed with masks. SWL/SWR used to be implemented with two writes ( one byte and one word ) when writing three bytes, now it only ever performs one. Byte and Word writes use masks as they leave the rest of the register on the bus, which can be picked up by larger registers.
The read/write functions to use are cached when the SR bits are updated, as are the bad address masks.
Added coprocessor 1 & 3 support, though they don't do anything useful.
All loads now go through the delay pipeline, a lwl/lwr will grab the value out of the pipeline if it's updating the same register.
Added undocumented behaviour of BLEZ/BGTZ. The comparison for zero can be changed by specifying an alternate register in the RT field ( the documentation says you should always use register 0 ).
Restricted to 16 COP0 registers & generate an exception if any of the 5 for the MMU are used.
Added BCF/BCT instructions, although I have found no conditions that affect them yet.
Generates an exception if any MMU instructions are executed.
Sets the CE instruction for all exceptions, not just those involving a coprocessor. The bits of the opcode that specify the coprocessor are grabbed no matter what the instruction.
Added TAR register and BT bit in SR. When an exception occurs during a branch, BT determines whether it was taken or not. The TAR register gets set to the destination of the branch.
Fixed the BD bit when you are in a branch delay slot and you didn't take the branch, this shows up in the pipeline as !pc.
Fixed branches within a branch delay slot.
Multiply & divide instructions can be aborted if you write to HI/LO before reading the result.
Added data breakpoints, you don't appear to be able to set breakpoints on any of the addresses internal to the CPU.
Multiply/divide/GTE instructions can execute when an exception is taken, although the EPC indicates that it hasn't. The BIOS avoids rerunning GTE instructions as they are destructive, so you have to make sure they run.
Added bus error handling, PSXCPU is limited to 8mb of ram & any access outside this range will trigger an exception. I believe this is to be an internal limit.
Added CXD8611R as a specific CPU type, System 12 appears to allow more than 8mb of ram & it's possible that this is different.
Mapped out all instructions to either generate an exception or ignore bits.
Updated the disassembler to match the decoding.
Fixed disassembling of branch instructions in a branch delay slot.
Lui checks for a ori/addiu following and will show you the result.
Added step over/out support.
Fixed standalone disassembler.
Note that this is a significan change and some new bugs might be caused by it. Unlikely previous bugs, where extra garbage tiles would appear in the games, the new bugs would be tiles or sprites MISSING--so they will be harder to notice. This would happen because in some cases the 16x16 regions of the gfx ROMs can be used by both scroll2 and sprites, while in other cases they must be separated.
Rewrote INP recording from scratch, since all old INPs are broken anyways.
Header now includes timestamp, which overrides the default time base for MAME's system time.
Each frame recorded now gets a timestamp.
Analog ports are recorded once per frame and interpolated.
Analog port calculations are all done in fixed point for consistent results.
A bunch of other minor tweaks in the input port code.
There may still be a few changes to the final INP format (considering adding
NVRAM data directly in the INP file, for example....) but this at least seems
to work for the games I've tried.
All custom itemids were mapped to class SWITCH. With the recent modification, this implicitly changed to ABSOLUTE.
This fix will use the passed itemid to determine the class.
Subject: patch for state save in buggybjr
Here's a little patch for initial support of state saving in buggybjr.
(It'll help with tx1 and buggyboy too, but they are non-working)
All I did was get rid of the "anonymous" (temporary) timer that was
preventing saving, and replace it with a "permanent" timer. I didn't go
looking for data which might need to be saved.
Subject: pit8253 device
I have converted the pit8253 implementation into a device. To make it
easier to use I've also created a src/emu/devconv.h in the same style
as src/emu/memconv.h.
I do not have all roms/disk images to test all drivers. I have only
been able to test pf2012, filetto, and topgunnr.
Subject: some fix for aerfboot (bootleg of aerofgt)
this fix:
1) spriteram3 (previous value was too high and in the "city" level some build disappear
2) sprite gfx bank (previously some sprite appear right and some sprite was wrong)
3) the zoom is a litlle bit better
4) i have removed multisprite support; in the bootleg aren't present
the remaining problem is "not draw some sprite"; maybe there's a mark in some place
in the code i add, in a comment //, a way to avoid the draw of the sprite (searching a 0000 0000 0000 0000 sprite); this way works quite good but not perfectly (some time too many sprite are in the screen); maybe there's a value indicating the #number of sprite to draw (from the end to spriteram3 to start)
--
From: roberto zandona
Subject: addendum (aerfboot)
this fix perfectly the sprite zoom
Subject: a little fix
a little update: this fix priorities in mermaid and rougien and a sprite bug:
when a sprite have x coordinate >= 0xf0 the value is negative
this fix the sprite bug
+ if (sx >= 0xf0) sx -= 256;
If seems to break Varth, hower, and has dubious effects on the boot sscreens of avsp, sfa3 and possibly other CPS2 games.
01542: 3wonders, 3wonderu, wonder3: Wrong colour of background in game selection and start screens
00410: xmcota: After a couple passes through the demo mode, the background on the qsound screen will go to a shade of green.
Subject: patch for mermaid
proper implentation of hardware collision (first implentation was incomplete)
this fix mermaid (when the player is in the water with the sharks) and rougien (Mantis 01652)
Subject: pcshare patch for mess
Another patch to machine/pcshare; this patch allows the MESS machines
to choose whether the RDY pin of the nec765 floppy controller is
connected or not.
Last weekend's pcshare keyboard was almost correct, it caused some
stuck shift key situations in MESS. This patch fixes that.
Removed a lot of MESS specific code from the machine/pcshare code.
Subject: Further ACIA changes
Added dynamic control of RX and TX pins to 6850 ACIA emulation - this is
needed for correct operation of the MPU4 Video communications system,
and may be handy for some MESS systems. To use, set the rx and tx clocks
to 0 in the acia interface, then use acia_tx_clock_in() and
acia_rx_clock_in() respectively.
Subject: Internal LAY File - Armor Attack
This is becoming kind of fun. Here's an internal LAY file for Armor Attack.
Re-created the overlay using just rectangles.
And finally got to use flipx and flipy for the first time (main reason I did it).
Subject: small change for MESS cleanup
This adds the "Machine" parameter to a MESS function call in MAME
code to go along with Machine -> machine ckeanups in MESS
Subject: Machine -> machine cleanups
This patch changes "Machine" to "machine", when the runnin-machine
parameter is already available. In some cases I could even remove the
dprecat.h.
I will look for some occurances where it can be easily changed and
afterward take a step at adding the running_machine parameter in a
few places.
Subject: rygar clocks
Corrected clocks on Rygar.
Concerning the 400khz resonator, it's genuine, not resoldered even if
schematics shows a 384khz resonator.
Another Rygar from a friend of mine has a 400khz resonator so it's
possible Tecmo had a stock of those resonators to use in change of the
384khz ones.
* Fix timing of stream_update in discrete_sound_w
All sound cores update before processing changed data
* Add streeam_update to discrete_sound_r
* Now supports multiple output nodes per module.
There is the possibility to support multiple outputs per module.
In this case, NODE_XXX is the default output. Alternative outputs may
be accessed by using NODE_XXX_YY where 00<Y<08.
You may also access nodes with macros:
NODE_XXX = NODE_SUB(XXX, 0)
NODE_XXX = NODE(XXX)
NODE_XXX_YY = NODE_SUB(XXX, YY) with YY != 00
This should e.g. make discrete sound emulation easier
when dealing with e.g. flip flops (Q & QQ) and binary counters
* added sanity checks to check consistency issues introduced by this change
* modules specify number of outputs ==> Certain special modules (WAVELOG)
may no longer be used as input nodes
* removed explicit (NODE_XX + expr) from a couple of drivers