libbgi: funcptr-диспетч clip/noclip спрайтовых ядер + снятие src[0]-фикса
Диспетчеризация clip/noclip через указатели _gfx_blit_fn/_gfx_heal_fn (common/_gfx_sprite_fns.c, дефолт clip): gfx_sprite_clip() — теперь модуль, переключает указатели один раз; sprite_update/putsprite/ movesprite зовут через указатель — ветка if(clip) из горячего цикла убрана (съедала половину выигрыша noclip). Программа без вызова gfx_sprite_clip() noclip-ядра не линкует. Замер dev-MAME (16 шаров, uncapped): clip 50 → noclip 60-61 fps (+20-22%). Регресс tests/sprites (A/B PASS), size-check OK (balls −237 Б, sprites −3177 Б — отвязались лишние ядра). Фикс CPU-байта write-триггера (preread + EX AF,AF') снят: точная dev-MAME эмулирует ПЛМ, подавляющую CPU-байт при активном burst'е — подтверждено по байтам VRAM (tests/blitw col0 = GREEN через read_vram MCP-моста). Для heal фикс был избыточен всегда (банк 0x50 перезаписывает dst[0]). Строки фикса оставлены закомментированными в трёх leaf'ах на случай отличий реального железа; шапки и §9а/§9б дизайна обновлены. НА ЖЕЛЕЗЕ ПЕРЕПРОВЕРИТЬ. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ accfill 3772
|
||||
argv 3431
|
||||
assrtest 3847
|
||||
attrprob 4087
|
||||
balls 6393
|
||||
balls 6156
|
||||
banked 1056
|
||||
bankedbg 1067
|
||||
banklocl 4683
|
||||
@@ -44,7 +44,7 @@ seek 4188
|
||||
simple 955
|
||||
solidt 11531
|
||||
spriteclip 4187
|
||||
sprites 9968
|
||||
sprites 6791
|
||||
stattest 7549
|
||||
stdlib 6643
|
||||
stest2 3644
|
||||
|
||||
|
Reference in New Issue
Block a user