mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-02-07 08:21:04 +00:00
Update DUMB to revision c2cb42ff918b398ec8c305ddc6574f9f8f945ad9
- Implemented support for STM 1.x format - Flagged STM files as stereo, as they should be SVN r4082 (trunk)
This commit is contained in:
parent
612d16e11c
commit
865a237b2c
1 changed files with 24 additions and 21 deletions
|
@ -192,7 +192,7 @@ static int it_stm_read_pattern( IT_PATTERN *pattern, DUMBFILE *f, unsigned char
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static DUMB_IT_SIGDATA *it_stm_load_sigdata(DUMBFILE *f /*, int * version*/)
|
static DUMB_IT_SIGDATA *it_stm_load_sigdata(DUMBFILE *f, int * version)
|
||||||
{
|
{
|
||||||
DUMB_IT_SIGDATA *sigdata;
|
DUMB_IT_SIGDATA *sigdata;
|
||||||
|
|
||||||
|
@ -227,8 +227,7 @@ static DUMB_IT_SIGDATA *it_stm_load_sigdata(DUMBFILE *f /*, int * version*/)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* *version = dumbfile_mgetw(f); */
|
*version = dumbfile_mgetw(f);
|
||||||
dumbfile_skip( f, 2 );
|
|
||||||
|
|
||||||
sigdata->song_message = NULL;
|
sigdata->song_message = NULL;
|
||||||
sigdata->order = NULL;
|
sigdata->order = NULL;
|
||||||
|
@ -247,7 +246,7 @@ static DUMB_IT_SIGDATA *it_stm_load_sigdata(DUMBFILE *f /*, int * version*/)
|
||||||
sigdata->pan_separation = 128;
|
sigdata->pan_separation = 128;
|
||||||
|
|
||||||
/** WARNING: which ones? */
|
/** WARNING: which ones? */
|
||||||
sigdata->flags = IT_OLD_EFFECTS | IT_COMPATIBLE_GXX | IT_WAS_AN_S3M;
|
sigdata->flags = IT_OLD_EFFECTS | IT_COMPATIBLE_GXX | IT_WAS_AN_S3M | IT_STEREO;
|
||||||
|
|
||||||
sigdata->speed = dumbfile_getc(f) >> 4;
|
sigdata->speed = dumbfile_getc(f) >> 4;
|
||||||
if ( sigdata->speed < 1 ) sigdata->speed = 1;
|
if ( sigdata->speed < 1 ) sigdata->speed = 1;
|
||||||
|
@ -300,7 +299,8 @@ static DUMB_IT_SIGDATA *it_stm_load_sigdata(DUMBFILE *f /*, int * version*/)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Orders, byte each, length = sigdata->n_orders (should be even) */
|
/* Orders, byte each, length = sigdata->n_orders (should be even) */
|
||||||
dumbfile_getnc( sigdata->order, 128, f );
|
dumbfile_getnc( sigdata->order, *version >= 0x200 ? 128 : 64, f );
|
||||||
|
if (*version < 0x200) memset( sigdata->order + 64, 0xFF, 64 );
|
||||||
sigdata->restart_position = 0;
|
sigdata->restart_position = 0;
|
||||||
|
|
||||||
for ( n = 127; n >= 0; --n ) {
|
for ( n = 127; n >= 0; --n ) {
|
||||||
|
@ -344,42 +344,45 @@ static DUMB_IT_SIGDATA *it_stm_load_sigdata(DUMBFILE *f /*, int * version*/)
|
||||||
return sigdata;
|
return sigdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static char hexdigit(int in)
|
|
||||||
{
|
|
||||||
if (in < 10) return in + '0';
|
|
||||||
else return in + 'A' - 10;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
DUH *DUMBEXPORT dumb_read_stm_quick(DUMBFILE *f)
|
DUH *DUMBEXPORT dumb_read_stm_quick(DUMBFILE *f)
|
||||||
{
|
{
|
||||||
sigdata_t *sigdata;
|
sigdata_t *sigdata;
|
||||||
/*int ver;*/
|
int ver;
|
||||||
|
|
||||||
DUH_SIGTYPE_DESC *descptr = &_dumb_sigtype_it;
|
DUH_SIGTYPE_DESC *descptr = &_dumb_sigtype_it;
|
||||||
|
|
||||||
sigdata = it_stm_load_sigdata(f /*, &ver*/);
|
sigdata = it_stm_load_sigdata(f , &ver);
|
||||||
|
|
||||||
if (!sigdata)
|
if (!sigdata)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
{
|
{
|
||||||
/*char version[16];*/
|
char version[16];
|
||||||
const char *tag[2][2];
|
const char *tag[2][2];
|
||||||
tag[0][0] = "TITLE";
|
tag[0][0] = "TITLE";
|
||||||
tag[0][1] = ((DUMB_IT_SIGDATA *)sigdata)->name;
|
tag[0][1] = ((DUMB_IT_SIGDATA *)sigdata)->name;
|
||||||
tag[1][0] = "FORMAT";
|
tag[1][0] = "FORMAT";
|
||||||
tag[1][1] = "STM";
|
version[0] = 'S';
|
||||||
/*version[0] = 'S';
|
|
||||||
version[1] = 'T';
|
version[1] = 'T';
|
||||||
version[2] = 'M';
|
version[2] = 'M';
|
||||||
version[3] = ' ';
|
version[3] = ' ';
|
||||||
version[4] = 'v';
|
version[4] = 'v';
|
||||||
version[5] = hexdigit((ver >> 8) & 15);
|
version[5] = '0' + ((ver >> 8) & 15);
|
||||||
version[6] = '.';
|
version[6] = '.';
|
||||||
version[7] = hexdigit((ver >> 4) & 15);
|
if ((ver & 255) > 99)
|
||||||
version[8] = hexdigit(ver & 15);
|
{
|
||||||
|
version[7] = '0' + ((ver & 255) / 100 );
|
||||||
|
version[8] = '0' + (((ver & 255) / 10) % 10);
|
||||||
|
version[9] = '0' + ((ver & 255) % 10);
|
||||||
|
version[10] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
version[7] = '0' + ((ver & 255) / 10);
|
||||||
|
version[8] = '0' + ((ver & 255) % 10);
|
||||||
version[9] = 0;
|
version[9] = 0;
|
||||||
tag[1][1] = (const char *) &version;*/
|
}
|
||||||
|
tag[1][1] = (const char *) &version;
|
||||||
return make_duh(-1, 2, (const char *const (*)[2])tag, 1, &descptr, &sigdata);
|
return make_duh(-1, 2, (const char *const (*)[2])tag, 1, &descptr, &sigdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue