applications/PoP/roomtest: стены в fore-проходе поверх Kid

Проблема из динамики: за стенами 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 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 21:47:10 +03:00
parent 78f2aaec1a
commit 5935724897
+8 -4
View File
@@ -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); 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); uint8_t code = tile_code(row, col);
const piece *t = &tile_table[code]; const piece *t = &tile_table[code];
if (t->fore_id) { int x = COL_XH[col] * 8;
int x = COL_XH[col] * 8; int dmy = 63 * row + 62;
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); fore_b(t->fore_id, t->fore_x * 8 + x, t->fore_y + dmy);
} }
} }