- Private state screen information now hangs off the public one, instead of the other way around
- Combines video_global and video_private into a single structure
The following shook out from this that are applicable to other devices as well:
- running_machine is no longer taken, passed or stored
- mc6845_t is now private
- since passing device_config's is not device type safe, I added a
get_safe_token() to mc6845.c to check the device passed in for the valid type.
I think something like this should be added to the core.
- As a side note, I really don't think that device_config is a good name,
naming it simply device_t or something like that might be better.
than tokens and individual bits to the device callbacks. Updated
all existing devices accordingly.
Removed machine from the parameters of some of the device_get_info
and device_set_info calls because that information is stored
with the device now.
* Change "Machine->" to "machine->" in AM_BASE_MEMBER, AM_SIZE_MEMBER
* Pass Machine in construct_address_map
This is not perfect yet, but there is no need any longer to include deprecat.h in drivers using AM_*_MEMBER.
Subject: Frequencies diff
Changed/verified clocks on the following pcbs: 1943, Arkanoid, Action
Holliwood GalsPanic, Ben Bero Beh, 1000 Miglia, Pit and Run, Prehistoric
Isle, Rastan, Hotmind, Hardtimes, Stagger1 and Tiger Road
Changed/verified Oki pin 7 on the following pcbs: 1000 miglia,
Galspanic, Action Holliwood, Hotmind, HardTimes, World Rally, Stagger1
Subject: "fix" for the "game information" resolutions.
Hi.
In 0.123u3 the bug "multiscreeninfo0123u2gre" was fixed, however it changed
its behaviour as it now shows the "default" resolution the driver uses
rather than the resolution the screen(s) actually use at the moment.
As I don't know if this change was intentional I've attached a simple diff
that changes from defstate.visarea to the real visible visarea.
Greets,
Ariane "SailorSat" Fugmann
which specify device read/write handlers in address maps, along
with the type/tag of the device they reference.
Converted MC6845 read/write handlers to READ/WRITE8_DEVICE_HANDLERs.
Updated all MC6845-using drivers to use the new macros and call
the updated functions. Removed the many little helper functions
that used to do this work.
Added validity checks to ensure that the devices referenced
actually exist.
Updated all call-through handlers appropriately. Renamed read8_handler to
read8_machine_func, replicating this pattern throughout.
Defined new set of memory handler functions which are similar but which
pass a const device_config * in place of the running_machine *. These are
called read8_device_func, etc. Added macros READ8_DEVICE_HANDLER() for
specifying functions of this type. Note that some plumbing still needs to
happen in memory.c before this will work.
This check-in should remove the need for the global Machine and in turn
"deprecat.h" for a lot of drivers, but that work has not been done. On
the flip side, some new accesses to the global Machine were added in the
emu/ files. These should be addressed over time, but are smaller in
number than the references in the driver.
Usage is very similar to PORT_CUSTOM. See the Astro Invader driver for an example
- Removed input_port_set_changed_callback and converted all users to PORT_CHANGED
The only difference between the old callback and the ones supplied by PORT_CHANGED is
that values passed by PORT_CHANGED are normalized to start at bit 0, just like
PORT_CUSTOM.
suffixed with _func. Did this throughout the core and
drivers I was familiar with.
Fixed gcc compiler error with recent render.c changes.
gcc does not like explicit (int) casts on float or
double functions. This is fracking annoying and stupid,
but there you have it.
video_screen_get_time_until_update().
Fixed CCPU and QB3 to no longer rely on cpu_scalebyfcount().
Fixed busted timing in the CCPU core. Changed watchdog to
count internally rather than using external watchdog support.
Altered CCPU to accept interrupt signals from the driver.
Updated clocks in the cinemat driver to be derived from the
clock crystal.
* Illustrates how to keep existing memory read/write handlers
This is slower than caching the device interface, but does not have an impact on
devices accessed at a low frequency like in this case.
* added ATTR_FORCE_INLINE to osdcomm.h
* added ATTR_NONNULL
* moved U64 S64 fram mamecore.h to osdcomm.h
* define SETJMP_GNUC_PROTECT() in osdcomm.h for use in ppc602, ppc603
- Added a video_screen_register_vbl_cb() function for registering VBLANK callbanks
- Changed inptport.c and debugcpu.c to make use the VBLANK callbacks
- Added video_screen_get_time_until_vblank_start()
- CCPU and anything using cpu_scalebyfcount() are currently broken
- I did some fairly extensive testing, but this is a very signficant internal change,
so some things may have broke
to use the macros.
Added the concept of device classes. Devices specify their class
in their get_info function. Classes can be used to walk through
devices at a more general level than their type. Functions have
been added to iterate through devices by class just as you can
by type.
Removed some unused fields from device_config.
- Since the Commodore 40xx computers program an HSYNC width that extends past the end of
the scanline, I am clamping it in lack of anything better to do.
- Define a new MDRV_CPU_VBLANK_INT_HACK() (ZV: defined in deprecat.h) which is a copy of the current MDRV_CPU_VBLANK_INT()
- Find all the places where VBLANK_INT is used with something other than 1 interrupt per frame and change it to the new macro
- Remove the "# per frame" parameter from the MDRV_SCREEN_VBLANK_INT() and add a screen tag in its place; updated all callers appropriately.
- ZV: Added some validation of the interrupt setup to validate.c
The idea behind this is that using a VBLANK interrupt with more than one interrupt per frame in conceptually wrong.
The screen tag will allow us to move the interrupt timing code from cpuexec.c to video.c, where it really belongs.
Subject: A fix for the z80pio
Hi there,
Here is a one-line fix for the z80pio.
At the moment when the interrupt control word is sent (with interrupts
enabled), an interrupt occurs. In reality, interrupts are disabled until
the interrupt mask byte is sent.
Subject: MPU4 Changes part 2
Right, I've added a bit of CTS pin checking logic, so that the status
flag is actually set when the pin changes state.
I've also simplified the MPU4 ACIA clock logic, but it's still not ideal
(Ideally, the ACIA should only run one transmit or receive event each
time the PTM O1 pin goes high, but that's not possible right now, so I
just set the clocks as close to off as I can when the pin is low, and to
something that approximates the distance between output state changes
when it's on). There's also a few more little cleanups based on
schematics and flyers from TAFA, and an emulation of the master reset
behaviour. Incidentally, if anyone wants to see just why this isn't
kicking into life now, by all means do, since there's nothing left that
I can see that it can get hung up on, other than the video chip, and the
aforementioned ACIA logic.
Subject: uPD7801, uPD78C05, and uPD78C06 cpu cores added to the uPD7810
cpu core
This patch adds basic support for the NEC uPD7801, uPD78C05, and
uPD78C06 cpus to the uPD7810 cpu core.
This fixes the ape sprite positioning in Crazy Kong -- no more gap between feet and platform
- Merged Yamato driver with Crazy Climber
- XX Mission tilemap conversion
- Removes VIDEO_START(generic) -- no longer used
A lot of sets were added. Also System 903/905 diag ROMs.
Submitted the driver at this point because it's growing as a monster.
Parent/clone relationship for official games is not defined yet.
Changes:
- Renamed the driver to calomega.c.
- Extended the driver to support all the other Cal Omega systems.
- Switched to XTAL def.
- Fixed CPU & sound clocks based on official diagrams.
- Replaced the AY-8910 with AY-8912 to match the real hardware.
- Unified some memory maps.
- Splitted machine in sys903 and sys905.
- Fixed memory map offsets for sys905.
- Added support to the following games:
Game 7.6 (Arcade Poker)
Game 7.9 (Arcade Poker)
Game 9.4 (Keno)
Game 12.5 (Bingo)
Game 12.7 (Keno)
Game 12.8 (Arcade Game)
Game 13.4 (Nudge Bingo)
Game 14.5 (Pixels)
Game 15.7 (Double-Draw Poker)
Game 15.9 (Wild Double-Up)
Game 16.4 (Keno)
Game 16.8 (Keno)
Game 17.2 (Double Double Poker)
Game 17.51 (Gaming Draw Poker)
Game 17.6 (Nudge Bingo)
Game 18.1 (Nudge Bingo)
Game 18.3 (Pixels)
Game 18.5 (Pixels)
Game 18.6 (Pixels)
Game 20.4 (Super Blackjack)
Game 20.8 (Winner's Choice)
Game 22.7 (Amusement Poker, d/d)
Game 23.6 (Hotline)
Game 23.9 (Gaming Draw Poker) --> EX gdrawpkr.
Game 24.6 (Hotline)
Game 27.2 (Keno, amusement)
Game 27.2 (Keno, gaming)
System 903 Diag.PROM
System 905 Diag.PROM
Jackpot Joker Poker (set 1)
Jackpot Joker Poker (set 2)
SSI Poker (v2.4)
SSI Poker (v3.0)
SSI Poker (v4.0)
- Added a list of official/unofficial games, and their states.
- Fixed a bug introduced when extended the color PROM region to eliminate colortable lenght.
- Other changes/fixes.
- Updated technical notes.
constructors to tokenized lists. For the most part
this is a non-invasive change, except for those drivers
using MDRV_WATCHDOG_TIME_INIT. In order to allow for
tokenization of attotimes, a set of new macros is
provided called UINT64_ATTOTIME_IN_x() which follows the
same pattern as ATTOTIME_IN_x() but packs the attotime
down into a single 64-bit value for easier tokenization.
Separated MDRV_DEVICE_CONFIG_DATA into 32-bit and 64-bit
versions. Added floating-point versions with configurable
resolutions.
Fixed several errors in the machine drivers which were
caught by the additional checks now done in the machine
config detokenization code.
Converted speakers into devices. Machine->config no
longer houses an array of speakers; instead they are
iterated through using the new macros (defined in sound.h)
speaker_output_first() and speaker_output_next(). Updated
all relevant code to do this.
Improved game info display with multiple screens. Fixed
bug which caused all screens to display equally.
Added typedefs for all the machine config callback
functions at the top of driver.h.
* flip_screen_x and flip_screen_y made static
* add flip_screen_x_get() and flip_screen_y_get()
* change writes to flip_screen_x from last commit to flip_screen_set_no_update()
* added save state calls for flip_screen_x and flip_screen_y
* add "int flip_screen_get(void)"
* define flip_screen flip_screen_get()
* clean up drivers with collisions
* mark write accesses to flip_screen_x with FIXME
tokenizing data structures, as currently used by the input
port system. Redid the input port tokenization to be more
compact and make use of the new macros.
- I still left drawgfx.c as is, the only piece of code that used any of the functions in drawgfx
was s2636.c -- everything else uses 8-bit bitmaps as a replacement for a two dimensional array
- Moved some variable declerations so that they are only visible where they are actually used
Note that the diff is large only because I removed a level of indentation from a huge chunk of code.
I could do that because the case it was checking for was already caught by one of the asserts added.
- resnet conversion - colors are now signficantly less saturated because of the 1K pull-ups.
This is noticable in the agent's coat and the sky color, for example. As far as I can tell this
correct from the schematics.
- Added bitmap palette selection based on the 128H line. Not sure where this is actually used in
the game
* verinfo: New syntax.
verinfo now uses the following syntax: verinfo.exe -b windows|winui|mess.
Does not depend on compile time defines any longer.
* makefile will include - if it exists - src/osd/$(CROSS_BUILD_OSD)/build.mak.
This was necessary to enable cross builds for winui. winui adds mkhelp to build tools and the rules for mkhelp thus had to be moved outside src/osd/winui/winui.mak
* Tested on Linux 64bit, Linux 32bit, Windows 32bit mingw, Windows 32bit MSVC
* Cross build environment to be posted to the list
ALL DRIVERS MUST NOW EXPLICITLY DECLARE THEIR SCREENS.
Read on for more detail....
Added device tag as a parameter to the start function for devices.
Updated MC6845 to accept this tag.
Added new functions for iterating through the device list and
counting devices of a given type. Updated search and iteration
functions to accept DEVICE_TYPE_WILDCARD to work across all
devices.
Added new macro MDRV_DEVICE_CONFIG_DATA() which is used to set a
single item in an inline data structure.
Removed the per-screen palette_base. This was an idea that never
really worked out, nor have we really needed it.
Defined a new device type VIDEO_SCREEN. Currently this has no
live functionality, but merely serves as a placeholder/identifier
for video screens. Eventually some of the screen management code
may move into the start/stop/reset functions.
Changed MDRV_SCREEN_* macros to build up VIDEO_SCREEN devices
rather than storing values in the screen[] array.
Changed MDRV_SCREEN_ADD to specify a screen type (RASTER, VECTOR,
LCD for the moment).
Removed the older VIDEO_TYPE_RASTER and VIDEO_TYPE_VECTOR; this
information is now determined by walking the screen list.
Removed the screen[] array from machine_config. Modified all code
referencing Machine->config->screen[] and changed it to iterate
over the devices using the new video_screen_first() and
video_screen_next() functions.
(The next step will be to add video_* functions that accept a tag
instead of screen index, and then move systems over to always
referencing screens by tag instead of index.)
Removed implicit screen #0. This means that ALL DRIVERS MUST
EXPLICITLY DECLARE THEIR SCREENS. Updated all drivers to do
so. While there, grouped all MDRV_SCREEN_* parameters together.
Also removed unnecessary VIDEO_TYPE_RASTER and VIDEO_TYPE_VECTOR.
Also removed VBLANK and bitmap format information from vector
games. This was painful and very tedious.
Changed game information to display info about all screens.
* PALETTE_INIT no longer has a colortable parameter
* removed game_colortable and remapped_colortable from machine_config
* updated a few stragglers that still referenced these fields
* removed tile_draw_colortable from tilemap.c
(From Zsolt): Added support for the new colortable object in the palette viewer
Changed the input port tokens to use a union instead of casting everything to FPTR.
In the future, C99-enabled compilers will be able to achieve type safety with
designated initializers.
Subject: Assorted dumps and other fixes
Hi,
I have enclosed a patch file that:
* Fixed some of the rom dumps for Double Dragon 3 (Some of the dumps were based of the bootleg and not the original.) and updated the name and location to actually match that of a real board
* Updated the dip switches for Combatribes to actually show their position on the physical board.
* Dumped the six GAL's on Battletoads and updated the existing rom names to make their locations easier to understand.
* Updated the dip switches of Battletoads to actually show their position on the physical board.
* Added placeholders for pals that need to be dumped for the various games in mcr68 driver. I got the information by looking at the manuals except I couldn't find a manual for Arch Rivals or Pigskin 621AD though I'm sure they probably have pals that need to be dumped.
* Added placeholders for the two pals that are on the bootleg version of Hyper Olympics and corrected the rom names to match their location on the board.
Kevin Eshbach
Subject: clock frequencies diff
Verified clocks on Rainbow Islands and Rambo 3 and Raiden 2. Reverted
sound OSC of Truxton 2 to 27mhz/8 since the original OST runs at this
speed. The pcb I measured the previous clock was 28mhz/8 and it's a
different pcb version from the common one. Since mame doesn't support
multiple OSC I prefer to use the 27mhz one.
Subject: _mul_32x32_hi() and _mulu_32x32_hi() patch
Hi/2.
I've attached patches to fix validation fail of '_mul_32x32_hi()' and
'_mulu_32x32_hi()' inline function when compiled GCC v3.3.5 with I686
optimization in according to advice of 'Vas Crabb'
Subject: Various little changes from the last month
I've been meaning to send these in for ages, but the day job has been
insane for a while now, so it's been hard to keep these up to date.
Firstly, I've fixed a few corner cases I've noticed in the 6840
emulation based on running the MPU4 test ROMs, and added the ability to
dynamically alter the external clock frequencies in game (since these
pins can be connected to other timing devices in a daisy chain, this may
well prove handy for speech chips and the like).
The 6850 core has also been changed to allow dynamic RX and TX clock
alteration, to at least try to remove a few of the MPU4 timing problems
(the ACIA clocks are triggered by the output pin of one of the 6840
timers, so the clock rate will vary according to what has been
programmed into the counter, rather than a fixed value).
MPU4 has been changed to document the Video board a bit better, and to
change a game name to match what is actually on the marquee. Other names
have changed, to better describe the program nature (AMLD versions are
legally speaking not SWPs, as there is no capacity for payout, so AMLD
SWP is an oxymoron).
Lastly, since I was smoketesting 6840ptm using cchasm anyway, I've added
some documentation of the Cosmic Chasm crystals, and merged the memory
maps.
Subject: [patch] Fix namcos2 multisession crash
Hi mamedev,
If you run a namcos2 game multi-session (say marvland), it may crash
due to an inappropriate use of auto_malloc. Fix attached.
~aa
Subject: Shadow Warriors inputs diff
Connected the buttons like they are wired on the original pcb (which is
jamma):
Button 1: Grab
Button 2: Attack
Button 3: Jump
Reviewed the following drivers:
alpha68k.c
actfancr.c
aeroboto.c
aerofgt.c
aliens.c
ambush.c
amidar.c
amspdwy.c
angelkds.c
appoooh.c
arabian.c
argus.c
arkanoid.c
Improved some DIP switches.
Added some DIP locations.
Replaced IPT_COINx with IPT_SERVICE1 where appropiate.
Simplified some control definitions.
to the sound and CPU interfaces. This is still a bit WIP, but works at
a fundamental level. Currently the only example of usage is in qix.c for
the MC6845 CRTC.
New module: mconfig.c/.h. Moved all machine_config and MDRV_* macros here,
out of driver.c/.h. Added MDRV macros for adding/removing/configuring
devices.
qix.c: Moved video part of machine driver to video/qix.c. Added MC6845
as a device in the machine driver. Removed explicit MC6845 initialization
from VIDEO_START in favor of simply retrieving the token from the device
interface code.
mc6845.c: Updated all callbacks to pass the mc6845_t * object. Updated
all drivers accordingly. Added a minimal device interface.
Deprecated the following constants because global constants that pretend
to document things but which are only guesses are dumb:
- DEFAULT_60HZ_VBLANK_DURATION
- DEFAULT_30HZ_VBLANK_DURATION
- DEFAULT_REAL_60HZ_VBLANK_DURATION
- DEFAULT_REAL_30HZ_VBLANK_DURATION
- DEFAULT_60HZ_3S_VBLANK_WATCHDOG
- DEFAULT_30HZ_3S_VBLANK_WATCHDOG
Updated all drivers to explicitly specify the equivalent bogus times.
Added comments for the "REAL" VBLANK durations to indicate that they are
not accurate.
Hi mamedev,
Here's my periodic batch of code cleanups. The usual batch of adding static/const plus some include fixes. In addition, I reverted some of the changes to build.mak from u1 which made some MSVC builds fail, and adjusted/optimized an m10.c gfx_layout. I also added some missing cores to cpuintrf.c, sndintrf.c and added some missing #if's to 5220intf.c.
~aa
Tried to "unified" the driver with m52 and m57 drivers (I still think that some things can be merged).
Don't forget to check SVN revisions 695 and 696 !
Since it's an SCSPx2 with ADPCM instead of FM it's already feature-complete except filter envelopes.
A bug in the ARM7 core causes incorrect pan/level values to be computed in e.g. the Naomi SOUND TEST menu (I've also been seeing this in DSF playback). This is not a defect in the AICA.
Please credit ElSemi, Deunan Knute, kingshriek, and myself.
moved decryption table setup to 'config' struct for the CPU.
added latest tables from robiza, making Risky Challenge playable, promoted it to working
told CPU core to not decrypt code after brkn instruction, enabling it again on iret, allowing me to remove several 'don't decrypt range' hacks in robiza's code.
updated all drivers accordingly.
currently the disassembly is a bit weird now, this will need looking at.
Tried to "unified" the drivers (I still think that some things can be merged).
Added src/includes/iremipt.h source file (same purpose as src/includes/taitoipt.h).
Fixed Dip Switches and inputs for 'alpha1v'. The game is now more playable to me but I left the GAME_NOT_WORKING flag as I think there are still some things to look at).
Added DIPLOCATION macros to all Dip Switches. All DSW are verified through test mode.
Fixed custom_io_r which is used for protection but also for keyboard input.
Subject: [patch] Fix maxaflex problems
Hi mamedev,
The maxaflex, mf_bdash and mf_achas drivers fatalerror on startup as
reported on MAMETesters. This should fix it.
Subject: [patch] Add nmk112 initialization
Here's a small patch to add initialization to machine/nmk112.c. This
resolves a multi-session audio problem reported for donpachi by
Iaspis.
--
From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Fix n64 multi-session problems
This patch adds some variable initialization to machine/n64.c to fix
running starsldr multi-session (reported by Firewave/subb). The fix
is a strict improvment on the current situation, but there are likely
still some remaining multi-session/reset issues with the driver.
Subject: fixed pwrinst2_0122u8gra
Hi, i've fixed the mametester bug pwrinst2_0122u8gra caused by me in the last clean made (sorry, sorry, sorry .......),
and in according what is wrote in the drive of taplan2 about sstriker and kingdmgp "update the above two look like genuine
Korean release boards, Raizing probably just missed a few things" i have swapped this world set as the original one (only
if you're agree of course).
Here the changes:
- Switched to XTAL def.
- Fixed Magic Card II graphics issues.
- Fixed Magic Card II inputs.
- Fixed screen and visible area to snooker10.
- Renamed set monglfir to mongolnw.
- Renamed sets description based on languages instead of countries.
- Added new game: Magic Card II (green TAB or Impera board). Not working yet.
- Added new game: Magic Card II (blue TAB board, encrypted). Not working yet.
- Added new game: Jolly Card (3x3 deal).
- Added new game: Jolly Card Professional 2.0 (with 'enter code' screen to boot).
- Added new game: Lucky Lady (3x3 deal).
- Added new game: Lucky Lady (4x1 aces).
- Added new game: Royal Vegas Joker Card (fast deal).
- Added new game: Royal Vegas Joker Card (slow deal).
- Fixed some years and manufacturers.
- Updated technical notes.
- Cleaned up the driver.
Samuele Zannoli:
- Add SH4 I/O ports
- Connected the 93C46 of the naomi and the x76f100 of the rom board and filled them with dummy data to satisfy the BIOS
- Implemented some of the JVS transfers that will be needed to use the controls
- Implemented ROM board DMA
- Set proper NAOMI RAM sizes (32 MB main, 8 MB for AICA)
- Improved PVR-TA graphics emulation
Deunan Knute:
- Set proper ARM7 clock. (Yes, it's really that slow!)
Rewrote the INPUT_PORTS definitions to use PORT_INCLUDE, PORT_MODIFY and PORT_CUSTOM macros.
Added a few notes about the inputs when I thought they were needed to avoid wrong bug reports.
Started to clean the driver (but unfortunately, I can't go further because I don't understand everything).
Please have a look as there are things which still need to be done (such as getting only one memory map).
Bugs fixed :
- goldbug0105u4gra (MAME Testers) / ID 00009 (Mantis)
Zsolt, now that player 2 inputs are mapped, I let you fix the screen flipping for "cocktail" mode and remove the GAME_NO_COCKTAIL in the driver ;)
Subject: [patch] CPU/SOUND independence fixes
Hi mamedev,
Here's some updates to the CPU/SOUND cores to improve build
independence. While I was at it, I rescued the M65CE02 core from
bitrot hell (perhaps m65ce02.[ch] should just be deleted), and fixed
some MESS cores that were broken by the deprecat.h changes.
Subject: Frequencies verifications
I corrected the clocks on the following pcbs: Formation Z, MagMax,
SlapFight and Tiger Heli
Changed Oki m6295 pin 7 to "high" on Toki and Blood Bros
Each game has 2 68000's, and one unemulated Intel i860XR CPU. I couldn't find docs for the i860 anywhere!
Virtual Combat is a stereoscopic game using an additional i860 to drive the second eye.
The ROMs all seem to check out as valid, with human-readable strings throughout.
The sound program is extremely simple for each, and the sound data ROMs are simply Creative Labs VOC files concatenated to eachother.
A MC6845P lives by the edge connector.
Additional notes in the driver.
Roms uploaded to /roms/current/v & /roms/current/s.
Wiki updated with skeleton driver status.
pool_object_add (via src/emu/debug/debugcmt.c:107): Attempted to add a NULL object of size 0
This was happening when mame_debug_init was being called with 0 CPUs (eg. when starting MAME from the command line without a ROMset specified).
Subject: 'fix' for cmv801_0116gra
"cherrym.c cmv801: I've found a dipswitch listing for cherry master. I've
tested a few of them and believe it to be correct.
I having problems figuring out the games inputs so i'm posting the
dipswitches here in case someone else can figure out how the game works and
would be willing to add them."
Improved DIP switches and added DIP locations.
Subject: [patch] Fix some comments
Hi mamedev,
The following patch updates the initialization comments at the top of
mame.c and corrects/adds a few filename declarations at the top of a
handful of files.
~aa
Added AM_WRITEONLY as a shortcut for AM_WRITE(MWAx_RAM).
Cleaned up Kangaroo driver:
* documented MB8841 (needs to be decapped to get code)
* proper video timing
* full memory maps
* simplified and more accurate video logic
- Added some instructions to the H8/30xx CPU:
or.l ERs, ERd
rotl/shal.l ERd
not.l/neg.l ERd
exts.w Rd
sub/or/xor.l #Imm:32, ERd
bset/bnot/bclr.b Rn, @ERd
bst/bist.b #Imm:3, @ERd
bnot.b #Imm:3, @ERd
- Added H8/3007 & H8/3044 variants with their memory maps.
Preliminary implementation of the H8/3007 timers.
(a make clean is required)
P.S.
I've moved the docs we have in docs/cpu/H8-30xx and added a couple more.
Roms are in roms/current/p/puzzlet.zip
Nothing too noteworthy about the addition - just a few new question sets.
Softwarethis.com does, however, have some screen shots of a board running. These show that the palette in MAME is slightly off (blue->green, magenta->yellow, etc). The palette code is currently using naughtyb's PALETTE_INIT which I'm a little chicken to play with at the moment. I have therefore posted a message on MAMEtesters for the addition of this bug to the database.
ROMs are uploaded to /roms/p/promutrc.zip.
a new compile-time define (ENABLE_DEBUGGER). This means that MAME_DEBUG no longer means
"enable debugger", it simply enables debugging features such as assertions and debug code
in drivers.
Also removed the various levels of opbase protection in memory.h and always just turned
on full bounds checking.
Fixed build break due to missing ampoker.lay -> ampoker2.lay renaming.
- Fixed ancient cloud layer transparency glitch in 1943
- Corrected colors in Gyruss and Got-Ya. Neither had a pure white and Gyruss was missing a pull-down resistor as well
Fixed Dip Switches for all games. Inputs might be checked for 'fantasy*' and 'pballoon' to see if there are no debug buttons. as for 'nibbler'.
Added notes about some games at the top of the file. They aren't complete, but it's enough to be included in next release.
It's almost my first attempt to look at M6502 games, so I hope I haven't made too many mistakes ...
- Hooked up palette bank selector from schematics, though I am not sure if it is actually used by the code
- Changed set names to match title screen, which is why baseball is spelt as "Base Ball"
Added #include "deprecat.h" where necessary to make this happen.
Cleaned up cpuexec.c/.h to latest core style.
Cleaned up implementation of extended INP header in inptport.c.
Removed external access to cycles_currently_ran().
Replaced use of cycles_currently_ran() in v9938 code with mame_rand(), since that is effectively the same thing. :)
Subject: 1942.c 1943.c segas16a.c segas16b.c system16.c DIPs
Made some minor improvements to 1942.c & 1943.c DIPs.
Improved segas16a.c, segas16b.c & system16.c DIPs and added DIP
locations from manuals.
Subject: Fixed MAME Testers bug STRAHL0122u6YEL
Hello. Attached diff fixes the bug STRAHL0122u6YEL. Sprites are simply
allocated in a different memory range from all other nmk16 games.
Regards.
Subject: Update for galpani2 driver
Hi,
Here's a small update for gals panic 2, the diff is made against 122u7.
I've resolved all unknown dips according to kaneko's docs, unified
memory maps of both CPUs and repositioned a pair of graphic ROMS.
Regards,
LFaria
Subject: AGEMAME upstream patches for u8/0.123
I thought I'd push a few minor coding improvements in now, while I still
have something resembling free time.
Firstly, I've made a few changes to the 6840 interrupt handling, to be
more like that in the 6821 driver, and to hopefully reduce the IRQ
swamping that could occur using the old setup. In the process, I've
added the 6840 IRQ handler to the wire-OR in the MPU4 driver, as that's
what the schematic shows (there's just one track for each interrupt
class, all the way down the PCB to the cartridge loading point). Since I
was looking at that, I made MPU4 games that didn't use a CRT as
screenless as they can get at present, and altered the logging options
to avoid a redefinition issue if you wanted the core and driver portions
to log at different levels.
Scorpion 2 has also been altered to match the MPU4 coding style, where
proper handlers re now included for the stepper motor data, which can
then be expanded on in AGEMAME.
* full memory maps
* partial machine driver removes need for replicating filtering logic
* updated all relevant drivers
Cleaned up Time Pilot and Tutankham drivers:
* correct clocks where possible
* merged memory maps
* fully decoded memory maps
* replaced hacky sprite rendering in Time Pilot with partial updates
* save state support
* removed Power Surge kludge, replaced with unmapped handler control
* Tutankham runs at 60fps, with IRQs every other frame
* Proper IRQ ack in Tutankham
Subject: proper fix for stadhero0122u3gra
Fixes Demo Sound DIP.
---
From: RansAckeR [mailto:RansAckeR@pandora.be]
Subject: system1.c dips / wboy3_0119u3gra fix
Fixed wboy and chplft DIPs according to manuals and added diplocations.
Also fixes wboy3_0119u3gra:
"Clone wboy3: In this clone, you get 2 lives less than indicated in the
dipsw menu. So, instead of 3, 4, 5 (or infinite) lives, you respectively
get 1, 2, 3 (or infinite)."
---
From: RansAckeR [mailto:RansAckeR@pandora.be]
Subject: fix for zerohour0122u6gra
Fixed Bonus_Life DIP values.
You might want to adjust the example in
http://mamedev.org/devwiki/index.php/DIP_Switches_in_MAME accordingly.
---
From: RansAckeR [mailto:RansAckeR@pandora.be]
Subject: seta.c DIP locations
Added dip locations from manuals for extdwnhl and zingzip.
---
From: RansAckeR [mailto:RansAckeR@pandora.be]
Subject: zaxxon.c dip fixes
Improved DIP switches for zaxxon and congo from manuals and added dip
locations.
---
From: RansAckeR [mailto:RansAckeR@pandora.be]
Subject: rockola.c dip fixes
Improved DIP switches for vanguard, zarzon & nibbler and added dip
locations according to manuals.
---
From: RansAckeR
Subject: sega80r.c yard.c kaneko16.c DIP improvements
Improvements to sega80r.c, yard.c & kaneko16.c DIPs.
Added DIP locations to yard.c and kaneko16.c.
longer used. Source needs to be recompiled because of the changed enum.
- Changed copybitmap and copyscrollbitmap:
There are now 2 versions of each, one without and with transparency:
void copybitmap(mame_bitmap *dest,mame_bitmap *src,int flipx,int flipy, int sx,int sy,const rectangle *clip);
void copybitmap_trans(mame_bitmap *dest,mame_bitmap *src,int flipx,int flipy, int sx,int sy,const rectangle *clip, pen_t transparent_pen);
void copyscrollbitmap(mame_bitmap *dest,mame_bitmap *src, nt rows,const int *rowscroll,int cols,const int *colscroll, const rectangle *clip);
void copyscrollbitmap_trans(mame_bitmap *dest,mame_bitmap *src, int rows,const int *rowscroll,int cols,const int *colscroll, const rectangle *clip, pen_t transparent_pen);
The version without _trans is the equivalent of the old TRANSPARENCY_NONE, The *_trans version is the equivalent
of the old TRANSPARENCY_PEN. The old TRANSPARENCY_COLOR mode is done via calling *_trans version and passing in
the pen that has been looked up via machine->pens[].
So for example, copybitmap(..., TRANSPARENCY_COLOR, 0) becomes
copybitmap_trans(..., machine->pens[0])
- Changed all drivers to the new calls. Suprising how few drivers still use these functions.
Most have still not been converted to tilemaps, or they are still writing to a tmpbitmap
which gets copied over to the real bitmap in VIDEO_UPDATE.
- Changed machine->screen[0].visarea to 'cliprect' where appropriate.
- Tried improving on the ROM mirroring, without any success. Maybe somebody could look into it -- right now it requires all kinds of trickery and even a memcpy ;) All I know is that everything that's there right now is needed otherwise either the game fails the ROM test, or Galaga crashes
Properly tagged m52 and m62 sound boards, plus variants.
Updated all connected drivers.
Merged memory maps.
Proper video timing in 10 yard fight.
Converted troangel to tilemaps.
Moved definitions to header files.
Corrects 68301 base clock as 50MHz / 3 (16.66666MHz) as all the Seta2 hardware has a 50MHz OSC.
Secondary OSC are for other chips (28MHz and or 32.53047MHz)
This purely a skeleton driver. Someone who knows anything about the m68k will likely be able to make great progress with this one.
"Galaxy Games" is a trackball-based, cocktail, multi-game cab released in 1998. It has 7 games built into the BIOS, but can also take 4 cartridges. Namco apparently licensed some software to the company who makes it (two player simultaneous Ms. Pac Man - using trackballs?!).
The company's webpage is here: http://www.cesgames.com/
They also have ROMs for their Classic Collection games available for download. There's no information about the Classic Collection hardware, but I'm guessing it's very similar to the Galaxy Games hardware. These can be likely added at a later date.
It looks like the softwarethis.com fellow has a Namco cart, but was unable to dump the ROMs?
BIOS ROMs are uploaded to /roms/g/galgbios.zip and Wiki is updated with skeleton status.
* fixed wrong resistor value (22K to 2.2K) - verified on spelunkr and kidniki hires pcb pictures
* Changed resistor network calculation based on assumption that cs line is active either on tiles or sprites color prom.
- Background smoothing now happens at the same time as the background is drawn
- Our smoothing PROMs are half the size shown on the schamatics. The schematics shows A8-A10 connected, indicating 8 different smoothing tables. Our dumps are only 0x400 bytes long, half the size they should be. I marked them BAD_DUMP and the game IMPERFECT_GRAPHICS
The idea is to create extra work if a driver wants to use these and hopefully
gives an incentive to look for an alternate solution
- Added #include of deprecat.h that rely on these contructs
- Removed a bunch of unneccassary #include's from these files
Subject: z80gb cpu core patch
Changes:
- Small timing fixes when leaving HALT state.
- Fixed bug in retrieving Z80GB_SPEED pseudo register.
--
From: Wilbert Pol [mailto:wilbert@jdg.info]
Subject: Re: timer_set_global_time patch
This patch for the z80gb cpu core also fixes my problems without the
need to recode a lot of things:
- Split the execution of an instruction into separate fetch and
execute phase.
Subject: other frequencies verified
Corrected Diet gogo h6280 clock so that it behaves correctly with
Charles Macdonald fix to the cpu core.
Verified anc corrected frequencies and pin 7 okim6295 on the following
games:
The new zealand story (3 z80 version), Trio The punch, Vandyke,
paradise.c games, Downtown, Shaolin's Road and Twins.
Updated Xtal.h with 1.056mhz resonator from Trio the punch
Subject: [patch] Fix C4305 warnings, other MSVC tweaks
Hi mamedev,
This patch is a bit of a potpourri. It is the result of enabling most
of the suppressed warnings when using MSVC compilers and seeing what
issues arose with different compilers (I used 70,71,80,90). Two of
the warnings were judged to be useful to enable and methodically fix.
Some issues spotted by the other warnings were also fixed.
1. Fixed issues flagged by MSVC warning C4305 (type truncation).
Almost all of these are harmless double->float narrowing in
initializers, but one warning spotlighted a bug in segasyse.c, where
code to use a higher sprite number had no effect due to the
insufficient range of UINT8.
2. Removed /wd4550 for VS7/VS71 compilers (expression evaluates to a
function which is missing an argument list). There are no cases of
this warning currently, and if there were they would most certainly be
bugs. This also allowed the warning suppression lists to be remerged
for VS7 and VS2005.
3. Decoupled intrinsic support decisions from PTR64 in eivc.h.
4. Fixed some VS7-specific issues (OPTIMIZE=0 at least compiles now).
That compiler doesn't support "long long" or "ll" (rsp.c/dkong.c).
5. Added a missing case statement in sm8500d.c. Noticed while
reviewing dead code warnings.
6. Replaced a number of static constants with an enum in sidenvel.h.
This is unrelated to the rest of this patch, but it was overdue to be
done.
- Changed the Berzerk driver to set the S14001A clock as per the schematics. This proves that the schematics are correct and the comment suggesting the contrary can be removed.
- Correct colors, perhaps not the background, but probably is
- Added some sound
- Marked it NOT_WORKING, due to the (still) missing 3rd gfx layer that makes it impossible to pass the 2nd level. Don't suppose anybody has a PCB? It would be helpful even if I knew what I was supposed to be seeing
- correct colors -- in places different from the manual's description, but matches the flyer perfectly
- added speech
- fixed AY-8910 sounds
- odds and ends
- for now, broke Demon Eye X, but I wanted to get this out
- Removed VIDEO_START_CALL(generic_bitmapped) from jpmimpct. By the way, Clueo has a bug where the screen is not cleared properly obscuring instructional text. This happens after the demo mode takes a photo of the 'body'
- Final pass on single-stepping behavior [SGINut]
- Corrected VRCP element lookup [SGINut]
- Corrected unaligned DMA behavior [Ville Linde] (Ville, do you mind that I submit this?)
ROMs were downloaded from softwarethis.com and uploaded to /roms/current/n
One program ROM is different, which adds an additional screen in service mode. I'm sure there are other differences as well.
I would have added the PAL dump, but it's all 0's, and I'm guessing that isn't correct.
Documents various priority issues as being original game bugs, and makes note of a missing alpha effect.
These notes will likely live in a new bug database someday, but were added to the driver so they won't be lost in the short term.
If it's whatsnew worthy, credit Guru for his time spent testing.
- cleaned up and merged ninjakd2, mnight and omegaf drivers into a single driver
- added flip screen support to all games
- fixed sprite overdraw mode:
- ninjakd2 congratulations screen (e.g. stage 3) shows japanese characters which were previously missing
- in ninjakd2, at the beginning of a level items are visible during the initial fade in. I'm not sure if this is correct but the other effects wouldn't work otherwise
- in mnight attract mode, when the big ship is firing the other sprites no longer leave trails
- in mnight at the end of a level the screen is slowly filled with balls and then slowly cleared to begin the following level. Same effect in the death sequence during attract mode.
- added proper computation of sprites to be drawn taking into account double size sprites. This fixes sticking shots in mnight without need for a hack.
- lowered ninjakd2 PCM playback rate to 13020 (from 16000). This seems to sound better and is a round division from one of the master clocks.
- removed ROM patch that was used to avoid the input protection in omegaf, added a rough but effective protection simulation.
- corrected some dip switches
- hooked up sound cpu reset line
- simplified ROM loading for the older games swizzling address lines in driver init.
- Emulated external OR circuit for all drivers using the PIA chip. This used to be internal to the PIA emulation, but, in fact, this is external logic. The PIA has two seperate INTA and INTB out lines. This fixes at least PlayBall
> This one line fix addresses the crash reported in newui0118u4ora. I
> think most of the other issues reported in the bug are fixed by this
> as well, but I didn't test this thoroughly. Perhaps we should close
> the bug and have the testers file a new bug if remaining issues are
> found.
Updated drivers accordingly.
Major cleanup to the ddragon driver:
- improved video and interrupt timing
- consolidated common memory maps and input ports
- added save state support
- correct clocks
Previous checks would not catch modifications in DRIVER_INIT or MACHINE_START calls.
Also changed one of the cheat calls back to using more generic switch detection so they can be triggered via joysticks.
Changes:
- Re-fixed RSP single-step activation behavior
- Reading the RSP PC returns only the least significant 12 bits
- Fixed flag behavior when read out via CFC2
Oh God, why Nintendo, why? Why make the RSP immediately stop when the main CPU sets single-stepping, but have the RSP execute one instruction before entering single-stepping mode when it sets it on itself? "You manaics! Damn you! God damn you all to hell!"
Changes:
- Initialize RSP registers to 0 in lieu of mame_rand
- Re-fix RSP single-stepping mode when set by a CPU other than the RSP
* 8085 has an internal clock divider by 2. Changed i8085.c to reflect this for I8085. I8080 still at 1.
Games using I8085:
* Changed clock to reflect internal clock divider now in i8085.c
* Added some FIXME: comments where clocks for I8085 are outside specs
Also note that there is no analog sound. Apparently the sound is similar to the regular Space Invaders sounds. The Guru has the board out and hooked up if anyone wants to take a stab at getting the sounds going in this game.
Back to fixing some bugs...
Quite possibly the most useless RSP change I'll ever make, given that no game should ever be affected by these changes. But, eh, accuracy. Apparently only the accumulator registers are initialized to a non-random value on power-on, and apparently the RSP executes exactly one instruction before kicking over into single-step mode when it's set in the status register.
- Fixed accumulator state on powerup by testing against real hardware
- Fixed single-step behavior by testing against real hardware
Added new clone "Player's Edge Plus (XMP00006) Multi-Poker"
Increased DUART memory size
Minor white space clean up & commented the rom defs with game names.
The system 10 & 12 clock speeds have been raised as they run on an upgraded chipset.
All clocks are currently set to divide by 2 externally, I don't know if this is correct.
The clock is also divided internally as we have no wait states, incorrect dma timing, no gpu timing, no dma bus stealing and no gte timing.
Subject: fix for cocktail0119yel
Credit should go to Robbert.
"frogger.c, amidar.c, scramble.camidar.c, frogger.c (all sets),
galaxian.c (froggs at least), scramble.c (scramble+many sets): When it is player
2's turn and the screen is flipped it is offset so that the scores sit in
the middle of the screen."
--
Subject: fix for tokisens0122u3gra
"system1.c tokisens: demo sounds on/off dip swapped around."
Subject: Fixed DBREED72 crash in 0.122u5
Hello. This patch fixes the crash of DBREED72 in m72.c driver caused by
two lines mistakenly removed during the last 0.122u5 update.
Subject: [patch] Fix megaplay.c0122u4red
This fixes the crash reported as megaplay.c0122u4red. The driver
doesn't map the offset into the correct range for the handler. -bios 1
still shows corrupt graphics, but at least it doesn't crash anymore.
Subject: fix for rollerg0111u5gra
"rollerg.c rollerg: coin 3 should be changed to service."
--
Subject: fix for bionicc0109ora.diff
"bionicc.c About the todo list in bionicc.c:
Mame behaves exactly like the pcb, so those are not bugs."
Changed comments in source accordingly.
--
Subject: fix for lcasino0111ora.diff
"ltcasino.c I believe there was no Little Casino 2, but only Little
Casino. Digital Controls re-used Little Casino title even though later versions
of Little Casino might have appeared differently.
It should be Little Casino (older) and Little Casino (newer) to reflect
game differences with Little Casino (older) being an older version clone of
Little Casino (newer) which would be latest revision."
Changed name to Little Casino (older) and Little Casino (newer), also
renamed set ltcasin2 to ltcasinn.
Verified and changed cpu frequencies and oki m6295 pin 7 on the
following pcbs:
Asuka&Asuka, Cadash, Equites h/w games and sound board, F1GP, Super
Formula, Gladiator, Ping Pong king, Great Swordsman, Irem m52 sound
board, Tropical Angel, Explosive Breakers, Magical Crystal, Mad Gear,
Roller Aces, Chinese Hero, Simpsons, Golfing Greats, Time Pilot 84.
Updated Xtal.h to use new OSC values found on Great swordman, Gladiator
h/w and Equites sound board.
Updated informations in Equites.c for the sound board
- Removed videoram_w, colorram_w and spriteram_w and changed all drivers using it to access RAM directly. Still kept the _r function as some old style drivers are relying on them for mirroring support. Will investigate and address those next
Updated all CPU cores to return a CPUINFO_INT_CLOCK_MULTIPLIER of 1.
Changed the core to actually respect both CPUINFO_INT_CLOCK_MULTIPLIER and CPUINFO_INT_CLOCK_DIVIDER.
Updated a number of drivers to use cpunum_get_clock() instead of Machine->drv->cpu[x].clock.
***** Raw input clock speeds should now be specified for all CPUs in the MACHINE_DRIVER. *****
Removed explicit divisors from all drivers using the following CPU types,
which were already specifying non-1 values for CPUINFO_INT_CLOCK_DIVIDER:
* COP4x0
* I8039/8048 families
* M68(7)05, HD63705
* M6809E
* PIC16C5X
* TMS32010
* TMS340x0
In a few cases, it appears that the divisor was not being used, so I guessed in those cases whether or not
the specified clock speed was raw.
changes P3 & P4 Start of Grand Striker 2 to itp_unknown
as there is no P3 & P4 start buttons.
This addresses gstrik20105u4gra however there are several
games that map the service key twice through out the
driver so it's not really "fixed" as far as that's
concerned
* added equivalence circuit for Sanyo EZV audio amplifier
* Set DK_C159 = 0 to avoid over-aggressive high-pass filter. Solely based on observations.
* added comment on above to source
* Added define DK_NO_FILTERS to turn of DAC filters and post-mixer filters for debugging
"armwrest: Subsequent bonus rounds (After rounds 5 and 9) are unplayable because of missing money bag sprite."
the other part of the bug report is out of date, the screenshot doesn't match MAME's current behavior. The finger still appears cut off, but this is intentional. I suspect the bag placement is still slightly incorrect and that it's meant to look like the finger is hidden inside the bag material.
I think further improvements would require studying the actual board / schematics to improve the zoom emulation.
- Targ now uses loaded PROM instead of hardcoded one
- Renamed Side Trak to Side Track as per the title screen
- Removed audio/berzerk.c from make file
- Fixed collision detection but I introduced in video/exidy.c
src/mame/audio/berzerk.c
- Added sh_reset
src/mame/audio/exidy.c
src/mame/includes/exidy.h
- Added reset functionality
- Moved Victory hardware routines here
src/mame/drivers/victory.c
- Some clean-up, mirrored memory map for audio CPU
src/mame/video/victory.c
- Simplified code by removing complicated
dirty tracking. Now VIDEO_UPDATE is
called on every frame, further simplifing
code
src/mame/drivers/exidy.c
- Mirrored memory map for audio CPU
- Added sh_reset
src/emu/machine/6821pia.c
src/emu/machine/6821pia.h
- Added orthogonal accessors
- Removed hacky update_shared_irq_handler(), now the same
IRQ callback maybe called multiple times, but this shouldn't
be a problem
- IRQ lines are cleared on a reset
src/emu/sound/tms5220.c
- Disabled code that set the Buffer Empty flag after a stop
frame. This fixes Victory. This might be the incorrect fix
but the old code wasn't working either.
Cleaned up jaguar driver:
* proper video timing, configured by the chipset
* 32-bit rendering, removing 16bpp hacks
* support for borders
* proper object processor timing, including multiple passes per line
* added R3041 as a clone of the R3000
* fixed XTALs based on documentation
* fixed movd instructions
* add MB8884 and M58715 cpu types
* moved timer hack to M58715
* added ram_mask for internal ram access
* added R.A11 as 'M' to dasm flags
* added EA "IO" port
* mario now uses M58715 as sound cpu
diff + romset for Geebee (F.lli Bertolino license)
The dump comes from an original board marked Namco on the component
side, and F.lli Bertonlino on the solder side.
pics of the pcb: http://www.citylan.it/lista.php?id=629
F.lli Bertolino was the importer of Atari and Namco games in Italy in
end 70s early 80s
Here's a patch that fixes compile errors when compiling a C++ source file including "render.h"
and "palette.h". C++ (at least g++) does not like typedef's for an enum coming before the actual enum.
While investigating alternate gfx layout schemes, I stumbled across
the fact that some drivers are allocating graphics with one layout and
then decoding them with another (!). There's no guarantee this will
work, but for the drivers that do so (all Konami games), the layouts
are similar enough that it does. A related potential bug is that many
drivers are decoding using the layout provided to allocgfx, not the
layout attached the element returned from allocgfx. If the element
had scaling applied to it, this would be incorrect, but since scaling
is rare these are also benign. It would also be a problem if the
layout data had a different internal representation (which is
something I'm experimenting with), so to reduce the possibility of
coding errors and allow for future changes, I'd like to remove the
layout parameter from decodechar.
So here's two patches, the first fixes the affected Konami drivers to
allocate and decode using the same layouts. It changes the notion of
plane_order and bpp in the functions somewhat to let the start
routines select the appropriate layout, but acceptably so IMHO (I can
clean this up further if there are loud objections). The second patch
then removes the layout parameter from all the decodechar() calls.
I also reviewed MESS to see if it had similar problems and didn't find
any.
Reversed ROM set names of Cuebrick World and Japan versions
Changed some function names to reflect parent set
cuebrckj0102u5gre doesn't happen (I didn't fix it)
- added MESS PC-Engine emulatation
- added Blazing Lazers (working)
- added Paranoia (non-working due to lack of jamma interface
emulation)
- fixed MAME debug build under VC2003
Please co-credit Charles MacDonald & Mr. Do for Blazing Lazers.
Note to Nathan: video/vdc.* re taken as-is from MESS, for the
machine stuff I extracted common code (to be shared by MAME and
MESS) and created machine/pcecommn.*