subclass serial_eeprom_device. Moved the latter into its own file
eepromser.c and significantly cleaned up/simplified the code. The new
code should be functionally the same as the previous code, but expect that
to change soon. As a side-effect, the size and bus width of the EEPROM is now
specified in the ADD macro rather than in the interface structure.
- updated device_execute_interface::interface_post_reset so screen is searched
from same context
- removed tilelgcy.h since no more users exist
- made bfm_adr2 a device
house a screen tag and to find the screen at startup, providing an m_screen
object that can be used. One nice feature is that if there is only one
screen and no screen has been specified, it will auto configure to that
screen. This removes the need to explicitly specify a screen in the
configuration for a large chunk of drivers (though doing so never hurts).
A new macro MCFG_VIDEO_SET_SCREEN is provided, though devices are
encouraged to define their own that maps there so it is obvious which
device is being targeted. The device_video_interface's validation
function will error if an invalid screen is specified or if no screen
is provided but there are multiple screens present.
Updated all devices that currently had an m_screen in them to use the
device_video_interface instead. This also has the nice benefit of flagging
video-related devices for categorization purposes. It also means all
these devices inherit the same screen-finding behaviors. For devices
that had interfaces that specified a screen tag, those have been removed
and all existing structs updated.
Added an optional_device<screen_device> m_screen to the base driver_device.
If you name your screen "screen" (as most drivers do), you will have free
access to your screen this way.
Future updates include:
* Updating all devices referencing machine.primary_screen to use the
device_video_interface instead
* Updating all drivers referencing machine.primary_screen to use the
m_screen instead
* Removing machine.primary_screen entirely
- Corrected memory map errors with the SE and Classic
- Preliminary support for the SE's 68000 processor-direct slot
- Preliminary support for the Radius Full Page Display card which goes in the
SE PDS slot
Tilemap system: numerous changes:
* Moved remaining legacy macros and typedefs to tilelgcy.h. This revealed
a few drivers mixing and matching modern & legcy, which have now been
fixed.
* Changed get info callback signature to no longer pass the user_data
pointer, but instead pass a reference to the tilemap object itself.
Updated those few drivers using user_data to pull it out of the
tilemap object with the new user_data() getter method.
* Changed get info and mapping callbacks to be device_delegates so that
they can be described at config time.
* Added tilemap_memory object that is used internally for reading/
writing to memory that backs a tilemap. This object is used to track
a memory pointer that backs tilemap memory, and also is designed to
transparently handle all bus width and endianness associated with
reading and writing data in a tilemap.
* Incorporated two tilemap_memory objects (basemem and extmem) into the
tilemap object and added accessors to them, as well as read/write
handlers for reading/writing to entries stored in the memory. This
means that tilemap get info callbacks can now easily read data out of
the tilemap in a generic way.
* Rejiggered the initialization sequence for tilemap objects so that
the tilemap_manager is not required to be present at instantiation.
* Created a new tilemap_device, which can be used to declare a tilemap
in the machine config, and which also is a tilemap object itself.
The tilemap device will look for shared memory regions called
"<tag>" and "<tag>_ext" and automatically plug them into the tilemap.
The device also provides write handlers that can be used to write
to the tilemap memory and mark tiles dirty, saving the need for each
driver to write their own.
Device system: moved required/optional device finders to a new header
devfind.h.
Atari drivers: removed all playfield and alpha memory and tilemap
variables, apart from those needed by atarivc-using games (this will
become a device in a future update). Updated all Atari 16-bit drivers to
use the new tilemap_device instead, which provides all the needed
functionality in a more generic way.
yes, the filename is a bit ugly, but it's what it represents, I'll see if it can be further split into components later.
all users have been given a brief testing
(for MB-6892). For now these behave the same as bml3 (MB-6890).
Refactor disk controllers and kanji ROM as slot devices. This allows
switching between MP-1802 and MP-1805 disk controllers. MP-1805 disk
controller now works. Kanji ROM now works.
Keyboard scanning in 'counter disabled' mode now works.
imgtool: Add bml3 driver, supporting both single-density (MP-1805
controller) and double-density (MP-1802 controller) disks in D88 format.
mc6843: Work around floppy_get_device() not finding drives attached to a
slot device.Store all 8 bits in CTAR current track register, rather than
excluding bit 7 (needed for bml3 MP-1805 boot)
I have no interest in this *at all* but I keep getting bugged about it so I'm giving people a place to pt notes.
From an objective point of view we at least need somewhere to establish details and proper documentation about the hardware and what the original platform consists of in both terms of PC side, software side and original security side before the there is no hope at all due to the travesty being created by all the hacked to run on PC dumps or 'files copied from mounted encrypted partitions' type junk. That at least I feel is our duty because nobody else is going to care.
-m6809: Initially setting S with a 'TFR *,S' evidently should enable NMI [jedwidz]
-mc6845: Add rudimentary support for 'interlace and video' mode [jedwidz]
cassette. wav files supported only. [Fabio Priuli]
(MESS) Added software list for BASIC programs saved to tape [Anna Wu, UglyJoe, Fabio Priuli]
If anyone has more Family BASIC tapes or other cassettes for Famicom games or add-ons (e.g. Bandai Karaoke or Fukutake Study Box)
or for some chinese clones (ABM, or Bridge, or any other), please contact us.
- Much improved CS4031 emulation, added DMA, interrupt controller, timer, RTC directly to the device as sub devices and added the generic functions needed for AT compatibility
- Moved the ct486 driver to its own file, to avoid all the legacy stuff in at.c
- Added support for the IOCHCK signal to the ISA bus, this is used instead of directly issuing an NMI to the main CPU
- Moved ISA device slot definitions to its own file to avoid copy & pasting the same list to different drivers
- Updated MC146818 RTC for devcb2
on-cart flash ram devices from main gba now that they can be properly
implemented on carts which have them [Fabio Priuli]
The main difference for end users is that games using flash ram for saves won't save
anymore progresses in a nvram/game_name.nv file but in a file inside nvram/game_name/
folder. Many thanks to Micko for his recent changes to nvram devices which allowed to
still save these data per-game!
- Converted cart handling and mappers to use slot devices
- Simplified bios and cart bankswitch mechanism
- Added save state support to both systems
- Removed on-cart EEPROM from main gamegear now that
it can be properly implemented on carts which have it
- Made LCD persistence hack optional (ON by default, it can
be turned OFF from Driver Configuration submenu)
- Reduced tagmap lookups all across the driver
openly, for there was nothing left to see with" [MooglyGuy]
* Enabled vector bloom and associated .ini controls
* Added raster bloom and associated .ini controls, each bloom "level" is the
linear weight of successively half-sized render targets
* Removed D3D8 mode
* Mass renaming in D3D renderer to use namespaces, initial planning step to
HAL-based renderer implementation on Windows (i.e., GL on Windows)
* Converted d3d_info, d3d_poly_info, and d3d_texture_info into classes
* Added batching of vectors for possible speed increase
* Minor cleanup of shader state setting
asst128_dsk: add support for asst128 ssqd 360K disks (nw)
--
Added a new format class for asst128 floppies because the 360K SSQD disk format conflicts with the standard 360K DSDD type. The Assistant 128 BIOS translates disk commands so 360K DSDD disks boot fine though.
-mc1502: FDC xtal freq is 16 MHz
-pc, ec1841: unbreak DBG_LOG macro
-asst128: another PC XT clone
-ec1841: add softlist, set 'v2' as default BIOS to avoid resets
-----------------------------------
Golden Tee Fore! 2004 [R. Belmont, Brian Troha, uncletom]
Golden Tee Fore! 2005 [R. Belmont, Brian Troha, uncletom]
- converted carts, mappers and pcbs to use slot devices
- fixed starting of Famicom, Famicom Twin and Dr. PCJr
- fixed handling of "no disk" in FDS so that the system displays Mario and Luigi
jumping around as expected
- added AY8910 sound to Sunsoft-5B (Gimmick JPN sfx)
- added YM2413 to VRC-7 (Lagrange Point OST)
- added support for recorded samples to Jaleco sport titles and to Bandai Family Trainer
Aerobics Studio, thanks to notes by hap and egoh, and recordings by Pongbashi
(samples are needed because these games use a currently undumpable speech chip)
- added support for NES-EVENT pcb used by Nintendo World Championship 1990,
including dipswitches
- added support for Galoob Game Genie real usage (in addition to the codes which
Puggsy added to his cheat collections): when you load ggenie, a second cartslot
becomes available to load another game attached to the cheat device (e.g. with
"mess.exe nes -cart ggenie -cart2 smb") and you can enter the cheat codes as in a
real NES
- added support for Nantettatte!! Baseball lock-on mechanism, based on the tests
performed by naruko on his carts: when you load nantbb, a second cartslot
becomes available to load one of the two update minicarts (91 Hen or OB Hen)
- improved emulation of Namcot 163, 175 and 340 boards, based on the tests
performed by naruko, lidnariq and bootgod on the real hardware
- moved Nantettatte!! Baseball minicarts to a separate list (nes_ntbrom.xml) because
they cannot be loaded in the NES directly, but only through the nantbb subslot
- emulated bus conflict (CPU/PRG) in PCBs documented as having it
- partial emulation of open bus, enough to make working the games using it as a sort
of protection
- fixed crash when loading files using FFE mappers
- fixed mirroring in some boards (Sunsoft DCS and UNL-CC-21) and in some games
(e.g. Paris Dakar Rally Special and Escape from Atlantis)
- fixed a few bugs in Tengen 800032 emulation (mapper 64), promoting Klax, Xybots
and Road Runner to work state
- fixed Tengen 800037 emulation (mapper 158), promoting US Alien Syndrome to work
state
- added working emulation of many bootleg pcbs used for pirate conversions from FDS
(Ai Senshi Nicol, Doki Doki Panic, Fuuun Shaolin Kyo, Green Beret, Monty no Doki
Doki Daidassou, Tobidase Daisakusen, Super Mario Bros Malee 2 / Genius Merio Bros...)
- improved emulation of many pirate pcb (BMC-GOLDENCARD-6IN1, KS7013B,
KS7012, BMC-GHOSTBUSTERS63IN1, UNL-MALISB, MAXI15 and more...)
- improved RacerMate Challenge II emulation, but the game is still not working due to
unemulated bicycle controller
- added CPU-based IRQ mode in Tengen 800032 emulation (mapper 64), fixing
Skulls & Crossbones gfx (but the game is still not working)
- fixed many small inaccuracies in the old code, spot during the conversion
- added support for most other known pcbs, even if in most cases emulation is only
sketchy
- reduced the need of fake alt pbcs for boards which only differed by mirroring handling
(these are now recognized through the "mirroring" feature)
- removed fake wram which was added to a lot of partially documented pcbs and
re-added it only where actually present, so to more accurately document what was
really in the carts
Out of whatsnew: There's still a lot to do (e.g. to clean up the implementation of the pirate pcbs)
but I hope that submitting this now I can get some wider testing help so to catch and fix regressions
before next release :)
-----------------------------------
Fruit [Any, R. Belmont]
nw: This game based on a 486+PC h/w+VGA SoC appears to boot into MS-DOS successfully (based on logging IDE commands) and the game may even be running, but there is no video at all. If any of the PC experts could take a look it's probably something relatively obvious :)
It also has a Sound Blaster compatible sound system which isn't currently hooked up.
- updated carts to be slot devices
- simplified loading and bankswitch mechanism
- removed drivers snessfx and snespsfx: SuperFX/GSU games can now
be loaded in snes and snespal
- removed drivers snesdsp and snespdsp: NEC DSPx games can now
be loaded in snes and snespal from softlist
- removed drivers snesst10 and snesst11: Seta DSP games can now
be loaded in snes and snespal from softlist
- removed driver snesst: when you load Sufami Turbo, two more cart slots
(-cart2 and -cart3) become available to load ST carts
- added preliminary support for games with BS-X slots: when you load
one of these, a -cart2 slot becomes available to load a 8MB memory pack
(only a few of these work at the moment, e.g. Same Game)
- added support for loading DSPx games with DSP dump appended at the
end of the .sfc file
- added two "legacy" drivers snes_add and snesp_add containing the
DSP dumps in the bios, to allow loading of old .sfc dumps missing the DSP
content (these drivers are of course marked as GAME_UNOFFICIAL)
out of whatsnew:
- I have removed the DSP1B dump from NSS, because I plan to update NSS
to use slot devices as well and that will cover everything needed by SMK, if we
ever find its NSS release and dump it
- Also, I will take care of fixing snes entries in messnew before u2, because
part of this set of changes supersede the log for 21546 (e.g. no more snesnew
or snespnew wip drivers)
6809 datasheet. Inferred 6309 cycle exact timings. Not sure about the Konami
timings; they are definitly different from the previous core but the previous
timings were a guess.
Get ready for regressions...
- moved Sufami Turbo and BSX carts to separate lists
- added two new drivers snesnew and snespnew, using slot devices for carts
- added emulation for DSP1/4, ST-010/011, S-DD1, SPC7110, SuperFX, BS-X
and Sufami Turbo as slot devices
- added emulation for the protection device used in some pirate carts
out of whatsnew. there are one or two (possibly stupid) bugs in the new drivers
causing glitches in several games (e.g. SameGame, or F1 ROC 2) which prevent
us from removing the fake driver clones with add-on CPUs. if anyone is willing to
help to trace them, you're all welcome.
- updated carts to be slot devices
- simplified loading and bankswitch mechanism
- fixed MMM01 emulation
- removed need for "mapper" feature from xml softlist, since the new "slot" feature is enough
- updated carts to be slot devices
- simplified loading and bankswitch mechanism
- added support for real Sonic & Knuckles lock-on emulation (you can combine it freely
with other carts, through the -cart2 slot which gets added automatically)
- remove need for "pcb_type" feature from xml softlist, since the new "slot" feature is enough
- moved SVP emulation to src/mess/ in view of conversion to a slot device as well
I don't plan to add more tapes any time soon (I simply did not want to lose these two), so anyone willing to
add more elements to the list would be welcome....
- Add MIDI in and out ports as image device types
- Add OSD calls to check for and read MIDI input
- Add MIDI in image device which reads input and converts it to a serial bitstream
nw section:
Note that the MIDI In device uses the new image device override to prevent the core from attempting to fopen() the "file" name and instead it handles open/close itself in call_load/call_unload. This allows greater flexibilty than the hack used for sockets/ptys/named pipes where the OSD file layer has to know about them.
softlists: added preliminary softlists to Apogee, Bashkiria-2M, BK-0010, Galaksija, Korvet, Lviv, Mikrosha, Ondra ViLi, Orao,
Orion-128/OrionPro, Partner-01.01, Pecom64, Pyldin-601, Radio-86RK, Specialist/Specialist MX and UT-88. [Fabio Priuli]
After 0.148 I will clean up the file descriptions, but it's good to have these documented at last :-)
Loading instructions are already present at projectMESS and will be in next sysinfo update.
------------------------------
Milton Bradley MicroVision [kevtris, Wilbert Pol]
Because of the tiny screen use -prescale 3 to
get decent video output.
Bowling Try [H.A. Pontes, R. Mucciarelli, Tormod, Yohji, Smitdogg, The Dumping Union]
CPU: H8 3008 (currently set to H8 3002 because 3008 doesn't exist in the core)
GFX: YGV631-B (we have no docs for this, might be related to the Namco ND1 chip?)
SOUND: TT5665 (there are datasheets about, but I don't think we have a core)
I claim no ownership over this, I won't be working on it, up for grabs.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Kuru Kuru Pyon Pyon (Japan) [Roberto Fresca, hap, Fyrecrypts, anonymous,
btribble, Yohji, Smitdogg, The Dumping Union]
note, external submission, cleaned up a bit by me, was sent with the following message
From Brian Griffin:
To Haze:
I've made some changes to the drivers for the fruities by continuing to split things into proper versions and adding some you were missing continuing with the patterns you have set. We had some Maygay machines come in and I saw they hadn't been done yet.
No 'Brian Griffin' isn't my real name I'd rather remain anonymous / not be in the credits if that's alright with your team because of my job my employer or customers could take issue with me helping.
I work as a repair technician for these fruities and what's happening in Mame is the best thing to happen in the last 10 years. By that I mean the effort being made to recognize the different rom versions of each game, it's invaluable when it comes to repairing these and fitting programs the operators are happy with. Until Mame came along everybody was just sticking with one set and that was only good for people wanting to play the games on a PC not people operating and maintaining the original machines where you often need a specific version for a specific hardware profile.
It is with great lament we threw away many different 'sets' at my former place of employment 5 years back because nobody at all was interested in them at the time. I wish Mame had shown an interest back then but they're long gone now.
Regarding sound roms I'm not hopeful of you finding the missing ones, what you don't realise is except for the most popular / profitable they were in and out in under 3 months, scrapped for parts, reskinned, fitted with new roms, and recycled. We had arcade video games on location test for longer than some of these were around if they weren't bringing in the money or worse were instead bleeding it because people had found emptier exploits. You could probably consider many of them to be 'prototypes' using Mame terminology they were so short lived. Nobody I work with has seen some of them for 15-20 years and these machines are sizeable enough so you can't just misplace them. Anything more than a few years old not owned by a collector or retro-arcade more than likely no longer exists anywhere.
Everything you need is at (speedy share link removed)
New games marked as GAME_NOT_WORKING
------------------------------------
Dragon's Lair 2: Time Warp (US v3.19)
Space Ace (DL2 Conversion) (US v1.3)
New clones added
----------------
Dragon's Lair 2: Time Warp (Euro v3.19) (not working)
Dragon's Lair 2: Time Warp (Spanish v3.19) (not working)
Dragon's Lair 2: Time Warp (US v3.18) (not working)
Dragon's Lair 2: Time Warp (Euro v3.16) (not working)
Dragon's Lair 2: Time Warp (US v3.15) (not working)
Dragon's Lair 2: Time Warp (Spanish v3.15) (not working)
Dragon's Lair 2: Time Warp (US v3.14) (not working)
Dragon's Lair 2: Time Warp (US v3.12) (not working)
Dragon's Lair 2: Time Warp (US v3.00) (not working)
Dragon's Lair 2: Time Warp (US v2.11) (not working)
Space Ace (DL2 Conversion) (Euro v1.3) (not working)
(rather ugly for now, the code *should* be collapsible to a single set of functions but we're not there yet, not even close, lots of push and pull of system specific bits needed before everything is in the right place)
Added Dip Locations to vastar.c driver [Tafoid]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Planet Probe [Alberto Grego, Corrado Tomaselli, f205v, David Haywood]
based on Z80 family, plus 2x 8255 PPI, and YM3812 / Y3014
for sound. The status is still preliminary. [Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Super Card (encrypted) [Roberto Fresca, Team Europe]
- Renamed the internal layout artwork: bigdeal --> bonuscrd.
- Default Bonus Card & Big Deal DIP switches positions, that
allow boot the system without errors.
-avr8: Implemented MULS, ANDI, STD Z+, LD -Z, LD Y+, LD -Y, LD -X, SWAP, ASR,
ROR, and SBIS opcodes. [MooglyGuy]
-avr8: Moved Timer 0-2 into the CPU core itself, 30x driver speedup [MooglyGuy]
-cratft.c: Fixed DAC bit order, audio now plays but is 40% too slow [Mooglyguy]
- Fixed some glitches with the SE/30's built-in video
- Added preliminary infrastructure for LC and '030-type processor-direct slots
- Support for SE/30 processor-direct slot version of RasterOps Colorboard 264
types. Created a binding_type_exception which is thrown when
a bind attempt fails due to mismatched types.
Added helper templates to driver_device to wrap legacy
device read/write handlers into driver_device member functions.
This should help move some things forward until more common
code is converted into proper devices.
Introduce new module devcb2 which contains modernized
versions of devcb. Compared to previous implementation
this one is simpler overall, trampolining calls through
a single internal set of adapter functions. The new
versions are also designed to be specified in the
machine_config rather than in structures, so they are
no longer simple POD types. Additional new/changed
features:
* reads and writes can map to delegates for line or 8/16/32/64-bit
* reads and writes can map to an I/O port
* reads can be mapped to a constant value, with or without logging
* writes can be mapped to a device's input line
* all reads/writes can have a shift, mask, and/or xor applied
* devices can opt to make the functions safe-if-NULL when resolving
* only member function types are supported
Rewrote the YM2151 interface to be fully modernized, and
removed the ym2151_interface struct in favor of inline configs
using the new devcb2 mechanism. In many cases, removed
no longer needed trampolines, instead taking advantage of
direct support for input line writes.
greatly improving performaces (e.g. Manic Miner demo went from 20% to 380%
ingame). Plus added some very preliminary softlists. [David Haywood]
(MESS) spectrum_cass.xml: added very preliminary softlist containing some
interesting test case for emulation. [David Haywood]
Remaining TODO list:
- take WP into account
- test the amstrad, implement its observational format (edsk) using
pasti as a start. Or find the legendary amstrad IPFs. Or both.
- correct read track, the implementation is completely wrong. See
previous for testing, it's only used in protections the check the
inter-sector gaps.
- shake and bake on the amstrad, protections are the best to find bugs
in a fdc
- add the scan id commands, but nothing seems to use them
- debug the 2.88M formatting which is unreliable. Fix its IDAM/DAM
gap size on formatting too (but that's not what's making it
unreliable)
- test all the systems that were hit, and fix what needs to be fixed.
Beware that multiple problems may happen:
- upd765 may be wrong
- the driver may not be working
- the hookup may be wrong/incomplete (bitrate selection and floppy
rpm in particular)
- the driver may be too limited for the new implementation (the x68k
dma device does not handle non-instant dma yet for instance)
- report invalid command when appropriate depending on the actual chip
emulated
- add the russian clones with their real names
and added a new command line option of "-viewlist" which will print out a list
of all the devices that can be viewed in human readable logic equations.
Also updated the jedutil regression test to support passing in an additional argument of "debug" to print out a detailed log. Also moved the jedutil regression test
data into separate directories composed of the device's name to make things
more organized. [Kevin Eshbach]
non-templatized helper class so that the code can live
co-located, rather than invading device.h.
Changed the read/write delegates to derive from
device_delegate. Updated the address map macros to create
these properly.
Removed remnants of the old AM_BASE/SIZE macros from the
memory system.
eventually, nes_mmc and its pieces (nes_pcb, nes_ines & nes_unif) will contain a cart slot device and allow for
things like on-cart sound chips and eeprom devices to be properly emulated
---------------------
Blankity Bank (PCP) (SYSTEM80) [TTX]
Changed FME drivers to use per-driver layouts, rather than awpvid generic ones - should make tiny builds a bit easier, and gives more opportunity to tweak for hardware specific stuff. (nw)
Made some modifications to the jedutil tool to allow the viewing of simple combinatorial jeds (adding support for registered and gals in the future) by taking a jed file and printing out human-readable equations. Changed the command line options of the jedutil tool to know take an initial argument to specify what the tool should do.
For example to convert a jed to bin the command is now:
jedutil –convert <source.jed> <dest.bin>
jedutil –convert <source.bin> <dest.jed>
To view a jed file with human-readable equations the command is
jedutil –view <source.jed> <pal type>
Added a simple regression test for the tool that just verifies that the currently known pals have the row and column fuse location mapped correctly and at the moment this tool runs under windows only.
Under the directory src/regtests/jedutil there is a Windows Script File with the name jedtest.wsf that if run from the command line with the command “cscript jedtest.wsf” will verify that a dump of the jeds in src/regtests/jedutil/jeds matches the good dumps in src/regtests/jedutil/baseline. Reference jed files created using the tool eqn2jed which is included with Opal Jr and these files are in src/regtests/jedutil/eqns.
and a sparse bitmap for tracking which areas got updated.
This allows sprites to be rendered independently to their own
bitmap and then mixed in a final step. Converted the Sega
sprite device over to this new model, and moved the mixing
steps out of the sprite implementations and into the driver-
specific video updates where it belongs. [Aaron Giles]
Added some further methods and helpers to the bitmap_t and
rectangle classes. [Aaron Giles]
Created a sega_16bit_common_base class which handles the
common Sega palette RAM mappings and open bus reads.
[Aaron Giles]
(MESS) vic20: Added floating bus read support to VIC and cartridge interface.
(MESS) vic10: Added floating bus read support to VIC-II and cartridge interface.
(MESS) c64: Added floating bus read support to cartridge interface. [Curt Coder]
(MESS) plus4: Added floating bus read support to TED and cartridge interface. Implemented some Diag264 test cartridge loopback connectors. [Curt Coder]
(MESS) c16: Added PAL/NTSC variants. (nw)
(MESS) v364: Fixed speech ROM mapping. (nw)
(MESS) compis: Separated keyboard to its own file. (nw)
(MESS) huebler: Cleanup. (nw)
out of whatsnew: I also hooked up the list to the driver, even if I have no idea to which degree the system works these days (I don't know much about this machine).
out of whatsnew: the disk dumps do not come from original media, but given that no more program disks ever appeared in the past two years and that even the website which originally hosted these disks disappeared, it is definitely worth documenting them before they get lost forever...
also mame\includes\multfish.h can/must be removed from source tree coz it is not used by driver. by MetalliC (no whatsnew)
update Megadrive cart module for support "Pier Solar" cart (mapper and "ST M95" eeprom code) by MetalliC (no whatsnew)
Comment: note, could still do with andreas seeing if he can find a relationship between the encryption tables we've derived from studying the
protection (used to decrypt the various blocks in the protection data
rom) and the final block in the protection data rom..
* Split segas16.h header into separate headers for each system
* Fully modernize segas16a
* Convert multiply, divide, and compare/timer chips into
modern devices
* Fix bug causing tturfu and wrestwar to hang at startup
baseboard there (most of these ones actually run quite well apart from
some moaning about reels) This board used the AY8913, the mod4 board
didn't have that, so it's a logical split point. Also some more identification / tagging etc. of other sets. From Haze (nw)
* Converted FD1089/FD1094 into proper devices, derived
from m68000. They now handle their own decryption and
memory management, so we can remove all the calls for
initialization/reset/etc. The key now lives as a 'key'
subdevice under the CPU, and the FD1089/1094 are now
specified just like any other CPU.
* Removed the horrible s16fd and s24fd files. Good riddance.
* Created a helper class for managing fd1094 decryption
caches.
* Converted the memory mapper into a new modern device
and updated the segas16b, segaorun, and segas18 drivers
to use it. Fixed ROM memory mapping so that the source
ROMs can be loaded contiguously, removing a bunch of
hacks.
* Untangled the joined segas1x_state and split the states
for each system into their own classes. Cleaned up some
implementations.
* Added support for member functions to be called as
DRIVER_INIT functions. To do this, #define
MODERN_DRIVER_INIT prior to #including "emu.h" and you
will be required to specify a class and member function
for your driver init.
* Fully modernized the segas16b and segas18 drivers.
New working games added
-----------------------
GP Rider (Japan) [ShouTime, Charles MacDonald, Aaron Giles]
Last Survivor [ShouTime, Charles MacDonald, Aaron Giles, 9ofzeven, TrevEB,
Dr. Spankenstein, ghoolster, Surgeville, Tormod, Tjaberg, Waremonger]
(Note: A couple games are still busted, but most are working. Will
follow up with more updates.)
(mpu4dealem.c) because it's a unique expansion, no point in having all
that stuff in the main state. The standard video board it's own state class too, and moved specifics to that, plus converted the scn2674 video chip to be a device (new files there too) again reducing the amount of junk in the base mpu4 state. From Haze (nw)
- Based on timeslot modelling, the implementation models gate delays in logic chips.
- Design ready to be split into a generic and a MAME implementation part.
- Design prepared to merge in discrete components from discrete.*
- Supports code based as well as external net list parsing.
Ultimately, net lists and discrete emulation should share one code base. The class design was set up to accomplish this. There is no point in having multiple 555, 7474 implementations around.
Most of the code will be moved to lib/netlist going forward to allow usage in other projects.
------------------------------------
Beach Head 2000 Install - 05/27/03 [Smitdogg, The Dumping Union]
Beach Head 2000 Install - 09/16/01 [Smitdogg, The Dumping Union]
Beach Head 2002 Install - 05/27/03 [Smitdogg, The Dumping Union]
Beach Head 2003 Desert War Install - 05/27/03 [Smitdogg, The Dumping Union]
Global VR XP OS Install - 09/30/01 [Smitdogg, The Dumping Union]
Global VR XP OS Update/Install - 06/11/02 [Smitdogg, The Dumping Union]
Hyper V2 (Global VR) Install - 09/30/0l [Smitdogg, The Dumping Union]
Hyper V2 (Global VR) Install - 06/12/02 [Smitdogg, The Dumping Union]
Need For Speed: Underground Install (2 Discs) (v1.1) [Smitdogg, The Dumping Union]
-----------------------------------
Skins Game (1.08) [Mr. CAST, M. Ponweiser, Mojo2000, Smitdogg, The Dumping Union, R. Belmont]
Skins Game (unknown alt. version) [Guru, R. Belmont]
------------------------------------
Pong (Rev E) [Couriersud]
Work in progress. The games is playable and has sound, however I suspect some minor bugs due to the order of expression evaluation.
I commit this mainly for documentation purposes. The modelling of the TTL circuits will change to a device/connection class infrastructure updating inputs immediately if they changed going forward.
and wait state generation. Previous implementation has been renamed to
*l.{c,h} and drivers point to the old implementation until they are
adapted to the new version. [Michael Zapf]
* Inputs from the scratch.
* Completely demuxed the output lines.
* Added lamps support.
* Added a nice button-lamps layout.
* Found and added the FEVER! lamp.
* Fixed the Oki6295 and CRTC 6845 clocks.
* Corrected the refresh rate to 52.786 Hz (similar to Major Poker).
* Hooked the vblank input line.
* Figured out the following DIP switches:
Auto Max Bet, Flip Screen, Maximum Bet,
Auto Hold, Double-Up Type, Remote Credits,
Bet Limit, and Coinage Multiplier.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Chance Thirty Two [Roberto Fresca]
* Identified the slots game as Super Stars.
* Changed am_uslot to suprstar.
* Reworked inputs from the scratch.
* Added support for outputs: lamps & counters.
* Added a button-lamps layout.
* Promoted the game to working state.
* Added technical notes.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Super Stars [Roberto Fresca, Angelo Salese, Andreas Naive]
* Reworked Inputs for all games.
* Added button-lamps support.
* Created internal control layout for all games.
* Added mech counters support.
* Promoted all games to working state.
* Renamed the mdrawpkra ROMs based on PCB picture.
* Renamed the driver to meyc8080.c
* Added technical and game notes.
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Draw Poker - Joker's Wild (Standard) [hap, Roberto Fresca]
Draw Poker - Joker's Wild (02-11) [hap, Roberto Fresca]
- This game has mechanical parts so it's not exactly playable, but it is possible try it until the end giving the expected inputs.
- Imported the i8279 device from MESS and updated to support sensor
mode and mask nibble.
- Made a simple layout and the defined input ports.
New clones marked as GAME_NOT_WORKING
------------------------------------
Zeke's Peak [Sandro Ronco]
Renamed driver overrides to MCFG_MACHINE/SOUND/VIDEO_START_OVERRIDE to
explicitly indicate they are overriding the default behavior.
Put liberatr back the way it used to be.
Normalized soundlatch helper function names.
Created delegates for machine/sound/video_start/reset callbacks and
added necessary infrastructure to use them going forward.
- General update which fleshes out some of the 68307 code (not 100% correct hookups, just improved logging and enough to get us somewhere).
- Added various devices to the SC4 emulation, added a default layout showing the VFD, to which most of the earlier games will now write 'Initializing'. Timers and other devices still need to be implemented properly before they actually initialize.
- Put the actual SC4 hardware emulation in drivers/bfm_sc4h.c so that it doesn't get lost in the swamp of sets (scrolling through a file is quite hard when it's almost entirely set definitions)
and the insane 16 graphics banks scheme. Improved the Wild Witch and
Jolli Witch inputs, and switched them to the extended hardware. Got
accurate colors for all the extended sets. Worked inputs and lamps
from the scratch. Added technical notes. [Roberto Fresca]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Witch Up & Down (Export, 6T/12T ver 0.99) [Roberto Fresca, Team Europe, Marcus Jendroska, Video Klein]
Witch Up & Down (Export, 6T/12T ver 1.02) [Roberto Fresca, Team Europe, Marcus Jendroska, Video Klein]
Wild Witch (Export, 6T/12T ver 1.74A) [Roberto Fresca]
Z80 + CTC + DAC systems with artwork and lamps + LEDs, running
the well-known game "Rock-Paper-Scissors". Also added a complex
internal artwork layout. [Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Janken Man (Pretty Carnival) [Roberto Fresca, anonyMous donator]
spriteram. Removed core support for legacy buffered spriteram, and
updated all drivers to use the new devices instead. [Aaron Giles]
Removed required/optional_shared_size helpers. Instead the existing
required/optional_shared_ptr helpers now have a bytes() method that
can be used to query the size of the shared region. [Aaron Giles]
New games marked as GAME_NOT_WORKING
------------------------------------
World Soccer Winning Eleven Arcade Game Style [Team Japump, Guru]
World Soccer Winning Eleven Arcade Game 2003 [Team Japump, Guru]
- enforced short names for slot card devices
- updated validation, romverify and listxml output accordingly
- slotoptions now also contain shortnames so it's possible to link
slot option and device
similar to Ludo, derivated from the indian game Parchisi. Coin-op
machine for 1-4 players. No screen, just artwork and lamps.
[Roberto Fresca]
New games marked as GAME_NOT_WORKING
------------------------------------
Mann, oh-Mann [Roberto Fresca, Team Europe]
from 4 to 5. This means any diff CHDs will no longer work. If you
absolutely need to keep the data for any existing ones you have,
find both the diff CHD and the original CHD for the game in question
and upgrade using these commands:
rename diff\game.dif diff\game-old.dif
chdman copy -i diff\game-old.dif -ip roms\game.chd -o diff\game.dif -op roms\game.chd -c none
Specifics regarding this change:
Defined a new CHD version 5. New features/behaviors of this version:
- support for up to 4 codecs; each block can use 1 of the 4
- new LZMA codec, which tends to do better than zlib overall
- new FLAC codec, primarily used for CDs (but can be applied anywhere)
- upgraded AVHuff codec now uses FLAC for encoding audio
- new Huffman codec, used to catch more nearly-uncompressable blocks
- compressed CHDs now use a compressed map for significant savings
- CHDs now are aware of a "unit" size; each hunk holds 1 or more units
(in general units map to sectors for hard disks/CDs)
- diff'ing against a parent now diffs at the unit level, greatly
improving compression
Rewrote and modernized chd.c. CHD versions prior to 3 are unsupported,
and version 3/4 CHDs are only supported for reading. Creating a new
CHD now leaves the file open. Added methods to read and write at the
unit and byte level, removing the need to handle this manually. Added
metadata access methods that pass astrings and dynamic_buffers to
simplify the interfaces. A companion class chd_compressor now
implements full multithreaded compression, analyzing and compressing
multiple hunks independently in parallel. Split the codec
implementations out into a separate file chdcodec.*
Updated harddisk.c and cdrom.c to rely on the caching/byte-level read/
write capabilities of the chd_file class. cdrom.c (and chdman) now also
pad CDs to 4-frame boundaries instead of hunk boundaries, ensuring that
the same SHA1 hashes are produced regardless of the hunk size.
Rewrote chdman.exe entirely, switching from positional parameters to
proper options. Use "chdman help" to get a list of commands, and
"chdman help <command>" to get help for any particular command. Many
redundant commands were removed now that additional flexibility is
available. Some basic mappings:
Old: chdman -createblankhd <out.chd> <cyls> <heads> <secs>
New: chdman createhd -o <out.chd> -chs <cyls>,<heads>,<secs>
Old: chdman -createuncomphd <in.raw> <out.chd> ....
New: chdman createhd -i <in.raw> -o <out.chd> -c none ....
Old: chdman -verifyfix <in.chd>
New: chdman verify -i <in.chd> -f
Old: chdman -merge <parent.chd> <diff.chd> <out.chd>
New: chdman copy -i <diff.chd> -ip <parent.chd> -o <out.chd>
Old: chdman -diff <parent.chd> <compare.chd> <diff.chd>
New: chdman copy -i <compare.chd> -o <diff.chd> -op <parent.chd>
Old: chdman -update <in.chd> <out.chd>
New: chdman copy -i <in.chd> -o <out.chd>
Added new core file coretmpl.h to hold core template classes. For now
just one class, dynamic_array<> is defined, which acts like an array
of a given object but which can be appended to and/or resized. Also
defines dynamic_buffer as dynamic_array<UINT8> for holding an
arbitrary buffer of bytes. Expect to see these used a lot.
Added new core helper hashing.c/.h which defines classes for each of
the common hashing methods and creator classes to wrap the
computation of these hashes. A future work item is to reimplement
the core emulator hashing code using these.
Split bit buffer helpers out into C++ classes and into their own
public header in bitstream.h.
Updated huffman.c/.h to C++, and changed the interface to make it
more flexible to use in nonstandard ways. Also added huffman compression
of the static tree for slightly better compression rates.
Created flac.c/.h as simplified C++ wrappers around the FLAC interface.
A future work item is to convert the samples sound device to a modern
device and leverage this for reading FLAC files.
Renamed avcomp.* to avhuff.*, updated to C++, and added support for
FLAC as the audio encoding mechanism. The old huffman audio is still
supported for decode only.
Added a variant of core_fload that loads to a dynamic_buffer.
Tweaked winwork.c a bit to not limit the maximum number of processors
unless the work queue was created with the WORK_QUEUE_FLAG_HIGH_FREQ
option. Further adjustments here are likely going to be necessary.
Fixed bug in aviio.c which caused errors when reading some AVI files.
- The SDL team has moved from 1.3 to 2.0. At the same time, changes were made to allow SDL1.2 and SDL2.0 to coexist. All SDL2.0 include files are now in /usr/include/SDL2.
- Added sdlinc.h to avoid having tons of #ifdef .. #include in the code.
- Scalemode is no longer a per-window setting
- Fixed a bug in YUV rendering.
- Use SDL_GetClipboard (SDL2.0)
- Updated README_SDL20.txt
Currently, SDL 2.0 is only supported on *nix. Volunteers welcome.
(nw) If anyone has any suggestions on how better to sync per-scanline state than what I'm currently doing, I'd be all ears. The renderer is now pretty darn fast, but every little bit counts.
new not working:
---------------
Unknown BMC Poker Game,
Gone Fishing 2
Chess Challenge 2
EZ Touch
Sega Shooting Zone
new clones
---------
Warriors of Fate ('sgyxz' bootleg) (not working)
and paths consistently for devices, I/O ports, memory
regions, memory banks, and memory shares. [Aaron Giles]
NOTE: there are likely regressions lurking here, mostly
due to devices not being properly found. I have temporarily
added more logging to -verbose to help understand what's
going on. Please let me know ASAP if anything that is being
actively worked on got broken.
As before, the driver device is the root device and all
other devices are owned by it. Previously all devices
were kept in a single master list, and the hierarchy was
purely logical. With this change, each device owns its
own list of subdevices, and the hierarchy is explicitly
manifest. This means when a device is removed, all of its
subdevices are automatically removed as well.
A side effect of this is that walking the device list is
no longer simple. To address this, a new set of iterator
classes is provided, which walks the device tree in a depth
first manner. There is a general device_iterator class for
walking all devices, plus templates for a device_type_iterator
and a device_interface_iterator which are used to build
iterators for identifying only devices of a given type or
with a given interface. Typedefs for commonly-used cases
(e.g., screen_device_iterator, memory_interface_iterator)
are provided. Iterators can also provide counts, and can
perform indexed lookups.
All device name lookups are now done relative to another
device. The maching_config and running_machine classes now
have a root_device() method to get the root of the hierarchy.
The existing machine->device("name") is now equivalent to
machine->root_device().subdevice("name").
A proper and normalized device path structure is now
supported. Device names that start with a colon are
treated as absolute paths from the root device. Device
names can also use a caret (^) to refer to the owning
device. Querying the device's tag() returns the device's
full path from the root. A new method basetag() returns
just the final tag.
The new pathing system is built on top of the
device_t::subtag() method, so anyone using that will
automatically support the new pathing rules. Each device
has its own internal map to cache successful lookups so
that subsequent lookups should be very fast.
Updated every place I could find that referenced devices,
memory regions, I/O ports, memory banks and memory shares
to leverage subtag/subdevice (or siblingtag/siblingdevice
which are built on top).
Removed the device_list class, as it doesn't apply any
more. Moved some of its methods into running_machine
instead.
Simplified the device callback system since the new
pathing can describe all of the special-case devices that
were previously handled manually.
Changed the core output function callbacks to be delegates.
Completely rewrote the validity checking mechanism. The
validity checker is now a proper C++ class, and temporarily
takes over the error and warning outputs. All errors and
warnings are collected during a session, and then output in
a consistent manner, with an explicit driver and source file
listed for each one, as well as additional device and/or
I/O port contexts where appropriate. Validity checkers
should no longer explicitly output this information, just
the error, assuming that the context is provided.
Rewrote the software_list_device as a modern device, getting
rid of the software_list_config abstraction and simplifying
things.
Changed the way FLAC compiles so that it works like other
external libraries, and also compiles successfully for MSVC
builds.
test driver that (ab)uses the core to single step a CPU executing
arbitrary instructions and capturing before/after state and
tracking memory. Currently this driver is always compiled, but is
not referenced in mame.lst.
Also updated and modernized the dummy empty driver.
almost certainly some regressions lurking. Let me know if
something seems busted.
Bitmaps are now strongly typed based on format. bitmap_t still
exists as an abstract base class, but it is almost never used.
Instead, format-specific bitmap classes are provided:
bitmap_ind8 == 8bpp indexed
bitmap_ind16 == 16bpp indexed
bitmap_ind32 == 32bpp indexed
bitmap_ind64 == 64bpp indexed
bitmap_rgb32 == 32bpp RGB
bitmap_argb32 == 32bpp ARGB
bitmap_yuy16 == 16bpp YUY
For each format, a generic pix() method is provided which
references pixels of the correct type. The old pix8/pix16/pix32/
pix64 methods still exist in the short term, but the only one
available is the one that matches the bitmap's pixel size. Note
also that the old RGB15 format bitmaps are no longer supported
at all.
Converted model1, megadriv, and stv drivers away from the RGB15
format bitmaps.
New auto_bitmap_<type>_alloc() macros are provided for allocating
the appropriate type of bitmap.
Screen update functions now must specify the correct bitmap type
as their input parameters. For static update functions the
SCREEN_UPDATE macro is now replaced with SCREEN_UPDATE_RGB32 and
SCREEN_UPDATE_IND16 macros. All existing drivers have been
updated to use the correct macros.
Screen update functions are now required for all screens; there
is no longer any default behavior of copying a "default" bitmap
to the screen (in fact the default bitmap has been deprecated).
Use one of the following to specify your screen_update callback:
MCFG_SCREEN_UPDATE_STATIC(name) - static functions
MCFG_SCREEN_UPDATE_DRIVER(class, func) - driver members
MCFG_SCREEN_UPDATE_DEVICE(tag, class, func) - device members
Because the target bitmap format can now be deduced from the
screen update function itself, the MCFG_SCREEN_FORMAT macro is
no longer necessary, and has been removed. If you specify a
screen update callback that takes a bitmap_ind16, then the screen
will be configured to use a 16bpp indexed bitmap, and if you
specify a callback that takes a bitmap_rgb32, then a 32bpp RGB
bitmap will be provided.
Extended the bitmap classes to support wrapping a subregion of
another bitmap, and cleaner allocation/resetting. The preferred
use of bitmaps now is to define them directly in drivers/devices
and use allocate() or wrap() to set them up, rather than
allocating them via auto_bitmap_*_alloc().
Several common devices needed overhauls or changes as a result
of the above changes:
* Reorganized the laserdisc base driver and all the laserdisc
drivers as modern C++ devices, cleaning the code up
considerably. Merged ldsound device into the laserdsc
device since modern devices are flexible enough to handle
it.
* Reorganized the v9938 device as a modern C++ device. Removed
v9938mod.c in favor of template functions in v9938.c directly.
* Added independent ind16 and rgb32 callbacks for TMS340x0 devices.
* All video devices are now hard-coded to either ind16 or rgb32
bitmaps. The most notable is the mc6845 which is rgb32, and
required changes to a number of consumers.
* Added screen_update methods to most video devices so they can be
directly called via MCFG_SCREEN_UPDATE_DEVICE instead of creating
tons of stub functions.