This commit is contained in:
Daveo 2001-04-18 23:04:03 +00:00
parent bfeef1bce5
commit f338710074
38 changed files with 358 additions and 1018 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -14,22 +14,21 @@ $LevelDir =$Chapter/\$Level;
$OutFile=">$OutFile";
open(OutFile) || die "Can't create makefile $OutFile; $!";
print OutFile <<eot
#print <<eot
# print <<eot
.PHONY : make$Chapter\_$Level clean$Chapter\_$Level
make$Chapter\_$Level\:\t$Chapter\_$Level\_LVL\n
clean$Chapter\_$Level\:\tclean$Chapter\_$Level\_LVL
$Chapter\_$Level\_IN_DIR :=\t\$(LEVELS_IN_DIR)/$Chapter/$Level
$Chapter\_$Level\_IN :=\t\$(foreach LVL, \$(LEVELS_$Chapter\_$Level), \$($Chapter\_$Level\_IN_DIR)/$Level\$(LVL).mex)
$Chapter\_$Level\_OUT :=\t\$(foreach LVL, \$(LEVELS_$Chapter\_$Level), \$(LEVELS_OUT_DIR)/$Chapter\_$Level\$(LVL).lvl)
$Chapter\_$Level\_TEX :=\t\$(LEVELS_OUT_DIR)/$Chapter\_$Level.tex)
$Chapter\_$Level\_IN :=\t\$(LEVELS_IN_DIR)/$Chapter/$Level/$Level.mex
$Chapter\_$Level\_OUT :=\t\$(LEVELS_OUT_DIR)/$Chapter\_$Level.lvl
$Chapter\_$Level\_TEX :=\t\$(LEVELS_OUT_DIR)/$Chapter\_$Level.tex
clean$Chapter\_$Level\_LVL :\n\t\$(RM) -f \$($Chapter\_$Level\_OUT) \$($Chapter\_$Level\_TEX)
$Chapter\_$Level\_LVL :\t\$($Chapter\_$Level\_IN)
\$($Chapter\_$Level\_OUT) : \$($Chapter\_$Level\_IN)
\t\@\$(MKLEVEL) \$($Chapter\_$Level\_IN) -o:\$(LEVELS_OUT_DIR) -c:$Chapter -l:$Level \$(LEVELS_OPTS)
\t\@\$(MKLEVEL) \$($Chapter\_$Level\_IN) -o:\$($Chapter\_$Level\_OUT) \$(LEVELS_OPTS)
eot
;

View File

