* Fixed building using system utf8proc
* Fixed building using system portaudio
* Allow using system-wide asio headers (1.11.0 or higher required).
* Allow using system-wide glm headers
* Allow using system-wide rapidjson headers
* Put all ext_includedir calls together
* Fixed build failure when SOURCES is defined
* Fixed building using system utf8proc
* Fixed building using system portaudio
* Allow using system-wide asio headers (1.11.0 or higher required).
* Allow using system-wide glm headers
* Allow using system-wide rapidjson headers
* Add 89 in 1 mini console
* Add mc_cb280, similar to sy889
* More VTxx ROMs
* Add more nes_vt systems
* Add SY888B
* Add support for VTxx systems with scrambled instructions (FC Pocket, DGUN2573)
* Add support for Family Pocket, and more FC Pocket games
* Small fixes and reclassifications (nw)
* Support for VTxx scrambled banking (thanks NewRisingSun for help)
* New palette code from NewRisingSun, etc
* Various VT03 fixes, several systems including ZDog now working
* nes_vt comment/status updates (nw)
* Refactor m6502_vtscr (nw)
* create derived 6502 type for XaviX because it has at least one custom 4-byte opcode that doesn't fit any other type.
treating that opcode as NOP for now.
have a feeling it might be something to do with the other integrated hardware, might be 'execute co-processor code chain at this address' or something similar
It isn't a standard JSL (Jump Subroutine Long) like the SNES cpu opcode in the same place as this, it seems to point at some code-like structures tho)
could also be a secondary operation mode with different encoding like ARM's Thumb mode tho I guess.
We currently only have a single XaviX based dump (taitons1) but there are more on the way. I'm going to see if the code flow makes any sense at all with these missing, or if any of it gives a clue as to what they should actually do.
* xavix - let's call these callf and retf then
after further investigation these are some kind of extra 'long jump' subroutine / task handlers, the 0x80 also being a custom opcode was throwing me off trying to identify them before.
looks like they might have been hacking 65816 features into the regular 6502 core?
* prepare for extra address bits (nw)
* better program flow (nw)
- P.R.E.S. Advanced Plus 3/4
- Advanced Quarter Meg Ram
- Cumana Floppy Disk System
- Sound Expansion
- Sound Expansion v3
- Stop Press 64
- Solidisk EFS
New working software list additions
-----------------------------------
electron_cart: Solidisk EFS 2.1E
New NOT_WORKING software list additions
---------------------------------------
electron_cart: Stop Press 64
Software list items promoted to working
---------------------------------------
electron_cart: Advanced Plus 3, Advanced Quarter Meg RAM, Slogger Electron Disk System, Sound Expansion v3
* fix/tidy tvboy driver (nw)
* missed file (nw)
* framework for adding 'gamebooster' (need to figure out how it actually works / maps tho) (nw)
(code based on zx spectrum expansion port code)
* (nw)
* lost a line (nw)
* allow it to run (nw)
* continued work (nw)
* mame64 psj -parallel gamebooster -cart tetris now works
* rm outdated (nw)
* remove unneeded code (nw)
* limit accesses, log unexpected ones, might have custom banking (nw)
* write bytes in an order that keeps the gb code happier , sml boots (nw)
* various reorganization of radica and vtech stuff
* missed this (nw)
* correct file (nw)
* newlines and stuff (nw)
* less c_str (nw)
* worse (IMHO) filenames (nw)
* format got messed up (nw)
* some bits for golden tee (nw)
* get us renderng something in rad_gtg (nw)
* some basic inputs (nw)
* further improvements to the Golden Tee Home Edition (radica eu3a14)
added Radica Sensible Soccer [Sean Riddle]
* tilebase handling (nw)
* golden tee home video improvements (nw)
Revert "Removal of voltage_regulator_device (nw)"
This reverts commit 1af133752a.
Revert "New way to provide DAC reference inputs (nw)"
This reverts commit 1c6a7ab40c.
* restored basic support for SANITIZE make option
* disabled some unwanted UBSAN checks / enabled nullability checks / enabled ASAN use-after-scope checks (nw)
* new NOT WORKING
Space Invaders (Radica, Arcade Legends TV Game) [Team Europe, Sean Riddle]
(not sure what this is really called, it's a 5-in-1, it probably contains a customized 6502 core, or there should be an internal bootstrap rom)
* typo (nw)
* based on a jump to e092 which looks like it should maybe skip an opcode this seems a more possible mapping (nw)
* actually vectors are right there (nw)
* memory map improvements (nw)
* various notes etc. (nw)
* various banking bits (nw)
* actually remember to hook up the read (nw)
* clearly inputs (nw)
* show that the game is actually running, even if we don't understand the video format, there's clearly some kind of tilemap structure in ram (nw)
* this is bitmap ram on qix (nw)
* didn't mean to change this (nw)
* gfx are stored more like texture pages?! (nw)
please people, remember to keep source UTF-8 and if you're committing on behalf of others, clean up indents to meet MAME conventions
anyone can run srcclean over a submission and see what will get hit
promoted China set of Oriental Legend 2 to working
promoted Knights of Valour 2 New Legend to working
as each game/region requires a valid default card in order to save said cards are part of romset.
(there's probably a cleaner way to do the device finder stuff but I forgot and can't find reference)
An implementation of the National Semiconductor DP8510 BITBLT Processing Unit. This is used on the InterPro GT family graphics boards, and this implementation seems to be correct enough to enable me to progress there, hence the PR. While I'd love to have another system to test against, I'm not aware of any other systems that ever used this device other than some NatSemi reference designs, which are not (yet) in MAME.
* hp9845 & hp64k: fixed breakage caused by c46e1007a8
* hp9845: HLE of internal printer added
* hp9845: fix to printer interrupt line
* hp9845: moved src/devices/machine/hp9845_printer.* to src/mame/machine
Disassemblers are now independant classes. Not only the code is
cleaner, but unidasm has access to all the cpu cores again. The
interface to the disassembly method has changed from byte buffers to
objects that give a result to read methods. This also adds support
for lfsr and/or paged PCs.
Implementation of 28F010 and family flash memory devices. These are not compatible with the JEDEC-standard flash command protocol implemented in intelfsh.
* Don't use device_serial_interface for transmit - it can't support sync modes, on-the-fly register updates, and other weirdness.
* Better modelling of 1-deep transmit queue.
* Better RTS/CTS behaviour.
* Completely overhauled interrupt logic - vectors should be correct for most async modes.
* Implemented different auto-reset receive errors in MPSC vs SIO.
* Implemented SDLC transmission including bit stuffing, transmit CRC, abort, and underrun/end-of-message behaviour.
Added an SDLC consumer device that logs SNA frame headers and data.
The analogue joystick is now emulated. Also fixed a few minor issues
with the memory map.
This also adds a generic Z80 dasisy chain device, for use in drivers
with non-Z80 peripherals.
Use "mame einstein -pipe tk02" to attach the 80 column device.
* Removed no longer needed einstei2 driver
* Added cursor rendering to the 80 column device
* Added support for the alternate character set (use dip switch to
change)
* Cleaned up and added save state support to the 80 column device
Many changes in this PR, including the following:
* added support for InterPro 20x0, 24x0 and 27x0 systems
* added support for SR bus/slot devices
* added support for Ethernet, graphics, keyboard and mouse
* added support for serial DMA
* improved timer, interrupt and DMA handling
* improved comments/documentation
Note: ioga is still a major work in progress, and most of the other *ga's don't do anything useful yet, however this build can do some new and useful things, and it's closer to OS boot than before, as well as cleaned up in some of the better known areas.
* added basic support for the system bus variously referred to as SR, SR bus, SRX and CBUS
* added an initial GT graphics card implementation, only supports the video ram and ramdac for now, but sufficient to boot the diagnostic monitor in graphics mode
* added a high-level emulation of the InterPro keyboard
protection handled etc. written from scratch based on notes from Kevtris and Peter
banking in the slot system seems somewhat archaic compared to proper modern banking, but this is how all other drivers I saw using slot roms did it.
---------------------
E-Touch Mahjong Series #6: Scandal Blue - Midara na Daishou [ShouTime, Team Japump, The Dumping Union]
E-Touch Mahjong Series #7: Trap Zone - Yokubou no Kaisoku Densha [ShouTime, Team Japump, The Dumping Union]
--------------------------------------
Ton Puu Mahjong [ShouTime, The Dumping Union]
This is only a skeleton driver. ShouTime will keep the PCB only for a few more days, so if someone has the time to have a look.. (nw)
* Remove duplicate code
* Screen raw parameters and XTAL values
* Added PAL dumps for supbtime [Luiskiko/jammarcade.net]
* Add dip switch locations to all games
* Emulate LC7535 based volume control for Dragon Gun board based games
* Add DSW3 and DIP locations to Captain Avenger
* Reorganize driver and start cleaning it up (in progress)
Specifically, this creates a call osd_get_command_line() that returns UTF-8 command line arguments as std::vector<std::string>. On non-Windows platforms, this does nothing more than build the vector. On Windows, this invokes GetCommandLineW() and CommandLineToArgvW(). This also attempts to unwind usage of wmain()/_tmain() on Windows, which is not standard.
Related to this, this fixes a bug in Imgtool; specifically, non-7 bit ASCII was not being handled correctly in Windows.
This is really an admission that the way that Windows handles Unicode and command line arguments sucks, and it is my belief that having a wmain() or _tmain() declaration specific for Windows is a worse solution. C'est la vie.
I'm very open to the idea that src/osd/osdcore.[cpp|h] is not the best place to do this. Let me know if I should move it.
------------------------------------------------------
Mephisto Modena [yoyo_chessboard, Sandro Ronco]
Mephisto Monte Carlo [Sandro Ronco]
Mephisto Monte Carlo IV LE [Sandro Ronco]
Mephisto Mega IV [Sandro Ronco]
Used by games in the cninja and deco32 drivers. This implies proper
VBlank IRQ ack for all games now. Also added and improved raw screen
parameters for various games.
* hp85: added support for optional ROM cartridges. Started optional ROM
sw list (not finished).
* hp85: refactored mapping of opt. ROMs according to cuavas' comments
* initial skelethon: ControlID X628 fingerprint reader
* first draft of an implementation of the NT7534 device (LCD controller)
* fix emulation of ControlID x628 + NT7534 LCD controller
* cidx628: fix LCD color palette on Control ID x628 driver
* Adding a header with details of the hardware. This is the first MAME driver with an LCD controlled by a NT7534 chip, so I wrote an initial implementation of that new device.
unkfr belongs in 4enraya (which was my guess when it was mentioned)
doesn't seem much point in having a complete non-working driver in the source for it when it boots as a romswap.
Basic system is done and it can boot from floppy, but there are still
many things to add, therefore marked as NOT_WORKING for now.
New machines added as MACHINE_NOT_WORKING
-----------------------------------------
Kontron PSI98 [Dirk Best, rfka01]
slots uncovered
(nw) It seems at some point someone didn't realise that choosing the
same option from a SLOT_INTERFACE in multiple slots creates multiple
instances of the same device type, and this got copy/pasted everywhere.
* Support serving static assets, use for stylesheet, script and images
* Better error pages, reject unsupported HTTP methods
* Replace lists with sortable tables with more detail (click headings to sort)
* Add pages for exploring source files, link from machine pages
- Can start from full source file list at http://localhost:8080/sourcefile/
(nw) JavaScript performance can drop when sorting really big tables,
e.g. the list of all source files, or the list of machines in some of
the fruit machine drivers. This update doesn't expose machine/device
information, just consolidating what's there. The wsgiref server is
adding headers to prevent caching, I'll look for a workaround.
output from -listxml verb. Compatible with Python 2.7 or Python 3.
Requires at least SQLite 3.6.19 for foreign key support.
This serves a few purposes:
* Demonstrating some things that can be done with -listxml output
* Providing a reference implementation for useful queries
* Helping ensure our XML output isn't completely useless
* Providing additional queries over MAME's auxiliary verbs
* Proper glob support unlike the broken implementation in MAME right now
Right now, it's a bit ugly to use. You can only load into a completely
clean database, and you need to manually create the schema. I'll
address this later. The default database filename is minimaws.sqlite3
(you can override this with --database before the verb on the command
line). Loading isn't particularly fast, but query performance is very
good.
Create a database first:
rm -f minimaws.sqlite3
sqlite3 minimaws.sqlite3 < scripts/minimaws/schema.sql
Now you can load it using a MAME binary or XML output (use one of these
options, not both):
python scripts/minimaws/minimaws.py load --executable ./mame
python scripts/minimaws/minimaws.py load --file mame0188.xml
Once that's done you can do queries:
python scripts/minimaws/minimaws.py listfull
python scripts/minimaws/minimaws.py listclones "*cmast*"
python scripts/minimaws/minimaws.py listsource "*mous*"
python scripts/minimaws/minimaws.py listbrothers "intl*"
These work much like the equivalent MAME verbs, but without the overhead
of loading MAME's static data. But there's one already query that you
can't easily do with MAME:
python scripts/minimaws/minimaws.py listaffected "src/devices/cpu/m6805/*" src/devices/sound/qsound.cpp
This will list all runnable systems that use a device defined in any
file under devices/cpu/m6805 or in devices/sound/qsound.cpp (you can
specify and arbitrary number of files or glob patterns). This may be
useful for planning regression tests.
Another thing this does (that gives rise to the name) is serving
information over HTTP. It's implemented as a WSGI, and it mainly uses
GET requests. This means it can run hosted in Apache mod_wsgi, or
cached by Apache mod_proxy, Squid, nginx, or something else. It can
also run out-of-the-box using wsgiref.simple_server components. The
default port is 8080 but this can be changed with the --port option.
Start the web server with the serve verb (stop it with keyboard
interrupt ^C or similar):
python scripts/minimaws/minimaws.py serve
Right now it's rather crude, and doesn't list devices for you. This
means you have to know the shortname of a machine to get a useful URL.
For example, you can look at a driver and see its parent set and the
devices it references:
http://localhost:8080/machine/kof2000n
Or you can look at a device, and see the devices it refereces, as well
as the devices/systems that reference it:
http://localhost:8080/machine/zac1b11142
The links between devices/systems are clickable. They might 404 on you
if you used a single-driver build with broken parent/clone
relationships, but they should all work in a full build that passes
validation.
There's still a lot to do. In particular I want to demonstrate how to
do live DIP switch preview and dynamic slot discovery. But I've already
discovered stuff in the -listxml output that's less than ideal with
this, so it's helping.
appropriate containers, remove misleading const qualifiers, reduce
repeated XML walking.
(nw) Groups aren't parameterised, so they aren't as useful as they could
be (yes, it's on my TODO list). However, it's already useful for
putting a common set of elements in multiple views, potentially at
different locations/scales. See intlc44.lay and intlc440.lay for
examples of the level of copypasta this can eliminate. Be aware that
groups with explicit bounds don't clip thair content, it's only used for
calucating the transform matrix.
These humble 16-pin logic devices were commonly used in 8-bit arcade games to control coin counters/lockouts, IRQ flipflops, graphics banking, slave CPU reset lines, discrete audio triggers, screen flipping, serial EEPROMs and much else. Over 100 drivers and a few bus devices have been updated to use the new implementation, and a great deal of research has gone into documenting the physical location of these devices on actual PCBs in the source. Write handlers have been provided for both orthodox and somewhat less conventional memory mappings.
Incidental to this update, coin counters and/or lockouts have been added to Atari System 1 games, Basketball, Gauntlet, Gyruss, Hana Yayoi, Hole Land, Jr. Pac-Man, Mahjong Sisters, Pooyan, Roc'n Rope, Squash, Thunder Hoop, Time Limit, Time Pilot '84 and many others. This also cleans up coin counter behavior in Sauro and Rally Bike.
(nw) The purpose of committing this change, which has been several months in the making, early in the 0.189GIT cycle will be to allow time for fixing potential regressions; I've fixed a number of drivers that lost sound from this for various reasons (hnayayoi.cpp having missing or garbage ADPCM was particularly painful, since the three games in that driver all work slightly differently), but I can't test all affected drivers exhaustively. @Tafoid, don't bother running automated screen capture comparison tests on this, as many drivers are now expected to have the screen flipped for the first few seconds after reset.
- made ds5002fp store internal ram and sfr registers to nvram as they're battery backed
- this includes the 'configuration' details which are actually programmable, so don't belong in the 'MACHINE_CONFIG' section but rather as part of the default NVRAM
- as the exact format of the NVRAM storage is not known, and as not to break compatibility with the 'wrally' set Gaelco offer these bytes are now configured in the ROM LOADING like default NVRAM. Slightly awkward, but probably the best way.
- made the SRAM (external to DS5002FP, but still powered by the same battery) also save content, some games actually use it to store scores etc. as well as the game code.
- cleaned up the Touch and Go Dallas dump, and added some preconfigured internal RAM so that it actually loads the score data from the SRAM properly
- prepared all other drivers for the adding of the SRAM dumps, removing old 'never going to work' simulation code in the process. To do this a wrapper / interface device for the Gaelco Dallas + SRAM box was created.
out of whatsnew
Alligator Hunt was dumped and works, but not yet added, want to verify on a 2nd PCB first as the process does corrupt some bytes and a couple had to be handfixed, so the only way to know for sure is multiple dumps.
* Fix save/load states in Emscripten build
* Simplified Emscripten integration points
* Moved standalone JS functions to be static member functions of running_machine
* Improved Emscripten main loop
* Use convenience functions for cleaner code
As an added bonus, this now allows for proper shutdown of the running machine when running in the Emscripten environment - previously, attempts to exit the program were just being ignored.
- Merge driver with goldnpkr.cpp source to get working sound (graphics and sound should be identical)
- Add version numbers to set names
- Promote megadpkrb to WORKING (with one caveat)
What works:
* HP85A machine with 16K of RAM
* Capricorn CPU works
* Keyboard works (with minor issues)
* CRT text / graphics modes work (correct speed is not emulated yet so service ROM complaints)
* BASIC is usable
What is missing (and I'll have hopefully working soon):
* HW timers
* Beeper
* Integral printer
* DC100 cassette drive
* Extension ROMs
* I/O modules (especially the HPIB interface so that we can hook up floppy drives)
* Other models in the family (e.g. HP86)
create a uPD78C11 derived CPU type for this purpose, with internal ROM map
use internal ROM map for other uPD78C10 chips as it's always present.
add missing NO_DUMP definitions to various games using C-Chips with correct size etc.
pump megablast through the device code as really all it ever does is bank the c-chip window and test the RAM.
* Implemented front panel mode switches/LEDs and reset switch
* Added skeleton bus for "universal" slots and connected control lines
(nw) Default keyboard mapping is annoying because left shift, Z and X
are used both for typing into the TTY and switching program bank. You're
better off changing the mapping to make it less annoying or using a
socket and talking to it with telnet.
* Renamed to MCS-40.
* Emulated 8-clock instruction cycle, interruptible at any point.
* Converted TEST input to an input line.
* Added SYNC and CM output lines.
* Added support for 4040 CY output, logical operations, extended registers, ROM banking and disassembly.
* Made I/O space mapping more flexible to support the variety of peripherals available.
* Notable missing features are 4040 interrupt and halt, and "program memory" space.
* This turns the current state save feature to a menu; one can still press 0-9, but you can also browse a menu when loading and saving state
* Fixed some issues requested by Vas Crabb
* Updated state menu to support arbitrary character slots
* WIP, transitioned 'entry_char' to std::string
Still need to address Joystick and FR keyboard concerns
* Reimplemented state save support with joystick buttons
* Changed the state menu to be "code driven" rather than "character driven"
When the menu is displayed, it will look at the filenames, and translate them to a visual representation as per the user's locale
* Vas feedback
------------------------------------
Spirit of 76 [PinMAME]
New not working clone
-----------------------------------
Black Knight 2000 (PF-1) [PinMAME]
* This turns the current state save feature to a menu; one can still press 0-9, but you can also browse a menu when loading and saving state
* Fixed some issues requested by Vas Crabb
* Updated state menu to support arbitrary character slots
sound board, completing the tromba circuit
(nw) I'm not sure whether the model works properly or not, but in the
circuit where it's used, I don't think it can work properly with the
current TTL output model. A capacitor is charged by the Q output of a
74LS74 flipflop (U3A) until the voltage passes the Schmitt trigger's
threshold, causing it to reset the flipflop. However, the positive
trigger voltage of the Schmitt trigger is 1.6V, but our TTL output model
has a high output voltage of 1.0V (see nl_base.cpp:89). I realise the
simplified model of TTL logic with high impedance inputs and outputs
behaving as though thery're loaded is convenient and fast to simulate,
but it's not detailed enough for applications like this where
7400-series chips are used in analog circuitry. This is what held me up
last time I tried adding a netlist for this sound board.
- OPENMP refactored. All OPENMP operations are now templatized in pomp.h
- We don't need thread-safe priority queue. Event code updating analog
outputs now runs outside the parallel code.
(nw)
* Tromba (trumpet) sound is not working - requires Schmitt trigger device
* Connecting cassa (bass drum) swamps other instruments so it's disconnected for now
* Mixing melody sound with speech/SFX is not done in netlist (should be)
* Relative levels of melody/speech/SFX are probably still wrong
(nw) A good test case for this is the Money Money driver (monymony).
There's a bit of buzzing on this one as well. The problem with the
cassa could be caused by running into non-ideal characteristics of opams
again (the LM3900 seems to ignore the V+ value supplied to it). When
the netlist library gets Schmitt trigger support, the tromba can be
completed. Unfortunately, the tromba is a key part of the
characteristic sound of these boards, so you really notice when it's
lacking.
(nw) It doesn't work quite right yet. The "Hammer" and "Pest" sounds
are generated by free-running 555/556 timers and gated with LM324
applifiers. For whatever reason, the netlist system produces a kind of
buzzing from the "Hammer" circuit when it's supposed to be suppressed,
and it doesn't think the pest sound should be suppressed completely so
you can always hear it at a low level in the background. The "Cheese"
circuit is a bit weird - either they're using the base-emitter junction
of a 2SC945 as a signal diode, or there's an error in the schematic
(collector is shown unconnected). Connecting this part of the circuit
causes the netlist system to hang, so R2/R3/C8/Q2 are not connected for
now.
* move rarely-used output and pty interfaces out of emu.h
* consolidate and de-duplicate forward declarations, also remove some obsolete ones
* clean up more #include guard macros
* scope down a few more things
(nw) Everyone, please keep forward declarations for src/emu in src/emu/emufwd.h -
this will make it far easier to keep them in sync with declarations than having
them scattered through all the other files.
The core changes are:
* Short name, full name and source file are no longer members of device_t, they are part of the device type
* MACHINE_COFIG_START no longer needs a driver class
* MACHINE_CONFIG_DERIVED_CLASS is no longer necessary
* Specify the state class you want in the GAME/COMP/CONS line
* The compiler will work out the base class where the driver init member is declared
* There is one static device type object per driver rather than one per machine configuration
Use DECLARE_DEVICE_TYPE or DECLARE_DEVICE_TYPE_NS to declare device type.
* DECLARE_DEVICE_TYPE forward-declares teh device type and class, and declares extern object finders.
* DECLARE_DEVICE_TYPE_NS is for devices classes in namespaces - it doesn't forward-declare the device type.
Use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_NS to define device types.
* These macros declare storage for the static data, and instantiate the device type and device finder templates.
The rest of the changes are mostly just moving stuff out of headers that shouldn't be there, renaming stuff for consistency, and scoping stuff down where appropriate.
Things I've actually messed with substantially:
* More descriptive names for a lot of devices
* Untangled the fantasy sound from the driver state, which necessitates breaking up sound/flip writes
* Changed DECO BSMT2000 ready callback into a device delegate
* Untangled Microprose 3D noise from driver state
* Used object finders for CoCo multipak, KC85 D002, and Irem sound subdevices
* Started to get TI-99 stuff out of the TI-990 directory and arrange bus devices properly
* Started to break out common parts of Samsung ARM SoC devices
* Turned some of FM, SID, SCSP DSP, EPIC12 and Voodoo cores into something resmbling C++
* Tried to make Z180 table allocation/setup a bit safer
* Converted generic keyboard/terminal to not use WRITE8 - space/offset aren't relevant
* Dynamically allocate generic terminal buffer so derived devices (e.g. teleprinter) can specify size
* Imporved encapsulation of Z80DART channels
* Refactored the SPC7110 bit table generator loop to make it more readable
* Added wrappers for SNES PPU operations so members can be made protected
* Factored out some boilerplate for YM chips with PSG
* toaplan2 gfx
* stic/intv resolution
* Video System video
* Out Run/Y-board sprite alignment
* GIC video hookup
* Amstrad CPC ROM box members
* IQ151 ROM cart region
* MSX cart IRQ callback resolution time
* SMS passthrough control devices starting subslots
I've smoke-tested several drivers, but I've probably missed something. Things I've missed will likely blow up spectacularly with failure to bind errors and the like. Let me know if there's more subtle breakage (could have happened in FM or Voodoo).
And can everyone please, please try to keep stuff clean. In particular, please stop polluting the global namespace. Keep things out of headers that don't need to be there, and use things that can be scoped down rather than macros.
It feels like an uphill battle trying to get this stuff under control while more of it's added.
-----------------------------------
Space Cyclone [David Haywood, Nicolas Francfort, Sean Sutton, Tourniquet, ShouTime, Anonymous Donator, ranger_lennier, David Stevens, Mr. Goodwraith, John Wilke, Paul Vining, Ryan Gatto, rtw, Jan Stuhler, Rod_Wod, Elliott Kipper, Greg Stout, *=/STARRIDER\=*, Ross Esposito, Paul Gaulton, Chris Heflin, Anonymous Donator from Switzerland, Fabien Marsaud, Surgeville, krick, B2K24, Anonymous Donator from Italy, David Jorge, Andrea Babich, Ciacchi Stefano, Mucci, gamez fan, Brian Troha, VFR750P, anonymous, Mr. Anonymous from Outer Space, InsertMoreCoins, Game Preservation Society, dax_PL, Russell Howard, Peter Wilhelmsen, Sébastien Monassa, f205v, Smitdogg, Gerald (COY), Brian Sutherland, The Dumping Union]
- Create device_palette_interface, which takes over most functionality from palette_device except for the initialization/decoding routines and RAM interface.
- Update screen_device and device_gfx_interface to use a device_palette_interface object rather than a palette_device. This necessitates slight alterations to a few drivers and devices.
- Modify v9938 and v9958 to use the new device_palette_interface rather than a subdevice. This entails breaking a cyclic dependency between device_video_interface and screen_device for this case.