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"; $OutFile=">$OutFile";
open(OutFile) || die "Can't create makefile $OutFile; $!"; open(OutFile) || die "Can't create makefile $OutFile; $!";
print OutFile <<eot print OutFile <<eot
#print <<eot # print <<eot
.PHONY : make$Chapter\_$Level clean$Chapter\_$Level .PHONY : make$Chapter\_$Level clean$Chapter\_$Level
make$Chapter\_$Level\:\t$Chapter\_$Level\_LVL\n make$Chapter\_$Level\:\t$Chapter\_$Level\_LVL\n
clean$Chapter\_$Level\:\tclean$Chapter\_$Level\_LVL clean$Chapter\_$Level\:\tclean$Chapter\_$Level\_LVL
$Chapter\_$Level\_IN_DIR :=\t\$(LEVELS_IN_DIR)/$Chapter/$Level $Chapter\_$Level\_IN :=\t\$(LEVELS_IN_DIR)/$Chapter/$Level/$Level.mex
$Chapter\_$Level\_IN :=\t\$(foreach LVL, \$(LEVELS_$Chapter\_$Level), \$($Chapter\_$Level\_IN_DIR)/$Level\$(LVL).mex) $Chapter\_$Level\_OUT :=\t\$(LEVELS_OUT_DIR)/$Chapter\_$Level.lvl
$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\_TEX :=\t\$(LEVELS_OUT_DIR)/$Chapter\_$Level.tex)
clean$Chapter\_$Level\_LVL :\n\t\$(RM) -f \$($Chapter\_$Level\_OUT) \$($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\_LVL :\t\$($Chapter\_$Level\_IN)
\$($Chapter\_$Level\_OUT) : \$($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 eot
; ;

View File

@ -42,407 +42,66 @@ loadingscreens/pizza.gfx
loadingscreens/teenage.gfx loadingscreens/teenage.gfx
memcard/memhead.bin memcard/memhead.bin
levels/FMA_SHADYSHOALS.Inf levels/CHAPTER01_LEVEL01.Lvl
levels/FMA_SHADYSHOALS.TBK levels/CHAPTER01_LEVEL01.Tex
levels/fma_shadyshoals.tex levels/CHAPTER01_LEVEL02.Lvl
levels/FMA_SHADYSHOALS01.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/CHAPTER02_LEVEL01.Lvl
levels/CHAPTER01_LEVEL01.TBK levels/CHAPTER02_LEVEL01.Tex
levels/chapter01_level01.tex levels/CHAPTER02_LEVEL02.Lvl
levels/CHAPTER01_LEVEL0101.Lvl levels/CHAPTER02_LEVEL02.Tex
levels/CHAPTER01_LEVEL0102.Lvl levels/CHAPTER02_LEVEL03.Lvl
levels/CHAPTER01_LEVEL0103.Lvl levels/CHAPTER02_LEVEL03.Tex
levels/CHAPTER01_LEVEL0104.Lvl levels/CHAPTER02_LEVEL04.Lvl
levels/CHAPTER01_LEVEL0105.Lvl levels/CHAPTER02_LEVEL04.Tex
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/CHAPTER01_LEVEL02.Inf levels/CHAPTER03_LEVEL01.Lvl
levels/CHAPTER01_LEVEL02.TBK levels/CHAPTER03_LEVEL01.Tex
levels/chapter01_level02.tex levels/CHAPTER03_LEVEL02.Lvl
levels/CHAPTER01_LEVEL0201.Lvl levels/CHAPTER03_LEVEL02.Tex
levels/CHAPTER01_LEVEL0202.Lvl levels/CHAPTER03_LEVEL03.Lvl
levels/CHAPTER01_LEVEL0203.Lvl levels/CHAPTER03_LEVEL03.Tex
levels/CHAPTER01_LEVEL0204.Lvl levels/CHAPTER03_LEVEL04.Lvl
levels/CHAPTER01_LEVEL0205.Lvl levels/CHAPTER03_LEVEL04.Tex
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/CHAPTER01_LEVEL03.Inf levels/CHAPTER04_LEVEL01.Lvl
levels/CHAPTER01_LEVEL03.TBK levels/CHAPTER04_LEVEL01.Tex
levels/chapter01_level03.tex levels/CHAPTER04_LEVEL02.Lvl
levels/CHAPTER01_LEVEL0301.Lvl levels/CHAPTER04_LEVEL02.Tex
levels/CHAPTER01_LEVEL0302.Lvl levels/CHAPTER04_LEVEL03.Lvl
levels/CHAPTER01_LEVEL0303.Lvl levels/CHAPTER04_LEVEL03.Tex
levels/CHAPTER01_LEVEL0304.Lvl levels/CHAPTER04_LEVEL04.Lvl
levels/CHAPTER01_LEVEL0305.Lvl levels/CHAPTER04_LEVEL04.Tex
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/CHAPTER01_LEVEL04.Inf levels/CHAPTER05_LEVEL01.Lvl
levels/CHAPTER01_LEVEL04.TBK levels/CHAPTER05_LEVEL01.Tex
levels/chapter01_level04.tex levels/CHAPTER05_LEVEL02.Lvl
levels/CHAPTER01_LEVEL0401.Lvl levels/CHAPTER05_LEVEL02.Tex
levels/CHAPTER01_LEVEL0402.Lvl levels/CHAPTER05_LEVEL03.Lvl
levels/CHAPTER01_LEVEL0403.Lvl levels/CHAPTER05_LEVEL03.Tex
levels/CHAPTER01_LEVEL0404.Lvl levels/CHAPTER05_LEVEL04.Lvl
levels/CHAPTER01_LEVEL0405.Lvl levels/CHAPTER05_LEVEL04.Tex
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/CHAPTER02_LEVEL01.Inf levels/CHAPTER06_LEVEL01.Lvl
levels/CHAPTER02_LEVEL01.TBK levels/CHAPTER06_LEVEL01.Tex
levels/chapter02_level01.tex levels/CHAPTER06_LEVEL02.Lvl
levels/CHAPTER02_LEVEL0101.Lvl levels/CHAPTER06_LEVEL02.Tex
levels/CHAPTER02_LEVEL0102.Lvl levels/CHAPTER06_LEVEL03.Lvl
levels/CHAPTER02_LEVEL0103.Lvl levels/CHAPTER06_LEVEL03.Tex
levels/CHAPTER02_LEVEL0104.Lvl levels/CHAPTER06_LEVEL04.Lvl
levels/CHAPTER02_LEVEL0105.Lvl levels/CHAPTER06_LEVEL04.Tex
levels/CHAPTER02_LEVEL0106.Lvl levels/CHAPTER06_LEVEL05.Lvl
levels/CHAPTER02_LEVEL0106.Lvl levels/CHAPTER06_LEVEL05.Tex
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/CHAPTER02_LEVEL02.Inf levels/FMA_SHADYSHOALS.Lvl
levels/CHAPTER02_LEVEL02.TBK levels/FMA_SHADYSHOALS.Tex
levels/chapter02_level02.tex LEVELS/FMA_SHADYEXTERIOR.Lvl
levels/CHAPTER02_LEVEL0201.Lvl LEVELS/FMA_SHADYEXTERIOR.Tex
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
actors/SPONGEBOB.SBK 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_CHAPTERS := CHAPTER01 CHAPTER02 CHAPTER03 CHAPTER04 CHAPTER05 CHAPTER06 FMA
LEVELS_CHAPTER01 := LEVEL01 LEVEL02 LEVEL03 LEVEL04 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 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 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 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 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 LEVEL02 LEVEL03 LEVEL04 LEVEL05
LEVELS_CHAPTER06_LEVEL01 := 01 02 03 04 05 06 07 08 09 10 11 12 LEVELS_FMA := SHADYSHOALS SHADYEXTERIOR
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_MAKEFILES := $(foreach CHAPTER,$(LEVELS_CHAPTERS),$(foreach LEVEL,$(LEVELS_$(CHAPTER)),$(LEVELS_MAKEFILE_DIR)/$(CHAPTER)_$(LEVEL).mak)) 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) include $(LEVELS_MAKEFILES)
LEVELS_ALL_OUT := $(foreach CHAPTER,$(LEVELS_CHAPTERS),$(foreach LEVEL,$(LEVELS_$(CHAPTER)),$($(CHAPTER)_$(LEVEL)_OUT))) LEVELS_ALL_OUT := $(foreach CHAPTER,$(LEVELS_CHAPTERS),$(foreach LEVEL,$(LEVELS_$(CHAPTER)),$($(CHAPTER)_$(LEVEL)_OUT)))
GFX_DATA_OUT += $(LEVELS_ALL_OUT) GFX_DATA_OUT += $(LEVELS_ALL_OUT)
@ -109,23 +75,23 @@ cleanlevels :
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Collision data # Collision data
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
#
COLLISION_IN := $(TOOL_DIR)/mapedit/collision.bmp # COLLISION_IN := $(TOOL_DIR)/mapedit/collision.bmp
#
COLLISION_OUT_DIR := $(DATA_OUT)/collision # COLLISION_OUT_DIR := $(DATA_OUT)/collision
COLLISION_OUT := $(COLLISION_OUT_DIR)/colltab.dat # COLLISION_OUT := $(COLLISION_OUT_DIR)/colltab.dat
#
collision : $(COLLISION_OUT) # collision : $(COLLISION_OUT)
#
cleancollision: # cleancollision:
@$(RM) -f $(COLLISION_OUT) # @$(RM) -f $(COLLISION_OUT)
@$(ECHO) Collision table cleaned # @$(ECHO) Collision table cleaned
#
$(COLLISION_OUT) : $(COLLISION_IN) # $(COLLISION_OUT) : $(COLLISION_IN)
@$(DATA_BIN_DIR)/mkcoltab $(COLLISION_IN) -o:$(COLLISION_OUT) # @$(DATA_BIN_DIR)/mkcoltab $(COLLISION_IN) -o:$(COLLISION_OUT)
#
GRAF_DIRS_TO_MAKE += $(COLLISION_OUT_DIR) # GRAF_DIRS_TO_MAKE += $(COLLISION_OUT_DIR)
GFX_DATA_OUT += $(COLLISION_OUT) # GFX_DATA_OUT += $(COLLISION_OUT)
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
@ -535,7 +501,7 @@ $(GRAF_DIRS_TO_MAKE) :
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Build the Biflump file # Build the Heffalump file
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
.PHONY: biglump cleanbiglump .PHONY: biglump cleanbiglump

View File

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

View File

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

View File

@ -123,6 +123,7 @@ u32 *Tag;
termPrim(StartOt); termPrim(StartOt);
} }
#endif
/*****************************************************************************/ /*****************************************************************************/
LINE_F2 *DrawLine(int _x0,int _y0,int _x1,int _y1,int _r,int _g,int _b,int _ot) 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); AddPrimToList(lg2,_ot);
return lg2; return lg2;
} }
#endif

