Commit Graph

2011 Commits

Author SHA1 Message Date
Couriersud
bf4bfe8b86 Removed some printf debugging and added some more DS5002FP code 2008-11-03 23:08:38 +00:00
Aaron Giles
c6a7299b4e 02544: Dip Condition / Port Include limitation 2008-11-03 10:01:43 +00:00
Curt Coder
086cc0d047 [MC6845] Fixed display enable. 2008-11-03 09:56:09 +00:00
Aaron Giles
abf8eafc47 02607: frogs: Taking a screenshot in Frogs (Gremlin) exits the game with an error. 2008-11-03 08:31:39 +00:00
R. Belmont
8d3e0e1ba2 Small Naomi update
AICA: fix missing instruments in DTPK driver games [R. Belmont, Deunan Knute, kingshriek]

Naomi: unmapped words in the AICA address range must read as zero [R. Belmont]

With these changes Toy Fighter's music is much better.
2008-11-03 02:58:59 +00:00
Couriersud
17b6c56de9 74123 Fixes:
* Clear behaviour to follow datasheet.
* Avoid recursive calls when setting a/b/clear lines from callback
2008-11-03 01:16:39 +00:00
Couriersud
ec60d29846 Changed 74123 into a device 2008-11-02 21:55:06 +00:00
Aaron Giles
ffc97bd35d Cleanups and version bump. 2008-11-02 03:11:19 +00:00
Aaron Giles
4e80367366 Here's another MAME tidy patch. This one adds missing const/statics,
adds/removes entries in header files, and fixes a few potential
multisession issues by explicitly adding initializers.  asic65.c has
significant changes to accomodate using a struct instead of 16
variables, otherwise the changes in this patch are modest and obvious.

[Atari Ace]
2008-11-02 02:40:46 +00:00
Aaron Giles
d08215d8ee [Pugsy]
There's an issue with the debugger handling of the 6502 instructions as
there's a mismatch between the core and what the debugger shows.
The changes are detailed in the spreadsheets that I've attached that
compares the core to the dasm.


Attachments:

m6502fix.zip contains the diff file
6502 debugger disassembly changes.zip   contains an excel spreadsheet
(in both xls and xml formats) detailing the reasons/changes.
2008-11-02 02:38:50 +00:00
Aaron Giles
1763eae62b Fix NES APU to work with high sample rates (don't know the bug #) 2008-11-02 02:36:52 +00:00
Roberto Fresca
e03868c87a Ruleta RE-900:
Use pre-defined crystals. Added with notes to xtal.h.
Added missing layout file.
2008-11-01 01:17:55 +00:00
Couriersud
10b85f1efe More changes to timer 0 split mode 3 and how timer 1 operates than
* Quotes from the documentation added to the source as well
* Started DS5002FP integration
2008-10-31 22:49:33 +00:00
Andrew Gardner
c33d3a4f52 Rewrite of the Motorola DSP56k CPU core. (Andrew Gardner)
* Partially implemented move, asr4, and mpy ops.
2008-10-30 05:21:45 +00:00
Couriersud
7dd6c89221 Finally move cpu/i8051 to cpu/mcs51, rename files and some constants 2008-10-29 23:41:31 +00:00
Couriersud
e60a8d7bfe Fixed INT0 & INT1 interrupt line handling 2008-10-29 21:58:19 +00:00
Couriersud
a9afec7df4 More NEC V30 changes
* improved prefetch timing calculation
* prefetch timing now also used by V20 and V33
* moved some static variables into cpu context
* nec_reset now explicitly clears context variables
* all cpus now share nec_execute
2008-10-29 21:52:51 +00:00
R. Belmont
99b29738b8 Fix GCC 4.3 "array bounds exceeded" error in disc_flt.c.
Would whoever checked this in double-check my change?  I believe I got the intent of the code (which is not how it was written ;-) but I could be wrong.

--This line, and those belo

M    disc_flt.c
2008-10-29 03:42:33 +00:00
Couriersud
ed56a340c0 Prefetch timing
* currently only for V30
* necessary to get lohtb2 working - somebody virtually counted cycles here
2008-10-29 03:11:17 +00:00
Derrick Renaud
65d187ecf2 More Discrete module optimizations.
Added optimized custom mixer to Donkey Kong.
2008-10-29 01:59:44 +00:00
Couriersud
0a82f62644 Removed another speed hack and renamed "FETCH" to "FETCH()"
* Macros used as functions should look like functions
* Preparation for opcode prefetch timing
2008-10-29 01:22:59 +00:00
Curt Coder
342fa7a26c [MC6845] Fixed skewing and display area. 2008-10-28 16:05:54 +00:00
Andrew Gardner
5b5edd9eb9 Rewrite of the Motorola DSP56k CPU core. (Andrew Gardner)
* Partially implemented tfr op.
* Polygonet now allows test mode to be run for a few seconds.  Most IO is now known, though coin2 is still a mystery.
2008-10-28 14:44:07 +00:00
R. Belmont
eb91a91308 YM2608/2612: applied latest fixes/discoveries [Eke-Eke, Nemesis]. 2008-10-27 13:39:01 +00:00
Andrew Gardner
db51d2ca3c Rewrite of the Motorola DSP56k CPU core. (Andrew Gardner)
* Partially implemented inc24, asl4, bcc, brkcc, and doForever ops.
* Added code for parallel address register update.
2008-10-27 03:53:23 +00:00
Couriersud
76182c3f9c MCS51 additions
* Implemented cmos features: powerdown & idle
* Added comments about special function registers on Philips 80C52
* cleaned up reset routines
2008-10-26 12:35:47 +00:00
Couriersud
9be049b4b2 According to Philips, 80C31 is a 80C52 family member with 128K internal ram and no rom 2008-10-24 21:53:09 +00:00
Couriersud
b1e8ff0a3e Implemented 80C52 interrupt handling
* mcs51 core now supports 4 interrupt levels depending on cpu type
2008-10-24 21:23:41 +00:00
Wilbert Pol
d64bda5e94 Updated nes pcm dma to read data through the cpu address map. 2008-10-24 21:15:49 +00:00
Couriersud
a4059f19ad Fixed split timer mode
* Credit: Jim Stolis
* No interrupts for timer 0 modes 0,1,2 while timer 1 in mode 3
2008-10-24 17:45:42 +00:00
Aaron Giles
7f39a3503c Cleanups and version bump. 2008-10-23 09:15:58 +00:00
Aaron Giles
410a99b10d From: Phill Harvey-Smith [mailto:afra@aurigae.demon.co.uk]
Sent: Fri 10/17/2008 11:45 AM
To: submit@mamedev.org
Subject: 65c02 core bugfix
Hi,

This patch fixes a subtle bug in the 65c02 emulation where the result of
the BIT instruction  differs on the 65c02 (from the 6502), when executed
in immediate mode.

Cheers,

Phill.
2008-10-23 08:47:52 +00:00
Aaron Giles
c97fe8b6bb 01722: sokonuke: Game hangs after you choose stage 2008-10-23 08:44:21 +00:00
Aaron Giles
a882bc8050 Silenced an annoying log message. 2008-10-23 08:22:49 +00:00
Curt Coder
dab7aa732b Added crystal value. 2008-10-22 18:10:57 +00:00
Andrew Gardner
40a5d0c543 Rewrite of the Motorola DSP56k CPU core. (Andrew Gardner)
* Implemented tst, or, jsr, rti, tst2, and 2 new movec ops.
* Added opbase handler to plygonet.c
2008-10-22 04:15:30 +00:00
Phil Bennett
40520a87cd Fix MT 02140: "cube quest crashes mame when saving state" 2008-10-21 20:42:56 +00:00
Couriersud
8eecd6745c More mcs51 updates
* Remaining games checked and adapted to changes in cpu core 
 * Cardline still broken. I need the exact and complete cpu name.
 * Added more variants 803X, 80CXX, AT89C4051
 * Fix segas18.c (segaic16.c) mcu maps. 
 * Fix sslam.c 
 * Fix limenko.c videopkr.c : Issue with core allocation of ram (duplicate savestate)
2008-10-20 23:42:09 +00:00
Couriersud
3b0ee27f97 mcs51/i8051 - please credit Jim Stolis as well
* fix timer 2 interrupts
* implement serial mode 2/3 rx and tx clock handling
2008-10-20 19:23:58 +00:00
Curt Coder
daea45ca62 [MC6845] Hsync should be pulsed even when vsync is active. 2008-10-20 17:42:38 +00:00
Aaron Giles
13ad68bca4 New games added: Grudge Match (Yankee Game Technology)
Yet another 8-bit Incredible Technologies board. Different in several
significant ways from previous models:
 * YM2608B for audio, replacing YM3812+OKI6295
 * TMS34070 for palettes instead of PC RAMDAC
 * Different video memory layout
2008-10-20 15:34:27 +00:00
Couriersud
a7da02e00e MCS51/I8051 overhaul, micro3d improvements and full m72 protection emulation for lohtb2
* improved serial port timing (f15se (micro3d.c) sound board now works)
 * better infrastructure for adding more variants like DS5002
 * Fixed port reading
 * Rewrote Macros for better readibility
 * Fixed and rewrote Interrupt handling
 * Now returns INTERNAL_DIVIDER, adjusted cycle counts
 * Remove unnecessary and duplicated code
 * Remove unnecessary functions
 * Rewrite to have sfr-registers stored in int_ram. 
 * Debugger may now watch sfr-registers as well.
 * implemented interrupt callbacks (HOLD_LINE now supported)
 * Runtime switch for processor type - remove ifdefs
 * internal memory maps for internal rom versions (internal ram now displayed in debugger)
 * more timer cleanups from manual
 
micro3d:
 * serial port communication between main cpu and sound board works
 * sound board now works
 
m72 - lohtb2:
 * full emulation of protection device
 * Samples are now piped through the mcu
2008-10-19 22:06:47 +00:00
Andrew Gardner
9014e91a62 Rewrite of the Motorola DSP56k CPU core. (Andrew Gardner)
* Added additional branch, move and bitfield ops.
* Plygonet now passes its memory test and uploads a new program.


[[Next step is to install an opbase handler and let the dsp56k run further into its new proggie.]]
2008-10-19 17:14:14 +00:00
R. Belmont
9fc7f46095 AICA: fix sample addressing for the full 8 MB [kingshriek]. 2008-10-19 15:06:20 +00:00
davidhay
84dd8639d8 cleaned up STV rom loading a bit 2008-10-18 22:07:30 +00:00
Andrew Gardner
e138837002 Rewrite of the Motorola DSP56k CPU core. (Andrew Gardner)
* Complete rewrite focusing on legibility and extensibility.
* 27/121 opcodes (mostly) implemented.
* Bugfix for reset status of interrupt priority bits.
* Bugfix for disassembly of register-to-register parallel data move.


[[These changes bring the driver up to the point where the plygonet hardware begins banking memory.  The behavior is understood, so I should have the driver back to where it was before the rewrite soon.  Then real progress can be made.]]
2008-10-18 18:10:59 +00:00
davidhay
090ab6fe44 Removed per-game hacks from CPS3 (moved to DMA callback in SH2 core)
(also added a to-check note, 16-bit wide DMA is currently using 32-bit functions, is this correct?)

Removed Speedups from CPS3 / PsikyoSH, while they do still give a decent speed boost they're not really needed with the DRC and just clutter the code.
2008-10-18 14:44:20 +00:00
Curt Coder
298dd21606 MC6845:
- added cursor and display enable skewing
- added preliminary support for SY6545-1's transparent addressing mode
2008-10-16 17:09:58 +00:00
Aaron Giles
7d3221dcf3 Cleanups and version bump. 2008-10-16 08:59:25 +00:00
Aaron Giles
5bcb95dff7 From: Phill Harvey-Smith [mailto:afra@aurigae.demon.co.uk]
Sent: Saturday, October 11, 2008 12:01 PM
To: submit@mamedev.org
Subject: 6821 PIA changes

Hi,

Can this change be added to the 6821 pia code, it adds a function that 
allows the client code to get the status of CA2, taking account of the 
internal pull up resistor. This code only adds a function and does not 
change any existing code so should not have any impact on existing
drivers.

This change is needed for a couple of the mess drivers.

Thanks.

Phill.

-- 
Phill Harvey-Smith, Programmer, Hardware hacker, and general eccentric !
2008-10-16 07:19:16 +00:00
Angelo Salese
f4e0931b93 Fixed the colors of Yumefuda.
Added two new palette functions in generic.c: paletteram_xRRRRRGGGGGBBBBB_split1_w() and paletteram_xRRRRRGGGGGBBBBB_split2_w() (used by Yumefuda)
2008-10-14 18:31:05 +00:00
Aaron Giles
85e3077616 Connected firefox audio enables. 2008-10-13 17:17:07 +00:00
Curt Coder
3d85b66c5e Added pinout, not worth mentioning in whatsnew. 2008-10-13 14:16:07 +00:00
Aaron Giles
0fddfa1a44 Cleanups and version bump. 2008-10-13 08:38:32 +00:00
Aaron Giles
cbc146d0a9 Minor tweak to fix initial attract mode timing. 2008-10-12 05:37:42 +00:00
R. Belmont
864820d8ad Fix Mantis #02211
PsikyoSH: hook up VBL IRQ ack
SH2: fix DRC's handling of internally generated IRQs
SH2: fix compiling in interpreter mode
2008-10-12 00:05:13 +00:00
Aaron Giles
1a720bdf32 Changed Cube Quest laserdisc override logic. It's still a little hacky but
this works better than the previous attempt.
2008-10-10 14:41:22 +00:00
Aaron Giles
fa433938c0 02512: dkong: Artwork and gameplay area are getting squished/distorted
02511: dkong: Donkey Kong crashes after quiting
2008-10-10 05:25:45 +00:00
Aaron Giles
d3ab17e0e3 Cleanups and version bump. 2008-10-09 15:29:22 +00:00
Aaron Giles
ca7e069f29 02479: Various: Memory leak 2008-10-09 09:14:07 +00:00
Aaron Giles
0329403bae 02488: All sets with using 2+ monitors: Crash to desktop on second play
02439: tx1: TX1 quits out on second launch
02266: tceptor: Thunder Ceptor crashes out when run as the second game
2008-10-09 09:11:42 +00:00
Aaron Giles
8a0b803ec4 02321: mpu4utst, mpu4tst2, mpu4met0: Screenless systems crash due to problems in some display core functions 2008-10-09 08:58:09 +00:00
Aaron Giles
2d6453c98a Made the Z80 daisy chain aware of referencing device-specific devices.
Added preliminary LD-V1000 emulation. Not fully working yet, but mostly
there.

Cleaned up and normalized the three existing laserdisc emulations.
Removed obsolete code from the laserdisc core.
2008-10-09 05:31:15 +00:00
Couriersud
7494be5525 Removed speed hack - this would break the protection for lohtb2 2008-10-07 23:07:09 +00:00
Roberto Fresca
c6ec8026bc Fixed the i8051 AJMP opcode to take 2 bytes instead of 3.
Please also credit Grull Osgo.
2008-10-06 21:57:27 +00:00
Roberto Fresca
d3cc1b9742 Fixed timers in i8051 core. [Grull Osgo] 2008-10-06 21:36:30 +00:00
Aaron Giles
e9dd491777 Added correct overlay positioning, font, and behavior to PR-8210 emulation. 2008-10-06 08:34:48 +00:00
Aaron Giles
099373081e Added new functions for building device-relative tags. Changed machine
configuration builder to use these functions. Also changed the laserdisc
player devices to use them. Updated Z80 CTC/SIO code to assume that the
CPU provided for the clock is relative to the device that the CTC/SIO
belong to. Updated memory code to assume that regions and devices
referenced by the memory map are relative to the device the associated
CPU belongs to.
2008-10-03 16:29:33 +00:00
stephh
fc54f63a09 Removed unneeded keys by removing the constants.
Readded UI_ON_SCREEN_DISPLAY to be changed again in the "Inputs" menu as per Aaron's request.

A clean build is required and cfg/default.cfg has to be deleted !
2008-10-03 04:00:41 +00:00
Nathan Woods
17b9549fef Fixed broken prototypes 2008-10-03 03:27:37 +00:00
Aaron Giles
f90a19f2bc MSVC compiler error. 2008-10-02 15:05:46 +00:00
Aaron Giles
5123b07115 Cleanups and version bump. 2008-10-02 05:34:21 +00:00
Aaron Giles
cf63e2baa8 Fixed handling of interrupts when the CPU was in the STOP state. 2008-10-02 05:31:24 +00:00
Aaron Giles
adaaf55595 From: Matt Ownby [mailto:matt.ownby@gmail.com]
Sent: Fri 9/26/2008 10:15 AM
To: submit@mamedev.org
Cc: Philip Bennett
Subject: fix for Cube Quest Line CPU emulation
I found a bug in the emulation of the Cube Quest Line CPU.

Proof of bug:
After looking at .diff,
Assume 'ci' is 1, and assume 'r' and 's' are both 0xFFF 
(0xFFF equals -1, as these numbers are 12-bit signed).
The result should be mathematically equivalent to -1 - (-1) 
which is 0.
~0xFFF is 0xF000, so you'd have 0xF000 + 0x0FFF + 1 which equals 
0x10000 but since 'res' is 16-bits this is truncated to 0x0.  
'C' then becomes 0 and 'V' becomes 1 (as I recall).  The result of 
0 is correct, but the flags are wrong; V should be 0 and C should 
be 1.

Under my proposed fix, you'd have 0x000 + 0x0FFF + 1, which equals 
0x1000, so the lower 12 bits are 0 (correct) and C is 1 and V is 0 
(correct).

I discovered this bug while disassembling the line CPU's ROM.
2008-10-02 05:04:06 +00:00
Aaron Giles
4e9364ded5 Stupid compiler. 2008-10-01 17:12:04 +00:00
Aaron Giles
ce465cb509 Changed 68000 interrupts to only trigger during execution. This
means that multiple changes without any execution will be seen as
atomic. It also means that PULSE_LINE no longer works for signalling
IRQs.

Added checks in the debug build to catch people who try to use
PULSE_LINE for non-NMI and non-RESET input lines on CPUs that no
longer support direct interrupt generation. Over time expect this
list to increase.
2008-10-01 17:09:11 +00:00
Aaron Giles
34cd80a8e5 Added mechanism to generically specify input port tags in place of
machine/device handlers. Unfortunately, the implementation relies on
sentinel values to distinguish a port tag versus a pointer to function
code. However, since this is a very common situation, it will hopefully
be worth the slight grossness. New macros are defined in inptport.h:

   DEVICE8_PORT(name) - use this to specify the name of a port to read
     wherever a read8_device_func would normally be used

   MACHINE8_PORT(name) - same as DEVICE8_PORT except it can be used
     wherever a read8_machine_func would normally be used

   IS_HANDLER_PORT(ptr) - accepts a read8_device_func or read8_machine_func
     and determines if it is an actual function or a reference to a port;
     intended for use by devices that accept DEVICE8_PORT-style functions

   CALL_DEVICE8_READ(ptr,device,offset) - either calls through the given
     read8_device_func, or calls input_port_read with the appropriate
     tag, depending on the result of IS_HANDLER_PORT; intended for use 
     by devices that accept DEVICE8_PORT-style functions

   CALL_MACHINE8_READ(ptr,machine,offset) - same as CALL_DEVICE8_READ
     except for read8_machine_func

Note that in order for these to be useful, the consumer of the function
pointer must be enhanced to use the CALL_* macros above instead of directly
calling through the function. So far, only the 8255 PPI is set up to do
this, as part of the cleanup below. Also note that the sentinel value is
currently 4 consecutive 0 bytes; this may need to change in the future, in 
either length or value, so it is important to stick to the macros above.

8255 PPI interface cleanup:
 - added MDRV_PPI8255_ADD, MDRV_PPI8255_RECONFIG and
    MDRV_PPI8255_REMOVE macros; updated all drivers to use them
 - changed callbacks to device read/write handlers intead of
    machine read/write handlers; updated all drivers accordingly
 - normalized function and variable names to be lower_under
 - removed a number of redundant interfaces from the galaxian/
    scamble line of games

LD-V1000: added some (compile-time removed) information about the
ROM and memory map
2008-10-01 16:36:04 +00:00
Andrew Gardner
8515504a7b Added additional Motorola DSP56k reset behavior. (Andrew Gardner) 2008-10-01 04:24:46 +00:00
Aaron Giles
e3dd5224c0 Converted Z80 SIO to device. Updated drivers accordingly. 2008-09-30 05:29:59 +00:00
Aaron Giles
f4dc7a2f36 Converted Z80 CTC to a proper device. Updated all drivers.
Added new item to the interface which is the tag of a CPU
to take the base clock from. Are there any known cases
where the base clock does NOT come from the CPU directly?

Changed Z80 daisy chain interface to simply be a list of
devices in the chain. Interrupt callback functions are now
fetched via the standard device interface and referenced by
the daisy chain code.

Changed Z80 PIO interrupt callback to pass a device instead
of the machine. All device callbacks should provide the
device.
2008-09-29 17:20:58 +00:00
Aaron Giles
3355357ffc Simplified core deinterlacing logic based on availability of pre-
decoded VBI data. Added plumbing for allowing for overall brightness/
contrast/gamma corrections on laserdisc video. Fixed bug when combining
brightness values in the palette logic.
2008-09-29 09:23:22 +00:00
Aaron Giles
296347baab Plumbed machine parameters through the renderer. Removed need for
deprecat.h.

Changed render_texture_set_bitmap() to accept a palette object 
instead of a palette index. The renderer remains optimized for the 
system palette but will work if objects have their own palette as 
well.

Changed renderer to permit palettes for RGB and YUY textures. If
specified, these palettes specify a 32-entry (RGB15) or 256-entry
(others) lookup for applying additional brightness/contrast/gamma
on a per-texture basis.

Removed rescale notification. It never really worked that well and 
violated proper layering.

Renamed palette_set_brightness() to palette_set_pen_contrast() for 
clarity.

Changed palette objects to support global brightness/contrast/gamma
in addition to per-group and per-entry controls.
2008-09-29 08:02:58 +00:00
Wilbert Pol
08e57e7e28 Converted the z80pio implementation into a device. 2008-09-28 15:32:18 +00:00
stephh
e8896b0416 Removed unneeded keys :
- UI_ON_SCREEN_DISPLAY (there is now a "Slider Controls" menu)
  - UI_ADD_CHEAT, UI_DELETE_CHEAT, UI_SAVE_CHEAT, UI_WATCH_VALUE, UI_EDIT_CHEAT, UI_RELOAD_CHEAT (these keys belonged to the old cheat engine)

A clean build is required and cfg/default.cfg has to be deleted !
2008-09-28 14:56:17 +00:00
Aaron Giles
6c05b835a2 02442: -aviwrite produces faulty files 2008-09-27 22:48:52 +00:00
Aaron Giles
2a3301d0b9 Removed render_container_set_palette_alpha() hack. Now the alpha value
can be set directly in the palette entry and will be respected for
laserdisc overlays.
2008-09-27 22:05:30 +00:00
Nicola Salmoria
9ff6c5bb96 added pen_mask tile attribute to the tilemap system.
implemented dynamic tile & sprite bit depth in the Taito F3 driver.
02024: pbobble3, pbobble4, ringrage and clones: Color Regression
2008-09-27 17:30:17 +00:00
Aaron Giles
229d598989 Cleanups and version bump. 2008-09-26 13:42:51 +00:00
Aaron Giles
decc35b5f2 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Sent: Thursday, September 25, 2008 3:15 AM
To: submit@mamedev.org
Subject: using macros in UI message

This patch changes the message, that appears when no roms have been 
found, to use the macros instead of hard-coded strings
2008-09-26 05:32:29 +00:00
Aaron Giles
3d65b57f77 From: Micko [mailto:mmicko@gmail.com]
Sent: Tuesday, September 23, 2008 4:46 AM
To: Aaron Giles
Subject: 8080 bug

To fix this bug : http://mametesters.org/mantis/view.php?id=2322
 
a part of my code should be removed.
 
It seams that this feature I have added is only available on KP580BM80A (Russian clone of this processor).
 
So until I make a new patch (that support this clone processor)  please apply this to fix MAME drivers.
 
Thanks,
Miodrag
2008-09-26 05:27:00 +00:00
Aaron Giles
0f3e79564d From: Atari Ace [mailto:atari_ace@verizon.net]
Sent: Sunday, September 21, 2008 10:45 AM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] More static qualifiers

Hi mamedev,

Another static function update from yours truly, almost entirely
affecting code added in the last few months to MAME.  The fixes are
the usual lot, changing enum definitions so they aren't declared,
decorating dead code/declarations with #if...#endif, and of course,
adding static where appropriate.  In addition, I fixed a bunch of
UNUSED_FUNCTON symbols to be spelled correctly (I didn't introduce
this).

~aa
2008-09-26 05:25:11 +00:00
Aaron Giles
844dca9402 -listroms knows about device-specific ROMs now. 2008-09-26 05:00:14 +00:00
Aaron Giles
9b72b5abc4 Added 22VP931 emulation, which is mostly working. Communication works
fine and basic searching/playback/skipping is functional. Still a bit
glitchy.

Firefox improvements:
 - removed need for deprecat.h
 - memory map is complete from schematics
 - gutted laserdisc hacks in favor of actual laserdisc implementation
 - fixed all CPU and sound clocks
 
Removed old laserdsc.c implementation.

Added generic timer devices, which simply allocate a timer but don't
prime it. This is the preferred method for allocating timers, and may 
eventually be the only mechanism for doing so in the future.
2008-09-25 16:21:35 +00:00
Wilbert Pol
e4dc04a323 rescale_notifier() changed to always allow rescaling for screenless drivers. 2008-09-25 10:02:46 +00:00
Aaron Giles
fad77cb08e Fixed AF calculation in mcs48. 2008-09-24 15:54:13 +00:00
R. Belmont
8e3cd1573d 65816/377xx: fix disassembly of BRL [ShimaPong] 2008-09-24 03:25:11 +00:00
Aaron Giles
990ef98b53 02280: any set with multiple CPUs: Disassembler freezes when doing a Run on any CPU other than CPU 0 2008-09-22 06:06:23 +00:00
Andrew Gardner
49c8293fd9 Rewrite of the Motorola DSP56k disassembler. (Andrew Gardner)
(Same changelog as before - found another couple - not worth adding to whatsnew)
2008-09-19 02:49:18 +00:00
Andrew Gardner
66954044d1 Rewrite of the Motorola DSP56k disassembler. (Andrew Gardner)
* Fixes branch relative offset decoding.
2008-09-19 02:28:20 +00:00
Andrew Gardner
e5efb8a895 Rewrite of the Motorola DSP56k disassembler. (Andrew Gardner)
* Removes arbitrary opcode groupings in favor of flat decode model.
* Fixes a number of small issues with unknown opcodes.
* Added the final ALU parallel move ops.
2008-09-19 02:07:52 +00:00
Aaron Giles
7f819dbfef Cleanups and version bump. 2008-09-18 16:17:42 +00:00
Aaron Giles
5f597be8b1 From: Corrado Tomaselli [mailto:corrado.to@tiscali.it]
Sent: Wednesday, September 17, 2008 10:31 PM
To: submit@mamedev.org
Subject: Shadow Force clocks

Verified cpu clocks and corrected/verified OKI M6295 frequencies and pin

7 status. Updated Xtal.h file
2008-09-18 16:09:58 +00:00
Aaron Giles
db3e968a6d CPU-internal regions now have priority again. Fixed mario by
installing a handler in the SOUND_START function.

02249: All Sets in zn.c: Game Hangs 
02248: All sets in m58.c: No sound in game 
02241: kncljoe, kncljoea: Missing AY-3-8910A sound effects. 
02240: All Sets in namcos12.c: Game Freeze 
02239: stunrun: No OKI6295 sound.
2008-09-18 15:54:25 +00:00
Aaron Giles
eab7222f92 Fix compile error. 2008-09-18 15:35:44 +00:00
Aaron Giles
1eb3c2d964 Changed requirements for laserdisc CHDs to require a new chunk of
metadata with pre-decoded frame information. Modified chdman to
automatically produce this for CHDs that are of the appropriate
parameters. To fix up existing CHDs, use chdman -fixavdata on the
CHD.

Modified the laserdisc core to leverage the pre-decoded frame
metadata, which is now required. This improves seek times when
searching and allows the player-specific emulation access to the
VBI data as soon as it would really be available. Changed update
callback timing to fire just before the first line of VBI data
would be read; at that point, the frame selection is assumed to
be committed. 

Converted PR-8210 emulation over to using the actual MCU from the
laserdisc player. This MCU controls low-level functions such as
slider position and laser on/off, and receives decoded vertical
blanking data in order to make decisions. Removed old HLE behavior.
Note that the overlay text is displayed via the UI; this is
temporary and will be fixed shortly.

Converted Simutrek-hacked laserdisc emulation to using the actual
MCU from the game, which in turn hands off commands to the PR-8210
MCU. This is still not 100% but is pretty close at this point and
achieves the correct behaviors in most cases.

Fixed Cube Quest overlay scaling to cover the whole screen.

Changed laserdisc video parameters to position the screen area at
the bottom rather than the top, since this corresponds more closely
to standard line numbering.

Extended the vbiparse code to support pack/unpack, and to more
fully document all the meanings of the VBI codes.

Updated ldplayer to support slow/fast forward movement, frame/chapter
display, and separate controls for scanning/stepping.

Added new built-in variable "frame" to the debugger.

Fixed device-based ROM loading to support loading ROMs from the
game's ZIP as well.
2008-09-18 15:17:42 +00:00
Phil Bennett
6ff2372d8c Namco NA-2: Use real C70 BIOS. Removed sound and input simulation code. Changed the NA-1/2 MCU type to M37702. 2008-09-14 17:51:01 +00:00
smf-
75e68187dc preliminary firefox emulation. 2008-09-13 07:58:39 +00:00
Aaron Giles
fc453dc652 Fixed crash when hitting watchpoints on static handlers. 2008-09-13 06:36:29 +00:00
Aaron Giles
aa2b6bd29a Cleanups and version bump. 2008-09-11 16:25:46 +00:00
Aaron Giles
ae2d1ed21a Ok, I submit. Maximum tag length is 15. Be good. 2008-09-11 16:04:35 +00:00
Aaron Giles
3d1dbafcc2 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: Machine -> machine

This is a big patch adding running_machine* parameters and using 
"machine" where available.
2008-09-11 15:57:52 +00:00
Aaron Giles
0b3ae8f72d C352 cleanups
Remove an unused volume table dating from before the volume was
    (correctly) implemented as linear.
    
    Add a tab where appropriate.
2008-09-11 15:38:20 +00:00
Aaron Giles
9b94257dc8 In addition to this patch, I fixed up the Atari System 1 BIOS handling
and added an empty BIOS driver for it.

Here is a patch file with the following changes:

