From 969f3f1b9ae7f68dc20c307f5b2825d218211ddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=9F=D0=B5=D1=82=D1=80=D0=BE=D0=B2?= Date: Tue, 4 Aug 2026 13:19:24 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D0=B0=D0=B4=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=80=D0=B8=20=D0=BE=D1=82=D1=85=D0=BE=D0=B4?= =?UTF-8?q?=D0=B5=20=D1=81=20=D0=BC=D0=B5=D1=87=D0=BE=D0=BC=20=E2=80=94=20?= =?UTF-8?q?=D0=9D=D0=95=20=D0=91=D0=90=D0=93=20(=D1=81=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=81=20SDLPoP)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Пользователь проверил в SDLPoP v1.24: оригинал падает с той же позиции, по той же траектории и с тем же видом кадра падения (голова/руки поверх кромки пола). Кадры совпадают один в один. Механика записана с числами: у стоек с мечом weight_x = 13-14 против 3 у обычной стойки, поэтому при взгляде влево точка веса уезжает на 13 px вправо от Char.x, и кромку персонаж переступает раньше, чем выглядит. Замер: x=151 -> dx_weight=164 -> колонка 7 (дыра) вместо 6 (пол). Co-Authored-By: Claude Opus 5 --- applications/PoP/roomtest/bug_closed.md | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/applications/PoP/roomtest/bug_closed.md b/applications/PoP/roomtest/bug_closed.md index 836ce51..2960ea3 100644 --- a/applications/PoP/roomtest/bug_closed.md +++ b/applications/PoP/roomtest/bug_closed.md @@ -523,6 +523,36 @@ MAME по кромкам. ## НЕ БАГИ (кривая картинка, но совпадает с оригиналом — НЕ чинить) +- **Отход с ВЫНУТЫМ МЕЧОМ роняет Кида в яму «раньше, чем кажется»** (комната 4 + уровня 2, кромка ряда 1 у дыры от упавшей loose-плиты). Сверено с SDLPoP + v1.24 пользователем (2026-08-04): оригинал падает **с той же позиции, по той + же траектории и с тем же видом кадра падения** (голова/руки поверх кромки + пола). Наш кадр и кадр SDLPoP совпадают один в один. + + Механика, чтобы не разбирать заново. У стоек с мечом ОГРОМНАЯ точка веса: + + ``` + кадр 158/170/171 (stand_with_sword): dx=0 weight_x=13 + кадр 157 (walk_with_sword): dx=0 weight_x=14 + кадр 15 (обычная стойка): dx=0 weight_x=3 + ``` + + `dx_weight()` = `char_dx_forward(dx − weight_x)`, а при взгляде ВЛЕВО знак + меняется — точка веса уезжает на 13 px ВПРАВО от `Char.x`. Замер нашего + кадра падения: `x=151`, взгляд влево → `dx_weight = 164` → `m7(164)` = колонка + **7**, а (1,7) — дыра. `check_on_floor` честно видит «под ногами не пол». + С обычной стойкой (weight_x=3) вышло бы 154 → колонка 6 → пол. + + То есть с мечом персонаж «стоит» на 10 px правее, чем выглядит, и кромку + переступает раньше. Данные кадров у нас совпадают с `frame_table_kid` + (seg006:127) байт в байт, `swordfight`/`back_with_sword` портированы дословно + (включая `control_backward = CONTROL_IGNORE` — один нажим = один шаг). + Чинить нечего. + + ⚠ **Не путать** с тем, что БЫЛО нашим багом рядом: расширение футпринта + перерисовки под клинок (`redraw_at_char`, seg003:0430) — его не было, и меч + оставлял след/лез поверх столба. Исправлено 2026-08-04. + - **Голова стоящего Кида поверх падающей на него loose-плиты.** Комната 12: зацеп не удался, Кид остался стоять, сбитая плита падает прямо на него — голова рисуется ПОВЕРХ плиты. Сверено покадрово с SDLPoP v1.24 (2026-07-29):