gameblabla / pcsx4all_rs97_rg350

Newer fork based on numerous patches by Senquack, myself, TonyJih, Soar Qin, Dmitrysmagin
8 stars 6 forks source link

RE: Fantastic Pinball Kyuutenkai - Black screen after selecting Memory Card #3

Open negativeExponent opened 3 years ago

negativeExponent commented 3 years ago

Originally posted here: https://github.com/libretro/pcsx_rearmed/issues/229 I have a feeling you would have better undestanding of whats going on here and how to apply the same on pcsx.

This was originally fixed on mednefen psx, and the relevant fix is this:

   uint16 abs_lev_max = 0;
   bool abs_lev_chselect = SubQBuf_Safe[0x8] & 0x01;

   for(int i = 0; i < 588; i++)
    abs_lev_max = std::max<uint16>(abs_lev_max, std::min<int>(abs((int16)MDFN_de16lsb(&read_buf[i * 4 + (abs_lev_chselect * 2)])), 32767));
   abs_lev_max |= abs_lev_chselect << 15;
.
.
.
   tr[6] = abs_lev_max >> 0;
   tr[7] = abs_lev_max >> 8;

this section corresponds to the following section in pcsx: https://github.com/gameblabla/pcsx4all_rs97_rg350/blob/master/src/cdrom.c#L496-L516

if cdr.Result[7] = 0; is changed to any value other than 1, then the game works. But then im only guessing some value, not the correct ones.

negativeExponent commented 3 years ago

btw, im testing on libretro pcsx, but since the code looks the same, i believe the behavior will also be the same for this game on pcsx4all_gameblahblah edition :D