refresh information from the device's inline_config, since this is
done before the screen devices are start. Fixes 01491: switchres
causes Exception at EIP=009413BF: ACCESS VIOLATION.
Also, fixed render_target_get_minimum_size() to return nominal values
if no screens are found.
Added DEVINFO_INT_TOKEN_BYTES, which is queried before device
startup. It should return the size of the structure that will
be hung off of device->token. It must not return 0.
Changed the core device interface to allocate and zero a block
of memory the size of DEVINFO_INT_TOKEN_BYTES before calling
device_start. The pointer to this memory is already attached
to device->token at the time device_start is called.
The primary motivation for this is to allow the device_start
function to make internal calls and pass the device_config *
around as if the object were fully constructed. Since the token
is used to indicate whether or not a device is live, this makes
the device "live" at the time device_start is called rather
than after it completes.
I applied the same fix to verifyroms. Now a status message is printed for every sample/ROM set regardless if an individual or all the sets are audited.
My fix is a bit heavy handed. The real access violation happens in update_digital_joysticks() after the comment "read all the associated ports" and before the next comment
01517: all atarigt.c drivers: Assertion
01516: all atarigx2.c drivers: Assertion
01515: all atarig42.c drivers: Assertion
01514: all cyberbal.c drivers: Assertion
Converted Centipede, as an example.
To define a scanline timer, use something like this:
MDRV_TIMER_ADD("32V", SCANLINE, generate_interrupt)
MDRV_TIMER_SCANLINE("main", 0, 16)
The first number is the first scanline the timer will fire on, the 2nd number is the increment.
So in this case, the timer will fire on 0, 16, 32, ..., 224, 240, then wrap around
because the screen is defined as 256 lines high.
The current scanline is passed to the callback in its 'param' argument
This driver is creating bitmaps in DRIVER_INIT, which is not the best practice, and in fact, it broke as machine->primary_bitmap is not initalized yet.
Subject: small fix to cpu.mak
Attached please find a small patch to include M68000 CPU only when you're
compiling a build with the M68K. this is needed to e.g. compile tiny
builds .
Created MACHINE_START( asuka ) to configure cpu2 banks with memory_configure_bank(),
All drivers support save states, with the exception of cadash and clones, the background does not load properly. I'm not familiar enough with taitoic.c to make that happen.
Subject: punchout.c inputs/dips
punchout.c:
-Simplified input definitions
-Improved dip switches
-Added dip locations
Note:
punchout and spnchout had an extra 5th PORT_START, was it correct to remove
those?
If not just drop me a note and I'll resubmit the patch.
--
From: RansAckeR
Subject: fix for 00593
'fix' for 00593 (patimono0120u3gra)
--
From: RansAckeR
Subject: 'fix' for 01478
01478: bullet: DIP switch info
--
From: RansAckeR
Subject: bankp.c & baraduke.c inputs/dips
bankp.c:
-Simplified input definitions
-Fixed bankp dip locations
baraduke.c:
-Simplified input definitions
-Added dip locations
Subject: Another weekend, another submission
This time, it's phase 2 of the Deal 'Em input changes (these work well
with the default cabinet type, I need to do some conditional input work
to fix them fully), and also a conversion to the resnet code.
Unfortunately, this still doesn't fix the apparently needed transparency
(the apostrophe and Zenitone logo on the title screen should have a
green background, and the black rectangle at the bottom should read
(C)1987). I also tidied up the memory maps, but have been unable to
reproduce the assert bug relating to VBLANKs, so I'm unsure as to
whether I've fixed it or not.
Subject: patch for SVP (Sega Virtua Processor) emulation
hello,
this patch adds support for Sega Virtua Processor, to run
Genesis/MegaDrive version of Virtua Racing, intended to be used by
MESS. It consists of a CPU core SSP1601, and updates in megadriv.c:
* SSP1601 replaces SSP1610, as it has been confirmed by Stiletto and
other sources that SVP actually contains SSP1601. The current SSP1610
is placeholder only (nearly completely unimplemented) anyway.
* Changes in megadriv.c add a new driver for Genesis/MegaDrive+SVP
combination, also add SVP memory controller logic and memory map.
The diff has already been reviewed by Reip and SSP1610 removal was one
of his suggestions (SSP1610 is not used by any drivers).
mame/drivers/superqix.c
mame/video/superqix.c
Changed vblank interrupts to 3 to fix screen drawing issues.
Use memory_configure_bank() to configure memory.
Added save states.
Attached is update for Merit hardware based on V9938 (CRT-250 and CRT-260 - meritm.c).
New playable games:
Pit Boss II
Super Pit Boss
Pit Boss Megastar
Megatouch IV
Megatouch IV Tournament Edition
Megatouch 6
By the way, the accent in roberto's last name gave CVS a fit
svn: Safe data 'From roberto zandon' was followed by non-ASCII byte 224: unable
to convert to/from UTF-8
This a bogus message -- you can certainly convert that character to UTF-8
Changed slapstic management to always install an opbase handler to more
aggressively catch code executing in the slapstic region. Updated all
drivers to separate the slapstic region of ROM into a different ROM
section from the fixed ROM.
Changed input ports to register a frame callback, which is
called immediately after throttling and updating. This is the
proper "sync point" between emulated time and real time. Moved
all analog and digital port processing into a central place
here. Added tracking of time since the previous frame update
and use that as an estimate for the time of the current frame.
This is used to scale analog ports without the use of
cpu_scalebyfcount(). This is not perfect in the case where
frame rates are dynamic (vector games), but works well for
other cases.
Further cleanup of memory header and code.
- Added video_screen_auto_bitmap_alloc(screen) -- it is just a shorthand for
auto_bitmap_alloc(video_screen_get_width(screen), video_screen_get_height(screen), video_screen_get_format(screen))
which is a common operation
- The Dynax/Don Den Lover games now do their updating in VIDEO_UPDATE instead of VIDEO_EOF. This semmed to
have fixed the palette problems
- Went through some of these drivers and changed Machine to machine
Made address versus byte offsets explicit throughout.
Removed some unused parameters.
Consolidated initialization process.
Removed maximum memory block count.
Centralized bank management.
Added masked handlers and change_pc to the accessors.
Added memory_get_accessors() to return a pointer to the accessors
for a given address space/databus width/endian configuration.
More to come.
MRA*_BANK*/MRA*_BANK* -> SMH_BANK*
MRA*_RAM/MRA*_ROM -> SMH_RAM
MRA*_ROM/MWA*_ROM -> SMH_ROM
MRA*_NOP/MWA*_NOP -> SMH_NOP
MRA*_UNMAP/MWA*_UNMAP -> SMH_UNMAP
This removes the silly need for a bunch of redundant constants
with faux type definitions that didn't buy anything.
Moved some memory system constants into memory.c.
Converted address maps to tokens. Changed the address_map structure
to house global map-wide information and hung a list of entries off
of it corresponding to each address range. Introduced new functions
address_map_alloc() and address_map_free() to build/destroy these
structures. Updated all code as necessary.
Fixed several instances of porttagtohandler*() in the address maps.
Drivers should use AM_READ_PORT() macros instead.
ADDRESS_MAP_EXTERN() now is required to specify the number of
databits, just like ADDRESS_MAP_START.
Removed ADDRESS_MAP_FLAGS() grossness. There are now three new macros
which replace its former usage. ADDRESS_MAP_GLOBAL_MASK(mask)
specifies a global address-space-wide mask on all addresses. Useful
for cases where one or more address lines simply are not used at
all. And ADDRESS_MAP_UNMAP_LOW/HIGH specifies the behavior of
unmapped reads (do they come back as 0 or ~0).
Changed internal memory mapping behavior to keep only a single
address map and store the byte-adjusted values next in the address
map entries rather than maintaining two separate maps. Many other
small internal changes/cleanups.
All callers that used 0 for the screen number now use machine->primary_screen
As a gap meassure, Where necessary, create a parallel set of video_screen_*_scrnum functions that take scrnum
All callers that specified a specific screen number now call the *_scrnum versions
Changed game info screen and overlay UI to display the screen tag instead of screen number
- 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