* Added new Atari System 1 Motherboard BIOS dump from a LSI motherboard
* Added a new ROM dump from a Marble Madness LSI Cartridge
* Changed the hardcoded MHz values in the Cave driver to the XTAL
equivalents
* Updated the Cave driver for the game Guwange with gals that need to be
dumped
* Updated the Jail Break driver with the dip locations
* Corrected the Jail Break driver sound chip from a SN76496 to a SN76489
* Corrected the Jail Break rom names
* Redumped the Jail Break VLM rom dump
* Corrected the Super Basketball Revision H rom dump
* Updated the Super Basketball driver with the dip locations
* Corrected the Super Basketball VLM XTAL
* Corrected the Super Basketball parent/child relationships by making
the
Revision H the parent
* Turned on save state support for the Super Basketball driver
* Updated the Sega System 1 driver with more board information on the
Choplifter bootleg and updated the placeholders for the pals that need
to be
dumped
* Updated the WWF Wrestlefest driver rom names
* Added save state support to the WWF Wrestlefest driver
2008-09-11 15:37:34 +00:00
Aaron Giles
b10a182054 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Even more reset/multisession cleanup

Hi mamedev,

These two patches try to reduce the amount of variable in .data, which
usually point to multisession/reset bugs or missing const qualifiers.
The first patch just adds const to a number of items, moving them from
.data to .rdata.  The second patch sets other items to zero (moving
them to .bss), adding reset/init code where appropriate.

~aa
2008-09-11 15:14:39 +00:00
Aaron Giles
746ab44148 Hello,
Found few things not right in 8080/8085 implementation.
 
1. ANA/ANI instruction, HF flag was not set right because error in calculation of it (missing brackets)
2. 8080 have NF flag always set (it is not used flag but bit is always set)
3. On unused ports/not connected memory values from status word were readed not 00 or FF, that is why I add it as a new internal register, it can also be buffered by some external hardware, so this could help other implementations too.
 
Regards,
Miodrag Milanovic
2008-09-11 15:10:41 +00:00
Aaron Giles
c48c851c8d 02206: cubeqst: Cubequest now missing narrator and music during attract mode 2008-09-11 15:07:38 +00:00
Aaron Giles
2398d51941 Fixed memory handling of internal banks. They should be LOWER priority than
the driver's memory maps.

Reverted recent changes to MCS-48 core that were very hacky and which crashed
many games. You can now properly override the internal memory map and do
your own banking.

Also fixed 02204: masao: Memory bank error.
2008-09-11 14:33:52 +00:00
Wilbert Pol
a004308575 Fix stupid compile error 2008-09-10 19:31:41 +00:00
Wilbert Pol
815cf5f076 MESS specific update. 2008-09-10 19:14:18 +00:00
Aaron Giles
a9b7f2d1a4 Further reduced the maximum tag length to 10 characters, since
there were only a few cases where longer tags were in use.
2008-09-10 06:29:24 +00:00
Aaron Giles
e647d9be1a Adjusted tags in drivers to meet conformity checks. Promoted checks to
full errors.
2008-09-10 06:24:46 +00:00
Aaron Giles
e5ec7b2687 Fixed memory leak due to recent input changes. 2008-09-10 06:02:22 +00:00
Aaron Giles
ec2639d221 OSD notice: you now need to report separate mouse up/mouse down events
for this new support to work.

Clickable input support. Mostly by Nathan. A few changes from the
proposal:

* as far as the layout is concerned, states are 0 (off) or 1 (on) and
   aren't impacted by the port's ACTIVE_HIGH or ACTIVE_LOW

* instead of checking each individual field for a hit, we look to see
   what is hit once per frame and then just check against that; this
   is faster, but does limit us to a single hit item

* added function input_field_by_tag_and_mask() to look up a particular
   input_field_config by tag and mask; this makes it possible to easily
   get the port default value or other information as necessary
2008-09-09 17:11:52 +00:00
Aaron Giles
9b4e46fad5 Changed DEVICE_START functions to return an error code. Currently this
is either DEVICE_START_OK or DEVICE_START_MISSING_DEPENDENCY. The latter
should be returned by a device if there is another device it depends on
which hasn't been started yet. Added new flag in the device interface to
indicate whether a device has been started.

Changed laserdisc interface to explicitly specify the screen and sound
devices it should route to. Drivers no longer have to manually call
laserdisc_vsync(). Instead, the laserdisc code connects up to the routed
screen device and works based on that screen's VBLANK timing. Removed
all existing calls to laserdisc_vsync().

Changed laserdisc behavior so that it completes the previous video read
and initiates the next read at the end of VBLANK instead of the beginning.
This gives player logic time during VBLANK to alter the slider position
prior to fetching the next frame.

Added new laserdisc callback for vsync begin and changed the update
callback to be called at the end of VBLANK. Also added functions to set
the slider speed, advance the slider, and directly control the video/
audio squelch. In addition, there is a new status function to get the
slider position in general terms.

Added parameter to the VBLANK callbacks supported in emu/video.c. Updated
all callers to provide a callback value.

Fixed bug that would cause watchpoints to trigger if you had a memory
window open to the watchpoint address.

Further updates to the PR-8210 ROM simulation. Still not quite there but
the system is much better understood now. Added layout to the PR-8210
which displays the state of the front-panel LEDs.
2008-09-09 16:10:11 +00:00
Nathan Woods
30dcca1594 Created a hook for populating MESS-specific main menu items 2008-09-08 03:34:15 +00:00
Aaron Giles
f5d90dac56 CPUs, sound chips, devices, and ROM-regions which are specified by devices
now have their tags auto-prefixed with the device's tag. This allows for
multiple instances to be present. For example, the PR-8210 laserdisc player
has a CPU with a tag of "pr8210". When it is included as a device by a
driver, the driver may tag the device "laserdisc". The resulting final
CPU tag name will be "laserdisc:pr8210". Also updated the debugger
expression engine to support names with embedded colons.

Added warnings to ensure that tags used for CPUs, sound chips, regions, and
devices follow some basic rules: they should be less than 12 characters long,
be all lower-case, and only contain letters, numbers, underscores, or dots
(no spaces). This is to ensure that they can be used properly in debugger
expressions and don't get too long or unwieldy to type (even 12 chars is a
bit long).
2008-09-08 03:05:09 +00:00
Aaron Giles
c0b1419a96 Added concept of rom sources to the rom loader. Updated auditing,
CLI utilities, validity checks, and ROM loading to use these new
functions so that device-specific ROMs are handled properly.
2008-09-06 22:17:37 +00:00
Aaron Giles
20bbc6726f Fixed potential crasher when the player-specific info was not found
for a laserdisc player.
2008-09-06 07:03:42 +00:00
Aaron Giles
a6c3d9b671 Moved reset to default behavior in the cheat menu to IPT_UI_CLEAR. 2008-09-06 06:59:35 +00:00
Aaron Giles
89730e4d28 Added built-in "Off" states to the cheats with parameters. This is
also the default state, obviating the need for a default value. Removed
the "default" attribute as a result. Switching from "Off" to another
state first executes the "on" script followed by the "change" script.
Switching to "Off" from another state executes the "off" script. While
not off, the "run" script is executed each frame.
2008-09-06 06:57:47 +00:00
Aaron Giles
8c9f7cbc76 Added new device interface selector: DEVINFO_PTR_ROM_REGION. This allows a
device to provide a set of ROM regions to be loaded along with the game
ROMs. It is expected that most regions defined for devices will use the
ROMREGION_LOADBYNAME flag to enable the ROMs to live in a central location.

Added new device interface selector: DEVINFO_PTR_MACHINE_CONFIG. This allows
a device to specify a partial machine driver which is appended to the end of
the machine driver for any game using that device. The intention for this is
to allow devices which have their own BIOS logic to specify CPUs and other
characteristics common to all systems using the device.

Added new ROMREGION flag: ROMREGION_LOADBYNAME, which means that if the ROMs
in that region are not found in the usual driver files, then the name of the
region will be used as a driver filename for loading.

Extended the ldcore interface structure to allow each player type to provide
its own ROM region and partial machine driver.

Moved preliminary PR-8210 emulation code from ldplayer.c to ldpr8210.c. It
is currently disabled behind the EMULATE_PR8210_ROM compile time flag.
2008-09-06 06:36:32 +00:00
Aaron Giles
4c8f0225a7 Added missing include. 2008-09-04 16:52:36 +00:00
Aaron Giles
a4bca37f81 Cleanups and version bump. 2008-09-04 15:31:56 +00:00
Aaron Giles
05915406d0 Missing include. 2008-09-04 15:11:10 +00:00
Aaron Giles
a50feca332 From: Barry Rodewald [mailto:bsr@xnet.co.nz]
Subject: Update to MC146818 RTC

Hi,
Here's a small patch to the MC146818 code, which gives a basic 
implementation of the "update ended" interrupt flag.

The code is based on the behaviour of the Aleste 520EX (Russian Amstrad 
CPC clone) BIOS, which periodically (about 7 or 8 times a second) checks

the flag to see if the date and time display on the BIOS setup screen 
needs to be updated.  Without the flag implemented, the date and time 
are static on the setup screen, or if the time hasn't been initialised 
(blank NVRAM) it is blank.

The BIOS function that does this basically checks bit 4 of register 
0x0c, and if 0, ends there, otherwise it will read register 0x0b, sets 
bit 7 of the result and writes it back to register 0x0b (presumably, 
this resets the interrupt flags).  Then it continues on to the display 
refresh function.
(Disassembly attached)
2008-09-04 09:07:03 +00:00
Aaron Giles
8831895bae From: Fabio Priuli [mailto:doge.fabio@gmail.com]
Subject: a few patches

Hi,

enclosed please find a few patches that finally conclude my 
input_port cleanups. I will still probably change some bit 
here and there, but there will be no more massive changes 
which could collide with current developments. 

Notice that, after applying these patches, indexed input reads 
remain only present in CPU interfaces (e.g. all the yamaha 
interfaces when the sound cpu is used to read inputs) and no 
more 16bit/32bit indexed read are present at all in MAME or 
MESS source. Therefore, you may consider the removal of 
input_port_N_word_r & input_port_N_dword_r, if you think you 
don't need them anymore.

More in detail:

* patch01.diff & patch02.diff: conclude the cleanup for 
drivers W -> Z

* primrage.diff: changes the start buttons with input buttons 
in primrage, as per the test mode (no start button is reported) 
and the control panel (see 
http://www.mameworld.info/ubbthreads/showthreaded.php?Cat=&Number=161107 )

* drivedge.diff: makes drivedge ports fully 32bit and removes 
the protection bit (which seems not to be used in this game, or 
at least not in the port where it was tested since at least MAME 
0.100)

* duplicate.diff: introduces a PORT_CUSTOM which returns a tagged 
input (like a input_port_read). this could be useful for those 
games which require to read the same 8bit (resp. 16bit) input in 
both the upper and lower half of a 16bit (resp. 32bit) port. you 
can see its use for this purpose in the modified drivers (fuukifg3, 
dreamwld, cojag etc.)

Regards,

     Fabio Priuli
2008-09-04 09:02:10 +00:00
Nicola Salmoria
7c90a0cd38 fixed emulation of the "SNK Wave" custom sound used by Marvin's Maze and Vanguard II and made it into a proper sound core
fixed palette decoding of early SNK games (from marvins to athena + fitegolf). The least significan bits were assigned incorrectly.
merged marvins.c into snk.c, with all resulting fixes (removed hacks, correct shadows, scroll offsets etc)
2008-09-04 08:57:02 +00:00
Aaron Giles
cffe201094 From Oliver Stoeneberg [oliverst@online.de]
This contains three different patches:

20080829.patch
Introducing the running_machine* parameter in a few more places. Next 
step would be to make the execute_* function aware of it, if that's 
OK. Also used the machine parameter in memory.c were it's available.

20080829_1.patch
The already discussed and probably being rejected removal of 
dreprecat.h from debugger.h. I think this is a low-risk patch (we had 
worse cleanups) and it lowers the risk of new code using deprecated 
function beign introduced in MAME/MESS, because there is no invisible 
inclusion of deprecat.h anymore (I think one driver - kofball.c - got 
it with deprecated code).

20080829_2.patch
The last Machine -> machine conversion I had sitting in my local 
tree. I know the proper way is to turn them into devices, but I still 
haven't looked into that.
2008-09-04 08:55:01 +00:00
Aaron Giles
c1f0164f5d Split core laserdisc functionality into separate file ldcore.c.
Each player now gets its own source file, along with new hooks
which enable more precise control over the behavior. Updated the
PR-8210 and LD-V1000 implementations to the new spec. Other 
players will come online shortly.

Changed scan behavior so that it requires a constant stream of
signals to continue scanning. Updated ldplayer accordingly.
2008-09-04 08:48:57 +00:00
Aaron Giles
95aec1fffb Changed refreshspeed target to 0.25Hz below rate provided, in order to guarantee that
inexact timings do not lead to sound stuttering.
2008-09-03 17:44:08 +00:00
Curt Coder
960126c596 [COP410] Enabled internal program map. 2008-09-01 19:37:46 +00:00
Aaron Giles
2c888574b1 Changed all MCS-48 chips to have a 12-bit address space, regardless
of internal ROM size.
2008-09-01 16:50:45 +00:00
smf-
2bccf6a3b0 commented out debug code that mingw didn't like because it was wrong. 2008-09-01 13:12:26 +00:00
smf-
b258d93893 converted timekeeper to a device, all default contents are loaded from disk. slapshot & opwolf3 read/write memory map have been merged. 2008-09-01 12:41:32 +00:00
Jonathan Gevaryahu
bc1c78a5b9 update TMS5100 LPC tables based on mathematical analysis of 1st and 2nd derivatives of the values and comparison to the best quality patent image, which nearly always showed which values were in error. Some off-by-one issues may remain, but it is now nearly perfect. Further perfection will require PROMOUT dumping, which is planned. 2008-09-01 06:53:39 +00:00
R. Belmont
2db405979c [ARM7] Remove unnecessary hooks so MRC and MCR disassemble properly. 2008-08-31 20:30:29 +00:00
R. Belmont
ea2944f2a4 [M377xx] - Fixed: 8-bit I/O port reads no longer cause bogus reads of neighboring ports. 2008-08-31 20:29:08 +00:00
Couriersud
287bc79dfc mcs48.c: Use banking to handle ea line.
* Adds MCS48_INTERNAL_ROMBANK define to header
* Drivers which need to control the ea line have to initialize banking for internal/external rom

This is not yet optimal but works as expected with existing drivers and modified mario.c
2008-08-30 17:59:06 +00:00
Roberto Fresca
9af87ebaf3 New working driver for older InterFlip gambling games. [Grull Osgo, Roberto Fresca] 2008-08-30 17:08:26 +00:00
Couriersud
7d6a80c480 mcs48: EA line / MB8884
* MB8884 is a I8035 ==> 12 addr, no internal rom map
* EA line high: external access - this is "default"

The whole EA implementation is as Aaron named it, cheeky. EA=1 external rom access, EA=0 internal rom access.
But all variants are treated the same, i.e. for i8035, MB8884, I8039, the external rom is used in the same
way as the internal.
2008-08-30 00:36:56 +00:00
Couriersud
299fc7ec1a mcs48.c: Write p1 and p2 on reset
These ports are actually ports which sink current on logical 0. With a logical 1, they are in high impedance mode and may be read. The high impedance is treated as logical 1 by TTL gates connected to them.
2008-08-29 22:52:26 +00:00
Derrick Renaud
bd39d9e8c9 Started removing extraneous enable lines from the discrete modules. Most modules are always enabled anyways. 2008-08-29 20:38:31 +00:00
Derrick Renaud
d900cdd023 Optimized DISCRETE_555_CC
Fixed bug in my recent DISCRETE_MIXER update.

Note: the DISCRETE_MIXER bug caused most of the speed increase of its optimization and caused some games to crash.  Donkey Kong is now at 14% faster on my machine then when I started.  Better then nothing.
2008-08-29 06:22:12 +00:00
Aaron Giles
c3f7d110df 02174: dkongjr and clones + mario and clones + pestplce: Music speed regression 2008-08-29 06:01:09 +00:00
Derrick Renaud
70d2f4ebff Optimized DISCRETE_555_ASTABLE_CV and DISCRETE_MIXER.
For those keeping score dkong was at 268% on my computer before I started optimizing.  It now runs at 342%.  The 555 and mixer changes also speed up just about every current discrete game.
2008-08-29 01:10:24 +00:00
Derrick Renaud
ae10d3987a Optimized DISCRETE_RCINTEGRATE and DISCRETE_555_ASTABLE. 2008-08-28 20:58:05 +00:00
Derrick Renaud
e5fbac92cf Optimized DISCRETE_RCDISC_MODULATED.
Added X_TALs to circus.

Donkey Kong now runs 10% quicker on my machine.
2008-08-28 17:40:49 +00:00
Aaron Giles
a2caa558e2 Cleanups and version bump. 2008-08-28 15:26:11 +00:00
Aaron Giles
f8f9678387 From: Atari Ace [mailto:atari_ace@verizon.net]
Sent: Monday, August 25, 2008 8:16 AM
Subject: [patch] Remove useless backslashes

Hi mamedev,

I've been using pmd 4.2.2 to analyze the MAME codebase for duplicate
code, and it's C parser complains about useless backslashes and
dangling defines in #if...#endif sections.  Here's a patch that fixes
this, and additionally fixes one real bug, a string in djmain.c was
malformed, it's curious it compiled.

~aa
2008-08-28 08:50:34 +00:00
Aaron Giles
951ab24aaa From: Christophe Jaillet [mailto:christophe.jaillet@wanadoo.fr]
Subject: Profiler related #2 (v2)
Hi, this a revised version of a patch I sent yesterday.

This one is much more cleaner, and the speed improvement is now significant
enough to come out of the profiling noise.
More over, this one compiles correctly... ;-)

Best regards,
Christophe Jaillet
2008-08-28 08:41:56 +00:00
Aaron Giles
c71fbfc625 Changed slider controls into a menu. For now, removed the old direct access
mechanism; instead, you must access the sliders via the main menu. While in
the menu, you can use the ~ key to turn off the menu display and leave only
the bar display, in order to see more of the screen.
2008-08-28 08:25:06 +00:00
R. Belmont
dae4b631d7 SH4, Naomi, and Hikaru updates [Samuele Zannoli]
- Fixed SH-4 core to support multiple SH-4s
- Fixed LDCSR instruction
- Fixed SH-4 I/O ports
- Skeleton Hikaru driver with memory maps and both SH-4s
- Fixed JVS/Maple translation so Naomi 2 BIOS runs
2008-08-27 02:22:58 +00:00
Aaron Giles
cd299d9f8e Significant cleanup/rewrite of the MCS-48 CPU core:
* removed redundant and unused definitions from header file
 * renamed constants and functions to be MCS48* prefixed
 * re-verified all opcode behaviors and timing
 * changed illegal opcodes to count 1 cycle to avoid infinite loops
 * changed EA behavior so that it is a push from the driver instead of a pull on each opcode fetch 
    (this may change further in the future). 
 * reimplemented IRQ generation and timer behavior according to documentation
 * updated all drivers accordingly
 * fixed several uses of PULSE_LINE, which no longer works
2008-08-26 22:58:45 +00:00
Nicola Salmoria
4ecbf842e9 Added new function tilemap_set_pen_data_offset().
While this isn't 'free' as tilemap_set_palette_offset() is (when the offset changes, the pixmap cache needs to be invalidated), it helps removing some redundant code from drivers.

Updated snk.c and snk68.c to take advantage of the new function.
2008-08-26 18:40:12 +00:00
Aaron Giles
7f8e52388e 02147: Annoying behaviour of highlighted entries in minimal UI 2008-08-26 04:43:47 +00:00
Aaron Giles
ba60161f97 i8039 -> mcs48 2008-08-26 04:38:50 +00:00
Couriersud
96d622b677 rendersw.c: Added more comments
* fix clamping bug introduced by my last update
2008-08-25 20:10:08 +00:00
Roberto Zandona
58be08f089 fix TSY instruction in M4510 cpu (used in MESS) 2008-08-25 19:32:46 +00:00
Aaron Giles
3d339e51f7 Changed i8039 core to use the data address space for internal RAM.
Register access is still performed using direct memory accesses,
but the pointers are fetched through the memory system. Now you can
see i8039 RAM in the debugger. Added internal memory maps of the
appropriate size so that drivers don't need to declare this RAM.

Added a number of variants from the MCS-48 family as it was not
clear which variants had what capabilities. All documented variants
now have internal memory maps for internal ROM and RAM. Removed
memory maps from drivers using embedded ROM/EPROM/OTPROM since
they are defined by the core now.

Added some initial logic to boot and run the PR-8210 ROM (i8049)
in ldplayer.c. Currently this is disabled behind a compile-time
switch. Once this is working, the plan is to incorporate this into
the existing PR-8210 emulation, but we're not there yet.
2008-08-25 15:32:14 +00:00
Aaron Giles
4db67471be MSVC fixes. MSVC cannot handle offsetof(struct, member[index]); once an
array is involved, it seems to think it is not a constant expression.

Added MDRV_DEVICE_CONFIG_DATA32_EXPLICIT() macro which takes an explicit
size and offset. Changed MDRV_DEVICE_CONFIG_DATA32() to be built off of
this macro. Added MDRV_DEVICE_CONFIG_DATA32_ARRAY() and
MDRV_DEVICE_CONFIG_DATA32_ARRAY_MEMBER() which do explicit computations
of the offset to work around MSVC's problems.

Replicated these changes for DATA64 and DATAPTR macros. Updated latch8.h
to use the new macros.
2008-08-25 15:13:48 +00:00
smf-
8fc5baaaab Improved dip switch emulation in zn.c, ram hacks to get games booting are no longer required.
Added gun emulation for judge dredd.
Fixed judge dredd ide emulation when building with visual studio.
Mapped primal rage 2 inputs
Mapped player 3 & 4 inputs for 1 on 1 government, these are now the default with the 6 button inputs only mapped for games that need them.
Converted AT28C16 to a device.
Added preliminary support for devices to load/save nvram.

New games added or promoted from NOT_WORKING status

Super Football Champ (Ver 2.5O)
Super Football Champ (Ver 2.4J)
Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)
Fighters' Impact (Ver 2.02O)
Judge Dredd (Rev C Dec. 17 1997)
Judge Dredd (Rev B Nov. 26 1997)
2008-08-25 09:52:26 +00:00
Couriersud
5e6fdaec16 Slight optimization of ycc_to_rgb 2008-08-24 23:41:46 +00:00
Couriersud
4d444b5b4a latch8: Renamed MDRV_LATCH8_MASK and added MDRV_LATCH8_INVERT
* renamed MDRV_LATCH8_MASK to MDRV_LATCH8_MASKOUT to clarify meaning
* Added MDRV_LATCH8_NOSYNC to specify which lines do not reed a cpu sync
* Updated drivers

The MDRV_LATCH8_NOSYNC is not used in dkong.c. All latches need synchronization
because at least one line does need a cpu synchronization.
2008-08-24 17:39:06 +00:00
Roberto Zandona
65a96e4f7a some fix for m4510 core 2008-08-24 11:55:22 +00:00
Roberto Zandona
bfc0c6a5b2 some fix for m4510 core:
- banking in read and write operations
- jsr and jsrx instruction
2008-08-23 10:00:59 +00:00
Couriersud
d8d031e8d3 Adds new generic latch device
8 bit latch interface and emulation
    
    Generic emulation of 74LS174/175, 74LS259 and other latches.
    Apart from providing synched latch operation, these
    latches can be configured to read their input bitwise from other
    devices as well and individual bits can be connected to
    discrete nodes.
    
    Please see audio/dkong.c for examples.
2008-08-22 21:25:49 +00:00
Couriersud
9ff05871dc discrete.c: Added save state for node->output
* Ensures that input nodes survive save states
2008-08-22 11:05:21 +00:00
Derrick Renaud
8a8e197eae added Discrete Sound for Starship 1. I still need to properly emulate the MC3340. 2008-08-22 03:51:26 +00:00
Aaron Giles
7521888dd7 Added PR-8210 support to the ldplayer. Fixed step forward command on the PR-8210.
02136: cubeqst: from minimal UI cubeqst requires the optional CHD 
02127: xymg: The game name should be Xing Yun Man Guan and "Pin Yin:"should be omitted 
02138: flamegun: Debugger/Cheat System upper case cpu tag of MAIN doesn't work 
02139: In audio/system16.c, there is a reference to REGION_SOUND1 
02133: chindrah: The title of Zhong Guo Long?(Hong Kong,V011H) is Dong Fang Zhi Zhu(Hong Kong, V011H) 
02126: corrupt CHDs are reported as missing
2008-08-22 02:43:32 +00:00
Nathan Woods
ef062182ce Fixed problem that would cause the "Return To Prior Menu" menu item to not stick
if one is calling ui_menu_reset() with UI_MENU_RESET_REMEMBER_POSITION, and that
menu item is selected
2008-08-21 11:26:37 +00:00
Couriersud
772082e0b8 devintrf.c: add devtag_get_device(machine, type, tag) to retrieve the device_config for (type, tag)
* This is needed, if you need to read a device or device status outside a AM_DEVREAD context.
2008-08-20 21:15:01 +00:00
Nicola Salmoria
12269d8aa7 added 8303 ROM to the games using it and updated MCU simulation to match the new findings 2008-08-20 12:00:14 +00:00
Nathan Woods
57d3cb91e3 MESS-specific fixes 2008-08-20 11:31:21 +00:00
Aaron Giles
0941eb004e Fix m68k irq line support.
Before this patch a:
      cpunum_set_input_line(5, ASSERT_LINE);
      cpunum_set_input_line(3, ASSERT_LINE);
      cpunum_set_input_line(3, CLEAR_LINE);
    
    loses the state of line 5.  This patch fixes it by adding an explicit
    but optional "virtual irq line" support to the 68k interface.

    Fix m68k interrupt handling by some drivers.
    
    Clearing the NMI line to clear all the IRQ lines worked, but it just
    doesn't make sense.  Now that the irq lines are really independant,
    the handling can be simplified.
2008-08-20 02:11:14 +00:00
Derrick Renaud
384422ee09 Discrete cleanups and fixed discrete logging. 2008-08-20 01:02:57 +00:00
Wilbert Pol
38a811b727 Some MESS specific fixes. 2008-08-19 19:18:43 +00:00
Nathan Woods
15969c0428 Readded generic calls to install memory handlers that were in long before
0.126u5 - these are useful on the MESS side for things like the PC driver
2008-08-19 11:13:43 +00:00
Aaron Giles
0523e9feb7 Cleanups and version bump. 2008-08-19 07:31:55 +00:00
Aaron Giles
8b8585328c From: Christophe Jaillet [mailto:christophe.jaillet@wanadoo.fr]
Subject: Profiler related
Hi,

here is a smalll patch that :
   - remove include "profiler.h" to files that do not use profiling function
        * emu/machine/laserdsc.c
        * osd/windows/video.c

    - use PROFILER_USER2 instead of PROFILER_USER1 in mame/video/tx1.c
      USER1 was used twice, USER3 once. I guess that USER1 should be used
only once and USER2 used in the 2nd place

   - remove unused MACRO in emu/memory.c

Best regards,
Christophe JAILLET
2008-08-19 06:13:26 +00:00
Aaron Giles
13a3d3fb89 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: Various cleanups

A couple of minor cleanups sitting on my disk for a while:
- removed obsolete ENABLE_DEBUGGER occurance
- removed more unprintable characters in SH-2 disassembler
- memset() usage cleanups
- removed duplicated TMS5110 entry in sound.mak
- use machine in uigfx.c where it's already available
2008-08-19 06:10:43 +00:00
Aaron Giles
de5cd6e5a8 Added cheat functions frombcd() and tobcd() to convert numbers to/from
BCD format. Changed "Activate" to "Set" in the menus.
2008-08-19 06:08:24 +00:00
Aaron Giles
719eca9c82 Added validity check to ensure that ports referenced by a condition
actually exist. Fixed a case where this was violated.
2008-08-19 05:12:45 +00:00
Aaron Giles
6c21097922 Added validity check to ensure that AM_READ_PORT() macros reference
valid ports. Fixed several cases where the check failed.
2008-08-19 04:33:19 +00:00
R. Belmont
7d762634aa Reduce YM2612 DAC level relative to FM. This better matches real hardware. 2008-08-19 02:21:37 +00:00
Aaron Giles
2e422e5b72 Final SHA1 for Cube Quest. 2008-08-19 02:13:32 +00:00
smf-
e334a63782 reverted unit mask changes and removed the unused & unsafe memory_install functions. 2008-08-18 12:08:08 +00:00
Roberto Zandona
3d33c20559 modified 68681 to return 0xff if input port is NULL 2008-08-18 06:31:15 +00:00
Aaron Giles
284b5a0d95 Added new generic laserdisc VIDEO_UPDATE handler to the laserdisc code.
This handler works for both disc-only games and those with overlays. 
For disc-only games, the base macro is sufficient. For games with 
overlays, an additional set of configuration macros are provided:

   MDRV_LASERDISC_OVERLAY - specifies update function, width, height,
      and bitmap format of the overlay
   MDRV_LASERDISC_OVERLAY_CLIP - specifies the visible area of the
      overlay bitmap
   MDRV_LASERDISC_OVERLAY_POSITION - specifies default x,y position
   MDRV_LASERDISC_OVERLAY_SCALE - specifies default x,y scale factors

The update function provided to MDRV_LASERDISC_OVERLAY is identical to
a normal VIDEO_UPDATE callback, so a standard one can be used. All
existing laserdisc drivers have been updated to support this new
rendering mechanism, removing much duplicated code.

Added the ability to configure the overlay position and scale 
parameters at runtime. Added OSD menus to control them. Added logic
to save/restore the data in the game's configuration file.

Added new macros MDRV_LASERDISC_SCREEN_ADD_NTSC and _PAL, which
defines a standard screen with the correct video timing characteristics
and update function for laserdiscs. Updated all drivers to use these
macros instead of defining their own screens.

Added DISK_REGIONS to all laserdisc drivers.

Added DISK_IMAGE_READONLY_OPTIONAL to support games (like Cube Quest)
where the disk is non-essential to the game's operation.

Fixed bug in identifying the custom sound driver for the laserdisc.

Updated ldverify to identify blank regions of the disc for post-
processing.

Fixed rendering 16bpp with alpha using bilinear filters (fixes
screenshots of laserdisc games with overlays).

Included support for parsing .gdi files in chdman. [ElSemi]

Added new driver for Cube Quest. This includes CPU cores for the three
bitslice processors, as well as laserdisc support for the hacked
laserdisc that was used to drive the games. 
[Philip Bennett, Joe Magiera, Warren Ondras]

