Per Vas' request. If the compile fails for you (i'm thinking osx and
windows native debuggers here in particular), add '#include "emu.h"'
as first include of the cpp files that fail.
Due to our use of precompilation and forced inclusion, emu.h must be
included as the very first non-comment thing we do if we want to be
sure msvc compiles are identical to gcc/clang ones. Doing it directly
instead of through an include increases the correctness probability by
a magnitude.
- Created devices for the galaxy games carts (EEPROM + Flash + PIC) and the slot(s)
- Removed code patches and emulated the PIC communication and bank switching
- Converted the blitter to a device (cesblit.cpp)
- moved the Galaxy Games from tmaster.cpp to their own driver (galgames.cpp)
Provided the PIC code for all four StarPak cartridges [Keith M. Kolmos]
New working machines
--------------------
Galaxy Games StarPak 3
[Keith M. Kolmos, Rod_Wod, Sean Sutton, Soren Skou Nielsen, Russell Howard, Francis Ramirez,
Tourniquet, BrianT, coolmod, Smitdogg, The Dumping Union, Luca Elia]
* Put Amiga keyboard implementations in a namespace
* Factor out matrix keys to a common module shared by A500/A1200
* Make new German matrix based on US matrix with Alt-chars hooked up
* Remove outdated comment
- Create EFO, Promat, Terminal, Wing projects to help reduce the weight of libmisc
- Eliminate Veltmeijer Automaten project (only two games by this company are in MAME, and one actually on Excellent System hardware)
* Added m146805 and m68hc05 to unidasm
* Made opcode tables configurable in m6805_base_device, provided tables for HMOS, CMOS and HC families
* Implemented MUL instruction, made unimplemented STOP and WAIT raise fatal error
* Added skeleton MC68HC05C4 with RAM and ROM in correct locations in memory map
Device implementations (all cpp files in netlist/devices) now should
only include nl_base.h.
Netlist implementation sources should only include "net_lib.h".
Refactored netlist.h and netlist.cpp to avoid namespace congestion in
netlist.h.
Fixed VC2015 build. (nw)
* should be #included after other headers and after optionally #defining VERBOSE
* usage samples in z80scc.cpp and m68705.cpp
68705: add lots of logging to help trace issues
m68705: expose more more internal registers through the state interface
* shows contents of registers that can't be read by program code
i8251: make receive more reliable clean up a little
zorba: meat on the bones
* create emulated keyboard device
- 88 of 96 matrix keys identified, 6 of 8 DIP switches identified, 3 of 6 outputs identified
* connect IEEE-488, RS232 and Centronics ports
* hook up all IRQ sources and connect PIT to UARTs
* more notes
osborne1, gladiatr: use input changed member (nw)
- refactored reverse polish notation evaluator into own source files.
- added function parameter to current and voltage sources VS and CS.
You can now use those to e.g. produce a sine wave.
- Changed code to allow devices to optionally be treated as dynamic or
timestepping devices.
[Couriersud]
* remove non-obvious mcu_status_r and semaphore_r members and move to drivers (varies by system)
* slap fight functionality can be safely folded into base class so do so
* remove leftover crud from driver state classes
qix.cpp, bub68705, changela: use new MC68705P3 core
* Moved 68705 devices into their own file.
* Made P3, P5 and U3 variants and made them load bootstrap ROMs.
* Implemented EPROM control (write is stubbed out with a logerror).
* Implemented differences for open drain I/O ports.
(nw) Base device with peripherals should really derive from the 6805
device directly, not the 68705 devices, as I/O ports are present on mask
devices (e.g. 6805P2). All drivers and devices that were using
M68705_NEW have been changed to M68705P5 - someone who knows the drivers
better should fix them up.
- Conversion of the Cedar Magnet board from a base device class to a mix-in interface
- Emulate EFO ZSU as main variant of the Cedar Magnet sound board
- Hook up ZSU1 to Skill Flight and Phantom Ship
- Modernize ZSU soundlatch/IRQ mechanism
- More hardware notes (nw)
- Various associated code cleanups (nw)
into these files as well. The code uses <cfenv> which is part of c++11
standard. Non-standard glib extensions are currently only used on linux
and (i386 or x86_64). (nw)
we've been sitting on this for a while, progress was shown a few years ago, but is apparently lost. Smitdogg should be able to clarify the exact part numbers, they're not readable in the pictures.
Mario driver now uses netlist audio implementation instead of discrete
implementation. The previous discrete sound emulation has not been
removed yet because it still contains a lot of documentation.
[Couriersud]
Mario driver now uses netlist audio implementation instead of discrete
implementation. The previous discrete sound emulation has not been
removed yet because it still contains a lot of documentation.
[Couriersud]
in the mizar lib. This is suboptimal, but the code seems to
crossreference across object files and from the bus code into the driver
code.
At least the source now links again. (nw)
- MSM5205 hooked up through 40105 FIFO
- Various notes based on Z80 code and schematics for related pinball sound board
40105 device improvements (nw)
- Split up configuration macros
- Tweaked device name and device type name
- New callback for automatic output write
- A few bug fixes for so_w
- Many comments and pinout added
- Allow stringing multiple callbacks together recursively. Chained callbacks will be read or written in sequence, and each can be configured with its own type and mask/shift/XOR parameters.
- Chained input callbacks cannot have overlapping masks (there's no such thing as a free multiplex). Chained output callbacks have no such restriction.
- Remove the constant parameter for the LOGGER callback type: it makes no sense for output, was always zero in existing usage, and is now unnecessary with callback chaining.
- Change LOGGER behavior for writes to log the user-defined message only if the output as masked is nonzero. With callback chaining, this can be used to monitor when individual bits become active.
- Constant read callbacks can no longer have MCFG_DEVCB_XOR or MCFG_DEVCB_INVERT specified (makes no sense in this context).
- Add a MEMBANK callback type to allow output bits to be used for bank-switching.
- Add ASSERTLINE and CLEARLINE callback types that raise or lower an interrupt line if the selected bit of the written value is active. These are intended for where periodic or ready-pulse signals from devices are used to trigger IRQs that the CPU program will independently acknowledge.
- Add MCFG_DEVCB_BIT as shorthand for masking and shifting out an individual bit for a callback.
- Removed DEVCB_LINE_DISPATCH_<n>. Where we're going, we don't need line dispatcher devices.
The incompatibility of compilers with regard to post-C90 printf string formats is shockingly bad. There seems to be no easy way to format a 64-bit value and please both gcc and clang, let alone MSVC.
-netlist: Added new devices: [Ryan Holtz]
* Intel 2102A 1Kbit (1024 x 1) Static RAM
* 74365 Hex Bus Driver with 3-State Outputs
* Generic 2- and 3-terminal Tristate device
* Note: Tristate device and 74365 do not actually tristate, they are simply a way of combining multiple outputs + chip enables.
It doesn't have much in common with the other games in the driver. Also
clean up the implementation, make spriteram 8-bit, add some hardware
info and add button descriptions.
selmenu: use LRU cache so icons don't all need to be reloaded on scroll
uismall.bdf: set default character for missing glyphs
rendfont.cpp:
* encapsulate many BDF and BDC handling details
* make file I/O 64-bit clean, check for allocation errors
* more solid BDF parser with error messages and trace logging
* fix heap smash when building bitmaps for BDF fonts
* extend BDC format to support high planes and default character
* render default character if glyph not found for BDF/BDC
- Uses the standard 6840 PTM core for sound generation
- New MM583 Noise Generator device
- New DAC-76 DAC sound
- Use resistor network values for colors
- Use bankdev device for banking
Archimedes 305, Archimedes 440, Archimedes 3000, Archimedes 410/1, Archimedes 420/1, Archimedes 440/1, Archimedes 540, Acorn A5000, Acorn A4, Acorn A4000, Acorn A5000 Alpha
- renamed a310->aa310 to avoid conflict with Amiga machines
- added all missing OS releases Arthur 0.30, RISC OS 2.01, RISC OS 3.00, RISC OS 3.10, RISC OS 3.19 (German)
- all machines default to OS (Arthur, RISC OS 2, RISC OS 3) they were shipped with
- corrected ROM labels/locations
- added default CMOS to boot to desktop
- mapped Acorn A4 Power Management extension
the bios and turn off JP1 as part of the installation. A v1 bios flash is included, but
you aren't forced to use it. [smf]
Moved G-NET protection out of ATAFLASH and into individual devices for each type of card [smf]
Implemented enough analogue control reading on ZN1/ZN2 for RC De Go & Go By RC [smf]
Fixed ZN1/ZN2 DSW descriptions [smf]
Added build dates and times to G-NET game descriptions [smf]
New machines added or promoted from NOT_WORKING status
------------------------------------------------------
Shikigami no Shiro - internal build (V1.02J 2001/09/27 18:45) [rtw, ShouTime, smf, O.Galibert]
Go By RC (V2.03O 1999/05/25 13:31) [smf]
RC De Go (V2.03J 1999/05/22 19:29) [smf]
05928: nbajamex: game crashes / nvram gets corrupted
- Emulated the Acclaim RAX sound board, adding sound to Batman Forever and NBA Jam Extreme [Phil Bennett]
- Hooked up extra NVRAM in NBA Jam Extreme [Phil Bennett]
Use standard uint64_t, uint32_t, uint16_t or uint8_t instead of UINT64, UINT32, UINT16 or UINT8
also use standard int64_t, int32_t, int16_t or int8_t instead of INT64, INT32, INT16 or INT8
with the following games
Time Scanner (TS 2.0, Magnet System, prototype)
Exzisus (EX 1.0, Magnet System, prototype)
Xain'd Sleena (SC 3.0, Magnet System, prototype)
this is a checkpoint, there is a sizeable ToDo list but I think this is a good enough state for initial inclusion before working out the remaining issues. ArcadeHacker has the hardware working for questions etc.
I would especially appreciate help with sound (haven't a clue how it hooks up, tried lots of things, no luck) and some help in going over the CPU comms, especially with the sprite CPU as I think I must be missing something important. Likewise help from somebody more familiar with the floppy code from MESS so that it can use that, I had no luck in getting it to work with the copy protection or from a rom region, I've kept all floppy related code in a device so it's very easy to swap out so for now what I've got isn't intrusive.
note, very weird idea for a system, they've ported 3 arcade games from other manufacturers, original titles were advertised, but it's likely nothing more of the system exists.
the system uses 5 PCBs, one Z80 on each and instead of having dedicated sprite / tilemap chips they have the Z80s doing software rendering, using 8bpp framebuffers. 2 of the boards are for background planes, 1 of the boards is for sprites. The hardware has various memory expansions which look like afterthoughts as they're addressed in strange ways.
ataxx: Fixed missing sound channel caused by one dac not being hooked up and one dac being hooked up to two addresses.
bestbest: Fixed high pitch screech caused by incorrect addressing (two dacs weren't hooked up and two were hooked up to two addresses).
cchasm: Fixed static noise generation caused by feeding the same bit to both dacs.
cheekyms: Slightly improved sound by implementing sound triggers as 8 x 1 bit dacs instead of 1 x 8 bit dac.
galeb: Fixed sound by implementing it according to http://www.deltasoft.com.hr/retro/galebemu.htm & implemented enough of LOAD/SAVE to stop it hanging.
hard drivin: (all games in driver) Improved 12 bit controls, although centre still goes out of sync.
mea8000: Converted to a sound device.
megaphx: Fixed noisy samples due to wrong format.
microvsn: Fixed sound pitch caused by incorrect usage of write_signed8().
seicross: Changed to a 4 bit dac as samples are packed nibble.
spaceg: Preliminary sound using space invaders samples.
suna8: Changed to a 4 bit dac as samples are packed nibble.
vcombat: Fixed static during machine gun fire due to incorrect dc offset removal.
vectrex: Fixed noisy samples due to wrong format.
wheelfir: Fixed sound, eeprom & analogue steering wheel and brake pedal.
this is similar to, but not identical to goldstar.cpp / skylncr.cpp. it might be possible to merge it in, however my gut feeling is that said driver should be split up into different machine types all using some generic but fleixlbe video device that can handle these 8x8 tiles, 8x32 reel cases as most of them are based on the same basic concepts, just with their own tweaks.
reels, sounds, inputs are not hooked up here.
see
http://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=107569&page=1
for PCB information.
Mahjong Senpu [system11. David Haywood]
displays the game image, upside down, no palette for now, no inputs for now, no sound for now, going to continue work on it.
-Wno-missing-braces is unfortunately now necessary to avoid errors on almost every single use of the std::array initializer in devfind.h. (Apparently C++14 does make double braces optional for std::array initializers, but clang and GCC's -Wmissing-braces never took that into proper account, which is why GCC may still have it disabled by default.)
Several other Clang-specific warnings have been undisabled; some might perhaps need to be locally reenabled if legacy 3rdparty code or sundry OSD includes happen to disagree with them. The only warning to require any code changes was -Wabsolute-value, which seems to have caught a minor render bug (and nothing more).
Use: ./mame vgmplay -bitb file.vgm/vgz
Lots of chips missing, no visualization, no control of anything, no
volume control either, and no sound shutdown on end of file.
Turbosub had a ROM_COPY declaration with an expression ('ROM_COPY( "main_code", 0x18000 + 0x2000,...) and this simply did not work with the new model. This required changing ROM_* declarations to more resemble how they used to be and to perform the conversion on load.
Air Raid, Street Fight and Dark Mist all basically use very similar video systems (4 layers, 2 of them being ROM based tilemaps, a CLUT prom for each layer which controls colours and transparency handling)
this takes some steps towards allowing a common implementation of it.
This is a redo of the split first submitted in #137, with the following differences:
* The newly refactored rom_entry data structure is used
* I've kept the refactored softlist code in src/emu, in order to defer the mechanical process of moving it
* I've kept includes of softlist[_dev].h out of diimage.h, so that changes to either do not trigger an emu.h recompilation
* Obviously, this goes against the latest master
* Mark lots of things constexpr in attotime and turn macros into functions
* Add base classes for HLE matrix keyboard and buffered RS232 device
* Make generic keyboard/terminal more usable
* Keyboard has configurable typematic delay/rate
* Keyboard has selectable JIS/ANSI layout
* Keyboard handles simultaneous keypresses more intuitively
* Keyboard uses meta to set high bit
* Terminal has configurable auto LF on CR, auto CR on LF and local echo
* Terminal has audible bell
* Untangle Olivetti M20 keyboard from generic_keyboard
* Add notes to Olivetti M20 keyboard emulation
* Make Olivetti M20 keyboard match physical layout
* Untangle RM Nimbus keyboard from generic_keyboard
* Fix natural keyboard mode with RM Nimbus
* Untangle x68k keyboard from generic_keyboard
* Improve x68k key names and mapping
* Improve x68k typematic behaviour
* Untangle QX-10 keyboard from generic_keyboard
* Keep NGEN keyboard barely working
The keyboard should communicate at 1,200 Baud, but due to bugs in the SCC
it's set to 9,600 Baud. The sun4c machines program the Baud rate
generator dividers for the serial ports with 00:0e and the dividers for
the keyboard/mouse ports with 00:7e. Therefore the ratio of Baud rates
should be (0x7e + 2) / (0x0e + 2) = 128 / 16 = 8. However both the RS232
ports and the keyboard/mouse ports run at 9,600 Baud, when the
keyboard/mouse ports should run at 1,200 Baud (which is 1/8 of 9,600 which
matches the ratio of the divider values).
I've artificially limited the rate the keyboard can transmit at to be no
faster than it could at 1,200 Baud using a timer. I can remove this hack
once we get correct SCC divider behaviour.
I attempted to hook up the SCC interrupts to level 12 as specified in the
SPARCstation-1 Programmer's Model in the table on Page 19. No interrupts
seem to be generated, so either I've screwed this up somehow, the Sun
isn't enabling interrupts, or there's another bug in the SCC emulation.
Sorry if I've screwed it up - I won't be offended if someone replaces it
wholesale.
The keyboard receives the reset commands from the Sun and sends back the
self test pass response, but the SCC seems to get a buffer overrun error.
So it appears that the received data isn't being read out. I haven't been
able to work out why.
* .h -> .ipp for things that aren't really headers
* make more stuff in selmenu private
* move the remembered driver/software associated with the snap to the cache object
* start cleaning up constness in datfile manager - it's still a mess of non-const statics
* Split out main menu and dat box drawing from base class
* Make a bunch of class statics proper per-machine persistent objects
* Object lifecycle fixes
- Button mappings completely reworked: grey bidding/suit selection buttons classified as keypad inputs and put in correct order, and other buttons as console-standard Start, Select, Button 1-2
- Inputs now read through PIO instead of RAM addresses, making them less hypersensitive
- Manufacturer/publisher is Unicard, as manuals and system/cartridge labels clearly state
- Added release years for some common cartridges
- (nw) Link bbcbc in its own library rather than the unrelated libacorn ("make clean" strongly recommended)
- Create a SG-1000 expansion slot.
- Hook up the SG-1000 expansion slot to sg1000.cpp and sms.cpp (sg1000m3).
- Split the sk1100 code from sg1000.cpp and attach it to the new expansion slot.
- Create a new FM Sound Unit device and attach it to the new expansion slot.
- For the sc3000 driver, re-add sk1100 as a fixed SG-1000 expansion device.
- Add sg1000 software list to sg1000m3 and Japanese/Korean SMS drivers.
sms.cpp: implemented some new findings [Enik Land]
- Remove some mirrors for ports $DC/$DD on SMSJ based on Charles' hw tests.
- Add basic C-Sync callback to 315_5124.cpp, based on Charles' hw tests.
- Add built-in Rapid Fire (uses C-Sync) for SMSJ and Korean SMS1 drivers.
- Add new SMS drivers due to XTAL differences:
sms1br - Tec Toy Master System I (Brazil)
sms2br - Tec Toy Master System II (Brazil)
smsbr - Tec Toy Master System III Compact (Brazil)
sms1paln - Tec Toy Master System I (PAL-N)
sms2paln - Tec Toy Master System II (PAL-N)
smspaln - Tec Toy Master System III Compact (PAL-N)
Brazil is PAL-M TV system, but I decided to call it by the
country name, seems to be better recognizable and for
emulation looks more like a NTSC system. PAL-N is used
in Argentina, Paraguay and Uruguay and looks closer to
the European PAL system when compared to PAL-M.
- Replaced shared_ptr by unique_ptr.
- Better seperation of setup_t and netlist_t.
- Fixed bugs in rdtsc code. Refactored timer code.
- Simplify conditional activation/deactivation.
- Introduced HINT(device, hint) to clarify that hints are inheritent
and not specific to devices.
- Added improved profiling support to netlist. Statistics output now
proposes devices for which whole device activation/deactivation be
disabled. No significant improvement for pong, but breakout
experiences a 10% improvement.
- Moved options code from include to cpp file.
- Minor modifications to 7493 and 9316
- Introduced perftime_t and perfcount_t for gathering statistics. These
templates do not create any code if statistics are not kept.
- Make help2man ./nltool produce usuable output.
- More truthtable refactoring. Removed half-finished code for internal
state support. As implemented, this would have had no support for
timing delays.
[Couriersud]