@ -42,407 +42,66 @@ loadingscreens/pizza.gfx
loadingscreens/teenage.gfx
memcard/memhead.bin
levels/FMA_SHADYSHOALS.Inf
levels/FMA_SHADYSHOALS.TBK
levels/fma_shadyshoals.tex
levels/FMA_SHADYSHOALS01.Lvl
levels/CHAPTER01_LEVEL01.Lvl
levels/CHAPTER01_LEVEL01.Tex
levels/CHAPTER01_LEVEL02.Lvl
levels/CHAPTER01_LEVEL02.Tex
levels/CHAPTER01_LEVEL03.Lvl
levels/CHAPTER01_LEVEL03.Tex
levels/CHAPTER01_LEVEL04.Lvl
levels/CHAPTER01_LEVEL04.Tex
levels/CHAPTER01_LEVEL01.Inf
levels/CHAPTER01_LEVEL01.TBK
levels/chapter01_level01.tex
levels/CHAPTER01_LEVEL0101.Lvl
levels/CHAPTER01_LEVEL0102.Lvl
levels/CHAPTER01_LEVEL0103.Lvl
levels/CHAPTER01_LEVEL0104.Lvl
levels/CHAPTER01_LEVEL0105.Lvl
levels/CHAPTER01_LEVEL0106.Lvl
levels/CHAPTER01_LEVEL0107.Lvl
levels/CHAPTER01_LEVEL0108.Lvl
levels/CHAPTER01_LEVEL0109.Lvl
levels/CHAPTER01_LEVEL0110.Lvl
levels/CHAPTER01_LEVEL0111.Lvl
levels/CHAPTER01_LEVEL0112.Lvl
levels/CHAPTER02_LEVEL01.Lvl
levels/CHAPTER02_LEVEL01.Tex
levels/CHAPTER02_LEVEL02.Lvl
levels/CHAPTER02_LEVEL02.Tex
levels/CHAPTER02_LEVEL03.Lvl
levels/CHAPTER02_LEVEL03.Tex
levels/CHAPTER02_LEVEL04.Lvl
levels/CHAPTER02_LEVEL04.Tex
levels/CHAPTER01_LEVEL02.Inf
levels/CHAPTER01_LEVEL02.TBK
levels/chapter01_level02.tex
levels/CHAPTER01_LEVEL0201.Lvl
levels/CHAPTER01_LEVEL0202.Lvl
levels/CHAPTER01_LEVEL0203.Lvl
levels/CHAPTER01_LEVEL0204.Lvl
levels/CHAPTER01_LEVEL0205.Lvl
levels/CHAPTER01_LEVEL0206.Lvl
levels/CHAPTER01_LEVEL0207.Lvl
levels/CHAPTER01_LEVEL0208.Lvl
levels/CHAPTER01_LEVEL0209.Lvl
levels/CHAPTER01_LEVEL0210.Lvl
levels/CHAPTER01_LEVEL0211.Lvl
levels/CHAPTER01_LEVEL0212.Lvl
levels/CHAPTER03_LEVEL01.Lvl
levels/CHAPTER03_LEVEL01.Tex
levels/CHAPTER03_LEVEL02.Lvl
levels/CHAPTER03_LEVEL02.Tex
levels/CHAPTER03_LEVEL03.Lvl
levels/CHAPTER03_LEVEL03.Tex
levels/CHAPTER03_LEVEL04.Lvl
levels/CHAPTER03_LEVEL04.Tex
levels/CHAPTER01_LEVEL03.Inf
levels/CHAPTER01_LEVEL03.TBK
levels/chapter01_level03.tex
levels/CHAPTER01_LEVEL0301.Lvl
levels/CHAPTER01_LEVEL0302.Lvl
levels/CHAPTER01_LEVEL0303.Lvl
levels/CHAPTER01_LEVEL0304.Lvl
levels/CHAPTER01_LEVEL0305.Lvl
levels/CHAPTER01_LEVEL0306.Lvl
levels/CHAPTER01_LEVEL0307.Lvl
levels/CHAPTER01_LEVEL0308.Lvl
levels/CHAPTER01_LEVEL0309.Lvl
levels/CHAPTER01_LEVEL0310.Lvl
levels/CHAPTER01_LEVEL0311.Lvl
levels/CHAPTER01_LEVEL0312.Lvl
levels/CHAPTER04_LEVEL01.Lvl
levels/CHAPTER04_LEVEL01.Tex
levels/CHAPTER04_LEVEL02.Lvl
levels/CHAPTER04_LEVEL02.Tex
levels/CHAPTER04_LEVEL03.Lvl
levels/CHAPTER04_LEVEL03.Tex
levels/CHAPTER04_LEVEL04.Lvl
levels/CHAPTER04_LEVEL04.Tex
levels/CHAPTER01_LEVEL04.Inf
levels/CHAPTER01_LEVEL04.TBK
levels/chapter01_level04.tex
levels/CHAPTER01_LEVEL0401.Lvl
levels/CHAPTER01_LEVEL0402.Lvl
levels/CHAPTER01_LEVEL0403.Lvl
levels/CHAPTER01_LEVEL0404.Lvl
levels/CHAPTER01_LEVEL0405.Lvl
levels/CHAPTER01_LEVEL0406.Lvl
levels/CHAPTER01_LEVEL0407.Lvl
levels/CHAPTER01_LEVEL0408.Lvl
levels/CHAPTER01_LEVEL0409.Lvl
levels/CHAPTER01_LEVEL0410.Lvl
levels/CHAPTER01_LEVEL0411.Lvl
levels/CHAPTER01_LEVEL0412.Lvl
levels/CHAPTER05_LEVEL01.Lvl
levels/CHAPTER05_LEVEL01.Tex
levels/CHAPTER05_LEVEL02.Lvl
levels/CHAPTER05_LEVEL02.Tex
levels/CHAPTER05_LEVEL03.Lvl
levels/CHAPTER05_LEVEL03.Tex
levels/CHAPTER05_LEVEL04.Lvl
levels/CHAPTER05_LEVEL04.Tex
levels/CHAPTER02_LEVEL01.Inf
levels/CHAPTER02_LEVEL01.TBK
levels/chapter02_level01.tex
levels/CHAPTER02_LEVEL0101.Lvl
levels/CHAPTER02_LEVEL0102.Lvl
levels/CHAPTER02_LEVEL0103.Lvl
levels/CHAPTER02_LEVEL0104.Lvl
levels/CHAPTER02_LEVEL0105.Lvl
levels/CHAPTER02_LEVEL0106.Lvl
levels/CHAPTER02_LEVEL0106.Lvl
levels/CHAPTER02_LEVEL0107.Lvl
levels/CHAPTER02_LEVEL0108.Lvl
levels/CHAPTER02_LEVEL0109.Lvl
levels/CHAPTER02_LEVEL0110.Lvl
levels/CHAPTER02_LEVEL0111.Lvl
levels/CHAPTER02_LEVEL0112.Lvl
levels/CHAPTER06_LEVEL01.Lvl
levels/CHAPTER06_LEVEL01.Tex
levels/CHAPTER06_LEVEL02.Lvl
levels/CHAPTER06_LEVEL02.Tex
levels/CHAPTER06_LEVEL03.Lvl
levels/CHAPTER06_LEVEL03.Tex
levels/CHAPTER06_LEVEL04.Lvl
levels/CHAPTER06_LEVEL04.Tex
levels/CHAPTER06_LEVEL05.Lvl
levels/CHAPTER06_LEVEL05.Tex
levels/CHAPTER02_LEVEL02.Inf
levels/CHAPTER02_LEVEL02.TBK
levels/chapter02_level02.tex
levels/CHAPTER02_LEVEL0201.Lvl
levels/CHAPTER02_LEVEL0202.Lvl
levels/CHAPTER02_LEVEL0203.Lvl
levels/CHAPTER02_LEVEL0204.Lvl
levels/CHAPTER02_LEVEL0205.Lvl
levels/CHAPTER02_LEVEL0206.Lvl
levels/CHAPTER02_LEVEL0207.Lvl
levels/CHAPTER02_LEVEL0208.Lvl
levels/CHAPTER02_LEVEL0209.Lvl
levels/CHAPTER02_LEVEL0210.Lvl
levels/CHAPTER02_LEVEL0211.Lvl
levels/CHAPTER02_LEVEL0212.Lvl
levels/CHAPTER02_LEVEL03.Inf
levels/CHAPTER02_LEVEL03.TBK
levels/chapter02_level03.tex
levels/CHAPTER02_LEVEL0301.Lvl
levels/CHAPTER02_LEVEL0302.Lvl
levels/CHAPTER02_LEVEL0303.Lvl
levels/CHAPTER02_LEVEL0304.Lvl
levels/CHAPTER02_LEVEL0305.Lvl
levels/CHAPTER02_LEVEL0306.Lvl
levels/CHAPTER02_LEVEL0307.Lvl
levels/CHAPTER02_LEVEL0308.Lvl
levels/CHAPTER02_LEVEL0309.Lvl
levels/CHAPTER02_LEVEL0310.Lvl
levels/CHAPTER02_LEVEL0311.Lvl
levels/CHAPTER02_LEVEL0312.Lvl
levels/CHAPTER02_LEVEL04.Inf
levels/CHAPTER02_LEVEL04.TBK
levels/chapter02_level04.tex
levels/CHAPTER02_LEVEL0401.Lvl
levels/CHAPTER02_LEVEL0402.Lvl
levels/CHAPTER02_LEVEL0403.Lvl
levels/CHAPTER02_LEVEL0404.Lvl
levels/CHAPTER02_LEVEL0405.Lvl
levels/CHAPTER02_LEVEL0406.Lvl
levels/CHAPTER02_LEVEL0407.Lvl
levels/CHAPTER02_LEVEL0408.Lvl
levels/CHAPTER02_LEVEL0409.Lvl
levels/CHAPTER02_LEVEL0410.Lvl
levels/CHAPTER02_LEVEL0411.Lvl
levels/CHAPTER02_LEVEL0412.Lvl
levels/CHAPTER03_LEVEL01.Inf
levels/CHAPTER03_LEVEL01.TBK
levels/chapter03_level01.tex
levels/CHAPTER03_LEVEL0101.Lvl
levels/CHAPTER03_LEVEL0102.Lvl
levels/CHAPTER03_LEVEL0103.Lvl
levels/CHAPTER03_LEVEL0104.Lvl
levels/CHAPTER03_LEVEL0105.Lvl
levels/CHAPTER03_LEVEL0106.Lvl
levels/CHAPTER03_LEVEL0107.Lvl
levels/CHAPTER03_LEVEL0108.Lvl
levels/CHAPTER03_LEVEL0109.Lvl
levels/CHAPTER03_LEVEL0110.Lvl
levels/CHAPTER03_LEVEL0111.Lvl
levels/CHAPTER03_LEVEL0112.Lvl
levels/CHAPTER03_LEVEL02.Inf
levels/CHAPTER03_LEVEL02.TBK
levels/chapter03_level02.tex
levels/CHAPTER03_LEVEL0201.Lvl
levels/CHAPTER03_LEVEL0202.Lvl
levels/CHAPTER03_LEVEL0203.Lvl
levels/CHAPTER03_LEVEL0204.Lvl
levels/CHAPTER03_LEVEL0205.Lvl
levels/CHAPTER03_LEVEL0206.Lvl
levels/CHAPTER03_LEVEL0207.Lvl
levels/CHAPTER03_LEVEL0208.Lvl
levels/CHAPTER03_LEVEL0209.Lvl
levels/CHAPTER03_LEVEL0210.Lvl
levels/CHAPTER03_LEVEL0211.Lvl
levels/CHAPTER03_LEVEL0212.Lvl
levels/CHAPTER03_LEVEL03.Inf
levels/CHAPTER03_LEVEL03.TBK
levels/chapter03_level03.tex
levels/CHAPTER03_LEVEL0301.Lvl
levels/CHAPTER03_LEVEL0302.Lvl
levels/CHAPTER03_LEVEL0303.Lvl
levels/CHAPTER03_LEVEL0304.Lvl
levels/CHAPTER03_LEVEL0305.Lvl
levels/CHAPTER03_LEVEL0306.Lvl
levels/CHAPTER03_LEVEL0307.Lvl
levels/CHAPTER03_LEVEL0308.Lvl
levels/CHAPTER03_LEVEL0309.Lvl
levels/CHAPTER03_LEVEL0310.Lvl
levels/CHAPTER03_LEVEL0311.Lvl
levels/CHAPTER03_LEVEL0312.Lvl
levels/CHAPTER03_LEVEL04.Inf
levels/CHAPTER03_LEVEL04.TBK
levels/chapter03_level04.tex
levels/CHAPTER03_LEVEL0401.Lvl
levels/CHAPTER03_LEVEL0402.Lvl
levels/CHAPTER03_LEVEL0403.Lvl
levels/CHAPTER03_LEVEL0404.Lvl
levels/CHAPTER03_LEVEL0405.Lvl
levels/CHAPTER03_LEVEL0405x.Lvl
levels/CHAPTER03_LEVEL0406.Lvl
levels/CHAPTER03_LEVEL0407.Lvl
levels/CHAPTER03_LEVEL0408.Lvl
levels/CHAPTER03_LEVEL0409.Lvl
levels/CHAPTER03_LEVEL0410.Lvl
levels/CHAPTER03_LEVEL0411.Lvl
levels/CHAPTER04_LEVEL01.Inf
levels/CHAPTER04_LEVEL01.TBK
levels/chapter04_level01.tex
levels/CHAPTER04_LEVEL0101.Lvl
levels/CHAPTER04_LEVEL0102.Lvl
levels/CHAPTER04_LEVEL0103.Lvl
levels/CHAPTER04_LEVEL0104.Lvl
levels/CHAPTER04_LEVEL0105.Lvl
levels/CHAPTER04_LEVEL0106.Lvl
levels/CHAPTER04_LEVEL0107.Lvl
levels/CHAPTER04_LEVEL0108.Lvl
levels/CHAPTER04_LEVEL0109.Lvl
levels/CHAPTER04_LEVEL0110.Lvl
levels/CHAPTER04_LEVEL0111.Lvl
levels/CHAPTER04_LEVEL0112.Lvl
levels/CHAPTER04_LEVEL02.Inf
levels/CHAPTER04_LEVEL02.TBK
levels/chapter04_level02.tex
levels/CHAPTER04_LEVEL0201.Lvl
levels/CHAPTER04_LEVEL0202.Lvl
levels/CHAPTER04_LEVEL0203.Lvl
levels/CHAPTER04_LEVEL0204.Lvl
levels/CHAPTER04_LEVEL0205.Lvl
levels/CHAPTER04_LEVEL0206.Lvl
levels/CHAPTER04_LEVEL0207.Lvl
levels/CHAPTER04_LEVEL0208.Lvl
levels/CHAPTER04_LEVEL0209.Lvl
levels/CHAPTER04_LEVEL0210.Lvl
levels/CHAPTER04_LEVEL0211.Lvl
levels/CHAPTER04_LEVEL0212.Lvl
levels/CHAPTER04_LEVEL03.Inf
levels/CHAPTER04_LEVEL03.TBK
levels/chapter04_level03.tex
levels/CHAPTER04_LEVEL0301.Lvl
levels/CHAPTER04_LEVEL0302.Lvl
levels/CHAPTER04_LEVEL0303.Lvl
levels/CHAPTER04_LEVEL0304.Lvl
levels/CHAPTER04_LEVEL0305.Lvl
levels/CHAPTER04_LEVEL0306.Lvl
levels/CHAPTER04_LEVEL0307.Lvl
levels/CHAPTER04_LEVEL0308.Lvl
levels/CHAPTER04_LEVEL0309.Lvl
levels/CHAPTER04_LEVEL0310.Lvl
levels/CHAPTER04_LEVEL0311.Lvl
levels/CHAPTER04_LEVEL0312.Lvl
levels/CHAPTER04_LEVEL04.Inf
levels/CHAPTER04_LEVEL04.TBK
levels/chapter04_level04.tex
levels/CHAPTER04_LEVEL0401.Lvl
levels/CHAPTER04_LEVEL0402.Lvl
levels/CHAPTER04_LEVEL0403.Lvl
levels/CHAPTER04_LEVEL0404.Lvl
levels/CHAPTER04_LEVEL0405.Lvl
levels/CHAPTER04_LEVEL0406.Lvl
levels/CHAPTER04_LEVEL0407.Lvl
levels/CHAPTER04_LEVEL0408.Lvl
levels/CHAPTER04_LEVEL0409.Lvl
levels/CHAPTER04_LEVEL0410.Lvl
levels/CHAPTER04_LEVEL0411.Lvl
levels/CHAPTER04_LEVEL0412.Lvl
levels/CHAPTER05_LEVEL01.Inf
levels/CHAPTER05_LEVEL01.TBK
levels/chapter05_level01.tex
levels/CHAPTER05_LEVEL0101.Lvl
levels/CHAPTER05_LEVEL0102.Lvl
levels/CHAPTER05_LEVEL0103.Lvl
levels/CHAPTER05_LEVEL0104.Lvl
levels/CHAPTER05_LEVEL0105.Lvl
levels/CHAPTER05_LEVEL0106.Lvl
levels/CHAPTER05_LEVEL0107.Lvl
levels/CHAPTER05_LEVEL0108.Lvl
levels/CHAPTER05_LEVEL0109.Lvl
levels/CHAPTER05_LEVEL0110.Lvl
levels/CHAPTER05_LEVEL0111.Lvl
levels/CHAPTER05_LEVEL0112.Lvl
levels/CHAPTER05_LEVEL02.Inf
levels/CHAPTER05_LEVEL02.TBK
levels/chapter05_level02.tex
levels/CHAPTER05_LEVEL0201.Lvl
levels/CHAPTER05_LEVEL0202.Lvl
levels/CHAPTER05_LEVEL0203.Lvl
levels/CHAPTER05_LEVEL0204.Lvl
levels/CHAPTER05_LEVEL0205.Lvl
levels/CHAPTER05_LEVEL0206.Lvl
levels/CHAPTER05_LEVEL0207.Lvl
levels/CHAPTER05_LEVEL0208.Lvl
levels/CHAPTER05_LEVEL0209.Lvl
levels/CHAPTER05_LEVEL0210.Lvl
levels/CHAPTER05_LEVEL0211.Lvl
levels/CHAPTER05_LEVEL0212.Lvl
levels/CHAPTER05_LEVEL03.Inf
levels/CHAPTER05_LEVEL03.TBK
levels/chapter05_level03.tex
levels/CHAPTER05_LEVEL0301.Lvl
levels/CHAPTER05_LEVEL0302.Lvl
levels/CHAPTER05_LEVEL0303.Lvl
levels/CHAPTER05_LEVEL0304.Lvl
levels/CHAPTER05_LEVEL0305.Lvl
levels/CHAPTER05_LEVEL0306.Lvl
levels/CHAPTER05_LEVEL0307.Lvl
levels/CHAPTER05_LEVEL0308.Lvl
levels/CHAPTER05_LEVEL0309.Lvl
levels/CHAPTER05_LEVEL0310.Lvl
levels/CHAPTER05_LEVEL0311.Lvl
levels/CHAPTER05_LEVEL0312.Lvl
levels/CHAPTER05_LEVEL04.Inf
levels/CHAPTER05_LEVEL04.TBK
levels/chapter05_level04.tex
levels/CHAPTER05_LEVEL0401.Lvl
levels/CHAPTER05_LEVEL0402.Lvl
levels/CHAPTER05_LEVEL0403.Lvl
levels/CHAPTER05_LEVEL0404.Lvl
levels/CHAPTER05_LEVEL0405.Lvl
levels/CHAPTER05_LEVEL0406.Lvl
levels/CHAPTER05_LEVEL0407.Lvl
levels/CHAPTER05_LEVEL0408.Lvl
levels/CHAPTER05_LEVEL0409.Lvl
levels/CHAPTER05_LEVEL0410.Lvl
levels/CHAPTER05_LEVEL0411.Lvl
levels/CHAPTER05_LEVEL0412.Lvl
levels/CHAPTER06_LEVEL01.Inf
levels/CHAPTER06_LEVEL01.TBK
levels/chapter06_level01.tex
levels/CHAPTER06_LEVEL0101.Lvl
levels/CHAPTER06_LEVEL0102.Lvl
levels/CHAPTER06_LEVEL0103.Lvl
levels/CHAPTER06_LEVEL0104.Lvl
levels/CHAPTER06_LEVEL0105.Lvl
levels/CHAPTER06_LEVEL0106.Lvl
levels/CHAPTER06_LEVEL0107.Lvl
levels/CHAPTER06_LEVEL0108.Lvl
levels/CHAPTER06_LEVEL0109.Lvl
levels/CHAPTER06_LEVEL0110.Lvl
levels/CHAPTER06_LEVEL0111.Lvl
levels/CHAPTER06_LEVEL0112.Lvl
levels/CHAPTER06_LEVEL02.Inf
levels/CHAPTER06_LEVEL02.TBK
levels/chapter06_level02.tex
levels/CHAPTER06_LEVEL0201.Lvl
levels/CHAPTER06_LEVEL0202.Lvl
levels/CHAPTER06_LEVEL0203.Lvl
levels/CHAPTER06_LEVEL0204.Lvl
levels/CHAPTER06_LEVEL0205.Lvl
levels/CHAPTER06_LEVEL0206.Lvl
levels/CHAPTER06_LEVEL0207.Lvl
levels/CHAPTER06_LEVEL0208.Lvl
levels/CHAPTER06_LEVEL0209.Lvl
levels/CHAPTER06_LEVEL0210.Lvl
levels/CHAPTER06_LEVEL0211.Lvl
levels/CHAPTER06_LEVEL0212.Lvl
levels/CHAPTER06_LEVEL03.Inf
levels/CHAPTER06_LEVEL03.TBK
levels/chapter06_level03.tex
levels/CHAPTER06_LEVEL0301.Lvl
levels/CHAPTER06_LEVEL0302.Lvl
levels/CHAPTER06_LEVEL0302.Lvl
levels/CHAPTER06_LEVEL0303.Lvl
levels/CHAPTER06_LEVEL0304.Lvl
levels/CHAPTER06_LEVEL0305.Lvl
levels/CHAPTER06_LEVEL0306.Lvl
levels/CHAPTER06_LEVEL0307.Lvl
levels/CHAPTER06_LEVEL0308.Lvl
levels/CHAPTER06_LEVEL0309.Lvl
levels/CHAPTER06_LEVEL0310.Lvl
levels/CHAPTER06_LEVEL0311.Lvl
levels/CHAPTER06_LEVEL0312.Lvl
levels/CHAPTER06_LEVEL04.Inf
levels/CHAPTER06_LEVEL04.TBK
levels/chapter06_level04.tex
levels/CHAPTER06_LEVEL0401.Lvl
levels/CHAPTER06_LEVEL0402.Lvl
levels/CHAPTER06_LEVEL0403.Lvl
levels/CHAPTER06_LEVEL0404.Lvl
levels/CHAPTER06_LEVEL0405.Lvl
levels/CHAPTER06_LEVEL0406.Lvl
levels/CHAPTER06_LEVEL0407.Lvl
levels/CHAPTER06_LEVEL0408.Lvl
levels/CHAPTER06_LEVEL0409.Lvl
levels/CHAPTER06_LEVEL0410.Lvl
levels/CHAPTER06_LEVEL0411.Lvl
levels/CHAPTER06_LEVEL0412.Lvl
levels/CHAPTER06_LEVEL05.Inf
levels/CHAPTER06_LEVEL05.TBK
levels/chapter06_level05.tex
levels/CHAPTER06_LEVEL0501.Lvl
levels/CHAPTER06_LEVEL0502.Lvl
levels/CHAPTER06_LEVEL0503.Lvl
levels/CHAPTER06_LEVEL0504.Lvl
levels/CHAPTER06_LEVEL0505.Lvl
collision/colltab.dat
levels/FMA_SHADYSHOALS.Lvl
levels/FMA_SHADYSHOALS.Tex
LEVELS/FMA_SHADYEXTERIOR.Lvl
LEVELS/FMA_SHADYEXTERIOR.Tex
actors/SPONGEBOB.SBK

