HEAL-WIDTH: heal чомпера ровно 32x60 — его точный след
Замечание пользователя: весь чомпер помещается в свой тайл, значит его
heal максимум 32x60. Проверено по каталогу атласа и подтвердилось:
нижняя челюсть 101/102 = 32x60 низом на dmy = 63*row+62, занимает
63*row+3 .. +62;
верхние челюсти дают ТОТ ЖЕ верх — подъём 0x25 при высоте 23, 0x2F при
13 и 0x32 при 10 все три упираются в 63*row+3;
кровь 114..118 шириной 6 рисуется на x+8, то есть внутри 32.
Было 64 «на всю высоту тайла» (плюс лишняя строка запаса от прошлой
правки) — стало ровно 60 от +3.
Заодно зафиксирован разбор структуры перерисовки чомпера: ОДИН heal на
тайл и ДВА блита (низ и верх). Объединить блиты нельзя — при раскрытых
позах нижняя часть маленькая (32x30, 32x21, 32x17) и между ней и верхней
челюстью разрыв: например, при позе 2 низ занимает +33..+62, верх
+3..+25, а строки +26..+32 пустые.
Проверено в MAME: чомпер рисуется чисто, хвостов от прежнего кадра нет.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -704,12 +704,15 @@ 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;
|
||||
/* Высота 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);
|
||||
/* РОВНО 32x60 — весь чомпер помещается в свой тайл, и это его точный
|
||||
* след (замечание пользователя, проверено по каталогу атласа):
|
||||
* нижняя челюсть 101/102 = 32x60 низом на dmy = 63*row+62, то есть
|
||||
* занимает 63*row+3 .. +62;
|
||||
* верхние челюсти дают ТОТ ЖЕ верх — подъём 0x25 при высоте 23,
|
||||
* 0x2F при 13 и 0x32 при 10 все три дают 63*row+3;
|
||||
* кровь 114..118 шириной 6 рисуется на x+8, то есть внутри 32.
|
||||
* Было 64 «на всю высоту тайла» — четыре лишние строки. */
|
||||
pop_heal_off(x, 63 * row + 3, 32, 60);
|
||||
gfx_set_bank(GFX_BANK_SPRITE);
|
||||
draw_tile(row, col);
|
||||
gfx_set_bank(GFX_BANK_NORMAL);
|
||||
|
||||
Reference in New Issue
Block a user