mirror of
https://github.com/blawar/GLideN64.git
synced 2024-06-25 22:09:35 +00:00
StarCraft fix.
This commit is contained in:
parent
2decda55f3
commit
729bf94c5a
|
@ -98,3 +98,14 @@ Blast Corps:
|
|||
|
||||
Решение: При вызове setcolorimage, если color image == depth image, вызывать depthBufferList().saveBuffer, который
|
||||
при необходимости пересоздаст depth buffer.
|
||||
|
||||
|
||||
StarCraft:
|
||||
Выяснял причину страшных глюков в LLE. Обнаружил прекрасное.
|
||||
Игра выделяет текущий буфер кадра по адресу 0x00176540. Конец буфера 0x0019bd3f
|
||||
Запускается BgCopy, которая рисует подложку на весь экран. Адрес 8 битной картинки для отрисовки 0x00189140
|
||||
Т.е. картинка находится посреди буфера, который команда BgCopy должна заполнить этой картинкой.
|
||||
Поскольку картинка 8 битная а буфер 16 битный, на консоли всё работает: читаем картинку из середины буфера и рисуем ее же в начале.
|
||||
При отрисовке картинка конечно же затирается, но консоль читает и рисует ее по частям и затираемые данные на этот момент уже не нужны.
|
||||
Плагину сносит крышу проверка на валидность буфера. В HLE CheckForFrameBufferTexture для задников не вызывается,
|
||||
а _loadBGImage игнорирует попадание адреса картинки в буфер если картинка 8 битная.
|
||||
|
|
|
@ -351,6 +351,11 @@ bool CheckForFrameBufferTexture(u32 _address, u32 _width, u32 _bytes)
|
|||
}
|
||||
}
|
||||
|
||||
if (gDP.otherMode.textureLUT == G_TT_RGBA16) {
|
||||
bRes = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (pBuffer->m_cfb) {
|
||||
fbList.removeBuffer(pBuffer->m_startAddress);
|
||||
bRes = false;
|
||||
|
|
Loading…
Reference in New Issue
Block a user