View File

@ -47,45 +47,12 @@ LEVELS_DIRS_TO_MAKE := $(LEVELS_MAKEFILE_DIR) $(LEVELS_OUT_DIR)
LEVELS_CHAPTERS := CHAPTER01 CHAPTER02 CHAPTER03 CHAPTER04 CHAPTER05 CHAPTER06 FMA
LEVELS_CHAPTER01 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
LEVELS_CHAPTER01_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER01_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER01_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER01_LEVEL04 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER02 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
LEVELS_CHAPTER02_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER02_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER02_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER02_LEVEL04 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER03 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
LEVELS_CHAPTER03_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER03_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER03_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER03_LEVEL04 := 01 02 03 04 05 05x 06 07 08 09 10 11
LEVELS_CHAPTER04 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
LEVELS_CHAPTER04_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER04_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER04_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER04_LEVEL04 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER05 := LEVEL01 LEVEL02 LEVEL03 LEVEL04
LEVELS_CHAPTER05_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER05_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER05_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER05_LEVEL04 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER06 := LEVEL01 LEVEL02 LEVEL03 LEVEL04 LEVEL05
LEVELS_CHAPTER06_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER06_LEVEL02 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER06_LEVEL03 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER06_LEVEL04 := 01 02 03 04 05 06 07 08 09 10 11 12
LEVELS_CHAPTER06_LEVEL05 := 01 02 03 04 05
LEVELS_FMA := SHADYSHOALS
LEVELS_FMA_SHADYSHOALS := 01
LEVELS_FMA := SHADYSHOALS SHADYEXTERIOR
LEVELS_MAKEFILES := $(foreach CHAPTER,$(LEVELS_CHAPTERS),$(foreach LEVEL,$(LEVELS_$(CHAPTER)),$(LEVELS_MAKEFILE_DIR)/$(CHAPTER)_$(LEVEL).mak))
@ -94,7 +61,6 @@ $(LEVELS_MAKEFILES): $(LEVELS_DIRS_TO_MAKE) makefile.gfx $(BUILD_DIR)/mklevel.pl
include $(LEVELS_MAKEFILES)
LEVELS_ALL_OUT := $(foreach CHAPTER,$(LEVELS_CHAPTERS),$(foreach LEVEL,$(LEVELS_$(CHAPTER)),$($(CHAPTER)_$(LEVEL)_OUT)))
GFX_DATA_OUT += $(LEVELS_ALL_OUT)
@ -109,23 +75,23 @@ cleanlevels :
#----------------------------------------------------------------------------
# Collision data
#----------------------------------------------------------------------------
COLLISION_IN := $(TOOL_DIR)/mapedit/collision.bmp
COLLISION_OUT_DIR := $(DATA_OUT)/collision
COLLISION_OUT := $(COLLISION_OUT_DIR)/colltab.dat
collision : $(COLLISION_OUT)
cleancollision:
@$(RM) -f $(COLLISION_OUT)
@$(ECHO) Collision table cleaned
$(COLLISION_OUT) : $(COLLISION_IN)
@$(DATA_BIN_DIR)/mkcoltab $(COLLISION_IN) -o:$(COLLISION_OUT)
GRAF_DIRS_TO_MAKE += $(COLLISION_OUT_DIR)
GFX_DATA_OUT += $(COLLISION_OUT)
#
# COLLISION_IN := $(TOOL_DIR)/mapedit/collision.bmp
#
# COLLISION_OUT_DIR := $(DATA_OUT)/collision
# COLLISION_OUT := $(COLLISION_OUT_DIR)/colltab.dat
#
# collision : $(COLLISION_OUT)
#
# cleancollision:
# @$(RM) -f $(COLLISION_OUT)
# @$(ECHO) Collision table cleaned
#
# $(COLLISION_OUT) : $(COLLISION_IN)
# @$(DATA_BIN_DIR)/mkcoltab $(COLLISION_IN) -o:$(COLLISION_OUT)
#
# GRAF_DIRS_TO_MAKE += $(COLLISION_OUT_DIR)
# GFX_DATA_OUT += $(COLLISION_OUT)
#----------------------------------------------------------------------------
@ -535,7 +501,7 @@ $(GRAF_DIRS_TO_MAKE) :
#----------------------------------------------------------------------------
# Build the Biflump file
# Build the Heffalump file
#----------------------------------------------------------------------------
.PHONY: biglump cleanbiglump

