libretro / fbalpha2012

Final Burn Alpha 2012. Port of Final Burn Alpha to Libretro (0.2.97.24).
30 stars 49 forks source link

[ANDROID] CPS3 - SFIII crash after choose character. #103

Open ZacharyFoxx opened 3 years ago

ZacharyFoxx commented 3 years ago

The game loads normaly, you can go into to setup menu and change everything (level, handicap, etc.) but, after you choose you characterm when the "?" rotate to show you your first adversy, the retroarch closes.

Using the log tool, the retroarch doesn't show anything wrong (warning or error occurrences).

The problem doesn't happen if I use the stand alone core, fbalpha2012_cps3.

Could be something linked whit the last commit, 9bf2eb2137a3eee946462f6ac06fe028218ff5a6 of the fbalpha2012?

System: DEVICE: OUYA OS: Android Jelly Beam Version: 4.1 Retroarch release: 1.9.1 32 bits

Adding:

I did can replicate the problem in other device today, 2021-04-08, a Xiaomi Mi Pad 7.9, with the same results: Using the fbalpha2012 core the game and its clones crash the retroarch. The stand alone core, fbalpha2012_cps3, works perfectly.

System: DEVICE: Xiaomi Mi Pad 7.9 OS: Android Nougat Version: 7.1.2 Retroarch release: 1.9.1 32 bits

In both, OUYA and Xiaomi Mi Pad 7.9, the version of retroarch is the 1.9.1 and the cores are the versions release today, 2021-04-08.

ZacharyFoxx commented 3 years ago

I really don't know if it has something related with the problem, but the cps3run.cpp file in the fbalpha2012 has differences with the cps3run.cpp of the fbalpha2012_cps3, and maybe the key is here, where this part, which isn't included in the fbalpha2012_cps3 cps3run.cpp file:

    // Patch the EEPROM is not needed for sfiii2 and cause some issues if it's done on it.
    // Normally this is only needed for sfiii but I have nothing to know what the current game is
    // without adding a new property in the driver
    if (!cps3_isSpecial)
    {
        if (cps3_dip & 0x80) {
            EEPROM[0x11] = 0x100 + (EEPROM[0x11] & 0xff);
            EEPROM[0x29] = 0x100 + (EEPROM[0x29] & 0xff);
        } else {
            EEPROM[0x11] = 0x000 + (EEPROM[0x11] & 0xff);
            EEPROM[0x29] = 0x000 + (EEPROM[0x29] & 0xff);
        }
    }

and

!   if (cps3_dip & 0x80) {
!       EEPROM[0x11] = 0x100 + (EEPROM[0x11] & 0xff);
!       EEPROM[0x29] = 0x100 + (EEPROM[0x29] & 0xff);
!   } else {
!       EEPROM[0x11] = 0x000 + (EEPROM[0x11] & 0xff);
!       EEPROM[0x29] = 0x000 + (EEPROM[0x29] & 0xff);
    }

Complet diff file attached. diff.txt

ZacharyFoxx commented 3 years ago

My pull request did not work. The problem with SFIII persists.

Using DEBUG, the log stops abruptly with the following message:

SND Attempt to write long value 230000 to location 240e0210 SND Attempt to write long value 230000 to location 240e0210 SND Attempt to write long value 230000 to location 240e0210

ZacharyFoxx commented 3 years ago

I found a backup of an old version of the core, fa97cd2, a commit of 02/29/2020, and in this version the sfiii and its clones run normally.

So, one of the commits after that date was the one that generated the problem.

ZacharyFoxx commented 3 years ago

Commit #110 didn´t work. The problem persists....