Реестр: сводка и статусы обновлены; замер тяжёлой позиции
Пользователь передвинул Кида на один осторожный шаг вправо (x = 106 вместо 99, колонка та же) — его спрайт начал пересекаться с тайлом (0,3), где одновременно чомпер и пламя факела. фаза лёгкая тяжёлая синяя 259 500 257 520 зелёная 181 068 180 870 циан 187 761 319 842 (+132 081) работа 628 542 758 358 Период кадра: 4 растра в 335 кадрах, 5 растров в 123 (27 %). Это уже не «стабильно медленно», а рывки. Куда ушли 132 тысячи: pop_char_draw(KID) 204 -> 54 738 и fore-проход Кида 4 356 -> 93 486. То есть Кид из «пропущен» превращается в полноценного персонажа за ~144 000 — столько же, сколько страж. Отсюда новая позиция P14: fore-проход персонажа, 62 778 у стража и ~89 000 у Кида, вместе около 152 000 = 20 % работы кадра. Это самая дорогая единичная статья. У Кида он дороже потому, что в его футпринте лежит чомпер со своим передним слоем. P3 переведён в «частично сбылось»: выигрыш держится только пока персонаж не подошёл к анимированному тайлу, а в игре он подходит постоянно. Итог семи закрытых позиций: 801 768 -> 628 542, то есть -22 %. До цели 430 000 остаётся снять 199 000 в лёгкой позиции и 328 000 в тяжёлой, а всё оставшееся в реестре даёт порядка 100 000. Арифметика не сходится — в реестр записаны три возможных решения (P13, осознанное расхождение с оригиналом, принять 4 растра), выбор за пользователем. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -179,6 +179,44 @@ if ((curr_modifier & 0x7F) < 6) {
|
||||
скорее всего перераскладка кода банка 3 компилятором; проверять отдельно
|
||||
не стали, знак верный.
|
||||
|
||||
## 7. ТЯЖЁЛАЯ позиция: Кид на шаг правее [замер 2026-08-19]
|
||||
|
||||
Поставлена пользователем: один осторожный шаг вправо (x = 106 вместо 99,
|
||||
колонка та же). Спрайт Кида начинает пересекаться с тайлом (0,3), где
|
||||
одновременно чомпер и пламя факела — и `skip_mask` перестаёт его
|
||||
пропускать.
|
||||
|
||||
| фаза | лёгкая | **тяжёлая** | разница |
|
||||
|---|---:|---:|---:|
|
||||
| синяя | 259 500 | 257 520 | −1 980 |
|
||||
| зелёная (медиана) | 181 068 | 180 870 | −198 |
|
||||
| **циан** | 187 761 | **319 842** | **+132 081** |
|
||||
| **работа (медиана)** | 628 542 | **758 358** | **+129 816** |
|
||||
| работа (максимум) | 744 384 | **876 612** | |
|
||||
|
||||
**Период кадра: 4 растра в 335 кадрах, 5 растров в 123 (27 %).** Это уже
|
||||
не «стабильно медленно», а рывки: каждый четвёртый кадр длиннее соседних.
|
||||
|
||||
Разбор циана показывает, куда ушли 132 тысячи:
|
||||
|
||||
| участок | лёгкая | тяжёлая |
|
||||
|---|---:|---:|
|
||||
| `check_mirror` | 3 198 | 3 198 |
|
||||
| `mob_draw` + `guard_over_kid` + `skip_mask` | 34 374 | 18 672 |
|
||||
| **`pop_char_draw(KID)`** | **204** | **54 738** |
|
||||
| соперник: `char_draw` + `char_fore` | 145 896 | 149 748 |
|
||||
| **`fore_needed` + `char_fore(KID)` + борта** | **4 356** | **93 486** |
|
||||
|
||||
То есть Кид из «пропущен за 204 такта» превращается в полноценного
|
||||
персонажа за ~144 000 — ровно столько же, сколько стоит страж.
|
||||
|
||||
**Главный вывод замера: самая дорогая единичная статья кадра — это
|
||||
fore-проход персонажа.** 62 778 у стража и ~89 000 у Кида, вместе около
|
||||
**152 000, то есть 20 % работы кадра**. У Кида он дороже потому, что в его
|
||||
футпринте лежит чомпер, а у чомпера есть собственный передний слой
|
||||
(`POP_CHOMP_FRAM_FOR`), который перерисовывается поверх персонажа каждый
|
||||
кадр.
|
||||
|
||||
**Полная очередь оптимизаций с оценками — [`perf_registry.md`](perf_registry.md).**
|
||||
Там же разложена цена одного блита фона по этапам (замер 2026-08-19, 1603
|
||||
блита) и модель зелёной фазы этой сцены.
|
||||
|
||||
Reference in New Issue
Block a user