mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
92 lines
No EOL
1.8 KiB
C++
92 lines
No EOL
1.8 KiB
C++
#include "pch.h"
|
|
#include "Shared/Utilities/emu2413.h"
|
|
#include "Utilities/Serializer.h"
|
|
|
|
class Emu2413Serializer
|
|
{
|
|
public:
|
|
static void Serialize(OPLL* opll, Serializer& s)
|
|
{
|
|
SV(opll->clk);
|
|
SV(opll->rate);
|
|
|
|
SV(opll->chip_type);
|
|
|
|
SV(opll->adr);
|
|
|
|
SV(opll->inp_step);
|
|
SV(opll->out_step);
|
|
SV(opll->out_time);
|
|
|
|
SVArray(opll->reg, 0x40);
|
|
SV(opll->test_flag);
|
|
SV(opll->slot_key_status);
|
|
SV(opll->rhythm_mode);
|
|
|
|
SV(opll->eg_counter);
|
|
|
|
SV(opll->pm_phase);
|
|
SV(opll->am_phase);
|
|
|
|
SV(opll->lfo_am);
|
|
|
|
SV(opll->noise);
|
|
SV(opll->short_noise);
|
|
|
|
SVArray(opll->patch_number, 9);
|
|
|
|
for(int i = 0; i < 18; i++) {
|
|
SVI(opll->slot[i].number);
|
|
SVI(opll->slot[i].type);
|
|
|
|
SVI(opll->slot[i].output[0]);
|
|
SVI(opll->slot[i].output[1]);
|
|
|
|
SVI(opll->slot[i].pg_phase);
|
|
SVI(opll->slot[i].pg_out);
|
|
SVI(opll->slot[i].pg_keep);
|
|
SVI(opll->slot[i].blk_fnum);
|
|
SVI(opll->slot[i].fnum);
|
|
SVI(opll->slot[i].blk);
|
|
|
|
SVI(opll->slot[i].eg_state);
|
|
SVI(opll->slot[i].volume);
|
|
SVI(opll->slot[i].key_flag);
|
|
SVI(opll->slot[i].sus_flag);
|
|
SVI(opll->slot[i].tll);
|
|
SVI(opll->slot[i].rks);
|
|
SVI(opll->slot[i].eg_rate_h);
|
|
SVI(opll->slot[i].eg_rate_l);
|
|
SVI(opll->slot[i].eg_shift);
|
|
SVI(opll->slot[i].eg_out);
|
|
|
|
SVI(opll->slot[i].update_requests);
|
|
}
|
|
|
|
SV(opll->mask);
|
|
|
|
SVArray(opll->ch_out, 14);
|
|
SVArray(opll->mix_out, 2);
|
|
|
|
//custom patches
|
|
for(int i = 0; i < 2; i++) {
|
|
SVI(opll->patch[i].TL);
|
|
SVI(opll->patch[i].FB);
|
|
SVI(opll->patch[i].EG);
|
|
SVI(opll->patch[i].ML);
|
|
SVI(opll->patch[i].AR);
|
|
SVI(opll->patch[i].DR);
|
|
SVI(opll->patch[i].SL);
|
|
SVI(opll->patch[i].RR);
|
|
SVI(opll->patch[i].KR);
|
|
SVI(opll->patch[i].KL);
|
|
SVI(opll->patch[i].AM);
|
|
SVI(opll->patch[i].PM);
|
|
SVI(opll->patch[i].WS);
|
|
}
|
|
|
|
if(!s.IsSaving()) {
|
|
OPLL_forceRefresh(opll);
|
|
}
|
|
}
|
|
}; |