View File

@ -158,7 +158,7 @@ int CGameScene::canPause()
void CGameScene::shutdown()
{
// CFileIO::EnableASync(false);
shutdownLevel(true);
shutdownLevel();
CSoundMediator::dumpSong();
m_pauseMenu->shutdown(); delete m_pauseMenu;
@ -195,8 +195,8 @@ void CGameScene::think(int _frames)
}
else if(s_levelFinished)
{
s_globalLevelSelectThing=Level.GetNextLevel(s_globalLevelSelectThing);
shutdownLevel(s_globalLevelSelectThing%12==0);
s_globalLevelSelectThing++;
shutdownLevel();
initLevel();
s_levelFinished=false;
}
@ -285,7 +285,7 @@ void CGameScene::initLevel()
#endif
s_levelFinished=false;
Level.init();
Level.init(s_globalLevelSelectThing);
createPlayer();
m_player->setRespawnPos(Level.getPlayerSpawnPos());
@ -411,11 +411,11 @@ void CGameScene::initLevel()
/*****************************************************************************/
void CGameScene::shutdownLevel(bool CleanUp)
void CGameScene::shutdownLevel()
{
CConversation::shutdown();
CThingManager::shutdown();
Level.shutdown(CleanUp);
Level.shutdown();
}
/*****************************************************************************/

View File

@ -15,6 +15,7 @@
/*****************************************************************************/
class FontBank;
class SpriteBank;
class CPlayer;
class CGameScene : public CScene
{
public:
@ -31,8 +32,7 @@ virtual int canPause();
int readyToShutdown();
char *getSceneName() {return "Game";}
// static MATRIX *GetCamMtx() {return(&CamMtx);}
class CPlayer *getPlayer();
CPlayer *getPlayer();
void sendEvent( GAME_EVENT evt, class CThing *sourceThing );
static void setReadyToExit() {s_readyToExit=true;}
@ -41,7 +41,7 @@ virtual int canPause();
protected:
void initLevel();
void shutdownLevel(bool CleanUp);
void shutdownLevel();
void AspectCorrectCamera();

View File

@ -123,6 +123,7 @@ u32 *Tag;
termPrim(StartOt);
}
#endif
/*****************************************************************************/
LINE_F2 *DrawLine(int _x0,int _y0,int _x1,int _y1,int _r,int _g,int _b,int _ot)
@ -150,7 +151,3 @@ LINE_G2 *DrawGLine(int _x0,int _y0,int _x1,int _y1,int _r1,int _g1,int _b1,int
AddPrimToList(lg2,_ot);
return lg2;
}
#endif

