SprPoP: ALLOCS по умолчанию 10000; обёртка dist_to_edge — за своим хелпером

Правки пользователя, разобранные по диффу и закоммиченные как есть.

Makefile: умолчание --max-allocs поднято с 6000 до 10000 — плотнее
упаковка регистров.  Напоминание из шапки остаётся в силе: занятость
банков сравнима только при ОДНОМ значении ALLOCS, иначе сравниваются не
правки, а уровни оптимизации.

pop_map.c: банковая обёртка pop_dist_to_edge_weight() переехала НИЖЕ
статического distance_to_edge_weight(), который она зовёт, — раньше стояла
до его определения.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DSYUpuaQpKr48kBav2iiV4
This commit is contained in:
2026-09-02 14:59:56 +03:00
parent 6a97124e0d
commit fee3bdb354
2 changed files with 8 additions and 6 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ MEMORY ?= huge
# #
# ВАЖНО: сравнивать занятость банков можно только при ОДНОМ ALLOCS — иначе # ВАЖНО: сравнивать занятость банков можно только при ОДНОМ ALLOCS — иначе
# сравниваются не правки, а уровни оптимизации. # сравниваются не правки, а уровни оптимизации.
ALLOCS ?= 6000 ALLOCS ?= 10000
# Build info не хранится в C: ID и дата извлекаются из текущего commit. # Build info не хранится в C: ID и дата извлекаются из текущего commit.
BUILD_ID ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo dev) 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) BUILD_DATE ?= $(shell git log -1 --format=%cs 2>/dev/null || echo unknown)
+7 -5
View File
@@ -555,11 +555,6 @@ void pop_determine_col(void) __banked { determine_col(); }
* Обе давно работают от Char, а не от Kid; не хватало только объявлений * Обе давно работают от Char, а не от Kid; не хватало только объявлений
* (docs/sdlpop_audit.md, находка 12). */ * (docs/sdlpop_audit.md, находка 12). */
uint8_t pop_tile_behind_char(void) __banked { return get_tile_behind_char(); } 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). */ /* расстояние до края тайла (для in_wall). */
static int distance_to_edge(int xpos) 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 */ if (Char.direction == 0) d = TILE_RIGHTX - d; /* dir_0_right */
return d; return d;
} }
static int distance_to_edge_weight(void) { return distance_to_edge(dx_weight()); } 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) --------------------------- * /* ---- ТОЧНАЯ коллизия со стеной (seg004) --------------------------- *
* Передний край персонажа = char_x_right (взгляд вправо) / char_x_left * Передний край персонажа = char_x_right (взгляд вправо) / char_x_left
* (влево) из set_char_collision (seg006:0723): obj_x/2 + 58, где obj_x = * (влево) из set_char_collision (seg006:0723): obj_x/2 + 58, где obj_x =