Jump to content

Mame 0.128u4


Robert

Recommended Posts

http://mamedev.org/updates/whatsnew_0128u4.txt

 

IMPORTANT NOTICE: This update represents the first part of a

monumental internal change within MAME in the way CPU cores are

managed and how memory is addressed. There are two ways you can help

get these changes sorted out.

 

1. Test the games you are familiar with, and some you are not. Report

bugs at http://mametesters.org/mantis for anything out of the ordinary.

 

2. If you are up to coding, help us by submitting patches that remove

the use of [Mm]achine->activecpu and/or cpunum_get_active(). You

should be able to derive which CPU you are referencing through other

means. To avoid duplication of effort, either send these quickly in

small bunches, or better yet, send a message to the submission address

announcing your intention to work on a certain class of drivers.

 

 

 

MAMETesters Bugs Fixed

----------------------------------------

- 02668: [DIP/Input] vendetta + clones: NVRAM being corrupted (Mamesick)

- 02656: [Crash/Freeze] elevator: Elevator Action freezes after coin insert with "8" (David Haywood)

- 02660: [Crash/Freeze] All sets in decocass.c: Games freeze when the count reach 15, 14 or 13. (couriersud)

- 02654: [Crash/Freeze] timecris, timecrsa: Unable to start game due to improper initialization (robiza)

- 02667: [sound] bbmanwj: No sound since 0.123u2. (robiza)

- 02655: [Misc.] Some games using MC6845: A message reading "Mode Control 88 is not supported!!!" is displayed (couriersud)

- 02092: [Graphics] spinlbrk and clones: Priorities issues (robiza)

- 02641: [Graphics] strider and clones: Problem with graphics layer (Nicola Salmoria)

- 02196: [DIP/Input] scross: Five Player 2 buttons are mapped twice (Luigi30)

 

 

 

Source Changes

--------------------------------

UPI-41/42 (still I8x41.c) changes: [couriersud]

* cpu/i8x41 should be renamed to UPI-4x, since UPI-41/42 was an

intel chip family postponed for now until core moved to pointers.

* removed I8041 definition from mcs48

* removed I8x41 cpu definition and config struct

* added I8041, I8741, I8042, I8242 and I8742 cpus to i8x41.c

* added internal memory maps

* internal ram now uses DATA memory space

* updated drivers

* increased interleave to 70 in decocass. This fixes decocass hanging

in countdown around 13. No idea when this bug was introduced.

* converted i8x41 to use pointers for state access

* separated opcodes into i8x41ops.c

 

Populated tag and static_config parts of fake CPU device. Removed

'config' parameter from CPU_INIT. Modified CPU cores to pull config

from the device static_config. [Aaron Giles]

 

s14001a.c: added chip pinout and operation notes. [Lord Nightmare]

 

Clean-ups in the ST-V driver and corrected protection number seeds

for elandore. [Angelo Salese]

 

Video emulation fixes to the Ghost Eolith HW (not yet working).

[Angelo Salese]

 

i960 core switched to pointer state access. [couriersud]

 

Major cpuintrf changes: [Aaron Giles]

* added a set of cpu_* calls which accept a CPU device object;

these are now the preferred means of manipulating a CPU

* removed the cpunum_* calls; added an array of cpu[] to the

running_machine object; converted all existing cpunum_* calls

to cpu_* calls, pulling the CPU device object from the new

array in the running_machine

* removed the activecpu_* calls; added an activecpu member to

the running_machine object; converted all existing activecpu_*

calls to cpu_* calls, pulling the active CPU device object

from the running_machine

* changed cpuintrf_push_context() to cpu_push_context(), taking

a CPU object pointer; changed cpuintrf_pop_context() to

cpu_pop_context(); eventually these will go away

* many other similar changes moving toward a model where all CPU

references are done by the CPU object and not by index

* added CPU device parameters to all CPU callbacks except for the

context ones (which are going away), and the validity check.

 

Converted TMS340x0 cores to be pointer-based. [Aaron Giles]

 

