changeset 313:a89500f26dde

Cleanup the pattern decoder a bit.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 12 Oct 2012 13:45:33 +0300
parents 99dc5d012081
children e9c6aee5d2f2
files jloadxm.c
diffstat 1 files changed, 15 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/jloadxm.c	Fri Oct 12 13:15:26 2012 +0300
+++ b/jloadxm.c	Fri Oct 12 13:45:33 2012 +0300
@@ -113,6 +113,17 @@
 } while (0)
 
 
+static int jssXMConvertNote(int val)
+{
+    if (val < 1 || val > 97)
+        return jsetNotSet;
+    else if (val == 97)
+        return jsetNoteOff;
+    else
+        return val - 1;
+}
+
+
 static int jssXMUnpackPattern(DMResource *inFile, int size, JSSPattern *pattern)
 {
     int packb, row, channel, tmp;
@@ -121,8 +132,8 @@
 
     pnote = pattern->data;
 
-    for (row = 0; (row < pattern->nrows) && (size > 0); row++)
-    for (channel = 0; (channel < pattern->nchannels) && (size > 0); channel++)
+    for (row = 0; row < pattern->nrows && size > 0; row++)
+    for (channel = 0; channel < pattern->nchannels && size > 0; channel++)
     {
         JSGETBYTE(packb);
         if (packb & 0x80)
@@ -131,12 +142,7 @@
             {
                 // PACK 0x01: Read note
                 JSGETBYTE(tmp);
-                if (tmp < 1 || tmp > 97)
-                    pnote->note = jsetNotSet;
-                else if (tmp == 97)
-                    pnote->note = jsetNoteOff;
-                else
-                    pnote->note = tmp - 1;
+                pnote->note = jssXMConvertNote(tmp);
             }
 
             if (packb & 0x02)
@@ -171,14 +177,7 @@
         else
         {
             // All data available
-            tmp = (packb & 0x7f);
-
-            if (tmp < 1 || tmp > 97)
-                pnote->note = jsetNotSet;
-            else if (tmp == 97)
-                pnote->note = jsetNoteOff;
-            else
-                pnote->note = tmp - 1;
+            pnote->note = jssXMConvertNote(packb & 0x7f);
 
             // Get instrument
             JSGETBYTE(tmp);