libbgi: bgi256 fill-примитивы на register-ABI + typedef color_t
- удалён глобальный скретч акселератора (_gfx_acc256.c); fill-сегменты (_gfx_hfill256/_gfx_vfill256) принимают аргументы в регистрах HL/C/B/E, вызываются только из asm raw-примитивов - новый _gfx_rectfill256: заливка прямоугольника через Horizontal_Size - raw-примитивы (plot/read/hspan/vspan/clear) переписаны под новый ABI - graphics.h: typedef color_t (uint8_t) для всех public color-функций - sprinter-cc: флаг --safe (линковка *_safe.lib при наличии) - CLAUDE.md/mame_interactive: авто-прогон тестов в MAME - gfx_demo: демонстрация rectfill Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+24
-18
@@ -9,25 +9,31 @@ static uint8_t _gp_y;
|
||||
static uint16_t _gp_addr;
|
||||
static uint8_t _gp_color;
|
||||
|
||||
unsigned getpixel(int x, int y)
|
||||
color_t getpixel(int x, int y)
|
||||
{
|
||||
#ifndef GFX_NOCHECK
|
||||
if ((unsigned)x >= GFX_WIDTH || (unsigned)y >= GFX_HEIGHT) return 0;
|
||||
_gp_y = (uint8_t)y;
|
||||
_gp_addr = (uint16_t)(_gfx_addr_base + (unsigned)x);
|
||||
__asm
|
||||
di
|
||||
in a, (#0xE2)
|
||||
ld (__gfx_saved_w3), a
|
||||
ld a, (__gfx_bank)
|
||||
out (#0xE2), a
|
||||
ld a, (_gp_y)
|
||||
out (#0x89), a
|
||||
ld hl, (_gp_addr)
|
||||
ld a, (hl)
|
||||
ld (_gp_color), a
|
||||
ld a, (__gfx_saved_w3)
|
||||
out (#0xE2), a
|
||||
ei
|
||||
__endasm;
|
||||
#endif
|
||||
_bgi_begin();
|
||||
register uint8_t _gp_color = _bgi_read_raw(x, y);
|
||||
_bgi_end();
|
||||
return _gp_color;
|
||||
// _gp_y = (uint8_t)y;
|
||||
// _gp_addr = (uint16_t)(_gfx_addr_base + (unsigned)x);
|
||||
// __asm
|
||||
// di
|
||||
// in a, (#0xE2)
|
||||
// ld (__gfx_saved_w3), a
|
||||
// ld a, (__gfx_bank)
|
||||
// out (#0xE2), a
|
||||
// ld a, (_gp_y)
|
||||
// out (#0x89), a
|
||||
// ld hl, (_gp_addr)
|
||||
// ld a, (hl)
|
||||
// ld (_gp_color), a
|
||||
// ld a, (__gfx_saved_w3)
|
||||
// out (#0xE2), a
|
||||
// ei
|
||||
// __endasm;
|
||||
// return _gp_color;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user