Note that the SHA1/MD5 for the laserdisc will likely undergo at least
one more change before being finalized.
2008-08-18 04:31:08 +00:00
Roberto Zandona
0a0a3ef383 fixed INT_ACK initialization 2008-08-17 17:24:55 +00:00
Wilbert Pol
ab1030258c Some MESS specific changes 2008-08-17 15:02:15 +00:00
smf-
3297ac117d identified compatible timekeeper used by midway zeus ii.
removed all the timekeeper memory handlers, except for 8 bit & changed the drivers to use the conversion built into the memory system.
2008-08-17 11:47:26 +00:00
smf-
5c5337424a Added unit mask to all memory installs that override the bus width. You couldn't install a handler with a different width before, as it complained about the lack of the unit mask. So I've assumed it's safe for all current calls to be changed to the one that picks up the cpu bus width. 2008-08-17 10:15:22 +00:00
R. Belmont
f118954dc5 Split out SH-4 non-interpreter-specific stuff to sh4comn.c. 2008-08-17 04:44:02 +00:00
R. Belmont
a6210713da SH-2 DRC updates:
- Moved IRQ handling front-end into recompiled code
- Added TSTM/ANDM/XORM instructions
- Added SH-1 CPU support, including lower precision on MAC.W and locking out SH-2 only instructions
2008-08-16 16:50:41 +00:00
R. Belmont
9c671d6ecf 64-bit GCC fix. 2008-08-16 16:47:03 +00:00
R. Belmont
d8a88c5084 Added save states to 65816 CPU. 2008-08-16 16:46:24 +00:00
smf-
bd3ba85c50 changed at28c16 memory handlers to 8 bits and perform the conversion in the memory mapping. 2008-08-15 20:11:15 +00:00
Roberto Zandona
9c68b61e38 implemented read operation of MRA and MRB in 68681 device (this command is necessary for adp games) 2008-08-14 19:12:47 +00:00
R. Belmont
4303262b04 Another 64-bit GCC fix. 2008-08-14 13:14:46 +00:00
R. Belmont
06c0d541ed Another one... 2008-08-14 13:13:40 +00:00
R. Belmont
841c0ce03a Another 64-bit GCC fix. 2008-08-14 13:10:34 +00:00
Aaron Giles
224eb1f58b Cleanups and version bump. 2008-08-14 08:05:35 +00:00
Aaron Giles
2e7d262931 02113: xymg: xymg title mispelled
02110: All sets in cps3.c: video from a DV cam proves the refresh rate of CPS3 in MAME is wrong 
02095: chqflag, chqflagj, -listxml: memory leaks
2008-08-14 07:36:27 +00:00
Aaron Giles
2ec0fea9c2 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Collapse timer callbacks

Hi mamedev,

The following patch collapses timer callbacks in some cases to avoid
duplicating code.  In the case of crystal.c, it also refactors two DMA
handlers and shuffles the init/reset code around a bit.  I noticed
while doing this that h8_itu_read8 is missing cases 0x96,0x97 which is
almost certainly a bug, but I left it alone.

~aa
2008-08-14 06:27:52 +00:00
Aaron Giles
0921968934 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Fix i386 bsr implementation

Hi mamedev,

The i386 cpu emulator will return the wrong result for bsr when the
highest bit is set (0 instead of 15 or 31).  The attached patch fixes
this.

~aa
2008-08-14 06:21:31 +00:00
Aaron Giles
51c1079953 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Fix 1802 cybrcomm, raveracw, raveracj, raveraja,
ridgerac, ridgerab, ridgeraj, acedrvrw, victlapw: No sound in games
after reloading via the MAME UI

Hi mamedev,

The problem with namcos22 games losing sound when running multisession
is actually an m37710 cpu initialization bug.  The attached patch
fixes it, and also collapses all the timer callbacks together as an
unrelated code cleanup.

Note: namcos22 has a lot of uninitialized state, so I wouldn't be
surprised if there are other multisession issues.
2008-08-14 06:13:56 +00:00
Aaron Giles
15893eeed0 Fixed includes of rescap.h. 2008-08-14 04:51:04 +00:00
Aaron Giles
a0574bb473 Moved several include files from mame/ to emu/, as they were
included by generic components in emu/ and thus should have no
dependencies on the MAME code.

Added new target ldplayer, which is based on MAME but serves as
a standalone laserdisc player for CHDs. Right now only the
Pioneer LD-V1000 is connected, and limited commands are available.
Each player type is a driver, so you specify the player type on
the command-line. The driver then opens the first CHD it finds
in your ROM path and uses that as the laserdisc. The intention is
that you specify the -rompath each time on the command-line, so
a typical approach might be:

   ldplayer ldv1000 -rompath j:\mach3

where it will pick up the mach3.chd lurking in your j:\mach3
folder. Several basic commands are supported:

   Space = play/pause
   Alt   = toggle frame display
   Left  = scan forward (when playing) or step forward (when paused)
   Right = scan backward (when playing) or step backward (when paused)
   0-9   = enter numbers for search
   Enter = execute search to frame
2008-08-13 15:09:08 +00:00
Aaron Giles
480df37d02 Added new flag to menu items: MENU_FLAG_DISABLE, which means the
item will be visible but not selectable.

Fixed bug that prevented the cheat engine from working when the
debugger was disabled.

Modified xmlfile.c to accept integer values in decimal or hex. The
default is decimal. Numbers may be prefixed by '#' for decimal
values, or by '$' or '0x' to indicate hexadecimal values. Also
added function xml_get_attribute_int_format() to return the format
of the attribute, so that it can be later replicated.

Updated cheat parser to preserve the format of attribute values
used for cheat parameters and items.

Added support for information-only cheat items, which will be
displayed in the menu but which are not selectable and have no
action associated with them. Empty information-only items are
automatically converted to menu separators.
2008-08-13 04:55:42 +00:00
R. Belmont
04239409b0 SH2DRC: Allow delay slot of a BSR to trash the PR if it wants. (Manis 2059) 2008-08-13 03:58:02 +00:00
Derrick Renaud
1daf41e218 Final CPU header updates. Mostly just re-naming the re-inclusions.
The structures/names were getting too complex for my macros to handle.  They would require hand editing and my computer is too slow to keep re-compiling.

Passes a clean compile.
2008-08-13 02:48:52 +00:00
davidhay
216a0b5c3b fix broken compile. 2008-08-12 22:28:40 +00:00
Aaron Giles
111a34fea5 Added video level detection and reporting to ldverify.
Removed channels parameter from avcomp decode configuration.

Fixed incorrect test in winwork that led to spinning instead
of using the nicely allocated events we had on hand.

Forced a sound synchronization on each vsync in the laserdisc
playback. This prevents overwriting the tail end of the
buffer which was fouling up the MACH 3 audio decoding.

Removed obsolete size check for uncompressable audio data.
2008-08-12 17:37:53 +00:00
Nicola Salmoria
82494e9da3 updated Alpha 8302 MCU simulation to match newly dumped internal ROM.
Added the ROM to Champion Baseball 2.
2008-08-12 14:50:34 +00:00
Aaron Giles
a85c4c754d Rejiggered huffman.c to support multiple interleaving
streams and a delta-RLE pre-encoding. Added optimized
case for the Y/Cb/Y/Cr video encoding case. Cleaned up
the code.

Updated avcomp.c to use the new huffman.c functions.
Reworked configuration options to allow for both input
and output of naturally aligned data streams. Updated
chdman and laserdsc to use the new interfaces. New
compression gives an additional 3-7% over previous
attempt and compresses the dummy CHDs down significantly.
2008-08-12 09:24:22 +00:00
Derrick Renaud
d5d5d9449b structure, lower-casing functions and re-inclusion updates of the src\emu\cpu headers J - M. 2008-08-12 03:40:09 +00:00
Derrick Renaud
3c2b00d332 structure, lower-casing functions and re-inclusion updates of the src\emu\cpu headers up to I.
It's mostly just re-inclusion renaming, but there are few other re-nameings.
2008-08-11 03:06:59 +00:00
Derrick Renaud
3710253aa7 This (mostly - see below) completes the structure, lower-casing functions and re-inclusion updates of the src\sound\emu headers.
I did not do much to the following files because I did not know the best way to name them.
aicadsp.h
sid.h
sidenvel.h
sidvoice.h
ymdeltat.h

I did not update structures only used in the src\emu\sound\*.c files.  They are only used locally in the file so they were not worth the effort.
2008-08-11 00:32:08 +00:00
R. Belmont
3fd8c0941b More FM OPN fixes [Eke, R. Belmont]
- Pass chip type around and restore Jarek's original behavior for YM2203/YM2610
- Always recalculate attack rate in set_ar_ksr, fixes Megadrive/Genesis "Batman & Robin"
2008-08-10 04:00:31 +00:00
Derrick Renaud
4f0cddd1a5 Updated src\emu\sound headers from K-S, so they use latest naming/structure and re-inclusion support. Also lowercased the handler names.
What a PITA.  :)  I'll have to go back and do A-J to lower case the handlers to match the new structure names I already did.

Sorry Mess and other port developers, but the code should match what is stated on the official WIKI.  But don't worry, I don't plan on updating anything but the sound cores.
2008-08-10 02:23:43 +00:00
Derrick Renaud
629498ef38 more sound core structure/renaming updates.
You may have to do a clean compile, or delete the affected driver object files.

struct C140interface       to c140_interface
struct cem3394_interface   to cem3394_interface
struct ES5503interface     to es5503_interface
struct ES5505interface     to es5505_interface
struct ES5506interface     to es5506_interface
struct ssg_callbacks       to ssg_callbacks
struct gaelcosnd_interface to gaelcosnd_interface
struct ics2115_interface   to ics2115_interface

I'll stop until my posted question about chip names and upper case is answered.
2008-08-09 05:28:19 +00:00
Derrick Renaud
e6cf588405 Some more structure/naming updates of sound cores.
FWIW, I first check for variables named name_interface and rename them as name_cofig, so they don't conflict with the new interface names.

struct YMF262interface  to ymf262_interface
struct YM2151interface  to ym2151_interface
struct YM2203interface  to ym2203_interface
struct YM2608interface  to ym2608_interface
struct YM2610interface  to ym2610_interface
struct YM2612interface  to ym2612_interface
struct YM3812interface  to ym3812_interface
struct Y8950interface   to y8950_interface
struct YM3526interface  to ym3526_interface
struct TMS5110interface to tms5110_interface
struct TMS5220interface to tms5220_interface
struct AICAinterface    to aica_interface
2008-08-09 00:55:07 +00:00
Derrick Renaud
7ea948666a lower cased sn76477_interface and ay8910_interface 2008-08-08 16:32:55 +00:00
Derrick Renaud
cc94c8207d Updated structure and naming conventions of the following sound interfaces.
struct CustomSound_interface to custom_sound_interface
struct Samplesinterface to samples_interface
struct SN76477interface to SN76477_interface
struct AY8910interface to AY8910_interface
2008-08-08 01:50:00 +00:00
R. Belmont
eec9dab98d Fix GCC warning. 2008-08-07 16:51:31 +00:00
Aaron Giles
b40a4f5531 Cleanups and version bump. 2008-08-07 16:02:05 +00:00
Aaron Giles
9df01a2896 Added expression validation callback to verify names for CPUs and
memory regions. Extended error codes to report incorrect memory 
spaces, memory names, or memory sizes. Added verification callback
to the debugger to validate CPU and memory region names, as well
as verifying that a requested address space exists for a given
CPU.

Added support for oneshot cheats (those with only an "on" script).
They are activated via UI_SELECT in the cheat menu, and pop up a
message when activated. Also added a "Reset All" item in the cheat
menu to reset all cheats back to their default state, and added
support for UI_SELECT on a non-oneshot cheat so that it resets that
cheat to its default value.

Restored previous behavior that allowed popmessage() messages to
overlay menus and other UI.
2008-08-07 15:53:58 +00:00
Aaron Giles
ce00409cce Added word alternates for operators in expressions:
+   plus
  -   minus
  *   times or mul
  /   div
  %   mod
  !   not
  ~   bnot
  &&  and
  &   band
  ||  or
  |   bor
  ^   bxor
  lt  <
  le  <=
  gt  >
  ge  >=
  eq  ==
  ne  !=

Changed cheat escaping to automatically escape && & < and <=
to and band lt and le.
2008-08-07 06:48:04 +00:00
Couriersud
c81b2cb24d Added module profiling to discrete sound core
* added DISCRETE_PROFILING macro to discrete.h
* Upon discrete_stop, the worst performing modules will be listed
2008-08-06 19:31:39 +00:00
Aaron Giles
d3c7e67622 This also includes a fix for the bug reported at the bottom.
From: Fabio Priuli [mailto:doge.fabio@gmail.com] 
Subject: to simplify cischeat inputs

Hi,

the enclosed diff has a twofold effect on cischeat.c:

on one side: it adds diplocations to bigrun, scudhamm, 
cischeat & f1gpstar

on the other side: it removes the current hacky handling of 
f1gpstar coinage dips (check video/cischeat.c to see what I 
mean with hacky!) to use conditional ports instead. BUT in 
order to do this, I had to add more possible values for the 
PORTCOND in iptport.c. The problem is that f1gpstar has a set 
of coinage settings when you set the region to JPN or USA and 
another one when you set the region to EUR or FRA. To implement 
this I added the following self-explanatory new PORTCOND: 
ISLARGER (>), ISNOTLARGER (<=), ISSMALLER (<), ISNOTSMALLER (<=). 
Only two were really needed to implement f1gpstar dips, but 
the other two seemed costless to me while offering even more 
flexibility to the PORT_CONDITION macro.


Also notice that the handling of conditional ports in 'TAB>Dip 
Switches' menu doesn't work well (in the current source, not 
affected by my patch) with contracted expressions like 
PORT_DIPUNKNOWN_DIPLOC: the wrong items remain listed in the 
UI menu even when you change the condition! If you leave the 
DEF_STR( Unknown ) with ON/OFF cases, everything is displayed 
correctly in the menu. However, I was not able to track down 
what part of code is responsible for this bug.

Regards,
    Fabio Priuli
2008-08-06 14:35:45 +00:00
Aaron Giles
6cad3b3231 Added support for DEL as well as BS for backspacing in the
game select menu. Also limited input to ASCII characters.
2008-08-06 14:04:16 +00:00
Aaron Giles
5dcdb1d1c3 NOTE: with this change, I have also removed PORT_START and renamed
PORT_START_TAG to PORT_START.


From: Fabio Priuli [mailto:doge.fabio@gmail.com] 
Subject: let's say goodbye to untagged input ports ;)

Hi,

enclosed please find a few patches against 126u3 source

* port01.diff -> port09.diff : these patches continues the 
cleanup of inputs in drivers starting with C (the remaining ones), 
D and E. No ambiguous situations this time, so I guess there should 
be no problem with the changes. Improvements include conditional dips 
added to dynduke and diplocations for chinagat, chqflag, circus, 
citycon, cloak, contra and dynduke

* tag01.diff -> tag09.diff : these patches add tag to EVERY input port 
in drivers starting with F->Z. Notice that only tags are added, no 
AM_READ_PORT, nor PORT_INCLUDE (and I saw a lot of drivers would need 
it ;) ), nor other cleanups contained in the patches above. I'll keep 
cleaning input next week, probably, but at least we can definitely 
remove the untagged version of PORT_START :) Notice I was able to 
compile the source commenting out the definition of PORT_START, so 
I guess every occurrence is covered...
2008-08-06 13:56:38 +00:00
Aaron Giles
4a36b515ed Changes to the cheat.xml format:
- new tag <comment> (within <cheat>) is read and preserved 
    when saved
 - removed variable attribute from <parameter>; it is now 
    assumed to be 'param'
 - added default attribute for <parameter>

Added new variable 'frame' accessible from cheat scripts. This
can be used in the conditional to prevent execution on every
frame, or for other effects (like displaying temporary messages).

Added new variable 'argindex' which is the index when processing
an <argument> with a count attribute greater than 1. Can be used
in expressions like:

  <argument count="3">main.pb@(1000+argindex)</argument>

Reinstated the cheat menu. It now displays all loaded cheats and
allows for them to be activated. All known cheat behaviors should
be working now.
2008-08-06 05:24:31 +00:00
Aaron Giles
2d165fe1c3 Fixed I/O watchpoints. 2008-08-06 05:04:05 +00:00
R. Belmont
661aae28dc Changes to avoid collisions with system globals on OpenSolaris. (qmc2) 2008-08-06 03:25:58 +00:00
R. Belmont
ebbd232ba3 Fix GCC 4.3 "array bounds overflow" error. This is obviously a bug, Couriersud please take a look :) 2008-08-06 03:19:52 +00:00
Jarek Burczynski
1bb6adec56 Forced synchronization (stream_update()) before the status is actually read. 2008-08-05 21:30:33 +00:00
Couriersud
8146898f14 Discrete sound core optimizations
* moved a couple of exp(x) from _step into _reset where appropriate
* use tabulated function values for the transfer function in DSS_INVERTER_OSC

==> 40% speed increase in dkong - from 520% to
$ ./mame64 -noautosave -nothrottle -str 30 -video none dkong -nomt -nosleep 
Average speed: 722.48% (29 seconds)
2008-08-05 20:25:44 +00:00
Aaron Giles
5e3764d0a0 Removed obsolete makemeta tool. Replaced it with new ldverify
tool which walks through either an AVI or CHD capture from a
laserdisc and ensures that there are no anomalies lurking in
the VBI data.

Added new option to chdman, where if you use -createav with
a special filename (either 2:2 or 3:2) it will create a fake
laserdisc files with the equivalent cadence. This can be used
for testing until full captures are available. Most games used
2:2 apart from Dragon's Lair and Space Ace, which were 3:2.
Note that even though these files are essentially blank, they 
are Huffman-compressed, meaning that the maximum compression
ratio you will get is 8:1, so they still end up ~5GB.

Moved error strings from chdman.c to chd.c, where they can be
fetched from any caller via the new chd_error_string()
function.

Updated vbiparse to improve Manchester code decoding. It now
assigns a confidence level per bit based on how solid the
data is. Also added a new function vbi_parse_all which parses
the white flag and all three lines of metadata from a 
laserdisc frame. It then compares line 17 and 18 against each
other and selects the most likely candidate based on per-bit
confidence and other factors.

Added frame number display to laserdsc.c. It is off by
default, though most players can be configured to turn it on
(not sure if any actually do). It can be manually toggled via
the backslash key during playback.
2008-08-05 16:30:35 +00:00
Wilbert Pol
0f20ccdc1e Set the initial timer output to 2 to indicate that it is undetermined. 2008-08-04 17:44:56 +00:00
Wilbert Pol
1c0a7fce3a Fix compile errors. 2008-08-04 15:41:01 +00:00
Aaron Giles
95e3753dd2 Added proper laserdisc support for MACH 3, Us vs. Them, and Cobra
Commander (MACH 3 hardware). Old laserdisc hacks are now removed.
The code now talks to the standard Pioneer PR-8210 interface. Also
removed hacky "target list" from the MACH 3 ROMs; this information
is now decoded on the fly from the right channel laserdisc audio.
 
Other Gottlieb cleanups:
 - moved sound inputs to audio/gottlieb and included them in
    all relevant drivers
 - ordered input ports and ROM definitions consistently
 
Other laserdisc changes:
 - changed PR-8210 interface to work consistently for both Gottlieb
    and Stern games
 - added audio callback mechanism to allow drivers to peek at the
    raw audio streams
 - extended the VBI parser to be even more lenient
2008-08-04 15:26:41 +00:00
Andrew Gardner
d20e6b6151 Improved Dsp56k CPU interrupt handling. Polygonet Commanders now advances past its first dsp handshake. 2008-08-04 04:07:29 +00:00
Couriersud
82eff3f75c Revert accidentially commited changes. Sorry! 2008-08-03 19:02:28 +00:00
Couriersud
54da9f29bd 8257dma and z80dma devices now require device callback handlers instead of machine handlers.
Updated affected drivers accordingly.
2008-08-03 18:54:39 +00:00
R. Belmont
86c919a2d7 Backported a bunch of FM OPN (YM2608/2612) fixes from Genesis Plus GX. All of
this was verified on real hardware.  [Eke-Eke, Nemesis, Alone Coder, AamirM]

- implemented PG overflow, aka "detune bug" (Ariel, Comix Zone, Shaq Fu, Spiderman...)
- fixed SSG-EG support
- modified EG rates and frequency
- fixed EG attenuation level on KEY ON (Ecco 2 splash sound)
- fixed LFO phase update for CH3 special mode (Warlock, Alladin)
2008-08-02 22:05:24 +00:00
Aaron Giles
6d5941e085 Disks opened by the romload module are no longer identified by index.
Instead, they are identified by the region they were loaded in. This
generally means one disk per region. get_disk_handle() now takes a
region name in place of an index. Updated all callers to do this.
The SCSI modules in particular posed a challenge to make this work,
so watch out for potential bugs there.

Changed the IDE interfaces to default to choosing the region with the
same tag as the device for its master disk (assuming no slave). Added
support for specifying explicit master/slave disk regions as part of
the configuration, though slave disks are still not supported yet.

Change the laserdisc interface to no longer require a disk number or
a custom sound device. Both are now assumed to be tagged the same as
the laserdisc device. Updated all drivers accordingly.
2008-08-01 23:11:08 +00:00
Aaron Giles
a0c9cf2939 More gottlieb cleanup. Fixed rev 2 sound again, fleshed out memory
maps and behaviors according to the schematics. Hooked up coin
counters.

Added new functions cputag_set_input_line() to assert input lines
via CPU tag instead of index.
2008-08-01 16:39:12 +00:00
Nathan Woods
6ddfa127af Minor MESS compilation fix 2008-08-01 10:59:32 +00:00
Aaron Giles
444cde4388 Added cropping of the VBI data. 2008-08-01 02:36:23 +00:00
Aaron Giles
776b251aa2 Removed per-frame metadata support from chdman. Creating an A/V
now simply requires an AVI file input.

Relaxed VBI Manchester code clocking to allow for a little bit
of wiggle when finding the clock.

Changed laserdisc support to parse white flags and other data
from the VBI data directly, rather than relying on the textual
metadata. Expanded video frame cache to 3. Changed the way
frames are assembled to decrease the likelihood of getting an
interlaced weave. Fixed sound creation so that it is done at
reset time instead of device start, when the sound devices aren't
yet live.

Fixed bug in winwork that caused the creation of single work 
items to return NULL, and thus lead to massive memory leaks when
using A/V CHDs.
2008-08-01 02:23:26 +00:00
Derrick Renaud
c43a103858 Minor optimization to the DISCRETE_INPUT modules. The node output is now calculated when a discrete_sound_w() is called instead of each step in the simulation.
Removed the Enable line from the DISCRETE_ADJUSTMENT modules.  They should never be disabled.

Some before/after speed tests:
dkong - from 203% to 204%
firetrk - from 418% to 429%
phoenix - from 253% to 257%
polaris - from 448% to 476%
2008-08-01 00:08:42 +00:00
Aaron Giles
57bd1856b5 Cleanups/version bump. 2008-07-31 09:00:13 +00:00
Aaron Giles
e8f2759a0c (From Atari Ace. Note that I only took the first patch, which applied
to whole functions. The other one I'm not so sure about. Commented
code is usually hilighted differently, making it very easy to spot.)

Hi mamedev,

This set of patches has one aim only, to identify chunks of code that
have been disabled by the use of C/C++ comments, and to disable them
instead by using the preprocessor.  The C comment approach to
disabling code isn't safe (embedded comments will trip it up), and the
C++ comment approach isn't elegant (you shouldn't need to touch every
line to disable a chunk of code).  Using #if...#endif is preferable
always, excepting perhaps if (0) { ... }.

The patch has three parts.  The first only handles cases where full
functions were disabled.  The second handles cases where parts of
functions were disabled.  The third then tries to restore the
whitespace that the use of comments converted from tabs to spaces via
srcclean.exe.  It also cleans up the whitespace in a handful of the
files in areas outside of the original two patches.

~aa
2008-07-31 08:30:22 +00:00
Aaron Giles
e0409bc7b1 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: a few cleanups

