PoP roomtest: пометить недостижимые комнаты уровня 1 (13, 18, 24)

Обход графа связей res2001.bin (links @1952) от стартовой комнаты 1: 13, 18
и 24 недостижимы — ссылки наружу у них есть, на них не ссылается никто
(24: L->9, но у 9 R=0).  Несимметричные ссылки ровно у этих трёх, у прочих
21 симметрия полная — признак выкинутых из компоновки комнат.  В таблицу
обхода добавлена пометка, чтобы не гоняться за призраками: рендер кромки
читает колонку соседа ПО ССЫЛКЕ, а сосед этих комнат соседом себя не
считает, так что странный шов там — свойство данных.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-29 12:06:47 +03:00
parent 50aa652dbe
commit 08ebf09d4d
+22 -3
View File
@@ -406,6 +406,25 @@ Kid ставится на первый пол, `pop_trob_reset()` возвращ
исходное. Номер комнаты — полосками в верхнем борте: слева десятки, справа исходное. Номер комнаты — полосками в верхнем борте: слева десятки, справа
единицы (`||` `||||` = 24). Убирается закомментированием одной строки. единицы (`||` `||||` = 24). Убирается закомментированием одной строки.
**Связность уровня 1 (проверено по `res2001.bin`, links @1952).** Обход графа
от стартовой комнаты 1 показывает: комнаты **13, 18, 24 НЕДОСТИЖИМЫ** в
обычной игре. У всех трёх ссылки наружу есть, а на них не ссылается никто
(24: `L→9`, но у 9 `R=0`; 13 и 18 связаны только друг с другом). Признак
«комнату выкинули из компоновки, связи не почистили» — несимметричные ссылки
ровно у этих трёх, у остальных 21 симметрия полная:
```
13 L→22, у 22 R=16 | 18 L→15, у 15 R=12 | 24 L→9, у 9 R=0
13 R→16, у 16 L=22 | 18 R→12, у 12 L=15
| 18 D→19, у 19 U=12
```
Следствие для обхода: в 13/18/24 возможен «мусор в шве» — наш рендер кромки
читает крайнюю колонку соседа ПО ССЫЛКЕ, а сосед этих комнат соседом себя не
считает. Это свойство данных, а не наш баг. Приоритет багов в этих трёх
комнатах — низкий (в игре их не видно).
| комната | статус | что не так | | комната | статус | что не так |
|---------|--------|------------| |---------|--------|------------|
| 1 | | | | 1 | | |
@@ -420,15 +439,15 @@ Kid ставится на первый пол, `pop_trob_reset()` возвращ
| 10 | | | | 10 | | |
| 11 | | | | 11 | | |
| 12 | | | | 12 | | |
| 13 | | | | 13 | недостижима в игре | |
| 14 | | | | 14 | | |
| 15 | | | | 15 | | |
| 16 | | | | 16 | | |
| 17 | | | | 17 | | |
| 18 | | | | 18 | недостижима в игре | |
| 19 | | | | 19 | | |
| 20 | | | | 20 | | |
| 21 | | | | 21 | | |
| 22 | | | | 22 | | |
| 23 | | | | 23 | | |
| 24 | | | | 24 | недостижима в игре | |