Mercurial > repos > blastem
diff vgm.c @ 2006:327332138c5c
Prevent wait truncation in VGM logging
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 16 Oct 2020 21:40:47 -0700 |
parents | fc8fd89aeba9 |
children | 7e1215d17571 |
line wrap: on
line diff
--- a/vgm.c Sun Oct 11 22:42:10 2020 -0700 +++ b/vgm.c Fri Oct 16 21:40:47 2020 -0700 @@ -71,11 +71,12 @@ } 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; + uint64_t sample = ((uint64_t)cycle + (uint64_t)writer->extra_delta) * (uint64_t)44100; sample /= (uint64_t)writer->master_clock; uint32_t delta = sample - last_sample; writer->last_cycle = cycle; + writer->extra_delta = 0; writer->header.num_samples += delta; wait_commands(writer, delta); } @@ -113,6 +114,7 @@ void vgm_adjust_cycles(vgm_writer *writer, uint32_t deduction) { if (deduction > writer->last_cycle) { + writer->extra_delta += deduction - writer->last_cycle; writer->last_cycle = 0; } else { writer->last_cycle -= deduction;