TsvmEmulator: better snd debug view

This commit is contained in:
minjaesong
2026-05-09 20:19:04 +09:00
parent 74cba0a893
commit f69108c40d
7 changed files with 152 additions and 139 deletions

View File

@@ -134,12 +134,7 @@ class AudioJSR223Delegate(private val vm: VM) {
fun setTrackerMixerFlags(playhead: Int, flags: Int) {
getFirstSnd()?.playheads?.get(playhead)?.let { ph ->
ph.initialGlobalFlags = flags
ph.trackerState?.let { ts ->
ts.toneMode = flags and 3
// Bits 2-7 reserved. Bit 2 was the old 'm' fadeout-zero policy; removed.
// Pan law is fixed to the equal-energy engine-wide — no flag bit any more.
// See AudioAdapter.kt and TAUD_NOTE_EFFECTS.md §1.
}
ph.updateTrackerGlobalBehaviour(flags)
}
}

View File

@@ -2225,8 +2225,7 @@ class AudioAdapter(val vm: VM) : PeriBase(VM.PERITYPE_SOUND) {
// bits 2-3 (rr): 0=Fast Sinc, 1=none, 2=Amiga 500, 3=Amiga 1200
// Panning law is fixed to the equal-energy; no runtime selection.
val flags = rawArg ushr 8
ts.toneMode = flags and 3
ts.interpolationMode = (flags ushr 2) and 3
playhead.updateTrackerGlobalBehaviour(flags)
}
EffectOp.OP_8 -> {
// 8 $xyzz — Bitcrusher. See TAUD_NOTE_EFFECTS.md §8.
@@ -3492,6 +3491,13 @@ class AudioAdapter(val vm: VM) : PeriBase(VM.PERITYPE_SOUND) {
var pcmQueueSizeIndex: Int = 0,
val audioDevice: OpenALBufferedAudioDevice,
) {
fun updateTrackerGlobalBehaviour(flags: Int) {
trackerState?.let { ts ->
ts.toneMode = flags and 3
ts.interpolationMode = (flags ushr 2) and 3
}
}
var trackerState: TrackerState? = TrackerState() // default mode is tracker (isPcmMode=false)
// Initial global behaviour flags (song-table byte, written via MMIO register 7 in tracker mode).
@@ -3554,10 +3560,7 @@ class AudioAdapter(val vm: VM) : PeriBase(VM.PERITYPE_SOUND) {
} }
7 -> if (isPcmMode) { pcmUpload = true } else {
initialGlobalFlags = byte
trackerState?.let { ts ->
ts.toneMode = byte and 3
ts.interpolationMode = (byte ushr 2) and 3
}
updateTrackerGlobalBehaviour(initialGlobalFlags)
}
8 -> { bpm = byte + 25 }
9 -> { tickRate = byte }