Adding the new keyboard code in the last release pushed the code
size beyond the 4K region allocated for it. The colour/mono
functions were then corrupted by the stack or overwritten by the
look-up tables generated at B000.
The look-up tables have been moved to B200, to give an extra 512
bytes of space. The stack has also been moved to hang back from
C000, which is after the end of the look-up tables.
Also changed the green ghost to dark yellow, to be closer to its
original orange colour. Changing the maze colour also uses the
bright version unless Shift is pressed.
The original Pac-Man machine uses a 4-way joystick, which makes it
impossible to generate more than one direction input. The game does
not understand diagonals, and will use the first direction found to
be pressed. This can cause frustration when played on the keyboard
or with a regular 8-way joystick.
We now ignore control input for the direction Pac-Man is currently
facing, so changes of direction are always preferred. We also ignore
perpendicular inputs on tile entry, to defeat the turn overshoot
mechanism that gives a brief window for players to change their mind
about a turn.
These changes are only active when diagonal inputs are detected, so
traditional play with a single input remains true to the original.
- added 'make run' rule to help with testing
- preserved pasmo exit code on Win32 assembly failure
- fixed Win32 clean rule so it removes all files cleanly
- easier to change target basename
The old method used a mix of black attributes and data masking to trim sprites at the screen edges, with every sprite trimmed separately.
The new method no longer uses attributes, so it's compatible with the colour version. It also finds the extent of the trim block for all sprites, for more efficient clearing.
Colour/mono mode can now be changed at any time using the C and M keys.
The implementation uses self-modifying code to reduce the work in mono mode, though the mono-only build (colour=0) is still slightly more efficient.
Using a blue or white maze will automatically flash blue/white at the end of each level, if colour is enabled. Other cases continue to toggle the bright bit.
We now check for Spectranet execution traps being enabled. If found we prompt the user to disable them, and wait until that has been done before we continue.
As a temporary work-around for SpectraNet not working, you can now hold a key on the keyboard to delay the emulation starting. With your other free hand you can change the jumper to disable traps!
Pressing multiple directions now favours the newly pressed direction, to better match the user's expectations.
Added space as credit+start button, to match other joystick behaviour.
The previous release crashes when the DivIDE trap points are hit, despite us running in +3 RAM. To avoid this we need to put the ROM in DivIDE RAM, so it's already paged.
Also corrects the RAM filling, which was setting the fill value before the MSB of the address had been calculated.