This patch contains:
- removal of unprintable chars (newlines) in SH-2 disassembler (I 
submitted this in the past nd it wasn't included)
- a few unnecessary checks after malloc_ort_die() calls
- changes two romload.c warnings to use GAMENOUN instead
- adds "deprecat.h" in a  few src/mame/drivers files (would be 
necessary, if the debugger.h one would be removed)
- cleans up the mame.mak by adding all missing defines and grouping 
them based on cpu.mak
- renamed video_exit() to winvideo_exit() for consistency in function 
names
2008-07-31 08:26:39 +00:00
Aaron Giles
a69088c498 Added new options 'cheatpath' to specify one or more paths for cheat
files. Removed old option 'cheat_file'.

Updated xmlfile.c to specify the line number for each node, for more
accurate error reporting.

Removed old cheat.c/.h and replaced them with code that will read and
write the new XML-based cheat format using the new cheatpath option
(cheats still need to be enabled in order to load at all). Note that
the cheats are not implemented yet, but they are fully parsed. To test
saving, whenever a cheat file is successfully loaded, it is immediately
written back out as 'output.xml' to the cheat directory for validation.
2008-07-31 08:19:53 +00:00
R. Belmont
818cfdc705 Fixed 64-bit GCC compile. 2008-07-31 04:49:54 +00:00
Aaron Giles
5a17b8a274 Changed symbol table reference parameters to void * from UINT32. 2008-07-31 00:19:30 +00:00
Aaron Giles
2583b3cb6a Fixed menu handling so it doesn't swallow the tab key. 2008-07-30 22:36:30 +00:00
Aaron Giles
975eccb12c Simplified shift/rotate instruction implementations.
The ROL/ROR/SHL/SHR opcodes provide the carry flags typically generated by
almost all CPUs. The RORC/ROLC opcdes map directly to the rotate through 
carry of most CPUs as well.
2008-07-30 14:49:40 +00:00
Aaron Giles
03c86e0aa7 Fixed several regressions due to the region changes. 2008-07-30 05:21:01 +00:00
Aaron Giles
53491603bb Added region and regionbytes fields to the deviceconfig, which are
auto-filled by the device manager before starting the device. This
simplifies the auto-binding process for devices.

Added new selector for device-specific ROM regions. Not yet wired
up in the ROM loader.
2008-07-30 02:57:19 +00:00
Wilbert Pol
c67737a40c i8051 cpu core timer updates:
- Added support for timer mode 0 (13 bit timer)
- Cleaned up timer code a bit, fixing some off-by-one errors when timers overflow.
2008-07-29 18:29:01 +00:00
Aaron Giles
e70d4b0a85 (Modified to allow for overwrites of RAM ranges only.)
From: Atari Ace [mailto:atari_ace@verizon.net] 
Subject: [patch] Stricter ADDRESS_MAP checks

Hi mamedev,

The current implementation of address maps is lacking some useful
checks of the initial tokens.  In particular, it doesn't validate that
a particular entry doesn't try to define the same handler multiple
times.

The attached patch adds this and some other validations as fatalerrors
in address_map_detokenize, and fixes the affected maps.  The errors
generally fall into the following categories.

1.  AM_RAM AM_WRITE(...).  Should have been AM_RAM_WRITE(...)
2.  AM_RAM AM_READWRITE(...).  The AM_RAM is a NOP.
3.  AM_RAM AM_RAMBANK(...).  The AM_RAM is a NOP.
4.  AM_ROM AM_ROMBANK(...).  The AM_ROM is a NOP.
5.  AM_ROM AM_READ(...).  The AM_ROM is a NOP.

One peculiar error was in equites.c, where there were two AM_BASE
entries.

~aa
2008-07-29 17:08:43 +00:00
Aaron Giles
27061ca599 Moved region post-processing back to the end. Fixes endian issue on
second SH2 for ST-V games.

Fixed buffer overrun in latest SCSP code. Not sure how that ever
worked.

colmns97 still asserts in SCSPDSP, but this happened before the
region change.
2008-07-29 15:12:09 +00:00
Aaron Giles
25e1504511 Oops, should have been using SETc versus GETFLGS in this case. 2008-07-29 05:52:05 +00:00
Aaron Giles
962daf6607 Implemented ADDV/SUBV with flags. Kept C versions behind a compile-time define
for comparison.
2008-07-29 05:16:02 +00:00
Aaron Giles
d9c66068e8 Changed space character for memory regions from re'g'ion to 'm'emory_region. 2008-07-29 04:53:20 +00:00
Aaron Giles
a7ae6a548f Fixed comment. 2008-07-29 01:45:34 +00:00
Aaron Giles
a22ab0d669 Fix for 02043: All games in cps2.c: All Parent Sets for CPS2 Games Abort
(Thanks to Firewave)
2008-07-29 01:39:22 +00:00
R. Belmont
76d5ed12a3 SH2DRC: add SUBV, replace ADDV with C version as a precaution. (Fixes most of Mantis #2026, except the part which is a separate bug). 2008-07-28 23:12:47 +00:00
Aaron Giles
4a6fc8d5e5 Region classes go bye-bye. 2008-07-28 16:22:20 +00:00
Aaron Giles
86022ddde4 Removed all instances of regions with different class but equal names. 2008-07-28 15:09:12 +00:00
R. Belmont
6211400d23 Slowness is portable. 2008-07-28 14:36:06 +00:00
smf-
765d90880d fixed inline of DecodeADPCM under visual studio. 2008-07-28 14:10:11 +00:00
Aaron Giles
27fed1ec97 Changed the way memory regions are referenced. Instead of a single
integer value, regions are now referred to by a region class and
a region tag. The class specifies the type of region (one of CPU,
gfx, sound, user, disk, prom, pld) while the tag uniquely specifies
the region. This change required updating all the ROM region
definitions in the project to specify the class/tag instead of
region number.

Updated the core memory_region_* functions to accept a class/tag
pair. Added new memory_region_next() function to allow for iteration
over all memory regions of a given class. Added new function
memory_region_class_name() to return the name for a given CPU
memory region class.

Changed the auto-binding behavior of CPU regions. Previously, the
first CPU would auto-bind to REGION_CPU1 (that is, any ROM references
would automatically assume that they lived in the corresponding
region). Now, each CPU automatically binds to the RGNCLASS_CPU region
with the same tag as the CPU itself. This behavior required ensuring
that all previous REGION_CPU* regions were changed to RGNCLASS_CPU
with the same tag as the CPU.

Introduced a new auto-binding mechanism for sound cores. This works
similarly to the CPU binding. Each sound core that requires a memory
region now auto-binds to the RGNCLASS_SOUND with the same tag as the
sound core. In almost all cases, this allowed for the removal of the
explicit region item in the sound configuration, which in turn 
allowed for many sound configurations to removed altogether.

Updated the expression engine's memory reference behavior. A recent
update expanded the scope of memory references to allow for referencing
data in non-active CPU spaces, in memory regions, and in EEPROMs.
However, this previous update required an index, which is no longer
appropriate for regions and will become increasingly less appropriate
for CPUs over time. Instead, a new syntax is supported, of the form:
"[tag.][space]size@addr", where 'tag' is an optional tag for the CPU
or memory region you wish to access, followed by a period as a 
separator; 'space' is the memory address space or region class you
wish to access (p/d/i for program/data/I/O spaces; o for opcode space;
r for direct RAM; c/u/g/s for CPU/user/gfx/sound regions; e for 
EEPROMs); and 'size' is the usual b/w/d/q for byte/word/dword/qword.

Cleaned up ROM definition flags and removed some ugly hacks that had
existed previously. Expanded to support up to 256 BIOSes. Updated
ROM_COPY to support specifying class/tag for the source region.

Updated the address map AM_REGION macro to support specifying a
class/tag for the region.

Updated debugger windows to display the CPU and region tags where
appropriate.

Updated -listxml to output region class and tag for each ROM entry.
2008-07-28 09:35:36 +00:00
R. Belmont
1b81188229 SH2DRC: Add PC-relative load optimization and ability to disable if necessary [R. Belmont, based on an idea by Mariusz Wojcieszek] 2008-07-28 05:57:29 +00:00
R. Belmont
67faaeb473 AICA updates [Deunan Knute, ajax16384, R. Belmont]
- Fixed ADPCM decoder to remove bad optimization and match YMZ280B.  DC offset is fixed and output quality is higher
- Improved handling of slot monitor and timers B and C
- Simplified interpolation code
2008-07-28 05:46:29 +00:00
Andrew Gardner
6e13a53ff7 DSP56156 CPU Core updates.
- Rewrote core logic, communications, and interfaces.
- Added three parallel memory moves to the disassembler.
- Initial interrupt logic in place.

Plygonet.c updates.
- All communication hacks have been removed.
- Memory maps have been temporarily reverted while new DSP56k cpu core catches up.
2008-07-28 01:19:21 +00:00
Nathan Woods
251b59b069 Cleaned up MESS-specific hooks 2008-07-27 12:08:09 +00:00
Nathan Woods
a08d7977c3 Added some assertions 2008-07-26 20:49:28 +00:00
Nathan Woods
b3ee2ffd1f Added the ability to optionally pass a destructor to ui_menu_alloc_state() 2008-07-26 18:34:17 +00:00
Aaron Giles
fcf08639ee A bit more cleanup, still half-WIP now that I'm distracted with votrax. 2008-07-25 15:46:39 +00:00
Aaron Giles
7a14f21c15 Cleanups and version bump. 2008-07-24 09:07:49 +00:00
Aaron Giles
4900606a62 Minor gameplan changes in attempts to get leprechn music playing again.
No success yet.
2008-07-24 08:38:06 +00:00
Aaron Giles
0b77a69691 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Conditional code cleanup resubmit

Hi mamedev,

This is a resubmit of a previous patch.  The earlier version would not
compile with 32-bit MSVC, due to the fact that its linker required
external dependencies in dead code to be met before dead code
elimination was done, causing linker errors.  The proper fix for this
would be to add the necessary dependencies, so I instead simply left
the conditional code in place in winalloc.c and chd.c.

~aa

Original submission email below:
----
Conditionally compiled code tends to bitrot, so MAME should try to
avoid it as much as possible.  I sent a patch six months ago to
eliminate conditional code associated with logging, here's another
patch that does more of this.  Some notes:

1.  drc_ops.c: I couldn't find a LOG_CODE anywhere, so I used if (0).
2.  romload.c: I converted all the users of debugload to use
LOG((...)) instead, following the traditional conditional logging
pattern.
3.  windows/sound.c: I eliminated the separate sound log and directed
the few outputs to the error log.

~aa
2008-07-24 06:26:47 +00:00
Aaron Giles
9b63c42203 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] .data removals to fix reset/multisession bugs

Hi mamedev,

One nice artifact of properly constifying data structures in MAME is
that it makes it relatively easy to spot a class of reset/multisession
bugs, namely that almost any object in .data is probably in error.
Unless the value is properly initialized in a reset routine the
initial non-zero value can't be relied upon, so there's no need to
have a non-zero value to begin with.

With that in mind, here's a patch to move more items out of .data by
either applying const, removing the non-zero initializer (if its
overwritten by init/reset) or by adding appropriate initialization
code.  In most cases I tried to add initialization code to a reset
routine, but in some cases I chose an init routine, possibly leaving a
reset bug intact.

Some interesting bits:
1.  tms9900 core.  The use of .data to initialize the irq_level wasn't
correct in some cases as the layout of the structure was core
dependent.
2.  bfcobra.c.  By introducing a VIDEO_START routine a hack in
VIDEO_UPDATE could be removed.

~aa
2008-07-24 06:18:01 +00:00
Aaron Giles
0865f72a9a Made DIP switch renderings consistent regardless of UI aspect 2008-07-24 06:16:18 +00:00
Aaron Giles
61971ae92e Made input_port_read_indexed() private to machine/generic.c.
Eventually it will probably disappear altogether. Fixed the
two remaining instances.
2008-07-24 05:34:45 +00:00
Aaron Giles
81abccd04b Make the tinklpit keycus implementation cuter
There is not enough data to be sure it's a LFSR, but it doesn't look
bad as one.

  OG.
2008-07-24 05:03:19 +00:00
Aaron Giles
96a01c9d29 From: Micko [mailto:mmicko@gmail.com]
Subject: 8257dma
Hi Aaron,
 
Small changes for 8257.
 
Fixed terminal count stop for autoload mode and added callback function existance check [Miodrag Milanovic]
 
Regards,
Miodrag
2008-07-24 03:58:40 +00:00
Aaron Giles
8e7a1a2553 Added new functions attotime_to_ticks() and ticks_to_attotime() to
convert between attotimes and a clock tick at an integral frequency.

Changed the 6532 RIOT device into a proper device. Rewrote the
logic to be simpler and leverage the new attotime functions. Changed
the I/O port setters to specify a mask, and changed the I/O port
callbacks to pass in the previous value. Updated tourtabl and
gameplan drivers to use the new device interface.

Converted audio/starwars.c, audio/exidy.c, and audio/gottlieb.c to 
use the new RIOT implementation instead of rolling their own.

Began gottlieb.c cleanup. Converted palette calculations to resistor
weights. Corrected video timing. Reduced the number of separate
machine drivers. Fixed incorrect spriteram sizes. Populated full
memory maps for the main CPU and the rev 1 sound board. More to
come.
2008-07-24 03:49:19 +00:00
Aaron Giles
5e3116fd87 Merged some memory maps. 2008-07-21 17:09:40 +00:00
Aaron Giles
2f823ff24f Laserdiscs are now devices. Updated all drivers accordingly. 2008-07-21 17:02:59 +00:00
Andrew Gardner
6a3af45257 Dsp56156 Disassembler rewrite.
- Rearranged decoding behavior.
 - Updated code style to MAME standards.
 - Tested each single-word opcode with custom ROMs.


(This is a precursor to other major dsp56k changes I have made.  I just gotta' get plygonet commanders up and running to do some tests)
2008-07-19 16:09:10 +00:00
davidhay
cce1d8b88e TGP / Model 2 fixes [ElSemi]
- TGP now correctly uses table roms (model1/2 updated accordingly)
 - removed FIFO hack on srallyc (game now runs)
 - added analog ports reading for model 2A/B/C
 - fixed some loading instructions in the TGP. that fixes srallyc automatic transmission bug
2008-07-19 09:58:31 +00:00
Aaron Giles
5bb72fa08e Changed MDRV_CPU_ADD to require a tag. Removed MDRV_CPU_ADD_TAG.
Tagged all CPUs. Now I will take a break until my fingers stop
cramping. :)
2008-07-19 05:26:09 +00:00
Aaron Giles
73aaf0db7e Tagged all the first CPUs for drivers (mostly as "main").
Added validity checks to ensure no duplicate sound or CPU tags.
Fixed several duplicate sound tags from the last checkin.

-listxml now outputs the tag names for CPUs and sound chips.
2008-07-19 03:13:34 +00:00
Brian Troha
b3b2c01fe5 ElSemi's fix for the i960 issue:
well, the fix is not that but changing them this way:
 
 program_write_dword_32le(i960.r[I960_FP]-16, i960.PC);
 program_write_dword_32le(i960.r[I960_FP]-12, i960.AC);

in take_interrupt.
 
It seems it came from a partial fix in the ret instruction. the manual says that PC is saved at FP-16 and AC at FP-12
it was reversed in mame, so when trying to fix it, i suppose Ernesto forgot to change the push too.
 
I've tested this fix and apart from having daytona working, pilot kids 2A works too (that I think has been broken for ages).
2008-07-18 19:53:37 +00:00
Aaron Giles
023423726f Removed MDRV_SOUND_ADD. Renamed MDRV_SOUND_ADD_TAG to
MDRV_SOUND_ADD. All sound chips must now include a tag.

Laboriously changed all existing drivers to define a
unique tag for each sound chip.

CPUs are next, but will require a more hands-on manual
process to produce reasonable tags.
2008-07-18 17:08:58 +00:00
Aaron Giles
e5a0b682da Minor cleanup from last checkin. 2008-07-17 16:10:46 +00:00
Aaron Giles
517a24c0ef Robustified key behavior when the debugger is visible. Should now
properly ignore the "break into debugger" keypress and not allow
related characters to filter through. Removed some hacks related to
making that work in the past.

Changed osd_wait_for_debugger() to take a machine parameter and a
"firsttime" parameter, which is set to 1 the first time the function
is called after a break. The Windows debugger uses this to ensure
that the debugger has focus when you break into it.
2008-07-17 16:09:52 +00:00
Aaron Giles
5244807bf3 Cleanups. 2008-07-17 08:09:52 +00:00
Aaron Giles
b5f2aa1240 Changed direct access EEPROM interface to return the "bus width" of the
EEPROM data, and the size is in terms of units, not bytes. Updated all
drivers accordingly.

Changed the ROM loading code to actually alter the region flags based
on the CPU endianness and bus width when creating the region, rather
than fixing them up on the fly. This means that callers to
memory_region_flags() will get the correct results.

Changed the expression engine to use two callbacks for read/write rather
than relying on externally defined functions.

Expanded memory access support in the expression engine. Memory accesses
can now be specified as [space][num]<size>@<address>. 'space' can be
one of the following:

   p = program address space of CPU #num (default)
   d = data address space of CPU #num
   i = I/O address space of CPU #num
   o = opcode address space of CPU #num (R/W access to decrypted opcodes)
   r = direct RAM space of CPU #num (always allows writes, even for ROM)
   e = EEPROM index #num
   c = direct REGION_CPU#num access
   u = direct REGION_USER#num access
   g = direct REGION_GFX#num access
   s = direct REGION_SOUND#num access

The 'num' field is optional for p/d/i/o/r, where is defaults to the
current CPU, and for e, where it defaults to EEPROM #0. 'num' is required
for all region-related prefixes. Some examples:

   w@curpc = word at 'curpc' in the active CPU's program address space
   dd@0    = dword at 0x0 in the active CPU's data address space
   r2b@100 = byte at 0x100 from a RAM/ROM region in CPU #2's program space
   ew@7f   = word from EEPROM address 0x7f
   u2q@40  = qword from REGION_USER2, offset 0x40
   
The 'size' field is always required, and can be b/w/d/q for byte, word,
dword, and qword accesses.
2008-07-17 08:07:12 +00:00
R. Belmont
b859963772 SH2DRC: cleanups and tweeks from Aaron's suggestions. 2008-07-17 03:46:51 +00:00
R. Belmont
847b927e8d Fixed simple but deadly typo in previous update. 2008-07-15 16:44:25 +00:00
R. Belmont
837d59500a i960: respect the rounding mode for CVTRI [ElSemi] 2008-07-15 16:42:05 +00:00
Nathan Woods
efcaebaea2 Changed ui_menu_get_selection() and ui_menu_set_selection() to use itemrefs
instead of indexes as per Aaron's guidance.
2008-07-15 11:04:30 +00:00
R. Belmont
a0ae9b4bb6 SH-4 update [Samuele Zannoli]
- Fixed TRAPA and some versions of FMOV
- Improved disassembly for MOV.W, MOVA, MOV.L, FIPR, and FSCA.
2008-07-14 23:27:27 +00:00
Aaron Giles
26b6c2cf16 Fixed popmessage. 2008-07-14 15:00:58 +00:00
Nicola Salmoria
89675377ca added save state suport to Konami CPU & Aliens 2008-07-14 14:56:20 +00:00
Aaron Giles
484efe776b Added an exit function to the SH2 drc so that it doesn't leak
memory like crazy.
2008-07-14 14:53:08 +00:00
Nathan Woods
83f6ced61e Added accessors to get/set the currently selected menu item in a menu 2008-07-14 11:34:20 +00:00
R. Belmont
a18b3c3eeb [SH2DRC] Removed remnant of outdated interrupt design. 2008-07-14 01:55:02 +00:00
R. Belmont
1f9a29d7fa UDRC-based SH-2 dynamic recompiler.
- All games on all drivers should work as before except "colmns97" and "stress" which crash due to sound system trouble.
- All idle skips are still included.  They are quite a bit less effective than they were on the interpreter, but they still give a boost.
- Fast RAM bypass is not included yet so this does not represent final performance.  That said, it's consistently faster than the interpreter even now.  Example: sfiii3 on 0.126 gets 609% on the interpreter and 961% on the DRC.

Major thanks to Aaron for his assistance with several sticky core bugs and other issues encountered writing this.
2008-07-13 23:40:54 +00:00
Aaron Giles
dabae9787b Replaced the crazy number of get/set functions for render containers with
a single get/set of a user settings struct.
2008-07-13 08:03:43 +00:00
Aaron Giles
c4e5ae4e41 Fixed edge case in the DRC front-end that would incorrectly tag the
end of a sequence as "return to start" even if the last instruction
did not abet the starting instruction.
2008-07-13 07:03:30 +00:00
Aaron Giles
4860b171b2 Fix game selection menu. Changed so that it only computes available
drivers once per instantiation instead of on every change.
2008-07-13 06:52:32 +00:00
R. Belmont
90a6836226 64-bit GCC fixes. 2008-07-12 21:23:48 +00:00
Aaron Giles
86fbc45266 Converted UI startup screens to use astrings. 2008-07-12 20:30:47 +00:00
Aaron Giles
d8715ab4ac Note: I have done some testing, but there are probably more bugs
lurking. If you run into anything odd, please let me know.

Added new module uiinput.c which manages input for the user interface.
The OSD is responsible for pushing mouse events and character events
to this interface in order to support mouse movement and text-based
input (currently only used for the select game menu). Added support
for navigating through the menus using the mouse. 
[Nathan Woods, Aaron Giles]

Redesigned the UI menus so that they can maintain a richer state. Now
the menus can be generated once and reused, rather than requiring them
to be regenerated on each frame. All menus also share a comment eventing
system and navigation through them is managed centrally. Rewrote all the 
menus to use the new system, apart from the cheat menus, which are now 
disabled. Reorganized the video menu to make it easier to understand.
[Aaron Giles]
2008-07-12 20:18:25 +00:00
Wilbert Pol
e379509455 Removed a no longer needed #ifdef MESS part 2008-07-12 07:43:50 +00:00
Wilbert Pol
740ebd5401 pit8253 updates:
- Changed the implementation to use timers internally.
- Removed the frequency change callbacks.
2008-07-11 20:16:30 +00:00
Nathan Woods
bc9879f754 MESS-specific fix 2008-07-08 10:05:41 +00:00
Aaron Giles
7c2e170a5a Crazy idea: run mame -valid after altering the validity checks.... 2008-07-06 23:40:25 +00:00
Aaron Giles
cc03405ca2 Cleanups and version bump. 2008-07-06 23:19:23 +00:00
Aaron Giles
1794fddf8d 01965: driveyes: Access Violation
01951: cybrcycc: Crash during intro.
01964: gtg2j: Access Violation
2008-07-06 22:48:41 +00:00
Couriersud
b261a88395 01983: Force Range cheats not working 2008-07-06 18:49:27 +00:00
Nathan Woods
697181c8cd Adding per-device and per-CPU validity checks 2008-07-06 15:02:12 +00:00
Couriersud
84e9ab7d4e Fix scrolling speed in case a cheat dat has invalid (i.e. 0) settings 2008-07-06 10:37:52 +00:00
Aaron Giles
6105826fb8 01971: Cheat menu flickers
Also made it display (null) only in debug builds.
2008-07-06 06:45:29 +00:00
Aaron Giles
161b2a86e8 01963: screenless systems: memory leak with -mngwrite 2008-07-06 06:07:23 +00:00
Roberto Zandona
342b2370be update cheat system (fix mantis #01969) (credit ShimaPong) 2008-07-04 16:49:20 +00:00
Nathan Woods
a0866bcacd MESS-specific tweak 2008-07-04 03:10:33 +00:00
Aaron Giles
e376a53661 Cleanups and version bump. 2008-07-03 15:50:46 +00:00
Aaron Giles
b82b111e69 Lighter weight debugger optimization for ADSP2100. 2008-07-03 15:34:27 +00:00
Couriersud
b97ff5fcca Credit ShimaPong - Updated cheat system
- Roll back older periodic function
   Now standard/old format work in this function
   Otherwords, several operations which doesn't exist in older
   function and added recently are now disabled
 - Separated load_cheat_code() to 3 indipendent functions
   And added new cheat options, "Load New/Standard/Old Format Code"
   (Default : load all format codes)
     NOTE : delete all cheat options in the database before start
            or reload default options (Shift + Reload key)
            in cheat general menu
 - Added format strings structure to accept huge size strings
   in loading a database to prevent from breaking other strings
 - Changed Link in new format
   Label code is now "Link-Label" and sub-label is "Label-Sub-Link"
   "Standard-Link" is no longer label
 - Added choose_label_index() to manage label selection
 - Fixed build_label_index_table() to prevent from crashing
   And disabled to build label index table in case of
   standard/old format
 - Fixed memory free problem in case of standard/old code
 - Fixed several reported/found bugs
2008-07-01 22:53:31 +00:00
Wilbert Pol
8b8ff45369 I80286: Fixed POP ES in protected mode. 2008-07-01 18:16:42 +00:00
Aaron Giles
fc9f7d2fa6 01942: All konamim2.c sets: hang
heatof11 gets to the color bars but only if you enable the debugger.
Not sure why.
2008-07-01 16:49:23 +00:00
Aaron Giles
fc20a0e0c3 Fixed sense of debugger flag in ADSP-2100 optimization. 2008-07-01 09:05:22 +00:00
Aaron Giles
32b803dad5 Fixed LWXC1/LDXC1; corrects gauntleg camera. 2008-07-01 08:09:23 +00:00
Aaron Giles
0773e2550d Fixed 64-bit writes in C back-end. 2008-07-01 07:38:42 +00:00
Aaron Giles
10bca54ab0 Fixed incorrect assumption in HASHJMP that the base table for a mode
will always be allocated when a fixed mode is first used.
2008-07-01 04:40:25 +00:00
Jonathan Gevaryahu
3efbf0333d s14001a.c: fix a minor bug with the 4-bit dac range. wolfpack clips again, and I'm almost sure its an encoding error on the original speech 2008-06-30 18:57:41 +00:00
Aaron Giles
f33daa0877 01948: All alg.c and cliffhgr.c sets: Access Violation when taking a snapshot 2008-06-30 16:27:56 +00:00
Aaron Giles
7d1d630f91 Fixed some save state problems in the DCS driver. Still comes out garbled
on a load, however. Extended memory.c to support up to 4096 banks.
2008-06-30 16:03:49 +00:00
Jonathan Gevaryahu
05946c0fda s14001a.c: Remove a TODO line for a bug which has been fixed. 2008-06-30 08:32:00 +00:00
Aaron Giles
1b941383f0 MIPS recompiler:
* marked IDT instructions for R4650 only
 * accounted for time taken in throwaway likely branch slots
 * fixed jalr to respect the correct link register
 * fixed c.eq, c.lt, c.le to fail if unordered
 * fixed swxc1, sdxc1 to use the correct source register (fixes many Gauntlet problems)
 * fixed CCR31 display in debugger
2008-06-30 08:23:20 +00:00
Jonathan Gevaryahu
785f4c5898 Update S14001A core: improved filtering to be more accurate to the chip, changed internal audio renderer to produce 4 bit sound as the real chip does. Moved filter outside of the main rendering loop into the glue code. Note: with this update, you may hear a whining noise that was not previously present. This is accurate to the chip! The real chip would almost always have an analog filter placed on its output to suppress this whine. 2008-06-30 07:36:44 +00:00
Aaron Giles
df4f70a0a7 Split ADSP2100 execution loop between debug/non-debug. 2008-06-29 16:45:55 +00:00
Aaron Giles
bc5eecc7a2 Stash jump target address before executing delay slot.
Also, don't update link register until delay slot has finished
executing.

Fixes hang in gauntleg, though there are math problems lurking still.
2008-06-29 06:19:59 +00:00
Aaron Giles
66360324c1 Fixed 32031 so that it doesn't call the debugger if not enabled. 2008-06-28 21:04:16 +00:00
Aaron Giles
64048d74f7 Oops, forgot to shift addresses for 16,32,64-bit watchpoint stubs. 2008-06-28 17:55:58 +00:00
Couriersud
9e41bb9864 Partial fix: 01945: All asteriod.c sets: Assertions
* fixes assert: src/emu/video.c:664: visarea->min_x < width
* Test whether screen type is vector and ignore min_x < width in this case
* This affected a number of vector games and the only other fix would be to rewrite the vector code
2008-06-28 13:22:41 +00:00
Aaron Giles
75d18b3a33 Changed how watchpoints work so that supporting them adds 0 overhead
unless some are actually live.

Changed a few call sites from using memory_set_context() to cpuintrf_push_context().
2008-06-28 07:21:54 +00:00
Couriersud
9ce918c465 01937: All Sets: Fatal Exception on In-Game Menu 2008-06-28 00:06:29 +00:00
R. Belmont
7a3449f968 SH2: convert context struct to go through a pointer 2008-06-27 19:42:58 +00:00
Aaron Giles
96d3879704 Don't generate compare interrupts unless the compare register was written
to. Fixes hangs in blitz, calspeed, and others. Also fixed vegas input
ports.
2008-06-27 14:23:50 +00:00
Yasuhiro Ogawa
246e71dccf Pitch calculation fix (by h0pdmiYX0) 2008-06-27 09:44:10 +00:00
R. Belmont
f6c3274df2 Refactor SH2 to separate out things that aren't part of the interpreter. 2008-06-27 05:33:54 +00:00
Nathan Woods
aa3dfa8811 MESS-specific compilation fix 2008-06-27 01:10:39 +00:00
Couriersud
08308f1f36 01935: All output commands (-listxml, -cc, -listfull, ETC) crash with error 2008-06-26 21:32:50 +00:00
Aaron Giles
1e7bfa9b94 Update docs a bit. Turn off debugger by default. 2008-06-26 16:51:19 +00:00
R. Belmont
077cd49d2e GCC 64-bit compile fix 2008-06-26 16:33:51 +00:00
Aaron Giles
3d1376ed97 Cleanups/version bump. 2008-06-26 16:05:46 +00:00
Aaron Giles
652fc279ae From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: another Machine -> machine cleanup
This cleans up most of the Machine stuff in src/emu/machine. There is
a bit left to clean up, but it's mostly stuck at some interfaces now.
2008-06-26 15:34:42 +00:00
Aaron Giles
ba2fb8554b From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] make MSVC_BUILD=1 -j<n> build fix

Hi mamedev,

The following build tweak fixes make MSVC_BUILD=1 -j2.  It also fixes
an oversight in the cross-build support.

~aa
2008-06-26 15:27:12 +00:00
Aaron Giles
ea3780417a From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Fix minor CPU/SOUND core build issues

Hi mamedev,

This small patch fixes a few build problems with the cpu/sound cores
M65CE02, ALPHA8201, TMC0285, TMS5200 and corrects the dependencies for
the mips core.

~aa
2008-06-26 15:24:55 +00:00
Aaron Giles
01f5d8cb93 From: Corrado Tomaselli [mailto:corrado.to@tiscali.it]
Subject: the fairyland story clocks
Verified clocks on Fairyland Story
2008-06-26 14:57:56 +00:00
Aaron Giles
68f3a9ab9e Removed DEBUGGER flag from makefile and ENABLE_DEBUGGER
macro from the source code. All MAME builds now include
the debugger, and it is enabled/disabled exclusively by
the runtime command-line/ini settings. This is a minor 
speed hit for now, but will be further optimized going 
forward.

Changed the 'd' suffix in the makefile to apply to DEBUG
builds (versus DEBUGGER builds as it did before).

Changed machine->debug_mode to machine->debug_flags.
These flags now indicate several things, such as whether
debugging is enabled, whether CPU cores should call the
debugger on each instruction, and whether there are live
watchpoints on each address space.

Redesigned a significant portion of debugcpu.c around
the concept of maintaining these flags globally and a
similar, more complete set of flags internally for each
CPU. All previous functionality should work as designed
but should be more robust and faster to work with.

Added new debugger hooks for starting/stopping CPU
execution. This allows the debugger to decide whether
or not a given CPU needs to call the debugger on each
instruction during the coming timeslice.

Added new debugger hook for reporting exceptions.
Proper exception breakpoints are not yet implemented.

Added new module debugger.c which is where global
debugger functions live.
2008-06-26 14:51:23 +00:00
Couriersud
9e2e2fd776 Fixes menu scrolling speed as described by Haze 2008-06-25 22:17:15 +00:00
Couriersud
37ad515d2a Updated cheat system / Credit Shimapong
- Merged 3 different search menu functions to search_main_menu()
 - Added new cheat options, "Vertical/Horizontal Key Repeat Speed"
     NOTE : delete all cheat options in the database before start
            or reload default options (Shift + Reload key)
            in cheat general menu
 - Changed assignment of Entry for Activation Key and Pre-enable
   command code. Now there are check the tag in comment field
   instead of index number. But it's only for new format command
   and old is as before
 - Added tag output in save_activation_key() and save_pre_enable()
 - Cleaned up save_cheat_options() to output description
 - Changed memory read function in watchpoints
   No longer "Debugger" watchpoint mis-hit "Cheat" watchpoint
 - Fixed several reported/found bugs
 - Renamed funcitons/enum based on coding guidlines
   All functions are completed in this update
2008-06-25 18:24:55 +00:00
Aaron Giles
25abe2749d Hornet driver:
- connected EEPROM (doesn't seem to affect much)
 - cleaned up system register access

GTI Club driver:
 - altered network IRQ clear to fix several problems
 - added Guru readme
 - fixed crashes due to missing inputs
 - gticlub "works" again

ZR107 driver:
 - added Guru readme
 - cleaned up system register access
 - these games work again with altered network IRQ timing

NWK-TR driver:
 - added Guru readme

DRC frontend:
 - now passes pointer to previous instruction when describing

PPC frontend:
 - attempts to roughly take into account branch and CR logical
    folding in timing computations
2008-06-25 15:02:07 +00:00
davidhay
1ab9a6bd40 Promoted to Working
-------------------

Survival [nuapete]
2008-06-24 20:17:59 +00:00
Wilbert Pol
88e208dce0 Fixed typo in changelog 2008-06-24 20:03:08 +00:00
Wilbert Pol
9a76a3e65d i8x41 cpu core changes:
- Updated the ram sizes. 8041 uses 128 bytes, 8042
    8042 uses 256 bytes.
  - Added support for re-enabling interrupts inside
    an interrupt handler.
  - Fixed cycle count for DJNZ instruction.
2008-06-24 19:36:34 +00:00
Aaron Giles
870607fe7b 01886: gradius4: 3D gfx problem
Fixed LZCNT opcode in x86 and x64 back-ends
Added support for flags in LZCNT and BSWAP opcodes on x86 and x64 back-ends
2008-06-24 16:05:36 +00:00
Aaron Giles
a39d6ed967 01927: Effects overlay showing in snapshots
Explicitly disabled overlays for non-native snapshots (native snapshots already had them disabled)
2008-06-24 05:28:58 +00:00
Aaron Giles
2ac4c9da66 01901: kinst13, kinst14, kinstp: Attract mode graphics regression
Fixed DCMP opcode on the 32-bit back-end
2008-06-24 05:22:30 +00:00
Aaron Giles
75a009ac40 Do not stop in the debugger while we are waiting for a pending
event to occur. This eliminates some confusion during reset and
state loading.
2008-06-24 05:21:19 +00:00
Aaron Giles
2be66a245c Fixed WRITEM opcode on 64-bit to call through memory instead of directly. 2008-06-24 04:46:15 +00:00
Wilbert Pol
6f4b3add14 I8x41 cpu core fixes:
- Added configurable i8x41/i8x42 subtype support.
- Fixed carry flag handling in ADDC A,#N instruction.
- Fixed carry flag handling in RLC A instruction.
2008-06-23 18:52:12 +00:00
Wilbert Pol
f4f26cdd1a i8x41: Fixed disassembly for opcode 0x67. 2008-06-23 17:59:03 +00:00
R. Belmont
1d2a733d95 Fixed compile where DEBUG=1 and DEBUGGER=0. 2008-06-23 17:00:18 +00:00
Aaron Giles
a4918351e1 Save state support:
* added save state support to the SHARC CPU core
 * added save state support to the PowerPC recompiler
 * added save state support to the virtual TLB system
 * added save state support to the RF5C400 sound core
 * added save state support to konppc module
 * added save state support to K056800 host controller
 * added save state support to the Konami hornet driver

Fixed poor default CLUT handling in the voodoo driver
2008-06-23 16:37:34 +00:00
R. Belmont
dfb5755f25 Fixed placement of stream_update in the NiLe emulation. 2008-06-23 13:15:28 +00:00
Aaron Giles
57c35a0efc From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] memory_region madness reloaded
Hi mamedev,

The memory_region and memory_region_length functions are probably the
two most common functions in MAME that don't take a machine parameter
but should given the syntax of the related apis memory_region_type and
memory_region_flags.  Clearly they didn't get the parameter because of
the sheer number of changes needed to change the apis.  This pair of
patches makes the change, and deals with the consequences.

The second patch then changes the api for memory_region and
memory_region_length, and fixes the fallout.  It generally plumbs
through machine parameters where needed, except for the case of sound
apis which I deferred doing so till later.  This increased the number
of deprecat.h includes by ~50.  Given it is a massive patch, there are
bound to be a few mistakes in it (I had to make ~20% of the changes by
hand), but I exercised care and reviewed the patch several times to
minimize the problems.
2008-06-23 08:32:42 +00:00
Aaron Giles
b3743812df From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] memory_region madness reloaded
Hi mamedev,

The memory_region and memory_region_length functions are probably the
two most common functions in MAME that don't take a machine parameter
but should given the syntax of the related apis memory_region_type and
memory_region_flags.  Clearly they didn't get the parameter because of
the sheer number of changes needed to change the apis.  This pair of
patches makes the change, and deals with the consequences.

