[renpy] 01/04: New upstream version 6.99.12.2+dfsg

Markus Koschany apo at moszumanska.debian.org
Wed Jan 4 21:57:03 UTC 2017


This is an automated email from the git hooks/post-receive script.

apo pushed a commit to branch master
in repository renpy.

commit 1dae96a8687625f9c75dbba7eb3da3b39b561174
Author: Markus Koschany <apo at debian.org>
Date:   Wed Jan 4 22:40:49 2017 +0100

    New upstream version 6.99.12.2+dfsg
---
 doc/changelog.html                |    6 +-
 doc/dialogue.html                 |   17 +-
 doc/genindex.html                 |    4 +
 doc/gui.html                      |   52 +-
 doc/history.html                  |    2 +-
 doc/iap.html                      |    6 +-
 doc/keymap.html                   |    3 +
 doc/movie.html                    |    5 +-
 doc/objects.inv                   |  Bin 10760 -> 10765 bytes
 doc/py-function-class-index.html  |    5 +
 doc/reserved.html                 |    1 +
 doc/save_load_rollback.html       |    6 +-
 doc/screen_actions.html           |    6 +
 doc/screen_optimization.html      |    1 +
 doc/searchindex.js                |    2 +-
 doc/std-var-index.html            |   10 +-
 doc/style_properties.html         |    2 +-
 doc/translating_renpy.html        |   15 +-
 launcher/game/testcases.rpy       |  103 +-
 launcher/game/updater.rpy         |    2 +-
 module/gen/renpy.display.render.c | 3133 +++++++++++++++++++------------------
 renpy/__init__.py                 |    2 +-
 renpy/common/00style.rpy          |    1 -
 renpy/common/_errorhandling.rpym  |    1 -
 renpy/config.py                   |    3 +
 renpy/display/render.pyx          |    4 +
 renpy/error.py                    |    5 +-
 renpy/execution.py                |    3 +
 renpy/test/testast.py             |   32 +-
 renpy/test/testparser.py          |    9 +
 renpy/vc_version.py               |    2 +-
 31 files changed, 1855 insertions(+), 1588 deletions(-)

diff --git a/doc/changelog.html b/doc/changelog.html
index 0afd977..ce22988 100644
--- a/doc/changelog.html
+++ b/doc/changelog.html
@@ -503,6 +503,10 @@ once.</p>
 when the event would change the viewport. The motivating use of this is a
 history window that dismisses when it reaches the bottom.</p>
 <p>Namespaces may now contain dots in their names.</p>
+<p>The new <a class="reference internal" href="screen_actions.html#QueueEvent" title="QueueEvent"><code class="xref py py-func docutils literal"><span class="pre">QueueEvent()</span></code></a> action queues a key binding event when activated.
+This can be used to activate many bindings, including the new
+'dismiss_unfocused' binding, which dismisses the current dialogue even
+if it is not focused.</p>
 </div>
 </div>
 <div class="section" id="ren-py-6-99-11">
@@ -578,7 +582,7 @@ Where previously, one was required to write:</p>
 </div>
 <p>one can now write:</p>
 <div class="highlight-renpy"><div class="highlight"><pre><span></span><span class="k">style</span> <span class="k">button</span><span class="p">:</span>
-    <span class="na">background</span> <span class="s2">"[prefix\_]button.png"</span>
+    <span class="na">background</span> <span class="s2">"[prefix_]button.png"</span>
 </pre></div>
 </div>
 <p>This searches through prefixes in a manner similar to the way styles do.
diff --git a/doc/dialogue.html b/doc/dialogue.html
index e162fd2..39e3db3 100644
--- a/doc/dialogue.html
+++ b/doc/dialogue.html
@@ -393,20 +393,11 @@ allow you to select that screen, and to provide arguments to it.</p>
 </dl>
 <p>Keyword arguments beginning with <code class="docutils literal"><span class="pre">show_</span></code> have the prefix
 stripped off, and are passed to the screen as arguments. For
-example, the value of <code class="docutils literal"><span class="pre">show_side_image</span></code> will become the
-value of the <code class="docutils literal"><span class="pre">side_image</span></code> variable in the screen.</p>
-<p>Some useful <code class="docutils literal"><span class="pre">show_</span></code> variables implemented by the default screens are:</p>
+example, the value of <code class="docutils literal"><span class="pre">show_myflag</span></code> will become the value of
+the <code class="docutils literal"><span class="pre">myflag</span></code> variable in the screen. (The myflag variable isn't
+used by default, but can be used by a custom say screen.)</p>
+<p>One show variable is, for historical reasons, handled by Ren'Py itself:</p>
 <dl class="docutils">
-<dt><cite>show_side_image</cite></dt>
-<dd>When given a Displayable, shows that displayable when the
-dialogue is shown. The position of that displayable is
-controlled by its position properties. This is often used
-to show an image of the speaking character to the side
-of the dialogue.</dd>
-<dt><cite>show_two_window</cite></dt>
-<dd>If true, restructures the layout so that the name of the
-character is placed in one window, and the dialogue text in a
-second window.</dd>
 <dt><cite>show_layer</cite></dt>
 <dd>If given, this should be a string giving the name of the layer
 to show the "say" screen on.</dd>
diff --git a/doc/genindex.html b/doc/genindex.html
index f881eb3..8514e56 100644
--- a/doc/genindex.html
+++ b/doc/genindex.html
@@ -3084,6 +3084,10 @@
   </dt>
 
       
+  <dt><a href="screen_actions.html#QueueEvent">QueueEvent() (built-in function)</a>
+  </dt>
+
+      
   <dt><a href="screen_actions.html#QuickLoad">QuickLoad() (built-in function)</a>
   </dt>
 
diff --git a/doc/gui.html b/doc/gui.html
index 67a1699..0159900 100644
--- a/doc/gui.html
+++ b/doc/gui.html
@@ -249,12 +249,12 @@ save space. To view the full version, please visit
 can be customized somewhat, and can be replaced entirely if necessary. This
 page explains how to do simple and intermediate levels of GUI customization.</p>
 <p>For more advanced customization, please take a look at the documentation for
-<a class="reference internal" href="style.html#styles"><span class="std std-ref">styles</span></a> (including the list of <a class="reference internal" href="style_properties.html#style-properties"><span class="std std-ref">style properties</span></a>
-and <a class="reference internal" href="screens.html#screens"><span class="std std-ref">screens</span></a> (including
-<a class="reference internal" href="screen_actions.html#screen-actions"><span class="std std-ref">screen actions</span></a> and <a class="reference internal" href="screen_special.html#screen-special"><span class="std std-ref">special screens</span></a>).</p>
+<a class="reference internal" href="style.html#styles"><span class="std std-ref">styles</span></a> (including the list of <a class="reference internal" href="style_properties.html#style-properties"><span class="std std-ref">style properties</span></a>)
+and <a class="reference internal" href="screens.html#screens"><span class="std std-ref">screens</span></a> (including <a class="reference internal" href="screen_actions.html#screen-actions"><span class="std std-ref">screen actions</span></a>
+and <a class="reference internal" href="screen_special.html#screen-special"><span class="std std-ref">special screens</span></a>).</p>
 <p>This assumes that you're using a new-style Ren'Py GUI (contained in the gui.rpy
 file). Older GUIs (that use the screens.rpy file) should be treated as advanced
-gui customization for the purposes of this guide.</p>
+GUI customization for the purposes of this guide.</p>
 <div class="section" id="simple-gui-customization">
 <h2>Simple GUI Customization<a class="headerlink" href="#simple-gui-customization" title="Permalink to this headline"> link</a></h2>
 <p>There are a few simple pieces of GUI customization that make sense for
@@ -280,7 +280,7 @@ the GUI to match your choices.</p>
 <div class="section" id="options-rpy">
 <h3>Options.rpy<a class="headerlink" href="#options-rpy" title="Permalink to this headline"> link</a></h3>
 <p>There are a couple of variables in options.rpy that are used by the
-gui code.</p>
+GUI code.</p>
 <dl class="docutils">
 <dt><a class="reference internal" href="config.html#var-config.name"><code class="xref std std-var docutils literal"><span class="pre">config.name</span></code></a></dt>
 <dd>A string giving a human-readable name for the game. This is used as the
@@ -360,7 +360,7 @@ to increase the dialogue font size, find the line that reads:</p>
 <p>Note that the default values are often different than what's found in
 this documentation. The default values can changed based on size and
 colors selected for the game, and the values in this file are an example
-of extensive gui customization. It's best to search gui.rpy for define and
+of extensive GUI customization. It's best to search gui.rpy for define and
 the variable in question - for example, "define gui.font_size".</p>
 <p>Some of the adjustments below either partially or completely effect image
 files. As a result, the changes only take effect when the image files
@@ -370,7 +370,7 @@ doing so will overwrite any image files you have already modified.)</p>
 <p>You may want to consider waiting until your game is nearly complete before
 customizing gui.rpy in this way. While old gui.rpys will work in newer
 Ren'Py versions, newer gui.rpys may have features and fixes that older
-versions lack. Customizing the gui early may make it harder to take
+versions lack. Customizing the GUI early may make it harder to take
 advantage of such improvements.</p>
 <div class="section" id="dialogue">
 <h3>Dialogue<a class="headerlink" href="#dialogue" title="Permalink to this headline"> link</a></h3>
@@ -403,7 +403,7 @@ other in-game text. The font file should exist in the game directory.</p>
 <dt id="var-gui.text_size">
 define <code class="descname">gui.text_size</code> = 33<a class="headerlink" href="#var-gui.text_size" title="Permalink to this definition"> link</a></dt>
 <dd><p>Sets the size of the dialogue text. This may need to be increased or
-decreased to fit the selected font in the space alloted.</p>
+decreased to fit the selected font in the space allotted.</p>
 </dd></dl>
 
 <dl class="var">
@@ -468,13 +468,13 @@ screen in question, and is used even when at the main menu.</dd>
 </div>
 <div class="section" id="colors-fonts-and-font-sizes">
 <h3>Colors, Fonts, and Font Sizes<a class="headerlink" href="#colors-fonts-and-font-sizes" title="Permalink to this headline"> link</a></h3>
-<p>There are a number of gui variables that can be used to change the color, font,
+<p>There are a number of GUI variables that can be used to change the color, font,
 and size of text.</p>
-<p>These variables should generally be set to hexadecimal color
-codes, which are strings of the form "#rrggbb", similar to color codes
-used by web browsers. For example, "#663399" is the code for a shade of
-<a href="http://www.economist.com/blogs/babbage/2014/06/digital-remembrance" style="text-decoration: none; color: rebeccapurple">purple</a>.
-There are many tools online that let you create html color codes, such as
+<p>These variables should generally be set to hexadecimal color codes, which are
+are strings of the form "#rrggbb" (or "#rrggbbaa" to specify an alpha component),
+similar to color codes used by web browsers. For example, "#663399" is the code
+for a shade of <a href="http://www.economist.com/blogs/babbage/2014/06/digital-remembrance" style="text-decoration: none; color: rebeccapurple">purple</a>.
+There are many tools online that let you create HTML color codes, such as
 <a href="http://htmlcolorcodes.com/color-picker/">this one</a>.</p><p>In addition to <a class="reference internal" href="#var-gui.text_color"><code class="xref std std-var docutils literal"><span class="pre">gui.text_color</span></code></a>, <code class="xref std std-var docutils literal"><span class="pre">gui.choice_idle_color</span></code>, and <code class="xref std std-var docutils literal"><span class="pre">gui.choice_hover_color</span></code>,
 documented above, the following variables exist:</p>
 <dl class="var">
@@ -502,7 +502,7 @@ of the font.</p>
 <dl class="var">
 <dt id="var-gui.hover_color">
 define <code class="descname">gui.hover_color</code> = '#3284d6'<a class="headerlink" href="#var-gui.hover_color" title="Permalink to this definition"> link</a></dt>
-<dd><p>The color used by focused items in the gui, including the text of
+<dd><p>The color used by focused items in the GUI, including the text of
 of buttons and the thumbs (movable areas) of sliders and scrollbars.</p>
 </dd></dl>
 
@@ -589,7 +589,7 @@ define <code class="descname">gui.title_text_size</code> = 75<a class="headerlin
 <div class="section" id="borders">
 <h3>Borders<a class="headerlink" href="#borders" title="Permalink to this headline"> link</a></h3>
 <p>There are a number of GUI components - such as buttons and bars - that use
-scalable backgrounds confgured using Border objects. Before discussing,
+scalable backgrounds configured using Border objects. Before discussing,
 how to customize buttons and bars, we'll first describe how this works.</p>
 <p>Borders are given to the <a class="reference internal" href="displayables.html#Frame" title="Frame"><code class="xref py py-func docutils literal"><span class="pre">Frame()</span></code></a> displayable.
 A Frame takes an image, and divides it into nine parts - the four corners,
@@ -855,14 +855,14 @@ define <code class="descname">gui.file_slot_rows</code> = 2<a class="headerlink"
 <dt>gui/button/slot_idle_background.png</dt>
 <dd>The image used for the background of save slots that are not focused.</dd>
 <dt>gui/button/slot_hover_background.png</dt>
-<dd>The image used for the background of save slots that arefocused.</dd>
+<dd>The image used for the background of save slots that are focused.</dd>
 </dl>
 </div>
 <div class="section" id="sliders">
 <h3>Sliders<a class="headerlink" href="#sliders" title="Permalink to this headline"> link</a></h3>
 <p>Sliders are a type of bar that is used in the preferences screen to
 allow the player to adjust preference with a large number of values.
-By default, the gui only uses horizontal sliders, but in-game code
+By default, the GUI only uses horizontal sliders, but in-game code
 may also use vertical sliders.</p>
 <p>Sliders are customized with the following images:</p>
 <dl class="docutils">
@@ -900,7 +900,7 @@ define <code class="descname">gui.vslider_borders</code> = Borders(6, 6, 6, 6)<a
 </div>
 <div class="section" id="scrollbars">
 <h3>Scrollbars<a class="headerlink" href="#scrollbars" title="Permalink to this headline"> link</a></h3>
-<p>Scrollbars are bars that are used to scroll viewports. In the gui,
+<p>Scrollbars are bars that are used to scroll viewports. In the GUI,
 the most obvious place a scrollbar is used is the history screen,
 but vertical scrollbars can be used on other screens as well.</p>
 <p>Sliders are customized with the following images:</p>
@@ -947,7 +947,7 @@ the bar, while None keeps it shown.</p>
 <div class="section" id="bars">
 <h3>Bars<a class="headerlink" href="#bars" title="Permalink to this headline"> link</a></h3>
 <p>Plain old bars are used to display a number to the player. They're not
-used in the gui, but can be used in creator-defined screens.</p>
+used in the GUI, but can be used in creator-defined screens.</p>
 <p>A bar can customized by editing the following images:</p>
 <dl class="docutils">
 <dt>gui/bar/left.png, gui/bar/bottom.png</dt>
@@ -1032,7 +1032,7 @@ is displayed.</p>
 <div class="section" id="name-and-namebox">
 <h4>Name and Namebox<a class="headerlink" href="#name-and-namebox" title="Permalink to this headline"> link</a></h4>
 <p>The character's name is placed inside a frame that uses gui/namebox.png as
-it's background. In addition, there are a number of variables that control
+its background. In addition, there are a number of variables that control
 the presentation of the name. The namebox is only show if the speaking character
 has a name (an empty name, like " ", counts).</p>
 <dl class="var">
@@ -1212,7 +1212,7 @@ can be customized. The first is to customize the NVL-mode background image:</p>
 the game window.</dd>
 </dl>
 <p>There are also a number of variables that are used to customize the way
-nvl-mode text is displayed.</p>
+NVL-mode text is displayed.</p>
 <dl class="var">
 <dt id="var-gui.nvl_borders">
 define <code class="descname">gui.nvl_borders</code> = Borders(0, 15, 0, 30)<a class="headerlink" href="#var-gui.nvl_borders" title="Permalink to this definition"> link</a></dt>
@@ -1233,7 +1233,7 @@ variable size.</p>
 <dl class="var">
 <dt id="var-gui.nvl_spacing">
 define <code class="descname">gui.nvl_spacing</code> = 15<a class="headerlink" href="#var-gui.nvl_spacing" title="Permalink to this definition"> link</a></dt>
-<dd><p>The spacing beween entries when gui.nvl_height is None, and the spacing
+<dd><p>The spacing between entries when gui.nvl_height is None, and the spacing
 between NVL-mode menu buttons.</p>
 </dd></dl>
 
@@ -1330,7 +1330,7 @@ characters, and by defining a few variables in script.rpy.</p>
 <h3>Translation and GUI Variables<a class="headerlink" href="#translation-and-gui-variables" title="Permalink to this headline"> link</a></h3>
 <p>The gui namespace is special, in that it is saved after the init phase,
 but before any translate python blocks are run. This makes it possible to
-change any gui variable in a translate python block to accomodate a second
+change any GUI variable in a translate python block to accommodate a second
 language. For example, the following code change the default text font
 and size.</p>
 <blockquote>
@@ -1373,7 +1373,7 @@ are displayed. To find out what style a displayable is using, put the mouse
 over it and type shift+I. This invokes the style inspector, which shows
 style names. Once the style name is known, a style statement can be used
 to customize it.</p>
-<p>For example, say we've lost our minds writing gui documentation, and want to
+<p>For example, say we've lost our minds writing GUI documentation, and want to
 add a bright red outline to the dialogue text. We can hover the text and press
 shift+I to find out the style used is named say_dialogue. We can then
 add (to the end of screens.rpy, or somewhere in options.rpy) the style statement:</p>
@@ -1506,7 +1506,7 @@ players can have access to all the functionality Ren'Py provides.</p>
 </div>
 <div class="section" id="python-functions">
 <h2>Python Functions<a class="headerlink" href="#python-functions" title="Permalink to this headline"> link</a></h2>
-<p>There are some Python functions that support gui code.</p>
+<p>There are some Python functions that support GUI code.</p>
 <dl class="function">
 <dt id="gui.button_properties">
 <code class="descclassname">gui.</code><code class="descname">button_properties</code><span class="sig-paren">(</span><em>kind</em><span class="sig-paren">)</span><a class="headerlink" href="#gui.button_properties" title="Permalink to this definition"> link</a></dt>
diff --git a/doc/history.html b/doc/history.html
index 4d16b86..f5fccf8 100644
--- a/doc/history.html
+++ b/doc/history.html
@@ -201,7 +201,7 @@
 after it has been shown to the player. This stored dialogue can then be
 retrieved and re-shown to the player.</p>
 <p>The dialogue history system is controlled by two variables.
-The <a class="reference internal" href="config.html#var-config.history_length"><code class="xref std std-var docutils literal"><span class="pre">config.history_length</span></code></a> variable controls the maximum number
+The <a class="reference internal" href="gui.html#var-config.history_length"><code class="xref std std-var docutils literal"><span class="pre">config.history_length</span></code></a> variable controls the maximum number
 of history entries that are stored, and must be set to enable history
 at all. The <a class="reference internal" href="store_variables.html#var-_history"><code class="xref std std-var docutils literal"><span class="pre">_history</span></code></a> variable can be used to disable and re-enable
 history storage.</p>
diff --git a/doc/iap.html b/doc/iap.html
index f2568ce..d658fd1 100644
--- a/doc/iap.html
+++ b/doc/iap.html
@@ -225,7 +225,7 @@ Ren'Py will ask for the marketplace in use when configuring the package.</p>
 special configuration.</dd>
 <dt>Google Play</dt>
 <dd>Before Google Play can be used, you must add the google play key and
-a salt to your project. See the <a class="reference internal" href="android-packaging.html#expansion-apk"><span class="std std-ref">Expansion APK</span></a>
+a salt to your project. See the <a class="reference internal" href="android.html#expansion-apk"><span class="std std-ref">Expansion APK</span></a>
 section for information on how to do this.</dd>
 <dt>Amazon App Store</dt>
 <dd>The Amazon app store is based on the package name, and does not
@@ -245,8 +245,8 @@ which indicates the product cannot be purchased.</p>
 <dt id="iap.get_store_name">
 <code class="descclassname">iap.</code><code class="descname">get_store_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#iap.get_store_name" title="Permalink to this definition"> link</a></dt>
 <dd><p>Returns the name of the enabled store for in-app purchase. This
-currently returns one of "amazon", "google", "ios" or None if no store
-is available.</p>
+currently returns one of "amazon", "play" (for Google Play), "ios"
+or None if no store is available.</p>
 </dd></dl>
 
 <dl class="function">
diff --git a/doc/keymap.html b/doc/keymap.html
index c24e03f..1091434 100644
--- a/doc/keymap.html
+++ b/doc/keymap.html
@@ -383,6 +383,9 @@ gamepad bindings is given below:</p>
 <span class="p">}</span>
 </pre></div>
 </div>
+<p>Gamepad buttons have an event name of the form "pad_*button*_press" or
+"pad_*button*_release". Analog axis events have the form "pad_*axis*_pos",
+"pad_*axis*_neg", or "pad_*axis*_zero".</p>
 </div>
 
 
diff --git a/doc/movie.html b/doc/movie.html
index cbba75b..ca1f418 100644
--- a/doc/movie.html
+++ b/doc/movie.html
@@ -344,8 +344,9 @@ of the playing movie. (If None, the displayable will be (0, 0)
 when the movie is not playing.)</dd>
 <dt><cite>channel</cite></dt>
 <dd>The audio channel associated with this movie. When a movie file
-is played on that channel, it wil be displayed in this Movie
-displayable.</dd>
+is played on that channel, it will be displayed in this Movie
+displayable. If this is not given, and the <cite>play</cite> is provided,
+a channel name is automatically selected.</dd>
 <dt><cite>play</cite></dt>
 <dd>If given, this should be the path to a movie file. The movie
 file will be automatically played on <cite>channel</cite> when the Movie is
diff --git a/doc/objects.inv b/doc/objects.inv
index 4933992..b7db5d7 100644
Binary files a/doc/objects.inv and b/doc/objects.inv differ
diff --git a/doc/py-function-class-index.html b/doc/py-function-class-index.html
index 49ea300..198db0c 100644
--- a/doc/py-function-class-index.html
+++ b/doc/py-function-class-index.html
@@ -1026,6 +1026,11 @@
      <tr>
        <td></td>
        <td>
+       <a href="screen_actions.html#QueueEvent"><code class="xref">QueueEvent</code></a></td><td>
+       <em></em></td></tr>
+     <tr>
+       <td></td>
+       <td>
        <a href="screen_actions.html#QuickLoad"><code class="xref">QuickLoad</code></a></td><td>
        <em></em></td></tr>
      <tr>
diff --git a/doc/reserved.html b/doc/reserved.html
index 6bc8028..ca9137e 100644
--- a/doc/reserved.html
+++ b/doc/reserved.html
@@ -454,6 +454,7 @@ so can cause obscure problems.</p>
 <li><a class="reference internal" href="screen_actions.html#Preference" title="Preference"><code class="xref py py-func docutils literal"><span class="pre">Preference()</span></code></a></li>
 <li><a class="reference internal" href="transitions.html#PushMove" title="PushMove"><code class="xref py py-func docutils literal"><span class="pre">PushMove()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#Queue" title="Queue"><code class="xref py py-func docutils literal"><span class="pre">Queue()</span></code></a></li>
+<li><a class="reference internal" href="screen_actions.html#QueueEvent" title="QueueEvent"><code class="xref py py-func docutils literal"><span class="pre">QueueEvent()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#QuickLoad" title="QuickLoad"><code class="xref py py-func docutils literal"><span class="pre">QuickLoad()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#QuickSave" title="QuickSave"><code class="xref py py-func docutils literal"><span class="pre">QuickSave()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#Quit" title="Quit"><code class="xref py py-func docutils literal"><span class="pre">Quit()</span></code></a></li>
diff --git a/doc/save_load_rollback.html b/doc/save_load_rollback.html
index 1f0385e..e732fcb 100644
--- a/doc/save_load_rollback.html
+++ b/doc/save_load_rollback.html
@@ -572,7 +572,7 @@ the last time this statement executed. Outside of rollback, returns None.</p>
 
 <dl class="function">
 <dt id="renpy.rollback">
-<code class="descclassname">renpy.</code><code class="descname">rollback</code><span class="sig-paren">(</span><em>force=False</em>, <em>checkpoints=1</em>, <em>defer=False</em>, <em>greedy=True</em>, <em>label=None</em><span class="sig-paren">)</span><a class="headerlink" href="#renpy.rollback" title="Permalink to this definition"> link</a></dt>
+<code class="descclassname">renpy.</code><code class="descname">rollback</code><span class="sig-paren">(</span><em>force=False</em>, <em>checkpoints=1</em>, <em>defer=False</em>, <em>greedy=True</em>, <em>label=None</em>, <em>abnormal=True</em><span class="sig-paren">)</span><a class="headerlink" href="#renpy.rollback" title="Permalink to this definition"> link</a></dt>
 <dd><p>Rolls the state of the game back to the last checkpoint.</p>
 <dl class="docutils">
 <dt><cite>force</cite></dt>
@@ -590,6 +590,10 @@ executed.</dd>
 If false, rollback finish just before the current checkpoint.</dd>
 <dt><cite>label</cite></dt>
 <dd>If not None, a label that is called when rollback completes.</dd>
+<dt><cite>abnormal</cite></dt>
+<dd>If true, the default, the code executed after the transition is run in
+an abnormal mode that skips transitions that would have otherwise
+occured.</dd>
 </dl>
 </dd></dl>
 
diff --git a/doc/screen_actions.html b/doc/screen_actions.html
index 8452fe8..ae1941d 100644
--- a/doc/screen_actions.html
+++ b/doc/screen_actions.html
@@ -833,6 +833,12 @@ this time, the mouse may be unresponsive.</dd>
 </dd></dl>
 
 <dl class="function">
+<dt id="QueueEvent">
+<code class="descname">QueueEvent</code><span class="sig-paren">(</span><em>event</em>, <em>up=False</em><span class="sig-paren">)</span><a class="headerlink" href="#QueueEvent" title="Permalink to this definition"> link</a></dt>
+<dd><p>Queues the given event using <a class="reference internal" href="other.html#renpy.queue_event" title="renpy.queue_event"><code class="xref py py-func docutils literal"><span class="pre">renpy.queue_event()</span></code></a>.</p>
+</dd></dl>
+
+<dl class="function">
 <dt id="RestartStatement">
 <code class="descname">RestartStatement</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#RestartStatement" title="Permalink to this definition"> link</a></dt>
 <dd><p>This action causes Ren'Py to rollback to before the current
diff --git a/doc/screen_optimization.html b/doc/screen_optimization.html
index 608e35b..5e611cb 100644
--- a/doc/screen_optimization.html
+++ b/doc/screen_optimization.html
@@ -598,6 +598,7 @@ directory.</p>
 <li><a class="reference internal" href="screen_actions.html#Preference" title="Preference"><code class="xref py py-func docutils literal"><span class="pre">Preference()</span></code></a></li>
 <li><a class="reference internal" href="transitions.html#PushMove" title="PushMove"><code class="xref py py-func docutils literal"><span class="pre">PushMove()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#Queue" title="Queue"><code class="xref py py-func docutils literal"><span class="pre">Queue()</span></code></a></li>
+<li><a class="reference internal" href="screen_actions.html#QueueEvent" title="QueueEvent"><code class="xref py py-func docutils literal"><span class="pre">QueueEvent()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#QuickLoad" title="QuickLoad"><code class="xref py py-func docutils literal"><span class="pre">QuickLoad()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#QuickSave" title="QuickSave"><code class="xref py py-func docutils literal"><span class="pre">QuickSave()</span></code></a></li>
 <li><a class="reference internal" href="screen_actions.html#Quit" title="Quit"><code class="xref py py-func docutils literal"><span class="pre">Quit()</span></code></a></li>
