Changed "Exception Points" to "Exceptionpoints" in the debugger
documentation and help. This better matches "Watchpoints" and
"Registerpoints". Also, it's very confusing that you see the help topic
listing showing "Exception Points" but typing "help Exception Points"
doesn't actually work.
cpu/e132xs: Fixed a flags issue in the recompiler.
misc/dgpix.cpp: Demoted The X-Files to not working with unemulated
protection.
skeleton/turnierdart.cpp: The srcclean on this file was missed.
* Implemented pointer error exceptions on attempting to use a zero
address register (other than SR) in the recompiler.
* Also optimised load/store instructions a bit and reduced copy/paste.
* Fixed a couple of disassembler issues.
-misc/dgpix.cpp: Demoted The X-Files to not working with unemulated
protection.
- Added inputs & DIP switches for pma.
- Switched CPU to i8080 for pma.
- Added buttons-lamps clickable layout for pma.
- Promoted pma set to working.
- Added ASCII PCB layout for Dellfern sets.
- Improved Prologic, Kimble Z80, and Noraut JP
ASCII PCB layouts.
Systems promoted to working
---------------------------
PMA Poker [Roberto Fresca, Grull Osgo]
* Aligned the operand field in disassembly.
* Calculate results of immediate values against the PC to make
position-independent code easier to read without constantly using a
calculator (e.g. this shows destinations for call Rd, PC, imm).
* Added more symbols to the UML helper to make logged generated code
more readable.
* Made single-instruction-per-sequence mode configurable rather than a
compile-time option.
* Got rid of a criminal amount of copy/paste in the disassembler, and
got rid of all the deprecated strcpy calls.
* Got rid of some duplicated constants, changed some constants from
macros to enumerated values or constexpr globals.
* Reduced the amound of stuff in headers that doesn't need to be there.
-cpu/drcbex64.cpp: Don't construct std::function objects during code
generation - they require allocation.
-eolith/eolith.cpp: Turned single-instruction-per-sequence mode on for
now until someone works out why turning it off causes Raccoon World to
generate so much code it's unplayably slow.
- Unified some machine configs.
- Added inputs & DIP switches for newhilop and pkii_dm.
- Switched CPU to i8080 for newhilop and pkii_dm.
- Added buttons-lamps clickable layout for newhilop and pkii_dm.
- Promoted newhilop and pkii_dm sets to working.
Systems promoted to working
---------------------------
New Hi-Low Poker [Roberto Fresca, Grull Osgo]
unknown poker game PKII/DM [Roberto Fresca, Grull Osgo]
* Optimised double word shifts.
* Optimised the most common PC-relative operations to treat PC as
constant when possible, including:
- addi PC,imm (long relative branch)
- add PC,Rs (computed goto)
- sum Rd,PC,imm (calculate PC-relative address)
- add Rd,PC (calculate PC-relative address)
- ldw.d PC,Rs,imm (PC-relative load)
- stw.d PC,Rs,imm (PC-relative store)
* Changed template parameters to LlamaCase to make them more visible
different to constants/macros.
- Added 3 new sets: df_djpkra, norautn1a, and norautpt.
- Proper machine config and memory map for gtipokra.
- Figured out the DIP switch for gtipoker minimal hand.
- Fixed some ROM loads.
- Added technical notes.
New working clones
------------------
Double Joker Poker / Jacks Plus (45%-75% payout, alt) [Roberto Fresca, Grull Osgo, Hammy]
Noraut Joker Poker (N1A) [Roberto Fresca, Grull Osgo, Hammy]
Noraut Joker Poker (text hack) [Roberto Fresca, Grull Osgo, ArcadePT]
* Disabled single-instruction-per-block mode.
* Don't bother with delay slot checks where it's unnecessary.
* Try to generate a speicalised copy of the delay slot instruction
followed by a direct branch of possible.
* Use the pre-decoded instruction length for updating the PC.
* Specialised versions of the CHK instruction that always or never
raise exceptions.
* sound/s_dsp.cpp: Fix pitch modulation emulation, Fix save state support
reference: https://snes.nesdev.org/wiki/SNESdev_Wiki
* sound/s_dsp.cpp: Fix indent
* s_dsp.cpp: Reduce unnecessary lines, Fix typenames
* sound/s_dsp.cpp: More std::clamp uses, Use BIT for single bit flags
* sound/s_dsp.cpp: Fix input clock, Fix indent, Use lowercase hexadecimal values, Use reference for voice state
reference: https://snes.nesdev.org/wiki/S-SMP
* sound/s_dsp.cpp: Use logmacro.h for logging, Use BIT for single bit flags
- added controls to maxheart (game is playable, but shuts down into power saving after 15 minutes as if no buttons had been pressed) [David Haywood]
- started researching the banking scheme used by atgame40, while several games are now bootable the others appear to use video modes specific to this Genesis clone SoC so fail to display proper gameplay [David Haywood]
new WORKING machines
------------
Millennium Arcade 3D 15-in-1 [TeamEurope, David Haywood]
new NOT WORKING machines
------------
TV Games Baseball (SH6578 hardware) [Ankos, Kryzsiobal]
Chāo Jí Zhī Shi Dà Fù Wēng (vol. 1) [Ankos, Kryzsiobal]
Chāo Jí Zhī Shi Dà Fù Wēng (vol. 2) [Ankos, Kryzsiobal]
My Arcade Tetris (Slurpee) [Sean Riddle]
My Arcade Tetris (DGUNL-7030, Gamer V, with 220 bonus games) [Sean Riddle]
My Arcade Tetris (DGUNL-7027, Pico Player, with 100+ bonus games) [Sean Riddle]
My Arcade All Star Stadium - Pocket Player (307-in-1) [TeamEurope]
Hippo: et la formidable aventure des lettres (France) [TeamEurope, David Haywood]
new NOT WORKING software list entries
--------------
tvgogo.xml:
Snowboarding (Europe) [TeamEurope, David Haywood]
Paintball (Europe) [TeamEurope, David Haywood]
The DYUV decoder requires an interpolation between steps. The previous implementation was based on the manual. This interpolation is based on visual comparison to the hardware.
* Fixed failing to call the debugger instruction hook for the first
instruction following an interrupt, exception or trap.
* Use UML branches to emulate non-delayed intra-block branches, avoiding
the expensive "hash jump".
* Re-worked the instruction description code:
- Calculate static branch targets for more instructions.
- Flag instructions that may cause mode changes.
- Don't be so eager to end an instruction sequence.
- Removed the local register input/output flags - FP may no be the
same when executing the code as when describing instructions.
* Fixed interpreter incorrectly setting ILC when an interrupt
immediately follows a RET instruction.
* Fixed recompiler flag calculation regressions, and optimised a little.
* Fixes interrupts not being serviced while tracing.
* Further improves recompiler performance.
* Fixes recompiler interrupt check function calling itself recursively.
* Also added debugger exception hook calls to interpreter and recompiler.
* Fixed XM (index move) instructions failing to update the destination
register on range error for interpreter and recompiler.
* Fixed double-word stores when the source indicates SR (both stored
words are zero) for interpreter and recompiler.
* Fixed recompiler failing to set ILC and P on range error and frame
error exceptions.
* Optimised recompiled code for word size shifts.
* Pushed more recompiler logic from run-time to code generation time and
simplified delay slot PC check and trace check logic.
* Use MOV rather than LOAD where possible in recompiler to improve code
generation performance and symbolic memory locatin names in
disassembled UML.
* Updated TODO list in header comment, reduced copy/paste some more.
-cpu/drcbex64.cpp: Avoid some more unnecessary register copies for
ROLAND.
------------------------------
Balance Try (Japan, ver 1.00) [Guru, Hammy]
Love Power [Siftware]
Pai Pai Le 3 [dyq, little0, Guru]
unknown bubble soccer game [Kevin Eshbach]
New clones marked not working
-----------------------------
Chao Ji Da Heng 2 (V311CN, alternate GFX ROMs) [little0]
- Added support for dynamic size chars lines.
That fixes the paytable shown in different games
such as dphl, dphljp, dphlunkb, sureshoto, smshilo,
etc, allowing to remove the imperfect graphics flags.
- norautua: fixed the overflow when drawing cards
in the possible straight case.
- Rewrote the screen update to save a big number of lines.
- Removed the driver init for ssjkrpkr.
- Added Inputs & DIP switches for gtipoker.
- Change gtipoker game description to: Aces or Better Draw Poker.
- Rearrange the gtipoker graphics ROM.
- Promoted gtipoker set to working.
- Added technical notes.
Systems promoted to working
---------------------------
Aces or Better Draw Poker (GTI) [Roberto Fresca, Grull Osgo]
cpu/e132xs: Implemented supervisor and trace modes as recompiler modes.
This eliminates or simplifies a lot of run-time checks. In particular,
the trace checks on every instruction are not generated when not
tracing, and simplified to just checking the P bit when tracing.
cpu/e132xs: Optimised code generation for RET, avoid a redundant load
when checking for an overflow trap, use the exception parameter for
exception codes rather than generating one function for each possible
code. Also simplified interpreter code for RET.
cpu/e132xs: Implemented SUMS for the recompiler.
cpu/e132xs: Implemented privilege check for setting L (interrupt
lockout) for recompiler. Not implemented for interpreter.
cpu/e132xs: Partially fixed tracing. P flag should be set by all
instructions except RET. Trace exceptions are not triggered for
branches when using the recompiler.
cpu/e132xs: Fixed ILC being set incorrectly for RET.
cpu/drcbex64.cpp: Avoid unnecessary expensive operations when a shift
operation request the zero and/or sign flags but not the carry flag.
* Also avoid an redundant load when checking if trace is active.
* Reduces generated native instruction count by about 24% on x86-64 and
gives an overall performance improvement of about 3.5% in -bench
scores.