* cpu/drcbearm64.cpp Interpret index operand for load and store
instructions as a signed 32-bit value for consistency with x86-64.
Moved code to interpret load and scale the index for integer
load/store to a helper function to make it easier to update if it
needs changes or fixes.
* cpu/drcbearm64.cpp: Use and/orr to set carry flag directly rahter than
using an intermediate register when both operands of a CARRY
instruction are immediates.
* cpu/drcbearm64.cpp: Fixed incorrect operand type assertion for FREAD.
* cpu/drcbearm64.cpp: Use less verbose asmjit helper functions for shift
operations and addressing modes.
* cpu/drcbex64.cpp: Interpret index operand for floating point
load/store as a signed 32-bit value for consistency with integer
load/store.
* cpu/drcbex64.cpp: Guard against any possibility of load and store
instructions altering the flags.
* cpu/drcbex64.cpp: Reduced copy/paste in floating point load/store
instructions.
* cpu/drcbex64.cpp: Cleaned up some casts between integer types with
differing size and signedness.
* docs: Added reference for UML flow control, data movement and emulated
memory access instructions.
* cpu/uml.cpp: Truncate immediates to size for a few more instructions.
* cpu/uml.cpp: Added SPACE_OPCODES since it's a well-known address space
now.
* cpu/uml.cpp: Removed SCALE_DEFAULT. It's unimplemented by back-ends
and unused by front-ends.
* cpu/uml.h, cpu/drcumlsh.h: Less confusing names for parameters to read
and write instruction generators.
* cpu/drcbex86.cpp: Templated 64-bit multiplication helpers on the
zero/sign flag source, cleaned up casting pointers to integers.
New working software list items
-------------------------------
Beyond Zero Tolerance (prototype 19950714) [Hidden Palace]
Eyra - The Crow Maiden (digital release) [no-intro]
Zero Tolerance (Europe, USA) (rev. C) [no-intro]
Zero Tolerance (Germany) [no-intro]
Zero Wing (Retro-Bit) [no-intro]
Zombies Ate My Neighbors (Limited Run Games) [no-intro]
* model2: improve z-sort and clipping
Polygons in later windows are always drawn after polygons from earlier windows, regardless of z value.
Four planes representing the visible frustum are now used for polygon clipping; it is no longer necessary to add 1.0 to z during projection.
* model2: only reset the triangle z value at the start of the frame
Zero Gunner uses z value from previous object for enemy bullets; resetting z values leads to them not being visible
Setting master z-clip value to 0xFF disables z-clipping according to Model 2B-CRX manual
* Added support for reference current (multiplying capability).
* Added support for voltage output.
* Added support for streaming reference current.
* Used those capabilities in oberheim/dmx.cpp and linn/linndrum.cpp.
* cpu/uml.cpp: Fixed some cases where simplifying multiplication
instructons incorrectly changed output flags.
* cpu/drcbex64.cpp: Fixed some cases where a ROLC/RORC with zero shift
count could incorrectly clear the carry flag.
* cpu/drcbex86.cpp: Made 64-bit ROLC/RORC with zero bit count preserve
the carry flag.
* cpu/drcbec.cpp: Fixed FSMOV/FDMOV turning things that look like
signalling NaNs into quiet NaNs on i686.
* cpu/drcbex64.cpp: Greatly reduced copy/paste in the code generation
for multiply instructions.
* cpu/drcbec.cpp: Don't clear carry flag on a zero-bit rotate through
carry.
* cpu/drcbex86.cpp: Don't clear carry flag on a word-sized zero-bit
rotate through carry (64-bit case is more involved).
* cpu/drcbex64.cpp: Removed code for another special case of ROLAND that
the simplifier deals with.
-konami/ksys573.cpp, bus/pccard/linflash.cpp: Corrected "Gacha Gachamp".
* Actually take a voltage snapshot when R or C change. This was being attempted, but didn't work because set_target_v would exit early if the target V was not changing. Made the snapshoting more explicit.
* Consider the EG done based on elapsed time, instead of proximity to target value. Some low volume DMX sounds were affected by this.
* video/mb_vcu.cpp:
- Implement device_palette_interface for palette functionality.
- Use an address space finder to access the host address space.
- Use logmacro.h helpers for configurable logging.
- Added a VRAM addressing helper.
- Suppress side effects for debugger reads.
- Cleanup 2bpp graphics drawing and screen update function.
* stern/mazerbla.cpp:
- Reduced run-time tag lookups and preprocessor macros.
- Reduced duplication and unnecessary trampolines.
- Updated comments.
* bandai/wswan.cpp:
- Remove unused graphics decoding layout.
- Fixed sound DMA, implemented DMA direction, moved DMA-related code into WonderSwan color state class.
- Make some variables constant, reformatted code.
* bandai/wswan_v.cpp:
- Split wonderswan color VDP device class into a separate class.
- Move palette functionality from system driver into VDP device.
- Corrected VRAM size.
- Use bool for Boolean values.
- Use logmacro.h helpers for configurable logging.
- Reduced duplicated code.
- Remove unused variables and code, reduced duplication, reformatted code.
* shared/wswansound.cpp:
- Implemented Hypervoice.
- Added mono speaker/stereo headphones selection.
- Fixed some emulation issues and corrected output rate and volume.
- Use logmacro.h helpers for configurable logging.
* virtual/vgmplay.cpp: Added Hypervoice support and stereo output for WonderSwan sound.
* Fixed save state support.
* Use indirect palette for color palette.
* Implemented full screen update function.
* Reduced a lot of duplication.
* Use more appropriate integer types, made some variables const, reformatted code.
-snk/ngp.cpp: Fixed save state support
* Also reduced literal tag usage and removed unnecessary screen update trampoline function.
New working software list items (neogeo.xml)
--------------------------------------------
Double Dragon One (demo) [OzzyOuzo]
Double Dragon One (prototype 1) [Casa de Ruivo]
Double Dragon One (prototype 2) [Casa de Ruivo]
Xeno Crisis [O'Cara-do-Sei-lá]
* Implement device_palette_interface for color palette functionality.
* Added some missing members to save states, and use fixed-size integer types for members that need to be saved.
* Moved many internal functions into protected: and private: sections.
* Use more appropriate integer types, made many local variables const.
* machine/ie15_kbd.cpp: Reassigned keys on the IE15 keyboard to match the layout of a VT52 keypad.
* ussr/ms0515.cpp, ussr/dvk_ksm.cpp: Removed keyboard serial speed workaround.
-emu/diexec.cpp: If a shorter input line pulse overlaps a longer pulse, don't shorten the pulse.
-cpu/e132xs: Added named input line number constants.
-video/sprite.cpp: Got rid of simple_list and fixed_allocator.
------------------------------
Bio Rhythm [Siftware]
Janken Man Ganso 2 [buffi]
Jipin Dou Di Zhu (set 1) [little0]
San Da Yi [little0]
New clones marked not working
-----------------------------
Feng Kuang Dou Di Zhu II [little0]
Jipin Dou Di Zhu (set 2) [little0]
- bmc/koftball.cpp: identified a couple of inputs for jxzh [little0]
- igs/igspoker.cpp: added NVRAM support, split driver in subclasses, small cleanups
- kaneko/airbustr.cpp: added PLD dumps for the original sets [PLD Archive, f205v]
This was "working" on x86-64 due to the backend treating shift/rotate
instructions with zero immediate bit count as a no-op even if the source
and destination registaer aren't the same. Fixing the bug in the
back-end caused it to break the same way on x86-64 as it does on the
other three back-ends that didn't have this bug.
* Fixed many cases that could cause the upper bits of a register not to
cleared following a 32-bit operation.
* Added more simplifications.
* Allow many simplifications when flag updates are requested.
* Fixed various bits of unreachable code.
* cpu/drcbearm64.cpp, cpu/drcbex64.cpp: Removed code for special-casing
some situations the simplifier can now take care of consistently.
-cpu/drcbex64.cpp: Fixed a bug causing some shifts to be treated as a
no-op when the destination and source are not the same.
-cpu/drcbearm64.cpp, cpu/drcbex64.cpp: Added a special case for
comparing something to itself.
-cpu/e132xs: Use the CARRY instruction rather than a right shift to set
up carry in.