diff --git a/doc/searchindex.js b/doc/searchindex.js
index 6c7f2e5..e21f803 100644
--- a/doc/searchindex.js
+++ b/doc/searchindex.js
@@ -1 +1 @@
-Search.setIndex({envversion:47,filenames:["achievement","android","android-packaging","atl","audio","build","cds","changelog","character_callbacks","chromeos","color_class","conditional","config","credits","custom_text_tags","developer_tools","dialogue","display_problems","displayables","displaying_images","distributor","drag_drop","editor","environment_variables","file_python","gesture","gui","history","iap","incompatible","index","input","ios","keymap","label","language_basics","licens [...]
\ No newline at end of file
+Search.setIndex({envversion:47,filenames:["achievement","android","android-packaging","atl","audio","build","cds","changelog","character_callbacks","chromeos","color_class","conditional","config","credits","custom_text_tags","developer_tools","dialogue","display_problems","displayables","displaying_images","distributor","drag_drop","editor","environment_variables","file_python","gesture","gui","history","iap","incompatible","index","input","ios","keymap","label","language_basics","licens [...]
\ No newline at end of file
diff --git a/doc/std-var-index.html b/doc/std-var-index.html
index a286a3c..4768162 100644
--- a/doc/std-var-index.html
+++ b/doc/std-var-index.html
@@ -265,12 +265,12 @@
      <tr>
        <td></td>
        <td>
-       <a href="android-packaging.html#var-build.google_play_key"><code class="xref">build.google_play_key</code></a></td><td>
+       <a href="android.html#var-build.google_play_key"><code class="xref">build.google_play_key</code></a></td><td>
        <em></em></td></tr>
      <tr>
        <td></td>
        <td>
-       <a href="android-packaging.html#var-build.google_play_salt"><code class="xref">build.google_play_salt</code></a></td><td>
+       <a href="android.html#var-build.google_play_salt"><code class="xref">build.google_play_salt</code></a></td><td>
        <em></em></td></tr>
      <tr>
        <td></td>
@@ -703,7 +703,7 @@
      <tr>
        <td></td>
        <td>
-       <a href="config.html#var-config.history_length"><code class="xref">config.history_length</code></a></td><td>
+       <a href="gui.html#var-config.history_length"><code class="xref">config.history_length</code></a></td><td>
        <em></em></td></tr>
      <tr>
        <td></td>
@@ -1208,12 +1208,12 @@
      <tr>
        <td></td>
        <td>
-       <a href="config.html#var-config.thumbnail_height"><code class="xref">config.thumbnail_height</code></a></td><td>
+       <a href="gui.html#var-config.thumbnail_height"><code class="xref">config.thumbnail_height</code></a></td><td>
        <em></em></td></tr>
      <tr>
        <td></td>
        <td>
-       <a href="config.html#var-config.thumbnail_width"><code class="xref">config.thumbnail_width</code></a></td><td>
+       <a href="gui.html#var-config.thumbnail_width"><code class="xref">config.thumbnail_width</code></a></td><td>
        <em></em></td></tr>
      <tr>
        <td></td>
diff --git a/doc/style_properties.html b/doc/style_properties.html
index 397931d..8d8c425 100644
--- a/doc/style_properties.html
+++ b/doc/style_properties.html
@@ -792,7 +792,7 @@ the difference in line lengths of all but the last line.</dd>
 the lengths of all lines.</dd>
 <dt><code class="docutils literal"><span class="pre">"greedy"</span></code></dt>
 <dd>A word is placed on the first line that has room for it.</dd>
-<dt><code class="docutils literal"><span class="pre">"nowrap"</span></code></dt>
+<dt><code class="docutils literal"><span class="pre">"nobreak"</span></code></dt>
 <dd>Do not line-break.</dd>
 </dl>
 </dd></dl>
diff --git a/doc/translating_renpy.html b/doc/translating_renpy.html
index b3a1a01..b5b146d 100644
--- a/doc/translating_renpy.html
+++ b/doc/translating_renpy.html
@@ -322,15 +322,13 @@ Ren'Py:</p>
 They should be called from the init python block.</p>
 <dl class="function">
 <dt id="translate_font">
-<code class="descname">translate_font</code><span class="sig-paren">(</span><em>language</em>, <em>font</em>, <em>prefix=None</em><span class="sig-paren">)</span><a class="headerlink" href="#translate_font" title="Permalink to this definition"> link</a></dt>
+<code class="descname">translate_font</code><span class="sig-paren">(</span><em>language</em>, <em>font</em><span class="sig-paren">)</span><a class="headerlink" href="#translate_font" title="Permalink to this definition"> link</a></dt>
 <dd><p>This is used to set a font for <cite>language</cite>. The font is used in the
-launcher, and also used to in games generated in that language.</p>
+launcher, and also used to in games generated in that language. The
+font file should be placed in game/fonts.</p>
 <dl class="docutils">
 <dt><cite>font</cite></dt>
 <dd>A string giving the name of the font file.</dd>
-<dt><cite>prefix</cite></dt>
-<dd>The path to the font file (not including the font itself), relative
-to the launcher game directory. If not given, tl/<cite>language</cite> is used.</dd>
 </dl>
 </dd></dl>
 
@@ -347,8 +345,11 @@ be used to change the size of a font.</p>
 <dt><cite>value</cite></dt>
 <dd>A string giving the value the define should be set to. (ie. "10",
 "False", or "'Font.ttf'").</dd>
-<dt><cite>help</cite></dt>
-<dd>If not None, help text that is placed before the define.</dd>
+<dt><cite>comment</cite></dt>
+<dd>If not None, a comment that will be generated before the define. The
+comment will only be generated if the define does not exist in
+gui.rpy. There is no need to use "## ", as the comment will be
+added and wrapped automatically.</dd>
 </dl>
 <p>For example, the following code changes the size of dialogue text:</p>
 <div class="highlight-renpy"><div class="highlight"><pre><span></span><span class="n">translate_define</span><span class="p">(</span><span class="s2">"martian"</span><span class="p">,</span> <span class="s2">"gui.text_size"</span><span class="p">,</span> <span class="mi">12</span><span class="p">)</span>
diff --git a/launcher/game/testcases.rpy b/launcher/game/testcases.rpy
index 26b6667..6024cce 100644
--- a/launcher/game/testcases.rpy
+++ b/launcher/game/testcases.rpy
@@ -2,7 +2,9 @@ init python:
     TEST_PROJECTS = u"/tmp/renpy-moé"
     import shutil
 
+
 testcase default:
+
     call new_project
     call translate_project
     call extract_dialogue
@@ -14,6 +16,7 @@ testcase default:
 
     "quit"
 
+
 testcase new_project:
     python:
         if os.path.exists(TEST_PROJECTS):
@@ -41,6 +44,7 @@ testcase new_project:
     # Color Selection
     "Continue"
 
+
 testcase choose_colors:
     "Change/Update GUI"
     "Choose new colors"
@@ -52,16 +56,7 @@ testcase choose_colors:
     "Continue"
 
 
-
-testcase translate_project:
-    "Generate Translations"
-
-    type BACKSPACE
-    type BACKSPACE
-    type BACKSPACE
-    type BACKSPACE
-    type BACKSPACE
-    type BACKSPACE
+testcase delete10:
     type BACKSPACE
     type BACKSPACE
     type BACKSPACE
@@ -73,6 +68,18 @@ testcase translate_project:
     type BACKSPACE
     type BACKSPACE
 
+
+testcase delete30:
+    call delete10
+    call delete10
+    call delete10
+
+
+testcase translate_project:
+    "Generate Translations"
+
+    call delete30
+
     type "piglatin"
 
     "Generate Translations"
@@ -89,10 +96,12 @@ testcase translate_project:
     "Generate Translations"
     "Update Default"
 
+
 testcase build_project:
     "Build Distributions"
     "Build"
 
+
 testcase extract_dialogue_common:
     "Extract Dialogue"
     "Strip text tags"
@@ -105,8 +114,80 @@ testcase extract_dialogue:
     "Continue"
     "Continue"
 
-
     call extract_dialogue_common
     "Text Only"
     "Continue"
     "Continue"
+
+
+testcase android:
+
+    $ _test.timeout = 60.0
+    $ _test.maximum_framerate = False
+
+    "Tutorial"
+    "Android"
+
+    # Download and install RAPT.
+    if "Yes":
+
+        "Yes"
+        "Proceed"
+
+    "Install SDK"
+    "Yes" until "Continue"
+
+    # We have to create the key.
+    if "Cancel":
+        type "Test Key"
+        "Continue"
+        "Continue"
+
+    # Configure the application.
+    "Configure"
+
+    $ _test.maximum_framerate = True
+
+    call delete30
+    type "Ren'Py Tutorial"
+    "Continue"
+
+    call delete30
+    type "Ren'Py Tutorial"
+    "Continue"
+
+    call delete30
+    type "org.renpy.tutorial"
+    "Continue"
+
+    call delete30
+    type "1.2.3"
+    "Continue"
+
+    call delete30
+    type "10203"
+    "Continue"
+
+    $ _test.maximum_framerate = False
+
+    "In landscape"
+    "Continue"
+
+    "Neither"
+    "Continue"
+
+    "No."
+    "Continue"
+
+    "Android 4.0"
+    "Continue"
+
+    # Access the internet.
+    "No"
+    "Continue"
+
+    # Build the package.
+    "Build Package"
+    "Continue"
+
+    "quit"
diff --git a/launcher/game/updater.rpy b/launcher/game/updater.rpy
index fb942cb..c9ec6c9 100644
--- a/launcher/game/updater.rpy
+++ b/launcher/game/updater.rpy
@@ -36,7 +36,7 @@ init python:
 
     version_tuple = renpy.version(tuple=True)
 
-    DLC_URL = "http://update.renpy.org/{0}.{1}.{2}/updates.json".format(version_tuple[0], version_tuple[1], version_tuple[2])
+    DLC_URL = "http://update.renpy.org/{}/updates.json".format(".".join(str(i) for i in version_tuple[:-1]))
 
     if persistent.update_channel not in UPDATE_URLS:
         persistent.update_channel = "Release"
diff --git a/module/gen/renpy.display.render.c b/module/gen/renpy.display.render.c
index 9505e4b..8eae6e6 100644
--- a/module/gen/renpy.display.render.c
+++ b/module/gen/renpy.display.render.c
@@ -11099,7 +11099,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  *                     newchild.width = cw
  *                     newchild.height = ch             # <<<<<<<<<<<<<<
  *                     newchild.render_of = child.render_of[:]
- *                 else:
+ *                 elif isinstance(child, Render):
  */
           if (__Pyx_PyObject_SetAttrStr(__pyx_v_newchild, __pyx_n_s_height, __pyx_v_ch) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
 
@@ -11107,7 +11107,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  *                     newchild.width = cw
  *                     newchild.height = ch
  *                     newchild.render_of = child.render_of[:]             # <<<<<<<<<<<<<<
- *                 else:
+ *                 elif isinstance(child, Render):
  *                     crop = (cx, cy, cw, ch)
  */
           __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_render_of); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
@@ -11128,14 +11128,24 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           goto __pyx_L39;
         }
 
-        /* "renpy/display/render.pyx":804
+        /* "renpy/display/render.pyx":803
+ *                     newchild.height = ch
  *                     newchild.render_of = child.render_of[:]
- *                 else:
+ *                 elif isinstance(child, Render):             # <<<<<<<<<<<<<<
+ *                     crop = (cx, cy, cw, ch)
+ *                     newchild = child.subsurface(crop, focus=focus)
+ */
+        __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_child, __pyx_ptype_5renpy_7display_6render_Render); 
+        __pyx_t_9 = (__pyx_t_7 != 0);
+        if (__pyx_t_9) {
+
+          /* "renpy/display/render.pyx":804
+ *                     newchild.render_of = child.render_of[:]
+ *                 elif isinstance(child, Render):
  *                     crop = (cx, cy, cw, ch)             # <<<<<<<<<<<<<<
- *                     newchild = child.subsurface(crop)
+ *                     newchild = child.subsurface(crop, focus=focus)
  *                     renpy.display.draw.mutated_surface(newchild)
  */
-        /*else*/ {
           __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_INCREF(__pyx_v_cx);
@@ -11154,14 +11164,48 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __pyx_t_4 = 0;
 
           /* "renpy/display/render.pyx":805
- *                 else:
+ *                 elif isinstance(child, Render):
  *                     crop = (cx, cy, cw, ch)
- *                     newchild = child.subsurface(crop)             # <<<<<<<<<<<<<<
+ *                     newchild = child.subsurface(crop, focus=focus)             # <<<<<<<<<<<<<<
  *                     renpy.display.draw.mutated_surface(newchild)
- *             except:
+ *                 else:
+ */
+          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_subsurface); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_4);
+          __pyx_t_14 = PyTuple_New(1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_14);
+          __Pyx_INCREF(__pyx_v_crop);
+          __Pyx_GIVEREF(__pyx_v_crop);
+          PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_crop);
+          __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_focus, __pyx_v_focus) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_14, __pyx_t_5); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_XDECREF_SET(__pyx_v_newchild, __pyx_t_13);
+          __pyx_t_13 = 0;
+
+          /* "renpy/display/render.pyx":806
+ *                     crop = (cx, cy, cw, ch)
+ *                     newchild = child.subsurface(crop, focus=focus)
+ *                     renpy.display.draw.mutated_surface(newchild)             # <<<<<<<<<<<<<<
+ *                 else:
+ *                     crop = (cx, cy, cw, ch)
  */
-          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_subsurface); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_display); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
           __Pyx_GOTREF(__pyx_t_14);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_draw); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_5);
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_mutated_surface); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_14);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           __pyx_t_5 = NULL;
           if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
             __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_14);
@@ -11173,67 +11217,138 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
             }
           }
           if (!__pyx_t_5) {
-            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_crop); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
-            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_newchild); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_13);
           } else {
-            __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
+            __Pyx_INCREF(__pyx_v_newchild);
+            __Pyx_GIVEREF(__pyx_v_newchild);
+            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_newchild);
+            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_4, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
             __Pyx_GOTREF(__pyx_t_13);
-            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_5); __pyx_t_5 = NULL;
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+          }
+          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
+          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+
+          /* "renpy/display/render.pyx":803
+ *                     newchild.height = ch
+ *                     newchild.render_of = child.render_of[:]
+ *                 elif isinstance(child, Render):             # <<<<<<<<<<<<<<
+ *                     crop = (cx, cy, cw, ch)
+ *                     newchild = child.subsurface(crop, focus=focus)
+ */
+          goto __pyx_L39;
+        }
+
+        /* "renpy/display/render.pyx":808
+ *                     renpy.display.draw.mutated_surface(newchild)
+ *                 else:
+ *                     crop = (cx, cy, cw, ch)             # <<<<<<<<<<<<<<
+ *                     newchild = child.subsurface(crop)
+ *                     renpy.display.draw.mutated_surface(newchild)
+ */
+        /*else*/ {
+          __pyx_t_13 = PyTuple_New(4); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_INCREF(__pyx_v_cx);
+          __Pyx_GIVEREF(__pyx_v_cx);
+          PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_v_cx);
+          __Pyx_INCREF(__pyx_v_cy);
+          __Pyx_GIVEREF(__pyx_v_cy);
+          PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_v_cy);
+          __Pyx_INCREF(__pyx_v_cw);
+          __Pyx_GIVEREF(__pyx_v_cw);
+          PyTuple_SET_ITEM(__pyx_t_13, 2, __pyx_v_cw);
+          __Pyx_INCREF(__pyx_v_ch);
+          __Pyx_GIVEREF(__pyx_v_ch);
+          PyTuple_SET_ITEM(__pyx_t_13, 3, __pyx_v_ch);
+          __Pyx_DECREF_SET(__pyx_v_crop, __pyx_t_13);
+          __pyx_t_13 = 0;
+
+          /* "renpy/display/render.pyx":809
+ *                 else:
+ *                     crop = (cx, cy, cw, ch)
+ *                     newchild = child.subsurface(crop)             # <<<<<<<<<<<<<<
+ *                     renpy.display.draw.mutated_surface(newchild)
+ *             except:
+ */
+          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_subsurface); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_14);
+          __pyx_t_4 = NULL;
+          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
+            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_14);
+            if (likely(__pyx_t_4)) {
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
+              __Pyx_INCREF(__pyx_t_4);
+              __Pyx_INCREF(function);
+              __Pyx_DECREF_SET(__pyx_t_14, function);
+            }
+          }
+          if (!__pyx_t_4) {
+            __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_v_crop); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_13);
+          } else {
+            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_5);
+            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
             __Pyx_INCREF(__pyx_v_crop);
             __Pyx_GIVEREF(__pyx_v_crop);
-            PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_v_crop);
-            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_crop);
+            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_5, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           }
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __Pyx_XDECREF_SET(__pyx_v_newchild, __pyx_t_4);
-          __pyx_t_4 = 0;
+          __Pyx_XDECREF_SET(__pyx_v_newchild, __pyx_t_13);
+          __pyx_t_13 = 0;
 
-          /* "renpy/display/render.pyx":806
+          /* "renpy/display/render.pyx":810
  *                     crop = (cx, cy, cw, ch)
  *                     newchild = child.subsurface(crop)
  *                     renpy.display.draw.mutated_surface(newchild)             # <<<<<<<<<<<<<<
  *             except:
  *                 raise Exception("Creating subsurface failed. child size = ({}, {}), crop = {!r}".format(childw, childh, crop))
  */
-          __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
           __Pyx_GOTREF(__pyx_t_14);
-          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_display); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
-          __Pyx_GOTREF(__pyx_t_13);
+          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_display); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_draw); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_draw); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
           __Pyx_GOTREF(__pyx_t_14);
-          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_mutated_surface); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
-          __Pyx_GOTREF(__pyx_t_13);
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_mutated_surface); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+          __Pyx_GOTREF(__pyx_t_5);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
           __pyx_t_14 = NULL;
-          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_13))) {
-            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
+          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
+            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_5);
             if (likely(__pyx_t_14)) {
-              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
+              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
               __Pyx_INCREF(__pyx_t_14);
               __Pyx_INCREF(function);
-              __Pyx_DECREF_SET(__pyx_t_13, function);
+              __Pyx_DECREF_SET(__pyx_t_5, function);
             }
           }
           if (!__pyx_t_14) {
-            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_newchild); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
-            __Pyx_GOTREF(__pyx_t_4);
+            __pyx_t_13 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_newchild); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_13);
           } else {
-            __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
-            __Pyx_GOTREF(__pyx_t_5);
-            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_14); __pyx_t_14 = NULL;
+            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_4);
+            __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_14); __pyx_t_14 = NULL;
             __Pyx_INCREF(__pyx_v_newchild);
             __Pyx_GIVEREF(__pyx_v_newchild);
-            PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_newchild);
-            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
-            __Pyx_GOTREF(__pyx_t_4);
-            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_newchild);
+            __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L31_error;}
+            __Pyx_GOTREF(__pyx_t_13);
+            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           }
+          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         }
         __pyx_L39:;
 
@@ -11254,11 +11369,11 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
+      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
-      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "renpy/display/render.pyx":807
+      /* "renpy/display/render.pyx":811
  *                     newchild = child.subsurface(crop)
  *                     renpy.display.draw.mutated_surface(newchild)
  *             except:             # <<<<<<<<<<<<<<
@@ -11267,19 +11382,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
       /*except:*/ {
         __Pyx_AddTraceback("renpy.display.render.Render.subsurface", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_13, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
-        __Pyx_GOTREF(__pyx_t_4);
+        if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_5, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_GOTREF(__pyx_t_4);
 
-        /* "renpy/display/render.pyx":808
+        /* "renpy/display/render.pyx":812
  *                     renpy.display.draw.mutated_surface(newchild)
  *             except:
  *                 raise Exception("Creating subsurface failed. child size = ({}, {}), crop = {!r}".format(childw, childh, crop))             # <<<<<<<<<<<<<<
  * 
  *             rv.blit(newchild, offset, focus=cfocus, main=cmain)
  */
-        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Creating_subsurface_failed_child, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Creating_subsurface_failed_child, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_3 = NULL;
         __pyx_t_16 = 0;
@@ -11293,7 +11408,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
             __pyx_t_16 = 1;
           }
         }
-        __pyx_t_15 = PyTuple_New(3+__pyx_t_16); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        __pyx_t_15 = PyTuple_New(3+__pyx_t_16); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_15);
         if (__pyx_t_3) {
           __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_3); __pyx_t_3 = NULL;
@@ -11307,21 +11422,21 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_INCREF(__pyx_v_crop);
         __Pyx_GIVEREF(__pyx_v_crop);
         PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_16, __pyx_v_crop);
-        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_14);
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_GIVEREF(__pyx_t_14);
         PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_14);
         __pyx_t_14 = 0;
-        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_t_1, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        __pyx_t_14 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_t_1, NULL); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
         __Pyx_GOTREF(__pyx_t_14);
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         __Pyx_Raise(__pyx_t_14, 0, 0, 0);
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L33_except_error;}
       }
       __pyx_L33_except_error:;
 
@@ -11340,7 +11455,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __pyx_L38_try_end:;
     }
 
-    /* "renpy/display/render.pyx":810
+    /* "renpy/display/render.pyx":814
  *                 raise Exception("Creating subsurface failed. child size = ({}, {}), crop = {!r}".format(childw, childh, crop))
  * 
  *             rv.blit(newchild, offset, focus=cfocus, main=cmain)             # <<<<<<<<<<<<<<
@@ -11363,25 +11478,25 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "renpy/display/render.pyx":812
+  /* "renpy/display/render.pyx":816
  *             rv.blit(newchild, offset, focus=cfocus, main=cmain)
  * 
  *         if focus and self.focuses:             # <<<<<<<<<<<<<<
  * 
  *             for (d, arg, xo, yo, fw, fh, mx, my, mask) in self.focuses:
  */
-  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__pyx_t_9) {
+  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__pyx_t_7) {
   } else {
-    __pyx_t_7 = __pyx_t_9;
+    __pyx_t_9 = __pyx_t_7;
     goto __pyx_L45_bool_binop_done;
   }
-  __pyx_t_9 = (__pyx_v_self->focuses != Py_None) && (PyList_GET_SIZE(__pyx_v_self->focuses) != 0);
-  __pyx_t_7 = __pyx_t_9;
+  __pyx_t_7 = (__pyx_v_self->focuses != Py_None) && (PyList_GET_SIZE(__pyx_v_self->focuses) != 0);
+  __pyx_t_9 = __pyx_t_7;
   __pyx_L45_bool_binop_done:;
-  if (__pyx_t_7) {
+  if (__pyx_t_9) {
 
-    /* "renpy/display/render.pyx":814
+    /* "renpy/display/render.pyx":818
  *         if focus and self.focuses:
  * 
  *             for (d, arg, xo, yo, fw, fh, mx, my, mask) in self.focuses:             # <<<<<<<<<<<<<<
@@ -11390,19 +11505,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
     if (unlikely(__pyx_v_self->focuses == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_2 = __pyx_v_self->focuses; __Pyx_INCREF(__pyx_t_2); __pyx_t_12 = 0;
     for (;;) {
       if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_2)) break;
       #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_12); __Pyx_INCREF(__pyx_t_5); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       #else
-      __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
       #endif
-      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
-        PyObject* sequence = __pyx_t_5;
+      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+        PyObject* sequence = __pyx_t_4;
         #if CYTHON_COMPILING_IN_CPYTHON
         Py_ssize_t size = Py_SIZE(sequence);
         #else
@@ -11411,12 +11526,12 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         if (unlikely(size != 9)) {
           if (size > 9) __Pyx_RaiseTooManyValuesError(9);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
-          __pyx_t_13 = PyTuple_GET_ITEM(sequence, 0); 
-          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
+          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
+          __pyx_t_13 = PyTuple_GET_ITEM(sequence, 1); 
           __pyx_t_14 = PyTuple_GET_ITEM(sequence, 2); 
           __pyx_t_1 = PyTuple_GET_ITEM(sequence, 3); 
           __pyx_t_15 = PyTuple_GET_ITEM(sequence, 4); 
@@ -11425,8 +11540,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __pyx_t_21 = PyTuple_GET_ITEM(sequence, 7); 
           __pyx_t_22 = PyTuple_GET_ITEM(sequence, 8); 
         } else {
-          __pyx_t_13 = PyList_GET_ITEM(sequence, 0); 
-          __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
+          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
+          __pyx_t_13 = PyList_GET_ITEM(sequence, 1); 
           __pyx_t_14 = PyList_GET_ITEM(sequence, 2); 
           __pyx_t_1 = PyList_GET_ITEM(sequence, 3); 
           __pyx_t_15 = PyList_GET_ITEM(sequence, 4); 
@@ -11435,8 +11550,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __pyx_t_21 = PyList_GET_ITEM(sequence, 7); 
           __pyx_t_22 = PyList_GET_ITEM(sequence, 8); 
         }
+        __Pyx_INCREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_13);
-        __Pyx_INCREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_t_14);
         __Pyx_INCREF(__pyx_t_1);
         __Pyx_INCREF(__pyx_t_15);
@@ -11447,28 +11562,28 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         #else
         {
           Py_ssize_t i;
-          PyObject** temps[9] = {&__pyx_t_13,&__pyx_t_4,&__pyx_t_14,&__pyx_t_1,&__pyx_t_15,&__pyx_t_3,&__pyx_t_20,&__pyx_t_21,&__pyx_t_22};
+          PyObject** temps[9] = {&__pyx_t_5,&__pyx_t_13,&__pyx_t_14,&__pyx_t_1,&__pyx_t_15,&__pyx_t_3,&__pyx_t_20,&__pyx_t_21,&__pyx_t_22};
           for (i=0; i < 9; i++) {
-            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(item);
             *(temps[i]) = item;
           }
         }
         #endif
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
         Py_ssize_t index = -1;
-        PyObject** temps[9] = {&__pyx_t_13,&__pyx_t_4,&__pyx_t_14,&__pyx_t_1,&__pyx_t_15,&__pyx_t_3,&__pyx_t_20,&__pyx_t_21,&__pyx_t_22};
-        __pyx_t_23 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        PyObject** temps[9] = {&__pyx_t_5,&__pyx_t_13,&__pyx_t_14,&__pyx_t_1,&__pyx_t_15,&__pyx_t_3,&__pyx_t_20,&__pyx_t_21,&__pyx_t_22};
+        __pyx_t_23 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_23);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_6 = Py_TYPE(__pyx_t_23)->tp_iternext;
         for (index=0; index < 9; index++) {
           PyObject* item = __pyx_t_6(__pyx_t_23); if (unlikely(!item)) goto __pyx_L49_unpacking_failed;
           __Pyx_GOTREF(item);
           *(temps[index]) = item;
         }
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_23), 9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_23), 9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_6 = NULL;
         __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
         goto __pyx_L50_unpacking_done;
@@ -11476,13 +11591,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
         __pyx_t_6 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L50_unpacking_done:;
       }
-      __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_13);
+      __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_5);
+      __pyx_t_5 = 0;
+      __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_13);
       __pyx_t_13 = 0;
-      __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_4);
-      __pyx_t_4 = 0;
       __Pyx_XDECREF_SET(__pyx_v_xo, __pyx_t_14);
       __pyx_t_14 = 0;
       __Pyx_XDECREF_SET(__pyx_v_yo, __pyx_t_1);
@@ -11498,25 +11613,25 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __Pyx_XDECREF_SET(__pyx_v_mask, __pyx_t_22);
       __pyx_t_22 = 0;
 
-      /* "renpy/display/render.pyx":816
+      /* "renpy/display/render.pyx":820
  *             for (d, arg, xo, yo, fw, fh, mx, my, mask) in self.focuses:
  * 
  *                 if xo is None:             # <<<<<<<<<<<<<<
  *                     rv.add_focus(d, arg, xo, yo, fw, fh, mx, my, mask)
  *                     continue
  */
-      __pyx_t_7 = (__pyx_v_xo == Py_None);
-      __pyx_t_9 = (__pyx_t_7 != 0);
-      if (__pyx_t_9) {
+      __pyx_t_9 = (__pyx_v_xo == Py_None);
+      __pyx_t_7 = (__pyx_t_9 != 0);
+      if (__pyx_t_7) {
 
-        /* "renpy/display/render.pyx":817
+        /* "renpy/display/render.pyx":821
  * 
  *                 if xo is None:
  *                     rv.add_focus(d, arg, xo, yo, fw, fh, mx, my, mask)             # <<<<<<<<<<<<<<
  *                     continue
  * 
  */
-        __pyx_t_22 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_rv), __pyx_n_s_add_focus); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_22 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_rv), __pyx_n_s_add_focus); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_22);
         __pyx_t_21 = NULL;
         __pyx_t_16 = 0;
@@ -11530,7 +11645,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
             __pyx_t_16 = 1;
           }
         }
-        __pyx_t_20 = PyTuple_New(9+__pyx_t_16); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_20 = PyTuple_New(9+__pyx_t_16); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_20);
         if (__pyx_t_21) {
           __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_21); __pyx_t_21 = NULL;
@@ -11562,13 +11677,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_INCREF(__pyx_v_mask);
         __Pyx_GIVEREF(__pyx_v_mask);
         PyTuple_SET_ITEM(__pyx_t_20, 8+__pyx_t_16, __pyx_v_mask);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_22, __pyx_t_20, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 817; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_22, __pyx_t_20, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
         __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "renpy/display/render.pyx":818
+        /* "renpy/display/render.pyx":822
  *                 if xo is None:
  *                     rv.add_focus(d, arg, xo, yo, fw, fh, mx, my, mask)
  *                     continue             # <<<<<<<<<<<<<<
@@ -11577,7 +11692,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
         goto __pyx_L47_continue;
 
-        /* "renpy/display/render.pyx":816
+        /* "renpy/display/render.pyx":820
  *             for (d, arg, xo, yo, fw, fh, mx, my, mask) in self.focuses:
  * 
  *                 if xo is None:             # <<<<<<<<<<<<<<
@@ -11586,14 +11701,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
       }
 
-      /* "renpy/display/render.pyx":820
+      /* "renpy/display/render.pyx":824
  *                     continue
  * 
  *                 xo, cx, fw = compute_subline(xo, fw, x, w)             # <<<<<<<<<<<<<<
  *                 yo, cy, fh = compute_subline(yo, fh, y, h)
  * 
  */
-      __pyx_t_22 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_22 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_22);
       __pyx_t_20 = NULL;
       __pyx_t_16 = 0;
@@ -11607,7 +11722,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __pyx_t_16 = 1;
         }
       }
-      __pyx_t_21 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_21 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_21);
       if (__pyx_t_20) {
         __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_20); __pyx_t_20 = NULL;
@@ -11624,12 +11739,12 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __Pyx_INCREF(__pyx_v_w);
       __Pyx_GIVEREF(__pyx_v_w);
       PyTuple_SET_ITEM(__pyx_t_21, 3+__pyx_t_16, __pyx_v_w);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_22, __pyx_t_21, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_22, __pyx_t_21, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
       __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
-      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
-        PyObject* sequence = __pyx_t_5;
+      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+        PyObject* sequence = __pyx_t_4;
         #if CYTHON_COMPILING_IN_CPYTHON
         Py_ssize_t size = Py_SIZE(sequence);
         #else
@@ -11638,7 +11753,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         if (unlikely(size != 3)) {
           if (size > 3) __Pyx_RaiseTooManyValuesError(3);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -11654,19 +11769,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_INCREF(__pyx_t_21);
         __Pyx_INCREF(__pyx_t_20);
         #else
-        __pyx_t_22 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_22 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_22);
-        __pyx_t_21 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_21 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_21);
-        __pyx_t_20 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_20 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_20);
         #endif
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext;
         index = 0; __pyx_t_22 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_22)) goto __pyx_L52_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_22);
@@ -11674,7 +11789,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_GOTREF(__pyx_t_21);
         index = 2; __pyx_t_20 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_20)) goto __pyx_L52_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_20);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_6 = NULL;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         goto __pyx_L53_unpacking_done;
@@ -11682,7 +11797,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_6 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L53_unpacking_done:;
       }
       __Pyx_DECREF_SET(__pyx_v_xo, __pyx_t_22);
@@ -11692,14 +11807,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __Pyx_DECREF_SET(__pyx_v_fw, __pyx_t_20);
       __pyx_t_20 = 0;
 
-      /* "renpy/display/render.pyx":821
+      /* "renpy/display/render.pyx":825
  * 
  *                 xo, cx, fw = compute_subline(xo, fw, x, w)
  *                 yo, cy, fh = compute_subline(yo, fh, y, h)             # <<<<<<<<<<<<<<
  * 
  *                 if fw <= 0 or fh <= 0:
  */
-      __pyx_t_20 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_20 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_20);
       __pyx_t_21 = NULL;
       __pyx_t_16 = 0;
@@ -11713,7 +11828,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __pyx_t_16 = 1;
         }
       }
-      __pyx_t_22 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_22 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_22);
       if (__pyx_t_21) {
         __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_21); __pyx_t_21 = NULL;
@@ -11730,12 +11845,12 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __Pyx_INCREF(__pyx_v_h);
       __Pyx_GIVEREF(__pyx_v_h);
       PyTuple_SET_ITEM(__pyx_t_22, 3+__pyx_t_16, __pyx_v_h);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_22, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_22, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
       __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
-        PyObject* sequence = __pyx_t_5;
+      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+        PyObject* sequence = __pyx_t_4;
         #if CYTHON_COMPILING_IN_CPYTHON
         Py_ssize_t size = Py_SIZE(sequence);
         #else
@@ -11744,7 +11859,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         if (unlikely(size != 3)) {
           if (size > 3) __Pyx_RaiseTooManyValuesError(3);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -11760,19 +11875,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_INCREF(__pyx_t_22);
         __Pyx_INCREF(__pyx_t_21);
         #else
-        __pyx_t_20 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_20 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_20);
-        __pyx_t_22 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_22 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_22);
-        __pyx_t_21 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_21 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_21);
         #endif
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext;
         index = 0; __pyx_t_20 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_20)) goto __pyx_L54_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_20);
@@ -11780,7 +11895,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_GOTREF(__pyx_t_22);
         index = 2; __pyx_t_21 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_21)) goto __pyx_L54_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_21);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_6 = NULL;
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         goto __pyx_L55_unpacking_done;
@@ -11788,7 +11903,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_t_6 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L55_unpacking_done:;
       }
       __Pyx_DECREF_SET(__pyx_v_yo, __pyx_t_20);
@@ -11798,29 +11913,29 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __Pyx_DECREF_SET(__pyx_v_fh, __pyx_t_21);
       __pyx_t_21 = 0;
 
-      /* "renpy/display/render.pyx":823
+      /* "renpy/display/render.pyx":827
  *                 yo, cy, fh = compute_subline(yo, fh, y, h)
  * 
  *                 if fw <= 0 or fh <= 0:             # <<<<<<<<<<<<<<
  *                     continue
  * 
  */
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_fw, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (!__pyx_t_7) {
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_fw, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      if (!__pyx_t_9) {
       } else {
-        __pyx_t_9 = __pyx_t_7;
+        __pyx_t_7 = __pyx_t_9;
         goto __pyx_L57_bool_binop_done;
       }
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_fh, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_9 = __pyx_t_7;
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_fh, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+      __pyx_t_7 = __pyx_t_9;
       __pyx_L57_bool_binop_done:;
-      if (__pyx_t_9) {
+      if (__pyx_t_7) {
 
-        /* "renpy/display/render.pyx":824
+        /* "renpy/display/render.pyx":828
  * 
  *                 if fw <= 0 or fh <= 0:
  *                     continue             # <<<<<<<<<<<<<<
@@ -11829,7 +11944,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
         goto __pyx_L47_continue;
 
-        /* "renpy/display/render.pyx":823
+        /* "renpy/display/render.pyx":827
  *                 yo, cy, fh = compute_subline(yo, fh, y, h)
  * 
  *                 if fw <= 0 or fh <= 0:             # <<<<<<<<<<<<<<
@@ -11838,25 +11953,25 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
       }
 
-      /* "renpy/display/render.pyx":826
+      /* "renpy/display/render.pyx":830
  *                     continue
  * 
  *                 if mx is not None:             # <<<<<<<<<<<<<<
  * 
  *                     mw, mh = mask.get_size()
  */
-      __pyx_t_9 = (__pyx_v_mx != Py_None);
-      __pyx_t_7 = (__pyx_t_9 != 0);
-      if (__pyx_t_7) {
+      __pyx_t_7 = (__pyx_v_mx != Py_None);
+      __pyx_t_9 = (__pyx_t_7 != 0);
+      if (__pyx_t_9) {
 
-        /* "renpy/display/render.pyx":828
+        /* "renpy/display/render.pyx":832
  *                 if mx is not None:
  * 
  *                     mw, mh = mask.get_size()             # <<<<<<<<<<<<<<
  * 
  *                     mx, mcx, mw = compute_subline(mx, mw, x, w)
  */
-        __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_get_size); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_21 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_get_size); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_21);
         __pyx_t_22 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_21))) {
@@ -11869,15 +11984,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           }
         }
         if (__pyx_t_22) {
-          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_22); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_21, __pyx_t_22); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
         } else {
-          __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_21); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_21); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
-        __Pyx_GOTREF(__pyx_t_5);
+        __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-        if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
-          PyObject* sequence = __pyx_t_5;
+        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+          PyObject* sequence = __pyx_t_4;
           #if CYTHON_COMPILING_IN_CPYTHON
           Py_ssize_t size = Py_SIZE(sequence);
           #else
@@ -11886,7 +12001,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -11899,23 +12014,23 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_INCREF(__pyx_t_21);
           __Pyx_INCREF(__pyx_t_22);
           #else
-          __pyx_t_21 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_21 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_21);
-          __pyx_t_22 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_22 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_22);
           #endif
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_20 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_20 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_20);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           __pyx_t_6 = Py_TYPE(__pyx_t_20)->tp_iternext;
           index = 0; __pyx_t_21 = __pyx_t_6(__pyx_t_20); if (unlikely(!__pyx_t_21)) goto __pyx_L60_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_21);
           index = 1; __pyx_t_22 = __pyx_t_6(__pyx_t_20); if (unlikely(!__pyx_t_22)) goto __pyx_L60_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_22);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_20), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_20), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_6 = NULL;
           __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
           goto __pyx_L61_unpacking_done;
@@ -11923,7 +12038,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
           __pyx_t_6 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L61_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_mw, __pyx_t_21);
@@ -11931,14 +12046,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_XDECREF_SET(__pyx_v_mh, __pyx_t_22);
         __pyx_t_22 = 0;
 
-        /* "renpy/display/render.pyx":830
+        /* "renpy/display/render.pyx":834
  *                     mw, mh = mask.get_size()
  * 
  *                     mx, mcx, mw = compute_subline(mx, mw, x, w)             # <<<<<<<<<<<<<<
  *                     my, mcy, mh = compute_subline(my, mh, y, h)
  * 
  */
-        __pyx_t_22 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_22 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_22);
         __pyx_t_21 = NULL;
         __pyx_t_16 = 0;
@@ -11952,7 +12067,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
             __pyx_t_16 = 1;
           }
         }
-        __pyx_t_20 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_20 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_20);
         if (__pyx_t_21) {
           __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_20, 0, __pyx_t_21); __pyx_t_21 = NULL;
@@ -11969,12 +12084,12 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_INCREF(__pyx_v_w);
         __Pyx_GIVEREF(__pyx_v_w);
         PyTuple_SET_ITEM(__pyx_t_20, 3+__pyx_t_16, __pyx_v_w);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_22, __pyx_t_20, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_22, __pyx_t_20, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
         __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
-        if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
-          PyObject* sequence = __pyx_t_5;
+        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+          PyObject* sequence = __pyx_t_4;
           #if CYTHON_COMPILING_IN_CPYTHON
           Py_ssize_t size = Py_SIZE(sequence);
           #else
