Adding Tiled projects for Speedy Blupi 1 and 2.
552
Speedy Blupi II/tiled/extensions/sblv.js
Normal file
@ -0,0 +1,552 @@
|
||||
const itemTypesArray = [
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
40,
|
||||
44,
|
||||
46,
|
||||
47,
|
||||
49,
|
||||
50,
|
||||
51,
|
||||
54,
|
||||
55,
|
||||
96,
|
||||
200,
|
||||
201,
|
||||
202,
|
||||
203
|
||||
];
|
||||
|
||||
var sblvMapFormat = {
|
||||
name: "Speedy Blupi 2 level",
|
||||
extension: "blp",
|
||||
|
||||
//Function for reading from a blp file
|
||||
read: function(fileName) {
|
||||
var file_path = FileInfo.path(FileInfo.fromNativeSeparators(fileName));
|
||||
var file = new BinaryFile(fileName, BinaryFile.ReadOnly);
|
||||
var data = new DataView(file.readAll());
|
||||
file.close();
|
||||
|
||||
var tilemap = new TileMap();
|
||||
tilemap.setSize(100, 100);
|
||||
tilemap.setTileSize(64, 64);
|
||||
tilemap.setProperty("major_version", data.getUint16(0, true));
|
||||
tilemap.setProperty("minor_version", data.getUint16(2, true));
|
||||
tilemap.setProperty("horz_scroll", data.getInt32(0xD4, true) == 100);
|
||||
tilemap.setProperty("vert_scroll", data.getInt32(0xD8, true) == 100);
|
||||
tilemap.setProperty("music", data.getInt16(0xDE, true) - 1);
|
||||
var bgnum = data.getInt16(0xE0, true);
|
||||
tilemap.setProperty("background", bgnum);
|
||||
var lvlname = '';
|
||||
for (var i = 0x178; i < 0x1A0; i++) {
|
||||
var c = data.getUint8(i);
|
||||
if (c == 0)
|
||||
break;
|
||||
lvlname += String.fromCharCode(c);
|
||||
}
|
||||
tilemap.setProperty("name", lvlname);
|
||||
|
||||
var objecttileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/object.tsx"));
|
||||
tilemap.addTileset(objecttileset);
|
||||
var blupi0tileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/blupi000.tsx"));
|
||||
tilemap.addTileset(blupi0tileset);
|
||||
var blupi1tileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/blupi001.tsx"));
|
||||
tilemap.addTileset(blupi1tileset);
|
||||
var blupi2tileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/blupi002.tsx"));
|
||||
tilemap.addTileset(blupi2tileset);
|
||||
var blupi3tileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/blupi003.tsx"));
|
||||
tilemap.addTileset(blupi3tileset);
|
||||
var elementtileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/element.tsx"));
|
||||
tilemap.addTileset(elementtileset);
|
||||
var explotileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/explo.tsx"));
|
||||
tilemap.addTileset(explotileset);
|
||||
var playertileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/Player Start.tsx"));
|
||||
tilemap.addTileset(playertileset);
|
||||
var objtypetileset = tiled.tilesetFormat("tsx").read(FileInfo.joinPaths(file_path, "../tiled/tilesets/Object Types.tsx"));
|
||||
tilemap.addTileset(objtypetileset);
|
||||
|
||||
var bgstr = bgnum.toString().padStart(3, "0");
|
||||
var bgfilename = FileInfo.joinPaths(file_path, "../IMAGE16/DECOR" + bgstr + ".BLP");
|
||||
if (!File.exists(bgfilename))
|
||||
bgfilename = FileInfo.joinPaths(file_path, "../IMAGE08/DECOR" + bgstr + ".BLP");
|
||||
|
||||
if (File.exists(bgfilename))
|
||||
{
|
||||
var bglayer = new ImageLayer("Background");
|
||||
bglayer.setImage(new Image(bgfilename, "bmp"), bgfilename);
|
||||
bglayer.parallaxFactor = Qt.point(0.5, 0.5);
|
||||
bglayer.repeatX = true;
|
||||
bglayer.repeatY = true;
|
||||
tilemap.addLayer(bglayer);
|
||||
bglayer.locked = true;
|
||||
}
|
||||
|
||||
var decolayer = new TileLayer("Decoration");
|
||||
decolayer.width = 100;
|
||||
decolayer.height = 100;
|
||||
fgedit = decolayer.edit();
|
||||
for (var y = 0; y < 100; ++y) {
|
||||
for (var x = 0; x < 100; ++x) {
|
||||
var id = data.getInt16(0x5184 + (y + (100 * x)) * 2, true);
|
||||
if (id != -1 && id < explotileset.tileCount) {
|
||||
fgedit.setTile(x, y, explotileset.tile(id));
|
||||
}
|
||||
}
|
||||
}
|
||||
fgedit.apply();
|
||||
tilemap.addLayer(decolayer);
|
||||
|
||||
var objlayer = new ObjectGroup("Objects");
|
||||
tilemap.addLayer(objlayer);
|
||||
|
||||
for (var i = 3; i >= 0; i--) {
|
||||
var stobj = new MapObject("Player " + (i + 1));
|
||||
var t = playertileset.tile(i);
|
||||
stobj.width = t.width;
|
||||
stobj.height = t.height;
|
||||
stobj.tile = t;
|
||||
stobj.x = data.getInt32(0x148 + (i * 8), true);
|
||||
stobj.y = data.getInt32(0x14C + (i * 8), true);
|
||||
stobj.tileFlippedHorizontally = !data.getInt32(0x168 + (i * 4), true);
|
||||
objlayer.addObject(stobj);
|
||||
}
|
||||
|
||||
for (var i = 0; i < 200; i++) {
|
||||
var type = itemTypesArray.indexOf(data.getUint16(0x9FA4 + (i * 0x30), true));
|
||||
if (type != -1) {
|
||||
var obj = new MapObject();
|
||||
obj.setProperty("type", tiled.propertyValue("ObjectTypes", type));
|
||||
obj.setProperty("a_to_b_time", data.getUint16(0x9FA6 + (i * 0x30), true));
|
||||
obj.setProperty("b_to_a_time", data.getUint16(0x9FA8 + (i * 0x30), true));
|
||||
obj.setProperty("a_wait", data.getUint16(0x9FAA + (i * 0x30), true));
|
||||
obj.setProperty("b_wait", data.getUint16(0x9FAC + (i * 0x30), true));
|
||||
obj.setProperty("field_A", data.getUint16(0x9FAE + (i * 0x30), true));
|
||||
obj.x = data.getInt32(0x9FB0 + (i * 0x30), true);
|
||||
obj.y = data.getInt32(0x9FB4 + (i * 0x30), true);
|
||||
var x2 = data.getInt32(0x9FB8 + (i * 0x30), true);
|
||||
var y2 = data.getInt32(0x9FBC + (i * 0x30), true);
|
||||
var pt = null;
|
||||
if (x2 != obj.x || y2 != obj.y) {
|
||||
pt = new MapObject();
|
||||
var t = objtypetileset.tile(0);
|
||||
pt.width = t.width;
|
||||
pt.height = t.height;
|
||||
pt.tile = t;
|
||||
pt.x = x2;
|
||||
pt.y = y2;
|
||||
}
|
||||
obj.setProperty("field_1C", data.getInt32(0x9FC0 + (i * 0x30), true));
|
||||
obj.setProperty("field_20", data.getInt32(0x9FC4 + (i * 0x30), true));
|
||||
obj.setProperty("field_24", data.getUint16(0x9FC8 + (i * 0x30), true));
|
||||
obj.setProperty("field_26", data.getUint16(0x9FCA + (i * 0x30), true));
|
||||
obj.setProperty("field_28", data.getUint16(0x9FCC + (i * 0x30), true));
|
||||
var ts = null;
|
||||
switch (data.getUint16(0x9FCE + (i * 0x30), true))
|
||||
{
|
||||
case 2:
|
||||
ts = blupi0tileset;
|
||||
break;
|
||||
case 9:
|
||||
ts = explotileset;
|
||||
break;
|
||||
case 10:
|
||||
ts = elementtileset;
|
||||
break;
|
||||
case 11:
|
||||
ts = blupi1tileset;
|
||||
break;
|
||||
case 12:
|
||||
ts = blupi2tileset;
|
||||
break;
|
||||
case 13:
|
||||
ts = blupi3tileset;
|
||||
break;
|
||||
default:
|
||||
ts = objecttileset;
|
||||
break;
|
||||
}
|
||||
var tid = data.getUint16(0x9FD0 + (i * 0x30), true);
|
||||
if (tid >= ts.tileCount)
|
||||
tid = 0;
|
||||
var t = ts.tile(tid);
|
||||
obj.width = t.width;
|
||||
obj.height = t.height;
|
||||
obj.tile = t;
|
||||
obj.setProperty("field_2E", data.getUint16(0x9FD2 + (i * 0x30), true));
|
||||
objlayer.addObject(obj);
|
||||
if (pt != null) {
|
||||
objlayer.addObject(pt);
|
||||
obj.setProperty("endpoint", pt);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var fglayer = new TileLayer("Foreground");
|
||||
fglayer.width = 100;
|
||||
fglayer.height = 100;
|
||||
var fgedit = fglayer.edit();
|
||||
for (var y = 0; y < 100; ++y) {
|
||||
for (var x = 0; x < 100; ++x) {
|
||||
var id = data.getInt16(0x364 + (y + (100 * x)) * 2, true);
|
||||
if (id != -1 && id < objecttileset.tileCount) {
|
||||
fgedit.setTile(x, y, objecttileset.tile(id));
|
||||
}
|
||||
}
|
||||
}
|
||||
fgedit.apply();
|
||||
tilemap.addLayer(fglayer);
|
||||
|
||||
return tilemap;
|
||||
|
||||
},
|
||||
|
||||
|
||||
write: function(map, fileName) {
|
||||
var buffer = new ArrayBuffer(50468);
|
||||
var data = new DataView(buffer);
|
||||
|
||||
data.setUint16(0, map.property("major_version") ?? 1, true);
|
||||
data.setUint16(2, map.property("minor_version") ?? 3, true);
|
||||
data.setInt32(0xD4, (map.property("horz_scroll") ?? true) ? 100 : 0, true);
|
||||
data.setInt32(0xD8, (map.property("vert_scroll") ?? true) ? 100 : 0, true);
|
||||
data.setInt16(0xDE, (map.property("music") ?? -1) + 1, true);
|
||||
data.setInt16(0xE0, map.property("background") ?? 0, true);
|
||||
var lvlname = map.property("name") ?? '';
|
||||
for (var i = 0; i < Math.min(lvlname.length, 40); i++)
|
||||
data.setUint8(0x178 + i, lvlname.charCodeAt(i));
|
||||
|
||||
for (var lid = 0; lid < map.layerCount; ++lid) {
|
||||
var layer = map.layerAt(lid);
|
||||
switch (layer.name)
|
||||
{
|
||||
case "Foreground":
|
||||
if (layer.isTileLayer) {
|
||||
for (var y = 0; y < 100; ++y) {
|
||||
for (var x = 0; x < 100; ++x) {
|
||||
var id = -1;
|
||||
var tile = layer.tileAt(x, y);
|
||||
if (tile != null)
|
||||
id = tile.id;
|
||||
data.setInt16(0x364 + (y + (100 * x)) * 2, id, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "Decoration":
|
||||
if (layer.isTileLayer) {
|
||||
for (var y = 0; y < 100; ++y) {
|
||||
for (var x = 0; x < 100; ++x) {
|
||||
var id = -1;
|
||||
var tile = layer.tileAt(x, y);
|
||||
if (tile != null)
|
||||
id = tile.id;
|
||||
data.setInt16(0x5184 + (y + (100 * x)) * 2, id, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "Objects":
|
||||
if (layer.isObjectLayer) {
|
||||
var objcnt = 0;
|
||||
for (var oid = 0; oid < layer.objectCount; oid++) {
|
||||
var obj = layer.objectAt(oid);
|
||||
var className = obj.className;
|
||||
if (className.length == 0 && obj.tile != null)
|
||||
className = obj.tile.className;
|
||||
switch (className)
|
||||
{
|
||||
case "Blupi":
|
||||
var pn = 0;
|
||||
if (obj.tile != null)
|
||||
pn = obj.tile.id;
|
||||
data.setInt32(0x148 + (pn * 8), obj.x, true);
|
||||
data.setInt32(0x14C + (pn * 8), obj.y, true);
|
||||
data.setInt32(0x168 + (pn * 4), obj.tileFlippedHorizontally ? 0 : 1, true);
|
||||
break;
|
||||
case "Object":
|
||||
if (objcnt >= 200)
|
||||
continue;
|
||||
var type = 0;
|
||||
var prop = obj.resolvedProperty("type");
|
||||
if (prop != null)
|
||||
type = prop.value;
|
||||
data.setUint16(0x9FA4 + (objcnt * 0x30), itemTypesArray[type], true);
|
||||
data.setUint16(0x9FA6 + (objcnt * 0x30), obj.resolvedProperty("a_to_b_time") ?? 0, true);
|
||||
data.setUint16(0x9FA8 + (objcnt * 0x30), obj.resolvedProperty("b_to_a_time") ?? 0, true);
|
||||
data.setUint16(0x9FAA + (objcnt * 0x30), obj.resolvedProperty("a_wait") ?? 0, true);
|
||||
data.setUint16(0x9FAC + (objcnt * 0x30), obj.resolvedProperty("b_wait") ?? 0, true);
|
||||
data.setUint16(0x9FAE + (objcnt * 0x30), obj.resolvedProperty("field_A") ?? 0, true);
|
||||
data.setInt32(0x9FB0 + (objcnt * 0x30), obj.x, true);
|
||||
data.setInt32(0x9FB4 + (objcnt * 0x30), obj.y, true);
|
||||
var x2 = obj.x;
|
||||
var y2 = obj.y;
|
||||
var endpoint = obj.resolvedProperty("endpoint");
|
||||
if (endpoint != null && endpoint.x != null && endpoint.y != null) {
|
||||
x2 = endpoint.x;
|
||||
y2 = endpoint.y;
|
||||
}
|
||||
data.setInt32(0x9FB8 + (objcnt * 0x30), x2, true);
|
||||
data.setInt32(0x9FBC + (objcnt * 0x30), y2, true);
|
||||
data.setInt32(0x9FC0 + (objcnt * 0x30), obj.resolvedProperty("field_1C") ?? 0, true);
|
||||
data.setInt32(0x9FC4 + (objcnt * 0x30), obj.resolvedProperty("field_20") ?? 0, true);
|
||||
data.setUint16(0x9FC8 + (objcnt * 0x30), obj.resolvedProperty("field_24") ?? 0, true);
|
||||
data.setUint16(0x9FCA + (objcnt * 0x30), obj.resolvedProperty("field_26") ?? 0, true);
|
||||
data.setUint16(0x9FCC + (objcnt * 0x30), obj.resolvedProperty("field_28") ?? 0, true);
|
||||
if (obj.tile != null) {
|
||||
switch (obj.tile.tileset.name)
|
||||
{
|
||||
case "object":
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 1, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), obj.tile.id, true);
|
||||
break;
|
||||
case "blupi000":
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 2, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), obj.tile.id, true);
|
||||
break;
|
||||
case "explo":
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 9, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), obj.tile.id, true);
|
||||
break;
|
||||
case "element":
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), obj.tile.id, true);
|
||||
break;
|
||||
case "blupi001":
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 11, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), obj.tile.id, true);
|
||||
break;
|
||||
case "blupi002":
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 12, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), obj.tile.id, true);
|
||||
break;
|
||||
case "blupi003":
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 13, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), obj.tile.id, true);
|
||||
break;
|
||||
case "Object Types":
|
||||
switch (obj.tile.id)
|
||||
{
|
||||
case 1:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 12, true);
|
||||
break;
|
||||
case 2:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 48, true);
|
||||
break;
|
||||
case 3:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 57, true);
|
||||
break;
|
||||
case 4:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 0, true);
|
||||
break;
|
||||
case 5:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 21, true);
|
||||
break;
|
||||
case 6:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 29, true);
|
||||
break;
|
||||
case 7:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 1, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 32, true);
|
||||
break;
|
||||
case 8:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 68, true);
|
||||
break;
|
||||
case 9:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 69, true);
|
||||
break;
|
||||
case 10:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 78, true);
|
||||
break;
|
||||
case 11:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 89, true);
|
||||
break;
|
||||
case 12:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 90, true);
|
||||
break;
|
||||
case 13:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 125, true);
|
||||
break;
|
||||
case 14:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 129, true);
|
||||
break;
|
||||
case 15:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 151, true);
|
||||
break;
|
||||
case 16:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 136, true);
|
||||
break;
|
||||
case 17:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 167, true);
|
||||
break;
|
||||
case 18:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 177, true);
|
||||
break;
|
||||
case 19:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 178, true);
|
||||
break;
|
||||
case 20:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 1, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 238, true);
|
||||
break;
|
||||
case 21:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 2, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 61, true);
|
||||
break;
|
||||
case 22:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 11, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 61, true);
|
||||
break;
|
||||
case 23:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 12, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 61, true);
|
||||
break;
|
||||
case 24:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 13, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 61, true);
|
||||
break;
|
||||
case 25:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 2, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 237, true);
|
||||
break;
|
||||
case 26:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 11, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 237, true);
|
||||
break;
|
||||
case 27:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 12, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 237, true);
|
||||
break;
|
||||
case 28:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 13, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 237, true);
|
||||
break;
|
||||
case 29:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 168, true);
|
||||
break;
|
||||
case 30:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 187, true);
|
||||
break;
|
||||
case 31:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 195, true);
|
||||
break;
|
||||
case 32:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 208, true);
|
||||
break;
|
||||
case 33:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 1, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 311, true);
|
||||
break;
|
||||
case 34:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 212, true);
|
||||
break;
|
||||
case 35:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 219, true);
|
||||
break;
|
||||
case 36:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 226, true);
|
||||
break;
|
||||
case 37:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 242, true);
|
||||
break;
|
||||
case 38:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 252, true);
|
||||
break;
|
||||
case 39:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 10, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 256, true);
|
||||
break;
|
||||
case 40:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 2, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 257, true);
|
||||
break;
|
||||
case 41:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 11, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 257, true);
|
||||
break;
|
||||
case 42:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 12, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 257, true);
|
||||
break;
|
||||
case 43:
|
||||
data.setUint16(0x9FCE + (objcnt * 0x30), 13, true);
|
||||
data.setUint16(0x9FD0 + (objcnt * 0x30), 257, true);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
data.setUint16(0x9FD2 + (objcnt * 0x30), obj.resolvedProperty("field_2E") ?? 0, true);
|
||||
objcnt++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var file = new BinaryFile(fileName, BinaryFile.WriteOnly);
|
||||
file.write(buffer);
|
||||
file.commit();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
tiled.registerMapFormat("sb2lv", sblvMapFormat);
|
143
Speedy Blupi II/tiled/speedyblupi2.tiled-project
Normal file
@ -0,0 +1,143 @@
|
||||
{
|
||||
"automappingRulesFile": "",
|
||||
"commands": [
|
||||
],
|
||||
"extensionsPath": "extensions",
|
||||
"folders": [
|
||||
"tilesets",
|
||||
"../DATA"
|
||||
],
|
||||
"propertyTypes": [
|
||||
{
|
||||
"color": "#ffa0a0a4",
|
||||
"id": 1,
|
||||
"members": [
|
||||
{
|
||||
"name": "a_to_b_time",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "a_wait",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "b_to_a_time",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "b_wait",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "endpoint",
|
||||
"type": "object",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "field_1C",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "field_20",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "field_24",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "field_26",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "field_28",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "field_2E",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "field_A",
|
||||
"type": "int",
|
||||
"value": 0
|
||||
},
|
||||
{
|
||||
"name": "type",
|
||||
"propertyType": "ObjectTypes",
|
||||
"type": "string",
|
||||
"value": "Lift"
|
||||
}
|
||||
],
|
||||
"name": "Object",
|
||||
"type": "class",
|
||||
"useAs": [
|
||||
"object"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "ObjectTypes",
|
||||
"storageType": "string",
|
||||
"type": "enum",
|
||||
"values": [
|
||||
"Lift",
|
||||
"Bomb",
|
||||
"Hanging Bomb",
|
||||
"Bulldozer",
|
||||
"Treasure Chest",
|
||||
"Egg",
|
||||
"Goal",
|
||||
"Explosion 1",
|
||||
"Explosion 2",
|
||||
"Explosion 3",
|
||||
"Explosion 4",
|
||||
"Wooden Case",
|
||||
"Helicopter",
|
||||
"Splash",
|
||||
"Bubbles",
|
||||
"Moving Bomb",
|
||||
"Fish",
|
||||
"Jeep",
|
||||
"Bird",
|
||||
"Key",
|
||||
"Skateboard",
|
||||
"Shield",
|
||||
"Lollypop",
|
||||
"Sparkles",
|
||||
"Glue Tank",
|
||||
"Glue Supply",
|
||||
"Invisibility Potion",
|
||||
"Recharging Device",
|
||||
"Heliported Enemy",
|
||||
"Motorized Enemy",
|
||||
"Stuck Enemy",
|
||||
"Inverter",
|
||||
"Wasp",
|
||||
"Hovercraft",
|
||||
"Lift With Conveyer Belt",
|
||||
"Red Key",
|
||||
"Green Key",
|
||||
"Blue Key",
|
||||
"Slime Creature",
|
||||
"Dynamite",
|
||||
"Homing Bomb",
|
||||
"Yellow Bomb",
|
||||
"Orange Bomb",
|
||||
"Blue Bomb",
|
||||
"Green Bomb"
|
||||
],
|
||||
"valuesAsFlags": false
|
||||
}
|
||||
]
|
||||
}
|
264
Speedy Blupi II/tiled/tilesets/Object Types.tsx
Normal file
@ -0,0 +1,264 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<tileset version="1.2" tiledversion="1.3.4" name="Object Types" tilecount="34" objectalignment="topleft">
|
||||
<tile id="0" class="Endpoint">
|
||||
<image source="object/31.png"/>
|
||||
</tile>
|
||||
<tile id="1" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Bomb"/>
|
||||
</properties>
|
||||
<image source="element/12.png"/>
|
||||
</tile>
|
||||
<tile id="2" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Hanging Bomb"/>
|
||||
</properties>
|
||||
<image source="element/48.png"/>
|
||||
</tile>
|
||||
<tile id="3" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Bulldozer"/>
|
||||
</properties>
|
||||
<image source="element/57.png"/>
|
||||
</tile>
|
||||
<tile id="4" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Treasure Chest"/>
|
||||
</properties>
|
||||
<image source="element/0.png"/>
|
||||
</tile>
|
||||
<tile id="5" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Egg"/>
|
||||
</properties>
|
||||
<image source="element/21.png"/>
|
||||
</tile>
|
||||
<tile id="6" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Goal"/>
|
||||
</properties>
|
||||
<image source="element/29.png"/>
|
||||
</tile>
|
||||
<tile id="7" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Wooden Case"/>
|
||||
</properties>
|
||||
<image source="object/32.png"/>
|
||||
</tile>
|
||||
<tile id="8" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Helicopter"/>
|
||||
</properties>
|
||||
<image source="element/68.png"/>
|
||||
</tile>
|
||||
<tile id="9" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Moving Bomb"/>
|
||||
</properties>
|
||||
<image source="element/69.png"/>
|
||||
</tile>
|
||||
<tile id="10" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Fish"/>
|
||||
</properties>
|
||||
<image source="element/78.png"/>
|
||||
</tile>
|
||||
<tile id="11" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Jeep"/>
|
||||
</properties>
|
||||
<image source="element/89.png"/>
|
||||
</tile>
|
||||
<tile id="12" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Bird"/>
|
||||
</properties>
|
||||
<image source="element/90.png"/>
|
||||
</tile>
|
||||
<tile id="13" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Key"/>
|
||||
</properties>
|
||||
<image source="element/125.png"/>
|
||||
</tile>
|
||||
<tile id="14" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Skateboard"/>
|
||||
</properties>
|
||||
<image source="element/129.png"/>
|
||||
</tile>
|
||||
<tile id="15" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Shield"/>
|
||||
</properties>
|
||||
<image source="element/151.png"/>
|
||||
</tile>
|
||||
<tile id="16" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Lollypop"/>
|
||||
</properties>
|
||||
<image source="element/136.png"/>
|
||||
</tile>
|
||||
<tile id="17" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Glue Tank"/>
|
||||
</properties>
|
||||
<image source="element/167.png"/>
|
||||
</tile>
|
||||
<tile id="18" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Glue Supply"/>
|
||||
</properties>
|
||||
<image source="element/177.png"/>
|
||||
</tile>
|
||||
<tile id="19" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Invisibility Potion"/>
|
||||
</properties>
|
||||
<image source="element/178.png"/>
|
||||
</tile>
|
||||
<tile id="20" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Recharging Device"/>
|
||||
</properties>
|
||||
<image source="object/238.png"/>
|
||||
</tile>
|
||||
<tile id="21" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Heliported Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi000/61.png"/>
|
||||
</tile>
|
||||
<tile id="22" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Heliported Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi001/61.png"/>
|
||||
</tile>
|
||||
<tile id="23" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Heliported Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi002/61.png"/>
|
||||
</tile>
|
||||
<tile id="24" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Heliported Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi003/61.png"/>
|
||||
</tile>
|
||||
<tile id="25" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Motorized Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi000/237.png"/>
|
||||
</tile>
|
||||
<tile id="26" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Motorized Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi001/237.png"/>
|
||||
</tile>
|
||||
<tile id="27" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Motorized Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi002/237.png"/>
|
||||
</tile>
|
||||
<tile id="28" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Motorized Enemy"/>
|
||||
</properties>
|
||||
<image source="blupi003/237.png"/>
|
||||
</tile>
|
||||
<tile id="29" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Stuck Enemy"/>
|
||||
</properties>
|
||||
<image source="element/168.png"/>
|
||||
</tile>
|
||||
<tile id="30" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Inverter"/>
|
||||
</properties>
|
||||
<image source="element/187.png"/>
|
||||
</tile>
|
||||
<tile id="31" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Wasp"/>
|
||||
</properties>
|
||||
<image source="element/195.png"/>
|
||||
</tile>
|
||||
<tile id="32" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Hovercraft"/>
|
||||
</properties>
|
||||
<image source="element/208.png"/>
|
||||
</tile>
|
||||
<tile id="33" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Lift With Conveyer Belt"/>
|
||||
</properties>
|
||||
<image source="object/311.png"/>
|
||||
</tile>
|
||||
<tile id="34" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Red Key"/>
|
||||
</properties>
|
||||
<image source="element/212.png"/>
|
||||
</tile>
|
||||
<tile id="35" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Green Key"/>
|
||||
</properties>
|
||||
<image source="element/219.png"/>
|
||||
</tile>
|
||||
<tile id="36" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Blue Key"/>
|
||||
</properties>
|
||||
<image source="element/226.png"/>
|
||||
</tile>
|
||||
<tile id="37" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Slime Creature"/>
|
||||
</properties>
|
||||
<image source="element/242.png"/>
|
||||
</tile>
|
||||
<tile id="38" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Dynamite"/>
|
||||
</properties>
|
||||
<image source="element/252.png"/>
|
||||
</tile>
|
||||
<tile id="39" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Moving Bomb"/>
|
||||
</properties>
|
||||
<image source="element/256.png"/>
|
||||
</tile>
|
||||
<tile id="40" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Yellow Bomb"/>
|
||||
</properties>
|
||||
<image source="blupi000/257.png"/>
|
||||
</tile>
|
||||
<tile id="41" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Orange Bomb"/>
|
||||
</properties>
|
||||
<image source="blupi001/257.png"/>
|
||||
</tile>
|
||||
<tile id="42" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Blue Bomb"/>
|
||||
</properties>
|
||||
<image source="blupi002/257.png"/>
|
||||
</tile>
|
||||
<tile id="43" class="Object">
|
||||
<properties>
|
||||
<property name="type" propertytype="ObjectTypes" value="Green Bomb"/>
|
||||
</properties>
|
||||
<image source="blupi003/257.png"/>
|
||||
</tile>
|
||||
</tileset>
|
16
Speedy Blupi II/tiled/tilesets/Player Start.tsx
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<tileset version="1.2" tiledversion="1.3.4" name="Player Start" tilecount="291" objectalignment="topleft">
|
||||
<transformations hflip="1" />
|
||||
<tile id="0" class="Blupi">
|
||||
<image source="blupi000/0.png" />
|
||||
</tile>
|
||||
<tile id="1" class="Blupi">
|
||||
<image source="blupi001/0.png" />
|
||||
</tile>
|
||||
<tile id="2" class="Blupi">
|
||||
<image source="blupi002/0.png" />
|
||||
</tile>
|
||||
<tile id="3" class="Blupi">
|
||||
<image source="blupi003/0.png" />
|
||||
</tile>
|
||||
</tileset>
|
1011
Speedy Blupi II/tiled/tilesets/blupi000.tsx
Normal file
BIN
Speedy Blupi II/tiled/tilesets/blupi000/0.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/1.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/10.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/100.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/101.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/102.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/103.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/104.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/105.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/106.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/107.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/108.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/109.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/11.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/110.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/111.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/112.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/113.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/114.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/115.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/116.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/117.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/118.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/119.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/12.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/120.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/121.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/122.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/123.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/124.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/125.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/126.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/127.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/128.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/129.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/13.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/130.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/131.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/132.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/133.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/134.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/135.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/136.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/137.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/138.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/139.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/14.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/140.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/141.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/142.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/143.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/144.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/145.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/146.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/147.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/148.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/149.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/15.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/150.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/151.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/152.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/153.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/154.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/155.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/156.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/157.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/158.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/159.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/16.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/160.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/161.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/162.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/163.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/164.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/165.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/166.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/167.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/168.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/169.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/17.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/170.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/171.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/172.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/173.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/174.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/175.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/176.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/177.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/178.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/179.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/18.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/180.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/181.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/182.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
Speedy Blupi II/tiled/tilesets/blupi000/183.png
Normal file
After Width: | Height: | Size: 1.5 KiB |