Fixed Dip Switches for 'lkage' and clones. Fixed bootlegs visible

area to match original sets. [stephh]

 

Fixed Dip Switches for 'magmax'. [stephh]

 

Fixed Dip Switches for all games in mermaid.c driver. [stephh]

 

peplus.c updates: [couriersud]

* changed the 6845 type to R6545_1 (Rockwell as mentioned in the

driver).

* use transparent addressing

* lightpen code now generates a "lightpen_assert" at the right screen

position.

* Completely hooked up 6545 without wrappers.

 

abc_step and abc_reset now declared as DISCRETE_STEP( abc ) and

DISCRETE_RESET( abc ). [couriersud]

 

Fixed Dip Switches for 'momoko'. [stephh]

 

Fixed Dip Switches for 'joyfulr' and clone. [stephh]

 

Fix state save in discrete sound: [couriersud]

* sndindex now considered as well in state save

* expose discrete_sound_n_r(void *chip, ...) to enable accessing

multiple discrete sound cores

 

Kaneko changes: [David Haywood, Andreas Naive]

* Added Simulation of Toybox external data rom decryption

* Converted Blood Warrior, Bonk's Adventure, Great 1000 Miles Rally

1+2 to use the new code.

* Updated suprnova rendering to allow 2 sprite chips.

* Started work on Jackie Chan & Gals Panic 3

 

Massive API cleanup/change: [Aaron Giles]

 

* The primary goal is that all CPU-related APIs now take a device

pointer instead of an index. All functions that take a CPU device

are prefixed with cpu_*. All functions that are globally related to

cpu execution are prefixed with cpuexec_*. Below is a list of some

of the mappings:

 

cpu_boost_interleave -> cpuexec_boost_interleave

cpunum_suspend -> cpu_suspend

cpunum_resume -> cpu_resume

cpunum_is_suspended -> cpu_is_suspended

cpunum_get_clock -> cpu_get_clock

cpunum_set_clock -> cpu_set_clock

cpunum_get_clockscale -> cpu_get_clockscale

cpunum_set_clockscale -> cpu_set_clockscale

cpunum_get_localtime -> cpu_get_local_time

cpunum_gettotalcycles -> cpu_get_total_cycles

activecpu_eat_cycles -> cpu_eat_cycles

activecpu_adjust_icount -> cpu_adjust_icount

cpu_trigger -> cpuexec_trigger

cpu_triggertime -> cpuexec_triggertime

cpunum_set_input_line -> cpu_set_input_line

cpunum_set_irq_callback -> cpu_set_irq_callback

 

* In addition, a number of functions retain the same name but now

require a specific CPU parameter to be passed in:

 

cpu_yield

cpu_spin

cpu_spinuntil_time

cpu_spinuntil_int

cpu_spinuntil_trigger

cpu_triggerint

 

* Merged cpuint.c into cpuexec.c. One side-effect of this change is

that driver reset callbacks are called AFTER the CPUs and devices

are reset. This means that if you make changes to the CPU state and

expect the reset vectors to recognize the changes in your reset

routine, you will need to manually reset the CPU after making the

change (since it has already been reset).

 

* Added a number of inline helper functions to cpuintrf.h for

managing addresses.

 

* Removed cpu_gettotalcpu(). This information is rarely needed

outside of the core and can be obtained by looking at the

machine->cpu[] array.

 

* Changed CPU interrupt acknowledge callbacks to pass a CPU

device instead of machine/cpunum pair.

 

* Changed VBLANK and periodic timer callbacks to pass a CPU

device instead of machine/cpunum pair.

 

* Renamed all information getters from cpu_* to cpu_get_* and

from cputype_* to cputype_get_*.

 

Defined macros for standard sound core functions and updated all sound

cores to use them. [Atari Ace]

 

Replaced the Machine parameter where an running_machine * is

available and removes the deprecat.h where unnecessary.

[Atari Ace, Oliver Stoeneberg]

 

Cleaned up use of running_machine in the Windows debugger code.