@@ -11983,7 +12098,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           if (unlikely(size != 3)) {
             if (size > 3) __Pyx_RaiseTooManyValuesError(3);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -11999,19 +12114,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_INCREF(__pyx_t_20);
           __Pyx_INCREF(__pyx_t_21);
           #else
-          __pyx_t_22 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_22 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_22);
-          __pyx_t_20 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_20 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_20);
-          __pyx_t_21 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_21 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_21);
           #endif
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext;
           index = 0; __pyx_t_22 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_22)) goto __pyx_L62_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_22);
@@ -12019,7 +12134,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_GOTREF(__pyx_t_20);
           index = 2; __pyx_t_21 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_21)) goto __pyx_L62_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_21);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_6 = NULL;
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           goto __pyx_L63_unpacking_done;
@@ -12027,7 +12142,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_t_6 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L63_unpacking_done:;
         }
         __Pyx_DECREF_SET(__pyx_v_mx, __pyx_t_22);
@@ -12037,14 +12152,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_DECREF_SET(__pyx_v_mw, __pyx_t_21);
         __pyx_t_21 = 0;
 
-        /* "renpy/display/render.pyx":831
+        /* "renpy/display/render.pyx":835
  * 
  *                     mx, mcx, mw = compute_subline(mx, mw, x, w)
  *                     my, mcy, mh = compute_subline(my, mh, y, h)             # <<<<<<<<<<<<<<
  * 
  *                     if mw <= 0 or mh <= 0:
  */
-        __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_21 = __Pyx_GetModuleGlobalName(__pyx_n_s_compute_subline); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_21);
         __pyx_t_20 = NULL;
         __pyx_t_16 = 0;
@@ -12058,7 +12173,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
             __pyx_t_16 = 1;
           }
         }
-        __pyx_t_22 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_22 = PyTuple_New(4+__pyx_t_16); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_22);
         if (__pyx_t_20) {
           __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_20); __pyx_t_20 = NULL;
@@ -12075,12 +12190,12 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_INCREF(__pyx_v_h);
         __Pyx_GIVEREF(__pyx_v_h);
         PyTuple_SET_ITEM(__pyx_t_22, 3+__pyx_t_16, __pyx_v_h);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_22, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_GOTREF(__pyx_t_5);
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_21, __pyx_t_22, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
         __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
-        if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
-          PyObject* sequence = __pyx_t_5;
+        if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
+          PyObject* sequence = __pyx_t_4;
           #if CYTHON_COMPILING_IN_CPYTHON
           Py_ssize_t size = Py_SIZE(sequence);
           #else
@@ -12089,7 +12204,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           if (unlikely(size != 3)) {
             if (size > 3) __Pyx_RaiseTooManyValuesError(3);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           #if CYTHON_COMPILING_IN_CPYTHON
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -12105,19 +12220,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_INCREF(__pyx_t_22);
           __Pyx_INCREF(__pyx_t_20);
           #else
-          __pyx_t_21 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_21 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_21);
-          __pyx_t_22 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_22 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_22);
-          __pyx_t_20 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_20 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_20);
           #endif
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext;
           index = 0; __pyx_t_21 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_21)) goto __pyx_L64_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_21);
@@ -12125,7 +12240,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_GOTREF(__pyx_t_22);
           index = 2; __pyx_t_20 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_20)) goto __pyx_L64_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_20);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_t_6 = NULL;
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           goto __pyx_L65_unpacking_done;
@@ -12133,7 +12248,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           __pyx_t_6 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __pyx_L65_unpacking_done:;
         }
         __Pyx_DECREF_SET(__pyx_v_my, __pyx_t_21);
@@ -12143,29 +12258,29 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
         __Pyx_DECREF_SET(__pyx_v_mh, __pyx_t_20);
         __pyx_t_20 = 0;
 
-        /* "renpy/display/render.pyx":833
+        /* "renpy/display/render.pyx":837
  *                     my, mcy, mh = compute_subline(my, mh, y, h)
  * 
  *                     if mw <= 0 or mh <= 0:             # <<<<<<<<<<<<<<
  *                         mx = None
  *                         my = None
  */
-        __pyx_t_5 = PyObject_RichCompare(__pyx_v_mw, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        if (!__pyx_t_9) {
+        __pyx_t_4 = PyObject_RichCompare(__pyx_v_mw, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (!__pyx_t_7) {
         } else {
-          __pyx_t_7 = __pyx_t_9;
+          __pyx_t_9 = __pyx_t_7;
           goto __pyx_L67_bool_binop_done;
         }
-        __pyx_t_5 = PyObject_RichCompare(__pyx_v_mh, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __pyx_t_7 = __pyx_t_9;
+        __pyx_t_4 = PyObject_RichCompare(__pyx_v_mh, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_9 = __pyx_t_7;
         __pyx_L67_bool_binop_done:;
-        if (__pyx_t_7) {
+        if (__pyx_t_9) {
 
-          /* "renpy/display/render.pyx":834
+          /* "renpy/display/render.pyx":838
  * 
  *                     if mw <= 0 or mh <= 0:
  *                         mx = None             # <<<<<<<<<<<<<<
@@ -12175,7 +12290,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_INCREF(Py_None);
           __Pyx_DECREF_SET(__pyx_v_mx, Py_None);
 
-          /* "renpy/display/render.pyx":835
+          /* "renpy/display/render.pyx":839
  *                     if mw <= 0 or mh <= 0:
  *                         mx = None
  *                         my = None             # <<<<<<<<<<<<<<
@@ -12185,7 +12300,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_INCREF(Py_None);
           __Pyx_DECREF_SET(__pyx_v_my, Py_None);
 
-          /* "renpy/display/render.pyx":836
+          /* "renpy/display/render.pyx":840
  *                         mx = None
  *                         my = None
  *                         mask = None             # <<<<<<<<<<<<<<
@@ -12195,7 +12310,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __Pyx_INCREF(Py_None);
           __Pyx_DECREF_SET(__pyx_v_mask, Py_None);
 
-          /* "renpy/display/render.pyx":833
+          /* "renpy/display/render.pyx":837
  *                     my, mcy, mh = compute_subline(my, mh, y, h)
  * 
  *                     if mw <= 0 or mh <= 0:             # <<<<<<<<<<<<<<
@@ -12205,7 +12320,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           goto __pyx_L66;
         }
 
-        /* "renpy/display/render.pyx":838
+        /* "renpy/display/render.pyx":842
  *                         mask = None
  *                     else:
  *                         mask = mask.subsurface((mcx, mcy, mw, mh))             # <<<<<<<<<<<<<<
@@ -12213,9 +12328,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  *                 rv.add_focus(d, arg, xo, yo, fw, fh, mx, my, mask)
  */
         /*else*/ {
-          __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_subsurface); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_subsurface); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_20);
-          __pyx_t_22 = PyTuple_New(4); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_22 = PyTuple_New(4); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_22);
           __Pyx_INCREF(__pyx_v_mcx);
           __Pyx_GIVEREF(__pyx_v_mcx);
@@ -12240,27 +12355,27 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
             }
           }
           if (!__pyx_t_21) {
-            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_22); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_22); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
-            __Pyx_GOTREF(__pyx_t_5);
+            __Pyx_GOTREF(__pyx_t_4);
           } else {
-            __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_3);
             __Pyx_GIVEREF(__pyx_t_21); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_21); __pyx_t_21 = NULL;
             __Pyx_GIVEREF(__pyx_t_22);
             PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_22);
             __pyx_t_22 = 0;
-            __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-            __Pyx_GOTREF(__pyx_t_5);
+            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_GOTREF(__pyx_t_4);
             __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
           }
           __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-          __Pyx_DECREF_SET(__pyx_v_mask, __pyx_t_5);
-          __pyx_t_5 = 0;
+          __Pyx_DECREF_SET(__pyx_v_mask, __pyx_t_4);
+          __pyx_t_4 = 0;
         }
         __pyx_L66:;
 
-        /* "renpy/display/render.pyx":826
+        /* "renpy/display/render.pyx":830
  *                     continue
  * 
  *                 if mx is not None:             # <<<<<<<<<<<<<<
@@ -12269,14 +12384,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
       }
 
-      /* "renpy/display/render.pyx":840
+      /* "renpy/display/render.pyx":844
  *                         mask = mask.subsurface((mcx, mcy, mw, mh))
  * 
  *                 rv.add_focus(d, arg, xo, yo, fw, fh, mx, my, mask)             # <<<<<<<<<<<<<<
  * 
  *         rv.depends_on(self)
  */
-      __pyx_t_20 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_rv), __pyx_n_s_add_focus); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_20 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_rv), __pyx_n_s_add_focus); if (unlikely(!__pyx_t_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_20);
       __pyx_t_3 = NULL;
       __pyx_t_16 = 0;
@@ -12290,7 +12405,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
           __pyx_t_16 = 1;
         }
       }
-      __pyx_t_22 = PyTuple_New(9+__pyx_t_16); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_22 = PyTuple_New(9+__pyx_t_16); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_22);
       if (__pyx_t_3) {
         __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_3); __pyx_t_3 = NULL;
@@ -12322,13 +12437,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
       __Pyx_INCREF(__pyx_v_mask);
       __Pyx_GIVEREF(__pyx_v_mask);
       PyTuple_SET_ITEM(__pyx_t_22, 8+__pyx_t_16, __pyx_v_mask);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_22, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_5);
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_20, __pyx_t_22, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
       __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
-      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "renpy/display/render.pyx":814
+      /* "renpy/display/render.pyx":818
  *         if focus and self.focuses:
  * 
  *             for (d, arg, xo, yo, fw, fh, mx, my, mask) in self.focuses:             # <<<<<<<<<<<<<<
@@ -12339,7 +12454,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "renpy/display/render.pyx":812
+    /* "renpy/display/render.pyx":816
  *             rv.blit(newchild, offset, focus=cfocus, main=cmain)
  * 
  *         if focus and self.focuses:             # <<<<<<<<<<<<<<
@@ -12348,43 +12463,43 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
  */
   }
 
-  /* "renpy/display/render.pyx":842
+  /* "renpy/display/render.pyx":846
  *                 rv.add_focus(d, arg, xo, yo, fw, fh, mx, my, mask)
  * 
  *         rv.depends_on(self)             # <<<<<<<<<<<<<<
  *         rv.alpha = self.alpha
  *         rv.operation = self.operation
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_rv), __pyx_n_s_depends_on); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_rv), __pyx_n_s_depends_on); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_20 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_5);
+  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
+    __pyx_t_20 = PyMethod_GET_SELF(__pyx_t_4);
     if (likely(__pyx_t_20)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_20);
       __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
+      __Pyx_DECREF_SET(__pyx_t_4, function);
     }
   }
   if (!__pyx_t_20) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
   } else {
-    __pyx_t_22 = PyTuple_New(1+1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_22 = PyTuple_New(1+1); if (unlikely(!__pyx_t_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_22);
     __Pyx_GIVEREF(__pyx_t_20); PyTuple_SET_ITEM(__pyx_t_22, 0, __pyx_t_20); __pyx_t_20 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_22, 0+1, ((PyObject *)__pyx_v_self));
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_22, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_22, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
   }
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "renpy/display/render.pyx":843
+  /* "renpy/display/render.pyx":847
  * 
  *         rv.depends_on(self)
  *         rv.alpha = self.alpha             # <<<<<<<<<<<<<<
@@ -12394,7 +12509,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
   __pyx_t_24 = __pyx_v_self->alpha;
   __pyx_v_rv->alpha = __pyx_t_24;
 
-  /* "renpy/display/render.pyx":844
+  /* "renpy/display/render.pyx":848
  *         rv.depends_on(self)
  *         rv.alpha = self.alpha
  *         rv.operation = self.operation             # <<<<<<<<<<<<<<
@@ -12404,17 +12519,17 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
   __pyx_t_10 = __pyx_v_self->operation;
   __pyx_v_rv->operation = __pyx_t_10;
 
-  /* "renpy/display/render.pyx":845
+  /* "renpy/display/render.pyx":849
  *         rv.alpha = self.alpha
  *         rv.operation = self.operation
  *         rv.operation_alpha = self.operation_alpha             # <<<<<<<<<<<<<<
  *         rv.operation_complete = self.operation_complete
  *         rv.nearest = self.nearest
  */
-  __pyx_t_7 = __pyx_v_self->operation_alpha;
-  __pyx_v_rv->operation_alpha = __pyx_t_7;
+  __pyx_t_9 = __pyx_v_self->operation_alpha;
+  __pyx_v_rv->operation_alpha = __pyx_t_9;
 
-  /* "renpy/display/render.pyx":846
+  /* "renpy/display/render.pyx":850
  *         rv.operation = self.operation
  *         rv.operation_alpha = self.operation_alpha
  *         rv.operation_complete = self.operation_complete             # <<<<<<<<<<<<<<
@@ -12424,7 +12539,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
   __pyx_t_24 = __pyx_v_self->operation_complete;
   __pyx_v_rv->operation_complete = __pyx_t_24;
 
-  /* "renpy/display/render.pyx":847
+  /* "renpy/display/render.pyx":851
  *         rv.operation_alpha = self.operation_alpha
  *         rv.operation_complete = self.operation_complete
  *         rv.nearest = self.nearest             # <<<<<<<<<<<<<<
@@ -12439,7 +12554,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
   __pyx_v_rv->nearest = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "renpy/display/render.pyx":849
+  /* "renpy/display/render.pyx":853
  *         rv.nearest = self.nearest
  * 
  *         return rv             # <<<<<<<<<<<<<<
@@ -12512,7 +12627,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_18subsurface(struct __
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":852
+/* "renpy/display/render.pyx":856
  * 
  * 
  *     def depends_on(self, source, focus=False):             # <<<<<<<<<<<<<<
@@ -12557,7 +12672,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_21depends_on(PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "depends_on") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "depends_on") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -12572,7 +12687,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_21depends_on(PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("depends_on", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("depends_on", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 856; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.depends_on", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -12600,7 +12715,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("depends_on", 0);
 
-  /* "renpy/display/render.pyx":859
+  /* "renpy/display/render.pyx":863
  *         """
  * 
  *         if source is self:             # <<<<<<<<<<<<<<
@@ -12611,20 +12726,20 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":860
+    /* "renpy/display/render.pyx":864
  * 
  *         if source is self:
  *             raise Exception("Render depends on itself.")             # <<<<<<<<<<<<<<
  * 
  *         self.depends_on_list.append(source)
  */
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_Raise(__pyx_t_3, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "renpy/display/render.pyx":859
+    /* "renpy/display/render.pyx":863
  *         """
  * 
  *         if source is self:             # <<<<<<<<<<<<<<
@@ -12633,7 +12748,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
  */
   }
 
-  /* "renpy/display/render.pyx":862
+  /* "renpy/display/render.pyx":866
  *             raise Exception("Render depends on itself.")
  * 
  *         self.depends_on_list.append(source)             # <<<<<<<<<<<<<<
@@ -12642,20 +12757,20 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
  */
   if (unlikely(__pyx_v_self->depends_on_list == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->depends_on_list, __pyx_v_source); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->depends_on_list, __pyx_v_source); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "renpy/display/render.pyx":863
+  /* "renpy/display/render.pyx":867
  * 
  *         self.depends_on_list.append(source)
  *         source.parents.add(self)             # <<<<<<<<<<<<<<
  * 
  *         if focus:
  */
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_parents); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_parents); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_add); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_add); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_5 = NULL;
@@ -12669,33 +12784,33 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
   } else {
-    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
     __Pyx_INCREF(((PyObject *)__pyx_v_self));
     __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
     PyTuple_SET_ITEM(__pyx_t_7, 0+1, ((PyObject *)__pyx_v_self));
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":865
+  /* "renpy/display/render.pyx":869
  *         source.parents.add(self)
  * 
  *         if focus:             # <<<<<<<<<<<<<<
  *             if self.pass_focuses is None:
  *                 self.pass_focuses = [ source ]
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":866
+    /* "renpy/display/render.pyx":870
  * 
  *         if focus:
  *             if self.pass_focuses is None:             # <<<<<<<<<<<<<<
@@ -12706,14 +12821,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "renpy/display/render.pyx":867
+      /* "renpy/display/render.pyx":871
  *         if focus:
  *             if self.pass_focuses is None:
  *                 self.pass_focuses = [ source ]             # <<<<<<<<<<<<<<
  *             else:
  *                 self.pass_focuses.append(source)
  */
-      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_v_source);
       __Pyx_GIVEREF(__pyx_v_source);
@@ -12724,7 +12839,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
       __pyx_v_self->pass_focuses = ((PyObject*)__pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "renpy/display/render.pyx":866
+      /* "renpy/display/render.pyx":870
  * 
  *         if focus:
  *             if self.pass_focuses is None:             # <<<<<<<<<<<<<<
@@ -12734,7 +12849,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
       goto __pyx_L5;
     }
 
-    /* "renpy/display/render.pyx":869
+    /* "renpy/display/render.pyx":873
  *                 self.pass_focuses = [ source ]
  *             else:
  *                 self.pass_focuses.append(source)             # <<<<<<<<<<<<<<
@@ -12744,13 +12859,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
     /*else*/ {
       if (unlikely(__pyx_v_self->pass_focuses == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
-      __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->pass_focuses, __pyx_v_source); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->pass_focuses, __pyx_v_source); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L5:;
 
-    /* "renpy/display/render.pyx":865
+    /* "renpy/display/render.pyx":869
  *         source.parents.add(self)
  * 
  *         if focus:             # <<<<<<<<<<<<<<
@@ -12759,7 +12874,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
  */
   }
 
-  /* "renpy/display/render.pyx":852
+  /* "renpy/display/render.pyx":856
  * 
  * 
  *     def depends_on(self, source, focus=False):             # <<<<<<<<<<<<<<
@@ -12783,7 +12898,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_20depends_on(struct __
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":872
+/* "renpy/display/render.pyx":876
  * 
  * 
  *     def kill_cache(self):             # <<<<<<<<<<<<<<
@@ -12833,7 +12948,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("kill_cache", 0);
 
-  /* "renpy/display/render.pyx":877
+  /* "renpy/display/render.pyx":881
  *         """
  * 
  *         if self.cache_killed:             # <<<<<<<<<<<<<<
@@ -12843,7 +12958,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
   __pyx_t_1 = (__pyx_v_self->cache_killed != 0);
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":878
+    /* "renpy/display/render.pyx":882
  * 
  *         if self.cache_killed:
  *             return             # <<<<<<<<<<<<<<
@@ -12854,7 +12969,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "renpy/display/render.pyx":877
+    /* "renpy/display/render.pyx":881
  *         """
  * 
  *         if self.cache_killed:             # <<<<<<<<<<<<<<
@@ -12863,7 +12978,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
  */
   }
 
-  /* "renpy/display/render.pyx":880
+  /* "renpy/display/render.pyx":884
  *             return
  * 
  *         self.cache_killed = True             # <<<<<<<<<<<<<<
@@ -12872,16 +12987,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
  */
   __pyx_v_self->cache_killed = 1;
 
-  /* "renpy/display/render.pyx":882
+  /* "renpy/display/render.pyx":886
  *         self.cache_killed = True
  * 
  *         for i in self.parents:             # <<<<<<<<<<<<<<
  *             i.kill_cache()
  * 
  */
-  __pyx_t_2 = PyObject_GetIter(__pyx_v_self->parents); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_GetIter(__pyx_v_self->parents); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   for (;;) {
     {
       __pyx_t_4 = __pyx_t_3(__pyx_t_2);
@@ -12889,7 +13004,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -12898,14 +13013,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":883
+    /* "renpy/display/render.pyx":887
  * 
  *         for i in self.parents:
  *             i.kill_cache()             # <<<<<<<<<<<<<<
  * 
  *         self.parents.clear()
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_kill_cache); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_kill_cache); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -12918,16 +13033,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
       }
     }
     if (__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":882
+    /* "renpy/display/render.pyx":886
  *         self.cache_killed = True
  * 
  *         for i in self.parents:             # <<<<<<<<<<<<<<
@@ -12937,7 +13052,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "renpy/display/render.pyx":885
+  /* "renpy/display/render.pyx":889
  *             i.kill_cache()
  * 
  *         self.parents.clear()             # <<<<<<<<<<<<<<
@@ -12946,11 +13061,11 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
  */
   if (unlikely(__pyx_v_self->parents == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "clear");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
-  __pyx_t_7 = PySet_Clear(__pyx_v_self->parents); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PySet_Clear(__pyx_v_self->parents); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "renpy/display/render.pyx":887
+  /* "renpy/display/render.pyx":891
  *         self.parents.clear()
  * 
  *         for i in self.depends_on_list:             # <<<<<<<<<<<<<<
@@ -12959,44 +13074,44 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
  */
   if (unlikely(__pyx_v_self->depends_on_list == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_2 = __pyx_v_self->depends_on_list; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
   for (;;) {
     if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":888
+    /* "renpy/display/render.pyx":892
  * 
  *         for i in self.depends_on_list:
  *             if not i.cache_killed:             # <<<<<<<<<<<<<<
  *                 i.parents.discard(self)
  * 
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_cache_killed); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_cache_killed); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_9 = ((!__pyx_t_1) != 0);
     if (__pyx_t_9) {
 
-      /* "renpy/display/render.pyx":889
+      /* "renpy/display/render.pyx":893
  *         for i in self.depends_on_list:
  *             if not i.cache_killed:
  *                 i.parents.discard(self)             # <<<<<<<<<<<<<<
  * 
  *         for ro in self.render_of:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_parents); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_parents); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_discard); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_discard); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_5 = NULL;
@@ -13010,23 +13125,23 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         }
       }
       if (!__pyx_t_5) {
-        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
       } else {
-        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
         __Pyx_INCREF(((PyObject *)__pyx_v_self));
         __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
         PyTuple_SET_ITEM(__pyx_t_10, 0+1, ((PyObject *)__pyx_v_self));
-        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       }
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "renpy/display/render.pyx":888
+      /* "renpy/display/render.pyx":892
  * 
  *         for i in self.depends_on_list:
  *             if not i.cache_killed:             # <<<<<<<<<<<<<<
@@ -13035,7 +13150,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
  */
     }
 
-    /* "renpy/display/render.pyx":887
+    /* "renpy/display/render.pyx":891
  *         self.parents.clear()
  * 
  *         for i in self.depends_on_list:             # <<<<<<<<<<<<<<
@@ -13045,7 +13160,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "renpy/display/render.pyx":891
+  /* "renpy/display/render.pyx":895
  *                 i.parents.discard(self)
  * 
  *         for ro in self.render_of:             # <<<<<<<<<<<<<<
@@ -13056,26 +13171,26 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
     __pyx_t_2 = __pyx_v_self->render_of; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0;
     __pyx_t_3 = NULL;
   } else {
-    __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->render_of); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->render_of); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   for (;;) {
     if (likely(!__pyx_t_3)) {
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         #endif
       } else {
         if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_COMPILING_IN_CPYTHON
-        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         #else
-        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         #endif
       }
@@ -13085,7 +13200,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         break;
       }
@@ -13094,47 +13209,47 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
     __Pyx_XDECREF_SET(__pyx_v_ro, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":892
+    /* "renpy/display/render.pyx":896
  * 
  *         for ro in self.render_of:
  *             id_ro = id(ro)             # <<<<<<<<<<<<<<
  * 
  *             cache = render_cache[id_ro]
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_ro);
     __Pyx_GIVEREF(__pyx_v_ro);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_ro);
-    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_id, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_XDECREF_SET(__pyx_v_id_ro, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "renpy/display/render.pyx":894
+    /* "renpy/display/render.pyx":898
  *             id_ro = id(ro)
  * 
  *             cache = render_cache[id_ro]             # <<<<<<<<<<<<<<
  *             for k, v in cache.items():
  *                 if v is self:
  */
-    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_cache); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_cache); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_4 = PyObject_GetItem(__pyx_t_6, __pyx_v_id_ro); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = PyObject_GetItem(__pyx_t_6, __pyx_v_id_ro); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_XDECREF_SET(__pyx_v_cache, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":895
+    /* "renpy/display/render.pyx":899
  * 
  *             cache = render_cache[id_ro]
  *             for k, v in cache.items():             # <<<<<<<<<<<<<<
  *                 if v is self:
  *                     del cache[k]
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cache, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cache, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_10 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
@@ -13147,10 +13262,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
       }
     }
     if (__pyx_t_10) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     } else {
-      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -13158,9 +13273,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
       __pyx_t_6 = __pyx_t_4; __Pyx_INCREF(__pyx_t_6); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
     } else {
-      __pyx_t_11 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     for (;;) {
@@ -13168,17 +13283,17 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         if (likely(PyList_CheckExact(__pyx_t_6))) {
           if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_6)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           #endif
         } else {
           if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_11); __Pyx_INCREF(__pyx_t_4); __pyx_t_11++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           #endif
         }
@@ -13188,7 +13303,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -13204,7 +13319,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -13217,15 +13332,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         __Pyx_INCREF(__pyx_t_10);
         __Pyx_INCREF(__pyx_t_5);
         #else
-        __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         #endif
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_13 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
@@ -13233,7 +13348,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         __Pyx_GOTREF(__pyx_t_10);
         index = 1; __pyx_t_5 = __pyx_t_14(__pyx_t_13); if (unlikely(!__pyx_t_5)) goto __pyx_L13_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_5);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_14 = NULL;
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
         goto __pyx_L14_unpacking_done;
@@ -13241,7 +13356,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
         __pyx_t_14 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L14_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_10);
@@ -13249,7 +13364,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
       __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":896
+      /* "renpy/display/render.pyx":900
  *             cache = render_cache[id_ro]
  *             for k, v in cache.items():
  *                 if v is self:             # <<<<<<<<<<<<<<
@@ -13260,16 +13375,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
       __pyx_t_1 = (__pyx_t_9 != 0);
       if (__pyx_t_1) {
 
-        /* "renpy/display/render.pyx":897
+        /* "renpy/display/render.pyx":901
  *             for k, v in cache.items():
  *                 if v is self:
  *                     del cache[k]             # <<<<<<<<<<<<<<
  * 
  *             if not cache:
  */
-        if (PyObject_DelItem(__pyx_v_cache, __pyx_v_k) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (PyObject_DelItem(__pyx_v_cache, __pyx_v_k) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-        /* "renpy/display/render.pyx":896
+        /* "renpy/display/render.pyx":900
  *             cache = render_cache[id_ro]
  *             for k, v in cache.items():
  *                 if v is self:             # <<<<<<<<<<<<<<
@@ -13278,7 +13393,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
  */
       }
 
-      /* "renpy/display/render.pyx":895
+      /* "renpy/display/render.pyx":899
  * 
  *             cache = render_cache[id_ro]
  *             for k, v in cache.items():             # <<<<<<<<<<<<<<
@@ -13288,30 +13403,30 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
     }
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "renpy/display/render.pyx":899
+    /* "renpy/display/render.pyx":903
  *                     del cache[k]
  * 
  *             if not cache:             # <<<<<<<<<<<<<<
  *                 del render_cache[id_ro]
  * 
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_cache); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_cache); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_9 = ((!__pyx_t_1) != 0);
     if (__pyx_t_9) {
 
-      /* "renpy/display/render.pyx":900
+      /* "renpy/display/render.pyx":904
  * 
  *             if not cache:
  *                 del render_cache[id_ro]             # <<<<<<<<<<<<<<
  * 
  *     def kill(self):
  */
-      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_cache); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_cache); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_6);
-      if (PyObject_DelItem(__pyx_t_6, __pyx_v_id_ro) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (PyObject_DelItem(__pyx_t_6, __pyx_v_id_ro) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "renpy/display/render.pyx":899
+      /* "renpy/display/render.pyx":903
  *                     del cache[k]
  * 
  *             if not cache:             # <<<<<<<<<<<<<<
@@ -13320,7 +13435,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
  */
     }
 
-    /* "renpy/display/render.pyx":891
+    /* "renpy/display/render.pyx":895
  *                 i.parents.discard(self)
  * 
  *         for ro in self.render_of:             # <<<<<<<<<<<<<<
@@ -13330,7 +13445,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "renpy/display/render.pyx":872
+  /* "renpy/display/render.pyx":876
  * 
  * 
  *     def kill_cache(self):             # <<<<<<<<<<<<<<
@@ -13362,7 +13477,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_22kill_cache(struct __
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":902
+/* "renpy/display/render.pyx":906
  *                 del render_cache[id_ro]
  * 
  *     def kill(self):             # <<<<<<<<<<<<<<
@@ -13396,7 +13511,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_24kill(CYTHON_UNUSED s
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":907
+/* "renpy/display/render.pyx":911
  *         """
  * 
  *     def add_focus(self, d, arg=None, x=0, y=0, w=None, h=None, mx=None, my=None, mask=None):             # <<<<<<<<<<<<<<
@@ -13497,7 +13612,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_27add_focus(PyObject *
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_focus") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_focus") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -13526,7 +13641,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_27add_focus(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("add_focus", 0, 1, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("add_focus", 0, 1, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.add_focus", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -13556,7 +13671,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("add_focus", 0);
 
-  /* "renpy/display/render.pyx":920
+  /* "renpy/display/render.pyx":924
  *         """
  * 
  *         if isinstance(mask, Render) and mask is not self:             # <<<<<<<<<<<<<<
@@ -13576,14 +13691,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":921
+    /* "renpy/display/render.pyx":925
  * 
  *         if isinstance(mask, Render) and mask is not self:
  *             self.depends_on(mask)             # <<<<<<<<<<<<<<
  * 
  *         t = (d, arg, x, y, w, h, mx, my, mask)
  */
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_depends_on); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_depends_on); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
     if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
@@ -13596,23 +13711,23 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_mask); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_mask); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_mask);
       __Pyx_GIVEREF(__pyx_v_mask);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_mask);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":920
+    /* "renpy/display/render.pyx":924
  *         """
  * 
  *         if isinstance(mask, Render) and mask is not self:             # <<<<<<<<<<<<<<
@@ -13621,14 +13736,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
  */
   }
 
-  /* "renpy/display/render.pyx":923
+  /* "renpy/display/render.pyx":927
  *             self.depends_on(mask)
  * 
  *         t = (d, arg, x, y, w, h, mx, my, mask)             # <<<<<<<<<<<<<<
  * 
  *         if self.focuses is None:
  */
-  __pyx_t_4 = PyTuple_New(9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyTuple_New(9); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_d);
   __Pyx_GIVEREF(__pyx_v_d);
@@ -13660,7 +13775,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
   __pyx_v_t = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "renpy/display/render.pyx":925
+  /* "renpy/display/render.pyx":929
  *         t = (d, arg, x, y, w, h, mx, my, mask)
  * 
  *         if self.focuses is None:             # <<<<<<<<<<<<<<
@@ -13671,14 +13786,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":926
+    /* "renpy/display/render.pyx":930
  * 
  *         if self.focuses is None:
  *             self.focuses = [ t ]             # <<<<<<<<<<<<<<
  *         else:
  *             self.focuses.append(t)
  */
-    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_t);
     __Pyx_GIVEREF(__pyx_v_t);
@@ -13689,7 +13804,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
     __pyx_v_self->focuses = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":925
