2021-12-28 16:37:26 -05:00
|
|
|
/*
|
|
|
|
Copyright (c) 2021 Devine Lu Linvega
|
|
|
|
Copyright (c) 2021 Andrew Alderwick
|
|
|
|
|
|
|
|
Permission to use, copy, modify, and distribute this software for any
|
|
|
|
purpose with or without fee is hereby granted, provided that the above
|
|
|
|
copyright notice and this permission notice appear in all copies.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
WITH REGARD TO THIS SOFTWARE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define FIXED_SIZE 0
|
|
|
|
|
|
|
|
typedef struct Layer {
|
2022-01-10 23:35:34 -05:00
|
|
|
Uint8 *pixels, changed;
|
2021-12-28 16:37:26 -05:00
|
|
|
} Layer;
|
|
|
|
|
2021-12-29 12:11:03 -05:00
|
|
|
typedef struct UxnScreen {
|
2021-12-28 16:37:26 -05:00
|
|
|
Uint32 palette[4], *pixels;
|
|
|
|
Uint16 width, height;
|
|
|
|
Layer fg, bg;
|
2022-09-15 12:11:20 -04:00
|
|
|
Uint8 mono;
|
2021-12-29 12:11:03 -05:00
|
|
|
} UxnScreen;
|
2021-12-28 16:37:26 -05:00
|
|
|
|
2021-12-29 12:11:03 -05:00
|
|
|
extern UxnScreen uxn_screen;
|
2021-12-28 16:37:26 -05:00
|
|
|
|
2021-12-29 12:11:03 -05:00
|
|
|
void screen_palette(UxnScreen *p, Uint8 *addr);
|
|
|
|
void screen_resize(UxnScreen *p, Uint16 width, Uint16 height);
|
|
|
|
void screen_clear(UxnScreen *p, Layer *layer);
|
|
|
|
void screen_redraw(UxnScreen *p, Uint32 *pixels);
|
2022-09-15 12:11:20 -04:00
|
|
|
void screen_mono(UxnScreen *p, Uint32 *pixels);
|
2021-12-28 16:37:26 -05:00
|
|
|
|
2023-01-01 16:19:40 -05:00
|
|
|
Uint8 screen_dei(Uint8 *d, Uint8 port);
|
2023-01-01 16:34:20 -05:00
|
|
|
void screen_deo(Uint8 *ram, Uint8 *d, Uint8 port);
|
2022-01-19 20:24:13 -05:00
|
|
|
int clamp(int val, int min, int max);
|