HEAL-WIDTH: ширина heal'ов по фактическому следу из атласа
Задача была помечена обязательной. Габариты сняты из каталогов .atl, а
не «по клеткам на глаз»:
плита 41/69/70 = 32x13-14 43/73/74 = 32x3 42/71/72 = 26x15-16
чомпер 101/102 = 32x60 111 = 27x23 113 = 23x10
Отсюда два сужения:
pop_loose_shake_draw ширина 64 -> 58 (свой тайл 32 + правая грань 26,
во дворце 25)
pop_chomp_redraw высота 64 -> 61 (след 63*row+3..62: верх самого
высокого bot-кадра и низ на dmy;
верхняя челюсть при подъёме 0x32
и высоте 10 даёт ровно +3)
Замер 11/15: медиана не сдвинулась (437 484 — плит в комнате нет),
максимум 550 776 -> 549 816, то есть эффект только в кадрах перерисовки
чомпера и он мал, как и предсказал пользователь. Основной выигрыш от
сужения плиты (9,4 % площади) ждёт сцены 13/23 и требует отдельного
прогона на сборке LEVEL=13.
Пики не трогал: их таблицы кадров (POP_SPIKES_FRAM_LEFT/RIGHT) я по
атласу не разбирал, а сужать heal по догадке — прямой путь к
недочищенному хвосту.
Проверено в MAME: чомпер и факелы рисуются чисто, хвостов нет; хост-тесты
зелёные.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -618,7 +618,12 @@ void pop_loose_shake_draw(int row, int col) __banked
|
||||
* NB: печёный кадр-0 может слегка просвечивать по кромкам — чистое
|
||||
* решение (bake тайла как empty + рисовать loose всегда динамически)
|
||||
* отложено; wipe-в-чёрный делал плиту невидимой — не годится. */
|
||||
pop_heal_off(x, 63 * row + 46, 64, 24);
|
||||
/* Ширина 58, а не 64 = «две клетки»: реальный след дрожащей плиты —
|
||||
* свой тайл (верх/левая грань 32 px) плюс правая грань, которая уходит
|
||||
* в соседнюю клетку на 26 px (25 во дворце). Габариты сняты из
|
||||
* каталогов атласов: 41/69/70 = 32x13-14, 43/73/74 = 32x3,
|
||||
* 42/71/72 = 26x15-16. Задача HEAL-WIDTH. */
|
||||
pop_heal_off(x, 63 * row + 46, 58, 24);
|
||||
gfx_set_bank(GFX_BANK_SPRITE);
|
||||
draw_tile(row, col); /* loose: лево+низ (анимир.) */
|
||||
if (col + 1 < 10)
|
||||
@@ -699,7 +704,12 @@ void pop_spike_redraw(int row, int col) __banked
|
||||
void pop_chomp_redraw(int row, int col) __banked
|
||||
{
|
||||
int x = POP_COL_XH[col] * 8;
|
||||
pop_heal_off(x, 63 * row + 2, 32, 64);
|
||||
/* Высота 61, а не 64: след чомпера по вертикали — от 63*row+3 (верх
|
||||
* самого высокого bot-кадра, 32x60 низом на dmy = 63*row+62) до
|
||||
* 63*row+62. Верхняя челюсть выше не забирается: её подъём 0x32 = 50
|
||||
* при высоте 10 даёт 63*row+3. Габариты из каталога атласа
|
||||
* (101/102 = 32x60, 111 = 27x23, 113 = 23x10). Задача HEAL-WIDTH. */
|
||||
pop_heal_off(x, 63 * row + 2, 32, 61);
|
||||
gfx_set_bank(GFX_BANK_SPRITE);
|
||||
draw_tile(row, col);
|
||||
gfx_set_bank(GFX_BANK_NORMAL);
|
||||
|
||||
Reference in New Issue
Block a user