Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
08745 Graphics Minor Always Aug 12, 2023, 14:08 Aug 23, 2023, 11:30
Tester AJR View Status Public Platform MAME (Self-compiled)
Assigned To AJR Resolution Fixed OS Linux (64-bit)
Status [?] Resolved Driver
Version 0.255 Fixed in Version 0.258 Build 64-bit
Fixed in Git Commit 4727a73 Github Pull Request #
Summary 08745: starcas: Invisible projectiles on OpenGL backend
Description When the player's ship fires, the projectiles are invisible. This is a regression since 0.248, where they appeared as blue points.

I experimentally reverted 4df2f9d2f904073cd31d4d5db65cdb0d23270aac for ccpu, but that didn't fix this. It seems to be a purely graphical glitch, as the game remains otherwise playable.
Steps To Reproduce Start a game and start firing at anything.
Additional Information This seems specific to the OpenGL backend. With -video bgfx, dots can be seen at the ends of vectors, which also appear in my 0.248 build.
Github Commit
Regression Version
Affected Sets / Systems starcas
Attached Files
There are no relationship linked to this issue.
User avatar
Senior Tester
Aug 12, 2023, 15:31
I can still see (very dark) blue points here
User avatar
Senior Tester
Aug 15, 2023, 08:53
The bullets show up clearly for me.
User avatar
Aug 15, 2023, 23:44
With -video bgfx, the end dots return. I'll mark this report as OpenGL specific.
User avatar
Aug 16, 2023, 19:41
opengl ignores mame.ini beam_dot_size somehow?

set eg.
beam_dot_size 5.0

then try in another video backend, get huge dots in starcas.
try with opengl and they're near invisible as you say.
User avatar
Senior Tester
Aug 17, 2023, 04:57
Confirmed with opengl.
Also, when the player's ship blows up there's no debris.
User avatar
Aug 19, 2023, 19:14
edited on: Aug 19, 2023, 19:16
After further investigation of the OpenGL renderer, I was able to locate the code that fails to respect -beam_dot_size (whose value is actually instated by the "vector" video device). However, this also points to a flaw in OpenGL itself regarding the GL_POINT_SMOOTH feature, which MAME automatically enables. Antialiasing and "proper filtering" are great things to have in theory, but in practice the OpenGL drivers draw "smooth" point objects as circle shapes that are smaller than they would be with the feature disabled (which turns them into squares) or with other renderers (BGFX draws them as diamonds) and vanishingly faint with the default -beam_dot_size. What's more, this flaw is unlikely to ever be fixed, given that the "Fixed Function Pipeline" OpenGL API that MAME uses was already deprecated when SDLMAME (where the OpenGL renderer originated) was merged in 2010. (The newer, shader-based OpenGL API appears to not even include GL_POINT_SMOOTH.)

The easiest recourse to the OpenGL dot size problem, I think, would be to just disable GL_POINT_SMOOTH. Are there any objections to that?
User avatar
Aug 19, 2023, 19:52
I don't see any difference when I locally remove GL_POINT_SMOOTH.
The Windows GDI renderer also doesn't like it if you increase beam_dot_size btw, it will draw thin vertical lines.