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:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user