+    /* "renpy/display/render.pyx":929
  *         t = (d, arg, x, y, w, h, mx, my, mask)
  * 
  *         if self.focuses is None:             # <<<<<<<<<<<<<<
@@ -13699,7 +13814,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
     goto __pyx_L6;
   }
 
-  /* "renpy/display/render.pyx":928
+  /* "renpy/display/render.pyx":932
  *             self.focuses = [ t ]
  *         else:
  *             self.focuses.append(t)             # <<<<<<<<<<<<<<
@@ -13709,13 +13824,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
   /*else*/ {
     if (unlikely(__pyx_v_self->focuses == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->focuses, __pyx_v_t); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->focuses, __pyx_v_t); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_L6:;
 
-  /* "renpy/display/render.pyx":907
+  /* "renpy/display/render.pyx":911
  *         """
  * 
  *     def add_focus(self, d, arg=None, x=0, y=0, w=None, h=None, mx=None, my=None, mask=None):             # <<<<<<<<<<<<<<
@@ -13740,7 +13855,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_26add_focus(struct __p
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":930
+/* "renpy/display/render.pyx":934
  *             self.focuses.append(t)
  * 
  *     def take_focuses(self, cminx, cminy, cmaxx, cmaxy, reverse, x, y, screen, focuses): #@DuplicatedSignature             # <<<<<<<<<<<<<<
@@ -13794,46 +13909,46 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_29take_focuses(PyObjec
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cminy)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cmaxx)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cmaxy)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_reverse)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  5:
         if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  6:
         if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  7:
         if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_screen)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  8:
         if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_focuses)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "take_focuses") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "take_focuses") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 9) {
       goto __pyx_L5_argtuple_error;
@@ -13860,7 +13975,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_29take_focuses(PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("take_focuses", 1, 9, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.take_focuses", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -13926,7 +14041,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   __Pyx_INCREF(__pyx_v_reverse);
   __Pyx_INCREF(__pyx_v_screen);
 
-  /* "renpy/display/render.pyx":954
+  /* "renpy/display/render.pyx":958
  *         """
  * 
  *         if self.focus_screen is not None:             # <<<<<<<<<<<<<<
@@ -13937,7 +14052,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":955
+    /* "renpy/display/render.pyx":959
  * 
  *         if self.focus_screen is not None:
  *             screen = self.focus_screen             # <<<<<<<<<<<<<<
@@ -13949,7 +14064,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_DECREF_SET(__pyx_v_screen, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":954
+    /* "renpy/display/render.pyx":958
  *         """
  * 
  *         if self.focus_screen is not None:             # <<<<<<<<<<<<<<
@@ -13958,7 +14073,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
   }
 
-  /* "renpy/display/render.pyx":957
+  /* "renpy/display/render.pyx":961
  *             screen = self.focus_screen
  * 
  *         if self.modal:             # <<<<<<<<<<<<<<
@@ -13968,19 +14083,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   __pyx_t_2 = (__pyx_v_self->modal != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":958
+    /* "renpy/display/render.pyx":962
  * 
  *         if self.modal:
  *             focuses[:] = [ ]             # <<<<<<<<<<<<<<
  * 
  *         if self.reverse:
  */
-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_PyObject_SetSlice(__pyx_v_focuses, __pyx_t_3, 0, 0, NULL, NULL, &__pyx_slice__6, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (__Pyx_PyObject_SetSlice(__pyx_v_focuses, __pyx_t_3, 0, 0, NULL, NULL, &__pyx_slice__6, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":957
+    /* "renpy/display/render.pyx":961
  *             screen = self.focus_screen
  * 
  *         if self.modal:             # <<<<<<<<<<<<<<
@@ -13989,29 +14104,29 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
   }
 
-  /* "renpy/display/render.pyx":960
+  /* "renpy/display/render.pyx":964
  *             focuses[:] = [ ]
  * 
  *         if self.reverse:             # <<<<<<<<<<<<<<
  *             reverse = reverse * self.reverse
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->reverse)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->reverse)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 964; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":961
+    /* "renpy/display/render.pyx":965
  * 
  *         if self.reverse:
  *             reverse = reverse * self.reverse             # <<<<<<<<<<<<<<
  * 
  *         if self.focuses:
  */
-    __pyx_t_3 = PyNumber_Multiply(__pyx_v_reverse, ((PyObject *)__pyx_v_self->reverse)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyNumber_Multiply(__pyx_v_reverse, ((PyObject *)__pyx_v_self->reverse)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_reverse, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":960
+    /* "renpy/display/render.pyx":964
  *             focuses[:] = [ ]
  * 
  *         if self.reverse:             # <<<<<<<<<<<<<<
@@ -14020,7 +14135,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
   }
 
-  /* "renpy/display/render.pyx":963
+  /* "renpy/display/render.pyx":967
  *             reverse = reverse * self.reverse
  * 
  *         if self.focuses:             # <<<<<<<<<<<<<<
@@ -14030,7 +14145,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   __pyx_t_2 = (__pyx_v_self->focuses != Py_None) && (PyList_GET_SIZE(__pyx_v_self->focuses) != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":965
+    /* "renpy/display/render.pyx":969
  *         if self.focuses:
  * 
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:             # <<<<<<<<<<<<<<
@@ -14039,15 +14154,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
     if (unlikely(__pyx_v_self->focuses == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_3 = __pyx_v_self->focuses; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     for (;;) {
       if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
       #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       #else
-      __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       #endif
       if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
@@ -14060,7 +14175,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         if (unlikely(size != 9)) {
           if (size > 9) __Pyx_RaiseTooManyValuesError(9);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -14098,7 +14213,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
           Py_ssize_t i;
           PyObject** temps[9] = {&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14};
           for (i=0; i < 9; i++) {
-            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(item);
             *(temps[i]) = item;
           }
@@ -14108,7 +14223,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       } else {
         Py_ssize_t index = -1;
         PyObject** temps[9] = {&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14};
-        __pyx_t_15 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_16 = Py_TYPE(__pyx_t_15)->tp_iternext;
@@ -14117,7 +14232,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
           __Pyx_GOTREF(item);
           *(temps[index]) = item;
         }
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_16 = NULL;
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         goto __pyx_L10_unpacking_done;
@@ -14125,7 +14240,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         __pyx_t_16 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L10_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_6);
@@ -14147,7 +14262,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_XDECREF_SET(__pyx_v_mask, __pyx_t_14);
       __pyx_t_14 = 0;
 
-      /* "renpy/display/render.pyx":967
+      /* "renpy/display/render.pyx":971
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:
  * 
  *                 if xo is None:             # <<<<<<<<<<<<<<
@@ -14158,22 +14273,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "renpy/display/render.pyx":968
+        /* "renpy/display/render.pyx":972
  * 
  *                 if xo is None:
  *                     focuses.append(renpy.display.focus.Focus(d, arg, None, None, None, None, screen))             # <<<<<<<<<<<<<<
  *                     continue
  * 
  */
-        __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_display); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_display); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_focus); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_focus); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_Focus); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_Focus); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_13);
         __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
         __pyx_t_14 = NULL;
@@ -14188,7 +14303,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
             __pyx_t_17 = 1;
           }
         }
-        __pyx_t_12 = PyTuple_New(7+__pyx_t_17); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = PyTuple_New(7+__pyx_t_17); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
         if (__pyx_t_14) {
           __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14); __pyx_t_14 = NULL;
@@ -14214,14 +14329,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_INCREF(__pyx_v_screen);
         __Pyx_GIVEREF(__pyx_v_screen);
         PyTuple_SET_ITEM(__pyx_t_12, 6+__pyx_t_17, __pyx_v_screen);
-        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-        __pyx_t_18 = __Pyx_PyObject_Append(__pyx_v_focuses, __pyx_t_5); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 968; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_18 = __Pyx_PyObject_Append(__pyx_v_focuses, __pyx_t_5); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "renpy/display/render.pyx":969
+        /* "renpy/display/render.pyx":973
  *                 if xo is None:
  *                     focuses.append(renpy.display.focus.Focus(d, arg, None, None, None, None, screen))
  *                     continue             # <<<<<<<<<<<<<<
@@ -14230,7 +14345,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
         goto __pyx_L7_continue;
 
-        /* "renpy/display/render.pyx":967
+        /* "renpy/display/render.pyx":971
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:
  * 
  *                 if xo is None:             # <<<<<<<<<<<<<<
@@ -14239,14 +14354,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
       }
 
-      /* "renpy/display/render.pyx":971
+      /* "renpy/display/render.pyx":975
  *                     continue
  * 
  *                 x1, y1 = reverse.transform(xo, yo)             # <<<<<<<<<<<<<<
  *                 x2, y2 = reverse.transform(xo + w, yo + h)
  * 
  */
-      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse, __pyx_n_s_transform); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse, __pyx_n_s_transform); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
       __pyx_t_12 = NULL;
       __pyx_t_17 = 0;
@@ -14260,7 +14375,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
           __pyx_t_17 = 1;
         }
       }
-      __pyx_t_14 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       if (__pyx_t_12) {
         __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL;
@@ -14271,7 +14386,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_INCREF(__pyx_v_yo);
       __Pyx_GIVEREF(__pyx_v_yo);
       PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_17, __pyx_v_yo);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -14285,7 +14400,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -14298,15 +14413,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_INCREF(__pyx_t_13);
         __Pyx_INCREF(__pyx_t_14);
         #else
-        __pyx_t_13 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_13);
-        __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
         #endif
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_12 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_16 = Py_TYPE(__pyx_t_12)->tp_iternext;
@@ -14314,7 +14429,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_GOTREF(__pyx_t_13);
         index = 1; __pyx_t_14 = __pyx_t_16(__pyx_t_12); if (unlikely(!__pyx_t_14)) goto __pyx_L12_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_14);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_16 = NULL;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         goto __pyx_L13_unpacking_done;
@@ -14322,7 +14437,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __pyx_t_16 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L13_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_13);
@@ -14330,18 +14445,18 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_XDECREF_SET(__pyx_v_y1, __pyx_t_14);
       __pyx_t_14 = 0;
 
-      /* "renpy/display/render.pyx":972
+      /* "renpy/display/render.pyx":976
  * 
  *                 x1, y1 = reverse.transform(xo, yo)
  *                 x2, y2 = reverse.transform(xo + w, yo + h)             # <<<<<<<<<<<<<<
  * 
  *                 minx = min(x1, x2) + x
  */
-      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse, __pyx_n_s_transform); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse, __pyx_n_s_transform); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
-      __pyx_t_13 = PyNumber_Add(__pyx_v_xo, __pyx_v_w); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PyNumber_Add(__pyx_v_xo, __pyx_v_w); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
-      __pyx_t_12 = PyNumber_Add(__pyx_v_yo, __pyx_v_h); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyNumber_Add(__pyx_v_yo, __pyx_v_h); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_11 = NULL;
       __pyx_t_17 = 0;
@@ -14355,7 +14470,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
           __pyx_t_17 = 1;
         }
       }
-      __pyx_t_10 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       if (__pyx_t_11) {
         __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
@@ -14366,7 +14481,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_17, __pyx_t_12);
       __pyx_t_13 = 0;
       __pyx_t_12 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
@@ -14380,7 +14495,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -14393,15 +14508,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_INCREF(__pyx_t_14);
         __Pyx_INCREF(__pyx_t_10);
         #else
-        __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_14);
-        __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
         #endif
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_12 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_16 = Py_TYPE(__pyx_t_12)->tp_iternext;
@@ -14409,7 +14524,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_GOTREF(__pyx_t_14);
         index = 1; __pyx_t_10 = __pyx_t_16(__pyx_t_12); if (unlikely(!__pyx_t_10)) goto __pyx_L14_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_10);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_16 = NULL;
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         goto __pyx_L15_unpacking_done;
@@ -14417,7 +14532,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
         __pyx_t_16 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L15_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_v_x2, __pyx_t_14);
@@ -14425,7 +14540,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_XDECREF_SET(__pyx_v_y2, __pyx_t_10);
       __pyx_t_10 = 0;
 
-      /* "renpy/display/render.pyx":974
+      /* "renpy/display/render.pyx":978
  *                 x2, y2 = reverse.transform(xo + w, yo + h)
  * 
  *                 minx = min(x1, x2) + x             # <<<<<<<<<<<<<<
@@ -14436,8 +14551,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_x2;
       __Pyx_INCREF(__pyx_v_x1);
       __pyx_t_10 = __pyx_v_x1;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14448,13 +14563,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyNumber_Add(__pyx_t_14, __pyx_v_x); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Add(__pyx_t_14, __pyx_v_x); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_XDECREF_SET(__pyx_v_minx, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":975
+      /* "renpy/display/render.pyx":979
  * 
  *                 minx = min(x1, x2) + x
  *                 miny = min(y1, y2) + y             # <<<<<<<<<<<<<<
@@ -14465,8 +14580,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_y2;
       __Pyx_INCREF(__pyx_v_y1);
       __pyx_t_14 = __pyx_v_y1;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14477,13 +14592,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       }
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyNumber_Add(__pyx_t_10, __pyx_v_y); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Add(__pyx_t_10, __pyx_v_y); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_XDECREF_SET(__pyx_v_miny, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":976
+      /* "renpy/display/render.pyx":980
  *                 minx = min(x1, x2) + x
  *                 miny = min(y1, y2) + y
  *                 maxx = max(x1, x2) + x             # <<<<<<<<<<<<<<
@@ -14494,8 +14609,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_x2;
       __Pyx_INCREF(__pyx_v_x1);
       __pyx_t_10 = __pyx_v_x1;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14506,13 +14621,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       }
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyNumber_Add(__pyx_t_14, __pyx_v_x); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Add(__pyx_t_14, __pyx_v_x); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_XDECREF_SET(__pyx_v_maxx, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":977
+      /* "renpy/display/render.pyx":981
  *                 miny = min(y1, y2) + y
  *                 maxx = max(x1, x2) + x
  *                 maxy = max(y1, y2) + y             # <<<<<<<<<<<<<<
@@ -14523,8 +14638,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_y2;
       __Pyx_INCREF(__pyx_v_y1);
       __pyx_t_14 = __pyx_v_y1;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14535,13 +14650,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       }
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = PyNumber_Add(__pyx_t_10, __pyx_v_y); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyNumber_Add(__pyx_t_10, __pyx_v_y); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_XDECREF_SET(__pyx_v_maxy, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":979
+      /* "renpy/display/render.pyx":983
  *                 maxy = max(y1, y2) + y
  * 
  *                 minx = max(minx, cminx)             # <<<<<<<<<<<<<<
@@ -14552,8 +14667,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_cminx;
       __Pyx_INCREF(__pyx_v_minx);
       __pyx_t_10 = __pyx_v_minx;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14570,7 +14685,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_DECREF_SET(__pyx_v_minx, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":980
+      /* "renpy/display/render.pyx":984
  * 
  *                 minx = max(minx, cminx)
  *                 miny = max(miny, cminy)             # <<<<<<<<<<<<<<
@@ -14581,8 +14696,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_cminy;
       __Pyx_INCREF(__pyx_v_miny);
       __pyx_t_14 = __pyx_v_miny;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14599,7 +14714,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_DECREF_SET(__pyx_v_miny, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":981
+      /* "renpy/display/render.pyx":985
  *                 minx = max(minx, cminx)
  *                 miny = max(miny, cminy)
  *                 maxx = min(maxx, cmaxx)             # <<<<<<<<<<<<<<
@@ -14610,8 +14725,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_cmaxx;
       __Pyx_INCREF(__pyx_v_maxx);
       __pyx_t_10 = __pyx_v_maxx;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_10, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14628,7 +14743,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_DECREF_SET(__pyx_v_maxx, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":982
+      /* "renpy/display/render.pyx":986
  *                 miny = max(miny, cminy)
  *                 maxx = min(maxx, cmaxx)
  *                 maxy = min(maxy, cmaxy)             # <<<<<<<<<<<<<<
@@ -14639,8 +14754,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __pyx_t_5 = __pyx_v_cmaxy;
       __Pyx_INCREF(__pyx_v_maxy);
       __pyx_t_14 = __pyx_v_maxy;
-      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyObject_RichCompare(__pyx_t_5, __pyx_t_14, Py_LT); __Pyx_XGOTREF(__pyx_t_12); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       if (__pyx_t_1) {
         __Pyx_INCREF(__pyx_t_5);
@@ -14657,29 +14772,29 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_DECREF_SET(__pyx_v_maxy, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":984
+      /* "renpy/display/render.pyx":988
  *                 maxy = min(maxy, cmaxy)
  * 
  *                 if minx >= maxx or miny >= maxy:             # <<<<<<<<<<<<<<
  *                     continue
  * 
  */
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_minx, __pyx_v_maxx, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_minx, __pyx_v_maxx, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_1 = __pyx_t_2;
         goto __pyx_L17_bool_binop_done;
       }
-      __pyx_t_5 = PyObject_RichCompare(__pyx_v_miny, __pyx_v_maxy, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = PyObject_RichCompare(__pyx_v_miny, __pyx_v_maxy, Py_GE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_1 = __pyx_t_2;
       __pyx_L17_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "renpy/display/render.pyx":985
+        /* "renpy/display/render.pyx":989
  * 
  *                 if minx >= maxx or miny >= maxy:
  *                     continue             # <<<<<<<<<<<<<<
@@ -14688,7 +14803,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
         goto __pyx_L7_continue;
 
-        /* "renpy/display/render.pyx":984
+        /* "renpy/display/render.pyx":988
  *                 maxy = min(maxy, cmaxy)
  * 
  *                 if minx >= maxx or miny >= maxy:             # <<<<<<<<<<<<<<
@@ -14697,27 +14812,27 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
       }
 
-      /* "renpy/display/render.pyx":987
+      /* "renpy/display/render.pyx":991
  *                     continue
  * 
  *                 focuses.append(renpy.display.focus.Focus(d, arg, minx, miny, maxx - minx, maxy - miny, screen))             # <<<<<<<<<<<<<<
  * 
  *         if self.clipping:
  */
-      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_display); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_display); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_focus); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_focus); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_Focus); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_Focus); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_14);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-      __pyx_t_10 = PyNumber_Subtract(__pyx_v_maxx, __pyx_v_minx); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyNumber_Subtract(__pyx_v_maxx, __pyx_v_minx); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
-      __pyx_t_12 = PyNumber_Subtract(__pyx_v_maxy, __pyx_v_miny); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyNumber_Subtract(__pyx_v_maxy, __pyx_v_miny); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_13 = NULL;
       __pyx_t_17 = 0;
@@ -14731,7 +14846,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
           __pyx_t_17 = 1;
         }
       }
-      __pyx_t_11 = PyTuple_New(7+__pyx_t_17); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = PyTuple_New(7+__pyx_t_17); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       if (__pyx_t_13) {
         __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __pyx_t_13 = NULL;
@@ -14757,14 +14872,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       PyTuple_SET_ITEM(__pyx_t_11, 6+__pyx_t_17, __pyx_v_screen);
       __pyx_t_10 = 0;
       __pyx_t_12 = 0;
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
-      __pyx_t_18 = __Pyx_PyObject_Append(__pyx_v_focuses, __pyx_t_5); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_18 = __Pyx_PyObject_Append(__pyx_v_focuses, __pyx_t_5); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "renpy/display/render.pyx":965
+      /* "renpy/display/render.pyx":969
  *         if self.focuses:
  * 
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:             # <<<<<<<<<<<<<<
@@ -14775,7 +14890,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":963
+    /* "renpy/display/render.pyx":967
  *             reverse = reverse * self.reverse
  * 
  *         if self.focuses:             # <<<<<<<<<<<<<<
@@ -14784,7 +14899,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
   }
 
-  /* "renpy/display/render.pyx":989
+  /* "renpy/display/render.pyx":993
  *                 focuses.append(renpy.display.focus.Focus(d, arg, minx, miny, maxx - minx, maxy - miny, screen))
  * 
  *         if self.clipping:             # <<<<<<<<<<<<<<
@@ -14794,7 +14909,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   __pyx_t_1 = (__pyx_v_self->clipping != 0);
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":990
+    /* "renpy/display/render.pyx":994
  * 
  *         if self.clipping:
  *             cminx = max(cminx, x)             # <<<<<<<<<<<<<<
@@ -14805,8 +14920,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __pyx_t_3 = __pyx_v_x;
     __Pyx_INCREF(__pyx_v_cminx);
     __pyx_t_5 = __pyx_v_cminx;
-    __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_GT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_GT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     if (__pyx_t_1) {
       __Pyx_INCREF(__pyx_t_3);
@@ -14823,7 +14938,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_DECREF_SET(__pyx_v_cminx, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":991
+    /* "renpy/display/render.pyx":995
  *         if self.clipping:
  *             cminx = max(cminx, x)
  *             cminy = max(cminy, y)             # <<<<<<<<<<<<<<
@@ -14834,8 +14949,8 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __pyx_t_3 = __pyx_v_y;
     __Pyx_INCREF(__pyx_v_cminy);
     __pyx_t_14 = __pyx_v_cminy;
-    __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_14, Py_GT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     if (__pyx_t_1) {
       __Pyx_INCREF(__pyx_t_3);
@@ -14852,22 +14967,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_DECREF_SET(__pyx_v_cminy, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":992
+    /* "renpy/display/render.pyx":996
  *             cminx = max(cminx, x)
  *             cminy = max(cminy, y)
  *             cmaxx = min(cmaxx, x + self.width)             # <<<<<<<<<<<<<<
  *             cmaxy = min(cmaxx, x + self.height)
  * 
  */
-    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = PyNumber_Add(__pyx_v_x, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyNumber_Add(__pyx_v_x, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_INCREF(__pyx_v_cmaxx);
     __pyx_t_3 = __pyx_v_cmaxx;
-    __pyx_t_11 = PyObject_RichCompare(__pyx_t_5, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_RichCompare(__pyx_t_5, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     if (__pyx_t_1) {
       __Pyx_INCREF(__pyx_t_5);
@@ -14884,22 +14999,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_DECREF_SET(__pyx_v_cmaxx, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":993
+    /* "renpy/display/render.pyx":997
  *             cminy = max(cminy, y)
  *             cmaxx = min(cmaxx, x + self.width)
  *             cmaxy = min(cmaxx, x + self.height)             # <<<<<<<<<<<<<<
  * 
  *         for child, xo, yo, focus, main in self.children:
  */
-    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_14 = PyNumber_Add(__pyx_v_x, __pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_14 = PyNumber_Add(__pyx_v_x, __pyx_t_5); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_14);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_INCREF(__pyx_v_cmaxx);
     __pyx_t_5 = __pyx_v_cmaxx;
-    __pyx_t_11 = PyObject_RichCompare(__pyx_t_14, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = PyObject_RichCompare(__pyx_t_14, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     if (__pyx_t_1) {
       __Pyx_INCREF(__pyx_t_14);
@@ -14916,7 +15031,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_DECREF_SET(__pyx_v_cmaxy, __pyx_t_14);
     __pyx_t_14 = 0;
 
-    /* "renpy/display/render.pyx":989
+    /* "renpy/display/render.pyx":993
  *                 focuses.append(renpy.display.focus.Focus(d, arg, minx, miny, maxx - minx, maxy - miny, screen))
  * 
  *         if self.clipping:             # <<<<<<<<<<<<<<
@@ -14925,7 +15040,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
   }
 
-  /* "renpy/display/render.pyx":995
+  /* "renpy/display/render.pyx":999
  *             cmaxy = min(cmaxx, x + self.height)
  * 
  *         for child, xo, yo, focus, main in self.children:             # <<<<<<<<<<<<<<
@@ -14934,15 +15049,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
   if (unlikely(__pyx_v_self->children == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_14 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_14); __pyx_t_4 = 0;
   for (;;) {
     if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_14)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_3 = PySequence_ITEM(__pyx_t_14, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PySequence_ITEM(__pyx_t_14, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
@@ -14955,7 +15070,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       if (unlikely(size != 5)) {
         if (size > 5) __Pyx_RaiseTooManyValuesError(5);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -14981,7 +15096,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         Py_ssize_t i;
         PyObject** temps[5] = {&__pyx_t_5,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_13};
         for (i=0; i < 5; i++) {
-          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(item);
           *(temps[i]) = item;
         }
@@ -14991,7 +15106,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     } else {
       Py_ssize_t index = -1;
       PyObject** temps[5] = {&__pyx_t_5,&__pyx_t_11,&__pyx_t_12,&__pyx_t_10,&__pyx_t_13};
-      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_16 = Py_TYPE(__pyx_t_9)->tp_iternext;
@@ -15000,7 +15115,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __Pyx_GOTREF(item);
         *(temps[index]) = item;
       }
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_9), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_9), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_16 = NULL;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       goto __pyx_L23_unpacking_done;
@@ -15008,7 +15123,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __pyx_t_16 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L23_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_5);
@@ -15022,14 +15137,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_XDECREF_SET(__pyx_v_main, __pyx_t_13);
     __pyx_t_13 = 0;
 
-    /* "renpy/display/render.pyx":996
+    /* "renpy/display/render.pyx":1000
  * 
  *         for child, xo, yo, focus, main in self.children:
  *             if not focus or not isinstance(child, Render):             # <<<<<<<<<<<<<<
  *                 continue
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_19 = ((!__pyx_t_2) != 0);
     if (!__pyx_t_19) {
     } else {
@@ -15042,7 +15157,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __pyx_L25_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "renpy/display/render.pyx":997
+      /* "renpy/display/render.pyx":1001
  *         for child, xo, yo, focus, main in self.children:
  *             if not focus or not isinstance(child, Render):
  *                 continue             # <<<<<<<<<<<<<<
@@ -15051,7 +15166,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
       goto __pyx_L20_continue;
 
-      /* "renpy/display/render.pyx":996
+      /* "renpy/display/render.pyx":1000
  * 
  *         for child, xo, yo, focus, main in self.children:
  *             if not focus or not isinstance(child, Render):             # <<<<<<<<<<<<<<
@@ -15060,14 +15175,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
     }
 
-    /* "renpy/display/render.pyx":999
+    /* "renpy/display/render.pyx":1003
  *                 continue
  * 
  *             xo, yo = reverse.transform(xo, yo)             # <<<<<<<<<<<<<<
  *             child.take_focuses(cminx, cminy, cmaxx, cmaxy, reverse, x + xo, y + yo, screen, focuses)
  * 
  */
-    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse, __pyx_n_s_transform); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse, __pyx_n_s_transform); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_13);
     __pyx_t_10 = NULL;
     __pyx_t_17 = 0;
@@ -15081,7 +15196,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __pyx_t_17 = 1;
       }
     }
-    __pyx_t_12 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = PyTuple_New(2+__pyx_t_17); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
     if (__pyx_t_10) {
       __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL;
@@ -15092,7 +15207,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_INCREF(__pyx_v_yo);
     __Pyx_GIVEREF(__pyx_v_yo);
     PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_17, __pyx_v_yo);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
@@ -15106,7 +15221,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -15119,15 +15234,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_INCREF(__pyx_t_13);
       __Pyx_INCREF(__pyx_t_12);
       #else
-      __pyx_t_13 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
-      __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       #endif
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_10 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_16 = Py_TYPE(__pyx_t_10)->tp_iternext;
@@ -15135,7 +15250,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_GOTREF(__pyx_t_13);
       index = 1; __pyx_t_12 = __pyx_t_16(__pyx_t_10); if (unlikely(!__pyx_t_12)) goto __pyx_L27_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_12);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_16 = NULL;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       goto __pyx_L28_unpacking_done;
@@ -15143,7 +15258,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __pyx_t_16 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 999; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L28_unpacking_done:;
     }
     __Pyx_DECREF_SET(__pyx_v_xo, __pyx_t_13);
@@ -15151,18 +15266,18 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     __Pyx_DECREF_SET(__pyx_v_yo, __pyx_t_12);
     __pyx_t_12 = 0;
 
-    /* "renpy/display/render.pyx":1000
+    /* "renpy/display/render.pyx":1004
  * 
  *             xo, yo = reverse.transform(xo, yo)
  *             child.take_focuses(cminx, cminy, cmaxx, cmaxy, reverse, x + xo, y + yo, screen, focuses)             # <<<<<<<<<<<<<<
  * 
  *         if self.pass_focuses:
  */
-    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_take_focuses); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_take_focuses); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
-    __pyx_t_13 = PyNumber_Add(__pyx_v_x, __pyx_v_xo); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_13 = PyNumber_Add(__pyx_v_x, __pyx_v_xo); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_13);
-    __pyx_t_10 = PyNumber_Add(__pyx_v_y, __pyx_v_yo); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_10 = PyNumber_Add(__pyx_v_y, __pyx_v_yo); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_10);
     __pyx_t_11 = NULL;
     __pyx_t_17 = 0;
@@ -15176,7 +15291,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
         __pyx_t_17 = 1;
       }
     }
-    __pyx_t_5 = PyTuple_New(9+__pyx_t_17); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(9+__pyx_t_17); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_11) {
       __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_11); __pyx_t_11 = NULL;
@@ -15208,13 +15323,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_17, __pyx_v_focuses);
     __pyx_t_13 = 0;
     __pyx_t_10 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1000; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":995
+    /* "renpy/display/render.pyx":999
  *             cmaxy = min(cmaxx, x + self.height)
  * 
  *         for child, xo, yo, focus, main in self.children:             # <<<<<<<<<<<<<<
@@ -15225,7 +15340,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   }
   __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
 
-  /* "renpy/display/render.pyx":1002
+  /* "renpy/display/render.pyx":1006
  *             child.take_focuses(cminx, cminy, cmaxx, cmaxy, reverse, x + xo, y + yo, screen, focuses)
  * 
  *         if self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -15235,7 +15350,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   __pyx_t_1 = (__pyx_v_self->pass_focuses != Py_None) && (PyList_GET_SIZE(__pyx_v_self->pass_focuses) != 0);
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":1003
+    /* "renpy/display/render.pyx":1007
  * 
  *         if self.pass_focuses:
  *             for child in self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -15244,28 +15359,28 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
     if (unlikely(__pyx_v_self->pass_focuses == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_14 = __pyx_v_self->pass_focuses; __Pyx_INCREF(__pyx_t_14); __pyx_t_4 = 0;
     for (;;) {
       if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_14)) break;
       #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_14, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       #else
-      __pyx_t_3 = PySequence_ITEM(__pyx_t_14, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PySequence_ITEM(__pyx_t_14, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       #endif
       __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "renpy/display/render.pyx":1004
+      /* "renpy/display/render.pyx":1008
  *         if self.pass_focuses:
  *             for child in self.pass_focuses:
  *                 child.take_focuses(cminx, cminy, cmaxx, cmaxy, reverse, x, y, screen, focuses)             # <<<<<<<<<<<<<<
  * 
  *     def focus_at_point(self, x, y, screen): #@DuplicatedSignature
  */
-      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_take_focuses); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_take_focuses); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_5 = NULL;
       __pyx_t_17 = 0;
@@ -15279,7 +15394,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
           __pyx_t_17 = 1;
         }
       }
-      __pyx_t_10 = PyTuple_New(9+__pyx_t_17); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(9+__pyx_t_17); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       if (__pyx_t_5) {
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -15311,13 +15426,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
       __Pyx_INCREF(__pyx_v_focuses);
       __Pyx_GIVEREF(__pyx_v_focuses);
       PyTuple_SET_ITEM(__pyx_t_10, 8+__pyx_t_17, __pyx_v_focuses);
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "renpy/display/render.pyx":1003
+      /* "renpy/display/render.pyx":1007
  * 
  *         if self.pass_focuses:
  *             for child in self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -15327,7 +15442,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
     }
     __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
 
-    /* "renpy/display/render.pyx":1002
+    /* "renpy/display/render.pyx":1006
  *             child.take_focuses(cminx, cminy, cmaxx, cmaxy, reverse, x + xo, y + yo, screen, focuses)
  * 
  *         if self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -15336,7 +15451,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
  */
   }
 
-  /* "renpy/display/render.pyx":930
+  /* "renpy/display/render.pyx":934
  *             self.focuses.append(t)
  * 
  *     def take_focuses(self, cminx, cminy, cmaxx, cmaxy, reverse, x, y, screen, focuses): #@DuplicatedSignature             # <<<<<<<<<<<<<<
@@ -15394,7 +15509,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_28take_focuses(struct
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1006
+/* "renpy/display/render.pyx":1010
  *                 child.take_focuses(cminx, cminy, cmaxx, cmaxy, reverse, x, y, screen, focuses)
  * 
  *     def focus_at_point(self, x, y, screen): #@DuplicatedSignature             # <<<<<<<<<<<<<<
@@ -15436,16 +15551,16 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_31focus_at_point(PyObj
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("focus_at_point", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("focus_at_point", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_screen)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("focus_at_point", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("focus_at_point", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "focus_at_point") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "focus_at_point") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -15460,7 +15575,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_31focus_at_point(PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("focus_at_point", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1006; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("focus_at_point", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.focus_at_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -15518,7 +15633,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __Pyx_RefNannySetupContext("focus_at_point", 0);
   __Pyx_INCREF(__pyx_v_screen);
 
-  /* "renpy/display/render.pyx":1011
+  /* "renpy/display/render.pyx":1015
  *         """
  * 
  *         if self.focus_screen is not None:             # <<<<<<<<<<<<<<
@@ -15529,7 +15644,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1012
+    /* "renpy/display/render.pyx":1016
  * 
  *         if self.focus_screen is not None:
  *             screen = self.focus_screen             # <<<<<<<<<<<<<<
@@ -15541,7 +15656,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     __Pyx_DECREF_SET(__pyx_v_screen, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":1011
+    /* "renpy/display/render.pyx":1015
  *         """
  * 
  *         if self.focus_screen is not None:             # <<<<<<<<<<<<<<
@@ -15550,7 +15665,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
   }
 
-  /* "renpy/display/render.pyx":1014
+  /* "renpy/display/render.pyx":1018
  *             screen = self.focus_screen
  * 
  *         if self.clipping:             # <<<<<<<<<<<<<<
@@ -15560,51 +15675,51 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __pyx_t_2 = (__pyx_v_self->clipping != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1015
+    /* "renpy/display/render.pyx":1019
  * 
  *         if self.clipping:
  *             if x < 0 or x >= self.width or y < 0 or y >= self.height:             # <<<<<<<<<<<<<<
  *                 return None
  * 
  */
