Kurausukun

Untitled

Jul 26th, 2025
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.85 KB | None | 0 0
  1. MUSICAL_DISTRIBUTE_DATA* MUSICAL_SYSTEM_InitDistributeData( HEAPID workHeapId )
  2. {
  3.   MUSICAL_DISTRIBUTE_DATA *distData = GFL_HEAP_AllocMemory( workHeapId , sizeof( MUSICAL_DISTRIBUTE_DATA ) );
  4.  
  5.   distData->programData = NULL;
  6.   distData->messageData = NULL;
  7.   distData->scriptData = NULL;
  8.   distData->midiData = NULL;
  9.   distData->midiSeqData = NULL;
  10.   distData->midiBnkData = NULL;
  11.   distData->midiWaveData = NULL;
  12.  
  13.   return distData;
  14. }
  15.  
  16. void MUSICAL_SYSTEM_TermDistributeData( MUSICAL_DISTRIBUTE_DATA *distData )
  17. {
  18.   if( distData->programData != NULL )
  19.   {
  20.     GFL_HEAP_FreeMemory( distData->programData );
  21.   }
  22.   if( distData->messageData != NULL )
  23.   {
  24.     GFL_HEAP_FreeMemory( distData->messageData );
  25.   }
  26.   if( distData->scriptData != NULL )
  27.   {
  28.     GFL_HEAP_FreeMemory( distData->scriptData );
  29.   }
  30.   //Seq・Bnk・Waveはパックしてある
  31.   if( distData->midiData != NULL )
  32.   {
  33.     GFL_HEAP_FreeMemory( distData->midiData );
  34.   }
  35.  
  36.   GFL_HEAP_FreeMemory( distData );
  37. }
  38.  
  39. void MUSICAL_SYSTEM_LoadDistributeData( MUSICAL_DISTRIBUTE_DATA *distData , SAVE_CONTROL_WORK *saveWork , GAMEDATA *gamedata, const u8 programNo , HEAPID heapId )
  40. {
  41.   ARCHANDLE *arcHandle;
  42.   MUSICAL_DIST_SAVE *distSave;
  43.   MUS_DIST_MIDI_HEADER midiSizeHeader;
  44.   MUS_DIST_MIDI_HEADER *pMidiSizeHeader;
  45.   distData->programNo = programNo;
  46.   if( programNo >= MUS_PROGRAM_LOCAL_NUM )
  47.   {
  48.     void *musArc;
  49.     u32 arcSize;
  50.     distSave = MUSICAL_DIST_SAVE_LoadData( gamedata , heapId );
  51.     musArc = MUSICAL_DIST_SAVE_GetMusicalArc( distSave );
  52.     arcSize = MUSICAL_DIST_SAVE_GetMusicalArcSize( distSave );
  53.     arcHandle = GFL_ARC_OpenDataHandleByMemory( musArc , arcSize , GFL_HEAP_LOWID(heapId) );
  54.   }
  55.   else
  56.   {
  57.     arcHandle = GFL_ARC_OpenDataHandle( ARCID_MUSICAL_PROGRAM_01+programNo , GFL_HEAP_LOWID(heapId) );
  58.   }
  59.   distData->programData = GFL_ARCHDL_UTIL_LoadEx( arcHandle , MUSICAL_ARCDATAID_PROGDATA , FALSE , heapId , &distData->programDataSize );
  60.   distData->messageData = GFL_ARCHDL_UTIL_LoadEx( arcHandle , MUSICAL_ARCDATAID_GMMDATA , FALSE , heapId , &distData->messageDataSize );
  61.   distData->scriptData = GFL_ARCHDL_UTIL_LoadEx( arcHandle , MUSICAL_ARCDATAID_SCRIPTDATA , FALSE , heapId , &distData->scriptDataSize );
  62.  
  63.   midiSizeHeader.seqSize  = GFL_ARC_GetDataSizeByHandle( arcHandle , MUSICAL_ARCDATAID_SSEQDATA );
  64.   midiSizeHeader.bankSize = GFL_ARC_GetDataSizeByHandle( arcHandle , MUSICAL_ARCDATAID_SBNKDATA );
  65.   midiSizeHeader.waveSize = GFL_ARC_GetDataSizeByHandle( arcHandle , MUSICAL_ARCDATAID_SWAVDATA );
  66.  
  67.   distData->midiDataSize = sizeof(MUS_DIST_MIDI_HEADER) + midiSizeHeader.seqSize + midiSizeHeader.bankSize + midiSizeHeader.waveSize;
  68.  
  69.   distData->midiData = GFL_HEAP_AllocClearMemory( heapId , distData->midiDataSize );
  70.  
  71.   pMidiSizeHeader = distData->midiData;
  72.   distData->midiSeqData  = (void*)((u32)distData->midiData + sizeof(MUS_DIST_MIDI_HEADER));
  73.   distData->midiBnkData  = (void*)((u32)distData->midiData + sizeof(MUS_DIST_MIDI_HEADER) + midiSizeHeader.seqSize );
  74.   distData->midiWaveData = (void*)((u32)distData->midiData + sizeof(MUS_DIST_MIDI_HEADER) + midiSizeHeader.seqSize + midiSizeHeader.bankSize );
  75.  
  76.   pMidiSizeHeader->seqSize  = midiSizeHeader.seqSize;
  77.   pMidiSizeHeader->bankSize = midiSizeHeader.bankSize;
  78.   pMidiSizeHeader->waveSize = midiSizeHeader.waveSize;
  79.  
  80.   GFL_ARC_LoadDataByHandle( arcHandle , MUSICAL_ARCDATAID_SSEQDATA , distData->midiSeqData );
  81.   GFL_ARC_LoadDataByHandle( arcHandle , MUSICAL_ARCDATAID_SBNKDATA , distData->midiBnkData );
  82.   GFL_ARC_LoadDataByHandle( arcHandle , MUSICAL_ARCDATAID_SWAVDATA , distData->midiWaveData );
  83.  
  84.   GFL_ARC_CloseDataHandle( arcHandle );
  85.   if( programNo >= MUS_PROGRAM_LOCAL_NUM )
  86.   {
  87.     MUSICAL_DIST_SAVE_UnloadData( distSave );
  88.   }
  89.  
  90.   MUS_TPrintf("MusicalSystem LoadMidiData[%d][%d][%d].\n",pMidiSizeHeader->seqSize,pMidiSizeHeader->bankSize,pMidiSizeHeader->waveSize);
  91. }
Advertisement
Add Comment
Please, Sign In to add comment