Generic sections
The ref file sections described in this section are suitable for use in the
disassembly of any Spectrum program.
[Bug:*:*]
Each Bug:*:* section defines an entry on the ‘Bugs’ page. The section names
and contents take the form:
[Bug:anchor:title]
First paragraph.
Second paragraph.
...
where:
- anchor is the name of the HTML anchor for the entry
- title is the title of the entry
Paragraphs should be separated by blank lines.
[Colours]
The Colours section contains colour definitions that will be used when
creating images. Each line has the form:
where name is the colour name, and R,G,B is an RGB triplet.
Recognised colour names and their default RGB values are:
- BLACK: 0,0,0
- BLUE: 0,0,197
- RED: 197,0,0
- MAGENTA: 197,0,197
- GREEN: 0,198,0
- CYAN: 0,198,197
- YELLOW: 197,198,0
- WHITE: 205,198,205
- BRIGHT_BLACK: 0,0,0
- BRIGHT_BLUE: 0,0,255
- BRIGHT_RED: 255,0,0
- BRIGHT_MAGENTA: 255,0,255
- BRIGHT_GREEN: 0,255,0
- BRIGHT_CYAN: 0,255,255
- BRIGHT_YELLOW: 255,255,0
- BRIGHT_WHITE: 255,255,255
- TRANSPARENT: 0,254,0
[Config]
The Config section contains configuration parameters in the format:
Recognised parameters are:
- SkoolFile - the name of the main skool file to use if not given on the
skool2html.py command line; if not specified, the
skool file with the same base name as the ref file will be used
- SkoolClass - the name of the Python class to use for the game; if not
specified, the generic SkoolGame will be used
- SkoolWriterClass - the name of the Python class to use for writing the
HTML disassembly of the game; if not specified, the generic SkoolWriter
will be used
- GameDir - the root directory of the game’s HTML disassembly; if not
specified, the base name of the skool or ref file given on the
skool2html.py command line will be used
[Fact:*:*]
Each Fact:*:* section defines an entry on the ‘Trivia’ page. The section
names and contents take the form:
[Fact:anchor:title]
First paragraph.
Second paragraph.
...
where:
- anchor is the name of the HTML anchor for the entry
- title is the title of the entry
Paragraphs should be separated by blank lines.
[Game]
The Game section contains parameters in the form:
Universally recognised generic parameter names are:
- Game - the name of the game
- GameStatusBufferIncludes - a comma-separated list of addresses of entries
that should appear on the ‘Game status buffer’ page in addition to those that
are marked with a g (see the
skool file format reference)
- Logo - the skool macro to use to create the game logo image
- TitlePrefix - the prefix to use before the name of the game in the title
of the disassembly (default: ‘The complete’)
- TitleSuffix - the suffix to use after the name of the game in the title
of the disassembly (default: ‘RAM disassembly’)
Parameter names used only by the Skool Daze, Back to Skool and Contact Sam
Cruise disassemblies are:
- CharBufferBaseByte - the LSB of the address of the first byte of each
character’s buffer
- FontAddress - the base address of the skool font
- MaxCharacter - the highest character number of the non-player human
characters in the game
- MaxLesson - the highest lesson number in the game
- MinCharacter - the lowest character number of the non-player human
characters in the game
- MinLesson - the lowest lesson number in the game
- PlayAreaSize - the width and height of the play area in tiles (e.g.
96,21); used to create the images on the ‘Play area’ and ‘Initial
animatory states and locations’ pages
- PlayAreaTopLeft - the play area coordinates of the top-left tile in the
images on the ‘Play area’ and ‘Initial animatory states and locations’ pages
(e.g. 0,0)
[Glossary:*]
Each Glossary:* section defines an entry on the ‘Glossary’ page. The
section names and contents take the form:
[Glossary:term]
Definition.
where term is the term being defined in the entry. The definition should be
a single paragraph.
[GraphicGlitch:*:*]
Each GraphicGlitch:*:* section defines an entry on the ‘Graphic glitches’
page. The section names and contents take the form:
[GraphicGlitch:anchor:title]
First paragraph.
Second paragraph.
...
where:
- anchor is the name of the HTML anchor for the entry
- title is the title of the entry
Paragraphs should be separated by blank lines.
[Graphics]
The contents of the Graphics section, if present, are used as the HTML
source for the body of the ‘Other graphics’ page.
[Index]
The Index section contains a list of link group IDs in the order in which
the link groups should appear on the disassembly index page. The link groups
themselves are defined in [Index:*:*] sections (see below).
[Index:*:*]
Each Index:*:* section defines a link group (a group of links on the
disassembly home page). The section names and contents take the form:
[Index:groupID:text]
Page1ID
Page2ID
...
where:
- groupID is the link group ID (as may be declared in the [Index]
section)
- text is the text of the link group header
- Page1ID, Page2ID etc. are the IDs of the pages that will appear in
the link group
The page IDs that may be used in an [Index:*:*] section are the same as the
file IDs that may be used in the [Paths] section.
[Info]
The Info section contains release and copyright information. Each line has
the form:
where name is one of the following:
- Copyright - the text written to the bottom line of the footer of every
page of the HTML disassembly; its intended purpose is to define a copyright
message
- Created - the text written next to the copyright message in the footer of
every page of the HTML disassembly; its intended purpose is to indicate the
software used to create the disassembly
- Release - the text written to the top line of the footer of every page of
the HTML disassembly; its intended purpose is to define a message indicating
the release name and version number
If the string $VERSION appears anywhere in the Created message, it is
replaced by the version number of SkoolKit.
[Links]
The Links section defines the link text for the various pages in the HTML
disassembly (as displayed on the disassembly index page). Each line has the
form:
where:
- ID is the ID of the page
- text is the link text
Recognised generic page IDs are:
- Bugs - the ‘Bugs’ page
- DataMap - the ‘Data’ memory map page
- Facts - the ‘Trivia’ page
- GameStatusBuffer - the ‘Game status buffer’ page
- Glossary - the ‘Glossary’ page
- GraphicGlitches - the ‘Graphic glitches’ page
- Graphics - the ‘Other graphics’ page
- MemoryMap - the ‘Everything’ memory map page (default: ‘Everything’)
- MessagesMap - the ‘Messages’ memory map page
- Pokes - the ‘Pokes’ page
- RoutinesMap - the ‘Routines’ memory map page
Recognised page IDs used only in the Skool Daze, Back to Skool or Contact Sam
Cruise disassemblies are:
- AnimatoryStates - the ‘Animatory states’ page
- AnimatoryStateTiles - the ‘Animatory state tiles’ page
- CharacterBuffers - the ‘Character buffers’ page
- CommandLists - the ‘Command lists’ page (default: ‘Command lists’)
- InitialAnimatoryStates - the ‘Initial animatory states and locations’
page
- Keys - the ‘Keypress table’ page
- LessonIndex - the ‘Lessons’ page
- MainTimetable - the ‘Main timetable’ page (default: ‘Main timetable’)
- PersonalTimetables - the ‘Personal timetables’ page
- PlayArea - the ‘Play area’ page
- PlayAreaTiles - the ‘Play area tiles’ page
The default link text for a page is the same as the page title (see
[Titles]) except where indicated above.
If the link text starts with some text in square brackets, that text alone is
used as the link text, and the remaining text is displayed alongside the
hyperlink. For example (from the Links section in sd.ref):
MemoryMap=[Everything] (routines, data, text and unused addresses)
This declares that the link text for the ‘Everything’ memory map page will be
‘Everything’, and ‘(routines, data, text and unused addresses)’ will be
displayed alongside it.
[MapDetails]
The MapDetails section defines the text (if any) that appears at the top of
the memory map pages. Each line has the form:
where X is one of:
- d (data memory map)
- r (routines memory map)
- t (messages memory map)
[OtherCode:*]
Each OtherCode:* section defines a secondary disassembly that will appear
under ‘Other code’ on the main disassembly home page. The section names take
the form:
where asm_id is a unique ID for the secondary disassembly. The unique ID
may be used by the #R macro when referring to routines or data
blocks in the secondary disassembly from another disassembly.
Each OtherCode:* section contains parameters in the form:
Recognised parameters are:
- Header - the header text that will appear on each routine or data block
disassembly page in the secondary disassembly
- Index - the filename of the home page of the secondary disassembly
- Path - the directory that will contain the secondary disassembly files
- Source - the skool file from which to generate the secondary
disassembly
- Title - the title of the secondary disassembly (as it will appear under
‘Other code’ on the main disassembly home page)
[Paths]
The Paths section defines the locations of the various files and
directories in the HTML disassembly. Each line has the form:
where:
- ID is the ID of the file or directory
- path is the path of the file or directory relative to the root directory
of the disassembly
Recognised generic file IDs and their default paths are:
- Bugs - the ‘Bugs’ page (default: reference/bugs.html)
- DataMap - the ‘Data’ memory map page (default: maps/data.html)
- Facts - the ‘Trivia’ page (default: reference/facts.html)
- GameIndex - the disassembly home page (default: index.html)
- GameStatusBuffer - the ‘Game status buffer’ page (default:
buffers/gbuffer.html)
- Glossary - the ‘Glossary’ page (default: reference/glossary.html)
- GraphicGlitches - the ‘Graphic glitches’ page (default:
graphics/glitches.html)
- Graphics - the ‘Other graphics’ page (default: graphics/graphics.html)
- MemoryMap - the ‘Everything’ memory map page (default: maps/all.html)
- MessagesMap - the ‘Messages’ memory map page (default:
maps/messages.html)
- Pokes - the ‘Pokes’ page (default: reference/pokes.html)
- RoutinesMap - the ‘Routines’ memory map page (default:
maps/routines.html)
Recognised generic directory IDs and their default paths are:
- FontImagePath - the directory in which font images (created by the
#FONT macro) will be placed (default: images/font)
- JavaScriptPath - the directory in which to store the JavaScript file
(default: ..)
- ScreenshotImagePath - the directory in which screenshot images (created
by the #SCR macro) will be placed (default: images/scr)
- StyleSheetPath - the directory in which to store the CSS file (default:
..)
- UDGImagePath - the directory in which UDG images (created by the
#UDG or #UDGARRAY macro) will be placed
(default: images/udgs)
Other recognised generic file IDs and their default paths are:
- JavaScript - the base name of the JavaScript file to use (default:
skool.js)
- StyleSheet - the base name of the CSS file to use (default: style.css)
The JavaScript and CSS files will be searched for by name in the current
directory (from which skool2html.py is run) and the src subdirectory, and
copied to the directories defined by the JavaScriptPath and
StyleSheetPath parameters (see above).
Recognised file IDs used only in the Skool Daze, Back to Skool or Contact Sam
Cruise disassemblies and their default paths (if any) are:
- AnimatoryStates - the ‘Animatory states’ page (default:
graphics/as.html)
- AnimatoryStateTiles - the ‘Animatory state tiles’ page (default:
graphics/astiles/astiles.html)
- CharacterBuffers - the ‘Character buffers’ page (default:
buffers/cbuffer.html)
- CommandLists - the ‘Command lists’ page
- InitialAnimatoryStates - the ‘Initial animatory states and locations’
page (default: graphics/asstart.html)
- Keys - the ‘Keypress table’ page (default: tables/keys.html)
- LessonIndex - the ‘Lessons’ page (default: lessons/index.html)
- Logo - the game logo image (default: images/logo.png)
- MainTimetable - the ‘Main timetable’ page
- PersonalTimetables - the ‘Personal timetables’ page (default:
lessons/timetables.html)
- PlayArea - the ‘Play area’ page (default: graphics/playarea.html)
- PlayAreaTiles - the ‘Play area tiles’ page (default:
graphics/patiles/patiles.html)
Recognised directory IDs used only in the Skool Daze, Back to Skool or Contact
Sam Cruise disassemblies and their default paths are:
- AnimatoryStateImagePath - the directory in which animatory state images
(created by the #ASIMG macro) will be placed (default:
images/animatory_states)
- AnimatoryStateTilesPath - the directory in which animatory state tile
images (created by the #ASTILE macro) will be placed
(default: graphics/astiles)
- BoxImagePath - the directory in which box images (created by the
#BOX macro) will be placed (default: images/boxes)
- LessonsPath - the directory in which lesson pages will be created
(default: lessons)
- MutableImagePath - the directory in which mutable images (created by the
#MUTABLE macro) will be placed (default: images/mutables)
- PlayAreaTilesPath - the directory in which play area tile images (created
by the #PATILE macro) will be placed (default:
graphics/patiles)
- SkoolImagePath - the directory in which play area images (created by the
#SKOOL macro) will be placed (default: images/skool)
[Poke:*:*]
Each Poke:*:* section defines an entry on the ‘Pokes’ page. The section
names and contents take the form:
[Poke:anchor:title]
First paragraph.
Second paragraph.
...
where:
- anchor is the name of the HTML anchor for the entry
- title is the title of the entry
Paragraphs should be separated by blank lines.
[Titles]
The Titles section defines the titles of the various pages in the HTML
disassembly. Each line has the form:
where:
- ID is the ID of the page
- title is the page title
Recognised generic page IDs and their default titles are:
- Bugs - the ‘Bugs’ page (default: ‘Bugs’)
- DataMap - the ‘Data’ memory map page (default: ‘Data’)
- Facts - the ‘Trivia’ page (default: ‘Trivia’)
- GameIndex - the disassembly index page (default: ‘Index’)
- GameStatusBuffer - the ‘Game status buffer’ page (default: ‘Game status
buffer’)
- Glossary - the ‘Glossary’ page (default: ‘Glossary’)
- GraphicGlitches - the ‘Graphic glitches’ page (default: ‘Graphic
glitches’)
- Graphics - the ‘Other graphics’ page (default: ‘Graphics’)
- MemoryMap - the ‘Everything’ memory map page (default: ‘Memory map’)
- MessagesMap - the ‘Messages’ memory map page (default: ‘Messages’)
- Pokes - the ‘Pokes’ page (default: ‘Pokes’)
- RoutinesMap - the ‘Routines’ memory map page (default: ‘Routines’)
Recognised page IDs used only in the Skool Daze, Back to Skool or Contact Sam
Cruise disassemblies and their default titles are:
- AnimatoryStates - the ‘Animatory states’ page (default: ‘Animatory
states’)
- AnimatoryStateTiles - the ‘Animatory state tiles’ page (default:
‘Animatory state tiles’)
- CharacterBuffers - the ‘Character buffers’ page (default: ‘Character
buffers’)
- InitialAnimatoryStates - the ‘Initial animatory states and locations’
page (default: ‘Initial animatory states and locations’)
- Keys - the ‘Keypress table’ page (default: ‘Keypress table’)
- LessonIndex - the ‘Lessons’ page (default: ‘Lessons’)
- PersonalTimetables - the ‘Personal timetables’ page (default:
‘Personal timetables’)
- PlayArea - the ‘Play area’ page (default: ‘Play area’)
- PlayAreaTiles - the ‘Play area tiles’ page (default: ‘Play area tiles’)
Skool game sections
The ref file sections described in this section are designed for use in the
Skool Daze, Back to Skool and Contact Sam Cruise disassemblies, and will
probably not be useful in the disassembly of any other program.
[AnimatoryStates]
The AnimatoryStates section contains descriptions of the animatory states
in the game. These descriptions are used on the ‘Animatory states’ page. Each
line in the section has the form:
where:
- N is the animatory state number (0-127)
- description is the description of the animatory state
One other line that may appear is:
which defines the text that will appear at the top of the ‘Animatory States’
page.
[AnimatoryStateTileInfo]
The AnimatoryStateTileInfo section contains the HTML source for the text at
the top of the ‘Animatory state tiles’ page.
[Changelog:*]
Changelog:* sections appear only in changelog.ref. Each one defines an
entry in the changelog for the Skool Disassemblies. The section names and
contents take the form:
[Changelog:title]
Intro text.
First top-level item.
First subitem.
Second subitem.
First subsubitem.
Second top-level item.
...
where title is the title of the entry, and the intro text and top-level
items are separated by blank lines. Lower-level items are created by using
indentation, as shown.
If the intro text is a single hyphen (-), it will not be included in the
final HTML rendering.
[CharacterBufferInfo]
The CharacterBufferInfo section contains the HTML source for the text at
the top of the ‘Character buffers’ page.
[Characters]
The Characters section contains the names of the characters in the game.
Each line has the form:
where:
- N is the character’s number
- name is the character’s name
The information in this section is used on the lessons pages, the ‘Personal
timetables’ page, and the ‘Character buffers’ page.
[CharBuf:*]
Each CharBuf:* section defines an entry for a character buffer byte (or set
of bytes) on the ‘Character buffers’ page. The section names and contents take
the form:
[CharBuf:bytes]
Description 1.
Description 2.
...
where bytes is some text indicating the bytes being described
(e.g. 105,106), and the individual descriptions are separated by blank
lines.
[Features]
The Features section contains parameters in the form:
where:
- name is the name of a feature that may be included in the HTML
disassembly
- value is 1 if the feature should be included, 0 otherwise
Recognised feature names are:
- AnimatoryStates - the ‘Animatory states’ page
- AnimatoryStateTiles - the ‘Animatory state tiles’ page
- CharacterBuffers - the ‘Character buffers’ page
- InitialAnimatoryStates - the ‘Initial animatory states and locations’
page
- KeypressTable - the ‘Keypress table’ page
- Lessons - the lessons pages and the ‘Personal timetables’ page
- PlayArea - the ‘Play area’ page
- PlayAreaTiles - the ‘Play area tiles’ page
If there is no entry for a given feature in this section, it will not be
included in the HTML disassembly.
[KeypressRoutines]
The KeypressRoutines section defines the purposes of the keypress handling
routines as they appear on the ‘Keypress table’ page. Each line in the section
takes the form:
where:
- address is the address of the keypress handling routine
- purpose is the purpose of the routine (e.g. ‘Left’, ‘Right’)
[KeytableDetails]
The KeytableDetails section contains the HTML source for the text at the
top of the ‘Keypress table’ page.
[Lessons]
The Lessons section defines the names of the lessons as they appear on the
lesson pages and the lesson index page. Each line has the form:
where:
- N is the lesson number
- name is the name of the lesson
[PlayAreaTileInfo]
The PlayAreaTileInfo section contains the HTML source for the text at the
top of the ‘Play area tiles’ page.