# SkoolKit 3.x changelog

## 3.7 (2014-03-08)

- Added support for numbers in binary notation (e.g. %10101010)

- Added the `s` and `S` control directives for encoding DEFS statements (with optional non-zero byte values); the `z` and `Z` directives are now deprecated

- Added support to control files and skool file templates for specifying the base of numeric values in DEFB, DEFM, DEFS and DEFW statements

- Added the `--preserve-base` option to skool2ctl.py and skool2sft.py (to preserve the base of decimal and hexadecimal values in DEFB, DEFM, DEFS and DEFW statements)

- Added the `JavaScript` parameter to the [Game] section (for specifying JavaScript files to include in every page of a disassembly)

- Fixed the bug that prevents DEFB statements containing only strings and DEFM statements containing only bytes from being restored from a control file or a skool file template

- Added changelog entries to manic_miner.ref, jet_set_willy.ref and 48.rom.ref

## 3.6 (2013-11-02)

- Enhanced the #UDGARRAY macro so that it can create an animated image from an arbitrary sequence of frames

- Enhanced the #FONT macro so that it can create an image of arbitrary text

- Added support for copying arbitrary files into an HTML disassembly by using the [Resources] section in the ref file

- Added the `--join-css` option to skool2html.py (to concatenate CSS files into a single file)

- Added the `--search-dirs` option to skool2html.py (to show the locations that skool2html.py searches for resources)

- Added support for creating disassemblies with a start address below 10000

- Added an example control file for the 48K Spectrum ROM: 48.rom.ctl

- Control files can now preserve blank comments that span two or more instructions

- The `[Config]` section no longer has to be in the ref file named on the skool2html.py command line; it can be in any secondary ref file

- Fixed the bug that makes skool2html.py fail if the `FontPath`, `JavaScriptPath` or `StyleSheetPath` parameter in the `[Paths]` section of the ref file is set to some directory other than the default

## 3.5 (2013-09-01)

- Added the tap2sna.py command (for building snapshots from TAP/TZX files)

- Added support to skool2html.py for multiple CSS themes

- Added the ‘green’, ‘plum’ and ‘wide’ CSS themes: skoolkit-green.css, skoolkit-plum.css, skoolkit-wide.css

- Moved the `Font` and `StyleSheet` parameters from the `[Paths]` section to the [Game] section

- Moved the `JavaScript` parameter from the `[Paths]` section to the [Page:*] section

- Moved the `Logo` parameter from the `[Paths]` section to the [Game] section and renamed it `LogoImage`

- The #R macro now renders the addresses of remote entries in the specified case and base, and can resolve the addresses of remote entry points

- skool2asm.py now writes ORG addresses in the specified case and base

- Annotated the source code remnants at 39936 in jet_set_willy.ctl

## 3.4 (2013-07-08)

- Dropped support for Python 2.6 and 3.1

- Added long options to every command

- Added the `--asm-labels` and `--create-labels` options to skool2html.py (to use ASM labels defined by @label directives, and to create default labels for unlabelled instructions)

- Added the `--erefs` option to sna2skool.py (to always add comments that list entry point referrers)

- Added the `--package-dir` option to skool2asm.py (to show the path to the skoolkit package directory)

- Added support for the `LinkOperands` parameter in the [Game] section of the ref file, which may be used to enable the address operands of LD instructions to be hyperlinked

- Added support for defining image colours by using hex triplets in the [Colours] section of the ref file

- Added support to the @set ASM directive for the handle-unsupported-macros and wrap-column-width-min properties

- Fixed the `#EREFS` and `#REFS` macros so that they work with hexadecimal address parameters

- Fixed the bug that crashes sna2skool.py when generating a control file from a code execution map and a snapshot with a code block that terminates at 65535

- Fixed how skool2asm.py renders table cells with rowspan > 1 and wrapped contents alongside cells with rowspan = 1

