ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
gtia.h
Go to the documentation of this file.
1#ifndef __UGBC_GTIA__
2#define __UGBC_GTIA__
3
4/*****************************************************************************
5 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
6 *****************************************************************************
7 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 *----------------------------------------------------------------------------
21 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
22 * (la "Licenza"); è proibito usare questo file se non in conformità alla
23 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
24 *
25 * http://www.apache.org/licenses/LICENSE-2.0
26 *
27 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
28 * il software distribuito nei termini della Licenza è distribuito
29 * "COSì COM'è", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
30 * implicite. Consultare la Licenza per il testo specifico che regola le
31 * autorizzazioni e le limitazioni previste dalla medesima.
32 ****************************************************************************/
33
34#include "../ugbc.h"
35
36// COLOR = HUE * 16 + LUMINANCE
37
38// It is possible to get more colors in GR.8 than the one (and a half) that
39// Atari says is possible by using a technique called artifacting. There is
40// a small example of artifacting shown at location 710 ($2C6). See De Re Atari,
41// Your Atari 400/800, Creative Computing, June 1981, and COMPUTE!, May 1982.
42
43// Here are the 16 colors the Atari produces, along with their POKE values for
44// the color registers. The POKE values assume a luminance of zero. Add the
45// luminance value to the numbers to brighten the color. The color registers
46// ignore BIT 0; that's why there are no "odd" values for luminance, just even
47// values.
48
49// Color Value Color Value
50// Black 0, 0 Medium blue 8, 128
51// Rust 1, 16 Dark blue 9, 144
52// Red-orange 2, 32 Blue-grey 10, 160
53// Dark orange 3, 48 Olive green 11, 176
54// Red 4, 64 Medium green 12, 192
55// Dk lavender 5, 80 Dark green 13, 208
56// Cobalt blue 6, 96 Orange-green 14, 224
57// Ultramarine 7, 112 Orange 15,
58
59#define COLOR_BLACK 0x00
60#define COLOR_DARK_WHITE 0x08
61#define COLOR_WHITE 0x0d
62#define COLOR_LIGHT_WHITE 0x0f
63#define COLOR_DARK_RED 0x20
64#define COLOR_RED 0x24
65#define COLOR_LIGHT_RED 0x28
66#define COLOR_VIOLET 0x64
67#define COLOR_DARK_GREEN 0xb0
68#define COLOR_GREEN 0xb6
69#define COLOR_LIGHT_GREEN 0xba
70#define COLOR_DARK_BLUE 0x70
71#define COLOR_BLUE 0x74
72#define COLOR_LIGHT_BLUE 0x7e
73#define COLOR_YELLOW 0x1f
74#define COLOR_ORANGE 0x29
75#define COLOR_BROWN 0x24
76#define COLOR_DARK_GREY 0x04
77#define COLOR_GREY 0x08
78#define COLOR_LIGHT_GREY 0x0e
79#define COLOR_MAGENTA 0x6d
80#define COLOR_PURPLE COLOR_VIOLET
81#define COLOR_LAVENDER 0x6a
82#define COLOR_GOLD 0x2c
83#define COLOR_TURQUOISE 0xaf
84#define COLOR_TAN 0xab
85#define COLOR_YELLOW_GREEN 0x18
86#define COLOR_OLIVE_GREEN 0x14
87#define COLOR_PINK 0x3c
88#define COLOR_PEACH 0x3b
89#define COLOR_CYAN 0xae
90
91#define DEFAULT_PEN_COLOR COLOR_WHITE
92#define DEFAULT_PAPER_COLOR COLOR_BLACK
93
94#define TEXT_COLUMNS_COUNT 40
95#define TEXT_ROWS_COUNT 24
96
97// Graphics 3 (ANTIC 8)
98// This four-color graphics mode turns a split screen into 20 rows of 40 graphics cells or pixels.
99// Each pixel is 8 x 8 or the size of a normal character. The data in each pixel is encoded as two bit pairs,
100// four per byte. The four possible bit pair combinations 00, 01, 10, and 11 point to one of the four color registers.
101// The bits 00 is assigned to the background color register and the rest refer to the three foreground color registers.
102// When the CTIA/GTIA chip interprets the data for the four adjacent pixels stored within the byte, it refers to the color
103// register encoded in the bit pattern to plot the color.
104#define BITMAP_MODE_ANTIC8 8 // 40x20, 4 colors
105
106// Graphics 4 (ANTIC 9)
107// This is a two-color graphics mode with four times the resolution of GRAPHICS 3. The pixels are 4 x 4, and 48 rows of 80
108// pixels fit on a full screen. A single bit is used to store each pixel's color register. A zero refers to the background
109// color register and a one to the foreground color register. The mode is used primarily to conserve screen memory.
110// Only one bit is used for the color, so eight adjacent pixels are encoded within one byte, and only half as much screen
111// memory is needed for a display of similiar-sized pixels.
112#define BITMAP_MODE_ANTIC9 9 // 80x48, 2 colors
113
114// Graphics 5 (ANTIC A or 10)
115// This is the four color equivalent of GRAPHICS 4 sized pixels. The pixels are 4 x 4, but two bits are required to address
116// the four color registers. With only four adjacent pixels encoded within a byte, the screen uses twice as much memory,
117// about 1K.
118#define BITMAP_MODE_ANTIC10 10 // 80x48, 4 colors
119
120// Graphics 6 (ANTIC B or 11)
121// This two color graphics mode has reasonably fine resolution. The 2 x 2 sized pixels allow 96 rows of 160 pixels to fit
122// on a full screen. Although only a single bit is used to encode the color, screen memory still requires approximately 2K.
123#define BITMAP_MODE_ANTIC11 11 // 160x96, 2 colors
124
125// Graphics 7 (ANTIC D or 13)
126// This is the four color equivalent to GRAPHICS mode 6. It is the finest resolution four color mode and naturally the
127// most popular. The color is encoded in two bit-pairs exactly the same way as in GRAPHICS 3. The memory requirements
128// of course is much greater as there are 96 rows of 160 - 2 x 2 sized pixels. It requires 3840 bytes of screen memory
129// with another 104 bytes for the display list.
130#define BITMAP_MODE_ANTIC13 13 // 160x96, 4 colors
131
132// Graphics 8 (ANTIC F or 15)
133// This mode is definitely the finest resolution available on the Atari. Individual dot-sized pixels can be addressed in
134// this one-color, two-luminance mode. There are 192 rows of 320 dots in the full screen mode. Graphics 8 is memory
135// intensive; it takes 8K bytes (eight pixels/byte) to address an entire screen. The color scheme is quite similar to that
136// in GRAPHICS mode 0. Color register #2 sets the background color. Color register #1 sets the luminance. Changing the color
137// in this register has no effect, but, this doesn't mean that you are limited to just one color.
138// Fortunately, the pixels are each one half of a color clock. It takes two pixels to span one color clock made up of
139// alternating columns of complementary colors. If the background is set to black, these columns consist of blue and
140// green stripes. If only the odd-columned pixels are plotted, you get blue pixels. If only the odd-columned pixels
141// are plotted, you get green pixels. And if pairs of adjacent pixels are plotted, you get white. So by cleverly
142// staggering the pixel patterns, you can achieve three colors. This method is called artifacting. This all depends
143// on background color and luminance.
144#define BITMAP_MODE_ANTIC15 15 // 320x192, 4 colors
145
146// The following five graphics modes have no equivalent in BASIC on older machine but if indicated do correspond to
147// an equivalent graphics mode on the newer XL models.
148
149// Antic C (Graphics 14-XL computers only)
150// This two-color, bit-mapped mode the eight bits correspond directly to the pixels on the screen. If a pixel is lit
151// it receives its color information from color register #0, otherwise the color is set to the background color
152// register #4. Each pixel is one scan line high and one color clock wide. This mode's advantages are that it
153// only uses 4K of screen memory and doesn't have artifacting problems.
154#define BITMAP_MODE_ANTIC12 12 // 320x192, 2 colors
155
156// Antic E (Graphics 15-XL computers only)
157// This four-color, bit-mapped mode is sometimes known as BASIC 7 1/2. Its resolution is 160 x 192 or twice that of
158// GRAPHIC 7. Each byte is divided into four pairs of bits. Like the character data in ANTIC 4, the bit pairs point to a
159// particular color register. The screen data, however, is not character data but individual bytes. The user has a lot
160// more control, but this mode uses a lot more memory, approximately
161#define BITMAP_MODE_ANTIC14 14 // 160x192, 4 colors
162
163// Graphics Mode 0 (ANTIC 2)
164// This is the normal-sized character or text mode that the computer defaults to on start up.
165// Being a character mode, screen memory consists of bytes that represent individual characters in either the
166// ROM or a custom character set. ANTIC displays forty of these 8 x 8 sized characters on each of
167// twenty-four lines. Graphics 0 is a 1 1/2 color mode. Color register #2 is used as the background color
168// register. Color register #1 sets the luminance of the characters against the background. Setting the
169// color has no effect. Bits within a character are turned on in pairs to produce the luminace color.
170// Otherwise single bits tend to produce colored artifacts on the high resolution screen. These colors
171// depend on whether the computer has a CTIA or GTIA chip, and the color of the background.
172#define TILEMAP_MODE_ANTIC2 2 // 40x24, 1 color
173
174// Graphics 1 (ANTIC 6)
175// This is one the expanded text modes. Each characters is 8 x 8 but the pixels are one color clock in
176// width instead of the 1/2 color clock mode of Graphics 0 making the characters twice as wide. Only twenty
177// characters fit on any line. A graphics 1 screen has twenty rows while the full screen mode has twenty-four
178// rows of characters. The two high bits of each ATASCII character, that normally identify lowercase or
179// inverse video text in Graphics 1, set the color register for the 64 character set. Decimal character
180// numbers 0-63 use color register zero, while those same 64 characters if given character numbers 64-127
181// use color register #1. If you are typing from the Atari keyboard, the uppercase letters A-Z ATASCII 65-90
182// (Internal # 33-58) are assigned to color register zero, while the lowercase numbers 97-122
183// (Internal # 97-122) are signed to register #1.
184#define TILEMAP_MODE_ANTIC6 6 // 20x24, 4 color
185
186// Graphics 2 (ANTIC 7)
187// This text mode is basically the same as the previous mode except that each row of pixels is two scan lines high.
188// Thus 12 rows of 20 characters are displayed on a full screen. Only ten rows fit on a split screen.
189#define TILEMAP_MODE_ANTIC7 7 // 20x12, 4 color
190
191// Antic 3
192// This rarely used text mode is sometimes called the lowercase descenders mode. Each of the forty characters per line
193// are ten scan lines high, but since each of the characters are only eight scan lines high, the lower two scan lines are
194// normally left empty. However, if you use the last quarter of the character set, the top two lines remain blank,
195// allowing you to create lowercase characters with descenders.
196#define TILEMAP_MODE_ANTIC3 3 // 40x24, 2 color
197
198// Antic 4 (Graphics 12-XL computers only)
199// This very powerful character graphics mode supports four colors while using relatively little screen memory (1 K).
200// In addition its 4 x 8 sized characters have the same horizontal resolution as GRAPHICS 7, yet twice the vertical resolution.
201// A large number of games with colorful and detailed playfields use this mode. These characters differ considerably from
202// ANTIC 6 (BASIC 2) characters, in that each character contains pixels of four different colors, not just a choice of one color
203// determined by the character number. Each byte in the character is broken into four bit pairs, each of which selects the color
204// register for the pixel. That is why the horizontal resolution is only four bits. A special character set generator is used
205// to form these characters.
206#define TILEMAP_MODE_ANTIC4 4 // 20x24, 4 color
207
208// Antic 5 (Graphics 13-XL computers only)
209// This mode is essentially the same as ANTIC 4 except that each character is sixteen scan lines high.
210// The character set data is still eight bytes high so ANTIC double plots each scan line.
211#define TILEMAP_MODE_ANTIC5 5 // 20x24, 4 color
212
213#define BITMAP_MODE_DEFAULT BITMAP_MODE_ANTIC11
214#define BITMAP_MODE_STANDARD BITMAP_MODE_DEFAULT
215
216#define COLOR_COUNT 255
217
218#define SPRITE_COUNT 8
219#define SPRITE_WIDTH 8
220#define SPRITE_HEIGHT -1
221
222#define SPRITE_X_MIN 0
223#define SPRITE_Y_MIN 0
224#define SPRITE_X_MAX 0
225#define SPRITE_Y_MAX 0
226
227#define SCREEN_SPRITE_RATIO_X 100
228#define SCREEN_SPRITE_RATIO_Y 100
229#define SCREEN_BORDER_X 0
230#define SCREEN_BORDER_Y 0
231
232#define IMAGE_WIDTH_SIZE 2
233#define IMAGE_WIDTH_OFFSET 0
234#define IMAGE_HEIGHT_SIZE 1
235#define IMAGE_HEIGHT_OFFSET 2
236
237#define DOUBLE_BUFFER_PAGE_0 0
238#define DOUBLE_BUFFER_PAGE_1 1
239
240#if defined(__atari__)
241 #define FRAME_BUFFER_ADDRESS 0xbf00
242#else
243 #define FRAME_BUFFER_ADDRESS 0xcf00
244#endif
245
246int gtia_screen_mode_enable( Environment * _environment, ScreenMode * _screen_mode );
247
248void gtia_initialization( Environment * _environment );
249void gtia_finalization( Environment * _environment );
250
251void gtia_back( Environment * _environment );
252void gtia_clear( Environment * _environment, char * _pattern );
253void gtia_background_color( Environment * _environment, int _index, int _background_color );
254void gtia_background_color_vars( Environment * _environment, char * _index, char * _background_color );
255void gtia_background_color_semivars( Environment * _environment, int _index, char * _background_color );
256void gtia_background_color_get_vars( Environment * _environment, char * _index, char * _background_color );
257void gtia_border_color( Environment * _environment, int _border_color );
258void gtia_border_color_vars( Environment * _environment, char * _border_color );
259void gtia_collision( Environment * _environment, char * _sprite_mask, char * _result );
260void gtia_hit( Environment * _environment, char * _sprite_mask, char * _result );
261void gtia_sprite_common_color( Environment * _environment, char * _index, char * _common_color );
262void gtia_bitmap_enable( Environment * _environment, int _width, int _height, int _colors );
263void gtia_bitmap_disable( Environment * _environment );
264void gtia_bitmap_at( Environment * _environment, char * _address );
265void gtia_colormap_at( Environment * _environment, char * _address );
266void gtia_textmap_at( Environment * _environment, char * _address );
267void gtia_tiles_at( Environment * _environment, char * _address );
268void gtia_tilemap_enable( Environment * _environment, int _width, int _height, int _colors, int _tile_width, int _tile_height );
269void gtia_fade( Environment * _environment, char * _ticks );
270
271void gtia_bank_select( Environment * _environment, int _bank );
272void gtia_screen_on( Environment * _environment );
273void gtia_screen_off( Environment * _environment );
274void gtia_screen_rows( Environment * _environment, char * _rows );
275void gtia_screen_columns( Environment * _environment, char * _columns );
276
277void gtia_sprite_data_from( Environment * _environment, char * _sprite, char * _address );
278void gtia_sprite_data_set( Environment * _environment, char * _sprite, char * _address );
279void gtia_sprite_enable( Environment * _environment, char *_sprite );
280void gtia_sprite_disable( Environment * _environment, char * _sprite );
281void gtia_sprite_at( Environment * _environment, char * _sprite, char * _x, char * _y );
282void gtia_sprite_expand_vertical( Environment * _environment, char * _sprite );
283void gtia_sprite_expand_horizontal( Environment * _environment, char * _sprite );
284void gtia_sprite_compress_vertical( Environment * _environment, char * _sprite );
285void gtia_sprite_compress_horizontal( Environment * _environment, char * _sprite );
286void gtia_sprite_multicolor( Environment * _environment, char * _sprite );
287void gtia_sprite_monocolor( Environment * _environment, char * _sprite );
288void gtia_sprite_color( Environment * _environment, char * _sprite, char * _color );
289void gtia_sprite_priority( Environment * _environment, char * _sprite, char * _priority );
290void gtia_vertical_scroll( Environment * _environment, char * _displacement );
291void gtia_horizontal_scroll( Environment * _environment, char * _displacement );
292void gtia_busy_wait( Environment * _environment, char * _timing );
293
294void gtia_tiles_get( Environment * _environment, char * _result );
295void gtia_get_width( Environment * _environment, char * _result );
296void gtia_get_height( Environment * _environment, char * _result );
297
298void gtia_pset_int( Environment * _environment, int _x, int _y, int *_c );
299void gtia_pset_vars( Environment * _environment, char *_x, char *_y, char *_c );
300void gtia_pget_color_vars( Environment * _environment, char *_x, char *_y, char * _result );
301void gtia_cls( Environment * _environment );
302void gtia_cls_box( Environment * _environment, char * _x1, char * _y1, char * _w, char * _h );
303void gtia_scroll_text( Environment * _environment, int _direction, int _overlap );
304void gtia_hscroll_line( Environment * _environment, int _direction, int _overlap );
305void gtia_hscroll_screen( Environment * _environment, int _direction, int _overlap );
306void gtia_text( Environment * _environment, char * _text, char * _text_size, int _raw );
307void gtia_cline( Environment * _environment, char * _characters );
308void gtia_scroll( Environment * _environment, int _dx, int _dy );
309
310int gtia_image_size( Environment * _environment, int _width, int _height, int _mode );
311Variable * gtia_image_converter( Environment * _environment, char * _data, int _width, int _height, int _depth, int _offset_x, int _offset_y, int _frame_width, int _frame_height, int _mode, int _transparent_color, int _flags );
312void gtia_put_image( Environment * _environment, Resource * _image, char * _x, char * _y, char * _frame, char * _sequence, int _frame_size, int _frame_count, char * _flags );
313void gtia_blit_image( Environment * _environment, char * _sources[], int _source_count, char * _blit, char * _x, char * _y, char * _frame, char * _sequence, int _frame_size, int _frame_count, int _flags );
314void gtia_wait_vbl( Environment * _environment, char * _raster_line );
315Variable * gtia_new_image( Environment * _environment, int _width, int _height, int _mode );
316Variable * gtia_new_images( Environment * _environment, int _frames, int _width, int _height, int _mode );
317Variable * gtia_new_sequence( Environment * _environment, int _sequences, int _frames, int _width, int _height, int _mode );
318void gtia_get_image( Environment * _environment, char * _image, char * _x, char * _y, char * _frame, char * _sequence, int _frame_size, int _frame_count, int _palette );
319
320Variable * gtia_get_raster_line( Environment * _environment );
321
322void gtia_put_tile( Environment * _environment, char * _image, char * _x, char * _y );
323void gtia_put_tiles( Environment * _environment, char * _image, char * _x, char * _y, char *_w, char *_h );
324void gtia_move_tiles( Environment * _environment, char * _image, char * _x, char * _y );
325void gtia_use_tileset( Environment * _environment, char * _tileset );
326void gtia_tile_at( Environment * _environment, char * _x, char * _y, char * _result );
327
328void gtia_slice_image( Environment * _environment, char * _image, char * _frame, char * _sequence, int _frame_size, int _frame_count, char * _destination );
329int gtia_palette_extract( Environment * _environment, char * _data, int _width, int _height, int _depth, int _flags, RGBi * _palette );
330void gtia_calculate_sequence_frame_offset( Environment * _environment, char * _offset, char * _sequence, char * _frame, int _frame_size, int _frame_count );
331void gtia_flip_image( Environment * _environment, Resource * _image, char * _frame, char * _sequence, int _frame_size, int _frame_count, char * _direction );
332
333void gtia_screen( Environment * _environment, char * _x, char * _y, char * _c );
334
335void gtia_flash_begin( Environment * _environment, char * _index, char * _register );
336void gtia_flash_register( Environment * _environment, char * _index, char * _timer, char * _color );
337void gtia_flash_end( Environment * _environment );
338void gtia_flash_off( Environment * _environment, char * _index );
339
340#endif
void gtia_border_color_vars(Environment *_environment, char *_border_color)
Definition gtia.c:122
void gtia_text(Environment *_environment, char *_text, char *_text_size, int _raw)
Definition gtia.c:1990
void gtia_background_color_vars(Environment *_environment, char *_index, char *_background_color)
GTIA: emit code to change background color
Definition gtia.c:289
void gtia_use_tileset(Environment *_environment, char *_tileset)
Definition gtia.c:3657
void gtia_flash_begin(Environment *_environment, char *_index, char *_register)
Definition gtia.c:3917
void gtia_sprite_multicolor(Environment *_environment, char *_sprite)
Definition gtia.c:1847
void gtia_pset_int(Environment *_environment, int _x, int _y, int *_c)
Definition gtia.c:1712
int gtia_screen_mode_enable(Environment *_environment, ScreenMode *_screen_mode)
Definition gtia.c:1115
void gtia_clear(Environment *_environment, char *_pattern)
Definition gtia.c:1967
int gtia_image_size(Environment *_environment, int _width, int _height, int _mode)
Definition gtia.c:2328
void gtia_tilemap_enable(Environment *_environment, int _width, int _height, int _colors, int _tile_width, int _tile_height)
Definition gtia.c:1679
void gtia_background_color(Environment *_environment, int _index, int _background_color)
GTIA: emit code to change background color
Definition gtia.c:160
void gtia_flash_end(Environment *_environment)
Definition gtia.c:3952
void gtia_screen_on(Environment *_environment)
Definition gtia.c:1795
void gtia_put_image(Environment *_environment, Resource *_image, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_flags)
Definition gtia.c:3364
void gtia_move_tiles(Environment *_environment, char *_image, char *_x, char *_y)
Definition gtia.c:3422
void gtia_hscroll_screen(Environment *_environment, int _direction, int _overlap)
Definition gtia.c:2281
void gtia_vertical_scroll(Environment *_environment, char *_displacement)
Definition gtia.c:1867
void gtia_busy_wait(Environment *_environment, char *_timing)
Definition gtia.c:1887
void gtia_get_image(Environment *_environment, char *_image, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, int _palette)
Definition gtia.c:3771
void gtia_get_width(Environment *_environment, char *_result)
Definition gtia.c:1912
void gtia_sprite_at(Environment *_environment, char *_sprite, char *_x, char *_y)
Definition gtia.c:1827
void gtia_put_tile(Environment *_environment, char *_image, char *_x, char *_y)
Definition gtia.c:3399
void gtia_screen_rows(Environment *_environment, char *_rows)
Definition gtia.c:1803
void gtia_hscroll_line(Environment *_environment, int _direction, int _overlap)
Definition gtia.c:2265
void gtia_sprite_color(Environment *_environment, char *_sprite, char *_color)
Definition gtia.c:1855
Variable * gtia_new_image(Environment *_environment, int _width, int _height, int _mode)
Definition gtia.c:3682
void gtia_border_color(Environment *_environment, int _border_color)
GTIA: emit code to change border color
Definition gtia.c:94
void gtia_back(Environment *_environment)
Definition gtia.c:2293
Variable * gtia_new_sequence(Environment *_environment, int _sequences, int _frames, int _width, int _height, int _mode)
Definition gtia.c:3738
void gtia_sprite_disable(Environment *_environment, char *_sprite)
Definition gtia.c:1823
void gtia_screen_off(Environment *_environment)
Definition gtia.c:1799
void gtia_initialization(Environment *_environment)
Definition gtia.c:2029
void gtia_wait_vbl(Environment *_environment, char *_raster_line)
Definition gtia.c:3668
void gtia_cls(Environment *_environment)
Definition gtia.c:1937
void gtia_calculate_sequence_frame_offset(Environment *_environment, char *_offset, char *_sequence, char *_frame, int _frame_size, int _frame_count)
Definition gtia.c:3464
void gtia_fade(Environment *_environment, char *_ticks)
Definition gtia.c:3883
void gtia_sprite_data_set(Environment *_environment, char *_sprite, char *_address)
Definition gtia.c:1815
void gtia_scroll(Environment *_environment, int _dx, int _dy)
Definition gtia.c:3795
void gtia_background_color_semivars(Environment *_environment, int _index, char *_background_color)
GTIA: emit code to change background color
Definition gtia.c:436
void gtia_sprite_monocolor(Environment *_environment, char *_sprite)
Definition gtia.c:1851
void gtia_cls_box(Environment *_environment, char *_x1, char *_y1, char *_w, char *_h)
Definition gtia.c:1947
void gtia_get_height(Environment *_environment, char *_result)
Definition gtia.c:1921
void gtia_sprite_compress_horizontal(Environment *_environment, char *_sprite)
Definition gtia.c:1843
void gtia_put_tiles(Environment *_environment, char *_image, char *_x, char *_y, char *_w, char *_h)
Definition gtia.c:3619
void gtia_blit_image(Environment *_environment, char *_sources[], int _source_count, char *_blit, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, int _flags)
Definition gtia.c:3556
void gtia_sprite_compress_vertical(Environment *_environment, char *_sprite)
Definition gtia.c:1839
void gtia_pget_color_vars(Environment *_environment, char *_x, char *_y, char *_result)
Definition gtia.c:1771
void gtia_colormap_at(Environment *_environment, char *_address)
Definition gtia.c:1704
void gtia_sprite_enable(Environment *_environment, char *_sprite)
Definition gtia.c:1819
void gtia_tiles_at(Environment *_environment, char *_address)
Definition gtia.c:1863
void gtia_background_color_get_vars(Environment *_environment, char *_index, char *_background_color)
GTIA: emit code to change background color
Definition gtia.c:583
void gtia_textmap_at(Environment *_environment, char *_address)
Definition gtia.c:1708
void gtia_bank_select(Environment *_environment, int _bank)
Definition gtia.c:720
void gtia_scroll_text(Environment *_environment, int _direction, int _overlap)
Definition gtia.c:1977
void gtia_flip_image(Environment *_environment, Resource *_image, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_direction)
Definition gtia.c:3840
void gtia_sprite_expand_vertical(Environment *_environment, char *_sprite)
Definition gtia.c:1831
void gtia_screen(Environment *_environment, char *_x, char *_y, char *_c)
Definition gtia.c:3903
void gtia_tiles_get(Environment *_environment, char *_result)
Definition gtia.c:1930
void gtia_sprite_common_color(Environment *_environment, char *_index, char *_common_color)
Definition gtia.c:716
void gtia_cline(Environment *_environment, char *_characters)
Definition gtia.c:2302
void gtia_finalization(Environment *_environment)
Definition gtia.c:2130
void gtia_flash_register(Environment *_environment, char *_index, char *_timer, char *_color)
Definition gtia.c:3941
void gtia_sprite_priority(Environment *_environment, char *_sprite, char *_priority)
Definition gtia.c:1859
void gtia_sprite_expand_horizontal(Environment *_environment, char *_sprite)
Definition gtia.c:1835
Variable * gtia_image_converter(Environment *_environment, char *_data, int _width, int _height, int _depth, int _offset_x, int _offset_y, int _frame_width, int _frame_height, int _mode, int _transparent_color, int _flags)
Definition gtia.c:3045
void gtia_bitmap_disable(Environment *_environment)
Definition gtia.c:1675
void gtia_tile_at(Environment *_environment, char *_x, char *_y, char *_result)
Definition gtia.c:3639
void gtia_slice_image(Environment *_environment, char *_image, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_destination)
Definition gtia.c:3822
void gtia_screen_columns(Environment *_environment, char *_columns)
Definition gtia.c:1807
Variable * gtia_new_images(Environment *_environment, int _frames, int _width, int _height, int _mode)
Definition gtia.c:3706
void gtia_hit(Environment *_environment, char *_sprite_mask, char *_result)
Definition gtia.c:81
void gtia_flash_off(Environment *_environment, char *_index)
Definition gtia.c:3960
void gtia_bitmap_enable(Environment *_environment, int _width, int _height, int _colors)
Definition gtia.c:1658
void gtia_collision(Environment *_environment, char *_sprite_mask, char *_result)
Definition gtia.c:77
void gtia_pset_vars(Environment *_environment, char *_x, char *_y, char *_c)
Definition gtia.c:1737
int gtia_palette_extract(Environment *_environment, char *_data, int _width, int _height, int _depth, int _flags, RGBi *_palette)
Definition gtia.c:3826
void gtia_bitmap_at(Environment *_environment, char *_address)
Definition gtia.c:1700
void gtia_sprite_data_from(Environment *_environment, char *_sprite, char *_address)
Definition gtia.c:1811
Variable * gtia_get_raster_line(Environment *_environment)
Definition gtia.c:3811
void gtia_horizontal_scroll(Environment *_environment, char *_displacement)
Definition gtia.c:1879
struct _ScreenMode ScreenMode
struct _Resource Resource
struct _RGBi RGBi
Structure to store color components (red, green and blue).
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.