- Working RAM through PPI 8155 internal RAM and handlers.
- Extended the PPI 8166 to support the 14bit timer + 2bit control.
- Hooked the i8257 DMA controller.
- Demuxed the digital inputs.
- Adjusted screen visible area.
- Worked the DMA support to get registers in the correct addressing.
- Hooked the analogic inputs.
- Added inputs for two players.
- Added DIP switches for coinage, difficulty, and lives.
- Added and demuxed spinner controls.
- Added NVRAM support.
- Sound support.
- Adjusted the spinners parameters to general purpose.
- Sound level control circuitry.
- Wired players lamps.
- Added technical notes.
- Rewrote the enhanced no documented i8085 RDEL & DSUB
instructions and their own flags.
Systems promoted to working
---------------------------
Paracaidista [Roberto Fresca, Grull Osgo]
* sound/c6280.cpp: Improved accuracy of volume control and LFO.
* video/huc6260.cpp: Suppress side effects for debugger reads, fixed save state issues.
* video/huc6270.cpp: Suppress side effects for debugger reads.
* Chose better types for member variables, made more local variables const, reformatted code.
* Corrected the calculation of the voice DC-block HPF.
* Audio streams are in voltages.
* Cross-checked component values with parts list, and corrected a couple of them.
* Also updating master volume and pitch adjustments on reset.
* There are no byte enable or write strobe signals for I/O, and there's
only a single operand size, so word addresses make more sense.
* Also changed STBS/STWS to allow any valid signed or unsigned value of
the applicable size. This allows vamphalf attract mode to work as
well as the storage test.
-misc/limenko.cpp: Better input types for spotty.
* Only a single I/O access is generated for an I/O word read/write. The
upper half just disappears if the pins aren't present. This fixes
"phantom" I/O accesses, allowing address maps to be cleaned up a bit.
* Reduced I/O address width for models with 16-bit external bus to match
hardware.
* Made addressing consistent between interpreter and recompiler for I/O
double-word accesses.
* Implemented power down via internal I/O write for E1-X and later
cores (none of the games I tested actually use it).
-misc/pasha2.cpp: Enabled the recompiler for Zooty Drum - it gets just
as far as the interpreter now.
* Got package option (T, N or B suffix) out of device type.
* Enabled 4x PLL clock multiplier for GMS30C2216/GMS30C2232.
* Implemented entering power down mode via MCR for E1 and E1-X cores.
* Marginally better code generation for a few instructions.
* Log available bus/memory configuration options for different cores.
* Added post load handler for E1-XS and E1-XSR cores to install SDRAM
mode/configuration handlers if necessary.
* Improved comment about different Hynix and Hyperstone CPU models.
-cpu/drcbearm64.cpp: Don't update flags that aren't requested in a few
places.
------------------------------
Happy Planet [Guru]
New working clones
------------------
Mahjong Electron Base (parts 2 & 3, Japan set 3) [little0]
- excellent/es8906.cpp: fleshed out a bit
* 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.