void FmReset()
{
Reset();
_fmChanPlaying = 0;
Array.Clear(_fmChanNote, 0, _fmChanNote.Length);
Array.Clear(_fmChanPitch, 0, _fmChanPitch.Length);
_fmSaveReg[0].Set(0, 0, 240);
_fmSaveReg[0].Set(240, 0x7f, 16);
_fmSaveReg[1].Set(0, 0, 256);
_fmSaveReg[1].Set(240, 0x7f, 16);
_fmSaveReg[0][243] = _fmSaveReg[0][247] = _fmSaveReg[0][251] = _fmSaveReg[0][255] = _fmSaveReg[1][243] = _fmSaveReg[1][247] = _fmSaveReg[1][251] = _fmSaveReg[1][255] = 0xff;
for (int i = 0; i < 128; i++)
FmLoadInstrument(i, _fmDefaultInstrument, 0);
BufferedWriteReg(0, 0x21, 0);
BufferedWriteReg(0, 0x2C, 0x80);
BufferedWriteReg(0, 0x2B, 0);
BufferedWriteReg(0, 0x27, 0x30);
for (int i = 0; i < 6; i++)
{
FmKeyOff(i);
FmSetInstrument(i, 0);
FmSetLevel(i, 127);
}
}