Арка у ворот: спецслучай «Lattice + door A» (seg008:622)
Уровень 5, комната 12, тайл (0,9): чёрная дыра вместо арки. У doortop нет своей базы (base_id 0), и рядом с lattice_down оригинал рисует пару одним спрайтом 6, опущенным на 3 px. Ветки у нас не было. Правка нужна В ДВУХ местах: pop_room.c (сама отрисовка) и toolchain/render_room.py — pop_pack_bg.py собирает атлас по обходу render_room, без этого спрайт 6 не попал бы в pop_env*.atl. Найдено сверкой с оригиналом: prince megahit 5 --screenshot-level даёт карту уровня, снимок MAME совмещается с клеткой комнаты, разница по яркости показала расхождение ровно в (0,9) — 1892 пикселя до фикса, 995 после (остаток = Кид, факел, статус-полоса). Что рисует оригинал в тайле, показала трасса POP_TRACE_BT в add_backtable: id=6 32x63 рядом с id=85 32x4. Методика записана в BUGS_CLOSED.md и memory. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -384,13 +384,23 @@ static void draw_tile(int row, int col)
|
||||
* рисует (draw_tile_aboveroom) — только нижние/правые грани. --- */
|
||||
if (row >= 0) {
|
||||
uint8_t base_id = t->base_id;
|
||||
if (code == 11) /* loose: левая грань (анимир.) */
|
||||
int base_yb = dmy;
|
||||
if (lcode == 26 && code == 12) {
|
||||
/* «Lattice + door A» (seg008:622): у doortop своей базы нет
|
||||
* (base_id 0), и когда слева от него стоит арка (lattice_down),
|
||||
* пара рисуется ОДНИМ спрайтом 6, опущенным на 3 px. Без этой
|
||||
* ветки на месте тайла оставалась чёрная дыра — уровень 5,
|
||||
* комната 12, тайл (0,9) (BUG-LATTICE-DOORTOP). */
|
||||
base_id = 6;
|
||||
base_yb += 3;
|
||||
}
|
||||
else if (code == 11) /* loose: левая грань (анимир.) */
|
||||
base_id = POP_LOOSE_FRAM_LEFT[pop_loose_frame(pop_loose_modif[row * 10 + col])];
|
||||
else if (code == 0x0F && lcode == 0 && !PALACE) /* opener, слева пусто */
|
||||
base_id = 148; /* левая половина без пола — только */
|
||||
/* подземелье (seg008:628) */
|
||||
if (base_id)
|
||||
pop_env_b(base_id, x, t->base_y + dmy);
|
||||
pop_env_b(base_id, x, t->base_y + base_yb);
|
||||
}
|
||||
|
||||
/* --- draw_tile_anim (seg008.c:0B2B) — левый кадр выдвинутых пик в
|
||||
|
||||
Reference in New Issue
Block a user