From fee3bdb354b9b20addda78bb70de1f30d5f76c4b Mon Sep 17 00:00:00 2001 From: Alexander Petrov Date: Wed, 2 Sep 2026 14:59:56 +0300 Subject: [PATCH] =?UTF-8?q?SprPoP:=20ALLOCS=20=D0=BF=D0=BE=20=D1=83=D0=BC?= =?UTF-8?q?=D0=BE=D0=BB=D1=87=D0=B0=D0=BD=D0=B8=D1=8E=2010000;=20=D0=BE?= =?UTF-8?q?=D0=B1=D1=91=D1=80=D1=82=D0=BA=D0=B0=20dist=5Fto=5Fedge=20?= =?UTF-8?q?=E2=80=94=20=D0=B7=D0=B0=20=D1=81=D0=B2=D0=BE=D0=B8=D0=BC=20?= =?UTF-8?q?=D1=85=D0=B5=D0=BB=D0=BF=D0=B5=D1=80=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Правки пользователя, разобранные по диффу и закоммиченные как есть. Makefile: умолчание --max-allocs поднято с 6000 до 10000 — плотнее упаковка регистров. Напоминание из шапки остаётся в силе: занятость банков сравнима только при ОДНОМ значении ALLOCS, иначе сравниваются не правки, а уровни оптимизации. pop_map.c: банковая обёртка pop_dist_to_edge_weight() переехала НИЖЕ статического distance_to_edge_weight(), который она зовёт, — раньше стояла до его определения. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01DSYUpuaQpKr48kBav2iiV4 --- applications/SprPoP/Makefile | 2 +- applications/SprPoP/src/pop_map.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/applications/SprPoP/Makefile b/applications/SprPoP/Makefile index 5726396..6b23b2f 100644 --- a/applications/SprPoP/Makefile +++ b/applications/SprPoP/Makefile @@ -47,7 +47,7 @@ MEMORY ?= huge # # ВАЖНО: сравнивать занятость банков можно только при ОДНОМ ALLOCS — иначе # сравниваются не правки, а уровни оптимизации. -ALLOCS ?= 6000 +ALLOCS ?= 10000 # Build info не хранится в C: ID и дата извлекаются из текущего commit. BUILD_ID ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo dev) BUILD_DATE ?= $(shell git log -1 --format=%cs 2>/dev/null || echo unknown) diff --git a/applications/SprPoP/src/pop_map.c b/applications/SprPoP/src/pop_map.c index f8412da..714eb24 100644 --- a/applications/SprPoP/src/pop_map.c +++ b/applications/SprPoP/src/pop_map.c @@ -555,11 +555,6 @@ void pop_determine_col(void) __banked { determine_col(); } * Обе давно работают от Char, а не от Kid; не хватало только объявлений * (docs/sdlpop_audit.md, находка 12). */ uint8_t pop_tile_behind_char(void) __banked { return get_tile_behind_char(); } -int8_t pop_dist_to_edge_weight(void) __banked -{ - int d = distance_to_edge_weight(); - return (int8_t)(d > 127 ? 127 : (d < -128 ? -128 : d)); -} /* расстояние до края тайла (для in_wall). */ static int distance_to_edge(int xpos) @@ -570,8 +565,15 @@ static int distance_to_edge(int xpos) if (Char.direction == 0) d = TILE_RIGHTX - d; /* dir_0_right */ return d; } + static int distance_to_edge_weight(void) { return distance_to_edge(dx_weight()); } +int8_t pop_dist_to_edge_weight(void) __banked +{ + int d = distance_to_edge_weight(); + return (int8_t)(d > 127 ? 127 : (d < -128 ? -128 : d)); +} + /* ---- ТОЧНАЯ коллизия со стеной (seg004) --------------------------- * * Передний край персонажа = char_x_right (взгляд вправо) / char_x_left * (влево) из set_char_collision (seg006:0723): obj_x/2 + 58, где obj_x =