[Oliver Stoeneberg]

 

Fixed Dip Switches and Inputs for 'jchan' and clone. [stephh]

 

Documented the CPS2 Phoenix sets, and what happens to a dead CPS2

board. [MAMEPlus]

 

Pointer-ified the 6800, 6809 and hd6309 cpu cores: [couriersud]

* temporarily named the state var m68_state in the 68xx cores

* reorganized some code for simpler comparison of 68xx cores

 

Pre-irq rewrite submission in ST-V driver: [Angelo Salese]

* Better management of hblank/vblank bits;

* Makes dynamic resolutions to be called with a timer instead of

run-time;

* Makes dynamic resolutions to not be changed at every frame but

only when there's an actual change;

* Fixed Final Arch broken Test Mode;

* Demoted Super Major League / Final Arch as GAME_NOT_WORKING, they

hangs randomly due of SH-2 master/slave communication RAM issues

* Removed GAME_NOT_WORKING flag to Fighting Dragoon Legend Elan

Doree, because protection affects only in-game graphics and not

gameplay

* Removed all the read/write handler speed-up hacks, they aren't

needed anymore and they were doing more damage than being useful.

This fixes Golden Axe: the Duel gameplay speed at the cost of breaking

up Groove on Fight coin counter at start-up.

 

Major memory system change: [Aaron Giles, couriersud, smf, R. Belmont]

 

* Changed READ/WRITE handlers to accept an address_space * instead of

a machine *. The address_space object was enhanced to contain a

machine and a pointer to the relevant CPU object.

 

* Added new function cpu_get_address_space() to fetch the address

space for calling in manually to these functions. In some instances,

code which should eventually be converted to a device is hard-coding

fetching the program space of CPU #0 in order to have something

valid to pass.

 

Converted cultures driver to have separated color tables for each

plane. [Angelo Salese]

 

Significantly pared down the 68k core. Merged outer MAME shell into

the core proper and removed unused macros. Changed all external

interfaces to pass the CPU device. Enabled 64-bit operations by

default. Re-derived the interface functions to cascade and share code

more aggressively. These changes also seem to have cured the taito_f3

issues as far as I can tell (at least pbobble3 seems right now).

[Aaron Giles]

 

Disentangled the 68000 core, converting it to be much simpler and less

overly abstracted. Hard-coded it for the options that are relevant

and never going to change. Removed old unused CPS2 encryption junk.

Changed encryption interfaces to pass the CPU core object.

[Aaron Giles]

 

Updated CPS1 documentation. [Nicola Salmoria]

 

Added m6809 config option to control where opcodes 10 and 11 fetch

the second byte. [Nicola Salmoria]

 

Changed kram3 to use a partially understood decryption algorithm and

removed external tables. [Nicola Salmoria]

 

Fixed Dip Switches for 'scotrsht'. [stephh]

 

Naomi improvements: [samuele Zannoli]

* This patch implements a "plug-in board" device for the Naomi.

It represents the rom boards for the various games and the dimm

board for the gdrom.

* Now the dimm board part contains only a routine to load the "rom

file" from the gdrom chd, but in the future it will be fully

implemented with its own sh4 processor, security chip and so on.

* Extracted .rom files are no longer needed, rom file is extracted

in code from the CHD.

 

Added "tag" parameter to state_save_register_item_* calls. Removed

state_save_combine_module_and_tag() function in favor of passing

the tag when registering. Revisited all save state item registrations

and changed them to use the tag where appropriate. [Aaron Giles]

 

Changed 6809 disassembler to work with kram3. [Nicola Salmoria]

 

Added template support to regrep. Changed output to not color the

entire background of each cell. Switched to astrings and core_files

internally. [Aaron Giles]

 

ST-V IRQ rewrite and that removes several global hacks/game specific

hacks. (SMPC irq bit/introdon irq register hack/pblbeach framebuffer

hack plus some more). Note: some games have issues with it, but

they'll be hopefully fixed on the next couple of updates.

[Angelo Salese]

 