- Removed support for the `#NAME` macro (what it did can be done by the #HTML macro instead)

- Removed the documentation sources and man page sources from the SkoolKit distribution (they can be obtained from GitHub)

## 3.3.2 (2013-05-13)

- Added the `-T` option to skool2html.py (to specify a CSS theme)

- Added the `-p` option to skool2html.py (to show the path to the skoolkit package directory)

- setup.py now installs the resources directory (so a local copy is no longer required when SkoolKit has been installed via `setup.py install`)

- Added jet_set_willy-dark.css (to complete the ‘dark’ theme for that disassembly)

- Added documentation on how to write an instruction-level comment that contains opening or closing braces when rendered

- Fixed the appearance of transparent table cells in HTML output

- Fixed sna2skool.py so that a control file specified by the `-c` option takes precedence over a default skool file template

- Fixed manic_miner.ctl so that the comments at 40177-40191 apply to a pristine snapshot (before stack operations have corrupted those addresses)

## 3.3.1 (2013-03-04)

- Added support to the @set ASM directive for the comment-width-min, indent, instruction-width, label-colons, line-width and warnings properties

- Added support to the `HtmlWriterClass` parameter (in the [Config] section) and the @writer directive for specifying a module outside the module search path (e.g. a standalone module that is not part of an installed package)

- sna2skool.py now correctly renders an empty block description as a dot (`.`) on a line of its own

## 3.3 (2013-01-08)

- Added support to sna2skool.py for reading code execution maps produced by the Fuse, SpecEmu, Spud, Zero and Z80 emulators (to generate more accurate control files)

- Increased the speed at which sna2skool.py generates control files

- Added support to sna2skool.py for disassembling 128K SNA snapshots

## 3.2 (2012-11-01)

- Added support to sna2skool.py for disassembling 128K Z80 snapshots and 16K, 48K and 128K SZX snapshots

- Added the #LIST macro (for rendering lists of bulleted items in both HTML mode and ASM mode)

- Added the @set ASM directive (for setting properties on the ASM writer)

- Added trivia entries to jet_set_willy.ref

- Annotated the source code remnants at 32768 and 37708 in manic_miner.ctl

## 3.1.4 (2012-10-11)

- Added support to skool2ctl.py and skool2sft.py for DEFB and DEFM statements that contain both strings and bytes

- skool2ctl.py now correctly processes lower case DEFB, DEFM, DEFS and DEFW statements

- The length of a string (in a DEFB or DEFM statement) that contains one or more backslashes is now correctly calculated by skool2ctl.py and skool2sft.py

- DEFB and DEFM statements that contain both strings and bytes are now correctly converted to lower case, upper case, decimal or hexadecimal (when using the `-l`, `-u`, `-D` and `-H` options of skool2asm.py and skool2html.py)

- Operations involving (IX+n) or (IY+n) expressions are now correctly converted to lower case decimal or hexadecimal (when using the `-l`, `-D` and `-H` options of skool2asm.py and skool2html.py)

## 3.1.3 (2012-09-11)

- The ‘Glossary’ page is formatted in the same way as the ‘Trivia’, ‘Bugs’, ‘Pokes’ and ‘Graphic glitches’ pages

- When the link text of a #LINK macro is left blank, the link text of the page is substituted

- The disassembler escapes backslashes and double quotes in DEFM statements (so that skool2asm.py no longer has to)

- DEFB and DEFM statements that contain both strings and bytes are parsed correctly for the purpose of building a memory snapshot

## 3.1.2 (2012-08-01)

- Added the #HTML macro (for rendering arbitrary text in HTML mode only)

- Added support for distinguishing input values from output values in a routine’s register section (by using prefixes such as ‘Input:’ and ‘Output:’)

- Added support for the `InputRegisterTableHeader` and `OutputRegisterTableHeader` parameters in the [Game] section of the ref file

- Added the ‘default’ CSS class for HTML tables created by the #TABLE macro

## 3.1.1 (2012-07-17)

- Enhanced the #UDGARRAY macro so that it accepts both horizontal and vertical steps in UDG address ranges

- Added support for the `Font` and `FontPath` parameters in the [Paths] section of the ref file (for specifying font files used by CSS @font-face rules)

- Added a Spectrum theme CSS file that uses the Spectrum font and colours: skoolkit-spectrum.css

- Fixed skool2asm.py so that it escapes backslashes and double quotes in DEFM statements

## 3.1 (2012-06-19)

- Dropped support for Python 2.5

- Added documentation on extending SkoolKit

- Added the @writer ASM directive (to specify the class to use for producing ASM output)

- Added the #CHR macro (for rendering arbitrary unicode characters); removed support for the redundant `#C` macro accordingly

- Added support for the #CALL, `#REFS`, `#EREFS`, #PUSHS, #POKES and #POPS macros in ASM mode

- Added the `-c` option to skool2html.py (to simulate adding lines to the ref file)

- Added a dark theme CSS file: skoolkit-dark.css

## 3.0.2 (2012-05-01)

- Added room images and descriptions to manic_miner.ctl and jet_set_willy.ctl (based on reference material from Andrew Broad and J. G. Harston)

- Fixed the bug that prevents the ‘Data tables and buffers’ section from appearing on the disassembly index page when the default `DataTables` link group is used

## 3.0.1 (2012-04-11)

- Added support for creating GIF files (including transparent and animated GIFs)

- Added support for creating animated PNGs in APNG format

- Added support for transparency in PNG images (by using the `PNGAlpha` parameter in the [ImageWriter] section of the ref file)

- Added an example control file: jet_set_willy.ctl

- Fixed the bug in how images are cropped by the #FONT, #SCR, #UDG and #UDGARRAY macros when using non-zero `X` and `Y` parameters

## 3.0 (2012-03-20)

- SkoolKit now works with Python 3.x

- Added a native image creation library, which can be configured by using the [ImageWriter] section of the ref file; gd and PIL are no longer required or supported

- Enhanced the #SCR macro so that graphic data and attribute bytes in places other than the display file and attribute file may be used to build a screenshot

- Added image-cropping capabilities to the #FONT, #SCR, #UDG and #UDGARRAY macros