ALBERT version 1.1.2 released

Version 1.1.2 of ALBERT, the pixel art editor for creating extended Commodore 64 images, is now available on its official homepage.

Binaries are available for Windows and macOS (Intel). For Linux users, Docker images are published on Docker Hub here.

ALBERT: About dialog by Luigi Di Fraia

This is a minor update delivering the following changes:

  • Fixed syntax highlighting for the scripting window under macOS
  • Revised the drawstar() Lua function to only accept the star’s width and automatically calculate its height to guarantee radial symmetry
  • Added support for Drean (PAL-N) systems to the stable code for the Commodore 64
  • Added avatars to the About dialog and slightly refactored its contents
  • Added another sample project

Happy Easter to Everyone!

Posted in Pixel Design, Retrocomputing, Technical | Tagged , , , | 2 Comments

C64 Pic Extender version 1.1.4 released

Version 1.1.4 of the C64 Pic Extender is now available within my Software page.

This is a minor update for a few enhancements:

  • Added support for Drean (PAL-N) systems to the stable code for the Commodore 64

The following enhancements were included as part of version 1.1.3, which was not published by itself:

  • Multiple about dialogs under macOS won’t be erroneously created any longer
  • Non-ASCII and space characters in the application path won’t impair the execution of exomizer under *nix

You might want to check the documentation that comes within each distribution archive for more information!

Posted in Pixel Design, Retrocomputing, Technical | Tagged , , , , | 2 Comments

DC2N4-LC GUI client version 4.4.2 released

Version 4.4.2 of the DC2N4-LC GUI client is now available within my Software page.

This is a minor update for a few enhancements, specifically around dialog/window overlapping when the application is configured to stay on top.

DC2N4-LC Client: About dialog by Luigi Di Fraia
Posted in Retrocomputing, Technical | Tagged , , , , | Leave a comment

A whole year worth of development in a screenshot

As I started the development of ALBERT, the pixel art editor for creating extended Commodore 64 images, almost exactly one year ago, I thought to share a few stats about my development efforts in the last year by means of a GitHub profile screenshot:

GitHub : stats from my profile by Luigi Di Fraia
GitHub : stats from my profile

Although most of the commits were probably for ALBERT itself, I’ve also been working at a number of my other projects in parallel 🙂

Posted in Retrocomputing, Technical, Updates | Tagged , | Leave a comment

Support for “Gyrospeed” in TAPClean merged into the main branch

Today I had a chance to create TAP files with the mastering tool for Gyrospeed by Gary Saunders, and record the CRC32 of the CBM Data files it produces. I’ve added those signatures to TAPClean in order to speed up its scanning process by only looking for Gyrospeed files when such signature is detected.
The development branch I had created to add support for Gyrospeed in TAPClean has therefore been merged into the main development branch, master.

Gyrospeed: CSDb preview
Gyrospeed: CSDb preview

An unfortunate circumstance I stumbled upon while performing the testing in CCS64 is that the EOF marker of REPEATed CBM Data files was not written, which lead to TAPClean miscalculating their CRC32 value. It’s not a big deal as TAPClean can be instructed not to look for such EOF markers (using the -noc64eof commandline option).

However, because of the abovementioned circumstance, I added an entry to TAPClean’s TODO list to move the CRC32 calculation for boot CBM Data files out of the cbm_search() function, so that I can also add some logic and calculate the CRC32 value on either the FIRST or REPEATed CBM Data file, depending on which one is structurally intact.

Stay tuned for more!

Posted in Retrocomputing, Reverse Engineering, Technical | Tagged , , , , , | Leave a comment

ALBERT version 1.1.1 released

Version 1.1.1 of ALBERT, the pixel art editor for creating extended Commodore 64 images, is now available on its official homepage.
Binaries are available for Windows and macOS (Intel). For Linux users, Docker images are published on Docker Hub here.

This is a minor update delivering the following fix to a bug reported by ElfKaa:

  • Fixed the coordinate validation for flood fill to avoid a memory access violation

I contributed the same fix to the code repository that I had used for inspiration. Here’s the pull request I raised, showing the nature of the fix, i.e. performing the seed point coordinate validation before reading its color.

Posted in Pixel Design, Retrocomputing, Technical | Tagged , , , | Leave a comment

ALBERT version 1.1.0 released

Version 1.1.0 of ALBERT, the pixel art editor for creating extended Commodore 64 images, is now available on its official homepage.
Binaries are available for Windows and macOS (Intel). For Linux users, Docker images are published on Docker Hub here.

With support for rectangular selections, symmetrical drawing, image and selection flipping, and many more features, ALBERT celebrates its first year of development with a bang!

Furthermore, there’s an Easter egg in ALBERT 1.1.0. If you can find it, contact me with its details and you get a chance to prioritize a feature from the list of ALBERT’s upcoming features.

ALBERT: Christmas About dialog by Luigi Di Fraia
ALBERT: Christmas About dialog

