L3-CHOMP: передние зубья чомпера — блит pop_fore_b и ветка в draw_tile
Две ошибки в одном месте. 1) Кадры 106..110 и передняя кровь 119..123 упакованы в pop_fore.atl (FORE_ENV_IDS в pop_pack_bg.py), а блитились через pop_env_b — id уходил в env-страницу 3 по индексу 10, где записи нет, и передний слой не рисовался вовсе: Кид, стоящий ЗА челюстями, был виден целиком. 2) В draw_tile была только backtable-часть; у оригинала фронт чомпера рисует отдельная ветка draw_tile_fore (через таблицу он не идёт — у записи 0x12 fore_id нулевой), поэтому передние зубья появлялись лишь там, где по тайлу прошёлся fore-проход персонажа.
This commit is contained in:
@@ -335,9 +335,12 @@ static void fore_only_tile(int row, int col)
|
||||
if (code == 0x12) { /* чомпер: передний слой челюстей */
|
||||
uint8_t cm = pop_tile_mod(row, col);
|
||||
uint8_t pose = pop_chomp_pose(cm);
|
||||
pop_env_b(POP_CHOMP_FRAM_FOR[pose], x, dmy);
|
||||
/* Передние куски чомпера и его кровь лежат в pop_fore.atl
|
||||
* (FORE_ENV_IDS в pop_pack_bg.py), а НЕ в env-страницах: блит
|
||||
* обязан быть pop_fore_b, иначе id уходит в чужую страницу. */
|
||||
pop_fore_b(POP_CHOMP_FRAM_FOR[pose], x, dmy);
|
||||
if (cm & 0x80) /* кровь поверх переднего слоя */
|
||||
pop_env_b((uint8_t)(pose + 119), x + 8, dmy - 6);
|
||||
pop_fore_b((uint8_t)(pose + 119), x + 8, dmy - 6);
|
||||
}
|
||||
if (code == 10) { /* зелье: склянка (пузырёк — динамика) */
|
||||
pop_potion_flask(row, col, pop_tile_mod(row, col));
|
||||
|
||||
Reference in New Issue
Block a user