Merge pull request #4 from luksamuk/palette-rearrange
Rearrange palettes, add parallax, fix springs, add diagonal springs
11
Makefile
|
@ -6,6 +6,7 @@ COL16SRC := $(shell ls ./assets/levels/**/tiles16.tsx)
|
|||
MAP128SRC := $(shell ls ./assets/levels/**/tilemap128.tmx)
|
||||
LVLSRC := $(shell ls ./assets/levels/**/Z*.tmx)
|
||||
MDLSRC := $(shell ls ./assets/models/**/*.rsd)
|
||||
PRLSRC := $(shell ls ./assets/levels/**/parallax.toml)
|
||||
|
||||
MAP16OUT := $(addsuffix MAP16.MAP,$(dir $(MAP16SRC)))
|
||||
COL16OUT := $(addsuffix MAP16.COL,$(dir $(COL16SRC)))
|
||||
|
@ -13,6 +14,7 @@ MAP128OUT := $(addsuffix MAP128.MAP,$(dir $(COL16SRC)))
|
|||
LVLOUT := $(addsuffix .LVL,$(basename $(LVLSRC)))
|
||||
OMPOUT := $(addsuffix .OMP,$(basename $(LVLSRC)))
|
||||
MDLOUT := $(addsuffix .mdl,$(basename $(MDLSRC)))
|
||||
PRLOUT := $(addsuffix PRL.PRL,$(dir $(PRLSRC)))
|
||||
|
||||
.PHONY: clean ./build/engine.cue run configure chd cook iso elf debug cooktest purge rebuild repack packrun
|
||||
|
||||
|
@ -95,9 +97,10 @@ mdls: $(MDLOUT)
|
|||
map16: $(MAP16OUT) $(COL16OUT)
|
||||
map128: $(MAP128OUT)
|
||||
lvl: $(LVLOUT)
|
||||
prl: $(PRLOUT)
|
||||
objs: $(OMPOUT)
|
||||
|
||||
cook: mdls map16 map128 lvl objs
|
||||
cook: mdls map16 map128 lvl objs prl
|
||||
|
||||
cleancook:
|
||||
rm -rf assets/models/**/*.mdl \
|
||||
|
@ -106,6 +109,7 @@ cleancook:
|
|||
assets/levels/**/*.LVL \
|
||||
assets/levels/**/*.OMP \
|
||||
assets/levels/**/*.OTD \
|
||||
assets/levels/**/*.PRL \
|
||||
assets/levels/**/collision16.json \
|
||||
assets/levels/**/tilemap128.csv \
|
||||
assets/levels/**/tilemap128_solid.csv \
|
||||
|
@ -152,3 +156,8 @@ cleancook:
|
|||
# (Depends on files such as Z1.tmx, Z2.tmx, etc., generated on Tiled)
|
||||
%.OMP: %.tmx
|
||||
./tools/cookobj/cookobj.py $<
|
||||
|
||||
# Level parallax data
|
||||
# (Depends on a specific file named parallax.toml within level directory)
|
||||
%/PRL.PRL: %/parallax.toml
|
||||
./tools/buildprl/buildprl.py $<
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
[TIM Files]
|
||||
File_0=Z:\home\alchemist\git\engine-psx\assets\levels\R0\tiles.TIM
|
||||
File_1=Z:\home\alchemist\git\engine-psx\assets\levels\R1\tiles.TIM
|
||||
File_2=Z:\home\alchemist\git\engine-psx\assets\levels\R2\tiles.TIM
|
||||
File_3=Z:\home\alchemist\git\engine-psx\assets\sprites\SONIC.TIM
|
||||
File_4=Z:\home\alchemist\git\engine-psx\assets\levels\COMMON\obj.TIM
|
||||
[Locked Images]
|
||||
File_0=Z:\home\alchemist\git\engine-psx\assets\sprites\SONIC.TIM
|
||||
File_0=Z:\home\alchemist\git\engine-psx\assets\levels\COMMON\obj.TIM
|
||||
File_1=Z:\home\alchemist\git\engine-psx\assets\levels\R0\BG0.TIM
|
||||
File_2=Z:\home\alchemist\git\engine-psx\assets\levels\R0\tiles.TIM
|
||||
File_3=Z:\home\alchemist\git\engine-psx\assets\levels\R1\tiles.TIM
|
||||
File_4=Z:\home\alchemist\git\engine-psx\assets\levels\R1\BG0.TIM
|
||||
File_5=Z:\home\alchemist\git\engine-psx\assets\levels\R2\BG0.TIM
|
||||
File_6=Z:\home\alchemist\git\engine-psx\assets\levels\R2\BG1.TIM
|
||||
File_7=Z:\home\alchemist\git\engine-psx\assets\levels\R2\tiles.TIM
|
||||
File_8=Z:\home\alchemist\git\engine-psx\assets\sprites\SONIC.TIM
|
||||
[Graphics Mode]
|
||||
Width=320
|
||||
Height=240
|
||||
|
|
1
assets/levels/.gitignore
vendored
|
@ -3,6 +3,7 @@
|
|||
*.COL
|
||||
*.OMP
|
||||
*.OTD
|
||||
*.PRL
|
||||
*.psxlvl
|
||||
**/collision16.json
|
||||
**/tilemap128.csv
|
||||
|
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
BIN
assets/levels/R0/BG0.TIM
Normal file
BIN
assets/levels/R0/BG0.png
Normal file
After Width: | Height: | Size: 911 B |
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#3f007f" nextlayerid="5" nextobjectid="142">
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#3f007f" nextlayerid="5" nextobjectid="155">
|
||||
<tileset firstgid="1" source="128x128.tsx"/>
|
||||
<tileset firstgid="45" source="../COMMON/objects_common.tsx"/>
|
||||
<tileset firstgid="49" source="../COMMON/objects_common.tsx"/>
|
||||
<layer id="1" name="LAYER0" width="255" height="31">
|
||||
<data encoding="csv">
|
||||
23,0,0,0,7,12,12,12,12,12,38,9,39,12,12,12,12,12,12,12,12,12,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -9,12 +9,12 @@
|
|||
23,0,0,0,0,0,0,0,0,0,0,0,20,20,33,2,2,5,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,12,38,9,39,3,0,0,0,6,2,2,32,32,32,0,12,12,12,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,8,0,0,0,7,12,12,12,12,12,12,0,0,24,30,12,0,7,12,12,12,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,0,0,0,0,7,12,0,0,0,0,24,0,0,0,0,0,7,12,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,45,0,0,0,0,0,0,7,12,0,0,0,0,24,0,0,0,0,0,7,12,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,12,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,3,0,0,0,4,12,3,43,42,0,12,0,0,4,17,12,0,0,0,0,0,0,12,12,12,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,12,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,12,13,2,14,12,12,38,0,9,9,9,0,0,9,18,9,0,0,0,0,0,0,7,12,12,12,12,3,0,0,0,0,0,0,0,0,0,0,6,2,14,12,12,17,17,6,2,2,2,2,2,5,0,10,39,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,0,20,31,20,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,7,12,12,9,17,6,2,2,28,12,9,11,0,0,0,0,0,4,12,0,0,0,0,12,12,3,0,0,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,6,30,30,32,32,32,2,2,2,14,12,12,12,12,12,12,13,2,5,0,0,0,0,0,0,0,0,0,4,8,0,0,0,0,0,0,0,0,0,0,4,12,0,20,20,20,20,12,12,38,0,0,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,9,9,11,0,0,0,0,0,10,9,9,9,9,9,9,11,0,0,0,0,10,9,9,9,9,9,9,9,9,9,11,0,0,0,0,0,0,0,0,0,0,4,9,0,0,0,24,19,19,12,8,0,0,4,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,9,9,11,0,0,0,0,0,10,9,9,9,9,9,9,11,0,0,0,0,10,9,9,9,9,9,9,9,9,9,11,0,0,0,0,0,0,0,0,0,0,4,9,0,0,0,24,0,0,12,8,0,0,4,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,14,12,0,19,2,5,25,18,20,12,0,0,4,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,9,9,9,9,9,18,20,12,12,13,19,0,12,0,0,39,12,23,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,7,3,0,0,6,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,14,12,12,12,2,2,2,2,2,2,5,0,6,2,19,19,17,12,3,0,0,10,26,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -39,127 +39,140 @@
|
|||
</layer>
|
||||
<group id="4" name="OBJECTS">
|
||||
<objectgroup id="3" name="COMMON">
|
||||
<object id="1" gid="56" x="8100" y="1984" width="64" height="64"/>
|
||||
<object id="2" gid="53" x="512" y="384" width="64" height="64"/>
|
||||
<object id="3" gid="53" x="896" y="512" width="64" height="64"/>
|
||||
<object id="7" gid="53" x="2464" y="384" width="64" height="64"/>
|
||||
<object id="9" gid="46" x="2002" y="576" width="64" height="64">
|
||||
<object id="1" gid="60" x="8100" y="1984" width="64" height="64"/>
|
||||
<object id="2" gid="57" x="512" y="384" width="64" height="64"/>
|
||||
<object id="3" gid="57" x="896" y="512" width="64" height="64"/>
|
||||
<object id="7" gid="57" x="2464" y="384" width="64" height="64"/>
|
||||
<object id="9" gid="50" x="2002" y="576" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="SHIELD"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="10" gid="46" x="1972" y="576" width="64" height="64">
|
||||
<object id="10" gid="50" x="1972" y="576" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="11" gid="49" x="1056.25" y="1055.88" width="64" height="64"/>
|
||||
<object id="13" gid="55" x="1054.75" y="927.546" width="64" height="64"/>
|
||||
<object id="14" gid="55" x="1054.75" y="856.212" width="64" height="64"/>
|
||||
<object id="15" gid="55" x="1033.75" y="869.545" width="64" height="64"/>
|
||||
<object id="16" gid="55" x="1076.75" y="869.545" width="64" height="64"/>
|
||||
<object id="17" gid="46" x="1362.38" y="896" width="64" height="64">
|
||||
<object id="11" gid="53" x="1056.25" y="1055.88" width="64" height="64"/>
|
||||
<object id="13" gid="59" x="1054.75" y="927.546" width="64" height="64"/>
|
||||
<object id="14" gid="59" x="1054.75" y="856.212" width="64" height="64"/>
|
||||
<object id="15" gid="59" x="1033.75" y="869.545" width="64" height="64"/>
|
||||
<object id="16" gid="59" x="1076.75" y="869.545" width="64" height="64"/>
|
||||
<object id="17" gid="50" x="1362.38" y="896" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="INVINCIBILITY"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="18" gid="46" x="1329.38" y="896" width="64" height="64">
|
||||
<object id="18" gid="50" x="1329.38" y="896" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="19" gid="46" x="401.25" y="959.75" width="64" height="64">
|
||||
<object id="19" gid="50" x="401.25" y="959.75" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="SPEEDSHOES"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="20" gid="46" x="433.25" y="959.75" width="64" height="64">
|
||||
<object id="20" gid="50" x="433.25" y="959.75" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="21" gid="46" x="2066" y="768" width="64" height="64">
|
||||
<object id="21" gid="50" x="2066" y="768" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="SUPER"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="22" gid="53" x="5791" y="1792" width="64" height="64"/>
|
||||
<object id="23" gid="53" x="2714" y="511" width="64" height="64"/>
|
||||
<object id="34" gid="45" x="3249.33" y="741.167" width="64" height="64"/>
|
||||
<object id="35" gid="45" x="3273.33" y="752.167" width="64" height="64"/>
|
||||
<object id="36" gid="45" x="3297.33" y="764.167" width="64" height="64"/>
|
||||
<object id="40" gid="53" x="351.212" y="1291.18" width="64" height="64"/>
|
||||
<object id="41" gid="53" x="4126" y="1027" width="64" height="64"/>
|
||||
<object id="49" gid="45" x="5306" y="1488.5" width="64" height="64"/>
|
||||
<object id="50" gid="45" x="5330" y="1476.5" width="64" height="64"/>
|
||||
<object id="51" gid="45" x="5354" y="1465.5" width="64" height="64"/>
|
||||
<object id="67" gid="45" x="5575.5" y="1306" width="64" height="64"/>
|
||||
<object id="68" gid="45" x="5593.5" y="1287" width="64" height="64"/>
|
||||
<object id="69" gid="45" x="5612.5" y="1269" width="64" height="64"/>
|
||||
<object id="73" gid="45" x="4098.5" y="1248" width="64" height="64"/>
|
||||
<object id="74" gid="45" x="4116.5" y="1229" width="64" height="64"/>
|
||||
<object id="75" gid="45" x="4135.5" y="1211" width="64" height="64"/>
|
||||
<object id="77" gid="53" x="929" y="1728" width="64" height="64"/>
|
||||
<object id="78" gid="53" x="1313" y="1920" width="64" height="64"/>
|
||||
<object id="79" gid="53" x="1568" y="1856" width="64" height="64"/>
|
||||
<object id="80" gid="53" x="1825.5" y="1920.5" width="64" height="64"/>
|
||||
<object id="81" gid="53" x="2080" y="1855.5" width="64" height="64"/>
|
||||
<object id="82" gid="53" x="2337" y="1919.5" width="64" height="64"/>
|
||||
<object id="83" gid="53" x="2592.5" y="1856" width="64" height="64"/>
|
||||
<object id="85" gid="53" x="3106.5" y="1919.5" width="64" height="64"/>
|
||||
<object id="86" gid="53" x="4064.67" y="1790.67" width="64" height="64"/>
|
||||
<object id="87" gid="53" x="5152" y="960" width="64" height="64"/>
|
||||
<object id="88" gid="53" x="5859.33" y="895.333" width="64" height="64"/>
|
||||
<object id="89" gid="53" x="6558" y="960.667" width="64" height="64"/>
|
||||
<object id="90" gid="53" x="5974" y="1248.67" width="64" height="64"/>
|
||||
<object id="91" gid="46" x="6464" y="1248" width="64" height="64">
|
||||
<object id="22" gid="57" x="5791" y="1792" width="64" height="64"/>
|
||||
<object id="23" gid="57" x="2714" y="511" width="64" height="64"/>
|
||||
<object id="34" gid="49" x="3249.33" y="741.167" width="64" height="64"/>
|
||||
<object id="35" gid="49" x="3273.33" y="752.167" width="64" height="64"/>
|
||||
<object id="36" gid="49" x="3297.33" y="764.167" width="64" height="64"/>
|
||||
<object id="40" gid="57" x="351.212" y="1291.18" width="64" height="64"/>
|
||||
<object id="41" gid="57" x="4126" y="1027" width="64" height="64"/>
|
||||
<object id="49" gid="49" x="5306" y="1488.5" width="64" height="64"/>
|
||||
<object id="50" gid="49" x="5330" y="1476.5" width="64" height="64"/>
|
||||
<object id="51" gid="49" x="5354" y="1465.5" width="64" height="64"/>
|
||||
<object id="67" gid="49" x="5575.5" y="1306" width="64" height="64"/>
|
||||
<object id="68" gid="49" x="5593.5" y="1287" width="64" height="64"/>
|
||||
<object id="69" gid="49" x="5612.5" y="1269" width="64" height="64"/>
|
||||
<object id="73" gid="49" x="4098.5" y="1248" width="64" height="64"/>
|
||||
<object id="74" gid="49" x="4116.5" y="1229" width="64" height="64"/>
|
||||
<object id="75" gid="49" x="4135.5" y="1211" width="64" height="64"/>
|
||||
<object id="77" gid="57" x="929" y="1728" width="64" height="64"/>
|
||||
<object id="78" gid="57" x="1313" y="1920" width="64" height="64"/>
|
||||
<object id="79" gid="57" x="1568" y="1856" width="64" height="64"/>
|
||||
<object id="80" gid="57" x="1825.5" y="1920.5" width="64" height="64"/>
|
||||
<object id="81" gid="57" x="2080" y="1855.5" width="64" height="64"/>
|
||||
<object id="82" gid="57" x="2337" y="1919.5" width="64" height="64"/>
|
||||
<object id="83" gid="57" x="2592.5" y="1856" width="64" height="64"/>
|
||||
<object id="85" gid="57" x="3106.5" y="1919.5" width="64" height="64"/>
|
||||
<object id="86" gid="57" x="4064.67" y="1790.67" width="64" height="64"/>
|
||||
<object id="87" gid="57" x="5152" y="960" width="64" height="64"/>
|
||||
<object id="88" gid="57" x="5859.33" y="895.333" width="64" height="64"/>
|
||||
<object id="89" gid="57" x="6558" y="960.667" width="64" height="64"/>
|
||||
<object id="90" gid="57" x="5974" y="1248.67" width="64" height="64"/>
|
||||
<object id="91" gid="50" x="6464" y="1248" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="1UP"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="93" gid="53" x="5909" y="1469" width="64" height="64"/>
|
||||
<object id="95" gid="53" x="5086" y="1726" width="64" height="64"/>
|
||||
<object id="98" gid="45" x="6409" y="2007.5" width="64" height="64"/>
|
||||
<object id="99" gid="45" x="6433" y="2018.5" width="64" height="64"/>
|
||||
<object id="100" gid="45" x="6457" y="2030.5" width="64" height="64"/>
|
||||
<object id="101" gid="45" x="6803" y="1821.5" width="64" height="64"/>
|
||||
<object id="102" gid="45" x="6827" y="1832.5" width="64" height="64"/>
|
||||
<object id="103" gid="45" x="6851" y="1844.5" width="64" height="64"/>
|
||||
<object id="104" gid="45" x="6901.16" y="1520.83" width="64" height="64"/>
|
||||
<object id="105" gid="45" x="6919.16" y="1501.83" width="64" height="64"/>
|
||||
<object id="106" gid="45" x="6938.16" y="1483.83" width="64" height="64"/>
|
||||
<object id="110" gid="45" x="6822.83" y="1083.5" width="64" height="64"/>
|
||||
<object id="111" gid="45" x="6840.83" y="1101.5" width="64" height="64"/>
|
||||
<object id="112" gid="45" x="6859.83" y="1120.5" width="64" height="64"/>
|
||||
<object id="114" gid="53" x="1952.34" y="768.337" width="64" height="64"/>
|
||||
<object id="116" gid="53" x="3169.33" y="1277.33" width="64" height="64"/>
|
||||
<object id="117" gid="53" x="1695" y="352" width="64" height="64"/>
|
||||
<object id="120" gid="46" x="4769" y="1024" width="64" height="64">
|
||||
<object id="93" gid="57" x="5909" y="1469" width="64" height="64"/>
|
||||
<object id="95" gid="57" x="5086" y="1726" width="64" height="64"/>
|
||||
<object id="98" gid="49" x="6409" y="2007.5" width="64" height="64"/>
|
||||
<object id="99" gid="49" x="6433" y="2018.5" width="64" height="64"/>
|
||||
<object id="100" gid="49" x="6457" y="2030.5" width="64" height="64"/>
|
||||
<object id="101" gid="49" x="6803" y="1821.5" width="64" height="64"/>
|
||||
<object id="102" gid="49" x="6827" y="1832.5" width="64" height="64"/>
|
||||
<object id="103" gid="49" x="6851" y="1844.5" width="64" height="64"/>
|
||||
<object id="104" gid="49" x="6901.16" y="1520.83" width="64" height="64"/>
|
||||
<object id="105" gid="49" x="6919.16" y="1501.83" width="64" height="64"/>
|
||||
<object id="106" gid="49" x="6938.16" y="1483.83" width="64" height="64"/>
|
||||
<object id="110" gid="49" x="6822.83" y="1083.5" width="64" height="64"/>
|
||||
<object id="111" gid="49" x="6840.83" y="1101.5" width="64" height="64"/>
|
||||
<object id="112" gid="49" x="6859.83" y="1120.5" width="64" height="64"/>
|
||||
<object id="114" gid="57" x="1952.34" y="768.337" width="64" height="64"/>
|
||||
<object id="116" gid="57" x="3169.33" y="1277.33" width="64" height="64"/>
|
||||
<object id="117" gid="57" x="1695" y="352" width="64" height="64"/>
|
||||
<object id="120" gid="50" x="4769" y="1024" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="121" gid="45" x="275.5" y="1578.5" width="64" height="64"/>
|
||||
<object id="122" gid="45" x="293.5" y="1596.5" width="64" height="64"/>
|
||||
<object id="123" gid="45" x="312.5" y="1615.5" width="64" height="64"/>
|
||||
<object id="124" gid="49" x="120" y="384" width="64" height="64"/>
|
||||
<object id="125" gid="46" x="48" y="128" width="64" height="64">
|
||||
<object id="121" gid="49" x="275.5" y="1578.5" width="64" height="64"/>
|
||||
<object id="122" gid="49" x="293.5" y="1596.5" width="64" height="64"/>
|
||||
<object id="123" gid="49" x="312.5" y="1615.5" width="64" height="64"/>
|
||||
<object id="124" gid="53" x="120" y="384" width="64" height="64"/>
|
||||
<object id="125" gid="50" x="48" y="128" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="1UP"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="126" gid="49" x="1904.25" y="927.75" width="64" height="64"/>
|
||||
<object id="127" gid="55" x="1901.09" y="836.909" width="64" height="64"/>
|
||||
<object id="129" gid="45" x="1818.17" y="836.5" width="64" height="64"/>
|
||||
<object id="130" gid="45" x="1836.17" y="817.5" width="64" height="64"/>
|
||||
<object id="131" gid="45" x="1855.17" y="799.5" width="64" height="64"/>
|
||||
<object id="133" gid="45" x="1422.83" y="402.5" width="64" height="64"/>
|
||||
<object id="134" gid="45" x="1440.83" y="383.5" width="64" height="64"/>
|
||||
<object id="135" gid="45" x="1459.83" y="365.5" width="64" height="64"/>
|
||||
<object id="136" gid="49" x="1904" y="576" width="64" height="64"/>
|
||||
<object id="137" gid="49" x="1264.38" y="896" width="64" height="64"/>
|
||||
<object id="138" gid="57" x="288" y="384" width="64" height="64"/>
|
||||
<object id="139" gid="53" x="2304" y="1152" width="64" height="64"/>
|
||||
<object id="126" gid="53" x="1904.25" y="927.75" width="64" height="64"/>
|
||||
<object id="127" gid="59" x="1901.09" y="836.909" width="64" height="64"/>
|
||||
<object id="129" gid="49" x="1818.17" y="836.5" width="64" height="64"/>
|
||||
<object id="130" gid="49" x="1836.17" y="817.5" width="64" height="64"/>
|
||||
<object id="131" gid="49" x="1855.17" y="799.5" width="64" height="64"/>
|
||||
<object id="133" gid="49" x="1422.83" y="402.5" width="64" height="64"/>
|
||||
<object id="134" gid="49" x="1440.83" y="383.5" width="64" height="64"/>
|
||||
<object id="135" gid="49" x="1459.83" y="365.5" width="64" height="64"/>
|
||||
<object id="136" gid="53" x="1904" y="576" width="64" height="64"/>
|
||||
<object id="137" gid="53" x="1264.38" y="896" width="64" height="64"/>
|
||||
<object id="138" gid="61" x="324" y="384" width="64" height="64"/>
|
||||
<object id="139" gid="57" x="2304" y="1152" width="64" height="64"/>
|
||||
<object id="142" gid="55" x="448" y="689" width="64" height="64"/>
|
||||
<object id="143" gid="1073741879" x="448" y="784" width="64" height="64"/>
|
||||
<object id="144" gid="2147483703" x="384" y="688" width="64" height="64"/>
|
||||
<object id="145" gid="3221225527" x="384" y="784" width="64" height="64"/>
|
||||
<object id="146" gid="53" x="416" y="672" width="64" height="64"/>
|
||||
<object id="147" gid="1073741877" x="416" y="800" width="64" height="64"/>
|
||||
<object id="148" gid="53" x="480" y="673" width="64" height="64" rotation="90"/>
|
||||
<object id="149" gid="53" x="416" y="736" width="64" height="64" rotation="-90"/>
|
||||
<object id="150" gid="53" x="6304" y="1440" width="64" height="64"/>
|
||||
<object id="151" gid="53" x="6528" y="1680" width="64" height="64" rotation="-90"/>
|
||||
<object id="152" gid="53" x="6528" y="1840" width="64" height="64" rotation="-90"/>
|
||||
<object id="153" gid="54" x="6144" y="1810" width="64" height="64" rotation="90"/>
|
||||
<object id="154" gid="2147483703" x="2119" y="1152" width="64" height="64"/>
|
||||
</objectgroup>
|
||||
</group>
|
||||
</map>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#3f007f" nextlayerid="5" nextobjectid="52">
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#3f007f" nextlayerid="5" nextobjectid="58">
|
||||
<tileset firstgid="1" source="128x128.tsx"/>
|
||||
<tileset firstgid="45" source="../COMMON/objects_common.tsx"/>
|
||||
<tileset firstgid="49" source="../COMMON/objects_common.tsx"/>
|
||||
<layer id="1" name="LAYER0" width="255" height="31">
|
||||
<data encoding="csv">
|
||||
24,0,0,10,9,12,12,12,9,9,9,9,9,9,9,9,9,9,9,9,12,8,0,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,12,12,12,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -39,62 +39,67 @@
|
|||
</layer>
|
||||
<group id="3" name="OBJECTS">
|
||||
<objectgroup id="4" name="COMMON">
|
||||
<object id="1" gid="56" x="7584" y="1408" width="64" height="64"/>
|
||||
<object id="2" gid="53" x="799" y="511.5" width="64" height="64"/>
|
||||
<object id="7" gid="46" x="2800" y="384" width="64" height="64">
|
||||
<object id="1" gid="60" x="7584" y="1408" width="64" height="64"/>
|
||||
<object id="2" gid="57" x="799" y="511.5" width="64" height="64"/>
|
||||
<object id="7" gid="50" x="2800" y="384" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="10" gid="49" x="128" y="592" width="64" height="64" rotation="90"/>
|
||||
<object id="19" gid="55" x="305" y="929" width="64" height="64"/>
|
||||
<object id="20" gid="46" x="1185" y="896" width="64" height="64">
|
||||
<object id="10" gid="53" x="128" y="592" width="64" height="64" rotation="90"/>
|
||||
<object id="20" gid="50" x="1185" y="896" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="1UP"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="21" gid="53" x="1055" y="1159" width="64" height="64"/>
|
||||
<object id="22" gid="53" x="1887" y="1030" width="64" height="64"/>
|
||||
<object id="23" gid="46" x="3088" y="192" width="64" height="64">
|
||||
<object id="21" gid="57" x="1055" y="1159" width="64" height="64"/>
|
||||
<object id="22" gid="57" x="1887" y="1030" width="64" height="64"/>
|
||||
<object id="23" gid="50" x="3088" y="192" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="SHIELD"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="24" gid="46" x="801" y="416" width="64" height="64">
|
||||
<object id="24" gid="50" x="801" y="416" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="25" gid="48" x="3355" y="320" width="64" height="64"/>
|
||||
<object id="26" gid="57" x="256" y="640" width="64" height="64"/>
|
||||
<object id="28" gid="50" x="2304" y="1040" width="64" height="64" rotation="-90"/>
|
||||
<object id="29" gid="45" x="1175.33" y="611.167" width="64" height="64"/>
|
||||
<object id="30" gid="45" x="1199.33" y="622.167" width="64" height="64"/>
|
||||
<object id="31" gid="45" x="1223.33" y="634.167" width="64" height="64"/>
|
||||
<object id="32" gid="45" x="920" y="796.5" width="64" height="64"/>
|
||||
<object id="33" gid="45" x="944" y="807.5" width="64" height="64"/>
|
||||
<object id="34" gid="45" x="968" y="819.5" width="64" height="64"/>
|
||||
<object id="35" gid="45" x="1809.33" y="799.167" width="64" height="64"/>
|
||||
<object id="36" gid="45" x="1833.33" y="810.167" width="64" height="64"/>
|
||||
<object id="37" gid="45" x="1857.33" y="822.167" width="64" height="64"/>
|
||||
<object id="38" gid="53" x="3108.67" y="720" width="64" height="64"/>
|
||||
<object id="39" gid="53" x="2975.33" y="521.333" width="64" height="64"/>
|
||||
<object id="40" gid="53" x="3106.67" y="323.333" width="64" height="64"/>
|
||||
<object id="41" gid="53" x="2713.33" y="322" width="64" height="64"/>
|
||||
<object id="42" gid="45" x="3616.17" y="443.5" width="64" height="64"/>
|
||||
<object id="43" gid="45" x="3634.17" y="461.5" width="64" height="64"/>
|
||||
<object id="44" gid="45" x="3653.17" y="480.5" width="64" height="64"/>
|
||||
<object id="45" gid="45" x="4722.83" y="1040.17" width="64" height="64"/>
|
||||
<object id="46" gid="45" x="4740.83" y="1058.17" width="64" height="64"/>
|
||||
<object id="47" gid="45" x="4759.83" y="1077.17" width="64" height="64"/>
|
||||
<object id="48" gid="45" x="4147" y="627.5" width="64" height="64"/>
|
||||
<object id="49" gid="45" x="4171" y="638.5" width="64" height="64"/>
|
||||
<object id="50" gid="45" x="4195" y="650.5" width="64" height="64"/>
|
||||
<object id="51" gid="46" x="7442" y="1216" width="64" height="64">
|
||||
<object id="25" gid="52" x="3355" y="320" width="64" height="64"/>
|
||||
<object id="26" gid="61" x="256" y="640" width="64" height="64"/>
|
||||
<object id="28" gid="54" x="2304" y="1040" width="64" height="64" rotation="-90"/>
|
||||
<object id="29" gid="49" x="1175.33" y="611.167" width="64" height="64"/>
|
||||
<object id="30" gid="49" x="1199.33" y="622.167" width="64" height="64"/>
|
||||
<object id="31" gid="49" x="1223.33" y="634.167" width="64" height="64"/>
|
||||
<object id="32" gid="49" x="920" y="796.5" width="64" height="64"/>
|
||||
<object id="33" gid="49" x="944" y="807.5" width="64" height="64"/>
|
||||
<object id="34" gid="49" x="968" y="819.5" width="64" height="64"/>
|
||||
<object id="35" gid="49" x="1809.33" y="799.167" width="64" height="64"/>
|
||||
<object id="36" gid="49" x="1833.33" y="810.167" width="64" height="64"/>
|
||||
<object id="37" gid="49" x="1857.33" y="822.167" width="64" height="64"/>
|
||||
<object id="38" gid="57" x="3108.67" y="720" width="64" height="64"/>
|
||||
<object id="39" gid="57" x="2975.33" y="521.333" width="64" height="64"/>
|
||||
<object id="40" gid="57" x="3106.67" y="323.333" width="64" height="64"/>
|
||||
<object id="41" gid="57" x="2713.33" y="322" width="64" height="64"/>
|
||||
<object id="42" gid="49" x="3616.17" y="443.5" width="64" height="64"/>
|
||||
<object id="43" gid="49" x="3634.17" y="461.5" width="64" height="64"/>
|
||||
<object id="44" gid="49" x="3653.17" y="480.5" width="64" height="64"/>
|
||||
<object id="45" gid="49" x="4722.83" y="1040.17" width="64" height="64"/>
|
||||
<object id="46" gid="49" x="4740.83" y="1058.17" width="64" height="64"/>
|
||||
<object id="47" gid="49" x="4759.83" y="1077.17" width="64" height="64"/>
|
||||
<object id="48" gid="49" x="4147" y="627.5" width="64" height="64"/>
|
||||
<object id="49" gid="49" x="4171" y="638.5" width="64" height="64"/>
|
||||
<object id="50" gid="49" x="4195" y="650.5" width="64" height="64"/>
|
||||
<object id="51" gid="50" x="7442" y="1216" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="1UP"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="52" gid="2147483703" x="6864" y="1249" width="64" height="64"/>
|
||||
<object id="53" gid="55" x="3184" y="256" width="64" height="64"/>
|
||||
<object id="54" gid="55" x="880" y="448" width="64" height="64"/>
|
||||
<object id="55" gid="2147483703" x="720" y="448" width="64" height="64"/>
|
||||
<object id="56" gid="56" x="304" y="909" width="64" height="64"/>
|
||||
<object id="57" gid="1073741877" x="720" y="640" width="64" height="64"/>
|
||||
</objectgroup>
|
||||
</group>
|
||||
</map>
|
||||
|
|
27
assets/levels/R0/parallax.toml
Normal file
|
@ -0,0 +1,27 @@
|
|||
[part1]
|
||||
width = 256
|
||||
height = 128
|
||||
u0 = 0
|
||||
v0 = 0
|
||||
scrollx = 0.25
|
||||
y0 = 0
|
||||
single = false
|
||||
|
||||
[part2]
|
||||
width = 256
|
||||
height = 128
|
||||
u0 = 0
|
||||
v0 = 0
|
||||
scrollx = 0.25
|
||||
y0 = 128
|
||||
single = false
|
||||
|
||||
[part3]
|
||||
width = 256
|
||||
height = 128
|
||||
u0 = 0
|
||||
v0 = 0
|
||||
scrollx = 0.25
|
||||
y0 = 256
|
||||
single = false
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="32" height="88" tilewidth="16" tileheight="16" infinite="0" nextlayerid="4" nextobjectid="1">
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="32" height="96" tilewidth="16" tileheight="16" infinite="0" nextlayerid="4" nextobjectid="1">
|
||||
<tileset firstgid="1" source="tiles16.tsx"/>
|
||||
<layer id="1" name="solid" width="32" height="88">
|
||||
<layer id="1" name="solid" width="32" height="96">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,29,0,0,0,0,0,0,0,0,0,0,0,0,30,11,
|
||||
|
@ -90,10 +90,18 @@
|
|||
0,0,0,0,10,11,11,12,0,0,0,0,10,11,11,12,0,0,0,0,0,0,0,0,11,11,11,11,11,11,70,71,
|
||||
0,0,0,0,10,11,11,12,0,0,0,0,10,11,11,12,0,0,0,0,0,0,0,0,11,11,11,11,70,71,0,0,
|
||||
0,0,0,0,10,11,11,12,0,0,0,0,10,11,11,12,0,0,0,0,0,0,0,0,11,11,70,71,0,0,0,0,
|
||||
0,0,0,0,18,19,19,20,0,0,0,0,18,19,19,20,0,0,0,0,0,0,0,0,70,71,0,0,0,0,0,0
|
||||
0,0,0,0,18,19,19,20,0,0,0,0,18,19,19,20,0,0,0,0,0,0,0,0,70,71,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="2" name="oneway" width="32" height="88" opacity="0.9">
|
||||
<layer id="2" name="oneway" width="32" height="96" opacity="0.9">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -182,10 +190,18 @@
|
|||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="3" name="none" width="32" height="88" opacity="0.5">
|
||||
<layer id="3" name="none" width="32" height="96" opacity="0.5">
|
||||
<data encoding="csv">
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -274,6 +290,14 @@
|
|||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
</data>
|
||||
</layer>
|
||||
|
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 36 KiB |
BIN
assets/levels/R1/BG0.TIM
Normal file
BIN
assets/levels/R1/BG0.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#913b3b" nextlayerid="5" nextobjectid="41">
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#913b3b" nextlayerid="5" nextobjectid="75">
|
||||
<editorsettings>
|
||||
<export target="Z2.json" format="json"/>
|
||||
</editorsettings>
|
||||
|
@ -7,27 +7,27 @@
|
|||
<tileset firstgid="57" source="../COMMON/objects_common.tsx"/>
|
||||
<layer id="1" name="LAYER0" width="255" height="31">
|
||||
<data encoding="csv">
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,19,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,18,19,29,16,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,18,22,29,0,0,16,6,7,0,0,0,0,0,0,0,0,0,0,44,9,45,0,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,18,22,29,0,0,0,0,16,49,20,23,12,3,18,36,50,20,16,16,12,12,29,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,25,25,23,26,26,23,23,23,23,0,0,46,21,0,19,21,0,44,9,9,24,29,22,27,0,0,0,12,16,16,16,16,16,16,16,49,24,0,12,12,29,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,25,25,25,25,25,24,9,9,43,12,12,12,26,26,26,26,43,12,12,0,0,0,26,26,0,25,25,16,25,25,0,27,0,0,0,0,28,0,12,12,29,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,16,25,25,25,22,27,27,0,0,0,44,9,26,26,26,47,0,0,30,0,12,12,29,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,0,36,15,0,0,0,46,9,43,16,16,0,0,0,0,12,49,24,24,24,12,12,29,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,53,53,9,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,2,16,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,2,0,0,16,6,7,0,0,0,0,0,0,0,0,0,0,44,9,45,0,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,2,0,0,0,0,16,42,26,43,12,3,18,36,50,20,16,16,12,12,21,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,25,25,23,26,26,23,23,23,23,0,0,0,0,0,19,21,0,44,9,9,9,2,21,0,0,0,0,12,0,0,0,16,16,16,16,49,24,0,12,12,0,19,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,25,25,25,25,25,24,9,9,43,12,12,49,26,26,26,26,43,12,12,0,0,0,26,26,0,25,25,16,25,25,0,27,0,0,0,0,28,0,12,12,21,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,16,25,25,25,22,27,27,0,0,0,44,9,26,26,26,47,0,0,30,0,12,12,0,20,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,0,36,15,0,0,0,46,9,43,16,16,0,0,0,0,12,49,24,24,24,12,12,21,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,0,0,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,28,12,29,0,0,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,16,31,44,43,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,6,7,0,46,26,26,43,12,12,6,45,0,0,0,0,0,0,46,51,43,12,12,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,6,7,0,46,26,26,43,12,12,6,45,0,0,0,0,0,0,46,0,43,12,12,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,29,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,0,13,27,27,27,15,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,24,2,0,0,0,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,3,25,25,25,25,25,25,25,25,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
12,0,0,0,0,0,12,12,12,12,12,12,12,0,0,0,0,12,12,12,12,12,12,12,12,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -42,7 +42,7 @@
|
|||
</layer>
|
||||
<group id="3" name="OBJECTS">
|
||||
<objectgroup id="4" name="COMMON">
|
||||
<object id="2" gid="68" x="6560" y="2048" width="64" height="64"/>
|
||||
<object id="2" gid="68" x="6560" y="2080" width="64" height="64"/>
|
||||
<object id="3" gid="58" x="113" y="672" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="SHIELD"/>
|
||||
|
@ -54,30 +54,29 @@
|
|||
<object id="7" gid="65" x="1150" y="578" width="64" height="64"/>
|
||||
<object id="8" gid="61" x="896" y="656" width="64" height="64" rotation="90"/>
|
||||
<object id="9" gid="62" x="1664" y="656" width="64" height="64" rotation="90"/>
|
||||
<object id="10" gid="65" x="2528" y="577.333" width="64" height="64"/>
|
||||
<object id="11" gid="65" x="2782.67" y="62" width="64" height="64"/>
|
||||
<object id="12" gid="58" x="3712" y="512" width="64" height="64">
|
||||
<object id="10" gid="65" x="2014" y="577.333" width="64" height="64"/>
|
||||
<object id="11" gid="65" x="2852.92" y="64.75" width="64" height="64"/>
|
||||
<object id="12" gid="58" x="4208" y="512" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
<property name="Kind" value="1UP"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="13" gid="65" x="3968" y="384" width="64" height="64"/>
|
||||
<object id="14" gid="65" x="4250.67" y="511.333" width="64" height="64"/>
|
||||
<object id="14" gid="65" x="3743.34" y="454" width="64" height="64"/>
|
||||
<object id="15" gid="65" x="4762.67" y="545.333" width="64" height="64"/>
|
||||
<object id="16" gid="65" x="5018" y="318.667" width="64" height="64"/>
|
||||
<object id="17" gid="67" x="5440" y="496" width="64" height="64"/>
|
||||
<object id="18" gid="67" x="5440" y="722" width="64" height="64"/>
|
||||
<object id="19" gid="67" x="5440" y="1015" width="64" height="64"/>
|
||||
<object id="17" gid="67" x="5426" y="532" width="64" height="64"/>
|
||||
<object id="18" gid="67" x="5428" y="786" width="64" height="64"/>
|
||||
<object id="19" gid="67" x="5264" y="940.333" width="64" height="64"/>
|
||||
<object id="20" gid="67" x="5024" y="1453" width="64" height="64"/>
|
||||
<object id="21" gid="65" x="2972" y="1400" width="64" height="64"/>
|
||||
<object id="22" gid="65" x="4128" y="720.667" width="64" height="64"/>
|
||||
<object id="23" gid="65" x="3872.67" y="672.667" width="64" height="64"/>
|
||||
<object id="24" gid="58" x="3712" y="672" width="64" height="64">
|
||||
<object id="24" gid="58" x="3697" y="672" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="SPEEDSHOES"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="25" gid="58" x="3520" y="672" width="64" height="64">
|
||||
<object id="25" gid="58" x="3537" y="672" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="INVINCIBILITY"/>
|
||||
</properties>
|
||||
|
@ -86,16 +85,40 @@
|
|||
<object id="27" gid="65" x="3354.67" y="958" width="64" height="64"/>
|
||||
<object id="28" gid="65" x="2584" y="776" width="64" height="64"/>
|
||||
<object id="29" gid="65" x="2584" y="752" width="64" height="64"/>
|
||||
<object id="30" gid="65" x="3116.67" y="590" width="64" height="64"/>
|
||||
<object id="31" gid="65" x="3116.67" y="566" width="64" height="64"/>
|
||||
<object id="32" gid="65" x="3040" y="704" width="64" height="64"/>
|
||||
<object id="33" gid="67" x="2660" y="446" width="64" height="64"/>
|
||||
<object id="34" gid="67" x="2656" y="261.333" width="64" height="64"/>
|
||||
<object id="30" gid="65" x="2959.67" y="572" width="64" height="64"/>
|
||||
<object id="31" gid="65" x="2959.67" y="548" width="64" height="64"/>
|
||||
<object id="32" gid="65" x="3040" y="683" width="64" height="64"/>
|
||||
<object id="36" gid="65" x="3212.17" y="1255.17" width="64" height="64"/>
|
||||
<object id="37" gid="65" x="3212.17" y="1231.17" width="64" height="64"/>
|
||||
<object id="38" gid="65" x="5019.5" y="2076.5" width="64" height="64"/>
|
||||
<object id="38" gid="65" x="5019.5" y="2048.5" width="64" height="64"/>
|
||||
<object id="39" gid="67" x="4928" y="741" width="64" height="64"/>
|
||||
<object id="40" gid="69" x="180" y="544" width="64" height="64"/>
|
||||
<object id="41" gid="63" x="2544" y="448" width="64" height="64"/>
|
||||
<object id="42" gid="63" x="2544" y="256" width="64" height="64"/>
|
||||
<object id="44" gid="2147483711" x="2768" y="576" width="64" height="64"/>
|
||||
<object id="45" gid="2147483711" x="2768" y="368.5" width="64" height="64"/>
|
||||
<object id="46" gid="2147483711" x="2768" y="160" width="64" height="64"/>
|
||||
<object id="48" gid="57" x="2576.5" y="429" width="64" height="64"/>
|
||||
<object id="49" gid="57" x="2594.5" y="410" width="64" height="64"/>
|
||||
<object id="50" gid="57" x="2613.5" y="392" width="64" height="64"/>
|
||||
<object id="51" gid="57" x="2574" y="241.5" width="64" height="64"/>
|
||||
<object id="52" gid="57" x="2592" y="222.5" width="64" height="64"/>
|
||||
<object id="53" gid="57" x="2611" y="204.5" width="64" height="64"/>
|
||||
<object id="57" gid="57" x="2705.5" y="529.5" width="64" height="64"/>
|
||||
<object id="58" gid="57" x="2723.5" y="547.5" width="64" height="64"/>
|
||||
<object id="59" gid="57" x="2742.5" y="566.5" width="64" height="64"/>
|
||||
<object id="60" gid="57" x="2705.5" y="320.75" width="64" height="64"/>
|
||||
<object id="61" gid="57" x="2723.5" y="338.75" width="64" height="64"/>
|
||||
<object id="62" gid="57" x="2742.5" y="357.75" width="64" height="64"/>
|
||||
<object id="63" gid="57" x="2704.75" y="112" width="64" height="64"/>
|
||||
<object id="64" gid="57" x="2722.75" y="130" width="64" height="64"/>
|
||||
<object id="65" gid="57" x="2741.75" y="149" width="64" height="64"/>
|
||||
<object id="66" gid="1073741885" x="4991.67" y="1280.33" width="64" height="64"/>
|
||||
<object id="68" gid="1073741885" x="5023.67" y="1280.33" width="64" height="64"/>
|
||||
<object id="69" gid="1073741885" x="5055.67" y="1280.33" width="64" height="64"/>
|
||||
<object id="70" gid="67" x="5265.33" y="664.667" width="64" height="64"/>
|
||||
<object id="72" gid="61" x="3041" y="704" width="64" height="64"/>
|
||||
<object id="73" gid="60" x="4685" y="928" width="64" height="64"/>
|
||||
</objectgroup>
|
||||
</group>
|
||||
</map>
|
||||
|
|
17
assets/levels/R1/parallax.toml
Normal file
|
@ -0,0 +1,17 @@
|
|||
[buildings]
|
||||
width = 256
|
||||
height = 211
|
||||
u0 = 0
|
||||
v0 = 0
|
||||
scrollx = 0.25
|
||||
y0 = 0
|
||||
single = false
|
||||
|
||||
[water]
|
||||
width = 256
|
||||
height = 45
|
||||
u0 = 0
|
||||
v0 = 211
|
||||
scrollx = 0.35
|
||||
y0 = 211
|
||||
single = false
|
|
@ -111,10 +111,10 @@
|
|||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,3,6,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,11,11,14,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,13,11,11,14,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,19,19,19,19,19,19,19,19,0,0,0,0,0,0,0,0,13,11,11,14
|
||||
</data>
|
||||
</layer>
|
||||
<layer id="2" name="oneway" width="32" height="112">
|
||||
|
@ -227,8 +227,8 @@
|
|||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
19,19,19,19,19,19,19,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
</data>
|
||||
|
|
BIN
assets/levels/R2/BG0.TIM
Normal file
BIN
assets/levels/R2/BG0.png
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
assets/levels/R2/BG1.TIM
Normal file
BIN
assets/levels/R2/BG1.png
Normal file
After Width: | Height: | Size: 6 KiB |
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#3868c8" nextlayerid="10" nextobjectid="163">
|
||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="255" height="31" tilewidth="128" tileheight="128" infinite="0" backgroundcolor="#3868c8" nextlayerid="10" nextobjectid="172">
|
||||
<editorsettings>
|
||||
<export target="../../../../../Z1.json" format="json"/>
|
||||
</editorsettings>
|
||||
|
@ -12,9 +12,9 @@
|
|||
12,31,32,10,32,10,32,10,23,30,30,33,34,73,74,74,75,76,38,39,96,93,29,102,31,36,58,60,32,38,39,13,41,0,0,0,0,0,72,5,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,43,129,129,40,95,94,15,104,25,55,25,25,43,129,40,30,33,34,53,0,0,54,76,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,25,25,25,25,108,15,104,0,55,9,9,45,25,25,25,25,25,46,0,0,45,25,43,126,0,0,0,0,0,91,92,0,0,0,0,0,91,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,104,111,56,62,62,35,0,35,0,9,0,0,0,0,0,0,45,46,0,9,127,128,0,87,88,109,110,85,109,110,87,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,104,111,56,62,62,35,0,35,0,9,0,0,0,0,0,0,45,46,0,9,127,128,0,87,88,0,0,0,0,0,87,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,104,2,2,2,2,33,34,38,39,13,7,35,0,0,119,0,87,88,0,13,125,126,0,0,91,92,0,0,0,0,0,0,0,9,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,104,129,130,129,130,129,129,130,40,30,30,33,34,31,118,31,31,133,134,30,79,6,35,0,87,88,42,0,0,0,0,99,101,13,0,0,13,0,24,0,7,0,35,0,69,70,71,72,0,0,0,0,0,0,0,0,0,0,0,0,35,0,9,0,9,0,9,0,9,0,9,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,15,104,129,130,129,130,129,129,130,40,30,30,33,34,31,118,31,31,133,134,30,79,6,35,0,87,88,42,0,0,0,0,99,101,13,0,0,13,0,24,0,7,0,35,0,69,70,71,72,109,110,0,0,0,0,0,0,0,0,0,0,35,0,9,0,9,0,9,0,9,0,9,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,107,106,105,25,25,25,25,25,25,25,25,25,25,25,25,25,120,25,25,25,25,25,43,89,33,34,31,31,38,39,0,96,93,15,12,32,10,4,32,22,23,29,30,29,33,34,73,74,75,76,53,35,0,0,24,103,0,119,0,119,0,99,57,0,13,0,13,0,13,0,13,0,13,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,5,16,130,129,15,129,130,40,29,95,94,15,16,130,129,130,129,15,129,129,129,129,129,129,130,129,129,130,89,33,34,22,23,102,36,118,36,118,36,114,61,29,30,29,30,29,30,29,30,29,30,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,47,26,25,25,25,25,25,25,25,98,97,15,16,129,129,129,129,129,129,129,129,129,129,129,129,129,44,116,115,106,106,106,106,106,55,131,55,131,55,106,105,25,25,25,25,25,25,25,25,25,25,131,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
|
@ -63,15 +63,11 @@
|
|||
<object id="27" gid="149" x="4065" y="388" width="64" height="64"/>
|
||||
<object id="28" gid="149" x="4289.67" y="453.667" width="64" height="64"/>
|
||||
<object id="34" gid="147" x="3056" y="768" width="64" height="64"/>
|
||||
<object id="44" gid="149" x="3206" y="646" width="64" height="64"/>
|
||||
<object id="45" gid="149" x="3206" y="673" width="64" height="64"/>
|
||||
<object id="48" gid="142" x="3055.75" y="324" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object id="49" gid="147" x="6256" y="928" width="64" height="64"/>
|
||||
<object id="50" gid="149" x="6361" y="883" width="64" height="64"/>
|
||||
<object id="55" gid="142" x="6887" y="640" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="RING"/>
|
||||
|
@ -94,9 +90,6 @@
|
|||
</object>
|
||||
<object id="59" gid="149" x="5920" y="638" width="64" height="64"/>
|
||||
<object id="60" gid="149" x="6042" y="638" width="64" height="64"/>
|
||||
<object id="61" gid="149" x="6240" y="688" width="64" height="64"/>
|
||||
<object id="62" gid="149" x="6415.88" y="656" width="64" height="64"/>
|
||||
<object id="63" gid="149" x="6625.5" y="688" width="64" height="64"/>
|
||||
<object id="68" gid="145" x="5203" y="769" width="64" height="64"/>
|
||||
<object id="69" gid="142" x="6016" y="896" width="64" height="64">
|
||||
<properties>
|
||||
|
@ -127,7 +120,7 @@
|
|||
<object id="99" gid="143" x="10383.3" y="1218" width="64" height="64"/>
|
||||
<object id="100" gid="143" x="10415.3" y="1218" width="64" height="64"/>
|
||||
<object id="101" gid="143" x="10447.3" y="1218" width="64" height="64"/>
|
||||
<object id="102" gid="142" x="4994.52" y="452.39" width="64" height="64">
|
||||
<object id="102" gid="142" x="5009" y="453" width="64" height="64">
|
||||
<properties>
|
||||
<property name="Kind" value="1UP"/>
|
||||
</properties>
|
||||
|
@ -194,6 +187,13 @@
|
|||
<object id="160" gid="141" x="2763.75" y="352.75" width="64" height="64"/>
|
||||
<object id="161" gid="141" x="2769.25" y="320.75" width="64" height="64"/>
|
||||
<object id="162" gid="141" x="2719.75" y="398.25" width="64" height="64"/>
|
||||
<object id="164" gid="141" x="3112.5" y="723" width="64" height="64"/>
|
||||
<object id="165" gid="141" x="3130.5" y="704" width="64" height="64"/>
|
||||
<object id="166" gid="141" x="3149.5" y="686" width="64" height="64"/>
|
||||
<object id="168" gid="148" x="2288" y="256.5" width="64" height="64"/>
|
||||
<object id="169" gid="146" x="4736" y="980" width="64" height="64" rotation="-90"/>
|
||||
<object id="170" gid="151" x="6161.33" y="718.667" width="64" height="64"/>
|
||||
<object id="171" gid="148" x="6256" y="928" width="64" height="64"/>
|
||||
</objectgroup>
|
||||
</group>
|
||||
</map>
|
||||
|
|
137
assets/levels/R2/parallax.toml
Normal file
|
@ -0,0 +1,137 @@
|
|||
[sky1]
|
||||
width = 256
|
||||
height = 32
|
||||
u0 = 0
|
||||
v0 = 360 # 104 @ BG1
|
||||
scrollx = 0
|
||||
speedx = 0.14
|
||||
y0 = 0
|
||||
single = false
|
||||
|
||||
[sky2]
|
||||
width = 256
|
||||
height = 16
|
||||
u0 = 0
|
||||
v0 = 392
|
||||
scrollx = 0
|
||||
speedx = 0.16
|
||||
y0 = 32
|
||||
single = false
|
||||
|
||||
[sky3]
|
||||
width = 256
|
||||
height = 16
|
||||
u0 = 0
|
||||
v0 = 408
|
||||
scrollx = 0
|
||||
speedx = 0.18
|
||||
y0 = 48
|
||||
single = false
|
||||
|
||||
|
||||
# =============
|
||||
[island1]
|
||||
width = 256
|
||||
height = 44
|
||||
u0 = 0
|
||||
v0 = 0
|
||||
scrollx = 0.2
|
||||
y0 = 36
|
||||
single = false
|
||||
|
||||
# =============
|
||||
[island2]
|
||||
height = 40
|
||||
scrollx = 0.25
|
||||
y0 = 80
|
||||
single = false
|
||||
|
||||
[[island2.parts]]
|
||||
u0 = 0
|
||||
v0 = 44
|
||||
width = 256
|
||||
|
||||
# =============
|
||||
# Water starts at BG1.
|
||||
# Anything with v0 >= 256 is at BG1
|
||||
|
||||
[water1]
|
||||
width = 32
|
||||
height = 3
|
||||
u0 = 0
|
||||
v0 = 256
|
||||
scrollx = 0.27
|
||||
y0 = 120
|
||||
single = false
|
||||
|
||||
[water2]
|
||||
width = 32
|
||||
height = 4
|
||||
u0 = 0
|
||||
v0 = 259
|
||||
scrollx = 0.285
|
||||
y0 = 123
|
||||
single = false
|
||||
|
||||
[water3]
|
||||
width = 32
|
||||
height = 8
|
||||
u0 = 0
|
||||
v0 = 263
|
||||
scrollx = 0.3
|
||||
y0 = 127
|
||||
single = false
|
||||
|
||||
[water4]
|
||||
width = 32
|
||||
height = 12
|
||||
u0 = 0
|
||||
v0 = 271
|
||||
scrollx = 0.315
|
||||
y0 = 135
|
||||
single = false
|
||||
|
||||
[water5]
|
||||
width = 32
|
||||
height = 16
|
||||
u0 = 0
|
||||
v0 = 283
|
||||
scrollx = 0.33
|
||||
y0 = 147
|
||||
single = false
|
||||
|
||||
[water6]
|
||||
width = 32
|
||||
height = 17
|
||||
u0 = 0
|
||||
v0 = 299
|
||||
scrollx = 0.345
|
||||
y0 = 163
|
||||
single = false
|
||||
|
||||
[water7]
|
||||
width = 32
|
||||
height = 22
|
||||
u0 = 0
|
||||
v0 = 316
|
||||
scrollx = 0.36
|
||||
y0 = 180
|
||||
single = false
|
||||
|
||||
[water8]
|
||||
width = 32
|
||||
height = 22
|
||||
u0 = 0
|
||||
v0 = 338
|
||||
scrollx = 0.375
|
||||
y0 = 202
|
||||
single = false
|
||||
|
||||
[water9]
|
||||
width = 32
|
||||
height = 22
|
||||
u0 = 0
|
||||
v0 = 338
|
||||
scrollx = 0.39
|
||||
y0 = 224
|
||||
single = false
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 27 KiB |
65
assets/sprites/PRL/parallax_data.toml
Normal file
|
@ -0,0 +1,65 @@
|
|||
[island]
|
||||
width = 256
|
||||
height = 48
|
||||
u0 = 0
|
||||
v0 = 62
|
||||
scrollx = 0x0000
|
||||
y0 = 170
|
||||
single = true
|
||||
|
||||
# =============
|
||||
[cloud]
|
||||
width = 256
|
||||
height = 37
|
||||
u0 = 0
|
||||
v0 = 25
|
||||
scrollx = 0x019a
|
||||
y0 = 181
|
||||
single = false
|
||||
|
||||
# =============
|
||||
[water1]
|
||||
width = 64
|
||||
height = 6
|
||||
u0 = 0
|
||||
v0 = 0
|
||||
scrollx = 0x0666
|
||||
y0 = 216
|
||||
single = false
|
||||
|
||||
[water2]
|
||||
width = 64
|
||||
height = 5
|
||||
u0 = 0
|
||||
v0 = 6
|
||||
scrollx = 0x0800
|
||||
y0 = 222
|
||||
single = false
|
||||
|
||||
[water3]
|
||||
width = 62
|
||||
height = 5
|
||||
u0 = 0
|
||||
v0 = 11
|
||||
scrollx = 0x099a
|
||||
y0 = 227
|
||||
single = false
|
||||
|
||||
[water4]
|
||||
width = 64
|
||||
height = 5
|
||||
u0 = 0
|
||||
v0 = 16
|
||||
scrollx = 0x0b33
|
||||
y0 = 232
|
||||
single = false
|
||||
|
||||
[water5]
|
||||
width = 66
|
||||
height = 4
|
||||
u0 = 0
|
||||
v0 = 20
|
||||
scrollx = 0x0ccd
|
||||
y0 = 237
|
||||
single = false
|
||||
|
64
include/parallax.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
#ifndef PARALLAX_H
|
||||
#define PARALLAX_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "camera.h"
|
||||
|
||||
/* .PRL file layout
|
||||
==================
|
||||
number of strips: u8
|
||||
Array of strips:
|
||||
number of parts: u8
|
||||
do not repeat (single)?: u8
|
||||
horizontal scroll factor: s16
|
||||
Y position: s16
|
||||
Array of parts:
|
||||
u0: u8
|
||||
v0: u8
|
||||
texture index (BG0 or BG1): u8
|
||||
width: u16
|
||||
height: u16
|
||||
*/
|
||||
|
||||
// Holds a single parallax strip part.
|
||||
// Parts are a horizontal slice of a single strip.
|
||||
typedef struct {
|
||||
uint8_t u0;
|
||||
uint8_t v0;
|
||||
uint8_t bgindex;
|
||||
uint16_t width;
|
||||
uint16_t height;
|
||||
|
||||
// Calculated on load
|
||||
uint16_t offsetx;
|
||||
} ParallaxPart;
|
||||
|
||||
// Holds a single parallax strip for a level.
|
||||
// A strip may be a horizontally-repeating quad, or it
|
||||
// may be composed of more than one quad that forms a bigger strip.
|
||||
typedef struct {
|
||||
uint8_t num_parts;
|
||||
uint8_t is_single;
|
||||
int32_t scrollx;
|
||||
int32_t speedx;
|
||||
int16_t y0;
|
||||
ParallaxPart *parts;
|
||||
|
||||
// Calculated on load
|
||||
uint16_t width;
|
||||
|
||||
// State
|
||||
int32_t rposx;
|
||||
} ParallaxStrip;
|
||||
|
||||
// Holds all parallax strips for a level
|
||||
typedef struct {
|
||||
uint8_t num_strips;
|
||||
ParallaxStrip *strips;
|
||||
} Parallax;
|
||||
|
||||
void load_parallax(Parallax *parallax, const char *filename);
|
||||
void parallax_draw(Parallax *prl, Camera *camera,
|
||||
uint8_t tx_mode, int32_t px, int32_t py, int32_t cx, int32_t cy);
|
||||
|
||||
#endif
|
21
iso.xml
|
@ -69,6 +69,12 @@
|
|||
<file name="TILES.TIM"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R0/TILES.TIM" />
|
||||
<file name="BG0.TIM"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R0/BG0.TIM" />
|
||||
<file name="PRL.PRL"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R0/PRL.PRL" />
|
||||
</dir>
|
||||
|
||||
<dir name="R1">
|
||||
|
@ -96,6 +102,12 @@
|
|||
<file name="TILES.TIM"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R1/TILES.TIM" />
|
||||
<file name="BG0.TIM"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R1/BG0.TIM" />
|
||||
<file name="PRL.PRL"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R1/PRL.PRL" />
|
||||
</dir>
|
||||
|
||||
<dir name="R2">
|
||||
|
@ -117,6 +129,15 @@
|
|||
<file name="TILES.TIM"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R2/TILES.TIM" />
|
||||
<file name="BG0.TIM"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R2/BG0.TIM" />
|
||||
<file name="BG1.TIM"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R2/BG1.TIM" />
|
||||
<file name="PRL.PRL"
|
||||
type="data"
|
||||
source="${PROJECT_SOURCE_DIR}/assets/levels/R2/PRL.PRL" />
|
||||
</dir>
|
||||
|
||||
</dir> <!-- LEVELS -->
|
||||
|
|
|
@ -77,8 +77,8 @@ load_chara(Chara *chara, const char *filename, TIM_IMAGE *tim)
|
|||
/* tim->crect->x, tim->crect->y, */
|
||||
/* tim->crect->w, tim->crect->h, */
|
||||
/* getClut(tim->crect->x, tim->crect->y)); */
|
||||
chara->crectx = 320;
|
||||
chara->crecty = 256;
|
||||
chara->crectx = 0;
|
||||
chara->crecty = 480;
|
||||
chara->prectx = 320;
|
||||
chara->precty = 0; // why not loading correctly???
|
||||
|
||||
|
|
|
@ -199,8 +199,8 @@ load_lvl(LevelData *lvl, const char *filename)
|
|||
// not loading correctly, but we don't really need them
|
||||
lvl->prectx = 448;
|
||||
lvl->precty = 0;
|
||||
lvl->crectx = 320;
|
||||
lvl->crecty = 257;
|
||||
lvl->crectx = 0;
|
||||
lvl->crecty = 482;
|
||||
//lvl->clutmode = 0; // NOTE: This was set to tim->mode previously.
|
||||
lvl->_unused1 = 0;
|
||||
|
||||
|
@ -515,12 +515,12 @@ render_lvl(
|
|||
cy = (cam_y >> 12);
|
||||
|
||||
if(lvl->num_layers > 0)
|
||||
_render_layer(lvl, map128, map16, cx, cy, OT_LENGTH - 1, 0);
|
||||
_render_layer(lvl, map128, map16, cx, cy, OT_LENGTH - 3, 0);
|
||||
|
||||
DR_TPAGE *tpage = get_next_prim();
|
||||
increment_prim(sizeof(DR_TPAGE));
|
||||
setDrawTPage(tpage, 0, 1, getTPage(lvl->clutmode & 0x3, 1, lvl->prectx, lvl->precty));
|
||||
sort_prim(tpage, OT_LENGTH - 1);
|
||||
sort_prim(tpage, OT_LENGTH - 3);
|
||||
|
||||
// Render objects on nearest window
|
||||
_render_obj_window(lvl, tbl, cx, cy);
|
||||
|
|
10
src/main.c
|
@ -21,6 +21,16 @@
|
|||
#include "memalloc.h"
|
||||
#include "screen.h"
|
||||
|
||||
/*
|
||||
Locations of common textures on frame buffer:
|
||||
================================================
|
||||
Player 1: 320x0; CLUT: 0x480
|
||||
Common objects: 576x0; CLUT: 0x481
|
||||
Level tiles: 448x0; CLUT: 0x482 (if exists)
|
||||
Level BG0: 448x256; CLUT: 0x483 (4-bit only)
|
||||
Level BG1: 512x256; CLUT: 0x484 (4-bit only)
|
||||
*/
|
||||
|
||||
int debug_mode = 0;
|
||||
|
||||
int
|
||||
|
|
|
@ -24,6 +24,8 @@ alloc_arena_free(ArenaAllocator *arena)
|
|||
void *
|
||||
alloc_arena_malloc(ArenaAllocator *arena, size_t size)
|
||||
{
|
||||
if(size == 0) return NULL;
|
||||
|
||||
// Align size so we don't get unaligned memory access
|
||||
size += 8 - (size % 8);
|
||||
|
||||
|
|
|
@ -266,10 +266,10 @@ begin_render_routine:
|
|||
|
||||
// COMMON OBJECTS have the following VRAM coords:
|
||||
// Sprites: 576x0
|
||||
// CLUT: 576x256
|
||||
// CLUT: 0x481
|
||||
|
||||
poly->tpage = getTPage(0, 0, 576, 0);
|
||||
poly->clut = getClut(576, 256);
|
||||
poly->clut = getClut(0, 481);
|
||||
|
||||
sort_prim(poly, state->id == OBJ_RING ? 3 : 4);
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ static void _ring_update(ObjectState *state, ObjectTableEntry *typedata, VECTOR
|
|||
static void _goal_sign_update(ObjectState *state, ObjectTableEntry *typedata, VECTOR *pos);
|
||||
static void _monitor_update(ObjectState *state, ObjectTableEntry *typedata, VECTOR *pos);
|
||||
static void _spring_update(ObjectState *state, ObjectTableEntry *, VECTOR *pos, uint8_t is_red);
|
||||
static void _spring_diagonal_update(ObjectState *state, ObjectTableEntry *, VECTOR *pos, uint8_t is_red);
|
||||
static void _checkpoint_update(ObjectState *state, ObjectTableEntry *, VECTOR *pos);
|
||||
|
||||
// Player hitbox information. Calculated once per frame.
|
||||
|
@ -80,12 +81,14 @@ object_update(ObjectState *state, ObjectTableEntry *typedata, VECTOR *pos)
|
|||
|
||||
switch(state->id) {
|
||||
default: break;
|
||||
case OBJ_RING: _ring_update(state, typedata, pos); break;
|
||||
case OBJ_GOAL_SIGN: _goal_sign_update(state, typedata, pos); break;
|
||||
case OBJ_MONITOR: _monitor_update(state, typedata, pos); break;
|
||||
case OBJ_SPRING_YELLOW: _spring_update(state, typedata, pos, 0); break;
|
||||
case OBJ_SPRING_RED: _spring_update(state, typedata, pos, 1); break;
|
||||
case OBJ_CHECKPOINT: _checkpoint_update(state, typedata, pos); break;
|
||||
case OBJ_RING: _ring_update(state, typedata, pos); break;
|
||||
case OBJ_GOAL_SIGN: _goal_sign_update(state, typedata, pos); break;
|
||||
case OBJ_MONITOR: _monitor_update(state, typedata, pos); break;
|
||||
case OBJ_SPRING_YELLOW: _spring_update(state, typedata, pos, 0); break;
|
||||
case OBJ_SPRING_RED: _spring_update(state, typedata, pos, 1); break;
|
||||
case OBJ_SPRING_YELLOW_DIAGONAL: _spring_diagonal_update(state, typedata, pos, 0); break;
|
||||
case OBJ_SPRING_RED_DIAGONAL: _spring_diagonal_update(state, typedata, pos, 1); break;
|
||||
case OBJ_CHECKPOINT: _checkpoint_update(state, typedata, pos); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -229,75 +232,116 @@ _spring_update(ObjectState *state, ObjectTableEntry *, VECTOR *pos, uint8_t is_r
|
|||
hitbox_collision(player_vx, player_vy, player_width, player_height,
|
||||
solidity_vx, solidity_vy, solidity_w, solidity_h);
|
||||
|
||||
switch(collision_side) {
|
||||
default: return;
|
||||
case OBJ_SIDE_LEFT:
|
||||
if(state->flipmask & MASK_FLIP_ROTCT) {
|
||||
if(player.grnd) player.vel.vz = is_red ? -0x10000 : -0xa000;
|
||||
else player.vel.vx = is_red ? -0x10000 : -0xa000;
|
||||
player.ctrllock = 16;
|
||||
player.anim_dir = -1;
|
||||
state->anim_state.animation = 1;
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
} else {
|
||||
player.ev_right = (CollisionEvent) {
|
||||
.collided = 1,
|
||||
.coord = solidity_vx + 1,
|
||||
.angle = 0
|
||||
};
|
||||
}
|
||||
break;
|
||||
case OBJ_SIDE_RIGHT:
|
||||
if(state->flipmask & MASK_FLIP_ROTCW) {
|
||||
if(player.grnd) player.vel.vz = is_red ? 0x10000 : 0xa000;
|
||||
else player.vel.vx = is_red ? 0x10000 : 0xa000;
|
||||
player.ctrllock = 16;
|
||||
player.anim_dir = 1;
|
||||
state->anim_state.animation = 1;
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
} else {
|
||||
player.ev_left = (CollisionEvent) {
|
||||
.collided = 1,
|
||||
.coord = (solidity_vx + 15),
|
||||
.angle = 0
|
||||
};
|
||||
}
|
||||
break;
|
||||
case OBJ_SIDE_TOP:
|
||||
if(state->flipmask == 0) {
|
||||
player.grnd = 0;
|
||||
player.vel.vy = is_red ? -0x10000 : -0xa000;
|
||||
player.angle = 0;
|
||||
player.action = 0;
|
||||
state->anim_state.animation = 1;
|
||||
player_set_animation_direct(&player, ANIM_WALKING);
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
} else {
|
||||
player.ev_grnd1 = player.ev_grnd2 = (CollisionEvent) {
|
||||
.collided = 1,
|
||||
.coord = solidity_vy + 8,
|
||||
.angle = 0
|
||||
};
|
||||
}
|
||||
break;
|
||||
case OBJ_SIDE_BOTTOM:
|
||||
if(state->flipmask & MASK_FLIP_FLIPY) {
|
||||
player.grnd = 0;
|
||||
player.vel.vy = is_red ? 0x10000 : 0xa000;
|
||||
player.angle = 0;
|
||||
player.action = 0;
|
||||
state->anim_state.animation = 1;
|
||||
player_set_animation_direct(&player, ANIM_WALKING);
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
} else {
|
||||
player.ev_ceil1 = player.ev_ceil2 = (CollisionEvent) {
|
||||
.collided = 1,
|
||||
.coord = solidity_vy + solidity_h,
|
||||
.angle = 0
|
||||
};
|
||||
}
|
||||
break;
|
||||
// Simple spring collision.
|
||||
// In this case, springs are not solid, and the player's spring action
|
||||
// relate to where the spring is pointing at.
|
||||
if(collision_side == OBJ_SIDE_NONE)
|
||||
return;
|
||||
else if(state->flipmask & MASK_FLIP_ROTCT) { // Left-pointing spring
|
||||
if(player.grnd) player.vel.vz = is_red ? -0x10000 : -0xa000;
|
||||
else player.vel.vx = is_red ? -0x10000 : -0xa000;
|
||||
player.ctrllock = 16;
|
||||
player.anim_dir = -1;
|
||||
state->anim_state.animation = 1;
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
} else if(state->flipmask & MASK_FLIP_ROTCW) { // Right-pointing spring
|
||||
if(player.grnd) player.vel.vz = is_red ? 0x10000 : 0xa000;
|
||||
else player.vel.vx = is_red ? 0x10000 : 0xa000;
|
||||
player.ctrllock = 16;
|
||||
player.anim_dir = 1;
|
||||
state->anim_state.animation = 1;
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
} else if(state->flipmask == 0) { // Top-pointing spring
|
||||
player.grnd = 0;
|
||||
player.vel.vy = is_red ? -0x10000 : -0xa000;
|
||||
player.vel.vz = 0;
|
||||
player.angle = 0;
|
||||
player.action = 0;
|
||||
state->anim_state.animation = 1;
|
||||
player_set_animation_direct(&player, ANIM_WALKING);
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
} else if(state->flipmask & MASK_FLIP_FLIPY) { // Bottom-pointing spring
|
||||
player.grnd = 0;
|
||||
player.vel.vy = is_red ? 0x10000 : 0xa000;
|
||||
player.vel.vz = 0;
|
||||
player.angle = 0;
|
||||
player.action = 0;
|
||||
state->anim_state.animation = 1;
|
||||
player_set_animation_direct(&player, ANIM_WALKING);
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
}
|
||||
|
||||
|
||||
// Complex spring collision. Commented out. Doesn't work properly.
|
||||
/* switch(collision_side) { */
|
||||
/* default: return; */
|
||||
/* case OBJ_SIDE_LEFT: */
|
||||
/* if(state->flipmask & MASK_FLIP_ROTCT) { */
|
||||
/* if(player.grnd) player.vel.vz = is_red ? -0x10000 : -0xa000; */
|
||||
/* else player.vel.vx = is_red ? -0x10000 : -0xa000; */
|
||||
/* player.ctrllock = 16; */
|
||||
/* player.anim_dir = -1; */
|
||||
/* state->anim_state.animation = 1; */
|
||||
/* sound_play_vag(sfx_sprn, 0); */
|
||||
/* } else { */
|
||||
/* player.ev_right = (CollisionEvent) { */
|
||||
/* .collided = 1, */
|
||||
/* .coord = solidity_vx + 1, */
|
||||
/* .angle = 0 */
|
||||
/* }; */
|
||||
/* } */
|
||||
/* break; */
|
||||
/* case OBJ_SIDE_RIGHT: */
|
||||
/* if(state->flipmask & MASK_FLIP_ROTCW) { */
|
||||
/* if(player.grnd) player.vel.vz = is_red ? 0x10000 : 0xa000; */
|
||||
/* else player.vel.vx = is_red ? 0x10000 : 0xa000; */
|
||||
/* player.ctrllock = 16; */
|
||||
/* player.anim_dir = 1; */
|
||||
/* state->anim_state.animation = 1; */
|
||||
/* sound_play_vag(sfx_sprn, 0); */
|
||||
/* } else { */
|
||||
/* player.ev_left = (CollisionEvent) { */
|
||||
/* .collided = 1, */
|
||||
/* .coord = (solidity_vx + 15), */
|
||||
/* .angle = 0 */
|
||||
/* }; */
|
||||
/* } */
|
||||
/* break; */
|
||||
/* case OBJ_SIDE_TOP: */
|
||||
/* if(state->flipmask == 0) { */
|
||||
/* player.grnd = 0; */
|
||||
/* player.vel.vy = is_red ? -0x10000 : -0xa000; */
|
||||
/* player.angle = 0; */
|
||||
/* player.action = 0; */
|
||||
/* state->anim_state.animation = 1; */
|
||||
/* player_set_animation_direct(&player, ANIM_WALKING); */
|
||||
/* sound_play_vag(sfx_sprn, 0); */
|
||||
/* } else { */
|
||||
/* player.ev_grnd1 = player.ev_grnd2 = (CollisionEvent) { */
|
||||
/* .collided = 1, */
|
||||
/* .coord = solidity_vy + 8, */
|
||||
/* .angle = 0 */
|
||||
/* }; */
|
||||
/* } */
|
||||
/* break; */
|
||||
/* case OBJ_SIDE_BOTTOM: */
|
||||
/* if(state->flipmask & MASK_FLIP_FLIPY) { */
|
||||
/* player.grnd = 0; */
|
||||
/* player.vel.vy = is_red ? 0x10000 : 0xa000; */
|
||||
/* player.angle = 0; */
|
||||
/* player.action = 0; */
|
||||
/* state->anim_state.animation = 1; */
|
||||
/* player_set_animation_direct(&player, ANIM_WALKING); */
|
||||
/* sound_play_vag(sfx_sprn, 0); */
|
||||
/* } else { */
|
||||
/* player.ev_ceil1 = player.ev_ceil2 = (CollisionEvent) { */
|
||||
/* .collided = 1, */
|
||||
/* .coord = solidity_vy + solidity_h, */
|
||||
/* .angle = 0 */
|
||||
/* }; */
|
||||
/* } */
|
||||
/* break; */
|
||||
/* } */
|
||||
} else if(state->anim_state.animation == OBJ_ANIMATION_NO_ANIMATION) {
|
||||
state->anim_state.animation = 0;
|
||||
state->anim_state.frame = 0;
|
||||
|
@ -322,3 +366,71 @@ _checkpoint_update(ObjectState *state, ObjectTableEntry *, VECTOR *pos)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define SPRND_ST_R 0x0000b500 // 11.3125
|
||||
#define SPRND_ST_Y 0x00007120 // 7.0703125
|
||||
|
||||
static void
|
||||
_spring_diagonal_update(ObjectState *state, ObjectTableEntry *, VECTOR *pos, uint8_t is_red)
|
||||
{
|
||||
// For diagonal springs, interaction should occur if and only if the player
|
||||
// is colliding with its top.
|
||||
if(state->anim_state.animation == 0) {
|
||||
int32_t solidity_vx = pos->vx - 16;
|
||||
int32_t solidity_vy = pos->vy - 32; // Spring is 32x32 solid
|
||||
int32_t solidity_w = 32;
|
||||
int32_t solidity_h = 32;
|
||||
|
||||
// Spring hitbox is actually calculated relative to player's X position
|
||||
// within it.
|
||||
// The hitbox is always low on the bottom 10 pixels of the spring,
|
||||
// unless the player is at any given X coordinate of it; if so, the
|
||||
// hitbox height increases/decreases to give a diagonal effect.
|
||||
// This way, the player will always collide with a hitbox that looks
|
||||
// like a diagonal trapezium.
|
||||
|
||||
int32_t shrink = 0;
|
||||
int32_t delta = 0;
|
||||
if(state->flipmask & MASK_FLIP_FLIPX) {
|
||||
delta = solidity_w - (player_vx - solidity_vx);
|
||||
} else {
|
||||
delta = player_vx - solidity_vx + 16;
|
||||
}
|
||||
|
||||
if(delta > 10 && delta < 33) {
|
||||
shrink = delta - 10;
|
||||
} else shrink = 22;
|
||||
|
||||
solidity_h -= shrink;
|
||||
|
||||
if(state->flipmask & MASK_FLIP_FLIPY) {
|
||||
solidity_vy -= 32;
|
||||
} else solidity_vy += shrink;
|
||||
|
||||
ObjectCollision collision_side =
|
||||
hitbox_collision(player_vx, player_vy, player_width, player_height,
|
||||
solidity_vx, solidity_vy, solidity_w, solidity_h);
|
||||
|
||||
if(collision_side == OBJ_SIDE_NONE) return;
|
||||
|
||||
player.grnd = 0;
|
||||
player.vel.vx = is_red ? SPRND_ST_R : SPRND_ST_Y;
|
||||
player.vel.vy = is_red ? SPRND_ST_R : SPRND_ST_Y;
|
||||
player.vel.vz = 0;
|
||||
if(!(state->flipmask & MASK_FLIP_FLIPY)) player.vel.vy *= -1;
|
||||
if(state->flipmask & MASK_FLIP_FLIPX) {
|
||||
player.vel.vx *= -1;
|
||||
player.anim_dir = -1; // Flip on X: point player left
|
||||
} else player.anim_dir = 1; // No flip on X: point player right
|
||||
player.angle = 0;
|
||||
player.action = 0;
|
||||
state->anim_state.animation = 1;
|
||||
player_set_animation_direct(&player, ANIM_WALKING);
|
||||
sound_play_vag(sfx_sprn, 0);
|
||||
|
||||
} else if(state->anim_state.animation == OBJ_ANIMATION_NO_ANIMATION) {
|
||||
state->anim_state.animation = 0;
|
||||
state->anim_state.frame = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
121
src/parallax.c
Normal file
|
@ -0,0 +1,121 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#include "parallax.h"
|
||||
#include "util.h"
|
||||
#include "memalloc.h"
|
||||
#include "camera.h"
|
||||
#include "render.h"
|
||||
|
||||
extern ArenaAllocator _level_arena;
|
||||
extern uint8_t level_fade;
|
||||
|
||||
void
|
||||
load_parallax(Parallax *parallax, const char *filename)
|
||||
{
|
||||
uint8_t *bytes;
|
||||
uint32_t b, length;
|
||||
|
||||
// If we fail to read the file, prepare it so we get no surprises
|
||||
// when rendering a parallax structure
|
||||
parallax->num_strips = 0;
|
||||
parallax->strips = NULL;
|
||||
|
||||
b = 0;
|
||||
bytes = file_read(filename, &length);
|
||||
if(bytes == NULL) {
|
||||
printf("Error reading PRL file %s from the CD. Using defaults\n", filename);
|
||||
return;
|
||||
}
|
||||
|
||||
parallax->num_strips = get_byte(bytes, &b);
|
||||
parallax->strips = alloc_arena_malloc(
|
||||
&_level_arena,
|
||||
sizeof(ParallaxStrip) * parallax->num_strips);
|
||||
for(uint8_t i = 0; i < parallax->num_strips; i++) {
|
||||
ParallaxStrip *strip = ¶llax->strips[i];
|
||||
strip->width = 0;
|
||||
|
||||
strip->num_parts = get_byte(bytes, &b);
|
||||
strip->is_single = get_byte(bytes, &b);
|
||||
strip->scrollx = get_long_be(bytes, &b);
|
||||
strip->speedx = get_long_be(bytes, &b);
|
||||
strip->y0 = get_short_be(bytes, &b);
|
||||
strip->rposx = 0;
|
||||
|
||||
strip->parts = alloc_arena_malloc(
|
||||
&_level_arena,
|
||||
sizeof(ParallaxPart) * strip->num_parts);
|
||||
for(uint8_t j = 0; j < strip->num_parts; j++) {
|
||||
ParallaxPart *part = &strip->parts[j];
|
||||
|
||||
part->u0 = get_byte(bytes, &b);
|
||||
part->v0 = get_byte(bytes, &b);
|
||||
part->bgindex = get_byte(bytes, &b);
|
||||
part->width = get_short_be(bytes, &b);
|
||||
part->height = get_short_be(bytes, &b);
|
||||
part->offsetx = (j == 0)
|
||||
? 0
|
||||
: (strip->parts[j-1].offsetx + strip->parts[j-1].width);
|
||||
strip->width += part->width;
|
||||
}
|
||||
}
|
||||
|
||||
free(bytes);
|
||||
}
|
||||
|
||||
void
|
||||
parallax_draw(Parallax *prl, Camera *camera,
|
||||
uint8_t tx_mode, int32_t px, int32_t py, int32_t cx, int32_t cy)
|
||||
{
|
||||
// Camera left boundary (fixed 20.12 format)
|
||||
int32_t camera_vx = (camera->pos.vx - (CENTERX << 12));
|
||||
|
||||
// Strips are draw bottom to top so we can have further stuff
|
||||
// (e.g. clouds) drawn on back
|
||||
for(int8_t si = prl->num_strips - 1; si >= 0; si--) {
|
||||
ParallaxStrip *strip = &prl->strips[si];
|
||||
// Cast multiplication to avoid sign extension on bit shift
|
||||
// This gets the mult. result but also removes the decimal part
|
||||
int32_t stripx = (uint32_t)(camera_vx * strip->scrollx) >> 24;
|
||||
|
||||
// Update strip relative position when there's speed involved
|
||||
strip->rposx -= strip->speedx;
|
||||
if((strip->rposx >> 12) < -((int32_t)strip->width))
|
||||
strip->rposx = 0;
|
||||
|
||||
for(uint8_t pi = 0; pi < strip->num_parts; pi++) {
|
||||
ParallaxPart *part = &strip->parts[pi];
|
||||
|
||||
// Calculate part X position based on factor and camera (int format)
|
||||
int32_t vx = ((int32_t)part->offsetx) - stripx + (strip->rposx >> 12);
|
||||
|
||||
// Given that each part is a horizontal piece of a strip, we assume
|
||||
// that these parts repeat at every (strip width), so just draw
|
||||
// all equal parts now at once, until we exhaust the screen width
|
||||
for(int32_t wx = vx;
|
||||
wx < (int32_t)(SCREEN_XRES + part->width);
|
||||
wx += part->width)
|
||||
{
|
||||
// Don't draw if strip is outside screen
|
||||
if((wx + part->width) < 0) continue;
|
||||
|
||||
// TODO: 6 or 8 Depends on CLUT!!!
|
||||
uint16_t curr_px = (uint16_t)(px + ((uint32_t)part->bgindex << 6));
|
||||
uint16_t curr_cy = (uint16_t)(cy + part->bgindex);
|
||||
|
||||
POLY_FT4 *poly = (POLY_FT4 *)get_next_prim();
|
||||
increment_prim(sizeof(POLY_FT4));
|
||||
setPolyFT4(poly);
|
||||
setRGB0(poly, level_fade, level_fade, level_fade);
|
||||
poly->tpage = getTPage(tx_mode & 0x3, 0, curr_px, py);
|
||||
poly->clut = getClut(cx, curr_cy);
|
||||
setXYWH(poly, wx, strip->y0, part->width, part->height);
|
||||
setUVWH(poly, part->u0, part->v0, part->width - 1, part->height - 1);
|
||||
sort_prim(poly, OT_LENGTH - 2); // Layer 5: Background
|
||||
|
||||
// If drawing a single time, stop now
|
||||
if(strip->is_single) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -16,6 +16,7 @@
|
|||
#include "timer.h"
|
||||
#include "model.h"
|
||||
#include "object.h"
|
||||
#include "parallax.h"
|
||||
|
||||
extern int debug_mode;
|
||||
|
||||
|
@ -78,10 +79,14 @@ static void level_load_player();
|
|||
static void level_load_level();
|
||||
static void level_set_clearcolor();
|
||||
|
||||
// TODO!!!
|
||||
typedef struct {
|
||||
/* Model ring; */
|
||||
uint8_t level_transition;
|
||||
Parallax parallax;
|
||||
uint8_t parallax_tx_mode;
|
||||
int32_t parallax_px;
|
||||
int32_t parallax_py;
|
||||
int32_t parallax_cx;
|
||||
int32_t parallax_cy;
|
||||
} screen_level_data;
|
||||
|
||||
void
|
||||
|
@ -98,7 +103,7 @@ screen_level_load()
|
|||
camera_init(&camera);
|
||||
|
||||
level_load_player();
|
||||
level_load_level();
|
||||
level_load_level(data);
|
||||
camera_set(&camera, player.pos.vx, player.pos.vy);
|
||||
|
||||
reset_elapsed_frames();
|
||||
|
@ -234,6 +239,10 @@ screen_level_draw(void *d)
|
|||
/* render_model(&data->ring); */
|
||||
|
||||
render_lvl(&leveldata, &map128, &map16, &obj_table_common, camera.pos.vx, camera.pos.vy);
|
||||
parallax_draw(&data->parallax, &camera,
|
||||
data->parallax_tx_mode,
|
||||
data->parallax_px, data->parallax_py,
|
||||
data->parallax_cx, data->parallax_cy);
|
||||
|
||||
// Gouraud-shaded cube
|
||||
/* RotMatrix(&rotation, &world); */
|
||||
|
@ -345,7 +354,7 @@ level_load_player()
|
|||
}
|
||||
|
||||
static void
|
||||
level_load_level()
|
||||
level_load_level(screen_level_data *data)
|
||||
{
|
||||
paused = 0;
|
||||
|
||||
|
@ -361,8 +370,9 @@ level_load_level()
|
|||
TIM_IMAGE tim;
|
||||
uint32_t filelength;
|
||||
|
||||
/* === LEVEL TILES === */
|
||||
// Load level tiles
|
||||
snprintf(filename0, 255, "%s\\TILES.TIM;1", basepath);
|
||||
|
||||
printf("Loading %s...\n", filename0);
|
||||
uint8_t *timfile = file_read(filename0, &filelength);
|
||||
if(timfile) {
|
||||
|
@ -390,6 +400,40 @@ level_load_level()
|
|||
}
|
||||
}
|
||||
|
||||
/* === PARALLAX === */
|
||||
// Load level parallax data
|
||||
snprintf(filename0, 255, "%s\\PRL.PRL;1", basepath);
|
||||
printf("Loading parallax data...\n");
|
||||
load_parallax(&data->parallax, filename0);
|
||||
printf("Loaded parallax strips: %d\n", data->parallax.num_strips);
|
||||
|
||||
// Load level parallax textures
|
||||
snprintf(filename0, 255, "%s\\BG0.TIM;1", basepath);
|
||||
printf("Loading %s...\n", filename0);
|
||||
timfile = file_read(filename0, &filelength);
|
||||
if(timfile) {
|
||||
load_texture(timfile, &tim);
|
||||
|
||||
// Background compression must be the same for both background
|
||||
// images. Also, they must be one texture page apart (64 bytes)
|
||||
// horizontally, and their clut must be vertically aligned
|
||||
data->parallax_tx_mode = tim.mode;
|
||||
data->parallax_px = 448;
|
||||
data->parallax_py = 256;
|
||||
data->parallax_cx = 0;
|
||||
data->parallax_cy = 483;
|
||||
|
||||
free(timfile);
|
||||
} else printf("Warning: Level BG0 not found, ignoring\n");
|
||||
|
||||
snprintf(filename0, 255, "%s\\BG1.TIM;1", basepath);
|
||||
printf("Loading %s...\n", filename0);
|
||||
timfile = file_read(filename0, &filelength);
|
||||
if(timfile) {
|
||||
load_texture(timfile, &tim);
|
||||
free(timfile);
|
||||
} else printf("Warning: Level BG1 not found, ignoring\n");
|
||||
|
||||
snprintf(filename0, 255, "%s\\MAP16.MAP;1", basepath);
|
||||
snprintf(filename1, 255, "%s\\MAP16.COL;1", basepath);
|
||||
printf("Loading %s and %s...\n", filename0, filename1);
|
||||
|
@ -402,9 +446,10 @@ level_load_level()
|
|||
printf("Loading %s...\n", filename0);
|
||||
load_lvl(&leveldata, filename0);
|
||||
|
||||
/* === OBJECTS === */
|
||||
// Load common objects
|
||||
printf("Loading common object texture...\n");
|
||||
file_read("\\LEVELS\\COMMON\\OBJ.TIM;1", &filelength);
|
||||
timfile = file_read("\\LEVELS\\COMMON\\OBJ.TIM;1", &filelength);
|
||||
if(timfile) {
|
||||
load_texture(timfile, &tim);
|
||||
free(timfile);
|
||||
|
@ -421,17 +466,12 @@ level_load_level()
|
|||
load_object_placement(filename0, &leveldata);
|
||||
|
||||
|
||||
/* === RENDERING PREPARATION === */
|
||||
// Pre-allocate and initialize level primitive buffer
|
||||
prepare_renderer(&leveldata);
|
||||
|
||||
level_debrief();
|
||||
|
||||
// Level 0 Zone 2 actually has background sound effects
|
||||
/* if(level == 1) { */
|
||||
/* SoundEffect sfx_rain = sound_load_vag("\\SFX\\RAIN.VAG;1"); */
|
||||
/* sound_play_vag(sfx_rain, 1); */
|
||||
/* } */
|
||||
|
||||
// Start playback after we don't need the CD anymore.
|
||||
snprintf(filename0, 255, "\\BGM\\BGM%03u.XA;1", (level / CHANNELS_PER_BGM) + 1);
|
||||
music_channel = level % CHANNELS_PER_BGM;
|
||||
|
@ -443,10 +483,11 @@ level_load_level()
|
|||
static void
|
||||
level_set_clearcolor()
|
||||
{
|
||||
if(level == 2 || level == 3)
|
||||
set_clear_color(LERPC(level_fade, 145), LERPC(level_fade, 59), LERPC(level_fade, 59));
|
||||
else if(level == 4 || level == 5)
|
||||
if(level == 2 || level == 3) // R1
|
||||
set_clear_color(LERPC(level_fade, 26), LERPC(level_fade, 104), LERPC(level_fade, 200));
|
||||
else if(level == 4 || level == 5) // R2 (GHZ)
|
||||
set_clear_color(LERPC(level_fade, 36), LERPC(level_fade, 0), LERPC(level_fade, 180));
|
||||
// R0
|
||||
else set_clear_color(LERPC(level_fade, 63), LERPC(level_fade, 0), LERPC(level_fade, 127));
|
||||
}
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ screen_levelselect_draw(void *d)
|
|||
if(debug_mode) {
|
||||
uint32_t elapsed_sectors;
|
||||
sound_xa_get_elapsed_sectors(&elapsed_sectors);
|
||||
FntPrint(-1, "BRANCH: %-21s %4s %3d\n",
|
||||
FntPrint(-1, "%-29s %4s %3d\n",
|
||||
GIT_COMMIT,
|
||||
GetVideoMode() == MODE_PAL ? "PAL" : "NTSC",
|
||||
get_frame_rate());
|
||||
|
|
|
@ -371,7 +371,7 @@ screen_title_draw(void *d)
|
|||
if(debug_mode) {
|
||||
uint32_t elapsed_sectors;
|
||||
sound_xa_get_elapsed_sectors(&elapsed_sectors);
|
||||
FntPrint(-1, "BRANCH: %-21s %4s %3d\n",
|
||||
FntPrint(-1, "%-29s %4s %3d\n",
|
||||
GIT_COMMIT,
|
||||
GetVideoMode() == MODE_PAL ? "PAL" : "NTSC",
|
||||
get_frame_rate());
|
||||
|
|
|
@ -115,8 +115,10 @@ load_texture(uint8_t *data, TIM_IMAGE *tim)
|
|||
{
|
||||
GetTimInfo((const uint32_t *)data, tim);
|
||||
LoadImage(tim->prect, tim->paddr);
|
||||
DrawSync(0);
|
||||
if(tim->mode & 0x8) {
|
||||
LoadImage(tim->crect, tim->caddr);
|
||||
DrawSync(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
116
tools/buildprl/buildprl.py
Executable file
|
@ -0,0 +1,116 @@
|
|||
#!/bin/env python
|
||||
|
||||
import sys
|
||||
import toml
|
||||
from os.path import realpath, dirname, basename
|
||||
from dataclasses import dataclass, field
|
||||
from ctypes import c_ubyte, c_byte, c_short, c_ushort, c_int
|
||||
from pprint import pp
|
||||
|
||||
c_short = c_short.__ctype_be__
|
||||
c_ushort = c_ushort.__ctype_be__
|
||||
c_int = c_int.__ctype_be__
|
||||
|
||||
|
||||
def tofixed(value: float, scale: int) -> int:
|
||||
return int(value * (1 << scale))
|
||||
|
||||
|
||||
def tofixed12(value: float) -> int:
|
||||
return tofixed(value, 12)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ParallaxPart:
|
||||
u0: int = 0
|
||||
v0: int = 0
|
||||
bg_index: int = 0
|
||||
width: int = 0
|
||||
height: int = 0
|
||||
|
||||
def write_to(self, f):
|
||||
f.write(c_ubyte(self.u0))
|
||||
f.write(c_ubyte(self.v0))
|
||||
f.write(c_ubyte(self.bg_index))
|
||||
f.write(c_ushort(self.width))
|
||||
f.write(c_ushort(self.height))
|
||||
|
||||
|
||||
@dataclass
|
||||
class ParallaxStrip:
|
||||
single: bool = False
|
||||
scrollx: float = 0
|
||||
speedx: float = 0
|
||||
y0: int = 0
|
||||
parts: [ParallaxPart] = field(default_factory=list)
|
||||
|
||||
def write_to(self, f):
|
||||
f.write(c_ubyte(len(self.parts)))
|
||||
f.write(c_ubyte(int(self.single)))
|
||||
f.write(c_int(tofixed12(self.scrollx)))
|
||||
f.write(c_int(tofixed12(self.speedx)))
|
||||
f.write(c_short(self.y0))
|
||||
for p in self.parts:
|
||||
p.write_to(f)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Parallax:
|
||||
strips: [ParallaxStrip] = field(default_factory=list)
|
||||
|
||||
def write(self, out_path):
|
||||
with open(out_path, "wb") as f:
|
||||
f.write(c_ubyte(len(self.strips)))
|
||||
for s in self.strips:
|
||||
s.write_to(f)
|
||||
|
||||
|
||||
def parse(data) -> Parallax:
|
||||
p = Parallax()
|
||||
for name, strip_data in data.items():
|
||||
strip = ParallaxStrip()
|
||||
strip.single = strip_data.get("single", False)
|
||||
strip.scrollx = strip_data.get("scrollx", 0)
|
||||
strip.speedx = strip_data.get("speedx", 0)
|
||||
strip.y0 = strip_data.get("y0")
|
||||
height = strip_data.get("height") # Reserved
|
||||
parts = strip_data.get("parts")
|
||||
|
||||
if not parts:
|
||||
# This is a single-piece strip
|
||||
part = ParallaxPart()
|
||||
v0 = strip_data.get("v0")
|
||||
part.bg_index = int(v0 / 256)
|
||||
part.u0 = strip_data.get("u0")
|
||||
part.v0 = v0 % 256
|
||||
part.width = strip_data.get("width")
|
||||
part.height = height
|
||||
strip.parts.append(part)
|
||||
else:
|
||||
for part_data in parts:
|
||||
part = ParallaxPart()
|
||||
v0 = part_data.get("v0")
|
||||
part.bg_index = int(v0 / 256)
|
||||
part.u0 = part_data.get("u0")
|
||||
part.v0 = v0 % 256
|
||||
part.width = part_data.get("width")
|
||||
part.height = height
|
||||
strip.parts.append(part)
|
||||
|
||||
p.strips.append(strip)
|
||||
return p
|
||||
|
||||
|
||||
def main():
|
||||
toml_path = realpath(sys.argv[1])
|
||||
data = toml.load(toml_path)
|
||||
parallax = parse(data)
|
||||
|
||||
# /assets/levels/R2/parallax.toml -> /assets/levels/R2/PRL.PRL
|
||||
toml_dir = dirname(toml_path)
|
||||
out_path = toml_dir + "/PRL.PRL"
|
||||
parallax.write(out_path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
25
tools/layouts/prl.hexpat
Normal file
|
@ -0,0 +1,25 @@
|
|||
// -*- mode: c; -*-
|
||||
|
||||
struct ParallaxPart {
|
||||
u8 u0;
|
||||
u8 v0;
|
||||
u8 tex_idx;
|
||||
be u16 width;
|
||||
be u16 height;
|
||||
};
|
||||
|
||||
struct ParallaxStrip {
|
||||
u8 num_parts;
|
||||
u8 is_single;
|
||||
be s32 scrollx;
|
||||
be s32 speedx;
|
||||
be s16 y0;
|
||||
ParallaxPart parts[num_parts];
|
||||
};
|
||||
|
||||
struct Parallax {
|
||||
u8 num_strips;
|
||||
ParallaxStrip strips[num_strips];
|
||||
};
|
||||
|
||||
Parallax parallax @ 0x0;
|