-    __pyx_t_3 = PyObject_RichCompare(__pyx_v_x, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_v_x, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (!__pyx_t_1) {
     } else {
       __pyx_t_2 = __pyx_t_1;
       goto __pyx_L6_bool_binop_done;
     }
-    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (!__pyx_t_1) {
     } else {
       __pyx_t_2 = __pyx_t_1;
       goto __pyx_L6_bool_binop_done;
     }
-    __pyx_t_4 = PyObject_RichCompare(__pyx_v_y, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyObject_RichCompare(__pyx_v_y, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if (!__pyx_t_1) {
     } else {
       __pyx_t_2 = __pyx_t_1;
       goto __pyx_L6_bool_binop_done;
     }
-    __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = PyObject_RichCompare(__pyx_v_y, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyObject_RichCompare(__pyx_v_y, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = __pyx_t_1;
     __pyx_L6_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "renpy/display/render.pyx":1016
+      /* "renpy/display/render.pyx":1020
  *         if self.clipping:
  *             if x < 0 or x >= self.width or y < 0 or y >= self.height:
  *                 return None             # <<<<<<<<<<<<<<
@@ -15616,7 +15731,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __pyx_r = Py_None;
       goto __pyx_L0;
 
-      /* "renpy/display/render.pyx":1015
+      /* "renpy/display/render.pyx":1019
  * 
  *         if self.clipping:
  *             if x < 0 or x >= self.width or y < 0 or y >= self.height:             # <<<<<<<<<<<<<<
@@ -15625,7 +15740,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     }
 
-    /* "renpy/display/render.pyx":1014
+    /* "renpy/display/render.pyx":1018
  *             screen = self.focus_screen
  * 
  *         if self.clipping:             # <<<<<<<<<<<<<<
@@ -15634,25 +15749,25 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
   }
 
-  /* "renpy/display/render.pyx":1018
+  /* "renpy/display/render.pyx":1022
  *                 return None
  * 
  *         if self.operation == IMAGEDISSOLVE:             # <<<<<<<<<<<<<<
  *             if not self.children[0][0].is_pixel_opaque(x, y):
  *                 return None
  */
-  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->operation); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->operation); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_IMAGEDISSOLVE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_IMAGEDISSOLVE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1019
+    /* "renpy/display/render.pyx":1023
  * 
  *         if self.operation == IMAGEDISSOLVE:
  *             if not self.children[0][0].is_pixel_opaque(x, y):             # <<<<<<<<<<<<<<
@@ -15661,14 +15776,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     if (unlikely(__pyx_v_self->children == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
-    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->children, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_self->children, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
+    __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_is_pixel_opaque); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_is_pixel_opaque); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_3 = NULL;
@@ -15683,7 +15798,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_3) {
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
@@ -15694,16 +15809,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     __Pyx_INCREF(__pyx_v_y);
     __Pyx_GIVEREF(__pyx_v_y);
     PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_y);
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_1 = ((!__pyx_t_2) != 0);
     if (__pyx_t_1) {
 
-      /* "renpy/display/render.pyx":1020
+      /* "renpy/display/render.pyx":1024
  *         if self.operation == IMAGEDISSOLVE:
  *             if not self.children[0][0].is_pixel_opaque(x, y):
  *                 return None             # <<<<<<<<<<<<<<
@@ -15715,7 +15830,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __pyx_r = Py_None;
       goto __pyx_L0;
 
-      /* "renpy/display/render.pyx":1019
+      /* "renpy/display/render.pyx":1023
  * 
  *         if self.operation == IMAGEDISSOLVE:
  *             if not self.children[0][0].is_pixel_opaque(x, y):             # <<<<<<<<<<<<<<
@@ -15724,7 +15839,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     }
 
-    /* "renpy/display/render.pyx":1018
+    /* "renpy/display/render.pyx":1022
  *                 return None
  * 
  *         if self.operation == IMAGEDISSOLVE:             # <<<<<<<<<<<<<<
@@ -15733,7 +15848,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
   }
 
-  /* "renpy/display/render.pyx":1022
+  /* "renpy/display/render.pyx":1026
  *                 return None
  * 
  *         rv = None             # <<<<<<<<<<<<<<
@@ -15743,7 +15858,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __Pyx_INCREF(Py_None);
   __pyx_v_rv = Py_None;
 
-  /* "renpy/display/render.pyx":1024
+  /* "renpy/display/render.pyx":1028
  *         rv = None
  * 
  *         if self.focuses:             # <<<<<<<<<<<<<<
@@ -15753,7 +15868,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __pyx_t_1 = (__pyx_v_self->focuses != Py_None) && (PyList_GET_SIZE(__pyx_v_self->focuses) != 0);
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":1025
+    /* "renpy/display/render.pyx":1029
  * 
  *         if self.focuses:
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:             # <<<<<<<<<<<<<<
@@ -15762,15 +15877,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     if (unlikely(__pyx_v_self->focuses == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_5 = __pyx_v_self->focuses; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
     for (;;) {
       if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
       #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       #else
-      __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       #endif
       if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -15783,7 +15898,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         if (unlikely(size != 9)) {
           if (size > 9) __Pyx_RaiseTooManyValuesError(9);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -15821,7 +15936,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
           Py_ssize_t i;
           PyObject** temps[9] = {&__pyx_t_7,&__pyx_t_3,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14};
           for (i=0; i < 9; i++) {
-            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(item);
             *(temps[i]) = item;
           }
@@ -15831,7 +15946,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       } else {
         Py_ssize_t index = -1;
         PyObject** temps[9] = {&__pyx_t_7,&__pyx_t_3,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12,&__pyx_t_13,&__pyx_t_14};
-        __pyx_t_15 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_15 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_15);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_16 = Py_TYPE(__pyx_t_15)->tp_iternext;
@@ -15840,7 +15955,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
           __Pyx_GOTREF(item);
           *(temps[index]) = item;
         }
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_16 = NULL;
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         goto __pyx_L16_unpacking_done;
@@ -15848,7 +15963,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
         __pyx_t_16 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L16_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_7);
@@ -15870,7 +15985,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __Pyx_XDECREF_SET(__pyx_v_mask, __pyx_t_14);
       __pyx_t_14 = 0;
 
-      /* "renpy/display/render.pyx":1027
+      /* "renpy/display/render.pyx":1031
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:
  * 
  *                 if xo is None:             # <<<<<<<<<<<<<<
@@ -15881,7 +15996,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "renpy/display/render.pyx":1028
+        /* "renpy/display/render.pyx":1032
  * 
  *                 if xo is None:
  *                     continue             # <<<<<<<<<<<<<<
@@ -15890,7 +16005,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
         goto __pyx_L13_continue;
 
-        /* "renpy/display/render.pyx":1027
+        /* "renpy/display/render.pyx":1031
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:
  * 
  *                 if xo is None:             # <<<<<<<<<<<<<<
@@ -15899,7 +16014,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
       }
 
-      /* "renpy/display/render.pyx":1030
+      /* "renpy/display/render.pyx":1034
  *                     continue
  * 
  *                 elif mx is not None:             # <<<<<<<<<<<<<<
@@ -15910,50 +16025,50 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "renpy/display/render.pyx":1031
+        /* "renpy/display/render.pyx":1035
  * 
  *                 elif mx is not None:
  *                     cx = x - mx             # <<<<<<<<<<<<<<
  *                     cy = y - my
  * 
  */
-        __pyx_t_4 = PyNumber_Subtract(__pyx_v_x, __pyx_v_mx); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyNumber_Subtract(__pyx_v_x, __pyx_v_mx); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_XDECREF_SET(__pyx_v_cx, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "renpy/display/render.pyx":1032
+        /* "renpy/display/render.pyx":1036
  *                 elif mx is not None:
  *                     cx = x - mx
  *                     cy = y - my             # <<<<<<<<<<<<<<
  * 
  *                     if self.forward:
  */
-        __pyx_t_4 = PyNumber_Subtract(__pyx_v_y, __pyx_v_my); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyNumber_Subtract(__pyx_v_y, __pyx_v_my); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1036; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_XDECREF_SET(__pyx_v_cy, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "renpy/display/render.pyx":1034
+        /* "renpy/display/render.pyx":1038
  *                     cy = y - my
  * 
  *                     if self.forward:             # <<<<<<<<<<<<<<
  *                         cx, cy = self.forward.transform(cx, cy)
  * 
  */
-        __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         if (__pyx_t_1) {
 
-          /* "renpy/display/render.pyx":1035
+          /* "renpy/display/render.pyx":1039
  * 
  *                     if self.forward:
  *                         cx, cy = self.forward.transform(cx, cy)             # <<<<<<<<<<<<<<
  * 
  *                     if isinstance(mask, Render):
  */
-          __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_v_cx); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_v_cy); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-          __pyx_t_4 = ((struct __pyx_vtabstruct_5renpy_7display_6render_Matrix2D *)__pyx_v_self->forward->__pyx_vtab)->transform(__pyx_v_self->forward, __pyx_t_17, __pyx_t_18, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_v_cx); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_v_cy); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = ((struct __pyx_vtabstruct_5renpy_7display_6render_Matrix2D *)__pyx_v_self->forward->__pyx_vtab)->transform(__pyx_v_self->forward, __pyx_t_17, __pyx_t_18, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           if (likely(__pyx_t_4 != Py_None)) {
             PyObject* sequence = __pyx_t_4;
@@ -15965,7 +16080,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
             if (unlikely(size != 2)) {
               if (size > 2) __Pyx_RaiseTooManyValuesError(2);
               else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             }
             #if CYTHON_COMPILING_IN_CPYTHON
             __pyx_t_14 = PyTuple_GET_ITEM(sequence, 0); 
@@ -15973,21 +16088,21 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
             __Pyx_INCREF(__pyx_t_14);
             __Pyx_INCREF(__pyx_t_13);
             #else
-            __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_14 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_14);
-            __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_13 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_13);
             #endif
             __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           } else {
-            __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           __Pyx_DECREF_SET(__pyx_v_cx, __pyx_t_14);
           __pyx_t_14 = 0;
           __Pyx_DECREF_SET(__pyx_v_cy, __pyx_t_13);
           __pyx_t_13 = 0;
 
-          /* "renpy/display/render.pyx":1034
+          /* "renpy/display/render.pyx":1038
  *                     cy = y - my
  * 
  *                     if self.forward:             # <<<<<<<<<<<<<<
@@ -15996,7 +16111,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
         }
 
-        /* "renpy/display/render.pyx":1037
+        /* "renpy/display/render.pyx":1041
  *                         cx, cy = self.forward.transform(cx, cy)
  * 
  *                     if isinstance(mask, Render):             # <<<<<<<<<<<<<<
@@ -16007,14 +16122,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "renpy/display/render.pyx":1038
+          /* "renpy/display/render.pyx":1042
  * 
  *                     if isinstance(mask, Render):
  *                         if mask.is_pixel_opaque(cx, cy):             # <<<<<<<<<<<<<<
  *                             rv = d, arg, screen
  *                     else:
  */
-          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_is_pixel_opaque); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_mask, __pyx_n_s_is_pixel_opaque); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_13);
           __pyx_t_14 = NULL;
           __pyx_t_19 = 0;
@@ -16028,7 +16143,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
               __pyx_t_19 = 1;
             }
           }
-          __pyx_t_12 = PyTuple_New(2+__pyx_t_19); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_12 = PyTuple_New(2+__pyx_t_19); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_12);
           if (__pyx_t_14) {
             __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14); __pyx_t_14 = NULL;
@@ -16039,22 +16154,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
           __Pyx_INCREF(__pyx_v_cy);
           __Pyx_GIVEREF(__pyx_v_cy);
           PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_19, __pyx_v_cy);
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           if (__pyx_t_2) {
 
-            /* "renpy/display/render.pyx":1039
+            /* "renpy/display/render.pyx":1043
  *                     if isinstance(mask, Render):
  *                         if mask.is_pixel_opaque(cx, cy):
  *                             rv = d, arg, screen             # <<<<<<<<<<<<<<
  *                     else:
  *                         if mask(cx, cy):
  */
-            __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
             __Pyx_INCREF(__pyx_v_d);
             __Pyx_GIVEREF(__pyx_v_d);
@@ -16068,7 +16183,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
             __Pyx_DECREF_SET(__pyx_v_rv, __pyx_t_4);
             __pyx_t_4 = 0;
 
-            /* "renpy/display/render.pyx":1038
+            /* "renpy/display/render.pyx":1042
  * 
  *                     if isinstance(mask, Render):
  *                         if mask.is_pixel_opaque(cx, cy):             # <<<<<<<<<<<<<<
@@ -16077,7 +16192,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
           }
 
-          /* "renpy/display/render.pyx":1037
+          /* "renpy/display/render.pyx":1041
  *                         cx, cy = self.forward.transform(cx, cy)
  * 
  *                     if isinstance(mask, Render):             # <<<<<<<<<<<<<<
@@ -16087,7 +16202,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
           goto __pyx_L19;
         }
 
-        /* "renpy/display/render.pyx":1041
+        /* "renpy/display/render.pyx":1045
  *                             rv = d, arg, screen
  *                     else:
  *                         if mask(cx, cy):             # <<<<<<<<<<<<<<
@@ -16108,7 +16223,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
               __pyx_t_19 = 1;
             }
           }
-          __pyx_t_14 = PyTuple_New(2+__pyx_t_19); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_14 = PyTuple_New(2+__pyx_t_19); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_14);
           if (__pyx_t_12) {
             __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL;
@@ -16119,22 +16234,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
           __Pyx_INCREF(__pyx_v_cy);
           __Pyx_GIVEREF(__pyx_v_cy);
           PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_19, __pyx_v_cy);
-          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_14, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
           __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
           if (__pyx_t_2) {
 
-            /* "renpy/display/render.pyx":1042
+            /* "renpy/display/render.pyx":1046
  *                     else:
  *                         if mask(cx, cy):
  *                             rv = d, arg, screen             # <<<<<<<<<<<<<<
  * 
  *                 elif xo <= x < xo + w and yo <= y < yo + h:
  */
-            __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
             __Pyx_GOTREF(__pyx_t_4);
             __Pyx_INCREF(__pyx_v_d);
             __Pyx_GIVEREF(__pyx_v_d);
@@ -16148,7 +16263,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
             __Pyx_DECREF_SET(__pyx_v_rv, __pyx_t_4);
             __pyx_t_4 = 0;
 
-            /* "renpy/display/render.pyx":1041
+            /* "renpy/display/render.pyx":1045
  *                             rv = d, arg, screen
  *                     else:
  *                         if mask(cx, cy):             # <<<<<<<<<<<<<<
@@ -16159,7 +16274,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         }
         __pyx_L19:;
 
-        /* "renpy/display/render.pyx":1030
+        /* "renpy/display/render.pyx":1034
  *                     continue
  * 
  *                 elif mx is not None:             # <<<<<<<<<<<<<<
@@ -16169,50 +16284,50 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         goto __pyx_L17;
       }
 
-      /* "renpy/display/render.pyx":1044
+      /* "renpy/display/render.pyx":1048
  *                             rv = d, arg, screen
  * 
  *                 elif xo <= x < xo + w and yo <= y < yo + h:             # <<<<<<<<<<<<<<
  *                     rv = d, arg, screen
  * 
  */
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_xo, __pyx_v_x, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_xo, __pyx_v_x, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__Pyx_PyObject_IsTrue(__pyx_t_4)) {
         __Pyx_DECREF(__pyx_t_4);
-        __pyx_t_13 = PyNumber_Add(__pyx_v_xo, __pyx_v_w); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = PyNumber_Add(__pyx_v_xo, __pyx_v_w); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_13);
-        __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_13, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_13, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (__pyx_t_1) {
       } else {
         __pyx_t_2 = __pyx_t_1;
         goto __pyx_L22_bool_binop_done;
       }
-      __pyx_t_4 = PyObject_RichCompare(__pyx_v_yo, __pyx_v_y, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyObject_RichCompare(__pyx_v_yo, __pyx_v_y, Py_LE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       if (__Pyx_PyObject_IsTrue(__pyx_t_4)) {
         __Pyx_DECREF(__pyx_t_4);
-        __pyx_t_13 = PyNumber_Add(__pyx_v_yo, __pyx_v_h); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_13 = PyNumber_Add(__pyx_v_yo, __pyx_v_h); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_13);
-        __pyx_t_4 = PyObject_RichCompare(__pyx_v_y, __pyx_t_13, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyObject_RichCompare(__pyx_v_y, __pyx_t_13, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       }
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1048; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_2 = __pyx_t_1;
       __pyx_L22_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "renpy/display/render.pyx":1045
+        /* "renpy/display/render.pyx":1049
  * 
  *                 elif xo <= x < xo + w and yo <= y < yo + h:
  *                     rv = d, arg, screen             # <<<<<<<<<<<<<<
  * 
  *         for child, xo, yo, focus, main in self.children:
  */
-        __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_v_d);
         __Pyx_GIVEREF(__pyx_v_d);
@@ -16226,7 +16341,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __Pyx_DECREF_SET(__pyx_v_rv, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "renpy/display/render.pyx":1044
+        /* "renpy/display/render.pyx":1048
  *                             rv = d, arg, screen
  * 
  *                 elif xo <= x < xo + w and yo <= y < yo + h:             # <<<<<<<<<<<<<<
@@ -16236,7 +16351,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       }
       __pyx_L17:;
 
-      /* "renpy/display/render.pyx":1025
+      /* "renpy/display/render.pyx":1029
  * 
  *         if self.focuses:
  *             for (d, arg, xo, yo, w, h, mx, my, mask) in self.focuses:             # <<<<<<<<<<<<<<
@@ -16247,7 +16362,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1024
+    /* "renpy/display/render.pyx":1028
  *         rv = None
  * 
  *         if self.focuses:             # <<<<<<<<<<<<<<
@@ -16256,7 +16371,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
   }
 
-  /* "renpy/display/render.pyx":1047
+  /* "renpy/display/render.pyx":1051
  *                     rv = d, arg, screen
  * 
  *         for child, xo, yo, focus, main in self.children:             # <<<<<<<<<<<<<<
@@ -16265,15 +16380,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
   if (unlikely(__pyx_v_self->children == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_5 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
   for (;;) {
     if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -16286,7 +16401,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       if (unlikely(size != 5)) {
         if (size > 5) __Pyx_RaiseTooManyValuesError(5);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -16312,7 +16427,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         Py_ssize_t i;
         PyObject** temps[5] = {&__pyx_t_13,&__pyx_t_14,&__pyx_t_12,&__pyx_t_11,&__pyx_t_10};
         for (i=0; i < 5; i++) {
-          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(item);
           *(temps[i]) = item;
         }
@@ -16322,7 +16437,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     } else {
       Py_ssize_t index = -1;
       PyObject** temps[5] = {&__pyx_t_13,&__pyx_t_14,&__pyx_t_12,&__pyx_t_11,&__pyx_t_10};
-      __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_16 = Py_TYPE(__pyx_t_9)->tp_iternext;
@@ -16331,7 +16446,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __Pyx_GOTREF(item);
         *(temps[index]) = item;
       }
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_9), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_9), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_16 = NULL;
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       goto __pyx_L27_unpacking_done;
@@ -16339,7 +16454,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __pyx_t_16 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L27_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_13);
@@ -16353,14 +16468,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     __Pyx_XDECREF_SET(__pyx_v_main, __pyx_t_10);
     __pyx_t_10 = 0;
 
-    /* "renpy/display/render.pyx":1049
+    /* "renpy/display/render.pyx":1053
  *         for child, xo, yo, focus, main in self.children:
  * 
  *             if not focus or not isinstance(child, Render):             # <<<<<<<<<<<<<<
  *                 continue
  * 
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_focus); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_20 = ((!__pyx_t_1) != 0);
     if (!__pyx_t_20) {
     } else {
@@ -16373,7 +16488,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     __pyx_L29_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "renpy/display/render.pyx":1050
+      /* "renpy/display/render.pyx":1054
  * 
  *             if not focus or not isinstance(child, Render):
  *                 continue             # <<<<<<<<<<<<<<
@@ -16382,7 +16497,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
       goto __pyx_L24_continue;
 
-      /* "renpy/display/render.pyx":1049
+      /* "renpy/display/render.pyx":1053
  *         for child, xo, yo, focus, main in self.children:
  * 
  *             if not focus or not isinstance(child, Render):             # <<<<<<<<<<<<<<
@@ -16391,50 +16506,50 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     }
 
-    /* "renpy/display/render.pyx":1052
+    /* "renpy/display/render.pyx":1056
  *                 continue
  * 
  *             cx = x - xo             # <<<<<<<<<<<<<<
  *             cy = y - yo
  * 
  */
-    __pyx_t_4 = PyNumber_Subtract(__pyx_v_x, __pyx_v_xo); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyNumber_Subtract(__pyx_v_x, __pyx_v_xo); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_cx, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":1053
+    /* "renpy/display/render.pyx":1057
  * 
  *             cx = x - xo
  *             cy = y - yo             # <<<<<<<<<<<<<<
  * 
  *             if self.forward:
  */
-    __pyx_t_4 = PyNumber_Subtract(__pyx_v_y, __pyx_v_yo); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyNumber_Subtract(__pyx_v_y, __pyx_v_yo); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_cy, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":1055
+    /* "renpy/display/render.pyx":1059
  *             cy = y - yo
  * 
  *             if self.forward:             # <<<<<<<<<<<<<<
  *                 cx, cy = self.forward.transform(cx, cy)
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_2) {
 
-      /* "renpy/display/render.pyx":1056
+      /* "renpy/display/render.pyx":1060
  * 
  *             if self.forward:
  *                 cx, cy = self.forward.transform(cx, cy)             # <<<<<<<<<<<<<<
  * 
  *             cf = child.focus_at_point(cx, cy, screen)
  */
-      __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_v_cx); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_v_cy); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_4 = ((struct __pyx_vtabstruct_5renpy_7display_6render_Matrix2D *)__pyx_v_self->forward->__pyx_vtab)->transform(__pyx_v_self->forward, __pyx_t_18, __pyx_t_17, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_v_cx); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_v_cy); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = ((struct __pyx_vtabstruct_5renpy_7display_6render_Matrix2D *)__pyx_v_self->forward->__pyx_vtab)->transform(__pyx_v_self->forward, __pyx_t_18, __pyx_t_17, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       if (likely(__pyx_t_4 != Py_None)) {
         PyObject* sequence = __pyx_t_4;
@@ -16446,7 +16561,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         __pyx_t_10 = PyTuple_GET_ITEM(sequence, 0); 
@@ -16454,21 +16569,21 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __Pyx_INCREF(__pyx_t_10);
         __Pyx_INCREF(__pyx_t_11);
         #else
-        __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_10);
-        __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_11);
         #endif
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
-        __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF_SET(__pyx_v_cx, __pyx_t_10);
       __pyx_t_10 = 0;
       __Pyx_DECREF_SET(__pyx_v_cy, __pyx_t_11);
       __pyx_t_11 = 0;
 
-      /* "renpy/display/render.pyx":1055
+      /* "renpy/display/render.pyx":1059
  *             cy = y - yo
  * 
  *             if self.forward:             # <<<<<<<<<<<<<<
@@ -16477,14 +16592,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     }
 
-    /* "renpy/display/render.pyx":1058
+    /* "renpy/display/render.pyx":1062
  *                 cx, cy = self.forward.transform(cx, cy)
  * 
  *             cf = child.focus_at_point(cx, cy, screen)             # <<<<<<<<<<<<<<
  *             if cf is not None:
  *                 rv = cf
  */
-    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_focus_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_focus_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
     __pyx_t_10 = NULL;
     __pyx_t_19 = 0;
@@ -16498,7 +16613,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __pyx_t_19 = 1;
       }
     }
-    __pyx_t_12 = PyTuple_New(3+__pyx_t_19); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = PyTuple_New(3+__pyx_t_19); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_12);
     if (__pyx_t_10) {
       __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL;
@@ -16512,14 +16627,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     __Pyx_INCREF(__pyx_v_screen);
     __Pyx_GIVEREF(__pyx_v_screen);
     PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_19, __pyx_v_screen);
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_XDECREF_SET(__pyx_v_cf, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "renpy/display/render.pyx":1059
+    /* "renpy/display/render.pyx":1063
  * 
  *             cf = child.focus_at_point(cx, cy, screen)
  *             if cf is not None:             # <<<<<<<<<<<<<<
@@ -16530,7 +16645,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "renpy/display/render.pyx":1060
+      /* "renpy/display/render.pyx":1064
  *             cf = child.focus_at_point(cx, cy, screen)
  *             if cf is not None:
  *                 rv = cf             # <<<<<<<<<<<<<<
@@ -16540,7 +16655,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __Pyx_INCREF(__pyx_v_cf);
       __Pyx_DECREF_SET(__pyx_v_rv, __pyx_v_cf);
 
-      /* "renpy/display/render.pyx":1059
+      /* "renpy/display/render.pyx":1063
  * 
  *             cf = child.focus_at_point(cx, cy, screen)
  *             if cf is not None:             # <<<<<<<<<<<<<<
@@ -16549,7 +16664,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     }
 
-    /* "renpy/display/render.pyx":1047
+    /* "renpy/display/render.pyx":1051
  *                     rv = d, arg, screen
  * 
  *         for child, xo, yo, focus, main in self.children:             # <<<<<<<<<<<<<<
@@ -16560,7 +16675,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "renpy/display/render.pyx":1062
+  /* "renpy/display/render.pyx":1066
  *                 rv = cf
  * 
  *         if self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -16570,7 +16685,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __pyx_t_1 = (__pyx_v_self->pass_focuses != Py_None) && (PyList_GET_SIZE(__pyx_v_self->pass_focuses) != 0);
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":1063
+    /* "renpy/display/render.pyx":1067
  * 
  *         if self.pass_focuses:
  *             for child in self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -16579,28 +16694,28 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
     if (unlikely(__pyx_v_self->pass_focuses == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_t_5 = __pyx_v_self->pass_focuses; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
     for (;;) {
       if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
       #if CYTHON_COMPILING_IN_CPYTHON
-      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_4); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       #else
-      __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1067; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       #endif
       __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "renpy/display/render.pyx":1064
+      /* "renpy/display/render.pyx":1068
  *         if self.pass_focuses:
  *             for child in self.pass_focuses:
  *                 cf = child.focus_at_point(x, y, screen)             # <<<<<<<<<<<<<<
  *                 if cf is not None:
  *                     rv = cf
  */
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_focus_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_focus_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_t_12 = NULL;
       __pyx_t_19 = 0;
@@ -16614,7 +16729,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
           __pyx_t_19 = 1;
         }
       }
-      __pyx_t_10 = PyTuple_New(3+__pyx_t_19); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyTuple_New(3+__pyx_t_19); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       if (__pyx_t_12) {
         __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12); __pyx_t_12 = NULL;
@@ -16628,14 +16743,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __Pyx_INCREF(__pyx_v_screen);
       __Pyx_GIVEREF(__pyx_v_screen);
       PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_19, __pyx_v_screen);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1068; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_XDECREF_SET(__pyx_v_cf, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "renpy/display/render.pyx":1065
+      /* "renpy/display/render.pyx":1069
  *             for child in self.pass_focuses:
  *                 cf = child.focus_at_point(x, y, screen)
  *                 if cf is not None:             # <<<<<<<<<<<<<<
@@ -16646,7 +16761,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "renpy/display/render.pyx":1066
+        /* "renpy/display/render.pyx":1070
  *                 cf = child.focus_at_point(x, y, screen)
  *                 if cf is not None:
  *                     rv = cf             # <<<<<<<<<<<<<<
@@ -16656,7 +16771,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
         __Pyx_INCREF(__pyx_v_cf);
         __Pyx_DECREF_SET(__pyx_v_rv, __pyx_v_cf);
 
-        /* "renpy/display/render.pyx":1065
+        /* "renpy/display/render.pyx":1069
  *             for child in self.pass_focuses:
  *                 cf = child.focus_at_point(x, y, screen)
  *                 if cf is not None:             # <<<<<<<<<<<<<<
@@ -16665,7 +16780,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
       }
 
-      /* "renpy/display/render.pyx":1063
+      /* "renpy/display/render.pyx":1067
  * 
  *         if self.pass_focuses:
  *             for child in self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -16675,7 +16790,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1062
+    /* "renpy/display/render.pyx":1066
  *                 rv = cf
  * 
  *         if self.pass_focuses:             # <<<<<<<<<<<<<<
@@ -16684,7 +16799,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
   }
 
-  /* "renpy/display/render.pyx":1068
+  /* "renpy/display/render.pyx":1072
  *                     rv = cf
  * 
  *         if rv is None and self.modal:             # <<<<<<<<<<<<<<
@@ -16703,19 +16818,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __pyx_L38_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1069
+    /* "renpy/display/render.pyx":1073
  * 
  *         if rv is None and self.modal:
  *             rv = Modal             # <<<<<<<<<<<<<<
  * 
  *         return rv
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Modal); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Modal); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF_SET(__pyx_v_rv, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1068
+    /* "renpy/display/render.pyx":1072
  *                     rv = cf
  * 
  *         if rv is None and self.modal:             # <<<<<<<<<<<<<<
@@ -16724,7 +16839,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
  */
   }
 
-  /* "renpy/display/render.pyx":1071
+  /* "renpy/display/render.pyx":1075
  *             rv = Modal
  * 
  *         return rv             # <<<<<<<<<<<<<<
@@ -16736,7 +16851,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   __pyx_r = __pyx_v_rv;
   goto __pyx_L0;
 
-  /* "renpy/display/render.pyx":1006
+  /* "renpy/display/render.pyx":1010
  *                 child.take_focuses(cminx, cminy, cmaxx, cmaxy, reverse, x, y, screen, focuses)
  * 
  *     def focus_at_point(self, x, y, screen): #@DuplicatedSignature             # <<<<<<<<<<<<<<
@@ -16783,7 +16898,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_30focus_at_point(struc
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1074
+/* "renpy/display/render.pyx":1078
  * 
  * 
  *     def main_displayables_at_point(self, x, y, layers, depth=None):             # <<<<<<<<<<<<<<
@@ -16828,12 +16943,12 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_33main_displayables_at
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("main_displayables_at_point", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("main_displayables_at_point", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_layers)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("main_displayables_at_point", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("main_displayables_at_point", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (kw_args > 0) {
@@ -16842,7 +16957,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_33main_displayables_at
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "main_displayables_at_point") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "main_displayables_at_point") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -16861,7 +16976,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_33main_displayables_at
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("main_displayables_at_point", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("main_displayables_at_point", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.main_displayables_at_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -16912,63 +17027,63 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
   __Pyx_RefNannySetupContext("main_displayables_at_point", 0);
   __Pyx_INCREF(__pyx_v_depth);
 
-  /* "renpy/display/render.pyx":1080
+  /* "renpy/display/render.pyx":1084
  *         """
  * 
  *         rv = [ ]             # <<<<<<<<<<<<<<
  * 
  *         if x < 0 or y < 0 or x >= self.width or y >= self.height:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_rv = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1082
+  /* "renpy/display/render.pyx":1086
  *         rv = [ ]
  * 
  *         if x < 0 or y < 0 or x >= self.width or y >= self.height:             # <<<<<<<<<<<<<<
  *             return rv
  * 
  */
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_x, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_x, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   if (!__pyx_t_3) {
   } else {
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_2 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1083
+    /* "renpy/display/render.pyx":1087
  * 
  *         if x < 0 or y < 0 or x >= self.width or y >= self.height:
  *             return rv             # <<<<<<<<<<<<<<
@@ -16980,7 +17095,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     __pyx_r = __pyx_v_rv;
     goto __pyx_L0;
 
-    /* "renpy/display/render.pyx":1082
+    /* "renpy/display/render.pyx":1086
  *         rv = [ ]
  * 
  *         if x < 0 or y < 0 or x >= self.width or y >= self.height:             # <<<<<<<<<<<<<<
@@ -16989,7 +17104,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
   }
 
-  /* "renpy/display/render.pyx":1085
+  /* "renpy/display/render.pyx":1089
  *             return rv
  * 
  *         is_screen = False             # <<<<<<<<<<<<<<
@@ -16998,7 +17113,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
   __pyx_v_is_screen = 0;
 
-  /* "renpy/display/render.pyx":1087
+  /* "renpy/display/render.pyx":1091
  *         is_screen = False
  * 
  *         if depth is not None:             # <<<<<<<<<<<<<<
@@ -17009,7 +17124,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "renpy/display/render.pyx":1088
+    /* "renpy/display/render.pyx":1092
  * 
  *         if depth is not None:
  *             for d in self.render_of:             # <<<<<<<<<<<<<<
@@ -17020,26 +17135,26 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       __pyx_t_1 = __pyx_v_self->render_of; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
       __pyx_t_6 = NULL;
     } else {
-      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->render_of); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->render_of); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     for (;;) {
       if (likely(!__pyx_t_6)) {
         if (likely(PyList_CheckExact(__pyx_t_1))) {
           if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           #endif
         } else {
           if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_COMPILING_IN_CPYTHON
-          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           #else
-          __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_4);
           #endif
         }
@@ -17049,7 +17164,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           }
           break;
         }
@@ -17058,18 +17173,18 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "renpy/display/render.pyx":1089
+      /* "renpy/display/render.pyx":1093
  *         if depth is not None:
  *             for d in self.render_of:
  *                 rv.append((depth, self.width, self.height, d))             # <<<<<<<<<<<<<<
  *                 depth += 1
  * 
  */
-      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyTuple_New(4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_INCREF(__pyx_v_depth);
       __Pyx_GIVEREF(__pyx_v_depth);
@@ -17083,45 +17198,45 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_d);
       __pyx_t_4 = 0;
       __pyx_t_7 = 0;
-      __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_rv, __pyx_t_8); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_rv, __pyx_t_8); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "renpy/display/render.pyx":1090
+      /* "renpy/display/render.pyx":1094
  *             for d in self.render_of:
  *                 rv.append((depth, self.width, self.height, d))
  *                 depth += 1             # <<<<<<<<<<<<<<
  * 
  *                 if isinstance(d, renpy.display.screen.ScreenDisplayable):
  */
-      __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_v_depth, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_v_depth, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF_SET(__pyx_v_depth, __pyx_t_8);
       __pyx_t_8 = 0;
 
-      /* "renpy/display/render.pyx":1092
+      /* "renpy/display/render.pyx":1096
  *                 depth += 1
  * 
  *                 if isinstance(d, renpy.display.screen.ScreenDisplayable):             # <<<<<<<<<<<<<<
  *                     is_screen = True
  * 
  */
-      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_display); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_display); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_screen); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_screen); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ScreenDisplayable); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_ScreenDisplayable); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-      __pyx_t_3 = PyObject_IsInstance(__pyx_v_d, __pyx_t_7); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = PyObject_IsInstance(__pyx_v_d, __pyx_t_7); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
 
-        /* "renpy/display/render.pyx":1093
+        /* "renpy/display/render.pyx":1097
  * 
  *                 if isinstance(d, renpy.display.screen.ScreenDisplayable):
  *                     is_screen = True             # <<<<<<<<<<<<<<
@@ -17130,7 +17245,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
         __pyx_v_is_screen = 1;
 
-        /* "renpy/display/render.pyx":1092
+        /* "renpy/display/render.pyx":1096
  *                 depth += 1
  * 
  *                 if isinstance(d, renpy.display.screen.ScreenDisplayable):             # <<<<<<<<<<<<<<
@@ -17139,7 +17254,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
       }
 
-      /* "renpy/display/render.pyx":1088
+      /* "renpy/display/render.pyx":1092
  * 
  *         if depth is not None:
  *             for d in self.render_of:             # <<<<<<<<<<<<<<
@@ -17149,7 +17264,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     }
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1087
+    /* "renpy/display/render.pyx":1091
  *         is_screen = False
  * 
  *         if depth is not None:             # <<<<<<<<<<<<<<
@@ -17159,18 +17274,18 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     goto __pyx_L8;
   }
 
-  /* "renpy/display/render.pyx":1095
+  /* "renpy/display/render.pyx":1099
  *                     is_screen = True
  * 
  *         elif self.layer_name in layers:             # <<<<<<<<<<<<<<
  *             depth = 0
  * 
  */