Generalized the concept of opbase access into "direct" access.

Removed opbase globals to the address_space structure. Cleaned up

names of pointers (decrypted and raw versus rom and ram). Added inline

functions to read/write data via any address space. Added macros for

existing functions to point them to the new functions. Other related

cleanups. [Aaron Giles]

 

Pointerized the CDP1802 CPU core. [Curt Coder]

 

Tweaked gun handling in beast busters a bit.. by halving the

precision of the guns to 7-bit they can be calibrated more easily,

maybe the originals were like this. I've also added a default

eeprom with them calibrated in a 'reasonable' way for MAME. Sound

is pretty awful on this, maybe the sound ROMs should be checked?

[David Haywood]

 

Cleaned up macro mess in the Z80 core. Switched to using generic

memory calls instead of program_* and io_*. [Aaron Giles]

 

Pointer-ified the ASAP core. [Aaron Giles]

 

Pointerized the COP400 CPU cores. [Curt Coder]

 

Switched mcs48, mcs51, m68000 to new memory functions. [couriersud]

 

Documented alt Ajax rom board [Phil Morris]

 

Fixed basic controls in 2 Minutes Drill & added preliminary shutter/

defender sensors. Still need proper ball hit/run sensors to get this

working however. [Angelo Salese]

 

Big H8 update: [R. Belmont]

- Added support for 8-bit H8 family MCUs, starting with the H8/3344

- Pointer-ified all H8 cores

- Some cleanup and renames toward additional future work

 

System 23: [R. Belmont]

- Added extremely preliminary support for I/O boards with the H8/3344

 

Removed the change_pc() macro. Changed memory_set_direct_region() to

return a boolean indicating whether the given address was successfully

located in a bank. Change raw/decrypted access to look at this result,

and if the given address is not in a bank, calls through to the

standard read handlers. This should prevent most crashes when

accessing opcodes. [Aaron Giles]

 

Fixed address space mapping handlers to invalidate direct access

regions if a change is made to the mapping. This is needed to prevent

the Sega dynamic memory mapping chips from falling over. [Aaron Giles]

 

Refactored the CDP1802 and COP400 CPU cores to use the new memory

functions. [Curt Coder]

 

Switched m6809 and hd6309 to new memory functions: [couriersud]

* cleaned up some macros

* aligned code a bit more

* interrupts now checked in cpu_execute instead of set_context

 

Pointerified the psx cpu core & switched it to the new memory

functions. Changed some MIPS_* to PSXCPU_*. [smf]

 

Fixed broken crazywar eeprom. [David Haywood]

 

Another significant memory system change: [Aaron Giles]

 

* Moved memory global state into a struct hanging off of the machine.

Updated almost all memory APIs to take an address_space * where

appropriate, and updated all callers. Changed memory internals to

use address spaces where appropriate. Changed accessors to point

to the memory_* functions instead of the address space-specific

functions. Improved internal handling of watchpoints.

 

* Added cputag_* functions: cputag_reset(), cputag_get_index(),

cputag_get_address_space(). These just expand via macros to an

initial fetch of the CPU via cputag_get_cpu() followed by the

standard CPU call.

 

* Added debugger_interrupt_hook() and debugger_exception_hook() calls

which intelligently look at the debugger flags before calling.

 

* Memory banking now requires a machine object. This makes the memory

system fully global-free.

 

Pointer-ified the jaguar CPU core. [Aaron Giles]

 

Pointer-ified the TMS32031 core. [Aaron Giles]

 

Replaced parent crkdown image with one containing valid settings data

