snes9xgit / snes9x

Snes9x - Portable Super Nintendo Entertainment System (TM) emulator
http://www.snes9x.com
Other
2.6k stars 450 forks source link

Request: sprite limit #382

Open ghost opened 6 years ago

ghost commented 6 years ago

Reducing sprite flicker option is very nice to have.

Can we also have an option to display more than 32 sprites per line? Some racing, shooting games have tons of particle effects or lots of trees,hazards that can annoyingly popup or disappear.

Thank you again.

OV2 commented 6 years ago

This is already in the libretro version. We can probably add a config option to activate it in other ports.

ghost commented 6 years ago

Tried the libretro version and it's nice! Would be great to have in other ports.

Although .. I think there's 2 types of sprite limiter?

Tatsuya79 commented 6 years ago

I'm the one who did that change for libretro. It's done a bit poorly from 34 to 60 = what looked the most ok-ish in Gradius 3 without touching gfx.h as I feared that would change the default behaviour when the option is off. I wasn't sure how to do that properly, please revisit it if you know better!

ghost commented 6 years ago

If sprite limit removal is done please make it optional. This will break some games.

bearoso commented 6 years ago

Of course it's optional.

32 sprites per line (lots of 8x8 sprites) (# = n/a?)

I don't think increasing this will affect much. If you can find a case where increasing the tile max doesn't work, we'll allow increasing the actual object limit as well.

It's done a bit poorly from 34 to 60 = what looked the most ok-ish in Gradius 3 without touching gfx.h as I feared that would change the default behaviour when the option is off. I wasn't sure how to do that properly, please revisit it if you know better!

It's perfectly fine. And I don't think those gfx.h changes would have any side-effects.

ghost commented 6 years ago

Different platform but taitos chase hq on pce comes to mind they used the sprite limit to hide things. I imagine other programmers on other platforms may do similar things.

bearoso commented 6 years ago

My comment was a little indirect. We're not going to increase the sprite limit by default.

ghost commented 6 years ago

The hakchi snes9x core uses a hacked dsp-4 bios where this upper limit works -- Top Gear 3000, stage 1, # tiny visible trees on horizon.

I thought Phalanx has a flicker which isn't solved by tiles per line. And R-Type. I'll play lots of games and see if I can come up with a concrete list in a few months.

Thanks for raising the other limit!

ghost commented 6 years ago

So is the limit rise that was just added an option on win version? I like the idea but I hope it can be turned off. Unlimited sprites or higher sprite limit may enhance some games but will also hurt some. And enhancing a hand full of games while breaking others is a crappy idea. I ask this because I see commits with a sprite raise and no on off option. Magic engine for pce is a paid emulator that would be perfect if it wasn't for the no sprite limit.

ghost commented 6 years ago

I think it only affects libretro port atm (reduce flickering) and is default off.

edit: Top Gear 1 requires sprite limiter on to hide road hazards beyond the rolling hills. Toggling option works correctly in libretro. And looks normal in win32 port.

ghost commented 6 years ago

If if it does end up in windows I hope it's off by default with a GUI option. Otherwise I'm sure it effects more than just top gear

Tatsuya79 commented 6 years ago

Of course it's off by default, Bearoso even answered to that again 2 posts above yours.

Tatsuya79 commented 6 years ago

So testing a bit more, rising the OBJ struct in gfx.h with additional changes in gfx.cpp does make a difference. In this Gradius 3 scene it helps keeping the 4 options from flickering at all.

Gradius_III_Japan_-180812-125947

The shots and shield are still flickering though (enemy fire and ship lasers/missiles alternately).

It doesn't help for Top Gear 3000 trees. I saw kps501 did more changes in files that aren't in snes9x mainline, so perhaps that.

ghost commented 6 years ago

Just paranoid lol

bearoso commented 6 years ago

So testing a bit more, rising the OBJ struct in gfx.h with additional changes in gfx.cpp does make a difference.

OK. I'll make some changes to integrate the object limit into the option.

It doesn't help for Top Gear 3000 trees. I saw kps501 did more changes in files that aren't in snes9x mainline, so perhaps that.

That's pushing it. The game itself knows the limits and is sticking to them. Per-game hacks like that are more suitable as patches on romhacking.net.