Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
  You are not logged in - nap
Sparkle 3   [2023]

Sparkle 3 Released by :
OMG

Release Date :
5 November 2023

Type :
Other Platform C64 Tool

Website :
https://github.com/spartaomg/SparkleCPP

User rating:**********  10/10 (8 votes)   See votestatistics

Credits :
Code .... Sparta of Genesis Project, OMG, Propaganda Magazine Staff
Test .... Loloke of Lethargy
  Raistlin of C64GFX Staff, Genesis Project
  Schedar of Lethargy
  Soci of Singular, The IDE64 project, VICE Team
  Visage of Lethargy
Help .... Ksubi
  Raistlin of C64GFX Staff, Genesis Project
  Schedar of Lethargy
  Visage of Lethargy

Download :

Look for downloads on external sites:
 Pokefinder.org


Summary
Submitted by Sparta on 5 November 2023
Sparkle is an easy-to-use “all-in-one” cross-platform solution to creating multi-file Commodore 64 projects with an IRQ loader (demo, game, disk magazine, music collection, etc.), inspired by the loaders of Lft, Krill, and Bitbreaker. The Sparkle PC tool will generate D64 disk images using the information you provide in a text file called loader script that will allow you to load your files, code, data, music, etc. in the order of your preference with a state-of-the-art IRQ loader and simple loader calls.

Please see the user manual for details.

New in Sparkle 3:

- Full rewrite in C++, allowing cross-platform use. The Sparkle PC tool has been tested on Windows 11, Intel macOS Monterey 12.7, Ubuntu 22.04, as well as WSL Ubuntu, Debian, and Kali Linux. This version is a command-line tool, lacking the previous versions’ GUI.

- New memory layout of the C64 resident code. The loader occupies $0160-$02ff and the loader buffer $0300-$03ff. The stack is reduced to $0100-$015f. The loader code now starts with the fallback IRQ which is followed by the Sparkle_SendCmd function and then by the code needed for Sparkle_LoadNext calls. If the fallback IRQ is not used then stack can be extended to $0100-$017a. If both the fallback IRQ and LoadA calls are not needed then the stack can be extended to $0100-$019f. Simply update the stack pointer using the LDX #$7a/#$9f + TXS instructions.

- Improved file compression with limited 16-bit match sequence offsets. Data blocks are loaded and decompressed in a first come first serve order so normally they cannot rely on data outside their own boundaries (i.e., the content of other blocks in the same bundle). This limits compression efficacy because there is no guarantee those blocks get loaded ahead of the current one. There are, however, exceptions. Blocks containing the end of one bundle and the beginning of the next one are always loaded in a fixed order. Blocks from previous tracks can also be relied upon because the R/W head only moves to the next track once all blocks from the current one got loaded. Sparkle takes these variables into account during compression. The user can also specify previously loaded or runtime generated static memory segments using the newly introduced Mem entry type that Sparkle will also use to search for match sequences outside the block’s boundaries to further improve compression.

- File parameter math expression evaluation. Sparkle uses the TinyExpr++ library by Blake Madden (which is based on the TinyExpr library by Lewis Van Winkle) to evaluate math formulas. Formulas must start with a = sign followed by the formula. As previously for file parameters, the default number format is hexadecimal and any number without a prefix is regarded as a hex number. For decimal numbers, the “.” Prefix must be used. For example, the following entry

File: koala.kla d800 =2+.8000+.1000 =.200+(2*.400)

will load 1000 ($3e8) bytes to the color RAM from decimal offset 9002 ($232a) in koala.kla. The use of constants is not supported.

- Directory art import: Sparkle now supports import from D64, PRG, TXT, BIN, C, PET, KickAss ASM, JSON, PNG and BMP image files. Sparkle uses the LodePNG library by Lode Vandevenne to decode PNG files. Image files must use two colors, and must have a width of exactly 16 characters (128 pixels or a multiple of 128 if the image is enlarged) and a height of a multiple of 8 pixels. Borders are not allowed. Sparkle will attempt to find a space character in the image to determine background and foreground colors. If no space found then it will use the darker color as background. Image files must display the uppercase charset and their appearance cannot rely on command characters.

- Introducing the DirIndex bundle entry type. By default, all bundles (or up to 128) are added to Sparkle’s internal directory (as in all previous versions of Sparkle). By adding the DirIndex entry type to at least one bundle the user can create an alternative internal directory structure where only bundles with a DirIndex are added to the internal directory. The DirIndex entry can have a random value between $01-$7f (or $01-$7d if a hi-score file is added to the disk). DirIndex value $00 is preserved for bundle 0 and is used internally. For this reason, bundle 0 doesn’t require a DirIndex entry. If at least one DirIndex is added to the script, then all other bundles (the ones without a DirIndex) will only be accessible using a sequential (Sparkle_LoadNext) loader call. DirIndex values are constants and will remain the same even if the order of bundles changes.

- Introducing the ThisSide and NextSide disk info entry types. They are only needed if disks from a multi-disk project are created separately, from their own scripts. They can take a hex value between $00-$7f. If defined, the values of these entries will be used to identify the sequence of disks. If the disks are created using a single script, then these entries are not needed and Sparkle will assign a disk index to each disk automatically, starting with 0 for the first disk, and the index is autoincremented for each subsequent disk.

- The Sparkle_InstallIRQ and Sparkle_RestoreIRQ loader functions have been removed due to memory constraints.

- Bug fixes.

- Thanks to Ksubi/G*P, Raistlin/G*P, Visage/Lethargy, Loloke/Lethargy, Schedar/Lethargy, Soci/Sigular for testing and help, and Magnar/Censor Design for suggestions!
Search CSDb
Advanced
Navigate
Prev - Random - Next
Detailed Info
· Summaries (1)
· User Comments (5)
· Production Notes
Fun Stuff
· Goofs
· Hidden Parts
· Trivia
Forum
· Discuss this release
Support CSDb
Help keep CSDb running:



Funding status:




About this site:
CSDb (Commodore 64 Scene Database) is a website which goal is to gather as much information and material about the scene around the commodore 64 computer - the worlds most popular home computer throughout time. Here you can find almost anything which was ever made for the commodore 64, and more is being added every day. As this website is scene related, you can mostly find demos, music and graphics made by the people who made the scene (the sceners), but you can also find a lot of the old classic games here. Try out the search box in the top right corner, or check out the CSDb main page for the latest additions.
Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.089 sec.