diff --git a/applications/PoP/roomtest/pop_bg.c b/applications/PoP/roomtest/pop_bg.c index f45b223..27458b6 100644 --- a/applications/PoP/roomtest/pop_bg.c +++ b/applications/PoP/roomtest/pop_bg.c @@ -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)); diff --git a/applications/PoP/roomtest/pop_room.c b/applications/PoP/roomtest/pop_room.c index 8f95248..59de686 100644 --- a/applications/PoP/roomtest/pop_room.c +++ b/applications/PoP/roomtest/pop_room.c @@ -300,6 +300,19 @@ static void draw_tile(int row, int col) pop_wall_b(POP_WALL_FRAM_MAIN[wmod], x, dmy); /* основная грань */ pop_wall_pattern_b(row, col, 1); } + if (code == 0x12) { /* чомпер: передние зубья + кровь. + * Отдельной веткой, как в оригинале: + * у записи 0x12 fore_id == 0, и через + * таблицу этот слой не идёт. */ + uint8_t cm = pop_tile_mod(row, col); + uint8_t pose = pop_chomp_pose(cm); + /* Передние куски чомпера и его кровь лежат в 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_fore_b((uint8_t)(pose + 119), x + 8, dmy - 6); + } if (code == 10) { /* зелье: chtab_1, не env fore_id. * Пузырёк — динамика (pop_potion_draw). */ pop_potion_flask(row, col, pop_tile_mod(row, col)); diff --git a/applications/PoP/roomtest/pop_tile.h b/applications/PoP/roomtest/pop_tile.h index 7ba4b79..64fb517 100644 --- a/applications/PoP/roomtest/pop_tile.h +++ b/applications/PoP/roomtest/pop_tile.h @@ -79,7 +79,7 @@ extern const uint8_t POP_WALL_FRAM_MAIN[4]; /* основная грань extern const uint8_t POP_SPIKES_FRAM_LEFT[10]; /* кадр пик в своей ячейке */ extern const uint8_t POP_LOOSE_FRAM_LEFT[12]; /* верх дрожащей плиты */ extern const uint8_t POP_LOOSE_FRAM_BOTTOM[12]; /* низ дрожащей плиты */ -extern const uint8_t POP_CHOMP_FRAM_FOR[5]; /* чомпер: передний слой */ +extern const uint8_t POP_CHOMP_FRAM_FOR[5]; /* чомпер: перед (pop_fore!) */ /* Режим ЗАПЕЧКИ статического фона (запись идёт и в ОЗУ-копию акселератора, * из которой потом восстанавливает heal). В этом режиме дрожащие кадры