Revert "P4: каталог атласа читается из W0, а не через мап W3 — минус 408"
This reverts commit 06fb4235f0.
This commit is contained in:
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* atlas_image_w0 — адрес ленты idx для страницы, УЖЕ ПОДКЛЮЧЁННОЙ В W0.
|
||||
*
|
||||
* Отличие от atlas_image: тот читает каталог через временный мап страницы
|
||||
* в W3 и потому платит двумя переключениями окна. А вызывающий, который
|
||||
* собирается блитить, страницу в W0 мапит всё равно — и каталог там уже
|
||||
* лежит по тому же смещению. Значит переключать W3 незачем.
|
||||
*
|
||||
* КОНТРАКТ: страница a->page обязана быть подключена в W0 (gfx_w0_map)
|
||||
* ДО вызова и оставаться подключённой, пока используется результат.
|
||||
* Возвращает W0-адрес ленты (как atlas_image).
|
||||
*
|
||||
* Замер PoP 2026-08-19: atlas_image в горячем пути блита фона стоил 672
|
||||
* такта на КАЖДЫЙ блит, а блитов в кадре до двенадцати.
|
||||
*/
|
||||
#include <sprinter.h>
|
||||
#include <sprite.h>
|
||||
#include "../_bgi.h"
|
||||
|
||||
const void *atlas_image_w0(const atlas_t *a, uint8_t idx)
|
||||
{
|
||||
const uint8_t *e = (const uint8_t *)(_ATL_DIR_OFF + (uint16_t)idx * 8);
|
||||
(void)a; /* страница уже в W0 — сам атлас не нужен */
|
||||
return (const void *)(e[0] | (uint16_t)(e[1] << 8));
|
||||
}
|
||||
Reference in New Issue
Block a user