View File

@ -15,10 +15,10 @@
#include "gfx\primplus.h" #include "gfx\primplus.h"
#endif #endif
#define MAX_OT (1024/2) #define MAX_OT (16)
#define MAX_PRIMS (1024*4) #define MAX_PRIMS (1024*4)
#define USE_NTAGS 1 //#define USE_NTAGS 1
/************************************************************************************/ /************************************************************************************/
@ -150,6 +150,7 @@ typedef u32 sOT;
#undef addPrim #undef addPrim
#define AddPrim addPrim #define AddPrim addPrim
#define AddPrim addPrim
#define addPrim( r0, r1 ) __asm__ ( \ #define addPrim( r0, r1 ) __asm__ ( \
"lwl $12, 2( %0 );" \ "lwl $12, 2( %0 );" \
"sll $13, %1, 8;" \ "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)); Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr));
@ -204,12 +204,12 @@ int i;
} }
/*****************************************************************************/ /*****************************************************************************/
extern DVECTOR TileMapOfs; //extern DVECTOR TileMapOfs;
void CLayerBack::think(DVECTOR &MapPos) void CLayerBack::think(DVECTOR &MapPos)
{ {
int _XOfs=MapPos.vx>>MapXYShift; int _XOfs=MapPos.vx>>MapXYShift;
int _YOfs=MapPos.vy>>MapXYShift; int _YOfs=MapPos.vy>>MapXYShift;
_YOfs+=TileMapOfs.vy; // _YOfs+=TileMapOfs.vy;
PosDx=(_XOfs-XOfs)<<MOVE_SHIFT; PosDx=(_XOfs-XOfs)<<MOVE_SHIFT;
PosDy=(_YOfs-YOfs)<<MOVE_SHIFT; PosDy=(_YOfs-YOfs)<<MOVE_SHIFT;

View File

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

View File

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

View File

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

View File

@ -7,30 +7,29 @@
#include "utils\utils.h" #include "utils\utils.h"
#include "gfx\prim.h" #include "gfx\prim.h"
#if defined(__USER_sbart__) || defined(__USER_daveo__)
#define _SHOW_POLYZ_ 1
#endif
#include "LayerTile.h" #include "LayerTile.h"
#include "LayerTile3d.h" #include "LayerTile3d.h"
#include "gfx\font.h" #include "gfx\font.h"
#if defined(__USER_art__) || defined(__USER_sbart__) || defined(__USER_daveo__) #if defined(_SHOW_POLYZ_)
#define _SHOW_POLYZ_ 1 static FontBank *Font;
#endif #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_) #if defined(_SHOW_POLYZ_)
Font=new ("PrimFont") FontBank; Font=new ("PrimFont") FontBank;
Font->initialise( &standardFont ); Font->initialise( &standardFont );
@ -42,11 +41,6 @@ CLayerTile3d::CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,Tile
/*****************************************************************************/ /*****************************************************************************/
CLayerTile3d::~CLayerTile3d() CLayerTile3d::~CLayerTile3d()
{ {
if (Font)
{
Font->dump();
delete Font;
}
} }
@ -62,6 +56,10 @@ void CLayerTile3d::init(DVECTOR &MapPos,int Shift)
/*****************************************************************************/ /*****************************************************************************/
void CLayerTile3d::shutdown() 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() 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 XOfs=-(BLOCK_MULT*15)-(SCREEN_TILE_ADJ_LEFT*BLOCK_MULT);
const int YOfs=-(BLOCK_MULT*7)-(SCREEN_TILE_ADJ_UP*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); sprintf(Txt,"Poly Count=%i",PolyCount);
Font->print( 32, 32, Txt); Font->print( 32, 32, Txt);
#endif #endif
*/
} }
#endif

