Added VERA palette functions
This commit is contained in:
parent
a90d8f476d
commit
95306ab124
|
@ -29,6 +29,23 @@ typedef enum {
|
|||
ADDR_INCREMENT_640 = 15
|
||||
} VeraAddressIncrement;
|
||||
|
||||
typedef union vera_palette_entry_s {
|
||||
struct {
|
||||
uint8_t blue: 4;
|
||||
uint8_t green: 4;
|
||||
uint8_t red: 4;
|
||||
uint8_t padding: 4;
|
||||
};
|
||||
uint8_t byte_value[2];
|
||||
} VeraPaletteEntry;
|
||||
|
||||
typedef struct vera_palette_s {
|
||||
union {
|
||||
VeraPaletteEntry color[256];
|
||||
VeraPaletteEntry colour[256];
|
||||
};
|
||||
} VeraPalette;
|
||||
|
||||
extern void vera_init(void);
|
||||
|
||||
extern void vera_set_data0_address(uint32_t addr);
|
||||
|
@ -66,3 +83,11 @@ void vera_read(void *dest, uint32_t src, size_t length);
|
|||
void vera_write(uint32_t dest, void *src, size_t length);
|
||||
|
||||
void vera_memset(uint32_t addr, uint8_t value, size_t length);
|
||||
|
||||
VeraPaletteEntry vera_get_palette_entry(uint8_t index);
|
||||
|
||||
void vera_set_palette_entry(uint8_t index, VeraPaletteEntry value);
|
||||
|
||||
void vera_palette_read(VeraPalette *dest);
|
||||
|
||||
void vera_palette_write(VeraPalette *src);
|
||||
|
|
|
@ -77,3 +77,35 @@ vera_memset(uint32_t addr, uint8_t value, size_t length)
|
|||
vera_poke_data0(value);
|
||||
}
|
||||
}
|
||||
|
||||
VeraPaletteEntry
|
||||
vera_get_palette_entry(uint8_t index)
|
||||
{
|
||||
uint32_t address = 0x0001FA00 + (index * 2);
|
||||
vera_set_addr0_incr1(address);
|
||||
VeraPaletteEntry result;
|
||||
result.byte_value[0] = vera_peek_data0();
|
||||
result.byte_value[1] = vera_peek_data0();
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
vera_set_palette_entry(uint8_t index, VeraPaletteEntry value)
|
||||
{
|
||||
uint32_t address = 0x0001FA00 + (index * 2);
|
||||
vera_set_addr0_incr1(address);
|
||||
vera_poke_data0(value.byte_value[0]);
|
||||
vera_poke_data0(value.byte_value[1]);
|
||||
}
|
||||
|
||||
void
|
||||
vera_palette_read(VeraPalette *dest)
|
||||
{
|
||||
vera_read(dest, 0x0001FA00, sizeof(VeraPalette));
|
||||
}
|
||||
|
||||
void
|
||||
vera_palette_write(VeraPalette *src)
|
||||
{
|
||||
vera_write(0x0001FA00, src, sizeof(VeraPalette));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue