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)