libbgi: gfx_pal_sync + палитра ↔ файл (gfx_pal_fsave/fload); все PASS
- gfx_pal_sync(): палитра страницы 1 := палитре 0 (все 256 записей, чанками по 64 через общий буфер _gfx_pal_buf в W2) — обязательный шаг дабл-буфера (грабли examples/space: без него флип на страницу 1 чёрный). examples/space переведён на хелпер. - gfx_pal_fsave(pal, path): 256 записей × 4 Б (B,G,R,0 — родной формат BIOS $A4) = 1024 Б. - gfx_pal_fload(pal, path): принимает и усечённый файл (64 Б = палитра 16 цветов) — грузит сколько есть, остальные слоты не трогает; возвращает число записей. tests/palfile (MAME dev, все PASS): fsave; fload восстанавливает испорченные слоты (n=256); усечённый файл на 2 записи чинит только их (n=2, слот 2 не тронут); sync чинит испорченный слот палитры 1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -126,4 +126,17 @@ void gfx_pal_get_color(uint8_t pal_num, uint8_t idx,
|
||||
uint8_t *r, uint8_t *g, uint8_t *b);
|
||||
void gfx_pal_reset(void);
|
||||
|
||||
/* Палитра страницы 1 := палитре страницы 0 (все 256 записей).
|
||||
* ОБЯЗАТЕЛЬНЫЙ шаг дабл-буфера: без него флип на страницу 1 показывает
|
||||
* сцену чёрной (у каждой страницы своя палитра). Звать после initgraph
|
||||
* и после правок палитры 0. */
|
||||
void gfx_pal_sync(void);
|
||||
|
||||
/* Палитра ↔ файл. Формат: записи по 4 байта (B, G, R, 0 — родной
|
||||
* BIOS $A4), полная палитра = 1024 байта. fload принимает и усечённый
|
||||
* файл (напр. 64 Б = 16 цветов) — остальные слоты не трогает; возврат:
|
||||
* число загруженных записей или -1. fsave пишет все 256; 0 / -1. */
|
||||
int gfx_pal_fsave(uint8_t pal_num, const char *path);
|
||||
int gfx_pal_fload(uint8_t pal_num, const char *path);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user