# HG changeset patch # User Matti Hamalainen # Date 1535973740 -10800 # Node ID b3579297e04efdddf5d6135cb27672607f4d5ab1 # Parent 6d866e284dd23514ccf9d5f3e034f1c21da7df0a Implement rest of the stuff needed for selecting external palettes in the launcher and actual Multipaint code. diff -r 6d866e284dd2 -r b3579297e04e files.pde --- a/files.pde Wed Aug 29 20:27:00 2018 +0300 +++ b/files.pde Mon Sep 03 14:22:20 2018 +0300 @@ -233,13 +233,16 @@ // XXX TODO: Make this support other platforms than C64 boolean mpLoadPalette(String fname) { - byte fdata[] = mpLoadbinaryFile(fname); + String ffname = "palettes/"+ g_map[13] +"/"+ fname; + byte fdata[] = mpLoadBinaryFile(ffname); + if (fdata == null || fdata.length != 772 || - fdata[0x301] != byte(0x10) || - fdata[0x302] != byte(0xff) || - fdata[0x303] != byte(0xff)) + fdata[0x301] != 0x10 || + fdata[0x302] != 0xff || + fdata[0x303] != 0xff) { + console.log("Could not load palette file '"+ ffname +"'."); return false; } diff -r 6d866e284dd2 -r b3579297e04e mpui.js --- a/mpui.js Wed Aug 29 20:27:00 2018 +0300 +++ b/mpui.js Mon Sep 03 14:22:20 2018 +0300 @@ -2,8 +2,9 @@ * Multipaint.JS - Javascript launcher * (C) Copyright 2018 Matti 'ccr' Hämäläinen */ -var mpMachine = 0, mpUIScale, mpUIForcedWidth, mpUIForcedHeight; -var mpURL; +var mpMachine = 0, mpUIScale, + mpUIForcedWidth, mpUIForcedHeight, mpURL, + mpUIPalette; // Machine ID, Name/desc, Alt.palette array index (-1 if none) var mpMachines = @@ -146,13 +147,18 @@ } +function stCleanFilename(vstr) +{ + return vstr.replace(/[^a-z0-9_\.]/ig, ""); +} + + function mpMachineChanged() { var tmp = stGetSelIndex("machineID"); var velem = stGE("paletteID"); var palID = mpMachines[tmp][2]; velem.style.display = (palID >= 0) ? "block" : "none"; - velem.disabled = true; stClearChildren(velem); if (palID >= 0) { @@ -209,7 +215,6 @@ mdiv.appendChild(mobj); mobj.appendChild(stCE("select", "paletteID")); - mdiv = stCE("div", "mdimensions"); mpUI.appendChild(mdiv); @@ -269,6 +274,9 @@ mpUIForcedWidth = mpUIForcedHeight = 0; mpUIScale = stGetSelValue(stGE("scalesID"), -1); + index = stGetSelValue(stGE("paletteID"), -1); + if (index >= 0) + mpUIPalette = mpPalettes[mpMachine][index]; stClearChildren(mpUI); @@ -276,7 +284,9 @@ var mpCanvas = stGE("mpCanvas"); mpCanvas.style.display = "block"; - window.location.href = mpURL +"?"+ mpMachine.toString() +":"+ mpUIForcedWidth +":"+ mpUIForcedHeight +":"+ mpUIScale; + window.location.href = mpURL +"?"+ + mpMachine.toString() +":"+ + mpUIForcedWidth +":"+ mpUIForcedHeight +":"+ mpUIScale +":"+ mpUIPalette; mpRunSketch(mpCanvas); } @@ -305,6 +315,9 @@ } if (sargs.length >= 4) mpUIScale = parseInt(sargs[3]); + + if (sargs.length >= 5) + mpUIPalette = stCleanFilename(sargs[4]); } else mpURL = slink; diff -r 6d866e284dd2 -r b3579297e04e multipaint.pde --- a/multipaint.pde Wed Aug 29 20:27:00 2018 +0300 +++ b/multipaint.pde Mon Sep 03 14:22:20 2018 +0300 @@ -111,6 +111,7 @@ g_uiscale = (mpUIScale >= 1 && mpUIScale <= 3) ? mpUIScale : 2; g_forced_width = mpUIForcedWidth > 0 ? mpUIForcedWidth : 0; g_forced_height = mpUIForcedHeight > 0 ? mpUIForcedHeight : 0; + g_forced_palette = mpUIPalette ? mpUIPalette : ""; g_animspeed = 1; //normi