diff --git a/src/common.h b/src/common.h index f78e011..bd2f5fb 100644 --- a/src/common.h +++ b/src/common.h @@ -34,8 +34,9 @@ int reset_tty(void); /* info */ void info_mod(struct xmp_module_info *); +void info_frame_init(struct xmp_module_info *); void info_frame(struct xmp_module_info *, struct control *, int); -void info_instruments_compact(struct xmp_module_info *); +void info_instruments(struct xmp_module_info *); void info_help(void); /* commands */ diff --git a/src/info.c b/src/info.c index 3be58aa..0276f78 100644 --- a/src/info.c +++ b/src/info.c @@ -43,26 +43,25 @@ void info_mod(struct xmp_module_info *mi) ((mi->total_time + 500) / 1000) % 60); } +void info_frame_init(struct xmp_module_info *mi) +{ + max_channels = 0; +} -void info_frame(struct xmp_module_info *mi, struct control *ctl, int reset) +void info_frame(struct xmp_module_info *mi, struct control *ctl, int reprint) { static int ord = -1, tpo = -1, bpm = -1; int time; - if (reset) { - ord = -1; - max_channels = -1; - } - if (mi->virt_used > max_channels) max_channels = mi->virt_used; - if (!reset && mi->frame != 0) + if (!reprint && mi->frame != 0) return; time = mi->current_time / 100; - if (mi->order != ord || mi->bpm != bpm || mi->tempo != tpo) { + if (reprint || mi->order != ord || mi->bpm != bpm || mi->tempo != tpo) { printf("\rTempo[%02X] BPM[%02X] Pos[%02X/%02X] " "Pat[%02X/%02X] Row[ / ] Chn[ / ] 0:00:00.0", mi->tempo, mi->bpm, @@ -89,7 +88,7 @@ void info_frame(struct xmp_module_info *mi, struct control *ctl, int reset) fflush(stdout); } -void info_instruments_compact(struct xmp_module_info *mi) +void info_instruments(struct xmp_module_info *mi) { int i, j; struct xmp_module *mod = mi->mod; diff --git a/src/main.c b/src/main.c index 30800ba..217681c 100644 --- a/src/main.c +++ b/src/main.c @@ -42,7 +42,7 @@ static void show_info(int what, struct xmp_module_info *mi) info_help(); break; case 'i': - info_instruments_compact(mi); + info_instruments(mi); break; case 'm': info_mod(mi); @@ -159,7 +159,7 @@ int main(int argc, char **argv) skipprev = 0; if (xmp_player_start(handle, options.start, 44100, 0) == 0) { - int refresh_line = 1; + int refresh_line; /* Mute channels */ @@ -175,11 +175,14 @@ int main(int argc, char **argv) info_mod(&mi); } if (options.verbose == 2) { - info_instruments_compact(&mi); + info_instruments(&mi); } /* Play module */ + refresh_line = 1; + info_frame_init(&mi); + while (!options.info && xmp_player_frame(handle) == 0) { int old_loop = mi.loop_count; @@ -188,6 +191,8 @@ int main(int argc, char **argv) break; info_frame(&mi, &control, refresh_line); + refresh_line = 0; + sound->play(mi.buffer, mi.buffer_size); if (options.out_file) {