applications/PoP/roomtest: fore-слой поверх Kid (передние тайлы)
Порт SDLPoP seg003 redraw_at_char + seg008 set_char_collision: после kid_draw передний слой (fore_id = foretable-кусок) тайлов ФУТПРИНТА спрайта Kid перерисовывается ПОВЕРХ него — то, что по изометрии перед персонажем (передние грани колонн/ворот/большой колонны/щебня). Стены и факелы имеют fore_id=0 → остаются сзади (в статическом фоне). - pop_bg: pop_fore_over_kid(obj_x,obj_y,w,h,dir) — считает футпринт (char_x_left/right, col_from_x, y_to_row_mod4) рядов top..bottom × колонок left..right (≤2×2=4 тайла) и рисует fore_id каждого в GFX_BANK_SPRITE (видео-ОЗУ; kid_heal восстановит из теневого фона, fore в нём запечён pop_room_draw). - pop_kid: kid_fp_obj_x/y/width/height — метрики последнего кадра (obj_x ЛОГИЧЕСКАЯ, до ×8/7) для футпринта. - roomtest: вызов pop_fore_over_kid после kid_draw. Проверено в MAME: Kid, идя влево мимо колонны под навесом (row1 col3), корректно уходит ЗА её переднюю грань (скрывается) и выходит с другой стороны; задние колонны/факелы остаются сзади. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -29,4 +29,10 @@ void pop_room_draw(uint8_t room_num,
|
||||
const uint8_t *fg, const uint8_t *bg,
|
||||
const uint8_t *lcol_fg, const uint8_t *lcol_bg);
|
||||
|
||||
/* Перерисовать передний слой (fore) тайлов футпринта Kid ПОВЕРХ него —
|
||||
* звать ПОСЛЕ kid_draw. obj_x — ЛОГИЧЕСКАЯ X кадра (до ×8/7), obj_y — низ
|
||||
* спрайта, w/h — размер кадра, dir — направление Kid (<0 влево). Метрики
|
||||
* берутся из pop_kid (kid_fp_*). См. redraw_at_char/set_char_collision. */
|
||||
void pop_fore_over_kid(int obj_x, int obj_y, uint16_t w, uint16_t h, int8_t dir);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user