Skip to content

Commit 982e30e

Browse files
committed
SpriteEditor: Added export to Conrado Badenas MaskedSprites library
1 parent 6bccc76 commit 982e30e

7 files changed

Lines changed: 424 additions & 5 deletions

File tree

ZXBStudio/DocumentEditors/ZXGraphics/SelectExportTypeControl.axaml.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ public bool InitializeSprite()
5656
Image = "/Svg/Seal.svg",
5757
Name = "PutChars"
5858
});
59+
ExportTypesList.Add(new ExportTypeDescrioptionItem()
60+
{
61+
Description = "Conrado Badenas MaskedSprites library.",
62+
ExportType = ExportTypes.MaskedSprites,
63+
Image = "/Svg/Mask.svg",
64+
Name = "MaskedSprites"
65+
});
5966
/*
6067
ExportTypesList.Add(new ExportTypeDescrioptionItem()
6168
{
@@ -73,7 +80,6 @@ public bool InitializeSprite()
7380
});
7481
*/
7582
lstOptions.ItemsSource = ExportTypesList;
76-
7783
lstOptions.SelectionChanged += LstOptions_SelectionChanged;
7884

7985
return true;

ZXBStudio/DocumentEditors/ZXGraphics/SpriteExportDialog.axaml.cs

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,13 @@ private void Refresh()
119119
CreateExample_PutChars();
120120
}
121121
break;
122+
case ExportTypes.MaskedSprites:
123+
CreateExportPath(".bas");
124+
if (canExport)
125+
{
126+
CreateExample_MaskedSprites();
127+
}
128+
break;
122129
default:
123130
grdOptions.IsVisible = false;
124131
break;
@@ -264,6 +271,143 @@ private void CreateExample_PutChars()
264271
txtCode.Text = sb.ToString();
265272
}
266273

