reman3/Rayman_X/cpa/tempgrp/GAM/zememCB.c

210 lines
7.3 KiB
C

#include "ToolsCPA.h"
#include "Structur/ErrGame.h"
#include "Structur/MemGame.h"
#include "Structur/GameScpt.h"
#include "Structur/EngMode.h"
#include "Options/ActBlMal.h"
#include "LSMem.h"
#include "Basic.h"
#include "ZeMem.h"
#ifdef GAM_USE_SNA
#include "sna.h"
#endif /* GAM_USE_SNA */
/*XB980825*/
#ifdef U64
extern unsigned long g_ulTotalMemoryUsed;
#endif /* U64 */
/*End XB*/
#include "ldt.h"
/*****************************************************************
Function name : fn_iLoadMemoryDescription
Description :
Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM
Creation Date : 13-Oct-98
Modified :
Return type : int
Argument : LDT_tdst_Link *pLink
*****************************************************************/
int fn_iLoadMemoryDescription( LDT_tdst_Link *pLink )
{
LDT_tdeParseResult result=ParseResult_BeginSection;
static int iFirst=0;
int i;
void *vTab[50];
short wNbMalloc=0;
if (SNA_M_bTestSaveGameMemDesc() || SNA_M_bTestSaveLevelMemDesc() )
SNA_fn_vWriteNoParamEntryToCurrentDscFile( SNA_C_ul_MemoryDescTitle );
while((result = LDT_GetNextEntry()) != ParseResult_EndSection )
{
switch( result )
{
case ParseResult_Entry: /* an entry */
{
char *szEntry=LDT_szGetEntryName();
if(!strcmp(szEntry,"Gap"))
{
vTab[wNbMalloc]=GlobalAlloc(GMEM_FIXED,(unsigned long)atol(LDT_szGetParam(1)));
wNbMalloc++;
}
else
switch(*(long*)(szEntry+1))
{
case 'Fema': /*"GameFixMemorySize"*/
Mmg_M_InitBlock(Game,E_ucGameFixMemory,(unsigned long)fn_lAToI(LDT_szGetParam(1)));
GAM_fn_vSetGameMemoryInFix();
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_GAMFixMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'Lema': /*"GameLevelMemorySize"*/
if((iFirst<2)||(SNA_fn_ucGetLoadType()==SNA_LOAD_SCRIPT))
Mmg_M_InitBlock(Game,E_ucGameLevelMemory,(unsigned long)fn_lAToI(LDT_szGetParam(1)));
if(iFirst>0)
GAM_fn_vSetGameMemoryInLevel();
if ( SNA_M_bTestSaveLevelMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_GAMLevelMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'Mtno': /*"FontMemorySize"*/
FON_fn_vFirstInitFONMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_FontMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'iFIA': /*"SAIFixMemorySize"*/
SAI_fn_vInitFixMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
SAI_fn_vSAIUseFixMemory();
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_SAIFixMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'eMIA': /*"SAIMemorySize"*/
SAI_fn_vInitLevelMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
SAI_fn_vSAIUseLevelMemory();
if ( SNA_M_bTestSaveLevelMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_SAILevelMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'iFPM': /*"TMPFixMemory"*/
TMP_fn_vCreateFixMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
/* TMP_fn_vSetInFix();*/
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_TMPFixMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
/*
case 'eLPM': //"TMPLevelMemory"
TMP_fn_vCreateLevelMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
TMP_fn_vSetInLevel();
if ( SNA_M_bTestSaveLevelMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_TMPLevelMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
*/
case 'xiFI': /*"AIFixMemory"*/
fn_vInitAIFixMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
AI_fn_vAIUseFixMemory();
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_AIFixMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'meMI': /*"AIMemory"*/
if((iFirst<2)||(SNA_fn_ucGetLoadType()==SNA_LOAD_SCRIPT))
fn_vInitAILevelMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
AI_fn_vAIUseLevelMemory();
if ( SNA_M_bTestSaveLevelMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_AILevelMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'eTPC': /*"ACPTextMemory"*/
GEO_xCreateMemoryChannel(0,(unsigned long)fn_lAToI(LDT_szGetParam(1)));
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_ACPTextMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'iFPC': /*"ACPFixMemory"*/
GEO_xCreateMemoryChannel(ACP_FixMemoryChannel,(unsigned long)fn_lAToI(LDT_szGetParam(1)));
GEO_xSelectMemoryChannel(ACP_FixMemoryChannel);
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_ACPFixMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'eMPC': /*"ACPMemory"*/
if((iFirst<2)||(SNA_fn_ucGetLoadType()==SNA_LOAD_SCRIPT))
GEO_xCreateMemoryChannel(ACP_LevelMemoryChannel,(unsigned long)fn_lAToI(LDT_szGetParam(1)));
if(iFirst>0)
GEO_xSelectMemoryChannel(ACP_LevelMemoryChannel);
if ( SNA_M_bTestSaveLevelMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_ACPLevelMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'tiso': /*"PositionMemorySize"*/
POS_fn_vInitPosMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_PositionMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'pirc': /*"ScriptMemorySize"*/
g_SCR_a9MemTable[fn_lAToI(LDT_szGetParam(1))] = fn_lAToI(LDT_szGetParam(2));
SCR_fn_v_Mem_InitWithMemLevel(g_SCR_a9MemTable);
if ( SNA_M_bTestSaveGameMemDesc() || SNA_M_bTestSaveLevelMemDesc() )
{
SNA_fn_vWrite2LongEntryToCurrentDscFile
(
SNA_C_ul_ScriptMemory,
(unsigned long)fn_lAToI(LDT_szGetParam(1)),
(unsigned long)fn_lAToI(LDT_szGetParam(2))
);
}
break;
case 'Sspi': /*"LipsSynchMemory"*/
LSY_fn_vFirstInitLSYMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
break;
case 'eMTP': /*"IPTMemorySize" */
IPT_fn_vInitMemory((unsigned long)fn_lAToI(LDT_szGetParam(1)));
if ( SNA_M_bTestSaveGameMemDesc() )
SNA_fn_vWriteLongEntryToCurrentDscFile ( SNA_C_ul_IPTMemory, (unsigned long)fn_lAToI(LDT_szGetParam(1)) );
break;
case 'eMes': /*"UseMemorySnapshot"*/
SNA_fn_vSetLoadType((unsigned char)fn_lAToI(LDT_szGetParam(1)));
break;
default:
M_GameInformationError(E_uwGameScriptCallBackDescriptionUnknownAction);
break;
}
}
}
}
for(i=0;i<wNbMalloc;i++)
{
GlobalFree(vTab[i]);
}
wNbMalloc=0;
iFirst++;
if( (iFirst>1)&&(SNA_fn_ucGetLoadType()==SNA_LOAD_SNAPSHOT) )
{
AI_fn_vAIUseLevelMemory();
GEO_xSelectMemoryChannel(ACP_LevelMemoryChannel);
GAM_fn_vSetGameMemoryInLevel();
}
if ( SNA_M_bTestSaveGameMemDesc() || SNA_M_bTestSaveLevelMemDesc() )
SNA_fn_vWriteNoParamEntryToCurrentDscFile ( SNA_C_ulEndOfDescSection );
return 0;
}