From f338710074ecab28fb92ae89285e5436cdbb1289 Mon Sep 17 00:00:00 2001 From: Daveo Date: Wed, 18 Apr 2001 23:04:03 +0000 Subject: [PATCH] --- Graphics/levels/Chapter01/Level02/Level02.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter01/Level03/Level03.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter02/Level02/Level02.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter02/Level03/Level03.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter02/Level04/Level04.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter03/Level01/Level01.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter03/Level02/Level02.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter03/Level04/Level04.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter04/Level01/Level01.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter04/Level03/Level03.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter04/Level04/Level04.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter05/Level01/Level01.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter05/Level02/Level02.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter05/Level03/Level03.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter05/Level04/Level04.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter06/Level01/Level01.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter06/Level02/Level02.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter06/Level03/Level03.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter06/Level04/Level04.MEX | Bin 0 -> 7956 bytes Graphics/levels/Chapter06/Level05/Level05.MEX | Bin 0 -> 7956 bytes build/mklevel.pl | 11 +- data/DataCache.scr | 449 +++-------------- makefile.gfx | 78 +-- source/game/game.cpp | 12 +- source/game/game.h | 24 +- source/gfx/prim.cpp | 5 +- source/gfx/prim.h | 5 +- source/level/layerback.cpp | 6 +- source/level/layerback.h | 2 +- source/level/layertile.cpp | 31 +- source/level/layertile.h | 5 +- source/level/layertile3d.cpp | 148 ++++-- source/level/layertile3d.h | 15 +- source/level/level.cpp | 456 +++--------------- source/level/level.h | 17 +- source/system/dbg.cpp | 4 +- tools/Data/bin/MkLevel.exe | Bin 217088 -> 192512 bytes tools/Data/include/dstructs.h | 108 ++--- 38 files changed, 358 insertions(+), 1018 deletions(-) create mode 100644 Graphics/levels/Chapter01/Level02/Level02.MEX create mode 100644 Graphics/levels/Chapter01/Level03/Level03.MEX create mode 100644 Graphics/levels/Chapter02/Level02/Level02.MEX create mode 100644 Graphics/levels/Chapter02/Level03/Level03.MEX create mode 100644 Graphics/levels/Chapter02/Level04/Level04.MEX create mode 100644 Graphics/levels/Chapter03/Level01/Level01.MEX create mode 100644 Graphics/levels/Chapter03/Level02/Level02.MEX create mode 100644 Graphics/levels/Chapter03/Level04/Level04.MEX create mode 100644 Graphics/levels/Chapter04/Level01/Level01.MEX create mode 100644 Graphics/levels/Chapter04/Level03/Level03.MEX create mode 100644 Graphics/levels/Chapter04/Level04/Level04.MEX create mode 100644 Graphics/levels/Chapter05/Level01/Level01.MEX create mode 100644 Graphics/levels/Chapter05/Level02/Level02.MEX create mode 100644 Graphics/levels/Chapter05/Level03/Level03.MEX create mode 100644 Graphics/levels/Chapter05/Level04/Level04.MEX create mode 100644 Graphics/levels/Chapter06/Level01/Level01.MEX create mode 100644 Graphics/levels/Chapter06/Level02/Level02.MEX create mode 100644 Graphics/levels/Chapter06/Level03/Level03.MEX create mode 100644 Graphics/levels/Chapter06/Level04/Level04.MEX create mode 100644 Graphics/levels/Chapter06/Level05/Level05.MEX diff --git a/Graphics/levels/Chapter01/Level02/Level02.MEX b/Graphics/levels/Chapter01/Level02/Level02.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter01/Level03/Level03.MEX b/Graphics/levels/Chapter01/Level03/Level03.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter02/Level02/Level02.MEX b/Graphics/levels/Chapter02/Level02/Level02.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter02/Level03/Level03.MEX b/Graphics/levels/Chapter02/Level03/Level03.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter02/Level04/Level04.MEX b/Graphics/levels/Chapter02/Level04/Level04.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter03/Level01/Level01.MEX b/Graphics/levels/Chapter03/Level01/Level01.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter03/Level02/Level02.MEX b/Graphics/levels/Chapter03/Level02/Level02.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter03/Level04/Level04.MEX b/Graphics/levels/Chapter03/Level04/Level04.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter04/Level01/Level01.MEX b/Graphics/levels/Chapter04/Level01/Level01.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter04/Level03/Level03.MEX b/Graphics/levels/Chapter04/Level03/Level03.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter04/Level04/Level04.MEX b/Graphics/levels/Chapter04/Level04/Level04.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter05/Level01/Level01.MEX b/Graphics/levels/Chapter05/Level01/Level01.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter05/Level02/Level02.MEX b/Graphics/levels/Chapter05/Level02/Level02.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter05/Level03/Level03.MEX b/Graphics/levels/Chapter05/Level03/Level03.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter05/Level04/Level04.MEX b/Graphics/levels/Chapter05/Level04/Level04.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter06/Level01/Level01.MEX b/Graphics/levels/Chapter06/Level01/Level01.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter06/Level02/Level02.MEX b/Graphics/levels/Chapter06/Level02/Level02.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter06/Level03/Level03.MEX b/Graphics/levels/Chapter06/Level03/Level03.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter06/Level04/Level04.MEX b/Graphics/levels/Chapter06/Level04/Level04.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/Graphics/levels/Chapter06/Level05/Level05.MEX b/Graphics/levels/Chapter06/Level05/Level05.MEX new file mode 100644 index 0000000000000000000000000000000000000000..c94f7e0fad02e9bbfc1b2b85573d4302b1242cee GIT binary patch literal 7956 zcmeI1O=}Zj5XWcR6lpzJwjv8ve2^kB#%^+oN`+0c@dYX#?4gG(7-cnuhh|NJSt0mR zL~_uJH@|^U&mKguidUgW4cN}5G_rHE(}>;c|SPoXngO#;$7jVy*Z72 zA$|)6_lL+;i#DZMGprU0^oeEM?enn$Mg*JiS_XNyZH-+C}bOSh&d;C_Fl9gWyMzRz}ct1)35 zh<2ao1yW}&uh*ZxeZ<$7%Ug}x)7)!c&KdSwMZLYoRqf2S_F`LKVO?uhs+zi-`TXB8N1v5f@-1p&BJd3qwc|snppT6NnGeG@f z7*wit<(BFtwRk=7RWgP44>cpx%xkSqu4uo8cnZ-}vq{zo3NPn%ulHUbJs;fq<=ngX zjeZ~Jv0yN=-N(Ke{D>TSQ;0br1Mg98o0Q-~lC6VaR}LmxWYaNH%m#A*VJ_m0Gir1P X{b#@*XwFEyu*u^(#=e}s!+E~}@=&Hh literal 0 HcmV?d00001 diff --git a/build/mklevel.pl b/build/mklevel.pl index 8156a854b..580909ee7 100644 --- a/build/mklevel.pl +++ b/build/mklevel.pl @@ -14,22 +14,21 @@ $LevelDir =$Chapter/\$Level; $OutFile=">$OutFile"; open(OutFile) || die "Can't create makefile $OutFile; $!"; print OutFile <shutdown(); delete m_pauseMenu; @@ -195,8 +195,8 @@ void CGameScene::think(int _frames) } else if(s_levelFinished) { - s_globalLevelSelectThing=Level.GetNextLevel(s_globalLevelSelectThing); - shutdownLevel(s_globalLevelSelectThing%12==0); + s_globalLevelSelectThing++; + shutdownLevel(); initLevel(); s_levelFinished=false; } @@ -285,7 +285,7 @@ void CGameScene::initLevel() #endif s_levelFinished=false; - Level.init(); + Level.init(s_globalLevelSelectThing); createPlayer(); m_player->setRespawnPos(Level.getPlayerSpawnPos()); @@ -411,11 +411,11 @@ void CGameScene::initLevel() /*****************************************************************************/ -void CGameScene::shutdownLevel(bool CleanUp) +void CGameScene::shutdownLevel() { CConversation::shutdown(); CThingManager::shutdown(); - Level.shutdown(CleanUp); + Level.shutdown(); } /*****************************************************************************/ diff --git a/source/game/game.h b/source/game/game.h index 56aa091e4..4b27259e7 100644 --- a/source/game/game.h +++ b/source/game/game.h @@ -15,6 +15,7 @@ /*****************************************************************************/ class FontBank; class SpriteBank; +class CPlayer; class CGameScene : public CScene { public: @@ -22,18 +23,17 @@ public: virtual ~CGameScene() {;} - void init(); -virtual void createPlayer(); -virtual int canPause(); - void shutdown(); - void render(); - void think(int _frames); - int readyToShutdown(); - char *getSceneName() {return "Game";} + void init(); +virtual void createPlayer(); +virtual int canPause(); + void shutdown(); + void render(); + void think(int _frames); + int readyToShutdown(); + char *getSceneName() {return "Game";} -// static MATRIX *GetCamMtx() {return(&CamMtx);} - class CPlayer *getPlayer(); - void sendEvent( GAME_EVENT evt, class CThing *sourceThing ); + CPlayer *getPlayer(); + void sendEvent( GAME_EVENT evt, class CThing *sourceThing ); static void setReadyToExit() {s_readyToExit=true;} static void levelFinished() {s_levelFinished=true;} @@ -41,7 +41,7 @@ virtual int canPause(); protected: void initLevel(); - void shutdownLevel(bool CleanUp); + void shutdownLevel(); void AspectCorrectCamera(); diff --git a/source/gfx/prim.cpp b/source/gfx/prim.cpp index 93076be1c..6a1602a08 100644 --- a/source/gfx/prim.cpp +++ b/source/gfx/prim.cpp @@ -123,6 +123,7 @@ u32 *Tag; termPrim(StartOt); } +#endif /*****************************************************************************/ LINE_F2 *DrawLine(int _x0,int _y0,int _x1,int _y1,int _r,int _g,int _b,int _ot) @@ -150,7 +151,3 @@ LINE_G2 *DrawGLine(int _x0,int _y0,int _x1,int _y1,int _r1,int _g1,int _b1,int AddPrimToList(lg2,_ot); return lg2; } - - - -#endif \ No newline at end of file diff --git a/source/gfx/prim.h b/source/gfx/prim.h index c67b6d736..611a38834 100644 --- a/source/gfx/prim.h +++ b/source/gfx/prim.h @@ -15,10 +15,10 @@ #include "gfx\primplus.h" #endif -#define MAX_OT (1024/2) +#define MAX_OT (16) #define MAX_PRIMS (1024*4) -#define USE_NTAGS 1 +//#define USE_NTAGS 1 /************************************************************************************/ @@ -150,6 +150,7 @@ typedef u32 sOT; #undef addPrim #define AddPrim addPrim +#define AddPrim addPrim #define addPrim( r0, r1 ) __asm__ ( \ "lwl $12, 2( %0 );" \ "sll $13, %1, 8;" \ diff --git a/source/level/layerback.cpp b/source/level/layerback.cpp index fe0afad5e..9ea552d0e 100644 --- a/source/level/layerback.cpp +++ b/source/level/layerback.cpp @@ -37,7 +37,7 @@ sBackRGBTable CLayerBack::BackRGBTable[]= /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -CLayerBack::CLayerBack(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,TileBank) +CLayerBack::CLayerBack(sLvlHdr *LvlHdr,sLayerHdr *Hdr) : CLayerTile(LvlHdr,Hdr) { Data=(sLayerShadeHdr*)MakePtr(Hdr,sizeof(sLayerHdr)); @@ -204,12 +204,12 @@ int i; } /*****************************************************************************/ -extern DVECTOR TileMapOfs; +//extern DVECTOR TileMapOfs; void CLayerBack::think(DVECTOR &MapPos) { int _XOfs=MapPos.vx>>MapXYShift; int _YOfs=MapPos.vy>>MapXYShift; - _YOfs+=TileMapOfs.vy; +// _YOfs+=TileMapOfs.vy; PosDx=(_XOfs-XOfs)<Width; MapHeight=LayerHdr->Height; printf("%i %i\n",MapWidth,MapHeight); - TileBank=_TileBank; + TileBank2d=LvlHdr->TileBank2d; Map=(sTileMapElem*)MakePtr(Hdr,sizeof(sLayerHdr)); } @@ -62,13 +59,12 @@ int YPos=MapPos.vy>>MapXYShift; MapXY.vx=XPos>>4; MapXY.vy=YPos/12; -#if 0 - if (LayerHdr->SubType==1) // BODGE AND A HALF + +/* if (LayerHdr->SubType==1) // BODGE AND A HALF { -/**/ MapXY.vx+=TileMapOfs.vx; -/**/ MapXY.vy+=TileMapOfs.vy; + MapXY.vx+=TileMapOfs.vx; MapXY.vy+=TileMapOfs.vy; } -#endif +*/ ShiftX=XPos & 15; // ShiftY=YPos & 15; ShiftY=YPos%12; @@ -88,9 +84,10 @@ int YPos=MapPos.vy>>MapXYShift; /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ -#if 1 +#if 1 // FT4 version void CLayerTile::render() { + sTileMapElem *MapPtr=GetMapPos(); u8 *PrimPtr=GetPrimPtr(); s16 TileX,TileY; @@ -107,10 +104,11 @@ sOT *ThisOT=OtPtr+LayerOT; for (int X=0; XTile; + MapRow++; if (ThisTile) { - sTile *Tile=&TileBank[ThisTile]; + sTile2d *Tile=&TileBank2d[ThisTile]; POLY_FT4 *Ft4=(POLY_FT4*)PrimPtr; setPolyFT4(Ft4); setShadeTex(Ft4,1); @@ -118,7 +116,8 @@ sOT *ThisOT=OtPtr+LayerOT; setUVWH(Ft4,Tile->u0,Tile->v0,15,15); Ft4->tpage=Tile->TPage; Ft4->clut=Tile->Clut; - addPrimNoCheck(ThisOT,Ft4); +// addPrimNoCheck(ThisOT,Ft4); + addPrim(ThisOT,Ft4); PrimPtr+=sizeof(POLY_FT4); } TileX+=TILE_WIDTH; @@ -152,7 +151,7 @@ sOT *ThisOT=OtPtr+LayerOT; int ThisTile=*MapRow++; if (ThisTile) { -/**/ sTile *Tile=&TileBank[ThisTile]; +/**/ sTile2d *Tile=&TileBank2d[ThisTile]; TSPRT_16 *SprPtr=(TSPRT_16*)PrimPtr; setTSprt16(SprPtr); setTSetShadeTex(SprPtr,1); diff --git a/source/level/layertile.h b/source/level/layertile.h index 038e010f6..903e55a63 100644 --- a/source/level/layertile.h +++ b/source/level/layertile.h @@ -34,7 +34,7 @@ public: SCREEN_TILE_SIZE=SCREEN_TILE_WIDTH*SCREEN_TILE_HEIGHT }; - CLayerTile(sLayerHdr *Hdr,sTile *TileBank); + CLayerTile(sLvlHdr *LvlHdr,sLayerHdr *Hdr); virtual ~CLayerTile(); virtual void init(DVECTOR &MapPos,int Shift); @@ -46,9 +46,8 @@ virtual void render(); virtual sTileMapElem *GetMapPos() {return(Map+GetMapOfs());} protected: - sLayerHdr *LayerHdr; - sTile *TileBank; + sTile2d *TileBank2d; int MapWidth,MapHeight,MapXYShift; int RenderW,RenderH; diff --git a/source/level/layertile3d.cpp b/source/level/layertile3d.cpp index de1d6b367..f533686c2 100644 --- a/source/level/layertile3d.cpp +++ b/source/level/layertile3d.cpp @@ -7,46 +7,40 @@ #include "utils\utils.h" #include "gfx\prim.h" +#if defined(__USER_sbart__) || defined(__USER_daveo__) +#define _SHOW_POLYZ_ 1 +#endif #include "LayerTile.h" #include "LayerTile3d.h" #include "gfx\font.h" -#if defined(__USER_art__) || defined(__USER_sbart__) || defined(__USER_daveo__) -#define _SHOW_POLYZ_ 1 -#endif -/*****************************************************************************/ -/*****************************************************************************/ -/*****************************************************************************/ -CLayerTile3d::CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank) : CLayerTile(Hdr,TileBank) -{ - - LayerInfo=(sLayer3d*)MakePtr(Hdr,sizeof(sLayerHdr)); - - TriList=(sTri*) MakePtr(Hdr,LayerInfo->TriList); - QuadList=(sQuad*) MakePtr(Hdr,LayerInfo->QuadList); - VtxList=(sVtx*) MakePtr(Hdr,LayerInfo->VtxList); - - Map=(sTileMapElem*)MakePtr(Hdr,sizeof(sLayerHdr)+sizeof(sLayer3d)); - - Font=0; #if defined(_SHOW_POLYZ_) - Font=new ("PrimFont") FontBank; - Font->initialise( &standardFont ); - Font->setOt( 0 ); - Font->setTrans(1); +static FontBank *Font; +#endif + +/*****************************************************************************/ +/*****************************************************************************/ +/*****************************************************************************/ +CLayerTile3d::CLayerTile3d(sLvlHdr *LvlHdr,sLayerHdr *Hdr) : CLayerTile(LvlHdr,Hdr) +{ + TileBank3d=LvlHdr->TileBank3d; + TriList=LvlHdr->TriList; + QuadList=LvlHdr->QuadList; + VtxList=LvlHdr->VtxList; + +#if defined(_SHOW_POLYZ_) + Font=new ("PrimFont") FontBank; + Font->initialise( &standardFont ); + Font->setOt( 0 ); + Font->setTrans(1); #endif } /*****************************************************************************/ CLayerTile3d::~CLayerTile3d() { - if (Font) - { - Font->dump(); - delete Font; - } } @@ -62,6 +56,10 @@ void CLayerTile3d::init(DVECTOR &MapPos,int Shift) /*****************************************************************************/ void CLayerTile3d::shutdown() { +#if defined(_SHOW_POLYZ_) + Font->dump(); + delete Font; +#endif } /*****************************************************************************/ @@ -106,8 +104,100 @@ int YPos=MapPos.vy>>MapXYShift; /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ +int BLOCK_MULTx=1; +#if 1 +VECTOR asd={0,0,0}; + void CLayerTile3d::render() { + +const int XOfs=-(BLOCK_MULT*15)-(SCREEN_TILE_ADJ_LEFT*BLOCK_MULT); +const int YOfs=-(BLOCK_MULT*7)-(SCREEN_TILE_ADJ_UP*BLOCK_MULT); + +sTileMapElem *MapPtr=GetMapPos(); +u8 *PrimPtr=GetPrimPtr(); +POLY_FT3 *TPrimPtr=(POLY_FT3*)PrimPtr; +VECTOR BlkPos; +sVtx *P0,*P1,*P2; +u32 T0,T1,T2; +s32 ClipZ; +sOT *ThisOT; + +// Setup Trans Matrix + BlkPos.vx=XOfs-((MapXY.vx+ShiftX)); + BlkPos.vy=YOfs-((MapXY.vy+ShiftY)); + BlkPos.vx+=RenderOfs.vx; + BlkPos.vy+=RenderOfs.vy; + + BlkPos.vx+=asd.vx; + BlkPos.vy+=asd.vy; + + + for (int Y=0; YTile]; + int TriCount=Tile->TriCount; + sTri *TList=&TriList[Tile->TriStart]; + + while (TriCount--) // Blank tiles rejected here (as no tri-count) + { + P0=&VtxList[TList->P0]; P1=&VtxList[TList->P1]; P2=&VtxList[TList->P2]; + CMX_SetTransMtxXY(&BlkPos); + gte_ldv3(P0,P1,P2); + setPolyFT3(TPrimPtr); + setShadeTex(TPrimPtr,1); + setlen(TPrimPtr, GPU_PolyFT3Tag); + gte_rtpt_b(); + + T0=*(u32*)&TList->uv0; // Get UV0 & TPage + T1=*(u32*)&TList->uv1; // Get UV1 & Clut + T2=*(u16*)&TList->uv2; // Get UV2 + *(u32*)&TPrimPtr->u0=T0; // Set UV0 + *(u32*)&TPrimPtr->u1=T1; // Set UV1 + *(u16*)&TPrimPtr->u2=T2; // Set UV2 + if (TList->OTOfs>MAX_OT-1) TList->OTOfs=MAX_OT-1; + ThisOT=OtPtr+TList->OTOfs; + + TList++; +// gte_nclip_b(); + gte_stsxy3_ft3(TPrimPtr); +// gte_stopz(&ClipZ); +// if (ClipZ<=0) + { + addPrim(ThisOT,TPrimPtr); +// addPrimNoCheck(OtPtr,TPrimPtr); + TPrimPtr++; + } + } + MapRow++; + BlkPos.vx+=BLOCK_MULT; + } + MapPtr+=MapWidth; + BlkPos.vx=BlkXOld; + BlkPos.vy+=BLOCK_MULT; + } + + SetPrimPtr((u8*)TPrimPtr); + +#if defined(_SHOW_POLYZ_) +char Txt[256]; +int TCount=((u8*)TPrimPtr-PrimPtr)/sizeof(POLY_FT3); +int QCount=0; + sprintf(Txt,"TC %i\nQC %i",TCount,QCount); + Font->print( 128, 32, Txt); +#endif + +} + +#else +void CLayerTile3d::render() +{ +/* const int XOfs=-(BLOCK_MULT*15)-(SCREEN_TILE_ADJ_LEFT*BLOCK_MULT); const int YOfs=-(BLOCK_MULT*7)-(SCREEN_TILE_ADJ_UP*BLOCK_MULT); @@ -182,5 +272,7 @@ char Txt[256]; sprintf(Txt,"Poly Count=%i",PolyCount); Font->print( 32, 32, Txt); #endif - +*/ } + +#endif \ No newline at end of file diff --git a/source/level/layertile3d.h b/source/level/layertile3d.h index 5c0d5d87b..f8a27665d 100644 --- a/source/level/layertile3d.h +++ b/source/level/layertile3d.h @@ -11,15 +11,15 @@ class FontBank; class CLayerTile3d : public CLayerTile { public: - CLayerTile3d(sLayerHdr *Hdr,sTile *TileBank); + CLayerTile3d(sLvlHdr *LvlHdr,sLayerHdr *Hdr); ~CLayerTile3d(); enum { - SCREEN_TILE_ADJ_UP =2, - SCREEN_TILE_ADJ_DOWN =2, - SCREEN_TILE_ADJ_LEFT =2, - SCREEN_TILE_ADJ_RIGHT =5, + SCREEN_TILE_ADJ_UP =(2*1), + SCREEN_TILE_ADJ_DOWN =(2*1), + SCREEN_TILE_ADJ_LEFT =(2*1), + SCREEN_TILE_ADJ_RIGHT =(5*1), SCREEN_TILE_WIDTH3D= SCREEN_TILE_WIDTH+SCREEN_TILE_ADJ_RIGHT, SCREEN_TILE_HEIGHT3D= SCREEN_TILE_HEIGHT+SCREEN_TILE_ADJ_DOWN, BLOCK_MULT = 16 @@ -31,14 +31,11 @@ public: void render(); protected: - sLayer3d *LayerInfo; + sTile3d *TileBank3d; sTri *TriList; sQuad *QuadList; sVtx *VtxList; DVECTOR RenderOfs; - - FontBank *Font; - }; diff --git a/source/level/level.cpp b/source/level/level.cpp index 344de590d..4a2f13d2a 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -39,335 +39,43 @@ #include "system\vid.h" #endif -//#include "pad\pads.h" #include "enemy\npc.h" #include "gfx\actor.h" -DVECTOR CLevel::MapPos; -DVECTOR CLevel::s_playerSpawnPos; - +/*****************************************************************************/ sLvlTab LvlTable[]= { // C1 - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0101_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, //0 - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0102_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0103_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0104_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0105_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0106_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0107_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0108_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0109_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0110_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0111_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - {LEVELS_CHAPTER01_LEVEL01_INF,LEVELS_CHAPTER01_LEVEL01_TBK,LEVELS_CHAPTER01_LEVEL0112_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, - - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0201_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, //12 - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0202_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0203_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0204_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0205_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0206_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0207_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0208_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0209_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0210_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0211_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - {LEVELS_CHAPTER01_LEVEL02_INF,LEVELS_CHAPTER01_LEVEL02_TBK,LEVELS_CHAPTER01_LEVEL0212_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, - - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0301_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, //24 - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0302_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0303_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0304_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0305_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0306_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0307_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0308_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0309_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0310_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0311_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - {LEVELS_CHAPTER01_LEVEL03_INF,LEVELS_CHAPTER01_LEVEL03_TBK,LEVELS_CHAPTER01_LEVEL0312_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, - - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0401_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, //36 - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0402_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0403_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0404_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0405_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0406_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0407_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0408_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0409_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0410_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0411_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, - {LEVELS_CHAPTER01_LEVEL04_INF,LEVELS_CHAPTER01_LEVEL04_TBK,LEVELS_CHAPTER01_LEVEL0412_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, + {1,1,LEVELS_CHAPTER01_LEVEL01_LVL,LEVELS_CHAPTER01_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL1}, + {1,2,LEVELS_CHAPTER01_LEVEL02_LVL,LEVELS_CHAPTER01_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL2}, + {1,3,LEVELS_CHAPTER01_LEVEL03_LVL,LEVELS_CHAPTER01_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL3}, + {1,4,LEVELS_CHAPTER01_LEVEL04_LVL,LEVELS_CHAPTER01_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER1_LEVEL4}, // C2 - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0101_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, //48 - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0102_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0103_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0104_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0105_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0106_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0107_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0108_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0109_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0110_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0111_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - {LEVELS_CHAPTER02_LEVEL01_INF,LEVELS_CHAPTER02_LEVEL01_TBK,LEVELS_CHAPTER02_LEVEL0112_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, - - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0201_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, //60 - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0202_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0203_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0204_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0205_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0206_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0207_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0208_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0209_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0210_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0211_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - {LEVELS_CHAPTER02_LEVEL02_INF,LEVELS_CHAPTER02_LEVEL02_TBK,LEVELS_CHAPTER02_LEVEL0212_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, - - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0301_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, //72 - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0302_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0303_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0304_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0305_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0306_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0307_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0308_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0309_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0310_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0311_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - {LEVELS_CHAPTER02_LEVEL03_INF,LEVELS_CHAPTER02_LEVEL03_TBK,LEVELS_CHAPTER02_LEVEL0312_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, - - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0401_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, //84 - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0402_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0403_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0404_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0405_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0406_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0407_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0408_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0409_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0410_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0411_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - {LEVELS_CHAPTER02_LEVEL04_INF,LEVELS_CHAPTER02_LEVEL04_TBK,LEVELS_CHAPTER02_LEVEL0412_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, - - + {2,1,LEVELS_CHAPTER02_LEVEL01_LVL,LEVELS_CHAPTER02_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL1}, + {2,2,LEVELS_CHAPTER02_LEVEL02_LVL,LEVELS_CHAPTER02_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL2}, + {2,3,LEVELS_CHAPTER02_LEVEL03_LVL,LEVELS_CHAPTER02_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL3}, + {2,4,LEVELS_CHAPTER02_LEVEL04_LVL,LEVELS_CHAPTER02_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER2_LEVEL4}, // C3 - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0101_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, //96 - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0102_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0103_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0104_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0105_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0106_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0107_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0108_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0109_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0110_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0111_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - {LEVELS_CHAPTER03_LEVEL01_INF,LEVELS_CHAPTER03_LEVEL01_TBK,LEVELS_CHAPTER03_LEVEL0112_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, - - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0201_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, //108 - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0202_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0203_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0204_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0205_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0206_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0207_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0208_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0209_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0210_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0211_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - {LEVELS_CHAPTER03_LEVEL02_INF,LEVELS_CHAPTER03_LEVEL02_TBK,LEVELS_CHAPTER03_LEVEL0212_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, - - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0301_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, //120 - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0302_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0303_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0304_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0305_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0306_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0307_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0308_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0309_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0310_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0311_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - {LEVELS_CHAPTER03_LEVEL03_INF,LEVELS_CHAPTER03_LEVEL03_TBK,LEVELS_CHAPTER03_LEVEL0312_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, - - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0401_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, //132 - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0402_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0403_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0404_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0405_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0405X_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0406_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0407_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0408_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0409_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0410_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, - {LEVELS_CHAPTER03_LEVEL04_INF,LEVELS_CHAPTER03_LEVEL04_TBK,LEVELS_CHAPTER03_LEVEL0411_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, + {3,1,LEVELS_CHAPTER03_LEVEL01_LVL,LEVELS_CHAPTER03_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL1}, + {3,2,LEVELS_CHAPTER03_LEVEL02_LVL,LEVELS_CHAPTER03_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL2}, + {3,3,LEVELS_CHAPTER03_LEVEL03_LVL,LEVELS_CHAPTER03_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL3}, + {3,4,LEVELS_CHAPTER03_LEVEL04_LVL,LEVELS_CHAPTER03_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER3_LEVEL4}, // C4 - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0101_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, //144 - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0102_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0103_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0104_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0105_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0106_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0107_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0108_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0109_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0110_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0111_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - {LEVELS_CHAPTER04_LEVEL01_INF,LEVELS_CHAPTER04_LEVEL01_TBK,LEVELS_CHAPTER04_LEVEL0112_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, - - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0201_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, //156 - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0202_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0203_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0204_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0205_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0206_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0207_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0208_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0209_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0210_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0211_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - {LEVELS_CHAPTER04_LEVEL02_INF,LEVELS_CHAPTER04_LEVEL02_TBK,LEVELS_CHAPTER04_LEVEL0212_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, - - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0301_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, //168 - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0302_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0303_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0304_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0305_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0306_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0307_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0308_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0309_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0310_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0311_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - {LEVELS_CHAPTER04_LEVEL03_INF,LEVELS_CHAPTER04_LEVEL03_TBK,LEVELS_CHAPTER04_LEVEL0312_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, - - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0401_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, //180 - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0402_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0403_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0404_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0405_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0406_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0407_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0408_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0409_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0410_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0411_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, - {LEVELS_CHAPTER04_LEVEL04_INF,LEVELS_CHAPTER04_LEVEL04_TBK,LEVELS_CHAPTER04_LEVEL0412_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, + {4,1,LEVELS_CHAPTER04_LEVEL01_LVL,LEVELS_CHAPTER04_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL1}, + {4,2,LEVELS_CHAPTER04_LEVEL02_LVL,LEVELS_CHAPTER04_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL2}, + {4,3,LEVELS_CHAPTER04_LEVEL03_LVL,LEVELS_CHAPTER04_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL3}, + {4,4,LEVELS_CHAPTER04_LEVEL04_LVL,LEVELS_CHAPTER04_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER4_LEVEL4}, // C5 - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0101_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, //192 - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0102_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0103_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0104_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0105_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0106_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0107_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0108_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0109_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0110_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0111_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - {LEVELS_CHAPTER05_LEVEL01_INF,LEVELS_CHAPTER05_LEVEL01_TBK,LEVELS_CHAPTER05_LEVEL0112_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, - - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0201_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, //204 - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0202_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0203_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0204_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0205_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0206_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0207_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0208_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0209_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0210_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0211_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - {LEVELS_CHAPTER05_LEVEL02_INF,LEVELS_CHAPTER05_LEVEL02_TBK,LEVELS_CHAPTER05_LEVEL0212_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, - - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0301_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, //216 - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0302_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0303_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0304_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0305_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0306_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0307_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0308_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0309_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0310_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0311_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - {LEVELS_CHAPTER05_LEVEL03_INF,LEVELS_CHAPTER05_LEVEL03_TBK,LEVELS_CHAPTER05_LEVEL0312_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, - - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0401_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, //228 - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0402_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0403_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0404_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0405_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0406_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0407_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0408_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0409_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0410_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0411_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, - {LEVELS_CHAPTER05_LEVEL04_INF,LEVELS_CHAPTER05_LEVEL04_TBK,LEVELS_CHAPTER05_LEVEL0412_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, + {5,1,LEVELS_CHAPTER05_LEVEL01_LVL,LEVELS_CHAPTER05_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL1}, + {5,2,LEVELS_CHAPTER05_LEVEL02_LVL,LEVELS_CHAPTER05_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL2}, + {5,3,LEVELS_CHAPTER05_LEVEL03_LVL,LEVELS_CHAPTER05_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL3}, + {5,4,LEVELS_CHAPTER05_LEVEL04_LVL,LEVELS_CHAPTER05_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER5_LEVEL4}, // C6 - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0101_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, //240 - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0102_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0103_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0104_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0105_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0106_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0107_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0108_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0109_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0110_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0111_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - {LEVELS_CHAPTER06_LEVEL01_INF,LEVELS_CHAPTER06_LEVEL01_TBK,LEVELS_CHAPTER06_LEVEL0112_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, - - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0201_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, //252 - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0202_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0203_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0204_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0205_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0206_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0207_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0208_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0209_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0210_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0211_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - {LEVELS_CHAPTER06_LEVEL02_INF,LEVELS_CHAPTER06_LEVEL02_TBK,LEVELS_CHAPTER06_LEVEL0212_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, - - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0301_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, //264 - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0302_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0303_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0304_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0305_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0306_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0307_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0308_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0309_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0310_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0311_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - {LEVELS_CHAPTER06_LEVEL03_INF,LEVELS_CHAPTER06_LEVEL03_TBK,LEVELS_CHAPTER06_LEVEL0312_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, - - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0401_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0402_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0403_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0404_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0405_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0406_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0407_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0408_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0409_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0410_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0411_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL04_INF,LEVELS_CHAPTER06_LEVEL04_TBK,LEVELS_CHAPTER06_LEVEL0412_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - - {LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0501_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0502_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0503_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0504_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, - {LEVELS_CHAPTER06_LEVEL05_INF,LEVELS_CHAPTER06_LEVEL05_TBK,LEVELS_CHAPTER06_LEVEL0505_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, + {6,1,LEVELS_CHAPTER06_LEVEL01_LVL,LEVELS_CHAPTER06_LEVEL01_TEX, CSoundMediator::SONG_CHAPTER6_ROLLERCOASTER}, + {6,2,LEVELS_CHAPTER06_LEVEL02_LVL,LEVELS_CHAPTER06_LEVEL02_TEX, CSoundMediator::SONG_CHAPTER6_SNAILRACE}, + {6,3,LEVELS_CHAPTER06_LEVEL03_LVL,LEVELS_CHAPTER06_LEVEL03_TEX, CSoundMediator::SONG_CHAPTER6_BIGWHEEL}, + {6,4,LEVELS_CHAPTER06_LEVEL04_LVL,LEVELS_CHAPTER06_LEVEL04_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, + {6,5,LEVELS_CHAPTER06_LEVEL05_LVL,LEVELS_CHAPTER06_LEVEL05_TEX, CSoundMediator::SONG_CHAPTER6_TUNNELOFLOVE}, }; const static int LvlTableSize=sizeof(LvlTable)/sizeof(sLvlTab); @@ -381,13 +89,13 @@ const FileEquate loadingScreens[6]= LOADINGSCREENS_PIZZA_GFX, }; -extern int s_globalLevelSelectThing; +/*****************************************************************************/ +DVECTOR CLevel::MapPos; +DVECTOR CLevel::s_playerSpawnPos; + /*****************************************************************************/ CLevel::CLevel() { - PakBuffer=0; - LevelBuffer=0; - LevelInfo=0; } /*****************************************************************************/ @@ -407,7 +115,7 @@ int CLevel::GetNextLevel(int Lvl) // TMP if (Lvl>=LvlTableSize) Lvl=0; // Skip Blanks - while (CFileIO::getFileSize(LvlTable[Lvl ].Level)<=4000) // Dodgy blank level skip + while (CFileIO::getFileSize(LvlTable[Lvl ].LevelFilename)<=4000) // Dodgy blank level skip { Lvl++; if (Lvl>=LvlTableSize) Lvl=0; @@ -417,28 +125,30 @@ int CLevel::GetNextLevel(int Lvl) } /*****************************************************************************/ -void CLevel::init() +void CLevel::init(int LevelNo) { // Load it -sLvlTab *lvlTab=&LvlTable[s_globalLevelSelectThing]; +sLvlTab *lvlTab=&LvlTable[LevelNo]; CActorGfx::ResetCache(); CSoundMediator::setSong((CSoundMediator::SONGID)lvlTab->songId); - if (!LevelBuffer) - { - initNewLevel(lvlTab); - } + DisplayLoadingScreen(lvlTab); -// Load/unpack level -// CFileIO::loadFileAtAddr(lvlTab->Level,PakBuffer); - CFileIO::loadFileAtAddr(lvlTab->Level,LevelBuffer); -// PAK_doUnpak(LevelBuffer,PakBuffer); -//int NextLvl=GetNextLevel(s_globalLevelSelectThing); -// CFileIO::AddASyncFile(LvlTable[NextLvl].Level,PakBuffer); -// CFileIO::loadFileAtAddr(LvlTable[NextLvl].Level,PakBuffer); + LevelHdr=(sLvlHdr*)CFileIO::loadFile(lvlTab->LevelFilename,"Level"); + LevelHdr->TileBank2d=(sTile2d*) MakePtr(LevelHdr,(int)LevelHdr->TileBank2d); + LevelHdr->TileBank3d=(sTile3d*) MakePtr(LevelHdr,(int)LevelHdr->TileBank3d); + LevelHdr->TriList=(sTri*) MakePtr(LevelHdr,(int)LevelHdr->TriList); + LevelHdr->QuadList=(sQuad*) MakePtr(LevelHdr,(int)LevelHdr->QuadList); + LevelHdr->VtxList=(sVtx*) MakePtr(LevelHdr,(int)LevelHdr->VtxList); -sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer; + LevelHdr->ActorList=0; + LevelHdr->FXList=0; + LevelHdr->ItemList=0; + LevelHdr->PlatformList=0; + LevelHdr->TriggerList=0; + + m_levelTPage=TPLoadTex(lvlTab->TexFilename); s_playerSpawnPos.vx=LevelHdr->PlayerStartX*16; s_playerSpawnPos.vy=LevelHdr->PlayerStartY*16; @@ -448,47 +158,17 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer; } /*****************************************************************************/ -void CLevel::initNewLevel(sLvlTab *lvlTab) +void CLevel::DisplayLoadingScreen(sLvlTab *lvlTab) { - DisplayLoadingScreen(); - - ASSERT(!LevelInfo); - ASSERT(!LevelBuffer); - ASSERT(!TileBank); - LevelInfo=(sLevelInfo*)CFileIO::loadFile(lvlTab->LevelInfo,"LevelInfo"); - LevelBuffer=(u8*)MemAlloc(LevelInfo->MaxLvlSize,"Level Buffer"); -// PakBuffer=(u8*)MemAlloc(LevelInfo->MaxPakSize,"Level Pak Buffer"); - TileBank=(sTile *)CFileIO::loadFile(lvlTab->TileBank,"Tile Bank Data"); - m_levelTPage=TPLoadTex(lvlTab->Tex); - -u16 *TypePtr=(u16*)MakePtr(LevelInfo,sizeof(sLevelInfo)); - - for (int i=0; iActorCount; i++) - { - int ThisType=*TypePtr++; -// printf("Type %i\n",ThisType); - CNpcEnemy::CacheActor(ThisType); - } -// CFileIO::loadFileAtAddr(lvlTab->Level,PakBuffer); - -} - -/*****************************************************************************/ -void CLevel::DisplayLoadingScreen() -{ - FontBank font; - int chapter,level; - char buf[128]; - u8 *s_image; - int i; +FontBank font; +char buf[128]; +u8 *s_image; +int i; font.initialise(&standardFont); font.setJustification(FontBank::JUST_CENTRE); - chapter=s_globalLevelSelectThing/(12*4); - if(chapter>5)chapter=5; - level=((s_globalLevelSelectThing%(12*4))/12); - sprintf(buf,"LOADING CHAPTER %d LEVEL %d",chapter+1,level+1); - s_image=CFileIO::loadFile(loadingScreens[chapter]); + sprintf(buf,"LOADING CHAPTER %d LEVEL %d",lvlTab->Chapter,lvlTab->Level); + s_image=CFileIO::loadFile(loadingScreens[lvlTab->Chapter-1]); ASSERT(s_image); SetScreenImage(s_image); for(i=0;i<2;i++) @@ -517,8 +197,6 @@ void CLevel::DisplayLoadingScreen() /*****************************************************************************/ void CLevel::initLayers() { -sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer; - // Init Layers for (int i=0; iBackLayer) { sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->BackLayer); - CLayerTile *NewLayer=new ("Back Layer") CLayerBack(Layer, TileBank); -// ((CLayerBack*)NewLayer)->SetFrames(LvlTable[s_globalLevelSelectThing].Spr0,LvlTable[s_globalLevelSelectThing].Spr1); + CLayerTile *NewLayer=new ("Back Layer") CLayerBack(LevelHdr,Layer); NewLayer->init(MapPos,3); TileLayers[CLayerTile::LAYER_TILE_TYPE_BACK]=NewLayer; } @@ -545,7 +221,7 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer; if (LevelHdr->MidLayer) { sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->MidLayer); - CLayerTile *NewLayer=new ("Mid Layer") CLayerTile(Layer, TileBank); + CLayerTile *NewLayer=new ("Mid Layer") CLayerTile(LevelHdr,Layer); NewLayer->init(MapPos,2); TileLayers[CLayerTile::LAYER_TILE_TYPE_MID]=NewLayer; } @@ -554,7 +230,7 @@ sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer; if (LevelHdr->ActionLayer) { sLayerHdr *Layer=(sLayerHdr*)MakePtr(LevelHdr,LevelHdr->ActionLayer); - CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(Layer, TileBank); + CLayerTile *NewLayer=new ("Action Layer") CLayerTile3d(LevelHdr,Layer); NewLayer->init(MapPos,0); TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]=NewLayer; } @@ -654,7 +330,7 @@ PAUL_DBGMSG("%d triggers",TriggerCount); } /*****************************************************************************/ -void CLevel::shutdown(bool CleanUp) +void CLevel::shutdown() { for (int i=0; iFirstPrim); } - +*/ for (int i=0; irender(); @@ -734,7 +405,6 @@ void CLevel::think(int _frames) /*****************************************************************************/ DVECTOR CLevel::getMapSize() { -sLvlHdr *LevelHdr=(sLvlHdr*)LevelBuffer; DVECTOR size; sLayerHdr *layer; diff --git a/source/level/level.h b/source/level/level.h index 8e6ce73cc..76c1b37e8 100644 --- a/source/level/level.h +++ b/source/level/level.h @@ -14,8 +14,8 @@ // Nope.. it's shrunk again! :) struct sLvlTab { - FileEquate LevelInfo; - FileEquate TileBank,Level,Tex; + u16 Chapter,Level; + FileEquate LevelFilename,TexFilename; int songId; }; @@ -26,8 +26,8 @@ class CLevel public: CLevel(); // Scene Handlers - void init(); - void shutdown(bool CleanUp); + void init(int LevelNo); + void shutdown(); void render(); void think(int _frames); @@ -43,14 +43,11 @@ public: int GetNextLevel(int Lvl); private: - void initLayers(); - void initNewLevel(sLvlTab *LevelDat); - void DisplayLoadingScreen(); + void initLayers(); + void DisplayLoadingScreen(sLvlTab *lvlTab); - sLevelInfo *LevelInfo; - u8 *PakBuffer,*LevelBuffer; + sLvlHdr *LevelHdr; - sTile *TileBank; static DVECTOR MapPos; static DVECTOR s_playerSpawnPos; diff --git a/source/system/dbg.cpp b/source/system/dbg.cpp index 10790f936..2b0778bb7 100644 --- a/source/system/dbg.cpp +++ b/source/system/dbg.cpp @@ -266,7 +266,7 @@ void DoAssert( const char * Txt, const char * file, const int line ) F.setJustification( FontBank::JUST_CENTRE ); F.setOt( 0 ); - ClearNTag(OtPtr, MAX_OT); + InitOTag(OtPtr, MAX_OT); F.print( (512 >> 1), (256 >> 1), Text ); VSync(0); @@ -274,7 +274,7 @@ void DoAssert( const char * Txt, const char * file, const int line ) PrimDisplay(); while(DrawSync(1)); - ClearNTag(OtPtr, MAX_OT); + InitOTag(OtPtr, MAX_OT); F.print( (512 >> 1), (256 >> 1), Text ); VSync(0); diff --git a/tools/Data/bin/MkLevel.exe b/tools/Data/bin/MkLevel.exe index f40badd1a796941928c40121afbb818ca0496eb5..82ab1f499240fbc9f4468c83783851c94adc23c6 100644 GIT binary patch delta 75994 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 delta 92882 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 diff --git a/tools/Data/include/dstructs.h b/tools/Data/include/dstructs.h index ddef20d42..6680ef22a 100644 --- a/tools/Data/include/dstructs.h +++ b/tools/Data/include/dstructs.h @@ -84,10 +84,11 @@ struct sTri u8 uv0[2]; // 2 u16 Clut; // 2 u8 uv1[2]; // 2 - u16 TPage; // 2 (Or material) + u16 TPage; // 2 u8 uv2[2]; // 2 u16 P2; // 2 -}; // 16 + u32 OTOfs; // 4 +}; // 20 //--------------------------------------------------------------------------- struct sQuad @@ -99,18 +100,25 @@ struct sQuad u8 uv0[2]; // 2 u16 Clut; // 2 u8 uv1[2]; // 2 - u16 TPage; // 2 (Or material) + u16 TPage; // 2 u8 uv2[2]; // 2 u8 uv3[2]; // 2 -}; // 20 + u32 OTOfs; // 4 +}; // 24 //*************************************************************************** //*** Game Types and Headers ************************************************ //*************************************************************************** // Tiles -typedef u16 sTileMapElem; // Tile or Tri Start +//typedef u16 sTileMapElem; +struct sTileMapElem +{ + u16 Tile; +// u16 LightIdx; +}; +/* struct sTile { // 2d Tile @@ -118,62 +126,26 @@ struct sTile u16 Clut; // 2 u16 TPage; // 2 u16 Pad; // :o( need this? // 2 - +}; // 8 +*/ +struct sTile2d +{ +// 2d Tile + u8 u0,v0; // 2 + u16 Clut; // 2 + u16 TPage; // 2 + u16 Pad; // :o( need this? // 2 }; // 8 -//--------------------------------------------------------------------------- -struct sTileTri +struct sTile3d { - u16 P0; // 2 - u16 P1; // 2 - u16 P2; // 2 - u16 Mat; // 2 -}; // 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 - +// 3d Tile + u16 TriStart; + u16 TriCount; + u16 QuadStart; + u16 QuadCount; +}; // 8 //*************************************************************************** -// Level Info - -struct sLevelInfo -{ - u32 MaxPakSize; - u32 MaxLvlSize; - u16 ActorCount; - u16 Pad; -// u16 ActorTypeList..... -}; - -//--------------------------------------------------------------------------- // Layers struct sLayerHdr { @@ -185,19 +157,6 @@ struct sLayerHdr /*int TileData[W][H];....*/ }; -//--------------------------------------------------------------------------- -struct sLayer3d -{ - u16 TriCount; - u16 QuadCount; - u16 VtxCount; - u16 Pad; - - u32 TriList; - u32 QuadList; - u32 VtxList; -}; - //--------------------------------------------------------------------------- // Shade Layer struct sLayerShade @@ -236,9 +195,14 @@ struct sLvlHdr u32 PlatformList; u32 TriggerList; u32 FXList; - u32 Pad6; - u32 Pad7; + u16 PlayerStartX,PlayerStartY; + + sTile2d *TileBank2d; + sTile3d *TileBank3d; + sTri *TriList; + sQuad *QuadList; + sVtx *VtxList; }; //***************************************************************************