# HG changeset patch # User Michael Pavone # Date 1592465333 25200 # Node ID e35b00626b3e2a44e640e4f6fa70579c4ab718b7 # Parent 2ef405b9d3ebe5464bdbfcd0bbfff6452e62d206 Update cycle to VGM sample conversion based on ValleyBell's suggestion diff -r 2ef405b9d3eb -r e35b00626b3e vgm.c --- a/vgm.c Thu Jun 18 00:23:46 2020 -0700 +++ b/vgm.c Thu Jun 18 00:28:53 2020 -0700 @@ -62,12 +62,13 @@ static void add_wait(vgm_writer *writer, uint32_t cycle) { - uint64_t delta = cycle - writer->last_cycle; - delta *= (uint64_t)44100; - delta /= (uint64_t)writer->master_clock; + uint64_t last_sample = (uint64_t)writer->last_cycle * (uint64_t)44100; + last_sample /= (uint64_t)writer->master_clock; + uint64_t sample = (uint64_t)cycle * (uint64_t)44100; + sample /= (uint64_t)writer->master_clock; + uint32_t delta = sample - last_sample; - uint32_t mclks_per_sample = writer->master_clock / 44100; - writer->last_cycle += delta * mclks_per_sample; + writer->last_cycle = cycle; writer->header.num_samples += delta; wait_commands(writer, delta); }