libww libww
WWitch compatibility library for the Wonderful toolchain
Loading...
Searching...
No Matches
disp.h
Go to the documentation of this file.
1#include <sys/types.h>
2
3#ifndef __LIBWW_SYS_DISP_H__
4#define __LIBWW_SYS_DISP_H__
5
6/* Begin auto-generated section */
7
8/* display_control() flags */
9/* Enable screen 1 layer */
10#define DCM_SCR1 0x01
11/* Enable screen 2 layer */
12#define DCM_SCR2 0x02
13/* Enable sprite layer */
14#define DCM_SPR 0x04
15/* Enable sprite layer window */
16#define DCM_SPR_WIN 0x08
17/* Enable screen 2 layer window, display inside window */
18#define DCM_SCR2_WIN_INSIDE 0x20
19/* Enable screen 2 layer window, display outside window */
20#define DCM_SCR2_WIN_OUTSIDE 0x30
21/* Border color mask (mono mode) */
22#define DCM_BORDER_COLOR 0x0700
23
24/* Screen IDs */
25#define SCREEN1 0
26#define SCREEN2 1
27
28/* Tile attribute flags */
29/* Tile index mask */
30#define CFM_FONT 0x01FF
31/* Palette shift */
32#define CFSFT_PALETTE 9
33/* Tile palette mask */
34#define CFM_SCR_PALETTE 0x1E00
35/* Sprite palette mask */
36#define CFM_SPR_PALETTE 0x0E00
37/* Display sprite outside window area */
38#define CFM_SPRWIN_CLIP 0x1000
39/* Display sprite in front of screen 2 */
40#define CFM_SPR_UPPER 0x2000
41/* Flip horizontally */
42#define CFM_FLIP_H 0x4000
43/* Flip vertically */
44#define CFM_FLIP_V 0x8000
45
46/* LCD segment flags */
47/* Sleep */
48#define LCDSEG_SLEEP 0x01
49/* Vertical orientation */
50#define LCDSEG_VERTICAL 0x02
51/* Horizontal orientation */
52#define LCDSEG_HORIZONTAL 0x04
53/* Aux 1 */
54#define LCDSEG_AUX1 0x08
55/* Aux 2 */
56#define LCDSEG_AUX2 0x10
57/* Aux 3 */
58#define LCDSEG_AUX3 0x20
59
60/* LCD sleep modes */
61/* Sleep on (display disabled) */
62#define LCD_SLEEP_ON 0
63/* Sleep off (display enabled) */
64#define LCD_SLEEP_OFF 1
65
66#define lcd_on() lcd_set_sleep(LCD_SLEEP_OFF)
67#define lcd_off() lcd_set_sleep(LCD_SLEEP_ON)
68
69/* Useful constants */
70#define LCD_PIXEL_WIDTH 224
71#define LCD_PIXEL_HEIGHT 144
72#define SCREEN_PIXEL_WIDTH 256
73#define SCREEN_PIXEL_HEIGHT 256
74#define SCREEN_CHAR_WIDTH 32
75#define SCREEN_CHAR_HEIGHT 32
76
77static inline void display_control(uint16_t value) {
78 uint16_t result;
79 __asm volatile (
80 "int $0x12"
81 : "=a" (result)
82 : "b" (value), "Rah" ((uint8_t) 0x00)
83 : "cc", "memory"
84 );
85}
86
87static inline uint16_t display_status(void) {
88 uint16_t result;
89 __asm volatile (
90 "int $0x12"
91 : "=a" (result)
92 : "Rah" ((uint8_t) 0x01)
93 : "cc", "memory"
94 );
95 return result;
96}
97
98void font_set_monodata(uint16_t start, uint16_t count, const void __far* data);
99
100void font_set_colordata(uint16_t start, uint16_t count, const void __far* data);
101
102void font_get_data(uint16_t start, uint16_t count, void __far* data);
103
104static inline void font_set_color(uint16_t value) {
105 uint16_t result;
106 __asm volatile (
107 "int $0x12"
108 : "=a" (result)
109 : "b" (value), "Rah" ((uint8_t) 0x05)
110 : "cc", "memory"
111 );
112}
113
114static inline uint16_t font_get_color(void) {
115 uint16_t result;
116 __asm volatile (
117 "int $0x12"
118 : "=a" (result)
119 : "Rah" ((uint8_t) 0x06)
120 : "cc", "memory"
121 );
122 return result;
123}
124
125void screen_set_char(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, const void __far* tiles);
126
127void screen_get_char(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, void __far* tiles);
128
129static inline uint16_t screen_get_char1(uint8_t screen_id, uint8_t x, uint8_t y) {
130 uint16_t result;
131 __asm volatile (
132 "int $0x12"
133 : "=a" (result)
134 : "a" ((uint16_t) (((0x08) << 8) | (screen_id & 0xFF))), "b" (((y << 8) | x)), "c" ((uint16_t) 0)
135 : "cc", "memory"
136 );
137 return result;
138}
139
140static inline void screen_fill_char(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint16_t tile) {
141 uint16_t result;
142 __asm volatile (
143 "int $0x12"
144 : "=a" (result)
145 : "a" ((uint16_t) (((0x09) << 8) | (screen_id & 0xFF))), "d" (tile), "b" (((y << 8) | x)), "c" (((height << 8) | width))
146 : "cc", "memory"
147 );
148}
149
150static inline void screen_fill_attr(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint16_t tile, uint16_t mask) {
151 uint16_t result;
152 __asm volatile (
153 "int $0x12"
154 : "=a" (result)
155 : "a" ((uint16_t) (((0x0A) << 8) | (screen_id & 0xFF))), "d" (tile), "S" (mask), "b" (((y << 8) | x)), "c" (((height << 8) | width))
156 : "cc", "memory"
157 );
158}
159
160static inline void sprite_set_range(uint16_t first, uint16_t count) {
161 uint16_t result;
162 __asm volatile (
163 "int $0x12"
164 : "=a" (result)
165 : "b" (first), "c" (count), "Rah" ((uint8_t) 0x0B)
166 : "cc", "memory"
167 );
168}
169
170static inline void sprite_set_char(uint16_t id, uint16_t tile) {
171 uint16_t result;
172 __asm volatile (
173 "int $0x12"
174 : "=a" (result)
175 : "b" (id), "c" (tile), "Rah" ((uint8_t) 0x0C)
176 : "cc", "memory"
177 );
178}
179
180static inline uint16_t sprite_get_char(uint16_t id) {
181 uint16_t result;
182 __asm volatile (
183 "int $0x12"
184 : "=a" (result)
185 : "b" (id), "Rah" ((uint8_t) 0x0D)
186 : "cc", "memory"
187 );
188 return result;
189}
190
191static inline void sprite_set_location(uint16_t id, uint8_t x, uint8_t y) {
192 uint16_t result;
193 __asm volatile (
194 "int $0x12"
195 : "=a" (result)
196 : "b" (id), "d" (((y << 8) | x)), "Rah" ((uint8_t) 0x0E)
197 : "cc", "memory"
198 );
199}
200
201static inline uint16_t sprite_get_location(uint16_t id) {
202 uint16_t result;
203 __asm volatile (
204 "int $0x12"
205 : "=a" (result)
206 : "b" (id), "Rah" ((uint8_t) 0x0F)
207 : "cc", "memory"
208 );
209 return result;
210}
211
212static inline void sprite_set_char_location(uint16_t id, uint16_t tile, uint8_t x, uint8_t y) {
213 uint16_t result;
214 __asm volatile (
215 "int $0x12"
216 : "=a" (result)
217 : "b" (id), "c" (tile), "d" (((y << 8) | x)), "Rah" ((uint8_t) 0x10)
218 : "cc", "memory"
219 );
220}
221
222static inline uint32_t sprite_get_char_location(uint16_t id) {
223 uint32_t result;
224 __asm volatile (
225 "int $0x12"
226 : "=A" (result)
227 : "b" (id), "Rah" ((uint8_t) 0x11)
228 : "cc", "memory"
229 );
230 return result;
231}
232
233void sprite_set_data(uint16_t first, uint16_t count, const void __far* data);
234
235static inline void screen_set_scroll(uint8_t id, uint8_t x, uint8_t y) {
236 uint16_t result;
237 __asm volatile (
238 "int $0x12"
239 : "=a" (result)
240 : "a" ((uint16_t) (((0x13) << 8) | (id & 0xFF))), "b" (((y << 8) | x))
241 : "cc", "memory"
242 );
243}
244
245static inline uint16_t screen_get_scroll(uint8_t id) {
246 uint16_t result;
247 __asm volatile (
248 "int $0x12"
249 : "=a" (result)
250 : "a" ((uint16_t) (((0x14) << 8) | (id & 0xFF)))
251 : "cc", "memory"
252 );
253 return result;
254}
255
256static inline void screen2_set_window(uint8_t x, uint8_t y, uint8_t width, uint8_t height) {
257 uint16_t result;
258 __asm volatile (
259 "int $0x12"
260 : "=a" (result)
261 : "b" (((y << 8) | x)), "c" (((height << 8) | width)), "Rah" ((uint8_t) 0x15)
262 : "cc", "memory"
263 );
264}
265
266static inline uint32_t screen2_get_window(void) {
267 uint32_t result;
268 __asm volatile (
269 "int $0x12"
270 : "=A" (result)
271 : "Rah" ((uint8_t) 0x16)
272 : "cc", "memory"
273 );
274 return result;
275}
276
277static inline void sprite_set_window(uint8_t x, uint8_t y, uint8_t width, uint8_t height) {
278 uint16_t result;
279 __asm volatile (
280 "int $0x12"
281 : "=a" (result)
282 : "b" (((y << 8) | x)), "c" (((height << 8) | width)), "Rah" ((uint8_t) 0x17)
283 : "cc", "memory"
284 );
285}
286
287static inline uint32_t sprite_get_window(void) {
288 uint32_t result;
289 __asm volatile (
290 "int $0x12"
291 : "=A" (result)
292 : "Rah" ((uint8_t) 0x18)
293 : "cc", "memory"
294 );
295 return result;
296}
297
298static inline void palette_set_color(uint16_t index, uint16_t colors) {
299 uint16_t result;
300 __asm volatile (
301 "int $0x12"
302 : "=a" (result)
303 : "b" (index), "c" (colors), "Rah" ((uint8_t) 0x19)
304 : "cc", "memory"
305 );
306}
307
308static inline uint16_t palette_get_color(uint16_t index) {
309 uint16_t result;
310 __asm volatile (
311 "int $0x12"
312 : "=a" (result)
313 : "b" (index), "Rah" ((uint8_t) 0x1A)
314 : "cc", "memory"
315 );
316 return result;
317}
318
319static inline void lcd_set_color(uint16_t low, uint16_t high) {
320 uint16_t result;
321 __asm volatile (
322 "int $0x12"
323 : "=a" (result)
324 : "b" (low), "c" (high), "Rah" ((uint8_t) 0x1B)
325 : "cc", "memory"
326 );
327}
328
329static inline uint32_t lcd_get_color(void) {
330 uint32_t result;
331 __asm volatile (
332 "int $0x12"
333 : "=A" (result)
334 : "Rah" ((uint8_t) 0x1C)
335 : "cc", "memory"
336 );
337 return result;
338}
339
340static inline void lcd_set_segments(uint16_t flags) {
341 uint16_t result;
342 __asm volatile (
343 "int $0x12"
344 : "=a" (result)
345 : "b" (flags), "Rah" ((uint8_t) 0x1D)
346 : "cc", "memory"
347 );
348}
349
350static inline uint16_t lcd_get_segments(void) {
351 uint16_t result;
352 __asm volatile (
353 "int $0x12"
354 : "=a" (result)
355 : "Rah" ((uint8_t) 0x1E)
356 : "cc", "memory"
357 );
358 return result;
359}
360
361static inline void lcd_set_sleep(uint16_t flags) {
362 uint16_t result;
363 __asm volatile (
364 "int $0x12"
365 : "=a" (result)
366 : "b" (flags), "Rah" ((uint8_t) 0x1F)
367 : "cc", "memory"
368 );
369}
370
371static inline uint16_t lcd_get_sleep(void) {
372 uint16_t result;
373 __asm volatile (
374 "int $0x12"
375 : "=a" (result)
376 : "Rah" ((uint8_t) 0x20)
377 : "cc", "memory"
378 );
379 return result;
380}
381
385static inline void screen_set_vram(uint8_t id, uint8_t offset) {
386 uint16_t result;
387 __asm volatile (
388 "int $0x12"
389 : "=a" (result)
390 : "a" ((uint16_t) (((0x21) << 8) | (id & 0xFF))), "b" (offset)
391 : "cc", "memory"
392 );
393}
394
398static inline void sprite_set_vram(uint8_t offset) {
399 uint16_t result;
400 __asm volatile (
401 "int $0x12"
402 : "=a" (result)
403 : "b" (offset), "Rah" ((uint8_t) 0x22)
404 : "cc", "memory"
405 );
406}
407
408/* End auto-generated section */
409
410
411#endif /* __LIBWW_SYS_DISP_H__ */
static uint32_t screen2_get_window(void)
Definition disp.h:266
static void screen_set_scroll(uint8_t id, uint8_t x, uint8_t y)
Definition disp.h:235
void font_get_data(uint16_t start, uint16_t count, void __far *data)
void screen_get_char(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, void __far *tiles)
static uint32_t sprite_get_window(void)
Definition disp.h:287
static void sprite_set_char(uint16_t id, uint16_t tile)
Definition disp.h:170
void sprite_set_data(uint16_t first, uint16_t count, const void __far *data)
void font_set_colordata(uint16_t start, uint16_t count, const void __far *data)
void screen_set_char(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, const void __far *tiles)
static uint16_t screen_get_char1(uint8_t screen_id, uint8_t x, uint8_t y)
Definition disp.h:129
static void sprite_set_range(uint16_t first, uint16_t count)
Definition disp.h:160
static uint16_t lcd_get_sleep(void)
Definition disp.h:371
static uint16_t font_get_color(void)
Definition disp.h:114
static void screen2_set_window(uint8_t x, uint8_t y, uint8_t width, uint8_t height)
Definition disp.h:256
static uint16_t lcd_get_segments(void)
Definition disp.h:350
static void font_set_color(uint16_t value)
Definition disp.h:104
static uint16_t sprite_get_location(uint16_t id)
Definition disp.h:201
static uint16_t palette_get_color(uint16_t index)
Definition disp.h:308
static void sprite_set_location(uint16_t id, uint8_t x, uint8_t y)
Definition disp.h:191
static uint32_t lcd_get_color(void)
Definition disp.h:329
static void sprite_set_char_location(uint16_t id, uint16_t tile, uint8_t x, uint8_t y)
Definition disp.h:212
static void palette_set_color(uint16_t index, uint16_t colors)
Definition disp.h:298
static void screen_fill_attr(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint16_t tile, uint16_t mask)
Definition disp.h:150
static void screen_set_vram(uint8_t id, uint8_t offset)
Definition disp.h:385
static void screen_fill_char(uint8_t screen_id, uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint16_t tile)
Definition disp.h:140
static uint16_t screen_get_scroll(uint8_t id)
Definition disp.h:245
static void display_control(uint16_t value)
Definition disp.h:77
static void lcd_set_color(uint16_t low, uint16_t high)
Definition disp.h:319
static void lcd_set_sleep(uint16_t flags)
Definition disp.h:361
static uint16_t sprite_get_char(uint16_t id)
Definition disp.h:180
static uint16_t display_status(void)
Definition disp.h:87
static void sprite_set_vram(uint8_t offset)
Definition disp.h:398
static void lcd_set_segments(uint16_t flags)
Definition disp.h:340
static void sprite_set_window(uint8_t x, uint8_t y, uint8_t width, uint8_t height)
Definition disp.h:277
static uint32_t sprite_get_char_location(uint16_t id)
Definition disp.h:222
void font_set_monodata(uint16_t start, uint16_t count, const void __far *data)