1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00

Update fb isues list

This commit is contained in:
Sergey Lipskiy 2015-03-13 19:05:05 +06:00
parent 8945e13e76
commit b5e2413a49

View File

@ -45,3 +45,48 @@ Scoreboard.
Решение: после отрисовки копировать содержимое буфера обратно в RDRAM. Нужно найти нормальное условие для
определения такого буфера. Пока адреса буферов захардкоданы.
F1 Pole Position:
Проблемы с фоном в меню. После титров запускается демо с 3D моделями. Используется буфер глубины.
Пре переходе снова к меню тектуры фона грузятся в область, которая использовалась под z буфер.
У буфера флаг cleared сброшен после записи z буфера в RDRAM, проверка валидности не находит проблем. и тектура
грузится из пустого буфера.
Решение: Depth copy to RDRAM записывает checksum записанных данных в буфер, соотвествующий буферу глубины.
Тогда в дальнейшем проверка по checksum удалит этот буфер.
Upd: Решение плохое. Ломает subscreen in Zelda OOT. Игра меняет область z буфера (выставляет alpha = 1) когда использует его как фон для
экрана паузы. Checksum не бъет. Решение - разделить опции hack_noDepthFrameBuffers и hack_blurPauseScreen
Для этой игры включить hack_noDepthFrameBuffers и просто убирать буфер глубины при попытке считать из него текстуру.
Mickey's Speedway USA:
pause screen работает так: в область текущего буфера глубины копируется буфер кадра, который в данный момент отображаетс я на экране.
Далее этот буфер размывается на уровне CPU и потом используется как текстура. Подобный механизм работает в Conker BFD.
Чтобы получить размытие нужно копировать буфер кадра в RDRAM, а в момент вызова паузы скопировать его (memcopy) в
буфер глубины в RDRAM. При этом нужно чтобы эта область не очистилась через gDPFillRDRAM при смене буфера.
Для починки отключил вызов gDPFillRDRAM если m_isDepthBuffer == true.
Jet Force Gemini:
Обнаружилась проблема с вспомогательным 8бит буфером для теней. Буфер создается отдельным display list'ом.
Буфер создается, очищается fillrect, стоит флаг cleared. После этого игра пишет пару байт в середине буфера, и
в следующем display list, где буфер используется, проверка по RDRAM не срабатывает.
Пришлось сделать проверку не строгой, а отсекать если количество ошибочных пикселов в буфере меньше порогового значения.
Пока сделал порог в 1%.
Pokemon Stadium 2:
Возникла проблема с портретами покемонов. Портреты создаются в вспомогательных буферах когда на экране отображается
меню выбора покемонов. В этот момент работает interlaced видео режим. Потом игра переключается в режим битвы,
и переключает видео режим в non-interlaced. При переключениии режимов все буферы сбрасывались и портреты терялись.
Пришлось сделать сброс только для полноэкранных буферов.
Pokemon Stadium:
Игра использует кучу вспомогательных буферов для отрисовки меню. При этом буфера могут иметь одинаковую ширину, но разную
высоту. И располагаться друг за другом. Код, который проверяет пересечение нового буфера с существующими и выбрасывает все
пересекающиеся буфера, в данном случае выкидывал большую часть буферов из за неверно проставленной высоты, а значит и
нижнего адреса буфера.
Пришлось править код коррекции высоты буфера, и вызывать метод поиска пересечений после коррекции.