The first patch makes some changes to help the second patch
along, as well as moves some uses of the memory_region apis within for
loops outside the loops.
2008-06-23 08:17:42 +00:00
Aaron Giles
ec54e3911d Save state support:
* added save state support to the MIPS3 recompiler
 * added save state support to CAGE audio system
 * added save state support to the voodoo emulator
 * added save state support to the smc91c9x emulator
 * added save state support to the kinst, seattle, and vegas drivers
 * fixed core video handling of save states with dynamic screen resolutions

SMC91C9x:
 * converted to proper device
 * updated seattle and vegas drivers to allocate devices
 * added separate 91C96 device for eventual 2049 use
 * cleaned up code
2008-06-23 07:58:17 +00:00
R. Belmont
bdd608f8ba Various NiLe fixups. Music in-game now sounds quite acceptable, if not yet perfect. 2008-06-23 02:07:52 +00:00
Aaron Giles
0dc00ab33f Converted voodoo into a proper device.
Updated drivers accordingly.
2008-06-23 01:28:05 +00:00
R. Belmont
167df11887 Correct the loop flag in the NiLe. Still more to do. 2008-06-23 01:14:48 +00:00
Wilbert Pol
a01d5624a3 Removed i8x41.ram hack from the i8x41 cpu core. 2008-06-22 20:21:51 +00:00
Tomasz Slanina
cecb9c22a9 Preliminary emulation of ST-0026 NiLe (sound).
Added audio (imperfect) to Super Real Mahjong P6.
(2nd attempt)
2008-06-22 20:14:14 +00:00
Couriersud
f18db5b067 implemented 8257 dma controller as proper device
* rewrote 8257dma.[ch]
* updated dkong.c accordingly
2008-06-22 13:48:55 +00:00
Couriersud
0bee46b0ac x86emit.h: Back out commit #2007 which accidentally commited this file as well 2008-06-22 11:44:26 +00:00
Couriersud
b85a4f86e5 Cleaned up z80dma interface - missing files from last commit)
* removed compatibility to old z80dma driver
* now uses std. callbacks (READ8_HANDLER, WRITE8_HANDLER)
* updated mario and dkong3 accordingly
2008-06-22 11:41:50 +00:00
Aaron Giles
8138105277 01916: srmvs: Assertion
Removed erroneous assertion.
2008-06-22 03:03:43 +00:00
Aaron Giles
d4b702bf33 01900: All sets in kinst.c: Mass coin input disables dipswitch access, and thus further coin input during a fight 2008-06-22 01:40:28 +00:00
Aaron Giles
3245688ccf 01905: Many Sets: Fatal Error crash - Fatal error: Input ports cannot be read at init time! (src/emu/inptport.c:1278)
Removed call to discrete_reset() in the initialization code. It is already
called by the sound system during reset, at which point it is safe to read
input ports.
2008-06-21 05:25:19 +00:00
Aaron Giles
02ad5125b1 01912: Various: Unable to construct input ports! (part 2) 2008-06-21 04:57:44 +00:00
Aaron Giles
587c6c7176 01908: Various: Access Violation when saving a snapshot 2008-06-20 14:42:34 +00:00
Aaron Giles
b9415c289f Fixes for MSVC compile. 2008-06-20 14:35:07 +00:00
R. Belmont
85d9163a63 MultiPCM/315-5560 rewrite by ElSemi. All features are now supported including PLFO and ALFO. 2008-06-19 16:21:46 +00:00
R. Belmont
61bd2a49a1 Added assert as suggested by Olivier. 2008-06-19 01:17:20 +00:00
R. Belmont
ce942e905f Fix for GCC 4.3. Tested with kinst, blitz, carnevil, and cryptklr. 2008-06-18 16:55:33 +00:00
Aaron Giles
b724c35c1f Fixed input port read validation. The previous check was way too aggressive,
and prevented CUSTOM_INPUT handlers from reading other ports. This one sets
an "all clear" flag as soon as the configuration data is loaded.
2008-06-18 02:10:53 +00:00
Aaron Giles
2d035a1c6a Cleanups and version bump. 2008-06-17 15:19:10 +00:00
Aaron Giles
86e20b9b98 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: more Machine -> machine cleanups

