applications/PoP/roomtest: K4 — зацеп/вис/подтягивание/спуск
Порт SDLPoP seg004/005/006 «hang state»: - pop_map: check_grab (зацеп за уступ в падении по Shift → seq_15 → вис), can_grab/can_grab_front_above + tile-запросы над/за персонажем; pop_jump_up_seq (check_jump_up: ↑ в стойке = чистый прыжок seq_28/14 ЛИБО прыжок-с-зацепом seq_8/24/16 за уступ выше → запрыгнуть на этаж); pop_hang_* (climb_up seq_10/73, hang_fall seq_23/11, hang-у-стены); pop_down_action (спуск seq_68 у края лицом от края / отступ / присед). - pop_ctrl: control_hanging/can_climb_up/hang_fall, control_jumpup, jump_up через pop_jump_up_seq, down_pressed через pop_down_action; pop_ctrl_shift_held() для check_grab. Ключевой фикс check_bumped (seg004 guard'ы): не бампить при action hang_climb/hang_straight, на кадрах подъёма/спуска 135..148 И на кадрах виса 87..99. Без последнего спуск (seq_68) на кадре frame_91 (action ещё midair, act(hang_climb) идёт следующим опкодом) ловил отскок у стены и рвал цепочку hang→hang_fall→seq_11, приземляя не туда. Проверено в MAME (HDD-тест, покадровая трасса через мост): прыжок-с- зацепом [row2 col4]→вис→подтягивание→[row1 col3]; спуск [row1 col3]→ [row2 col4] с корректной позицией у стены (x=122, совпадает с SDLPoP). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -41,8 +41,18 @@ uint8_t pop_edge_type(void);
|
||||
* control_running (чистый стоп у стены). */
|
||||
int pop_wall_ahead(void);
|
||||
|
||||
/* Тайл над персонажем сплошной (стена/пол)? — выбор seq вертикального
|
||||
* прыжка вверх (K4.1). */
|
||||
uint8_t pop_above_solid(void);
|
||||
/* Прыжок вверх в стойке (↑): seq чистого прыжка (seq_28/seq_14) ЛИБО
|
||||
* прыжка-с-зацепом за уступ выше (seq_8/24/16) + выравнивание Kid.x.
|
||||
* check_jump_up/grab_up (K4.4). control_up гасит caller. */
|
||||
uint8_t pop_jump_up_seq(void);
|
||||
|
||||
/* ---- Вис/зацеп/спуск (K4.2/K4.3) — тайловые решения для pop_ctrl --- *
|
||||
* Управление (control_hanging/can_climb_up/hang_fall/down_pressed) в
|
||||
* pop_ctrl; здесь — предикаты + выбор seq (+ выравнивание Kid.x). */
|
||||
uint8_t pop_hang_grab_ready(void); /* grab_timer истёк — можно climb-up */
|
||||
uint8_t pop_hang_climb_up_seq(void); /* seq_10 / seq_73 (подтягивание) */
|
||||
int8_t pop_hang_wall(void); /* Shift в висе: 1=у стены,-1=fall,0=держ.*/
|
||||
uint8_t pop_hang_fall_seq(void); /* seq_23 / seq_11 (сорваться), +Kid.x */
|
||||
uint8_t pop_down_action(void); /* 1=обработано(спуск/отступ), 0=присед */
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user