diff --git a/Graphics/levels/Chapter01/Level02/Level02.MEX b/Graphics/levels/Chapter01/Level02/Level02.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter01/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter01/Level03/Level03.MEX b/Graphics/levels/Chapter01/Level03/Level03.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter01/Level03/Level03.MEX differ diff --git a/Graphics/levels/Chapter02/Level02/Level02.MEX b/Graphics/levels/Chapter02/Level02/Level02.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter02/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter02/Level03/Level03.MEX b/Graphics/levels/Chapter02/Level03/Level03.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter02/Level03/Level03.MEX differ diff --git a/Graphics/levels/Chapter02/Level04/Level04.MEX b/Graphics/levels/Chapter02/Level04/Level04.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter02/Level04/Level04.MEX differ diff --git a/Graphics/levels/Chapter03/Level01/Level01.MEX b/Graphics/levels/Chapter03/Level01/Level01.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter03/Level01/Level01.MEX differ diff --git a/Graphics/levels/Chapter03/Level02/Level02.MEX b/Graphics/levels/Chapter03/Level02/Level02.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter03/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter03/Level04/Level04.MEX b/Graphics/levels/Chapter03/Level04/Level04.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter03/Level04/Level04.MEX differ diff --git a/Graphics/levels/Chapter04/Level01/Level01.MEX b/Graphics/levels/Chapter04/Level01/Level01.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter04/Level01/Level01.MEX differ diff --git a/Graphics/levels/Chapter04/Level03/Level03.MEX b/Graphics/levels/Chapter04/Level03/Level03.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter04/Level03/Level03.MEX differ diff --git a/Graphics/levels/Chapter04/Level04/Level04.MEX b/Graphics/levels/Chapter04/Level04/Level04.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter04/Level04/Level04.MEX differ diff --git a/Graphics/levels/Chapter05/Level01/Level01.MEX b/Graphics/levels/Chapter05/Level01/Level01.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter05/Level01/Level01.MEX differ diff --git a/Graphics/levels/Chapter05/Level02/Level02.MEX b/Graphics/levels/Chapter05/Level02/Level02.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter05/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter05/Level03/Level03.MEX b/Graphics/levels/Chapter05/Level03/Level03.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter05/Level03/Level03.MEX differ diff --git a/Graphics/levels/Chapter05/Level04/Level04.MEX b/Graphics/levels/Chapter05/Level04/Level04.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter05/Level04/Level04.MEX differ diff --git a/Graphics/levels/Chapter06/Level01/Level01.MEX b/Graphics/levels/Chapter06/Level01/Level01.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter06/Level01/Level01.MEX differ diff --git a/Graphics/levels/Chapter06/Level02/Level02.MEX b/Graphics/levels/Chapter06/Level02/Level02.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter06/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter06/Level03/Level03.MEX b/Graphics/levels/Chapter06/Level03/Level03.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter06/Level03/Level03.MEX differ diff --git a/Graphics/levels/Chapter06/Level04/Level04.MEX b/Graphics/levels/Chapter06/Level04/Level04.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter06/Level04/Level04.MEX differ diff --git a/Graphics/levels/Chapter06/Level05/Level05.MEX b/Graphics/levels/Chapter06/Level05/Level05.MEX new file mode 100644 index 000000000..c94f7e0fa Binary files /dev/null and b/Graphics/levels/Chapter06/Level05/Level05.MEX differ 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 f40badd1a..82ab1f499 100644 Binary files a/tools/Data/bin/MkLevel.exe and b/tools/Data/bin/MkLevel.exe differ 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; }; //***************************************************************************