aboutsummaryrefslogtreecommitdiff
path: root/include/ubox_vga.h
blob: 7aee7825ffd69b00068f353f49870a990eee30ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef _UBOX_VGA_H
#define _UBOX_VGA_H

/* palette index to be used as transparent color */
#ifndef UBOX_TRANSPARENT
#define UBOX_TRANSPARENT 255
#endif

typedef struct {
    uint16_t x;
    uint16_t y;
    uint16_t w;
    uint16_t h;
} ubox_rect;

uint8_t ubox_open_framebuffer();
void ubox_close_framebuffer();

uint8_t ubox_set_mode(uint8_t mode);
void ubox_wait_vsync();
void ubox_wait_frames(uint16_t frames);

/* the palette is expected to be 8 bit per color, and will be converted to VGA's 6 bit per color */
void ubox_set_palette(const uint8_t *palette);

#define TARGET_SCREEN 0
#define TARGET_BUFFER 1

void ubox_blit_target(uint8_t t);

void ubox_blit(const uint8_t *sprite, const ubox_rect *dst);
/* used for text: skip transparent, ignore 0, replace any other color by c */
void ubox_blit_c(const uint8_t *sprite, const ubox_rect *dst, uint8_t c);
/* in src w is sprite width, h is sprite height */
void ubox_blitrc(const uint8_t *sprite, const ubox_rect *src, const ubox_rect *dst);
void ubox_blit_erase(uint8_t c);

/* copy from back buffer to screen */
void ubox_blit_copy_all();
void ubox_blit_copy(const ubox_rect *dst);
/* only for 16 width, w is ignored */
void ubox_blit_copy16(const ubox_rect *dst);

#endif /* _UBOX_VGA_H */