Mercurial > repos > blastem
changeset 1996:e35b00626b3e
Update cycle to VGM sample conversion based on ValleyBell's suggestion
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 18 Jun 2020 00:28:53 -0700 |
parents | 2ef405b9d3eb |
children | e08c489d5602 |
files | vgm.c |
diffstat | 1 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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); }