This is mostly a cleanup of src/drivers/* and src/machine/*
2008-06-17 09:44:03 +00:00
Aaron Giles
8628f1dafe UML:
- reactivated back-end validation mechanism
 - added back-end validation for ADD/SUB/MUL/DIV/CMP forms
 - fixed several errors in dealing with more obscure flag combinations
2008-06-17 09:19:07 +00:00
Wilbert Pol
01756b3bcb Renamed "Nintendo z80gb" cpu core to "Sharp LR35902". 2008-06-16 18:22:10 +00:00
Aaron Giles
a7be43dc68 Added new function video_get_view_for_target() which selects a view based
on a command-line parameter and the configuration. Changed Windows OSD
code to use this instead of its own logic. Changed -snapview to share the
logic as well, enabling 'auto' as a -snapview option.
2008-06-16 17:05:44 +00:00
Aaron Giles
69ba0bd294 Cleaned up software bilinear filtering code. Added bounds checking.
Enabled by default for snapshots and movie rendering.

Added new option: -snapsize, which lets you specify the target
resolution for snapshots and movies. The existing behavior is still
the default: create snapshots and movies at native pixel 
resolutions.

Added new option: -snapview, which lets you specify a particular
view to use for rendering snapshots and movies. The existing 
behavior is still the default: use a special internal view and 
render each screen to its own snapshot in its own file. When using 
this option to specify a view other than 'internal', only a single 
snapshot file will be produced regardless of how many screens the 
game has.

Improved AVI and MNG recording to properly duplicate/skip frames
as appropriate to keep the correct framerate.
2008-06-16 16:34:51 +00:00
Curt Coder
a93fb6b1bf Added a validity check against reading input ports at init time. 2008-06-16 15:05:06 +00:00
Curt Coder
6950cd07a7 COP4xx:
- fixed typo in disassembler
2008-06-16 15:00:20 +00:00
Aaron Giles
5deab27d6d Created common virtual TLB managment module.
Updated MIPS and PowerPC code to make use of it.
2008-06-16 03:12:49 +00:00
Nathan Woods
01a8513bcc Removed some MESS-y code 2008-06-13 10:48:15 +00:00
Aaron Giles
2e8eddb648 MIPS3 recompiler:
* added UML comments for common state variables
 * removed some unused fields
 * implemented LL/LLD/SC/SCD (only works single-processor for now)
2008-06-13 07:29:28 +00:00
Aaron Giles
4bc9630265 Turned off logging on the mips core. 2008-06-13 06:43:21 +00:00
Nathan Woods
1c989c1f59 Typo fix 2008-06-13 00:18:48 +00:00
Aaron Giles
5a162da3d4 Cleanups and version bump. 2008-06-12 19:59:19 +00:00
Aaron Giles
1855238186 Undo change 1933 temporarily ... not quite ready to unleash this on the world
with no substantial dev exposure.
2008-06-12 19:51:49 +00:00
Curt Coder
aa15601968 Added a validity check against reading input ports at init time. 2008-06-12 19:34:37 +00:00
Aaron Giles
a701f8537e Added bilinear filter option to software rendering. Not hooked up to anything yet. 2008-06-12 19:14:18 +00:00
Curt Coder
f8912e4a2d COP4xx:
- Added COP421 variant

Thayer's Quest:
- Fixed SSI-263 timings, service mode works now
- Changed to use COP421
2008-06-12 17:20:08 +00:00
Aaron Giles
c10b238896 Added option -[no]coin_lockout (-[no]coinlock) to control coin lockout behavior. 2008-06-12 17:06:49 +00:00
Aaron Giles
9b80898ee0 From Shimapong
MAMETesters Bugs Fixed
----------------------
00277: [Misc.] groundfx.c, gunbustr.c, superchs.c, taito_f3.c,
       undrfire.c, psikyosh.c: Cheat search causes fatal error

Source Changes
--------------
Updated cheat system
 - Changed the function of default memory read in case of the search
   to prevent from crashing if a game uses cpu_spinutil()
   Now basically used do_memory_read() instead of do_cpu_read()
   (Try to search in actfancr between this and previous version)
   NOTE : It's not fundamental solution but no longer crash
 - Cleaned up read_data() and write_data()
 - Cleaned up save/load routine and added open_cheat_database()
 - Added new menu "Cheat Commands" into the cheat main menu
     the following commands are supported in this menu
      * reload cheat code (the same as Reload Database key)
      * cheats ON/OFF (the same as Toggle Cheat key)
      * watchpoints ON/OFF (the same as Shift + Toggle Cheat key)
      * save description (save the title of the game)
      * save raw code (save raw cheat code with new format)
 - Fixed several bugs which has found in testing
 - Renamed functions based on coding guidlines
2008-06-12 16:46:29 +00:00
Aaron Giles
b171ca8111 From: Micko [mailto:mmicko@gmail.com]
Subject: 8080/8085 fix

Hello Aaron,
 
While working on drivers for some 8080 machines, I have noticed that there are some errors in flags settings in CPU implementation.
I have done fixes and now sending patch for code . Also there are changes to set right timings for both 8080 and 8085 since not all timings are up to documentation.
 
Regards,
Miodrag
2008-06-12 16:34:47 +00:00
Aaron Giles
50bbb369bb From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Static qualifiers, header file cleanups, and new
include files for MAME

The first patch adds static qualifiers where appropriate, adds missing
#include statements, source comments and header declarations, as well
as removes dead declarations.  The only part that required judgement
was deciding whether audio/galaxian.c declarations should be in
galaxold.h or galaxian.h, it doesn't make sense for them to be
declared in both.  This exercise did find a bug, galaxold_init_stars
was declared incorrectly in video/fastfred.c.
2008-06-12 16:25:34 +00:00
Aaron Giles
13a86d728f From: Oliver Stoeneberg [mailto:oliverst@online.de]
Sent: Thursday, June 05, 2008 9:00 PM
To: submit@mamedev.org
Subject: Machine -> machine cleanups

This cleans up the usage of Machine in many of the src/video files.
2008-06-12 16:19:45 +00:00
Aaron Giles
e852db663a x86/x64 back-ends:
* fixed adc/sbb so that they don't optimize out ever
 * fixed detection of special and/or/xor cases
 * fixed GETFLGS opcode so that it doesn't return anything other than requested flags
 * changed LZCNT/BSWAP to be more flexible in register selection

C back-end:
 * implemented flag variants of SEXT/ROLAND/ROLINS/LZCNT/BSWAP

PPC DRC:
 * added more symbols for debugging
 * fixed lmw/stmw if rA is one of the loaded/stored registers
 * removed unnecessary variables & structure members
 * optimized for the XER and CR0 case where XER doesn't need an overflow calculation
 *
2008-06-12 16:13:05 +00:00
Aaron Giles
20ee6bc325 PPC DRC:
* changed SPU receive model to a push model; updated drivers accordingly
 * added macros for setting the SPU transmit handler and sending bytes
 * cleaned up ppc.h
2008-06-12 02:48:11 +00:00
Jim Stolis
f4e88036ac Timer 0's second split counter was incorrectly checking the Timer 1 Run Control Bit 2008-06-12 00:47:44 +00:00
Curt Coder
d8c3b0e4f1 COP4xx:
- fixed LEI instruction
2008-06-11 19:19:00 +00:00
Aaron Giles
2f524636c6 PPC DRC:
* added detection of MMU enablement in 403GCX case
 * fixed bug in protection bounds violation detection for 4XX to get ppd
    to the "ppc4xx_spu_rx_data unimplemented" message
2008-06-11 14:37:33 +00:00
Aaron Giles
7079892d7e Fixed left/right accesses to work with recent memory handler changes. 2008-06-11 13:44:46 +00:00
Aaron Giles
fe1200fdcb Thayer's Quest:
* fixed conflicting layout (not super happy with the technique...)

x64 back-end:
 * added a "hop" around the prolog of the HANDLE opcode to allow fall-through

x86 back-end:
 * redesigned stack management to keep the stack at the same 16-byte alignment

PPC DRC:
 * fixed parameter ordering for masked reads/writes
2008-06-11 05:27:13 +00:00
Aaron Giles
e9b6f6be04 Firebeat driver:
* Added VBLANK IRQ clear
 * Added ATAPI IRQ clear
 * Tried to add UART IRQ clear but it doesn't yet work
 * Most of the games start to show something again with these changes
 * Added fast RAM region

PPC DRC:
 * Fixed TLB filling for 4XX protection ranges

PC16552d:
 * Tried to wire up assert/clear signals for this chip based on guesswork
   (anyone want to implement it properly? :)
2008-06-10 21:49:33 +00:00
Aaron Giles
a96458747d PPC common:
* reduced address bus width of 4xx series to 31 bits per the
    documentation

PPC DRC:
 * fixed bug that would jump to incorrect PC after filling the
    TLB during a mismatch event
 * added explicit address truncation to 31 bits for 4xx series
 * added new PPCDRC_ACCURATE_SINGLES option, which removes the
    excessive (and very likely unecessary) extra rounding when
    performing the "fast" single-precision floating point ops

Konami drivers:
 * designated fast RAM accesses for work RAM
 * removed unnecessary mirroring
 
Model 3:
 * identified and fixed VBLANK bit in real3d status which was
    causing the system to hang at startup
 * designated fast RAM accesses for work RAM

53C810:
 * changed read/write handles to proper READ8/WRITE8_HANDLER
    callbacks so they can eventually be used directly
2008-06-10 20:10:57 +00:00
Couriersud
4074d8cec7 01827: All sets in galaga.c: DIP switch information is not being readded properly when .CFG is read.
* commit 1728 got lost somehow - reapplied
2008-06-10 19:32:13 +00:00
Aaron Giles
ec6953c047 PPC DRC:
* Added basic cycle counts for longer instructions
 * Added penalty for polling timebase and decrementer registers
 * Fixed dependencies in cpu.mak
2008-06-10 09:03:45 +00:00
Aaron Giles
156d61c760 DRC frontend:
* changed from tracking "live" registers to tracking "necessary" registers
 * genericized register tracking to be more flexible
 * added previous instruction pointer to opcode descriptions

PowerPC frontend/DRC:
 * cleaned up register tracking implementation
 * fixed numerous errors and shortcomings in the tracking
 * added support for removing unnecessary XER CA and CR0 computations
 * updated UML logging to output new frontend statistics

MIPS3 frontend/DRC:
 * tweaked register tracking to match new DRC frontend system
 * updated UML logging to output new frontend statistics
2008-06-10 07:34:48 +00:00
Aaron Giles
cfab49b884 map command in the debugger now does separate read/write/fetch lookups 2008-06-09 17:30:01 +00:00
Aaron Giles
e9c099ef71 Don't show disclaimers/warnings if the debugger is enabled. 2008-06-09 16:49:52 +00:00
Aaron Giles
8ba5758341 Oops, broke the TLB. 2008-06-09 16:49:33 +00:00
Aaron Giles
748e83917a PPC DRC:
* minor flags optimizations:
    - broke CR into several individual bits of state
    - extracted the SO bit from XER into its own state
2008-06-09 16:18:19 +00:00
Aaron Giles
282300c587 x86/x64 back-ends:
* fixed DIVS/DIVU opcode so they properly compute SZ flags when requested;
    fixes camera wackiness in nbapbp

PPC DRC:
 * added support for 4xx protection registers via the MMU
 * added TLBH, TLBU, and DEC to the list of registers in the debugger
 * turned off "end of transfer" DMA signals in favor of "transfer count 0"
    signals; fixes memory-to-memory DMA in fiveside
2008-06-09 04:58:41 +00:00
Aaron Giles
003a6e94ca Fixed bug in x86 and x64 backends where sometimes the flags would be corrupted.
In particular, we always clobbered the flags for the subfze instruction, which
broke the nbapbp camera and some other things.
2008-06-08 08:43:26 +00:00
R. Belmont
9ecc076521 64-bit GCC compile fixes. 2008-06-08 02:52:17 +00:00
Aaron Giles
bc9235ad0f gticlub:
* Converted sysreg_r/w to 8-bit handlers
 * Added hack to make network IRQs work; brings some games back to life

UML:
 * Fixed STORE opcode description to allow immediate source operands

x86/x64 back-ends:
 * Added flag support to SEXT, ROLAND, ROLINS, LZCNT opcodes

PPC DRC:
 * Rewrote lswi/stswi as subroutines
 * Made accesses to tempdata explicitly dword or qword
 * Fixed SRR0 when generating a syscall
 * Removed no longer necessary TESTs on extsb/w, rlwinm, rlwnm, rlwimi, cntlzw
 * Fixed bug where the SO flag was not being computed for compares
 * Fixed flag computations for mulhw/mulhwu/mullw
 * Fixed subtlety of shifts between 32 and 63 in srw/sraw
 * Fixed mffs/mtfsf to use FP registers
 * Fixed mtfsfi to use the immediate value properly
 * Now marking terminal count bit in DMA status register
2008-06-07 08:13:22 +00:00
Aaron Giles
0148608c39 UML:
* Added simple symbol table to the UML for improved disassembly
 * Changed optional disassembler cache parameter to a drcuml object

PPC DRC:
 * Added symbols for most common variables
 * Fixed bug in handling XER carry flag for subo. forms
 * Simplified flag insertion logic for opcodeo. forms
2008-06-06 23:00:30 +00:00
Aaron Giles
1a63c29d04 UML:
* Improved disassembly output
2008-06-06 22:13:09 +00:00
Aaron Giles
cacc9b25ca UML:
* Added logic to simplify opcodes as much as possible at the UML layer.
 * Removed similar logic in the x86 and x64 back-ends.
 * Added stricter parameter validation for registers and mapvars
2008-06-06 19:45:29 +00:00
Aaron Giles
40d2b88ef5 UML:
* Added NOP opcode
2008-06-06 17:13:53 +00:00
Wilbert Pol
73625e2656 Fixed handling of the U register in the RET instructions and when taking an interrupt in the Nintendo Minx cpu core. 2008-06-06 16:28:00 +00:00
Aaron Giles
1c1498b0fc UML:
* Removed explicit flag requests from the shorthand opcodes
 * Added optimization function to drcuml which is called at block end
 * Added logic to compute the necessary flags based on upcoming opcodes
    and only select those flags which are required
 * Updated the PPC and MIPS3 DRCs to no longer explicitly specify flags
2008-06-06 07:36:36 +00:00
Aaron Giles
ee8162eff9 UML:
* Wrote new disassembler based on enhanced opcode info structure.
 * Moved disassembler into drcuml.c and removed old code.
 * Extended disassembler buffer sizes to at least 256 bytes.
2008-06-06 06:42:21 +00:00
Aaron Giles
829cf37d87 PPC DRC:
* Fixed bug where a branch and link to the link register would
    overwrite the link register before fetching the target address
2008-06-06 04:23:13 +00:00
Aaron Giles
b80ba7e56c UML changes:
* Added more extensive per-opcode information in preparation for UML 
    optimization step.
 * Made validation more thorough using the extended information.
 * Disabled back-end validation for now until it can be revisited
    using the new tables.
 * Changed GETFLGS encoding so that the mask is in parameter 2 instead
    of the flags field.
2008-06-06 04:02:06 +00:00
Jonathan Gevaryahu
89769efec7 Update comments for tms5220 and sn76496. Add a Couriersud-style pinout to tms5220.c 2008-06-06 03:16:02 +00:00
Nathan Woods
5ea9b4a12a Passing a running_machine parameter 2008-06-06 00:38:58 +00:00
Nathan Woods
136db6075d Fixed compilation error when neither HAS_PPC403GA nor HAS_PPC403GCX are defined 2008-06-06 00:38:33 +00:00
mariuszw1
fbda64287d 68681 DUART update
- converted to device interface
- converted to 8 bit device
- added input and output port
- added X1/16 timer
2008-06-05 20:58:08 +00:00
Aaron Giles
524dde249b Fix -listxml again. 2008-06-05 17:23:32 +00:00
Aaron Giles
cf4b81fba9 Separated condflags into two individual fields. 2008-06-05 17:21:35 +00:00
Aaron Giles
1bc774b32b Cleanups/version bump. 2008-06-05 15:57:00 +00:00
Aaron Giles
cfb9caf08f 01829: bermudat, gwar, ikari, victroad + clones: MAME freezes at "initializing" screen 2008-06-05 15:36:27 +00:00
R. Belmont
317607a143 64-bit GCC compile fixes. 2008-06-05 14:10:56 +00:00
Nathan Woods
5b94cc19d5 MESS-specific compilation fix 2008-06-05 11:12:33 +00:00
Aaron Giles
2deed30b29 Fixes for 64-bit MSVC compile. 2008-06-05 09:49:23 +00:00
Aaron Giles
bba83b69aa 01859: looping, loopinga, skybump: Fatal Error crash
The CPU context is not active in a timer callback. You have to set it
yourself.
2008-06-05 09:47:46 +00:00
Aaron Giles
48332dea92 Added compile-time error if PTR64 is incorrectly set. 2008-06-05 09:41:02 +00:00
Aaron Giles
a5abe031ca It is now an actual error to have duplicate input bits. 2008-06-05 09:36:23 +00:00
Aaron Giles
7474bb220a MAMETesters Bugs Fixed
----------------------
- 01845: [Core] all games: cheats are broken
- 01846: [Misc.] -CHEAT trigger causes MAME crash with PSX-type CPU drivers

Source Changes
--------------
Updated cheat system
  - Locked search region when malloc fails to allocate gigantic memory
    instead of fatal error. Also locked zero malloc error in case of
    search speed = all memory in 32-bit CPU. And added search region
    range checker to lock a search region with a big risk

  - Fixed a bug that old code is always converted to specified
    separator in enable/disable menu

  - Refined new cheat format.
     * Rewritten cheat format again. newest format is
       ":gamename::type::address::data::extend_data:(description:comment)"
       Expanded type field now requires 10 bytes (not 8 bytes) and
       it divides internal cpu (2 bytes) and type (8 bytes) parameters

     * Removed VWrite, VRWrite. The flag of Value Selection is merged
       into expanded type field now.

     * Added CBit (Condition Bit). This checks bit in read data then
       set or clear bit in case of true.

     * Rearranged cheat code viwer based on newest cheat format

  - Fixed unworking Load Old Format option. If you want to load old or
    older format code, set it (default is OFF)

  - Renamed functions/structures based on coding guidlines
    All structures and included parameters are completed

  - Merged resize_*_no_dispose() into resize_*()

  - Removed the hack of search region for SH-2 CPU because required
    region is now set as expected without this hack
2008-06-05 08:46:48 +00:00
Aaron Giles
56279e2780 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] memory_region madness

The memory_region and memory_region_length functions are probably the
two most common functions in MAME that don't take a machine parameter
but probably should given the direction MAME has been going in
removing global variable references.  Attached are massive patches to
accomplish this.  I wish they could be smaller, but sadly, this is
butchery, not brain surgery.

The first patch makes some simplifications to help the second patch
along.  It is a general improvement as well, and hopefully can be
applied even if the second patch is rejected.  Specifically:

1.  Introduced/updated some include files for files that export
functions whose apis will need to be changed (cps1.h, decocrpt.h,
ms32.h, pgm.h, fd1089.h, konami1.h).  In the case of konami.c, I
renamed the file konami1.c and changed the api and callers to only
require one function export.
2.  Pulled memory_region*() calls out of for loops and folded the
occasional duplicated call.  The compiler can't likely infer that the
results are constant, so this should be a minor performance win as
well.
2008-06-05 08:40:22 +00:00
Aaron Giles
ed6ad8b4f9 PowerPC dynamic recompiler: [Aaron Giles]
- rewrote PowerPC implementation as a dynamic recompiler on top
    of the universal recompiler engine
 - wrote a front-end to analyze PowerPC code paths and register usage
 - wrote a common shared module with C implementations of tricky
    CPU behaviors
 - added separate CPU types for the variants supported, instead of
    relying on a hidden model enum
 - rewrote the serial port emulation for the 4xx series to be more
    accurate and not rely on separate DMA handlers
 - rewrote the MMU handling to implement a software TLB that faults
    in pages and handles changed bits appropriately
 - implemented emulation of the PowerPC 603's software TLB, which
    allows the model 3 games to run without a hack to disable the MMU

Updated the PowerPC disassembler to share constants with the rest of
the core, and to more aggressively use simplified mnemonics, especially
for branches. [Aaron Giles]

Universal recompiler:
 - fixed frontend to handle opcode widths different from bus width
 - added several new opcodes:
    * (D)GETFLGS - copies the UML flags to a destination operand
    * FDRNDS - rounds a double precision value to single precision
 - renamed several opcodes:
    * SETC   -> CARRY
    * XTRACT -> ROLAND
    * INSERT -> ROLINS
 - consolidated the following opcodes:
    * LOAD?U -> LOAD
    * LOAD?S -> LOADS
    * STORE? -> STORE
    * READ?U -> READ
    * READ?M -> READM
    * WRITE? -> WRITE
    * WRITM? -> WRITEM
    * SEXT?  -> SEXT
    * FTOI?? -> FTOINT
    * FFRI?  -> FFRINT
    * FFRF?  -> FFRFLT
 - removed some opcodes:
    * FLAGS - can be done with GETFLGS/LOAD4/ROLINS
    * ZEXT - can be achieved with AND
    * READ?S - can be achieved with READ/SEXT
 - updated C, x86, and x64 back-ends to support these opcode changes
 - updated disassembler to support these opcode changes
 
MIPS3 dynamic recompiler:
 - updated to use new/changed opcode forms
 - changed context switch so that it only swaps a single pointer

Konami Hornet changes: [Aaron Giles]
 - updated to new PowerPC configurations
 - updated some memory handlers to be native 8-bit handlers
 - cleaned up JVS implementation to work with new serial code
 - added fast RAM for the work RAM to give a small speed boost

Konami GTI Club changes: [Aaron Giles]
 - updated to new PowerPC configurations
 - updated some memory handlers to be native 8-bit handlers

Konami Viper/ZR107 changes: [Aaron Giles]
 - updated to new PowerPC configurations

Sega Model 3 changes: [Aaron Giles]
 - updated to new PowerPC configurations
 - reimplemented/centralized interrupt handling
 - these games are broken for the moment

Fixed crasher due to some Konami games using 8 layers in
the K056832 implementation, even though it was only written
for 4. [Aaron Giles]

Added fisttp opcode to i386 disassembler. [Aaron Giles]
2008-06-05 08:34:13 +00:00
Nicola Salmoria
8ea2d9e334 optimised tilemap_draw rowscroll case to avoid overhead when used with clip rects smaller than the tilemap. This reduces by an order of magnitude the time taken to render the bg in Gunnail stage 5. 2008-06-05 08:04:46 +00:00
Wilbert Pol
752af71d6e Fixed flag results for INC, DEC, AND, OR, and XOR instructions in the Nintendo Minx cpu core. 2008-06-04 21:32:22 +00:00
Curt Coder
113d019062 Used cpunum_ instead of active_cpu_. 2008-06-04 20:24:31 +00:00
Curt Coder
6d6a5b237d - Added HALT opcode and halt mode to the COP410
- Added Microbus support, clock divisor selection, and CKO mode selection to the COP420
- Changed Thayer's Quest keyboard interface to at least slightly resemble the schematics
2008-06-04 20:15:15 +00:00
Wilbert Pol
114c783141 Fixed opcodes 45, 4D, 55, 5D, B5, B6, B7, FC, FD, and CF 70-7F in the Nintendo Minx cpu core. 2008-06-04 18:41:38 +00:00
Couriersud
eab9ba4983 00788: Problem about Joy Axis Input for Pedal.
* Remapping now works as described in report.
2008-06-04 01:07:52 +00:00
Couriersud
9aacf830fb Credit Fabio Priuli: Remove port_input_read_indexed in favor of the use of proper tags in a number of drivers
* Checked sprintf calls for sufficient buffer space [couriersud]
2008-06-02 20:00:25 +00:00
Wilbert Pol
e290212a9d Fixed taking of interrupts in the Nintendo Minx cpu core. 2008-06-02 19:28:29 +00:00
R. Belmont
bdbbf5ccaf 53c810 now passes IRQ state with the IRQ callback. 2008-06-02 16:46:36 +00:00
Wilbert Pol
6b1719e1c6 Some Nintendo Minx cpu core updates:
- Styling changes
- Added instruction cycle counts.
- Added interrupt support.
- Added HALT support.
- Fixed INT instruction.
- Added incomplete support for DIV and MUL instructions.
- Fixed MOV [#nnnn],BA and MOV [#nnnn],HL instructions.
2008-06-01 16:43:24 +00:00
Aaron Giles
91f55454e4 Fixed Cause register for bad COP instructions. Verified with
mtetrisc and starsldr that they both throw and handle these
exceptions.
2008-05-30 05:59:06 +00:00
Couriersud
c1a1cab523 Fix for Mantis 01699: asteroid, asteroi1, asteroib, asterock, meteor, meteorts: Abnormal discrete sounds
* added NODE_RELATIVE(NODE, offset) macro to discrete.h
* fix asteroid.c, canyon.c, skydiver.c and tank8.c to use this macro instead of adding directly to the node
2008-05-29 21:11:10 +00:00
Aaron Giles
fe4a4c70b4 64-bit compile fix (d'oh!) 2008-05-29 17:00:13 +00:00
Nathan Woods
e067dc7d9d Made it possible to pass a NULL errorbug to input_port_config_alloc() 2008-05-29 10:56:20 +00:00
Nathan Woods
aa14505377 MESS-specific fix 2008-05-29 10:55:52 +00:00
Aaron Giles
c852c42952 Cleanups for 0.125u3. 2008-05-29 09:25:51 +00:00
Aaron Giles
7247ecbce2 From: ShimaPong
fixed Testers bug [01039]
-------------------------------

Updated cheat sytem drastically
  * Supported (preliminary) new cheat format
     - Added new operations
        PDWWrite, RWrite, VRWrite, CWrite, Move, Branch, Loop, Popup
     - Added new options
        ValueSelectNegative, Return, AddressReadFrom, DataReadFrom
     - Added cheat variables
        You can store data with Write or Move operations and
        read as an address or data from each fields
     - Added condition check
        for CWrite, Branch and Popup operations
     - Added new custom codes
        Separator, Layer
     - Supported Shared Code [MESS ONLY]
        different machine shares common code for a game

  * Allowed mixed label-select or user-select with standard code

  * Added label selector menu for label-selection code

  * Added extend comment displayer for multi-line comments

  * Added command menu for cheat list and watchpoint
     Easy selectable cheat commands in this menu

  * Added debug view menu [DEBUG BUILD ONLY]
     It displays internal info to debug cheat system

  * Supported unique separator by ui_draw_menu() in several menus

  * Added user defined search region
     You can set free memory range from cheat database

  * Enhanced error check for cheat code to prevent from unexpected working
     Error code is locked. If you select this code, the analyser works
     instead of the code activater

  * Enhanced value input with keyboard-less
     Cheat edit key gives new input system in several menus
     Left/right keys moves the edit cursor and up/down keys changes a value

  * Added cheat command save, reload, reset in option menu

  * Supported address shift in searching
     Now searchable default region in TMS340*0 cpu games (Trog, Smash T.V. etc)

  * Refined cheat menu handling with function pointer called cheat_menu_handler

  * Added format strings table to manage in an integrated fashion

  * Deleted unused hacks of default search region for Neo Geo and TMS34010

  * Refined code based on MAME coding guidelines
     - Renamed many functions/structures/constants
        But not complete due to too many items
     - Converted small but often used functions to INLINE
     - Fixed a comparison in case of 0 or NULL
     - Added missing function prototype for several functions
2008-05-29 08:54:21 +00:00
Aaron Giles
7733c26136 Removed obsolete comment. 2008-05-29 08:40:40 +00:00
Aaron Giles
c9caffe405 Added internal default tags for input ports when saving/loading. 2008-05-29 08:39:27 +00:00
Aaron Giles
e06d8f3ce8 Fixed bug that caused DIP switches to be improperly read from game cfg file. 2008-05-29 08:28:20 +00:00
Aaron Giles
650dfb8a28 Moved implementation-specific state into a pointer hanging off of the core
MIPS3 state.

Removed large context in favor of a pointer to the large context to help
improve context switch times.
2008-05-29 08:22:50 +00:00
Nicola Salmoria
ceeb086b24 removed meaningless service_coin_lockout_w function
updated the zaxxon driver to correctly handle the coin enable lines
2008-05-29 08:02:46 +00:00
Aaron Giles
65934e7aa5 Added new option -snapname which lets you provide a template for how snapshot
names are generated.

Added new astring functions astring_del, astring_replace, and astring_replacec
to help perform simple search/replace substitution.
2008-05-29 08:00:23 +00:00
Aaron Giles
eeb821032e Several miscellaneous changes:
1. In the MIPS core:
    - renamed struct mips3_config -> mips3_config
    - updated all drivers to the new names
    - removed MIPS3DRC_STRICT_COP0 flag, which is no longer used
    - a few minor cleanups

2. In the CPU interface:
    - added new 'intention' parameter to the translate callback to
       indicate read/write/fetch access, user/supervisor mode, and
       a flag for debugging
    - updated all call sites to pass an appropriate value
    - updated all CPU cores to the new prototype

3. In the UML:
    - added new opcode SETC to set the carry flag from a source bit
    - added new opcode BSWAP to swap bytes within a value
    - updated C, x86, x64 back-ends to support the new opcodes
    - updated disassembler to support the new opcodes

4. In the DRC frontend:
    - fixed bug in handling edge case with the PC near the 0 or ~0
2008-05-29 07:18:35 +00:00
Nathan Woods
f2c5b0db7d Fixed a benign bug in the x86 DRC backend 2008-05-28 12:04:08 +00:00
Couriersud
26e4f50fc0 Credit Miodrag Milanovic: Implement autoload mode in 8257
* added support for autoload mode
* fixed bug in calculating count
2008-05-27 19:45:27 +00:00
Nicola Salmoria
246885e3c2 fixed cpu_getiloops() which was not returning the correct value.
This fixes
01780: pingpong: Level select arrow's not displayed 
and possibly other timing related bugs.
2008-05-26 08:31:34 +00:00
Aaron Giles
40dea6049e Added new front-end flag to tag privileged instructions.
Minor tweaks/cleanups to the MIPS3 drc.
2008-05-25 22:09:21 +00:00
Aaron Giles
238dc3aada Removed empty input ports from the empty driver, in favor of a NULL entry. 2008-05-25 22:07:15 +00:00
Aaron Giles
62fb5f8f0d 01822: OSD causes crash when try to show the Screen Refresh Rate menu 2008-05-25 22:03:20 +00:00
Aaron Giles
564be8e7a2 Refinement of previous check-in to handle conditional inputs.
Fixed 01836: qcrayon2: Conditional input not visible/working for dip game control joystick
2008-05-25 21:59:19 +00:00
Aaron Giles
67db0742f0 Added TOKEN_SKIP_* macros to tokenize.h.
Changed error reporting during input port detokenization to fill a buffer
rather than fatalerror-ing immediately. Should now properly skip over
any invalid tokens.

Enhanced error detection during input port detokenization to catch 
duplicate bits. There are a lot of these!

Updated initialization code to print errors and fatal only if the input
ports were unable to be constructed at all.
2008-05-25 21:24:19 +00:00
Nathan Woods
200cda66f1 MESS-specific: Added hook for default keyboard key names 2008-05-25 19:39:13 +00:00
Nathan Woods
2bd5a419b1 Changed text used to specify a menu separator, and now using a #define 2008-05-25 18:31:29 +00:00
Nathan Woods
0a624c8f7a Updates from MESS in response to 0.125u2 2008-05-25 12:58:14 +00:00
Aaron Giles
7cb1326459 Renamed EEPROM_* to eeprom_*
Typedef'ed a real eeprom_interface structure.

Added a PORT_CUSTOM for the eeprom bit reading. Updated several
drivers to use that by specifying it in their input ports instead
of having a custom read handler that inserted the bit forcefully.

Added a PORT_CUSTOM for the ticket dispenser callback as well.
Updated the dcheese driver to use it.

Many more drivers can be updated to use these new PORT_CUSTOMs
in the future, eliminating hacky input port read handlers.
2008-05-25 05:38:24 +00:00
Couriersud
558aab9d08 Fix DEBUG=1 compile 2008-05-24 20:45:29 +00:00
Aaron Giles
a643604cbd 01825: Toggling Tab menu works as F2 key in games with their service
mode DIPs on the top of the menu

Fixed behavior of toggle switches so that they don't lose their value
when the UI is up. They also can now be used for multibit DIP switch
settings in which case they toggle through all the options.

New functions input_field_select_next_setting() and 
input_field_select_previous_setting() which can be used to iterate
properly through DIP switches. Fixed the behavior for cases where
conditional ports are in play (you could get stuck). Changed uimenu.c
to call these instead of implementing its own.

Changed uimenu.c so that hitting ENTER on a DIP switch resets it to
its default value. This is analagous to how the OSD sliders behave.
2008-05-24 17:01:49 +00:00
Wilbert Pol
4e1afc32f5 Fixed memory access in the 80286 cpu core which made i286.h obsolete. Changed CPUINFO_INT_MAX_INSTRUCTION_BYTES to prevent crashes during disassembly. 2008-05-24 15:14:12 +00:00
Nicola Salmoria
939f6d8b98 fix PORT_IMPULSE handling. The old code would force inputs to be asserted for at least the number of frames indicated, but keeping the button pressed would keep the input asserted. Now the input is asserted far exactly the number of frames indicated. 2008-05-24 11:49:31 +00:00
Couriersud
55c18d1204 Mantis 01819: "Coinlock disabled coin x" message displayed upon startup
* Only check for coin lockout if actually pressed
2008-05-23 20:30:58 +00:00
Curt Coder
879dc21122 Fixed COP420 instructions XAS and INIL. Fixed cycle count for extended opcodes. Added CKO general purpose input. 2008-05-23 15:15:41 +00:00
Nathan Woods
4f6b8e9d91 Passing more running_machine* parameters around 2008-05-23 11:22:34 +00:00
Roberto Fresca
cc5dc262de Improvements to American Poker II driver.
- Reworked the color routines switching to resnet system.
 - Added a resistor network diagram.
 - Switch to pre-defined crystal value.
 - Changed the WATCHDOG_TIME_INIT to be based on miliseconds instead of hertz.
 - Other minor cleanup/fixes.
 - Updated technical notes.
2008-05-23 10:46:26 +00:00
Curt Coder
9962c0f826 Fixed COP420 instructions JSRP, LBI, LQID, and SKT. Draco now has sound. 2008-05-22 15:16:06 +00:00
Aaron Giles
d5ff8c002a Cleanups and version bump. 2008-05-22 05:19:16 +00:00
Aaron Giles
f4523617ed Fix 01815: All Sets: Saved machine states do not properly adjust to changes in -samplerate 2008-05-22 05:15:33 +00:00
Aaron Giles
11b1331d3f Fixed incorrectly sized array that led to stack corruption during validity checks.
Fixes CPS1 no-start issue.
2008-05-22 05:04:14 +00:00
Aaron Giles
defcc8895b From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Missed Machine->machine changes

Hi mamedev,

A short incremental to my last deprecat.h patches.  This one is the
result of a slightly improved fixup script, which finds more cases
where Machine can be replaced with machine.  Six more files lose
deprecat.h.

~aa
2008-05-22 03:24:45 +00:00
Aaron Giles
a300da2178 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] More Machine->machine changes, add machine to irq
callbacks

Hi mamedev,

Here are two more patches to eliminate Machine globals.  The first
patch was autogenerated by the attached fixup script.  That script has
been updated to catch additional cases which it previously missed
(when Machine is the last parameter to a function or Machine is used
in an assignment).  This makes ~50 more files deprecat.h free.

A sizable chunk (~20%) of the remaining uses of the Machine global in
the drivers are due to irq callbacks for sound and machine updates.
Typically such callbacks need to call cpunum_set_input_line, which
requires a machine parameter, so if the callbacks don't pass the
machine parameter, these routines have no choice but to reference the
global variable.

The second patch attempts to address most cases of this by adding the
machine parameter to the callback interfaces.  This allows us to
remove #include "deprecat.h" from ~150 files, at the cost of having to
fix up hundreds of callbacks.

In total, these patches reduced the number of files with deprecat.h
from 783 to 575.

~aa
2008-05-22 03:23:28 +00:00
Aaron Giles
98a8e73947 From: Antoine Mine [mailto:Antoine.Mine@ens.fr]
Subject: saturn CPU patch

Dear MAMEDev,

The attached patch corrects several bugs in the emulation of the saturn 
CPU. These corrections are needed to make new HP48 drivers (to be 
submitted to MESS imminently) work.
AFAIK, MESS is the only place where this CPU is used, so, the patch
should 
not cause any regression in MAME.
The patch is against 0125u1.

Best regards,
-
Antoine Mine
2008-05-22 03:09:01 +00:00
Aaron Giles
bb9fec0f86 Moving old DRC out of the way. 2008-05-22 03:06:49 +00:00
Aaron Giles
1561edf049 UML changes:
* Added new opcode LZCNT which returns the number of leading zeros in
   a parameter.
 * Added new opcode XTRACT which is a combined rotate/mask (basically
   rlwinm from PowerPC)
 * Added new opcode INSERT which is a combined rotate/mask/blend
   (basically rlwimi from PowerPC). Best. Opcode. Ever.
 * Updated all back-ends to support these new opcodes.
 * Fixed several bugs relating to shifts/rotates and optimizing out
   cases incorrectly.

MIPS3 DRC changes:
 * Updated to use INSERT and XTRACT where appropriate
 * Cleaned up register usage to enable an additional direct mapping;
   this means Linux gets 1 now and Windows gets 3
2008-05-22 03:05:13 +00:00
Aaron Giles
229e42f524 Turn on joysticks by default. 2008-05-21 16:59:26 +00:00
Aaron Giles
caa2a53c7f Added support in the MIPS recompiler to map a few common registers to
machine registers if the machine supports it. Currently only x64 on
Windows has enough free registers to do so, though PowerPC will almost
certainly be able to take advantage of this. Gives a minor speedup.
2008-05-21 10:59:05 +00:00
Aaron Giles
96c8dfd0ab Fix compiler error. 2008-05-21 08:59:20 +00:00
Aaron Giles
21920d4e44 Minor cleanup. 2008-05-21 07:54:40 +00:00
Jonathan Gevaryahu
009fcb7b7c Added proper interpolation sub-cycles ('PC' cycles and A/B subcycles of each) to tms5110 and updated comments. Also added code to update lfsr 20 times instead of once per sample, so it matches the real chip. Updated tms5110 to use shifts instead of divides during interpolation. 2008-05-20 04:38:56 +00:00
Jonathan Gevaryahu
ae6bf98511 Added proper interpolation sub-cycles ('PC' cycles and A/B subcycles of each) and updated comments 2008-05-20 01:53:25 +00:00
Aaron Giles
3c6278aef8 Fix crasher in drcfe.c. 2008-05-20 00:59:20 +00:00
Aaron Giles
fdf128e2d7 Implemented IDT instructions. All invalid instruction asserts are now runtime-only. 2008-05-20 00:22:50 +00:00
Wilbert Pol
50ec9b1076 Fixed 80286 databus widths. 2008-05-19 19:43:17 +00:00
R. Belmont
071164f3a7 64-bit GCC compile fix. 2008-05-19 17:10:32 +00:00
Aaron Giles
d411c2c74c Numerous MIPS3 DRC updates:
* Fixed front-end so that virtual no-op instructions are still targeted
as branch targets.

* Fixed front-end to mark the beginning of each sequence as needing TLB
validation, since any sequence can be jumped to from anywhere.

* Redid the MIPS3 TLB implementation. Fixed the exception vector and
type handling. Changed the bitfields to directly map from the MIPS TLB
format. Added distinction between TLB fill and TLB valid/modified
exceptions.

* Added separate modes for user, supervisor, and kernel modes. Each mode
does proper verification of addresses now and generates address errors
for invalid accesses.

* Fixed several bugs in the TLB implementation; not everything works
yet but it's a lot closer.

* Made COP0 access checking mandatory in non-kernel modes.

* Fixed several crashes when recompiling virtual no-ops.

* Fixed TLB bug where entries for virtual address 0 were present by 
default.

* Fixed bug in the map variable implementation that would sometimes
result in incorrectly recovered values.
2008-05-19 16:58:42 +00:00
Curt Coder
d41a31dd12 Fixed CDP1869 character memory access, and Cidelsa sprite flashing. 2008-05-19 15:38:19 +00:00
R. Belmont
8d210c82b5 Fixed compiler warning for Apple GCC. 2008-05-19 02:03:59 +00:00
Aaron Giles
969a705508 Added back-end validation mechanism, and a handful of tests as examples.
This will be expanded in the future.

Added two new opcodes: SAVE and RESTORE to save and restore the entire
virtual machine state for examination/setup.

Added new back-end function get_info() which returns information from
the back-end about how many actual registers will be mapped.

Fixed a bug that mapped the high a low parts of registers to the same
address. This should help the C back-end run better on big-endian
architectures.
2008-05-19 00:58:16 +00:00
Aaron Giles
1c33c2f29b Fixed crash when reading ports by tag, when some ports don't have tags. 2008-05-18 14:21:28 +00:00
Nathan Woods
d2123b2803 Passing running_machine* parameter 2008-05-17 22:42:22 +00:00
Aaron Giles
28855e088a Fixed a couple of obvious errors in the TLB implementation. 2008-05-17 19:48:17 +00:00
Aaron Giles
0c1aaf1526 Added some instrumentation for the MMU. To enable it, turn on PRINTF_MMU at the top
of the file. Currently it is left on because none of the MAME games rely on it.
2008-05-17 17:11:12 +00:00
Aaron Giles
5c0e902901 Cleaned up operand sizing in the C core. Should be closer to working
on big-endian systems.
2008-05-17 06:47:25 +00:00
Aaron Giles
9abf2c3efa Added support for ROUNDSS and ROUNDSD on Penryn architectures. 2008-05-17 02:11:48 +00:00
Aaron Giles
b2ad4af505 As if Intel didn't already have enough opcodes. Added defines for new
Penryn opcodes.
2008-05-16 14:36:54 +00:00
Aaron Giles
271ac2a7a2 Added a quick & dirty attempt at implementing tlb_mismatch. It's likely wrong,
but it's better than nothing. Also added an assertion if you jump to unmapped
code and added handling for compile-time page faults.
2008-05-16 05:21:25 +00:00
Aaron Giles
be680b1346 Oops forgot to save EBX. 2008-05-16 05:20:41 +00:00
Aaron Giles
0d249058cf Fix bug 1804. Now checking for SSE3 before using truncation functions.
Also fixed incorrect floating point assertion in x86 back-end.
2008-05-16 05:08:32 +00:00
Couriersud
eb59ae219e Fix 64bit build on linux
* Changed (void *) <some int32> to (void *)(FPTR)<some int32>
2008-05-15 21:29:09 +00:00
Aaron Giles
096331c856 Restructured input port internals and cleaned up inptport.c:
* Input ports are now maintained hierarchically. At the top
level are input ports, which contain a list of fields. Each
field represents one or more bits of the port. Certain fields
such as DIP switches and configuration switches contain a
list of settings, which can be selected. DIP switch fields
can also contain a list of DIP switch locations.

* Normalized behavior of port overrides (via PORT_INCLUDE or
by defining multiple overlapping bits). All fields within a
port are kept in strict increasing bit order, so altered DIP
switches are now kept in the appropriate order. This addresses
MAMETesters bug 01671.

* Live port state is now fully separate from configured 
state. This is manifested in a similar way to devices, where
a const list of ports can be managed either offline or live.
Each port has a pointer to an opaque set of live state which
is NULL when offline or valid when live. Each port also has
a running_machine * which is also NULL when offline.

* Because of this new arrangement, the conversion from tokens
to a list of ports now requires reasonably complex memory
allocation, so these port lists must be explicitly allocated
and freed (they are not mantained by automatic resource
allocation).

* Custom and changed callbacks now take a pointer to a field
config instead of a running machine. This provides more
information about what field triggered the change notification.
The machine can be found by referenced field->port->machine.

* The inptport.c module has been cleaned up and many 
ambiguities resolved. Most of this is internal, though it did
result in osd_customize_inputport_list() being changed to
osd_customize_input_type_list(). The parameter to this function
is now a linked list instead of an array, and the structures
referenced have been reorganized somewhat.

* Updated config.c to pass machine parameters to its callbacks.

* Updated validity checks, XML output, and UI system to handle
the new structures.

* Moved large table of default input settings to a separate
include file inpttype.h.

* Removed gross hacks in trackfld and hyperspt NVRAM. These
may be broken as a result.
2008-05-15 16:25:03 +00:00
Aaron Giles
21a686cf7d Cleanups and version bump. 2008-05-15 08:56:29 +00:00
Aaron Giles
934fbd9fc2 Removed unused functions. 2008-05-15 08:53:58 +00:00
Aaron Giles
44fbeff9bf From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Remove opbase globals from the public interface

Hi mamedev,

There are several variables associated with opbase handling which are
global and documented in memory.h and thus their use is not well
controlled.  This patch attempts to remedy this.  Because they are
used in various inline memory functions, they can't yet be made local
to memory.c, but by rescoping their declaration they can be hidden,
much like we hide totalcpu.

Most of the uses are in OPBASE_HANDLER() macros, so by encapsulating
the opbase state into a struct and adding that to the handler
interface those can be converted to local variable manipulation. There
is one use in missile.c in a MACHINE_START that I simply removed, it
shouldn't be needed.

One side effect of this patch is that the various unsafe memory macros
can't be used directly, they will be a compiler error now.  That is
probably for the best.

~aa
2008-05-15 08:22:17 +00:00
Laurent Desnogues
a97ec0a587 - revert commit 1566 2008-05-13 10:22:16 +00:00
Laurent Desnogues
45e055c624 - don't use $(LIBS) for linking where it's not needed (hope I did not break
Windows or cross builds)
2008-05-13 08:34:03 +00:00
Jonathan Gevaryahu
16942d210b Update TMS5200/5220 documentation and comments
Fix the chirp table implementation in both the 51xx and 52xx chips.
2008-05-13 04:56:47 +00:00
Aaron Giles
86dd599aa8 Added uncompressed AVI recording. Extended aviio to be able
to write RGB bitmaps. Unfortunately, the only option is fully
uncompressed, which means the resulting AVIs are *HUGE* and
may not play correctly in realtime due to high data rate. The
intention is that these uncompressed AVIs are post-processed
by other utilities to compress the video and produce a
realtime playable result.

Added new command-line option -aviwrite which works just like
-mngwrite, except it produces AVIs and streams sound to them.
Updated documentation accordingly.

Shift+F12 still produces MNGs for now, though this might change
in the future.

Modified fileio.c to retain the full pathname to the file so
that it can be queried while the file is open.
2008-05-13 03:02:11 +00:00
Jonathan Gevaryahu
a01a97367c s14001a.c - updated comments and version 2008-05-13 01:27:43 +00:00
R. Belmont
3fbca2dbba Fixed unused function and uninitialized variable errors. 2008-05-12 17:00:26 +00:00
Curt Coder
0376d5359f [CDP1852] Minor fixes. 2008-05-12 16:17:54 +00:00
Curt Coder
2528b956f5 Added CDP1852 I/O buffer chip, and used it in Altair/Draco. 2008-05-12 16:10:28 +00:00
Laurent Desnogues
5d02da3db2 - define isnan as _isnan for MSC_VER 2008-05-12 14:51:45 +00:00
Aaron Giles
7bb9e27f80 Fix incorrect assertion. 2008-05-12 14:51:45 +00:00
Manuel Abadia
90f263f8a3 DS5002FP core 2008-05-12 09:03:33 +00:00
Aaron Giles
e23b3c3776 Potential fix for Linux crashes. 2008-05-12 05:35:13 +00:00
R. Belmont
2e363855ba Fixed a bunch of compiler errors w/64-bit GCC. Result does not run. 2008-05-12 02:29:07 +00:00
Aaron Giles
b735b4be6c New universal dynamic recompiler system. The central module
is drcuml.c, which defines a universal machine language
syntax that can be generated by a frontend recompiler and
then retargeted via a generic backend interface to any of
a number of different architectures. A disassembler for the
UML is also included to allow examination of the generated
UML code.

Currently supported backend architectures include 32-bit x86,
64-bit x86, and a platform-neutral interpreted C backend that
can be used as a fallback for platforms without native 
support. The C backend also performs additional validation
to ensure assumptions are met.

Along with the new architecture is a new MIPS III/IV 
recompiler frontend. This frontend has been rewritten from 
the old x64-specific recompiler to generate UML opcodes
instead. This means that the single recompiler can be used
to target multiple backend architectures and should in
theory produce identical results across all of them.

The old 32-bit and 64-bit MIPS recompilers are now officially
retired. The new system provides similar performance (within
5% generally) to the old system and has similar compatibility.
The only currently known issues are some problems with the
two Gauntlet 3D games.
2008-05-11 22:15:13 +00:00
Curt Coder
1a32caa7e0 [CDP1802] Appease compiler. 2008-05-10 09:54:48 +00:00
Curt Coder
0999af40c5 [CDP1802] Added memory address parameter to DMA callbacks, and added a macro for the CPU interface. 2008-05-09 18:49:52 +00:00
Roberto Fresca
351f215b12 Added XTAL_30MHz to the list. This one is used by Impera Magic Card. 2008-05-07 19:32:54 +00:00
Roberto Zandona
f14541031b another fix typo 2008-05-07 07:18:37 +00:00
Roberto Zandona
1dfeb3ba53 fyx typo 2008-05-07 07:10:50 +00:00
Roberto Zandona
4c138a09fc add feature to the cia6526: in READ operation the value can be forced by a extern electric circuit; this feature is necessary to the mess side 2008-05-07 07:01:48 +00:00
Aaron Giles
692a5e4674 Spacing and version bump. 2008-05-05 07:10:47 +00:00
Aaron Giles
0cee075e0d Added xchg opcodes. 2008-05-05 06:11:13 +00:00
Nathan Woods
c75d63a569 Removed bogus assertion - DEVICE_TYPE_WILDCARD is NULL 2008-05-04 23:09:07 +00:00
Nathan Woods
fae89f0d4c MESS-specific change; added running_machine parameter 2008-05-04 14:23:41 +00:00
Nathan Woods
d2414bddfe Changed MESS-specific key for pasting (PrtScn was _not_ a good choice on Windows) 2008-05-04 01:01:52 +00:00
R. Belmont
1119d3f129 Fixed an envelope corner case in the SCSP and AICA (kingshriek) 2008-05-03 23:59:54 +00:00
Nathan Woods
dfe585bf85 Added a MESS-specific "paste" command; used to paste clipboard data into MESS's
natural keyboard
2008-05-03 17:56:41 +00:00
Couriersud
b7880b33fa ay8910.c:
* Fixes mantis bugs 01767, 01769
* Corrected some comments
2008-05-02 10:58:11 +00:00
Aaron Giles
67e76e92f5 Cleanups/version bump. 2008-05-01 14:32:31 +00:00
Aaron Giles
37c56cf592 01752: Warnings making standard .124u4 in GCC 4.3.0 (mingw)
Well, two of them were valid.
2008-05-01 14:12:20 +00:00
Aaron Giles
23890e5da7 This is a better fix for MAMETesters 00149: No error report for invalid BIOS setting 2008-05-01 14:02:12 +00:00
Aaron Giles
89c9e00953 From: Micko [mailto:mmicko@gmail.com]
Subject: PIC 8259 changes

Hello Aaron,
 
As I have announced before, here are some changes on pic8259.
 
for changelog:
 
[PIC8259] Adding support for 8080/85 mode interrupts
 
Please just check it against x86 platform, not sure if is_x86 in ICW4 is obligatory in case of using it on x86 platform.
 
Regards,
Miodrag
2008-05-01 13:54:19 +00:00
Aaron Giles
a910dafd37 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Small deprecat.h related cleanup

Hi mamedev,

While doing some work on eliminating some uses of deprecat.h, I came
across a few files that didn't have it that used deprecated features.
A little investigation revealed they were getting it through
debugger.h, typically by referencing m68000.h.  Since deprecat.h is
intended to document the files that need updating (otherwise it would
just be included in a common header), I reworked debugger.h to not
import it when the debugger is not enabled, and fixed the files that
broke as a result.

~aa
2008-05-01 13:52:28 +00:00
Aaron Giles
c967dcb102 From: Duke [mailto:startaq@gmail.com]
Subject: MSM6242 device

Hello,

the attached patch changes the MSM6242 RTC into a proper device.

--Dirk
2008-05-01 13:48:49 +00:00
Aaron Giles
04f54299af Couple of minor tweaks to sync with offline WIP work. 2008-05-01 08:53:23 +00:00
davidhay
f398a24db2 de-hack metro tilemaps... (lightly tested..) 2008-04-28 07:52:21 +00:00
Couriersud
fc1cb8d473 ay8910: Cosmetic
* bring more in line with coding standards
* add more comments
2008-04-27 00:26:41 +00:00
Couriersud
899c47f7b8 Fix AY-3-8910/YM2149 and derivatives envelope handling. 2008-04-26 18:57:15 +00:00
Nathan Woods
8d1c77366c MESS specific fix 2008-04-26 18:35:40 +00:00
Couriersud
0e77434bec Added DISCRETE_KEY_SALLEN_FILTER to discrete sound system 2008-04-25 08:42:13 +00:00
Aaron Giles
08c75151c7 Cleanups for 0.124u4. 2008-04-24 06:43:16 +00:00
Aaron Giles
6a955fc076 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Remove more Machine globals, #include "deprecat.h"

Hi mamedev,

The attached patch goes through and converts a number of Machine
globals to machine locals, and then removes #include "deprecat.h" if
appropriate.  The script that generated it is included, since the
patch itself is rather large and would have been time consuming to
produce otherwise.

The script doesn't convert cases of Machine that aren't in common
macros.  I'll try to tackle those later if someone doesn't beat me to
it.

~aa
2008-04-24 06:15:00 +00:00
Aaron Giles
737ff53930 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Eliminate assignments in conditionals

Hi mamedev,

Assignments in conditionals are never really needed in C and are
occasionally just plain bugs (== gets typed as =).  As such, it would
be good to remove these from MAME so that compilers that warn on this
construct can flag the likely bugs (MSVC does this for example).  The
attached patch does just that.  In addition, it refactors some
repeated code which had this in taito_f3.c into a couple macros. Using
inline functions would unfortunately have required more significant
changes, perhaps I'll tackle that another day.

~aa
2008-04-24 05:59:39 +00:00
Aaron Giles
38ee64ae77 From: Lei Wu [mailto:lanewu@hotmail.com]
Subject: fixed official mame bug #426 [Emuman]
2008-04-24 05:56:52 +00:00
Aaron Giles
14c852c8e9 Updated to use ACCESSING macros like memconv.h. 2008-04-24 05:53:47 +00:00
Aaron Giles
c205e10516 Fix 01742: punchout, armwrest + many vsnes.c and playch10.c games: Refreshspeed causes fatal exception in punchout. 2008-04-24 05:32:57 +00:00
Couriersud
b4fd76f158 ay8910.c:
* change DC offset for AY-3-8910 to 0.2V
* tones are now distinguishable again
galaxian.c:
* adjust "konami" sound volume
gyruss.c:
* adjust sound volume
2008-04-23 23:31:14 +00:00
Nicola Salmoria
e14a331553 increased Gyruss volume, changed UI to allow volumes higher than 2.0. 2008-04-23 07:47:23 +00:00
Couriersud
85a5a3d827 AY-3-8910 rewrite:
* adds a model to calculate mixing of channels with different resistance loads.
* based on above, each channel may be assigned a different load in individual case
  i.e. channels not tied together
* rewrote ay8910.c to make emulation simpler
* changed the config structure to include a flag field and output resistor loads.
* Updated all drivers affected.
* Added some "Todos" related to stuff I discovered when reading datasheets.
* Fixed a bug in disc_flt.c (konami filters)

galaxian.c:
* Fixed discrete sound and konami filter addressing
* Changed addressing of AY-3-8910 to be in line with schematics

gyruss.c:
* Added discrete sound for filtering ("konami"-style) and mixing.
2008-04-22 21:58:36 +00:00
Aaron Giles
cb8514a175 From: Miodrag Milanovic
Hello Aaron,
 
I have found few more things not ok in T11, this time I have fixed it myself.
 
1. HALT - should call interrupt vector
2. ILLEGAL - had PC=0 at the end which makes code not run fine
3. MARK - now it is implemented

Can you please check if your drivers are working fine with these cahanges.
 
After adjustments I have some things working finaly.
 
Please inform me,
 
Miodrag Milanovic
2008-04-21 03:41:51 +00:00
Aaron Giles
af71decdb7 D'oh, another accidental checkin. :) 2008-04-21 00:13:37 +00:00
Aaron Giles
ae4002a56d From: Corrado Tomaselli [mailto:corrado.to@tiscali.it]
Subject: ghost and goblins (italian bootleg, harder)

this is an italian bootleg with a really hard gameplay. it's quite 
impossible to say the truth ;)
pics of the board:
http://www.citylan.it/gngitaly/main%20PCB%20component%20side.jpg
http://www.citylan.it/gngitaly/roms%20PCB%20component%20side.jpg

New clones added:
Ghosts'n Goblins (Italian bootleg, harder)
2008-04-21 00:11:19 +00:00
Aaron Giles
5edbda88da From: Atari Ace
Subject: [patch] Fix 01711: connect4, mpu4met0, mpu4tst2, mpu4utst, bctvidbs: Using -CHEAT trigger causes a crash
Hi mamedev,

This patch fixes bug 01711.  Given the location of the original assert
it is clear the original code wasn't quite right.

~aa
2008-04-21 00:09:58 +00:00
Aaron Giles
9fb86da645 From: Atari Ace
Subject: [patch] Fix 00149: No error report for invalid BIOS setting.
Hi mamedev,

This small patch makes specifying an invalid bios a fatalerror and
removes the need to expose system_bios to the drivers by reworking the
code in playch10.c to determine its bios more directly (in other
words, it removes an ugly hack).  This should resolve bug 00149,
although I did not implement the popmessage as suggested.

~aa
2008-04-21 00:05:54 +00:00
Aaron Giles
e26f80fde0 (from Mariusz Wojcieszek)
Attached is diff which makes Touchmaster games playable.

General changes:
- Added preliminary 68681 DUART (machine\68681.c)
- Moved Microtouch touch screen controller emulation to separate module (machine\microtch.c)

New games added or promoted from NOT_WORKING status
---------------------------------------------------
Touchmaster [Mariusz Wojcieszek]
Touchmaster 3000 [Mariusz Wojcieszek]
Touchmaster 4000 [Mariusz Wojcieszek]
Touchmaster 5000 [Mariusz Wojcieszek]
Touchmaster 7000 [Mariusz Wojcieszek]
2008-04-21 00:00:55 +00:00
Aaron Giles
e91eb4007c Flipped the damn mem_mask. It is no longer inverted when passed to
read/write handlers. Updated all drivers accordingly. Hope I didn't
miss anything important!

Blame OG and smf for goading me into it. :)
2008-04-20 02:38:35 +00:00
Aaron Giles
9dd3f691ba Expanded the set of memory accessor functions. In addition to
direct byte, word, dword, and qword accessors for all bus sizes,
there are now masked word, dword, and qword accessors for all
bus sizes.

IMPORTANT: masks that are passed to the _masked_* functions are
NOT inverted. Although inverted masks are still passed to callback
functions, when you request a masked read or write the masks should
represent the bits you want.

Updated the various MIPS cores that use these functions to invert
their masks.
2008-04-19 19:09:24 +00:00
Wilbert Pol
446e65fb98 Changed the inline validity checks to work around GCC bug #35885. 2008-04-19 18:17:02 +00:00
Wilbert Pol
0d4aca282f Converted the ppi8255 implementation to a device. 2008-04-19 18:11:47 +00:00
Roberto Fresca
4b86e644f9 65C02/65CE02 CPUs and variants:
Fixed the 6502 family of disassemblers to show the correct bit to operate for BBR, BBS, RMB and SMB instructions.
2008-04-18 06:06:04 +00:00
Curt Coder
e8abef328c [CDP1869] Added a macro for the interface, and made write handlers optional. 2008-04-17 14:29:25 +00:00
Nathan Woods
c7c9bc1341 Fixed compilation error when using memory_install_read_handler() and
memory_install_write_handler()
2008-04-17 11:36:33 +00:00
Aaron Giles
b35c15fef5 Cleanups and version bump to 0.124u3. 2008-04-17 05:26:05 +00:00
Aaron Giles
2028ecc2f7 Removed ancient 720 kludge.
Added support in the T-11 core for an external vector via irq_callback.
Apparently the hardware actually did support this and it is necessary
for emulating the BK 0010/11 computer in MESS.
2008-04-17 02:58:24 +00:00
Aaron Giles
12836eea2c Created new macro: AM_RAM_WRITE(handler) which specifies a memory
range to be RAM-like for reads but calls the given handler for writes.

Replaced AM_READWRITE(SMH_RAM, handler) with AM_RAM_WRITE(handler).
Also replaced AM_RAM AM_WRITE(handler) with AM_RAM_WRITE(handler).
2008-04-16 14:38:12 +00:00
Aaron Giles
a7c928efaa Memory map merges. 2008-04-16 04:54:57 +00:00
Nathan Woods
212d7e36d4 Changed MESS's hooks used by natural keyboard support, eliminating MESS's need
for input_port_set_digital_value()
2008-04-16 01:43:37 +00:00
Aaron Giles
ffc326f8be Converted the IDE controller to a device. Updated all drivers
accordingly.

Added new functions for dynamically installing device memory 
read/write handlers.

Updated install_memory_XXX_handler() functions to take a machine
parameter. Updated all drivers accordingly.

Merged installation of read and write handlers where appropriate.

Simplified memory.c code for dynamic installation so that a single
function handles all the work; a NULL read or write handler 
indicates not to install anything for reads or writes.
2008-04-15 16:49:50 +00:00
Aaron Giles
71ca9ecec2 Switched subhandlers to using masks instead of shifts. Reduced the number
of stub handlers required as a result. Updated all drivers accordingly.
2008-04-15 06:39:34 +00:00
Curt Coder
e7cfe56749 [CDP1802] Added machine parameter and macros for the callback functions. This seems to have fixed the player sprite flashing in Destroyer/Altair/Draco. 2008-04-14 18:06:56 +00:00
Aaron Giles
7b97535eae Added support for using smaller-sized memory handlers directly in
memory maps. To do so, you either need to specify a shift amount 
(mapping to a particular subset of the bus) or SHIFT_PACKED, which
maps a single larger sized read/write down to multiple reads or
writes at the smaller size.

Removed word-sized handlers from 6821pia.c. Updated drivers that
needed them to use these new interfaces instead.

Updated gaelco3d.c and itech8.c to remove the need for memconv.h
by using this new feature.

Re-removed input_port_set_digital_value().
2008-04-14 16:47:02 +00:00
Nathan Woods
f9766f2052 Changes from MESS:
src/emu/cpu/m68000/m68kmame.c:
src/emu/cpu/minx/minx.c:
	- Fixed compilation errors on CPU cores not enabled in MAME
	
src/emu/inptport.c:
src/emu/inptport.h:
	- Readded input_port_set_digital_value() (which is needed for natural
          keyboard inpout in MESS)
	- Added a running_machine parameter to inputx_update()
2008-04-14 11:12:42 +00:00
Andrew Gardner
76e7b85e1f Finished memory map merge for W drivers.
Some whitespace touch-ups.
2008-04-13 18:02:50 +00:00
smf-
59b480f561 fixed calculation of bit 31 of GTE FLAG register, when writing to it directly.
added lm mode to OP and fixed the calculation.
added lm mode to SQR.
2008-04-13 16:02:16 +00:00
smf-
02b2ba8a6d fixed cross-hair update when the game is not polling the coordinates 2008-04-13 15:42:20 +00:00
Wilbert Pol
4725e2fa8e Fixed DA A instruction when A is > 0xF9. 2008-04-13 15:09:06 +00:00
Aaron Giles
842ed3efb0 Changed device read/write functions to take a const device_config *.
Reverted recent hacks to get around this and removed unnecessary casts.
2008-04-13 15:01:23 +00:00
Roberto Zandona
dfe1952883 fix an opcode in quizf1
fix dasm for bp+ix+offset8 and bp+it+offset8
2008-04-13 09:22:07 +00:00
smf-
6d87810b1f added sf/lm support to INTPL, improved flag calculation & calculates correct rgb
tidied up DPCS a bit.
2008-04-12 21:51:38 +00:00
Wilbert Pol
7fb79442c1 Changed the pic8259 implementation into a device. 2008-04-12 19:15:27 +00:00
smf-
d713e9cce6 tidied up DPCS, improved flag calculation and added support for lm/sf fields. 2008-04-12 18:08:27 +00:00
smf-
303caf3f8b removed casts and removed unnecessary decoding from NCLIP.
added signed values to PAIR & PAIR64.
renamed PAIR64.lw to PAIR64.q
2008-04-12 10:47:39 +00:00
R. Belmont
7544575aea Fix compile error on systems where time.h isn't automagically included. 2008-04-12 06:14:31 +00:00
Aaron Giles
439dbe872a Cleanups and version bump to 0.124u2. 2008-04-12 05:16:26 +00:00
Nathan Woods
9402f05a08 MESS specific fix 2008-04-12 03:41:30 +00:00
smf-
5f75c62fb9 fixed avsz3 & avsz4 flag & otz calculation. 2008-04-11 23:10:07 +00:00
smf-
5ed8b1252b fixed flag calculation in F macro. 2008-04-11 21:42:05 +00:00
smf-
22df06f724 fixed sign extension when inverting mem_mask. 2008-04-11 18:01:14 +00:00
Aaron Giles
58842fd57b Various tweaks/fixes from MAMEPlus:
* save state support for FD1094 chips
 * improved graphics in athena
 * improved sound balance in armedf
 * derived refresh rate for toaplan1 games
 * improved sound balance in tmnt games
 * derived clocks for suprridr
 * tweaked xmen visible area
 * derived clocks and refresh rate in twin16 driver
2008-04-11 14:25:38 +00:00
Aaron Giles
250e9056d5 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: change for cpunum_set_irq_callback() callback function

This patch adds the running_machine* parameter to the function passed 
into cpunum_set_irq_callback() and adds the IRQ_CALLBACK macro for 
the callback function.
2008-04-11 14:00:47 +00:00
Aaron Giles
ab2154804c From: Tomas Garcia-Meras Capote
Subject: Update for "Euro League (bootleg)"
Hello,
 some tiny updates for the driver wc90b.c :
 
-Added dumps for all GALs on the PCB
-Removed the second YM2203, it isn't present on the bootleg boards
-Changed the clocks according to the oscilators found on the board,
 the previous speeds were measured on a goal92 PCB, not using a real "Euro League" PCB.
-Added a new osc to xtal.h
 
If you need any info about this update, please mail me.
 
Regards: ClawGrip (Tomas Garcia-Meras)

--

Also merged memory maps [Aaron Giles]
2008-04-11 13:58:17 +00:00
Aaron Giles
dbb98c5473 Reduced the number of save state callback types from 3 to 1. The
only remaining form is the one that takes a pointer parameter.

Added macros for STATE_PRESAVE and STATE_POSTLOAD to define common
functions. Added machine parameter to these functions.

Updated all drivers and CPU/sound cores  to use the new macros 
and consolidate on the single function type. As a result pushed
the machine parameter through a few initialization stacks.

Removed unnecessary postload callbacks which only marked all tiles
dirty, since this is done automatically by the tilemap engine.
2008-04-11 05:41:46 +00:00
Roberto Zandona
e1a8ab0d1b fix dasm for rep instruction 2008-04-10 21:50:31 +00:00
Aaron Giles
4867aa38b9 Take two of the previous changes. I think this is a little simpler,
using masks instead of the generic byte/word/dword read functions.
2008-04-09 14:48:22 +00:00
Aaron Giles
b4e4b1d3f0 Oops, remove accidentally checked-in makefile changes. 2008-04-09 13:23:25 +00:00
Aaron Giles
eeee1cb437 Rewrote core memory handlers as inline functions. These should be easier to
trace through in a debug build, yet should operate the same as before.

Created a complete set of functions for all databus sizes (8,16,32,64) and
all endiannesses. A few functions are redundant, but it is now very clear
which functions to use in which scenarios. It is also now possible to rely
on being able to access values of 8, 16, 32 or 64 bits via the built-in
accessors without fear of crashing.

Updated all cores using 8-bit handlers to explicitly call the 8-bit handlers
with the appropriate endianness.

Fixed a few games which were calling n-bit handlers directly to use the
generic forms. In the future, this is all the access drivers will have.
2008-04-09 07:31:47 +00:00
Roberto Zandona
7800d2bb70 fix dasm for two code and prefix opcode in real time encryption 2008-04-08 22:39:28 +00:00
Wilbert Pol
8dcedabb57 Removed the hardcoded dependency on a 8254 device from the 8042kbdc code. Changed the drivers using the 8042kdbc to define their own 8042kdbc - 8254 dependency. 2008-04-08 18:35:48 +00:00
Nathan Woods
3364fdb2d8 Initializing device_config.machine to NULL 2008-04-08 00:30:56 +00:00
smf-
ee9ce122a9 removed useless casts in BLEZ/BGTZ 2008-04-07 23:49:48 +00:00
smf-
af97c741b3 fixed OTZ sign extension
fixed reading from SXYP
fixed reading from IRGB
fixed writing to LZCR
fixed sign extension of GTE control registers
fixed writing to FLAG

New games added or promoted from NOT_WORKING status
---------------------------------------------------
1 on 1 Government (JAPAN)
2008-04-07 23:20:31 +00:00
Roberto Zandona
486cdcb6b5 1) fix nec v30 dasm when a "real-time encrypted cpu" is used
2) fix Execution Clocks for add,addc,and,or,xor,cmp,sub,subc instruction
2008-04-07 22:30:52 +00:00
Wilbert Pol
35462b15c5 Changed the 8237dma implementation into a device. 2008-04-07 17:53:56 +00:00
Aaron Giles
bcb340612b Fixed bug that prevented the initial input port update from working properly. 2008-04-07 00:21:00 +00:00
smf-
4d21cff799 added IR1/IR2/IR3 saturation when calculating ORGB
fixed spelling mistake.
2008-04-06 22:48:25 +00:00
Aaron Giles
8a914b3d22 Renamed input port functions:
readinputport           -> input_port_read_indexed
  readinputportbytag      -> input_port_read
  readinputportbytag_safe -> input_port_read_safe

Added machine parameter to input port functions. Updated
many drivers to accomplish this.
2008-04-06 22:02:39 +00:00
smf-
be21ac9e08 fixed IRGB truncation and conversion to IR1/IR2/IR3 2008-04-06 21:38:25 +00:00
smf-
3d05dc8d91 fixed SZ0 truncation. 2008-04-06 21:12:02 +00:00
smf-
d485e8ed3c Fixed the SR masks for MTC0.
Added ability to test the instruction/data cache ram. The scratchpad and BIU register are now handled internally to the CPU.

All writes are performed with masks. SWL/SWR used to be implemented with two writes ( one byte and one word ) when writing three bytes, now it only ever performs one. Byte and Word writes use masks as they leave the rest of the register on the bus, which can be picked up by larger registers.

The read/write functions to use are cached when the SR bits are updated, as are the bad address masks.

Added coprocessor 1 & 3 support, though they don't do anything useful.

All loads now go through the delay pipeline, a lwl/lwr will grab the value out of the pipeline if it's updating the same register.

Added undocumented behaviour of BLEZ/BGTZ. The comparison for zero can be changed by specifying an alternate register in the RT field ( the documentation says you should always use register 0 ).

Restricted to 16 COP0 registers & generate an exception if any of the 5 for the MMU are used.

Added BCF/BCT instructions, although I have found no conditions that affect them yet.

Generates an exception if any MMU instructions are executed.

Sets the CE instruction for all exceptions, not just those involving a coprocessor. The bits of the opcode that specify the coprocessor are grabbed no matter what the instruction.

Added TAR register and BT bit in SR. When an exception occurs during a branch, BT determines whether it was taken or not. The TAR register gets set to the destination of the branch.

Fixed the BD bit when you are in a branch delay slot and you didn't take the branch, this shows up in the pipeline as !pc.

Fixed branches within a branch delay slot.

Multiply & divide instructions can be aborted if you write to HI/LO before reading the result.
Added data breakpoints, you don't appear to be able to set breakpoints on any of the addresses internal to the CPU.

Multiply/divide/GTE instructions can execute when an exception is taken, although the EPC indicates that it hasn't. The BIOS avoids rerunning GTE instructions as they are destructive, so you have to make sure they run.

Added bus error handling, PSXCPU is limited to 8mb of ram & any access outside this range will trigger an exception. I believe this is to be an internal limit.

Added CXD8611R as a specific CPU type, System 12 appears to allow more than 8mb of ram & it's possible that this is different.

Mapped out all instructions to either generate an exception or ignore bits.

Updated the disassembler to match the decoding.

Fixed disassembling of branch instructions in a branch delay slot.

Lui checks for a ori/addiu following and will show you the result.

Added step over/out support.

Fixed standalone disassembler.
2008-04-06 16:42:10 +00:00
Aaron Giles
830b8836fc 01609: Various - tested srmp4 (ssv.c), ttmahjng (route16.c), vsmahjng (vsnes,c), tokkae (konamigx.c), sf2 (cps1.c): INP playback loses sync quickly
Rewrote INP recording from scratch, since all old INPs are broken anyways.
Header now includes timestamp, which overrides the default time base for MAME's system time.
Each frame recorded now gets a timestamp.
Analog ports are recorded once per frame and interpolated.
Analog port calculations are all done in fixed point for consistent results.
A bunch of other minor tweaks in the input port code.

There may still be a few changes to the final INP format (considering adding 
NVRAM data directly in the INP file, for example....) but this at least seems
to work for the games I've tried.
2008-04-06 06:03:00 +00:00
Nathan Woods
8fcdf39e8e Added a temporary MESS specific hook 2008-04-06 01:19:15 +00:00
Couriersud
0d10d0df2c 00761: finalapr: Heavy performance hit.
Actually remove tilemap invalidating from tilemap_set_palette_offset (tilemap.c)
Following recommendation from Aaron added a comment to tilemap.h
2008-04-04 19:43:20 +00:00
R. Belmont
0dbbecd2b3 [SCSICD] Reverted previous change. 2008-04-04 17:05:53 +00:00
Aaron Giles
356d5dd812 Fixes 01659: stereo balancing is wrong
Apparently if you cast a negative number to a UINT32 at compile-time,
gcc does the "right thing" and saturates it to 0.
2008-04-04 14:17:56 +00:00
Aaron Giles
2c63abdad0 Actually fixed -refreshspeed. 2008-04-04 13:31:25 +00:00
Couriersud
0c79f46193 01663: Hat switches not working
All custom itemids were mapped to class SWITCH. With the recent modification, this implicitly changed to ABSOLUTE.
This fix will use the passed itemid to determine the class.
2008-04-04 07:38:35 +00:00
Nathan Woods
6498f1b8f2 Updated devconv.h to work with 0.124u1 2008-04-04 01:51:39 +00:00
Couriersud
2cfb327cbe Show a message if coin-lockout is active and coin x is pressed. 2008-04-03 15:37:45 +00:00
Aaron Giles
31336e491e Cleanups and version bump to 0.124u1. 2008-04-03 07:57:25 +00:00
Aaron Giles
efbe64428a Switched from ACCESSING_BYTE_*, ACCESSING_WORD_*, ACCESSING_DWORD_*
macros to ACCESSING_BITS_*_* macros.
2008-04-03 07:36:23 +00:00
Aaron Giles
ca3d7d01e6 From: Wilbert Pol
Subject: pit8253 device

I have converted the pit8253 implementation into a device. To make it  
easier to use I've also created a src/emu/devconv.h in the same style  
as src/emu/memconv.h.

I do not have all roms/disk images to test all drivers.  I have only  
been able to test pf2012, filetto, and topgunnr.
2008-04-03 05:26:47 +00:00
Aaron Giles
e621d87cfe From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: MESS machine stuff

Another machine parameter added to a MESS function call.
2008-04-03 05:21:51 +00:00
Curt Coder
1859e012d2 - converted CDP1869 to the new device system
- refactored to represent how the hardware actually works
- added PMA latching on OUT5
- separated Cidelsa video to its own file
2008-04-02 14:43:06 +00:00
Curt Coder
12589d9abd More COP400 fixes:
- fixed serial timer
- fixed clocks
- fixed COP410 RMB3, XAD instructions
- general cleanup
2008-04-02 14:36:50 +00:00
Nathan Woods
36af5b18bc Tweaked the hooks that MESS has in the MAME initialization process 2008-04-02 10:59:32 +00:00
Aaron Giles
fa67773ba7 From: JEA Wallace [mailto:jeaw100@york.ac.uk]
Subject: Further ACIA changes

Added dynamic control of RX and TX pins to 6850 ACIA emulation - this is
needed for correct operation of the MPU4 Video communications system, 
and may be handy for some MESS systems. To use, set the rx and tx clocks
to 0 in the acia interface, then use acia_tx_clock_in() and 
acia_rx_clock_in() respectively.
2008-04-02 08:37:28 +00:00
Aaron Giles
35b88f45fe From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: small change for MESS cleanup

This adds the "Machine" parameter to a MESS function call in MAME 
code to go along with Machine -> machine ckeanups in MESS
2008-04-02 08:34:24 +00:00
Aaron Giles
bddaca5de2 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: Machine -> machine cleanups

This patch changes "Machine" to "machine", when the runnin-machine 
parameter is already available. In some cases I could even remove the 
dprecat.h.

I will look for some occurances where it can be easily changed and 
afterward take a step at adding the running_machine parameter in a 
few places.
2008-04-02 08:33:06 +00:00
Aaron Giles
2a9d6c09bf Added missing #include. 2008-04-02 08:17:56 +00:00
Nathan Woods
ff3b615c69 Removing false assertion; NULL is also DEVICE_TYPE_WILDCARD 2008-04-02 01:39:31 +00:00
Couriersud
f4b7ad20e2 discrete sound system:
* Fix timing of stream_update in discrete_sound_w
  All sound cores update before processing changed data
* Add streeam_update to discrete_sound_r
* Now supports multiple output nodes per module. 
  There is the possibility to support multiple outputs per module.
  In this case, NODE_XXX is the default output. Alternative outputs may
  be accessed by using NODE_XXX_YY where 00<Y<08.
  
  You may also access nodes with macros:
  
      NODE_XXX = NODE_SUB(XXX, 0)
      NODE_XXX = NODE(XXX)
      NODE_XXX_YY = NODE_SUB(XXX, YY) with YY != 00 
      
  This should e.g. make discrete sound emulation easier
  when dealing with e.g. flip flops (Q & QQ) and binary counters

* added sanity checks to check consistency issues introduced by this change
* modules specify number of outputs ==> Certain special modules (WAVELOG) 
  may no longer be used as input nodes
* removed explicit (NODE_XX + expr) from a couple of drivers
2008-04-01 21:17:17 +00:00
Nicola Salmoria
a284b2fd9e fix tilemap viewer to draw the whole tilemap when categories are used 2008-04-01 16:01:34 +00:00
Nathan Woods
68db1ed583 Typo fix 2008-04-01 01:24:10 +00:00
R. Belmont
2a869f8673 Various SCSI devices register state items by their disk ID, which are not unique across device types. This introduces a device-type offset for CD-ROMs so their registrations don't clash with harddisks. 2008-03-31 03:04:34 +00:00
smf-
6c238b4395 Fixed state loading now that the digital i/o board's serial number has been changed to a const by not saving it. As the serial number cannot be changed at run time it was rather pointless. I can only imagine I did it so you could hack the state file instead of having to recompile, though it should probably load it from an external file so you can supply your own. 2008-03-30 22:37:06 +00:00
Nathan Woods
52f6db9e2b MESS specific change; part of MESS' device changeover 2008-03-30 17:14:03 +00:00
Couriersud
cac4d00e7d Add ITEM_IDs for additional axes and switches
Add ITEM_IDs for up to 4 hats/POVs
2008-03-30 14:28:08 +00:00
smf-
ad4ef5d256 New macros added for checking mem_mask. ACCESSING_BYTE_n, ACCESSING_WORD_n & ACCESSING_DWORD_n. These check for any access within the bounds, currently the pattern for checking whether both bytes of a word is written is to make two byte checks ( this pattern existed before because there was no macro for testing a 16 bit word, though you could have used ACCESSING_LSW32 ).
All occurrences of ACCESSING_LSB, ACCESSING_MSB, ACCESSING_LSB16, ACCESSING_MSB16, ACCESSING_LSB32, ACCESSING_MSB32, ACCESSING_LSW32, ACCESSING_MSW32 & simple mem_mask checks have been replace with the new macros.
The old macros are gone.
2008-03-30 09:19:23 +00:00
R. Belmont
40f3c081f4 [AICA, SCSP] Fixed encoding/decoding of negative denormal floats in the DSP. Shouldn't actually affect any games. (kingshriek, Deunan Knute) 2008-03-30 00:12:07 +00:00
Couriersud
4e4c63ba21 Added NODE(x) macro to avoid avoid (NODE_00 + 3) in code. 2008-03-29 23:06:29 +00:00
Couriersud
6a8fa36bcc adds DISCRETE_RCFILTER_SW to discrete sound
* this implements multiple RC networks with CD4066 switches to connect/disconnect capacitor
2008-03-29 21:10:06 +00:00
Nathan Woods
1e57031838 MESS-specific changes; mame.h no longer include's MESS's device.h 2008-03-29 14:46:37 +00:00
Curt Coder
e241656170 Reverted to old execute, new broke more than it fixed. 2008-03-29 14:13:09 +00:00
Curt Coder
6bdcdb0769 Removed debugging code. 2008-03-29 12:18:41 +00:00
Curt Coder
d23a72d1cd Rewrote the COP400 execute function. 2008-03-29 12:17:59 +00:00
Phil Bennett
ed397c466a 1. Added driver for JPM 'Give us a Break' hardware, supporting:
* Give us a Break [2 sets]
* Ten Up [2 sets]
Neither are playable; they don't register coins for some reason.

2. Fixed interrupt handling and 16-bit memory accessors in 6840ptm.c
Also cleaned up code for the sake of readability.

3. JPM games now have their own object archive file.
2008-03-29 01:35:02 +00:00
Aaron Giles
6350ab3302 Minor cleanup and simplification. Removed palette_config(). 2008-03-28 18:59:31 +00:00
Aaron Giles
c5335ee5d4 Fixed compile error in MSVC. 2008-03-28 18:32:09 +00:00
Curt Coder
cb38b8b0d5 - implemented interrupt
- implemented serial input/output
- fixed XAD/LDD, XIS1, RMB3 opcodes
- fixed clock divider
- fixed internal memory map size
- added some cpu variants

As a result, Draco at least initializes the AY-8910 now.
2008-03-28 16:10:23 +00:00
Aaron Giles
4821d456dd Fixed:
- 01622: [Core] -refreshspeed has no effect (aaron) - Resolved.
2008-03-28 10:10:21 +00:00
Aaron Giles
ec36f9c06f Converted special-case DIP switches (service, unknown, unused) into their
own token type rather than expanding into other tokens. The reduces the
number of redundant strings and data.
2008-03-28 00:04:22 +00:00
Aaron Giles
984380354e Added fatal error if AM_READ_PORT() references a non-existent port. 2008-03-28 00:03:25 +00:00
smf-
5ed703d6d5 fixed another bug in new debug hook code, data wasn't shifted properly in all cases. 2008-03-27 21:04:02 +00:00
smf-
07459e6491 Passes mem_mask to the read and write debug hooks. This allows the address & size of the memory access to be correctly calculated when using a memory call that takes a mem_mask. Unexpected results will occur if you pass in a mem_mask that has a gap in. For example 0x00ff00ff is treated as a 3 byte operation, a watchpoint for the gap will still trigger. To simplify the mem_mask decoding it is inverted before passing to the debugger. 2008-03-27 20:23:36 +00:00
smf-
7d38bf085f reverted, I misunderstood something and it's broken. I'm on it. 2008-03-27 19:56:24 +00:00
smf-
8b7582a477 Passes mem_mask to the read and write debug hooks. This allows the address & size of the memory access to be correctly calculated when using a memory call that takes a mem_mask. While testing I found that the address had already had it's lower bits masked out, so watch points were broken already. Unexpected results will occur if you pass in a mem_mask that has a gap in. For example 0x00ff00ff is treated as a 3 byte operation, a watchpoint for the gap will still trigger. To simplify the mem_mask decoding it is inverted before passing to the debugger. 2008-03-27 19:22:20 +00:00
Couriersud
1355872b9a Fix cfg file corruption if joystick is not connected
* itemclass now part of token if item is not found

Settings for joysticks which use a custom item id will still be lost. A fallback has to be provided here since those will use a token generated from the input item name.
2008-03-26 19:06:24 +00:00
Nathan Woods
ec82be4ab3 Removed a MESS-ism 2008-03-26 02:57:08 +00:00
Aaron Giles
a070ad63d8 Fix for incorrect sound bug in 0.124. 2008-03-25 03:24:21 +00:00
Luca Elia
757d289163 Driver for Astro Corp. hardware.
New game:

- Show Hand (roms/current/s/showhand.zip)
2008-03-24 18:29:07 +00:00
Aaron Giles
9476c50ee6 Cleanups for 0.124. Marked Mermaid as working per checkin comment. 2008-03-24 04:07:46 +00:00
Aaron Giles
126d821654 From: Atari Ace [mailto:atari_ace@verizon.net]
Subject: [patch] Minor static/const/include fixups

Hi mamedev,

Another batch of minor static/const/include fixes.  Very boring, very
pedantic.  ;)

~aa
2008-03-24 01:51:12 +00:00
Aaron Giles
e04bb4f699 From: Lei Wu [mailto:lanewu@hotmail.com]
Subject: MSVC9 fix [Emuman]

the original macro is too long, which caused a MSVC9 internal compiler error
2008-03-24 01:36:47 +00:00
Aaron Giles
d77d9fdb64 Added validity check to ensure input port tags don't have duplicates.
Fixed several drivers where there were duplicates.
2008-03-24 01:33:12 +00:00
Aaron Giles
abda9cf18b Undid recent change to remove pen lookups in 16bpp modes. This code
is shared between INDEXED16 and RGB15 rendering and we're not ready 
to remove the lookups yet.
2008-03-24 01:20:39 +00:00
Zsolt Vasvari
c27dfa66fa Added mc6845_set_hpixels_per_column() for the Hercules gfx adapter 2008-03-23 15:24:56 +00:00
Aaron Giles
9f4e71d8b3 From: Duke [mailto:startaq@gmail.com]
Subject: Unnecessary assert in video.c

The assert

assert(machine->config->devicelist != NULL);

in video.c causes the MESS mk1 driver to fail because it doesn't have
any devices - no screens and no sound devices. It works fine when the
assert is removed.

--Dirk
2008-03-23 13:48:43 +00:00
Nathan Woods
0fd62f5d4f Added a machine_config* parameter to certain MESS specific hooks 2008-03-23 11:32:46 +00:00
Zsolt Vasvari
ffaddce8f4 Adds the 'static' as per AtariAce, but he screwed up the alignment of an important table :(, which is why I am sending it myself 2008-03-23 05:26:19 +00:00
Zsolt Vasvari
dc01a6b148 - Converted crystal.c from RGB32 to INDEXED16
- Added PALETTE_INIT( RRRRR_GGGGGG_BBBBB )
2008-03-23 02:41:49 +00:00
Nathan Woods
bbecd3b886 MESS-specific: Interim change in the process of changing over to MAME's device
system
2008-03-22 22:26:25 +00:00
Zsolt Vasvari
8fcc91c77f Added option to programatically set the clock pin. This is needed by at least one MESS driver 2008-03-22 09:49:45 +00:00
Zsolt Vasvari
d2b44c842f DGPIX: Converted to INDEXED16
Removed temp bitmaps
       Changed ugly recursive video RAM code

DDZ:   Removed RGB15 -- it's a "skeleton" driver, so why have it?

video\generic.c: Added PALETTE_INIT(RRRRR_GGGGG_BBBBB) and PALETTE_INIT(BBBBB_GGGGG_RRRRR)
2008-03-22 06:05:05 +00:00
R. Belmont
20e3fa7eb1 [SCSI] Fixed case when no device exists (e.g. running the sys573 BIOS directly). 2008-03-22 03:55:23 +00:00
Aaron Giles
509dc4c064 De-deprecat-ed ui.c.
Changed xmlfile.c to pass in memory handlers to expat so that
our memory overrides are properly managed.
2008-03-21 14:51:26 +00:00
Zsolt Vasvari
5cd63ef3de Fix 01557: dealem: Assertion 2008-03-21 00:25:13 +00:00
Aaron Giles
b28f2c2504 Explicitly fixed unmapped handler masks so that we don't report
all unmapped addresses as 0.
2008-03-20 14:16:00 +00:00
Curt Coder
bc8eb54a5e Cleaned driver up to the latest spec. 2008-03-19 21:55:16 +00:00
Nicola Salmoria
72889926e1 Added Noise Output to the MSM5232 emulation
Added placeholder effects for cymbal and hihat to equites.c. These will need further work to properly emulate the discrete circuitry.
2008-03-19 09:35:57 +00:00
Aaron Giles
4a5001927c Cleanups and version bump. 2008-03-19 08:52:53 +00:00
Aaron Giles
4967410073 From: Oliver Stoeneberg [mailto:oliverst@online.de]
Subject: SH-4 debugger output fix

This patch fixes "garbage" (newlines) in the debugger window when 
debugging the SH-4 CPU.

It also conatins a small comment fix in video/playch10.c and the 
removal of some yet unused or just obsolete macros in emu/cpuint.h.
2008-03-19 08:38:01 +00:00
Aaron Giles
5807e98052 Removed excessive assertions in the device_list code -- it is ok to pass
a NULL list head (in which case you have an empty device list). All the
code works fine with a NULL head and returns appropriate values. Removed
changes to video_screen_count() and video_screen_first() which were added
to work around this behavior.
2008-03-19 08:15:37 +00:00
Aaron Giles
d75b3d1dff Added return value to video_screen_update_partial() indicating whether
or not the VIDEO_UPDATE was called as a result.

Modified amiga.c to use this information so that we guarantee a call
to amiga_render_scanline() regardless of the video state.

Fixes 01521: ar_sdwr: Game hangs on title screen
2008-03-19 07:58:51 +00:00
Zsolt Vasvari
772311642a Removed unneeded pen lookups.
Some code formatting clean-up.
2008-03-18 08:34:01 +00:00
Nicola Salmoria
23a0601055 Alpha Denshi major update
This is still WIP bug I've been working on it for sveral weeks and I want to get it out before leaving for holidays.

- Fixed Alpha 8201/830x MCU simulation.
  - all hacks from the equites driver removed
  - fixed equites restart position after going underground
  - fixed hvolume, splndrbt 2 players
  - removed hacks from exctsccr2
  - fixed CPU gameplay in shougi

- Gekisou promoted to working

- added dump of Alpha 8201 MCU to games that use it (the ROM isn't used yet, HMCS44 CPU core needs to be written first)

- major cleanup of the mess in equites.c:
  - many thanks to Corrado Tomaselli for precious hardware info.
  - implemented bg perspective scrolling using PROMs
  - fixed sprite flip & disable
  - fixed bg color
  - converted bg to tilemaps
  - fixed fg banking
  - fixed screen flip
  - removed meaningless banking of player inputs
  - added UI adjuster for MSM5232 frequency
  - MSM5232 volume control

- fixed MSM5232 noise LFSR formula (done by Jarek Burczynski; thanks to Corrado Tomaselli for samples)

- changed MSM5232 emulator to output channels separately

- added output of SOLO channels to MSM5232 emulator.

- mametesters bugs fixed:
  - 00217 splndrbt: On boot the pcb displays a clean light blu screen while in mame there is a black road. 
  - 00220 splndrbt: Concerning the gfx, on the pcb the background is not linear as shown in mame.
  - 00223 splndrbt: On the first level when you pass the asteroid belt the star road should be light blue instead of black like mam 

- fixed champbas inputs

- merged talbot with champbas, some driver clenaup

- fixed shougi inputs

- switched exctsccb to use the correct gfx ROMs (matches screenshot found in 01058 exctsccb: Exciting soccer bootleg should be placed in champbas.c.)

- fixed sprite bpp in exctscrr, removed the horrible hacks that were used to fix colors and transparency.

- fixed sound clipping in exctsccr
2008-03-17 19:07:23 +00:00
Aaron Giles
e4e17a4fcd Fix 00150: alpinr2b, alpinesa : Assertion with -debug 2008-03-17 16:51:19 +00:00
Aaron Giles
91bc82c487 Better multisession fix. Reverted previous change (1002) and simply
initialize the digital joystick state in input_port_init().
2008-03-17 16:36:26 +00:00
Aaron Giles
ec550fa07b Fixed pick_best_mode in both d3d and ddraw cases to manually extract
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.
2008-03-17 15:50:12 +00:00
Aaron Giles
75056eb1b5 Moved per-screen initialization into DEVICE_START and per-screen cleanup
into DEVICE_STOP.
2008-03-17 15:38:18 +00:00
Aaron Giles
7a0931f08d Fix chicken and egg problem with device_start callbacks.
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.
2008-03-17 15:23:07 +00:00
Zsolt Vasvari
c7b072564c Restores the previous verifyroms() code. Left verifysamples() untocuhed for now. 2008-03-17 15:21:07 +00:00
Aaron Giles
ce011916b4 Made it a fatalerror to registr save state callbacks at the wrong time
if the current driver claims to support save states.
2008-03-17 14:45:27 +00:00
Nathan Woods
6a7c3d1589 Added a crosshair_set_screen() to allow drivers to control which screen(s) on
which crosshairs are displayed.
2008-03-17 12:47:22 +00:00
Nathan Woods
e7508371ed Fix for screenless (and deviceless) systems - this fix assumes that it is
illegal to pass a NULL listhead to device_list_first() and that the assert there
should stand.  Please review and correct if appropriate.
2008-03-17 10:52:16 +00:00
Zsolt Vasvari
c031746599 Fix: 01538: -verifysamples: Inconsistent handling of missing sample sets
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.
2008-03-17 09:19:11 +00:00
Zsolt Vasvari
9eb278b911 Fixed memory leak 2008-03-17 08:56:10 +00:00
Zsolt Vasvari
b78ff83cd0 Fix: 01529: AICA memory leak 2008-03-17 00:58:24 +00:00
Zsolt Vasvari
c230321cdc The on-screen "Reset by watchdog" message only appears in debug builds 2008-03-17 00:44:00 +00:00
Pierpaolo Prazzoli
0895d395a9 Added missing prototype for get_info function. It didn't compile. 2008-03-16 10:43:36 +00:00
Zsolt Vasvari
cb3fffef61 Missing semicolon -- how did it even compile? 2008-03-16 04:34:19 +00:00
Zsolt Vasvari
c64886cc69 Fix: 01499: Various Drivers: Launching games from in-game [TAB] menu 2-3 times in a row throws access violation.
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
2008-03-16 04:31:40 +00:00
Zsolt Vasvari
c66bb0adc5 Fix: 01530: Various Drivers: bitmap memory leaks 2008-03-15 14:14:03 +00:00
Zsolt Vasvari
16e18f24af Fixed: 01508: most vector-based drivers: Assertions 2008-03-15 09:32:24 +00:00
Zsolt Vasvari
f61e037749 Fix 01526: futflash, laserbas, laserbsa: Assertion
Fix 01524: btoads: Assertion 
Fix 01523: nkdodge, nkdodgeb, spdodgeb: Assertion 
Fix 01522: all ddragon.c drivers: Assertion 
Fix 01528: pzlestar, sexyboom: Assertion 
Fix 01527: all meritm.c drivers: Assertion
2008-03-15 03:54:44 +00:00
Zsolt Vasvari
3512bc695d Changes MDRV_TIMER_DURATION to MDRV_TIMER_START_DELAY
Renames duration to start_delay in timer_adjust_periodic() as well
Moves MDRV_ macros into proper header files
2008-03-15 03:13:57 +00:00
Nathan Woods
81fcbd9a2c MESS-specific changes 2008-03-15 00:14:32 +00:00
smf-
5d52f08b7e fixed collision of TIMER define 2008-03-14 21:53:19 +00:00
smf-
a0afb4c516 fixed collision of TIMER define 2008-03-14 21:50:22 +00:00
smf-
b4418ff847 fixed unused variable warnings when assert is not enabled. 2008-03-14 21:35:36 +00:00
Zsolt Vasvari
d4893e2535 Makes suggested changes to MDRV_TIMER macros. Hasn't moved them yet. 2008-03-14 15:13:46 +00:00
Zsolt Vasvari
e4a07ea688 Implements scanline based timer devices.
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
2008-03-14 11:15:31 +00:00
Zsolt Vasvari
e42b02f565 Implements the periodic timer device functionality 2008-03-14 09:52:28 +00:00
Aaron Giles
8fcd45cab1 Renamed *_vbl_cb to *_vblank_callback.
Fixed 01475: Screenless systems are broken because of a vblank callback.
We now create an artificial update mechanism when there are no screens.
2008-03-14 05:19:53 +00:00
Zsolt Vasvari
c0ca716e62 Added skeletion device interface for timers. Just wanted to get feedback.
- Where applicable, added a parallel set of timer functions that take a device_config instead of emu_timer:
	void timer_device_adjust_oneshot(const device_config *timer, attotime duration, INT32 param);
	void timer_device_adjust_periodic(const device_config *timer, attotime duration, INT32 param, attotime period);
	void timer_device_reset(const device_config *timer, attotime duration);
	int timer_device_enable(const device_config *timer, int enable);
	int timer_device_enabled(const device_config *timer);
	int timer_device_get_param(const device_config *timer);
	void *timer_device_get_param_ptr(const device_config *timer);
	attotime timer_device_timeelapsed(const device_config *timer);
	attotime timer_device_timeleft(const device_config *timer);
	attotime timer_device_starttime(const device_config *timer);
	attotime timer_device_firetime(const device_config *timer);

- Added MACHINE_CONFIG macros:
	MDRV_TIMER_ADD(_tag, _type, _callback)	/* type can only be PERIODIC right now (can scanline based later, or even NE555) */
	MDRV_TIMER_REMOVE(_tag)
	MDRV_TIMER_MODIFY(_tag)
	MDRV_TIMER_TYPE(_type)
	MDRV_TIMER_CALLBACK(_callback) 
	MDRV_TIMER_DURATION(_duration)
	MDRV_TIMER_PERIOD(_period)
	MDRV_TIMER_PARAM(_param)
	MDRV_TIMER_PTR(_ptr)

