* Assume ROL sets the V and C flags the same way as SHL and MOVI clears
the V flag.
-cpu/drcbex64.cpp: Optimise SUB x,0,y to a NEG instruction (gets down to
one instruction from two or three a lot of the time). This had been a
TODO comment for ages.
-cpu/drcbex86.cpp: Got rid of unnecessary std::function use. This
substantially reduces the code size and reduces allocations during code
generation.
-cpu/drcbearm64.cpp, cpu/drcbex64.cpp, cpu/drcbex86.cpp: Got rid of the
intermediate tables in favour of bit switch statements. This improves
startup time, reduces code size, and gives the compiler more
optimisation opportunities.
-cpu/drcbearm64.cpp, cpu/drcbex64.cpp, cpu/drcbex86.cpp: Got rid of
asmjit namespace qualifiers left over from when the class declarations
were in headers and hence outside the scope of the using namespace
statements.
------------------------------
Petit Lot (ver. 4.1) [buffi]
New clones marked not working
-----------------------------
Ichi Ban Jyan (Ver 2.35) [buffi]
- misc/fresh.cpp: small cleanups
- skeleton/cle68k.cpp: added 2nd RAMDAC place-holder
---------------------
Street Fighter III 3rd Strike: Fight for the Future (Asia 990512, NO CD) [Goldenglober]
Street Fighter III 3rd Strike: Fight for the Future (Asia 990608, NO CD) [Goldenglober]
- dynax/ddenlovr: myunivbl and myunivbl2 aren't bootlegs after all, so rearrange accordingly
- igs/igs011.cpp: demoted xymga to not working as it hangs during attract
* Fixed behaviour of delayed branches, trace exceptions, and saved PC
calculation for error exceptions in delay slots for the interpreter.
All instructions in delay slots, branching instructions that can raise
exceptions and tracing shoud now (mis)behave properly for the
interpreter, including things the manual says you shouldn't do.
* Fixed and optimised flag updates for left shifts for the recompiler.
* Optimised ROL instruction for the recompiler and made flag calculation
equivalent to the interpreter both with and without the "Missioncraft
flags" compile-time option.
* Only block interrupts for one instruction following a delayed branch.
* Optimised the SOFTWARE instruction a little for the recompiler.
* Added more SDRAM configuration logging and cleaned up code a bit.
-cpu/drcbearm64.cpp: Apply the change from 7efe37938f to OR and
XOR instructions as well, and fix some cases where a 32-bit logical
operation would fail to clear the upper bits of a register.
-cpu/drcbex64.cpp: Avoid more conditional branches on conditional MOV.
k053246_k053247_k055673.cpp, k053246_k053247_k055673.h:
I went back to update zdrawgfxzoom32GP(), now down to a third of its original size before I started changing it. As a thinly veiled excuse for reworking the whole function, I went ahead and added additive sprite blending (to the now singular alpha call site).
Remarks: the mix priority setting is not yet handled. It seems simple enough (flip dst and src), but I would like to find an example of this before I implement it.
k054156_k054157_k056832.cpp:
The attr variable holds what appear to be the elusive tile (external) mix codes. Attach it to the flags variable so these bits can be accessed in the tile callback functions. Tiles with mix codes gets their own tilemap category.
Remarks: I've now changed the callback to include an attr param.
k054338.cpp:
Update set_alpha_level. This function now returns a level, an additive blend bool and a mixpri bool. Minor style changes to the overall file.
Remarks: set_alpha_level doesn't actually set anything. Maybe rename to get_alpha_level?
moo.cpp, xexex.cpp:
Mask out the new additive & mixpri bits from set_alpha_level calls for now, until it's known if / how they should be used over there.
mystwarr_v.cpp, mystwarr.h:
Remove mystwarr water hack.
Update mystwarr_tile_callback (and add viostorm_tile_callback) to read tile mix codes, store last read mix code in a new m_last_alpha_tile_mix_code variable.
Attach m_last_alpha_tile_mix_code to mixerflags, which happens to have two unused bits.
Remarks: I updated the mixerflags documentation to mention the usage of the last two bits.
konamigx_v.cpp, konamigx.cpp, konamigx.h:
Shrink GX_MAX_SPRITES, which to the best of my ability seems to be oversized. There does seem to be several oversized arrays / defs in these files, so I think this is one of them.
The usual FredYeye updates to konamigx_mixer - move declarations closer to use, more suited types, rename temp vars, etc.
Change objpool to a vector, simplifying usage (push_back, size).
Replace sorting loop with reverse + stable_sort.
Improve gx_draw_basic_tilemaps - read internal / external alpha mix codes based on vinmix_on. Tiles with mixcodes get drawn in a separate pass for per-tile blending.
Update alpha_tile_callback and add salmndr2_tile_callback, same as the mystwarr_v callbacks.
What started out as trying to sort out konamigx_mixer() to look at shadow/priority issues instead ended up with me finally getting a foot into the figurative tile blending door. The mystwarr water hack is gone, and sexyparo gets transparent windows. This might affect many GX and related games. Alpha blending might be broken in some games now, and needs to get their mix codes attached in their respective callbacks. salmndr2 got tagged in my automatic video comparison for differing from earlier versions, that's why I managed to fix it already.
Known problems:
metamrph: stained glass windows are near-transparent at the moment. I think additive tile blending will fix it...
viostorm: character names fade in in reverse. This also uses additive blending, so this might also get fixed once that's in.
fantjour: the top & bottom flames at the captain kebab ship go missing. Uses additive blending.
* model2: wait state when writing to copro TGP FIFO
The Manx TT course select rotation bug was caused by the i960 running too far ahead of the TGP and overwriting 0x918000 before the TGP got a chance to read it; adding a wait state when writing to the input FIFO prevents this
Also increase clock speed of TGP to 16.666 MHz (50 MHz / 3)
* model1: change TGP frequency to 13.333 MHz (40 MHz / 3)
* model2: remove issue that no longer occurs since TGP rewrite
* Fixed behaviour of exceptions in delay slots, and fixed recompiler not
updating ILC and P for some exceptions.
* Implemented privilege error exception on setting L in user mode for
interpreter.
-emu/debug, osd/modules/debugger: Added an option to show
exceptionpoints in breakpoints windows.
- Added memory and port maps.
- Hooked the PPI 8155
- Decoded graphics, added palette.
- Video update routines to draw the screen.
- Hooked input port and DIP switch.
- Accurate machine config.
- Added technical notes.
- Moved from /skeleton to /misc.
- Decoded color palettes from bipolar PROMs
(applies to hardware types featuring these devices)
- Implemented dynamic palette per line.
- Unified sureshoto and dphl machine config.
- Real colors for dphl, dphljp, newhilop, pkii_dm,
pma, gtipoker, smshilo, fastdrwp, sureshoto,
and dphlunkb.
- Fixed more ASCII PCB layouts.
- Fixed documentation about the 3x PPI 8255 devices
for both narout and DPHL types of hardware.
- Documented control panels, and added/fixed a lot
of technical notes.
* Implement MMC5 sound emulation
- Heavily based from devices/sound/nes_apu.cpp, Adjusted to differences compares to NES APU and MMC5.
* bus/nes/mmc5,cpp: Fix save state support, Implement MMC5 sound
* bus/nes/nes_slot.h: Fix save state support
* sound/nes_defs.h: Fix save state support