GBA Video: Fix GL mode 0 y wrapping

This commit is contained in:
Vicki Pfau 2019-06-10 10:50:14 -07:00
parent c5c742dbfd
commit 09ccf5403e
1 changed files with 5 additions and 1 deletions

View File

@ -146,8 +146,12 @@ static const char* const _renderMode0 =
" coord.y -= coord.y % mosaic.y;\n"
" }\n"
" coord += (ivec2(0x3FF, 0x3FF000) & offset[int(texCoord.y)]) >> ivec2(0, 12);\n"
" ivec2 wrap = ivec2(255, 511);\n"
" if (size == 3) {\n"
" coord.y += (coord.y & 256) << 1;\n"
" wrap.y = 1023;\n"
" } else if (size == 0) {\n"
" wrap.y = 255;\n"
" }\n"
" if (size != 2) {\n"
" coord.y &= ~256;\n"
@ -155,7 +159,7 @@ static const char* const _renderMode0 =
" if ((size & 1) == 1) {\n"
" coord.y += coord.x & 256;\n"
" }\n"
" coord &= ivec2(255, 1023);\n"
" coord &= wrap;\n"
" int mapAddress = screenBase + (coord.x >> 3) + (coord.y >> 3) * 32;\n"
" vec4 map = texelFetch(vram, ivec2(mapAddress & 255, mapAddress >> 8), 0);\n"
" int tileFlags = int(map.g * 15.9);\n"