Copy project
This commit is contained in:
parent
ce7a467af7
commit
26a0fd884f
173 changed files with 157458 additions and 1 deletions
110
sprite_generator/main.py
Normal file
110
sprite_generator/main.py
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
import os
|
||||
import zipfile
|
||||
from typing import Tuple
|
||||
from PIL import Image
|
||||
import io
|
||||
from math import ceil
|
||||
|
||||
|
||||
c_header = """#include "sprites.h"
|
||||
|
||||
#include <avr/eeprom.h>
|
||||
|
||||
|
||||
// AUTO-GENERATED
|
||||
|
||||
"""
|
||||
|
||||
h_header = """#ifndef SPRITES_H
|
||||
#define SPRITES_H
|
||||
|
||||
#include <avr/io.h>
|
||||
|
||||
|
||||
// AUTO-GENERATED
|
||||
|
||||
"""
|
||||
|
||||
h_footer = """
|
||||
#endif
|
||||
"""
|
||||
|
||||
|
||||
def generate_content(sprites_directory: str) -> Tuple[str, str]:
|
||||
output_h = h_header
|
||||
output_c = c_header
|
||||
|
||||
for entry in os.scandir(sprites_directory):
|
||||
delta_output_h, delta_output_c = process_spritesheet(entry)
|
||||
output_h += delta_output_h
|
||||
output_c += delta_output_c
|
||||
|
||||
output_h += h_footer
|
||||
return output_h, output_c
|
||||
|
||||
|
||||
def process_spritesheet(entry) -> Tuple[str, str]:
|
||||
sprites_name, _ = entry.name.split('.')
|
||||
sprites_zip = zipfile.ZipFile(entry.path, 'r')
|
||||
width, height = read_sprite(sprites_zip, sprites_zip.filelist[0]).size
|
||||
|
||||
declaration = f'const uint16_t {sprites_name}[{len(sprites_zip.filelist)}][{width}][{ceil(height / 8)}]'
|
||||
output_h = declaration + ';\n'
|
||||
output_c = declaration + ' EEMEM = {' + process_sprites(sprites_zip) + '};\n'
|
||||
|
||||
return output_h, output_c
|
||||
|
||||
|
||||
def process_sprites(sprites_zip) -> str:
|
||||
output = ''
|
||||
width, height = read_sprite(sprites_zip, sprites_zip.filelist[0]).size
|
||||
for sprite in sprites_zip.filelist:
|
||||
output += '{'
|
||||
pixels = list(read_sprite(sprites_zip, sprite).getdata())
|
||||
for x in range(width):
|
||||
output += '{'
|
||||
for y in range(0, height, 8):
|
||||
fill_bits = ''.join(
|
||||
reversed([
|
||||
('1' if is_filled(pixels[(y + i) * width + x]) else '0') if (y + i) * width + x < len(pixels) else '0'
|
||||
for i in range(8)
|
||||
])
|
||||
)
|
||||
|
||||
inverted_mask_bits = ''.join(
|
||||
reversed([
|
||||
('0' if is_translucent(pixels[(y + i) * width + x]) else '1') if (y + i) * width + x < len(pixels) else '0'
|
||||
for i in range(8)
|
||||
])
|
||||
)
|
||||
output += f'{binary_to_hex_with_prefix(inverted_mask_bits + fill_bits)},'
|
||||
output = output[:-1] + '},'
|
||||
output = output[:-1] + '},'
|
||||
|
||||
return output[:-1]
|
||||
|
||||
|
||||
def read_sprite(sprites_zip, entry):
|
||||
return Image.open(io.BytesIO(sprites_zip.read(entry.filename)))
|
||||
|
||||
|
||||
def is_translucent(pixel: Tuple[int, int, int, int]) -> bool:
|
||||
r, g, b, a = pixel
|
||||
return a == 0
|
||||
|
||||
|
||||
def is_filled(pixel: Tuple[int, int, int, int]) -> bool:
|
||||
r, g, b, a = pixel
|
||||
return r != 0 or g != 0 or b != 0
|
||||
|
||||
|
||||
def binary_to_hex_with_prefix(binary: str) -> str:
|
||||
return hex(int(binary, 2))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
dot_h, dot_c = generate_content('spritesheets')
|
||||
with open('output/sprites.h', 'w+') as f:
|
||||
f.write(dot_h)
|
||||
with open('output/sprites.c', 'w+') as f:
|
||||
f.write(dot_c)
|
||||
16
sprite_generator/output/sprites.c
Normal file
16
sprite_generator/output/sprites.c
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#include "sprites.h"
|
||||
|
||||
#include <avr/eeprom.h>
|
||||
|
||||
|
||||
// AUTO-GENERATED
|
||||
|
||||
const uint16_t small_character_moving[4][5][1] EEMEM = {{{0x606},{0x1f1d},{0xf0b},{0x1f1d},{0x606}},{{0x606},{0x1f1d},{0xf0b},{0xf0d},{0x1616}},{{0x606},{0x1f1d},{0xf0b},{0x1f1d},{0x606}},{{0x606},{0xf0d},{0x1f1b},{0x1f1d},{0x606}}};
|
||||
const uint16_t spaceship_idle[1][36][3] EEMEM = {{{0x404,0x1414,0x1010},{0x404,0x3e3e,0x1010},{0xceca,0xffff,0x3828},{0xee6a,0xff8a,0x3929},{0xff3b,0xff09,0x7f6f},{0xff91,0xff08,0x7f44},{0xff51,0xff08,0x7f44},{0xff31,0xff08,0x7f44},{0xff1f,0xff08,0x7f7c},{0xf111,0xff08,0x4744},{0xf010,0xff08,0x704},{0xf010,0xfff8,0x707},{0xf010,0xff28,0x705},{0xf010,0xfff8,0x707},{0xf010,0xff08,0x704},{0xf010,0xff08,0x704},{0xf010,0xff08,0x704},{0xf010,0xff08,0x704},{0xf414,0xff08,0x1714},{0xf414,0xff08,0x1714},{0xfc1c,0xff08,0x1f1c},{0xfc1c,0xff08,0x1f1c},{0xf818,0xff08,0xf0c},{0xf010,0xff08,0x704},{0xf010,0xff08,0x704},{0xf010,0xff08,0x704},{0xf010,0xff0c,0x704},{0xf010,0xff0a,0x704},{0xf0b0,0xff1f,0x706},{0xe020,0xff1c,0x302},{0xe060,0xff1c,0x303},{0xc0c0,0xff9c,0x101},{0x8080,0xffdd,0x0},{0x0,0x7f7f,0x0},{0x0,0x1c1c,0x0},{0x0,0x808,0x0}}};
|
||||
const uint16_t table[1][3][1] EEMEM = {{{0x707},{0x101},{0x101}}};
|
||||
const uint16_t exhaust[1][5][1] EEMEM = {{{0x404},{0xe0e},{0xe0e},{0x1f1f},{0x404}}};
|
||||
const uint16_t small_asteroid[7][8][1] EEMEM = {{{0x1c1c},{0x7e7e},{0xfef2},{0xfffb},{0xffff},{0xffdf},{0x7e7e},{0x3c3c}},{{0x0},{0x3c3c},{0x7e72},{0x7e7a},{0x7e7e},{0x7e5e},{0x3c3c},{0x0}},{{0x0},{0x0},{0x3030},{0x7878},{0x7c7c},{0x7c5c},{0x3838},{0x0}},{{0x0},{0x0},{0x3030},{0x3838},{0x3838},{0x1010},{0x0},{0x0}},{{0x0},{0x3030},{0x4848},{0x4444},{0x4444},{0x2828},{0x1010},{0x0}},{{0x2828},{0x8484},{0x8080},{0x0},{0x8282},{0x4444},{0x2828},{0x0}},{{0x202},{0x0},{0x0},{0x0},{0x0},{0x0},{0x8181},{0x4242}}};
|
||||
const uint16_t stars[3][3][1] EEMEM = {{{0x202},{0x707},{0x202}},{{0x505},{0x202},{0x505}},{{0x0},{0x303},{0x303}}};
|
||||
const uint16_t heart_blinking[2][7][1] EEMEM = {{{0x606},{0x909},{0x1111},{0x2222},{0x1111},{0x909},{0x606}},{{0x606},{0xf0f},{0x1f1f},{0x3e3e},{0x1f1f},{0xf0f},{0x606}}};
|
||||
const uint16_t beds[1][8][1] EEMEM = {{{0x707},{0xc0c},{0x2424},{0x2424},{0x2424},{0x2424},{0x2424},{0x2424}}};
|
||||
const uint16_t turret_controller[1][7][1] EEMEM = {{{0x3030},{0x808},{0xf0f},{0x101},{0x101},{0x101},{0x101}}};
|
||||
19
sprite_generator/output/sprites.h
Normal file
19
sprite_generator/output/sprites.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef SPRITES_H
|
||||
#define SPRITES_H
|
||||
|
||||
#include <avr/io.h>
|
||||
|
||||
c
|
||||
// AUTO-GENERATED
|
||||
|
||||
const uint16_t small_character_moving[4][5][1];
|
||||
const uint16_t spaceship_idle[1][36][3];
|
||||
const uint16_t table[1][3][1];
|
||||
const uint16_t exhaust[1][5][1];
|
||||
const uint16_t small_asteroid[7][8][1];
|
||||
const uint16_t stars[3][3][1];
|
||||
const uint16_t heart_blinking[2][7][1];
|
||||
const uint16_t beds[1][8][1];
|
||||
const uint16_t turret_controller[1][7][1];
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"asteroid_exploding","description":"","fps":2,"height":16,"width":16,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":4,\"chunks\":[{\"layout\":[[0],[1],[2],[3]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAA90lEQVRYR81W2w2DMAwsg3QBlkQs2QUYpMiokSxq5xz3opovwLFzd/Ejy6Pos+7Hu0F7bc+lfcv7HbLYrP8Ral/BIk4z1mRJ9IRBOMW3hAC/kEAkkX2KADp9BUA2PT3wTMFMAe71h1TUdiuVs+nd25cV02woeuOR0+uBYgEeOYzIWq8Erg687kc4fRFBZI+AnbHGFUDI6zGENkcEkR3FZ46+FsucAtn6RwSRvYwAo0C0ml6/YJPPYrT8aGPQI1mZvAhCE+DTNK/m2TKhOnm6ALocohegjEgZH69sqBmQqc0MmYxPWQEyojF8moh/zwBUNsx7v3VlPwESvqu48OEMjQAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[4,4]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"asteroid_idle","description":"","fps":2,"height":16,"width":16,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":5,\"chunks\":[{\"layout\":[[0],[1],[2],[3],[4]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAAAQCAYAAACBSfjBAAABU0lEQVRYR+WY6w2DMAyEyyAswJKIJVmAQVqBGmRSP+4cUlVqf7Y5J/5ysZMOD+MzLdtT+2mdx8HS/OP3KgwLXgGEQPRitOgR7Tc38gIwAicX5iWCxGnRRxDL/NG4O0CfAJGkI4BMDC05VG+BaXV9Bmga4D6ZTARN3toEVl9DRPWIK7VYlu4AiE5uNZWsPrsBPdxbcmNd/AFwnceT07Rsoav3ZOSkjL6AYPUewGj+qPZ6ek17Sf59LA9oCDzDkbDeA+jNjwBk9eUkFoCaHgIYWk4MqN3HaGUNzZSAbA2sa7dcc7SOJoDazjAALT1ag2s9C1Dq7+ziTU1EO4KMC7NNxHJR5CDPfVETub0Lsw6owd6tJ5zsPkXZJ2zKgS3XiJYaVDYh6qTWdYs5HejY1EU6U0OsC7S2UNYFaLI9xtFv4exNHnFPjwR7x6T+jUHg9V7wr8V/ATFxHiBoK+IWAAAAAElFTkSuQmCC\"}]}"],"hiddenFrames":[5,5]}}
|
||||
1
sprite_generator/piskel/beds-20200212-170330.piskel
Normal file
1
sprite_generator/piskel/beds-20200212-170330.piskel
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"beds","description":"","fps":12,"height":6,"width":8,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAGCAYAAAD+Bd/7AAAAK0lEQVQYV2MU2HXq/wc3M0YGHICRKAW4dIPEwUbjMwWn3TBT4QpApmCzCgCBQhEt85lnxgAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[]}}
|
||||
1
sprite_generator/piskel/character.piskel
Normal file
1
sprite_generator/piskel/character.piskel
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"New Piskel","description":"","fps":22,"height":8,"width":8,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":5,\"chunks\":[{\"layout\":[[0],[1],[2],[3],[4]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAICAYAAACLUr1bAAAAaklEQVQ4T2NkgAK9VQ//w9gg+lKYPCMyf6DkwY5AtxzmMJgjB1KeEWY5yDHY2MiOHQh5uKOQo3MwsVGiGD1KBwMfHILI0TvQUYpu/+B3IHIxgxylyMUMLJSxqSVGP6ykgMUUehGGLI/OBgD6G/rpqiNnggAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[4,5,null]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"command_panel","description":"","fps":12,"height":4,"width":7,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAECAYAAABCxiV9AAAAJ0lEQVQYV2NkgALTDc//nw6QZITxQTScg1MSJAFSiaETpgOmANlYACwPEtDjAtnZAAAAAElFTkSuQmCC\"}]}"],"hiddenFrames":[]}}
|
||||
1
sprite_generator/piskel/exhaust-20200212-094146.piskel
Normal file
1
sprite_generator/piskel/exhaust-20200212-094146.piskel
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"exhaust","description":"","fps":12,"height":5,"width":5,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAJUlEQVQYV2NkQAKGe979P+8ixMgIEgNxYHJgQWQBmAR2ldjMBADQSBLgD+ED8QAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[]}}
|
||||
1
sprite_generator/piskel/heart-20200215-204739.piskel
Normal file
1
sprite_generator/piskel/heart-20200215-204739.piskel
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"heart","description":"","fps":2,"height":6,"width":7,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":2,\"chunks\":[{\"layout\":[[0],[1]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAGCAYAAADzG6+8AAAATUlEQVQoU2NkYGBgkGjf8R9Ev6j0YERm45MDKwRpgClCZoPEcAEUjciKYDbj1IhuEzE2g1wFdiKyYmSnI8vB2DCvwDVisxnd6TBNIHEAp/5As2kjDcEAAAAASUVORK5CYII=\"}]}"],"hiddenFrames":[""]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"small_asteroid","description":"","fps":4,"height":8,"width":8,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":7,\"chunks\":[{\"layout\":[[0],[1],[2],[3],[4],[5],[6]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAICAYAAACs/DyzAAAAvUlEQVRIS9WU0Q2AIAxEZQhHci7jXI7EEJoSzxy1RQgmql/iAfZxR8NAz7isG4ZxngJrf3sXFmFIEAzGIAyp57x1ACgcdeqxNiyg8DhPSRuXNTNLQI5NLroFSfs1J8Bb2wKlk5YBajiZzIAWvBdxrLV072DwnYE8h0rO8T9PQO+OAdDSSxHWgKWIW8XWAtz1BvMOSlzhlgUI3QOs0LP4liLY7eCTTaanC7esrXVX5p0n+ZUuaUWOm08LnCRsB3pexamFdPIEAAAAAElFTkSuQmCC\"}]}"],"hiddenFrames":[""]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"small_character_moving","description":"","fps":5,"height":5,"width":5,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":4,\"chunks\":[{\"layout\":[[0],[1],[2],[3]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAATElEQVQoU2NkYGBgED/z/z+IBoGXJoyMlIgxggx7acIIMhRkGJiGGkyWGNhAZANgLiVXjCLvYQsauIGgsIN6H0UMpglZHlkdsqEgNQBJ/mXI+vzKNgAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"spaceship_idle","description":"","fps":0,"height":23,"width":36,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAXCAYAAABj7u2bAAAA/ElEQVRIS92WUQ6EIAxEJfGUHtBTmrCBWB1KS4pUNpE/CdjHdCgNCxvrHiOfS9/HFoI07z13BUGQY7tjr3ucBpMOFwgEIfDUViCu7FNF3RViSnenudqgecjTKy31CiCevjNdnixL+icNCaxKGXnpDRjuTen2FkCzYAiM1EKlKqC3lRHqXp4iqAyk1SBX8zR+hqXlqkMn5SyGIg6mrlLoL0QQtEsh8pe3z1SFtOeD3wrv9BYegmDRApTWeCrEr75aGCUveaesWYfw+rdefij7Q/6XYHL7IRQqNXUeCpnfMvTS0NENm02vvVfHONwPfb5jNGSsucTcMT7tkXsBf0C4ysAeuee1AAAAAElFTkSuQmCC\"}]}"],"hiddenFrames":[]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"spaceship_idle","description":"","fps":0,"height":23,"width":36,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAXCAYAAABj7u2bAAABB0lEQVRIS92WXRKDIAyEZcZTekBP6QydWGPDEiBg5KG+lfLzZROWhAW+dY8Rx+j3sYWgjXuP3YdIkGP7nb3ucRoMBRcYRELIqK1AqOyoou4KgdLdac4WlGrIs1Zq6iVAmL4rXZ4sC+3JnwaWpYxr6Q0YrE3t9iZAM2BkoKyWVCoDmqEM2opU6gQqeZBr8XzPObdEi5HWcvuQNtETiJWXRY37U+oyhTwhRvbqUkhGWXL2FkSXQq1DwENaZ5v/T2qIV1FhW4BojudNxKtfNEYtPI+Utcyx+nQovZK0fXNKSsFVndqSOg+FzG+ZBHoUumGx6bX36hgf90N/3zEaMladYu4YR3vkXsAPx8fWwKypZRQAAAAASUVORK5CYII=\"}]}"],"hiddenFrames":[]}}
|
||||
1
sprite_generator/piskel/stars-20200215-212132.piskel
Normal file
1
sprite_generator/piskel/stars-20200215-212132.piskel
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"stars","description":"","fps":5,"height":3,"width":3,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":3,\"chunks\":[{\"layout\":[[0],[1],[2]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAADCAYAAABBCiV2AAAAKElEQVQYV2NkYGBg0Oy///96oSIjNhokD5YAMUAAWSFMM1gRPpNgmgGXCyUwWpMkWwAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[]}}
|
||||
1
sprite_generator/piskel/table-20200212-165904.piskel
Normal file
1
sprite_generator/piskel/table-20200212-165904.piskel
Normal file
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"table","description":"","fps":12,"height":3,"width":3,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAYAAABWKLW/AAAAGklEQVQYV2OUXPHtPwMUMII4zyO4GEF8FA4A35gKulFMUFMAAAAASUVORK5CYII=\"}]}"],"hiddenFrames":[]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"tree_creation","description":"","fps":8,"height":16,"width":8,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":9,\"chunks\":[{\"layout\":[[0],[1],[2],[3],[4],[5],[6],[7],[8]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAQCAYAAAC1MDndAAAAxklEQVRYR+2X2wmAMAxF7QBO6Q4O4Q5O6QBKC4FQTW9fhGrshyDRj5ycG9FN/wkE5m0/OYpjXZy/DxfrJ4ZDPDwkM4AkQyQ4BMkEoJQhZgBJhjztFx6hTwGiZmiBUqMpQ8wAqjUEAUL1oXaQhxDbIVmCLOpVHwoQTRNB0qy/ChACiOrSDost5QNQBZSKEGout+6f62nY5wBJcPgyLgGoCijXAtRkSYP8N2qIiGnESBNgsUE5n2LNCbcagt6/ARrZgNaI1kTsAp0eIOzLT+G1AAAAAElFTkSuQmCC\"}]}"],"hiddenFrames":[9,null]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"tree_dying","description":"","fps":6,"height":16,"width":8,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":4,\"chunks\":[{\"layout\":[[0],[1],[2],[3]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAiElEQVRIS2NkgALerrn/YWwQ/bksmRGZ//8/A4o8IyMDVeTBhqBbDrMY5giQ5Xzdc5Hdw/CpNJkB5gh0x8EUEiPPiMtymCEgi9AtR5ZDdhVMHUgPsYBqDsAWQsQ4Yvg4AORbsqJgwBMhKdkQ2YdUzYbojkAvA2gpj1KYwLLkqANGQ2A0BOgZAgDP2+UFIl4BHQAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[""]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"tree_falling_leaf","description":"","fps":6,"height":16,"width":8,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":9,\"chunks\":[{\"layout\":[[0],[1],[2],[3],[4],[5],[6],[7],[8]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAQCAYAAAC1MDndAAAAmElEQVRYR2NkgALerrn/YWwQ/bksmRGZP1LlwYGA7nlYwMACaSTLM+LyPHLqGcns0QAiEPujATQaQJQVEKOFNIFKCl6Vj9RqnFAzB2tbB1sbCCQGC0R0eXRLhpM8UQFEKABAATdcA5AqAYQvAGGBh9wgHUopjOYBhK27MpSy8KAIoMGchYdEAA1kFh7yAUTrLDwiAoiSLAwACTDY7MnyCD8AAAAASUVORK5CYII=\"}]}"],"hiddenFrames":[null]}}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"modelVersion":2,"piskel":{"name":"turret_controller","description":"","fps":12,"height":6,"width":7,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAGCAYAAAAPDoR2AAAAK0lEQVQYV2NkgALTV5/+w9gwmhFZ8rQYH5wPEicsCTMSQydIAl0Qbic+SQAqjBcXJX5MQQAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[]}}
|
||||
BIN
sprite_generator/spritesheets/beds.zip
Normal file
BIN
sprite_generator/spritesheets/beds.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/exhaust.zip
Normal file
BIN
sprite_generator/spritesheets/exhaust.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/heart_blinking.zip
Normal file
BIN
sprite_generator/spritesheets/heart_blinking.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/small_asteroid.zip
Normal file
BIN
sprite_generator/spritesheets/small_asteroid.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/small_character_moving.zip
Normal file
BIN
sprite_generator/spritesheets/small_character_moving.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/spaceship_idle.zip
Normal file
BIN
sprite_generator/spritesheets/spaceship_idle.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/stars.zip
Normal file
BIN
sprite_generator/spritesheets/stars.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/table.zip
Normal file
BIN
sprite_generator/spritesheets/table.zip
Normal file
Binary file not shown.
BIN
sprite_generator/spritesheets/turret_controller.zip
Normal file
BIN
sprite_generator/spritesheets/turret_controller.zip
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue