From 41fabd43f76658df6289887fb855991a65b468d4 Mon Sep 17 00:00:00 2001 From: water111 <48171810+water111@users.noreply.github.com> Date: Sat, 25 Feb 2023 20:21:42 -0500 Subject: [PATCH] [sprite glow] fix crashes (#2256) Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com> --- game/graphics/opengl_renderer/sprite/GlowRenderer.cpp | 3 ++- game/graphics/opengl_renderer/sprite/GlowRenderer.h | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp b/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp index 323191e805..2b05656384 100644 --- a/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp +++ b/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp @@ -409,7 +409,8 @@ void GlowRenderer::add_sprite_pass_3(const SpriteGlowOutput& data, int sprite_id // handle adgif stuff { - ASSERT(data.adgif.tex0_addr == (u32)GsRegisterAddress::TEX0_1); + // don't check upper bits: ps2 GS ignores them and ND uses them as flags. + ASSERT((u8)data.adgif.tex0_addr == (u8)GsRegisterAddress::TEX0_1); GsTex0 reg(data.adgif.tex0_data); record.tbp = reg.tbp0(); record.draw_mode.set_tcc(reg.tcc()); diff --git a/game/graphics/opengl_renderer/sprite/GlowRenderer.h b/game/graphics/opengl_renderer/sprite/GlowRenderer.h index c2ad440e76..e7e28198af 100644 --- a/game/graphics/opengl_renderer/sprite/GlowRenderer.h +++ b/game/graphics/opengl_renderer/sprite/GlowRenderer.h @@ -73,7 +73,9 @@ class GlowRenderer { GLuint tex; }; - static constexpr int kDownsampleBatchWidth = 16; + // max sprites should be 128 in simple sprite, plus 256 from aux = 384 + // 20 width = 20 * 20 = 400 sprites > 384. + static constexpr int kDownsampleBatchWidth = 20; static constexpr int kMaxSprites = kDownsampleBatchWidth * kDownsampleBatchWidth; static constexpr int kMaxVertices = kMaxSprites * 32; // check. static constexpr int kMaxIndices = kMaxSprites * 32; // check.