From 5935724897d1d9752dadda72e755fd50754f6a99 Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Fri, 17 Jul 2026 21:47:10 +0300 Subject: [PATCH] =?UTF-8?q?applications/PoP/roomtest:=20=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=B2=20fore-=D0=BF=D1=80=D0=BE=D1=85=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=20=D0=BF=D0=BE=D0=B2=D0=B5=D1=80=D1=85=20Kid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Проблема из динамики: за стенами Kid не прятался (стена [2,9] должна перекрывать). В PoP основная грань стены (wall_fram_main) добавляется в FORETABLE (seg008:712) — перекрывает персонажа. У нас fore-проход рисовал только fore_id, а у стены (0x14) fore_id=0. fore_tile: для стены (code==20) рисуем WALL_FRAM_MAIN + wall_pattern(,,1) поверх Kid (как draw_tile_fore), а не только fore_id. Проверено в MAME: Kid прячется за правой стеной col9. Co-Authored-By: Claude Opus 4.8 --- applications/PoP/roomtest/pop_bg.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/applications/PoP/roomtest/pop_bg.c b/applications/PoP/roomtest/pop_bg.c index 8b8d737..e98743d 100644 --- a/applications/PoP/roomtest/pop_bg.c +++ b/applications/PoP/roomtest/pop_bg.c @@ -414,13 +414,17 @@ static int8_t y_to_row(int y) /* y_to_row_mod4 (TILE_SIZEY=63) */ return (int8_t)((y + 60) / 63 % 4 - 1); } -static void fore_tile(int row, int col) /* fore одного тайла, если fore_id≠0 */ +static void fore_tile(int row, int col) /* передний слой одного тайла */ { uint8_t code = tile_code(row, col); const piece *t = &tile_table[code]; - if (t->fore_id) { - int x = COL_XH[col] * 8; - int dmy = 63 * row + 62; + int x = COL_XH[col] * 8; + int dmy = 63 * row + 62; + if (code == 20) { /* стена: основная грань (foretable, */ + uint8_t wmod = wall_modifier(row, col); /* draw_tile_fore seg008:690) — */ + wall_b(WALL_FRAM_MAIN[wmod], x, dmy); /* перекрывает Kid как передний */ + wall_pattern(row, col, 1); + } else if (t->fore_id) { fore_b(t->fore_id, t->fore_x * 8 + x, t->fore_y + dmy); } }