public void Sfx(int n, int offset = 0, int length = 0) { if (n == -2) { Looping = false; return; } for (int i = 0; i < instruments.Length; i++) { instruments[i].Stop(); } activeInstrument = -1; if (n == -1) { sfxPointer = -1; return; } IsPlaying = true; sfxPointer = MemoryModule.ADDR_SOUND + 68 * n; sfxOffset = offset * 2; time = 0; noteLength = mem.Peek(sfxPointer + 65) / 128f; loopStart = mem.Peek(sfxPointer + 66); loopEnd = mem.Peek(sfxPointer + 67); lastNote = note = AudioNote.Default; Looping = loopStart != loopEnd; int sfxLength = GetSfxLength(n); if (length == 0) { length = sfxLength; } if (offset + length > sfxLength) { this.sfxLength = sfxLength * 2; } else { this.sfxLength = (offset + length) * 2; } if (note.isCustom) { Debug.LogWarning("Sfx: custom instruments are not supported"); } PullNode(); }
public void OnPoke(int addr) { buffer[addr - Address] = mem.Peek(addr); dirty = true; }