ref: 5f1d4388b1ba13ca80540f4734bbc58648468e3c
parent: cc986aa7dad019e2e4f8fe2d42013e50a1cd79d6
author: Chris Moeller <kode54@gmail.com>
date: Sat Mar 16 11:03:07 EDT 2013
- Removed *16/11 scale from S3M global volume - Applied S3M master volume as mixing volume - Renderer now ignores S3M Vxx for values greater than 0x40
--- a/dumb/src/it/itrender.c
+++ b/dumb/src/it/itrender.c
@@ -2963,6 +2963,8 @@
}
break;
case IT_SET_GLOBAL_VOLUME:
+ if ((sigdata->flags & IT_WAS_AN_S3M) && (entry->effectvalue > 64))
+ break;
if (entry->effectvalue <= 128)
sigrenderer->globalvolume = entry->effectvalue;
#ifdef VOLUME_OUT_OF_RANGE_SETS_MAXIMUM
--- a/dumb/src/it/reads3m.c
+++ b/dumb/src/it/reads3m.c
@@ -532,14 +532,13 @@
return NULL;
}
- sigdata->global_volume = dumbfile_getc(f) * 16 / 11;
- if ( !sigdata->global_volume || sigdata->global_volume > 93 ) sigdata->global_volume = 93;
+ sigdata->global_volume = dumbfile_getc(f);
+ if ( !sigdata->global_volume || sigdata->global_volume > 64 ) sigdata->global_volume = 64;
sigdata->speed = dumbfile_getc(f);
if (sigdata->speed == 0) sigdata->speed = 6; // Should we? What about tempo?
sigdata->tempo = dumbfile_getc(f);
master_volume = dumbfile_getc(f); // 7 bits; +128 for stereo
- //what do we do with master_volume? it's not the same as mixing volume...
- sigdata->mixing_volume = 48;
+ sigdata->mixing_volume = master_volume & 127;
if (master_volume & 128) sigdata->flags |= IT_STEREO;