Пример #1
0
 FileSystemResultCode serialize(SoundBuffer *data, SerializingState *state) {
     ADD_CHECK_SAME(data->len, SaveStateVersion::Initial);
     ADD(data->numItemsQueued, SaveStateVersion::Initial);
     ADD(data->readIndex, SaveStateVersion::Initial);
     ADD(data->writeIndex, SaveStateVersion::Initial);
     ADD_N(data->data, data->len, SaveStateVersion::Initial);
     
     return FileSystemResultCode::OK;
 }
static int
mangle_record_type (tree type, int for_pointer)
{
  tree current;
  int match;
  int nadded_p = 0;
  int qualified;
  
  /* Does this name have a package qualifier? */
  qualified = QUALIFIED_P (DECL_NAME (TYPE_NAME (type)));

#define ADD_N() \
  do { obstack_1grow (mangle_obstack, 'N'); nadded_p = 1; } while (0)

  gcc_assert (TREE_CODE (type) == RECORD_TYPE);

  if (!TYPE_PACKAGE_LIST (type))
    set_type_package_list (type);

  match = find_compression_record_match (type, &current);
  if (match >= 0)
    {
      /* If we had a pointer, and there's more, we need to emit
	 'N' after 'P' (for_pointer tells us we already emitted it.) */
      if (for_pointer && current)
	ADD_N();
      emit_compression_string (match);
    }
  while (current)
    {
      /* Add the new type to the table */
      compression_table_add (TREE_PURPOSE (current));
      /* Add 'N' if we never got a chance to, but only if we have a qualified
         name.  For non-pointer elements, the name is always qualified. */
      if ((qualified || !for_pointer) && !nadded_p)
	ADD_N();
      /* Use the bare type name for the mangle. */
      append_gpp_mangled_name (IDENTIFIER_POINTER (TREE_VALUE (current)),
			       IDENTIFIER_LENGTH (TREE_VALUE (current)));
      current = TREE_CHAIN (current);
    }
  return nadded_p;
#undef ADD_N
}
Пример #3
0
    FileSystemResultCode serialize(MMU *data, SerializingState *state) {
       ADD(data->soundFramesBuffer, SaveStateVersion::Initial); 
       ADD_ARR(data->workingRAM, SaveStateVersion::Initial);
       ADD_ARR(data->zeroPageRAM, SaveStateVersion::Initial);
       ADD(data->lcd, SaveStateVersion::Initial); 
       ADD(data->joyPad, SaveStateVersion::Initial); 
       
       ADD_CHECK_SAME(data->romSize, SaveStateVersion::Initial);
       ADD_CHECK_SAME(data->romNameLen, SaveStateVersion::Initial);
       ADD_CHECK_SAME(data->mbcType, SaveStateVersion::Initial);
       
       ADD_CHECK_SAME(data->hasRAM, SaveStateVersion::Initial);
       ADD_CHECK_SAME(data->hasBattery, SaveStateVersion::Initial);
       if (data->hasRAM) {
           ADD_N(data->cartRAM, data->cartRAMSize, SaveStateVersion::Initial);
           ADD_CHECK_SAME(data->cartRAMSize, SaveStateVersion::Initial);
       }
       
       //skip cart ram platform state
       
       ADD(data->currentROMBank, SaveStateVersion::Initial);
       ADD(data->currentRAMBank, SaveStateVersion::Initial);
       ADD(data->isCartRAMEnabled, SaveStateVersion::Initial);
       

       ADD(data->requestedInterrupts, SaveStateVersion::Initial);
       ADD(data->enabledInterrupts, SaveStateVersion::Initial);
       ADD(data->bankingMode, SaveStateVersion::Initial);
       ADD(data->hasRTC, SaveStateVersion::Initial);
       if (data->hasRTC) {
           ADD(data->rtc, SaveStateVersion::Initial);
           if (!state->isWriting) {
               syncRTCTime(&data->rtc, data->cartRAMPlatformState.rtcFileMap);
           }
       }


       ADD(data->isDMAOccurring, SaveStateVersion::Initial);
       ADD(data->currentDMAAddress, SaveStateVersion::Initial);
       ADD(data->cyclesSinceLastDMACopy, SaveStateVersion::Initial);

       //divider
       ADD(data->cyclesSinceDividerIncrement, SaveStateVersion::Initial);
       ADD(data->divider, SaveStateVersion::Initial);

       //timer
       ADD(data->cyclesSinceTimerIncrement, SaveStateVersion::Initial);
       ADD(data->timerIncrementRate, SaveStateVersion::Initial);
       ADD(data->timer, SaveStateVersion::Initial);
       ADD(data->timerModulo, SaveStateVersion::Initial);
       ADD(data->isTimerEnabled, SaveStateVersion::Initial);

       //Sound
       ADD(data->NR10, SaveStateVersion::Initial);
       ADD(data->NR11, SaveStateVersion::Initial);
       ADD(data->NR12, SaveStateVersion::Initial);
       ADD(data->NR13, SaveStateVersion::Initial);
       ADD(data->NR14, SaveStateVersion::Initial);
       ADD(data->NR21, SaveStateVersion::Initial);
       ADD(data->NR22, SaveStateVersion::Initial);
       ADD(data->NR23, SaveStateVersion::Initial);
       ADD(data->NR24, SaveStateVersion::Initial);
       ADD(data->NR30, SaveStateVersion::Initial);
       ADD(data->NR31, SaveStateVersion::Initial);
       ADD(data->NR32, SaveStateVersion::Initial);
       ADD(data->NR33, SaveStateVersion::Initial);
       ADD(data->NR34, SaveStateVersion::Initial);
       ADD(data->NR41, SaveStateVersion::Initial);
       ADD(data->NR42, SaveStateVersion::Initial);
       ADD(data->NR43, SaveStateVersion::Initial);
       ADD(data->NR44, SaveStateVersion::Initial);
       ADD(data->NR50, SaveStateVersion::Initial);
       ADD(data->NR51, SaveStateVersion::Initial);
       ADD(data->NR52, SaveStateVersion::Initial);
       ADD(data->isSoundEnabled, SaveStateVersion::Initial);
       
       ADD(data->squareWave1Channel, SaveStateVersion::Initial);
       ADD(data->squareWave2Channel, SaveStateVersion::Initial);
       ADD(data->waveChannel, SaveStateVersion::Initial);
       ADD(data->noiseChannel, SaveStateVersion::Initial);
       
       ADD(data->ticksSinceLastLengthCounter, SaveStateVersion::Initial);
       ADD(data->ticksSinceLastEnvelop, SaveStateVersion::Initial);
       ADD(data->ticksSinceLastSweep, SaveStateVersion::Initial);
       ADD(data->cyclesSinceLastSoundSample, SaveStateVersion::Initial);
       ADD(data->cyclesSinceLastFrameSequencer, SaveStateVersion::Initial);
       ADD(data->masterLeftVolume, SaveStateVersion::Initial);
       ADD(data->masterRightVolume, SaveStateVersion::Initial);
       
       return FileSystemResultCode::OK;
    }