NUFLIX Studio is a system to convert images into C64 executables that try to reproduce the original as closely as possible given the limitations of the graphics hardware. The name stands for NUFLI eXtended, because it's an incremental improvement over NUFLI. The system is implemented in Unity, and this repository contains the full source code under the NuflixStudio directory. Further information:
Head to the Releases section for the binaries.
When exporting an image, a prg file is generated. After loading, the image can be displayed with SYS 12288 (i.e. $3000, the same as NUFLI). Note that the displayer assumes that the value at address $02a6 specifies the video standard, 0 for NTSC and 1 for PAL, as set by the ROM boot process.
The source code for the displayer running on the C64 can be found in the displayer directory with the name nuflix-displayer.asm. It can be built using Kick Assembler, which will generate a file called nufli-template.bin. Copy this file into the Settings directory of NUFLIX Studio over the existing one, and subsequent conversions will use it right away.
The source for the original NUFLI displayer is also included in the file nufli-displayer.asm as a courtesy. Note that NUFLIX studio cannot use the template generated from this file.
The UI is implemented using UI Toolkit, and it is set up in such a way that it can be used within the editor without having to press play. The window can be opened from the menu via Window → NUFLIX Studio, and it's ready to use straight away. It is recommended to right click the title of the tab and turn on UI Toolkit Live Reload, which will cause the window to pick up any changes to the UI structure immediately. The window is defined in Assets/UI/MainWindow.uxml.
The main window is implemented in the MainWindowLogic class. In builds it is driven via the RuntimeMainWindow wrapper, while the editor window is set up by the EditorMainWindow class. There's limited support for retaining some state during hot reloading, so whenever the code is modified, the editor will reload the same file and remember conversion settings. However, it doesn't retain edits to the picture. See the MainWindowLogic.RestoreAfterHotswapping() method for details.
The two main screens are defined by the ConverterPane and EditorPane classes, while MainWindowLogic acts as the glue between them, and manages the image conversion pipeline.