Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MUSICAL_DISTRIBUTE_DATA* MUSICAL_SYSTEM_InitDistributeData( HEAPID workHeapId )
- {
- MUSICAL_DISTRIBUTE_DATA *distData = GFL_HEAP_AllocMemory( workHeapId , sizeof( MUSICAL_DISTRIBUTE_DATA ) );
- distData->programData = NULL;
- distData->messageData = NULL;
- distData->scriptData = NULL;
- distData->midiData = NULL;
- distData->midiSeqData = NULL;
- distData->midiBnkData = NULL;
- distData->midiWaveData = NULL;
- return distData;
- }
- void MUSICAL_SYSTEM_TermDistributeData( MUSICAL_DISTRIBUTE_DATA *distData )
- {
- if( distData->programData != NULL )
- {
- GFL_HEAP_FreeMemory( distData->programData );
- }
- if( distData->messageData != NULL )
- {
- GFL_HEAP_FreeMemory( distData->messageData );
- }
- if( distData->scriptData != NULL )
- {
- GFL_HEAP_FreeMemory( distData->scriptData );
- }
- //Seq・Bnk・Waveはパックしてある
- if( distData->midiData != NULL )
- {
- GFL_HEAP_FreeMemory( distData->midiData );
- }
- GFL_HEAP_FreeMemory( distData );
- }
- void MUSICAL_SYSTEM_LoadDistributeData( MUSICAL_DISTRIBUTE_DATA *distData , SAVE_CONTROL_WORK *saveWork , GAMEDATA *gamedata, const u8 programNo , HEAPID heapId )
- {
- ARCHANDLE *arcHandle;
- MUSICAL_DIST_SAVE *distSave;
- MUS_DIST_MIDI_HEADER midiSizeHeader;
- MUS_DIST_MIDI_HEADER *pMidiSizeHeader;
- distData->programNo = programNo;
- if( programNo >= MUS_PROGRAM_LOCAL_NUM )
- {
- void *musArc;
- u32 arcSize;
- distSave = MUSICAL_DIST_SAVE_LoadData( gamedata , heapId );
- musArc = MUSICAL_DIST_SAVE_GetMusicalArc( distSave );
- arcSize = MUSICAL_DIST_SAVE_GetMusicalArcSize( distSave );
- arcHandle = GFL_ARC_OpenDataHandleByMemory( musArc , arcSize , GFL_HEAP_LOWID(heapId) );
- }
- else
- {
- arcHandle = GFL_ARC_OpenDataHandle( ARCID_MUSICAL_PROGRAM_01+programNo , GFL_HEAP_LOWID(heapId) );
- }
- distData->programData = GFL_ARCHDL_UTIL_LoadEx( arcHandle , MUSICAL_ARCDATAID_PROGDATA , FALSE , heapId , &distData->programDataSize );
- distData->messageData = GFL_ARCHDL_UTIL_LoadEx( arcHandle , MUSICAL_ARCDATAID_GMMDATA , FALSE , heapId , &distData->messageDataSize );
- distData->scriptData = GFL_ARCHDL_UTIL_LoadEx( arcHandle , MUSICAL_ARCDATAID_SCRIPTDATA , FALSE , heapId , &distData->scriptDataSize );
- midiSizeHeader.seqSize = GFL_ARC_GetDataSizeByHandle( arcHandle , MUSICAL_ARCDATAID_SSEQDATA );
- midiSizeHeader.bankSize = GFL_ARC_GetDataSizeByHandle( arcHandle , MUSICAL_ARCDATAID_SBNKDATA );
- midiSizeHeader.waveSize = GFL_ARC_GetDataSizeByHandle( arcHandle , MUSICAL_ARCDATAID_SWAVDATA );
- distData->midiDataSize = sizeof(MUS_DIST_MIDI_HEADER) + midiSizeHeader.seqSize + midiSizeHeader.bankSize + midiSizeHeader.waveSize;
- distData->midiData = GFL_HEAP_AllocClearMemory( heapId , distData->midiDataSize );
- pMidiSizeHeader = distData->midiData;
- distData->midiSeqData = (void*)((u32)distData->midiData + sizeof(MUS_DIST_MIDI_HEADER));
- distData->midiBnkData = (void*)((u32)distData->midiData + sizeof(MUS_DIST_MIDI_HEADER) + midiSizeHeader.seqSize );
- distData->midiWaveData = (void*)((u32)distData->midiData + sizeof(MUS_DIST_MIDI_HEADER) + midiSizeHeader.seqSize + midiSizeHeader.bankSize );
- pMidiSizeHeader->seqSize = midiSizeHeader.seqSize;
- pMidiSizeHeader->bankSize = midiSizeHeader.bankSize;
- pMidiSizeHeader->waveSize = midiSizeHeader.waveSize;
- GFL_ARC_LoadDataByHandle( arcHandle , MUSICAL_ARCDATAID_SSEQDATA , distData->midiSeqData );
- GFL_ARC_LoadDataByHandle( arcHandle , MUSICAL_ARCDATAID_SBNKDATA , distData->midiBnkData );
- GFL_ARC_LoadDataByHandle( arcHandle , MUSICAL_ARCDATAID_SWAVDATA , distData->midiWaveData );
- GFL_ARC_CloseDataHandle( arcHandle );
- if( programNo >= MUS_PROGRAM_LOCAL_NUM )
- {
- MUSICAL_DIST_SAVE_UnloadData( distSave );
- }
- MUS_TPrintf("MusicalSystem LoadMidiData[%d][%d][%d].\n",pMidiSizeHeader->seqSize,pMidiSizeHeader->bankSize,pMidiSizeHeader->waveSize);
- }
Advertisement
Add Comment
Please, Sign In to add comment