-  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->layer_name, __pyx_v_layers, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_v_self->layer_name, __pyx_v_layers, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "renpy/display/render.pyx":1096
+    /* "renpy/display/render.pyx":1100
  * 
  *         elif self.layer_name in layers:
  *             depth = 0             # <<<<<<<<<<<<<<
@@ -17180,7 +17295,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_depth, __pyx_int_0);
 
-    /* "renpy/display/render.pyx":1095
+    /* "renpy/display/render.pyx":1099
  *                     is_screen = True
  * 
  *         elif self.layer_name in layers:             # <<<<<<<<<<<<<<
@@ -17190,7 +17305,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
   }
   __pyx_L8:;
 
-  /* "renpy/display/render.pyx":1098
+  /* "renpy/display/render.pyx":1102
  *             depth = 0
  * 
  *         for (child, xo, yo, focus, main) in self.children:             # <<<<<<<<<<<<<<
@@ -17199,15 +17314,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
   if (unlikely(__pyx_v_self->children == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_1 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
   for (;;) {
     if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
@@ -17220,7 +17335,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       if (unlikely(size != 5)) {
         if (size > 5) __Pyx_RaiseTooManyValuesError(5);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -17246,7 +17361,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
         Py_ssize_t i;
         PyObject** temps[5] = {&__pyx_t_8,&__pyx_t_4,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12};
         for (i=0; i < 5; i++) {
-          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(item);
           *(temps[i]) = item;
         }
@@ -17256,7 +17371,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     } else {
       Py_ssize_t index = -1;
       PyObject** temps[5] = {&__pyx_t_8,&__pyx_t_4,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12};
-      __pyx_t_13 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_13 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_13);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext;
@@ -17265,7 +17380,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
         __Pyx_GOTREF(item);
         *(temps[index]) = item;
       }
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_14 = NULL;
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       goto __pyx_L15_unpacking_done;
@@ -17273,7 +17388,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
       __pyx_t_14 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L15_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_8);
@@ -17287,14 +17402,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     __Pyx_XDECREF_SET(__pyx_v_main, __pyx_t_12);
     __pyx_t_12 = 0;
 
-    /* "renpy/display/render.pyx":1099
+    /* "renpy/display/render.pyx":1103
  * 
  *         for (child, xo, yo, focus, main) in self.children:
  *             if not main or not isinstance(child, Render):             # <<<<<<<<<<<<<<
  *                 continue
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_main); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_main); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __pyx_t_15 = ((!__pyx_t_2) != 0);
     if (!__pyx_t_15) {
     } else {
@@ -17307,7 +17422,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     __pyx_L17_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "renpy/display/render.pyx":1100
+      /* "renpy/display/render.pyx":1104
  *         for (child, xo, yo, focus, main) in self.children:
  *             if not main or not isinstance(child, Render):
  *                 continue             # <<<<<<<<<<<<<<
@@ -17316,7 +17431,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
       goto __pyx_L12_continue;
 
-      /* "renpy/display/render.pyx":1099
+      /* "renpy/display/render.pyx":1103
  * 
  *         for (child, xo, yo, focus, main) in self.children:
  *             if not main or not isinstance(child, Render):             # <<<<<<<<<<<<<<
@@ -17325,50 +17440,50 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
     }
 
-    /* "renpy/display/render.pyx":1102
+    /* "renpy/display/render.pyx":1106
  *                 continue
  * 
  *             cx = x - xo             # <<<<<<<<<<<<<<
  *             cy = y - yo
  * 
  */
-    __pyx_t_7 = PyNumber_Subtract(__pyx_v_x, __pyx_v_xo); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyNumber_Subtract(__pyx_v_x, __pyx_v_xo); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_XDECREF_SET(__pyx_v_cx, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "renpy/display/render.pyx":1103
+    /* "renpy/display/render.pyx":1107
  * 
  *             cx = x - xo
  *             cy = y - yo             # <<<<<<<<<<<<<<
  * 
  *             if self.forward:
  */
-    __pyx_t_7 = PyNumber_Subtract(__pyx_v_y, __pyx_v_yo); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyNumber_Subtract(__pyx_v_y, __pyx_v_yo); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_XDECREF_SET(__pyx_v_cy, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "renpy/display/render.pyx":1105
+    /* "renpy/display/render.pyx":1109
  *             cy = y - yo
  * 
  *             if self.forward:             # <<<<<<<<<<<<<<
  *                 cx, cy = self.forward.transform(cx, cy)
  * 
  */
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     if (__pyx_t_3) {
 
-      /* "renpy/display/render.pyx":1106
+      /* "renpy/display/render.pyx":1110
  * 
  *             if self.forward:
  *                 cx, cy = self.forward.transform(cx, cy)             # <<<<<<<<<<<<<<
  * 
  *             if is_screen:
  */
-      __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_v_cx); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_v_cy); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __pyx_t_7 = ((struct __pyx_vtabstruct_5renpy_7display_6render_Matrix2D *)__pyx_v_self->forward->__pyx_vtab)->transform(__pyx_v_self->forward, __pyx_t_16, __pyx_t_17, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_v_cx); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_v_cy); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = ((struct __pyx_vtabstruct_5renpy_7display_6render_Matrix2D *)__pyx_v_self->forward->__pyx_vtab)->transform(__pyx_v_self->forward, __pyx_t_16, __pyx_t_17, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       if (likely(__pyx_t_7 != Py_None)) {
         PyObject* sequence = __pyx_t_7;
@@ -17380,7 +17495,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0); 
@@ -17388,21 +17503,21 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
         __Pyx_INCREF(__pyx_t_12);
         __Pyx_INCREF(__pyx_t_11);
         #else
-        __pyx_t_12 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_12 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_12);
-        __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_11);
         #endif
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       } else {
-        __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_DECREF_SET(__pyx_v_cx, __pyx_t_12);
       __pyx_t_12 = 0;
       __Pyx_DECREF_SET(__pyx_v_cy, __pyx_t_11);
       __pyx_t_11 = 0;
 
-      /* "renpy/display/render.pyx":1105
+      /* "renpy/display/render.pyx":1109
  *             cy = y - yo
  * 
  *             if self.forward:             # <<<<<<<<<<<<<<
@@ -17411,7 +17526,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  */
     }
 
-    /* "renpy/display/render.pyx":1108
+    /* "renpy/display/render.pyx":1112
  *                 cx, cy = self.forward.transform(cx, cy)
  * 
  *             if is_screen:             # <<<<<<<<<<<<<<
@@ -17421,16 +17536,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
     __pyx_t_3 = (__pyx_v_is_screen != 0);
     if (__pyx_t_3) {
 
-      /* "renpy/display/render.pyx":1110
+      /* "renpy/display/render.pyx":1114
  *             if is_screen:
  *                 # Ignore the fixed at the root of every screen.
  *                 cf = child.main_displayables_at_point(cx, cy, layers, depth - 1)             # <<<<<<<<<<<<<<
  *                 rv.extend(cf[1:])
  *             else:
  */
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_main_displayables_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_main_displayables_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
-      __pyx_t_12 = __Pyx_PyInt_SubtractObjC(__pyx_v_depth, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = __Pyx_PyInt_SubtractObjC(__pyx_v_depth, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       __pyx_t_10 = NULL;
       __pyx_t_18 = 0;
@@ -17444,7 +17559,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
           __pyx_t_18 = 1;
         }
       }
-      __pyx_t_4 = PyTuple_New(4+__pyx_t_18); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_4 = PyTuple_New(4+__pyx_t_18); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_4);
       if (__pyx_t_10) {
         __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
@@ -17461,26 +17576,26 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       __Pyx_GIVEREF(__pyx_t_12);
       PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_18, __pyx_t_12);
       __pyx_t_12 = 0;
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_XDECREF_SET(__pyx_v_cf, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "renpy/display/render.pyx":1111
+      /* "renpy/display/render.pyx":1115
  *                 # Ignore the fixed at the root of every screen.
  *                 cf = child.main_displayables_at_point(cx, cy, layers, depth - 1)
  *                 rv.extend(cf[1:])             # <<<<<<<<<<<<<<
  *             else:
  *                 cf = child.main_displayables_at_point(cx, cy, layers, depth)
  */
-      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_cf, 1, 0, NULL, NULL, &__pyx_slice__7, 1, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_cf, 1, 0, NULL, NULL, &__pyx_slice__7, 1, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_rv, __pyx_t_7); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_rv, __pyx_t_7); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-      /* "renpy/display/render.pyx":1108
+      /* "renpy/display/render.pyx":1112
  *                 cx, cy = self.forward.transform(cx, cy)
  * 
  *             if is_screen:             # <<<<<<<<<<<<<<
@@ -17490,7 +17605,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       goto __pyx_L20;
     }
 
-    /* "renpy/display/render.pyx":1113
+    /* "renpy/display/render.pyx":1117
  *                 rv.extend(cf[1:])
  *             else:
  *                 cf = child.main_displayables_at_point(cx, cy, layers, depth)             # <<<<<<<<<<<<<<
@@ -17498,7 +17613,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
  * 
  */
     /*else*/ {
-      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_main_displayables_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_main_displayables_at_point); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_11);
       __pyx_t_4 = NULL;
       __pyx_t_18 = 0;
@@ -17512,7 +17627,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
           __pyx_t_18 = 1;
         }
       }
-      __pyx_t_12 = PyTuple_New(4+__pyx_t_18); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_12 = PyTuple_New(4+__pyx_t_18); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_12);
       if (__pyx_t_4) {
         __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -17529,25 +17644,25 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
       __Pyx_INCREF(__pyx_v_depth);
       __Pyx_GIVEREF(__pyx_v_depth);
       PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_18, __pyx_v_depth);
-      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __Pyx_XDECREF_SET(__pyx_v_cf, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "renpy/display/render.pyx":1114
+      /* "renpy/display/render.pyx":1118
  *             else:
  *                 cf = child.main_displayables_at_point(cx, cy, layers, depth)
  *                 rv.extend(cf)             # <<<<<<<<<<<<<<
  * 
  *         return rv
  */
-      __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_rv, __pyx_v_cf); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = __Pyx_PyList_Extend(__pyx_v_rv, __pyx_v_cf); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     }
     __pyx_L20:;
 
-    /* "renpy/display/render.pyx":1098
+    /* "renpy/display/render.pyx":1102
  *             depth = 0
  * 
  *         for (child, xo, yo, focus, main) in self.children:             # <<<<<<<<<<<<<<
@@ -17558,7 +17673,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1116
+  /* "renpy/display/render.pyx":1120
  *                 rv.extend(cf)
  * 
  *         return rv             # <<<<<<<<<<<<<<
@@ -17570,7 +17685,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
   __pyx_r = __pyx_v_rv;
   goto __pyx_L0;
 
-  /* "renpy/display/render.pyx":1074
+  /* "renpy/display/render.pyx":1078
  * 
  * 
  *     def main_displayables_at_point(self, x, y, layers, depth=None):             # <<<<<<<<<<<<<<
@@ -17607,7 +17722,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_32main_displayables_at
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1119
+/* "renpy/display/render.pyx":1123
  * 
  * 
  *     def is_opaque(self):             # <<<<<<<<<<<<<<
@@ -17659,21 +17774,21 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("is_opaque", 0);
 
-  /* "renpy/display/render.pyx":1125
+  /* "renpy/display/render.pyx":1129
  *         """
  * 
  *         if self.opaque is not None:             # <<<<<<<<<<<<<<
  *             return self.opaque
  * 
  */
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->opaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->opaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__pyx_t_1 != Py_None);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "renpy/display/render.pyx":1126
+    /* "renpy/display/render.pyx":1130
  * 
  *         if self.opaque is not None:
  *             return self.opaque             # <<<<<<<<<<<<<<
@@ -17681,13 +17796,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  *         # A rotated image is never opaque. (This isn't actually true, but it
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->opaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->opaque); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
     goto __pyx_L0;
 
-    /* "renpy/display/render.pyx":1125
+    /* "renpy/display/render.pyx":1129
  *         """
  * 
  *         if self.opaque is not None:             # <<<<<<<<<<<<<<
@@ -17696,17 +17811,17 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
   }
 
-  /* "renpy/display/render.pyx":1130
+  /* "renpy/display/render.pyx":1134
  *         # A rotated image is never opaque. (This isn't actually true, but it
  *         # saves us from the expensive calculations require to prove it is.)
  *         if self.forward:             # <<<<<<<<<<<<<<
  *             self.opaque = False
  *             return False
  */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->forward)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_3) {
 
-    /* "renpy/display/render.pyx":1131
+    /* "renpy/display/render.pyx":1135
  *         # saves us from the expensive calculations require to prove it is.)
  *         if self.forward:
  *             self.opaque = False             # <<<<<<<<<<<<<<
@@ -17715,7 +17830,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
     __pyx_v_self->opaque = 0;
 
-    /* "renpy/display/render.pyx":1132
+    /* "renpy/display/render.pyx":1136
  *         if self.forward:
  *             self.opaque = False
  *             return False             # <<<<<<<<<<<<<<
@@ -17727,7 +17842,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
     __pyx_r = Py_False;
     goto __pyx_L0;
 
-    /* "renpy/display/render.pyx":1130
+    /* "renpy/display/render.pyx":1134
  *         # A rotated image is never opaque. (This isn't actually true, but it
  *         # saves us from the expensive calculations require to prove it is.)
  *         if self.forward:             # <<<<<<<<<<<<<<
@@ -17736,7 +17851,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
   }
 
-  /* "renpy/display/render.pyx":1134
+  /* "renpy/display/render.pyx":1138
  *             return False
  * 
  *         rv = False             # <<<<<<<<<<<<<<
@@ -17745,19 +17860,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
   __pyx_v_rv = 0;
 
-  /* "renpy/display/render.pyx":1135
+  /* "renpy/display/render.pyx":1139
  * 
  *         rv = False
  *         vc = [ ]             # <<<<<<<<<<<<<<
  * 
  *         for i in self.children:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_vc = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1137
+  /* "renpy/display/render.pyx":1141
  *         vc = [ ]
  * 
  *         for i in self.children:             # <<<<<<<<<<<<<<
@@ -17766,21 +17881,21 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
   if (unlikely(__pyx_v_self->children == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __pyx_t_1 = __pyx_v_self->children; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
   for (;;) {
     if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_COMPILING_IN_CPYTHON
-    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     #else
-    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1138
+    /* "renpy/display/render.pyx":1142
  * 
  *         for i in self.children:
  *             child, xo, yo, focus, main = i             # <<<<<<<<<<<<<<
@@ -17797,7 +17912,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
       if (unlikely(size != 5)) {
         if (size > 5) __Pyx_RaiseTooManyValuesError(5);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       #if CYTHON_COMPILING_IN_CPYTHON
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -17823,7 +17938,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
         Py_ssize_t i;
         PyObject** temps[5] = {&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9};
         for (i=0; i < 5; i++) {
-          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(item);
           *(temps[i]) = item;
         }
@@ -17832,7 +17947,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
     } else {
       Py_ssize_t index = -1;
       PyObject** temps[5] = {&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9};
-      __pyx_t_10 = PyObject_GetIter(__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_10 = PyObject_GetIter(__pyx_v_i); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
       for (index=0; index < 5; index++) {
@@ -17840,7 +17955,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
         __Pyx_GOTREF(item);
         *(temps[index]) = item;
       }
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       goto __pyx_L8_unpacking_done;
@@ -17848,7 +17963,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __pyx_L8_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_5);
@@ -17862,36 +17977,36 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
     __Pyx_XDECREF_SET(__pyx_v_main, __pyx_t_9);
     __pyx_t_9 = 0;
 
-    /* "renpy/display/render.pyx":1140
+    /* "renpy/display/render.pyx":1144
  *             child, xo, yo, focus, main = i
  * 
  *             if xo <= 0 and yo <= 0:             # <<<<<<<<<<<<<<
  *                 cw, ch = child.get_size()
  *                 if cw + xo < self.width or ch + yo < self.height:
  */
-    __pyx_t_9 = PyObject_RichCompare(__pyx_v_xo, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyObject_RichCompare(__pyx_v_xo, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     if (__pyx_t_2) {
     } else {
       __pyx_t_3 = __pyx_t_2;
       goto __pyx_L10_bool_binop_done;
     }
-    __pyx_t_9 = PyObject_RichCompare(__pyx_v_yo, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_9 = PyObject_RichCompare(__pyx_v_yo, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __pyx_t_3 = __pyx_t_2;
     __pyx_L10_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "renpy/display/render.pyx":1141
+      /* "renpy/display/render.pyx":1145
  * 
  *             if xo <= 0 and yo <= 0:
  *                 cw, ch = child.get_size()             # <<<<<<<<<<<<<<
  *                 if cw + xo < self.width or ch + yo < self.height:
  *                     if child.is_opaque():
  */
-      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_get_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_get_size); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
       __pyx_t_7 = NULL;
       if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
@@ -17904,10 +18019,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
         }
       }
       if (__pyx_t_7) {
-        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       } else {
-        __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
@@ -17921,7 +18036,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         #if CYTHON_COMPILING_IN_CPYTHON
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -17934,15 +18049,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
         __Pyx_INCREF(__pyx_t_8);
         __Pyx_INCREF(__pyx_t_7);
         #else
-        __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_8);
-        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         #endif
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_6 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_6 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext;
@@ -17950,7 +18065,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
         __Pyx_GOTREF(__pyx_t_8);
         index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L12_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_7);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_t_11 = NULL;
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         goto __pyx_L13_unpacking_done;
@@ -17958,7 +18073,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_t_11 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __pyx_L13_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_v_cw, __pyx_t_8);
@@ -17966,48 +18081,48 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
       __Pyx_XDECREF_SET(__pyx_v_ch, __pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "renpy/display/render.pyx":1142
+      /* "renpy/display/render.pyx":1146
  *             if xo <= 0 and yo <= 0:
  *                 cw, ch = child.get_size()
  *                 if cw + xo < self.width or ch + yo < self.height:             # <<<<<<<<<<<<<<
  *                     if child.is_opaque():
  *                         vc = [ ]
  */
-      __pyx_t_9 = PyNumber_Add(__pyx_v_cw, __pyx_v_xo); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyNumber_Add(__pyx_v_cw, __pyx_v_xo); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_9);
-      __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_8 = PyObject_RichCompare(__pyx_t_9, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyObject_RichCompare(__pyx_t_9, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       if (!__pyx_t_2) {
       } else {
         __pyx_t_3 = __pyx_t_2;
         goto __pyx_L15_bool_binop_done;
       }
-      __pyx_t_8 = PyNumber_Add(__pyx_v_ch, __pyx_v_yo); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_8 = PyNumber_Add(__pyx_v_ch, __pyx_v_yo); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_8);
-      __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_9 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       __pyx_t_3 = __pyx_t_2;
       __pyx_L15_bool_binop_done:;
       if (__pyx_t_3) {
 
-        /* "renpy/display/render.pyx":1143
+        /* "renpy/display/render.pyx":1147
  *                 cw, ch = child.get_size()
  *                 if cw + xo < self.width or ch + yo < self.height:
  *                     if child.is_opaque():             # <<<<<<<<<<<<<<
  *                         vc = [ ]
  *                         rv = True
  */
-        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_is_opaque); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_is_opaque); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_8 = NULL;
         if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
@@ -18020,30 +18135,30 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
           }
         }
         if (__pyx_t_8) {
-          __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
         } else {
-          __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         }
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         if (__pyx_t_3) {
 
-          /* "renpy/display/render.pyx":1144
+          /* "renpy/display/render.pyx":1148
  *                 if cw + xo < self.width or ch + yo < self.height:
  *                     if child.is_opaque():
  *                         vc = [ ]             # <<<<<<<<<<<<<<
  *                         rv = True
  * 
  */
-          __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+          __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_DECREF_SET(__pyx_v_vc, ((PyObject*)__pyx_t_9));
           __pyx_t_9 = 0;
 
-          /* "renpy/display/render.pyx":1145
+          /* "renpy/display/render.pyx":1149
  *                     if child.is_opaque():
  *                         vc = [ ]
  *                         rv = True             # <<<<<<<<<<<<<<
@@ -18052,7 +18167,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
           __pyx_v_rv = 1;
 
-          /* "renpy/display/render.pyx":1143
+          /* "renpy/display/render.pyx":1147
  *                 cw, ch = child.get_size()
  *                 if cw + xo < self.width or ch + yo < self.height:
  *                     if child.is_opaque():             # <<<<<<<<<<<<<<
@@ -18061,7 +18176,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
         }
 
-        /* "renpy/display/render.pyx":1142
+        /* "renpy/display/render.pyx":1146
  *             if xo <= 0 and yo <= 0:
  *                 cw, ch = child.get_size()
  *                 if cw + xo < self.width or ch + yo < self.height:             # <<<<<<<<<<<<<<
@@ -18070,7 +18185,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
       }
 
-      /* "renpy/display/render.pyx":1140
+      /* "renpy/display/render.pyx":1144
  *             child, xo, yo, focus, main = i
  * 
  *             if xo <= 0 and yo <= 0:             # <<<<<<<<<<<<<<
@@ -18079,16 +18194,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
     }
 
-    /* "renpy/display/render.pyx":1147
+    /* "renpy/display/render.pyx":1151
  *                         rv = True
  * 
  *             vc.append(i)             # <<<<<<<<<<<<<<
  * 
  *         self.visible_children = vc
  */
-    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_vc, __pyx_v_i); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_vc, __pyx_v_i); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-    /* "renpy/display/render.pyx":1137
+    /* "renpy/display/render.pyx":1141
  *         vc = [ ]
  * 
  *         for i in self.children:             # <<<<<<<<<<<<<<
@@ -18098,7 +18213,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1149
+  /* "renpy/display/render.pyx":1153
  *             vc.append(i)
  * 
  *         self.visible_children = vc             # <<<<<<<<<<<<<<
@@ -18111,7 +18226,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
   __Pyx_DECREF(__pyx_v_self->visible_children);
   __pyx_v_self->visible_children = __pyx_v_vc;
 
-  /* "renpy/display/render.pyx":1150
+  /* "renpy/display/render.pyx":1154
  * 
  *         self.visible_children = vc
  *         self.opaque = rv             # <<<<<<<<<<<<<<
@@ -18120,7 +18235,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  */
   __pyx_v_self->opaque = __pyx_v_rv;
 
-  /* "renpy/display/render.pyx":1151
+  /* "renpy/display/render.pyx":1155
  *         self.visible_children = vc
  *         self.opaque = rv
  *         return rv             # <<<<<<<<<<<<<<
@@ -18128,13 +18243,13 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_rv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_rv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "renpy/display/render.pyx":1119
+  /* "renpy/display/render.pyx":1123
  * 
  * 
  *     def is_opaque(self):             # <<<<<<<<<<<<<<
@@ -18168,7 +18283,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_34is_opaque(struct __p
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1154
+/* "renpy/display/render.pyx":1158
  * 
  * 
  *     def is_pixel_opaque(self, x, y):             # <<<<<<<<<<<<<<
@@ -18208,11 +18323,11 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_37is_pixel_opaque(PyOb
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("is_pixel_opaque", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("is_pixel_opaque", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "is_pixel_opaque") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "is_pixel_opaque") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -18225,7 +18340,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_37is_pixel_opaque(PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("is_pixel_opaque", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("is_pixel_opaque", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.is_pixel_opaque", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -18253,51 +18368,51 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("is_pixel_opaque", 0);
 
-  /* "renpy/display/render.pyx":1159
+  /* "renpy/display/render.pyx":1163
  *         """
  * 
  *         if x < 0 or y < 0 or x >= self.width or y >= self.height:             # <<<<<<<<<<<<<<
  *             return False
  * 
  */
-  __pyx_t_2 = PyObject_RichCompare(__pyx_v_x, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_x, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (!__pyx_t_3) {
   } else {
     __pyx_t_1 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_2 = PyObject_RichCompare(__pyx_v_y, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_y, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (!__pyx_t_3) {
   } else {
     __pyx_t_1 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyObject_RichCompare(__pyx_v_x, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   if (!__pyx_t_3) {
   } else {
     __pyx_t_1 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_2 = PyObject_RichCompare(__pyx_v_y, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_y, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_1 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":1160
+    /* "renpy/display/render.pyx":1164
  * 
  *         if x < 0 or y < 0 or x >= self.width or y >= self.height:
  *             return False             # <<<<<<<<<<<<<<
@@ -18309,7 +18424,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
     __pyx_r = Py_False;
     goto __pyx_L0;
 
-    /* "renpy/display/render.pyx":1159
+    /* "renpy/display/render.pyx":1163
  *         """
  * 
  *         if x < 0 or y < 0 or x >= self.width or y >= self.height:             # <<<<<<<<<<<<<<
@@ -18318,14 +18433,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
  */
   }
 
-  /* "renpy/display/render.pyx":1162
+  /* "renpy/display/render.pyx":1166
  *             return False
  * 
  *         if self.is_opaque():             # <<<<<<<<<<<<<<
  *             return True
  * 
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_opaque); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_opaque); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
@@ -18338,18 +18453,18 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
     }
   }
   if (__pyx_t_5) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   } else {
-    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   }
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":1163
+    /* "renpy/display/render.pyx":1167
  * 
  *         if self.is_opaque():
  *             return True             # <<<<<<<<<<<<<<
@@ -18361,7 +18476,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
     __pyx_r = Py_True;
     goto __pyx_L0;
 
-    /* "renpy/display/render.pyx":1162
+    /* "renpy/display/render.pyx":1166
  *             return False
  * 
  *         if self.is_opaque():             # <<<<<<<<<<<<<<
@@ -18370,7 +18485,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
  */
   }
 
-  /* "renpy/display/render.pyx":1165
+  /* "renpy/display/render.pyx":1169
  *             return True
  * 
  *         return renpy.display.draw.is_pixel_opaque(self, x, y)             # <<<<<<<<<<<<<<
@@ -18378,15 +18493,15 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_display); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_display); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_draw); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_draw); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_is_pixel_opaque); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_is_pixel_opaque); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -18401,7 +18516,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
       __pyx_t_6 = 1;
     }
   }
-  __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
   if (__pyx_t_4) {
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -18415,7 +18530,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
   __Pyx_INCREF(__pyx_v_y);
   __Pyx_GIVEREF(__pyx_v_y);
   PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_y);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -18423,7 +18538,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "renpy/display/render.pyx":1154
+  /* "renpy/display/render.pyx":1158
  * 
  * 
  *     def is_pixel_opaque(self, x, y):             # <<<<<<<<<<<<<<
@@ -18445,7 +18560,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_36is_pixel_opaque(stru
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1168
+/* "renpy/display/render.pyx":1172
  * 
  * 
  *     def fill(self, color):             # <<<<<<<<<<<<<<
@@ -18484,19 +18599,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_38fill(struct __pyx_ob
   __Pyx_RefNannySetupContext("fill", 0);
   __Pyx_INCREF(__pyx_v_color);
 
-  /* "renpy/display/render.pyx":1173
+  /* "renpy/display/render.pyx":1177
  *         """
  * 
  *         color = renpy.easy.color(color)             # <<<<<<<<<<<<<<
  *         solid = renpy.display.imagelike.Solid(color)
  *         surf = render(solid, self.width, self.height, 0, 0)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_easy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_easy); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_color); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_color); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -18510,16 +18625,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_38fill(struct __pyx_ob
     }
   }
   if (!__pyx_t_3) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
     __Pyx_INCREF(__pyx_v_color);
     __Pyx_GIVEREF(__pyx_v_color);
     PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_color);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   }
@@ -18527,22 +18642,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_38fill(struct __pyx_ob
   __Pyx_DECREF_SET(__pyx_v_color, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1174
+  /* "renpy/display/render.pyx":1178
  * 
  *         color = renpy.easy.color(color)
  *         solid = renpy.display.imagelike.Solid(color)             # <<<<<<<<<<<<<<
  *         surf = render(solid, self.width, self.height, 0, 0)
  *         self.blit(surf, (0, 0), focus=False, main=False)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_display); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_display); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_imagelike); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_imagelike); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Solid); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Solid); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -18556,16 +18671,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_38fill(struct __pyx_ob
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_color); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_color);
     __Pyx_GIVEREF(__pyx_v_color);
     PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_color);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
@@ -18573,25 +18688,25 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_38fill(struct __pyx_ob
   __pyx_v_solid = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1175
+  /* "renpy/display/render.pyx":1179
  *         color = renpy.easy.color(color)
  *         solid = renpy.display.imagelike.Solid(color)
  *         surf = render(solid, self.width, self.height, 0, 0)             # <<<<<<<<<<<<<<
  *         self.blit(surf, (0, 0), focus=False, main=False)
  * 
  */
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = __pyx_f_5renpy_7display_6render_render(__pyx_v_solid, __pyx_t_1, __pyx_t_4, 0.0, 0.0, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __pyx_f_5renpy_7display_6render_render(__pyx_v_solid, __pyx_t_1, __pyx_t_4, 0.0, 0.0, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_surf = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1176
+  /* "renpy/display/render.pyx":1180
  *         solid = renpy.display.imagelike.Solid(color)
  *         surf = render(solid, self.width, self.height, 0, 0)
  *         self.blit(surf, (0, 0), focus=False, main=False)             # <<<<<<<<<<<<<<
@@ -18603,7 +18718,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_38fill(struct __pyx_ob
   __pyx_t_6.main = Py_False;
   __pyx_t_5 = ((struct __pyx_vtabstruct_5renpy_7display_6render_Render *)__pyx_v_self->__pyx_vtab)->blit(__pyx_v_self, __pyx_v_surf, __pyx_tuple__8, 0, &__pyx_t_6); 
 
-  /* "renpy/display/render.pyx":1168
+  /* "renpy/display/render.pyx":1172
  * 
  * 
  *     def fill(self, color):             # <<<<<<<<<<<<<<
@@ -18630,7 +18745,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_38fill(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1179
+/* "renpy/display/render.pyx":1183
  * 
  * 
  *     def canvas(self):             # <<<<<<<<<<<<<<
@@ -18667,29 +18782,29 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("canvas", 0);
 
-  /* "renpy/display/render.pyx":1184
+  /* "renpy/display/render.pyx":1188
  *         """
  * 
  *         surf = renpy.display.pgrender.surface((self.width, self.height), True)             # <<<<<<<<<<<<<<
  * 
  *         mutated_surface(surf)
  */
-  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_display); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_display); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pgrender); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pgrender); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_surface); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_surface); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
@@ -18709,7 +18824,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
       __pyx_t_6 = 1;
     }
   }
-  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   if (__pyx_t_4) {
     __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -18720,21 +18835,21 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
   __Pyx_GIVEREF(Py_True);
   PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, Py_True);
   __pyx_t_5 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_surf = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1186
+  /* "renpy/display/render.pyx":1190
  *         surf = renpy.display.pgrender.surface((self.width, self.height), True)
  * 
  *         mutated_surface(surf)             # <<<<<<<<<<<<<<
  * 
  *         self.blit(surf, (0, 0))
  */
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_mutated_surface); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_mutated_surface); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -18747,23 +18862,23 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
     }
   }
   if (!__pyx_t_2) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_surf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_surf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
     __Pyx_INCREF(__pyx_v_surf);
     __Pyx_GIVEREF(__pyx_v_surf);
     PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_surf);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "renpy/display/render.pyx":1188
+  /* "renpy/display/render.pyx":1192
  *         mutated_surface(surf)
  * 
  *         self.blit(surf, (0, 0))             # <<<<<<<<<<<<<<
@@ -18772,7 +18887,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
  */
   ((struct __pyx_vtabstruct_5renpy_7display_6render_Render *)__pyx_v_self->__pyx_vtab)->blit(__pyx_v_self, __pyx_v_surf, __pyx_tuple__9, 0, NULL);
 
-  /* "renpy/display/render.pyx":1190
+  /* "renpy/display/render.pyx":1194
  *         self.blit(surf, (0, 0))
  * 
  *         return Canvas(surf)             # <<<<<<<<<<<<<<
@@ -18780,7 +18895,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
  *     def screen_rect(self, double sx, double sy, Matrix2D transform):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Canvas); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_Canvas); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_5 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -18793,16 +18908,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
     }
   }
   if (!__pyx_t_5) {
-    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_surf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_surf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
   } else {
-    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
     __Pyx_INCREF(__pyx_v_surf);
     __Pyx_GIVEREF(__pyx_v_surf);
     PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_surf);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   }
@@ -18811,7 +18926,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "renpy/display/render.pyx":1179
+  /* "renpy/display/render.pyx":1183
  * 
  * 
  *     def canvas(self):             # <<<<<<<<<<<<<<
@@ -18835,7 +18950,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_40canvas(struct __pyx_
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1192
+/* "renpy/display/render.pyx":1196
  *         return Canvas(surf)
  * 
  *     def screen_rect(self, double sx, double sy, Matrix2D transform):             # <<<<<<<<<<<<<<
@@ -18877,16 +18992,16 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_43screen_rect(PyObject
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sy)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("screen_rect", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("screen_rect", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transform)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("screen_rect", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("screen_rect", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "screen_rect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "screen_rect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -18895,19 +19010,19 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_43screen_rect(PyObject
       values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
       values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
     }
-    __pyx_v_sx = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_sx == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_sy = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_sy == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_sx = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_sx == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+    __pyx_v_sy = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_sy == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
     __pyx_v_transform = ((struct __pyx_obj_5renpy_7display_6render_Matrix2D *)values[2]);
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("screen_rect", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("screen_rect", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.screen_rect", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_transform), __pyx_ptype_5renpy_7display_6render_Matrix2D, 1, "transform", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_transform), __pyx_ptype_5renpy_7display_6render_Matrix2D, 1, "transform", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_r = __pyx_pf_5renpy_7display_6render_6Render_42screen_rect(((struct __pyx_obj_5renpy_7display_6render_Render *)__pyx_v_self), __pyx_v_sx, __pyx_v_sy, __pyx_v_transform);
 
   /* function exit code */
@@ -18962,7 +19077,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __Pyx_RefNannySetupContext("screen_rect", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_transform);
 
