- Moved 9312 and 74279 to ttl macro library.
- Renamed TTL_9312_* to DM9312. This is more appropriate.
- Fixed a number of warnings from latest ubuntu clang-5.0.
* Use size_t for sizes and <algorithm> for algorithms
* Fix up some files that were getting linked into multiple libs
* Add missing virtual method to sh2 peripheral class
* Put shortname in driver struct for locality
* Use shared pointers in config LRU cache for safety
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.
... for updates. This will make device implementation more flexible and
faster. A nice side-effect is that there was some minor (<5%)
performance increase already. Each input is now assigned a notification
handler. Currently this is update, but going forward this may be a
custom handler. In addition
- fixed MEMPOOL on OSX
- removed dead code
- avoid bit-rot
- added delegate support for emscripten and arm processors
- added delegate support for VS 2015 x64
[Couriersud]
- Fixed crashes on terminals without nets (i.e. connected to a rail)
- Reviewed "FIXMEs" and corrected some minor ones.
- Made m_cur_analog protected.
- Fixed pmf delegates to work with msvc.
- More optimizations to the solver code.
- Started work on a better signal pipeline in nlwav
- Only generate documentation for entities which are documented.
[Couriersud]
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)
For netlist device debugging one can now use
#define LOG(...) log().info(__VA_ARGS__)
to use debugging and the known
#define LOG(...) do {} while (0)
do disable debugging on device level.
To avoid bitrot one could as well use
#define LOG(...) log().info.log<true>(__VA_ARGS__)
and
#define LOG(...) log().info.log<false>(__VA_ARGS__)
The later disables debugging. If the compiler can assume that there are
no side effects from e.g. using foo(a/b), 'LOG("abc {1:04x}",
foo(a/b));' should be completely optimized away.
Log channels available are info, verbose, warning, error and fatal.
Don't use debug, it is enabled only on specific debug builds.
Use would be e.g.
LOG("abc {1:04x}", 2);
The format specifier in the string are enclosed in "{}". "{2}" is the
second parameter after the format string. Types are determined
automatically. "{3:04x}" would format a number as a hexadecimal with 4
leading zeros.
[Couriersud]
- Remove virtual from some destructors and make them protected.
- Various cleanups.
- Small performance improvement.
- Fixed some inconsistencies.
- More c++ refactoring. (nw)
Make streams provide binary access only. Use putf8_reader and
putf8_writer to actually access streams. Replace some char * parameters
with pstring where appropriate. Minor code refactoring and move
functionality were it belongs. (nw)
At the same time, any char pointer has to be explicitly converted to
pstring by specifying an encoding. Not yet optimal, but certainly better
than what was there before.
Removed unneeded methods from pstring. (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]
nltool now is able to create all defines from the factory definitions.
This will reduce the number of places needed to touch when adding
devices and always ensure that the parser and statically compiled
netlist code use the same syntax. This will enable us to delete most
device include files, e.g. nld_74107.h.
Netlist usage to create this header file:
./nltool -c header > src/lib/netlist/devices/nld_devinc.h
This is not yet used in production. It will be enabled after additional
tests.
[Couriersud]
- Fixed OPENMP compile
For congo bongo, using Solver.PARALLEL=1 significantly increases
performance from 270% to 380%. However, this has to be taken
with a grain of salt. Enabling this on predominantly logic netlists
can severly kill performance.
- Increased readability of timed queue code.
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)
1. Changed the Win32 code to use _O_U8TEXT()
2. Reordered system #includes
3. Changed a number of 'std::wcout << ...' to use util::stream_format()
I'm getting massive code compilation issues, and it isn't clear to me what the problem is. I'm committing my WIP right now, with the intention of reviewing the specifics soon.
I really don't like the prevalence of '#ifdef WIN32' in this change, both the _setmode() and bypassing codecvt. I strongly suspect that the latter is the consequence of some mistake that in practice doesn't cause problems in MSVC. I welcome all eyes.
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]
The identifier is used to load data from a source_t implementation. This
allos a consistent approach in netlists independent of netlist
implementation. Both sources code and parameter code needed quite some
rewrite to support this. [Couriersud]
Renamed DM9334 to 9334 to align with naming convention used for other
93XX chips.
Added proper connection information for a number of chips to
net_lib.cpp. This allows to parse and run nl_hazelvid.cpp using nltool:
nltool -t 1 -f nl_hazelvid.cpp
* 7473: Made device only transition on a falling clock.
* 74161: Inverted Clear and Clock inputs to match datasheet.
* 74260: Fixed number of inputs.
* Am2847: Fixed shift register size (was 160 bits, should have been 80 bits)
* DM9334: Inverted C and E inputs to match datasheet.
-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.
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
* move stuff to namespace util::xml
* scope down some enums
* split config load/save delegate types
* make config load take const so it can't mangle data
* New abbreviated types are in osd and util namespaces, and also in global namespace for things that #include "emu.h"
* Get rid of import of cstdint types to global namespace (C99 does this anyway)
* Remove the cstdint types from everything in emu
* Get rid of U64/S64 macros
* Fix a bug in dps16 caused by incorrect use of macro
* Fix debugcon not checking for "do " prefix case-insensitively
* Fix a lot of messed up tabulation
* More constexpr
* Fix up many __names
* an empty tag and a self-closing tag are semantically equivalent, so std::string can be used saving some manual allocation
* a valid tag can't have an empty name, so that can be std::string too
* still expose empty strings as nullptr to API users
* scope down the int_format enum
* # is not £ ffs
* instantiate static constant members for ODR context
* declare static members of template classes properly
* declare external template instantiations
* fix blind use of autocomplete ("treats" really?)
* fix ptype_traits on platforms where char is unsigned
* signed char is never an alias for char even if char is signed
* even if eclipse doesn't like using type, surely it supports typedef