libretro / blueMSX-libretro

Port of blueMSX to the libretro API.
Other
45 stars 68 forks source link

No Sprite Limit option? #51

Closed msheehan79 closed 6 years ago

msheehan79 commented 6 years ago

Not really an issue so much as a question/feature request. Posted this to the LR forums a few days ago but as it's pretty core-specific it may make more sense to post/ask here.

I saw mention in the 2.9 release notes for BlueMSX (standalone) a "No sprite limit" option. Has anyone ever tried this feature out to see how well it works, can it be added as a core option to the LR core?

Looking at the code, I thought it might be as simple as enabling it on the properties object in Src\Emulator\Properties.c (line 247), but I tried enabling it there and recompiling and I notice no difference in some testing on my RPI3. Not sure if the feature just isn't fully implemented or there is more work to enable it.

To test I was mainly trying M36 - A Life Planet ROM, this game looks interesting but the flickering is so bad that I don't know how anyone could play it. Was hoping No Sprite Limits would alleviate this at least somewhat. Also tried Valis as that game has some pretty bad sprite flickering too.

Tatsuya79 commented 6 years ago

I tried to add the option for the property switch, it made no difference. I forced the option directly into the VDP part and tried MSX, MSX2, SG1000 games... no difference, sprites flicker. So it's probably not working at all sadly.

meepingsnesroms commented 6 years ago

Are you sure it did not work, on the nes only 8 sprites could be on one scanline or the others just wouldnt show up, so some nes games actually rendered half the sprites on one frame and the other half on the next when there where a lot onscreen, they traded flickering for sprites that always displayed onscreen, if your test game does that you will see no difference even if it is working because the game is doing the flickering not the hardware.

Tatsuya79 commented 6 years ago

I could see it work playing Flicky on SG1000. The chicks disappear right from the start if it's OFF and flicker a lot. Changing the properties wasn't working, I used a setter from VDP.c. https://github.com/libretro/blueMSX-libretro/pull/52

I saw no improvement in MSX2 games such as Aleste 2.

meepingsnesroms commented 6 years ago

The variables are likely only read on reset where as the vdp functions act whenever you call them. Have you tried reseting or reloading the core after changing the variable. If you already have I will just merge with the function.

Tatsuya79 commented 6 years ago

Yes I've tried and it was ignored even with a restart, while the way it's done in the PR works real time.

msheehan79 commented 6 years ago

Just recompiled from source and confirmed on M36 - A Life Planet that this change absolutely had an effect. Before the flicker could get very bad as soon as more than one enemy was on the screen, now no noticeable flicker. Thanks for looking into this!!!

Tatsuya79 commented 6 years ago

Indeed it's easy to spot in that game! Great to see it works for some MSX games too.