diff options
author | Michael Pavone <pavone@retrodev.com> | 2020-06-18 00:28:53 -0700 |
---|---|---|
committer | Michael Pavone <pavone@retrodev.com> | 2020-06-18 00:28:53 -0700 |
commit | ed0cc3b27b4079170975bd85bc6a1a29fa7f6f4c (patch) | |
tree | 9290c952b114ab509bf061db4e3aa145498574b1 /vgm.c | |
parent | 79b11b11f72e40b1298084646bb77290739e8e42 (diff) |
Update cycle to VGM sample conversion based on ValleyBell's suggestion
Diffstat (limited to 'vgm.c')
-rw-r--r-- | vgm.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -62,12 +62,13 @@ static void wait_commands(vgm_writer *writer, uint32_t delta) 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); } |