- Modified Space Encounters to create two timers and use those:

	MDRV_TIMER_ADD("STROBE_ON", PERIODIC, spcenctr_strobe_timer_callback)
	MDRV_TIMER_PARAM(TRUE)	/* indicates strobe ON */
	MDRV_TIMER_PERIOD(UINT64_ATTOTIME_IN_HZ(SPCENCTR_STROBE_FREQ))

	MDRV_TIMER_ADD("STROBE_OFF", PERIODIC, spcenctr_strobe_timer_callback)
	MDRV_TIMER_PARAM(FALSE)	/* indicates strobe OFF */
	MDRV_TIMER_DURATION(UINT64_ATTOTIME_IN_HZ(SPCENCTR_STROBE_FREQ * 100 / SPCENCTR_DUTY_CYCLE))
	MDRV_TIMER_PERIOD(UINT64_ATTOTIME_IN_HZ(SPCENCTR_STROBE_FREQ))
2008-03-14 00:27:07 +00:00
Aaron Giles
a6b4a6ad50 Cleanups and version bump to 0.123u5. 2008-03-13 16:21:46 +00:00
Aaron Giles
4d5014585a From: Fabio Priuli
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 .
2008-03-13 15:45:39 +00:00
Aaron Giles
3a082a644f From: notaz [mailto:notasas@gmail.com]
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).
2008-03-13 15:35:17 +00:00
Aaron Giles
9d3f7f8680 From: Mariusz Wojcieszek
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
2008-03-13 15:04:33 +00:00
Zsolt Vasvari
70eeb9ff23 - Removes the public screen_state object -- all access is via functions
- Removes screen[] object from running_machine
- Removed MAX_SCREENS constant -- there is no longer a hardcoded upper bound
2008-03-13 08:25:21 +00:00
Aaron Giles
dbd6e5e93e Fixed 68000 prefetching operation.
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.
2008-03-13 08:09:58 +00:00
Zsolt Vasvari
9626c879db video_screen_get_vblank() was also incorrect for games with MDRV_SCREEN_VBLANK_TIME, this could easily explain a bunch of changed screenshots. 2008-03-12 12:19:43 +00:00
Zsolt Vasvari
4bd4eceb06 Forgot to state save a variable 2008-03-12 11:47:57 +00:00
Zsolt Vasvari
839e3f073c Fixed VBLANK end time computation -- it wasn't taking into account games that use MDRV_SCREEN_VBLANK_TIME
Aaron, could you please double check what I did?
2008-03-12 11:43:31 +00:00
Zsolt Vasvari
4eecf5199d Removes "global" VBLANK callback hack 2008-03-12 11:06:29 +00:00
Zsolt Vasvari
19b68f421f Next batch of machine->screen[] removal 2008-03-12 10:47:20 +00:00
Zsolt Vasvari
7ec1537d22 - Fixed case when there is no interface given
- Changed C6545-1 description from "Commodore' to "MOS Technology"
2008-03-12 08:29:33 +00:00
Aaron Giles
d5561a8e75 Removed cpu_scalebyfcount().
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.
2008-03-12 05:13:03 +00:00
Nathan Woods
61b009597e Fixing MESS-specific category tokenization 2008-03-12 01:58:49 +00:00
Zsolt Vasvari
86b798b37a - More machine->screen removal
- Hooked up swapped videoram in Karnov properly -- same idea as Burger Time
2008-03-11 16:16:30 +00:00
Zsolt Vasvari
706d9f408f Restores the previous toggling behavior 2008-03-11 10:05:45 +00:00
Zsolt Vasvari
77a58d253c - First batch of machine->screen[] access has been removed
- 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
2008-03-11 08:37:05 +00:00
Nicola Salmoria
bf88dd74e3 fix loading mixer settings when the driver default value is calculated. Cannot use == to compare float with the loaded value in this case. 2008-03-11 08:28:47 +00:00
R. Belmont
542b489706 [MultiPCM] Saturate on clip and fix envelope discontinuity. (ElSemi) 2008-03-11 02:54:27 +00:00
Zsolt Vasvari
5397db0615 Moves crosshair code from video.c into its own module
Simplifies crosshair logic and makes it screen device based
2008-03-11 02:41:24 +00:00
Zsolt Vasvari
2a8f0936fd Adds some new varieties: MC6845-1, H46505, HD6845 and SY6545-1 2008-03-11 01:34:44 +00:00
Aaron Giles
c4cfa7bde4 Compilation fixes for my last checkin (sorry). 2008-03-10 16:22:01 +00:00
Aaron Giles
8006568b87 More WIP cleanup of memory.*
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.
2008-03-10 16:00:26 +00:00
Zsolt Vasvari
d146f7dabc Removes the scrnum parameter from VIDEO_UPDATE, updates all drivers to use the screen device instead.
render.c now uses screen devices
2008-03-10 14:30:21 +00:00
Nathan Woods
470e72b351 MESS-specific fix 2008-03-10 13:16:23 +00:00
Nathan Woods
43c2c2a002 Changed how the PowerPC MMU is enabled at compile time, to cut down on the
amount of unused functions in MAME.
2008-03-10 13:10:44 +00:00
Zsolt Vasvari
2a8c73cc45 All video_screen_*_scrnum functions have been removed. Next step is to remove the scrnum from VIDEO_UPDATE 2008-03-10 06:39:20 +00:00
Zsolt Vasvari
6e3be05912 Makes atarigen and tms34061 handle based 2008-03-10 05:12:49 +00:00
Aaron Giles
0862cce453 Replaced the following macros (SMH == static memory handler)
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.
2008-03-10 02:29:15 +00:00
Zsolt Vasvari
198f401cf5 Changes TMS34010 to take a screen tag instead of the screen number
Everything appears to work, except X The Ball, which sets horz the resolution twice as wide as it should -- no clue why
2008-03-10 02:16:06 +00:00
Zsolt Vasvari
9b3ac2606e Voodoo now takes a device_config for the screen
Added video_screen_get_visible_area()
2008-03-10 00:39:20 +00:00
Zsolt Vasvari
84a1d99c67 Added a bunch more asserts 2008-03-09 23:49:59 +00:00
Zsolt Vasvari
343bcb4cda Changes MC6845 to take a screen tag instead of a screen number 2008-03-09 23:01:34 +00:00
Aaron Giles
ddfc0c3259 WIP check-in. Things work now, but I'm still working on the code.
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.
2008-03-09 21:59:57 +00:00
Zsolt Vasvari
ac9778cdb0 Changes first argument of video_screen_* functions to take a device_config
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
2008-03-09 15:41:17 +00:00
Zsolt Vasvari
48f7d189e6 Changes VIDEO_UPDATE signature to
typedef UINT32 (*video_update_func)(const device_config *screen, int scrnum, bitmap_t *bitmap, const rectangle *cliprect);

