diff -ru a/agb-image-converter/src/config.rs b/agb-image-converter/src/config.rs --- a/agb-image-converter/src/config.rs +++ b/agb-image-converter/src/config.rs @@ -1,9 +1,9 @@ -use std::collections::HashMap; +use std::collections::BTreeMap; use crate::{Colour, Colours}; pub(crate) trait Config { - fn images(&self) -> HashMap; + fn images(&self) -> BTreeMap; fn transparent_colour(&self) -> Option; } diff -ru a/agb-image-converter/src/lib.rs b/agb-image-converter/src/lib.rs --- a/agb-image-converter/src/lib.rs +++ b/agb-image-converter/src/lib.rs @@ -6,7 +6,7 @@ use syn::{Expr, ExprLit, Lit, Token}; use syn::{parse_macro_input, punctuated::Punctuated}; -use std::collections::HashMap; +use std::collections::{BTreeMap, HashMap}; use std::iter; use std::{path::Path, str}; @@ -149,7 +149,7 @@ } impl config::Config for IncludeBackgroundGfxInput { - fn images(&self) -> HashMap { + fn images(&self) -> BTreeMap { self.background_gfx_options .iter() .map(|options| (options.module_name.clone(), options as &dyn config::Image)) diff -ru a/agb-image-converter/src/palette16.rs b/agb-image-converter/src/palette16.rs --- a/agb-image-converter/src/palette16.rs +++ b/agb-image-converter/src/palette16.rs @@ -169,7 +169,11 @@ let optimised_palettes = packed_palettes .iter() .map(|packed_palette| { - let colours = packed_palette.unique_symbols(&palettes_to_optimise); + let mut colours: Vec<_> = packed_palette + .unique_symbols(&palettes_to_optimise) + .into_iter() + .collect(); + colours.sort(); Palette16::from(colours).with_transparent(transparent_colour) }) .collect::>();