-  /* "renpy/display/render.pyx":1199
+  /* "renpy/display/render.pyx":1203
  *         """
  * 
  *         if transform is None:             # <<<<<<<<<<<<<<
@@ -18973,20 +19088,20 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1200
+    /* "renpy/display/render.pyx":1204
  * 
  *         if transform is None:
  *             transform = IDENTITY             # <<<<<<<<<<<<<<
  * 
  *         cdef double w = self.width
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_IDENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_IDENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF_SET(__pyx_v_transform, ((struct __pyx_obj_5renpy_7display_6render_Matrix2D *)__pyx_t_3));
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":1199
+    /* "renpy/display/render.pyx":1203
  *         """
  * 
  *         if transform is None:             # <<<<<<<<<<<<<<
@@ -18995,7 +19110,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   }
 
-  /* "renpy/display/render.pyx":1202
+  /* "renpy/display/render.pyx":1206
  *             transform = IDENTITY
  * 
  *         cdef double w = self.width             # <<<<<<<<<<<<<<
@@ -19005,7 +19120,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_4 = __pyx_v_self->width;
   __pyx_v_w = __pyx_t_4;
 
-  /* "renpy/display/render.pyx":1203
+  /* "renpy/display/render.pyx":1207
  * 
  *         cdef double w = self.width
  *         cdef double h = self.height             # <<<<<<<<<<<<<<
@@ -19015,7 +19130,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_4 = __pyx_v_self->height;
   __pyx_v_h = __pyx_t_4;
 
-  /* "renpy/display/render.pyx":1205
+  /* "renpy/display/render.pyx":1209
  *         cdef double h = self.height
  * 
  *         cdef double xdx = transform.xdx             # <<<<<<<<<<<<<<
@@ -19025,7 +19140,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_5 = __pyx_v_transform->xdx;
   __pyx_v_xdx = __pyx_t_5;
 
-  /* "renpy/display/render.pyx":1206
+  /* "renpy/display/render.pyx":1210
  * 
  *         cdef double xdx = transform.xdx
  *         cdef double xdy = transform.xdy             # <<<<<<<<<<<<<<
@@ -19035,7 +19150,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_5 = __pyx_v_transform->xdy;
   __pyx_v_xdy = __pyx_t_5;
 
-  /* "renpy/display/render.pyx":1207
+  /* "renpy/display/render.pyx":1211
  *         cdef double xdx = transform.xdx
  *         cdef double xdy = transform.xdy
  *         cdef double ydx = transform.ydx             # <<<<<<<<<<<<<<
@@ -19045,7 +19160,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_5 = __pyx_v_transform->ydx;
   __pyx_v_ydx = __pyx_t_5;
 
-  /* "renpy/display/render.pyx":1208
+  /* "renpy/display/render.pyx":1212
  *         cdef double xdy = transform.xdy
  *         cdef double ydx = transform.ydx
  *         cdef double ydy = transform.ydy             # <<<<<<<<<<<<<<
@@ -19055,7 +19170,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_5 = __pyx_v_transform->ydy;
   __pyx_v_ydy = __pyx_t_5;
 
-  /* "renpy/display/render.pyx":1211
+  /* "renpy/display/render.pyx":1215
  * 
  *         # Transform the vertex coordinates to screen-space.
  *         cdef double x0 = sx             # <<<<<<<<<<<<<<
@@ -19064,7 +19179,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_x0 = __pyx_v_sx;
 
-  /* "renpy/display/render.pyx":1212
+  /* "renpy/display/render.pyx":1216
  *         # Transform the vertex coordinates to screen-space.
  *         cdef double x0 = sx
  *         cdef double y0 = sy             # <<<<<<<<<<<<<<
@@ -19073,7 +19188,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_y0 = __pyx_v_sy;
 
-  /* "renpy/display/render.pyx":1214
+  /* "renpy/display/render.pyx":1218
  *         cdef double y0 = sy
  * 
  *         cdef double x1 = w * xdx + sx             # <<<<<<<<<<<<<<
@@ -19082,7 +19197,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_x1 = ((__pyx_v_w * __pyx_v_xdx) + __pyx_v_sx);
 
-  /* "renpy/display/render.pyx":1215
+  /* "renpy/display/render.pyx":1219
  * 
  *         cdef double x1 = w * xdx + sx
  *         cdef double y1 = w * ydx + sy             # <<<<<<<<<<<<<<
@@ -19091,7 +19206,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_y1 = ((__pyx_v_w * __pyx_v_ydx) + __pyx_v_sy);
 
-  /* "renpy/display/render.pyx":1217
+  /* "renpy/display/render.pyx":1221
  *         cdef double y1 = w * ydx + sy
  * 
  *         cdef double x2 = h * xdy + sx             # <<<<<<<<<<<<<<
@@ -19100,7 +19215,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_x2 = ((__pyx_v_h * __pyx_v_xdy) + __pyx_v_sx);
 
-  /* "renpy/display/render.pyx":1218
+  /* "renpy/display/render.pyx":1222
  * 
  *         cdef double x2 = h * xdy + sx
  *         cdef double y2 = h * ydy + sy             # <<<<<<<<<<<<<<
@@ -19109,7 +19224,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_y2 = ((__pyx_v_h * __pyx_v_ydy) + __pyx_v_sy);
 
-  /* "renpy/display/render.pyx":1220
+  /* "renpy/display/render.pyx":1224
  *         cdef double y2 = h * ydy + sy
  * 
  *         cdef double x3 = w * xdx + h * xdy + sx             # <<<<<<<<<<<<<<
@@ -19118,7 +19233,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_x3 = (((__pyx_v_w * __pyx_v_xdx) + (__pyx_v_h * __pyx_v_xdy)) + __pyx_v_sx);
 
-  /* "renpy/display/render.pyx":1221
+  /* "renpy/display/render.pyx":1225
  * 
  *         cdef double x3 = w * xdx + h * xdy + sx
  *         cdef double y3 = w * ydx + h * ydy + sy             # <<<<<<<<<<<<<<
@@ -19127,7 +19242,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __pyx_v_y3 = (((__pyx_v_w * __pyx_v_ydx) + (__pyx_v_h * __pyx_v_ydy)) + __pyx_v_sy);
 
-  /* "renpy/display/render.pyx":1223
+  /* "renpy/display/render.pyx":1227
  *         cdef double y3 = w * ydx + h * ydy + sy
  * 
  *         cdef double minx = min(x0, x1, x2, x3)             # <<<<<<<<<<<<<<
@@ -19157,7 +19272,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   }
   __pyx_v_minx = __pyx_t_9;
 
-  /* "renpy/display/render.pyx":1224
+  /* "renpy/display/render.pyx":1228
  * 
  *         cdef double minx = min(x0, x1, x2, x3)
  *         cdef double maxx = max(x0, x1, x2, x3)             # <<<<<<<<<<<<<<
@@ -19187,7 +19302,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   }
   __pyx_v_maxx = __pyx_t_8;
 
-  /* "renpy/display/render.pyx":1225
+  /* "renpy/display/render.pyx":1229
  *         cdef double minx = min(x0, x1, x2, x3)
  *         cdef double maxx = max(x0, x1, x2, x3)
  *         cdef double miny = min(y0, y1, y2, y3)             # <<<<<<<<<<<<<<
@@ -19217,7 +19332,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   }
   __pyx_v_miny = __pyx_t_7;
 
-  /* "renpy/display/render.pyx":1226
+  /* "renpy/display/render.pyx":1230
  *         cdef double maxx = max(x0, x1, x2, x3)
  *         cdef double miny = min(y0, y1, y2, y3)
  *         cdef double maxy = max(y0, y1, y2, y3)             # <<<<<<<<<<<<<<
@@ -19247,7 +19362,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   }
   __pyx_v_maxy = __pyx_t_6;
 
-  /* "renpy/display/render.pyx":1228
+  /* "renpy/display/render.pyx":1232
  *         cdef double maxy = max(y0, y1, y2, y3)
  * 
  *         return (             # <<<<<<<<<<<<<<
@@ -19256,55 +19371,55 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "renpy/display/render.pyx":1229
+  /* "renpy/display/render.pyx":1233
  * 
  *         return (
  *             int(minx),             # <<<<<<<<<<<<<<
  *             int(miny),
  *             int(math.ceil(maxx - minx)),
  */
-  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_minx); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_minx); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   __Pyx_GIVEREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3);
   __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
 
-  /* "renpy/display/render.pyx":1230
+  /* "renpy/display/render.pyx":1234
  *         return (
  *             int(minx),
  *             int(miny),             # <<<<<<<<<<<<<<
  *             int(math.ceil(maxx - minx)),
  *             int(math.ceil(maxy - miny)),
  */
-  __pyx_t_10 = PyFloat_FromDouble(__pyx_v_miny); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = PyFloat_FromDouble(__pyx_v_miny); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
-  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_11);
   __Pyx_GIVEREF(__pyx_t_10);
   PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10);
   __pyx_t_10 = 0;
-  __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_10 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_10);
   __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-  /* "renpy/display/render.pyx":1231
+  /* "renpy/display/render.pyx":1235
  *             int(minx),
  *             int(miny),
  *             int(math.ceil(maxx - minx)),             # <<<<<<<<<<<<<<
  *             int(math.ceil(maxy - miny)),
  *             )
  */
-  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_12);
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_ceil); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_ceil); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
   __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __pyx_t_12 = PyFloat_FromDouble((__pyx_v_maxx - __pyx_v_minx)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = PyFloat_FromDouble((__pyx_v_maxx - __pyx_v_minx)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_12);
   __pyx_t_14 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_13))) {
@@ -19317,38 +19432,38 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
     }
   }
   if (!__pyx_t_14) {
-    __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
     __Pyx_GOTREF(__pyx_t_11);
   } else {
-    __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_15);
     __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL;
     __Pyx_GIVEREF(__pyx_t_12);
     PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_12);
     __pyx_t_12 = 0;
-    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_15, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   }
   __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_13 = PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_13 = PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_13);
   __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-  /* "renpy/display/render.pyx":1232
+  /* "renpy/display/render.pyx":1236
  *             int(miny),
  *             int(math.ceil(maxx - minx)),
  *             int(math.ceil(maxy - miny)),             # <<<<<<<<<<<<<<
  *             )
  * 
  */
-  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_15 = __Pyx_GetModuleGlobalName(__pyx_n_s_math); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_15);
-  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_ceil); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_ceil); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_12);
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
-  __pyx_t_15 = PyFloat_FromDouble((__pyx_v_maxy - __pyx_v_miny)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_15 = PyFloat_FromDouble((__pyx_v_maxy - __pyx_v_miny)); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_15);
   __pyx_t_14 = NULL;
   if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_12))) {
@@ -19361,33 +19476,33 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
     }
   }
   if (!__pyx_t_14) {
-    __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_15); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
     __Pyx_GOTREF(__pyx_t_11);
   } else {
-    __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_16);
     __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
     __Pyx_GIVEREF(__pyx_t_15);
     PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_15);
     __pyx_t_15 = 0;
-    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_16, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_16, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_11);
     __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
   }
   __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __pyx_t_12 = PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_12 = PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_12);
   __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
 
-  /* "renpy/display/render.pyx":1229
+  /* "renpy/display/render.pyx":1233
  * 
  *         return (
  *             int(minx),             # <<<<<<<<<<<<<<
  *             int(miny),
  *             int(math.ceil(maxx - minx)),
  */
-  __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_11);
   __Pyx_GIVEREF(__pyx_t_3);
   PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3);
@@ -19405,7 +19520,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   __pyx_t_11 = 0;
   goto __pyx_L0;
 
-  /* "renpy/display/render.pyx":1192
+  /* "renpy/display/render.pyx":1196
  *         return Canvas(surf)
  * 
  *     def screen_rect(self, double sx, double sy, Matrix2D transform):             # <<<<<<<<<<<<<<
@@ -19432,7 +19547,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_42screen_rect(struct _
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1235
+/* "renpy/display/render.pyx":1239
  *             )
  * 
  *     def place(self, d, x=0, y=0, width=None, height=None, st=None, at=None, render=None, main=True):             # <<<<<<<<<<<<<<
@@ -19533,7 +19648,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_45place(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "place") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "place") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -19562,7 +19677,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_45place(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("place", 0, 1, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("place", 0, 1, 9, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1239; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.place", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19595,7 +19710,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
   __Pyx_INCREF(__pyx_v_at);
   __Pyx_INCREF(__pyx_v_render);
 
-  /* "renpy/display/render.pyx":1240
+  /* "renpy/display/render.pyx":1244
  *         """
  * 
  *         if width is None:             # <<<<<<<<<<<<<<
@@ -19606,19 +19721,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1241
+    /* "renpy/display/render.pyx":1245
  * 
  *         if width is None:
  *             width = self.width             # <<<<<<<<<<<<<<
  *         if height is None:
  *             height = self.height
  */
-    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->width); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_width, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":1240
+    /* "renpy/display/render.pyx":1244
  *         """
  * 
  *         if width is None:             # <<<<<<<<<<<<<<
@@ -19627,7 +19742,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
  */
   }
 
-  /* "renpy/display/render.pyx":1242
+  /* "renpy/display/render.pyx":1246
  *         if width is None:
  *             width = self.width
  *         if height is None:             # <<<<<<<<<<<<<<
@@ -19638,19 +19753,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "renpy/display/render.pyx":1243
+    /* "renpy/display/render.pyx":1247
  *             width = self.width
  *         if height is None:
  *             height = self.height             # <<<<<<<<<<<<<<
  * 
  *         if render is None:
  */
-    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->height); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_height, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":1242
+    /* "renpy/display/render.pyx":1246
  *         if width is None:
  *             width = self.width
  *         if height is None:             # <<<<<<<<<<<<<<
@@ -19659,7 +19774,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
  */
   }
 
-  /* "renpy/display/render.pyx":1245
+  /* "renpy/display/render.pyx":1249
  *             height = self.height
  * 
  *         if render is None:             # <<<<<<<<<<<<<<
@@ -19670,7 +19785,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1246
+    /* "renpy/display/render.pyx":1250
  * 
  *         if render is None:
  *             if st is None:             # <<<<<<<<<<<<<<
@@ -19681,19 +19796,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "renpy/display/render.pyx":1247
+      /* "renpy/display/render.pyx":1251
  *         if render is None:
  *             if st is None:
  *                 st = render_st             # <<<<<<<<<<<<<<
  *             if at is None:
  *                 at = render_at
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_st); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_st); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_st, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "renpy/display/render.pyx":1246
+      /* "renpy/display/render.pyx":1250
  * 
  *         if render is None:
  *             if st is None:             # <<<<<<<<<<<<<<
@@ -19702,7 +19817,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
  */
     }
 
-    /* "renpy/display/render.pyx":1248
+    /* "renpy/display/render.pyx":1252
  *             if st is None:
  *                 st = render_st
  *             if at is None:             # <<<<<<<<<<<<<<
@@ -19713,19 +19828,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "renpy/display/render.pyx":1249
+      /* "renpy/display/render.pyx":1253
  *                 st = render_st
  *             if at is None:
  *                 at = render_at             # <<<<<<<<<<<<<<
  * 
  *             render = renpy.display.render.render(d, width, height, st, at)
  */
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_at); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_render_at); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_at, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "renpy/display/render.pyx":1248
+      /* "renpy/display/render.pyx":1252
  *             if st is None:
  *                 st = render_st
  *             if at is None:             # <<<<<<<<<<<<<<
@@ -19734,22 +19849,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
  */
     }
 
-    /* "renpy/display/render.pyx":1251
+    /* "renpy/display/render.pyx":1255
  *                 at = render_at
  * 
  *             render = renpy.display.render.render(d, width, height, st, at)             # <<<<<<<<<<<<<<
  * 
  *         d.place(self, x, y, width, height, render, main=main)
  */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_display); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_display); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_render); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_render); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_render); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_t_4 = NULL;
@@ -19764,7 +19879,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
         __pyx_t_6 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_7 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -19784,14 +19899,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
     __Pyx_INCREF(__pyx_v_at);
     __Pyx_GIVEREF(__pyx_v_at);
     PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_6, __pyx_v_at);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF_SET(__pyx_v_render, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":1245
+    /* "renpy/display/render.pyx":1249
  *             height = self.height
  * 
  *         if render is None:             # <<<<<<<<<<<<<<
@@ -19800,16 +19915,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
  */
   }
 
-  /* "renpy/display/render.pyx":1253
+  /* "renpy/display/render.pyx":1257
  *             render = renpy.display.render.render(d, width, height, st, at)
  * 
  *         d.place(self, x, y, width, height, render, main=main)             # <<<<<<<<<<<<<<
  * 
  *     def zoom(self, xzoom, yzoom):
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_d, __pyx_n_s_place); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_d, __pyx_n_s_place); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_5 = PyTuple_New(6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_5 = PyTuple_New(6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -19829,17 +19944,17 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
   __Pyx_INCREF(__pyx_v_render);
   __Pyx_GIVEREF(__pyx_v_render);
   PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_v_render);
-  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_7);
-  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_main, __pyx_v_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_main, __pyx_v_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "renpy/display/render.pyx":1235
+  /* "renpy/display/render.pyx":1239
  *             )
  * 
  *     def place(self, d, x=0, y=0, width=None, height=None, st=None, at=None, render=None, main=True):             # <<<<<<<<<<<<<<
@@ -19868,7 +19983,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_44place(struct __pyx_o
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1255
+/* "renpy/display/render.pyx":1259
  *         d.place(self, x, y, width, height, render, main=main)
  * 
  *     def zoom(self, xzoom, yzoom):             # <<<<<<<<<<<<<<
@@ -19908,11 +20023,11 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_47zoom(PyObject *__pyx
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_yzoom)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("zoom", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("zoom", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zoom") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "zoom") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -19925,7 +20040,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Render_47zoom(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("zoom", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("zoom", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Render.zoom", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19951,7 +20066,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("zoom", 0);
 
-  /* "renpy/display/render.pyx":1259
+  /* "renpy/display/render.pyx":1263
  *         Sets the zoom factor applied to this displayable's children.
  *         """
  *         if self.reverse is None:             # <<<<<<<<<<<<<<
@@ -19962,39 +20077,39 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1260
+    /* "renpy/display/render.pyx":1264
  *         """
  *         if self.reverse is None:
  *             self.reverse = IDENTITY             # <<<<<<<<<<<<<<
  *             self.forward = IDENTITY
  * 
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_IDENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_IDENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_GOTREF(__pyx_v_self->reverse);
     __Pyx_DECREF(((PyObject *)__pyx_v_self->reverse));
     __pyx_v_self->reverse = ((struct __pyx_obj_5renpy_7display_6render_Matrix2D *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":1261
+    /* "renpy/display/render.pyx":1265
  *         if self.reverse is None:
  *             self.reverse = IDENTITY
  *             self.forward = IDENTITY             # <<<<<<<<<<<<<<
  * 
  *         self.reverse *= Matrix2D(xzoom, 0, 0, yzoom)
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_IDENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_IDENTITY); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_GOTREF(__pyx_v_self->forward);
     __Pyx_DECREF(((PyObject *)__pyx_v_self->forward));
     __pyx_v_self->forward = ((struct __pyx_obj_5renpy_7display_6render_Matrix2D *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "renpy/display/render.pyx":1259
+    /* "renpy/display/render.pyx":1263
  *         Sets the zoom factor applied to this displayable's children.
  *         """
  *         if self.reverse is None:             # <<<<<<<<<<<<<<
@@ -20003,14 +20118,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
  */
   }
 
-  /* "renpy/display/render.pyx":1263
+  /* "renpy/display/render.pyx":1267
  *             self.forward = IDENTITY
  * 
  *         self.reverse *= Matrix2D(xzoom, 0, 0, yzoom)             # <<<<<<<<<<<<<<
  * 
  *         if xzoom and yzoom:
  */
-  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_xzoom);
   __Pyx_GIVEREF(__pyx_v_xzoom);
@@ -20024,49 +20139,49 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
   __Pyx_INCREF(__pyx_v_yzoom);
   __Pyx_GIVEREF(__pyx_v_yzoom);
   PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_yzoom);
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5renpy_7display_6render_Matrix2D), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5renpy_7display_6render_Matrix2D), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyNumber_InPlaceMultiply(((PyObject *)__pyx_v_self->reverse), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = PyNumber_InPlaceMultiply(((PyObject *)__pyx_v_self->reverse), __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GIVEREF(__pyx_t_3);
   __Pyx_GOTREF(__pyx_v_self->reverse);
   __Pyx_DECREF(((PyObject *)__pyx_v_self->reverse));
   __pyx_v_self->reverse = ((struct __pyx_obj_5renpy_7display_6render_Matrix2D *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1265
+  /* "renpy/display/render.pyx":1269
  *         self.reverse *= Matrix2D(xzoom, 0, 0, yzoom)
  * 
  *         if xzoom and yzoom:             # <<<<<<<<<<<<<<
  *             self.forward *= Matrix2D(1.0 / xzoom, 0, 0, 1.0 / yzoom)
  *         else:
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_xzoom); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_xzoom); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   if (__pyx_t_1) {
   } else {
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_yzoom); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_yzoom); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_t_2 = __pyx_t_1;
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "renpy/display/render.pyx":1266
+    /* "renpy/display/render.pyx":1270
  * 
  *         if xzoom and yzoom:
  *             self.forward *= Matrix2D(1.0 / xzoom, 0, 0, 1.0 / yzoom)             # <<<<<<<<<<<<<<
  *         else:
  *             self.forward *= Matrix2D(0, 0, 0, 0)
  */
-    __pyx_t_3 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_0, __pyx_v_xzoom, 1.0, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_3 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_0, __pyx_v_xzoom, 1.0, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_0, __pyx_v_yzoom, 1.0, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_0, __pyx_v_yzoom, 1.0, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
@@ -20080,20 +20195,20 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
     PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_4);
     __pyx_t_3 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5renpy_7display_6render_Matrix2D), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5renpy_7display_6render_Matrix2D), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = PyNumber_InPlaceMultiply(((PyObject *)__pyx_v_self->forward), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = PyNumber_InPlaceMultiply(((PyObject *)__pyx_v_self->forward), __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GIVEREF(__pyx_t_5);
     __Pyx_GOTREF(__pyx_v_self->forward);
     __Pyx_DECREF(((PyObject *)__pyx_v_self->forward));
     __pyx_v_self->forward = ((struct __pyx_obj_5renpy_7display_6render_Matrix2D *)__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1265
+    /* "renpy/display/render.pyx":1269
  *         self.reverse *= Matrix2D(xzoom, 0, 0, yzoom)
  * 
  *         if xzoom and yzoom:             # <<<<<<<<<<<<<<
@@ -20103,7 +20218,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
     goto __pyx_L4;
   }
 
-  /* "renpy/display/render.pyx":1268
+  /* "renpy/display/render.pyx":1272
  *             self.forward *= Matrix2D(1.0 / xzoom, 0, 0, 1.0 / yzoom)
  *         else:
  *             self.forward *= Matrix2D(0, 0, 0, 0)             # <<<<<<<<<<<<<<
@@ -20111,12 +20226,12 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
  * class Canvas(object):
  */
   /*else*/ {
-    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5renpy_7display_6render_Matrix2D), __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_5renpy_7display_6render_Matrix2D), __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_4 = PyNumber_InPlaceMultiply(((PyObject *)__pyx_v_self->forward), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    __pyx_t_4 = PyNumber_InPlaceMultiply(((PyObject *)__pyx_v_self->forward), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5renpy_7display_6render_Matrix2D))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
     __Pyx_GIVEREF(__pyx_t_4);
     __Pyx_GOTREF(__pyx_v_self->forward);
     __Pyx_DECREF(((PyObject *)__pyx_v_self->forward));
@@ -20125,7 +20240,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Render_46zoom(struct __pyx_ob
   }
   __pyx_L4:;
 
-  /* "renpy/display/render.pyx":1255
+  /* "renpy/display/render.pyx":1259
  *         d.place(self, x, y, width, height, render, main=main)
  * 
  *     def zoom(self, xzoom, yzoom):             # <<<<<<<<<<<<<<
@@ -22893,7 +23008,7 @@ static int __pyx_pf_5renpy_7display_6render_6Render_10text_input_2__set__(struct
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1272
+/* "renpy/display/render.pyx":1276
  * class Canvas(object):
  * 
  *     def __init__(self, surf): #@DuplicatedSignature             # <<<<<<<<<<<<<<
@@ -22933,11 +23048,11 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_1__init__(PyObject *__
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_surf)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -22950,7 +23065,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_1__init__(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22971,16 +23086,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas___init__(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "renpy/display/render.pyx":1273
+  /* "renpy/display/render.pyx":1277
  * 
  *     def __init__(self, surf): #@DuplicatedSignature
  *         self.surf = surf             # <<<<<<<<<<<<<<
  * 
  *     def rect(self, color, rect, width=0):
  */
-  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_surf, __pyx_v_surf) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_surf, __pyx_v_surf) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "renpy/display/render.pyx":1272
+  /* "renpy/display/render.pyx":1276
  * class Canvas(object):
  * 
  *     def __init__(self, surf): #@DuplicatedSignature             # <<<<<<<<<<<<<<
@@ -23000,7 +23115,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas___init__(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1275
+/* "renpy/display/render.pyx":1279
  *         self.surf = surf
  * 
  *     def rect(self, color, rect, width=0):             # <<<<<<<<<<<<<<
@@ -23045,12 +23160,12 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_3rect(PyObject *__pyx_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("rect", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("rect", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rect)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("rect", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("rect", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (kw_args > 0) {
@@ -23059,7 +23174,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_3rect(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -23078,7 +23193,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_3rect(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("rect", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("rect", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.rect", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -23116,7 +23231,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("rect", 0);
 
-  /* "renpy/display/render.pyx":1277
+  /* "renpy/display/render.pyx":1281
  *     def rect(self, color, rect, width=0):
  * 
  *         try:             # <<<<<<<<<<<<<<
@@ -23125,16 +23240,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1278
+    /* "renpy/display/render.pyx":1282
  * 
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.rect(self.surf,
  *                              renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -23148,46 +23263,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1279
+    /* "renpy/display/render.pyx":1283
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.rect(self.surf,             # <<<<<<<<<<<<<<
  *                              renpy.easy.color(color),
  *                              rect,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_rect); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_rect); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1280
+    /* "renpy/display/render.pyx":1284
  *             blit_lock.acquire()
  *             pygame.draw.rect(self.surf,
  *                              renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                              rect,
  *                              width)
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -23201,22 +23316,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1282
+    /* "renpy/display/render.pyx":1286
  *                              renpy.easy.color(color),
  *                              rect,
  *                              width)             # <<<<<<<<<<<<<<
@@ -23235,7 +23350,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -23252,14 +23367,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
     PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_8, __pyx_v_width);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1283; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1284
+  /* "renpy/display/render.pyx":1288
  *                              width)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -23268,9 +23383,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -23284,10 +23399,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -23314,9 +23429,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -23330,10 +23445,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1284; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -23368,7 +23483,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1275
+  /* "renpy/display/render.pyx":1279
  *         self.surf = surf
  * 
  *     def rect(self, color, rect, width=0):             # <<<<<<<<<<<<<<
@@ -23395,7 +23510,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_2rect(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1286
+/* "renpy/display/render.pyx":1290
  *             blit_lock.release()
  * 
  *     def polygon(self, color, pointlist, width=0):             # <<<<<<<<<<<<<<
@@ -23440,12 +23555,12 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_5polygon(PyObject *__p
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("polygon", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("polygon", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pointlist)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("polygon", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("polygon", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (kw_args > 0) {
@@ -23454,7 +23569,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_5polygon(PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "polygon") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "polygon") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -23473,7 +23588,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_5polygon(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("polygon", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("polygon", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.polygon", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -23511,7 +23626,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("polygon", 0);
 
-  /* "renpy/display/render.pyx":1287
+  /* "renpy/display/render.pyx":1291
  * 
  *     def polygon(self, color, pointlist, width=0):
  *         try:             # <<<<<<<<<<<<<<
@@ -23520,16 +23635,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1288
+    /* "renpy/display/render.pyx":1292
  *     def polygon(self, color, pointlist, width=0):
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.polygon(self.surf,
  *                                 renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -23543,46 +23658,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1288; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1292; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1289
+    /* "renpy/display/render.pyx":1293
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.polygon(self.surf,             # <<<<<<<<<<<<<<
  *                                 renpy.easy.color(color),
  *                                 pointlist,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_polygon); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_polygon); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1290
+    /* "renpy/display/render.pyx":1294
  *             blit_lock.acquire()
  *             pygame.draw.polygon(self.surf,
  *                                 renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                                 pointlist,
  *                                 width)
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -23596,22 +23711,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1292
+    /* "renpy/display/render.pyx":1296
  *                                 renpy.easy.color(color),
  *                                 pointlist,
  *                                 width)             # <<<<<<<<<<<<<<
@@ -23630,7 +23745,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -23647,14 +23762,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_8, __pyx_v_width);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1294
+  /* "renpy/display/render.pyx":1298
  *                                 width)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -23663,9 +23778,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -23679,10 +23794,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -23709,9 +23824,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -23725,10 +23840,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -23763,7 +23878,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1286
+  /* "renpy/display/render.pyx":1290
  *             blit_lock.release()
  * 
  *     def polygon(self, color, pointlist, width=0):             # <<<<<<<<<<<<<<
@@ -23790,7 +23905,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_4polygon(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1296
+/* "renpy/display/render.pyx":1300
  *             blit_lock.release()
  * 
  *     def circle(self, color, pos, radius, width=0):             # <<<<<<<<<<<<<<
@@ -23837,17 +23952,17 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_7circle(PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_radius)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (kw_args > 0) {
@@ -23856,7 +23971,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_7circle(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "circle") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "circle") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -23877,7 +23992,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_7circle(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("circle", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.circle", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -23915,7 +24030,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("circle", 0);
 
-  /* "renpy/display/render.pyx":1298
+  /* "renpy/display/render.pyx":1302
  *     def circle(self, color, pos, radius, width=0):
  * 
  *         try:             # <<<<<<<<<<<<<<
@@ -23924,16 +24039,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1299
+    /* "renpy/display/render.pyx":1303
  * 
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.circle(self.surf,
  *                                renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -23947,46 +24062,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1303; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1300
+    /* "renpy/display/render.pyx":1304
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.circle(self.surf,             # <<<<<<<<<<<<<<
  *                                renpy.easy.color(color),
  *                                pos,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_circle); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_circle); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1301
+    /* "renpy/display/render.pyx":1305
  *             blit_lock.acquire()
  *             pygame.draw.circle(self.surf,
  *                                renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                                pos,
  *                                radius,
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -24000,22 +24115,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1304
+    /* "renpy/display/render.pyx":1308
  *                                pos,
  *                                radius,
  *                                width)             # <<<<<<<<<<<<<<
@@ -24034,7 +24149,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -24054,14 +24169,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_v_width);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1307
+  /* "renpy/display/render.pyx":1311
  * 
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -24070,9 +24185,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -24086,10 +24201,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -24116,9 +24231,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -24132,10 +24247,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -24170,7 +24285,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1296
+  /* "renpy/display/render.pyx":1300
  *             blit_lock.release()
  * 
  *     def circle(self, color, pos, radius, width=0):             # <<<<<<<<<<<<<<
@@ -24197,7 +24312,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_6circle(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1309
+/* "renpy/display/render.pyx":1313
  *             blit_lock.release()
  * 
  *     def ellipse(self, color, rect, width=0):             # <<<<<<<<<<<<<<
@@ -24242,12 +24357,12 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_9ellipse(PyObject *__p
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("ellipse", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("ellipse", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rect)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("ellipse", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("ellipse", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (kw_args > 0) {
@@ -24256,7 +24371,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_9ellipse(PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ellipse") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ellipse") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -24275,7 +24390,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_9ellipse(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("ellipse", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("ellipse", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.ellipse", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24313,7 +24428,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("ellipse", 0);
 
-  /* "renpy/display/render.pyx":1310
+  /* "renpy/display/render.pyx":1314
  * 
  *     def ellipse(self, color, rect, width=0):
  *         try:             # <<<<<<<<<<<<<<
@@ -24322,16 +24437,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1311
+    /* "renpy/display/render.pyx":1315
  *     def ellipse(self, color, rect, width=0):
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.ellipse(self.surf,
  *                                 renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -24345,46 +24460,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1315; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1312
+    /* "renpy/display/render.pyx":1316
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.ellipse(self.surf,             # <<<<<<<<<<<<<<
  *                                 renpy.easy.color(color),
  *                                 rect,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ellipse); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ellipse); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1313
+    /* "renpy/display/render.pyx":1317
  *             blit_lock.acquire()
  *             pygame.draw.ellipse(self.surf,
  *                                 renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                                 rect,
  *                                 width)
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -24398,22 +24513,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1315
+    /* "renpy/display/render.pyx":1319
  *                                 renpy.easy.color(color),
  *                                 rect,
  *                                 width)             # <<<<<<<<<<<<<<
@@ -24432,7 +24547,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -24449,14 +24564,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_8, __pyx_v_width);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1312; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1316; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1317
+  /* "renpy/display/render.pyx":1321
  *                                 width)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -24465,9 +24580,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -24481,10 +24596,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -24511,9 +24626,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -24527,10 +24642,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1321; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -24565,7 +24680,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1309
+  /* "renpy/display/render.pyx":1313
  *             blit_lock.release()
  * 
  *     def ellipse(self, color, rect, width=0):             # <<<<<<<<<<<<<<
@@ -24592,7 +24707,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_8ellipse(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1320
+/* "renpy/display/render.pyx":1324
  * 
  * 
  *     def arc(self, color, rect, start_angle, stop_angle, width=1):             # <<<<<<<<<<<<<<
@@ -24641,22 +24756,22 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_11arc(PyObject *__pyx_
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rect)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_start_angle)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stop_angle)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  5:
         if (kw_args > 0) {
@@ -24665,7 +24780,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_11arc(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "arc") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "arc") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -24688,7 +24803,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_11arc(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("arc", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.arc", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24726,7 +24841,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("arc", 0);
 
-  /* "renpy/display/render.pyx":1321
+  /* "renpy/display/render.pyx":1325
  * 
  *     def arc(self, color, rect, start_angle, stop_angle, width=1):
  *         try:             # <<<<<<<<<<<<<<
@@ -24735,16 +24850,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1322
+    /* "renpy/display/render.pyx":1326
  *     def arc(self, color, rect, start_angle, stop_angle, width=1):
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.arc(self.surf,
  *                             renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -24758,46 +24873,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1322; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1326; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1323
+    /* "renpy/display/render.pyx":1327
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.arc(self.surf,             # <<<<<<<<<<<<<<
  *                             renpy.easy.color(color),
  *                             rect,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_arc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_arc); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1324
+    /* "renpy/display/render.pyx":1328
  *             blit_lock.acquire()
  *             pygame.draw.arc(self.surf,
  *                             renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                             rect,
  *                             start_angle,
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -24811,22 +24926,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1328
+    /* "renpy/display/render.pyx":1332
  *                             start_angle,
  *                             stop_angle,
  *                             width)             # <<<<<<<<<<<<<<
@@ -24845,7 +24960,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(6+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(6+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -24868,14 +24983,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
     PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_8, __pyx_v_width);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1323; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1330
+  /* "renpy/display/render.pyx":1334
  *                             width)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -24884,9 +24999,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -24900,10 +25015,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -24930,9 +25045,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -24946,10 +25061,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -24984,7 +25099,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1320
+  /* "renpy/display/render.pyx":1324
  * 
  * 
  *     def arc(self, color, rect, start_angle, stop_angle, width=1):             # <<<<<<<<<<<<<<
@@ -25011,7 +25126,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_10arc(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1333
+/* "renpy/display/render.pyx":1337
  * 
  * 
  *     def line(self, color, start_pos, end_pos, width=1):             # <<<<<<<<<<<<<<
@@ -25058,17 +25173,17 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_13line(PyObject *__pyx
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_start_pos)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_end_pos)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (kw_args > 0) {
@@ -25077,7 +25192,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_13line(PyObject *__pyx
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "line") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "line") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25098,7 +25213,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_13line(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("line", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.line", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25136,7 +25251,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("line", 0);
 
-  /* "renpy/display/render.pyx":1334
+  /* "renpy/display/render.pyx":1338
  * 
  *     def line(self, color, start_pos, end_pos, width=1):
  *         try:             # <<<<<<<<<<<<<<
@@ -25145,16 +25260,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1335
+    /* "renpy/display/render.pyx":1339
  *     def line(self, color, start_pos, end_pos, width=1):
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.line(self.surf,
  *                              renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -25168,46 +25283,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1336
+    /* "renpy/display/render.pyx":1340
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.line(self.surf,             # <<<<<<<<<<<<<<
  *                              renpy.easy.color(color),
  *                              start_pos,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_line); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_line); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1337
+    /* "renpy/display/render.pyx":1341
  *             blit_lock.acquire()
  *             pygame.draw.line(self.surf,
  *                              renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                              start_pos,
  *                              end_pos,
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -25221,22 +25336,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1340
+    /* "renpy/display/render.pyx":1344
  *                              start_pos,
  *                              end_pos,
  *                              width)             # <<<<<<<<<<<<<<
@@ -25255,7 +25370,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -25275,14 +25390,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
     PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_v_width);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1336; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1342
+  /* "renpy/display/render.pyx":1346
  *                              width)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -25291,9 +25406,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -25307,10 +25422,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -25337,9 +25452,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -25353,10 +25468,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1342; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -25391,7 +25506,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1333
+  /* "renpy/display/render.pyx":1337
  * 
  * 
  *     def line(self, color, start_pos, end_pos, width=1):             # <<<<<<<<<<<<<<
@@ -25418,7 +25533,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_12line(CYTHON_UNUSED P
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1344
+/* "renpy/display/render.pyx":1348
  *             blit_lock.release()
  * 
  *     def lines(self, color, closed, pointlist, width=1):             # <<<<<<<<<<<<<<
@@ -25465,17 +25580,17 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_15lines(PyObject *__py
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_closed)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pointlist)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (kw_args > 0) {
@@ -25484,7 +25599,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_15lines(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lines") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lines") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25505,7 +25620,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_15lines(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("lines", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.lines", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25543,7 +25658,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("lines", 0);
 
-  /* "renpy/display/render.pyx":1345
+  /* "renpy/display/render.pyx":1349
  * 
  *     def lines(self, color, closed, pointlist, width=1):
  *         try:             # <<<<<<<<<<<<<<
@@ -25552,16 +25667,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1346
+    /* "renpy/display/render.pyx":1350
  *     def lines(self, color, closed, pointlist, width=1):
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.lines(self.surf,
  *                               renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -25575,46 +25690,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1346; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1350; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1347
+    /* "renpy/display/render.pyx":1351
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.lines(self.surf,             # <<<<<<<<<<<<<<
  *                               renpy.easy.color(color),
  *                               closed,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lines); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_lines); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1348
+    /* "renpy/display/render.pyx":1352
  *             blit_lock.acquire()
  *             pygame.draw.lines(self.surf,
  *                               renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                               closed,
  *                               pointlist,
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -25628,22 +25743,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1352; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1351
+    /* "renpy/display/render.pyx":1355
  *                               closed,
  *                               pointlist,
  *                               width)             # <<<<<<<<<<<<<<
@@ -25662,7 +25777,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -25682,14 +25797,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_v_width);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1347; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1351; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1353
+  /* "renpy/display/render.pyx":1357
  *                               width)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -25698,9 +25813,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -25714,10 +25829,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -25744,9 +25859,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -25760,10 +25875,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1353; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -25798,7 +25913,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1344
+  /* "renpy/display/render.pyx":1348
  *             blit_lock.release()
  * 
  *     def lines(self, color, closed, pointlist, width=1):             # <<<<<<<<<<<<<<
@@ -25825,7 +25940,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_14lines(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1355
+/* "renpy/display/render.pyx":1359
  *             blit_lock.release()
  * 
  *     def aaline(self, color, startpos, endpos, blend=1):             # <<<<<<<<<<<<<<
@@ -25872,17 +25987,17 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_17aaline(PyObject *__p
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_startpos)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_endpos)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (kw_args > 0) {
@@ -25891,7 +26006,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_17aaline(PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "aaline") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "aaline") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25912,7 +26027,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_17aaline(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("aaline", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.aaline", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25950,7 +26065,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("aaline", 0);
 
-  /* "renpy/display/render.pyx":1356
+  /* "renpy/display/render.pyx":1360
  * 
  *     def aaline(self, color, startpos, endpos, blend=1):
  *         try:             # <<<<<<<<<<<<<<
@@ -25959,16 +26074,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1357
+    /* "renpy/display/render.pyx":1361
  *     def aaline(self, color, startpos, endpos, blend=1):
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.aaline(self.surf,
  *                                renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -25982,46 +26097,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1361; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1358
+    /* "renpy/display/render.pyx":1362
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.aaline(self.surf,             # <<<<<<<<<<<<<<
  *                                renpy.easy.color(color),
  *                                startpos,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_aaline); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_aaline); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1359
+    /* "renpy/display/render.pyx":1363
  *             blit_lock.acquire()
  *             pygame.draw.aaline(self.surf,
  *                                renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                                startpos,
  *                                endpos,
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -26035,22 +26150,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1363; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1362
+    /* "renpy/display/render.pyx":1366
  *                                startpos,
  *                                endpos,
  *                                blend)             # <<<<<<<<<<<<<<
@@ -26069,7 +26184,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -26089,14 +26204,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
     PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_v_blend);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1362; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1364
+  /* "renpy/display/render.pyx":1368
  *                                blend)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -26105,9 +26220,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -26121,10 +26236,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -26151,9 +26266,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -26167,10 +26282,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -26205,7 +26320,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1355
+  /* "renpy/display/render.pyx":1359
  *             blit_lock.release()
  * 
  *     def aaline(self, color, startpos, endpos, blend=1):             # <<<<<<<<<<<<<<
@@ -26232,7 +26347,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_16aaline(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1366
+/* "renpy/display/render.pyx":1370
  *             blit_lock.release()
  * 
  *     def aalines(self, color, closed, pointlist, blend=1):             # <<<<<<<<<<<<<<
@@ -26279,17 +26394,17 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_19aalines(PyObject *__
         case  1:
         if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  2:
         if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_closed)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  3:
         if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pointlist)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+          __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
         }
         case  4:
         if (kw_args > 0) {
@@ -26298,7 +26413,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_19aalines(PyObject *__
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "aalines") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "aalines") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -26319,7 +26434,7 @@ static PyObject *__pyx_pw_5renpy_7display_6render_6Canvas_19aalines(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+  __Pyx_RaiseArgtupleInvalid("aalines", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
   __pyx_L3_error:;
   __Pyx_AddTraceback("renpy.display.render.Canvas.aalines", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -26357,7 +26472,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("aalines", 0);
 
-  /* "renpy/display/render.pyx":1367
+  /* "renpy/display/render.pyx":1371
  * 
  *     def aalines(self, color, closed, pointlist, blend=1):
  *         try:             # <<<<<<<<<<<<<<
@@ -26366,16 +26481,16 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
  */
   /*try:*/ {
 
-    /* "renpy/display/render.pyx":1368
+    /* "renpy/display/render.pyx":1372
  *     def aalines(self, color, closed, pointlist, blend=1):
  *         try:
  *             blit_lock.acquire()             # <<<<<<<<<<<<<<
  *             pygame.draw.aalines(self.surf,
  *                                 renpy.easy.color(color),
  */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_acquire); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __pyx_t_2 = NULL;
@@ -26389,46 +26504,46 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
       }
     }
     if (__pyx_t_2) {
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     } else {
-      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1368; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1372; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     }
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "renpy/display/render.pyx":1369
+    /* "renpy/display/render.pyx":1373
  *         try:
  *             blit_lock.acquire()
  *             pygame.draw.aalines(self.surf,             # <<<<<<<<<<<<<<
  *                                 renpy.easy.color(color),
  *                                 closed,
  */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pygame); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_draw); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_aalines); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_aalines); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_2);
 
