changeset 90:dffafe05d520

Refactor mpExportFormat() a bit.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 06 Jul 2018 00:39:41 +0300
parents 09c1a4aba305
children 892a06169bb5
files exporters.pde multipaint.pde
diffstat 2 files changed, 37 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/exporters.pde	Fri Jul 06 00:27:38 2018 +0300
+++ b/exporters.pde	Fri Jul 06 00:39:41 2018 +0300
@@ -253,7 +253,7 @@
 }
 
 
-void format_export(String fname)
+byte[] mpExportFormat(int subformat)
 {
     int val1, val2, val3;
     int y, y2, yy, x, yp, xp, ad, valu, valu2, bri;
@@ -266,7 +266,6 @@
         mpExportColorData(40, 25, 65536, 4); //colors
         mpSetDataOffs(2050);
         mpExportBitmapData(40, 25);
-        export_program(fname);
     }
     else
     if (machine == PLUS4M) { // multi botticelli multicolor
@@ -287,7 +286,6 @@
         mpExportColorData(40, 25, 65536, 7); //lumis
         mpSetDataOffs(2050);
         mpExportBitmapData(40, 25);
-        export_program(fname);
     }
     else
     if (machine == C64) {
@@ -297,12 +295,26 @@
         mpSetDataOffs(0x1f42);
         mpExportColorData(40, 25, 65536, 0);
         mpSetDataOffs(0x232a);
-        mpWriteByte(int(g_map[0]));
-        export_program(fname);
+        mpWriteByte(g_map[0]);
     }
     else
     if (machine == C64M) {
-        if (fname.indexOf(".kla") >= 0)
+        if (subformat == 0)
+        {
+            // Advanced Art Studio
+            mpLoadTemplate("multic.ocp");
+            mpSetDataOffs(2);
+            mpExportBitmapData(40, 25);
+            mpSetDataOffs(0x1f42);
+            mpExportColorData(40, 25, 65536, 1);
+            mpSetDataOffs(0x233a);
+            mpExportColorData(40, 25, 65536 + 2000, 2);
+            mpSetDataOffs(0x232a);
+            mpWriteByte(g_map[0]);
+            mpSetDataOffs(0x232b);
+            mpWriteByte(g_map[1]);
+        }
+        else
         {
             // Koala Painter
             mpLoadTemplate("multic.kla");
@@ -313,24 +325,8 @@
             mpSetDataOffs(0x232a);
             mpExportColorData(40, 25, 65536 + 2000, 2);
             mpSetDataOffs(0x2712);
-            mpWriteByte(int(g_map[1] & 0x0f));
+            mpWriteByte(g_map[1] & 0x0f);
         }
-        else
-        {
-            // Advanced Art Studio
-            mpLoadTemplate("multic.ocp");
-            mpSetDataOffs(2);
-            mpExportBitmapData(40, 25);
-            mpSetDataOffs(0x1f42);
-            mpExportColorData(40, 25, 65536, 1);
-            mpSetDataOffs(0x233a);
-            mpExportColorData(40, 25, 65536 + 2000, 2);
-            mpSetDataOffs(0x232a);
-            mpWriteByte(int(g_map[0]));
-            mpSetDataOffs(0x232b);
-            mpWriteByte(int(g_map[1]));
-        }
-        export_program(fname);
     }
     else
     if (machine == MSX) {
@@ -339,7 +335,6 @@
         mpExportBitmapData(32, 24);
         mpSetDataOffs(7 + (32 * 24 * 8) + 768 + 1280);
         mpExportColorData(32, 24, 65536, 3); //there's an exception for msx-style
-        export_program(fname);
     }
     else
     if (machine == SPECTRUM) {
@@ -362,11 +357,12 @@
                    g_map[ad + 6] * 2 +
                    g_map[ad + 7] * 1;
 
-            mpWriteByte(int(valu));
+            mpWriteByte(valu);
         }
 
         for (y = 0; y < 24; y++)
-        for (x = 0; x <= 31; x++) {
+        for (x = 0; x <= 31; x++)
+        {
             ad = 65536 + x + y * 256;
             valu = int(g_map[ad]);
             valu2 = int(g_map[ad + MX * MY * 8]);
@@ -382,10 +378,13 @@
             if (bri == 1) {
                 valu += 64;
             }
-            mpWriteByte(int(valu + valu2 * 8));
+            mpWriteByte(valu + valu2 * 8);
         }
-        export_program(fname);
     }
+    else
+        return null;
+
+    return g_template;
 }
 
 
--- a/multipaint.pde	Fri Jul 06 00:27:38 2018 +0300
+++ b/multipaint.pde	Fri Jul 06 00:39:41 2018 +0300
@@ -534,9 +534,16 @@
 
     if (exportfmt)
     {
-        format_export(filename +"_"+
-            (g_spare ? "spare" : "main") +
-            "."+ g_formatext);
+        tmp = mpExportFormat(0); // XXX TODO
+        if (tmp != null)
+        {
+            mpSaveBinaryFile(filename +"_"+
+                (g_spare ? "spare" : "main") +"."+ g_formatext,
+                tmp);
+            message("EXPORTED");
+        }
+        else
+            message("COULD NOT|EXPORT");
 
         exportfmt = false;
         g_shift = false;