Mercurial > repos > blastem
comparison vgm.c @ 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 | a9449608d0b0 |
children | fc8fd89aeba9 |
comparison
equal
deleted
inserted
replaced
1995:2ef405b9d3eb | 1996:e35b00626b3e |
---|---|
60 } | 60 } |
61 } | 61 } |
62 | 62 |
63 static void add_wait(vgm_writer *writer, uint32_t cycle) | 63 static void add_wait(vgm_writer *writer, uint32_t cycle) |
64 { | 64 { |
65 uint64_t delta = cycle - writer->last_cycle; | 65 uint64_t last_sample = (uint64_t)writer->last_cycle * (uint64_t)44100; |
66 delta *= (uint64_t)44100; | 66 last_sample /= (uint64_t)writer->master_clock; |
67 delta /= (uint64_t)writer->master_clock; | 67 uint64_t sample = (uint64_t)cycle * (uint64_t)44100; |
68 sample /= (uint64_t)writer->master_clock; | |
69 uint32_t delta = sample - last_sample; | |
68 | 70 |
69 uint32_t mclks_per_sample = writer->master_clock / 44100; | 71 writer->last_cycle = cycle; |
70 writer->last_cycle += delta * mclks_per_sample; | |
71 writer->header.num_samples += delta; | 72 writer->header.num_samples += delta; |
72 wait_commands(writer, delta); | 73 wait_commands(writer, delta); |
73 } | 74 } |
74 | 75 |
75 void vgm_sn76489_write(vgm_writer *writer, uint32_t cycle, uint8_t value) | 76 void vgm_sn76489_write(vgm_writer *writer, uint32_t cycle, uint8_t value) |