libretro / fmsx-libretro

Port of fMSX to the libretro API.
Other
32 stars 39 forks source link

SD-Snatcher English version Melancholia project not SCC nor SCC+ on Windows and Linux #115

Closed Kelvfimer closed 1 year ago

Kelvfimer commented 1 year ago

Hello

Standalone, retroarch Android and PSP FMSX runs SD-Snatcher English version Melancholia project with SCC or SCC+ but Windows and linux retroarch don't. It's quite strange...

Here it's the patched version for Melancholia https://cdromance.com/msx-roms/sd-snatcher-english-patched/

Please, @cayce-msx can you review this issue?

THX Kind Regards

cayce-msx commented 1 year ago

@Kelvfimer see #113 - I'll pick this one in 1 month or so. Please confirm the hashes.

Note: I have access to Linux, RPi3B and Windows. Not Android nor PSP. So I guess I can replay this, but not the situation that does work.

Has SCC(+) worked for you in any previous version of lr-fmsx? It would be great if you could supply git commit hashes like in #113 - that really eases my work of bughunting.

Kelvfimer commented 1 year ago

Unfortunately nope . It seems it didn't work before in RA on Windows and Linux so I can't provide any commit. It is happening in the latest commit or any other commit. You can double check with the melancholia one https://cdromance.com/msx-roms/sd-snatcher-english-patched/ . It's curious as the Spanish version from manuel Pazos works. Thx for your support.

cayce-msx commented 1 year ago

Interesting. It appears fMSX has never supported the original SD-Snatcher - or any other program that properly tries to locate an SCC/SCC-I. Only patches that allow you to enter the slot without detection will work.

I'll have to invoke the ReadSCC() method. It's implemented, but seems never to be invoked.

Melancholia will be my 'test tool' - it reports all the SCCs it has found (yes, you can theoretically have multiple SCC's in an MSX!) Expect a PR sometime soon.

Kelvfimer commented 1 year ago

I was thinking. The regular fmsx does support it and libretro one too but not on Windows nor Linux. However libretro Android versión works and libretro psp is reported test it works. So how those systems suport it and others no? If that method is not called it should be failing in every platform. So why Android or PSP works? Thx

cayce-msx commented 1 year ago

I have no clue why that would be the case. I didn't just have to invoke ReadSCC() but completely implement SCC-I MegaRAM as well before both Melancholia (disk 1 SHA: 9d12c20f71c4049f8a8b65cc4f13fd7b54affadc) and "T-En by Ded302 & Oasis v1.01" (3e38912c5dcc7f634f99ea3bbb4669a784e3fcb2) versions started to work. The Linux version of fMSX 6.0 as distributed at https://fms.komkon.org/fMSX/ doesn't support those. (didn't test Windows, but I bet it's the same) The code for it is simply not there in the base fMSX code (at least, the code that Marat released, which is the basis of this libretro core). So that's a bit of a puzzling test result... Mind you, there are many many ports & spin offs of fMSX, so maybe some variant already implemented the same as I just did. But I'm really not sure how that would be present in any cross-platform build of fmsx-libretro.. Another thing is that there are many variants of SD-Snatcher. I tested quite a few and only found these 2 to fail.

Note that for Snatcher (no, not SD-Snatcher, Snatcher!) this PR is only a mild improvement: 2 versions just didn't start before - now they do, but then suffer from some kind of data corruption. That'll have to wait until another moment..

Anyhow, it'd be very nice if you could test my code. Let me know if&how it works for you!

Kelvfimer commented 1 year ago

@cayce-msx Thx so much it does work with every version that I tested of sd snatcher. I tested japanese Snatcher Scc+ and it works.

Now it seems there is issues with other games for instance regular gradius 2 doesn't work and gradius 1 scc doesn't work with either. I will open new issues.