ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
color_sprite.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31/****************************************************************************
32 * INCLUDE SECTION
33 ****************************************************************************/
34
35#include "../../ugbc.h"
36
47/* <usermanual>
48@keyword COLOR SPRITE
49
50The ''COLOR SPRITE'' command allows you to redefine the (common) colors used by the graphics chipset
51for the sprites, where this is possible and/or they are available. "Redefinition" means
52assigning one of the possible colors to specific registers called "palette registers".
53
54On some systems this is not possible at all, due to limitations of the chipset or
55the absence of registers or even of the sprites: for this reason, in such cases the
56command is ignored. On other systems this corresponds to the modification of specific
57registers, to which one of the available colors is assigned. On others it is possible
58to assign certain shades, which therefore go beyond the number of available colors.
59
60Where it is possible to assign a shade, the value can range from ''0'' to the constant
61''SHADES''. However, it may be more practical to use the ''RGB'' function, which
62allows you to calculate the shade starting from the color components (red, green and blue).
63
64@italian
65
66Il comando ''COLOR SPRITE'' consente di ridefinire i colori comuni utilizzati dal chipset grafico
67per gli sprite, laddove ciò sia possibile. "Ridefinire" significa assegnare uno dei colori
68possibili a registri specifici chiamati "registri palette".
69
70Su alcuni sistemi questo non è affatto possibile, a causa di limitazioni del chipset o
71dell'assenza di registri o addirittura degli sprite: per questo motivo, in tali casi il
72comando viene ignorato. Su altri sistemi ciò corrisponde alla modifica di registri
73specifici, a cui viene assegnato uno dei colori disponibili. Su altri è possibile assegnare
74determinate tonalità, che quindi vanno oltre il numero di colori disponibili.
75
76Dove è possibile assegnare una tonalità, il valore può variare da ''0'' alla costante
77''SHADES''. Tuttavia, può essere più pratico utilizzare la funzione ''RGB'', che consente
78di calcolare la tonalità a partire dalle componenti del colore (rosso, verde e blu).
79
80@syntax COLOR SPRITE index TO color
81
82@example COLOR SPRITE 1 TO YELLOW
83
84@seeAlso SHADES (constant)
85@seeAlso RGB
86@target c128
87</usermanual> */
88void color_sprite( Environment * _environment, int _index, int _common_color ) {
89
90 vic2_sprite_common_color( _environment, _index, _common_color );
91
92}
93
94void color_sprite_semi_vars( Environment * _environment, int _index, char * _common_color ) {
95
96 char index[MAX_TEMPORARY_STORAGE]; sprintf(index, "#$%2.2x", _index);
97 Variable * common_color = variable_retrieve( _environment, _common_color );
98
99 vic2_sprite_common_color_vars( _environment, index, common_color->realName );
100
101}
102
113void color_sprite_vars( Environment * _environment, char * _index, char * _common_color ) {
114
115 Variable * index = variable_retrieve( _environment, _index );
116 Variable * common_color = variable_retrieve( _environment, _common_color );
117
118 vic2_sprite_common_color_vars( _environment, index->realName, common_color->realName );
119
120}
Variable * variable_retrieve(Environment *_environment, char *_name)
void color_sprite_semi_vars(Environment *_environment, int _index, char *_common_color)
void color_sprite_vars(Environment *_environment, char *_index, char *_common_color)
Emit ASM code for instruction COLOR SPRITE [expression] TO [expression].
void color_sprite(Environment *_environment, int _index, int _common_color)
Emit ASM code for instruction COLOR SPRITE [int] TO [int].
char * realName
Definition ugbc.h:982
#define MAX_TEMPORARY_STORAGE
Definition ugbc.h:563
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
void vic2_sprite_common_color_vars(Environment *_environment, char *_index, char *_common_color)
VIC-II: emit code to change common sprite's color
Definition vic2.c:780
void vic2_sprite_common_color(Environment *_environment, int _index, int _common_color)
VIC-II: emit code to change common sprite's color
Definition vic2.c:763