View File

@ -15,10 +15,10 @@
#include "gfx\primplus.h"
#endif
#define MAX_OT (1024/2)
#define MAX_OT (16)
#define MAX_PRIMS (1024*4)
#define USE_NTAGS 1
//#define USE_NTAGS 1
/************************************************************************************/
@ -150,6 +150,7 @@ typedef u32 sOT;
#undef addPrim
#define AddPrim addPrim
#define AddPrim addPrim
#define addPrim( r0, r1 ) __asm__ ( \
"lwl $12, 2( %0 );" \
"sll $13, %1, 8;" \

View File

@ -37,7 +37,7 @@ sBackRGBTable CLayerBack::BackRGBTable[]=
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
CLayerBack::CLayerBack(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,TileBank)
CLayerBack::CLayerBack(sLvlHdr *LvlHdr,sLayerHdr *Hdr) : CLayerTile(LvlHdr,Hdr)
{
Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr));
@ -204,12 +204,12 @@ int i;
}
/*****************************************************************************/
extern DVECTOR TileMapOfs;
//extern DVECTOR TileMapOfs;
void CLayerBack::think(DVECTOR &MapPos)
{
int _XOfs=MapPos.vx>>MapXYShift;
int _YOfs=MapPos.vy>>MapXYShift;
_YOfs+=TileMapOfs.vy;
// _YOfs+=TileMapOfs.vy;
PosDx=(_XOfs-XOfs)<<MOVE_SHIFT;
PosDy=(_YOfs-YOfs)<<MOVE_SHIFT;

View File

@ -50,7 +50,7 @@ public:
COLOR=1<<3,
};
CLayerBack(sLayerHdr *Hdr,sTile *TileBank);
CLayerBack(sLvlHdr *LvlHdr,sLayerHdr *Hdr);
~CLayerBack();
void init(DVECTOR &MapPos,int Shift);

View File

