Recent development omitted to save several emulated device state
variables. We remedy this by appending them at the end of the savestate
file. When loading older savestate files (<1.2 or pj64) we adopt a best-effort
approach to set the missing state to a reasonnable state. But it may
cause some instability.
I added TravisCI and Coverity badges. As I don't know if this has already been discussed before, feel free to refuse this PR if you think it's a bad idea.
Main changes in this partial rewrite are:
- channel processing is done in 2 separate steps. First is the channel
setup done when 0x1 is written in the "pif status byte". The second step
is the effective channel processing which allow each channel device to
answer. This step is done just before DMA reads. This is in accordance
with Patent 6394905. (Fig5B - Pif Macro). This allowed to greatly
simplify pif channel processing (no more strange bytes to parse in pif
ram and no duplicated code for that).
- "pif status byte" is treated as a bitfield with each flag indicating
which action to take.
- command processing interface has been reworked to separate the
transmitted data (Tx,TxBuf) from the the received data (Rx, RxBuf).
- reworked the code to allow custom pif channel processing
callback. This should allow to implement "raw" processor to let an
external device (such as a Raphnet controller) do the channel
processing.
- Validate pif commands
- Fixed eeprom write command which missed the status byte.
- Updated the controller input backend to split pak detection from
controller connection test.
- Consolidated all input plugin compatibility code inside one module
(eg. controller_input, rumble and pif processings functions).
- Added PIF channel printing debug
The before_install currently fails on Travis CI with:
The following packages have unmet dependencies:
libsdl2-dev : Depends: libegl1-mesa-dev
Depends: libgles2-mesa-dev
E: Unable to correct problems, you have held broken packages.
This can currently only be solved by using the apt addon to install packages.