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, ¤t); 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 }
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; }