@ -14,22 +14,19 @@ const u32 XInc=16<<0;
const u32 YInc=16<<16;
/*****************************************************************************/
// Uses single buffer. Hopefully this will be adequate
// Changed from strip scroll to whole map update (cos of camera)
DVECTOR TileMapOfs={0,4}; // To line layers up :oP
//DVECTOR TileMapOfs={0,4}; // To line layers up :oP
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
CLayerTile::CLayerTile(sLayerHdr *Hdr,sTile *_TileBank)
CLayerTile::CLayerTile(sLvlHdr *LvlHdr,sLayerHdr *Hdr)
{
LayerHdr=Hdr;
MapWidth=LayerHdr->Width;
MapHeight=LayerHdr->Height;
printf("%i %i\n",MapWidth,MapHeight);
TileBank=_TileBank;
TileBank2d=LvlHdr->TileBank2d;
Map=(sTileMapElem*)MakePtr(Hdr,sizeof(sLayerHdr));
}
@ -62,13 +59,12 @@ int YPos=MapPos.vy>>MapXYShift;
MapXY.vx=XPos>>4;
MapXY.vy=YPos/12;
#if 0
if (LayerHdr->SubType==1) // BODGE AND A HALF
/* if (LayerHdr->SubType==1) // BODGE AND A HALF
{
/**/ MapXY.vx+=TileMapOfs.vx;
/**/ MapXY.vy+=TileMapOfs.vy;
MapXY.vx+=TileMapOfs.vx; MapXY.vy+=TileMapOfs.vy;
}
#endif
*/
ShiftX=XPos & 15;
// ShiftY=YPos & 15;
ShiftY=YPos%12;
@ -88,9 +84,10 @@ int YPos=MapPos.vy>>MapXYShift;
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
#if 1
#if 1 // FT4 version
void CLayerTile::render()
{
sTileMapElem *MapPtr=GetMapPos();
u8 *PrimPtr=GetPrimPtr();
s16 TileX,TileY;
@ -107,10 +104,11 @@ sOT *ThisOT=OtPtr+LayerOT;
for (int X=0; X<RenderW; X++)
{
int ThisTile=*MapRow++;
int ThisTile=MapRow->Tile;
MapRow++;
if (ThisTile)
{
sTile *Tile=&TileBank[ThisTile];
sTile2d *Tile=&TileBank2d[ThisTile];
POLY_FT4 *Ft4=(POLY_FT4*)PrimPtr;
setPolyFT4(Ft4);
setShadeTex(Ft4,1);
@ -118,7 +116,8 @@ sOT *ThisOT=OtPtr+LayerOT;
setUVWH(Ft4,Tile->u0,Tile->v0,15,15);
Ft4->tpage=Tile->TPage;
Ft4->clut=Tile->Clut;
addPrimNoCheck(ThisOT,Ft4);
// addPrimNoCheck(ThisOT,Ft4);
addPrim(ThisOT,Ft4);
PrimPtr+=sizeof(POLY_FT4);
}
TileX+=TILE_WIDTH;
@ -152,7 +151,7 @@ sOT *ThisOT=OtPtr+LayerOT;
int ThisTile=*MapRow++;
if (ThisTile)
{
/**/ sTile *Tile=&TileBank[ThisTile];
/**/ sTile2d *Tile=&TileBank2d[ThisTile];
TSPRT_16 *SprPtr=(TSPRT_16*)PrimPtr;
setTSprt16(SprPtr);
setTSetShadeTex(SprPtr,1);

View File

@ -34,7 +34,7 @@ public:
SCREEN_TILE_SIZE=SCREEN_TILE_WIDTH*SCREEN_TILE_HEIGHT
};
CLayerTile(sLayerHdr *Hdr,sTile *TileBank);
CLayerTile(sLvlHdr *LvlHdr,sLayerHdr *Hdr);
virtual ~CLayerTile();
virtual void init(DVECTOR &MapPos,int Shift);
@ -46,9 +46,8 @@ virtual void render();
virtual sTileMapElem *GetMapPos() {return(Map+GetMapOfs());}
protected:
sLayerHdr *LayerHdr;
sTile *TileBank;
sTile2d *TileBank2d;
int MapWidth,MapHeight,MapXYShift;
int RenderW,RenderH;

View File

@ -7,30 +7,29 @@
#include "utils\utils.h"
#include "gfx\prim.h"
#if defined(__USER_sbart__) || defined(__USER_daveo__)
#define _SHOW_POLYZ_ 1
#endif
#include "LayerTile.h"
#include "LayerTile3d.h"
#include "gfx\font.h"
#if defined(__USER_art__) || defined(__USER_sbart__) || defined(__USER_daveo__)
#define _SHOW_POLYZ_ 1
#if defined(_SHOW_POLYZ_)
static FontBank *Font;
#endif
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
CLayerTile3d::CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,TileBank)
CLayerTile3d::CLayerTile3d(sLvlHdr *LvlHdr,sLayerHdr *Hdr) : CLayerTile(LvlHdr,Hdr)
{
TileBank3d=LvlHdr->TileBank3d;
TriList=LvlHdr->TriList;
QuadList=LvlHdr->QuadList;
VtxList=LvlHdr->VtxList;
LayerInfo=(sLayer3d*)MakePtr(Hdr,sizeof(sLayerHdr));
TriList=(sTri*) MakePtr(Hdr,LayerInfo->TriList);
QuadList=(sQuad*) MakePtr(Hdr,LayerInfo->QuadList);
VtxList=(sVtx*) MakePtr(Hdr,LayerInfo->VtxList);
Map=(sTileMapElem*)MakePtr(Hdr,sizeof(sLayerHdr)+sizeof(sLayer3d));
Font=0;
#if defined(_SHOW_POLYZ_)
Font=new ("PrimFont") FontBank;
Font->initialise( &standardFont );
@ -42,11 +41,6 @@ CLayerTile3d::CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,Tile
/*****************************************************************************/
CLayerTile3d::~CLayerTile3d()
{
if (Font)
{
Font->dump();
delete Font;
}
}
@ -62,6 +56,10 @@ void CLayerTile3d::init(DVECTOR &MapPos,int Shift)
/*****************************************************************************/
void CLayerTile3d::shutdown()
{
#if defined(_SHOW_POLYZ_)
Font->dump();
delete Font;
#endif
}
/*****************************************************************************/
@ -106,8 +104,100 @@ int YPos=MapPos.vy>>MapXYShift;
/*****************************************************************************/
/*****************************************************************************/
/*****************************************************************************/
int BLOCK_MULTx=1;
#if 1
VECTOR asd={0,0,0};
void CLayerTile3d::render()
{
const int XOfs=-(BLOCK_MULT*15)-(SCREEN_TILE_ADJ_LEFT*BLOCK_MULT);
const int YOfs=-(BLOCK_MULT*7)-(SCREEN_TILE_ADJ_UP*BLOCK_MULT);
sTileMapElem *MapPtr=GetMapPos();
u8 *PrimPtr=GetPrimPtr();
POLY_FT3 *TPrimPtr=(POLY_FT3*)PrimPtr;
VECTOR BlkPos;
sVtx *P0,*P1,*P2;
u32 T0,T1,T2;
s32 ClipZ;
sOT *ThisOT;
// Setup Trans Matrix
BlkPos.vx=XOfs-((MapXY.vx+ShiftX));
BlkPos.vy=YOfs-((MapXY.vy+ShiftY));
BlkPos.vx+=RenderOfs.vx;
BlkPos.vy+=RenderOfs.vy;
BlkPos.vx+=asd.vx;
BlkPos.vy+=asd.vy;
for (int Y=0; Y<RenderH; Y++)
{
sTileMapElem *MapRow=MapPtr;
s32 BlkXOld=BlkPos.vx;
for (int X=0; X<RenderW; X++)
{
sTile3d *Tile=&TileBank3d[MapRow->Tile];
int TriCount=Tile->TriCount;
sTri *TList=&TriList[Tile->TriStart];
while (TriCount--) // Blank tiles rejected here (as no tri-count)
{
P0=&VtxList[TList->P0]; P1=&VtxList[TList->P1]; P2=&VtxList[TList->P2];
CMX_SetTransMtxXY(&BlkPos);
gte_ldv3(P0,P1,P2);
setPolyFT3(TPrimPtr);
setShadeTex(TPrimPtr,1);
setlen(TPrimPtr, GPU_PolyFT3Tag);
gte_rtpt_b();
T0=*(u32*)&TList->uv0; // Get UV0 & TPage
T1=*(u32*)&TList->uv1; // Get UV1 & Clut
T2=*(u16*)&TList->uv2; // Get UV2
*(u32*)&TPrimPtr->u0=T0; // Set UV0
*(u32*)&TPrimPtr->u1=T1; // Set UV1
*(u16*)&TPrimPtr->u2=T2; // Set UV2
if (TList->OTOfs>MAX_OT-1) TList->OTOfs=MAX_OT-1;
ThisOT=OtPtr+TList->OTOfs;
TList++;
// gte_nclip_b();
gte_stsxy3_ft3(TPrimPtr);
// gte_stopz(&ClipZ);
// if (ClipZ<=0)
{
addPrim(ThisOT,TPrimPtr);
// addPrimNoCheck(OtPtr,TPrimPtr);
TPrimPtr++;
}
}
MapRow++;
BlkPos.vx+=BLOCK_MULT;
}
MapPtr+=MapWidth;
BlkPos.vx=BlkXOld;
BlkPos.vy+=BLOCK_MULT;
}
SetPrimPtr((u8*)TPrimPtr);
#if defined(_SHOW_POLYZ_)
char Txt[256];
int TCount=((u8*)TPrimPtr-PrimPtr)/sizeof(POLY_FT3);
int QCount=0;
sprintf(Txt,"TC %i\nQC %i",TCount,QCount);
Font->print( 128, 32, Txt);
#endif
}
#else
void CLayerTile3d::render()
{
/*
const int XOfs=-(BLOCK_MULT*15)-(SCREEN_TILE_ADJ_LEFT*BLOCK_MULT);
const int YOfs=-(BLOCK_MULT*7)-(SCREEN_TILE_ADJ_UP*BLOCK_MULT);
@ -182,5 +272,7 @@ char Txt[256];
sprintf(Txt,"Poly Count=%i",PolyCount);
Font->print( 32, 32, Txt);
#endif
*/
}
#endif

View File

@ -11,15 +11,15 @@ class FontBank;
class CLayerTile3d : public CLayerTile
{
public:
CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank);
CLayerTile3d(sLvlHdr *LvlHdr,sLayerHdr *Hdr);
~CLayerTile3d();
enum
{
SCREEN_TILE_ADJ_UP =2,
SCREEN_TILE_ADJ_DOWN =2,
SCREEN_TILE_ADJ_LEFT =2,
SCREEN_TILE_ADJ_RIGHT =5,
SCREEN_TILE_ADJ_UP =(2*1),
SCREEN_TILE_ADJ_DOWN =(2*1),
SCREEN_TILE_ADJ_LEFT =(2*1),
SCREEN_TILE_ADJ_RIGHT =(5*1),
SCREEN_TILE_WIDTH3D= SCREEN_TILE_WIDTH+SCREEN_TILE_ADJ_RIGHT,
SCREEN_TILE_HEIGHT3D= SCREEN_TILE_HEIGHT+SCREEN_TILE_ADJ_DOWN,
BLOCK_MULT = 16
@ -31,14 +31,11 @@ public:
void render();
protected:
sLayer3d *LayerInfo;
sTile3d *TileBank3d;
sTri *TriList;
sQuad *QuadList;
sVtx *VtxList;
DVECTOR RenderOfs;
FontBank *Font;
};

View File

@ -39,335 +39,43 @@
#include "system\vid.h"
#endif
//#include "pad\pads.h"
#include "enemy\npc.h"
#include "gfx\actor.h"
DVECTOR CLevel::MapPos;
DVECTOR CLevel::s_playerSpawnPos;
/*****************************************************************************/
sLvlTab LvlTable[]=
{
// C1
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0101_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, //0
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0102_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0103_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0104_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0105_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0106_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0107_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0108_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0109_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0110_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0111_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0112_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0201_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, //12
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0202_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0203_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0204_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0205_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0206_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0207_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0208_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0209_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0210_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0211_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0212_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0301_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, //24
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0302_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0303_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0304_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0305_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0306_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0307_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0308_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0309_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0310_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0311_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0312_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0401_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, //36
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0402_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0403_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0404_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0405_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0406_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0407_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0408_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0409_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0410_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0411_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0412_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{1,1,LEVELS_CHAPTER01_LEVEL01_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{1,2,LEVELS_CHAPTER01_LEVEL02_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{1,3,LEVELS_CHAPTER01_LEVEL03_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{1,4,LEVELS_CHAPTER01_LEVEL04_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
// C2
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0101_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, //48
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0102_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0103_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0104_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0105_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0106_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0107_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0108_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0109_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0110_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0111_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0112_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0201_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, //60
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0202_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0203_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0204_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0205_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0206_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0207_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0208_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0209_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0210_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0211_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0212_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0301_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, //72
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0302_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0303_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0304_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0305_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0306_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0307_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0308_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0309_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0310_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0311_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0312_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0401_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, //84
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0402_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0403_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0404_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0405_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0406_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0407_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0408_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0409_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0410_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0411_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0412_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{2,1,LEVELS_CHAPTER02_LEVEL01_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{2,2,LEVELS_CHAPTER02_LEVEL02_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{2,3,LEVELS_CHAPTER02_LEVEL03_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{2,4,LEVELS_CHAPTER02_LEVEL04_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
// C3
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0101_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, //96
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0102_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0103_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0104_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0105_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0106_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0107_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0108_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0109_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0110_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0111_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0112_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0201_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, //108
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0202_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0203_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0204_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0205_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0206_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0207_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0208_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0209_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0210_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0211_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0212_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0301_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, //120
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0302_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0303_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0304_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0305_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0306_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0307_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0308_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0309_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0310_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0311_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0312_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0401_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, //132
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0402_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0403_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0404_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0405_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0405X_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0406_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0407_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0408_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0409_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0410_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0411_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{3,1,LEVELS_CHAPTER03_LEVEL01_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{3,2,LEVELS_CHAPTER03_LEVEL02_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{3,3,LEVELS_CHAPTER03_LEVEL03_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{3,4,LEVELS_CHAPTER03_LEVEL04_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
// C4
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0101_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, //144
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0102_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0103_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0104_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0105_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0106_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0107_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0108_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0109_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0110_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0111_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0112_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0201_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, //156
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0202_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0203_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0204_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0205_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0206_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0207_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0208_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0209_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0210_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0211_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0212_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0301_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, //168
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0302_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0303_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0304_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0305_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0306_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0307_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0308_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0309_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0310_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0311_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0312_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0401_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, //180
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0402_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0403_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0404_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0405_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0406_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0407_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0408_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0409_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0410_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0411_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0412_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{4,1,LEVELS_CHAPTER04_LEVEL01_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{4,2,LEVELS_CHAPTER04_LEVEL02_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{4,3,LEVELS_CHAPTER04_LEVEL03_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{4,4,LEVELS_CHAPTER04_LEVEL04_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
// C5
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0101_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, //192
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0102_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0103_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0104_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0105_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0106_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0107_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0108_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0109_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0110_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0111_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0112_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0201_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, //204
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0202_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0203_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0204_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0205_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0206_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0207_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0208_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0209_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0210_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0211_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0212_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0301_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, //216
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0302_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0303_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0304_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0305_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0306_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0307_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0308_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0309_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0310_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0311_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0312_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0401_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, //228
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0402_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0403_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0404_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0405_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0406_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0407_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0408_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0409_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0410_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0411_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0412_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{5,1,LEVELS_CHAPTER05_LEVEL01_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{5,2,LEVELS_CHAPTER05_LEVEL02_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{5,3,LEVELS_CHAPTER05_LEVEL03_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{5,4,LEVELS_CHAPTER05_LEVEL04_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
// C6
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0101_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, //240
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0102_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0103_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0104_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0105_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0106_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0107_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0108_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0109_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0110_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0111_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0112_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0201_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, //252
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0202_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0203_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0204_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0205_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0206_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0207_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0208_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0209_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0210_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0211_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0212_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0301_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, //264
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0302_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0303_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0304_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0305_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0306_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0307_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0308_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0309_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0310_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0311_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0312_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0401_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0402_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0403_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0404_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0405_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0406_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0407_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0408_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0409_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0410_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0411_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0412_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0501_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0502_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0503_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0504_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0505_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{6,1,LEVELS_CHAPTER06_LEVEL01_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{6,2,LEVELS_CHAPTER06_LEVEL02_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{6,3,LEVELS_CHAPTER06_LEVEL03_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{6,4,LEVELS_CHAPTER06_LEVEL04_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{6,5,LEVELS_CHAPTER06_LEVEL05_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
};
const static int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab);
@ -381,13 +89,13 @@ const FileEquate loadingScreens[6]=
LOADINGSCREENS_PIZZA_GFX,
};
extern int s_globalLevelSelectThing;
/*****************************************************************************/
DVECTOR CLevel::MapPos;
DVECTOR CLevel::s_playerSpawnPos;
/*****************************************************************************/
CLevel::CLevel()
{
PakBuffer=0;
LevelBuffer=0;
LevelInfo=0;
}
/*****************************************************************************/
@ -407,7 +115,7 @@ int CLevel::GetNextLevel(int Lvl)
// TMP
if (Lvl>=LvlTableSize) Lvl=0;
// Skip Blanks
while (CFileIO::getFileSize(LvlTable[Lvl ].Level)<=4000) // Dodgy blank level skip
while (CFileIO::getFileSize(LvlTable[Lvl ].LevelFilename)<=4000) // Dodgy blank level skip
{
Lvl++;
if (Lvl>=LvlTableSize) Lvl=0;
@ -417,28 +125,30 @@ int CLevel::GetNextLevel(int Lvl)
}
/*****************************************************************************/
void CLevel::init()
void CLevel::init(int LevelNo)
{
// Load it
sLvlTab *lvlTab=&LvlTable[s_globalLevelSelectThing];
sLvlTab *lvlTab=&LvlTable[LevelNo];
CActorGfx::ResetCache();
CSoundMediator::setSong((CSoundMediator::SONGID)lvlTab->songId);
if (!LevelBuffer)
{
initNewLevel(lvlTab);
}
DisplayLoadingScreen(lvlTab);
// Load/unpack level
// CFileIO::loadFileAtAddr(lvlTab->Level,PakBuffer);
CFileIO::loadFileAtAddr(lvlTab->Level,LevelBuffer);
// PAK_doUnpak(LevelBuffer,PakBuffer);
//int NextLvl=GetNextLevel(s_globalLevelSelectThing);
// CFileIO::AddASyncFile(LvlTable[NextLvl].Level,PakBuffer);
// CFileIO::loadFileAtAddr(LvlTable[NextLvl].Level,PakBuffer);
LevelHdr=(sLvlHdr*)CFileIO::loadFile(lvlTab->LevelFilename,"Level");
LevelHdr->TileBank2d=(sTile2d*) MakePtr(LevelHdr,(int)LevelHdr->TileBank2d);
LevelHdr->TileBank3d=(sTile3d*) MakePtr(LevelHdr,(int)LevelHdr->TileBank3d);
LevelHdr->TriList=(sTri*) MakePtr(LevelHdr,(int)LevelHdr->TriList);
LevelHdr->QuadList=(sQuad*) MakePtr(LevelHdr,(int)LevelHdr->QuadList);
LevelHdr->VtxList=(sVtx*) MakePtr(LevelHdr,(int)LevelHdr->VtxList);
sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
LevelHdr->ActorList=0;
LevelHdr->FXList=0;
LevelHdr->ItemList=0;
LevelHdr->PlatformList=0;
LevelHdr->TriggerList=0;
m_levelTPage=TPLoadTex(lvlTab->TexFilename);
s_playerSpawnPos.vx=LevelHdr->PlayerStartX*16;
s_playerSpawnPos.vy=LevelHdr->PlayerStartY*16;
@ -448,47 +158,17 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
}
/*****************************************************************************/
void CLevel::initNewLevel(sLvlTab *lvlTab)
void CLevel::DisplayLoadingScreen(sLvlTab *lvlTab)
{
DisplayLoadingScreen();
ASSERT(!LevelInfo);
ASSERT(!LevelBuffer);
ASSERT(!TileBank);
LevelInfo=(sLevelInfo*)CFileIO::loadFile(lvlTab->LevelInfo,"LevelInfo");
LevelBuffer=(u8*)MemAlloc(LevelInfo->MaxLvlSize,"Level Buffer");
// PakBuffer=(u8*)MemAlloc(LevelInfo->MaxPakSize,"Level Pak Buffer");
TileBank=(sTile *)CFileIO::loadFile(lvlTab->TileBank,"Tile Bank Data");
m_levelTPage=TPLoadTex(lvlTab->Tex);
u16 *TypePtr=(u16*)MakePtr(LevelInfo,sizeof(sLevelInfo));
for (int i=0; i<LevelInfo->ActorCount; i++)
{
int ThisType=*TypePtr++;
// printf("Type %i\n",ThisType);
CNpcEnemy::CacheActor(ThisType);
}
// CFileIO::loadFileAtAddr(lvlTab->Level,PakBuffer);
}
/*****************************************************************************/
void CLevel::DisplayLoadingScreen()
{
FontBank font;
int chapter,level;
char buf[128];
u8 *s_image;
int i;
FontBank font;
char buf[128];
u8 *s_image;
int i;
font.initialise(&standardFont);
font.setJustification(FontBank::JUST_CENTRE);
chapter=s_globalLevelSelectThing/(12*4);
if(chapter>5)chapter=5;
level=((s_globalLevelSelectThing%(12*4))/12);
sprintf(buf,"LOADING CHAPTER %d LEVEL %d",chapter+1,level+1);
s_image=CFileIO::loadFile(loadingScreens[chapter]);
sprintf(buf,"LOADING CHAPTER %d LEVEL %d",lvlTab->Chapter,lvlTab->Level);
s_image=CFileIO::loadFile(loadingScreens[lvlTab->Chapter-1]);
ASSERT(s_image);
SetScreenImage(s_image);
for(i=0;i<2;i++)
@ -517,8 +197,6 @@ void CLevel::DisplayLoadingScreen()
/*****************************************************************************/
void CLevel::initLayers()
{
sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
// Init Layers
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
{
@ -531,12 +209,10 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
FXList=0;
// Back
if (LevelHdr->BackLayer)
{
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer);
CLayerTile *NewLayer=new ("Back Layer") CLayerBack(Layer, TileBank);
// ((CLayerBack*)NewLayer)->SetFrames(LvlTable[s_globalLevelSelectThing].Spr0,LvlTable[s_globalLevelSelectThing].Spr1);
CLayerTile *NewLayer=new ("Back Layer") CLayerBack(LevelHdr,Layer);
NewLayer->init(MapPos,3);
TileLayers[CLayerTile::LAYER_TILE_TYPE_BACK]=NewLayer;
}
@ -545,7 +221,7 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
if (LevelHdr->MidLayer)
{
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->MidLayer);
CLayerTile *NewLayer=new ("Mid Layer") CLayerTile(Layer, TileBank);
CLayerTile *NewLayer=new ("Mid Layer") CLayerTile(LevelHdr,Layer);
NewLayer->init(MapPos,2);
TileLayers[CLayerTile::LAYER_TILE_TYPE_MID]=NewLayer;
}
@ -554,7 +230,7 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
if (LevelHdr->ActionLayer)
{
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer);
CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(Layer, TileBank);
CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(LevelHdr,Layer);
NewLayer->init(MapPos,0);
TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]=NewLayer;
}
@ -654,7 +330,7 @@ PAUL_DBGMSG("%d triggers",TriggerCount);
}
/*****************************************************************************/
void CLevel::shutdown(bool CleanUp)
void CLevel::shutdown()
{
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
{
@ -677,15 +353,9 @@ void CLevel::shutdown(bool CleanUp)
if (ActorList) MemFree(ActorList);
if (PlatformList) MemFree(PlatformList);
if (CleanUp)
{
if (LevelInfo) MemFree(LevelInfo); LevelInfo=0;
if (LevelBuffer) MemFree(LevelBuffer); LevelBuffer=0;
if (PakBuffer) MemFree(PakBuffer); PakBuffer=0;
if (TileBank) MemFree(TileBank); TileBank=0;
MemFree(LevelHdr);
CActorPool::DumpActors();
TPFree(m_levelTPage);
}
}
/*****************************************************************************/
@ -694,6 +364,7 @@ void CLevel::shutdown(bool CleanUp)
void CLevel::render()
{
// Setup dummy prim to ensure OtPos 0 is initialised (for fast add)
/*
for (int i=0;i<8; i++)
{
TILE_16 *Prim=GetPrimTILE16();
@ -703,7 +374,7 @@ void CLevel::render()
AddPrim(ThisOT,Prim);
ASSERT(ThisOT->FirstPrim);
}
*/
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
{
if (TileLayers[i]) TileLayers[i]->render();
@ -734,7 +405,6 @@ void CLevel::think(int _frames)
/*****************************************************************************/
DVECTOR CLevel::getMapSize()
{
sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
DVECTOR size;
sLayerHdr *layer;

View File

@ -14,8 +14,8 @@
// Nope.. it's shrunk again! :)
struct sLvlTab
{
FileEquate LevelInfo;
FileEquate TileBank,Level,Tex;
u16 Chapter,Level;
FileEquate LevelFilename,TexFilename;
int songId;
};
@ -26,8 +26,8 @@ class CLevel
public:
CLevel();
// Scene Handlers
void init();
void shutdown(bool CleanUp);
void init(int LevelNo);
void shutdown();
void render();
void think(int _frames);
@ -44,13 +44,10 @@ public:
int GetNextLevel(int Lvl);
private:
void initLayers();
void initNewLevel(sLvlTab *LevelDat);
void DisplayLoadingScreen();
void DisplayLoadingScreen(sLvlTab *lvlTab);
sLevelInfo *LevelInfo;
u8 *PakBuffer,*LevelBuffer;
sLvlHdr *LevelHdr;
sTile *TileBank;
static DVECTOR MapPos;
static DVECTOR s_playerSpawnPos;

View File

@ -266,7 +266,7 @@ void DoAssert( const char * Txt, const char * file, const int line )
F.setJustification( FontBank::JUST_CENTRE );
F.setOt( 0 );
ClearNTag(OtPtr, MAX_OT);
InitOTag(OtPtr, MAX_OT);
F.print( (512 >> 1), (256 >> 1), Text );
VSync(0);
@ -274,7 +274,7 @@ void DoAssert( const char * Txt, const char * file, const int line )
PrimDisplay();
while(DrawSync(1));
ClearNTag(OtPtr, MAX_OT);
InitOTag(OtPtr, MAX_OT);
F.print( (512 >> 1), (256 >> 1), Text );
VSync(0);

Binary file not shown.

View File

@ -84,10 +84,11 @@ struct sTri
u8 uv0[2]; // 2
u16 Clut; // 2
u8 uv1[2]; // 2
u16 TPage; // 2 (Or material)
u16 TPage; // 2
u8 uv2[2]; // 2
u16 P2; // 2
}; // 16
u32 OTOfs; // 4
}; // 20
//---------------------------------------------------------------------------
struct sQuad
@ -99,18 +100,25 @@ struct sQuad
u8 uv0[2]; // 2
u16 Clut; // 2
u8 uv1[2]; // 2
u16 TPage; // 2 (Or material)
u16 TPage; // 2
u8 uv2[2]; // 2
u8 uv3[2]; // 2
}; // 20
u32 OTOfs; // 4
}; // 24
//***************************************************************************
//*** Game Types and Headers ************************************************
//***************************************************************************
// Tiles
typedef u16 sTileMapElem; // Tile or Tri Start
//typedef u16 sTileMapElem;
struct sTileMapElem
{
u16 Tile;
// u16 LightIdx;
};
/*
struct sTile
{
// 2d Tile
@ -118,62 +126,26 @@ struct sTile
u16 Clut; // 2
u16 TPage; // 2
u16 Pad; // :o( need this? // 2
}; // 8
*/
struct sTile2d
{
// 2d Tile
u8 u0,v0; // 2
u16 Clut; // 2
u16 TPage; // 2
u16 Pad; // :o( need this? // 2
}; // 8
//---------------------------------------------------------------------------
struct sTileTri
struct sTile3d
{
u16 P0; // 2
u16 P1; // 2
u16 P2; // 2
u16 Mat; // 2
// 3d Tile
u16 TriStart;
u16 TriCount;
u16 QuadStart;
u16 QuadCount;
}; // 8
//---------------------------------------------------------------------------
struct sTileTriMat
{
u8 uv0[2]; // 2
u16 Clut; // 2
u8 uv1[2]; // 2
u16 TPage; // 2
u8 uv2[2]; // 2
}; // 10
//---------------------------------------------------------------------------
struct sTileQuad
{
u16 P0; // 2
u16 P1; // 2
u16 P2; // 2
u16 P3; // 2
u16 Mat; // 2
}; // 10
//---------------------------------------------------------------------------
struct sTileQuadMat
{
u8 uv0[2]; // 2
u16 Clut; // 2
u8 uv1[2]; // 2
u16 TPage; // 2
u8 uv2[2]; // 2
u8 uv3[2]; // 2
}; // 12
//***************************************************************************
// Level Info
struct sLevelInfo
{
u32 MaxPakSize;
u32 MaxLvlSize;
u16 ActorCount;
u16 Pad;
// u16 ActorTypeList.....
};
//---------------------------------------------------------------------------
// Layers
struct sLayerHdr
{
@ -185,19 +157,6 @@ struct sLayerHdr
/*int TileData[W][H];....*/
};
//---------------------------------------------------------------------------
struct sLayer3d
{
u16 TriCount;
u16 QuadCount;
u16 VtxCount;
u16 Pad;
u32 TriList;
u32 QuadList;
u32 VtxList;
};
//---------------------------------------------------------------------------
// Shade Layer
struct sLayerShade
@ -236,9 +195,14 @@ struct sLvlHdr
u32 PlatformList;
u32 TriggerList;
u32 FXList;
u32 Pad6;
u32 Pad7;
u16 PlayerStartX,PlayerStartY;
sTile2d *TileBank2d;
sTile3d *TileBank3d;
sTri *TriList;
sQuad *QuadList;
sVtx *VtxList;
};
//***************************************************************************