View File

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

View File

@ -39,335 +39,43 @@
#include "system\vid.h" #include "system\vid.h"
#endif #endif
//#include "pad\pads.h"
#include "enemy\npc.h" #include "enemy\npc.h"
#include "gfx\actor.h" #include "gfx\actor.h"
DVECTOR CLevel::MapPos; /*****************************************************************************/
DVECTOR CLevel::s_playerSpawnPos;
sLvlTab LvlTable[]= sLvlTab LvlTable[]=
{ {
// C1 // C1
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0101_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, //0 {1,1,LEVELS_CHAPTER01_LEVEL01_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0102_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, {1,2,LEVELS_CHAPTER01_LEVEL02_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0103_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, {1,3,LEVELS_CHAPTER01_LEVEL03_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3},
{LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0104_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, {1,4,LEVELS_CHAPTER01_LEVEL04_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4},
{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},
// C2 // C2
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0101_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, //48 {2,1,LEVELS_CHAPTER02_LEVEL01_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0102_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, {2,2,LEVELS_CHAPTER02_LEVEL02_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0103_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, {2,3,LEVELS_CHAPTER02_LEVEL03_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3},
{LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0104_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, {2,4,LEVELS_CHAPTER02_LEVEL04_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4},
{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},
// C3 // C3
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0101_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, //96 {3,1,LEVELS_CHAPTER03_LEVEL01_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0102_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, {3,2,LEVELS_CHAPTER03_LEVEL02_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0103_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, {3,3,LEVELS_CHAPTER03_LEVEL03_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3},
{LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0104_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, {3,4,LEVELS_CHAPTER03_LEVEL04_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4},
{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},
// C4 // C4
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0101_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, //144 {4,1,LEVELS_CHAPTER04_LEVEL01_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0102_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, {4,2,LEVELS_CHAPTER04_LEVEL02_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0103_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, {4,3,LEVELS_CHAPTER04_LEVEL03_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3},
{LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0104_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, {4,4,LEVELS_CHAPTER04_LEVEL04_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4},
{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},
// C5 // C5
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0101_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, //192 {5,1,LEVELS_CHAPTER05_LEVEL01_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0102_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, {5,2,LEVELS_CHAPTER05_LEVEL02_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0103_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, {5,3,LEVELS_CHAPTER05_LEVEL03_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3},
{LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0104_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, {5,4,LEVELS_CHAPTER05_LEVEL04_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4},
{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},
// C6 // C6
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0101_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, //240 {6,1,LEVELS_CHAPTER06_LEVEL01_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0102_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, {6,2,LEVELS_CHAPTER06_LEVEL02_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0103_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, {6,3,LEVELS_CHAPTER06_LEVEL03_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0104_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, {6,4,LEVELS_CHAPTER06_LEVEL04_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0105_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, {6,5,LEVELS_CHAPTER06_LEVEL05_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE},
{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},
}; };
const static int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab); const static int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab);
@ -381,13 +89,13 @@ const FileEquate loadingScreens[6]=
LOADINGSCREENS_PIZZA_GFX, LOADINGSCREENS_PIZZA_GFX,
}; };
extern int s_globalLevelSelectThing; /*****************************************************************************/
DVECTOR CLevel::MapPos;
DVECTOR CLevel::s_playerSpawnPos;
/*****************************************************************************/ /*****************************************************************************/
CLevel::CLevel() CLevel::CLevel()
{ {
PakBuffer=0;
LevelBuffer=0;
LevelInfo=0;
} }
/*****************************************************************************/ /*****************************************************************************/
@ -407,7 +115,7 @@ int CLevel::GetNextLevel(int Lvl)
// TMP // TMP
if (Lvl>=LvlTableSize) Lvl=0; if (Lvl>=LvlTableSize) Lvl=0;
// Skip Blanks // 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++; Lvl++;
if (Lvl>=LvlTableSize) Lvl=0; if (Lvl>=LvlTableSize) Lvl=0;
@ -417,28 +125,30 @@ int CLevel::GetNextLevel(int Lvl)
} }
/*****************************************************************************/ /*****************************************************************************/
void CLevel::init() void CLevel::init(int LevelNo)
{ {
// Load it // Load it
sLvlTab *lvlTab=&LvlTable[s_globalLevelSelectThing]; sLvlTab *lvlTab=&LvlTable[LevelNo];
CActorGfx::ResetCache(); CActorGfx::ResetCache();
CSoundMediator::setSong((CSoundMediator::SONGID)lvlTab->songId); CSoundMediator::setSong((CSoundMediator::SONGID)lvlTab->songId);
if (!LevelBuffer) DisplayLoadingScreen(lvlTab);
{
initNewLevel(lvlTab);
}
// Load/unpack level LevelHdr=(sLvlHdr*)CFileIO::loadFile(lvlTab->LevelFilename,"Level");
// CFileIO::loadFileAtAddr(lvlTab->Level,PakBuffer); LevelHdr->TileBank2d=(sTile2d*) MakePtr(LevelHdr,(int)LevelHdr->TileBank2d);
CFileIO::loadFileAtAddr(lvlTab->Level,LevelBuffer); LevelHdr->TileBank3d=(sTile3d*) MakePtr(LevelHdr,(int)LevelHdr->TileBank3d);
// PAK_doUnpak(LevelBuffer,PakBuffer); LevelHdr->TriList=(sTri*) MakePtr(LevelHdr,(int)LevelHdr->TriList);
//int NextLvl=GetNextLevel(s_globalLevelSelectThing); LevelHdr->QuadList=(sQuad*) MakePtr(LevelHdr,(int)LevelHdr->QuadList);
// CFileIO::AddASyncFile(LvlTable[NextLvl].Level,PakBuffer); LevelHdr->VtxList=(sVtx*) MakePtr(LevelHdr,(int)LevelHdr->VtxList);
// CFileIO::loadFileAtAddr(LvlTable[NextLvl].Level,PakBuffer);
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.vx=LevelHdr->PlayerStartX*16;
s_playerSpawnPos.vy=LevelHdr->PlayerStartY*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(); FontBank font;
char buf[128];
ASSERT(!LevelInfo); u8 *s_image;
ASSERT(!LevelBuffer); int i;
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;
font.initialise(&standardFont); font.initialise(&standardFont);
font.setJustification(FontBank::JUST_CENTRE); font.setJustification(FontBank::JUST_CENTRE);
chapter=s_globalLevelSelectThing/(12*4); sprintf(buf,"LOADING CHAPTER %d LEVEL %d",lvlTab->Chapter,lvlTab->Level);
if(chapter>5)chapter=5; s_image=CFileIO::loadFile(loadingScreens[lvlTab->Chapter-1]);
level=((s_globalLevelSelectThing%(12*4))/12);
sprintf(buf,"LOADING CHAPTER %d LEVEL %d",chapter+1,level+1);
s_image=CFileIO::loadFile(loadingScreens[chapter]);
ASSERT(s_image); ASSERT(s_image);
SetScreenImage(s_image); SetScreenImage(s_image);
for(i=0;i<2;i++) for(i=0;i<2;i++)
@ -517,8 +197,6 @@ void CLevel::DisplayLoadingScreen()
/*****************************************************************************/ /*****************************************************************************/
void CLevel::initLayers() void CLevel::initLayers()
{ {
sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
// Init Layers // Init Layers
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++) for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
{ {
@ -531,12 +209,10 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
FXList=0; FXList=0;
// Back // Back
if (LevelHdr->BackLayer) if (LevelHdr->BackLayer)
{ {
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer); sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer);
CLayerTile *NewLayer=new ("Back Layer") CLayerBack(Layer, TileBank); CLayerTile *NewLayer=new ("Back Layer") CLayerBack(LevelHdr,Layer);
// ((CLayerBack*)NewLayer)->SetFrames(LvlTable[s_globalLevelSelectThing].Spr0,LvlTable[s_globalLevelSelectThing].Spr1);
NewLayer->init(MapPos,3); NewLayer->init(MapPos,3);
TileLayers[CLayerTile::LAYER_TILE_TYPE_BACK]=NewLayer; TileLayers[CLayerTile::LAYER_TILE_TYPE_BACK]=NewLayer;
} }
@ -545,7 +221,7 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
if (LevelHdr->MidLayer) if (LevelHdr->MidLayer)
{ {
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,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); NewLayer->init(MapPos,2);
TileLayers[CLayerTile::LAYER_TILE_TYPE_MID]=NewLayer; TileLayers[CLayerTile::LAYER_TILE_TYPE_MID]=NewLayer;
} }
@ -554,7 +230,7 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
if (LevelHdr->ActionLayer) if (LevelHdr->ActionLayer)
{ {
sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,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); NewLayer->init(MapPos,0);
TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]=NewLayer; 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++) 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 (ActorList) MemFree(ActorList);
if (PlatformList) MemFree(PlatformList); if (PlatformList) MemFree(PlatformList);
if (CleanUp) MemFree(LevelHdr);
{
if (LevelInfo) MemFree(LevelInfo); LevelInfo=0;
if (LevelBuffer) MemFree(LevelBuffer); LevelBuffer=0;
if (PakBuffer) MemFree(PakBuffer); PakBuffer=0;
if (TileBank) MemFree(TileBank); TileBank=0;
CActorPool::DumpActors(); CActorPool::DumpActors();
TPFree(m_levelTPage); TPFree(m_levelTPage);
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -694,6 +364,7 @@ void CLevel::shutdown(bool CleanUp)
void CLevel::render() void CLevel::render()
{ {
// Setup dummy prim to ensure OtPos 0 is initialised (for fast add) // Setup dummy prim to ensure OtPos 0 is initialised (for fast add)
/*
for (int i=0;i<8; i++) for (int i=0;i<8; i++)
{ {
TILE_16 *Prim=GetPrimTILE16(); TILE_16 *Prim=GetPrimTILE16();
@ -703,7 +374,7 @@ void CLevel::render()
AddPrim(ThisOT,Prim); AddPrim(ThisOT,Prim);
ASSERT(ThisOT->FirstPrim); ASSERT(ThisOT->FirstPrim);
} }
*/
for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++) for (int i=0; i<CLayerTile::LAYER_TILE_TYPE_MAX; i++)
{ {
if (TileLayers[i]) TileLayers[i]->render(); if (TileLayers[i]) TileLayers[i]->render();
@ -734,7 +405,6 @@ void CLevel::think(int _frames)
/*****************************************************************************/ /*****************************************************************************/
DVECTOR CLevel::getMapSize() DVECTOR CLevel::getMapSize()
{ {
sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer;
DVECTOR size; DVECTOR size;
sLayerHdr *layer; sLayerHdr *layer;

View File

@ -14,8 +14,8 @@
// Nope.. it's shrunk again! :) // Nope.. it's shrunk again! :)
struct sLvlTab struct sLvlTab
{ {
FileEquate LevelInfo; u16 Chapter,Level;
FileEquate TileBank,Level,Tex; FileEquate LevelFilename,TexFilename;
int songId; int songId;
}; };
@ -26,8 +26,8 @@ class CLevel
public: public:
CLevel(); CLevel();
// Scene Handlers // Scene Handlers
void init(); void init(int LevelNo);
void shutdown(bool CleanUp); void shutdown();
void render(); void render();
void think(int _frames); void think(int _frames);
@ -44,13 +44,10 @@ public:
int GetNextLevel(int Lvl); int GetNextLevel(int Lvl);
private: private:
void initLayers(); void initLayers();
void initNewLevel(sLvlTab *LevelDat); void DisplayLoadingScreen(sLvlTab *lvlTab);
void DisplayLoadingScreen();
sLevelInfo *LevelInfo; sLvlHdr *LevelHdr;
u8 *PakBuffer,*LevelBuffer;
sTile *TileBank;
static DVECTOR MapPos; static DVECTOR MapPos;
static DVECTOR s_playerSpawnPos; 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.setJustification( FontBank::JUST_CENTRE );
F.setOt( 0 ); F.setOt( 0 );
ClearNTag(OtPtr, MAX_OT); InitOTag(OtPtr, MAX_OT);
F.print( (512 >> 1), (256 >> 1), Text ); F.print( (512 >> 1), (256 >> 1), Text );
VSync(0); VSync(0);
@ -274,7 +274,7 @@ void DoAssert( const char * Txt, const char * file, const int line )
PrimDisplay(); PrimDisplay();
while(DrawSync(1)); while(DrawSync(1));
ClearNTag(OtPtr, MAX_OT); InitOTag(OtPtr, MAX_OT);
F.print( (512 >> 1), (256 >> 1), Text ); F.print( (512 >> 1), (256 >> 1), Text );
VSync(0); VSync(0);

Binary file not shown.

View File

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