summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--haunt.scm3
-rw-r--r--manuals/chickadee/3D-Models.html157
-rw-r--r--manuals/chickadee/API-Reference.html29
-rw-r--r--manuals/chickadee/Agendas.html47
-rw-r--r--manuals/chickadee/Audio-Files.html221
-rw-r--r--manuals/chickadee/Audio.html129
-rw-r--r--manuals/chickadee/Basics.html53
-rw-r--r--manuals/chickadee/Bezier-Curves.html37
-rw-r--r--manuals/chickadee/Blending-and-Depth-Testing.html103
-rw-r--r--manuals/chickadee/Blending.html23
-rw-r--r--manuals/chickadee/Buffers.html73
-rw-r--r--manuals/chickadee/Channels.html31
-rw-r--r--manuals/chickadee/Colors.html377
-rw-r--r--manuals/chickadee/Copying-This-Manual.html21
-rw-r--r--manuals/chickadee/Easings.html53
-rw-r--r--manuals/chickadee/Fonts.html35
-rw-r--r--manuals/chickadee/Framebuffers.html29
-rw-r--r--manuals/chickadee/GNU-Free-Documentation-License.html30
-rw-r--r--manuals/chickadee/Graphics.html51
-rw-r--r--manuals/chickadee/Grid.html47
-rw-r--r--manuals/chickadee/Index.html260
-rw-r--r--manuals/chickadee/Input-Devices.html156
-rw-r--r--manuals/chickadee/Installation.html21
-rw-r--r--manuals/chickadee/Kernel.html331
-rw-r--r--manuals/chickadee/Lines-and-Shapes.html25
-rw-r--r--manuals/chickadee/Live-Coding.html127
-rw-r--r--manuals/chickadee/Math.html39
-rw-r--r--manuals/chickadee/Matrices.html63
-rw-r--r--manuals/chickadee/Particles.html51
-rw-r--r--manuals/chickadee/Path-Finding.html25
-rw-r--r--manuals/chickadee/Quaternions.html33
-rw-r--r--manuals/chickadee/Rectangles.html101
-rw-r--r--manuals/chickadee/Rendering-Engine.html51
-rw-r--r--manuals/chickadee/Requirements.html22
-rw-r--r--manuals/chickadee/Scripting.html31
-rw-r--r--manuals/chickadee/Scripts.html39
-rw-r--r--manuals/chickadee/Shaders.html201
-rw-r--r--manuals/chickadee/Sources.html336
-rw-r--r--manuals/chickadee/Sprites.html46
-rw-r--r--manuals/chickadee/Textures.html60
-rw-r--r--manuals/chickadee/The-Environment.html152
-rw-r--r--manuals/chickadee/The-Game-Loop.html360
-rw-r--r--manuals/chickadee/The-Listener.html141
-rw-r--r--manuals/chickadee/Tile-Maps.html129
-rw-r--r--manuals/chickadee/Tweening.html21
-rw-r--r--manuals/chickadee/Vectors.html118
-rw-r--r--manuals/chickadee/Vertex-Arrays.html103
-rw-r--r--manuals/chickadee/Viewports.html35
-rw-r--r--manuals/chickadee/Window-Manipulation.html191
-rw-r--r--manuals/chickadee/index.html146
-rw-r--r--posts/2020-04-08-chickadee-0.5.0-released.md61
51 files changed, 3467 insertions, 1557 deletions
diff --git a/haunt.scm b/haunt.scm
index 36cafe4..3baf246 100644
--- a/haunt.scm
+++ b/haunt.scm
@@ -579,7 +579,8 @@ Scheme.")
"Guile-OpenGL >= 0.1.0")
#:license "GNU GPLv3+"
#:releases
- `(("0.4.0" ,(date 2019 06 04))
+ `(("0.5.0" ,(date 2020 04 08))
+ ("0.4.0" ,(date 2019 06 04))
("0.3.0" ,(date 2018 10 03))
("0.2.0" ,(date 2017 01 26))
("0.1.0" ,(date 2017 01 23)))))
diff --git a/manuals/chickadee/3D-Models.html b/manuals/chickadee/3D-Models.html
new file mode 100644
index 0000000..1e6d2ca
--- /dev/null
+++ b/manuals/chickadee/3D-Models.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>3D Models (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="3D Models (The Chickadee Game Toolkit)">
+<meta name="keywords" content="3D Models (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Graphics.html#Graphics" rel="up" title="Graphics">
+<link href="Blending.html#Blending" rel="next" title="Blending">
+<link href="Particles.html#Particles" rel="prev" title="Particles">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="g_t3D-Models"></span><div class="header">
+<p>
+Next: <a href="Blending.html#Blending" accesskey="n" rel="next">Blending</a>, Previous: <a href="Particles.html#Particles" accesskey="p" rel="prev">Particles</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="g_t3D-Models-1"></span><h4 class="subsection">2.3.8 3D Models</h4>
+
+<p><em>Disclaimer: Chickadee is alpha software, but 3D model support is
+even more alpha than that. There are many missing features in both
+the model loading and rendering components, so set your expectations
+accordingly!</em>
+</p>
+<p>Chickadee can load and render 3D models in the classic OBJ and more
+modern glTF 2.0 formats.
+</p>
+<p>Here&rsquo;s some basic boilerplate to render a 3D model:
+</p>
+<div class="example">
+<pre class="example">(use-modules (chickadee)
+ (chickadee math)
+ (chickadee math matrix)
+ (chickadee render model))
+
+(define model #f)
+(define projection-matrix
+ (perspective-projection (/ pi 3.0) (/ 4.0 3.0) 0.1 500.0))
+;; Adjust these 2 matrices so that you can actually see the model.
+(define view-matrix (make-identity-matrix4))
+(define model-matrix (make-identity-matrix4))
+
+(define (load)
+ (set! model (load-obj &quot;model.obj&quot;))
+
+(define (draw alpha)
+ (with-projection projection-matrix
+ (with-depth-test #t
+ (draw-model model model-matrix view-matrix))))
+
+(run-game #:load load #:draw draw)
+</pre></div>
+
+<dl>
+<dt id="index-load_002dobj">Procedure: <strong>load-obj</strong> <em>file-name</em></dt>
+<dd><p>Load the OBJ formatted model in <var>file-name</var> and return a 3D model
+object.
+</p>
+<p>OBJ models are rendered using a Phong lighting model, which is a
+work-in-progress.
+</p></dd></dl>
+
+<dl>
+<dt id="index-load_002dgltf">Procedure: <strong>load-gltf</strong> <em>file-name</em></dt>
+<dd><p>Load the glTF 2.0 formatted model in <var>file-name</var> and return a 3D
+model object.
+</p>
+<p>glTF models are rendered using a physically based lighting model,
+which is currently a stub to be implemented later.
+</p></dd></dl>
+
+<dl>
+<dt id="index-model_003f">Procedure: <strong>model?</strong> <em>obj</em></dt>
+<dd><p>Return <code>#t</code> if <var>obj</var> is a 3D model.
+</p></dd></dl>
+
+<dl>
+<dt id="index-draw_002dmodel">Procedure: <strong>draw-model</strong> <em>model model-matrix view-matrix</em></dt>
+<dd><p>Render <var>model</var> with the transformation matrices <var>model-matrix</var>
+and <var>view-matrix</var> applied.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/API-Reference.html b/manuals/chickadee/API-Reference.html
index 67d2be0..19e03cf 100644
--- a/manuals/chickadee/API-Reference.html
+++ b/manuals/chickadee/API-Reference.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>API Reference (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,23 +80,23 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="API-Reference"></a>
-<div class="header">
+<span id="API-Reference"></span><div class="header">
<p>
Next: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="n" rel="next">Copying This Manual</a>, Previous: <a href="Installation.html#Installation" accesskey="p" rel="prev">Installation</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="API-Reference-1"></a>
-<h2 class="chapter">2 API Reference</h2>
+<span id="API-Reference-1"></span><h2 class="chapter">2 API Reference</h2>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="Kernel.html#Kernel" accesskey="1">Kernel</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The fundamental components.
+<tr><td align="left" valign="top">&bull; <a href="Kernel.html#Kernel" accesskey="1">Kernel</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The fundamental components.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Math.html#Math" accesskey="2">Math</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Linear algebra, spatial partitioning, and more.
+<tr><td align="left" valign="top">&bull; <a href="Math.html#Math" accesskey="2">Math</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Linear algebra, spatial partitioning, and more.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Graphics.html#Graphics" accesskey="3">Graphics</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Eye candy.
+<tr><td align="left" valign="top">&bull; <a href="Graphics.html#Graphics" accesskey="3">Graphics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Eye candy.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Scripting.html#Scripting" accesskey="4">Scripting</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bringing the game world to life.
+<tr><td align="left" valign="top">&bull; <a href="Audio.html#Audio" accesskey="4">Audio</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Make some noise.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Scripting.html#Scripting" accesskey="5">Scripting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bringing the game world to life.
</td></tr>
</table>
diff --git a/manuals/chickadee/Agendas.html b/manuals/chickadee/Agendas.html
index 3580ade..93894c1 100644
--- a/manuals/chickadee/Agendas.html
+++ b/manuals/chickadee/Agendas.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Agendas (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Agendas"></a>
-<div class="header">
+<span id="Agendas"></span><div class="header">
<p>
Next: <a href="Scripts.html#Scripts" accesskey="n" rel="next">Scripts</a>, Up: <a href="Scripting.html#Scripting" accesskey="u" rel="up">Scripting</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Agendas-1"></a>
-<h4 class="subsection">2.4.1 Agendas</h4>
+<span id="Agendas-1"></span><h4 class="subsection">2.5.1 Agendas</h4>
<p>To schedule a task to be performed later, an &ldquo;agenda&rdquo; is used.
There is a default, global agenda that is ready to be used, or
@@ -145,69 +134,69 @@ scoped and can be changed using the <code>with-agenda</code> special form:
</pre></div>
<dl>
-<dt><a name="index-make_002dagenda"></a>Procedure: <strong>make-agenda</strong></dt>
+<dt id="index-make_002dagenda">Procedure: <strong>make-agenda</strong></dt>
<dd><p>Return a new task scheduler.
</p></dd></dl>
<dl>
-<dt><a name="index-agenda_003f"></a>Procedure: <strong>agenda?</strong> <em>obj</em></dt>
+<dt id="index-agenda_003f">Procedure: <strong>agenda?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is an agenda.
</p></dd></dl>
<dl>
-<dt><a name="index-current_002dagenda"></a>Procedure: <strong>current-agenda</strong></dt>
-<dt><a name="index-current_002dagenda-1"></a>Procedure: <strong>current-agenda</strong> <em>agenda</em></dt>
+<dt id="index-current_002dagenda">Procedure: <strong>current-agenda</strong></dt>
+<dt id="index-current_002dagenda-1">Procedure: <strong>current-agenda</strong> <em>agenda</em></dt>
<dd><p>When called with no arguments, return the current agenda. When called
with one argument, set the current agenda to <var>agenda</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dagenda"></a>Syntax: <strong>with-agenda</strong> <em>agenda body &hellip;</em></dt>
+<dt id="index-with_002dagenda">Syntax: <strong>with-agenda</strong> <em>agenda body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> with the current agenda set to <var>agenda</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-agenda_002dtime"></a>Procedure: <strong>agenda-time</strong></dt>
+<dt id="index-agenda_002dtime">Procedure: <strong>agenda-time</strong></dt>
<dd><p>Return the current agenda time.
</p></dd></dl>
<dl>
-<dt><a name="index-update_002dagenda"></a>Procedure: <strong>update-agenda</strong> <em>dt</em></dt>
+<dt id="index-update_002dagenda">Procedure: <strong>update-agenda</strong> <em>dt</em></dt>
<dd><p>Advance the current agenda by <var>dt</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-schedule_002dat"></a>Procedure: <strong>schedule-at</strong> <em>time thunk</em></dt>
+<dt id="index-schedule_002dat">Procedure: <strong>schedule-at</strong> <em>time thunk</em></dt>
<dd><p>Schedule <var>thunk</var>, a procedure of zero arguments, to be run at
<var>time</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-schedule_002dafter"></a>Procedure: <strong>schedule-after</strong> <em>delay thunk</em></dt>
+<dt id="index-schedule_002dafter">Procedure: <strong>schedule-after</strong> <em>delay thunk</em></dt>
<dd><p>Schedule <var>thunk</var>, a procedure of zero arguments, to be run after
<var>delay</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-schedule_002devery"></a>Procedure: <strong>schedule-every</strong> <em>interval thunk [n]</em></dt>
+<dt id="index-schedule_002devery">Procedure: <strong>schedule-every</strong> <em>interval thunk [n]</em></dt>
<dd><p>Schedule <var>thunk</var>, a procedure of zero arguments, to be run every
<var>interval</var> amount of time. Repeat this <var>n</var> times, or
indefinitely if not specified.
</p></dd></dl>
<dl>
-<dt><a name="index-at"></a>Syntax: <strong>at</strong> <em>time body &hellip;</em></dt>
+<dt id="index-at">Syntax: <strong>at</strong> <em>time body &hellip;</em></dt>
<dd><p>Schedule <var>body</var> to be evaluated at <var>time</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-after"></a>Syntax: <strong>after</strong> <em>delay body &hellip;</em></dt>
+<dt id="index-after">Syntax: <strong>after</strong> <em>delay body &hellip;</em></dt>
<dd><p>Schedule <var>body</var> to be evaluated after <var>delay</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-every"></a>Syntax: <strong>every</strong> <em>interval body &hellip;</em></dt>
-<dt><a name="index-every-1"></a>Syntax: <strong>every</strong> <em>(interval n) body &hellip;</em></dt>
+<dt id="index-every">Syntax: <strong>every</strong> <em>interval body &hellip;</em></dt>
+<dt id="index-every-1">Syntax: <strong>every</strong> <em>(interval n) body &hellip;</em></dt>
<dd><p>Schedule <var>body</var> to be evaluated every <var>interval</var> amount of
time. Repeat this <var>n</var> times, or indefinitely if not specified.
</p></dd></dl>
diff --git a/manuals/chickadee/Audio-Files.html b/manuals/chickadee/Audio-Files.html
new file mode 100644
index 0000000..a10a418
--- /dev/null
+++ b/manuals/chickadee/Audio-Files.html
@@ -0,0 +1,221 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Audio Files (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="Audio Files (The Chickadee Game Toolkit)">
+<meta name="keywords" content="Audio Files (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Audio.html#Audio" rel="up" title="Audio">
+<link href="Sources.html#Sources" rel="next" title="Sources">
+<link href="Audio.html#Audio" rel="prev" title="Audio">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="Audio-Files"></span><div class="header">
+<p>
+Next: <a href="Sources.html#Sources" accesskey="n" rel="next">Sources</a>, Up: <a href="Audio.html#Audio" accesskey="u" rel="up">Audio</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Audio-Files-1"></span><h4 class="subsection">2.4.1 Audio Files</h4>
+
+<p>Sound data is represented by a special <code>&lt;audio&gt;</code> data type that
+stores not only the audio samples themselves, but metadata such as
+sample rate, number of channels, and how many bits are used for each
+sample.
+</p>
+<dl>
+<dt id="index-load_002daudio">Procedure: <strong>load-audio</strong> <em>file-name [#:mode <code>static</code>]</em></dt>
+<dd><p>Load audio within <var>file-name</var>. The following file formats are
+currently supported:
+</p>
+<ul>
+<li> WAV
+</li><li> MP3
+</li><li> Ogg Vorbis
+</li></ul>
+
+<p>Audio files can be loaded in two different ways, as indicated by
+<var>mode</var>:
+</p>
+<ul>
+<li> static:
+Load the entire audio file into memory.
+</li><li> stream:
+Load chunks of the audio file as needed.
+</li></ul>
+
+<p>Generally speaking, sound effects don&rsquo;t take up much space and should
+be loaded statically, but music files are much larger and should use
+streaming. Static loading is the default.
+</p></dd></dl>
+
+<dl>
+<dt id="index-audio_003f">Procedure: <strong>audio?</strong> <em><var>obj</var></em></dt>
+<dd><p>Return <code>#t</code> if <var>obj</var> is an audio object.
+</p></dd></dl>
+
+<dl>
+<dt id="index-streaming_002daudio_003f">Procedure: <strong>streaming-audio?</strong> <em><var>audio</var></em></dt>
+<dd><p>Return <code>#t</code> if <var>audio</var> uses stream loading.
+</p></dd></dl>
+
+<dl>
+<dt id="index-static_002daudio_003f">Procedure: <strong>static-audio?</strong></dt>
+<dd><p>Return <code>#t</code> if <var>audio</var> uses static loading.
+</p></dd></dl>
+
+<dl>
+<dt id="index-audio_002dmode">Procedure: <strong>audio-mode</strong> <em>audio</em></dt>
+<dd><p>Return the loading mode for <var>audio</var>, either <code>static</code> or
+<code>stream</code>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-audio_002dduration">Procedure: <strong>audio-duration</strong> <em>audio</em></dt>
+<dd><p>Return the duration of <var>audio</var> in seconds.
+</p></dd></dl>
+
+<dl>
+<dt id="index-audio_002dbits_002dper_002dsample">Procedure: <strong>audio-bits-per-sample</strong> <em>audio</em></dt>
+<dd><p>Return the number of bits per sample in <var>audio</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-audio_002dchannels">Procedure: <strong>audio-channels</strong> <em>audio</em></dt>
+<dd><p>Return the number of channels in <var>audio</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-audio_002dsample_002drate">Procedure: <strong>audio-sample-rate</strong> <em>audio</em></dt>
+<dd><p>Return the sample rate of <var>audio</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-audio_002dplay">Procedure: <strong>audio-play</strong> <em>audio [#:pitch 1.0] [#:volume 1.0] [#:min-volume 0.0] [#:max-volume 1.0] [#:max-distance] [#:reference-distance 0.0] [#:rolloff-factor 1.0] [#:cone-outer-volume 0.0] [#:cone-inner-angle 0.0] [#:cone-outer-angle] [#:position <code>(vec3 0.0 0.0 0.0)</code>] [#:velocity <code>(vec3 0.0 0.0 0.0)</code>] [#:direction <code>(vec3 0.0 0.0 0.0)</code>] [#:relative? <code>#f</code>]</em></dt>
+<dd>
+<p>Play <var>audio</var>. There are many, many knobs to tweak that will
+affect the sound that comes out of the player&rsquo;s speakers.:
+</p>
+<ul>
+<li> <var>pitch</var>:
+Pitch multiplier. The default value of 1.0 means no change in pitch.
+</li><li> <var>volume</var>:
+Volume multiplier. The default value of 1.0 means no change in volume.
+</li><li> <var>min-volume</var>:
+Minimum volume.
+</li><li> <var>max-volume</var>:
+Maximum volume.
+</li><li> <var>max-distance</var>:
+Used with the inverse clamped distance model (the default model) to
+set the distance where there will no longer be any attenuation of the
+source.
+</li><li> <var>reference-distance</var>:
+The distance where the volume for the audio would drop by half (before
+being influenced by the rolloff factor or maximum distance.)
+</li><li> <var>rolloff-factor</var>:
+For slowing down or speeding up the rate of attenuation. The default
+of 1.0 means no attenuation adjustment is made.
+</li><li> <var>cone-outer-volume</var>:
+The volume when outside the oriented cone.
+</li><li> <var>cone-inner-angle</var>:
+Inner angle of the sound cone, in radians. The default value is 0.
+</li><li> <var>cone-outer-angle</var>:
+Outer angle of the sound cone, in radians. The default value is 2pi
+radians, or 360 degrees.
+</li><li> <var>position</var>:
+The source of the sound emitter in 3D space.
+</li><li> <var>velocity</var>:
+The velocity of the sound emitter in 3D space.
+</li><li> <var>direction</var>:
+The direction of the sound emitter in 3D space.
+</li><li> <var>relative?</var>:
+A flag that determines whether the position is in absolute coordinates
+or relative to the listener&rsquo;s location. Absolute coordinates are used
+by default.
+</li></ul>
+
+<p>For games with basic sound needs (that is to say they don&rsquo;t need 3D
+sound modeling), the only things that really matter are <var>volume</var>
+and <var>pitch</var>.
+</p>
+</dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Sources.html#Sources" accesskey="n" rel="next">Sources</a>, Up: <a href="Audio.html#Audio" accesskey="u" rel="up">Audio</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/Audio.html b/manuals/chickadee/Audio.html
new file mode 100644
index 0000000..5540e83
--- /dev/null
+++ b/manuals/chickadee/Audio.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Audio (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="Audio (The Chickadee Game Toolkit)">
+<meta name="keywords" content="Audio (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="API-Reference.html#API-Reference" rel="up" title="API Reference">
+<link href="Audio-Files.html#Audio-Files" rel="next" title="Audio Files">
+<link href="Shaders.html#Shaders" rel="prev" title="Shaders">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="Audio"></span><div class="header">
+<p>
+Next: <a href="Scripting.html#Scripting" accesskey="n" rel="next">Scripting</a>, Previous: <a href="Graphics.html#Graphics" accesskey="p" rel="prev">Graphics</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Audio-1"></span><h3 class="section">2.4 Audio</h3>
+
+<p>A game isn&rsquo;t complete without sound. Most games play some cool
+background music to set the mood and have many sound effects to play
+when events happen. The <code>(chickadee audio)</code> module provides a
+robust audio API backed by the OpenAL 3D audio system.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="Audio-Files.html#Audio-Files" accesskey="1">Audio Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Not audiophiles.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Sources.html#Sources" accesskey="2">Sources</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Audio emitters.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="The-Listener.html#The-Listener" accesskey="3">The Listener</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The player&rsquo;s ears.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="The-Environment.html#The-Environment" accesskey="4">The Environment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Global sound model settings.
+</td></tr>
+</table>
+
+<p>The basics of playing audio are very simple. Just load an audio file
+in the load hook (or anywhere else once the game loop is running) and
+play it!
+</p>
+<div class="example">
+<pre class="example">(use-modules (chickadee audio))
+
+(define audio #f)
+
+(define (load)
+ (set! audio (load-audio &quot;neat-sound-effect.wav&quot;))
+ (audio-play audio))
+
+(run-game #:load load)
+</pre></div>
+
+<p>For more advanced usage, check out the full API reference in the
+following sections.
+</p>
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/Basics.html b/manuals/chickadee/Basics.html
index 4c2d313..70d1a04 100644
--- a/manuals/chickadee/Basics.html
+++ b/manuals/chickadee/Basics.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Basics (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,17 +80,15 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Basics"></a>
-<div class="header">
+<span id="Basics"></span><div class="header">
<p>
Next: <a href="Vectors.html#Vectors" accesskey="n" rel="next">Vectors</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Basics-1"></a>
-<h4 class="subsection">2.2.1 Basics</h4>
+<span id="Basics-1"></span><h4 class="subsection">2.2.1 Basics</h4>
<dl>
-<dt><a name="index-pi"></a>Variable: <strong>pi</strong></dt>
+<dt id="index-pi">Variable: <strong>pi</strong></dt>
<dd><p>An essential constant for all trigonometry. Pi is the ratio of a
circle&rsquo;s circumferences to its diameter. Since pi is an irrational
number, the <var>pi</var> in Chickadee is a mere floating point
@@ -107,15 +96,43 @@ approximation that is &ldquo;good enough.&rdquo;
</p></dd></dl>
<dl>
-<dt><a name="index-pi_002f2"></a>Variable: <strong>pi/2</strong></dt>
+<dt id="index-pi_002f2">Variable: <strong>pi/2</strong></dt>
<dd><p>Half of <var>pi</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-cotan"></a>Procedure: <strong>cotan</strong> <em>z</em></dt>
+<dt id="index-2pi">Variable: <strong>2pi</strong></dt>
+<dd><p>Twice <var>pi</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-cotan">Procedure: <strong>cotan</strong> <em>z</em></dt>
<dd><p>Return the cotangent of <var>z</var>.
</p></dd></dl>
+<dl>
+<dt id="index-clamp">Procedure: <strong>clamp</strong> <em>min max x</em></dt>
+<dd><p>Restrict <var>x</var> to the inclusive range defined by <var>min</var> and
+<var>max</var>. This procedure assumes that <var>min</var> is actually less
+than <var>max</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-lerp">Procedure: <strong>lerp</strong> <em>start end alpha</em></dt>
+<dd><p>Linearly interpolate the numbers <var>start</var> and <var>end</var> using the
+factor <var>alpha</var>, a number in the range [0, 1].
+</p></dd></dl>
+
+<dl>
+<dt id="index-degrees_002d_003eradians">Procedure: <strong>degrees-&gt;radians</strong> <em>degrees</em></dt>
+<dd><p>Convert <var>degrees</var> to radians.
+</p></dd></dl>
+
+<dl>
+<dt id="index-degrees_002d_003eradians-1">Procedure: <strong>degrees-&gt;radians</strong> <em>radians</em></dt>
+<dd><p>Convert <var>radians</var> to degrees.
+</p></dd></dl>
+
diff --git a/manuals/chickadee/Bezier-Curves.html b/manuals/chickadee/Bezier-Curves.html
index ff04e6b..c7dd693 100644
--- a/manuals/chickadee/Bezier-Curves.html
+++ b/manuals/chickadee/Bezier-Curves.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Bezier Curves (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Bezier-Curves"></a>
-<div class="header">
+<span id="Bezier-Curves"></span><div class="header">
<p>
Next: <a href="Path-Finding.html#Path-Finding" accesskey="n" rel="next">Path Finding</a>, Previous: <a href="Easings.html#Easings" accesskey="p" rel="prev">Easings</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Bezier-Curves-1"></a>
-<h4 class="subsection">2.2.8 Bezier Curves</h4>
+<span id="Bezier-Curves-1"></span><h4 class="subsection">2.2.8 Bezier Curves</h4>
<p>The <code>(chickadee math bezier)</code> module provides an API for
describing cubic Bezier curves in 2D space. These curves are notably
@@ -112,39 +101,39 @@ mostly for visualizing and debugging curves that would be unseen in
the final game. See See <a href="Lines-and-Shapes.html#Lines-and-Shapes">Lines and Shapes</a> for more information.
</p>
<dl>
-<dt><a name="index-make_002dbezier_002dcurve"></a>Procedure: <strong>make-bezier-curve</strong> <em>p0 p1 p2 p3</em></dt>
+<dt id="index-make_002dbezier_002dcurve">Procedure: <strong>make-bezier-curve</strong> <em>p0 p1 p2 p3</em></dt>
<dd><p>Return a new Bezier curve object whose starting point is <var>p0</var>,
ending point is <var>p3</var>, and control points are <var>p1</var> and
<var>p2</var>. All points are 2D vectors.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dcurve_003f"></a>Procedure: <strong>bezier-curve?</strong> <em>obj</em></dt>
+<dt id="index-bezier_002dcurve_003f">Procedure: <strong>bezier-curve?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a Bezier curve.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dcurve_002dp0"></a>Procedure: <strong>bezier-curve-p0</strong> <em>bezier</em></dt>
+<dt id="index-bezier_002dcurve_002dp0">Procedure: <strong>bezier-curve-p0</strong> <em>bezier</em></dt>
<dd><p>Return the starting point of <var>bezier</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dcurve_002dp1"></a>Procedure: <strong>bezier-curve-p1</strong> <em>bezier</em></dt>
+<dt id="index-bezier_002dcurve_002dp1">Procedure: <strong>bezier-curve-p1</strong> <em>bezier</em></dt>
<dd><p>Return the first control point of <var>bezier</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dcurve_002dp2"></a>Procedure: <strong>bezier-curve-p2</strong> <em>bezier</em></dt>
+<dt id="index-bezier_002dcurve_002dp2">Procedure: <strong>bezier-curve-p2</strong> <em>bezier</em></dt>
<dd><p>Return the second control point of <var>bezier</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dcurve_002dp3"></a>Procedure: <strong>bezier-curve-p3</strong> <em>bezier</em></dt>
+<dt id="index-bezier_002dcurve_002dp3">Procedure: <strong>bezier-curve-p3</strong> <em>bezier</em></dt>
<dd><p>Return the end point of <var>bezier</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dpath"></a>Procedure: <strong>bezier-path</strong> <em>. control-points</em></dt>
+<dt id="index-bezier_002dpath">Procedure: <strong>bezier-path</strong> <em>. control-points</em></dt>
<dd><p>Return a list of connected bezier curves defined by
<var>control-points</var>. The first curve is defined by the first 4
arguments and every additional curve thereafter requires 3 additional
@@ -152,14 +141,14 @@ arguments.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dcurve_002dpoint_002dat"></a>Procedure: <strong>bezier-curve-point-at</strong> <em>bezier t</em></dt>
+<dt id="index-bezier_002dcurve_002dpoint_002dat">Procedure: <strong>bezier-curve-point-at</strong> <em>bezier t</em></dt>
<dd><p>Return the coordinates for <var>bezier</var> at <var>t</var> (a value in the
range [0, 1] representing how far from the start of the curve to
check) as a 2D vector.
</p></dd></dl>
<dl>
-<dt><a name="index-bezier_002dcurve_002dpoint_002dat_0021"></a>Procedure: <strong>bezier-curve-point-at!</strong> <em>dest bezier t</em></dt>
+<dt id="index-bezier_002dcurve_002dpoint_002dat_0021">Procedure: <strong>bezier-curve-point-at!</strong> <em>dest bezier t</em></dt>
<dd><p>Modify the 2D vector <var>dest</var> in-place to contain the coordinates
for <var>bezier</var> at <var>t</var>.
</p></dd></dl>
diff --git a/manuals/chickadee/Blending-and-Depth-Testing.html b/manuals/chickadee/Blending-and-Depth-Testing.html
deleted file mode 100644
index 2591a95..0000000
--- a/manuals/chickadee/Blending-and-Depth-Testing.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- Copyright (C) 2017 David Thompson davet@gnu.org
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3
-or any later version published by the Free Software Foundation;
-with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled "GNU
-Free Documentation License".
-
-A copy of the license is also available from the Free Software
-Foundation Web site at http://www.gnu.org/licenses/fdl.html.
-
-
-The document was typeset with
-http://www.texinfo.org/ (GNU Texinfo).
- -->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>Blending and Depth Testing (The Chickadee Game Toolkit)</title>
-
-<meta name="description" content="Blending and Depth Testing (The Chickadee Game Toolkit)">
-<meta name="keywords" content="Blending and Depth Testing (The Chickadee Game Toolkit)">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
-<meta name="Generator" content="makeinfo">
-<link href="index.html#Top" rel="start" title="Top">
-<link href="Index.html#Index" rel="index" title="Index">
-<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
-<link href="Graphics.html#Graphics" rel="up" title="Graphics">
-<link href="Vertex-Arrays.html#Vertex-Arrays" rel="next" title="Vertex Arrays">
-<link href="Fonts.html#Fonts" rel="prev" title="Fonts">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
-div.display {margin-left: 3.2em}
-div.example {margin-left: 3.2em}
-div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
-kbd {font-style: oblique}
-pre.display {font-family: inherit}
-pre.format {font-family: inherit}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.nolinebreak {white-space: nowrap}
-span.roman {font-family: initial; font-weight: normal}
-span.sansserif {font-family: sans-serif; font-weight: normal}
-ul.no-bullet {list-style: none}
-@media (min-width: 1140px) {
- body {
- margin-left: 14rem;
- margin-right: 4rem;
- max-width: 52rem;
- }
-}
-
-@media (min-width: 800px) and (max-width: 1140px) {
- body {
- margin-left: 6rem;
- margin-right: 4rem;
- max-width: 52rem;
- }
-}
-
-@media (max-width: 800px) {
- body {
- margin: 1rem;
- }
-}
-
--->
-</style>
-<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
-
-
-</head>
-
-<body lang="en">
-<a name="Blending-and-Depth-Testing"></a>
-<div class="header">
-<p>
-Next: <a href="Vertex-Arrays.html#Vertex-Arrays" accesskey="n" rel="next">Vertex Arrays</a>, Previous: <a href="Fonts.html#Fonts" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
-</div>
-<hr>
-<a name="Blending-and-Depth-Testing-1"></a>
-<h4 class="subsection">2.3.7 Blending and Depth Testing</h4>
-
-
-
-
-</body>
-</html>
diff --git a/manuals/chickadee/Blending.html b/manuals/chickadee/Blending.html
index 6b3aa0d..c89f8d5 100644
--- a/manuals/chickadee/Blending.html
+++ b/manuals/chickadee/Blending.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Blending (The Chickadee Game Toolkit)</title>
@@ -33,28 +33,19 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Graphics.html#Graphics" rel="up" title="Graphics">
<link href="Framebuffers.html#Framebuffers" rel="next" title="Framebuffers">
-<link href="Particles.html#Particles" rel="prev" title="Particles">
+<link href="3D-Models.html#g_t3D-Models" rel="prev" title="3D Models">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Blending"></a>
-<div class="header">
+<span id="Blending"></span><div class="header">
<p>
-Next: <a href="Framebuffers.html#Framebuffers" accesskey="n" rel="next">Framebuffers</a>, Previous: <a href="Particles.html#Particles" accesskey="p" rel="prev">Particles</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="Framebuffers.html#Framebuffers" accesskey="n" rel="next">Framebuffers</a>, Previous: <a href="3D-Models.html#g_t3D-Models" accesskey="p" rel="prev">3D Models</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Blending-1"></a>
-<h4 class="subsection">2.3.7 Blending</h4>
+<span id="Blending-1"></span><h4 class="subsection">2.3.9 Blending</h4>
<p>Rendering a scene often involves drawing layers of objects that
overlap each other. Blending determines how two overlapping pixels
diff --git a/manuals/chickadee/Buffers.html b/manuals/chickadee/Buffers.html
index 00e3cfe..bfea5a1 100644
--- a/manuals/chickadee/Buffers.html
+++ b/manuals/chickadee/Buffers.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Buffers (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Buffers"></a>
-<div class="header">
+<span id="Buffers"></span><div class="header">
<p>
Next: <a href="Shaders.html#Shaders" accesskey="n" rel="next">Shaders</a>, Previous: <a href="Rendering-Engine.html#Rendering-Engine" accesskey="p" rel="prev">Rendering Engine</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Buffers-1"></a>
-<h4 class="subsection">2.3.11 Buffers</h4>
+<span id="Buffers-1"></span><h4 class="subsection">2.3.13 Buffers</h4>
<p>Alright, let&rsquo;s brush aside all of those pretty high level abstractions
and discuss what is going on under the hood. The GPU exists as a
@@ -158,7 +147,7 @@ into the buffer. To provided a typed view into a buffer, the
<p>To render a square, the GPU needs to draw two triangles, which means
we need 6 vertices in total. However, the above buffer only contains
-data for 4 vertices. This is becase there are only 4 unique vertices
+data for 4 vertices. This is because there are only 4 unique vertices
for a square, but 2 of them must be repeated for each triangle. To
work with deduplicated vertex data, an &ldquo;index buffer&rdquo; must be
created.
@@ -202,7 +191,7 @@ shapes, or particles to see GPU buffers in action.
<p>Without further ado, the API reference:
</p>
<dl>
-<dt><a name="index-make_002dbuffer"></a>Procedure: <strong>make-buffer</strong> <em>data [#:name &quot;anonymous&quot;] [#:length] [#:offset 0] [#:stride 0] [#:target <code>vertex</code>] [#:usage <code>static</code>]</em></dt>
+<dt id="index-make_002dbuffer">Procedure: <strong>make-buffer</strong> <em>data [#:name &quot;anonymous&quot;] [#:length] [#:offset 0] [#:stride 0] [#:target <code>vertex</code>] [#:usage <code>static</code>]</em></dt>
<dd>
<p>Upload <var>data</var>, a bytevector, to the GPU. By default, the entire
bytevector is uploaded. A subset of the data may be uploaded by
@@ -242,44 +231,44 @@ is never sent to the GPU.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_003f"></a>Procedure: <strong>buffer?</strong> <em>obj</em></dt>
+<dt id="index-buffer_003f">Procedure: <strong>buffer?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a GPU buffer.
</p></dd></dl>
<dl>
-<dt><a name="index-index_002dbuffer_003f"></a>Procedure: <strong>index-buffer?</strong> <em>buffer</em></dt>
+<dt id="index-index_002dbuffer_003f">Procedure: <strong>index-buffer?</strong> <em>buffer</em></dt>
<dd><p>Return <code>#t</code> if <var>buffer</var> is an index buffer.
</p></dd></dl>
<dl>
-<dt><a name="index-null_002dbuffer"></a>Variable: <strong>null-buffer</strong></dt>
+<dt id="index-null_002dbuffer">Variable: <strong>null-buffer</strong></dt>
<dd><p>Represents the absence of a buffer.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dname"></a>Procedure: <strong>buffer-name</strong> <em>buffer</em></dt>
+<dt id="index-buffer_002dname">Procedure: <strong>buffer-name</strong> <em>buffer</em></dt>
<dd><p>Return the name of <var>buffer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dlength"></a>Procedure: <strong>buffer-length</strong> <em>buffer</em></dt>
+<dt id="index-buffer_002dlength">Procedure: <strong>buffer-length</strong> <em>buffer</em></dt>
<dd><p>Return the length of <var>buffer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dstride"></a>Procedure: <strong>buffer-stride</strong> <em>buffer</em></dt>
+<dt id="index-buffer_002dstride">Procedure: <strong>buffer-stride</strong> <em>buffer</em></dt>
<dd><p>Return the amount of space, in bytes, between each element in
<var>buffer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dtarget"></a>Procedure: <strong>buffer-target</strong> <em>buffer</em></dt>
+<dt id="index-buffer_002dtarget">Procedure: <strong>buffer-target</strong> <em>buffer</em></dt>
<dd><p>Return the the intended usage of <var>buffer</var>, either <code>vertex</code> or
<code>index</code>.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dusage"></a>Procedure: <strong>buffer-usage</strong> <em>buffer</em></dt>
+<dt id="index-buffer_002dusage">Procedure: <strong>buffer-usage</strong> <em>buffer</em></dt>
<dd><p>Return the intended usage of <var>buffer</var>, either <code>static</code> for
buffer data that will not change once sent to the GPU, or
<code>stream</code> for buffer data that will be frequently updated from the
@@ -287,14 +276,14 @@ client-side.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002ddata"></a>Procedure: <strong>buffer-data</strong> <em>buffer</em></dt>
+<dt id="index-buffer_002ddata">Procedure: <strong>buffer-data</strong> <em>buffer</em></dt>
<dd><p>Return a bytevector containing all the data within <var>buffer</var>. If
<var>buffer</var> has not been mapped (see <code>with-mapped-buffer</code>) then
this procedure will return <code>#f</code>.
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dmapped_002dbuffer"></a>Syntax: <strong>with-mapped-buffer</strong> <em>buffer body &hellip;</em></dt>
+<dt id="index-with_002dmapped_002dbuffer">Syntax: <strong>with-mapped-buffer</strong> <em>buffer body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> in the context of <var>buffer</var> having its data
synced from GPU memory to RAM. In this context, <code>buffer-data</code>
will return a bytevector of all the data stored in <var>buffer</var>. When
@@ -306,7 +295,7 @@ contents dynamically, such as a sprite batch.
</p></dd></dl>
<dl>
-<dt><a name="index-make_002dbuffer_002dview"></a>Procedure: <strong>make-buffer-view</strong> <em>#:buffer #:type #:component-type #:length [#:offset <code>0</code>] [#:divisor <code>1</code>] [#:name <code>&quot;anonymous&quot;</code>]</em></dt>
+<dt id="index-make_002dbuffer_002dview">Procedure: <strong>make-buffer-view</strong> <em>#:buffer #:type #:component-type #:length [#:offset <code>0</code>] [#:divisor <code>1</code>] [#:name <code>&quot;anonymous&quot;</code>]</em></dt>
<dd>
<p>Return a new buffer view for <var>buffer</var> starting at byte index
<var>offset</var> of <var>length</var> elements, where each element is of
@@ -361,42 +350,42 @@ for 2 instances, and so on.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dview_003f"></a>Procedure: <strong>buffer-view?</strong> <em>obj</em></dt>
+<dt id="index-buffer_002dview_003f">Procedure: <strong>buffer-view?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a buffer view.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dview_002d_003ebuffer"></a>Procedure: <strong>buffer-view-&gt;buffer</strong> <em>buffer-view</em></dt>
+<dt id="index-buffer_002dview_002d_003ebuffer">Procedure: <strong>buffer-view-&gt;buffer</strong> <em>buffer-view</em></dt>
<dd><p>Return the buffer that <var>buffer-view</var> is using.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dview_002dname"></a>Procedure: <strong>buffer-view-name</strong> <em>buffer-view</em></dt>
+<dt id="index-buffer_002dview_002dname">Procedure: <strong>buffer-view-name</strong> <em>buffer-view</em></dt>
<dd><p>Return the name of <var>buffer-view</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dview_002doffset"></a>Procedure: <strong>buffer-view-offset</strong> <em>buffer-view</em></dt>
+<dt id="index-buffer_002dview_002doffset">Procedure: <strong>buffer-view-offset</strong> <em>buffer-view</em></dt>
<dd><p>Return the byte offset of <var>buffer-view</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dview_002dtype"></a>Procedure: <strong>buffer-view-type</strong> <em>buffer-view</em></dt>
+<dt id="index-buffer_002dview_002dtype">Procedure: <strong>buffer-view-type</strong> <em>buffer-view</em></dt>
<dd><p>Return the data type of <var>buffer-view</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dview_002dcomponent_002dtype"></a>Procedure: <strong>buffer-view-component-type</strong> <em>buffer-view</em></dt>
+<dt id="index-buffer_002dview_002dcomponent_002dtype">Procedure: <strong>buffer-view-component-type</strong> <em>buffer-view</em></dt>
<dd><p>Return the component data type of <var>buffer-view</var>
</p></dd></dl>
<dl>
-<dt><a name="index-buffer_002dview_002ddivisor"></a>Procedure: <strong>buffer-view-divisor</strong> <em>buffer-view</em></dt>
+<dt id="index-buffer_002dview_002ddivisor">Procedure: <strong>buffer-view-divisor</strong> <em>buffer-view</em></dt>
<dd><p>Return the instance divisor for <var>buffer-view</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dmapped_002dbuffer_002dview"></a>Syntax: <strong>with-mapped-buffer-view</strong> <em>buffer-view body &hellip;</em></dt>
+<dt id="index-with_002dmapped_002dbuffer_002dview">Syntax: <strong>with-mapped-buffer-view</strong> <em>buffer-view body &hellip;</em></dt>
<dd>
<p>Evaluate <var>body</var> in the context of <var>buffer-view</var> having its
data synced from GPU memory to RAM. See <code>with-mapped-buffer</code> for
@@ -404,7 +393,7 @@ more information.
</p></dd></dl>
<dl>
-<dt><a name="index-make_002dvertex_002darray"></a>Procedure: <strong>make-vertex-array</strong> <em>#:indices #:attributes [#:mode <code>triangles</code>]</em></dt>
+<dt id="index-make_002dvertex_002darray">Procedure: <strong>make-vertex-array</strong> <em>#:indices #:attributes [#:mode <code>triangles</code>]</em></dt>
<dd>
<p>Return a new vertex array using the index data within the buffer view
<var>indices</var> and the vertex attribute data within <var>attributes</var>.
@@ -436,28 +425,28 @@ supported:
</dd></dl>
<dl>
-<dt><a name="index-null_002dvertex_002darray"></a>Variable: <strong>null-vertex-array</strong></dt>
+<dt id="index-null_002dvertex_002darray">Variable: <strong>null-vertex-array</strong></dt>
<dd><p>Represents the absence of a vertex array.
</p></dd></dl>
<dl>
-<dt><a name="index-vertex_002darray_003f"></a>Procedure: <strong>vertex-array?</strong> <em>obj</em></dt>
+<dt id="index-vertex_002darray_003f">Procedure: <strong>vertex-array?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a vertex array.
</p></dd></dl>
<dl>
-<dt><a name="index-vertex_002darray_002dindices"></a>Procedure: <strong>vertex-array-indices</strong> <em>vertex-array</em></dt>
+<dt id="index-vertex_002darray_002dindices">Procedure: <strong>vertex-array-indices</strong> <em>vertex-array</em></dt>
<dd><p>Return the buffer view containing index data for <var>vertex-array</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vertex_002darray_002dattributes"></a>Procedure: <strong>vertex-array-attributes</strong> <em>vertex-array</em></dt>
+<dt id="index-vertex_002darray_002dattributes">Procedure: <strong>vertex-array-attributes</strong> <em>vertex-array</em></dt>
<dd><p>Return the attribute index -&gt; buffer view mapping of vertex attribute
data for <var>vertex-array</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vertex_002darray_002dmode"></a>Procedure: <strong>vertex-array-mode</strong> <em>vertex-array</em></dt>
+<dt id="index-vertex_002darray_002dmode">Procedure: <strong>vertex-array-mode</strong> <em>vertex-array</em></dt>
<dd><p>Return the primitive rendering mode for <var>vertex-array</var>.
</p></dd></dl>
diff --git a/manuals/chickadee/Channels.html b/manuals/chickadee/Channels.html
index ece7ce5..9f63b1c 100644
--- a/manuals/chickadee/Channels.html
+++ b/manuals/chickadee/Channels.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Channels (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Channels"></a>
-<div class="header">
+<span id="Channels"></span><div class="header">
<p>
Previous: <a href="Tweening.html#Tweening" accesskey="p" rel="prev">Tweening</a>, Up: <a href="Scripting.html#Scripting" accesskey="u" rel="up">Scripting</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Channels-1"></a>
-<h4 class="subsection">2.4.4 Channels</h4>
+<span id="Channels-1"></span><h4 class="subsection">2.5.4 Channels</h4>
<p>Channels are a tool for communicating amongst different scripts. One
script can write a value to the channel and another can read from it.
@@ -120,23 +109,23 @@ someone on the other end of the line to complete the transaction.
</pre></div>
<dl>
-<dt><a name="index-make_002dchannel"></a>Procedure: <strong>make-channel</strong></dt>
+<dt id="index-make_002dchannel">Procedure: <strong>make-channel</strong></dt>
<dd><p>Return a new channel
</p></dd></dl>
<dl>
-<dt><a name="index-channel_003f"></a>Procedure: <strong>channel?</strong> <em>obj</em></dt>
+<dt id="index-channel_003f">Procedure: <strong>channel?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a channel.
</p></dd></dl>
<dl>
-<dt><a name="index-channel_002dget"></a>Procedure: <strong>channel-get</strong> <em>channel</em></dt>
+<dt id="index-channel_002dget">Procedure: <strong>channel-get</strong> <em>channel</em></dt>
<dd><p>Retrieve a value from <var>channel</var>. The current script suspends
until a value is available.
</p></dd></dl>
<dl>
-<dt><a name="index-channel_002dput"></a>Procedure: <strong>channel-put</strong> <em>channel data</em></dt>
+<dt id="index-channel_002dput">Procedure: <strong>channel-put</strong> <em>channel data</em></dt>
<dd><p>Send <var>data</var> to <var>channel</var>. The current script suspends until
another script is available to retrieve the value.
</p></dd></dl>
@@ -145,13 +134,13 @@ another script is available to retrieve the value.
callback procedures:
</p>
<dl>
-<dt><a name="index-channel_002dget_0021"></a>Procedure: <strong>channel-get!</strong> <em>channel proc</em></dt>
+<dt id="index-channel_002dget_0021">Procedure: <strong>channel-get!</strong> <em>channel proc</em></dt>
<dd><p>Asynchronously retrieve a value from <var>channel</var> and call <var>proc</var>
with that value.
</p></dd></dl>
<dl>
-<dt><a name="index-channel_002dput_0021"></a>Procedure: <strong>channel-put!</strong> <em>channel data [thunk]</em></dt>
+<dt id="index-channel_002dput_0021">Procedure: <strong>channel-put!</strong> <em>channel data [thunk]</em></dt>
<dd><p>Asynchronously send <var>data</var> to <var>channel</var> and call <var>thunk</var>
after it has been received.
</p></dd></dl>
diff --git a/manuals/chickadee/Colors.html b/manuals/chickadee/Colors.html
new file mode 100644
index 0000000..3c62439
--- /dev/null
+++ b/manuals/chickadee/Colors.html
@@ -0,0 +1,377 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Colors (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="Colors (The Chickadee Game Toolkit)">
+<meta name="keywords" content="Colors (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Graphics.html#Graphics" rel="up" title="Graphics">
+<link href="Textures.html#Textures" rel="next" title="Textures">
+<link href="Graphics.html#Graphics" rel="prev" title="Graphics">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="Colors"></span><div class="header">
+<p>
+Next: <a href="Textures.html#Textures" accesskey="n" rel="next">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Colors-1"></span><h4 class="subsection">2.3.1 Colors</h4>
+
+<p>Merriam-Webster defines color as &ldquo;a phenomenon of light (such as red,
+brown, pink, or gray) or visual perception that enables one to
+differentiate otherwise identical objects.&rdquo; In this essay, I
+will&hellip;
+</p>
+<p>Okay, okay. We all know what colors are. Chickadee provides a data
+type to represent color and some convenient procedures to work with
+them in the <code>(chickadee render color)</code> module. Colors are made
+up of four components, or channels: red, green, blue, and alpha
+(transparency.) Each of these values is expressed as a uniform
+floating point value in the range [0, 1]. 0 means that color channel
+is unrepresented in the resulting color, whereas 1 means that color
+channel is at full intensity.
+</p>
+<p>Making a color object is easy, and there&rsquo;s a few ways to do it
+depending on what&rsquo;s most convenient. The first is <code>make-color</code>,
+where you specify each channel exactly as described above. This is
+fully opaque magenta:
+</p>
+<div class="example">
+<pre class="example">(make-color 1.0 0.0 1.0 1.0)
+</pre></div>
+
+<p>Many people are used to representing colors as 6 or 8 digit
+hexadecimal numbers, so Chickadee also allows that. Here&rsquo;s magenta,
+again:
+</p>
+<div class="example">
+<pre class="example">(rgba #xFF00FFFF)
+(rgb #xFF00FF) ; equivalent to the above
+</pre></div>
+
+<dl>
+<dt id="index-make_002dcolor">Procedure: <strong>make-color</strong> <em>r g b a</em></dt>
+<dd><p>Return a new color object with a red value of <var>r</var>, a green value
+of <var>g</var>, a blue value of <var>b</var>, and an alpha (transparency) value
+of <var>a</var>. All values are clamped to the range [0, 1].
+</p></dd></dl>
+
+<dl>
+<dt id="index-rgba">Procedure: <strong>rgba</strong> <em>color-code</em></dt>
+<dd><p>Return a new color object using the values of the first 32 bits of
+<var>color-code</var>. Each channel occupies 8 bits. Starting from the
+most significant bit, red is first, followed by green, then blue, then
+alpha. Color codes are often represented as 6 or 8 digit hexadecimal
+numbers in various other programs.
+</p></dd></dl>
+
+<dl>
+<dt id="index-rgb">Procedure: <strong>rgb</strong> <em>color-code</em></dt>
+<dd><p>Like <code>rgba</code>, but <var>color-code</var> is a 24 bit code with no alpha
+channel.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_003f">Procedure: <strong>color?</strong> <em>obj</em></dt>
+<dd><p>Return <code>#t</code> if <var>obj</var> is a color object.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002dr">Procedure: <strong>color-r</strong> <em>color</em></dt>
+<dd><p>Return the red channel of <var>color</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002dg">Procedure: <strong>color-g</strong> <em>color</em></dt>
+<dd><p>Return the green channel of <var>color</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002db">Procedure: <strong>color-b</strong> <em>color</em></dt>
+<dd><p>Return the blue channel of <var>color</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002da">Procedure: <strong>color-a</strong> <em>color</em></dt>
+<dd><p>Return the alpha channel of <var>color</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-transparency">Procedure: <strong>transparency</strong> <em>alpha</em></dt>
+<dd><p>Return a new color that is white (RGB channels set to 1) with an alpha
+channel value of <var>alpha</var>. This can be useful for creating a color
+that can be multiplied against another color to make it more
+transparent.
+</p></dd></dl>
+
+<dl>
+<dt id="index-string_002d_003ecolor">Procedure: <strong>string-&gt;color</strong> <em>s</em></dt>
+<dd><p>Convert the hexadecimal color code in the string <var>s</var> to a color
+object. The following string formats are supported:
+</p>
+<div class="example">
+<pre class="example">(string-&gt;color &quot;#FF00FFFF&quot;)
+(string-&gt;color &quot;FF00FFFF&quot;)
+(string-&gt;color &quot;#FF00FF&quot;)
+(string-&gt;color &quot;FF00FF&quot;)
+</pre></div>
+
+</dd></dl>
+
+<dl>
+<dt id="index-color_002a">Procedure: <strong>color*</strong> <em>a b</em></dt>
+<dd><p>Multiply the color <var>a</var> with the color or number <var>b</var> and return
+a new color with the result.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002b">Procedure: <strong>color+</strong> <em>a b</em></dt>
+<dd><p>Add the color <var>a</var> to the color <var>b</var> and return a new color with
+the result.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002d">Procedure: <strong>color-</strong> <em>a b</em></dt>
+<dd><p>Subtract the color <var>b</var> from the color <var>a</var> and return a new
+color with the result.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002dinverse">Procedure: <strong>color-inverse</strong> <em>color</em></dt>
+<dd><p>Invert the red, green, and blue channels of <var>color</var> and return a
+new color with the result.
+</p></dd></dl>
+
+<dl>
+<dt id="index-color_002dlerp">Procedure: <strong>color-lerp</strong> <em>start end alpha</em></dt>
+<dd><p>Linearly interpolate the colors <var>start</var> and <var>end</var> using the
+factor <var>alpha</var>, a number in the range [0, 1].
+</p></dd></dl>
+
+<span id="Stock-Colors"></span><h4 class="subsubsection">2.3.1.1 Stock Colors</h4>
+
+<p>For convenience, Chickadee comes with some basic colors predefined:
+</p>
+<dl>
+<dt id="index-white">Variable: <strong>white</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-black">Variable: <strong>black</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-red">Variable: <strong>red</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-green">Variable: <strong>green</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-blue">Variable: <strong>blue</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-yellow">Variable: <strong>yellow</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-magenta">Variable: <strong>magenta</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-cyan">Variable: <strong>cyan</strong></dt>
+</dl>
+
+<p>For fun, there are also predefined colors for the classic
+<a href="https://en.wikipedia.org/wiki/Tango_Desktop_Project#Palette">Tango color palette</a>.
+</p>
+<dl>
+<dt id="index-tango_002dlight_002dbutter">Variable: <strong>tango-light-butter</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dbutter">Variable: <strong>tango-butter</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002ddark_002dbutter">Variable: <strong>tango-dark-butter</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dlight_002dorange">Variable: <strong>tango-light-orange</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dorange">Variable: <strong>tango-orange</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002ddark_002dorange">Variable: <strong>tango-dark-orange</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dlight_002dchocolate">Variable: <strong>tango-light-chocolate</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dchocolate">Variable: <strong>tango-chocolate</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002ddark_002dchocolate">Variable: <strong>tango-dark-chocolate</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dlight_002dchameleon">Variable: <strong>tango-light-chameleon</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dchameleon">Variable: <strong>tango-chameleon</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002ddark_002dchameleon">Variable: <strong>tango-dark-chameleon</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dlight_002dsky_002dblue">Variable: <strong>tango-light-sky-blue</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dsky_002dblue">Variable: <strong>tango-sky-blue</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002ddark_002dsky_002dblue">Variable: <strong>tango-dark-sky-blue</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dlight_002dplum">Variable: <strong>tango-light-plum</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dplum">Variable: <strong>tango-plum</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002ddark_002dplum">Variable: <strong>tango-dark-plum</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dlight_002dscarlet_002dred">Variable: <strong>tango-light-scarlet-red</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002dscarlet_002dred">Variable: <strong>tango-scarlet-red</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002ddark_002dscarlet_002dred">Variable: <strong>tango-dark-scarlet-red</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002daluminium_002d1">Variable: <strong>tango-aluminium-1</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002daluminium_002d2">Variable: <strong>tango-aluminium-2</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002daluminium_002d3">Variable: <strong>tango-aluminium-3</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002daluminium_002d4">Variable: <strong>tango-aluminium-4</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002daluminium_002d5">Variable: <strong>tango-aluminium-5</strong></dt>
+</dl>
+
+<dl>
+<dt id="index-tango_002daluminium_002d6">Variable: <strong>tango-aluminium-6</strong></dt>
+</dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Textures.html#Textures" accesskey="n" rel="next">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/Copying-This-Manual.html b/manuals/chickadee/Copying-This-Manual.html
index d91e4bd..f90eeb4 100644
--- a/manuals/chickadee/Copying-This-Manual.html
+++ b/manuals/chickadee/Copying-This-Manual.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Copying This Manual (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,17 +80,15 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Copying-This-Manual"></a>
-<div class="header">
+<span id="Copying-This-Manual"></span><div class="header">
<p>
Next: <a href="Index.html#Index" accesskey="n" rel="next">Index</a>, Previous: <a href="API-Reference.html#API-Reference" accesskey="p" rel="prev">API Reference</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Copying-This-Manual-1"></a>
-<h2 class="appendix">Appendix A Copying This Manual</h2>
+<span id="Copying-This-Manual-1"></span><h2 class="appendix">Appendix A Copying This Manual</h2>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="1">GNU Free Documentation License</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">License for copying this manual.
+<tr><td align="left" valign="top">&bull; <a href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License" accesskey="1">GNU Free Documentation License</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">License for copying this manual.
</td></tr>
</table>
diff --git a/manuals/chickadee/Easings.html b/manuals/chickadee/Easings.html
index 14207d0..2d1f2ad 100644
--- a/manuals/chickadee/Easings.html
+++ b/manuals/chickadee/Easings.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Easings (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Easings"></a>
-<div class="header">
+<span id="Easings"></span><div class="header">
<p>
Next: <a href="Bezier-Curves.html#Bezier-Curves" accesskey="n" rel="next">Bezier Curves</a>, Previous: <a href="Quaternions.html#Quaternions" accesskey="p" rel="prev">Quaternions</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Easings-1"></a>
-<h4 class="subsection">2.2.7 Easings</h4>
+<span id="Easings-1"></span><h4 class="subsection">2.2.7 Easings</h4>
<p>Easing functions are essential for animation. Each easing function
provides a different path to go from an initial value to a final
@@ -108,71 +97,71 @@ figure out which function makes an animation look the best.
creates smoother animation than using <code>linear</code>.
</p>
<dl>
-<dt><a name="index-linear"></a>Procedure: <strong>linear</strong> <em>t</em></dt>
+<dt id="index-linear">Procedure: <strong>linear</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-smoothstep"></a>Procedure: <strong>smoothstep</strong> <em>t</em></dt>
+<dt id="index-smoothstep">Procedure: <strong>smoothstep</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dquad"></a>Procedure: <strong>ease-in-quad</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dquad">Procedure: <strong>ease-in-quad</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002dout_002dquad"></a>Procedure: <strong>ease-out-quad</strong> <em>t</em></dt>
+<dt id="index-ease_002dout_002dquad">Procedure: <strong>ease-out-quad</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dout_002dquad"></a>Procedure: <strong>ease-in-out-quad</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dout_002dquad">Procedure: <strong>ease-in-out-quad</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dcubic"></a>Procedure: <strong>ease-in-cubic</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dcubic">Procedure: <strong>ease-in-cubic</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002dout_002dcubic"></a>Procedure: <strong>ease-out-cubic</strong> <em>t</em></dt>
+<dt id="index-ease_002dout_002dcubic">Procedure: <strong>ease-out-cubic</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dout_002dcubic"></a>Procedure: <strong>ease-in-out-cubic</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dout_002dcubic">Procedure: <strong>ease-in-out-cubic</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dquart"></a>Procedure: <strong>ease-in-quart</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dquart">Procedure: <strong>ease-in-quart</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002dout_002dquart"></a>Procedure: <strong>ease-out-quart</strong> <em>t</em></dt>
+<dt id="index-ease_002dout_002dquart">Procedure: <strong>ease-out-quart</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dout_002dquart"></a>Procedure: <strong>ease-in-out-quart</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dout_002dquart">Procedure: <strong>ease-in-out-quart</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dquint"></a>Procedure: <strong>ease-in-quint</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dquint">Procedure: <strong>ease-in-quint</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002dout_002dquint"></a>Procedure: <strong>ease-out-quint</strong> <em>t</em></dt>
+<dt id="index-ease_002dout_002dquint">Procedure: <strong>ease-out-quint</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dout_002dquint"></a>Procedure: <strong>ease-in-out-quint</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dout_002dquint">Procedure: <strong>ease-in-out-quint</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dsine"></a>Procedure: <strong>ease-in-sine</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dsine">Procedure: <strong>ease-in-sine</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002dout_002dsine"></a>Procedure: <strong>ease-out-sine</strong> <em>t</em></dt>
+<dt id="index-ease_002dout_002dsine">Procedure: <strong>ease-out-sine</strong> <em>t</em></dt>
</dl>
<dl>
-<dt><a name="index-ease_002din_002dout_002dsine"></a>Procedure: <strong>ease-in-out-sine</strong> <em>t</em></dt>
+<dt id="index-ease_002din_002dout_002dsine">Procedure: <strong>ease-in-out-sine</strong> <em>t</em></dt>
</dl>
diff --git a/manuals/chickadee/Fonts.html b/manuals/chickadee/Fonts.html
index 4227f0b..f4f41ef 100644
--- a/manuals/chickadee/Fonts.html
+++ b/manuals/chickadee/Fonts.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Fonts (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Fonts"></a>
-<div class="header">
+<span id="Fonts"></span><div class="header">
<p>
Next: <a href="Particles.html#Particles" accesskey="n" rel="next">Particles</a>, Previous: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="p" rel="prev">Lines and Shapes</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Fonts-1"></a>
-<h4 class="subsection">2.3.5 Fonts</h4>
+<span id="Fonts-1"></span><h4 class="subsection">2.3.6 Fonts</h4>
<p>Printing text to the screen is quite easy:
</p>
@@ -113,43 +102,43 @@ where a font is not specified, as is the case in the above example.
font)</code> module:
</p>
<dl>
-<dt><a name="index-load_002dfont"></a>Procedure: <strong>load-font</strong> <em>file</em></dt>
+<dt id="index-load_002dfont">Procedure: <strong>load-font</strong> <em>file</em></dt>
<dd><p>Load the Angel Code font (in either XML or FNT format) in <var>file</var>
and return a new font object.
</p></dd></dl>
<dl>
-<dt><a name="index-font_003f"></a>Procedure: <strong>font?</strong> <em>obj</em></dt>
+<dt id="index-font_003f">Procedure: <strong>font?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a font object.
</p></dd></dl>
<dl>
-<dt><a name="index-font_002dface"></a>Procedure: <strong>font-face</strong> <em>font</em></dt>
+<dt id="index-font_002dface">Procedure: <strong>font-face</strong> <em>font</em></dt>
<dd><p>Return the name of <var>font</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-font_002dline_002dheight"></a>Procedure: <strong>font-line-height</strong> <em>font</em></dt>
+<dt id="index-font_002dline_002dheight">Procedure: <strong>font-line-height</strong> <em>font</em></dt>
<dd><p>Return the line height of <var>font</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-font_002dline_002dheight-1"></a>Procedure: <strong>font-line-height</strong> <em>font</em></dt>
+<dt id="index-font_002dline_002dheight-1">Procedure: <strong>font-line-height</strong> <em>font</em></dt>
<dd><p>Return the line height of <var>font</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-font_002dbold_003f"></a>Procedure: <strong>font-bold?</strong> <em>font</em></dt>
+<dt id="index-font_002dbold_003f">Procedure: <strong>font-bold?</strong> <em>font</em></dt>
<dd><p>Return <code>#t</code> if <var>font</var> is a bold font.
</p></dd></dl>
<dl>
-<dt><a name="index-font_002ditalic_003f"></a>Procedure: <strong>font-italic?</strong> <em>font</em></dt>
+<dt id="index-font_002ditalic_003f">Procedure: <strong>font-italic?</strong> <em>font</em></dt>
<dd><p>Return <code>#t</code> if <var>font</var> is an italicized font.
</p></dd></dl>
<dl>
-<dt><a name="index-draw_002dtext"></a>Procedure: <strong>draw-text</strong> <em>text position</em></dt>
+<dt id="index-draw_002dtext">Procedure: <strong>draw-text</strong> <em>text position</em></dt>
<dd><p>[#:font] [#:origin] [#:scale] [#:rotation] [#:blend-mode]
[#:start 0] [#:end <code>(string-length text)</code>]
</p>
diff --git a/manuals/chickadee/Framebuffers.html b/manuals/chickadee/Framebuffers.html
index 8eb50ce..f12e227 100644
--- a/manuals/chickadee/Framebuffers.html
+++ b/manuals/chickadee/Framebuffers.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Framebuffers (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Framebuffers"></a>
-<div class="header">
+<span id="Framebuffers"></span><div class="header">
<p>
Next: <a href="Viewports.html#Viewports" accesskey="n" rel="next">Viewports</a>, Previous: <a href="Blending.html#Blending" accesskey="p" rel="prev">Blending</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Framebuffers-1"></a>
-<h4 class="subsection">2.3.8 Framebuffers</h4>
+<span id="Framebuffers-1"></span><h4 class="subsection">2.3.10 Framebuffers</h4>
<p>A framebuffer is a chunk of memory that the GPU can render things
onto. By default, the framebuffer that is used for rendering is the
@@ -109,7 +98,7 @@ post-processing shader could do any number of things: scaling,
antialiasing, motion blur, etc.
</p>
<dl>
-<dt><a name="index-make_002dframebuffer"></a>Procedure: <strong>make-framebuffer</strong> <em>width height [#:min-filter <code>linear</code>] [#:mag-filter <code>linear</code>] [#:wrap-s <code>repeat</code>] [#:wrap-t <code>repeat</code>]</em></dt>
+<dt id="index-make_002dframebuffer">Procedure: <strong>make-framebuffer</strong> <em>width height [#:min-filter <code>linear</code>] [#:mag-filter <code>linear</code>] [#:wrap-s <code>repeat</code>] [#:wrap-t <code>repeat</code>]</em></dt>
<dd>
<p>Create a new framebuffer that is <var>width</var> pixels wide and <var>height</var> pixels high.
</p>
@@ -121,23 +110,23 @@ the best choice for pixel art games.
</p></dd></dl>
<dl>
-<dt><a name="index-framebuffer_003f"></a>Procedure: <strong>framebuffer?</strong> <em>obj</em></dt>
+<dt id="index-framebuffer_003f">Procedure: <strong>framebuffer?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a framebuffer.
</p></dd></dl>
<dl>
-<dt><a name="index-framebuffer_002dtexture"></a>Procedure: <strong>framebuffer-texture</strong> <em>fb</em></dt>
+<dt id="index-framebuffer_002dtexture">Procedure: <strong>framebuffer-texture</strong> <em>fb</em></dt>
<dd><p>Return the texture backing the framebuffer <var>fb</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-framebuffer_002dviewport"></a>Procedure: <strong>framebuffer-viewport</strong> <em>fb</em></dt>
+<dt id="index-framebuffer_002dviewport">Procedure: <strong>framebuffer-viewport</strong> <em>fb</em></dt>
<dd><p>Return the default viewport (see <a href="Viewports.html#Viewports">Viewports</a>) used by the
framebuffer <var>fb</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-null_002dframebuffer"></a>Procedure: <strong>null-framebuffer</strong></dt>
+<dt id="index-null_002dframebuffer">Procedure: <strong>null-framebuffer</strong></dt>
<dd><p>The default framebuffer.
</p></dd></dl>
diff --git a/manuals/chickadee/GNU-Free-Documentation-License.html b/manuals/chickadee/GNU-Free-Documentation-License.html
index f6ee6a6..1000739 100644
--- a/manuals/chickadee/GNU-Free-Documentation-License.html
+++ b/manuals/chickadee/GNU-Free-Documentation-License.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GNU Free Documentation License (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="GNU-Free-Documentation-License"></a>
-<div class="header">
+<span id="GNU-Free-Documentation-License"></span><div class="header">
<p>
Up: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="u" rel="up">Copying This Manual</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="GNU-Free-Documentation-License-1"></a>
-<h3 class="section">A.1 GNU Free Documentation License</h3>
+<span id="GNU-Free-Documentation-License-1"></span><h3 class="section">A.1 GNU Free Documentation License</h3>
<div align="center">Version 1.3, 3 November 2008
</div>
@@ -530,15 +519,14 @@ provided the MMC is eligible for relicensing.
</p>
</li></ol>
-<a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a>
-<h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
+<span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
<p>To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
</p>
-<div class="smallexample">
-<pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>.
+<div class="example">
+<pre class="example"> Copyright (C) <var>year</var> <var>your name</var>.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
@@ -550,8 +538,8 @@ license notices just after the title page:
<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
</p>
-<div class="smallexample">
-<pre class="smallexample"> with the Invariant Sections being <var>list their titles</var>, with
+<div class="example">
+<pre class="example"> with the Invariant Sections being <var>list their titles</var>, with
the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
being <var>list</var>.
</pre></div>
diff --git a/manuals/chickadee/Graphics.html b/manuals/chickadee/Graphics.html
index 86f8f68..ce6d07a 100644
--- a/manuals/chickadee/Graphics.html
+++ b/manuals/chickadee/Graphics.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Graphics (The Chickadee Game Toolkit)</title>
@@ -32,29 +32,20 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="Index.html#Index" rel="index" title="Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="API-Reference.html#API-Reference" rel="up" title="API Reference">
-<link href="Textures.html#Textures" rel="next" title="Textures">
+<link href="Colors.html#Colors" rel="next" title="Colors">
<link href="Path-Finding.html#Path-Finding" rel="prev" title="Path Finding">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Graphics"></a>
-<div class="header">
+<span id="Graphics"></span><div class="header">
<p>
-Next: <a href="Scripting.html#Scripting" accesskey="n" rel="next">Scripting</a>, Previous: <a href="Math.html#Math" accesskey="p" rel="prev">Math</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="Audio.html#Audio" accesskey="n" rel="next">Audio</a>, Previous: <a href="Math.html#Math" accesskey="p" rel="prev">Math</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Graphics-1"></a>
-<h3 class="section">2.3 Graphics</h3>
+<span id="Graphics-1"></span><h3 class="section">2.3 Graphics</h3>
<p>Chickadee aims to make hardware-accelerated graphics rendering as
simple and efficient as possible by providing high-level APIs that
@@ -108,29 +97,33 @@ tasks like rendering a sprite while also providing all of the building
blocks to implement additional rendering techniques.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="Textures.html#Textures" accesskey="1">Textures</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">2D images.
+<tr><td align="left" valign="top">&bull; <a href="Colors.html#Colors" accesskey="1">Colors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Such pretty colors...
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Sprites.html#Sprites" accesskey="2">Sprites</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Draw 2D images.
+<tr><td align="left" valign="top">&bull; <a href="Textures.html#Textures" accesskey="2">Textures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">2D images.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Tile-Maps.html#Tile-Maps" accesskey="3">Tile Maps</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Draw 2D tile maps.
+<tr><td align="left" valign="top">&bull; <a href="Sprites.html#Sprites" accesskey="3">Sprites</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Draw 2D images.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="4">Lines and Shapes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Draw line segments and polygons.
+<tr><td align="left" valign="top">&bull; <a href="Tile-Maps.html#Tile-Maps" accesskey="4">Tile Maps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Draw 2D tile maps.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Fonts.html#Fonts" accesskey="5">Fonts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Drawing text.
+<tr><td align="left" valign="top">&bull; <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="5">Lines and Shapes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Draw line segments and polygons.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Particles.html#Particles" accesskey="6">Particles</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pretty little flying pieces!
+<tr><td align="left" valign="top">&bull; <a href="Fonts.html#Fonts" accesskey="6">Fonts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Drawing text.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Blending.html#Blending" accesskey="7">Blending</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Control how pixels are combined.
+<tr><td align="left" valign="top">&bull; <a href="Particles.html#Particles" accesskey="7">Particles</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pretty little flying pieces!
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Framebuffers.html#Framebuffers" accesskey="8">Framebuffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Render to texture.
+<tr><td align="left" valign="top">&bull; <a href="3D-Models.html#g_t3D-Models" accesskey="8">3D Models</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Spinning teapots everywhere.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Viewports.html#Viewports" accesskey="9">Viewports</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Restrict rendering to a particular area.
+<tr><td align="left" valign="top">&bull; <a href="Blending.html#Blending" accesskey="9">Blending</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Control how pixels are combined.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Rendering state management.
+<tr><td align="left" valign="top">&bull; <a href="Framebuffers.html#Framebuffers">Framebuffers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Render to texture.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Buffers.html#Buffers">Buffers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Send data to the GPU.
+<tr><td align="left" valign="top">&bull; <a href="Viewports.html#Viewports">Viewports</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Restrict rendering to a particular area.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Shaders.html#Shaders">Shaders</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Create custom GPU programs.
+<tr><td align="left" valign="top">&bull; <a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Rendering state management.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Buffers.html#Buffers">Buffers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Send data to the GPU.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Shaders.html#Shaders">Shaders</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Create custom GPU programs.
</td></tr>
</table>
diff --git a/manuals/chickadee/Grid.html b/manuals/chickadee/Grid.html
index 1b578ac..700d608 100644
--- a/manuals/chickadee/Grid.html
+++ b/manuals/chickadee/Grid.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Grid (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Grid"></a>
-<div class="header">
+<span id="Grid"></span><div class="header">
<p>
Next: <a href="Matrices.html#Matrices" accesskey="n" rel="next">Matrices</a>, Previous: <a href="Rectangles.html#Rectangles" accesskey="p" rel="prev">Rectangles</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Grid-1"></a>
-<h4 class="subsection">2.2.4 Grid</h4>
+<span id="Grid-1"></span><h4 class="subsection">2.2.4 Grid</h4>
<p>The <code>(chickadee math grid)</code> module provides a simple spatial
partitioning system for axis-aligned bounding boxes
@@ -132,42 +121,42 @@ this filtering technique, a game can resolve collisions between
different objects in different ways.
</p>
<dl>
-<dt><a name="index-make_002dgrid"></a>Procedure: <strong>make-grid</strong> <em>[cell-size 64]</em></dt>
+<dt id="index-make_002dgrid">Procedure: <strong>make-grid</strong> <em>[cell-size 64]</em></dt>
<dd><p>Return a new grid partitioned into <var>cell-size</var> tiles.
</p></dd></dl>
<dl>
-<dt><a name="index-grid_003f"></a>Procedure: <strong>grid?</strong> <em>obj</em></dt>
+<dt id="index-grid_003f">Procedure: <strong>grid?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a grid.
</p></dd></dl>
<dl>
-<dt><a name="index-cell_003f"></a>Procedure: <strong>cell?</strong> <em>obj</em></dt>
+<dt id="index-cell_003f">Procedure: <strong>cell?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a grid cell.
</p></dd></dl>
<dl>
-<dt><a name="index-cell_002dcount"></a>Procedure: <strong>cell-count</strong> <em>cell</em></dt>
+<dt id="index-cell_002dcount">Procedure: <strong>cell-count</strong> <em>cell</em></dt>
<dd><p>Return the number of items in <var>cell</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-grid_002dcell_002dsize"></a>Procedure: <strong>grid-cell-size</strong> <em>grid</em></dt>
+<dt id="index-grid_002dcell_002dsize">Procedure: <strong>grid-cell-size</strong> <em>grid</em></dt>
<dd><p>Return the cell size of <var>grid</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-grid_002dcell_002dcount"></a>Procedure: <strong>grid-cell-count</strong> <em>grid</em></dt>
+<dt id="index-grid_002dcell_002dcount">Procedure: <strong>grid-cell-count</strong> <em>grid</em></dt>
<dd><p>Return the number of cells currently in <var>grid</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-grid_002ditem_002dcount"></a>Procedure: <strong>grid-item-count</strong> <em>grid</em></dt>
+<dt id="index-grid_002ditem_002dcount">Procedure: <strong>grid-item-count</strong> <em>grid</em></dt>
<dd><p>Return the number of items in <var>grid</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-grid_002dadd"></a>Procedure: <strong>grid-add</strong> <em>grid item x y width height</em></dt>
+<dt id="index-grid_002dadd">Procedure: <strong>grid-add</strong> <em>grid item x y width height</em></dt>
<dd>
<p>Add <var>item</var> to <var>grid</var> represented by the axis-aligned bounding
box whose lower-left corner is at (<var>x</var>, <var>y</var>) and is
@@ -175,17 +164,17 @@ box whose lower-left corner is at (<var>x</var>, <var>y</var>) and is
</p></dd></dl>
<dl>
-<dt><a name="index-grid_002dremove"></a>Procedure: <strong>grid-remove</strong> <em>grid item</em></dt>
+<dt id="index-grid_002dremove">Procedure: <strong>grid-remove</strong> <em>grid item</em></dt>
<dd><p>Return <var>item</var> from <var>grid</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-grid_002dclear"></a>Procedure: <strong>grid-clear</strong> <em>grid</em></dt>
+<dt id="index-grid_002dclear">Procedure: <strong>grid-clear</strong> <em>grid</em></dt>
<dd><p>Remove all items from <var>grid</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-grid_002dmove"></a>Procedure: <strong>grid-move</strong> <em>grid item position filter</em></dt>
+<dt id="index-grid_002dmove">Procedure: <strong>grid-move</strong> <em>grid item position filter</em></dt>
<dd><p>Attempt to move <var>item</var> in <var>grid</var> to <var>position</var> (a 2D
vector) and check for collisions. For each collision, <var>filter</var>
will be called with two arguments: <var>item</var> and the item it collided
@@ -194,18 +183,18 @@ resolve the colliding objects.
</p></dd></dl>
<dl>
-<dt><a name="index-for_002deach_002dcell"></a>Procedure: <strong>for-each-cell</strong> <em>proc grid [rect]</em></dt>
+<dt id="index-for_002deach_002dcell">Procedure: <strong>for-each-cell</strong> <em>proc grid [rect]</em></dt>
<dd><p>Call <var>proc</var> with each cell in <var>grid</var> that intersects
<var>rect</var>, or every cell if <var>rect</var> is <code>#f</code>.
</p></dd></dl>
<dl>
-<dt><a name="index-for_002deach_002ditem"></a>Procedure: <strong>for-each-item</strong> <em>proc grid</em></dt>
+<dt id="index-for_002deach_002ditem">Procedure: <strong>for-each-item</strong> <em>proc grid</em></dt>
<dd><p>Call <var>proc</var> for each item in <var>grid</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-slide"></a>Procedure: <strong>slide</strong> <em>item item-rect other other-rect goal</em></dt>
+<dt id="index-slide">Procedure: <strong>slide</strong> <em>item item-rect other other-rect goal</em></dt>
<dd>
<p>Resolve the collision that occurs between <var>item</var> and <var>other</var>
when moving <var>item-rect</var> to <var>goal</var> by sliding <var>item-rect</var>
diff --git a/manuals/chickadee/Index.html b/manuals/chickadee/Index.html
index 86f08d9..7b74865 100644
--- a/manuals/chickadee/Index.html
+++ b/manuals/chickadee/Index.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Index (The Chickadee Game Toolkit)</title>
@@ -37,23 +37,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -88,16 +79,17 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Index"></a>
-<div class="header">
+<span id="Index"></span><div class="header">
<p>
Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" rel="prev">Copying This Manual</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Index-1"></a>
-<h2 class="unnumbered">Index</h2>
+<span id="Index-1"></span><h2 class="unnumbered">Index</h2>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Index_fn_letter-A"><b>A</b></a>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Index_fn_symbol-1"><b>2</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter" href="#Index_fn_letter-A"><b>A</b></a>
&nbsp;
<a class="summary-letter" href="#Index_fn_letter-B"><b>B</b></a>
&nbsp;
@@ -111,8 +103,12 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
&nbsp;
<a class="summary-letter" href="#Index_fn_letter-G"><b>G</b></a>
&nbsp;
+<a class="summary-letter" href="#Index_fn_letter-H"><b>H</b></a>
+ &nbsp;
<a class="summary-letter" href="#Index_fn_letter-I"><b>I</b></a>
&nbsp;
+<a class="summary-letter" href="#Index_fn_letter-K"><b>K</b></a>
+ &nbsp;
<a class="summary-letter" href="#Index_fn_letter-L"><b>L</b></a>
&nbsp;
<a class="summary-letter" href="#Index_fn_letter-M"><b>M</b></a>
@@ -143,9 +139,12 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<table class="index-fn" border="0">
<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-A">A</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_symbol-1">2</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Basics.html#index-2pi"><code>2pi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basics.html#Basics">Basics</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Index_fn_letter-A">A</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Path-Finding.html#index-a_002a"><code>a*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Path-Finding.html#Path-Finding">Path Finding</a></td></tr>
-<tr><td></td><td valign="top"><a href="Kernel.html#index-abort_002dgame"><code>abort-game</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Game-Loop.html#index-abort_002dgame"><code>abort-game</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Game-Loop.html#The-Game-Loop">The Game Loop</a></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-add_002dparticle_002demitter"><code>add-particle-emitter</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-after"><code>after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-agenda_002dtime"><code>agenda-time</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
@@ -158,8 +157,15 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Shaders.html#index-attribute_002dname"><code>attribute-name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-attribute_002dtype"><code>attribute-type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-attribute_003f"><code>attribute?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dbits_002dper_002dsample"><code>audio-bits-per-sample</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dchannels"><code>audio-channels</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dduration"><code>audio-duration</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dmode"><code>audio-mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dplay"><code>audio-play</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_002dsample_002drate"><code>audio-sample-rate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-audio_003f"><code>audio?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-B">B</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-B">B</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dp0"><code>bezier-curve-p0</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bezier-Curves.html#Bezier-Curves">Bezier Curves</a></td></tr>
<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dp1"><code>bezier-curve-p1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bezier-Curves.html#Bezier-Curves">Bezier Curves</a></td></tr>
<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dp2"><code>bezier-curve-p2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bezier-Curves.html#Bezier-Curves">Bezier Curves</a></td></tr>
@@ -168,6 +174,9 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_002dpoint_002dat_0021"><code>bezier-curve-point-at!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bezier-Curves.html#Bezier-Curves">Bezier Curves</a></td></tr>
<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dcurve_003f"><code>bezier-curve?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bezier-Curves.html#Bezier-Curves">Bezier Curves</a></td></tr>
<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-bezier_002dpath"><code>bezier-path</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bezier-Curves.html#Bezier-Curves">Bezier Curves</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-black"><code>black</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-blue"><code>blue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-bool"><code>bool</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002ddata"><code>buffer-data</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dlength"><code>buffer-length</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dname"><code>buffer-name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
@@ -183,7 +192,7 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_002dview_003f"><code>buffer-view?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-buffer_003f"><code>buffer?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-C">C</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-C">C</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Scripts.html#index-cancel_002dscript"><code>cancel-script</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scripts.html#Scripts">Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-cell_002dcount"><code>cell-count</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-cell_003f"><code>cell?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
@@ -192,6 +201,21 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Channels.html#index-channel_002dput"><code>channel-put</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Channels.html#Channels">Channels</a></td></tr>
<tr><td></td><td valign="top"><a href="Channels.html#index-channel_002dput_0021"><code>channel-put!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Channels.html#Channels">Channels</a></td></tr>
<tr><td></td><td valign="top"><a href="Channels.html#index-channel_003f"><code>channel?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Channels.html#Channels">Channels</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basics.html#index-clamp"><code>clamp</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basics.html#Basics">Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002a"><code>color*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002b"><code>color+</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002d"><code>color-</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002da"><code>color-a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002db"><code>color-b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dg"><code>color-g</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dinverse"><code>color-inverse</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dlerp"><code>color-lerp</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_002dr"><code>color-r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-color_003f"><code>color?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002daxis"><code>controller-axis</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002dbutton_002dpressed_003f"><code>controller-button-pressed?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002dbutton_002dreleased_003f"><code>controller-button-released?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-controller_002dname"><code>controller-name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
<tr><td></td><td valign="top"><a href="Basics.html#index-cotan"><code>cotan</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basics.html#Basics">Basics</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-current_002dagenda"><code>current-agenda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-current_002dagenda-1"><code>current-agenda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
@@ -201,11 +225,19 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-current_002dprojection"><code>current-projection</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-current_002dtexture"><code>current-texture</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-current_002dviewport"><code>current-viewport</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-current_002dwindow"><code>current-window</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-cyan"><code>cyan</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-D">D</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-D">D</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-define_002dshader_002dtype"><code>define-shader-type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basics.html#index-degrees_002d_003eradians"><code>degrees-&gt;radians</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basics.html#Basics">Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="Basics.html#index-degrees_002d_003eradians-1"><code>degrees-&gt;radians</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basics.html#Basics">Basics</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Environment.html#index-distance_002dmodel"><code>distance-model</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Environment.html#The-Environment">The Environment</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Environment.html#index-doppler_002dfactor"><code>doppler-factor</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Environment.html#The-Environment">The Environment</a></td></tr>
<tr><td></td><td valign="top"><a href="Lines-and-Shapes.html#index-draw_002dbezier_002dcurve"><code>draw-bezier-curve</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Lines-and-Shapes.html#Lines-and-Shapes">Lines and Shapes</a></td></tr>
<tr><td></td><td valign="top"><a href="Lines-and-Shapes.html#index-draw_002dbezier_002dpath"><code>draw-bezier-path</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Lines-and-Shapes.html#Lines-and-Shapes">Lines and Shapes</a></td></tr>
<tr><td></td><td valign="top"><a href="Lines-and-Shapes.html#index-draw_002dline"><code>draw-line</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Lines-and-Shapes.html#Lines-and-Shapes">Lines and Shapes</a></td></tr>
+<tr><td></td><td valign="top"><a href="3D-Models.html#index-draw_002dmodel"><code>draw-model</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="3D-Models.html#g_t3D-Models">3D Models</a></td></tr>
<tr><td></td><td valign="top"><a href="Sprites.html#index-draw_002dnine_002dpatch"><code>draw-nine-patch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-draw_002dparticles"><code>draw-particles</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-draw_002dparticles_002a"><code>draw-particles*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
@@ -214,7 +246,7 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Fonts.html#index-draw_002dtext"><code>draw-text</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-draw_002dtile_002dmap"><code>draw-tile-map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-E">E</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-E">E</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dcubic"><code>ease-in-cubic</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Easings.html#Easings">Easings</a></td></tr>
<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dout_002dcubic"><code>ease-in-out-cubic</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Easings.html#Easings">Easings</a></td></tr>
<tr><td></td><td valign="top"><a href="Easings.html#index-ease_002din_002dout_002dquad"><code>ease-in-out-quad</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Easings.html#Easings">Easings</a></td></tr>
@@ -233,7 +265,11 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Agendas.html#index-every"><code>every</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-every-1"><code>every</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-F">F</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-float"><code>float</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-float_002dvec2"><code>float-vec2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-float_002dvec3"><code>float-vec3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-float_002dvec4"><code>float-vec4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dbold_003f"><code>font-bold?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr>
<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002dface"><code>font-face</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr>
<tr><td></td><td valign="top"><a href="Fonts.html#index-font_002ditalic_003f"><code>font-italic?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr>
@@ -247,11 +283,12 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Framebuffers.html#index-framebuffer_002dviewport"><code>framebuffer-viewport</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Framebuffers.html#Framebuffers">Framebuffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Framebuffers.html#index-framebuffer_003f"><code>framebuffer?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Framebuffers.html#Framebuffers">Framebuffers</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-G">G</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-G">G</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-gpu_002dapply"><code>gpu-apply</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-gpu_002dapply_002a"><code>gpu-apply*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-gpu_002dapply_002finstanced"><code>gpu-apply/instanced</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-gpu_002dapply_002finstanced-1"><code>gpu-apply/instanced</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-green"><code>green</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-grid_002dadd"><code>grid-add</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-grid_002dcell_002dcount"><code>grid-cell-count</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-grid_002dcell_002dsize"><code>grid-cell-size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
@@ -261,22 +298,41 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Grid.html#index-grid_002dremove"><code>grid-remove</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-grid_003f"><code>grid?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-I">I</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-H">H</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-hide_002dwindow_0021"><code>hide-window!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Index_fn_letter-I">I</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-index_002dbuffer_003f"><code>index-buffer?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-int"><code>int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th id="Index_fn_letter-K">K</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-key_002dpressed_003f"><code>key-pressed?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-key_002dreleased_003f"><code>key-released?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-L">L</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-L">L</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Basics.html#index-lerp"><code>lerp</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Basics.html#Basics">Basics</a></td></tr>
<tr><td></td><td valign="top"><a href="Easings.html#index-linear"><code>linear</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Easings.html#Easings">Easings</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dorientation"><code>listener-orientation</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dposition"><code>listener-position</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dvelocity"><code>listener-velocity</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-listener_002dvolume"><code>listener-volume</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-load_002daudio"><code>load-audio</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
<tr><td></td><td valign="top"><a href="Fonts.html#index-load_002dfont"><code>load-font</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Fonts.html#Fonts">Fonts</a></td></tr>
+<tr><td></td><td valign="top"><a href="3D-Models.html#index-load_002dgltf"><code>load-gltf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="3D-Models.html#g_t3D-Models">3D Models</a></td></tr>
<tr><td></td><td valign="top"><a href="Textures.html#index-load_002dimage"><code>load-image</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Textures.html#Textures">Textures</a></td></tr>
+<tr><td></td><td valign="top"><a href="3D-Models.html#index-load_002dobj"><code>load-obj</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="3D-Models.html#g_t3D-Models">3D Models</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-load_002dshader"><code>load-shader</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-load_002dtile_002dmap"><code>load-tile-map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-local_002dfield"><code>local-field</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-M">M</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-M">M</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-magenta"><code>magenta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-make_002dagenda"><code>make-agenda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Bezier-Curves.html#index-make_002dbezier_002dcurve"><code>make-bezier-curve</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Bezier-Curves.html#Bezier-Curves">Bezier Curves</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-make_002dbuffer"><code>make-buffer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-make_002dbuffer_002dview"><code>make-buffer-view</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Channels.html#index-make_002dchannel"><code>make-channel</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Channels.html#Channels">Channels</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-make_002dcolor"><code>make-color</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Framebuffers.html#index-make_002dframebuffer"><code>make-framebuffer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Framebuffers.html#Framebuffers">Framebuffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-make_002dgrid"><code>make-grid</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-make_002didentity_002dmatrix4"><code>make-identity-matrix4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
@@ -288,6 +344,7 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Path-Finding.html#index-make_002dpath_002dfinder"><code>make-path-finder</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Path-Finding.html#Path-Finding">Path Finding</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-make_002drect"><code>make-rect</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-make_002dshader"><code>make-shader</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-make_002dsource"><code>make-source</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
<tr><td></td><td valign="top"><a href="Sprites.html#index-make_002dsprite_002dbatch"><code>make-sprite-batch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-make_002dvertex_002darray"><code>make-vertex-array</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Viewports.html#index-make_002dviewport"><code>make-viewport</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Viewports.html#Viewports">Viewports</a></td></tr>
@@ -297,6 +354,7 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_002dshape"><code>map-object-shape</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_002dtype"><code>map-object-type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-map_002dobject_003f"><code>map-object?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-mat4"><code>mat4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002a"><code>matrix4*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002d2d_002dtransform_0021"><code>matrix4-2d-transform!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002didentity_0021"><code>matrix4-identity!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
@@ -310,21 +368,28 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dtranslate"><code>matrix4-translate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_002dtranslate_0021"><code>matrix4-translate!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-matrix4_003f"><code>matrix4?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-maximize_002dwindow_0021"><code>maximize-window!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-minimize_002dwindow_0021"><code>minimize-window!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="3D-Models.html#index-model_003f"><code>model?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="3D-Models.html#g_t3D-Models">3D Models</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dbutton_002dpressed_003f"><code>mouse-button-pressed?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dbutton_002dreleased_003f"><code>mouse-button-released?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dx"><code>mouse-x</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Input-Devices.html#index-mouse_002dy"><code>mouse-y</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Input-Devices.html#Input-Devices">Input Devices</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-N">N</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-N">N</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-null_002dbuffer"><code>null-buffer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Framebuffers.html#index-null_002dframebuffer"><code>null-framebuffer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Framebuffers.html#Framebuffers">Framebuffers</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-null_002dshader"><code>null-shader</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Buffers.html#index-null_002dvertex_002darray"><code>null-vertex-array</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Buffers.html#Buffers">Buffers</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-O">O</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-O">O</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_002dname"><code>object-layer-name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_002dobjects"><code>object-layer-objects</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_002dproperties"><code>object-layer-properties</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-object_002dlayer_003f"><code>object-layer?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-orthographic_002dprojection"><code>orthographic-projection</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-P">P</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-P">P</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_002ddone_003f"><code>particle-emitter-done?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_002dlife"><code>particle-emitter-life</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-particle_002demitter_002drate"><code>particle-emitter-rate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
@@ -339,7 +404,7 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-polygon_002dpoints"><code>polygon-points</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-polygon_003f"><code>polygon?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-Q">Q</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-Q">Q</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion"><code>quaternion</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Quaternions.html#Quaternions">Quaternions</a></td></tr>
<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_002dw"><code>quaternion-w</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Quaternions.html#Quaternions">Quaternions</a></td></tr>
<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_002dx"><code>quaternion-x</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Quaternions.html#Quaternions">Quaternions</a></td></tr>
@@ -347,7 +412,8 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_002dz"><code>quaternion-z</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Quaternions.html#Quaternions">Quaternions</a></td></tr>
<tr><td></td><td valign="top"><a href="Quaternions.html#index-quaternion_003f"><code>quaternion?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Quaternions.html#Quaternions">Quaternions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-R">R</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-R">R</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-raise_002dwindow_0021"><code>raise-window!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect"><code>rect</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002darea"><code>rect-area</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dbottom"><code>rect-bottom</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
@@ -383,11 +449,16 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dx"><code>rect-x</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_002dy"><code>rect-y</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-rect_003f"><code>rect?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-red"><code>red</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-remove_002dparticle_002demitter"><code>remove-particle-emitter</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
-<tr><td></td><td valign="top"><a href="Kernel.html#index-run_002dgame"><code>run-game</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr>
-<tr><td></td><td valign="top"><a href="Kernel.html#index-run_002dgame_002a"><code>run-game*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Kernel.html#Kernel">Kernel</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-restore_002dwindow_0021"><code>restore-window!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-rgb"><code>rgb</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-rgba"><code>rgba</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Game-Loop.html#index-run_002dgame"><code>run-game</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Game-Loop.html#The-Game-Loop">The Game Loop</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Game-Loop.html#index-run_002dgame_002a"><code>run-game*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Game-Loop.html#The-Game-Loop">The Game Loop</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-S">S</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-S">S</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-sampler_002d2d"><code>sampler-2d</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-schedule_002dafter"><code>schedule-after</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-schedule_002dat"><code>schedule-at</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-schedule_002devery"><code>schedule-every</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
@@ -396,10 +467,33 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Scripts.html#index-script_002dcomplete_003f"><code>script-complete?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scripts.html#Scripts">Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="Scripts.html#index-script_002drunning_003f"><code>script-running?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scripts.html#Scripts">Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="Scripts.html#index-script_003f"><code>script?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scripts.html#Scripts">Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Environment.html#index-set_002ddistance_002dmodel_0021"><code>set-distance-model!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Environment.html#The-Environment">The Environment</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Environment.html#index-set_002ddoppler_002dfactor_0021"><code>set-doppler-factor!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Environment.html#The-Environment">The Environment</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dorientation_0021"><code>set-listener-orientation!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dposition_0021"><code>set-listener-position!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dvelocity_0021"><code>set-listener-velocity!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Listener.html#index-set_002dlistener_002dvolume_0021"><code>set-listener-volume!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Listener.html#The-Listener">The Listener</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dheight_0021"><code>set-rect-height!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dwidth_0021"><code>set-rect-width!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dx_0021"><code>set-rect-x!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
<tr><td></td><td valign="top"><a href="Rectangles.html#index-set_002drect_002dy_0021"><code>set-rect-y!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rectangles.html#Rectangles">Rectangles</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002daudio_0021"><code>set-source-audio!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dcone_002dinner_002dangle_0021"><code>set-source-cone-inner-angle!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dcone_002douter_002dangle_0021"><code>set-source-cone-outer-angle!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dcone_002douter_002dvolume_0021"><code>set-source-cone-outer-volume!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002ddirection_0021"><code>set-source-direction!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dloop_0021"><code>set-source-loop!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dmax_002ddistance_0021"><code>set-source-max-distance!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dmax_002dvolume_0021"><code>set-source-max-volume!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dmin_002dvolume_0021"><code>set-source-min-volume!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dpitch_0021"><code>set-source-pitch!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dposition_0021"><code>set-source-position!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dreference_002ddistance_0021"><code>set-source-reference-distance!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002drelative_0021"><code>set-source-relative!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002drolloff_002dfactor_0021"><code>set-source-rolloff-factor!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dvelocity_0021"><code>set-source-velocity!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-set_002dsource_002dvolume_0021"><code>set-source-volume!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Environment.html#index-set_002dspeed_002dof_002dsound_0021"><code>set-speed-of-sound!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Environment.html#The-Environment">The Environment</a></td></tr>
<tr><td></td><td valign="top"><a href="Sprites.html#index-set_002dsprite_002dbatch_002dtexture_0021"><code>set-sprite-batch-texture!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec2_0021"><code>set-vec2!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec2_002dx_0021"><code>set-vec2-x!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
@@ -408,22 +502,86 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec3_002dx_0021"><code>set-vec3-x!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec3_002dy_0021"><code>set-vec3-y!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-set_002dvec3_002dz_0021"><code>set-vec3-z!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dborder_0021"><code>set-window-border!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dfullscreen_0021"><code>set-window-fullscreen!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dposition_0021"><code>set-window-position!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dsize_0021"><code>set-window-size!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-set_002dwindow_002dtitle_0021"><code>set-window-title!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002dattributes"><code>shader-attributes</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002ddata_002dtype_003f"><code>shader-data-type?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002duniform"><code>shader-uniform</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002duniform_002dset_0021"><code>shader-uniform-set!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_002duniforms"><code>shader-uniforms</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-shader_003f"><code>shader?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-show_002dwindow_0021"><code>show-window!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
<tr><td></td><td valign="top"><a href="Scripts.html#index-sleep"><code>sleep</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scripts.html#Scripts">Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="Grid.html#index-slide"><code>slide</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Grid.html#Grid">Grid</a></td></tr>
<tr><td></td><td valign="top"><a href="Easings.html#index-smoothstep"><code>smoothstep</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Easings.html#Easings">Easings</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dcone_002dinner_002dangle"><code>source-cone-inner-angle</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dcone_002douter_002dangle"><code>source-cone-outer-angle</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dcone_002douter_002dvolume"><code>source-cone-outer-volume</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002ddirection"><code>source-direction</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dmax_002ddistance"><code>source-max-distance</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dmax_002dvolume"><code>source-max-volume</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dmin_002dvolume"><code>source-min-volume</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dpause"><code>source-pause</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dpaused_003f"><code>source-paused?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dpitch"><code>source-pitch</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dplay"><code>source-play</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dplaying_003f"><code>source-playing?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dposition"><code>source-position</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dreference_002ddistance"><code>source-reference-distance</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002drelative_003f"><code>source-relative?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002drewind"><code>source-rewind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002drolloff_002dfactor"><code>source-rolloff-factor</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dstop"><code>source-stop</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dstopped_003f"><code>source-stopped?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dtoggle"><code>source-toggle</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dvelocity"><code>source-velocity</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_002dvolume"><code>source-volume</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-source_003f"><code>source?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
<tr><td></td><td valign="top"><a href="Scripts.html#index-spawn_002dscript"><code>spawn-script</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scripts.html#Scripts">Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="The-Environment.html#index-speed_002dof_002dsound"><code>speed-of-sound</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="The-Environment.html#The-Environment">The Environment</a></td></tr>
<tr><td></td><td valign="top"><a href="Textures.html#index-split_002dtexture"><code>split-texture</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Textures.html#Textures">Textures</a></td></tr>
<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_002dadd_0021"><code>sprite-batch-add!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr>
<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_002dclear_0021"><code>sprite-batch-clear!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr>
<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_002dtexture"><code>sprite-batch-texture</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr>
<tr><td></td><td valign="top"><a href="Sprites.html#index-sprite_002dbatch_003f"><code>sprite-batch?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sprites.html#Sprites">Sprites</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-static_002daudio_003f"><code>static-audio?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-static_002dsource_003f"><code>static-source?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Audio-Files.html#index-streaming_002daudio_003f"><code>streaming-audio?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Audio-Files.html#Audio-Files">Audio Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="Sources.html#index-streaming_002dsource_003f"><code>streaming-source?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Sources.html#Sources">Sources</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-string_002d_003ecolor"><code>string-&gt;color</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-strings_002d_003eshader"><code>strings-&gt;shader</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-T">T</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-T">T</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d1"><code>tango-aluminium-1</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d2"><code>tango-aluminium-2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d3"><code>tango-aluminium-3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d4"><code>tango-aluminium-4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d5"><code>tango-aluminium-5</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002daluminium_002d6"><code>tango-aluminium-6</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dbutter"><code>tango-butter</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dchameleon"><code>tango-chameleon</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dchocolate"><code>tango-chocolate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dbutter"><code>tango-dark-butter</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dchameleon"><code>tango-dark-chameleon</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dchocolate"><code>tango-dark-chocolate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dorange"><code>tango-dark-orange</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dplum"><code>tango-dark-plum</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dscarlet_002dred"><code>tango-dark-scarlet-red</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002ddark_002dsky_002dblue"><code>tango-dark-sky-blue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dbutter"><code>tango-light-butter</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dchameleon"><code>tango-light-chameleon</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dchocolate"><code>tango-light-chocolate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dorange"><code>tango-light-orange</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dplum"><code>tango-light-plum</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dscarlet_002dred"><code>tango-light-scarlet-red</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dlight_002dsky_002dblue"><code>tango-light-sky-blue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dorange"><code>tango-orange</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dplum"><code>tango-plum</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dscarlet_002dred"><code>tango-scarlet-red</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-tango_002dsky_002dblue"><code>tango-sky-blue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002datlas_002dref"><code>texture-atlas-ref</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Textures.html#Textures">Textures</a></td></tr>
<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002datlas_002dtexture"><code>texture-atlas-texture</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Textures.html#Textures">Textures</a></td></tr>
<tr><td></td><td valign="top"><a href="Textures.html#index-texture_002datlas_003f"><code>texture-atlas?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Textures.html#Textures">Textures</a></td></tr>
@@ -465,18 +623,19 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_002dtiles"><code>tileset-tiles</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Tile-Maps.html#index-tileset_003f"><code>tileset?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tile-Maps.html#Tile-Maps">Tile Maps</a></td></tr>
<tr><td></td><td valign="top"><a href="Matrices.html#index-transform_0021"><code>transform!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Matrices.html#Matrices">Matrices</a></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-transparency"><code>transparency</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Tweening.html#index-tween"><code>tween</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Tweening.html#Tweening">Tweening</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-U">U</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_002ddefault_002dvalue"><code>uniform-default-value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><th id="Index_fn_letter-U">U</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_002dname"><code>uniform-name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_002dtype"><code>uniform-type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_002dvalue"><code>uniform-value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Shaders.html#index-uniform_003f"><code>uniform?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
+<tr><td></td><td valign="top"><a href="Shaders.html#index-unsigned_002dint"><code>unsigned-int</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Shaders.html#Shaders">Shaders</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-update_002dagenda"><code>update-agenda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Particles.html#index-update_002dparticles"><code>update-particles</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Particles.html#Particles">Particles</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-V">V</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-V">V</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2"><code>vec2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002a"><code>vec2*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec2_002b"><code>vec2+</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
@@ -501,6 +660,8 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dadd_0021"><code>vec3-add!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcopy"><code>vec3-copy</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcopy_0021"><code>vec3-copy!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcross"><code>vec3-cross</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dcross_0021"><code>vec3-cross!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002ddot_002dproduct"><code>vec3-dot-product</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dmagnitude"><code>vec3-magnitude</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
<tr><td></td><td valign="top"><a href="Vectors.html#index-vec3_002dmult_0021"><code>vec3-mult!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Vectors.html#Vectors">Vectors</a></td></tr>
@@ -522,7 +683,14 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_002dy"><code>viewport-y</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Viewports.html#Viewports">Viewports</a></td></tr>
<tr><td></td><td valign="top"><a href="Viewports.html#index-viewport_003f"><code>viewport?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Viewports.html#Viewports">Viewports</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-W">W</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-W">W</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-white"><code>white</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dheight"><code>window-height</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dtitle"><code>window-title</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dwidth"><code>window-width</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dx"><code>window-x</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_002dy"><code>window-y</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
+<tr><td></td><td valign="top"><a href="Window-Manipulation.html#index-window_003f"><code>window?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Window-Manipulation.html#Window-Manipulation">Window Manipulation</a></td></tr>
<tr><td></td><td valign="top"><a href="Agendas.html#index-with_002dagenda"><code>with-agenda</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Agendas.html#Agendas">Agendas</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002dblend_002dmode"><code>with-blend-mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002ddepth_002dtest"><code>with-depth-test</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
@@ -533,11 +701,15 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002dtexture"><code>with-texture</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td></td><td valign="top"><a href="Rendering-Engine.html#index-with_002dviewport"><code>with-viewport</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Rendering-Engine.html#Rendering-Engine">Rendering Engine</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Index_fn_letter-Y">Y</a></th><td></td><td></td></tr>
+<tr><th id="Index_fn_letter-Y">Y</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="Colors.html#index-yellow"><code>yellow</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Colors.html#Colors">Colors</a></td></tr>
<tr><td></td><td valign="top"><a href="Scripts.html#index-yield"><code>yield</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Scripts.html#Scripts">Scripts</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
</table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Index_fn_letter-A"><b>A</b></a>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Index_fn_symbol-1"><b>2</b></a>
+ &nbsp;
+<br>
+<a class="summary-letter" href="#Index_fn_letter-A"><b>A</b></a>
&nbsp;
<a class="summary-letter" href="#Index_fn_letter-B"><b>B</b></a>
&nbsp;
@@ -551,8 +723,12 @@ Previous: <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="p" r
&nbsp;
<a class="summary-letter" href="#Index_fn_letter-G"><b>G</b></a>
&nbsp;
+<a class="summary-letter" href="#Index_fn_letter-H"><b>H</b></a>
+ &nbsp;
<a class="summary-letter" href="#Index_fn_letter-I"><b>I</b></a>
&nbsp;
+<a class="summary-letter" href="#Index_fn_letter-K"><b>K</b></a>
+ &nbsp;
<a class="summary-letter" href="#Index_fn_letter-L"><b>L</b></a>
&nbsp;
<a class="summary-letter" href="#Index_fn_letter-M"><b>M</b></a>
diff --git a/manuals/chickadee/Input-Devices.html b/manuals/chickadee/Input-Devices.html
new file mode 100644
index 0000000..0b50481
--- /dev/null
+++ b/manuals/chickadee/Input-Devices.html
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Input Devices (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="Input Devices (The Chickadee Game Toolkit)">
+<meta name="keywords" content="Input Devices (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Kernel.html#Kernel" rel="up" title="Kernel">
+<link href="Window-Manipulation.html#Window-Manipulation" rel="next" title="Window Manipulation">
+<link href="The-Game-Loop.html#The-Game-Loop" rel="prev" title="The Game Loop">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="Input-Devices"></span><div class="header">
+<p>
+Next: <a href="Window-Manipulation.html#Window-Manipulation" accesskey="n" rel="next">Window Manipulation</a>, Previous: <a href="The-Game-Loop.html#The-Game-Loop" accesskey="p" rel="prev">The Game Loop</a>, Up: <a href="Kernel.html#Kernel" accesskey="u" rel="up">Kernel</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Input-Devices-1"></span><h4 class="subsection">2.1.2 Input Devices</h4>
+
+<p>While <code>run-game</code> provides hooks for mouse/keyboard/controller
+input events, it is often necessary to query input devices for their
+current state. For example, it could be desirable to query the state
+of the arrow keys every time the update hook is called to determine
+which direction the player should move that frame.
+</p>
+<dl>
+<dt id="index-key_002dpressed_003f">Procedure: <strong>key-pressed?</strong> <em>key</em></dt>
+<dd><p>Return <code>#t</code> if <var>key</var> is currently being pressed.
+</p></dd></dl>
+
+<dl>
+<dt id="index-key_002dreleased_003f">Procedure: <strong>key-released?</strong> <em>key</em></dt>
+<dd><p>Return <code>#t</code> if <var>key</var> is <em>not</em> currently being pressed.
+</p></dd></dl>
+
+<dl>
+<dt id="index-mouse_002dx">Procedure: <strong>mouse-x</strong></dt>
+<dd><p>Return the current X coordinate of the mouse cursor.
+</p></dd></dl>
+
+<dl>
+<dt id="index-mouse_002dy">Procedure: <strong>mouse-y</strong></dt>
+<dd><p>Return the current Y coordinate of the mouse cursor.
+</p></dd></dl>
+
+<dl>
+<dt id="index-mouse_002dbutton_002dpressed_003f">Procedure: <strong>mouse-button-pressed?</strong> <em>button</em></dt>
+<dd><p>Return <code>#t</code> if <var>button</var> is currently being pressed.
+</p></dd></dl>
+
+<dl>
+<dt id="index-mouse_002dbutton_002dreleased_003f">Procedure: <strong>mouse-button-released?</strong> <em>button</em></dt>
+<dd><p>Return <code>#t</code> if <var>button</var> is <em>not</em> currently being
+pressed.
+</p></dd></dl>
+
+<dl>
+<dt id="index-controller_002daxis">Procedure: <strong>controller-axis</strong> <em>controller axis</em></dt>
+<dd><p>Return a floating point value in the range [-1, 1] corresponding to
+how much <var>axis</var> (an analog stick or trigger) is being pushed on
+<var>controller</var>. 0 is returned if <var>axis</var> is not being pushed at
+all.
+</p></dd></dl>
+
+<dl>
+<dt id="index-controller_002dname">Procedure: <strong>controller-name</strong> <em>controller</em></dt>
+<dd><p>Return the name of <var>controller</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-controller_002dbutton_002dpressed_003f">Procedure: <strong>controller-button-pressed?</strong> <em>controller button</em></dt>
+<dd><p>Return <code>#t</code> if <var>button</var> on <var>controller</var> is currently
+being pressed.
+</p></dd></dl>
+
+<dl>
+<dt id="index-controller_002dbutton_002dreleased_003f">Procedure: <strong>controller-button-released?</strong> <em>controller button</em></dt>
+<dd><p>Return <code>#t</code> if <var>button</var> on <var>controller</var> is <em>not</em>
+currently being pressed.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/Installation.html b/manuals/chickadee/Installation.html
index 11a1094..0bed587 100644
--- a/manuals/chickadee/Installation.html
+++ b/manuals/chickadee/Installation.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Installation (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Installation"></a>
-<div class="header">
+<span id="Installation"></span><div class="header">
<p>
Next: <a href="API-Reference.html#API-Reference" accesskey="n" rel="next">API Reference</a>, Previous: <a href="index.html#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Installation-1"></a>
-<h2 class="chapter">1 Installation</h2>
+<span id="Installation-1"></span><h2 class="chapter">1 Installation</h2>
<p>Chickadee is available for download from its website at
<a href="dthompson.us/projects/chickadee.html">dthompson.us/projects/chickadee.html</a>. This section describes
@@ -107,7 +96,7 @@ packages, and is not covered here. Please see the files <samp>README</samp>
and <samp>INSTALL</samp> for additional details.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="Requirements.html#Requirements" accesskey="1">Requirements</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Software needed to build and run Chickadee.
+<tr><td align="left" valign="top">&bull; <a href="Requirements.html#Requirements" accesskey="1">Requirements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Software needed to build and run Chickadee.
</td></tr>
</table>
diff --git a/manuals/chickadee/Kernel.html b/manuals/chickadee/Kernel.html
index 01685d8..0faa3a6 100644
--- a/manuals/chickadee/Kernel.html
+++ b/manuals/chickadee/Kernel.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Kernel (The Chickadee Game Toolkit)</title>
@@ -32,29 +32,20 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="Index.html#Index" rel="index" title="Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="API-Reference.html#API-Reference" rel="up" title="API Reference">
-<link href="Math.html#Math" rel="next" title="Math">
+<link href="The-Game-Loop.html#The-Game-Loop" rel="next" title="The Game Loop">
<link href="API-Reference.html#API-Reference" rel="prev" title="API Reference">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,315 +80,27 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Kernel"></a>
-<div class="header">
+<span id="Kernel"></span><div class="header">
<p>
Next: <a href="Math.html#Math" accesskey="n" rel="next">Math</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Kernel-1"></a>
-<h3 class="section">2.1 Kernel</h3>
+<span id="Kernel-1"></span><h3 class="section">2.1 Kernel</h3>
-<p>At the very core of Chickadee, in the <code>(chickadee game-loop)</code>
-module, lies an event loop. This loop, or &ldquo;kernel&rdquo;, is responsible
-for ensuring that the game is updated at the desired interval,
-rendering the current state of the game world, and handling errors if
-they occur. The kernel implements what is known as a &ldquo;fixed
-timestep&rdquo; game loop, meaning that the game simulation will be
-advanced by a fixed interval of time and will never vary from frame to
-frame, unlike some other styles of game loops. The appropriately
-named <code>run-game*</code> and <code>abort-game</code> procedures are the entry
-and exit points to the Chickadee game loop kernel.
+<p>This section of the manual covers the foundation of Chickadee: The
+game loop and desktop environment interaction.
</p>
-<p>On its own, the kernel does not do very much at all. In order to
-actually respond to input events, update game state, or render output,
-the programmer must provide an engine. But don&rsquo;t worry, you don&rsquo;t
-have to start from scratch! Chickadee comes with a simple engine that
-uses SDL to create a graphical window and handle input devices, and
-OpenGL to handle rendering. This default engine is enough for most
-users to get started writing games quickly. More advanced users may
-want to write a custom engine that uses a different I/O system.
-Perhaps you are writing a text adventure or roguelike that reads from
-and writes to a terminal instead of a graphical window. The game loop
-kernel makes no assumptions.
-</p>
-<dl>
-<dt><a name="index-run_002dgame_002a"></a>Procedure: <strong>run-game*</strong> <em>[#:update] [#:render] [#:time] [#:error] [#:update-hz 60]</em></dt>
-<dd>
-<p>Start the game loop. This procedure will not return until
-<code>abort-game</code> is called.
-</p>
-<p>The core game loop is generic and requires four additional procedures
-to operate:
-</p>
-<ul>
-<li> <var>update</var>: Called <var>update-hz</var> times per second to advance the
-game simulation. This procedure is called with a single argument: The
-amount of time that has passed since the last update, in milliseconds.
-</li><li> <var>render</var>: Called each iteration of the loop to render the game to
-the desired output device. This procedure is called with a single
-argument: A value in the range [0, 1] which represents how much time
-has past since the last game state update relative to the upcoming
-game state update, as a percentage. Because the game state is updated
-independent of rendering, it is often the case that rendering is
-occuring between two updates. If the game is rendered as it was
-during the last update, a strange side-effect will occur that makes
-animation appear rough or &ldquo;choppy&rdquo;. To counter this, the
-<var>alpha</var> value can be used to perfrom a linear interpolation of a
-moving object between its current position and its previous position.
-This odd trick has the pleasing result of making the animation look
-smooth again, but requires keeping track of previous state.
-</li><li> <var>time</var>: Called to get the current time in milliseconds. This
-procedure is called with no arguments.
-</li><li> <var>error</var>: Called when an error from the <var>update</var> or
-<var>render</var> procedures reaches the game loop. This procedure is
-called with three arguments: The call stack, the error key, and the
-error arguments. If no error handler is provided, the default
-behavior is to simply re-throw the error.
-</li></ul>
-
-</dd></dl>
-
-<dl>
-<dt><a name="index-abort_002dgame"></a>Procedure: <strong>abort-game</strong></dt>
-<dd><p>Stop the currently running Chickadee game loop.
-</p></dd></dl>
-
-<p>Since most users will want to write 2D/3D games with hardware
-accelerated graphics rendering, controlled via keyboard, mouse, or
-game controller, Chickadee comes with an easy to use engine just for
-this purpose in the <code>(chickadee)</code> module: <code>run-game</code>.
-</p>
-<dl>
-<dt><a name="index-run_002dgame"></a>Procedure: <strong>run-game</strong> <em>[#:window-title &quot;Chickadee!&quot;] [#:window-width 640] [#:window-height 480] [#:window-fullscreen? <code>#f</code>] [#:update-hz 60] [#:load] [#:update] [#:draw] [#:quit] [#:key-press] [#:key-release] [#:text-input] [#:mouse-press] [#:mouse-release] [#:mouse-move] [#:controller-add] [#:controller-remove] [#:controller-press] [#:controller-release] [#:controller-move] [#:error]</em></dt>
-<dd>
-<p>Run the Chickadee game loop using the SDL engine in OpenGL mode.
-</p>
-<p>A new graphical window will be opened with <var>window-width</var> x
-<var>window-height</var> as its dimensions, <var>window-title</var> as its
-title, and in fullscreen mode if <var>window-fullscreen?</var> is
-<code>#t</code>.
-</p>
-<ul>
-<li> <var>load</var>: Called with zero arguments when the game window has opened
-but before the game loop has started. Can be used to perform
-initialization that requires an open window and OpenGL context such as
-loading textures.
-
-</li><li> <var>update</var>: Called <var>update-hz</var> times per second with one
-argument: The amount of time to advance the game simulation.
-
-</li><li> <var>draw</var>: Called each time a frame should be rendered with a single
-argument known as the <code>alpha</code> value. See the documentation for
-<code>run-game</code> for an explanation of this value.
-
-</li><li> <var>quit</var>: Called with zero arguments when the user tries to close
-the game window. The default behavior is to exit the game.
-
-</li><li> <var>key-press</var>: Called with four arguments when a key is pressed on
-the keyboard:
-
-<ol>
-<li> <var>key</var>: The symbolic name of the &ldquo;virtual&rdquo; key that was pressed.
-For example: <code>backspace</code>. It&rsquo;s called a virtual key because the
-operating system may map a physical keyboard key to another key
-entirely, such as how the author likes to bind the &ldquo;caps lock&rdquo; key
-to mean &ldquo;control&rdquo;.
-
-</li><li> <var>scancode</var>: The symbolic name of the physical key that was
-pressed.
-
-</li><li> <var>modifiers</var>: A list of the symbolic names of modifier keys that
-were being held down when the key was pressed. Possible values
-include <code>ctrl</code>, <code>alt</code>, and <code>shift</code>.
-
-</li><li> <var>repeat?</var>: <code>#t</code> if this is a repeated press of the same key.
-
-</li></ol>
-
-</li><li> <var>key-release</var>: Called with three arguments when a key is released
-on the keyboard:
-
-<ol>
-<li> <var>key</var>: The symbolic name of the &ldquo;virtual&rdquo; key that was released.
-
-</li><li> <var>scancode</var>: The symbolic name of the physical key that was
-released.
-
-</li><li> <var>modifiers</var>: A list of the symbolic names of modifier keys that
-were being held down when the key was released.
-
-</li></ol>
-
-</li><li> <var>text-input</var>: Called with a single argument, a string of text,
-when printable text is typed on the keyboard.
-
-</li><li> <var>mouse-press</var>: Called with four arguments when a mouse button is
-pressed:
-<ol>
-<li> <var>button</var>: The symbolic name of the button that was pressed, such
-as <code>left</code>, <code>middle</code>, or <code>right</code>.
-
-</li><li> <var>clicks</var>: The number of times the button has been clicked in a row.
-
-</li><li> <var>x</var>: The x coordinate of the mouse cursor.
-
-</li><li> <var>y</var>: The y coordinate of the mouse cursor.
-
-</li></ol>
-
-</li><li> <var>mouse-release</var>: Called with three arguments when a mouse button
-is released:
-
-<ol>
-<li> <var>button</var>: The symbolic name of the button that was released.
-
-</li><li> <var>x</var>: The x coordinate of the mouse cursor.
-
-</li><li> <var>y</var>: The y coordinate of the mouse cursor.
-
-</li></ol>
-
-</li><li> <var>mouse-move</var>: Called with five arguments when the mouse is moved:
-
-<ol>
-<li> <var>x</var>: The x coordinate of the mouse cursor.
-
-</li><li> <var>y</var>: The y coordinate of the mouse cursor.
-
-</li><li> <var>dx</var>: The amount the mouse has moved along the x axis since the
-last mouse move event.
-
-</li><li> <var>dy</var>: The amount the mouse has moved along the y axis since the
-last mouse move event.
-
-</li><li> <var>buttons</var>: A list of the buttons that were pressed down when the
-mouse was moved.
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="The-Game-Loop.html#The-Game-Loop" accesskey="1">The Game Loop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The core event loop.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Input-Devices.html#Input-Devices" accesskey="2">Input Devices</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Mouse, keyboard, controller input.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Window-Manipulation.html#Window-Manipulation" accesskey="3">Window Manipulation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Inspect and modify the graphical window.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="Live-Coding.html#Live-Coding" accesskey="4">Live Coding</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Tips for building games from the REPL.
+</td></tr>
+</table>
-</li></ol>
-
-</li><li> <var>controller-add</var>: Called with a single argument, an SDL game
-controller object, when a game controller is connected.
-
-</li><li> <var>controller-remove</var>: Called with a single argument, an SDL game
-controller object, when a game controller is disconnected.
-
-</li><li> <var>controller-press</var>: Called with two arguments when a button on a
-game controller is pressed:
-
-<ol>
-<li> <var>controller</var>: The controller that triggered the event.
-
-</li><li> <var>button</var>: The symbolic name of the button that was pressed.
-Possible buttons are:
-
-<ul>
-<li> <code>a</code>
-</li><li> <code>b</code>
-</li><li> <code>x</code>
-</li><li> <code>y</code>
-</li><li> <code>back</code>
-</li><li> <code>guide</code>
-</li><li> <code>start</code>
-</li><li> <code>left-stick</code>
-</li><li> <code>right-stick</code>
-</li><li> <code>left-shoulder</code>
-</li><li> <code>right-shoulder</code>
-</li><li> <code>dpad-up</code>
-</li><li> <code>dpad-down</code>
-</li><li> <code>dpad-left</code>
-</li><li> <code>dpad-right</code>
-
-</li></ul>
-
-</li></ol>
-
-</li><li> <var>controller-release</var>: Called with two arguments when a button on a
-game controller is released:
-
-<ol>
-<li> <var>controller</var>: The controller that triggered the event.
-
-</li><li> <var>button</var>: The symbolic name of the button that was released.
-
-</li></ol>
-
-</li><li> <var>controller-move</var>: Called with three arguments when an analog
-stick or trigger on a game controller is moved:
-
-<ol>
-<li> <var>controller</var>: The controller that triggered the event.
-
-</li><li> <var>axis</var>: The symbolic name of the axis that was moved. Possible
-values are:
-
-<ul>
-<li> <code>left-x</code>
-</li><li> <code>left-y</code>
-</li><li> <code>right-x</code>
-</li><li> <code>right-y</code>
-</li><li> <code>trigger-left</code>
-</li><li> <code>trigger-right</code>
-</li></ul>
-
-</li></ol>
-
-</li><li> <var>error</var>: Called with three arguments when an error occurs:
-
-<ol>
-<li> <var>stack</var>: The call stack at the point of error.
-
-</li><li> <var>key</var>: The exception key.
-
-</li><li> <var>args</var>: The arguments thrown with the exception.
-
-</li></ol>
-
-<p>The default behavior is to re-throw the error.
-</p>
-</li></ul>
-
-</dd></dl>
-
-<a name="Live-Coding"></a>
-<h4 class="subsection">2.1.1 Live Coding</h4>
-
-<p>One of the biggest appeals of any Lisp dialect is the ability to use
-the &ldquo;read-eval-print loop&rdquo; (REPL for short) to build programs
-iteratively and interactively while the program is running. However,
-programs that run in an event loop and respond to user input (such as
-a video game) require special care for this workflow to be pleasant.
-Chickadee provides no built-in support for live coding, but it&rsquo;s
-fairly easy to hook up a special kind of REPL yourself.
-</p>
-<p>First, create a cooperative REPL server (It&rsquo;s important to use Guile&rsquo;s
-cooperative REPL server instead of the standard REPL server in
-<code>(system repl server)</code> to avoid thread synchronization issues):
-</p>
-<div class="example">
-<pre class="example">(use-modules (system repl coop-server))
-
-(define repl (spawn-coop-repl-server))
-</pre></div>
-
-<p>Then, in the game loop&rsquo;s update procedure, add this:
-</p>
-<div class="example">
-<pre class="example">(poll-coop-repl-server repl)
-</pre></div>
-
-<p>To use the REPL, connect to it via port 37146. Telnet will do the
-trick, but using the <a href="https://www.nongnu.org/geiser/">Geiser</a>
-extension for Emacs is by far the best way to develop at the REPL with
-Guile. Use <code>M-x connect-to-guile</code> to connect to the REPL server.
-</p>
-<p>Happy hacking!
-</p>
-<hr>
-<div class="header">
-<p>
-Next: <a href="Math.html#Math" accesskey="n" rel="next">Math</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
-</div>
diff --git a/manuals/chickadee/Lines-and-Shapes.html b/manuals/chickadee/Lines-and-Shapes.html
index 31b0a9d..d1f14c3 100644
--- a/manuals/chickadee/Lines-and-Shapes.html
+++ b/manuals/chickadee/Lines-and-Shapes.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Lines and Shapes (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,21 +80,19 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Lines-and-Shapes"></a>
-<div class="header">
+<span id="Lines-and-Shapes"></span><div class="header">
<p>
Next: <a href="Fonts.html#Fonts" accesskey="n" rel="next">Fonts</a>, Previous: <a href="Tile-Maps.html#Tile-Maps" accesskey="p" rel="prev">Tile Maps</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Lines-and-Shapes-1"></a>
-<h4 class="subsection">2.3.4 Lines and Shapes</h4>
+<span id="Lines-and-Shapes-1"></span><h4 class="subsection">2.3.5 Lines and Shapes</h4>
<p>Sprites are fun, but sometimes simple, untextured lines and polygons
are desired. That&rsquo;s where the <code>(chickadee render shapes)</code> module
comes in!
</p>
<dl>
-<dt><a name="index-draw_002dline"></a>Procedure: <strong>draw-line</strong> <em>start end [#:thickness 0.5] [#:feather 1.0] [#:cap round] [#:color] [#:shader]</em></dt>
+<dt id="index-draw_002dline">Procedure: <strong>draw-line</strong> <em>start end [#:thickness 0.5] [#:feather 1.0] [#:cap round] [#:color] [#:shader]</em></dt>
<dd>
<p>Draw a line segment from <var>start</var> to <var>end</var>. The line will be
<var>thickness</var> pixels thick with an antialiased border <var>feather</var>
@@ -116,7 +105,7 @@ shader.
</p></dd></dl>
<dl>
-<dt><a name="index-draw_002dbezier_002dcurve"></a>Procedure: <strong>draw-bezier-curve</strong> <em>bezier [#:segments 32] [#:control-points?] [#:tangents?] [#:control-point-size 8] [#:control-point-color yellow] [#:tangent-color yellow] [#:thickness 0.5] [#:feather 1.0] [#:matrix]</em></dt>
+<dt id="index-draw_002dbezier_002dcurve">Procedure: <strong>draw-bezier-curve</strong> <em>bezier [#:segments 32] [#:control-points?] [#:tangents?] [#:control-point-size 8] [#:control-point-color yellow] [#:tangent-color yellow] [#:thickness 0.5] [#:feather 1.0] [#:matrix]</em></dt>
<dd>
<p>Draw the curve defined by <var>bezier</var> using a resolution of N
<var>segments</var>. When <var>control-points?</var> is <code>#t</code>, the control
@@ -134,7 +123,7 @@ control over the final output.
</p></dd></dl>
<dl>
-<dt><a name="index-draw_002dbezier_002dpath"></a>Procedure: <strong>draw-bezier-path</strong> <em>path [#:segments 32] [#:control-points?] [#:tangents?] [#:control-point-size 8] [#:control-point-color yellow] [#:tangent-color yellow] [#:thickness 0.5] [#:feather 1.0] [#:matrix]</em></dt>
+<dt id="index-draw_002dbezier_002dpath">Procedure: <strong>draw-bezier-path</strong> <em>path [#:segments 32] [#:control-points?] [#:tangents?] [#:control-point-size 8] [#:control-point-color yellow] [#:tangent-color yellow] [#:thickness 0.5] [#:feather 1.0] [#:matrix]</em></dt>
<dd>
<p>Render <var>path</var>, a list of bezier curves. See the documentation for
<code>draw-bezier-curve</code> for an explanation of all the keyword
diff --git a/manuals/chickadee/Live-Coding.html b/manuals/chickadee/Live-Coding.html
new file mode 100644
index 0000000..167c87a
--- /dev/null
+++ b/manuals/chickadee/Live-Coding.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Live Coding (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="Live Coding (The Chickadee Game Toolkit)">
+<meta name="keywords" content="Live Coding (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Kernel.html#Kernel" rel="up" title="Kernel">
+<link href="Math.html#Math" rel="next" title="Math">
+<link href="Window-Manipulation.html#Window-Manipulation" rel="prev" title="Window Manipulation">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="Live-Coding"></span><div class="header">
+<p>
+Previous: <a href="Window-Manipulation.html#Window-Manipulation" accesskey="p" rel="prev">Window Manipulation</a>, Up: <a href="Kernel.html#Kernel" accesskey="u" rel="up">Kernel</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Live-Coding-1"></span><h4 class="subsection">2.1.4 Live Coding</h4>
+
+<p>One of the biggest appeals of any Lisp dialect is the ability to use
+the &ldquo;read-eval-print loop&rdquo; (REPL for short) to build programs
+iteratively and interactively while the program is running. However,
+programs that run in an event loop and respond to user input (such as
+a video game) require special care for this workflow to be pleasant.
+Chickadee provides no built-in support for live coding, but it&rsquo;s
+fairly easy to hook up a special kind of REPL yourself.
+</p>
+<p>First, create a cooperative REPL server (It&rsquo;s important to use Guile&rsquo;s
+cooperative REPL server instead of the standard REPL server in
+<code>(system repl server)</code> to avoid thread synchronization issues).
+Then, in the game loop&rsquo;s update procedure, call
+<code>poll-coop-repl-server</code> and pass the REPL object. Here is a
+template to follow:
+</p>
+<div class="example">
+<pre class="example">(use-modules (chickadee)
+ (system repl coop-server))
+
+(define repl (spawn-coop-repl-server))
+
+(define (update dt)
+ (poll-coop-repl-server repl)
+ ...)
+
+(run-game #:update update ...)
+</pre></div>
+
+<p>To use the REPL, connect to it via port 37146. Telnet will do the
+trick, but using the <a href="https://www.nongnu.org/geiser/">Geiser</a>
+extension for Emacs is by far the best way to develop at the REPL with
+Guile. Use <code>M-x connect-to-guile</code> to connect to the REPL server.
+</p>
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/Math.html b/manuals/chickadee/Math.html
index fddd9cc..6636fd6 100644
--- a/manuals/chickadee/Math.html
+++ b/manuals/chickadee/Math.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Math (The Chickadee Game Toolkit)</title>
@@ -33,28 +33,19 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="API-Reference.html#API-Reference" rel="up" title="API Reference">
<link href="Basics.html#Basics" rel="next" title="Basics">
-<link href="Kernel.html#Kernel" rel="prev" title="Kernel">
+<link href="Live-Coding.html#Live-Coding" rel="prev" title="Live Coding">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Math"></a>
-<div class="header">
+<span id="Math"></span><div class="header">
<p>
Next: <a href="Graphics.html#Graphics" accesskey="n" rel="next">Graphics</a>, Previous: <a href="Kernel.html#Kernel" accesskey="p" rel="prev">Kernel</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Math-1"></a>
-<h3 class="section">2.2 Math</h3>
+<span id="Math-1"></span><h3 class="section">2.2 Math</h3>
<p>Chickadee contains data types and procedures for performing the most
common computations in video game simulations such as linear algebra
@@ -104,23 +93,23 @@ with vectors and matrices and axis-aligned bounding box collision
detection.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="Basics.html#Basics" accesskey="1">Basics</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commonly used, miscellaneous things.
+<tr><td align="left" valign="top">&bull; <a href="Basics.html#Basics" accesskey="1">Basics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commonly used, miscellaneous things.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Vectors.html#Vectors" accesskey="2">Vectors</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Euclidean vectors.
+<tr><td align="left" valign="top">&bull; <a href="Vectors.html#Vectors" accesskey="2">Vectors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Euclidean vectors.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Rectangles.html#Rectangles" accesskey="3">Rectangles</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Axis-aligned bounding boxes.
+<tr><td align="left" valign="top">&bull; <a href="Rectangles.html#Rectangles" accesskey="3">Rectangles</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Axis-aligned bounding boxes.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Grid.html#Grid" accesskey="4">Grid</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Spatial partitioning for bounding boxes.
+<tr><td align="left" valign="top">&bull; <a href="Grid.html#Grid" accesskey="4">Grid</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Spatial partitioning for bounding boxes.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Matrices.html#Matrices" accesskey="5">Matrices</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Transformation matrices.
+<tr><td align="left" valign="top">&bull; <a href="Matrices.html#Matrices" accesskey="5">Matrices</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Transformation matrices.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Quaternions.html#Quaternions" accesskey="6">Quaternions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Rotations about an arbitrary axis.
+<tr><td align="left" valign="top">&bull; <a href="Quaternions.html#Quaternions" accesskey="6">Quaternions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Rotations about an arbitrary axis.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Easings.html#Easings" accesskey="7">Easings</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Easing functions for interesting animations.
+<tr><td align="left" valign="top">&bull; <a href="Easings.html#Easings" accesskey="7">Easings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Easing functions for interesting animations.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Bezier-Curves.html#Bezier-Curves" accesskey="8">Bezier Curves</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Cubic Bezier curves and paths in 2D space.
+<tr><td align="left" valign="top">&bull; <a href="Bezier-Curves.html#Bezier-Curves" accesskey="8">Bezier Curves</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Cubic Bezier curves and paths in 2D space.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Path-Finding.html#Path-Finding" accesskey="9">Path Finding</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generic A* path finding.
+<tr><td align="left" valign="top">&bull; <a href="Path-Finding.html#Path-Finding" accesskey="9">Path Finding</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Generic A* path finding.
</td></tr>
</table>
diff --git a/manuals/chickadee/Matrices.html b/manuals/chickadee/Matrices.html
index c5a0098..5f1e6fe 100644
--- a/manuals/chickadee/Matrices.html
+++ b/manuals/chickadee/Matrices.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Matrices (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,21 +80,18 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Matrices"></a>
-<div class="header">
+<span id="Matrices"></span><div class="header">
<p>
Next: <a href="Quaternions.html#Quaternions" accesskey="n" rel="next">Quaternions</a>, Previous: <a href="Grid.html#Grid" accesskey="p" rel="prev">Grid</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Matrices-1"></a>
-<h4 class="subsection">2.2.5 Matrices</h4>
+<span id="Matrices-1"></span><h4 class="subsection">2.2.5 Matrices</h4>
<p>The <code>(chickadee math matrix)</code> module provides an interface for
working with the most common type of matrices in game development: 4x4
transformation matrices.
</p>
-<a name="Another-Note-About-Performance"></a>
-<h4 class="subsubsection">2.2.5.1 Another Note About Performance</h4>
+<span id="Another-Note-About-Performance"></span><h4 class="subsubsection">2.2.5.1 Another Note About Performance</h4>
<p>Much like the vector API, the matrix API is commonly used in
performance critical code paths. In order to reduce the amount of
@@ -111,23 +99,22 @@ garbage generated and improve matrix multiplication performance, there
are many procedures that perform in-place modifications of matrix
objects.
</p>
-<a name="Matrix-Operations"></a>
-<h4 class="subsubsection">2.2.5.2 Matrix Operations</h4>
+<span id="Matrix-Operations"></span><h4 class="subsubsection">2.2.5.2 Matrix Operations</h4>
<dl>
-<dt><a name="index-make_002dmatrix4"></a>Procedure: <strong>make-matrix4</strong> <em>aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd</em></dt>
+<dt id="index-make_002dmatrix4">Procedure: <strong>make-matrix4</strong> <em>aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd</em></dt>
<dd>
<p>Return a new 4x4 matrix initialized with the given 16 values in
column-major format.
</p></dd></dl>
<dl>
-<dt><a name="index-make_002dnull_002dmatrix4"></a>Procedure: <strong>make-null-matrix4</strong></dt>
+<dt id="index-make_002dnull_002dmatrix4">Procedure: <strong>make-null-matrix4</strong></dt>
<dd><p>Return a new 4x4 matrix with all values initialized to 0.
</p></dd></dl>
<dl>
-<dt><a name="index-make_002didentity_002dmatrix4"></a>Procedure: <strong>make-identity-matrix4</strong></dt>
+<dt id="index-make_002didentity_002dmatrix4">Procedure: <strong>make-identity-matrix4</strong></dt>
<dd><p>Return a new 4x4 identity matrix. Any matrix multiplied by the
identity matrix yields the original matrix. This procedure is
equivalent to the following code:
@@ -142,12 +129,12 @@ equivalent to the following code:
</dd></dl>
<dl>
-<dt><a name="index-matrix4_003f"></a>Procedure: <strong>matrix4?</strong> <em>obj</em></dt>
+<dt id="index-matrix4_003f">Procedure: <strong>matrix4?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a 4x4 matrix.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002a"></a>Procedure: <strong>matrix4*</strong> <em>. matrices</em></dt>
+<dt id="index-matrix4_002a">Procedure: <strong>matrix4*</strong> <em>. matrices</em></dt>
<dd><p>Return a new 4x4 matrix containing the product of multiplying all of
the given <var>matrices</var>.
</p>
@@ -155,7 +142,7 @@ the given <var>matrices</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-orthographic_002dprojection"></a>Procedure: <strong>orthographic-projection</strong> <em>left right top bottom near far</em></dt>
+<dt id="index-orthographic_002dprojection">Procedure: <strong>orthographic-projection</strong> <em>left right top bottom near far</em></dt>
<dd>
<p>Return a new 4x4 matrix that represents an orthographic (2D)
projection for the horizontal clipping plane <var>top</var> and
@@ -164,7 +151,7 @@ and the depth clipping plane <var>near</var> and <var>far</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-perspective_002dprojection"></a>Procedure: <strong>perspective-projection</strong> <em>fov aspect-ratio near far</em></dt>
+<dt id="index-perspective_002dprojection">Procedure: <strong>perspective-projection</strong> <em>fov aspect-ratio near far</em></dt>
<dd>
<p>Return a new 4x4 matrix that represents a perspective (3D) projection
with a field of vision of <var>fov</var> radians, an aspect ratio of
@@ -173,68 +160,68 @@ and <var>far</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002dtranslate"></a>Procedure: <strong>matrix4-translate</strong> <em>x</em></dt>
+<dt id="index-matrix4_002dtranslate">Procedure: <strong>matrix4-translate</strong> <em>x</em></dt>
<dd><p>Return a new 4x4 matrix that represents a translation by <var>x</var>, a 2D
vector, a 3D vector, or a rectangle (in which case the bottom-left
corner of the rectangle is used).
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002dscale"></a>Procedure: <strong>matrix4-scale</strong> <em>s</em></dt>
+<dt id="index-matrix4_002dscale">Procedure: <strong>matrix4-scale</strong> <em>s</em></dt>
<dd><p>Return a new 4x4 matrix that represents a scaling along the X, Y, and
Z axes by the scaling factor <var>s</var>, a real number.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002drotate"></a>Procedure: <strong>matrix4-rotate</strong> <em>q</em></dt>
+<dt id="index-matrix4_002drotate">Procedure: <strong>matrix4-rotate</strong> <em>q</em></dt>
<dd><p>Return a new 4x4 matrix that represents a rotation about an arbitrary
axis defined by the quaternion <var>q</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002drotate_002dz"></a>Procedure: <strong>matrix4-rotate-z</strong> <em>theta</em></dt>
+<dt id="index-matrix4_002drotate_002dz">Procedure: <strong>matrix4-rotate-z</strong> <em>theta</em></dt>
<dd><p>Return a new 4x4 matrix that represents a rotation about the Z axis by
<var>theta</var> radians.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002didentity_0021"></a>Procedure: <strong>matrix4-identity!</strong> <em>matrix</em></dt>
+<dt id="index-matrix4_002didentity_0021">Procedure: <strong>matrix4-identity!</strong> <em>matrix</em></dt>
<dd><p>Modify <var>matrix</var> in-place to contain the identity matrix.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002dmult_0021"></a>Procedure: <strong>matrix4-mult!</strong> <em>dest a b</em></dt>
+<dt id="index-matrix4_002dmult_0021">Procedure: <strong>matrix4-mult!</strong> <em>dest a b</em></dt>
<dd><p>Multiply the 4x4 matrix <var>a</var> by the 4x4 matrix <var>b</var> and store
the result in the 4x4 matrix <var>dest</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002dtranslate_0021"></a>Procedure: <strong>matrix4-translate!</strong> <em>matrix x</em></dt>
+<dt id="index-matrix4_002dtranslate_0021">Procedure: <strong>matrix4-translate!</strong> <em>matrix x</em></dt>
<dd><p>Modify <var>matrix</var> in-place to contain a translation by <var>x</var>, a 2D
vector, a 3D vector, or a rectangle (in which case the bottom-left
corner of the rectangle is used).
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002dscale_0021"></a>Procedure: <strong>matrix4-scale!</strong> <em>matrix s</em></dt>
+<dt id="index-matrix4_002dscale_0021">Procedure: <strong>matrix4-scale!</strong> <em>matrix s</em></dt>
<dd><p>Modify <var>matrix</var> in-place to contain a scaling along the X, Y, and
Z axes by the scaling factor <var>s</var>, a real number.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002drotate_0021"></a>Procedure: <strong>matrix4-rotate!</strong> <em>matrix q</em></dt>
+<dt id="index-matrix4_002drotate_0021">Procedure: <strong>matrix4-rotate!</strong> <em>matrix q</em></dt>
<dd><p>Modify <var>matrix</var> in-place to contain a rotation about an arbitrary
axis defined by the quaternion <var>q</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002drotate_002dz_0021"></a>Procedure: <strong>matrix4-rotate-z!</strong> <em>matrix theta</em></dt>
+<dt id="index-matrix4_002drotate_002dz_0021">Procedure: <strong>matrix4-rotate-z!</strong> <em>matrix theta</em></dt>
<dd><p>Modify <var>matrix</var> in-place to contain a rotation about the Z axis by
<var>theta</var> radians.
</p></dd></dl>
<dl>
-<dt><a name="index-matrix4_002d2d_002dtransform_0021"></a>Procedure: <strong>matrix4-2d-transform!</strong> <em>matrix [#:origin] [#:position] [#:rotation] [#:scale] [#:skew]</em></dt>
+<dt id="index-matrix4_002d2d_002dtransform_0021">Procedure: <strong>matrix4-2d-transform!</strong> <em>matrix [#:origin] [#:position] [#:rotation] [#:scale] [#:skew]</em></dt>
<dd>
<p>Modify <var>matrix</var> in-place to contain the transformation described
by <var>position</var>, a 2D vector or rectangle, <var>rotation</var>, a scalar
@@ -245,7 +232,7 @@ particular transformation will not be included in the result.
</p></dd></dl>
<dl>
-<dt><a name="index-transform_0021"></a>Procedure: <strong>transform!</strong> <em>matrix v</em></dt>
+<dt id="index-transform_0021">Procedure: <strong>transform!</strong> <em>matrix v</em></dt>
<dd><p>Modify the 2D vector <var>v</var> in-place by multiplying it by the 4x4
matrix <var>matrix</var>.
</p></dd></dl>
diff --git a/manuals/chickadee/Particles.html b/manuals/chickadee/Particles.html
index 35a6b61..bded6e5 100644
--- a/manuals/chickadee/Particles.html
+++ b/manuals/chickadee/Particles.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Particles (The Chickadee Game Toolkit)</title>
@@ -32,29 +32,20 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="Index.html#Index" rel="index" title="Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Graphics.html#Graphics" rel="up" title="Graphics">
-<link href="Blending.html#Blending" rel="next" title="Blending">
+<link href="3D-Models.html#g_t3D-Models" rel="next" title="3D Models">
<link href="Fonts.html#Fonts" rel="prev" title="Fonts">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Particles"></a>
-<div class="header">
+<span id="Particles"></span><div class="header">
<p>
-Next: <a href="Blending.html#Blending" accesskey="n" rel="next">Blending</a>, Previous: <a href="Fonts.html#Fonts" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="3D-Models.html#g_t3D-Models" accesskey="n" rel="next">3D Models</a>, Previous: <a href="Fonts.html#Fonts" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Particles-1"></a>
-<h4 class="subsection">2.3.6 Particles</h4>
+<span id="Particles-1"></span><h4 class="subsection">2.3.7 Particles</h4>
<p>Effects like smoke, fire, sparks, etc. are often achieved by animating
lots of little, short-lived sprites known as &ldquo;particles&rdquo;. In fact,
@@ -132,7 +121,7 @@ at the coordinates <code>(320, 240)</code>:
<p>To see all of the tweakable knobs and switches, read on!
</p>
<dl>
-<dt><a name="index-make_002dparticles"></a>Procedure: <strong>make-particles</strong> <em>capacity [#:blend-mode <code>alpha</code>] [#:color white] [#:end-color transparent] [#:texture] [#:animation-rows 1] [#:animation-columns 1] [#:width] [#:height] [#:speed-range (vec2 0.1 1.0)] [#:acceleration-range (vec2 0.0 0.1)] [#:direction-range (vec2 0 (* 2 pi))] [#:lifetime 30] [#:sort]</em></dt>
+<dt id="index-make_002dparticles">Procedure: <strong>make-particles</strong> <em>capacity [#:blend-mode <code>alpha</code>] [#:color white] [#:end-color transparent] [#:texture] [#:animation-rows 1] [#:animation-columns 1] [#:width] [#:height] [#:speed-range (vec2 0.1 1.0)] [#:acceleration-range (vec2 0.0 0.1)] [#:direction-range (vec2 0 (* 2 pi))] [#:lifetime 30] [#:sort]</em></dt>
<dd>
<p>Return a new particle system that may contain up to <var>capacity</var>
particles. Achieving the desired particle effect involves tweaking
@@ -187,27 +176,27 @@ applied at all.
</p></dd></dl>
<dl>
-<dt><a name="index-particles_003f"></a>Procedure: <strong>particles?</strong> <em>obj</em></dt>
+<dt id="index-particles_003f">Procedure: <strong>particles?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a particle system.
</p></dd></dl>
<dl>
-<dt><a name="index-update_002dparticles"></a>Procedure: <strong>update-particles</strong> <em>particles</em></dt>
+<dt id="index-update_002dparticles">Procedure: <strong>update-particles</strong> <em>particles</em></dt>
<dd><p>Advance the simulation of <var>particles</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-draw_002dparticles"></a>Procedure: <strong>draw-particles</strong> <em>particles</em></dt>
+<dt id="index-draw_002dparticles">Procedure: <strong>draw-particles</strong> <em>particles</em></dt>
<dd><p>Render <var>particles</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-draw_002dparticles_002a"></a>Procedure: <strong>draw-particles*</strong> <em>particles matrix</em></dt>
+<dt id="index-draw_002dparticles_002a">Procedure: <strong>draw-particles*</strong> <em>particles matrix</em></dt>
<dd><p>Render <var>particles</var> with <var>matrix</var> applied.
</p></dd></dl>
<dl>
-<dt><a name="index-make_002dparticle_002demitter"></a>Procedure: <strong>make-particle-emitter</strong> <em>spawn-area rate [duration]</em></dt>
+<dt id="index-make_002dparticle_002demitter">Procedure: <strong>make-particle-emitter</strong> <em>spawn-area rate [duration]</em></dt>
<dd>
<p>Return a new particle emitter that spawns <var>rate</var> particles per
frame within <var>spawn-area</var> (a rectangle or 2D vector) for
@@ -216,45 +205,45 @@ emitter will spawn particles indefinitely.
</p></dd></dl>
<dl>
-<dt><a name="index-particle_002demitter_003f"></a>Procedure: <strong>particle-emitter?</strong> <em>obj</em></dt>
+<dt id="index-particle_002demitter_003f">Procedure: <strong>particle-emitter?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a particle emitter.
</p></dd></dl>
<dl>
-<dt><a name="index-particle_002demitter_002dspawn_002darea"></a>Procedure: <strong>particle-emitter-spawn-area</strong> <em>emitter</em></dt>
+<dt id="index-particle_002demitter_002dspawn_002darea">Procedure: <strong>particle-emitter-spawn-area</strong> <em>emitter</em></dt>
<dd><p>Return the spawn area for <var>emitter</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-particle_002demitter_002drate"></a>Procedure: <strong>particle-emitter-rate</strong> <em>emitter</em></dt>
+<dt id="index-particle_002demitter_002drate">Procedure: <strong>particle-emitter-rate</strong> <em>emitter</em></dt>
<dd><p>Return the number of particles that <var>emitter</var> will spawn per
frame.
</p></dd></dl>
<dl>
-<dt><a name="index-particle_002demitter_002dlife"></a>Procedure: <strong>particle-emitter-life</strong> <em>emitter</em></dt>
+<dt id="index-particle_002demitter_002dlife">Procedure: <strong>particle-emitter-life</strong> <em>emitter</em></dt>
<dd><p>Return the number of frames remaining in <var>emitter</var>&rsquo;s lifespan.
</p></dd></dl>
<dl>
-<dt><a name="index-particle_002demitter_002ddone_003f"></a>Procedure: <strong>particle-emitter-done?</strong> <em>emitter</em></dt>
+<dt id="index-particle_002demitter_002ddone_003f">Procedure: <strong>particle-emitter-done?</strong> <em>emitter</em></dt>
<dd><p>Return <code>#t</code> if <var>emitter</var> has finished spawning particlces.
</p></dd></dl>
<dl>
-<dt><a name="index-add_002dparticle_002demitter"></a>Procedure: <strong>add-particle-emitter</strong> <em>particles emitter</em></dt>
+<dt id="index-add_002dparticle_002demitter">Procedure: <strong>add-particle-emitter</strong> <em>particles emitter</em></dt>
<dd><p>Add <var>emitter</var> to <var>particles</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-remove_002dparticle_002demitter"></a>Procedure: <strong>remove-particle-emitter</strong> <em>particles emitter</em></dt>
+<dt id="index-remove_002dparticle_002demitter">Procedure: <strong>remove-particle-emitter</strong> <em>particles emitter</em></dt>
<dd><p>Remove <var>emitter</var> to <var>particles</var>
</p></dd></dl>
<hr>
<div class="header">
<p>
-Next: <a href="Blending.html#Blending" accesskey="n" rel="next">Blending</a>, Previous: <a href="Fonts.html#Fonts" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="3D-Models.html#g_t3D-Models" accesskey="n" rel="next">3D Models</a>, Previous: <a href="Fonts.html#Fonts" accesskey="p" rel="prev">Fonts</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
diff --git a/manuals/chickadee/Path-Finding.html b/manuals/chickadee/Path-Finding.html
index 255eba7..a97bb2c 100644
--- a/manuals/chickadee/Path-Finding.html
+++ b/manuals/chickadee/Path-Finding.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Path Finding (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Path-Finding"></a>
-<div class="header">
+<span id="Path-Finding"></span><div class="header">
<p>
Previous: <a href="Bezier-Curves.html#Bezier-Curves" accesskey="p" rel="prev">Bezier Curves</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Path-Finding-1"></a>
-<h4 class="subsection">2.2.9 Path Finding</h4>
+<span id="Path-Finding-1"></span><h4 class="subsection">2.2.9 Path Finding</h4>
<p>Most game worlds have maps. Often, these games have a need to move
non-player characters around in an unscripted fashion. For example,
@@ -149,17 +138,17 @@ the coordinates of the two map tiles. Choose an appropriate heuristic
for optimal path finding!
</p>
<dl>
-<dt><a name="index-make_002dpath_002dfinder"></a>Procedure: <strong>make-path-finder</strong></dt>
+<dt id="index-make_002dpath_002dfinder">Procedure: <strong>make-path-finder</strong></dt>
<dd><p>Return a new path finder object.
</p></dd></dl>
<dl>
-<dt><a name="index-path_002dfinder_003f"></a>Procedure: <strong>path-finder?</strong> <em>obj</em></dt>
+<dt id="index-path_002dfinder_003f">Procedure: <strong>path-finder?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a path finder.
</p></dd></dl>
<dl>
-<dt><a name="index-a_002a"></a>Procedure: <strong>a*</strong> <em>path-finder start goal neighbors cost distance</em></dt>
+<dt id="index-a_002a">Procedure: <strong>a*</strong> <em>path-finder start goal neighbors cost distance</em></dt>
<dd>
<p>Return a list of nodes forming a path from <var>start</var> to <var>goal</var>
using <var>path-finder</var> to hold state. <var>neighbors</var> is a procedure
diff --git a/manuals/chickadee/Quaternions.html b/manuals/chickadee/Quaternions.html
index ebda6e9..8c89255 100644
--- a/manuals/chickadee/Quaternions.html
+++ b/manuals/chickadee/Quaternions.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Quaternions (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Quaternions"></a>
-<div class="header">
+<span id="Quaternions"></span><div class="header">
<p>
Next: <a href="Easings.html#Easings" accesskey="n" rel="next">Easings</a>, Previous: <a href="Matrices.html#Matrices" accesskey="p" rel="prev">Matrices</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Quaternions-1"></a>
-<h4 class="subsection">2.2.6 Quaternions</h4>
+<span id="Quaternions-1"></span><h4 class="subsection">2.2.6 Quaternions</h4>
<p>In game development, the quaternion is most often used to represent
rotations. Why not use a matrix for that, you may ask. Unlike
@@ -106,38 +95,38 @@ smooth transition from one rotation to another, whereas interpolating
two matrices would yield garbage.
</p>
<dl>
-<dt><a name="index-quaternion"></a>Procedure: <strong>quaternion</strong> <em>x y z w</em></dt>
+<dt id="index-quaternion">Procedure: <strong>quaternion</strong> <em>x y z w</em></dt>
<dd><p>Return a new quaternion with values <var>x</var>, <var>y</var>, <var>z</var>, and
<var>w</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-quaternion_003f"></a>Procedure: <strong>quaternion?</strong> <em>obj</em></dt>
+<dt id="index-quaternion_003f">Procedure: <strong>quaternion?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a quaternion.
</p></dd></dl>
<dl>
-<dt><a name="index-quaternion_002dw"></a>Procedure: <strong>quaternion-w</strong> <em>q</em></dt>
+<dt id="index-quaternion_002dw">Procedure: <strong>quaternion-w</strong> <em>q</em></dt>
<dd><p>Return the W component of the quaternion <var>q</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-quaternion_002dx"></a>Procedure: <strong>quaternion-x</strong> <em>q</em></dt>
+<dt id="index-quaternion_002dx">Procedure: <strong>quaternion-x</strong> <em>q</em></dt>
<dd><p>Return the X component of the quaternion <var>q</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-quaternion_002dy"></a>Procedure: <strong>quaternion-y</strong> <em>q</em></dt>
+<dt id="index-quaternion_002dy">Procedure: <strong>quaternion-y</strong> <em>q</em></dt>
<dd><p>Return the Y component of the quaternion <var>q</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-quaternion_002dz"></a>Procedure: <strong>quaternion-z</strong> <em>q</em></dt>
+<dt id="index-quaternion_002dz">Procedure: <strong>quaternion-z</strong> <em>q</em></dt>
<dd><p>Return the Z component of the quaternion <var>q</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-make_002didentity_002dquaternion"></a>Procedure: <strong>make-identity-quaternion</strong></dt>
+<dt id="index-make_002didentity_002dquaternion">Procedure: <strong>make-identity-quaternion</strong></dt>
<dd><p>Return the identity quaternion.
</p></dd></dl>
diff --git a/manuals/chickadee/Rectangles.html b/manuals/chickadee/Rectangles.html
index ecfbde0..719ac05 100644
--- a/manuals/chickadee/Rectangles.html
+++ b/manuals/chickadee/Rectangles.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Rectangles (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Rectangles"></a>
-<div class="header">
+<span id="Rectangles"></span><div class="header">
<p>
Next: <a href="Grid.html#Grid" accesskey="n" rel="next">Grid</a>, Previous: <a href="Vectors.html#Vectors" accesskey="p" rel="prev">Vectors</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Rectangles-1"></a>
-<h4 class="subsection">2.2.3 Rectangles</h4>
+<span id="Rectangles-1"></span><h4 class="subsection">2.2.3 Rectangles</h4>
<p>The <code>(chickadee math rect)</code> module provides an API for
manipulating axis-aligned bounding boxes (AABBs). AABBs are often
@@ -110,221 +99,221 @@ functions that do in-place modification of rectangles for use in
performance critical code paths.
</p>
<dl>
-<dt><a name="index-rect"></a>Procedure: <strong>rect</strong> <em>x y width height</em></dt>
-<dt><a name="index-make_002drect"></a>Procedure: <strong>make-rect</strong> <em><var>x</var> <var>y</var> <var>width</var> <var>height</var></em></dt>
+<dt id="index-rect">Procedure: <strong>rect</strong> <em>x y width height</em></dt>
+<dt id="index-make_002drect">Procedure: <strong>make-rect</strong> <em><var>x</var> <var>y</var> <var>width</var> <var>height</var></em></dt>
<dd><p>Create a new rectangle that is <var>width</var> by <var>height</var> in size and
whose bottom-left corner is located at (<var>x</var>, <var>y</var>).
</p></dd></dl>
<dl>
-<dt><a name="index-rect_003f"></a>Procedure: <strong>rect?</strong> <em>obj</em></dt>
+<dt id="index-rect_003f">Procedure: <strong>rect?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a rectangle.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dwithin_003f"></a>Procedure: <strong>rect-within?</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dwithin_003f">Procedure: <strong>rect-within?</strong> <em>rect1 rect2</em></dt>
<dd><p>Return <code>#t</code> if <var>rect2</var> is completely within <var>rect1</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dintersects_003f"></a>Procedure: <strong>rect-intersects?</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dintersects_003f">Procedure: <strong>rect-intersects?</strong> <em>rect1 rect2</em></dt>
<dd><p>Return <code>#t</code> if <var>rect2</var> overlaps <var>rect1</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dcontains_003f"></a>Procedure: <strong>rect-contains?</strong> <em>rect x y</em></dt>
+<dt id="index-rect_002dcontains_003f">Procedure: <strong>rect-contains?</strong> <em>rect x y</em></dt>
<dd><p>Return <code>#t</code> if the coordinates (<var>x</var>, <var>y</var>) are within
<var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dcontains_002dvec2_003f"></a>Procedure: <strong>rect-contains-vec2?</strong> <em>rect v</em></dt>
+<dt id="index-rect_002dcontains_002dvec2_003f">Procedure: <strong>rect-contains-vec2?</strong> <em>rect v</em></dt>
<dd><p>Return <code>#t</code> if the 2D vector <var>v</var> is within the bounds of
<var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dx"></a>Procedure: <strong>rect-x</strong> <em>rect</em></dt>
+<dt id="index-rect_002dx">Procedure: <strong>rect-x</strong> <em>rect</em></dt>
<dd><p>Return the X coordinate of the lower-left corner of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dy"></a>Procedure: <strong>rect-y</strong> <em>rect</em></dt>
+<dt id="index-rect_002dy">Procedure: <strong>rect-y</strong> <em>rect</em></dt>
<dd><p>Return the Y coordinate of the lower-left corner of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dleft"></a>Procedure: <strong>rect-left</strong> <em>rect</em></dt>
+<dt id="index-rect_002dleft">Procedure: <strong>rect-left</strong> <em>rect</em></dt>
<dd><p>Return the left-most X coordinate of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dright"></a>Procedure: <strong>rect-right</strong> <em>rect</em></dt>
+<dt id="index-rect_002dright">Procedure: <strong>rect-right</strong> <em>rect</em></dt>
<dd><p>Return the right-most X coordinate of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dbottom"></a>Procedure: <strong>rect-bottom</strong> <em>rect</em></dt>
+<dt id="index-rect_002dbottom">Procedure: <strong>rect-bottom</strong> <em>rect</em></dt>
<dd><p>Return the bottom-most Y coordinate of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dtop"></a>Procedure: <strong>rect-top</strong> <em>rect</em></dt>
+<dt id="index-rect_002dtop">Procedure: <strong>rect-top</strong> <em>rect</em></dt>
<dd><p>Return the top-most Y coordinate of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dcenter_002dx"></a>Procedure: <strong>rect-center-x</strong> <em>rect</em></dt>
+<dt id="index-rect_002dcenter_002dx">Procedure: <strong>rect-center-x</strong> <em>rect</em></dt>
<dd><p>Return the X coordinate of the center of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dcenter_002dy"></a>Procedure: <strong>rect-center-y</strong> <em>rect</em></dt>
+<dt id="index-rect_002dcenter_002dy">Procedure: <strong>rect-center-y</strong> <em>rect</em></dt>
<dd><p>Return the Y coordinate of the center of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dwidth"></a>Procedure: <strong>rect-width</strong> <em>rect</em></dt>
+<dt id="index-rect_002dwidth">Procedure: <strong>rect-width</strong> <em>rect</em></dt>
<dd><p>Return the width of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dheight"></a>Procedure: <strong>rect-height</strong> <em>rect</em></dt>
+<dt id="index-rect_002dheight">Procedure: <strong>rect-height</strong> <em>rect</em></dt>
<dd><p>Return the height of <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002darea"></a>Procedure: <strong>rect-area</strong> <em>rect</em></dt>
+<dt id="index-rect_002darea">Procedure: <strong>rect-area</strong> <em>rect</em></dt>
<dd><p>Return the surface area covered by <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dclamp_002dx"></a>Procedure: <strong>rect-clamp-x</strong> <em>rect x</em></dt>
+<dt id="index-rect_002dclamp_002dx">Procedure: <strong>rect-clamp-x</strong> <em>rect x</em></dt>
<dd><p>Restrict <var>x</var> to the portion of the X axis covered by <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dclamp_002dy"></a>Procedure: <strong>rect-clamp-y</strong> <em>rect y</em></dt>
+<dt id="index-rect_002dclamp_002dy">Procedure: <strong>rect-clamp-y</strong> <em>rect y</em></dt>
<dd><p>Restrict <var>y</var> to the portion of the Y axis covered by <var>rect</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dclamp"></a>Procedure: <strong>rect-clamp</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dclamp">Procedure: <strong>rect-clamp</strong> <em>rect1 rect2</em></dt>
<dd><p>Return a new rect that adjusts the location of <var>rect1</var> so that it
is completely within <var>rect2</var>. An exception is thrown in the case
that <var>rect1</var> cannot fit completely within <var>rect2</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove"></a>Procedure: <strong>rect-move</strong> <em>rect x y</em></dt>
+<dt id="index-rect_002dmove">Procedure: <strong>rect-move</strong> <em>rect x y</em></dt>
<dd><p>Return a new rectangle based on <var>rect</var> but moved to the
coordinates (<var>x</var>, <var>y</var>).
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove_002dvec2"></a>Procedure: <strong>rect-move-vec2</strong> <em>rect v</em></dt>
+<dt id="index-rect_002dmove_002dvec2">Procedure: <strong>rect-move-vec2</strong> <em>rect v</em></dt>
<dd><p>Return a new rectangle based on <var>rect</var> but moved to the
coordinates in the 2D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove_002dby"></a>Procedure: <strong>rect-move-by</strong> <em>rect x y</em></dt>
+<dt id="index-rect_002dmove_002dby">Procedure: <strong>rect-move-by</strong> <em>rect x y</em></dt>
<dd><p>Return a new rectangle based on <var>rect</var> but moved by (<var>x</var>,
<var>y</var>) units relative to its current location.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove_002dby_002dvec2"></a>Procedure: <strong>rect-move-by-vec2</strong> <em>rect v</em></dt>
+<dt id="index-rect_002dmove_002dby_002dvec2">Procedure: <strong>rect-move-by-vec2</strong> <em>rect v</em></dt>
<dd><p>Return a new rectangle based on <var>rect</var> but moved by the 2D vector
<var>v</var> relative to its current location.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dinflate"></a>Procedure: <strong>rect-inflate</strong> <em>rect width height</em></dt>
+<dt id="index-rect_002dinflate">Procedure: <strong>rect-inflate</strong> <em>rect width height</em></dt>
<dd><p>Return a new rectangle based on <var>rect</var>, but expanded by
<var>width</var> units on the X axis and <var>height</var> units on the Y axis,
while keeping the rectangle centered on the same point.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dunion"></a>Procedure: <strong>rect-union</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dunion">Procedure: <strong>rect-union</strong> <em>rect1 rect2</em></dt>
<dd><p>Return a new rectangle that completely covers the area of <var>rect1</var>
and <var>rect2</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dclip"></a>Procedure: <strong>rect-clip</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dclip">Procedure: <strong>rect-clip</strong> <em>rect1 rect2</em></dt>
<dd><p>Return a new rectangle that is the overlapping region of <var>rect1</var>
and <var>rect2</var>. If the two rectangles do not overlap, a rectangle of
0 width and 0 height is returned.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002drect_002dx_0021"></a>Procedure: <strong>set-rect-x!</strong> <em>rect x</em></dt>
+<dt id="index-set_002drect_002dx_0021">Procedure: <strong>set-rect-x!</strong> <em>rect x</em></dt>
<dd><p>Set the left X coordinate of <var>rect</var> to <var>x</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002drect_002dy_0021"></a>Procedure: <strong>set-rect-y!</strong> <em>rect y</em></dt>
+<dt id="index-set_002drect_002dy_0021">Procedure: <strong>set-rect-y!</strong> <em>rect y</em></dt>
<dd><p>Set the bottom Y coordinate of <var>rect</var> to <var>y</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002drect_002dwidth_0021"></a>Procedure: <strong>set-rect-width!</strong> <em>rect width</em></dt>
+<dt id="index-set_002drect_002dwidth_0021">Procedure: <strong>set-rect-width!</strong> <em>rect width</em></dt>
<dd><p>Set the width of <var>rect</var> to <var>width</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002drect_002dheight_0021"></a>Procedure: <strong>set-rect-height!</strong> <em>rect height</em></dt>
+<dt id="index-set_002drect_002dheight_0021">Procedure: <strong>set-rect-height!</strong> <em>rect height</em></dt>
<dd><p>Set the height of <var>rect</var> to <var>height</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove_0021"></a>Procedure: <strong>rect-move!</strong> <em>rect x y</em></dt>
+<dt id="index-rect_002dmove_0021">Procedure: <strong>rect-move!</strong> <em>rect x y</em></dt>
<dd><p>Move <var>rect</var> to (<var>x</var>, <var>y</var>) in-place.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove_002dvec2_0021"></a>Procedure: <strong>rect-move-vec2!</strong> <em>rect v</em></dt>
+<dt id="index-rect_002dmove_002dvec2_0021">Procedure: <strong>rect-move-vec2!</strong> <em>rect v</em></dt>
<dd><p>Move <var>rect</var> to the 2D vector <var>v</var> in-place.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove_002dby_0021"></a>Procedure: <strong>rect-move-by!</strong> <em>rect x y</em></dt>
+<dt id="index-rect_002dmove_002dby_0021">Procedure: <strong>rect-move-by!</strong> <em>rect x y</em></dt>
<dd><p>Move <var>rect</var> by (<var>x</var>, <var>y</var>) in-place.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dmove_002dby_002dvec2_0021"></a>Procedure: <strong>rect-move-by-vec2!</strong> <em>rect v</em></dt>
+<dt id="index-rect_002dmove_002dby_002dvec2_0021">Procedure: <strong>rect-move-by-vec2!</strong> <em>rect v</em></dt>
<dd><p>Move <var>rect</var> by the 2D vector <var>v</var> in-place.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dinflate_0021"></a>Procedure: <strong>rect-inflate!</strong> <em>rect width height</em></dt>
+<dt id="index-rect_002dinflate_0021">Procedure: <strong>rect-inflate!</strong> <em>rect width height</em></dt>
<dd><p>Expand <var>rect</var> by <var>width</var> and <var>height</var> in-place.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dunion_0021"></a>Procedure: <strong>rect-union!</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dunion_0021">Procedure: <strong>rect-union!</strong> <em>rect1 rect2</em></dt>
<dd><p>Modify <var>rect1</var> in-place to completely cover the area of both
<var>rect1</var> and <var>rect2</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dclip_0021"></a>Procedure: <strong>rect-clip!</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dclip_0021">Procedure: <strong>rect-clip!</strong> <em>rect1 rect2</em></dt>
<dd><p>Modify <var>rect1</var> in-place to be the overlapping region of
<var>rect1</var> and <var>rect2</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-rect_002dclamp_0021"></a>Procedure: <strong>rect-clamp!</strong> <em>rect1 rect2</em></dt>
+<dt id="index-rect_002dclamp_0021">Procedure: <strong>rect-clamp!</strong> <em>rect1 rect2</em></dt>
<dd><p>Adjust the location of <var>rect1</var> in-place so that its bounds are
completely within <var>rect2</var>. An exception is thrown in the case
that <var>rect1</var> cannot fit completely within <var>rect2</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dclamp_002dto_002drect_0021"></a>Procedure: <strong>vec2-clamp-to-rect!</strong> <em>v rect</em></dt>
+<dt id="index-vec2_002dclamp_002dto_002drect_0021">Procedure: <strong>vec2-clamp-to-rect!</strong> <em>v rect</em></dt>
<dd><p>Restrict the coordinates of the 2D vector <var>v</var> so that they are
within the bounds of <var>rect</var>. <var>v</var> is modified in-place.
</p></dd></dl>
diff --git a/manuals/chickadee/Rendering-Engine.html b/manuals/chickadee/Rendering-Engine.html
index daef0ce..7aeb885 100644
--- a/manuals/chickadee/Rendering-Engine.html
+++ b/manuals/chickadee/Rendering-Engine.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Rendering Engine (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Rendering-Engine"></a>
-<div class="header">
+<span id="Rendering-Engine"></span><div class="header">
<p>
Next: <a href="Buffers.html#Buffers" accesskey="n" rel="next">Buffers</a>, Previous: <a href="Viewports.html#Viewports" accesskey="p" rel="prev">Viewports</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Rendering-Engine-1"></a>
-<h4 class="subsection">2.3.10 Rendering Engine</h4>
+<span id="Rendering-Engine-1"></span><h4 class="subsection">2.3.12 Rendering Engine</h4>
<p>Chickadee defines rendering using a metaphor familiar to Scheme
programmers: procedure application. A shader (see <a href="Shaders.html#Shaders">Shaders</a>) is
@@ -116,8 +105,8 @@ would be tedious to have to have to specify them each time
<code>(chickadee render)</code> module.
</p>
<dl>
-<dt><a name="index-gpu_002dapply"></a>Syntax: <strong>gpu-apply</strong> <em>shader vertex-array [#:uniform-key uniform-value &hellip;]</em></dt>
-<dt><a name="index-gpu_002dapply_002a"></a>Syntax: <strong>gpu-apply*</strong> <em>shader vertex-array count [#:uniform-key uniform-value &hellip;]</em></dt>
+<dt id="index-gpu_002dapply">Syntax: <strong>gpu-apply</strong> <em>shader vertex-array [#:uniform-key uniform-value &hellip;]</em></dt>
+<dt id="index-gpu_002dapply_002a">Syntax: <strong>gpu-apply*</strong> <em>shader vertex-array count [#:uniform-key uniform-value &hellip;]</em></dt>
<dd>
<p>Render <var>vertex-array</var> using <var>shader</var> with the uniform values
specified in the following keyword arguments.
@@ -127,8 +116,8 @@ specified in the following keyword arguments.
</p></dd></dl>
<dl>
-<dt><a name="index-gpu_002dapply_002finstanced"></a>Syntax: <strong>gpu-apply/instanced</strong> <em>shader vertex-array n [#:uniform-key uniform-value &hellip;]</em></dt>
-<dt><a name="index-gpu_002dapply_002finstanced-1"></a>Syntax: <strong>gpu-apply/instanced</strong> <em>shader vertex-array count n [#:uniform-key uniform-value &hellip;]</em></dt>
+<dt id="index-gpu_002dapply_002finstanced">Syntax: <strong>gpu-apply/instanced</strong> <em>shader vertex-array n [#:uniform-key uniform-value &hellip;]</em></dt>
+<dt id="index-gpu_002dapply_002finstanced-1">Syntax: <strong>gpu-apply/instanced</strong> <em>shader vertex-array count n [#:uniform-key uniform-value &hellip;]</em></dt>
<dd>
<p>Render <var>vertex-array</var> <var>n</var> times using <var>shader</var> with the
uniform values specified in the following keyword arguments.
@@ -143,66 +132,66 @@ vertices.
</p></dd></dl>
<dl>
-<dt><a name="index-current_002dviewport"></a>Procedure: <strong>current-viewport</strong></dt>
+<dt id="index-current_002dviewport">Procedure: <strong>current-viewport</strong></dt>
<dd><p>Return the currently bound viewport (see <a href="Viewports.html#Viewports">Viewports</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-current_002dframebuffer"></a>Procedure: <strong>current-framebuffer</strong></dt>
+<dt id="index-current_002dframebuffer">Procedure: <strong>current-framebuffer</strong></dt>
<dd><p>Return the currently bound framebuffer (see <a href="Framebuffers.html#Framebuffers">Framebuffers</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-current_002dblend_002dmode"></a>Procedure: <strong>current-blend-mode</strong></dt>
+<dt id="index-current_002dblend_002dmode">Procedure: <strong>current-blend-mode</strong></dt>
<dd><p>Return the currently bound blend mode (see <a href="Blending.html#Blending">Blending</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-current_002ddepth_002dtest"></a>Procedure: <strong>current-depth-test</strong></dt>
+<dt id="index-current_002ddepth_002dtest">Procedure: <strong>current-depth-test</strong></dt>
<dd><p>Return <code>#t</code> if depth testing is currently enabled (see <a href="Blending.html#Blending">Blending</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-current_002dtexture"></a>Procedure: <strong>current-texture</strong></dt>
+<dt id="index-current_002dtexture">Procedure: <strong>current-texture</strong></dt>
<dd><p>Return the currently bound texture (see <a href="Textures.html#Textures">Textures</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-current_002dprojection"></a>Procedure: <strong>current-projection</strong></dt>
+<dt id="index-current_002dprojection">Procedure: <strong>current-projection</strong></dt>
<dd><p>Return the currently bound projection matrix (see <a href="Matrices.html#Matrices">Matrices</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dviewport"></a>Syntax: <strong>with-viewport</strong> <em>viewport body &hellip;</em></dt>
+<dt id="index-with_002dviewport">Syntax: <strong>with-viewport</strong> <em>viewport body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> with the current viewport bound to <var>viewport</var> (see <a href="Viewports.html#Viewports">Viewports</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dframebuffer"></a>Syntax: <strong>with-framebuffer</strong> <em>framebuffer body &hellip;</em></dt>
+<dt id="index-with_002dframebuffer">Syntax: <strong>with-framebuffer</strong> <em>framebuffer body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> with the current framebuffer bound to
<var>framebuffer</var> (see <a href="Framebuffers.html#Framebuffers">Framebuffers</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dblend_002dmode"></a>Syntax: <strong>with-blend-mode</strong> <em>blend-mode body &hellip;</em></dt>
+<dt id="index-with_002dblend_002dmode">Syntax: <strong>with-blend-mode</strong> <em>blend-mode body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> with the current blend mode bound to
<var>blend-mode</var> (see <a href="Blending.html#Blending">Blending</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-with_002ddepth_002dtest"></a>Syntax: <strong>with-depth-test</strong> <em>depth-test? body &hellip;</em></dt>
+<dt id="index-with_002ddepth_002dtest">Syntax: <strong>with-depth-test</strong> <em>depth-test? body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> with the depth-test disabled if <var>depth-test?</var>
is <code>#f</code>, or enabled otherwise (see <a href="Blending.html#Blending">Blending</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dtexture"></a>Syntax: <strong>with-texture</strong> <em>texture body &hellip;</em></dt>
+<dt id="index-with_002dtexture">Syntax: <strong>with-texture</strong> <em>texture body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> with the current texture bound to <var>texture</var>
(see <a href="Textures.html#Textures">Textures</a>).
</p></dd></dl>
<dl>
-<dt><a name="index-with_002dprojection"></a>Syntax: <strong>with-projection</strong> <em>projection body &hellip;</em></dt>
+<dt id="index-with_002dprojection">Syntax: <strong>with-projection</strong> <em>projection body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> with the current projection matrix bound to
<var>projection</var> (see <a href="Matrices.html#Matrices">Matrices</a>).
</p></dd></dl>
diff --git a/manuals/chickadee/Requirements.html b/manuals/chickadee/Requirements.html
index d55e911..3f51eda 100644
--- a/manuals/chickadee/Requirements.html
+++ b/manuals/chickadee/Requirements.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Requirements (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Requirements"></a>
-<div class="header">
+<span id="Requirements"></span><div class="header">
<p>
Up: <a href="Installation.html#Installation" accesskey="u" rel="up">Installation</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Requirements-1"></a>
-<h3 class="section">1.1 Requirements</h3>
+<span id="Requirements-1"></span><h3 class="section">1.1 Requirements</h3>
<p>Chickadee depends on the following packages:
</p>
@@ -104,6 +93,9 @@ Up: <a href="Installation.html#Installation" accesskey="u" rel="up">Installation
<li> <a href="https://gnu.org/software/guile">GNU Guile</a>, version 2.1.0 or later;
</li><li> <a href="https://gnu.org/software/guile-opengl">GNU guile-opengl</a>, version 0.1 or later.
</li><li> <a href="https://dthompson.us/pages/software/guile-sdl2.html">guile-sdl2</a>, version 0.2.0 or later;
+</li><li> libopenal
+</li><li> libvorbisfile
+</li><li> libmpg123
</li></ul>
<p>Additionally, Chickadee depends on being able to create an OpenGL 3.3
diff --git a/manuals/chickadee/Scripting.html b/manuals/chickadee/Scripting.html
index dd85378..672ee26 100644
--- a/manuals/chickadee/Scripting.html
+++ b/manuals/chickadee/Scripting.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Scripting (The Chickadee Game Toolkit)</title>
@@ -33,28 +33,19 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="API-Reference.html#API-Reference" rel="up" title="API Reference">
<link href="Agendas.html#Agendas" rel="next" title="Agendas">
-<link href="Shaders.html#Shaders" rel="prev" title="Shaders">
+<link href="The-Environment.html#The-Environment" rel="prev" title="The Environment">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Scripting"></a>
-<div class="header">
+<span id="Scripting"></span><div class="header">
<p>
-Previous: <a href="Graphics.html#Graphics" accesskey="p" rel="prev">Graphics</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+Previous: <a href="Audio.html#Audio" accesskey="p" rel="prev">Audio</a>, Up: <a href="API-Reference.html#API-Reference" accesskey="u" rel="up">API Reference</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Scripting-1"></a>
-<h3 class="section">2.4 Scripting</h3>
+<span id="Scripting-1"></span><h3 class="section">2.5 Scripting</h3>
<p>Game logic is a web of asynchronous events that are carefully
coordinated to bring the game world to life. In order to make an
@@ -112,13 +101,13 @@ allow many such &ldquo;threads&rdquo; to run concurrently.
of scheduling tasks.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="Agendas.html#Agendas" accesskey="1">Agendas</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Scheduling tasks.
+<tr><td align="left" valign="top">&bull; <a href="Agendas.html#Agendas" accesskey="1">Agendas</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Scheduling tasks.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Scripts.html#Scripts" accesskey="2">Scripts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Cooperative multitasking.
+<tr><td align="left" valign="top">&bull; <a href="Scripts.html#Scripts" accesskey="2">Scripts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Cooperative multitasking.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Tweening.html#Tweening" accesskey="3">Tweening</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Animations.
+<tr><td align="left" valign="top">&bull; <a href="Tweening.html#Tweening" accesskey="3">Tweening</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Animations.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Channels.html#Channels" accesskey="4">Channels</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Publish data to listeners.
+<tr><td align="left" valign="top">&bull; <a href="Channels.html#Channels" accesskey="4">Channels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Publish data to listeners.
</td></tr>
</table>
diff --git a/manuals/chickadee/Scripts.html b/manuals/chickadee/Scripts.html
index b8472dc..97b7513 100644
--- a/manuals/chickadee/Scripts.html
+++ b/manuals/chickadee/Scripts.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Scripts (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Scripts"></a>
-<div class="header">
+<span id="Scripts"></span><div class="header">
<p>
Next: <a href="Tweening.html#Tweening" accesskey="n" rel="next">Tweening</a>, Previous: <a href="Agendas.html#Agendas" accesskey="p" rel="prev">Agendas</a>, Up: <a href="Scripting.html#Scripting" accesskey="u" rel="up">Scripting</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Scripts-1"></a>
-<h4 class="subsection">2.4.2 Scripts</h4>
+<span id="Scripts-1"></span><h4 class="subsection">2.5.2 Scripts</h4>
<p>Now that we can schedule tasks, let&rsquo;s take things to the next level.
It sure would be great if we could make procedures that described a
@@ -143,54 +132,54 @@ script is returned that can be used to cancel it when desired.
</pre></div>
<dl>
-<dt><a name="index-spawn_002dscript"></a>Procedure: <strong>spawn-script</strong> <em>thunk</em></dt>
+<dt id="index-spawn_002dscript">Procedure: <strong>spawn-script</strong> <em>thunk</em></dt>
<dd><p>Apply <var>thunk</var> as a script and return a handle to it.
</p></dd></dl>
<dl>
-<dt><a name="index-script"></a>Syntax: <strong>script</strong> <em>body &hellip;</em></dt>
+<dt id="index-script">Syntax: <strong>script</strong> <em>body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> as a script and return a handle to it.
</p></dd></dl>
<dl>
-<dt><a name="index-script_003f"></a>Procedure: <strong>script?</strong> <em>obj</em></dt>
+<dt id="index-script_003f">Procedure: <strong>script?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a script handle.
</p></dd></dl>
<dl>
-<dt><a name="index-script_002dcancelled_003f"></a>Procedure: <strong>script-cancelled?</strong> <em>obj</em></dt>
+<dt id="index-script_002dcancelled_003f">Procedure: <strong>script-cancelled?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> has been cancelled.
</p></dd></dl>
<dl>
-<dt><a name="index-script_002drunning_003f"></a>Procedure: <strong>script-running?</strong> <em>obj</em></dt>
+<dt id="index-script_002drunning_003f">Procedure: <strong>script-running?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> has not yet terminated or been
cancelled.
</p></dd></dl>
<dl>
-<dt><a name="index-script_002dcomplete_003f"></a>Procedure: <strong>script-complete?</strong> <em>obj</em></dt>
+<dt id="index-script_002dcomplete_003f">Procedure: <strong>script-complete?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> has terminated.
</p></dd></dl>
<dl>
-<dt><a name="index-cancel_002dscript"></a>Procedure: <strong>cancel-script</strong> <em>co</em></dt>
+<dt id="index-cancel_002dscript">Procedure: <strong>cancel-script</strong> <em>co</em></dt>
<dd><p>Prevent further execution of the script <var>co</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-yield"></a>Procedure: <strong>yield</strong> <em>handler</em></dt>
+<dt id="index-yield">Procedure: <strong>yield</strong> <em>handler</em></dt>
<dd><p>Suspend the current script and pass its continuation to the
procedure <var>handler</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-sleep"></a>Procedure: <strong>sleep</strong> <em>duration</em></dt>
+<dt id="index-sleep">Procedure: <strong>sleep</strong> <em>duration</em></dt>
<dd><p>Wait <var>duration</var> before resuming the current script.
</p></dd></dl>
<dl>
-<dt><a name="index-forever"></a>Syntax: <strong>forever</strong> <em>body &hellip;</em></dt>
+<dt id="index-forever">Syntax: <strong>forever</strong> <em>body &hellip;</em></dt>
<dd><p>Evaluate <var>body</var> in an endless loop.
</p></dd></dl>
diff --git a/manuals/chickadee/Shaders.html b/manuals/chickadee/Shaders.html
index 9d3e555..31fcbca 100644
--- a/manuals/chickadee/Shaders.html
+++ b/manuals/chickadee/Shaders.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Shaders (The Chickadee Game Toolkit)</title>
@@ -32,29 +32,20 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="Index.html#Index" rel="index" title="Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Graphics.html#Graphics" rel="up" title="Graphics">
-<link href="Scripting.html#Scripting" rel="next" title="Scripting">
+<link href="Audio.html#Audio" rel="next" title="Audio">
<link href="Buffers.html#Buffers" rel="prev" title="Buffers">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Shaders"></a>
-<div class="header">
+<span id="Shaders"></span><div class="header">
<p>
Previous: <a href="Buffers.html#Buffers" accesskey="p" rel="prev">Buffers</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Shaders-1"></a>
-<h4 class="subsection">2.3.12 Shaders</h4>
+<span id="Shaders-1"></span><h4 class="subsection">2.3.14 Shaders</h4>
<p>Shaders are programs that the GPU can evaluate that allow the
programmer to completely customized the final output of a GPU draw
@@ -165,92 +154,228 @@ recommend searching the web for more information and examples. What
we can say, though, is how to use our API:
</p>
<dl>
-<dt><a name="index-strings_002d_003eshader"></a>Procedure: <strong>strings-&gt;shader</strong> <em>vertex-source fragment-source</em></dt>
+<dt id="index-strings_002d_003eshader">Procedure: <strong>strings-&gt;shader</strong> <em>vertex-source fragment-source</em></dt>
<dd><p>Compile <var>vertex-source</var>, the GLSL code for the vertex shader, and
<var>fragment-source</var>, the GLSL code for the fragment shader, into a
GPU shader program.
</p></dd></dl>
<dl>
-<dt><a name="index-load_002dshader"></a>Procedure: <strong>load-shader</strong> <em>vertex-source-file fragment-source-file</em></dt>
+<dt id="index-load_002dshader">Procedure: <strong>load-shader</strong> <em>vertex-source-file fragment-source-file</em></dt>
<dd><p>Compile the GLSL source code within <var>vertex-source-file</var> and
<var>fragment-source-file</var> into a GPU shader program.
</p></dd></dl>
<dl>
-<dt><a name="index-make_002dshader"></a>Procedure: <strong>make-shader</strong> <em>vertex-port fragment-port</em></dt>
+<dt id="index-make_002dshader">Procedure: <strong>make-shader</strong> <em>vertex-port fragment-port</em></dt>
<dd><p>Read GLSL source from <var>vertex-port</var> and <var>fragment-port</var> and
compile them into a GPU shader program.
</p></dd></dl>
<dl>
-<dt><a name="index-shader_003f"></a>Procedure: <strong>shader?</strong> <em>obj</em></dt>
+<dt id="index-shader_003f">Procedure: <strong>shader?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a shader.
</p></dd></dl>
<dl>
-<dt><a name="index-null_002dshader"></a>Variable: <strong>null-shader</strong></dt>
+<dt id="index-null_002dshader">Variable: <strong>null-shader</strong></dt>
<dd><p>Represents the absence shader program.
</p></dd></dl>
<dl>
-<dt><a name="index-shader_002duniform"></a>Procedure: <strong>shader-uniform</strong> <em>shader name</em></dt>
+<dt id="index-shader_002duniform">Procedure: <strong>shader-uniform</strong> <em>shader name</em></dt>
<dd><p>Return the metadata for the uniform <var>name</var> in <var>shader</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-shader_002duniforms"></a>Procedure: <strong>shader-uniforms</strong> <em>shader</em></dt>
+<dt id="index-shader_002duniforms">Procedure: <strong>shader-uniforms</strong> <em>shader</em></dt>
<dd><p>Return a hash table of uniforms for <var>shader</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-shader_002dattributes"></a>Procedure: <strong>shader-attributes</strong> <em>shader</em></dt>
+<dt id="index-shader_002dattributes">Procedure: <strong>shader-attributes</strong> <em>shader</em></dt>
<dd><p>Return a hash table of attributes for <var>shader</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-uniform_003f"></a>Procedure: <strong>uniform?</strong> <em>obj</em></dt>
+<dt id="index-shader_002duniform_002dset_0021">Procedure: <strong>shader-uniform-set!</strong> <em>shader uniform value</em></dt>
+</dl>
+
+<span id="Attributes"></span><h4 class="subsubsection">2.3.14.1 Attributes</h4>
+
+<dl>
+<dt id="index-attribute_003f">Procedure: <strong>attribute?</strong> <em>obj</em></dt>
+<dd><p>Return <code>#t</code> if <var>obj</var> is an attribute.
+</p></dd></dl>
+
+<dl>
+<dt id="index-attribute_002dname">Procedure: <strong>attribute-name</strong> <em>attribute</em></dt>
+<dd><p>Return the variable name of <var>attribute</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-attribute_002dlocation">Procedure: <strong>attribute-location</strong> <em>attribute</em></dt>
+<dd><p>Return the binding location of <var>attribute</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-attribute_002dtype">Procedure: <strong>attribute-type</strong> <em>attribute</em></dt>
+<dd><p>Return the data type of <var>attribute</var>.
+</p></dd></dl>
+
+<span id="Uniforms"></span><h4 class="subsubsection">2.3.14.2 Uniforms</h4>
+
+<dl>
+<dt id="index-uniform_003f">Procedure: <strong>uniform?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a uniform.
</p></dd></dl>
<dl>
-<dt><a name="index-uniform_002dname"></a>Procedure: <strong>uniform-name</strong> <em>uniform</em></dt>
+<dt id="index-uniform_002dname">Procedure: <strong>uniform-name</strong> <em>uniform</em></dt>
<dd><p>Return the variable name of <var>uniform</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-uniform_002dtype"></a>Procedure: <strong>uniform-type</strong> <em>uniform</em></dt>
+<dt id="index-uniform_002dtype">Procedure: <strong>uniform-type</strong> <em>uniform</em></dt>
<dd><p>Return the data type of <var>uniform</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-uniform_002dvalue"></a>Procedure: <strong>uniform-value</strong> <em>uniform</em></dt>
+<dt id="index-uniform_002dvalue">Procedure: <strong>uniform-value</strong> <em>uniform</em></dt>
<dd><p>Return the current value of <var>uniform</var>.
</p></dd></dl>
+<span id="User_002dDefined-Shader-Types"></span><h4 class="subsubsection">2.3.14.3 User-Defined Shader Types</h4>
+
+<p>The shader examples in this manual thus far have only shown uniforms
+defined using primitive types. However, GLSL shaders support
+user-defined compound structs, such as this one:
+</p>
+<div class="example">
+<pre class="verbatim">struct DirectionalLight {
+ vec3 direction;
+ vec3 ambient;
+ vec3 diffuse;
+ vec3 specular;
+};
+
+uniform DirectionalLight light;
+</pre></div>
+
+<p>While <code>light</code> is declared as a single uniform in the shader code,
+OpenGL translates this into <em>four</em> uniforms in this case: One
+uniform each member of the <code>DirectionalLight</code> struct. This poses
+a problem for sending Scheme data to the GPU. How can compound Scheme
+data translate into compound uniform data on the GPU? The answer is
+with shader types. Shader types are a special kind of Guile struct
+that provide a one-to-one mapping between a Scheme data structure and
+a shader struct.
+</p>
+<p>Some example code will explain this concept best. Here is the Scheme
+equivalent of the <code>DirectionalLight</code> struct:
+</p>
+<div class="example">
+<pre class="example">(define-shader-type &lt;directional-light&gt;
+ make-directional-light
+ directional-light?
+ (float-vec3 direction directional-light-direction)
+ (float-vec3 ambient directional-light-ambient)
+ (float-vec3 diffuse directional-light-diffuse)
+ (float-vec3 specular directional-light-specular)
+ (float shininess directional-light-shininess))
+</pre></div>
+
+<p>The macro <code>define-shader-type</code> closely resembles the familiar
+<code>define-record-type</code> from SRFI-9, but with one notable
+difference: Each struct field contains type information. The type
+must be one of several primitive types (documented below) or another
+shader type in the case of a nested structure.
+</p>
+<p>It is important to note that the names of the shader type fields
+<em>must</em> match the names of the struct members in the GLSL code,
+otherwise Chickadee will be unable to perform the proper translation.
+</p>
+<p>As of this writing, this interface is new and experimental. It
+remains to be seen if this model is robust enough for all use-cases.
+</p>
+<p>Primitive data types:
+</p>
<dl>
-<dt><a name="index-uniform_002ddefault_002dvalue"></a>Procedure: <strong>uniform-default-value</strong> <em>uniform</em></dt>
-<dd><p>Return the default value of <var>uniform</var>.
+<dt id="index-bool">Variable: <strong>bool</strong></dt>
+<dd><p>Either <code>#t</code> or <code>#f</code>.
</p></dd></dl>
<dl>
-<dt><a name="index-attribute_003f"></a>Procedure: <strong>attribute?</strong> <em>obj</em></dt>
-<dd><p>Return <code>#t</code> if <var>obj</var> is an attribute.
+<dt id="index-int">Variable: <strong>int</strong></dt>
+<dd><p>An integer.
</p></dd></dl>
<dl>
-<dt><a name="index-attribute_002dname"></a>Procedure: <strong>attribute-name</strong> <em>attribute</em></dt>
-<dd><p>Return the variable name of <var>attribute</var>.
+<dt id="index-unsigned_002dint">Variable: <strong>unsigned-int</strong></dt>
+<dd><p>An unsigned integer.
</p></dd></dl>
<dl>
-<dt><a name="index-attribute_002dlocation"></a>Procedure: <strong>attribute-location</strong> <em>attribute</em></dt>
-<dd><p>Return the binding location of <var>attribute</var>.
+<dt id="index-float">Variable: <strong>float</strong></dt>
+<dd><p>A floating point number.
</p></dd></dl>
<dl>
-<dt><a name="index-attribute_002dtype"></a>Procedure: <strong>attribute-type</strong> <em>attribute</em></dt>
-<dd><p>Return the data type of <var>attribute</var>.
+<dt id="index-float_002dvec2">Variable: <strong>float-vec2</strong></dt>
+<dd><p>A 2D vector (see <a href="Vectors.html#Vectors">Vectors</a>.)
+</p></dd></dl>
+
+<dl>
+<dt id="index-float_002dvec3">Variable: <strong>float-vec3</strong></dt>
+<dd><p>A 3D vector (see <a href="Vectors.html#Vectors">Vectors</a>.)
+</p></dd></dl>
+
+<dl>
+<dt id="index-float_002dvec4">Variable: <strong>float-vec4</strong></dt>
+<dd><p>A color.
+</p></dd></dl>
+
+<dl>
+<dt id="index-mat4">Variable: <strong>mat4</strong></dt>
+<dd><p>A matrix (see <a href="Matrices.html#Matrices">Matrices</a>.)
+</p></dd></dl>
+
+<dl>
+<dt id="index-sampler_002d2d">Variable: <strong>sampler-2d</strong></dt>
+<dd><p>A texture (see <a href="Textures.html#Textures">Textures</a>.)
+</p></dd></dl>
+
+<dl>
+<dt id="index-local_002dfield">Variable: <strong>local-field</strong></dt>
+<dd><p>A special type that means that the data is for the client-side
+(Scheme-side) only and should not be sent to the GPU. Any object may
+be stored in a local field.
+</p></dd></dl>
+
+<dl>
+<dt id="index-define_002dshader_002dtype">Syntax: <strong>define-shader-type</strong> <em>&lt;name&gt; constructor predicate (field-type field-name [field-getter] [field-setter]) &hellip;</em></dt>
+<dd>
+<p>Define a new shader data type called <var>&lt;name&gt;</var>.
+</p>
+<p>Instances of this data type are created by calling the
+<var>constructor</var> procedure. This procedure maps each field to a
+keyword argument. A shader data type with the fields <code>foo</code>,
+<code>bar</code>, and <code>baz</code> would have a constructor that accepts the
+keyword arguments <code>#:foo</code>, <code>#:bar</code>, and <code>#:baz</code>.
+</p>
+<p>A procedure named <var>predicate</var> will test if an object is a
+<var>&lt;name&gt;</var> shader data type.
+</p>
+<p>Fields follow the format <code>(field-type field-name [field-getter]
+[field-setter])</code>. <var>field-type</var> and <var>field-name</var> are required
+for each field, but <var>field-getter</var> and <var>field-setter</var> are
+optional.
+</p>
+</dd></dl>
+
+<dl>
+<dt id="index-shader_002ddata_002dtype_003f">Procedure: <strong>shader-data-type?</strong> <em>obj</em></dt>
+<dd><p>Return <code>#t</code> if <var>obj</var> is a shader data type object.
</p></dd></dl>
<hr>
diff --git a/manuals/chickadee/Sources.html b/manuals/chickadee/Sources.html
new file mode 100644
index 0000000..82917a2
--- /dev/null
+++ b/manuals/chickadee/Sources.html
@@ -0,0 +1,336 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Sources (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="Sources (The Chickadee Game Toolkit)">
+<meta name="keywords" content="Sources (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Audio.html#Audio" rel="up" title="Audio">
+<link href="The-Listener.html#The-Listener" rel="next" title="The Listener">
+<link href="Audio-Files.html#Audio-Files" rel="prev" title="Audio Files">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="Sources"></span><div class="header">
+<p>
+Next: <a href="The-Listener.html#The-Listener" accesskey="n" rel="next">The Listener</a>, Previous: <a href="Audio-Files.html#Audio-Files" accesskey="p" rel="prev">Audio Files</a>, Up: <a href="Audio.html#Audio" accesskey="u" rel="up">Audio</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Sources-1"></span><h4 class="subsection">2.4.2 Sources</h4>
+
+<p>While the <code>audio-play</code> procedure provides a quick and convenient
+way to play audio, it has some limitations. What if the audio is a
+long piece of music that might need to be paused or stopped later?
+What if the audio should be looped? What if the volume or pitch needs
+to be altered? For manipulating audio in these ways, a &ldquo;source&rdquo; is
+required. Sources can be thought of like a boombox: They sit
+somewhere in the room and play sound. The pause or stop buttons can
+be pressed; it can be moved somewhere else; the volume knob can be
+adjusted; the CD can be changed.
+</p>
+<p>Sources are a great fit for handling background music, among other
+things. For quick, one-off sound effects, <code>audio-play</code> is a
+better fit.
+</p>
+<dl>
+<dt id="index-make_002dsource">Procedure: <strong>make-source</strong> <em>audio loop? [#:pitch 1.0] [#:volume 1.0] [#:min-volume 0.0] [#:max-volume 1.0] [#:max-distance] [#:reference-distance 0.0] [#:rolloff-factor 1.0] [#:cone-outer-volume 0.0] [#:cone-inner-angle 0.0] [#:cone-outer-angle] [#:position <code>(vec3 0.0 0.0 0.0)</code>] [#:velocity <code>(vec3 0.0 0.0 0.0)</code>] [#:direction <code>(vec3 0.0 0.0 0.0)</code>] [#:relative? <code>#f</code>]</em></dt>
+<dd>
+<p>Return a new audio source. <var>audio</var> is the audio data to use when
+playing. <var>loop?</var> specifies whether or not to loop the audio
+during playback.
+</p>
+<p>Refer to <code>audio-play</code> (see <a href="Audio-Files.html#Audio-Files">Audio Files</a>) for information about
+the optional keyword arguments.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_003f">Procedure: <strong>source?</strong> <em>obj</em></dt>
+<dd><p>Return <code>#t</code> if <var>obj</var> is an audio source object.
+</p></dd></dl>
+
+<dl>
+<dt id="index-streaming_002dsource_003f">Procedure: <strong>streaming-source?</strong> <em>source</em></dt>
+<dd><p>Return <code>#t</code> if <var>source</var> contains streaming audio.
+</p></dd></dl>
+
+<dl>
+<dt id="index-static_002dsource_003f">Procedure: <strong>static-source?</strong> <em>source</em></dt>
+<dd><p>Return <code>#t</code> if <var>source</var> contains static audio.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dplaying_003f">Procedure: <strong>source-playing?</strong> <em>source</em></dt>
+<dd><p>Return <code>#t</code> if <var>source</var> is currently playing.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dpaused_003f">Procedure: <strong>source-paused?</strong> <em>source</em></dt>
+<dd><p>Return <code>#t</code> if <var>source</var> is currently paused.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dstopped_003f">Procedure: <strong>source-stopped?</strong> <em>source</em></dt>
+<dd><p>Return <code>#t</code> if <var>source</var> is currently stopped.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dpitch">Procedure: <strong>source-pitch</strong> <em>source</em></dt>
+<dd><p>Return the pitch multiplier of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dvolume">Procedure: <strong>source-volume</strong> <em>source</em></dt>
+<dd><p>Return the volume multiplier of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dmin_002dvolume">Procedure: <strong>source-min-volume</strong> <em>source</em></dt>
+<dd><p>Return the minimum volume of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dmax_002dvolume">Procedure: <strong>source-max-volume</strong> <em>source</em></dt>
+<dd><p>Return the maximum volume of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dmax_002ddistance">Procedure: <strong>source-max-distance</strong> <em>source</em></dt>
+<dd><p>Return the maximum distance of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dreference_002ddistance">Procedure: <strong>source-reference-distance</strong> <em>source</em></dt>
+<dd><p>Return the reference distance of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002drolloff_002dfactor">Procedure: <strong>source-rolloff-factor</strong> <em>source</em></dt>
+<dd><p>Return the rolloff factor of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dcone_002douter_002dvolume">Procedure: <strong>source-cone-outer-volume</strong> <em>source</em></dt>
+<dd><p>Return the volume of <var>source</var> when outside the oriented cone.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dcone_002dinner_002dangle">Procedure: <strong>source-cone-inner-angle</strong> <em>source</em></dt>
+<dd><p>Return the inner angle of the sound cone of <var>source</var> in radians.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dcone_002douter_002dangle">Procedure: <strong>source-cone-outer-angle</strong> <em>source</em></dt>
+<dd><p>Return the outer angle of the sound cone of <var>source</var> in radians.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dposition">Procedure: <strong>source-position</strong> <em>source</em></dt>
+<dd><p>Return the position of <var>source</var> as a 3D vector.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dvelocity">Procedure: <strong>source-velocity</strong> <em>source</em></dt>
+<dd><p>Return the velocity of <var>source</var> as a 3D vector.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002ddirection">Procedure: <strong>source-direction</strong> <em>source</em></dt>
+<dd><p>Return the direction of <var>source</var> as a 3D vector.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002drelative_003f">Procedure: <strong>source-relative?</strong> <em>source</em></dt>
+<dd><p>Return <code>#t</code> if the position of <var>source</var> is relative to the
+listener&rsquo;s position.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dplay">Procedure: <strong>source-play</strong> <em>source</em></dt>
+<dd><p>Begin/resume playback of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dpause">Procedure: <strong>source-pause</strong> <em>source</em></dt>
+<dd><p>Pause playback of <var>source</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dtoggle">Procedure: <strong>source-toggle</strong> <em>source</em></dt>
+<dd><p>Play <var>source</var> if it is currently paused or pause <var>source</var> if
+it is currently playing.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002dstop">Procedure: <strong>source-stop</strong> <em>[source]</em></dt>
+<dd><p>Stop playing <var>source</var> or, if no source is specified, stop playing
+<em>all</em> sources.
+</p></dd></dl>
+
+<dl>
+<dt id="index-source_002drewind">Procedure: <strong>source-rewind</strong> <em>source</em></dt>
+<dd><p>Rewind <var>source</var> to the beginning of the audio stream.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002daudio_0021">Procedure: <strong>set-source-audio!</strong> <em>source audio</em></dt>
+<dd><p>Set the playback stream for <var>source</var> to <var>audio</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dloop_0021">Procedure: <strong>set-source-loop!</strong> <em>source loop?</em></dt>
+<dd><p>Configure whether or not <var>source</var> should loop the audio stream.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dpitch_0021">Procedure: <strong>set-source-pitch!</strong> <em>source pitch</em></dt>
+<dd><p>Set the pitch multiplier of <var>source</var> to <var>pitch</var>
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dvolume_0021">Procedure: <strong>set-source-volume!</strong> <em>source volume</em></dt>
+<dd><p>Set the volume of <var>source</var> to <var>volume</var>. A value of 1.0 is
+100% volume.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dmin_002dvolume_0021">Procedure: <strong>set-source-min-volume!</strong> <em>source volume</em></dt>
+<dd><p>Set the minimum volume of <var>source</var> to <var>volume</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dmax_002dvolume_0021">Procedure: <strong>set-source-max-volume!</strong> <em>source volume</em></dt>
+<dd><p>Set the maximum volume of <var>source</var> to <var>volume</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dmax_002ddistance_0021">Procedure: <strong>set-source-max-distance!</strong> <em>source distance</em></dt>
+<dd><p>Set the distance where there will no longer be any attenuation of
+<var>source</var> to <var>distance</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dreference_002ddistance_0021">Procedure: <strong>set-source-reference-distance!</strong> <em>source distance</em></dt>
+<dd><p>Set the reference distance of <var>source</var> to <var>distance</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002drolloff_002dfactor_0021">Procedure: <strong>set-source-rolloff-factor!</strong> <em>source factor</em></dt>
+<dd><p>Set the rolloff factor for <var>source</var> to <var>factor</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dcone_002douter_002dvolume_0021">Procedure: <strong>set-source-cone-outer-volume!</strong> <em>source volume</em></dt>
+<dd><p>Set the volume for <var>source</var> when outside the sound cone to <var>volume</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dcone_002dinner_002dangle_0021">Procedure: <strong>set-source-cone-inner-angle!</strong> <em>source angle</em></dt>
+<dd><p>Set the inner angle of the sound cone of <var>source</var> to <var>angle</var> radians.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dcone_002douter_002dangle_0021">Procedure: <strong>set-source-cone-outer-angle!</strong> <em>source angle</em></dt>
+<dd><p>Set the outer angle of the sound cone of <var>source</var> to <var>angle</var> radians.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dposition_0021">Procedure: <strong>set-source-position!</strong> <em>source position</em></dt>
+<dd><p>Set the position of <var>source</var> to the 3D vector <var>position</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002dvelocity_0021">Procedure: <strong>set-source-velocity!</strong> <em>source velocity</em></dt>
+<dd><p>Set the velocity of <var>source</var> to the 3D vector <var>velocity</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002ddirection_0021">Procedure: <strong>set-source-direction!</strong> <em>source direction</em></dt>
+<dd><p>Set the velocity of <var>source</var> to the 3D vector <var>direction</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dsource_002drelative_0021">Procedure: <strong>set-source-relative!</strong> <em>source relative?</em></dt>
+<dd><p>If <var>relative?</var> is <code>#t</code>, the position of <var>source</var> is
+interpreted as relative to the listener&rsquo;s position. Otherwise, the
+position of <var>source</var> is in absolute coordinates.
+</p></dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="The-Listener.html#The-Listener" accesskey="n" rel="next">The Listener</a>, Previous: <a href="Audio-Files.html#Audio-Files" accesskey="p" rel="prev">Audio Files</a>, Up: <a href="Audio.html#Audio" accesskey="u" rel="up">Audio</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/Sprites.html b/manuals/chickadee/Sprites.html
index a0e308b..10a9506 100644
--- a/manuals/chickadee/Sprites.html
+++ b/manuals/chickadee/Sprites.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Sprites (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,24 +80,25 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Sprites"></a>
-<div class="header">
+<span id="Sprites"></span><div class="header">
<p>
Next: <a href="Tile-Maps.html#Tile-Maps" accesskey="n" rel="next">Tile Maps</a>, Previous: <a href="Textures.html#Textures" accesskey="p" rel="prev">Textures</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Sprites-1"></a>
-<h4 class="subsection">2.3.2 Sprites</h4>
+<span id="Sprites-1"></span><h4 class="subsection">2.3.3 Sprites</h4>
<p>For those who are new to this game, a sprite is a 2D rectangular
bitmap that is rendered to the screen. For 2D games, sprites are the
most essential graphical abstraction. They are used for drawing maps,
-players, NPCs, items, particles, text, etc. In Chickadee, bitmaps are
-stored in textures (see <a href="Textures.html#Textures">Textures</a>) and can be used to draw sprites
-via the <code>draw-sprite</code> procedure.
+players, NPCs, items, particles, text, etc.
+</p>
+<p>In Chickadee, the <code>(chickadee render sprite)</code> module provides the
+interface for working with sprites. Bitmaps are stored in textures
+(see <a href="Textures.html#Textures">Textures</a>) and can be used to draw sprites via the
+<code>draw-sprite</code> procedure.
</p>
<dl>
-<dt><a name="index-draw_002dsprite"></a>Procedure: <strong>draw-sprite</strong> <em>texture position [#:tint white] [#:origin] [#:scale] [#:rotation] [#:blend-mode alpha] [#:rect]</em></dt>
+<dt id="index-draw_002dsprite">Procedure: <strong>draw-sprite</strong> <em>texture position [#:tint white] [#:origin] [#:scale] [#:rotation] [#:blend-mode alpha] [#:rect]</em></dt>
<dd>
<p>Draw <var>texture</var> at <var>position</var>.
</p>
@@ -143,29 +135,29 @@ into a single image file and create a &ldquo;texture atlas&rdquo;
(see <a href="Textures.html#Textures">Textures</a>) to access the sub-images within.
</p>
<dl>
-<dt><a name="index-make_002dsprite_002dbatch"></a>Procedure: <strong>make-sprite-batch</strong> <em>texture [#:capacity 256]</em></dt>
+<dt id="index-make_002dsprite_002dbatch">Procedure: <strong>make-sprite-batch</strong> <em>texture [#:capacity 256]</em></dt>
<dd><p>Create a new sprite batch for <var>texture</var> with initial space for
<var>capacity</var> sprites. Sprite batches automatically resize when they
are full to accomodate as many sprites as necessary.
</p></dd></dl>
<dl>
-<dt><a name="index-sprite_002dbatch_003f"></a>Procedure: <strong>sprite-batch?</strong> <em>obj</em></dt>
+<dt id="index-sprite_002dbatch_003f">Procedure: <strong>sprite-batch?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a sprite batch.
</p></dd></dl>
<dl>
-<dt><a name="index-sprite_002dbatch_002dtexture"></a>Procedure: <strong>sprite-batch-texture</strong> <em>batch</em></dt>
+<dt id="index-sprite_002dbatch_002dtexture">Procedure: <strong>sprite-batch-texture</strong> <em>batch</em></dt>
<dd><p>Return the texture for <var>batch</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dsprite_002dbatch_002dtexture_0021"></a>Procedure: <strong>set-sprite-batch-texture!</strong> <em>batch texture</em></dt>
+<dt id="index-set_002dsprite_002dbatch_002dtexture_0021">Procedure: <strong>set-sprite-batch-texture!</strong> <em>batch texture</em></dt>
<dd><p>Set texture for <var>batch</var> to <var>texture</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-sprite_002dbatch_002dadd_0021"></a>Procedure: <strong>sprite-batch-add!</strong> <em>batch position [#:origin] [#:scale] [:rotation] [#:tint <code>white</code>] [#:texture-region]</em></dt>
+<dt id="index-sprite_002dbatch_002dadd_0021">Procedure: <strong>sprite-batch-add!</strong> <em>batch position [#:origin] [#:scale] [:rotation] [#:tint <code>white</code>] [#:texture-region]</em></dt>
<dd>
<p>Add sprite located at <var>position</var> to <var>batch</var>.
</p>
@@ -176,12 +168,12 @@ parent is the batch texture may be specified as <var>texture-region</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-sprite_002dbatch_002dclear_0021"></a>Procedure: <strong>sprite-batch-clear!</strong> <em>batch</em></dt>
+<dt id="index-sprite_002dbatch_002dclear_0021">Procedure: <strong>sprite-batch-clear!</strong> <em>batch</em></dt>
<dd><p>Reset size of <var>batch</var> to 0.
</p></dd></dl>
<dl>
-<dt><a name="index-draw_002dsprite_002dbatch"></a>Procedure: <strong>draw-sprite-batch</strong> <em>batch [#:blend-mode <code>alpha</code>]</em></dt>
+<dt id="index-draw_002dsprite_002dbatch">Procedure: <strong>draw-sprite-batch</strong> <em>batch [#:blend-mode <code>alpha</code>]</em></dt>
<dd><p>Render <var>batch</var> using <var>blend-mode</var>. Alpha blending is used by
default.
</p></dd></dl>
@@ -210,7 +202,7 @@ patch, they can be rendered at any size without unappealing scaling
artifacts.
</p>
<dl>
-<dt><a name="index-draw_002dnine_002dpatch"></a>Procedure: <strong>draw-nine-patch</strong> <em>texture rect [#:margin 0] [#:top-margin margin] [#:bottom-margin margin] [#:left-margin margin] [#:right-margin margin] [#:origin] [#:scale] [#:rotation] [#:blend-mode alpha] [#:tint white]</em></dt>
+<dt id="index-draw_002dnine_002dpatch">Procedure: <strong>draw-nine-patch</strong> <em>texture rect [#:margin 0] [#:top-margin margin] [#:bottom-margin margin] [#:left-margin margin] [#:right-margin margin] [#:origin] [#:scale] [#:rotation] [#:blend-mode alpha] [#:tint white]</em></dt>
<dd>
<p>Draw a nine patch sprite. A nine patch sprite renders <var>texture</var>
as a <var>width</var> x <var>height</var> rectangle whose stretchable areas are
diff --git a/manuals/chickadee/Textures.html b/manuals/chickadee/Textures.html
index f7de7ab..98639a3 100644
--- a/manuals/chickadee/Textures.html
+++ b/manuals/chickadee/Textures.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Textures (The Chickadee Game Toolkit)</title>
@@ -33,28 +33,19 @@ http://www.texinfo.org/ (GNU Texinfo).
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Graphics.html#Graphics" rel="up" title="Graphics">
<link href="Sprites.html#Sprites" rel="next" title="Sprites">
-<link href="Graphics.html#Graphics" rel="prev" title="Graphics">
+<link href="Colors.html#Colors" rel="prev" title="Colors">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,17 +80,19 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Textures"></a>
-<div class="header">
+<span id="Textures"></span><div class="header">
<p>
-Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Previous: <a href="Colors.html#Colors" accesskey="p" rel="prev">Colors</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Textures-1"></a>
-<h4 class="subsection">2.3.1 Textures</h4>
+<span id="Textures-1"></span><h4 class="subsection">2.3.2 Textures</h4>
+<p>Textures are essentially images: a 2D grid of color values. The
+<code>(chickadee render texture)</code> module provides an interface for
+working with texture objects.
+</p>
<dl>
-<dt><a name="index-load_002dimage"></a>Procedure: <strong>load-image</strong> <em>file [#:min-filter nearest] [#:mag-filter nearest] [#:wrap-s repeat] [#:wrap-t repeat]</em></dt>
+<dt id="index-load_002dimage">Procedure: <strong>load-image</strong> <em>file [#:min-filter nearest] [#:mag-filter nearest] [#:wrap-s repeat] [#:wrap-t repeat] [#:transparent-color]</em></dt>
<dd>
<p>Load the image data from <var>file</var> and return a new texture object.
</p>
@@ -112,38 +105,41 @@ coordinates that are greater than <code>1.0</code>. Possible values are
<code>repeat</code>, <code>clamp</code>, <code>clamp-to-border</code>, and
<code>clamp-to-edge</code>.
</p>
+<p>For color-keyed images (images where a specific color should be made
+transparent), specify the appropriate <var>transparent-color</var>.
+</p>
</dd></dl>
<dl>
-<dt><a name="index-texture_003f"></a>Procedure: <strong>texture?</strong> <em>obj</em></dt>
+<dt id="index-texture_003f">Procedure: <strong>texture?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a texture.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002dregion_003f"></a>Procedure: <strong>texture-region?</strong> <em>obj</em></dt>
+<dt id="index-texture_002dregion_003f">Procedure: <strong>texture-region?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a texture region.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002dparent"></a>Procedure: <strong>texture-parent</strong> <em>texture</em></dt>
+<dt id="index-texture_002dparent">Procedure: <strong>texture-parent</strong> <em>texture</em></dt>
<dd><p>If <var>texture</var> is a texture region, return the full texture that it
is based upon. Otherwise, return <code>#f</code>.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002dmin_002dfilter"></a>Procedure: <strong>texture-min-filter</strong> <em>texture</em></dt>
+<dt id="index-texture_002dmin_002dfilter">Procedure: <strong>texture-min-filter</strong> <em>texture</em></dt>
<dd><p>Return the minification filter for <var>texture</var>, either
<code>nearest</code> or <code>linear</code>.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002dmag_002dfilter"></a>Procedure: <strong>texture-mag-filter</strong> <em>texture</em></dt>
+<dt id="index-texture_002dmag_002dfilter">Procedure: <strong>texture-mag-filter</strong> <em>texture</em></dt>
<dd><p>Return the magnification filter for <var>texture</var>, either
<code>nearest</code> or <code>linear</code>.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002dwrap_002ds"></a>Procedure: <strong>texture-wrap-s</strong> <em>texture</em></dt>
+<dt id="index-texture_002dwrap_002ds">Procedure: <strong>texture-wrap-s</strong> <em>texture</em></dt>
<dd><p>Return the method used for wrapping texture coordinates along the X
axis for <var>texture</var>.
</p>
@@ -158,18 +154,18 @@ axis for <var>texture</var>.
</dd></dl>
<dl>
-<dt><a name="index-texture_002dwrap_002dt"></a>Procedure: <strong>texture-wrap-t</strong> <em>texture</em></dt>
+<dt id="index-texture_002dwrap_002dt">Procedure: <strong>texture-wrap-t</strong> <em>texture</em></dt>
<dd><p>Return the method used for wrapping texture coordinates along the Y
axis for <var>texture</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002dwidth"></a>Procedure: <strong>texture-width</strong> <em>texture</em></dt>
+<dt id="index-texture_002dwidth">Procedure: <strong>texture-width</strong> <em>texture</em></dt>
<dd><p>Return the width of <var>texture</var> in pixels.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002dheight"></a>Procedure: <strong>texture-height</strong> <em>texture</em></dt>
+<dt id="index-texture_002dheight">Procedure: <strong>texture-height</strong> <em>texture</em></dt>
<dd><p>Return the height of <var>texture</var> in pixels.
</p></dd></dl>
@@ -180,7 +176,7 @@ render a bunch of small textures. Chickadee provides a tile atlas
data type for collecting texture regions into a single vector.
</p>
<dl>
-<dt><a name="index-split_002dtexture"></a>Procedure: <strong>split-texture</strong> <em>texture tile-width tile-height [#:margin 0] [#:spacing 0]</em></dt>
+<dt id="index-split_002dtexture">Procedure: <strong>split-texture</strong> <em>texture tile-width tile-height [#:margin 0] [#:spacing 0]</em></dt>
<dd>
<p>Return a new texture atlas that splits <var>texture</var> into a grid of
<var>tile-width</var> by <var>tile-height</var> rectangles. Optionally, each
@@ -193,24 +189,24 @@ See <a href="Tile-Maps.html#Tile-Maps">Tile Maps</a> for more information.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002datlas_003f"></a>Procedure: <strong>texture-atlas?</strong> <em>obj</em></dt>
+<dt id="index-texture_002datlas_003f">Procedure: <strong>texture-atlas?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a texture atlas.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002datlas_002dtexture"></a>Procedure: <strong>texture-atlas-texture</strong> <em>atlas</em></dt>
+<dt id="index-texture_002datlas_002dtexture">Procedure: <strong>texture-atlas-texture</strong> <em>atlas</em></dt>
<dd><p>Return the texture that all texture regions in <var>atlas</var> have been created from.
</p></dd></dl>
<dl>
-<dt><a name="index-texture_002datlas_002dref"></a>Procedure: <strong>texture-atlas-ref</strong> <em>atlas index</em></dt>
+<dt id="index-texture_002datlas_002dref">Procedure: <strong>texture-atlas-ref</strong> <em>atlas index</em></dt>
<dd><p>Return the texture region in <var>atlas</var> at <var>index</var>.
</p></dd></dl>
<hr>
<div class="header">
<p>
-Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+Next: <a href="Sprites.html#Sprites" accesskey="n" rel="next">Sprites</a>, Previous: <a href="Colors.html#Colors" accesskey="p" rel="prev">Colors</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
diff --git a/manuals/chickadee/The-Environment.html b/manuals/chickadee/The-Environment.html
new file mode 100644
index 0000000..31ce861
--- /dev/null
+++ b/manuals/chickadee/The-Environment.html
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>The Environment (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="The Environment (The Chickadee Game Toolkit)">
+<meta name="keywords" content="The Environment (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Audio.html#Audio" rel="up" title="Audio">
+<link href="Scripting.html#Scripting" rel="next" title="Scripting">
+<link href="The-Listener.html#The-Listener" rel="prev" title="The Listener">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="The-Environment"></span><div class="header">
+<p>
+Previous: <a href="The-Listener.html#The-Listener" accesskey="p" rel="prev">The Listener</a>, Up: <a href="Audio.html#Audio" accesskey="u" rel="up">Audio</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="The-Environment-1"></span><h4 class="subsection">2.4.4 The Environment</h4>
+
+<p>The environment defines global parameters that govern how sound is
+processed within the 3D modeling space.
+</p>
+<dl>
+<dt id="index-doppler_002dfactor">Procedure: <strong>doppler-factor</strong></dt>
+<dd><p>Return the current doppler factor.
+</p></dd></dl>
+
+<dl>
+<dt id="index-speed_002dof_002dsound">Procedure: <strong>speed-of-sound</strong></dt>
+<dd><p>Return the current speed of sound.
+</p></dd></dl>
+
+<dl>
+<dt id="index-distance_002dmodel">Procedure: <strong>distance-model</strong></dt>
+<dd><p>Return the current distance model.
+</p>
+<p>Possible return values are:
+</p>
+<ul>
+<li> <code>none</code>
+</li><li> <code>inverse-distance</code>
+</li><li> <code>inverse-distance-clamped</code> (the default)
+</li><li> <code>linear-distance</code>
+</li><li> <code>linear-distance-clamped</code>
+</li><li> <code>exponent-distance</code>
+</li><li> <code>exponent-distance-clamped</code>
+</li></ul>
+
+</dd></dl>
+
+<dl>
+<dt id="index-set_002ddoppler_002dfactor_0021">Procedure: <strong>set-doppler-factor!</strong> <em>doppler-factor</em></dt>
+<dd><p>Change the doppler factor to <var>doppler-factor</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dspeed_002dof_002dsound_0021">Procedure: <strong>set-speed-of-sound!</strong> <em>speed-of-sound</em></dt>
+<dd><p>Change the speed of sound to <var>speed-of-sound</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002ddistance_002dmodel_0021">Procedure: <strong>set-distance-model!</strong> <em>distance-model</em></dt>
+<dd><p>Change the distance model to <var>distance-model</var>. Valid distance
+models are:
+</p>
+<ul>
+<li> <code>none</code>
+</li><li> <code>inverse-distance</code>
+</li><li> <code>inverse-distance-clamped</code>
+</li><li> <code>linear-distance</code>
+</li><li> <code>linear-distance-clamped</code>
+</li><li> <code>exponent-distance</code>
+</li><li> <code>exponent-distance-clamped</code>
+</li></ul>
+
+</dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/The-Game-Loop.html b/manuals/chickadee/The-Game-Loop.html
new file mode 100644
index 0000000..138dca3
--- /dev/null
+++ b/manuals/chickadee/The-Game-Loop.html
@@ -0,0 +1,360 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>The Game Loop (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="The Game Loop (The Chickadee Game Toolkit)">
+<meta name="keywords" content="The Game Loop (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Kernel.html#Kernel" rel="up" title="Kernel">
+<link href="Input-Devices.html#Input-Devices" rel="next" title="Input Devices">
+<link href="Kernel.html#Kernel" rel="prev" title="Kernel">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="The-Game-Loop"></span><div class="header">
+<p>
+Next: <a href="Input-Devices.html#Input-Devices" accesskey="n" rel="next">Input Devices</a>, Up: <a href="Kernel.html#Kernel" accesskey="u" rel="up">Kernel</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="The-Game-Loop-1"></span><h4 class="subsection">2.1.1 The Game Loop</h4>
+
+<p>At the very core of Chickadee there is an event loop. This loop, or
+&ldquo;kernel&rdquo;, is responsible for ensuring that the game is updated at
+the desired interval, handling input devices, rendering the current
+state of the game world, and handling errors if they occur. The
+kernel implements what is known as a &ldquo;fixed timestep&rdquo; game loop,
+meaning that the game simulation will be advanced by a fixed interval
+of time and will never vary from frame to frame, unlike some other
+styles of game loops. The appropriately named <code>run-game</code> and
+<code>abort-game</code> procedures are the entry and exit points to the
+Chickadee game loop.
+</p>
+<dl>
+<dt id="index-run_002dgame">Procedure: <strong>run-game</strong> <em>[#:window-title &quot;Chickadee!&quot;] [#:window-width 640] [#:window-height 480] [#:window-fullscreen? <code>#f</code>] [#:update-hz 60] [#:load] [#:update] [#:draw] [#:quit] [#:key-press] [#:key-release] [#:text-input] [#:mouse-press] [#:mouse-release] [#:mouse-move] [#:controller-add] [#:controller-remove] [#:controller-press] [#:controller-release] [#:controller-move] [#:error]</em></dt>
+<dd>
+<p>Run the Chickadee game loop.
+</p>
+<p>A new graphical window will be opened with <var>window-width</var> x
+<var>window-height</var> as its dimensions, <var>window-title</var> as its
+title, and in fullscreen mode if <var>window-fullscreen?</var> is
+<code>#t</code>.
+</p>
+<ul>
+<li> <var>load</var>: Called with zero arguments when the game window has opened
+but before the game loop has started. Can be used to perform
+initialization that requires an open window and OpenGL context such as
+loading textures.
+
+</li><li> <var>update</var>: Called <var>update-hz</var> times per second with one
+argument: The amount of time to advance the game simulation.
+
+</li><li> <var>draw</var>: Called each time a frame should be rendered with a single
+argument known as the <code>alpha</code> value. See the documentation for
+<code>run-game</code> for an explanation of this value.
+
+</li><li> <var>quit</var>: Called with zero arguments when the user tries to close
+the game window. The default behavior is to exit the game.
+
+</li><li> <var>key-press</var>: Called with four arguments when a key is pressed on
+the keyboard:
+
+<ol>
+<li> <var>key</var>: The symbolic name of the &ldquo;virtual&rdquo; key that was pressed.
+For example: <code>backspace</code>. It&rsquo;s called a virtual key because the
+operating system may map a physical keyboard key to another key
+entirely, such as how the author likes to bind the &ldquo;caps lock&rdquo; key
+to mean &ldquo;control&rdquo;.
+
+</li><li> <var>scancode</var>: The symbolic name of the physical key that was
+pressed.
+
+</li><li> <var>modifiers</var>: A list of the symbolic names of modifier keys that
+were being held down when the key was pressed. Possible values
+include <code>ctrl</code>, <code>alt</code>, and <code>shift</code>.
+
+</li><li> <var>repeat?</var>: <code>#t</code> if this is a repeated press of the same key.
+
+</li></ol>
+
+</li><li> <var>key-release</var>: Called with three arguments when a key is released
+on the keyboard:
+
+<ol>
+<li> <var>key</var>: The symbolic name of the &ldquo;virtual&rdquo; key that was released.
+
+</li><li> <var>scancode</var>: The symbolic name of the physical key that was
+released.
+
+</li><li> <var>modifiers</var>: A list of the symbolic names of modifier keys that
+were being held down when the key was released.
+
+</li></ol>
+
+</li><li> <var>text-input</var>: Called with a single argument, a string of text,
+when printable text is typed on the keyboard.
+
+</li><li> <var>mouse-press</var>: Called with four arguments when a mouse button is
+pressed:
+<ol>
+<li> <var>button</var>: The symbolic name of the button that was pressed, such
+as <code>left</code>, <code>middle</code>, or <code>right</code>.
+
+</li><li> <var>clicks</var>: The number of times the button has been clicked in a row.
+
+</li><li> <var>x</var>: The x coordinate of the mouse cursor.
+
+</li><li> <var>y</var>: The y coordinate of the mouse cursor.
+
+</li></ol>
+
+</li><li> <var>mouse-release</var>: Called with three arguments when a mouse button
+is released:
+
+<ol>
+<li> <var>button</var>: The symbolic name of the button that was released.
+
+</li><li> <var>x</var>: The x coordinate of the mouse cursor.
+
+</li><li> <var>y</var>: The y coordinate of the mouse cursor.
+
+</li></ol>
+
+</li><li> <var>mouse-move</var>: Called with five arguments when the mouse is moved:
+
+<ol>
+<li> <var>x</var>: The x coordinate of the mouse cursor.
+
+</li><li> <var>y</var>: The y coordinate of the mouse cursor.
+
+</li><li> <var>dx</var>: The amount the mouse has moved along the x axis since the
+last mouse move event.
+
+</li><li> <var>dy</var>: The amount the mouse has moved along the y axis since the
+last mouse move event.
+
+</li><li> <var>buttons</var>: A list of the buttons that were pressed down when the
+mouse was moved.
+
+</li></ol>
+
+</li><li> <var>controller-add</var>: Called with a single argument, an SDL game
+controller object, when a game controller is connected.
+
+</li><li> <var>controller-remove</var>: Called with a single argument, an SDL game
+controller object, when a game controller is disconnected.
+
+</li><li> <var>controller-press</var>: Called with two arguments when a button on a
+game controller is pressed:
+
+<ol>
+<li> <var>controller</var>: The controller that triggered the event.
+
+</li><li> <var>button</var>: The symbolic name of the button that was pressed.
+Possible buttons are:
+
+<ul>
+<li> <code>a</code>
+</li><li> <code>b</code>
+</li><li> <code>x</code>
+</li><li> <code>y</code>
+</li><li> <code>back</code>
+</li><li> <code>guide</code>
+</li><li> <code>start</code>
+</li><li> <code>left-stick</code>
+</li><li> <code>right-stick</code>
+</li><li> <code>left-shoulder</code>
+</li><li> <code>right-shoulder</code>
+</li><li> <code>dpad-up</code>
+</li><li> <code>dpad-down</code>
+</li><li> <code>dpad-left</code>
+</li><li> <code>dpad-right</code>
+
+</li></ul>
+
+</li></ol>
+
+</li><li> <var>controller-release</var>: Called with two arguments when a button on a
+game controller is released:
+
+<ol>
+<li> <var>controller</var>: The controller that triggered the event.
+
+</li><li> <var>button</var>: The symbolic name of the button that was released.
+
+</li></ol>
+
+</li><li> <var>controller-move</var>: Called with three arguments when an analog
+stick or trigger on a game controller is moved:
+
+<ol>
+<li> <var>controller</var>: The controller that triggered the event.
+
+</li><li> <var>axis</var>: The symbolic name of the axis that was moved. Possible
+values are:
+
+<ul>
+<li> <code>left-x</code>
+</li><li> <code>left-y</code>
+</li><li> <code>right-x</code>
+</li><li> <code>right-y</code>
+</li><li> <code>trigger-left</code>
+</li><li> <code>trigger-right</code>
+</li></ul>
+
+</li></ol>
+
+</li><li> <var>error</var>: Called with three arguments when an error occurs:
+
+<ol>
+<li> <var>stack</var>: The call stack at the point of error.
+
+</li><li> <var>key</var>: The exception key.
+
+</li><li> <var>args</var>: The arguments thrown with the exception.
+
+</li></ol>
+
+<p>The default behavior is to re-throw the error.
+</p>
+</li></ul>
+
+</dd></dl>
+
+<p>To stop the game loop, simply call <code>abort-game</code>.
+</p>
+<dl>
+<dt id="index-abort_002dgame">Procedure: <strong>abort-game</strong></dt>
+<dd><p>Stop the currently running Chickadee game loop.
+</p></dd></dl>
+
+<p>The above explanation of the game loop was partially a lie. It&rsquo;s true
+that there is a game loop at the center of Chickadee, but
+<code>run-game</code> is not it&rsquo;s true entry point. There exists an even
+lower level procedure, <code>run-game*</code>, in the <code>(chickadee
+game-loop)</code> module that <code>run-game</code> uses under the hood.
+</p>
+<p>On its own, <code>run-game*</code> does not do very much at all. In order
+to actually respond to input events, update game state, or render
+output, the developer must provide an engine. <code>run-game</code> is such
+an engine, and it&rsquo;s likely all a developer will need. However, what
+if a developer wanted to use all of the useful Chickadee features to
+make a terminal roguelike game instead? Chickadee doesn&rsquo;t come with a
+terminal rendering engine, but the developer could write one without
+having to write their own core game loop.
+</p>
+<dl>
+<dt id="index-run_002dgame_002a">Procedure: <strong>run-game*</strong> <em>[#:update] [#:render] [#:time] [#:error] [#:update-hz 60]</em></dt>
+<dd>
+<p>Start the game loop. This procedure will not return until
+<code>abort-game</code> is called.
+</p>
+<p>The core game loop is generic and requires four additional procedures
+to operate:
+</p>
+<ul>
+<li> <var>update</var>: Called <var>update-hz</var> times per second to advance the
+game simulation. This procedure is called with a single argument: The
+amount of time that has passed since the last update, in milliseconds.
+</li><li> <var>render</var>: Called each iteration of the loop to render the game to
+the desired output device. This procedure is called with a single
+argument: A value in the range [0, 1] which represents how much time
+has past since the last game state update relative to the upcoming
+game state update, as a percentage. Because the game state is updated
+independent of rendering, it is often the case that rendering is
+occuring between two updates. If the game is rendered as it was
+during the last update, a strange side-effect will occur that makes
+animation appear rough or &ldquo;choppy&rdquo;. To counter this, the
+<var>alpha</var> value can be used to perfrom a linear interpolation of a
+moving object between its current position and its previous position.
+This odd trick has the pleasing result of making the animation look
+smooth again, but requires keeping track of previous state.
+</li><li> <var>time</var>: Called to get the current time in milliseconds. This
+procedure is called with no arguments.
+</li><li> <var>error</var>: Called when an error from the <var>update</var> or
+<var>render</var> procedures reaches the game loop. This procedure is
+called with three arguments: The call stack, the error key, and the
+error arguments. If no error handler is provided, the default
+behavior is to simply re-throw the error.
+</li></ul>
+
+</dd></dl>
+
+<hr>
+<div class="header">
+<p>
+Next: <a href="Input-Devices.html#Input-Devices" accesskey="n" rel="next">Input Devices</a>, Up: <a href="Kernel.html#Kernel" accesskey="u" rel="up">Kernel</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/The-Listener.html b/manuals/chickadee/The-Listener.html
new file mode 100644
index 0000000..b9509c9
--- /dev/null
+++ b/manuals/chickadee/The-Listener.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>The Listener (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="The Listener (The Chickadee Game Toolkit)">
+<meta name="keywords" content="The Listener (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Audio.html#Audio" rel="up" title="Audio">
+<link href="The-Environment.html#The-Environment" rel="next" title="The Environment">
+<link href="Sources.html#Sources" rel="prev" title="Sources">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="The-Listener"></span><div class="header">
+<p>
+Next: <a href="The-Environment.html#The-Environment" accesskey="n" rel="next">The Environment</a>, Previous: <a href="Sources.html#Sources" accesskey="p" rel="prev">Sources</a>, Up: <a href="Audio.html#Audio" accesskey="u" rel="up">Audio</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="The-Listener-1"></span><h4 class="subsection">2.4.3 The Listener</h4>
+
+<p>The listener is a collection of global state that represents the
+player within the 3D sound model. For games that do not need 3D sound
+modeling, manipulating the listener&rsquo;s master volume is the only
+interesting thing to do here.
+</p>
+<dl>
+<dt id="index-listener_002dvolume">Procedure: <strong>listener-volume</strong></dt>
+<dd><p>Return the current master volume of the listener.
+</p></dd></dl>
+
+<dl>
+<dt id="index-listener_002dposition">Procedure: <strong>listener-position</strong></dt>
+<dd><p>Return the current position of the listener.
+</p></dd></dl>
+
+<dl>
+<dt id="index-listener_002dvelocity">Procedure: <strong>listener-velocity</strong></dt>
+<dd><p>Return the current velocity of the listener.
+</p></dd></dl>
+
+<dl>
+<dt id="index-listener_002dorientation">Procedure: <strong>listener-orientation</strong></dt>
+<dd><p>Return the current orientation of the listener.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dlistener_002dvolume_0021">Procedure: <strong>set-listener-volume!</strong> <em>volume</em></dt>
+<dd><p>Set the listener&rsquo;s master volume to <var>volume</var>, a value in the range [0,
+1].
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dlistener_002dposition_0021">Procedure: <strong>set-listener-position!</strong> <em>position</em></dt>
+<dd><p>Set the listener&rsquo;s position to the 3D vector <var>position</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dlistener_002dvelocity_0021">Procedure: <strong>set-listener-velocity!</strong> <em>velocity</em></dt>
+<dd><p>Set the listener&rsquo;s velocity to the 3D vector <var>velocity</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dlistener_002dorientation_0021">Procedure: <strong>set-listener-orientation!</strong> <em>at up</em></dt>
+<dd><p>Set the listener&rsquo;s orientation to the 3D vectors <var>at</var> and
+<var>up</var>.
+</p></dd></dl>
+
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/Tile-Maps.html b/manuals/chickadee/Tile-Maps.html
index 473d720..3990920 100644
--- a/manuals/chickadee/Tile-Maps.html
+++ b/manuals/chickadee/Tile-Maps.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Tile Maps (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Tile-Maps"></a>
-<div class="header">
+<span id="Tile-Maps"></span><div class="header">
<p>
Next: <a href="Lines-and-Shapes.html#Lines-and-Shapes" accesskey="n" rel="next">Lines and Shapes</a>, Previous: <a href="Sprites.html#Sprites" accesskey="p" rel="prev">Sprites</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Tile-Maps-1"></a>
-<h4 class="subsection">2.3.3 Tile Maps</h4>
+<span id="Tile-Maps-1"></span><h4 class="subsection">2.3.4 Tile Maps</h4>
<p>A tile map is a scene created by composing lots of small sprites,
called &ldquo;tiles&rdquo;, into a larger image. One program for editing such
@@ -105,64 +94,64 @@ support for loading and rendering Tiled maps in the <code>(chickadee
render tiled)</code> module.
</p>
<dl>
-<dt><a name="index-load_002dtile_002dmap"></a>Procedure: <strong>load-tile-map</strong> <em>file-name</em></dt>
+<dt id="index-load_002dtile_002dmap">Procedure: <strong>load-tile-map</strong> <em>file-name</em></dt>
<dd><p>Load the Tiled formatted map in <var>file-name</var> and return a new tile
map object.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_003f"></a>Procedure: <strong>tile-map?</strong> <em>obj</em></dt>
+<dt id="index-tile_002dmap_003f">Procedure: <strong>tile-map?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a tile map.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dorientation"></a>Procedure: <strong>tile-map-orientation</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dorientation">Procedure: <strong>tile-map-orientation</strong> <em>tile-map</em></dt>
<dd><p>Return the orientation of <var>tile-map</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dwidth"></a>Procedure: <strong>tile-map-width</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dwidth">Procedure: <strong>tile-map-width</strong> <em>tile-map</em></dt>
<dd><p>Return the width of <var>tile-map</var> in tiles.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dheight"></a>Procedure: <strong>tile-map-height</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dheight">Procedure: <strong>tile-map-height</strong> <em>tile-map</em></dt>
<dd><p>Return the height of <var>tile-map</var> in tiles.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dtile_002dwidth"></a>Procedure: <strong>tile-map-tile-width</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dtile_002dwidth">Procedure: <strong>tile-map-tile-width</strong> <em>tile-map</em></dt>
<dd><p>Return the width of tiles in <var>tile-map</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dtile_002dheight"></a>Procedure: <strong>tile-map-tile-height</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dtile_002dheight">Procedure: <strong>tile-map-tile-height</strong> <em>tile-map</em></dt>
<dd><p>Return the height of tiles in <var>tile-map</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dtilesets"></a>Procedure: <strong>tile-map-tilesets</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dtilesets">Procedure: <strong>tile-map-tilesets</strong> <em>tile-map</em></dt>
<dd><p>Return the tilesets for <var>tile-map</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dlayers"></a>Procedure: <strong>tile-map-layers</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dlayers">Procedure: <strong>tile-map-layers</strong> <em>tile-map</em></dt>
<dd><p>Return the layers of <var>tile-map</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dmap_002dproperties"></a>Procedure: <strong>tile-map-properties</strong> <em>tile-map</em></dt>
+<dt id="index-tile_002dmap_002dproperties">Procedure: <strong>tile-map-properties</strong> <em>tile-map</em></dt>
<dd><p>Return the custom properties of <var>tile-map</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-point_002d_003etile"></a>Procedure: <strong>point-&gt;tile</strong> <em>tile-map x y</em></dt>
+<dt id="index-point_002d_003etile">Procedure: <strong>point-&gt;tile</strong> <em>tile-map x y</em></dt>
<dd><p>Translate the pixel coordinates (<var>x</var>, <var>y</var>) into tile
coordinates.
</p></dd></dl>
<dl>
-<dt><a name="index-draw_002dtile_002dmap"></a>Procedure: <strong>draw-tile-map</strong> <em>tile-map [#:layers] [#:region] [#:origin] [#:position] [#:scale] [#:rotation]</em></dt>
+<dt id="index-draw_002dtile_002dmap">Procedure: <strong>draw-tile-map</strong> <em>tile-map [#:layers] [#:region] [#:origin] [#:position] [#:scale] [#:rotation]</em></dt>
<dd>
<p>Draw the layers of <var>tile-map</var>. By default, all layers are drawn.
To draw a subset of the available layers, pass a list of layer ids
@@ -172,191 +161,185 @@ using the <var>layers</var> keyword argument.
the other arguments.
</p></dd></dl>
-<a name="Tilesets"></a>
-<h4 class="subsubsection">2.3.3.1 Tilesets</h4>
+<span id="Tilesets"></span><h4 class="subsubsection">2.3.4.1 Tilesets</h4>
<dl>
-<dt><a name="index-tileset_003f"></a>Procedure: <strong>tileset?</strong> <em>obj</em></dt>
+<dt id="index-tileset_003f">Procedure: <strong>tileset?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a tileset.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002dname"></a>Procedure: <strong>tileset-name</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002dname">Procedure: <strong>tileset-name</strong> <em>tileset</em></dt>
<dd><p>Return the name of <var>tileset</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002dfirst_002dgid"></a>Procedure: <strong>tileset-first-gid</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002dfirst_002dgid">Procedure: <strong>tileset-first-gid</strong> <em>tileset</em></dt>
<dd><p>Return the starting GID of <var>tileset</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002dsize"></a>Procedure: <strong>tileset-size</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002dsize">Procedure: <strong>tileset-size</strong> <em>tileset</em></dt>
<dd><p>Return the number of tiles in <var>tileset</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002dtile_002dwidth"></a>Procedure: <strong>tileset-tile-width</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002dtile_002dwidth">Procedure: <strong>tileset-tile-width</strong> <em>tileset</em></dt>
<dd><p>Return the width of tiles in <var>tileset</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002dtile_002dheight"></a>Procedure: <strong>tileset-tile-height</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002dtile_002dheight">Procedure: <strong>tileset-tile-height</strong> <em>tileset</em></dt>
<dd><p>Return the height of tiles in <var>tileset</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002datlas"></a>Procedure: <strong>tileset-atlas</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002datlas">Procedure: <strong>tileset-atlas</strong> <em>tileset</em></dt>
<dd><p>Return the texture atlas for <var>tileset</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002dtiles"></a>Procedure: <strong>tileset-tiles</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002dtiles">Procedure: <strong>tileset-tiles</strong> <em>tileset</em></dt>
<dd><p>Return the tiles in <var>tileset</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tileset_002dproperties"></a>Procedure: <strong>tileset-properties</strong> <em>tileset</em></dt>
+<dt id="index-tileset_002dproperties">Procedure: <strong>tileset-properties</strong> <em>tileset</em></dt>
<dd><p>Return the custom properties of <var>tileset</var>.
</p></dd></dl>
-<a name="Tiles"></a>
-<h4 class="subsubsection">2.3.3.2 Tiles</h4>
+<span id="Tiles"></span><h4 class="subsubsection">2.3.4.2 Tiles</h4>
<dl>
-<dt><a name="index-tile_003f"></a>Procedure: <strong>tile?</strong> <em>obj</em></dt>
+<dt id="index-tile_003f">Procedure: <strong>tile?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a tile.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002did"></a>Procedure: <strong>tile-id</strong> <em>tile</em></dt>
+<dt id="index-tile_002did">Procedure: <strong>tile-id</strong> <em>tile</em></dt>
<dd><p>Return the ID of <var>tile</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002danimation"></a>Procedure: <strong>tile-animation</strong> <em>tile</em></dt>
+<dt id="index-tile_002danimation">Procedure: <strong>tile-animation</strong> <em>tile</em></dt>
<dd><p>Return the animation for <var>tile</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dproperties"></a>Procedure: <strong>tile-properties</strong> <em>tile</em></dt>
+<dt id="index-tile_002dproperties">Procedure: <strong>tile-properties</strong> <em>tile</em></dt>
<dd><p>Return the custom properties of <var>tile</var>.
</p></dd></dl>
-<a name="Animations"></a>
-<h4 class="subsubsection">2.3.3.3 Animations</h4>
+<span id="Animations"></span><h4 class="subsubsection">2.3.4.3 Animations</h4>
<dl>
-<dt><a name="index-animation_002dframe_003f"></a>Procedure: <strong>animation-frame?</strong> <em>obj</em></dt>
+<dt id="index-animation_002dframe_003f">Procedure: <strong>animation-frame?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is an animation frame.
</p></dd></dl>
<dl>
-<dt><a name="index-animation_002dframe_002dtile"></a>Procedure: <strong>animation-frame-tile</strong> <em>frame</em></dt>
+<dt id="index-animation_002dframe_002dtile">Procedure: <strong>animation-frame-tile</strong> <em>frame</em></dt>
<dd><p>Return the tile for <var>frame</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-animation_002dframe_002dduration"></a>Procedure: <strong>animation-frame-duration</strong> <em>frame</em></dt>
+<dt id="index-animation_002dframe_002dduration">Procedure: <strong>animation-frame-duration</strong> <em>frame</em></dt>
<dd><p>Return the duration of <var>frame</var>.
</p></dd></dl>
-<a name="Layers"></a>
-<h4 class="subsubsection">2.3.3.4 Layers</h4>
+<span id="Layers"></span><h4 class="subsubsection">2.3.4.4 Layers</h4>
<dl>
-<dt><a name="index-tile_002dlayer_003f"></a>Procedure: <strong>tile-layer?</strong> <em>obj</em></dt>
+<dt id="index-tile_002dlayer_003f">Procedure: <strong>tile-layer?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a tile layer.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dlayer_002dname"></a>Procedure: <strong>tile-layer-name</strong> <em>layer</em></dt>
+<dt id="index-tile_002dlayer_002dname">Procedure: <strong>tile-layer-name</strong> <em>layer</em></dt>
<dd><p>Return the name of <var>layer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dlayer_002dwidth"></a>Procedure: <strong>tile-layer-width</strong> <em>layer</em></dt>
+<dt id="index-tile_002dlayer_002dwidth">Procedure: <strong>tile-layer-width</strong> <em>layer</em></dt>
<dd><p>Return the width in tiles of <var>layer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dlayer_002dheight"></a>Procedure: <strong>tile-layer-height</strong> <em>layer</em></dt>
+<dt id="index-tile_002dlayer_002dheight">Procedure: <strong>tile-layer-height</strong> <em>layer</em></dt>
<dd><p>Return the height in tiles of <var>layer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dlayer_002dtiles"></a>Procedure: <strong>tile-layer-tiles</strong> <em>layer</em></dt>
+<dt id="index-tile_002dlayer_002dtiles">Procedure: <strong>tile-layer-tiles</strong> <em>layer</em></dt>
<dd><p>Return the tile data for <var>layer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-tile_002dlayer_002dproperties"></a>Procedure: <strong>tile-layer-properties</strong> <em>layer</em></dt>
+<dt id="index-tile_002dlayer_002dproperties">Procedure: <strong>tile-layer-properties</strong> <em>layer</em></dt>
<dd><p>Return the custom properties of <var>layer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-object_002dlayer_003f"></a>Procedure: <strong>object-layer?</strong> <em>obj</em></dt>
+<dt id="index-object_002dlayer_003f">Procedure: <strong>object-layer?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is an object layer.
</p></dd></dl>
<dl>
-<dt><a name="index-object_002dlayer_002dname"></a>Procedure: <strong>object-layer-name</strong> <em>layer</em></dt>
+<dt id="index-object_002dlayer_002dname">Procedure: <strong>object-layer-name</strong> <em>layer</em></dt>
<dd><p>Return the name of <var>layer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-object_002dlayer_002dobjects"></a>Procedure: <strong>object-layer-objects</strong> <em>layer</em></dt>
+<dt id="index-object_002dlayer_002dobjects">Procedure: <strong>object-layer-objects</strong> <em>layer</em></dt>
<dd><p>Return the objects for <var>layer</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-object_002dlayer_002dproperties"></a>Procedure: <strong>object-layer-properties</strong> <em>layer</em></dt>
+<dt id="index-object_002dlayer_002dproperties">Procedure: <strong>object-layer-properties</strong> <em>layer</em></dt>
<dd><p>Return the custom properties of <var>layer</var>.
</p></dd></dl>
-<a name="Objects"></a>
-<h4 class="subsubsection">2.3.3.5 Objects</h4>
+<span id="Objects"></span><h4 class="subsubsection">2.3.4.5 Objects</h4>
<dl>
-<dt><a name="index-map_002dobject_003f"></a>Procedure: <strong>map-object?</strong> <em>obj</em></dt>
+<dt id="index-map_002dobject_003f">Procedure: <strong>map-object?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a map object.
</p></dd></dl>
<dl>
-<dt><a name="index-map_002dobject_002did"></a>Procedure: <strong>map-object-id</strong> <em>obj</em></dt>
+<dt id="index-map_002dobject_002did">Procedure: <strong>map-object-id</strong> <em>obj</em></dt>
<dd><p>Return the ID of <var>obj</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-map_002dobject_002dname"></a>Procedure: <strong>map-object-name</strong> <em>obj</em></dt>
+<dt id="index-map_002dobject_002dname">Procedure: <strong>map-object-name</strong> <em>obj</em></dt>
<dd><p>Return the name of <var>obj</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-map_002dobject_002dtype"></a>Procedure: <strong>map-object-type</strong> <em>obj</em></dt>
+<dt id="index-map_002dobject_002dtype">Procedure: <strong>map-object-type</strong> <em>obj</em></dt>
<dd><p>Return the type of <var>obj</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-map_002dobject_002dshape"></a>Procedure: <strong>map-object-shape</strong> <em>obj</em></dt>
+<dt id="index-map_002dobject_002dshape">Procedure: <strong>map-object-shape</strong> <em>obj</em></dt>
<dd><p>Return the shape of <var>obj</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-map_002dobject_002dproperties"></a>Procedure: <strong>map-object-properties</strong> <em>obj</em></dt>
+<dt id="index-map_002dobject_002dproperties">Procedure: <strong>map-object-properties</strong> <em>obj</em></dt>
<dd><p>Return the custom properties of <var>obj</var>.
</p></dd></dl>
-<a name="Polygons"></a>
-<h4 class="subsubsection">2.3.3.6 Polygons</h4>
+<span id="Polygons"></span><h4 class="subsubsection">2.3.4.6 Polygons</h4>
<dl>
-<dt><a name="index-polygon_003f"></a>Procedure: <strong>polygon?</strong> <em>obj</em></dt>
+<dt id="index-polygon_003f">Procedure: <strong>polygon?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a polygon.
</p></dd></dl>
<dl>
-<dt><a name="index-polygon_002dpoints"></a>Procedure: <strong>polygon-points</strong> <em>polygon</em></dt>
+<dt id="index-polygon_002dpoints">Procedure: <strong>polygon-points</strong> <em>polygon</em></dt>
<dd><p>Return the list of points that form <var>polygon</var>.
</p></dd></dl>
diff --git a/manuals/chickadee/Tweening.html b/manuals/chickadee/Tweening.html
index 726c699..cbf513a 100644
--- a/manuals/chickadee/Tweening.html
+++ b/manuals/chickadee/Tweening.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Tweening (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Tweening"></a>
-<div class="header">
+<span id="Tweening"></span><div class="header">
<p>
Next: <a href="Channels.html#Channels" accesskey="n" rel="next">Channels</a>, Previous: <a href="Scripts.html#Scripts" accesskey="p" rel="prev">Scripts</a>, Up: <a href="Scripting.html#Scripting" accesskey="u" rel="up">Scripting</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Tweening-1"></a>
-<h4 class="subsection">2.4.3 Tweening</h4>
+<span id="Tweening-1"></span><h4 class="subsection">2.5.3 Tweening</h4>
<p>Tweening is the process of transitioning something from an initial
state to a final state over a pre-determined period of time. In other
@@ -111,7 +100,7 @@ procedure can be used within any script like so:
</pre></div>
<dl>
-<dt><a name="index-tween"></a>Procedure: <strong>tween</strong> <em>duration start end proc [#:step <code>1</code>] [#:ease <code>smoothstep</code>] #:interpolate <code>lerp</code>]</em></dt>
+<dt id="index-tween">Procedure: <strong>tween</strong> <em>duration start end proc [#:step <code>1</code>] [#:ease <code>smoothstep</code>] #:interpolate <code>lerp</code>]</em></dt>
<dd><p>Transition a value from <var>start</var> to <var>end</var> over <var>duration</var>,
sending each succesive value to <var>proc</var>. <var>step</var> controls the
amount of time between each update of the animation.
diff --git a/manuals/chickadee/Vectors.html b/manuals/chickadee/Vectors.html
index 20632cd..9dff143 100644
--- a/manuals/chickadee/Vectors.html
+++ b/manuals/chickadee/Vectors.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Vectors (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Vectors"></a>
-<div class="header">
+<span id="Vectors"></span><div class="header">
<p>
Next: <a href="Rectangles.html#Rectangles" accesskey="n" rel="next">Rectangles</a>, Previous: <a href="Basics.html#Basics" accesskey="p" rel="prev">Basics</a>, Up: <a href="Math.html#Math" accesskey="u" rel="up">Math</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Vectors-1"></a>
-<h4 class="subsection">2.2.2 Vectors</h4>
+<span id="Vectors-1"></span><h4 class="subsection">2.2.2 Vectors</h4>
<p>Unlike Scheme&rsquo;s vector data type, which is a sequence of arbitrary
Scheme objects, Chickadee&rsquo;s <code>(chickadee math vector)</code> module
@@ -118,8 +107,7 @@ used to cut down on typing:
<pre class="example">(define v (vec2+ #v(1 2) #v(3 4)))
</pre></div>
-<a name="A-Note-About-Performance"></a>
-<h4 class="subsubsection">2.2.2.1 A Note About Performance</h4>
+<span id="A-Note-About-Performance"></span><h4 class="subsubsection">2.2.2.1 A Note About Performance</h4>
<p>A lot of time has been spent making Chickadee&rsquo;s vector operations
perform relatively efficiently in critical code paths where excessive
@@ -131,223 +119,233 @@ order to take advantage of optimizations relating to floating point
math operations. The downside is that since these are not pure
functions, they do not compose well and create more verbose code.
</p>
-<a name="g_t2D-Vectors"></a>
-<h4 class="subsubsection">2.2.2.2 2D Vectors</h4>
+<span id="g_t2D-Vectors"></span><h4 class="subsubsection">2.2.2.2 2D Vectors</h4>
<dl>
-<dt><a name="index-vec2"></a>Procedure: <strong>vec2</strong> <em>x y</em></dt>
+<dt id="index-vec2">Procedure: <strong>vec2</strong> <em>x y</em></dt>
<dd><p>Return a new 2D vector with coordinates (<var>x</var>, <var>y</var>).
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002fpolar"></a>Procedure: <strong>vec2/polar</strong> <em>r theta</em></dt>
+<dt id="index-vec2_002fpolar">Procedure: <strong>vec2/polar</strong> <em>r theta</em></dt>
<dd><p>Return a new 2D vector containing the Cartesian representation of the
polar coordinate (<var>r</var>, <var>theta</var>). The angle <var>theta</var> is
measured in radians.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_003f"></a>Procedure: <strong>vec2?</strong> <em>obj</em></dt>
+<dt id="index-vec2_003f">Procedure: <strong>vec2?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a 2D vector.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dx"></a>Procedure: <strong>vec2-x</strong> <em>v</em></dt>
+<dt id="index-vec2_002dx">Procedure: <strong>vec2-x</strong> <em>v</em></dt>
<dd><p>Return the X coordinate of the 2D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dy"></a>Procedure: <strong>vec2-y</strong> <em>v</em></dt>
+<dt id="index-vec2_002dy">Procedure: <strong>vec2-y</strong> <em>v</em></dt>
<dd><p>Return the Y coordinate of the 2D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dcopy"></a>Procedure: <strong>vec2-copy</strong> <em>v</em></dt>
+<dt id="index-vec2_002dcopy">Procedure: <strong>vec2-copy</strong> <em>v</em></dt>
<dd><p>Return a fresh copy of the 2D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dmagnitude"></a>Procedure: <strong>vec2-magnitude</strong> <em>v</em></dt>
+<dt id="index-vec2_002dmagnitude">Procedure: <strong>vec2-magnitude</strong> <em>v</em></dt>
<dd><p>Return the magnitude of the 2D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002ddot_002dproduct"></a>Procedure: <strong>vec2-dot-product</strong> <em>v1 v2</em></dt>
+<dt id="index-vec2_002ddot_002dproduct">Procedure: <strong>vec2-dot-product</strong> <em>v1 v2</em></dt>
<dd><p>Return the dot product of the 2D vectors <var>v1</var> and <var>v2</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dnormalize"></a>Procedure: <strong>vec2-normalize</strong> <em>v</em></dt>
+<dt id="index-vec2_002dnormalize">Procedure: <strong>vec2-normalize</strong> <em>v</em></dt>
<dd><p>Return the normalized form of the 2D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002b"></a>Procedure: <strong>vec2+</strong> <em>v x</em></dt>
+<dt id="index-vec2_002b">Procedure: <strong>vec2+</strong> <em>v x</em></dt>
<dd><p>Add <var>x</var>, either a 2D vector or a scalar (i.e. a real number), to
the 2D vector <var>v</var> and return a new vector containing the sum.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002d"></a>Procedure: <strong>vec2-</strong> <em>v x</em></dt>
+<dt id="index-vec2_002d">Procedure: <strong>vec2-</strong> <em>v x</em></dt>
<dd><p>Subtract <var>x</var>, either a 2D vector or a scalar, from the 2D vector
<var>v</var> and return a new vector containing the difference.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002a"></a>Procedure: <strong>vec2*</strong> <em>v x</em></dt>
+<dt id="index-vec2_002a">Procedure: <strong>vec2*</strong> <em>v x</em></dt>
<dd><p>Multiply the 2D vector <var>v</var> by <var>x</var>, a 2D vector or a scalar,
and return a new vector containing the product.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dvec2_002dx_0021"></a>Procedure: <strong>set-vec2-x!</strong> <em>v x</em></dt>
+<dt id="index-set_002dvec2_002dx_0021">Procedure: <strong>set-vec2-x!</strong> <em>v x</em></dt>
<dd><p>Set the X coordinate of the 2D vector <var>v</var> to <var>x</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dvec2_002dy_0021"></a>Procedure: <strong>set-vec2-y!</strong> <em>v y</em></dt>
+<dt id="index-set_002dvec2_002dy_0021">Procedure: <strong>set-vec2-y!</strong> <em>v y</em></dt>
<dd><p>Set the Y coordinate of the 2D vector <var>v</var> to <var>y</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dvec2_0021"></a>Procedure: <strong>set-vec2!</strong> <em>v x y</em></dt>
+<dt id="index-set_002dvec2_0021">Procedure: <strong>set-vec2!</strong> <em>v x y</em></dt>
<dd><p>Set the X and Y coordinates of the 2D vector <var>v</var> to <var>x</var> and
<var>y</var>, respectively.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dcopy_0021"></a>Procedure: <strong>vec2-copy!</strong> <em>source target</em></dt>
+<dt id="index-vec2_002dcopy_0021">Procedure: <strong>vec2-copy!</strong> <em>source target</em></dt>
<dd><p>Copy the 2D vector <var>source</var> into the 2D vector <var>target</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dadd_0021"></a>Procedure: <strong>vec2-add!</strong> <em>v x</em></dt>
+<dt id="index-vec2_002dadd_0021">Procedure: <strong>vec2-add!</strong> <em>v x</em></dt>
<dd><p>Perform an in-place modification of the 2D vector <var>v</var> by adding
<var>x</var>, a 2D vector or a scalar.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dsub_0021"></a>Procedure: <strong>vec2-sub!</strong> <em>v x</em></dt>
+<dt id="index-vec2_002dsub_0021">Procedure: <strong>vec2-sub!</strong> <em>v x</em></dt>
<dd><p>Perform an in-place modification of the 2D vector <var>v</var> by
subtracting <var>x</var>, a 2D vector or a scalar.
</p></dd></dl>
<dl>
-<dt><a name="index-vec2_002dmult_0021"></a>Procedure: <strong>vec2-mult!</strong> <em>v x</em></dt>
+<dt id="index-vec2_002dmult_0021">Procedure: <strong>vec2-mult!</strong> <em>v x</em></dt>
<dd><p>Perform an in-place modification of the 2D vector <var>v</var> by
multiplying it by <var>x</var>, a 2D vector or a scalar.
</p></dd></dl>
-<a name="g_t3D-Vectors"></a>
-<h4 class="subsubsection">2.2.2.3 3D Vectors</h4>
+<span id="g_t3D-Vectors"></span><h4 class="subsubsection">2.2.2.3 3D Vectors</h4>
<dl>
-<dt><a name="index-vec3"></a>Procedure: <strong>vec3</strong> <em>x y</em></dt>
+<dt id="index-vec3">Procedure: <strong>vec3</strong> <em>x y</em></dt>
<dd><p>Return a new 2D vector with coordinates (<var>x</var>, <var>y</var>).
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_003f"></a>Procedure: <strong>vec3?</strong> <em>obj</em></dt>
+<dt id="index-vec3_003f">Procedure: <strong>vec3?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a 3D vector.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dx"></a>Procedure: <strong>vec3-x</strong> <em>v</em></dt>
+<dt id="index-vec3_002dx">Procedure: <strong>vec3-x</strong> <em>v</em></dt>
<dd><p>Return the X coordinate of the 3D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dy"></a>Procedure: <strong>vec3-y</strong> <em>v</em></dt>
+<dt id="index-vec3_002dy">Procedure: <strong>vec3-y</strong> <em>v</em></dt>
<dd><p>Return the Y coordinate of the 3D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dz"></a>Procedure: <strong>vec3-z</strong> <em>v</em></dt>
+<dt id="index-vec3_002dz">Procedure: <strong>vec3-z</strong> <em>v</em></dt>
<dd><p>Return the Z coordinate of the 3D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dcopy"></a>Procedure: <strong>vec3-copy</strong> <em>v</em></dt>
+<dt id="index-vec3_002dcopy">Procedure: <strong>vec3-copy</strong> <em>v</em></dt>
<dd><p>Return a fresh copy of the 3D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dmagnitude"></a>Procedure: <strong>vec3-magnitude</strong> <em>v</em></dt>
+<dt id="index-vec3_002dmagnitude">Procedure: <strong>vec3-magnitude</strong> <em>v</em></dt>
<dd><p>Return the magnitude of the 3D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002ddot_002dproduct"></a>Procedure: <strong>vec3-dot-product</strong> <em>v1 v2</em></dt>
+<dt id="index-vec3_002ddot_002dproduct">Procedure: <strong>vec3-dot-product</strong> <em>v1 v2</em></dt>
<dd><p>Return the dot product of the 3D vectors <var>v1</var> and <var>v2</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dnormalize"></a>Procedure: <strong>vec3-normalize</strong> <em>v</em></dt>
+<dt id="index-vec3_002dcross">Procedure: <strong>vec3-cross</strong> <em>v1 v2</em></dt>
+<dd><p>Return a new 3D vector containing the cross product of <var>v1</var> and
+<var>v2</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-vec3_002dnormalize">Procedure: <strong>vec3-normalize</strong> <em>v</em></dt>
<dd><p>Return the normalized form of the 3D vector <var>v</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002b"></a>Procedure: <strong>vec3+</strong> <em>v x</em></dt>
+<dt id="index-vec3_002b">Procedure: <strong>vec3+</strong> <em>v x</em></dt>
<dd><p>Add <var>x</var>, either a 3D vector or a scalar (i.e. a real number), to
the 3D vector <var>v</var> and return a new vector containing the sum.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002d"></a>Procedure: <strong>vec3-</strong> <em>v x</em></dt>
+<dt id="index-vec3_002d">Procedure: <strong>vec3-</strong> <em>v x</em></dt>
<dd><p>Subtract <var>x</var>, either a 3D vector or a scalar, from the 3D vector
<var>v</var> and return a new vector containing the difference.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002a"></a>Procedure: <strong>vec3*</strong> <em>v x</em></dt>
+<dt id="index-vec3_002a">Procedure: <strong>vec3*</strong> <em>v x</em></dt>
<dd><p>Multiply the 3D vector <var>v</var> by <var>x</var>, a 3D vector or a scalar,
and return a new vector containing the product.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dvec3_002dx_0021"></a>Procedure: <strong>set-vec3-x!</strong> <em>v x</em></dt>
+<dt id="index-set_002dvec3_002dx_0021">Procedure: <strong>set-vec3-x!</strong> <em>v x</em></dt>
<dd><p>Set the X coordinate of the 3D vector <var>v</var> to <var>x</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dvec3_002dy_0021"></a>Procedure: <strong>set-vec3-y!</strong> <em>v y</em></dt>
+<dt id="index-set_002dvec3_002dy_0021">Procedure: <strong>set-vec3-y!</strong> <em>v y</em></dt>
<dd><p>Set the Y coordinate of the 3D vector <var>v</var> to <var>y</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dvec3_002dz_0021"></a>Procedure: <strong>set-vec3-z!</strong> <em>v z</em></dt>
+<dt id="index-set_002dvec3_002dz_0021">Procedure: <strong>set-vec3-z!</strong> <em>v z</em></dt>
<dd><p>Set the Z coordinate of the 3D vector <var>v</var> to <var>z</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-set_002dvec3_0021"></a>Procedure: <strong>set-vec3!</strong> <em>v x y z</em></dt>
+<dt id="index-set_002dvec3_0021">Procedure: <strong>set-vec3!</strong> <em>v x y z</em></dt>
<dd><p>Set the X, Y, and Z coordinates of the 3D vector <var>v</var> to <var>x</var>,
<var>y</var>, and <var>z</var>, respectively.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dcopy_0021"></a>Procedure: <strong>vec3-copy!</strong> <em>source target</em></dt>
+<dt id="index-vec3_002dcopy_0021">Procedure: <strong>vec3-copy!</strong> <em>source target</em></dt>
<dd><p>Copy the 3D vector <var>source</var> into the 3D vector <var>target</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dadd_0021"></a>Procedure: <strong>vec3-add!</strong> <em>v x</em></dt>
+<dt id="index-vec3_002dadd_0021">Procedure: <strong>vec3-add!</strong> <em>v x</em></dt>
<dd><p>Perform an in-place modification of the 3D vector <var>v</var> by adding
<var>x</var>, a 3D vector or a scalar.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dsub_0021"></a>Procedure: <strong>vec3-sub!</strong> <em>v x</em></dt>
+<dt id="index-vec3_002dsub_0021">Procedure: <strong>vec3-sub!</strong> <em>v x</em></dt>
<dd><p>Perform an in-place modification of the 3D vector <var>v</var> by
subtracting <var>x</var>, a 3D vector or a scalar.
</p></dd></dl>
<dl>
-<dt><a name="index-vec3_002dmult_0021"></a>Procedure: <strong>vec3-mult!</strong> <em>v x</em></dt>
+<dt id="index-vec3_002dmult_0021">Procedure: <strong>vec3-mult!</strong> <em>v x</em></dt>
<dd><p>Perform an in-place modification of the 3D vector <var>v</var> by
multiplying it by <var>x</var>, a 3D vector or a scalar.
</p></dd></dl>
+<dl>
+<dt id="index-vec3_002dcross_0021">Procedure: <strong>vec3-cross!</strong> <em>dest v1 v2</em></dt>
+<dd><p>Compute the cross product of the 3D vectors <var>v1</var> and <var>v2</var> and
+store the result in <var>dest</var>.
+</p></dd></dl>
+
<hr>
<div class="header">
<p>
diff --git a/manuals/chickadee/Vertex-Arrays.html b/manuals/chickadee/Vertex-Arrays.html
deleted file mode 100644
index f3c9fa6..0000000
--- a/manuals/chickadee/Vertex-Arrays.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- Copyright (C) 2017 David Thompson davet@gnu.org
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3
-or any later version published by the Free Software Foundation;
-with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-A copy of the license is included in the section entitled "GNU
-Free Documentation License".
-
-A copy of the license is also available from the Free Software
-Foundation Web site at http://www.gnu.org/licenses/fdl.html.
-
-
-The document was typeset with
-http://www.texinfo.org/ (GNU Texinfo).
- -->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>Vertex Arrays (The Chickadee Game Toolkit)</title>
-
-<meta name="description" content="Vertex Arrays (The Chickadee Game Toolkit)">
-<meta name="keywords" content="Vertex Arrays (The Chickadee Game Toolkit)">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
-<meta name="Generator" content="makeinfo">
-<link href="index.html#Top" rel="start" title="Top">
-<link href="Index.html#Index" rel="index" title="Index">
-<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
-<link href="Graphics.html#Graphics" rel="up" title="Graphics">
-<link href="Shaders.html#Shaders" rel="next" title="Shaders">
-<link href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" rel="prev" title="Blending and Depth Testing">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
-div.display {margin-left: 3.2em}
-div.example {margin-left: 3.2em}
-div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
-kbd {font-style: oblique}
-pre.display {font-family: inherit}
-pre.format {font-family: inherit}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.nolinebreak {white-space: nowrap}
-span.roman {font-family: initial; font-weight: normal}
-span.sansserif {font-family: sans-serif; font-weight: normal}
-ul.no-bullet {list-style: none}
-@media (min-width: 1140px) {
- body {
- margin-left: 14rem;
- margin-right: 4rem;
- max-width: 52rem;
- }
-}
-
-@media (min-width: 800px) and (max-width: 1140px) {
- body {
- margin-left: 6rem;
- margin-right: 4rem;
- max-width: 52rem;
- }
-}
-
-@media (max-width: 800px) {
- body {
- margin: 1rem;
- }
-}
-
--->
-</style>
-<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
-
-
-</head>
-
-<body lang="en">
-<a name="Vertex-Arrays"></a>
-<div class="header">
-<p>
-Next: <a href="Shaders.html#Shaders" accesskey="n" rel="next">Shaders</a>, Previous: <a href="Blending-and-Depth-Testing.html#Blending-and-Depth-Testing" accesskey="p" rel="prev">Blending and Depth Testing</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
-</div>
-<hr>
-<a name="Vertex-Arrays-1"></a>
-<h4 class="subsection">2.3.8 Vertex Arrays</h4>
-
-
-
-
-</body>
-</html>
diff --git a/manuals/chickadee/Viewports.html b/manuals/chickadee/Viewports.html
index 15b3940..0588bff 100644
--- a/manuals/chickadee/Viewports.html
+++ b/manuals/chickadee/Viewports.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Viewports (The Chickadee Game Toolkit)</title>
@@ -38,23 +38,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -89,14 +80,12 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<a name="Viewports"></a>
-<div class="header">
+<span id="Viewports"></span><div class="header">
<p>
Next: <a href="Rendering-Engine.html#Rendering-Engine" accesskey="n" rel="next">Rendering Engine</a>, Previous: <a href="Framebuffers.html#Framebuffers" accesskey="p" rel="prev">Framebuffers</a>, Up: <a href="Graphics.html#Graphics" accesskey="u" rel="up">Graphics</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Viewports-1"></a>
-<h4 class="subsection">2.3.9 Viewports</h4>
+<span id="Viewports-1"></span><h4 class="subsection">2.3.11 Viewports</h4>
<p>A viewport represents a subset of the screen (or framebuffer). When
rendering a frame, the resulting image will only appear within that
@@ -111,7 +100,7 @@ see <code>with-viewport</code> in <a href="Rendering-Engine.html#Rendering-Engin
API:
</p>
<dl>
-<dt><a name="index-make_002dviewport"></a>Procedure: <strong>make-viewport</strong> <em>x y width height [#:clear-color] [#:clear-flags]</em></dt>
+<dt id="index-make_002dviewport">Procedure: <strong>make-viewport</strong> <em>x y width height [#:clear-color] [#:clear-flags]</em></dt>
<dd>
<p>Create a viewport that covers an area of the window starting from
coordinates (<var>x</var>, <var>y</var>) and spanning <var>width</var> <code>x</code>
@@ -124,37 +113,37 @@ in <var>clear-flags</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-viewport_003f"></a>Procedure: <strong>viewport?</strong> <em>obj</em></dt>
+<dt id="index-viewport_003f">Procedure: <strong>viewport?</strong> <em>obj</em></dt>
<dd><p>Return <code>#t</code> if <var>obj</var> is a viewport.
</p></dd></dl>
<dl>
-<dt><a name="index-viewport_002dx"></a>Procedure: <strong>viewport-x</strong> <em>viewport</em></dt>
+<dt id="index-viewport_002dx">Procedure: <strong>viewport-x</strong> <em>viewport</em></dt>
<dd><p>Return the left edge of <var>viewport</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-viewport_002dy"></a>Procedure: <strong>viewport-y</strong> <em>viewport</em></dt>
+<dt id="index-viewport_002dy">Procedure: <strong>viewport-y</strong> <em>viewport</em></dt>
<dd><p>Return the bottom edge of <var>viewport</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-viewport_002dwidth"></a>Procedure: <strong>viewport-width</strong> <em>viewport</em></dt>
+<dt id="index-viewport_002dwidth">Procedure: <strong>viewport-width</strong> <em>viewport</em></dt>
<dd><p>Return the width of <var>viewport</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-viewport_002dheight"></a>Procedure: <strong>viewport-height</strong> <em>viewport</em></dt>
+<dt id="index-viewport_002dheight">Procedure: <strong>viewport-height</strong> <em>viewport</em></dt>
<dd><p>Return the height of <var>viewport</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-viewport_002dclear_002dcolor"></a>Procedure: <strong>viewport-clear-color</strong> <em>viewport</em></dt>
+<dt id="index-viewport_002dclear_002dcolor">Procedure: <strong>viewport-clear-color</strong> <em>viewport</em></dt>
<dd><p>Return the clear color for <var>viewport</var>.
</p></dd></dl>
<dl>
-<dt><a name="index-viewport_002dclear_002dflags"></a>Procedure: <strong>viewport-clear-flags</strong> <em>viewport</em></dt>
+<dt id="index-viewport_002dclear_002dflags">Procedure: <strong>viewport-clear-flags</strong> <em>viewport</em></dt>
<dd><p>Return the list of clear flags for <var>viewport</var>.
</p></dd></dl>
diff --git a/manuals/chickadee/Window-Manipulation.html b/manuals/chickadee/Window-Manipulation.html
new file mode 100644
index 0000000..0f9ab86
--- /dev/null
+++ b/manuals/chickadee/Window-Manipulation.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3
+or any later version published by the Free Software Foundation;
+with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+A copy of the license is included in the section entitled "GNU
+Free Documentation License".
+
+A copy of the license is also available from the Free Software
+Foundation Web site at http://www.gnu.org/licenses/fdl.html.
+
+
+* Chickadee: (chickadee). Game programming toolkit for Guile.
+
+The document was typeset with
+http://www.texinfo.org/ (GNU Texinfo).
+ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Window Manipulation (The Chickadee Game Toolkit)</title>
+
+<meta name="description" content="Window Manipulation (The Chickadee Game Toolkit)">
+<meta name="keywords" content="Window Manipulation (The Chickadee Game Toolkit)">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="index.html#Top" rel="start" title="Top">
+<link href="Index.html#Index" rel="index" title="Index">
+<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="Kernel.html#Kernel" rel="up" title="Kernel">
+<link href="Live-Coding.html#Live-Coding" rel="next" title="Live Coding">
+<link href="Input-Devices.html#Input-Devices" rel="prev" title="Input Devices">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+@media (min-width: 1140px) {
+ body {
+ margin-left: 14rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (min-width: 800px) and (max-width: 1140px) {
+ body {
+ margin-left: 6rem;
+ margin-right: 4rem;
+ max-width: 52rem;
+ }
+}
+
+@media (max-width: 800px) {
+ body {
+ margin: 1rem;
+ }
+}
+
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="https://dthompson.us/css/dthompson.css">
+
+
+</head>
+
+<body lang="en">
+<span id="Window-Manipulation"></span><div class="header">
+<p>
+Next: <a href="Live-Coding.html#Live-Coding" accesskey="n" rel="next">Live Coding</a>, Previous: <a href="Input-Devices.html#Input-Devices" accesskey="p" rel="prev">Input Devices</a>, Up: <a href="Kernel.html#Kernel" accesskey="u" rel="up">Kernel</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
+</div>
+<hr>
+<span id="Window-Manipulation-1"></span><h4 class="subsection">2.1.3 Window Manipulation</h4>
+
+<dl>
+<dt id="index-current_002dwindow">Procedure: <strong>current-window</strong></dt>
+<dd><p>Return the currently active game window.
+</p></dd></dl>
+
+<dl>
+<dt id="index-window_003f">Procedure: <strong>window?</strong> <em>obj</em></dt>
+<dd><p>Return <code>#t</code> if <var>obj</var> is a window object.
+</p></dd></dl>
+
+<dl>
+<dt id="index-window_002dtitle">Procedure: <strong>window-title</strong> <em>window</em></dt>
+<dd><p>Return the title of <var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-window_002dwidth">Procedure: <strong>window-width</strong> <em>window</em></dt>
+<dd><p>Return the width of <var>window</var> in pixels.
+</p></dd></dl>
+
+<dl>
+<dt id="index-window_002dheight">Procedure: <strong>window-height</strong> <em>window</em></dt>
+<dd><p>Return the height of <var>window</var> in pixels.
+</p></dd></dl>
+
+<dl>
+<dt id="index-window_002dx">Procedure: <strong>window-x</strong> <em>window</em></dt>
+<dd><p>Retun the X coordinate of the upper-left corner of <var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-window_002dy">Procedure: <strong>window-y</strong> <em>window</em></dt>
+<dd><p>Return the Y coordinate of the upper-left corner of <var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-hide_002dwindow_0021">Procedure: <strong>hide-window!</strong> <em>window</em></dt>
+<dd><p>Hide <var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-show_002dwindow_0021">Procedure: <strong>show-window!</strong> <em>window</em></dt>
+<dd><p>Show <var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-maximize_002dwindow_0021">Procedure: <strong>maximize-window!</strong> <em>window</em></dt>
+<dd><p>Maximize <var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-minimize_002dwindow_0021">Procedure: <strong>minimize-window!</strong> <em>window</em></dt>
+<dd><p>Minimize <var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-raise_002dwindow_0021">Procedure: <strong>raise-window!</strong> <em>window</em></dt>
+<dd><p>Make <var>window</var> visible over all other windows.
+</p></dd></dl>
+
+<dl>
+<dt id="index-restore_002dwindow_0021">Procedure: <strong>restore-window!</strong> <em>window</em></dt>
+<dd><p>Restore the size and position of a minimized or maximized
+<var>window</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dwindow_002dborder_0021">Procedure: <strong>set-window-border!</strong> <em>window border?</em></dt>
+<dd><p>Enable/disable the border around <var>window</var>. If <var>border?</var> is
+<code>#f</code>, the border is disabled, otherwise it is enabled.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dwindow_002dtitle_0021">Procedure: <strong>set-window-title!</strong> <em>window title</em></dt>
+<dd><p>Change the title of <var>window</var> to <var>title</var>.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dwindow_002dsize_0021">Procedure: <strong>set-window-size!</strong> <em>window width height</em></dt>
+<dd><p>Change the dimensions of <var>window</var> to <var>width</var> x <var>height</var>
+pixels.
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dwindow_002dposition_0021">Procedure: <strong>set-window-position!</strong> <em>window x y</em></dt>
+<dd><p>Move the upper-left corner of <var>window</var> to pixel coordinates
+(<var>x</var>, <var>y</var>).
+</p></dd></dl>
+
+<dl>
+<dt id="index-set_002dwindow_002dfullscreen_0021">Procedure: <strong>set-window-fullscreen!</strong> <em>window fullscreen?</em></dt>
+<dd><p>Enable or disable fullscreen mode for <var>window</var>. If
+<var>fullscreen?</var> is <code>#f</code>, fullscreen mode is disabled, otherwise
+it is enabled.
+</p></dd></dl>
+
+
+
+
+
+</body>
+</html>
diff --git a/manuals/chickadee/index.html b/manuals/chickadee/index.html
index 4ddf0c3..1d28f4b 100644
--- a/manuals/chickadee/index.html
+++ b/manuals/chickadee/index.html
@@ -1,6 +1,6 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
-<!-- Copyright (C) 2017, 2018, 2019 David Thompson davet@gnu.org
+<!-- Copyright (C) 2017-2020 David Thompson davet@gnu.org
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
@@ -18,7 +18,7 @@ Foundation Web site at http://www.gnu.org/licenses/fdl.html.
The document was typeset with
http://www.texinfo.org/ (GNU Texinfo).
-->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.6, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Top (The Chickadee Game Toolkit)</title>
@@ -37,23 +37,14 @@ http://www.texinfo.org/ (GNU Texinfo).
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -91,93 +82,111 @@ ul.no-bullet {list-style: none}
<h1 class="settitle" align="center">The Chickadee Game Toolkit</h1>
-<a name="SEC_Contents"></a>
+<span id="SEC_Contents"></span>
<h2 class="contents-heading">Table of Contents</h2>
<div class="contents">
<ul class="no-bullet">
- <li><a name="toc-Installation-1" href="Installation.html#Installation">1 Installation</a>
+ <li><a id="toc-Installation-1" href="Installation.html#Installation">1 Installation</a>
<ul class="no-bullet">
- <li><a name="toc-Requirements-1" href="Requirements.html#Requirements">1.1 Requirements</a></li>
+ <li><a id="toc-Requirements-1" href="Requirements.html#Requirements">1.1 Requirements</a></li>
</ul></li>
- <li><a name="toc-API-Reference-1" href="API-Reference.html#API-Reference">2 API Reference</a>
+ <li><a id="toc-API-Reference-1" href="API-Reference.html#API-Reference">2 API Reference</a>
<ul class="no-bullet">
- <li><a name="toc-Kernel-1" href="Kernel.html#Kernel">2.1 Kernel</a>
+ <li><a id="toc-Kernel-1" href="Kernel.html#Kernel">2.1 Kernel</a>
<ul class="no-bullet">
- <li><a name="toc-Live-Coding" href="Kernel.html#Live-Coding">2.1.1 Live Coding</a></li>
+ <li><a id="toc-The-Game-Loop-1" href="The-Game-Loop.html#The-Game-Loop">2.1.1 The Game Loop</a></li>
+ <li><a id="toc-Input-Devices-1" href="Input-Devices.html#Input-Devices">2.1.2 Input Devices</a></li>
+ <li><a id="toc-Window-Manipulation-1" href="Window-Manipulation.html#Window-Manipulation">2.1.3 Window Manipulation</a></li>
+ <li><a id="toc-Live-Coding-1" href="Live-Coding.html#Live-Coding">2.1.4 Live Coding</a></li>
</ul></li>
- <li><a name="toc-Math-1" href="Math.html#Math">2.2 Math</a>
+ <li><a id="toc-Math-1" href="Math.html#Math">2.2 Math</a>
<ul class="no-bullet">
- <li><a name="toc-Basics-1" href="Basics.html#Basics">2.2.1 Basics</a></li>
- <li><a name="toc-Vectors-1" href="Vectors.html#Vectors">2.2.2 Vectors</a>
+ <li><a id="toc-Basics-1" href="Basics.html#Basics">2.2.1 Basics</a></li>
+ <li><a id="toc-Vectors-1" href="Vectors.html#Vectors">2.2.2 Vectors</a>
<ul class="no-bullet">
- <li><a name="toc-A-Note-About-Performance" href="Vectors.html#A-Note-About-Performance">2.2.2.1 A Note About Performance</a></li>
- <li><a name="toc-2D-Vectors" href="Vectors.html#g_t2D-Vectors">2.2.2.2 2D Vectors</a></li>
- <li><a name="toc-3D-Vectors" href="Vectors.html#g_t3D-Vectors">2.2.2.3 3D Vectors</a></li>
+ <li><a id="toc-A-Note-About-Performance" href="Vectors.html#A-Note-About-Performance">2.2.2.1 A Note About Performance</a></li>
+ <li><a id="toc-2D-Vectors" href="Vectors.html#g_t2D-Vectors">2.2.2.2 2D Vectors</a></li>
+ <li><a id="toc-3D-Vectors" href="Vectors.html#g_t3D-Vectors">2.2.2.3 3D Vectors</a></li>
</ul></li>
- <li><a name="toc-Rectangles-1" href="Rectangles.html#Rectangles">2.2.3 Rectangles</a></li>
- <li><a name="toc-Grid-1" href="Grid.html#Grid">2.2.4 Grid</a></li>
- <li><a name="toc-Matrices-1" href="Matrices.html#Matrices">2.2.5 Matrices</a>
+ <li><a id="toc-Rectangles-1" href="Rectangles.html#Rectangles">2.2.3 Rectangles</a></li>
+ <li><a id="toc-Grid-1" href="Grid.html#Grid">2.2.4 Grid</a></li>
+ <li><a id="toc-Matrices-1" href="Matrices.html#Matrices">2.2.5 Matrices</a>
<ul class="no-bullet">
- <li><a name="toc-Another-Note-About-Performance" href="Matrices.html#Another-Note-About-Performance">2.2.5.1 Another Note About Performance</a></li>
- <li><a name="toc-Matrix-Operations" href="Matrices.html#Matrix-Operations">2.2.5.2 Matrix Operations</a></li>
+ <li><a id="toc-Another-Note-About-Performance" href="Matrices.html#Another-Note-About-Performance">2.2.5.1 Another Note About Performance</a></li>
+ <li><a id="toc-Matrix-Operations" href="Matrices.html#Matrix-Operations">2.2.5.2 Matrix Operations</a></li>
</ul></li>
- <li><a name="toc-Quaternions-1" href="Quaternions.html#Quaternions">2.2.6 Quaternions</a></li>
- <li><a name="toc-Easings-1" href="Easings.html#Easings">2.2.7 Easings</a></li>
- <li><a name="toc-Bezier-Curves-1" href="Bezier-Curves.html#Bezier-Curves">2.2.8 Bezier Curves</a></li>
- <li><a name="toc-Path-Finding-1" href="Path-Finding.html#Path-Finding">2.2.9 Path Finding</a></li>
+ <li><a id="toc-Quaternions-1" href="Quaternions.html#Quaternions">2.2.6 Quaternions</a></li>
+ <li><a id="toc-Easings-1" href="Easings.html#Easings">2.2.7 Easings</a></li>
+ <li><a id="toc-Bezier-Curves-1" href="Bezier-Curves.html#Bezier-Curves">2.2.8 Bezier Curves</a></li>
+ <li><a id="toc-Path-Finding-1" href="Path-Finding.html#Path-Finding">2.2.9 Path Finding</a></li>
</ul></li>
- <li><a name="toc-Graphics-1" href="Graphics.html#Graphics">2.3 Graphics</a>
+ <li><a id="toc-Graphics-1" href="Graphics.html#Graphics">2.3 Graphics</a>
<ul class="no-bullet">
- <li><a name="toc-Textures-1" href="Textures.html#Textures">2.3.1 Textures</a></li>
- <li><a name="toc-Sprites-1" href="Sprites.html#Sprites">2.3.2 Sprites</a></li>
- <li><a name="toc-Tile-Maps-1" href="Tile-Maps.html#Tile-Maps">2.3.3 Tile Maps</a>
+ <li><a id="toc-Colors-1" href="Colors.html#Colors">2.3.1 Colors</a>
<ul class="no-bullet">
- <li><a name="toc-Tilesets" href="Tile-Maps.html#Tilesets">2.3.3.1 Tilesets</a></li>
- <li><a name="toc-Tiles" href="Tile-Maps.html#Tiles">2.3.3.2 Tiles</a></li>
- <li><a name="toc-Animations" href="Tile-Maps.html#Animations">2.3.3.3 Animations</a></li>
- <li><a name="toc-Layers" href="Tile-Maps.html#Layers">2.3.3.4 Layers</a></li>
- <li><a name="toc-Objects" href="Tile-Maps.html#Objects">2.3.3.5 Objects</a></li>
- <li><a name="toc-Polygons" href="Tile-Maps.html#Polygons">2.3.3.6 Polygons</a></li>
+ <li><a id="toc-Stock-Colors" href="Colors.html#Stock-Colors">2.3.1.1 Stock Colors</a></li>
+ </ul></li>
+ <li><a id="toc-Textures-1" href="Textures.html#Textures">2.3.2 Textures</a></li>
+ <li><a id="toc-Sprites-1" href="Sprites.html#Sprites">2.3.3 Sprites</a></li>
+ <li><a id="toc-Tile-Maps-1" href="Tile-Maps.html#Tile-Maps">2.3.4 Tile Maps</a>
+ <ul class="no-bullet">
+ <li><a id="toc-Tilesets" href="Tile-Maps.html#Tilesets">2.3.4.1 Tilesets</a></li>
+ <li><a id="toc-Tiles" href="Tile-Maps.html#Tiles">2.3.4.2 Tiles</a></li>
+ <li><a id="toc-Animations" href="Tile-Maps.html#Animations">2.3.4.3 Animations</a></li>
+ <li><a id="toc-Layers" href="Tile-Maps.html#Layers">2.3.4.4 Layers</a></li>
+ <li><a id="toc-Objects" href="Tile-Maps.html#Objects">2.3.4.5 Objects</a></li>
+ <li><a id="toc-Polygons" href="Tile-Maps.html#Polygons">2.3.4.6 Polygons</a></li>
+ </ul></li>
+ <li><a id="toc-Lines-and-Shapes-1" href="Lines-and-Shapes.html#Lines-and-Shapes">2.3.5 Lines and Shapes</a></li>
+ <li><a id="toc-Fonts-1" href="Fonts.html#Fonts">2.3.6 Fonts</a></li>
+ <li><a id="toc-Particles-1" href="Particles.html#Particles">2.3.7 Particles</a></li>
+ <li><a id="toc-3D-Models-1" href="3D-Models.html#g_t3D-Models">2.3.8 3D Models</a></li>
+ <li><a id="toc-Blending-1" href="Blending.html#Blending">2.3.9 Blending</a></li>
+ <li><a id="toc-Framebuffers-1" href="Framebuffers.html#Framebuffers">2.3.10 Framebuffers</a></li>
+ <li><a id="toc-Viewports-1" href="Viewports.html#Viewports">2.3.11 Viewports</a></li>
+ <li><a id="toc-Rendering-Engine-1" href="Rendering-Engine.html#Rendering-Engine">2.3.12 Rendering Engine</a></li>
+ <li><a id="toc-Buffers-1" href="Buffers.html#Buffers">2.3.13 Buffers</a></li>
+ <li><a id="toc-Shaders-1" href="Shaders.html#Shaders">2.3.14 Shaders</a>
+ <ul class="no-bullet">
+ <li><a id="toc-Attributes" href="Shaders.html#Attributes">2.3.14.1 Attributes</a></li>
+ <li><a id="toc-Uniforms" href="Shaders.html#Uniforms">2.3.14.2 Uniforms</a></li>
+ <li><a id="toc-User_002dDefined-Shader-Types" href="Shaders.html#User_002dDefined-Shader-Types">2.3.14.3 User-Defined Shader Types</a></li>
</ul></li>
- <li><a name="toc-Lines-and-Shapes-1" href="Lines-and-Shapes.html#Lines-and-Shapes">2.3.4 Lines and Shapes</a></li>
- <li><a name="toc-Fonts-1" href="Fonts.html#Fonts">2.3.5 Fonts</a></li>
- <li><a name="toc-Particles-1" href="Particles.html#Particles">2.3.6 Particles</a></li>
- <li><a name="toc-Blending-1" href="Blending.html#Blending">2.3.7 Blending</a></li>
- <li><a name="toc-Framebuffers-1" href="Framebuffers.html#Framebuffers">2.3.8 Framebuffers</a></li>
- <li><a name="toc-Viewports-1" href="Viewports.html#Viewports">2.3.9 Viewports</a></li>
- <li><a name="toc-Rendering-Engine-1" href="Rendering-Engine.html#Rendering-Engine">2.3.10 Rendering Engine</a></li>
- <li><a name="toc-Buffers-1" href="Buffers.html#Buffers">2.3.11 Buffers</a></li>
- <li><a name="toc-Shaders-1" href="Shaders.html#Shaders">2.3.12 Shaders</a></li>
</ul></li>
- <li><a name="toc-Scripting-1" href="Scripting.html#Scripting">2.4 Scripting</a>
+ <li><a id="toc-Audio-1" href="Audio.html#Audio">2.4 Audio</a>
<ul class="no-bullet">
- <li><a name="toc-Agendas-1" href="Agendas.html#Agendas">2.4.1 Agendas</a></li>
- <li><a name="toc-Scripts-1" href="Scripts.html#Scripts">2.4.2 Scripts</a></li>
- <li><a name="toc-Tweening-1" href="Tweening.html#Tweening">2.4.3 Tweening</a></li>
- <li><a name="toc-Channels-1" href="Channels.html#Channels">2.4.4 Channels</a></li>
+ <li><a id="toc-Audio-Files-1" href="Audio-Files.html#Audio-Files">2.4.1 Audio Files</a></li>
+ <li><a id="toc-Sources-1" href="Sources.html#Sources">2.4.2 Sources</a></li>
+ <li><a id="toc-The-Listener-1" href="The-Listener.html#The-Listener">2.4.3 The Listener</a></li>
+ <li><a id="toc-The-Environment-1" href="The-Environment.html#The-Environment">2.4.4 The Environment</a></li>
+ </ul></li>
+ <li><a id="toc-Scripting-1" href="Scripting.html#Scripting">2.5 Scripting</a>
+ <ul class="no-bullet">
+ <li><a id="toc-Agendas-1" href="Agendas.html#Agendas">2.5.1 Agendas</a></li>
+ <li><a id="toc-Scripts-1" href="Scripts.html#Scripts">2.5.2 Scripts</a></li>
+ <li><a id="toc-Tweening-1" href="Tweening.html#Tweening">2.5.3 Tweening</a></li>
+ <li><a id="toc-Channels-1" href="Channels.html#Channels">2.5.4 Channels</a></li>
</ul></li>
</ul></li>
- <li><a name="toc-Copying-This-Manual-1" href="Copying-This-Manual.html#Copying-This-Manual">Appendix A Copying This Manual</a>
+ <li><a id="toc-Copying-This-Manual-1" href="Copying-This-Manual.html#Copying-This-Manual">Appendix A Copying This Manual</a>
<ul class="no-bullet">
- <li><a name="toc-GNU-Free-Documentation-License-1" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">A.1 GNU Free Documentation License</a></li>
+ <li><a id="toc-GNU-Free-Documentation-License-1" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">A.1 GNU Free Documentation License</a></li>
</ul></li>
- <li><a name="toc-Index-1" href="Index.html#Index">Index</a></li>
+ <li><a id="toc-Index-1" href="Index.html#Index">Index</a></li>
</ul>
</div>
-<a name="Top"></a>
-<div class="header">
+<span id="Top"></span><div class="header">
<p>
Next: <a href="Installation.html#Installation" accesskey="n" rel="next">Installation</a>, Up: <a href="../dir/index.html" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
-<a name="Chickadee"></a>
-<h1 class="top">Chickadee</h1>
+<span id="Chickadee"></span><h1 class="top">Chickadee</h1>
-<p>Copyright &copy; 2017, 2018, 2019 David Thompson <a href="mailto:davet@gnu.org">davet@gnu.org</a>
+<p>Copyright &copy; 2017-2020 David Thompson <a href="mailto:davet@gnu.org">davet@gnu.org</a>
</p>
<blockquote>
<p>Permission is granted to copy, distribute and/or modify this document
@@ -197,17 +206,16 @@ Foundation Web site at <a href="http://www.gnu.org/licenses/fdl.html">http://www
<a href="http://www.texinfo.org/">GNU Texinfo</a>.
</p>
-
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="Installation.html#Installation" accesskey="1">Installation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Installing Chickadee.
+<tr><td align="left" valign="top">&bull; <a href="Installation.html#Installation" accesskey="1">Installation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Installing Chickadee.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="API-Reference.html#API-Reference" accesskey="2">API Reference</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Chickadee API reference.
+<tr><td align="left" valign="top">&bull; <a href="API-Reference.html#API-Reference" accesskey="2">API Reference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Chickadee API reference.
</td></tr>
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="3">Copying This Manual</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The GNU Free Documentation License and you!
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Copying-This-Manual.html#Copying-This-Manual" accesskey="3">Copying This Manual</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The GNU Free Documentation License and you!
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="Index.html#Index" accesskey="4">Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+<tr><td align="left" valign="top">&bull; <a href="Index.html#Index" accesskey="4">Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
</td></tr>
</table>
diff --git a/posts/2020-04-08-chickadee-0.5.0-released.md b/posts/2020-04-08-chickadee-0.5.0-released.md
new file mode 100644
index 0000000..c138155
--- /dev/null
+++ b/posts/2020-04-08-chickadee-0.5.0-released.md
@@ -0,0 +1,61 @@
+title: Chickadee 0.5.0 released
+date: 2020-04-07 18:00:00
+tags: guile gamedev chickadee
+summary: Chickadee 0.5.0 has been released
+---
+
+I'm happy to announce that Chickadee 0.5.0 has been released!
+
+Chickadee is a game development toolkit for Guile that is built on top
+of SDL2 and OpenGL. Chickadee aims to provide all the features that
+parenthetically inclined game developers need to make 2D and 3D games
+in Scheme.
+
+New features and improvements:
+
+* New OpenAL-based audio API (see
+ [Audio](/manuals/chickadee/Audio.html) in the manual)
+* New API for user-defined shader data types (see
+ [Shaders](/manuals/chickadee/Shaders.html#User_002dDefined-Shader-Types)
+ in the manual)
+* New, very experimental 3D model loading support for OBJ and glTF
+ formats (see [3D Models](/manuals/chickadee/3D-Models.html) in the
+ manual)
+* New 3D vector math procedures such as cross product (see
+ [Vectors](/manuals/chickadee/Vectors.html) in the manual)
+* Improvements to internal GPU state management
+* New `string->color` procedure in the `(chickadee render color)`
+ module
+* New `controller-button-pressed?` procedure in the `(chickadee)`
+ module
+* New `degrees->radians` and `radians->degrees` procedures in
+ `(chickadee math)` module
+* Support for transparent color keying when loading textures
+* Tiled map renderer now respects transparent colors for tileset
+ images
+* New window manipulation procedures (see [Window
+ Manipulation](/manuals/chickadee/Window-Manipulation.html) in the
+ manual)
+* New [Colors](/manuals/chickadee/Colors.html) section in the manual
+* New [Input Devices](/manuals/chickadee/Input-Devices.html) section
+ in the manual
+
+Bug fixes:
+* Fixed misuse of streaming vertex buffer in particle system renderer
+* Fixed screen not being cleared on frames where nothing is rendered
+* Fixed missing bounds check in `array-list-ref` procedure
+
+source tarball: <https://files.dthompson.us/chickadee/chickadee-0.5.0.tar.gz>
+
+signature: <https://files.dthompson.us/chickadee/chickadee-0.5.0.tar.gz.asc>
+
+See the [Chickadee project page](/projects/chickadee.html) for more
+information.
+
+Also, check out the [Spring Lisp Game
+Jam](https://itch.io/jam/spring-lisp-game-jam-2020) that starts on
+Friday, April 10th!
+
+Bug reports, bug fixes, feature requests, and patches are welcomed.
+
+Have fun!