-    /* "renpy/display/render.pyx":1370
+    /* "renpy/display/render.pyx":1374
  *             blit_lock.acquire()
  *             pygame.draw.aalines(self.surf,
  *                                 renpy.easy.color(color),             # <<<<<<<<<<<<<<
  *                                 closed,
  *                                 pointlist,
  */
-    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_renpy); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_easy); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_color); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_t_6 = NULL;
@@ -26442,22 +26557,22 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
       }
     }
     if (!__pyx_t_6) {
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_color); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
     } else {
-      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
       __Pyx_INCREF(__pyx_v_color);
       __Pyx_GIVEREF(__pyx_v_color);
       PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_color);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "renpy/display/render.pyx":1373
+    /* "renpy/display/render.pyx":1377
  *                                 closed,
  *                                 pointlist,
  *                                 blend)             # <<<<<<<<<<<<<<
@@ -26476,7 +26591,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
         __pyx_t_8 = 1;
       }
     }
-    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -26496,14 +26611,14 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
     PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_v_blend);
     __pyx_t_2 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   }
 
-  /* "renpy/display/render.pyx":1375
+  /* "renpy/display/render.pyx":1379
  *                                 blend)
  *         finally:
  *             blit_lock.release()             # <<<<<<<<<<<<<<
@@ -26512,9 +26627,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
  */
   /*finally:*/ {
     /*normal exit:*/{
-      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_release); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_3 = NULL;
@@ -26528,10 +26643,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
         }
       }
       if (__pyx_t_3) {
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       } else {
-        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
       }
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -26558,9 +26673,9 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
       __Pyx_XGOTREF(__pyx_t_17);
       __pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
       {
-        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_blit_lock); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_release); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_7 = NULL;
@@ -26574,10 +26689,10 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
           }
         }
         if (__pyx_t_7) {
-          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
-          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1375; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
+          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1379; __pyx_clineno = __LINE__; goto __pyx_L7_error;}
         }
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -26612,7 +26727,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
     __pyx_L5:;
   }
 
-  /* "renpy/display/render.pyx":1366
+  /* "renpy/display/render.pyx":1370
  *             blit_lock.release()
  * 
  *     def aalines(self, color, closed, pointlist, blend=1):             # <<<<<<<<<<<<<<
@@ -26639,7 +26754,7 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_18aalines(CYTHON_UNUSE
   return __pyx_r;
 }
 
-/* "renpy/display/render.pyx":1377
+/* "renpy/display/render.pyx":1381
  *             blit_lock.release()
  * 
  *     def get_surface(self):             # <<<<<<<<<<<<<<
@@ -26669,19 +26784,19 @@ static PyObject *__pyx_pf_5renpy_7display_6render_6Canvas_20get_surface(CYTHON_U
   int __pyx_clineno = 0;
   __Pyx_RefNannySetupContext("get_surface", 0);
 
-  /* "renpy/display/render.pyx":1378
+  /* "renpy/display/render.pyx":1382
  * 
  *     def get_surface(self):
  *         return self.surf             # <<<<<<<<<<<<<<
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_surf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "renpy/display/render.pyx":1377
+  /* "renpy/display/render.pyx":1381
  *             blit_lock.release()
  * 
  *     def get_surface(self):             # <<<<<<<<<<<<<<
@@ -27856,7 +27971,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {0, 0, 0, 0, 0, 0, 0}
 };
 static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_Exception = __Pyx_GetBuiltinName(__pyx_n_s_Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
@@ -27895,76 +28010,76 @@ static int __Pyx_InitCachedConstants(void) {
  *                     newchild.width = cw
  *                     newchild.height = ch
  *                     newchild.render_of = child.render_of[:]             # <<<<<<<<<<<<<<
- *                 else:
+ *                 elif isinstance(child, Render):
  *                     crop = (cx, cy, cw, ch)
  */
   __pyx_slice__4 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__4);
   __Pyx_GIVEREF(__pyx_slice__4);
 
-  /* "renpy/display/render.pyx":860
+  /* "renpy/display/render.pyx":864
  * 
  *         if source is self:
  *             raise Exception("Render depends on itself.")             # <<<<<<<<<<<<<<
  * 
  *         self.depends_on_list.append(source)
  */
-  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Render_depends_on_itself); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Render_depends_on_itself); if (unlikely(!__pyx_tuple__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__5);
   __Pyx_GIVEREF(__pyx_tuple__5);
 
-  /* "renpy/display/render.pyx":958
+  /* "renpy/display/render.pyx":962
  * 
  *         if self.modal:
  *             focuses[:] = [ ]             # <<<<<<<<<<<<<<
  * 
  *         if self.reverse:
  */
-  __pyx_slice__6 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__6 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__6);
   __Pyx_GIVEREF(__pyx_slice__6);
 
-  /* "renpy/display/render.pyx":1111
+  /* "renpy/display/render.pyx":1115
  *                 # Ignore the fixed at the root of every screen.
  *                 cf = child.main_displayables_at_point(cx, cy, layers, depth - 1)
  *                 rv.extend(cf[1:])             # <<<<<<<<<<<<<<
  *             else:
  *                 cf = child.main_displayables_at_point(cx, cy, layers, depth)
  */
-  __pyx_slice__7 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_slice__7 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_slice__7);
   __Pyx_GIVEREF(__pyx_slice__7);
 
-  /* "renpy/display/render.pyx":1176
+  /* "renpy/display/render.pyx":1180
  *         solid = renpy.display.imagelike.Solid(color)
  *         surf = render(solid, self.width, self.height, 0, 0)
  *         self.blit(surf, (0, 0), focus=False, main=False)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_tuple__8 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__8 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__8);
   __Pyx_GIVEREF(__pyx_tuple__8);
 
-  /* "renpy/display/render.pyx":1188
+  /* "renpy/display/render.pyx":1192
  *         mutated_surface(surf)
  * 
  *         self.blit(surf, (0, 0))             # <<<<<<<<<<<<<<
  * 
  *         return Canvas(surf)
  */
-  __pyx_tuple__9 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__9 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__9);
   __Pyx_GIVEREF(__pyx_tuple__9);
 
-  /* "renpy/display/render.pyx":1268
+  /* "renpy/display/render.pyx":1272
  *             self.forward *= Matrix2D(1.0 / xzoom, 0, 0, 1.0 / yzoom)
  *         else:
  *             self.forward *= Matrix2D(0, 0, 0, 0)             # <<<<<<<<<<<<<<
  * 
  * class Canvas(object):
  */
-  __pyx_tuple__10 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__10 = PyTuple_Pack(4, __pyx_int_0, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__10);
   __Pyx_GIVEREF(__pyx_tuple__10);
 
@@ -28128,163 +28243,163 @@ static int __Pyx_InitCachedConstants(void) {
   __Pyx_GIVEREF(__pyx_tuple__33);
   __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(4, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_compute_subline, 462, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "renpy/display/render.pyx":1272
+  /* "renpy/display/render.pyx":1276
  * class Canvas(object):
  * 
  *     def __init__(self, surf): #@DuplicatedSignature             # <<<<<<<<<<<<<<
  *         self.surf = surf
  * 
  */
-  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_surf); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_surf); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__35);
   __Pyx_GIVEREF(__pyx_tuple__35);
-  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_init, 1272, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_init, 1276, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
 
-  /* "renpy/display/render.pyx":1275
+  /* "renpy/display/render.pyx":1279
  *         self.surf = surf
  * 
  *     def rect(self, color, rect, width=0):             # <<<<<<<<<<<<<<
  * 
  *         try:
  */
-  __pyx_tuple__37 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_rect, __pyx_n_s_width); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__37 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_rect, __pyx_n_s_width); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__37);
   __Pyx_GIVEREF(__pyx_tuple__37);
-  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_rect, 1275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__39 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_rect, 1279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__39 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__39);
   __Pyx_GIVEREF(__pyx_tuple__39);
 
-  /* "renpy/display/render.pyx":1286
+  /* "renpy/display/render.pyx":1290
  *             blit_lock.release()
  * 
  *     def polygon(self, color, pointlist, width=0):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_tuple__40 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_pointlist, __pyx_n_s_width); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__40 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_pointlist, __pyx_n_s_width); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__40);
   __Pyx_GIVEREF(__pyx_tuple__40);
-  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_polygon, 1286, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__42 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_polygon, 1290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__42 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__42);
   __Pyx_GIVEREF(__pyx_tuple__42);
 
-  /* "renpy/display/render.pyx":1296
+  /* "renpy/display/render.pyx":1300
  *             blit_lock.release()
  * 
  *     def circle(self, color, pos, radius, width=0):             # <<<<<<<<<<<<<<
  * 
  *         try:
  */
-  __pyx_tuple__43 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_pos, __pyx_n_s_radius, __pyx_n_s_width); if (unlikely(!__pyx_tuple__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__43 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_pos, __pyx_n_s_radius, __pyx_n_s_width); if (unlikely(!__pyx_tuple__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__43);
   __Pyx_GIVEREF(__pyx_tuple__43);
-  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_circle, 1296, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__45 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_circle, 1300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__45 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__45);
   __Pyx_GIVEREF(__pyx_tuple__45);
 
-  /* "renpy/display/render.pyx":1309
+  /* "renpy/display/render.pyx":1313
  *             blit_lock.release()
  * 
  *     def ellipse(self, color, rect, width=0):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_tuple__46 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_rect, __pyx_n_s_width); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__46 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_rect, __pyx_n_s_width); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__46);
   __Pyx_GIVEREF(__pyx_tuple__46);
-  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_ellipse, 1309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__48 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_ellipse, 1313, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__48 = PyTuple_Pack(1, ((PyObject *)__pyx_int_0)); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__48);
   __Pyx_GIVEREF(__pyx_tuple__48);
 
-  /* "renpy/display/render.pyx":1320
+  /* "renpy/display/render.pyx":1324
  * 
  * 
  *     def arc(self, color, rect, start_angle, stop_angle, width=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_tuple__49 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_rect, __pyx_n_s_start_angle, __pyx_n_s_stop_angle, __pyx_n_s_width); if (unlikely(!__pyx_tuple__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__49 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_rect, __pyx_n_s_start_angle, __pyx_n_s_stop_angle, __pyx_n_s_width); if (unlikely(!__pyx_tuple__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__49);
   __Pyx_GIVEREF(__pyx_tuple__49);
-  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_arc, 1320, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__51 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_arc, 1324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__51 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__51);
   __Pyx_GIVEREF(__pyx_tuple__51);
 
-  /* "renpy/display/render.pyx":1333
+  /* "renpy/display/render.pyx":1337
  * 
  * 
  *     def line(self, color, start_pos, end_pos, width=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_start_pos, __pyx_n_s_end_pos, __pyx_n_s_width); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_start_pos, __pyx_n_s_end_pos, __pyx_n_s_width); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__52);
   __Pyx_GIVEREF(__pyx_tuple__52);
-  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_line, 1333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__54 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_line, 1337, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__54 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__54);
   __Pyx_GIVEREF(__pyx_tuple__54);
 
-  /* "renpy/display/render.pyx":1344
+  /* "renpy/display/render.pyx":1348
  *             blit_lock.release()
  * 
  *     def lines(self, color, closed, pointlist, width=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_tuple__55 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_closed, __pyx_n_s_pointlist, __pyx_n_s_width); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__55 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_closed, __pyx_n_s_pointlist, __pyx_n_s_width); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__55);
   __Pyx_GIVEREF(__pyx_tuple__55);
-  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_lines, 1344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__57 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_lines, 1348, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__57 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__57);
   __Pyx_GIVEREF(__pyx_tuple__57);
 
-  /* "renpy/display/render.pyx":1355
+  /* "renpy/display/render.pyx":1359
  *             blit_lock.release()
  * 
  *     def aaline(self, color, startpos, endpos, blend=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_tuple__58 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_startpos, __pyx_n_s_endpos, __pyx_n_s_blend); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__58 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_startpos, __pyx_n_s_endpos, __pyx_n_s_blend); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__58);
   __Pyx_GIVEREF(__pyx_tuple__58);
-  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_aaline, 1355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__60 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__58, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_aaline, 1359, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__60 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__60);
   __Pyx_GIVEREF(__pyx_tuple__60);
 
-  /* "renpy/display/render.pyx":1366
+  /* "renpy/display/render.pyx":1370
  *             blit_lock.release()
  * 
  *     def aalines(self, color, closed, pointlist, blend=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_tuple__61 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_closed, __pyx_n_s_pointlist, __pyx_n_s_blend); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__61 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_color, __pyx_n_s_closed, __pyx_n_s_pointlist, __pyx_n_s_blend); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__61);
   __Pyx_GIVEREF(__pyx_tuple__61);
-  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_aalines, 1366, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_tuple__63 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_aalines, 1370, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__63 = PyTuple_Pack(1, ((PyObject *)__pyx_int_1)); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__63);
   __Pyx_GIVEREF(__pyx_tuple__63);
 
-  /* "renpy/display/render.pyx":1377
+  /* "renpy/display/render.pyx":1381
  *             blit_lock.release()
  * 
  *     def get_surface(self):             # <<<<<<<<<<<<<<
  *         return self.surf
  */
-  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_tuple__64);
   __Pyx_GIVEREF(__pyx_tuple__64);
-  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_get_surface, 1377, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_tom_ab_renpy_renpy_display, __pyx_n_s_get_surface, 1381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_RefNannyFinishContext();
   return 0;
   __pyx_L1_error:;
@@ -28885,173 +29000,173 @@ PyMODINIT_FUNC PyInit_render(void)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   PyType_Modified(__pyx_ptype_5renpy_7display_6render_Render);
 
-  /* "renpy/display/render.pyx":1270
+  /* "renpy/display/render.pyx":1274
  *             self.forward *= Matrix2D(0, 0, 0, 0)
  * 
  * class Canvas(object):             # <<<<<<<<<<<<<<
  * 
  *     def __init__(self, surf): #@DuplicatedSignature
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_builtin_object);
   __Pyx_GIVEREF(__pyx_builtin_object);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
-  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_Canvas, __pyx_n_s_Canvas, (PyObject *) NULL, __pyx_n_s_renpy_display_render, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_Canvas, __pyx_n_s_Canvas, (PyObject *) NULL, __pyx_n_s_renpy_display_render, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_4);
 
-  /* "renpy/display/render.pyx":1272
+  /* "renpy/display/render.pyx":1276
  * class Canvas(object):
  * 
  *     def __init__(self, surf): #@DuplicatedSignature             # <<<<<<<<<<<<<<
  *         self.surf = surf
  * 
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_1__init__, 0, __pyx_n_s_Canvas___init, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_1__init__, 0, __pyx_n_s_Canvas___init, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_init, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1275
+  /* "renpy/display/render.pyx":1279
  *         self.surf = surf
  * 
  *     def rect(self, color, rect, width=0):             # <<<<<<<<<<<<<<
  * 
  *         try:
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_3rect, 0, __pyx_n_s_Canvas_rect, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_3rect, 0, __pyx_n_s_Canvas_rect, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__39);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_rect, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_rect, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1286
+  /* "renpy/display/render.pyx":1290
  *             blit_lock.release()
  * 
  *     def polygon(self, color, pointlist, width=0):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_5polygon, 0, __pyx_n_s_Canvas_polygon, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_5polygon, 0, __pyx_n_s_Canvas_polygon, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__42);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_polygon, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_polygon, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1296
+  /* "renpy/display/render.pyx":1300
  *             blit_lock.release()
  * 
  *     def circle(self, color, pos, radius, width=0):             # <<<<<<<<<<<<<<
  * 
  *         try:
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_7circle, 0, __pyx_n_s_Canvas_circle, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_7circle, 0, __pyx_n_s_Canvas_circle, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__45);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_circle, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_circle, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1309
+  /* "renpy/display/render.pyx":1313
  *             blit_lock.release()
  * 
  *     def ellipse(self, color, rect, width=0):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_9ellipse, 0, __pyx_n_s_Canvas_ellipse, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_9ellipse, 0, __pyx_n_s_Canvas_ellipse, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__48);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ellipse, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ellipse, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1320
+  /* "renpy/display/render.pyx":1324
  * 
  * 
  *     def arc(self, color, rect, start_angle, stop_angle, width=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_11arc, 0, __pyx_n_s_Canvas_arc, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_11arc, 0, __pyx_n_s_Canvas_arc, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__51);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_arc, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_arc, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1333
+  /* "renpy/display/render.pyx":1337
  * 
  * 
  *     def line(self, color, start_pos, end_pos, width=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_13line, 0, __pyx_n_s_Canvas_line, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_13line, 0, __pyx_n_s_Canvas_line, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__54);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_line, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_line, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1344
+  /* "renpy/display/render.pyx":1348
  *             blit_lock.release()
  * 
  *     def lines(self, color, closed, pointlist, width=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_15lines, 0, __pyx_n_s_Canvas_lines, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_15lines, 0, __pyx_n_s_Canvas_lines, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__57);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_lines, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_lines, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1355
+  /* "renpy/display/render.pyx":1359
  *             blit_lock.release()
  * 
  *     def aaline(self, color, startpos, endpos, blend=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_17aaline, 0, __pyx_n_s_Canvas_aaline, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_17aaline, 0, __pyx_n_s_Canvas_aaline, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__59)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__60);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_aaline, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_aaline, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1366
+  /* "renpy/display/render.pyx":1370
  *             blit_lock.release()
  * 
  *     def aalines(self, color, closed, pointlist, blend=1):             # <<<<<<<<<<<<<<
  *         try:
  *             blit_lock.acquire()
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_19aalines, 0, __pyx_n_s_Canvas_aalines, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_19aalines, 0, __pyx_n_s_Canvas_aalines, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__63);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_aalines, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_aalines, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1377
+  /* "renpy/display/render.pyx":1381
  *             blit_lock.release()
  * 
  *     def get_surface(self):             # <<<<<<<<<<<<<<
  *         return self.surf
  */
-  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_21get_surface, 0, __pyx_n_s_Canvas_get_surface, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_CyFunction_NewEx(&__pyx_mdef_5renpy_7display_6render_6Canvas_21get_surface, 0, __pyx_n_s_Canvas_get_surface, NULL, __pyx_n_s_renpy_display_render, __pyx_d, ((PyObject *)__pyx_codeobj__65)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_get_surface, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_get_surface, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "renpy/display/render.pyx":1270
+  /* "renpy/display/render.pyx":1274
  *             self.forward *= Matrix2D(0, 0, 0, 0)
  * 
  * class Canvas(object):             # <<<<<<<<<<<<<<
  * 
  *     def __init__(self, surf): #@DuplicatedSignature
  */
-  __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Canvas, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_Canvas, __pyx_t_2, __pyx_t_4, NULL, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Canvas, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Canvas, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
diff --git a/renpy/__init__.py b/renpy/__init__.py
index 3973ee2..281d118 100644
--- a/renpy/__init__.py
+++ b/renpy/__init__.py
@@ -41,7 +41,7 @@ except ImportError:
     vc_version = 0
 
 # The tuple giving the version number.
-version_tuple = (6, 99, 12, 1, vc_version)
+version_tuple = (6, 99, 12, 2, vc_version)
 
 # The name of this version.
 version_name = "We get the job done."
diff --git a/renpy/common/00style.rpy b/renpy/common/00style.rpy
index cdaa83c..89fc927 100644
--- a/renpy/common/00style.rpy
+++ b/renpy/common/00style.rpy
@@ -341,7 +341,6 @@ init -1800:
         bar_invert True
 
     style viewport:
-        clipping True
         xfill True
         yfill True
 
diff --git a/renpy/common/_errorhandling.rpym b/renpy/common/_errorhandling.rpym
index 7997400..69eb8cc 100644
--- a/renpy/common/_errorhandling.rpym
+++ b/renpy/common/_errorhandling.rpym
@@ -171,7 +171,6 @@ init label _errorhandling:
     style _side is _default
 
     style _viewport is _default:
-        clipping True
         xfill True
         yfill True
 
diff --git a/renpy/config.py b/renpy/config.py
index 13964c4..008aa0c 100644
--- a/renpy/config.py
+++ b/renpy/config.py
@@ -742,6 +742,9 @@ auto_movie_channel = True
 # Should we ignore duplicate labels?
 ignore_duplicate_labels = False
 
+# A list of callbacks when creating a line log entry.
+line_log_callbacks = [ ]
+
 del renpy
 del os
 
diff --git a/renpy/display/render.pyx b/renpy/display/render.pyx
index 3d911c0..b8774c6 100644
--- a/renpy/display/render.pyx
+++ b/renpy/display/render.pyx
@@ -800,6 +800,10 @@ cdef class Render:
                     newchild.width = cw
                     newchild.height = ch
                     newchild.render_of = child.render_of[:]
+                elif isinstance(child, Render):
+                    crop = (cx, cy, cw, ch)
+                    newchild = child.subsurface(crop, focus=focus)
+                    renpy.display.draw.mutated_surface(newchild)
                 else:
                     crop = (cx, cy, cw, ch)
                     newchild = child.subsurface(crop)
diff --git a/renpy/error.py b/renpy/error.py
index c96641f..ce78cf2 100644
--- a/renpy/error.py
+++ b/renpy/error.py
@@ -98,7 +98,10 @@ def traceback_list(tb):
 
     for filename, line_number, name, line in l:
         if line is None:
-            line = linecache.getline(filename, line_number)
+            try:
+                line = linecache.getline(filename, line_number)
+            except:
+                line = ''
 
         rv.append((filename, line_number, name, line))
 
diff --git a/renpy/execution.py b/renpy/execution.py
index 4c0a3ce..54422dc 100644
--- a/renpy/execution.py
+++ b/renpy/execution.py
@@ -87,6 +87,9 @@ class LineLogEntry(object):
         self.node = node
         self.abnormal = abnormal
 
+        for i in renpy.config.line_log_callbacks:
+            i(self)
+
     def __eq__(self, other):
         if not isinstance(other, LineLogEntry):
             return False
diff --git a/renpy/test/testast.py b/renpy/test/testast.py
index aa5ac48..7aa6bf5 100644
--- a/renpy/test/testast.py
+++ b/renpy/test/testast.py
@@ -239,7 +239,7 @@ class Drag(Node):
 
 class Type(Pattern):
 
-    interval = .05
+    interval = .01
 
     def __init__(self, loc, keys):
         Pattern.__init__(self, loc)
@@ -366,6 +366,36 @@ class Until(Node):
         return child, child_state, start
 
 
+class If(Node):
+    """
+    If `condition` is ready, runs the block. Otherwise, goes to the next
+    statement.
+    """
+
+    def __init__(self, condition, block):
+        self.condition = condition
+        self.block = block
+
+    def start(self):
+        return (None, None, 0)
+
+    def execute(self, state, t):
+        node, child_state, start = state
+
+        if node is None:
+            if not self.condition.ready():
+                return None
+
+            node = self.block
+
+        node, child_state, start = renpy.test.testexecution.execute_node(t, node, child_state, start)
+
+        if node is None:
+            return None
+
+        return (node, child_state, start)
+
+
 class Python(Node):
 
     def __init__(self, loc, code):
diff --git a/renpy/test/testparser.py b/renpy/test/testparser.py
index 658f0fd..7fa385c 100644
--- a/renpy/test/testparser.py
+++ b/renpy/test/testparser.py
@@ -156,6 +156,15 @@ def parse_statement(l, loc):
         code = renpy.ast.PyCode(source, loc)
         return testast.Python(loc, code)
 
+    if l.keyword("if"):
+        l.expect_block("if block")
+
+        condition = parse_clause(l, loc)
+        l.require(':')
+        block = parse_block(l.subblock_lexer(False), loc)
+
+        return testast.If(condition, block)
+
     # Single-line statements only below here.
 
     l.expect_noblock('statement')
diff --git a/renpy/vc_version.py b/renpy/vc_version.py
index f57fb1a..da5bba5 100644
--- a/renpy/vc_version.py
+++ b/renpy/vc_version.py
@@ -1 +1 @@
-vc_version = 2012
\ No newline at end of file
+vc_version = 2029
\ No newline at end of file

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/renpy.git



More information about the Pkg-games-commits mailing list