Added VERA palette functions
This commit is contained in:
parent
a90d8f476d
commit
95306ab124
|
@ -29,6 +29,23 @@ typedef enum {
|
||||||
ADDR_INCREMENT_640 = 15
|
ADDR_INCREMENT_640 = 15
|
||||||
} VeraAddressIncrement;
|
} 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_init(void);
|
||||||
|
|
||||||
extern void vera_set_data0_address(uint32_t addr);
|
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_write(uint32_t dest, void *src, size_t length);
|
||||||
|
|
||||||
void vera_memset(uint32_t addr, uint8_t value, 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);
|
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