Code cleanup to better separate the following stages:
- parsing
- setup
- run
In addition preliminary native tristate support was added. Not yet
production ready, please don't use it.
The two sources act as voltage sources, though noise may also be
injected as conductivy or current noise.
SYS_NOISE_MT_U: Mersenne Twister uniform noise
SYS_NOISE_MT_N: Mersenne Twister normal noise
nld_sys_noise is templated:
using NETLIB_NAME(sys_noise_mt_u) =
NETLIB_NAME(sys_noise)<plib::mt19937_64,
plib::uniform_distribution_t>;
Thus the approach is scalable. The implementation is state save aware,
and thus reproducible results are guaranteed.
An example use case is provided as well, see examples/noise.cpp.
* new WORKING machines
Millennium M505 Arcade Neo Portable Spielkonsole (Family Sport 100-in-1) [TeamEurope]
* new NOT WORKING software list entries
tvgogo.xml : Baseball (US) [Sean Riddle, David Haywood]
tvgogo.xml : What-A-Mole (US) [Sean Riddle, David Haywood]
* added internal NAND dump to didj [Sean Riddle, Clawgrip]
The device can be found in nlm_other.cpp.
Removed nld_ne566.*
Added SYS_SW, SYS_SW2 and SYS_COMP. These are single switch,
alternating switch and a analog comparator with digital outputs.
Renamed RES_SWITCH to SYS_SW.
Added example ne566.cpp in netlist/examples.
--------------------
MDT 60 Video Display Terminal [Bitsavers, AJR]
z29: Add skeleton for undumped keyboard; try (and fail) to make this work with the MDT 60 keyboard instead
z22: Separate driver (nw)
Changes:
- added known dump checksums of 1101 BIOS
- high-level emulation of GPIB disk devices
- partial implementation of DMA (currently ignores ACCRQ so devices must have zero latency in order for it to work)
- serial is now properly memory-mapped
- modem stub in order to make system properly ignore modem device
- it now boots without any patches and debug scripts
- merged #6597 (needed in order to make disk devices work)
Still not implemented:
- RTC/MACHINE_ID
- modem
- has problems with multiple disk devices working simultaneously (possibly BIOS bug because this BIOS had some problems with that on real device)
* Initial refactor of AVI/MNG movie recording, consolidation of copy and paste
code, hiding of AVI/MNG behind interfaces
* Extracted recording specific code out of src/emu/video.cpp and put into
src/emu/recording.cpp
* Took the opportunity to move slightly more logic out of video.cpp into
recording.cpp
* Bug fix
* Consolidated frame counting logic
Added a define NL_USE_ACADEMIC_SOLVERS and disabled it in the build.
This will not compile in solvers which are either illustrative or only
perform for large sparse matrices like GMRES.
Moved netlist between dasm and utils,expat,... link statements
This fixes the resolution of symbols in netlist code which may be used
in machine/netlist.cpp.
Change tested on ubuntu, windows and macosx.
This commit introduces precompiled static solver code. Due to
additional optimizations the compiler can use because the detail
calculation steps for the solution are known e.g. the kidniki netlist
sees a 100% speed increase.
In all environments (windows/*nix/osx) the source for the static
solver code can be created using
bash src/lib/netlist/nl_create_mame_solvers.sh
This will create src/lib/netlist/generated/static_solvers.cpp which is
compiled into the mame binary.
The script is just a temporary workaround. The intention is that nltool
whill be able to create this file with one call.
There are other improvements in this commit speeding up the processing
of timestep and dynamic calculations.
- PAC2 is now a separate bus with slot devices
- Kanji ROM and RAM PAC2 expansions are no longer built into pasopia7, but may be configured as slot options
- RAM PAC2 expansion made nonvolatile and provided in multiple sizes
- Two PAC2 slots added to pasopia
* Split S-SMP and S-DSP implement in snes_snd.cpp
both convert memory handler into device_memory_interface, Internalize ROM region of S-SMP
s_smp.cpp : Use callback for S-DSP interface, Split internal and external memory space
snes.cpp : Convert WRAM into shared_ptr
* s_dsp.cpp : Reduce #define macros
- com8116: Delete SY2661-1/-2 tables (these are just second sources of SCN2661A/B)
- mc2661: Remove obsolete device
- rs232: Remove 7200 baud setting formerly required by one driver to work around incorrect table
visualiser device and WDL FFT libarary).
I changed the VGM visualiser to use single-precision float which is the
default for WDL FFT. GCC's loop vectoriser can make better use of SSE
with single-precision maths, and the extra precision shouldn't be needed
for the visualisation. If this is a problem, let me know and I'll
revert this and flip the WDL FFT library over the other way.
(nw) The pcap.h header itself has the problematic original BSD license,
including the obnoxious advertising clause. Using tap/tun networking on
Windows provides a much better experience, so the extra setup is worth
it. This patch also allows you to enable pcap on platforms where it's
disabled by default with USE_PCAP=1 if you really want to use it.
* Removed empty nl_examples from dist.mak
* Added copyright acknowledgements and full text of licenses to binary distribution
* Fixed up the list of third-party libraries
* Moved WDL fft.c to 3rdparty
* hp80: added HP82939 serial I/O module.
Fixed a small bug in INS8250 that prevented module self-test to pass.
Improved the interrupt handling of hp80 systems.
* hp80: changed scheduling to use "set_perfect_quantum"
This tool was previously used to generate HTML-formatted source for
the website from releases. It hasn't been used in years, since we
rely on the repository browsing features of GitHub/GitLab/SourceForge.
It also hasn't been updated to handle C++14, Lua, and other changes to
the source. If we do want to publish source code on our own web site
in the future, we'd be better off using an off-the-shelf library to
handle parsing the source.
----------------------------------
Roland D-50 (Ver. 2.xx) [DBWBP, depblue]
New NOT_WORKING clones
----------------------
Roland D-50 (Ver. 1.xx) [DBWBP]
Roland D-550 [DBWBP]
Add disassembler for NEC 78K/III architecture [AJR]
* mc6844.cpp: WIP NEW DEVICE Motorola mc6844 DMA controller (devicified from swtpc09.cpp)
* 6821pia.cpp: improved LOG messages a bit
* mc6854: Added support for external clocks, DMA, improved LOG messages and fine tuning of IRQ handling
* mc6846: Removed nonexistant CP1 output callback and added a CP1 input interface call
* 6850acia.cpp: Updated use of logmacro.h
* alfaskop4110: WIP added keyboard and fixed build errors
- Make second 8355 into ROM expansion slot that can load custom 8755 programs
- Add software list for expansion ROMs, including Peter Naszvadi's version of Mastermind
- Add optional TTY interface
- Improve accuracy of button labels and change key bindings
- Add vectored interrupt and soft reset buttons
- add CD4006 and CD4070 devices
- add TL084 opamp model
- Clock now supports proxies, i.e. can be connected to
analog devices.
- Fixed netlists using CLOCK
- added some comments
- removed a forgotten header file.
* minor spelling fix
* new NOT_WORKING machine
Gigatron TTL Microcomputer [Sterophonick]
also add a skeleton cpu core
* Revert Minor Spelling Fix
* Make some fixes
thanks cuavas
* Fix resolution
* gigatron: update cpu device name
* update copyright
* fix part of gigatron disassembler
* Set screen refresh rate
* found a set of all the ROM files, update main ROM name
* Fix cpu.lua
* Whoops
* Update gigatron.cpp
* gigatron: clear execute_set_input
* Update gigatron.h
* Update gigatrondasm.cpp
* Update gigatrondasm.h
* clean up but doesnt compile ffs
ioport.cpp:
* better than 50% reduction in compile time, and better locality for static data
* better encapsulation, const correctness and noexcept usage
* When a switch-type input is selected, show feedback when it's pressed
* If an invalid code is entered (e.g. only negatives) abandon the change rather than cycling default/none
* If an invalid code is entered display a message until the user takes some other action
input.cpp updates:
* constexpr crusade on input_code and input_seq and some very slight optimisation to input_seq
* seq_poll* is a frontend function and had no business being in the core, so it's a utility class now
* seq_poll* now exposes a bit more detail, enabling improved interaction on the UI inputs menu
* global state is reduced a little, but the poll_* functions are still members of the input manager with global state
(nw) The Lua engine has been updated in a way that maintains source compatibility with existing Lua
scripts. This is less than ideal, but it minimises impact. Ideally someone (possibly me) will be
able to expose the input sequence poller helper properly. I tested the changes with the cheat and
autofire plugins and I was able to assign sequences. However I found two issues: it's seems
impossible to assign a more complex sequence than a single key/button in the autofire plugin (i.e.
no AND or NOT conditions, I confirmed this is pre-existing, not a regression), and in both the cheat
and autofire plugins I found it a bit unwieldy trying to enter a complex sequence without live
feedback of the sequence as it's built (this was also applicable to MAME's own input mapping menu
until I added the live display yesterday).
-sun4.cpp: Various changes: [Ryan Holtz]
* Split sun4 and sun4c hardware emulation into separate derived classes.
* Hooked up Sbus IRQs.
* Removed now-unnecessary duplicate MMU code.
-cgsix.cpp: Added VSync IRQ, cleaned up save state usage, and added THC MISC register. [Ryan Holtz]
-sparc.cpp: Renamed MB86901 to SPARCV7, and added a separate class for SPARCV8. [Ryan Holtz]
-bt45x.cpp: Made logmacro.h usage more consistent. [Ryan Holtz]
* Made DIP switch display scale with UI font and improved layout
* Improved analog control display giving an indication of neutral position
* Fixed menu heading sizes not being recalculated after font is changed
* hp80: refactored optional ROM device as requested in issue #5839
* hp9825: refactored optional ROM device as requested in issue #5839
* hp9845: refactored optional ROM device as requested in issue #5839
- Added slot interface for internal expansion boards.
- Added BBC Master cartridge slot interface to allow implementation of more complex cartridges, including Electron cartridge devices.
- Removed Sideways RAM configuration option, to be re-implemented as internal boards.
- Empty BBC Master cartridge sockets return video data on data bus.
* Changed emu_fatalerror to use util::string_format semantics
* Fixed some incorrectly marked up stuff in build scripts
* Make internal layout compression type a scoped enum (only zlib is supported still, but at least the values aren't magic numbers now)
* Fixed memory leaks in Xbox USB
* There can only be one "perfect quantum" device - enforce that only the root machine can set it, as allowing subdevices to will cause weird issues with slot cards overiding it
* Allow multiple devices to set maximum quantum and use the most restrictive one (it's maximum quantum, it would be minimum interleave)
* Got rid of device_slot_card_interface as it wasn't providing value
* Added a helper template to reduce certain kinds of boilerplate in slots/buses
* Cleaned up some particularly bad slot code (plenty more of that to do), and made some slots more idiomatic
This patch gets it running, and splits it into two front ends, one
being a rs232 bus slot so that is can be used as a terminal option. It
adds the MCM66750 character generator, and implements the MC6845 row
update function. Most of the I/O has been worked out with help from
the CT-82 user manual. The various screen formats and the graphics
modes appear to be working and plausible. Printer support has been
added, and a beeper.
- Removed code no longer used
- Add noexcept where appropriate
- split pparser.[c|h] into ppreprocessor and ptokenizer
- smaller optimizations, e.g. use of std::size_t
- fix lint warnings
* hp9825: optional ROM cartridges added (9825b only, ATM)
* hp9825: optional ROMs added to 9825t, added support for banked ROMs
@5c00, separated RAM & ROM spaces in 9825t
* hp9885: added missing post-amble when writing sectors on disk
* hp9825: added acknowledgments to comments (nw)
* hp9825: changes requested by V.Crabb (nw)
* Allow specifying NO_OPENGL manually
* Switch bgfx to OpenGL ES renderer if NO_X11 is specified
* Only link against EGL when NO_X11 is specified on linux, netbsd and openbsd
* Only switch bgfx to OpenGL ES on linux, netbsd and openbsd
* Indentation fix
* Add workaround for imgtool and jedutil failing vs2019 debug builds with /ZI
* No longer allow msvc build to fail
* Enable tools build for travis to make it more useful
* Switch travis to Xcode 11 in order to fix nltool linking failure
* Prefer 64-bit compiler with VS 2019 too
* Setting PreferredToolArchitecture to x64 is not needed, genie puts it into the project files for vs2015 or later
* OPTIMIZE=1 build is faster that OPTIMIZE=0 for some reason. So fast in fact, that TOOLS=1 can be enabled without hitting the 60 minute timeout
* Switch MINGW build to VS 2017 image until appveyor figure out why builds on VS 2019 are almost twice as slow
* Run pacman twice to account for core system upgrades
- solver now uses dynamic allocation on systems larger than 512x512
- fixed osx build
- moved nl_lists.h classes to plists.h
- fixed netlist makefile clint section
- readability and typos
* Sync with bgfx upstream revision b91d0b6
* Sync with bx upstream revision d60912b
* Sync with bimg upstream revision bd81f60
* Add astc-codec decoder
* Rename VertexDecl to VertexLayout
* Rename UniformType enum Int1 to Sampler.
* Add NVN stub
* Fix unused-const-variable error on macOS
* Drop redundant explicit language parameters
buildoptions_cpp are only applied to c++ files and buildoptions_objcpp are only
applied to objective c++ files. As such, hardcoding -x offers no benefit while
preventing overrides (such as one needed by 3rdparty/bgfx/src/renderer_vk.cpp on
macOS) from working.
* Re-introduce -x c++ in places where C code is compiled as C++ to prevent clang from throwing a warning
* Build bgfx as Objective-C++ on macOS
It is needed due to included headers
* Enable Direct3D12 and Vulkan bgfx rendering backends
* Enable building of spirv shaders
* Properly escape /c in cmd call
* Comment out dx12 bgfx renderer
* Honor VERBOSE setting during shaders build
* Only invert hlsl shader XYZ_TO_sRGB matrix for opengl
* Add spirv shaders
* OpenGL ES needs transposed matrix too
* Metal needs transposed matrix as well
* Re-write makedep.py for better performance and better parsing front-end
* Make srcclean deal with kinds of preprocessor abuse I never want to see in real life
(nw) The new parser front-end is better at recognising C++ syntax and
also substantially faster - bootstrapping a single-driver build should
be noticeably quicker. Having a single parser for C++, .lst and .flt
files also gets us a bit closer to making it simpler to create custom
subtargets.
(nw) This has been a long time coming but it's here at last. It should
be easier now that logerror, popmessage and osd_printf_* behave like
string_format and stream_format. Remember the differences from printf:
* Any object with a stream out operator works with %s
* %d, %i, %o, %x, %X, etc. work out the size by magic
* No sign extending promotion to int for short/char
* No widening/narrowing conversions for characters/strings
* Same rules on all platforms, insulated from C runtime library
* No format warnings from compiler
* Assert in debug builds if number of arguments doesn't match format
(nw) Also removed a pile of redundant c_str and string_format, and some
workarounds for not being able to portably format 64-bit integers or
long long.
This will compile, link, and run a driver all the way to the first info screen, provided you use -video bgfx.
However, although there's a valid NSWindow created, it never actually appears on screen for unknown (but likely silly) reasons.
Inputs are not implemented and fullscreen exists but is untried.
* hp9825: fixed a bug in 9825t
* hp9845: TACO driver re-written from scratch, DC100 tape separated into
a new device, various adaptations
* hp9845: "new TACO" renamed to just "TACO"
* Made some experimental work with menghong based HW, allowing crzyddz2 to boot and improving menghong colors;
* Internalize video and audio components inside the SoC;
* Wrote a preliminary UART subdevice;
* Made external video clock to be settable by the host driver;
* spectrum bus : rename beta.cpp to beta128.cpp as the original beta is somewhat different (nw)
* (nw)
* start making a device for the actual original beta disk interfaces (nw)
* flesh out beta stuff a bit (nw)
It appears that it is sufficient to include `-s USE_SDL_TTF=2`, and
emcc links in the SDL2_tff library, and it does not like attempts to
link this twice.
The current Emscripten release is not happy with the use of
"-s ERROR_ON_MISSING_LIBRARIES=0" as a link option, it gives an error
stating that all libraries must now be present, so remove that use.
This leaves a missing 'util' library. This did not appear to be
needed on the few builds I have tried, and this patch avoids adding
this library for asmjs.
* Improved encapsulation between video and machine SoC periperals;
* Split up HWs in individual files where they don't belong to Crystal System HW, makes future development easier;
* Untangled reads/writes to draw/display bankswitches from screen_update, now they can be unthrottled safely;
* Added CRTC screen raw parameters;
* Add DMA hold feature and clear irq on mask writes, specific for P's Attack;
* Improved Cross Puzzle flash loading, currently failing at POST for a SPU error;
nexus3d.cpp: add some preliminary work, currently does some VRender3d pipeline fill with a debug trick [Angelo Salese]
(out of whatsnew)
Some stuff definitely needs fine graining, like removing the few lines that are still necessary to configure the VRender0 from driver files, which I'm gonna do in my next feature branch.