Skip to content

Commit f6250b7

Browse files
committed
Tileset: Fixed optimization with 8bpp formats
1 parent 4102aa8 commit f6250b7

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

project.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,15 @@ int Project::ExportToSourceFile(QString fname, int export_flags)
214214
switch ((export_flags>>Project::ExportFormat)&0b11)
215215
{
216216
case Project::ExportGBA4bpp>>Project::ExportFormat:
217+
out_tileset.format= Tileset::GBA_4bpp;
217218
out_tileset.tiles= out_tileset.Optimized(&out_map, Tileset::OptimizeWithFlip|Tileset::OptimizeWithPalette);
218219
break;
219220
case Project::ExportGBA8bpp>>Project::ExportFormat:
221+
out_tileset.format= Tileset::GBA_8bpp;
220222
out_tileset.tiles= out_tileset.Optimized(&out_map, Tileset::OptimizeWithFlip);
221223
break;
222224
case Project::ExportGBAAffine>>Project::ExportFormat:
225+
out_tileset.format= Tileset::GBA_8bpp;
223226
out_tileset.tiles= out_tileset.Optimized(&out_map, Tileset::OptimizeNone);
224227
break;
225228
default:

tile.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,21 +147,29 @@ QVector<QImage> Tileset::Optimized(QList<Tile>* tilemap, Tileset::optimize_flags
147147
for (int im=0; im<tilemap->count(); im++)
148148
{
149149
Tile* tmtile= &(*tilemap)[im];
150-
QImage tmtile_img= tmtile->RenderImage(this,true);
150+
QImage tmtile_img= tmtile->RenderImage(this,false);
151151
bool hflipped=false, vflipped=false;
152152
int ind_found= -2;
153153

154154
//Search the new tilemap by all the possible versions of this tile
155-
for (int ipal=0; ipal<PALETTE_H; ipal++)
155+
for (int ipal=0; ipal<PALETTE_H && ipal>=0; ipal++)
156156
{
157157
if (!(optiflags&Tileset::OptimizeWithPalette))
158158
if (ipal != tmtile->palette_index) continue;
159159

160+
if (!isPalettedFormat()) ipal= -1;
161+
160162
hflipped=false, vflipped=false;
161163
ind_found= new_tileset.indexOf(Tile::TransformImage(tmtile_img,vflipped,hflipped,ipal));
162164
if (ind_found >= 0) break;
163165

164-
if (!(optiflags&Tileset::OptimizeWithFlip)) continue;
166+
if (!(optiflags&Tileset::OptimizeWithFlip))
167+
{
168+
if (isPalettedFormat())
169+
continue;
170+
else
171+
break;
172+
}
165173

166174
hflipped=false, vflipped=true;
167175
ind_found= new_tileset.indexOf(Tile::TransformImage(tmtile_img,vflipped,hflipped,ipal));
@@ -172,6 +180,9 @@ QVector<QImage> Tileset::Optimized(QList<Tile>* tilemap, Tileset::optimize_flags
172180
hflipped=true, vflipped=true;
173181
ind_found= new_tileset.indexOf(Tile::TransformImage(tmtile_img,vflipped,hflipped,ipal));
174182
if (ind_found >= 0) break;
183+
184+
if (!isPalettedFormat())
185+
break;
175186
}
176187

177188
if (ind_found >= 0)
@@ -180,7 +191,7 @@ QVector<QImage> Tileset::Optimized(QList<Tile>* tilemap, Tileset::optimize_flags
180191
}
181192
else
182193
{
183-
new_tileset+= tmtile_img;
194+
new_tileset+= tmtile->RenderImage(this,isPalettedFormat());;
184195
new_tilemap+= Tile(new_tileset.count()-1,false,false,new_tileset.last().scanLine(0)[0]>>4);
185196
}
186197

0 commit comments

Comments
 (0)