274+
275+
private void CreateExample_MaskedSprites()
276+
{
277+
if (sprites == null || sprites.Count() == 0)
278+
{
279+
txtCode.Text = "";
280+
}
281+
282+
var sb = new StringBuilder();
283+
switch (exportConfig.ExportDataType)
284+
{
285+
case ExportDataTypes.DIM:
286+
{
287+
var sprite = sprites.ElementAt(0);
288+
sb.AppendLine("'- Includes -----------------------------------------------");
289+
sb.AppendLine("#INCLUDE <retrace.bas>");
290+
sb.AppendLine("#INCLUDE \"maskedsprites.bas\"");
291+
sb.AppendLine("");
292+
sb.AppendLine("'- Sprites definition -------------------------------------");
293+
sb.AppendLine(string.Format("' Can use: #INCLUDE \"{0}\"",
294+
Path.GetFileName(exportConfig.ExportFilePath)));
295+
sb.AppendLine(ExportManager.Export_Sprite_MaskedSprites(exportConfig, sprites));
296+
sb.AppendLine("' - Init vars ---------------------------------------------");
297+
sb.AppendLine("#define NumberofMaskedSprites 1");
298+
sb.AppendLine("DIM sprDir, sprBackDir AS UInteger");
299+
sb.AppendLine("");
300+
sb.AppendLine("'- Initialise the sprite engine ---------------------------");
301+
sb.AppendLine("InitMaskedSpritesFileSystem()");
302+
sb.AppendLine("' Create sprite");
303+
sb.AppendLine($"sprDir = RegisterSpriteImageInMSFS(@{exportConfig.LabelName}{sprite.Name.Replace(" ", "_")}(0))");
304+
sb.AppendLine("' Save background for first time");
305+
sb.AppendLine("sprBackDir = MaskedSpritesBackground(0)");
306+
sb.AppendLine("");
307+
sb.AppendLine("'- Draw sprite --------------------------------------------");
308+
sb.AppendLine("DIM n AS UByte");
309+
sb.AppendLine("DO");
310+
sb.AppendLine(" ' Sync with raytrace");
311+
sb.AppendLine(" waitretrace");
312+
sb.AppendLine(" ' Restore background");
313+
sb.AppendLine(" RestoreBackground(100,52,sprBackDir)");
314+
sb.AppendLine(" ");
315+
sb.AppendLine(" ' Print a number");
316+
sb.AppendLine(" PRINT AT 7,12;n;");
317+
sb.AppendLine(" n = n + 1");
318+
sb.AppendLine(" ' Draw sprite");
319+
sb.AppendLine(" SaveBackgroundAndDrawSpriteRegisteredInMSFS(100,52,sprBackDir,sprDir) ");
320+
sb.AppendLine("LOOP");
321+
sb.AppendLine("");
322+
}
323+
break;
324+
325+
case ExportDataTypes.ASM:
326+
{
327+
var sprite = sprites.ElementAt(0);
328+
sb.AppendLine("'- Includes -----------------------------------------------");
329+
sb.AppendLine("#INCLUDE <retrace.bas>");
330+
sb.AppendLine("#INCLUDE \"maskedsprites.bas\"");
331+
sb.AppendLine("");
332+
sb.AppendLine("' - Init vars ---------------------------------------------");
333+
sb.AppendLine("#define NumberofMaskedSprites 1");
334+
sb.AppendLine("DIM sprDir, sprBackDir AS UInteger");
335+
sb.AppendLine("");
336+
sb.AppendLine("'- Initialise the sprite engine ---------------------------");
337+
sb.AppendLine("InitMaskedSpritesFileSystem()");
338+
sb.AppendLine("' Create sprite");
339+
sb.AppendLine($"sprDir = RegisterSpriteImageInMSFS(@{exportConfig.LabelName}_{sprite.Name.Replace(" ", "_")})");
340+
sb.AppendLine("' Save background for first time");
341+
sb.AppendLine("sprBackDir = MaskedSpritesBackground(0)");
342+
sb.AppendLine("");
343+
sb.AppendLine("'- Draw sprite --------------------------------------------");
344+
sb.AppendLine("DIM n AS UByte");
345+
sb.AppendLine("DO");
346+
sb.AppendLine(" ' Sync with raytrace");
347+
sb.AppendLine(" waitretrace");
348+
sb.AppendLine(" ' Restore background");
349+
sb.AppendLine(" RestoreBackground(100,52,sprBackDir)");
350+
sb.AppendLine(" ");
351+
sb.AppendLine(" ' Print a number");
352+
sb.AppendLine(" PRINT AT 7,12;n;");
353+
sb.AppendLine(" n = n + 1");
354+
sb.AppendLine(" ' Draw sprite");
355+
sb.AppendLine(" SaveBackgroundAndDrawSpriteRegisteredInMSFS(100,52,sprBackDir,sprDir) ");
356+
sb.AppendLine("LOOP");
357+
sb.AppendLine("");
358+
sb.AppendLine("' - This section must not be executed --------------------");
359+
sb.AppendLine(string.Format("' Can use: #INCLUDE \"{0}\"",
360+
Path.GetFileName(exportConfig.ExportFilePath)));
361+
sb.AppendLine(ExportManager.Export_Sprite_MaskedSprites(exportConfig, sprites));
362+
}
363+
break;
364+
365+
case ExportDataTypes.BIN:
366+
{
367+
sb.AppendLine("'- Includes -----------------------------------------------");
368+
sb.AppendLine("#INCLUDE <putchars.bas>");
369+
sb.AppendLine("");
370+
sb.AppendLine("'- Draw sprite --------------------------------------------");
371+
var sprite = sprites.ElementAt(0);
372+
sb.AppendLine(string.Format(
373+
"putChars(10,5,{0},{1},@{2})",
374+
sprite.Width / 8,
375+
sprite.Height / 8,
376+
exportConfig.LabelName));
377+
sb.AppendLine("");
378+
sb.AppendLine("' This section must not be executed");
379+
sb.AppendLine(string.Format(
380+
"{0}:",
381+
exportConfig.LabelName));
382+
sb.AppendLine("ASM");
383+
sb.AppendLine(string.Format("\tINCBIN \"{0}\"",
384+
Path.GetFileName(exportConfig.ExportFilePath)));
385+
sb.AppendLine("END ASM");
386+
}
387+
break;
388+
389+
case ExportDataTypes.TAP:
390+
{
391+
sb.AppendLine("'- Includes -----------------------------------------------");
392+
sb.AppendLine("#INCLUDE <putchars.bas>");
393+
sb.AppendLine("");
394+
sb.AppendLine("' Load .tap data ------------------------------------------");
395+
sb.AppendLine("LOAD \"\" CODE");
396+
sb.AppendLine("");
397+
sb.AppendLine("'- Draw sprite --------------------------------------------");
398+
var sprite = sprites.ElementAt(0);
399+
sb.AppendLine(string.Format(
400+
"putChars(10,5,{0},{1},@{2})",
401+
sprite.Width / 8,
402+
sprite.Height / 8,
403+
exportConfig.LabelName));
404+
sb.AppendLine("");
405+
}
406+
break;
407+
}
408+
409+
txtCode.Text = sb.ToString();
410+
}
267411
#endregion
268412

269413

0 commit comments

Comments
 (0)