Here are all changes delivered in this update:

  • Added support for rectangular selections (drag, cut, copy, and paste), solid or transparent
  • Added support for symmetrical (horizontal, vertical, quadrant, and bisected quadrant) drawing and flood fill
  • Added support for flipping (horizontally or vertically) canvas and selection contents
  • Added the option to load transparent PNG images into a separate layer to be used as a drawing reference, which can be hidden and shown as needed
  • Added the option for setting the aspect ratio of pixels (1:1, PAL, or NTSC) for the main canvas and the preview window
  • Added the option to reset image adjustment curve properties when importing PNG images
  • Added the option to set font properties for the scripting window (part of the Preferences dialog)
  • Added two new Lua functions to draw hollow and filled rectangles
  • Added two new Lua functions to draw ellipses and provide a strong reference for drawing circles when targeting PAL or NTSC displays
  • Added the option to generate random shapes using the Pareidolia menu item
  • Added shortcuts for setting the color of pen 1 to values in the range 8-15
  • When opening a project or importing a PNG image the main canvas is now zoomed for best fit
  • Corrected the display of the current graphic mode in the main window’s status bar
  • Fixed color swapping and replacing so that they only modify the editable area and correctly process color clashing
  • Multiple instances of dialogs that require user interaction cannot be erroneously created any longer by users under macOS
  • Added a few more sample projects

Merry Christmas to everyone!

Posted in Pixel Design, Retrocomputing, Technical | Tagged , , , | Leave a comment

CBM Flux Studio: preview builds available

As readers asked for it, I am sharing a preview version of CBM Flux Studio 2. There is no user documentation that comes with it and format support is limited to CBM and Vorpal (later) sectors. There is some support for V-MAX! version 3, but that’s unfinished, which is also the current state of the application.

The software is provided “as is” and if you download it you can do whatever you want with it, as long as it doesn’t require commitments on my part. However, in order to avoid unfinished software from being used to create faulty material, the save option is disabled.

CBM Flux Studio: About dialog by Luigi Di Fraia
CBM Flux Studio: About dialog

At this stage I don’t require any “beta” testers. The application is in “alpha” stage, meaning I firstly need time to do research and secondly I need access to original material for field testing. I haven’t got shortage of access to said material, but at the moment I do have shortage of time to dedicate to the project.

Without further ado, here are the download links:

A few handy usage instructions:

  • when you select a track, it becomes yellow,
  • right clicking on a selected track brings up a contextual menu that can be used to delete the track or add 8 1-bit cells at the end of the track as long, as there’s room for these,
  • the Alt key and left mouse button pressed together invert a bit cell,
  • the Shift key and left mouse button pressed together zero a whole byte in the raw data, thus creating weak bits (be mindful of the byte boundary),
  • while a track is selected in a G64 disk image, the Alt key and cursor keys left or right pressed together shift its raw data by 1 bit cell left or right respectively.
Posted in Retrocomputing, Reverse Engineering, Technical | Tagged , , , , , , , , | 1 Comment

The need for regression testing in TAPClean and CBM Flux Studio

This week, I changed CBM Flux Studio 2 to also shorten CBM block syncs longer than 40 bits to exactly 40 bits in NIB files, ahead of their conversion to G64, instead of just standardizing those CBM blocks syncs shorter than 40 bits. It was one of those changes that made other workflows downstream break completely in the presence of edge conditions. During testing I was lucky enough to stumble across a NIB file I created a while ago that triggered multiple edge conditions. The Pandora’s box it opened almost caused me to want to rewrite everything again, but I managed to sort things out through a long troubleshooting process and I am glad I did because I appreciate those edge conditions much better now.

Tools like TAPClean and CBM Flux Studio scream for a test-driven coding approach, or comprehensive regression testing. I can’t wait for the day when my development on TAPClean and CBM Flux Studio is going to test every change with a CI merge pipeline that performs regression testing on thousands of TAP or raw disk images and blocks any code change that causes an unexpected change in behavior caught in a batch-mode report.

In 2024 I shall be thinking about a way to make the research material for regression testing available and how to organize it efficiently, so that I can target subgroups such as just tapes that use “Turbotape 250 + clones” or just raw disk images that use “V-MAX!”.

Stay tune for more!

Posted in Retrocomputing, Reverse Engineering, Technical | Tagged , , , , , , , , , , | Leave a comment

CBM Flux Studio: alpha lookup table test 1

Following from my earlier tests I tried to generate two rather naïve alpha value lookup tables for the circular plot in CBM Flux Studio 2, when SCP mode is used.

Here are the results of each one of them:

CBM Flux Studio: alpha table lookup in the circular plot when using SCP mode by Luigi Di Fraia
CBM Flux Studio: alpha table lookup in the circular plot when using SCP mode
CBM Flux Studio: alternative alpha table lookup in the circular plot when using SCP mode by Luigi Di Fraia
CBM Flux Studio: alternative alpha table lookup in the circular plot when using SCP mode

I reckon the second table seems to represent the tail gap better, while still marking block syncs quite well, given that the raw data looks as per below at the tail gap:

CBM Flux Studio: tail gaps for track 1-17 by Luigi Di Fraia
CBM Flux Studio: tail gaps for track 1-17

Don’t forget to click on the above images to see a non-scaled version without scaling artefacts.

I’ll keep experimenting with alpha lookup tables as soon as I get new ideas on the generation function for a new table.

Stay tuned for more!

Posted in Retrocomputing, Reverse Engineering, Technical | Tagged , , , , , , , , | Leave a comment