Adds const device_config *primary_screen to running_machine (not yet used)
2008-03-08 15:57:43 +00:00
Zsolt Vasvari
d0870c6936 Moves 'refresh' from public to internal video state and renames it to 'frame_period'
Changes all drivers that previously accessed 'refresh' to use video_screen_get_frame_period()
2008-03-07 14:34:04 +00:00
Zsolt Vasvari
d0f5196025 - the public screen_state is made to only contain items that are currently accessed by drivers
- populating screen_state is moved from mame.c to video.c
- defstate is gone -- the default screen parameters live in screen_config directly
2008-03-07 12:53:00 +00:00
Zsolt Vasvari
9ad9532722 Seperates out the notion of screen specific vs. "global" VBLANK callbacks
"Global" VBLANK callbacks, of course, make no conceptual sense -- it should probably fire every once in a while even if there is no screen
2008-03-07 08:18:28 +00:00
Zsolt Vasvari
5f53680e03 - Removes video_data from running_machine
- 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
2008-03-07 07:19:38 +00:00
Zsolt Vasvari
6302df116d This changes the MC6845 to take and pass device_config's only
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.
2008-03-07 02:45:35 +00:00
Zsolt Vasvari
8f43de6a46 Removed runnning_machine as the first parameter of a VBLANK callback
video.c: some Machine->machine changes
2008-03-07 00:08:19 +00:00
Tomasz Slanina
183f506a2f debug build - fixed compilation error and warning. 2008-03-06 23:23:57 +00:00
Aaron Giles
befcee37ad Changed device interfaces to pass the device_config * rather
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.
2008-03-06 15:28:00 +00:00
Zsolt Vasvari
9c172be162 vblank_state_changed_func now has a device_config argument 2008-03-06 14:22:08 +00:00
Aaron Giles
fb26ec7c01 Cleanups and version bump. 2008-03-06 07:31:20 +00:00
Aaron Giles
0046339284 Removed AM_SPACE and matchmask support. Updated relevant drivers
to use AM_MIRROR() and AM_MASK() to achieve the same thing.
2008-03-06 07:02:10 +00:00
Nicola Salmoria
3a22b93b59 Fix 8085 RST75 not working with PULSE_LINE
According to datasheet, RST7.5 is latched on rising edge, while the other maskable interrupts are sampled.
2008-03-06 06:51:05 +00:00
Couriersud
19331ed134 Remove (UINT32) type casts which break build with mingw - again 2008-03-05 22:49:38 +00:00
Couriersud
dbd1965d0e * pass running_machine parameter to construct_map_##_name, i.e. ADDRESS_MAP_START
* 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.
2008-03-05 22:01:37 +00:00
Aaron Giles
5b6183f898 From: Oliver Stoneberg
Subject: missing display types in DTD

This patch adds the new display types to the listxml DTD.
2008-03-05 15:32:33 +00:00
Aaron Giles
84ece5c78e From: Corrado Tomaselli
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
2008-03-05 15:31:22 +00:00
Aaron Giles
a083bd20a9 From: Mark Fugmann [mailto:sailorsat@t-online.de]
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
2008-03-05 15:14:58 +00:00
Aaron Giles
31bb5d3f3c Added new macros AM_DEVREAD, AM_DEVWRITE, and AM_DEVREADWRITE,
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.
2008-03-05 15:12:58 +00:00
Aaron Giles
a724936cb3 Added running_machine * to the device_config, live while the device
is live, and NULL otherwise, just like the token.
2008-03-05 07:54:12 +00:00
Aaron Giles
ee0a5642ab Added running_machine * parameter to the front of all read/write handlers.
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.
2008-03-05 07:45:34 +00:00
Zsolt Vasvari
793cf2e715 VBLANK based watchdogs can be disabled once again
Removed debugging fprintf
2008-03-05 04:20:01 +00:00
Zsolt Vasvari
34b3ab9841 Added running_machine* to the CUSTOM_INPUT callback - updated drivers to use it 2008-03-03 05:17:57 +00:00
Zsolt Vasvari
62466dd08f - Added PORT_CHANGED macro which calls a callback if the given port changes.
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.
2008-03-03 04:10:51 +00:00
Aaron Giles
e31f9a6313 Normalized function pointer typedefs: they are now all
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.
2008-03-03 01:51:31 +00:00
Zsolt Vasvari
05702939cd Removed used srcnum from ccpuRegs
State saves more stuff -- wasn't 100% sure if they are all needed saved, but it appears they do.
2008-03-03 01:22:21 +00:00
Aaron Giles
8042e50f87 Added video_screen_get_time_until_vblank_end() and
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.
2008-03-03 01:02:16 +00:00
Zsolt Vasvari
713f03885f MC6845: Added support for the Commodore 6545-1 device type
Added support for the status register
Pops up message if display mode is not zero
some minor clean-ups
2008-03-02 23:25:35 +00:00
Couriersud
490713dea8 render.[ch]: change type of target_orientation in target_compute_visible_area to int for consistency with other calls. 2008-03-02 22:21:54 +00:00
Couriersud
e8c24a40d9 Changed z80dma to new device interface, updated mario.c and dkong.c to use new interface
* 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.
2008-03-02 15:40:24 +00:00
Zsolt Vasvari
1a0ccf8101 tp84: Replaces sprite multiplexing hack with video_screen_update_now() on sprite RAM write
General driver clean-up
tilemap.h:  Deletes no longer applicable comment
2008-03-02 13:26:10 +00:00
Zsolt Vasvari
2ddf3da8dd - Watchdog gets its own namespace for state saving
- Corrected some comments
2008-03-02 03:39:43 +00:00
Zsolt Vasvari
c7a0a7942f Moves watchdog processing logic into its own module 2008-03-02 03:32:54 +00:00
Zsolt Vasvari
56ad71eccf Some more #includes's removed 2008-03-02 02:50:21 +00:00
Zsolt Vasvari
9adda05850 Removes unneeded #includes 2008-03-02 02:43:26 +00:00
Zsolt Vasvari
807d71db76 Removes cpu_getcurrentframe() and replaces it with video_screen_get_frame_number(int scrnum)
Updates all callers
2008-03-02 02:38:20 +00:00
Couriersud
7df031fb4f Rewrote some potentially compiler specific code:
* 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
2008-03-02 00:35:58 +00:00
Couriersud
492612b6c9 Various clean ups:
* remove more unreachable code
* identify more functions not being used
* Changed a number of global functions to being static
2008-03-01 16:54:52 +00:00
Zsolt Vasvari
7198a00e65 - Moves all video timing logic from cpuexec.c to video.c
- 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
2008-03-01 15:50:12 +00:00
Couriersud
e90a92697c * Wrapped unused code in "#ifdef UNUSED_FUNCTION" 2008-03-01 11:29:29 +00:00
Couriersud
7ce83ee92b memory.c: removed further code never to be executed
* removed "return 0" from READWORD & READWORD16/32/64/MASKED since it is unreachable
2008-03-01 11:25:57 +00:00
Aaron Giles
b8a64773fd Added macros to define device functions. Updated existing devices
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.
2008-03-01 08:41:56 +00:00
Zsolt Vasvari
2fba8bdb8a - Removes a couple of unused items from the cpuexec_data structure
- Adds one more validty checks -- screenless drivers cannot have a VBLANK
2008-03-01 05:30:22 +00:00
R. Belmont
cd802cf4d1 [AICA] Better (not perfect) slot monitoring. (kingshriek) 2008-03-01 03:28:18 +00:00
Zsolt Vasvari
875ece67f6 - Implemented VSYNC height computation difference between the Motorola and the Rockwell devices
- 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.
2008-03-01 02:40:27 +00:00
Zsolt Vasvari
09bf1cb3e4 Added mc6845->has_valid_parameters in mc6845_assert_light_pen_input, so that processing only happens
if the chip was correctly configured
2008-03-01 01:58:51 +00:00
Zsolt Vasvari
fe74a22163 - Uses a timer for latching the light pen address. Not that there was anything really wrong
with the previous way, but this is a bit more accurate.  I actually tested this.
- Added reset device function
- Better variable names
- More asserts
2008-03-01 01:56:35 +00:00
Couriersud
16547714e4 Fix compile issues introduced with r844 2008-03-01 01:47:47 +00:00
Couriersud
76847517a4 Identified code not used and marked with "#ifdef UNUSED_FUNCTION" 2008-03-01 01:34:43 +00:00
Couriersud
c5a4ffe291 memory.c: removed some code never to be executed
* removed "return 0" from READBYTE & READBYTE8 since it is unreachable
* removed comparisons of type FPTR < 0 and FPTR >= 0
2008-03-01 01:03:54 +00:00
Couriersud
7e15b2ff6f * MACHINE_DRIVER_EXTERN now requires a semicolon
* removed a number of extra semicolons
2008-03-01 00:17:58 +00:00
R. Belmont
8bd8e97051 [SH4] Fixed refresh ticks value of 0, makes awbios not blow up the timer system. 2008-02-29 20:40:24 +00:00
Zsolt Vasvari
f126c9fc26 Most of this descriptions taken directly from an e-mail by Aaron:
- 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.
2008-02-29 15:09:04 +00:00
Zsolt Vasvari
f8cbcafd5e Replaces mame_bitmap with bitmap_t
Removes mame_bitmap
2008-02-29 04:01:09 +00:00
stephh
9d6f8060d6 "Input (this Game)" menu now handles conditional inputs.
See 'qcrayon2' in taito_f2.c driver (play with the last Dip Switch and look how inputs change).
2008-02-28 18:23:37 +00:00
Zsolt Vasvari
c1eddd0763 Adds mc6845_assert_light_pen_input. This latches the next character display address into the light pen latch. 2008-02-28 13:25:19 +00:00
Zsolt Vasvari
8cf42a706d Fixed incorrect comments 2008-02-28 10:05:12 +00:00
Zsolt Vasvari
22f1803388 Signals both the 0->1 and 1->0 transitions of the synching pins 2008-02-28 09:30:14 +00:00
Zsolt Vasvari
0516bab238 - MC6845 - Added HSYNC and VSYNC callbacks -- I actually tested this :)
- Added macros and typedefs for callback function types
- Updated all users for the new macros
2008-02-28 06:34:58 +00:00
Aaron Giles
b96aa2fb5c Spacing and version bump. 2008-02-28 06:20:19 +00:00
Aaron Giles
4741ad3a7e From: Robert [mailto:pac0446@bigpond.net.au]
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.
2008-02-28 05:48:21 +00:00
Aaron Giles
ef3562b02b From: JEA Wallace [mailto:jeaw100@york.ac.uk]
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.
2008-02-28 04:19:39 +00:00
Aaron Giles
0104d6ff63 From: Wilbert Pol [mailto:wilbert@jdg.info]
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.
2008-02-28 03:22:38 +00:00
Zsolt Vasvari
34781e5f4c - Better variable name for the cursor counter
- Pedantic clean-up of comments
- R6545 is still in the "MC6845 CRTC" family, therefore removed DEVINFO_STR_FAMILY
2008-02-28 03:16:36 +00:00
Nathan Woods
ee187c0bf6 Added a stub implementation of the Rockwell 6545 2008-02-28 02:22:10 +00:00
Zsolt Vasvari
7d092ece83 Adds support for cursors. All 4 blinking modes are supported (always on, always off, fast, slow) 2008-02-28 02:01:37 +00:00
Aaron Giles
2702453660 Couple more address map merges, plus an MSVC compile fix. 2008-02-27 15:01:08 +00:00
Zsolt Vasvari
f78611cfd3 - Clean-up of the Crazy Climber video driver, mainly via tilemap conversion.
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
2008-02-27 13:51:06 +00:00
Aaron Giles
b61bc6d703 Turned on use of designated initializers for tokenized structures in gcc,
since it appears to support them with std=gnu89. Fixed several places
where drivers were violating the rules.
2008-02-26 11:16:37 +00:00
Aaron Giles
e8d437422c Fixed typo. 2008-02-26 10:55:38 +00:00
Aaron Giles
41d2a2d8c1 Change priority_bitmap accesses back to UINT8s, now that we are
again allocating an 8bpp bitmap. Fixes crashes in several games.
2008-02-26 10:48:45 +00:00
Aaron Giles
adcdfd3e5b Converted MACHINE_DRIVER definitions from function
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.
2008-02-26 06:31:28 +00:00
Couriersud
3bd4143eb6 * remove flip_screen macro
* 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
2008-02-25 23:01:59 +00:00
Couriersud
8e96884cc6 * Fix issues related to flip_screen being a define
* 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
2008-02-25 21:15:59 +00:00
Aaron Giles
9a359b370d Added new module: tokenize.h. This centralizes the behavior of
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.
2008-02-25 01:35:48 +00:00
Zsolt Vasvari
2b1192dec8 - Backs out BITMAP8 removal from most places.
- 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
2008-02-24 23:24:29 +00:00
Aaron Giles
4a7301495b Different fix for X the Ball sound. Pulse no longer works for the 34010. Undid previous fix. 2008-02-24 15:57:25 +00:00
Zsolt Vasvari
803ece9d96 Removes 8-bit bitmap support and converts all previously 8-bit bitmaps to 16-bit 2008-02-24 13:30:08 +00:00
Zsolt Vasvari
51cae46fac - Added some asserts to drawgfx and drawgfxzoom
- 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.
2008-02-24 06:33:02 +00:00
Zsolt Vasvari
58fc9362eb This fixes the DAC sound in X The Ball that got broken in 114u2. Not 100% if the fix is right, though. 2008-02-24 01:54:54 +00:00
Nathan Woods
3f652750d3 Fixed compilation error when compiled for MESS 2008-02-23 20:36:43 +00:00
Aaron Giles
29bc8049cd Fixes for screenless games. 2008-02-23 18:21:32 +00:00
Couriersud
dd0ebc1d8d Remove some deprecat.h includes from osd layer:
* add machine as parameter to osd_update and osd_update_audio_stream
* change Machine to machine and remove include deprecat.h
2008-02-23 17:46:52 +00:00