Files
lba1-classic/SOURCES/DISKFUNC.C

229 lines
7.3 KiB
C

#include "c_extern.h"
#include "direct.h"
#include <dos.h>
UBYTE *PtrSce ;
UBYTE *PtrScene ;
#define GET_BYTE (*PtrSce++)
#define GET_WORD (*(WORD*)PtrSce) ; PtrSce+=2
/*══════════════════════════════════════════════════════════════════════════*
█▀▀▀▄ █ ██▀▀▀ █ ▄▀ █▀▀▀▀ █ █ ██▄ █ █▀▀▀▀
██ █ ██ ▀▀▀▀█ ██▀▄ ██▀▀ ██ █ ██▀██ ██
▀▀▀▀ ▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀▀▀▀ ▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀▀▀▀
*══════════════════════════════════════════════════════════════════════════*/
/*──────────────────────────────────────────────────────────────────────────*/
void GetDiskEnv( UBYTE *progpath )
{
_splitpath( (char*)progpath, ProgDrive, ProgDir, Name, Ext ) ;
getcwd( OrgDir, _MAX_DIR ) ;
_dos_getdrive( &OrgDrive ) ;
}
void RestoreDiskEnv()
{
ULONG total ;
_dos_setdrive( OrgDrive, &total ) ;
chdir( OrgDir ) ;
}
/*══════════════════════════════════════════════════════════════════════════*
██▀▀▀ █▀▀▀▀ █▀▀▀▀ ██▄ █ █▀▀▀▀ █▀▀▀▀ █ █ █▀▀▀▀
▀▀▀▀█ ██ ██▀▀ ██▀██ ██▀▀ ██▀▀ ██ ██ ██▀▀
▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀▀
*══════════════════════════════════════════════════════════════════════════*/
/*──────────────────────────────────────────────────────────────────────────*/
WORD LoadScene( WORD numscene )
{
T_OBJET *ptrobj ;
WORD n, info3 ;
UBYTE string[256] ;
UBYTE mess[256] ;
WORD sizetoload ;
WORD indexfile3d ;
// PtrScene = PtrSce = LoadMalloc_HQR( PATH_RESSOURCE"scene.hqr", numscene ) ;
HQRM_Load( PATH_RESSOURCE"scene.hqr", numscene, &PtrScene ) ;
CHECK_MEMORY
PtrSce = PtrScene ;
if( !PtrSce )
{
Message( "Scene.Hqr introuvable ou pas assez mem", TRUE ) ;
}
// info world: INFO_WORLD
NewCube = numscene ;
Island = GET_BYTE ;
GameOverCube = GET_BYTE ;
n = GET_WORD ;
n = GET_WORD ;
// ListHoloObj[NUM_PERSO].Alpha = GET_WORD ;
// ListHoloObj[NUM_PERSO].Beta = GET_WORD ;
// ListHoloObj[NUM_PERSO].Size = GET_WORD ;
// ambiance: AMBIANCE
AlphaLight = GET_WORD ;
BetaLight = GET_WORD ;
SampleAmbiance[0] = GET_WORD ;
SampleRepeat[0] = GET_WORD ;
SampleRnd[0] = GET_WORD ;
SampleAmbiance[1] = GET_WORD ;
SampleRepeat[1] = GET_WORD ;
SampleRnd[1] = GET_WORD ;
SampleAmbiance[2] = GET_WORD ;
SampleRepeat[2] = GET_WORD ;
SampleRnd[2] = GET_WORD ;
SampleAmbiance[3] = GET_WORD ;
SampleRepeat[3] = GET_WORD ;
SampleRnd[3] = GET_WORD ;
SecondMin = GET_WORD ;
SecondEcart = GET_WORD ;
CubeJingle = GET_BYTE ;
// PlayMidiFile( CubeJingle ) ;
// hero inits: HERO_START
ptrobj = ListObjet ;
CubeStartX = GET_WORD ;
CubeStartY = GET_WORD ;
CubeStartZ = GET_WORD ;
sizetoload = GET_WORD ;
ptrobj->PtrTrack = PtrSce ;
PtrSce += sizetoload ;
sizetoload = GET_WORD ;
ptrobj->PtrLife = PtrSce ;
PtrSce += sizetoload ;
ptrobj++ ;
// objets: OBJECT
NbObjets = GET_WORD ;
for( n=1; n<NbObjets; n++, ptrobj++ )
{
InitObject( n ) ;
ptrobj->Flags = GET_WORD ;
indexfile3d = GET_WORD ;
if( !(ptrobj->Flags & SPRITE_3D) )
{
HQRM_Load( PATH_RESSOURCE"File3D.hqr", indexfile3d, &ptrobj->PtrFile3D ) ;
CHECK_MEMORY
/* ptrobj->PtrFile3D =
LoadMalloc_HQR(
PATH_RESSOURCE"File3D.hqr",
indexfile3d ) ;
*/
}
ptrobj->GenBody = GET_BYTE ;
ptrobj->GenAnim = GET_BYTE ;
/*
if( n==5 )
{
CoulText( 15,0 ) ;
Text( 10, 300, "obj 5 org anim: %d", ptrobj->GenAnim ) ;
}
*/
ptrobj->Sprite = GET_WORD ;
ptrobj->OldPosX = ptrobj->PosObjX = GET_WORD ;
ptrobj->OldPosY = ptrobj->PosObjY = GET_WORD ;
ptrobj->OldPosZ = ptrobj->PosObjZ = GET_WORD ;
ptrobj->HitForce = GET_BYTE ;
ptrobj->OptionFlags = GET_WORD ;
ptrobj->OptionFlags &= ~EXTRA_GIVE_NOTHING ;
ptrobj->Beta = GET_WORD ;
ptrobj->SRot = GET_WORD ;
ptrobj->Move = GET_WORD ;
ptrobj->Info = GET_WORD ;
ptrobj->Info1 = GET_WORD ;
ptrobj->Info2 = GET_WORD ;
ptrobj->Info3 = GET_WORD ;
ptrobj->NbBonus = GET_BYTE ;
ptrobj->CoulObj = GET_BYTE ;
ptrobj->Armure = GET_BYTE ;
ptrobj->LifePoint = GET_BYTE ;
sizetoload = GET_WORD ;
ptrobj->PtrTrack = PtrSce ;
PtrSce = PtrSce + sizetoload ;
sizetoload = GET_WORD ;
ptrobj->PtrLife = PtrSce ;
PtrSce = PtrSce + sizetoload ;
}
// zone declechement: ZONE
NbZones = GET_WORD ;
ListZone = (T_ZONE*)PtrSce ;
PtrSce += NbZones * 12 * 2 ;
// point track: TRACK
NbBrickTrack = GET_WORD ;
ListBrickTrack = (T_TRACK*)PtrSce ;
return TRUE ;
}
/*══════════════════════════════════════════════════════════════════════════*
█▀▀▀▄ █▀▀▀▀ █▀▀█ █ █ █▀▀▀▀
██ █ ██▀▀ ██▀▀█ ██ █ ██ ▀█
▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀
*══════════════════════════════════════════════════════════════════════════*/
/*──────────────────────────────────────────────────────────────────────────*/
/*
void *LoadTestMalloc( char *filename )
{
void *ptr ;
UBYTE string[256] ;
ptr = LoadMalloc( filename ) ;
if( !ptr )
{
strcpy( string, "ARG ! Mem:" ) ;
strcat( string, Itoa( (ULONG)Malloc(-1) ) ) ;
strcat( string, " fichier:" ) ;
strcat( string, filename ) ;
Message( string, TRUE ) ;
}
return ptr ;
}
*/
/*══════════════════════════════════════════════════════════════════════════*/
/*══════════════════════════════════════════════════════════════════════════*/