Mercurial > hg > dmlib
comparison minijss/jloadxm.c @ 1132:d4512925b4f9
Modularize some more.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 04 Mar 2015 07:00:27 +0200 |
parents | b349646f19a0 |
children | 1ed8af15581a |
comparison
equal
deleted
inserted
replaced
1131:b349646f19a0 | 1132:d4512925b4f9 |
---|---|
450 } | 450 } |
451 return DMERR_OK; | 451 return DMERR_OK; |
452 } | 452 } |
453 | 453 |
454 | 454 |
455 static BOOL jssXMLoadEnvelope(DMResource *inFile, XMEnvelope *env) | 455 static BOOL jssXMLoadEnvelopePoints(DMResource *inFile, XMEnvelope *env) |
456 { | 456 { |
457 int i; | 457 int i; |
458 for (i = 0; i < XM_MaxEnvPoints; i++) | 458 for (i = 0; i < XM_MaxEnvPoints; i++) |
459 { | 459 { |
460 if (!dmf_read_le16(inFile, &(env->points[i].frame)) || | 460 if (!dmf_read_le16(inFile, &(env->points[i].frame)) || |
461 !dmf_read_le16(inFile, &(env->points[i].value))) | 461 !dmf_read_le16(inFile, &(env->points[i].value))) |
462 return FALSE; | 462 return FALSE; |
463 } | 463 } |
464 return TRUE; | 464 return TRUE; |
465 } | |
466 | |
467 | |
468 static BOOL jssXMLoadEnvelopeData(DMResource *inFile, XMEnvelope *env) | |
469 { | |
470 return | |
471 dmf_read_byte(inFile, &(env->sustain)) && | |
472 dmf_read_byte(inFile, &(env->loopS)) && | |
473 dmf_read_byte(inFile, &(env->loopE)); | |
465 } | 474 } |
466 | 475 |
467 | 476 |
468 /* Load XM-format extended instrument from file-stream into JSS module's given inst | 477 /* Load XM-format extended instrument from file-stream into JSS module's given inst |
469 */ | 478 */ |
508 // Get instrument header #2 | 517 // Get instrument header #2 |
509 if (!dmf_read_le32(inFile, &xmI2.headSize) || | 518 if (!dmf_read_le32(inFile, &xmI2.headSize) || |
510 !dmf_read_str(inFile, &xmI2.sNumForNotes, sizeof(xmI2.sNumForNotes))) | 519 !dmf_read_str(inFile, &xmI2.sNumForNotes, sizeof(xmI2.sNumForNotes))) |
511 { | 520 { |
512 JSSERROR(DMERR_FREAD, DMERR_FREAD, | 521 JSSERROR(DMERR_FREAD, DMERR_FREAD, |
513 "Could not read secondary instrument header #1 for #%d.\n", ninst); | 522 "Could not read secondary instrument header part #1 for #%d.\n", ninst); |
514 } | 523 } |
515 | 524 |
516 if (!jssXMLoadEnvelope(inFile, &xmI2.volumeEnv) || | 525 if (!jssXMLoadEnvelopePoints(inFile, &xmI2.volumeEnv) || |
517 !jssXMLoadEnvelope(inFile, &xmI2.panningEnv) || | 526 !jssXMLoadEnvelopePoints(inFile, &xmI2.panningEnv)) |
518 | 527 { |
519 !dmf_read_byte(inFile, &xmI2.volumeEnv.npoints) || | 528 JSSERROR(DMERR_FREAD, DMERR_FREAD, |
529 "Could not read envelope point data for instrument #%d.\n", ninst); | |
530 } | |
531 | |
532 if (!dmf_read_byte(inFile, &xmI2.volumeEnv.npoints) || | |
520 !dmf_read_byte(inFile, &xmI2.panningEnv.npoints) || | 533 !dmf_read_byte(inFile, &xmI2.panningEnv.npoints) || |
521 | 534 |
522 !dmf_read_byte(inFile, &xmI2.volumeEnv.sustain) || | 535 !jssXMLoadEnvelopeData(inFile, &xmI2.volumeEnv) || |
523 !dmf_read_byte(inFile, &xmI2.volumeEnv.loopS) || | 536 !jssXMLoadEnvelopeData(inFile, &xmI2.panningEnv) || |
524 !dmf_read_byte(inFile, &xmI2.volumeEnv.loopE) || | |
525 | |
526 !dmf_read_byte(inFile, &xmI2.panningEnv.sustain) || | |
527 !dmf_read_byte(inFile, &xmI2.panningEnv.loopS) || | |
528 !dmf_read_byte(inFile, &xmI2.panningEnv.loopE) || | |
529 | 537 |
530 !dmf_read_byte(inFile, &xmI2.volumeEnv.flags) || | 538 !dmf_read_byte(inFile, &xmI2.volumeEnv.flags) || |
531 !dmf_read_byte(inFile, &xmI2.panningEnv.flags) || | 539 !dmf_read_byte(inFile, &xmI2.panningEnv.flags) || |
532 | 540 |
533 !dmf_read_byte(inFile, &xmI2.vibratoType) || | 541 !dmf_read_byte(inFile, &xmI2.vibratoType) || |
537 | 545 |
538 !dmf_read_le16(inFile, &xmI2.fadeOut) || | 546 !dmf_read_le16(inFile, &xmI2.fadeOut) || |
539 !dmf_read_le16(inFile, &xmI2.ARESERVED)) | 547 !dmf_read_le16(inFile, &xmI2.ARESERVED)) |
540 { | 548 { |
541 JSSERROR(DMERR_FREAD, DMERR_FREAD, | 549 JSSERROR(DMERR_FREAD, DMERR_FREAD, |
542 "Could not read secondary instrument header #2 for #%d.\n", ninst); | 550 "Could not read secondary instrument header part #2 for #%d.\n", ninst); |
543 } | 551 } |
544 | 552 |
545 // Skip the extra data after header #2 | 553 // Skip the extra data after header #2 |
546 remainder = xmI1.headSize - (dmftell(inFile) - pos); | 554 remainder = xmI1.headSize - (dmftell(inFile) - pos); |
547 if (remainder > 0) | 555 if (remainder > 0) |