(prevents game booting with 0 seconds and invalid highscore data

which it can't restore correctly). [David Haywood]

 

Converted H8 CPUs to the new memory functions. [R. Belmont]

 

Debugger interfaces cleanup. Added callback parameters to the

expression engine. Improved CPU parsing so you can use a CPU tag or

index in most commands that take one. Switched to passing CPU and

address space objects around where appropriate. Symbol tables now have

a global ref as well as a per-symbol ref. Debugcpu is now clear of

active CPU references and global Machine references. Lots of other

minor tweaks. [Aaron Giles]

 

Pointer-ified cpu/nec (V30). [couriersud]

 

Switched adsp21xx to new memory functions. [couriersud]

 

Fixed several protection issues with Double Wings, improved video and sound. [Angelo Salese]

 

Converted ssp1601 to pointers (still works, tested virtua racing genesis). [Curt Coder]

 

Pointer work on se3208 (although I haven't touched the disassembler..) [David Haywood]

 

Adjusted bbusters volume balance slightly. [David Haywood]

 

MC6845: Hsync needs to toggle on every scanline. [Curt Coder]

 

Converted remaining CPU cores over to new memory functions. [Aaron Giles]

 

Un-deprecat'ed the H8. [R. Belmont]

 

Removed cpu_read_byte/cpu_write_byte. Thesea are replaced with

memory_read_byte/memory_write_byte. [Aaron Giles]

 

Pointer-ified the M377xx. [R. Belmont]

 

Removed all direct memory accesses via program_read/write_* from

game drivers. All drivers now use the memory_read/write_* and pass in

an address space. [Aaron Giles]

 

Removed ROM banking kludges from bublbobl, ninjakd2, tnzs, lsasquad,

missb2, and other drivers. [Nicola Salmoria, David Haywood]

 

Pointer-"ified" the s2650 core. [couriersud]

 

Removed memory context switch. All memory accesses now specify an

address space explicitly. There is no longer any concept of a

"current" memory context. [Aaron Giles]

 

Enhanced the runtest.cmd to use all available processors. [Aaron Giles]

 

Removed cpu_num info from SH2 in favor of just keeping the device

object. [Aaron Giles]

 

Better fix for vendetta eeprom. [Mamesick, Fabio Priuli]

 

Removed all vestiges of the old change_pc macro, which is no longer

needed with the banking improvements. [Aaron Giles]

 

Added the latest "what we know" to the plygonet driver. [Phil Bennett]

 

More accurately describes the aux board behavior for Ms. Pac-Man.

There is a thorough description of how the board works. mspacman is a

more faithful emulation. In particular you can now enter service mode

(F2) at anytime during game play. [steve Golson]

 

Derived clocks from crystals in in ace.c, asteroid.c, avalnche.c,

blockade.c, boxer.c, bzone.c, cosmic.c, firetrk.c, galaga.c,

lazercmd.c, meadows.c, missile.c, orbit.c, skydiver.c, sprint2.c,

warpwarp.c, williams.c. [Luigi30]

 

Added diplocations to meadows.c, mugsmash.c, orbit.c. [Luigi30]

 

Unified sprint2.c memory map. [Luigi30]

 

Unified galaga.c CPU4 memory maps. [Luigi30]

 

Changed flyball CPU clock to a #defined crystal. Added dip locations. [Luigi30]

 

Added new sound core for the Oki MSM6258. [barry Rodewald]

 

Added dates to Tron revisions. Swapped tron/tron2 now that we know tron2 is the later version. [Tim Lindquist]

 

 

 

New games added or promoted from NOT_WORKING status

---------------------------------------------------------------------------------

Filetto [Angelo Salese]

Jackie Chan - The Kung-Fu Master [David Haywood, Andreas Naive, stephh, Angelo Salese]

Firefox [Aaron Giles, smf]

 

 

New clones added

--------------------------------------

Beast Busters (US, Version 2) [brian Hargrove]

Puzzle Bobble 2 (Ver 2.3O 1995/07/31) [Ross Myers]

Street Fighter II' - Champion Edition (Rainbow set 3, bootleg) [bill DeLeo]

Violent Storm (ver UAC) [bill DeLeo]

Daitoride (YMF278B version) [stefan Lindberg]

Soldam (World?) [Gerald]

 

 

New games marked as GAME_NOT_WORKING

-------------------------------------------------------------------

Motocross Go! (MG3 Ver. A) [Guru]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...