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.
out of log:
This way it is possible to link two or more separated executables with different
copyright/xml out/name/... in one compilation, just one step closer...
multislot support [David Haywood]
Please note: launching convention for Neo-Geo games is now the same as
MESS software lists "mame neogeo gamename" or "mame neogeo -cart
gamename".
------------------------------------
Arcana Heart Full [Tormod, Smitdogg, The Dumping Union]
Comments from Haze: Note, I haven't marked this as a bootleg, but 75% of the rom is actually MAME ROM zips, they've clearly recycled flash chips from one of the MAME multi-boots, so I have a feeling that this might have been a 3rd party upgrade. I doubt they shipped like this from the factory, so I've added a comment to that effect because it should definitely be verified against other copies of the game at some point.
(not-for-whatsnew section)
Note: extremely preliminary. No music, just sfx. No per-voice volume/panning. No attempts to optimize. Lots of hardcoding for how the CV1000 uses the chip. I will fix all of these later, but I gotta get to sleep now ;-)
A kind of MSX2 hardware on steroids...
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Kasino '89 [Roberto Fresca, Rob Ragon, Tomasz Slanina]
Data/address lines are scrambled. Main program is selectable through banks.
New games marked as GAME_NOT_WORKING
------------------------------------
Unknown TMS9980 Poker Game [Roberto Fresca, Team Europe]
Comment: This is mostly konami stuff.. if anybody knows the cpu on konendev please hook it up.. i think the sets are all incomplete, but unless it's missing a bios it should be possible to run the code at least.
Added missing inputs, fixing structure. Added button-
lamps support and layout to saiyukip, coin counters
and complete documented outputs to both games.
Also reworked the DIP switches structure to match
what the test mode shows, with their respective DIP
locations [Roberto Fresca]
and GFX offsets. Both sets are working properly. [Roberto Fresca]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Bingo (set 1) [Roberto Fresca, EMMA Italian Dumping Team]
Bingo (set 2) [Roberto Fresca, The Dumping Union]
- It is used by MESS side i8251 and 6551 are using it now
- Also created simple serial source devices (used by some cassette interface)
This will be optimized and rechecked after new chips are converted to use it
No whatsnew for now, but there will be info for the release.
- adds some additional skeletons BGT, Stella
- adds even more MPS sets, and basic support for what looks like something which was an earlier unknown system similar to MPS/System 80, but with different mappings etc. by Haze (no whatsnew)
- Removed LOADBYNAME, since it is deprecated by using per device rom load_software_part_region
- Created makedev tool to generate array of devices, and created lst file according to current devices usage.
- Changed listxml command to output device roms too
using one cothread for each executable device. This functionality is
strictly internal and should result in no changes in scheduling
behavior. However, it now becomes possible to exit out of a device's
execution in the midst of an instruction by calling
machine().scheduler().make_active(). Note that this is somewhat dangerous
for cores that have logic at the start of their execute loop to check for
interrupts or other conditions, as those checks will be skipped upon
resume, so consider this sort of early exiting to be highly experimental
for now. [Aaron Giles, Miodrag Milanovic, byuu]
- Added the ability to render screenshots at arbitrary resolutions.
- Added the ability to record AVI videos (albeit with no audio) at arbitrary resolutions.
- Added a 43-tap-wide FIR-based NTSC filter with tunable Y, I and Q frequency response.
- Updated scanlines to have a user-tunable pixel-height ratio in addition to the current screen-height ratio.
- Fixed a VRAM leak that was causing many dynamic-resolution drivers to run out of memory mid-run.
Low-level input upgrade. Classes now exist for input_codes, input_items,
input_devices, and input_seqs. Also created an input_manager class to
hold machine-global state and made it accessible via machine.input().
Expanded the device index range (0-255, up from 0-16), and the OSD can
now specify the device index explicitly if they can better keep the
indexes from varying run-to-run. [Aaron Giles]
Note that I've built and run SDL on Windows, but not all the code paths
were exercised. If you use mice/joysticks extensively double-check them
to be sure it all still works as expected.
This is mainly an OSD and core change. The only thing impacting drivers
is if they query for specific keys for debugging. The following S&Rs
took care of most of that:
S: input_code_pressed( *)\(( *)([^, ]+) *, *
R: \3\.input\(\)\.code_pressed\1\(\2
S: input_code_pressed_once( *)\(( *)([^, ]+) *, *
R: \3\.input\(\)\.code_pressed_once\1\(\2
- The defocus pass is now switched off when defocus_x and defocus_y are zero, allowing finer-grained performance tuning.
- Removed YIQ convolution from the main color-convolution shader and replaced it with a full composite encode/decode pass. This is slower, but looks amazing(ly like a terrible TV) and can be turned off.
- More authentic NTSC dot crawl and bandwidth limiting.
- Potential fix for some crashing reported by John IV
- Split color convolution and deconvergence into separate shaders for potential GPU savings down the line
- Added light and heavy variants of the color convolution shader, the former with YIQ colorspace removed
- Re-worked defocus to occur prior to shadow mask application, as it would be on a real monitor.
- Removed Edge Detection, as it was just for fun and can easily be added in by users if desired.
- Split "pincushion" into "Pincushion" and "Screen Curvature", the former affecting the only the displayed image and the latter only affecting the shadow mask.
Part II: Artwork.
aperture.png: Based on Aaron's aperture_4x6 mask but with more prominent notching to bring out the "brick" pattern that was used on many period colour monitors, including the Commodore 1702 - which was, admittedly, not an arcade monitor, but it looks believable and can be changed.
white.png: Default 8x8 255,255,255,255 texture.
Focus: 8-sample blur that averages 7 samples around a center sample.
Phosphor: Not currently used, treated as a pass-through by drawd3d.c, but could be used to implement additional convolutions in a second pass.
Pincushion: Used (when commented in in drawd3d.c) to pincushion an entire full-screen texture but not otherwise apply any convolutions.
Post: The meat and potatoes. It does scanlines, it does aperture masking, it does dot crawl, it does chroma subsampling, it does YIQ colorspace convolution, it does RGB colorspace convolution, it does pincushioning, it walks, it talks, it does the dishes, it'll screw your wife for you, and if you don't have a wife it will find one for you, get you married to her, and screw her for you, IT IS THAT GOOD, LADIES AND GENTLEMEN.
Primary: Simple passthrough for UI and artwork.
Remove the old tokenizing helpers. Add basic classes for ports, fields,
settings, and dip locations as a first step. These will be fully cleaned
up later. Added machine() method to field to hide all the necessary
indirection. Changed custom/changed handlers into generic read/write
handlers, and added wrappers to convert them to device read/write
lines. [Aaron Giles]
MDEC is now an internal device of the PlayStation CPU [smf]
PlayStation DMA uses delegates so devices can be hooked up.
device_t::siblingdevice() uses device list on mconfig() so it can work before the machine is constructed.
moved unused console code back to mess.
Note that msm8251 would be nice to have on emu section but it depends of serial.c which needs to be rewritten in order to be useful. Also upd765 is used only by MESS and it's pain to keep it in emu since it is not yet bug free.
Converted PlayStation DMA to an internal device to the CPU core. DMA to external devices can be set in the machine config, the old calls are still there until the rest of the code is converted. [smf]
The following MAME core changes have been required to allow internal devices to be configurable by the main machine config & to work with internal memory maps.
device.machine_config_additions() are now processed as soon as the device is added, so sub devices can be configured straight away.
replacing or removing a device removes any devices owned by the device being removed, as now they are added straight away.
device_t::subdevice() uses the machine config device list instead of the machine to find the device as the machine is not created until after all the devices have been created.
devices in an internal address map are assumed to be owned by the CPU, while devices in a standard address maps are assumed to be siblings of the CPU.
A code review and regression test would be a good idea.
mpu4.c: Documented MOD 4 OKI program card ROM banking and improved the BwB characteriser emulation. [James Wallace]
New games added as GAME_NOT_WORKING:
------------------------------------
MPU3 Unit Test (Program 5)
Hyper Viper
loader rewrite, which is still in progress....)
Replaced mamedriv.c with a new driver list mechanism that is generated
by the build tools. The emulator core now expects the presence of a
file called src/$(TARGET)/$(SUBTARGET).lst which is just a raw list of
driver names, one per line. C and C++ comments are still permitted.
This file is parsed by a new build tool makelist which extracts the
driver names, sorts them, and generates a file called drivlist.c, which
is consumed by the core. [Aaron Giles]
Added new osdcore function osd_malloc_array() which is identical to
osd_malloc() but obviously hints that the underlying allocation is for
an array. Updated all callers to use the appropriate form. Modified the
Windows allocator to only use guard pages for array-style allocations,
allowing us to enable them once again in debug builds. [Aaron Giles]
Created new static class driver_list to wrap accesses to the list of
available drivers. Improved speed of driver lookups by relying on the
presorting done by makelist. [Aaron Giles]
Created helper class driver_enumerator as a helper for iterating through
the list of drivers. This class supports basic filtering and iteration,
and also serves as a temporary cache of machine_configs. [Aaron Giles]
Created cli_frontend object to wrap all the CLI handling code in
clifront.c. Updated/simplified all the code to take advantage of the
driver_enumerator. [Aaron Giles]
Created media_auditor object to wrap all the auditing functions in
audit.c. Updated all users to the new interface. Note that the new
auditing mechanism is slightly out of sync with the romload code in
terms of finding ROMs owned by devices, so it may mis-report some
issues until the new ROM loading code is in. [Aaron Giles]
Added concept of a per-device searchpath. For most devices, their
searchpath is just the short name of the device. For driver_devices, the
searchpath is driver[;parent[;bios]]. This searchpath will eventually be
used by the rom loader to find ROMs. For now it is used by the media
auditor only. [Aaron Giles]
Created info_xml_creator object to wrap all the info generation functions
in info.c. Converted the file to C++ and cleaned up the input processing
code. [Aaron Giles]
(not for whatsnew ... Known issues: auditing of CHDs appears busted, and
debug builds report unfreed memory if you use the built-in game picker)
-------------------------------
Home Run Classic [Mariusz Wojcieszek]
Country Club Classic [Mariusz Wojcieszek]
Trap Shoot Classic [Mariusz Wojcieszek]
New games added or promoted from NOT_WORKING status
---------------------------------------------------
Water-Nymph (Ver. 1.4) [Team Europe, Luca Elia]