SprPoP: обобщить HDD-сборку и очистить метаданные
Добавить общий каталог назначения для HDD и удалить локальную копию упаковщика.\n\nУбрать устаревшие generated-имена ресурсов, выводить число страниц Kid из kid.arc и ограничить звуковую таблицу горячим модулем.\n\nЗафиксировать планы runtime-индексов музыки и PCM-эффектов.
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
/*
|
||||
* _pop_sfx.h — внутренний контракт между половинами звука (НЕ публичный,
|
||||
* публичный — pop_sfx.h). Горячая половина живёт в резиденте
|
||||
* (pop_sfx.c), холодная в банке (pop_sfx_cold.c); делят они таблицу
|
||||
* звуков, массив физических страниц и насос.
|
||||
* (pop_sfx.c), холодная в банке (pop_sfx_cold.c); делят они массив
|
||||
* физических страниц и насос.
|
||||
*/
|
||||
#ifndef _POP_SFX_INTERNAL_H
|
||||
#define _POP_SFX_INTERNAL_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "pop_sound_tbl.h" /* pop_snd_tbl, POP_SND_* — генерит упаковщик */
|
||||
#include "pop_sound_tbl.h" /* POP_SND_* и, по запросу, таблица эффектов */
|
||||
|
||||
/* Физические страницы набора, по индексу из pop_snd_tbl[].page. */
|
||||
extern uint8_t pop_snd_page[POP_SND_PAGES];
|
||||
|
||||
@@ -23,14 +23,9 @@
|
||||
/* Серии в архиве обязаны лежать подряд — так их кладёт список в Makefile,
|
||||
* и только поэтому индекс считается сложением. Если порядок собьётся,
|
||||
* сборка встанет здесь, а не рассыплется картинкой на экране. */
|
||||
#if (ARC_KID_KID27 - ARC_KID_KID0) != 27
|
||||
#error "kid0..kid27 в архиве не подряд"
|
||||
#if (ARC_KID_SWORD - ARC_KID_KID0_V) != KID_PAGES
|
||||
#error "обычная и зеркальная серии Kid должны иметь одинаковую длину"
|
||||
#endif
|
||||
#if (ARC_KID_KID27_V - ARC_KID_KID0_V) != 27
|
||||
#error "kid0_v..kid27_v в архиве не подряд"
|
||||
#endif
|
||||
|
||||
#define KID_MAXPAGES 28
|
||||
|
||||
/* Таблица архива живёт на стеке вызывающего (4 байта на запись, здесь 232)
|
||||
* — держать её постоянно незачем, а W2 у игры и без того тесный. */
|
||||
@@ -40,7 +35,7 @@ int pop_kid_load(uint8_t npages) __banked
|
||||
pop_arc_t arc;
|
||||
uint8_t i;
|
||||
|
||||
if (npages > KID_MAXPAGES) npages = KID_MAXPAGES;
|
||||
if (npages > KID_PAGES) npages = KID_PAGES;
|
||||
if (pop_arc_open_id(&arc, POP_ARC_KID, tbl, ARC_KID_COUNT) < 0) return -1;
|
||||
for (i = 0; i < npages; i++)
|
||||
if (pop_arc_atlas(&arc, tbl, (uint8_t)(ARC_KID_KID0 + i),
|
||||
|
||||
@@ -52,8 +52,7 @@ uint8_t pop_endmus_left;
|
||||
* НЕ static: набор спрайтов слота POP_CH_KID общей отрисовки персонажей
|
||||
* (pop_cdraw.c, банк 4). Отдан как есть, а не через аксессор: читается раз
|
||||
* в кадр из другого банка, и вызов стоил бы дороже самого чтения. */
|
||||
#define KID_MAXPAGES 28
|
||||
atlas_t kidp[KID_MAXPAGES];
|
||||
atlas_t kidp[KID_PAGES];
|
||||
uint8_t kid_npages;
|
||||
|
||||
/* Таблица «seq_id -> адрес в seqtbl» (original_seqtbl_offsets). Определена
|
||||
|
||||
@@ -13,8 +13,13 @@
|
||||
#include <stdint.h>
|
||||
#include "pop_char.h"
|
||||
#include "kid_data.h" /* kframe — тип кадра для pop_sword_draw */
|
||||
#include "kid_arc.h" /* границы серий атласов в kid.arc */
|
||||
#include <sprite.h> /* atlas_t — набор спрайтов Кида (см. kidp ниже) */
|
||||
|
||||
/* Число страниц Кида берём из метаданных архива: зеркальная серия начинается
|
||||
* сразу после обычной. Не дублировать литералом в загрузчике/хранилище. */
|
||||
#define KID_PAGES (ARC_KID_KID0_V - ARC_KID_KID0)
|
||||
|
||||
/* Состояние персонажа — общий тип для Кида, стража и Char (pop_char.h). */
|
||||
extern pop_char_t Kid;
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <irq.h> /* IRQ_DISABLE/IRQ_ENABLE вокруг курсора */
|
||||
#include "pop_sfx.h"
|
||||
#include "pop_music.h"
|
||||
#define POP_SND_TABLE /* таблица нужна только горячей половине */
|
||||
#include "_pop_sfx.h"
|
||||
|
||||
/* Физические страницы набора; заполняет холодная половина. */
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include <cbl.h>
|
||||
#include "pop_sfx.h"
|
||||
#include "pop_arc.h"
|
||||
#define POP_SND_FILES /* имена файлов нужны ТОЛЬКО здесь, см. pop_sound_tbl.h */
|
||||
#include "_pop_sfx.h"
|
||||
|
||||
static uint8_t snd_blk; /* блок EMM под весь набор */
|
||||
|
||||
@@ -1158,7 +1158,7 @@ int pop_boot(void) __banked
|
||||
pop_shadow_load(); /* запечённый набор Тени — один раз на запуск */
|
||||
pop_sfx_init(); /* звук: 8 страниц оцифровки (вывод пока молчит) */
|
||||
pop_settings_apply(1); /* CFG -> speed/cheats/CBL */
|
||||
if (pop_kid_load(28) != 0) { /* ВСЕ страницы: бег+стоп+разворот+присед+прыжок */
|
||||
if (pop_kid_load(KID_PAGES) != 0) { /* ВСЕ страницы: бег+стоп+разворот+присед+прыжок */
|
||||
puts("kid atlas load failed");
|
||||
return -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user