@city41/gba-convertpng 0.0.30 → 0.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,3 @@
1
1
  import { BackgroundSpec, ProcessBackgroundResult } from "./types";
2
- declare function isProcessBackgroundResult(obj: unknown): obj is ProcessBackgroundResult;
3
2
  declare function processBackground(bg: BackgroundSpec): Promise<ProcessBackgroundResult>;
4
- export { processBackground, isProcessBackgroundResult };
3
+ export { processBackground };
@@ -1,19 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.processBackground = processBackground;
4
- exports.isProcessBackgroundResult = isProcessBackgroundResult;
5
4
  const canvas_1 = require("./canvas");
6
5
  const colors_1 = require("./colors");
7
6
  const lodash_1 = require("lodash");
8
7
  const palette_1 = require("./palette");
9
- function isProcessBackgroundResult(obj) {
10
- return (obj !== null &&
11
- typeof obj === "object" &&
12
- "background" in obj &&
13
- typeof obj.background === "object" &&
14
- obj.background !== null &&
15
- "file" in obj.background);
16
- }
17
8
  function convertTileTo15Bit(rawTile) {
18
9
  const data15 = [];
19
10
  for (let p = 0; p < rawTile.length; p += 4) {
@@ -152,7 +143,8 @@ async function processBackground(bg) {
152
143
  paletteData[0] = bg.transparentColor;
153
144
  }
154
145
  return {
155
- background: bg,
146
+ type: "Background",
147
+ spec: bg,
156
148
  canvas,
157
149
  map,
158
150
  palette: paletteData,
package/dist/bitmap.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  import { BitmapSpec, ProcessBitmapResult } from "./types";
2
- declare function isProcessBitmapResult(obj: unknown): obj is ProcessBitmapResult;
3
2
  declare function processBitmap(bmp: BitmapSpec): Promise<ProcessBitmapResult>;
4
- export { processBitmap, isProcessBitmapResult };
3
+ export { processBitmap };
package/dist/bitmap.js CHANGED
@@ -1,17 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.processBitmap = processBitmap;
4
- exports.isProcessBitmapResult = isProcessBitmapResult;
5
4
  const canvas_1 = require("./canvas");
6
5
  const colors_1 = require("./colors");
7
- function isProcessBitmapResult(obj) {
8
- return (obj !== null &&
9
- typeof obj === "object" &&
10
- "bitmap" in obj &&
11
- typeof obj.bitmap === "object" &&
12
- obj.bitmap !== null &&
13
- "file" in obj.bitmap);
14
- }
15
6
  async function processBitmap(bmp) {
16
7
  const canvas = await (0, canvas_1.createCanvasFromPath)(bmp.file);
17
8
  const context = canvas.getContext("2d");
@@ -22,7 +13,8 @@ async function processBitmap(bmp) {
22
13
  pixels.push(gbaColor);
23
14
  }
24
15
  return {
25
- bitmap: bmp,
16
+ type: "Bitmap",
17
+ spec: bmp,
26
18
  width: canvas.width,
27
19
  height: canvas.height,
28
20
  pixels,
package/dist/main.js CHANGED
@@ -42,6 +42,16 @@ const c_1 = require("./c");
42
42
  const asm_1 = require("./asm");
43
43
  const bitmap_1 = require("./bitmap");
44
44
  const palette_1 = require("./palette");
45
+ function getExportResultsFunction(spec, rootDir) {
46
+ let exportResults;
47
+ if (spec.exportResultsPath) {
48
+ exportResults = require(path.resolve(rootDir, spec.exportResultsPath));
49
+ }
50
+ else {
51
+ exportResults = defaultExportResults;
52
+ }
53
+ return exportResults;
54
+ }
45
55
  /**
46
56
  * Loads the json spec from the file path and converts all file paths
47
57
  * inside to absolute paths so the rest of the tool doesn't have to think about it
@@ -49,8 +59,10 @@ const palette_1 = require("./palette");
49
59
  function hydrateJsonSpec(jsonSpecPath) {
50
60
  const rootDir = path.dirname(jsonSpecPath);
51
61
  const initialSpec = require(jsonSpecPath);
62
+ const exportResults = getExportResultsFunction(initialSpec, rootDir);
52
63
  return {
53
64
  ...initialSpec,
65
+ exportResults,
54
66
  outputDir: path.resolve(rootDir, initialSpec.outputDir),
55
67
  format: initialSpec.format ?? "z80",
56
68
  sprites: (initialSpec.sprites ?? []).map((s) => {
@@ -93,61 +105,53 @@ function hydrateJsonSpec(jsonSpecPath) {
93
105
  file: path.resolve(rootDir, bmp.file),
94
106
  };
95
107
  }),
96
- palettes: (initialSpec.palettes ?? []).map(p => {
108
+ palettes: (initialSpec.palettes ?? []).map((p) => {
97
109
  return {
98
110
  ...p,
99
- file: path.resolve(rootDir, p.file)
111
+ file: path.resolve(rootDir, p.file),
100
112
  };
101
- })
113
+ }),
102
114
  };
103
115
  }
104
116
  function getBitmapDefines(result) {
105
- const name = path.basename(result.bitmap.file, path.extname(result.bitmap.file));
117
+ const name = path.basename(result.spec.file, path.extname(result.spec.file));
106
118
  return `#define ${name.toUpperCase()}_WIDTH ${result.width}
107
119
  #define ${name.toUpperCase()}_HEIGHT ${result.height}`;
108
120
  }
109
121
  function getPaletteDefines(result, file) {
110
- if ((0, sprite_1.isProcessBasicSpriteResult)(result)) {
111
- return '';
122
+ if (result.type === "BasicSprite") {
123
+ return "";
112
124
  }
113
125
  const name = path.basename(file, ".png");
114
126
  return `#define ${name.toUpperCase()}_NUM_PALETTES ${result.paletteCount}`;
115
127
  }
116
128
  function getTileDefines(result, file) {
117
129
  const name = path.basename(file, ".png");
118
- let tileWidth = result.canvas.width / 8;
130
+ let allFrameTileWidth = result.canvas.width / 8;
119
131
  let tileHeight = result.canvas.height / 8;
120
132
  let frameCountSrc = "";
121
133
  let frameCount = 1;
122
- if ((0, sprite_1.isProcessBasicSpriteResult)(result)) {
123
- frameCount = result.sprite.frames;
124
- frameCountSrc = `\n#define ${name.toUpperCase()}_FRAME_COUNT ${result.sprite.frames}`;
134
+ if (result.type == "BasicSprite") {
135
+ frameCount = result.spec.frames;
136
+ frameCountSrc = `\n#define ${name.toUpperCase()}_FRAME_COUNT ${frameCount}`;
125
137
  }
126
- return `#define ${name.toUpperCase()}_TILE_WIDTH ${tileWidth / frameCount}
138
+ let singleFrameTileWidth = allFrameTileWidth / frameCount;
139
+ if (singleFrameTileWidth != Math.floor(singleFrameTileWidth)) {
140
+ throw new Error(`getTileDefines, tile width is not an integer, got: ${singleFrameTileWidth}`);
141
+ }
142
+ return `#define ${name.toUpperCase()}_TILE_WIDTH ${singleFrameTileWidth}
127
143
  #define ${name.toUpperCase()}_TILE_HEIGHT ${tileHeight}${frameCountSrc}`;
128
144
  }
129
145
  function toSrcFiles(result, format) {
130
146
  let file;
131
- if ((0, sprite_1.isProcessBasicSpriteResult)(result)) {
132
- file = result.sprite.file;
133
- }
134
- else if ((0, background_1.isProcessBackgroundResult)(result)) {
135
- file = result.background.file;
136
- }
137
- else if ((0, sprite_1.isProcessSharedPaletteSpritesResult)(result)) {
138
- file = result.sprite.name;
139
- }
140
- else if ((0, bitmap_1.isProcessBitmapResult)(result)) {
141
- file = result.bitmap.file;
142
- }
143
- else if ((0, palette_1.isProcessPaletteResult)(result)) {
144
- file = result.palette.file;
147
+ if (result.type == "SharedPaletteSprites") {
148
+ file = result.spec.name;
145
149
  }
146
150
  else {
147
- throw new Error(`toSrcFiles: unexpected object: ${JSON.stringify(result)}`);
151
+ file = result.spec.file;
148
152
  }
149
153
  const fileRoot = path.basename(file, path.extname(file));
150
- if ((0, bitmap_1.isProcessBitmapResult)(result)) {
154
+ if (result.type === "Bitmap") {
151
155
  switch (format) {
152
156
  case "C":
153
157
  return {
@@ -187,7 +191,7 @@ function toSrcFiles(result, format) {
187
191
  throw new Error('gba-convertpng does not support "bin"');
188
192
  }
189
193
  }
190
- else if ((0, sprite_1.isProcessSharedPaletteSpritesResult)(result)) {
194
+ else if (result.type === "SharedPaletteSprites") {
191
195
  switch (format) {
192
196
  case "C":
193
197
  return {
@@ -229,7 +233,7 @@ function toSrcFiles(result, format) {
229
233
  throw new Error('gba-convertpng does not support "bin"');
230
234
  }
231
235
  }
232
- else if ((0, palette_1.isProcessPaletteResult)(result)) {
236
+ else if (result.type === "Palette") {
233
237
  switch (format) {
234
238
  case "C":
235
239
  return {
@@ -250,9 +254,7 @@ function toSrcFiles(result, format) {
250
254
  case "C.inc":
251
255
  return {
252
256
  tile: [],
253
- palette: [
254
- { src: (0, c_1.toCinc)(result.data, "w", 8), extension: "c.inc" },
255
- ],
257
+ palette: [{ src: (0, c_1.toCinc)(result.data, "w", 8), extension: "c.inc" }],
256
258
  map: [],
257
259
  bitmap: [],
258
260
  };
@@ -297,7 +299,7 @@ function toSrcFiles(result, format) {
297
299
  },
298
300
  ]
299
301
  : [],
300
- map: "background" in result
302
+ map: result.type === "Background"
301
303
  ? [
302
304
  {
303
305
  src: (0, c_1.toCc)(result.map, "w", 8, fileRoot + "_map", fileRoot + ".map"),
@@ -317,7 +319,7 @@ function toSrcFiles(result, format) {
317
319
  palette: result.palette
318
320
  ? [{ src: (0, c_1.toCinc)(result.palette, "w", 8), extension: "c.inc" }]
319
321
  : [],
320
- map: "background" in result
322
+ map: result.type === "Background"
321
323
  ? [{ src: (0, c_1.toCinc)(result.map, "w", 8), extension: "c.inc" }]
322
324
  : [],
323
325
  bitmap: [],
@@ -332,7 +334,7 @@ function toSrcFiles(result, format) {
332
334
  palette: result.palette
333
335
  ? [{ src: (0, asm_1.toAsm)(result.palette, "w", 8, format), extension: "asm" }]
334
336
  : [],
335
- map: "background" in result
337
+ map: result.type === "Background"
336
338
  ? [{ src: (0, asm_1.toAsm)(result.map, "w", 8, format), extension: "asm" }]
337
339
  : [],
338
340
  bitmap: [],
@@ -373,41 +375,47 @@ async function writeFiles(srcFiles, spec, outputDir) {
373
375
  console.log("wrote", bitmapOutputPath);
374
376
  }
375
377
  }
378
+ async function defaultExportResults(results, spec, writeFiles, toSrcFiles) {
379
+ for (let i = 0; i < results.length; ++i) {
380
+ const result = results[i];
381
+ const srcFiles = toSrcFiles(result, spec.format);
382
+ await writeFiles(srcFiles, result.spec, spec.outputDir);
383
+ if (result.type === "SharedPaletteSprites") {
384
+ for (const processSubResult of result.subsprites) {
385
+ const srcFiles = toSrcFiles(processSubResult, spec.format);
386
+ await writeFiles(srcFiles, processSubResult.spec, spec.outputDir);
387
+ }
388
+ }
389
+ }
390
+ }
376
391
  async function main(jsonSpec) {
377
392
  if (jsonSpec.format === "bin") {
378
393
  throw new Error("convertpng does not support bin format");
379
394
  }
395
+ const results = [];
380
396
  for (const sprite of jsonSpec.sprites) {
381
397
  if ((0, sprite_1.isBasicSpriteSpec)(sprite)) {
382
398
  const processResult = await (0, sprite_1.processBasicSprite)(sprite);
383
- const srcFiles = toSrcFiles(processResult, jsonSpec.format);
384
- await writeFiles(srcFiles, sprite, jsonSpec.outputDir);
399
+ results.push(processResult);
385
400
  }
386
401
  else {
387
402
  const processResult = await (0, sprite_1.processSharedPaletteSprites)(sprite);
388
- const srcFiles = toSrcFiles(processResult, jsonSpec.format);
389
- await writeFiles(srcFiles, processResult.sprite, jsonSpec.outputDir);
390
- for (const processSubResult of processResult.subsprites) {
391
- const srcFiles = toSrcFiles(processSubResult, jsonSpec.format);
392
- await writeFiles(srcFiles, processSubResult.sprite, jsonSpec.outputDir);
393
- }
403
+ results.push(processResult);
394
404
  }
395
405
  }
396
406
  for (const bg of jsonSpec.backgrounds) {
397
407
  const processResult = await (0, background_1.processBackground)(bg);
398
- const srcFiles = toSrcFiles(processResult, jsonSpec.format);
399
- await writeFiles(srcFiles, bg, jsonSpec.outputDir);
408
+ results.push(processResult);
400
409
  }
401
410
  for (const bmp of jsonSpec.bitmaps) {
402
411
  const processResult = await (0, bitmap_1.processBitmap)(bmp);
403
- const srcFiles = toSrcFiles(processResult, jsonSpec.format);
404
- await writeFiles(srcFiles, bmp, jsonSpec.outputDir);
412
+ results.push(processResult);
405
413
  }
406
414
  for (const palette of jsonSpec.palettes) {
407
415
  const processResult = await (0, palette_1.processPalette)(palette);
408
- const srcFiles = toSrcFiles(processResult, jsonSpec.format);
409
- await writeFiles(srcFiles, palette, jsonSpec.outputDir);
416
+ results.push(processResult);
410
417
  }
418
+ jsonSpec.exportResults(results, jsonSpec, writeFiles, toSrcFiles);
411
419
  }
412
420
  if (require.main === module) {
413
421
  const [_tsNode, _convertpng, jsonSpecPath] = process.argv;
package/dist/palette.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { Canvas } from "canvas";
2
2
  import { PaletteSpec, ProcessPaletteResult } from "./types";
3
3
  declare const MAGENTA_15: number;
4
- declare function isProcessPaletteResult(obj: unknown): obj is ProcessPaletteResult;
5
4
  declare function getForcedPalette(c: Canvas): number[];
6
5
  declare function extractPalette(c: Canvas, pad?: boolean): number[];
7
6
  declare function extractPalette15(data15: number[], pad?: boolean): number[];
@@ -10,4 +9,4 @@ declare function reduceCanvases(canvases: Canvas[]): {
10
9
  canvas: Canvas;
11
10
  };
12
11
  declare function processPalette(palette: PaletteSpec): Promise<ProcessPaletteResult>;
13
- export { processPalette, isProcessPaletteResult, extractPalette, extractPalette15, getForcedPalette, reduceCanvases, MAGENTA_15 };
12
+ export { processPalette, extractPalette, extractPalette15, getForcedPalette, reduceCanvases, MAGENTA_15, };
package/dist/palette.js CHANGED
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MAGENTA_15 = void 0;
4
4
  exports.processPalette = processPalette;
5
- exports.isProcessPaletteResult = isProcessPaletteResult;
6
5
  exports.extractPalette = extractPalette;
7
6
  exports.extractPalette15 = extractPalette15;
8
7
  exports.getForcedPalette = getForcedPalette;
@@ -13,14 +12,6 @@ const canvas_2 = require("./canvas");
13
12
  const MAGENTA_24 = [255, 0, 255, 255];
14
13
  const MAGENTA_15 = (0, colors_1.rgbToGBA15)(255, 0, 255);
15
14
  exports.MAGENTA_15 = MAGENTA_15;
16
- function isProcessPaletteResult(obj) {
17
- return (obj !== null &&
18
- typeof obj === "object" &&
19
- "palette" in obj &&
20
- typeof obj.palette === "object" &&
21
- obj.palette !== null &&
22
- "file" in obj.palette);
23
- }
24
15
  function is24BitMagenta(color) {
25
16
  return (color.length === MAGENTA_24.length &&
26
17
  color.every((channel, i) => channel === MAGENTA_24[i]));
@@ -124,8 +115,9 @@ async function processPalette(palette) {
124
115
  paletteData = extractPalette(paletteCanvas, !palette.trimPalette);
125
116
  }
126
117
  return {
127
- palette,
128
- data: paletteData
118
+ type: "Palette",
119
+ spec: palette,
120
+ data: paletteData,
129
121
  };
130
122
  }
131
123
  //# sourceMappingURL=palette.js.map
package/dist/sprite.d.ts CHANGED
@@ -1,10 +1,8 @@
1
1
  import { BasicSpriteSpec, ProcessBasicSpriteResult, ProcessSharedPaletteSpritesResult, SharedPaletteSpriteSpec, SpriteSpec } from "./types";
2
2
  import { Canvas } from "canvas";
3
3
  declare function isSharedPaletteSpriteSpec(obj: unknown): obj is SharedPaletteSpriteSpec;
4
- declare function isProcessBasicSpriteResult(obj: unknown): obj is ProcessBasicSpriteResult;
5
- declare function isProcessSharedPaletteSpritesResult(obj: unknown): obj is ProcessSharedPaletteSpritesResult;
6
4
  declare function isBasicSpriteSpec(sprite: SpriteSpec): sprite is BasicSpriteSpec;
7
5
  declare function processBasicSprite(sprite: BasicSpriteSpec, forcedPaletteOverride?: Canvas): Promise<ProcessBasicSpriteResult>;
8
6
  declare function processSharedPaletteSprites(sharedPaletteSprite: SharedPaletteSpriteSpec): Promise<ProcessSharedPaletteSpritesResult>;
9
- export { isBasicSpriteSpec, processBasicSprite, processSharedPaletteSprites, isSharedPaletteSpriteSpec, isProcessBasicSpriteResult, isProcessSharedPaletteSpritesResult, };
7
+ export { isBasicSpriteSpec, isSharedPaletteSpriteSpec, processBasicSprite, processSharedPaletteSprites, };
10
8
  export type { ProcessBasicSpriteResult, ProcessSharedPaletteSpritesResult };
package/dist/sprite.js CHANGED
@@ -1,31 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isBasicSpriteSpec = isBasicSpriteSpec;
4
+ exports.isSharedPaletteSpriteSpec = isSharedPaletteSpriteSpec;
4
5
  exports.processBasicSprite = processBasicSprite;
5
6
  exports.processSharedPaletteSprites = processSharedPaletteSprites;
6
- exports.isSharedPaletteSpriteSpec = isSharedPaletteSpriteSpec;
7
- exports.isProcessBasicSpriteResult = isProcessBasicSpriteResult;
8
- exports.isProcessSharedPaletteSpritesResult = isProcessSharedPaletteSpritesResult;
9
7
  const canvas_1 = require("./canvas");
10
8
  const palette_1 = require("./palette");
11
9
  const tile_1 = require("./tile");
12
10
  function isSharedPaletteSpriteSpec(obj) {
13
11
  return typeof obj === "object" && obj !== null && "name" in obj;
14
12
  }
15
- function isProcessBasicSpriteResult(obj) {
16
- return (obj !== null &&
17
- typeof obj === "object" &&
18
- "sprite" in obj &&
19
- typeof obj.sprite === "object" &&
20
- obj.sprite !== null &&
21
- "file" in obj.sprite);
22
- }
23
- function isProcessSharedPaletteSpritesResult(obj) {
24
- return (obj !== null &&
25
- typeof obj === "object" &&
26
- "sprite" in obj &&
27
- isSharedPaletteSpriteSpec(obj.sprite));
28
- }
29
13
  function isBasicSpriteSpec(sprite) {
30
14
  return "file" in sprite;
31
15
  }
@@ -50,7 +34,8 @@ async function processBasicSprite(sprite, forcedPaletteOverride) {
50
34
  palette[0] = sprite.transparentColor;
51
35
  }
52
36
  return {
53
- sprite,
37
+ type: "BasicSprite",
38
+ spec: sprite,
54
39
  canvas,
55
40
  tiles,
56
41
  palette,
@@ -95,7 +80,8 @@ async function processSharedPaletteSprites(sharedPaletteSprite) {
95
80
  commonPalette[0] = sharedPaletteSprite.transparentColor;
96
81
  }
97
82
  return {
98
- sprite: sharedPaletteSprite,
83
+ type: "SharedPaletteSprites",
84
+ spec: sharedPaletteSprite,
99
85
  palette: commonPalette,
100
86
  subsprites: subspriteResults,
101
87
  };
package/dist/types.d.ts CHANGED
@@ -38,34 +38,56 @@ export type ImportedJsonSpec = {
38
38
  backgrounds?: BackgroundSpec[];
39
39
  bitmaps?: BitmapSpec[];
40
40
  palettes?: PaletteSpec[];
41
+ exportResultsPath?: string;
42
+ };
43
+ export type SrcFile = {
44
+ src: string;
45
+ extension: string;
46
+ };
47
+ export type SrcFiles = {
48
+ tile: SrcFile[];
49
+ palette: SrcFile[];
50
+ map: SrcFile[];
51
+ bitmap: SrcFile[];
52
+ };
53
+ export type WriteFiles = (srcFiles: SrcFiles, spec: BasicSpriteSpec | BackgroundSpec | SharedPaletteSpriteSpec | BitmapSpec | PaletteSpec, outputDir: string) => Promise<void>;
54
+ export type ToSrcFiles = (result: ProcessBasicSpriteResult | ProcessBackgroundResult | ProcessSharedPaletteSpritesResult | ProcessBitmapResult | ProcessPaletteResult, format: Format) => SrcFiles;
55
+ export type ExportResults = (results: ProcessResult[], spec: JsonSpec, writeFiles: WriteFiles, toSrcFiles: ToSrcFiles) => Promise<void>;
56
+ export type JsonSpec = Required<Omit<ImportedJsonSpec, "exportResultsPath">> & {
57
+ exportResults: ExportResults;
41
58
  };
42
- export type JsonSpec = Required<ImportedJsonSpec>;
43
59
  export type ProcessBasicSpriteResult = {
44
- sprite: BasicSpriteSpec;
60
+ type: "BasicSprite";
61
+ spec: BasicSpriteSpec;
45
62
  canvas: Canvas;
46
63
  tiles: number[];
47
64
  palette?: number[];
48
65
  };
49
66
  export type ProcessSharedPaletteSpritesResult = {
50
- sprite: SharedPaletteSpriteSpec;
67
+ type: "SharedPaletteSprites";
68
+ spec: SharedPaletteSpriteSpec;
51
69
  subsprites: ProcessBasicSpriteResult[];
52
70
  palette: number[];
53
71
  };
54
72
  export type ProcessBackgroundResult = {
73
+ type: "Background";
55
74
  canvas: Canvas;
56
- background: BackgroundSpec;
75
+ spec: BackgroundSpec;
57
76
  tiles: number[];
58
77
  palette: number[];
59
78
  paletteCount: number;
60
79
  map: number[];
61
80
  };
62
81
  export type ProcessBitmapResult = {
63
- bitmap: BitmapSpec;
82
+ type: "Bitmap";
83
+ spec: BitmapSpec;
64
84
  width: number;
65
85
  height: number;
66
86
  pixels: number[];
67
87
  };
68
88
  export type ProcessPaletteResult = {
69
- palette: PaletteSpec;
89
+ type: "Palette";
90
+ spec: PaletteSpec;
70
91
  data: number[];
71
92
  };
93
+ export type ProcessResult = ProcessBasicSpriteResult | ProcessSharedPaletteSpritesResult | ProcessBackgroundResult | ProcessBitmapResult | ProcessPaletteResult;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@city41/gba-convertpng",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "description": "Converts png images to GBA tile format",
5
5
  "main": "index.js",
6
6
  "repository": "github.com/city41/gba-convertpng",