Code > text > data
SkoolKit 7.1 has been released. As usual, copies may be obtained from the download page, the Python Package Index, the Ubuntu PPA, or the Fedora copr repo.
Among the changes worthy of note in this release is the improved control file
generation algorithm that sna2ctl.py
uses when no code map is provided. The
algorithm is now much faster, and strongly prefers to mark a chunk of bytes as
code first, text second (if it really doesn’t look like code), and data last
(if it really looks like neither code nor text). The main idea behind these
preferences is that more code and text will be identified, at the expense of
misidentifying more data. But since data that has been marked as code or text
is easier to spot and fix than code or text that has been marked as data, the
cost is worth it.
In other sna2ctl.py
news, that command can now read configuration from
skoolkit.ini, and has also gained the --ini
option (for setting the value
of a configuration parameter) and the --show-config
option (for showing all
configuration parameter values). So if you want sna2ctl.py
to always produce
hexadecimal control files, you can add the line Hex=2
to the [sna2ctl]
section in skoolkit.ini and forget about having to use the --hex
option on
the command line all the time.
Speaking of control files, sna2skool.py
now has the ability to read multiple
control files by default (e.g. both game-1.ctl and game-2.ctl when the
input snapshot is game.z80), and to use the --ctl
option multiple times
(for specifying two or more control files manually). This change makes
sna2skool.py
easier to use if you prefer to split your large control file
into smaller, more manageable chunks.
On the image macro front, #UDGARRAY
can now specify attribute address ranges,
as an alternative to specifying an attribute value separately for each tile.
For example, if you are creating an 8x4 graphic whose attribute values are
located at addresses 32000-32031, you can now write a macro like this:
#UDGARRAY8;31744-31992-8@32000-32031(box)
Hopefully we can all agree that this is much nicer than having to specify each of those 32 attribute values individually.
And that’s it for the new features that I can be bothered to spend time
explaining in any detail. If you want to know more about the other changes in
7.1, such as the ability to render numeric values in instruction operands as
negative numbers (e.g. LD A,-1
), or how the @*sub
and @*fix
directives
can insert an instruction after the current one without first specifying a
replacement, I suggest heading over to the
changelog.