Skip to content

Commit 88803f0

Browse files
committed
fix vgm_play_buffer() when zero bytes passed
1 parent 4be79ee commit 88803f0

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

src/gb/vgm_player.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ uint8_t load_buffer[LOAD_BUFFER_SIZE];
2222
uint8_t * load_ptr;
2323
uint16_t bytes_loaded;
2424

25-
inline void read_init(void) {
26-
load_ptr = load_buffer; bytes_loaded = 0;
27-
}
28-
2925
inline uint8_t read_byte(void) {
3026
while (true) {
3127
if (load_ptr < (load_buffer + bytes_loaded)) {
@@ -43,7 +39,8 @@ static uint8_t * vgm_play_buffer(uint8_t count) PRESERVES_REGS(d, e) NAKED {
4339
count;
4440
__asm
4541
srl a
46-
ret z
42+
jr z, 2$
43+
4744
ld b, a
4845
ld hl, #_play_buffer
4946
1$:
@@ -53,7 +50,7 @@ static uint8_t * vgm_play_buffer(uint8_t count) PRESERVES_REGS(d, e) NAKED {
5350
ldh (c), a
5451
dec b
5552
jr nz, 1$
56-
53+
2$:
5754
ld bc, #_play_buffer
5855
ret
5956
__endasm;
@@ -97,7 +94,8 @@ VGM_RESULT vgm_play_file(const uint8_t * name) {
9794

9895
// play VGM
9996
play_load = play_buffer;
100-
read_init();
97+
load_ptr = load_buffer;
98+
bytes_loaded = 0;
10199
while (true) {
102100
switch (last_vgm_command = read_byte()) {
103101
case 0xB3: /* write value to register */

0 commit comments

Comments
 (0)