/*========================================================================= * Snasnd.c : Save & Read the sound pointers * * Version 1.0 * Creation date 03/09/97 * Revision date * * (c) Ubi R&D 1997 *=======================================================================*/ #include "ACP_Base.h" #include "ToolsCPA.h" #include "SCR.h" #include "SND.h" #include "SNA.h" #include "acp_opfi.h" FILE *g_xSoundFile; // Sound pointers file /*----------------------------------------------------------------------------- * Description : Open sound pointers file *----------------------------------------------------------------------------- * Input : Name of the file * Output : None *----------------------------------------------------------------------------- * Creation date : 03/09/97 Author : Michaël *----------------------------------------------------------------------------- * Modification date : Modification Author : * Modifications : *---------------------------------------------------------------------------*/ void SNA_fn_xWriteOpenSoundTableFile(char *szFileName) { SNA_fn_vInitArrays(); g_xSoundFile=fopen(szFileName,"wb"); } void SNA_fn_xReadOpenSoundTableFile(char *szFileName) { SNA_fn_vInitArrays(); //g_xSoundFile=fopen(szFileName,"rb"); Multi-install ACP_M_OPENFILE(fopen,g_xSoundFile,NULL,szFileName,(szFileName,"rb")); SNA_M_LoadUsedRelocationTable(); } /*----------------------------------------------------------------------------- * Description : Close sound pointers file *----------------------------------------------------------------------------- * Input : Name of the file * Output : None *----------------------------------------------------------------------------- * Creation date : 03/09/97 Author : Michaël *----------------------------------------------------------------------------- * Modification date : Modification Author : * Modifications : *---------------------------------------------------------------------------*/ void SNA_fn_vCloseSoundTableFile() { SNA_M_FreeRelocationTable(); fclose(g_xSoundFile); } /*----------------------------------------------------------------------------- * Description : Write a Id/pointer sound couple in file *----------------------------------------------------------------------------- * Input : Name of the file * Output : None *----------------------------------------------------------------------------- * Creation date : 03/09/97 Author : Michaël *----------------------------------------------------------------------------- * Modification date : Modification Author : * Modifications : *---------------------------------------------------------------------------*/ void SNA_fn_vWriteSoundEntryInSoundTableFile(unsigned long ulId,unsigned long ulPointerAdr) { if (SNA_fn_ucGetLoadType()==SNA_SAVE_SNAPSHOT) { fwrite(&ulId,4,1,g_xSoundFile); fwrite(&ulPointerAdr,4,1,g_xSoundFile); } } /*----------------------------------------------------------------------------- * Description : Read and update all sound pointers *----------------------------------------------------------------------------- * Input : Name of the file * Output : None *----------------------------------------------------------------------------- * Creation date : 03/09/97 Author : Michaël *----------------------------------------------------------------------------- * Modification date : Modification Author : * Modifications : *---------------------------------------------------------------------------*/ void SNA_fn_vReadAndUpdateSoundPointers(char *szFileName) { unsigned long ulId,ulOldAdrPointer,ulNewPointer; unsigned long *p_ulSound; /* unsigned long j; */ struct tdstPtr_ *p_stCurrentPtr = &SNA_g_PTCRelocationTable->p_stBloc[0].p_stPtr[0]; while (!feof(g_xSoundFile)) { if(!fread(&ulId,4,1,g_xSoundFile)) { #ifdef DEBUG OutputDebugString("\n End of SoundFile !!!"); #endif break; } if(!fread(&ulOldAdrPointer,4,1,g_xSoundFile)) { #ifdef DEBUG OutputDebugString("\n End of SoundFile !!!"); #endif break; } ulNewPointer=(unsigned long)SND_fn_pGetBinEvent(ulId); /* for (j=0;jp_stBloc[0].ulSize;j++) { unsigned char ucModuleNumber,ucBlocNumber; ucModuleNumber=SNA_g_PTCRelocationTable->p_stBloc[0].p_stPtr[j].ucTargetModule; ucBlocNumber=SNA_g_PTCRelocationTable->p_stBloc[0].p_stPtr[j].ucTargetBlock; if (((unsigned long)p_ulSound==SNA_g_PTCRelocationTable->p_stBloc[0].p_stPtr[j].p_vPtr)&&(g_a_bIsBlocRelocated[ucModuleNumber][ucBlocNumber])) { ((unsigned long)p_ulSound)+=g_a_ulOffset[ucModuleNumber][ucBlocNumber]; } } */ assert( p_stCurrentPtr->p_vPtr == ulOldAdrPointer ); ulOldAdrPointer += g_a_ulOffset[p_stCurrentPtr->ucTargetModule][p_stCurrentPtr->ucTargetBlock]; p_stCurrentPtr ++; p_ulSound=(unsigned long *)ulOldAdrPointer; *p_ulSound=ulNewPointer; } fclose(g_xSoundFile); }