35#if defined(__atari__) || defined(__atarixl__)
40static RGBi SYSTEM_PALETTE[] = {
41 { 0x00, 0x00, 0x00, 0xff, 0x00,
"BLACK", 0x00 },
42 { 0xff, 0xff, 0xff, 0xff, 0x0f,
"WHITE", 0x0f },
43 { 0x90, 0x18, 0x29, 0xff, 0x24,
"RED", 0x24 },
44 { 0x8e, 0xff, 0xff, 0xff, 0xae,
"CYAN", 0xae },
45 { 0x77, 0x27, 0x93, 0xff, 0x64,
"VIOLET", 0x64 },
46 { 0x00, 0x82, 0x67, 0xff, 0xa2,
"GREEN", 0xb6 },
47 { 0x51, 0x34, 0xae, 0xff, 0x74,
"BLUE", 0x74 },
48 { 0xee, 0xee, 0x77, 0xff, 0x1f,
"YELLOW", 0x1f },
49 { 0xaa, 0x7e, 0x00, 0xff, 0x29,
"ORANGE", 0x29 },
50 { 0x65, 0x3d, 0x00, 0xff, 0x24,
"BROWN", 0x24 },
51 { 0xd6, 0x60, 0x72, 0xff, 0x28,
"LIGHT RED", 0x28 },
52 { 0x3e, 0x3c, 0x3f, 0xff, 0x04,
"DARK GREY", 0x04 },
53 { 0x83, 0x7e, 0x85, 0xff, 0x08,
"GREY", 0x08 },
54 { 0x00, 0xc2, 0xab, 0xff, 0xba,
"LIGHT GREEN", 0xba },
55 { 0x7d, 0x56, 0xd6, 0xff, 0x76,
"LIGHT BLUE", 0x76 },
56 { 0xf3, 0xeb, 0xf8, 0xff, 0x0e,
"LIGHT GREY", 0x0e },
57 { 0xff, 0xab, 0xff, 0xff, 0x6d,
"MAGENTA", 0x6d },
58 { 0xe5, 0x89, 0xfd, 0xff, 0x6a,
"LAVENDER", 0x6a },
59 { 0xf5, 0xc5, 0x64, 0xff, 0x2c,
"GOLD", 0x2c },
60 { 0x8e, 0xff, 0xff, 0xff, 0xaf,
"TURQUOISE", 0xaf },
61 { 0x22, 0xb9, 0xdf, 0xff, 0xab,
"TAN", 0xab },
62 { 0x7f, 0x8e, 0x00, 0xff, 0x18,
"YELLOW GREEN", 0x18 },
63 { 0x36, 0x4f, 0x00, 0xff, 0x14,
"OLIVE GREEN", 0x14 },
64 { 0xff, 0xb6, 0x8c, 0xff, 0x3a,
"PINK", 0x3c },
65 { 0xf0, 0x93, 0x65, 0xff, 0x3b,
"PEACH", 0x3b },
66 { 0x8e, 0xff, 0xff, 0xff, 0xae,
"CYAN", 0xae },
67 { 0x00, 0x13, 0x5f, 0xff, 0x71,
"DARK BLUE", 0x71 }
70static RGBi * commonPalette;
100 outline1(
"LDA #$%2.2x", _border_color );
171 outline1(
"LDA #$%2.2x", (
unsigned char)(_background_color) );
193 outline1(
"LDA #$%2.2x", _background_color );
199 outline1(
"LDA #$%2.2x", _background_color );
205 outline1(
"LDA #$%2.2x", _background_color );
219 outline1(
"LDA #$%2.2x", _background_color );
241 outline1(
"LDA #$%2.2x", _background_color );
251 outline1(
"LDA #$%2.2x", _background_color );
305 outline1(
"LDA %s", _background_color );
330 outline1(
"LDA #$%2.2x", _background_color );
336 outline1(
"LDA #$%2.2x", _background_color );
345 outline1(
"LDA %s", _background_color );
362 outline1(
"LDA %s", _background_color );
396 outline1(
"LDA %s", _background_color );
452 outline1(
"LDA %s", _background_color );
477 outline1(
"LDA %s", _background_color );
483 outline1(
"LDA %s", _background_color );
492 outline1(
"LDA %s", _background_color );
509 outline1(
"LDA %s", _background_color );
534 outline1(
"LDA %s", _background_color );
543 outline1(
"LDA %s", _background_color );
712 outline1(
"STA %s", _background_color );
724static int rgbConverterFunction(
int _red,
int _green,
int _blue ) {
733 double r = (double)rgb.
red / (
double)255;
734 double g = (double)rgb.
green / (
double)255;
735 double b = (double)rgb.
blue / (
double)255;
741 l = (0.2126*(rgb.
red) + 0.7152*(rgb.
green) + 0.0722*(rgb.
blue));
743 if ( (max-min) == 0 ) {
748 }
else if ( max == g ) {
749 h = 2.0f + (b-r)/(max-min);
750 }
else if ( max == b ) {
751 h = 4.0f + (r-g)/(max-min);
757 return ( (((
int)h)& 0x0f ) <<4 ) | ( (((int)l)& 0x0f )) ;
763 int consoleSA = 0x4000;
787 cpu_inc( _environment,
"CONSOLESL" );
820static void calculate_frame_buffer(
Environment * _environment,
int _size_required ) {
824 if ( _size_required > 1024 ) {
835static int * calculate_scanlines_for_copper_list(
CopperList * _copper_list ) {
837 int * copperUsedLines =
malloc( 312 *
sizeof(
int) );
838 memset(copperUsedLines, 0, 312 *
sizeof(
int));
844 copperUsedLines[actual->
param1] = 1;
848 actual = actual->
next;
851 return copperUsedLines;
859static unsigned char * dli_build(
Environment * _environment,
860 int _mode,
int _rows,
CopperList * _copper_list,
861 int * _screen_memory_offset,
int * _dlilist_start_offset,
864 int * copperUsedLines = NULL;
865 if ( _copper_list ) {
866 copperUsedLines = calculate_scanlines_for_copper_list( _copper_list );
870 unsigned char * dliListCurrent = dliListStart;
884 if ( _copper_list && copperUsedLines[0] ) {
890 if ( _copper_list && copperUsedLines[0] ) {
897 *_screen_memory_offset = dliListCurrent - dliListStart - 2;
899 for(
int i=1; i<_rows; ++i ) {
906 if ( _copper_list && copperUsedLines[i] ) {
912 if ( _copper_list && copperUsedLines[i] ) {
920 DLI_IRQ( dliListCurrent, _mode );
924 *_dlilist_start_offset = dliListCurrent - dliListStart - 2;
926 *_dli_size = ( dliListCurrent - dliListStart );
931static unsigned char * dli_build_antic12(
Environment * _environment,
933 int * _screen_memory_offset,
int * _dlilist_start_offset,
934 int * _screen_memory_offset2,
int * _dli_size ) {
936 int * copperUsedLines = NULL;
937 if ( _copper_list ) {
938 copperUsedLines = calculate_scanlines_for_copper_list( _copper_list );
942 unsigned char * dliListCurrent = dliListStart;
951 if ( _copper_list && copperUsedLines[0] ) {
957 if ( _copper_list && copperUsedLines[0] ) {
964 *_screen_memory_offset = dliListCurrent - dliListStart - 2;
966 for(
int i=1; i<96; ++i ) {
969 if ( _copper_list && copperUsedLines[i] ) {
975 if ( _copper_list && copperUsedLines[i] ) {
993 *_screen_memory_offset2 = dliListCurrent - dliListStart - 2;
995 for(
int i=0; i<94; ++i ) {
997 if ( _copper_list && copperUsedLines[96+i] ) {
1003 if ( _copper_list && copperUsedLines[96+i] ) {
1011 DLI_IRQ( dliListCurrent, 15 );
1014 *_dlilist_start_offset = dliListCurrent - dliListStart - 2;
1016 *_dli_size = ( dliListCurrent - dliListStart );
1018 return dliListStart;
1022static unsigned char * dli_build_antic15(
Environment * _environment,
1024 int * _screen_memory_offset,
int * _dlilist_start_offset,
1025 int * _screen_memory_offset2,
int * _dli_size ) {
1027 int * copperUsedLines = NULL;
1028 if ( _copper_list ) {
1029 copperUsedLines = calculate_scanlines_for_copper_list( _copper_list );
1033 unsigned char * dliListCurrent = dliListStart;
1042 if ( _copper_list && copperUsedLines[0] ) {
1048 if ( _copper_list && copperUsedLines[0] ) {
1055 *_screen_memory_offset = dliListCurrent - dliListStart - 2;
1057 for(
int i=1; i<96; ++i ) {
1060 if ( _copper_list && copperUsedLines[i] ) {
1066 if ( _copper_list && copperUsedLines[i] ) {
1084 *_screen_memory_offset2 = dliListCurrent - dliListStart - 2;
1086 for(
int i=0; i<94; ++i ) {
1088 if ( _copper_list && copperUsedLines[96+i] ) {
1094 if ( _copper_list && copperUsedLines[96+i] ) {
1102 DLI_IRQ( dliListCurrent, 15 );
1105 *_dlilist_start_offset = dliListCurrent - dliListStart - 2;
1107 *_dli_size = ( dliListCurrent - dliListStart );
1109 return dliListStart;
1120 int screenMemoryOffset = 0;
1121 int screenMemoryOffset2 = 0;
1122 int currentHeight = 0;
1124 int dliListStartOffset;
1126 int screenMemoryAddress2 = 0;
1132 deploy( gtiavars, src_hw_gtia_vars_asm );
1137 copperList->
mode = _screen_mode->
id;
1140 unsigned char * dliListStart =
malloc(
DLI_COUNT ), * dliListCurrent = dliListStart;
1151 switch( _screen_mode->
id ) {
1287 calculate_frame_buffer( _environment, 7680 );
1338 calculate_frame_buffer( _environment, 7680 );
1365 calculate_frame_buffer( _environment, 960 );
1392 calculate_frame_buffer( _environment, 480 );
1412 calculate_frame_buffer( _environment, 240 );
1434 calculate_frame_buffer( _environment, 760 );
1459 calculate_frame_buffer( _environment, 960 );
1479 calculate_frame_buffer( _environment, 480 );
1534 dliListStart = dli_build_antic15( _environment,
1536 &screenMemoryOffset, &dliListStartOffset,
1537 &screenMemoryOffset2, &dliSize );
1539 dliListStart = dli_build_antic12( _environment,
1541 &screenMemoryOffset, &dliListStartOffset,
1542 &screenMemoryOffset2, &dliSize );
1544 dliListStart = dli_build( _environment,
1548 &screenMemoryOffset,
1549 &dliListStartOffset,
1561 actual->
mode = _screen_mode->
id;
1562 if ( actual->
name ) {
1564 sprintf( dliCopperName,
"DLI%s", actual->
name );
1567 dliListStart = dli_build_antic15( _environment,
1569 &screenMemoryOffset, &dliListStartOffset,
1570 &screenMemoryOffset2, &dliSize );
1572 dliListStart = dli_build( _environment,
1576 &screenMemoryOffset,
1577 &dliListStartOffset,
1582 actual = actual->
next;
1586 sprintf( dliCommonLabel,
"GTIAINITDLICOMMON%s%d", label, _screen_mode->
id );
1588 cpu_label(_environment, dliCommonLabel);
1589 if ( _screen_mode->
bitmap ) {
1591 outline1(
"STA DLI+$%4.4x", screenMemoryOffset );
1593 outline1(
"STA DLI+$%4.4x+1", screenMemoryOffset );
1594 if ( screenMemoryOffset2 ) {
1595 outline1(
"LDA #$%2.2x", ( screenMemoryAddress2 & 0xff ) );
1596 outline1(
"STA DLI+$%4.4x", screenMemoryOffset2 );
1597 outline1(
"LDA #$%2.2x", ( screenMemoryAddress2 >> 8 ) & 0xff );
1598 outline1(
"STA DLI+$%4.4x+1", screenMemoryOffset2 );
1602 outline1(
"STA DLI+$%4.4x", screenMemoryOffset );
1604 outline1(
"STA DLI+$%4.4x+1", screenMemoryOffset );
1607 outline1(
"STA DLI+$%4.4x", dliListStartOffset );
1609 outline1(
"STA DLI+$%4.4x+1", dliListStartOffset );
1613 sprintf( dliLabel,
"GTIAINITDLI%d", _screen_mode->
id );
1621 sprintf( dliLabel2,
"GTIAINITDLIB%d", _screen_mode->
id );
1624 cpu_call( _environment, dliCommonLabel);
1650 outline0(
"STA PALETTEPRESERVEUSED");
1715 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
1718 outline1(
"LDA %2.2x", (_x & 0xff ) );
1720 outline1(
"LDA %2.2x", ( ( _x >> 8 ) & 0xff ) );
1722 outline1(
"LDA %2.2x", ( _y & 0xff ) );
1725 outline1(
"LDA #$%2.2x", ( *_c & 0xff ) );
1750 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
1778 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
1869 outline1(
"LDY %s", _displacement );
1881 outline1(
"LDA %s", _displacement );
1949 deploy( clsBox, src_hw_gtia_cls_box_asm );
1981 outline1(
"LDA #$%2.2x", ( _direction & 0xff ) );
1983 outline1(
"LDA #$%2.2x", ( _overlap & 0xff ) );
1992 deploy( gtiavars, src_hw_gtia_vars_asm );
1996 deploy( textEncodedAt, src_hw_gtia_text_at_asm );
2007 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
2008 deploy_deferred( textEncodedAtTextRaw, src_hw_gtia_text_at_text_raw_asm );
2011 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
2012 deploy_deferred( textEncodedAtGraphicRaw, src_hw_gtia_text_at_graphic_raw_asm );
2013 outline0(
"JSR TEXTATBITMAPMODERAW");
2017 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
2021 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
2022 deploy_deferred( textEncodedAtGraphic, src_hw_gtia_text_at_graphic_asm );
2114#if defined(__atari__)
2140 cpu_label( _environment,
"GTIAFINALIZE" );
2144 if ( !copperList->
name ) {
2145 if ( copperList->
mode == 0 ) {
2153 if ( !copperList->
name ) {
2157 sprintf( copperlist0Named,
"COPPERLIST0000%s", copperList->
name ? copperList->
name :
"" );
2159 sprintf( dliLabel,
"GTIAINITDLI%d", copperList->
mode );
2161 sprintf( dliLabel2,
"GTIAINITDLIB%d", copperList->
mode );
2163 sprintf( dliCopperName,
"DLI%s", copperList->
name ? copperList->
name :
"" );
2170 outhead1(
"GTIAVBLIRQNOCOPPER%s:", copperList->
name ? copperList->
name :
"" );
2171 outline1(
"LDA #<%s", copperlist0Named );
2173 outline1(
"LDA #>%s", copperlist0Named );
2178 int currentLine = 0;
2179 cpu_label(_environment, copperlist0Named);
2186 if ( actual->
param1 > 0 ) {
2187 if ( actual->
param1 > currentLine ) {
2188 if ( currentLine ) {
2196 currentLine = actual->
param1;
2201 outline1(
"LDA $%4.4x", (
unsigned short)( actual->
param2 & 0xffff )+3 );
2202 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff )+3 );
2203 outline1(
"LDA $%4.4x", (
unsigned short)( actual->
param2 & 0xffff )+2 );
2204 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff )+2 );
2206 outline1(
"LDA $%4.4x", (
unsigned short)( actual->
param2 & 0xffff )+1 );
2207 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff )+1 );
2209 outline1(
"LDA $%4.4x", (
unsigned short)( actual->
param2 & 0xffff ) );
2210 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff ) );
2213 outline1(
"LDA #$%2.2x", (
unsigned char)( ( actual->
param2 >> 24 ) & 0xff ) );
2214 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff )+3 );
2215 outline1(
"LDA #$%2.2x", (
unsigned char)( ( actual->
param2 >> 16 ) & 0xff ) );
2216 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff )+2 );
2218 outline1(
"LDA #$%2.2x", (
unsigned char)( ( actual->
param2 >> 8 ) & 0xff ) );
2219 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff )+1 );
2221 outline1(
"LDA #$%2.2x", (
unsigned char)( ( actual->
param2 ) & 0xff ) );
2222 outline1(
"STA $%4.4x", (
unsigned short)( actual->
param1 & 0xffff ) );
2235 actual = actual->
next;
2237 outline1(
"LDA #<GTIAVBLIRQNOCOPPER%s", copperList->
name ? copperList->
name :
"" );
2239 outline1(
"LDA #>GTIAVBLIRQNOCOPPER%s", copperList->
name ? copperList->
name :
"" );
2242 copperList = copperList->
next;
2246 outline0(
"LDA #<GTIAVBLIRQNOCOPPER" );
2248 outline0(
"LDA #>GTIAVBLIRQNOCOPPER" );
2270 outline1(
"LDA #$%2.2x", ( _direction & 0xff ) );
2272 outline1(
"LDA #$%2.2x", ( _overlap & 0xff ) );
2285 outline1(
"LDA #$%2.2x", ( _direction & 0xff ) );
2287 outline1(
"LDA #$%2.2x", ( _overlap & 0xff ) );
2295 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
2307 if ( _characters ) {
2319 deploy( textCline, src_hw_gtia_cline_text_asm );
2322 deploy( textClineGraphic, src_hw_gtia_cline_graphic_asm );
2356 return 3 + ( ( _width >> 2 ) * _height ) + 4;
2388 return 3 + ( ( _width >> 3 ) * _height ) + 2;
2446static int calculate_images_size(
Environment * _environment,
int _frames,
int _width,
int _height,
int _mode ) {
2474 return 3 + ( 3 + ( ( _width >> 2 ) * _height ) + 4 ) * _frames;
2506 return 3 + ( 3 + ( ( _width >> 3 ) * _height ) + 2 ) * _frames;
2564static int calculate_sequence_size(
Environment * _environment,
int _sequences,
int _frames,
int _width,
int _height,
int _mode ) {
2592 return 3 + ( ( 3 + ( ( _width >> 2 ) * _height ) + 4 ) * _frames ) * _sequences;
2624 return 3 + ( ( 3 + ( ( _width >> 3 ) * _height ) + 2 ) * _frames ) * _sequences;
2682static Variable * gtia_image_converter_bitmap_mode_standard(
Environment * _environment,
char * _source,
int _width,
int _height,
int _depth,
int _offset_x,
int _offset_y,
int _frame_width,
int _frame_height,
int _transparent_color,
int _flags ) {
2685 (void)!_transparent_color;
2691 _width = ( ( ( _width - 1 ) / 8 ) - 1 ) * 8;
2693 if ( _frame_width % 8 ) {
2694 _frame_width = ( ( ( _frame_width - 1 ) / 8 ) - 1 ) * 8;
2702 if (paletteColorCount > 2) {
2708 if ( ! commonPalette ) {
2710 commonPalette =
palette_match( palette, paletteColorCount, SYSTEM_PALETTE,
sizeof(SYSTEM_PALETTE) /
sizeof(
RGBi) );
2713 if ( _transparent_color & 0x0f0000 ) {
2716 if ( _transparent_color & 0xf00000 ) {
2718 paletteColorCount = 2;
2726 RGBi * newPalette =
palette_match( palette, paletteColorCount, SYSTEM_PALETTE,
sizeof(SYSTEM_PALETTE) /
sizeof(
RGBi) );
2730 int mergedCommonPalette = 0;
2734 if ( _transparent_color & 0x0f0000 ) {
2737 if ( _transparent_color & 0xf00000 ) {
2739 mergedCommonPalette = 2;
2760 char * buffer =
malloc ( bufferSize );
2763 int image_x, image_y;
2776 *(buffer) = (_frame_width & 0xff);
2777 *(buffer+1) = ( _frame_width >> 8 ) & 0xff;
2778 *(buffer+2) = _frame_height;
2780 _source += ( ( _offset_y * _width ) + _offset_x ) * _depth;
2783 for (image_y = 0; image_y < _frame_height; ++image_y) {
2784 for (image_x = 0; image_x < _frame_width; ++image_x) {
2788 rgb.
green = *(_source + 1);
2789 rgb.
blue = *(_source + 2);
2791 rgb.
alpha = *(_source + 3);
2795 if ( rgb.
alpha == 0 ) {
2801 if ( rgb.
alpha < 255 ) {
2804 int minDistance = 9999;
2820 offset = (image_y *( _frame_width >> 3 ) ) + (image_x >> 3 );
2821 bitmask = 1 << ( 7 - (image_x & 0x7) );
2823 if ( colorIndex == 1 ) {
2824 *( buffer +
offset + 3) |= bitmask;
2827 *( buffer +
offset + 3) &= ~bitmask;
2837 _source += ( _width - _frame_width ) * _depth;
2848 *(buffer + 3 + ( ( _frame_width >> 3 ) * _frame_height ) + 1 ) = palette[1].index;
2850 *(buffer + 3 + ( ( _frame_width >> 3 ) * _frame_height ) + 1 ) = 0xff;
2854 *(buffer + 3 + ( ( _frame_width >> 3 ) * _frame_height ) ) = palette[0].index;
2856 *(buffer + 3 + ( ( _frame_width >> 3 ) * _frame_height ) ) = 0xff;
2866static Variable * gtia_image_converter_multicolor_mode_standard(
Environment * _environment,
char * _source,
int _width,
int _height,
int _depth,
int _offset_x,
int _offset_y,
int _frame_width,
int _frame_height,
int _transparent_color,
int _flags ) {
2869 (void)!_transparent_color;
2875 _width = ( ( ( _width - 1 ) / 8 ) - 1 ) * 8;
2877 if ( _frame_width % 8 ) {
2878 _frame_width = ( ( ( _frame_width - 1 ) / 8 ) - 1 ) * 8;
2886 if (paletteColorCount > 4) {
2892 if ( ! commonPalette ) {
2894 commonPalette =
palette_match( palette, paletteColorCount, SYSTEM_PALETTE,
sizeof(SYSTEM_PALETTE) /
sizeof(
RGBi) );
2897 if ( _transparent_color & 0x0f0000 ) {
2900 if ( _transparent_color & 0xf00000 ) {
2902 paletteColorCount = 4;
2910 RGBi * newPalette =
palette_match( palette, paletteColorCount, SYSTEM_PALETTE,
sizeof(SYSTEM_PALETTE) /
sizeof(
RGBi) );
2914 int mergedCommonPalette = 0;
2918 if ( _transparent_color & 0x0f0000 ) {
2921 if ( _transparent_color & 0xf00000 ) {
2923 mergedCommonPalette = 4;
2944 char * buffer =
malloc ( bufferSize );
2945 memset( buffer, 0, bufferSize );
2948 int image_x, image_y;
2954 int offset, offsetc, bitmask;
2959 *(buffer) = (_frame_width & 0xff);
2960 *(buffer+1) = (_frame_width >> 8 ) & 0xff;
2961 *(buffer+2) = _frame_height;
2963 _source += ( ( _offset_y * _width ) + _offset_x ) * _depth;
2966 for (image_y = 0; image_y < _frame_height; ++image_y) {
2967 for (image_x = 0; image_x < _frame_width; ++image_x) {
2971 rgb.
green = *(_source + 1);
2972 rgb.
blue = *(_source + 2);
2974 rgb.
alpha = *(_source + 3);
2978 if ( rgb.
alpha == 0 ) {
2986 offset = (image_y * ( _frame_width >> 2 ) ) + (image_x>>2);
2990 if ( rgb.
alpha < 255 ) {
2993 int minDistance = 9999;
3005 bitmask = colorIndex << (6 - ((image_x & 0x3) * 2));
3007 *(buffer + 3 +
offset) |= bitmask;
3013 _source += ( _width - _frame_width ) * _depth;
3019 *(buffer + 3 + ( ( _frame_width >> 2 ) * _frame_height ) ) = commonPalette[0].index;
3022 *(buffer + 3 + ( ( _frame_width >> 2 ) * _frame_height ) + 1 ) = commonPalette[1].index;
3024 *(buffer + 3 + ( ( _frame_width >> 2 ) * _frame_height ) + 1 ) = 0xff;
3028 *(buffer + 3 + ( ( _frame_width >> 2 ) * _frame_height ) + 2 ) = commonPalette[2].index;
3030 *(buffer + 3 + ( ( _frame_width >> 2 ) * _frame_height ) + 2 ) = 0xff;
3034 *(buffer + 3 + ( ( _frame_width >> 2 ) * _frame_height ) + 3 ) = commonPalette[3].index;
3036 *(buffer + 3 + ( ( _frame_width >> 2 ) * _frame_height ) + 3 ) = 0xff;
3045Variable *
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 ) {
3056 return gtia_image_converter_multicolor_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3065 return gtia_image_converter_bitmap_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3072 return gtia_image_converter_multicolor_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3078 return gtia_image_converter_bitmap_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3086 return gtia_image_converter_multicolor_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3101 return gtia_image_converter_bitmap_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3112 return gtia_image_converter_bitmap_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3120 return gtia_image_converter_multicolor_mode_standard( _environment, _data, _width, _height, _depth, _offset_x, _offset_y, _frame_width, _frame_height , _transparent_color, _flags );
3180static void gtia_load_image_address_to_other_register(
Environment * _environment,
char * _register,
char * _source,
char * _sequence,
char * _frame,
int _frame_size,
int _frame_count ) {
3196 if ( strlen(_sequence) == 0 ) {
3199 outline1(
"LDA #<OFFSETS%4.4x", _frame_size * _frame_count );
3201 outline1(
"LDA #>OFFSETS%4.4x", _frame_size * _frame_count );
3217 if ( strlen(_frame) == 0 ) {
3220 outline1(
"LDA #<OFFSETS%4.4x", _frame_size );
3222 outline1(
"LDA #>OFFSETS%4.4x", _frame_size );
3248 if ( strlen(_frame) == 0 ) {
3251 outline1(
"LDA #<OFFSETS%4.4x", _frame_size );
3253 outline1(
"LDA #>OFFSETS%4.4x", _frame_size );
3274static void gtia_load_image_address_to_register(
Environment * _environment,
char * _register,
Resource * _source,
char * _sequence,
char * _frame,
int _frame_size,
int _frame_count ) {
3276 if ( !_sequence && !_frame ) {
3310 if ( strlen(_sequence) == 0 ) {
3318 if ( strlen(_frame) == 0 ) {
3337 if ( strlen(_frame) == 0 ) {
3366 deploy( gtiavars, src_hw_gtia_vars_asm);
3368 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
3369 deploy( putimage, src_hw_gtia_put_image_asm );
3371 if ( _frame_size ) {
3372 gtia_load_image_address_to_register( _environment,
"TMPPTR", _image, _sequence, _frame, _frame_size, _frame_count );
3383 if ( strchr( _flags,
'#' ) ) {
3384 outline1(
"LDA #(%s)&255", _flags+1 );
3386 outline1(
"LDA #((%s)>>8)&255", _flags+1 );
3401 deploy( gtiavars, src_hw_gtia_vars_asm);
3403 deploy( tiles, src_hw_gtia_tiles_asm );
3428 deploy( gtiavars, src_hw_gtia_vars_asm);
3430 deploy( tiles, src_hw_gtia_tiles_asm );
3479 if ( strlen(_sequence) == 0 ) {
3482 outline1(
"LDA #<OFFSETS%4.4x", _frame_size * _frame_count );
3484 outline1(
"LDA #>OFFSETS%4.4x", _frame_size * _frame_count );
3500 if ( strlen(_frame) == 0 ) {
3503 outline1(
"LDA #<OFFSETS%4.4x", _frame_size );
3505 outline1(
"LDA #>OFFSETS%4.4x", _frame_size );
3531 if ( strlen(_frame) == 0 ) {
3534 outline1(
"LDA #<OFFSETS%4.4x", _frame_size );
3536 outline1(
"LDA #>OFFSETS%4.4x", _frame_size );
3556void 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 ) {
3558 deploy( gtiavars, src_hw_gtia_vars_asm);
3560 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
3561 deploy( blitimage, src_hw_gtia_blit_image_asm );
3563 if ( _source_count > 2 ) {
3572 outline0(
"STA BLITIMAGEBLITADDR+1" );
3574 outline0(
"STA BLITIMAGEBLITADDR+2" );
3576 if ( _source_count > 0 ) {
3578 resource.
realName = strdup( _sources[0] );
3581 gtia_load_image_address_to_register( _environment,
"BLITTMPPTR", &resource, _sequence, _frame, _frame_size, _frame_count );
3588 if ( _source_count > 1 ) {
3590 resource.
realName = strdup( _sources[0] );
3593 gtia_load_image_address_to_register( _environment,
"BLITTMPPTR2", &resource, _sequence, _frame, _frame_size, _frame_count );
3610 outline1(
"LDA #$%2.2x", ( _flags & 0xff ) );
3612 outline1(
"LDA #$%2.2x", ( (_flags>>8) & 0xff ) );
3621 deploy( gtiavars, src_hw_gtia_vars_asm);
3622 deploy( tiles, src_hw_gtia_tiles_asm );
3641 deploy( gtiavars, src_hw_gtia_vars_asm);
3643 deploy( tiles, src_hw_gtia_tiles_asm );
3659 deploy( gtiavars, src_hw_gtia_vars_asm);
3660 deploy( tiles, src_hw_gtia_tiles_asm );
3670 deploy( vbl, src_hw_gtia_vbl_asm);
3672 if ( _raster_line ) {
3693 memset( buffer, 0,
size );
3695 *(buffer) = (_width & 0xff);
3696 *(buffer+1) = (_width >> 8 ) & 0xff;
3697 *(buffer+2) = _height;
3708 int size = calculate_images_size( _environment, _frames, _width, _height, _mode );
3709 int frameSize =
gtia_image_size( _environment, _width, _height, _mode );
3718 memset( buffer, 0,
size );
3720 *(buffer) = _frames;
3721 *(buffer+1) = ( _width & 0xff );
3722 *(buffer+2) = ( _width >> 8 ) & 0xff;
3723 for(
int i=0; i<_frames; ++i ) {
3724 *(buffer+3+(i*frameSize)) = ( _width & 0xff );
3725 *(buffer+3+(i*frameSize)+1) = ( ( _width >> 8 ) & 0xff );
3726 *(buffer+3+(i*frameSize)+2) = ( _height & 0xff );
3740 int size2 = calculate_sequence_size( _environment, _sequences, _frames, _width, _height, _mode );
3741 int size = calculate_images_size( _environment, _frames, _width, _height, _mode );
3742 int frameSize =
gtia_image_size( _environment, _width, _height, _mode );
3750 char * buffer =
malloc ( size2 );
3751 memset( buffer, 0, size2 );
3753 *(buffer) = _frames;
3754 *(buffer+1) = _width;
3755 *(buffer+2) = _sequences;
3756 for(
int i=0; i<(_frames*_sequences); ++i ) {
3757 *(buffer+3+(i*frameSize)) = ( _width & 0xff );
3758 *(buffer+3+(i*frameSize)+1) = ( ( _width >> 8 ) & 0xff );
3759 *(buffer+3+(i*frameSize)+2) = ( _height & 0xff );
3764 result->
size = size2;
3771void gtia_get_image(
Environment * _environment,
char * _image,
char * _x,
char * _y,
char * _frame,
char * _sequence,
int _frame_size,
int _frame_count,
int _palette ) {
3773 deploy( gtiavars, src_hw_gtia_vars_asm);
3775 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
3776 deploy( getimage, src_hw_gtia_get_image_asm );
3778 gtia_load_image_address_to_other_register( _environment,
"TMPPTR", _image, _sequence, _frame, _frame_size, _frame_count );
3788 outline1(
"LDA #$%2.2x", _palette );
3797 deploy( gtiavars, src_hw_gtia_vars_asm);
3803 outline1(
"LDA #$%2.2x", (
unsigned char)(_dx&0xff) );
3805 outline1(
"LDA #$%2.2x", (
unsigned char)(_dy&0xff) );
3822void gtia_slice_image(
Environment * _environment,
char * _image,
char * _frame,
char * _sequence,
int _frame_size,
int _frame_count,
char * _destination ) {
3830 memcpy( _palette,
palette_match( _palette, paletteColorCount, SYSTEM_PALETTE,
sizeof(SYSTEM_PALETTE) /
sizeof(
RGBi) ), paletteColorCount *
sizeof(
RGBi ) );
3832 int uniquePaletteCount = 0;
3836 return uniquePaletteCount;
3842 deploy( gtiavars, src_hw_gtia_vars_asm);
3845 if ( strcmp( _direction,
"#FLIPIMAGEDIRECTION0001" ) == 0 || strcmp( _direction,
"#FLIPIMAGEDIRECTION0003" ) == 0 ) {
3846 gtia_load_image_address_to_register( _environment,
"TMPPTR", _image, _sequence, _frame, _frame_size, _frame_count );
3847 deploy( flipimagex, src_hw_gtia_flip_image_x_asm );
3853 gtia_load_image_address_to_register( _environment,
"TMPPTR", _image, _sequence, _frame, _frame_size, _frame_count );
3854 deploy( flipimagex, src_hw_gtia_flip_image_x_asm );
3863 if ( strcmp( _direction,
"#FLIPIMAGEDIRECTION0002" ) == 0 || strcmp( _direction,
"#FLIPIMAGEDIRECTION0003" ) == 0 ) {
3864 gtia_load_image_address_to_register( _environment,
"TMPPTR", _image, _sequence, _frame, _frame_size, _frame_count );
3865 deploy( flipimagey, src_hw_gtia_flip_image_y_asm );
3871 gtia_load_image_address_to_register( _environment,
"TMPPTR", _image, _sequence, _frame, _frame_size, _frame_count );
3872 deploy( flipimagey, src_hw_gtia_flip_image_y_asm );
3885 deploy( gtiavars, src_hw_gtia_vars_asm);
3887 deploy( gtiapreproc, src_hw_gtia__preproc_asm );
3888 deploy( fade, src_hw_gtia_fade_asm );
3895 outline0(
"STA FADERESETDURATION" );
3898 outline0(
"STA FADERESETDURATION+1" );
3905 deploy( gtiavars, src_hw_gtia_vars_asm);
3906 deploy( screen, src_hw_gtia_screen_asm);
3926 outline0(
"LDA FLASHREGISTERADDRESSES, X" );
3929 outline0(
"LDA FLASHREGISTERADDRESSES, X" );
void cpu_math_mul2_const_8bit(Environment *_environment, char *_source, int _steps, int _signed)
CPU 6309: emit code to double for several times a 8 bit value
void cpu_math_sub_8bit(Environment *_environment, char *_source, char *_destination, char *_other)
CPU 6309: emit code to subtract two 8 bit values
void cpu_store_16bit(Environment *_environment, char *_destination, int _value)
CPU 6309: emit code to store 16 bit
void cpu_inc(Environment *_environment, char *_variable)
void cpu_label(Environment *_environment, char *_label)
void cpu_move_16bit(Environment *_environment, char *_source, char *_destination)
CPU 6309: emit code to move 16 bit
void cpu_call(Environment *_environment, char *_label)
void cpu_store_8bit(Environment *_environment, char *_destination, int _value)
CPU 6309: emit code to store 8 bit
void cpu_jump(Environment *_environment, char *_label)
void cpu_mem_move_direct_size(Environment *_environment, char *_source, char *_destination, int _size)
void cpu_return(Environment *_environment)
void cpu_move_8bit(Environment *_environment, char *_source, char *_destination)
CPU 6309: emit code to move 8 bit
int lastUsedSlotInCommonPalette
Variable * variable_retrieve(Environment *_environment, char *_name)
int reset_screen_mode_selected(Environment *_environment)
Variable * variable_retrieve_or_define(Environment *_environment, char *_name, VariableType _type, int _value)
int rgbi_distance(RGBi *_e1, RGBi *_e2)
Calculate the distance between two colors.
CopperList * find_copper_list(Environment *_environment, char *_name)
void label_stored_define_named(Environment *_environment, char *_label)
RGBi * palette_merge(RGBi *_palette1, int _palette1_size, RGBi *_palette2, int _palette2_size, int *_size)
Make a "palette merge".
float min_of_three(float _m, float _n, float _p)
void image_converter_asserts_free_height(Environment *_environment, int _width, int _height, int _offset_x, int _offset_y, int *_frame_width, int *_frame_height, int _modulo_x)
int label_stored_exists_named(Environment *_environment, char *_label)
Variable * variable_import(Environment *_environment, char *_name, VariableType _type, int _size_or_value)
RGBi * palette_promote_color_as_background(int _index, RGBi *_source, int _source_size)
Promote an index color in a palette.
RGBi * malloc_palette(int _size)
Allocate a palette space.
void variable_global(Environment *_environment, char *_pattern)
Variable * variable_define(Environment *_environment, char *_name, VariableType _type, int _value)
Define a variable for the program.
ScreenMode * find_screen_mode_by_suggestion(Environment *_environment, int _bitmap, int _width, int _height, int _colors, int _tile_width, int _tile_height)
Variable * variable_sl_const(Environment *_environment, char *_destination, int _steps)
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
int rgbi_extract_palette(Environment *_environment, unsigned char *_source, int _width, int _height, int _depth, RGBi _palette[], int _palette_size, int _sorted)
Extract the color palette from the given image.
RGBi * palette_promote_color_as_foreground(int _index, RGBi *_source, int _source_size, int _max_size)
Promote an index color in a palette.
float max_of_three(float _m, float _n, float _p)
RGBi * palette_remove_duplicates(RGBi *_source, int _source_size, int *_unique_size)
Remove duplicates from a palette.
RGBi * palette_match(RGBi *_source, int _source_size, RGBi *_system, int _system_size)
Make a "palette match".
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
Variable * variable_store_buffer(Environment *_environment, char *_destination, unsigned char *_buffer, int _size, int _at)
#define DLI_MODE_VHSCROLL(_list, _n)
#define DLI_LMS_VSCROLL_IRQ(_list, _n, _addr)
#define DLI_MODE_VHSCROLL_IRQ(_list, _n)
#define DLI_LMS_VHSCROLL_IRQ(_list, _n, _addr)
#define DLI_MODE_VSCROLL_IRQ(_list, _n)
#define DLI_MODE_VSCROLL(_list, _n)
#define DLI_JVB(list, addr)
#define DLI_LMS_VHSCROLL(_list, _n, _addr)
#define DLI_IRQ(_list, _n)
#define DLI_LMS_VSCROLL(_list, _n, _addr)
#define DLI_BLANK(_list, _n)
void back(Environment *_environment, char *_color)
Emit ASM code to fill background color.
void cls(Environment *_environment, char *_paper)
Emit code for CLS.
void plot(Environment *_environment, char *_x, char *_y, char *_c, int _preserve_color)
void flash(Environment *_environment, char *_index, char *_register)
Variable * distance(Environment *_environment, char *_x1, char *_y1, char *_x2, char *_y2)
Return the distance between two (screen) positions.
void gtia_border_color_vars(Environment *_environment, char *_border_color)
void gtia_text(Environment *_environment, char *_text, char *_text_size, int _raw)
void gtia_background_color_vars(Environment *_environment, char *_index, char *_background_color)
GTIA: emit code to change background color
void gtia_use_tileset(Environment *_environment, char *_tileset)
void gtia_flash_begin(Environment *_environment, char *_index, char *_register)
void gtia_sprite_multicolor(Environment *_environment, char *_sprite)
void gtia_pset_int(Environment *_environment, int _x, int _y, int *_c)
int gtia_screen_mode_enable(Environment *_environment, ScreenMode *_screen_mode)
void gtia_clear(Environment *_environment, char *_pattern)
int gtia_image_size(Environment *_environment, int _width, int _height, int _mode)
void gtia_tilemap_enable(Environment *_environment, int _width, int _height, int _colors, int _tile_width, int _tile_height)
void gtia_background_color(Environment *_environment, int _index, int _background_color)
GTIA: emit code to change background color
void gtia_flash_end(Environment *_environment)
void gtia_screen_on(Environment *_environment)
void gtia_put_image(Environment *_environment, Resource *_image, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_flags)
void gtia_hscroll_screen(Environment *_environment, int _direction, int _overlap)
void gtia_vertical_scroll(Environment *_environment, char *_displacement)
void gtia_busy_wait(Environment *_environment, char *_timing)
void gtia_get_image(Environment *_environment, char *_image, char *_x, char *_y, char *_frame, char *_sequence, int _frame_size, int _frame_count, int _palette)
void gtia_get_width(Environment *_environment, char *_result)
void gtia_sprite_at(Environment *_environment, char *_sprite, char *_x, char *_y)
void gtia_screen_rows(Environment *_environment, char *_rows)
void gtia_hscroll_line(Environment *_environment, int _direction, int _overlap)
void gtia_sprite_color(Environment *_environment, char *_sprite, char *_color)
Variable * gtia_new_image(Environment *_environment, int _width, int _height, int _mode)
void gtia_border_color(Environment *_environment, int _border_color)
GTIA: emit code to change border color
void gtia_back(Environment *_environment)
Variable * gtia_new_sequence(Environment *_environment, int _sequences, int _frames, int _width, int _height, int _mode)
void gtia_sprite_disable(Environment *_environment, char *_sprite)
void gtia_screen_off(Environment *_environment)
void gtia_initialization(Environment *_environment)
void gtia_wait_vbl(Environment *_environment, char *_raster_line)
void gtia_cls(Environment *_environment)
void gtia_calculate_sequence_frame_offset(Environment *_environment, char *_offset, char *_sequence, char *_frame, int _frame_size, int _frame_count)
void gtia_fade(Environment *_environment, char *_ticks)
void gtia_sprite_data_set(Environment *_environment, char *_sprite, char *_address)
void gtia_scroll(Environment *_environment, int _dx, int _dy)
void gtia_background_color_semivars(Environment *_environment, int _index, char *_background_color)
GTIA: emit code to change background color
void gtia_sprite_monocolor(Environment *_environment, char *_sprite)
void gtia_cls_box(Environment *_environment, char *_x1, char *_y1, char *_w, char *_h)
void gtia_put_tile(Environment *_environment, char *_tile, char *_x, char *_y)
void gtia_get_height(Environment *_environment, char *_result)
void gtia_sprite_compress_horizontal(Environment *_environment, char *_sprite)
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)
void gtia_sprite_compress_vertical(Environment *_environment, char *_sprite)
void gtia_pget_color_vars(Environment *_environment, char *_x, char *_y, char *_result)
void console_update_width_in_bytes(Environment *_environment)
void gtia_colormap_at(Environment *_environment, char *_address)
void gtia_sprite_enable(Environment *_environment, char *_sprite)
void console_calculate_vars(Environment *_environment)
void gtia_tiles_at(Environment *_environment, char *_address)
void gtia_background_color_get_vars(Environment *_environment, char *_index, char *_background_color)
GTIA: emit code to change background color
void gtia_textmap_at(Environment *_environment, char *_address)
void gtia_bank_select(Environment *_environment, int _bank)
void gtia_scroll_text(Environment *_environment, int _direction, int _overlap)
void gtia_move_tiles(Environment *_environment, char *_tile, char *_x, char *_y)
void gtia_flip_image(Environment *_environment, Resource *_image, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_direction)
void gtia_sprite_expand_vertical(Environment *_environment, char *_sprite)
void gtia_screen(Environment *_environment, char *_x, char *_y, char *_c)
void gtia_tiles_get(Environment *_environment, char *_result)
void gtia_sprite_common_color(Environment *_environment, char *_index, char *_common_color)
void gtia_cline(Environment *_environment, char *_characters)
void gtia_finalization(Environment *_environment)
void gtia_flash_register(Environment *_environment, char *_index, char *_timer, char *_color)
void gtia_sprite_priority(Environment *_environment, char *_sprite, char *_priority)
void gtia_sprite_expand_horizontal(Environment *_environment, char *_sprite)
void gtia_put_tiles(Environment *_environment, char *_tile, char *_x, char *_y, char *_w, char *_h)
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)
void gtia_bitmap_disable(Environment *_environment)
void gtia_tile_at(Environment *_environment, char *_x, char *_y, char *_result)
void gtia_slice_image(Environment *_environment, char *_image, char *_frame, char *_sequence, int _frame_size, int _frame_count, char *_destination)
void gtia_screen_columns(Environment *_environment, char *_columns)
Variable * gtia_new_images(Environment *_environment, int _frames, int _width, int _height, int _mode)
void gtia_hit(Environment *_environment, char *_sprite_mask, char *_result)
void gtia_flash_off(Environment *_environment, char *_index)
void gtia_bitmap_enable(Environment *_environment, int _width, int _height, int _colors)
void gtia_collision(Environment *_environment, char *_sprite_mask, char *_result)
void gtia_pset_vars(Environment *_environment, char *_x, char *_y, char *_c)
int gtia_palette_extract(Environment *_environment, char *_data, int _width, int _height, int _depth, int _flags, RGBi *_palette)
void gtia_bitmap_at(Environment *_environment, char *_address)
void gtia_sprite_data_from(Environment *_environment, char *_sprite, char *_address)
Variable * gtia_get_raster_line(Environment *_environment)
void console_calculate(Environment *_environment)
void gtia_horizontal_scroll(Environment *_environment, char *_displacement)
#define FRAME_BUFFER_ADDRESS
#define BITMAP_MODE_ANTIC8
#define BITMAP_MODE_ANTIC12
#define BITMAP_MODE_ANTIC10
#define BITMAP_MODE_ANTIC13
#define BITMAP_MODE_ANTIC11
#define TILEMAP_MODE_ANTIC2
#define BITMAP_MODE_ANTIC15
#define BITMAP_MODE_ANTIC9
#define TILEMAP_MODE_ANTIC3
#define TILEMAP_MODE_ANTIC5
#define TILEMAP_MODE_ANTIC7
#define TILEMAP_MODE_ANTIC4
#define BITMAP_MODE_ANTIC14
#define TILEMAP_MODE_ANTIC6
CopperOperation operation
struct _CopperInstruction * next
struct _CopperInstruction * first
struct _CopperList * next
RgbConverterFunction currentRgbConverterFunction
int lmarginAtariBasicEnabled
VestigialConfig vestigialConfig
unsigned char * valueBuffer
RGBi originalPalette[MAX_PALETTE]
struct _ScreenMode ScreenMode
#define CRITICAL_IMAGE_CONVERTER_TOO_COLORS(f)
struct _Resource Resource
struct _RGBi RGBi
Structure to store color components (red, green and blue).
#define MAX_TEMPORARY_STORAGE
#define adilineendbitmap()
#define WARNING_SCREEN_MODE(v1)
struct _Variable Variable
Structure of a single variable.
#define outline2(s, a, b)
#define deploy_deferred(s, e)
struct _Environment Environment
Structure of compilation environment.
#define adiline3(s, a, b, c)
#define deploy_preferred(s, e)
#define SCREEN_MODE_DEFINE(_id, _bitmap, _width, _height, _colors, _tile_width, _tile_height, _description)
#define CRITICAL_NEW_IMAGES_UNSUPPORTED_MODE(f)
#define CRITICAL_SCREEN_UNSUPPORTED(v)
#define outhead2(s, a, b)
#define WARNING_IMAGE_CONVERTER_UNSUPPORTED_MODE(f)
#define adilinepalette(s, c, p)
#define adilinebeginbitmap(s)
struct _CopperList CopperList
struct _CopperInstruction CopperInstruction
#define CRITICAL_NEW_IMAGE_UNSUPPORTED_MODE(f)
#define CRITICAL_BLIT_TOO_MUCH_SOURCES()