@@ -30,16 +30,7 @@ void sortRowbyCB(Fl_Widget*,void*){
30
30
}
31
31
void save_palette (Fl_Widget*, void * start_end){
32
32
char temp[4 ];
33
- switch (currentProject->gameSystem ){
34
- case sega_genesis:
35
- strcpy (temp," 63" );
36
- break ;
37
- case NES:
38
- strcpy (temp," 15" );
39
- break ;
40
- default :
41
- show_default_error
42
- }
33
+ snprintf (temp,4 ," %u" ,currentProject->pal ->colorCnt -1 );
43
34
char * returned=(char *)fl_input (" Counting from zero enter the first entry that you want saved\n For NES to save the sprite palette the first entry is 16" ," 0" );
44
35
if (!returned)
45
36
return ;
@@ -94,13 +85,9 @@ void save_palette(Fl_Widget*, void* start_end){
94
85
if (type){
95
86
char comment[512 ];
96
87
snprintf (comment,512 ," Colors %d-%d" ,start,end-1 );
97
- int bits;
98
- if (currentProject->gameSystem ==sega_genesis){
99
- start*=2 ;// Be sure to keep this in sync with the other if statement shortly below
100
- end*=2 ;
101
- bits=16 ;
102
- }else
103
- bits=8 ;
88
+ int bits=currentProject->pal ->esize *8 ;;
89
+ start*=currentProject->pal ->esize ;
90
+ end*=currentProject->pal ->esize ;
104
91
if (skipzero){
105
92
if (!saveBinAsText (bufskip,szskip,myfile,type,comment," palDat" ,bits)){
106
93
fl_alert (" Error: can not save file %s" ,the_file.c_str ());
@@ -113,10 +100,8 @@ void save_palette(Fl_Widget*, void* start_end){
113
100
}
114
101
}
115
102
}else {
116
- if (currentProject->gameSystem ==sega_genesis){
117
- start*=2 ;
118
- end*=2 ;
119
- }
103
+ start*=currentProject->pal ->esize ;
104
+ end*=currentProject->pal ->esize ;
120
105
if (skipzero){
121
106
if (fwrite (bufskip,1 ,szskip,myfile)==0 ){
122
107
fl_alert (" Error: can not save file %s" ,the_file.c_str ());
@@ -147,37 +132,37 @@ void update_palette(Fl_Widget* o, void* v){
147
132
pushed_g=0 ;
148
133
pushPaletteEntry (temp_entry);
149
134
}
150
- if (currentProject->gameSystem == sega_genesis ){
135
+ if (currentProject->gameSystem == segaGenesis ){
151
136
unsigned temp_var=0 ;
152
- unsigned temp2=(unsigned )s->value ()* 2 ;
137
+ unsigned temp2=(unsigned )s->value ();
153
138
switch ((uintptr_t )v){
154
139
case 0 :// red
155
140
temp_var=currentProject->pal ->palDat [(temp_entry*2 )+1 ];// get the green value we need to save it for later
156
141
temp_var&=0xF0 ;
157
- temp_var|=temp2;
142
+ temp_var|=temp2<< 1 ;
158
143
currentProject->pal ->palDat [(temp_entry*2 )+1 ]=temp_var;
159
144
// now convert the new red value
160
- currentProject->pal ->rgbPal [temp_entry*3 ]=palTab[( temp2>> 1 ) +palTypeGen];
145
+ currentProject->pal ->rgbPal [temp_entry*3 ]=palTab[temp2+palTypeGen];
161
146
break ;
162
147
case 1 :// green
163
148
// this is very similar to what I just did above
164
149
temp_var=currentProject->pal ->palDat [(temp_entry*2 )+1 ];
165
150
temp_var&=15 ;// get only the red value
166
151
// now OR the new green value to it
167
- temp_var|=temp2<<4 ;
152
+ temp_var|=temp2<<5 ;
168
153
currentProject->pal ->palDat [(temp_entry*2 )+1 ]=temp_var;
169
154
// now convert the new green value
170
- currentProject->pal ->rgbPal [(temp_entry*3 )+1 ]=palTab[( temp2>> 1 ) +palTypeGen];
155
+ currentProject->pal ->rgbPal [(temp_entry*3 )+1 ]=palTab[temp2+palTypeGen];
171
156
break ;
172
157
case 2 :
173
158
// blue is the most trivial conversion to do
174
- currentProject->pal ->palDat [temp_entry*2 ]=temp2;
175
- currentProject->pal ->rgbPal [(temp_entry*3 )+2 ]=palTab[( temp2>> 1 ) +palTypeGen];
159
+ currentProject->pal ->palDat [temp_entry*2 ]=temp2<< 1 ;
160
+ currentProject->pal ->rgbPal [(temp_entry*3 )+2 ]=palTab[temp2+palTypeGen];
176
161
break ;
177
162
}
178
163
}
179
164
else if (currentProject->gameSystem == NES){
180
- uint8_t pal;
165
+ unsigned pal;
181
166
uint32_t rgb_out;
182
167
switch ((uintptr_t )v){
183
168
/*
@@ -191,16 +176,16 @@ void update_palette(Fl_Widget* o, void* v){
191
176
// first read out value
192
177
pal=currentProject->pal ->palDat [temp_entry];
193
178
pal&=48 ;
194
- pal|=(uint8_t )s->value ();
179
+ pal|=(unsigned )s->value ();
195
180
break ;
196
181
case 1 :// Value
197
182
pal=currentProject->pal ->palDat [temp_entry];
198
183
pal&=15 ;
199
- pal|=((uint8_t )s->value ())<<4 ;
184
+ pal|=((unsigned )s->value ())<<4 ;
200
185
break ;
201
186
}
202
187
currentProject->pal ->palDat [temp_entry]=pal;
203
- rgb_out=MakeRGBcolor (pal);
188
+ rgb_out=nesPalToRgb (pal);
204
189
currentProject->pal ->rgbPal [temp_entry*3 +2 ]=rgb_out&255 ;// blue
205
190
currentProject->pal ->rgbPal [temp_entry*3 +1 ]=(rgb_out>>8 )&255 ;// green
206
191
currentProject->pal ->rgbPal [temp_entry*3 ]=(rgb_out>>16 )&255 ;// red
@@ -211,31 +196,24 @@ void update_palette(Fl_Widget* o, void* v){
211
196
}
212
197
void loadPalette (Fl_Widget*, void *){
213
198
uint32_t file_size;
214
- uint8_t offset;
199
+ unsigned offset;
215
200
char * inputTemp=(char *)fl_input (" Counting from zero enter the first entry that you want the palette to start at\n For NES to load a sprite palette enter 16 or greater" ," 0" );
216
201
if (!inputTemp)
217
202
return ;
218
203
if (!verify_str_number_only (inputTemp))
219
204
return ;
220
205
offset=atoi (inputTemp);
221
- uint8_t palSize;
222
- switch (currentProject->gameSystem ){
223
- case sega_genesis:
224
- offset*=2 ;
225
- palSize=128 ;
226
- break ;
227
- case NES:
228
- palSize=32 ;
229
- break ;
230
- }
206
+ unsigned palSize=currentProject->pal ->colorCnt +currentProject->pal ->colorCntalt ;
207
+ palSize*=currentProject->pal ->esize ;
208
+ offset*=currentProject->pal ->esize ;
231
209
if (load_file_generic (" Load palette" ) == true ){
232
210
FILE * fi=fopen (the_file.c_str (), " rb" );
233
211
if (fi){
234
212
// copy 32 bytes to the palette buffer
235
213
fseek (fi,0 ,SEEK_END);
236
214
file_size = ftell (fi);
237
215
if (file_size > palSize-offset){
238
- fl_alert (" Error: The file size is bigger than %d (%d-%d) bytes\n Maybe there is extra data or you loaded the wrong file?" ,palSize-offset,palSize,offset);
216
+ fl_alert (" Error: The file size is bigger than %d (%d-%d) bytes\n Maybe there is extra data or you loaded the wrong file?\n " ,palSize-offset,palSize,offset);
239
217
fclose (fi);
240
218
return ;// end function due to errors
241
219
}
@@ -245,7 +223,7 @@ void loadPalette(Fl_Widget*, void*){
245
223
fclose (fi);
246
224
// now convert each value to rgb
247
225
switch (currentProject->gameSystem ){
248
- case sega_genesis :
226
+ case segaGenesis :
249
227
set_palette_type ();
250
228
break ;
251
229
case NES:
0 commit comments