mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 00:24:22 +03:00
syncing from upstream
This commit is contained in:
commit
5ac954db3f
|
@ -1,6 +1,6 @@
|
||||||
# Inform 7
|
# Inform 7
|
||||||
|
|
||||||
[Version](notes/versioning.md): 10.2.0-beta+6W67 'Krypton' (26 June 2023)
|
[Version](notes/versioning.md): 10.2.0-beta+6W68 'Krypton' (28 June 2023)
|
||||||
|
|
||||||
## About Inform
|
## About Inform
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
Prerelease: beta
|
Prerelease: beta
|
||||||
Build Date: 26 June 2023
|
Build Date: 28 June 2023
|
||||||
Build Number: 6W67
|
Build Number: 6W68
|
||||||
|
|
|
@ -460,12 +460,7 @@ and "17" can be equal as texts if X is 17.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">];</span>
|
<span class="plain-syntax">];</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Printing. </b>Unicode is not the native character set on Glulx: it came along as a late
|
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Printing. </b></p>
|
||||||
addition to Glulx's specification. The deal is that we have to explicitly
|
|
||||||
tell the Glk interface layer to perform certain operations in a Unicode way;
|
|
||||||
if we simply perform <span class="extract"><span class="extract-syntax">print (char) ch;</span></span> then the character <span class="extract"><span class="extract-syntax">ch</span></span> will be
|
|
||||||
printed in ZSCII rather than Unicode.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">TEXT_TY_Say</span><span class="plain-syntax"> </span><span class="identifier-syntax">txt</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">dsize</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">[ </span><span class="identifier-syntax">TEXT_TY_Say</span><span class="plain-syntax"> </span><span class="identifier-syntax">txt</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="identifier-syntax">dsize</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -2368,7 +2368,7 @@ available", using the following, which creates a socket. Again, see
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available</span></span>:<br/>Noun Identifiers - <a href="2-ni.html#SP4">§4</a><br/>The Heap - <a href="2-th.html#SP2">§2</a><br/>Kind Declarations - <a href="2-kd.html#SP6">§6</a>, <a href="2-kd.html#SP8">§8</a><br/>Short Names - <a href="2-sn.html#SP1">§1</a>, <a href="2-sn.html#SP2">§2</a><br/>Completion Module - <a href="3-cm.html#SP1_1">§1.1</a>, <a href="3-cm.html#SP1_2">§1.2</a>, <a href="3-cm.html#SP1_6">§1.6</a>, <a href="3-cm.html#SP1_7">§1.7</a><br/>Use Options - <a href="3-uo.html#SP3">§3</a><br/>Activities - <a href="5-act.html#SP3">§3</a><br/>Conjugations - <a href="5-cnj.html#SP1">§1</a><br/>Instances - <a href="5-ins.html#SP4_1">§4.1</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2">§2</a><br/>Rules - <a href="5-rls.html#SP8">§8</a><br/>Rulebooks - <a href="5-rlb.html#SP3">§3</a>, <a href="5-rlb.html#SP15_3">§15.3</a><br/>Variables - <a href="5-vrb.html#SP14">§14</a>, <a href="5-vrb.html#SP14_1">§14.1</a><br/>Properties - <a href="5-prp.html#SP5">§5</a>, <a href="5-prp.html#SP6">§6</a><br/>Relations - <a href="5-rlt.html#SP1">§1</a>, <a href="5-rlt.html#SP4">§4</a><br/>Kind Constructors - <a href="5-kc.html#SP4">§4</a>, <a href="5-kc.html#SP12">§12</a>, <a href="5-kc.html#SP17_2">§17.2</a>, <a href="5-kc.html#SP30_1_1">§30.1.1</a>, <a href="5-kc.html#SP30_3_2">§30.3.2</a>, <a href="5-kc.html#SP30_3_3">§30.3.3</a>, <a href="5-kc.html#SP30_3_4">§30.3.4</a>, <a href="5-kc.html#SP30_3_5">§30.3.5</a><br/>Actions - <a href="5-act2.html#SP7">§7</a>, <a href="5-act2.html#SP8_2">§8.2</a><br/>Bibliographic Data - <a href="6-bd.html#SP1_1">§1.1</a>, <a href="6-bd.html#SP1_2">§1.2</a>, <a href="6-bd.html#SP1_3">§1.3</a>, <a href="6-bd.html#SP1_4">§1.4</a>, <a href="6-bd.html#SP1_5">§1.5</a>, <a href="6-bd.html#SP2">§2</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Command Grammars - <a href="7-cg.html#SP3">§3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">§9</a><br/>Kind GPRs - <a href="7-kg.html#SP1">§1</a>, <a href="7-kg.html#SP2">§2</a>, <a href="7-kg.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available</span></span>:<br/>Noun Identifiers - <a href="2-ni.html#SP4">§4</a><br/>The Heap - <a href="2-th.html#SP2">§2</a><br/>Kind Declarations - <a href="2-kd.html#SP6">§6</a>, <a href="2-kd.html#SP8">§8</a><br/>Short Names - <a href="2-sn.html#SP1">§1</a>, <a href="2-sn.html#SP2">§2</a><br/>Completion Module - <a href="3-cm.html#SP1_1">§1.1</a>, <a href="3-cm.html#SP1_2">§1.2</a>, <a href="3-cm.html#SP1_6">§1.6</a>, <a href="3-cm.html#SP1_7">§1.7</a><br/>Use Options - <a href="3-uo.html#SP3">§3</a><br/>Activities - <a href="5-act.html#SP3">§3</a><br/>Conjugations - <a href="5-cnj.html#SP1">§1</a><br/>Dialogue Beat Instances - <a href="5-dbi.html#SP2">§2</a><br/>Rules - <a href="5-rls.html#SP8">§8</a><br/>Rulebooks - <a href="5-rlb.html#SP3">§3</a>, <a href="5-rlb.html#SP15_3">§15.3</a><br/>Variables - <a href="5-vrb.html#SP14">§14</a>, <a href="5-vrb.html#SP14_1">§14.1</a><br/>Properties - <a href="5-prp.html#SP5">§5</a>, <a href="5-prp.html#SP6">§6</a><br/>Relations - <a href="5-rlt.html#SP1">§1</a>, <a href="5-rlt.html#SP4">§4</a><br/>Kind Constructors - <a href="5-kc.html#SP4">§4</a>, <a href="5-kc.html#SP12">§12</a>, <a href="5-kc.html#SP17_2">§17.2</a>, <a href="5-kc.html#SP30_1_1">§30.1.1</a>, <a href="5-kc.html#SP30_3_2">§30.3.2</a>, <a href="5-kc.html#SP30_3_3">§30.3.3</a>, <a href="5-kc.html#SP30_3_4">§30.3.4</a>, <a href="5-kc.html#SP30_3_5">§30.3.5</a><br/>Actions - <a href="5-act2.html#SP7">§7</a>, <a href="5-act2.html#SP8_2">§8.2</a><br/>Bibliographic Data - <a href="6-bd.html#SP1_1">§1.1</a>, <a href="6-bd.html#SP1_2">§1.2</a>, <a href="6-bd.html#SP1_3">§1.3</a>, <a href="6-bd.html#SP1_4">§1.4</a>, <a href="6-bd.html#SP1_5">§1.5</a>, <a href="6-bd.html#SP2">§2</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Command Grammars - <a href="7-cg.html#SP3">§3</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">§9</a><br/>Kind GPRs - <a href="7-kg.html#SP1">§1</a>, <a href="7-kg.html#SP2">§2</a>, <a href="7-kg.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::get_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::get_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::package_type</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::package_type</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -2376,7 +2376,7 @@ available", using the following, which creates a socket. Again, see
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wiring::socket</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Wiring::socket</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></span>:<br/>Instances - <a href="5-ins.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></span>:<br/>Instances - <a href="5-ins.html#SP1">§1</a>, <a href="5-ins.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::get_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::get_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::package_type</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::package_type</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -414,7 +414,7 @@ an instance with an unexpected runtime value is called "out of place".
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::value_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::value_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::set_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::set_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::clear_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">MAKE_NAME_UNIQUE_ISYMF</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::clear_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">MAKE_NAME_UNIQUE_ISYMF</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>§4.2. </b>When names are abbreviated for use on the World Index map (for instance,
|
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>§4.2. </b>When names are abbreviated for use on the World Index map (for instance,
|
||||||
|
|
|
@ -31,7 +31,7 @@ GLKMAKEFILE = Make.cheapglk
|
||||||
CC = cc
|
CC = cc
|
||||||
#CC = gcc
|
#CC = gcc
|
||||||
|
|
||||||
OPTIONS = -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-unused -DOS_UNIX
|
OPTIONS = -g -Wall -Wmissing-prototypes -Wno-unused -DOS_UNIX
|
||||||
|
|
||||||
# Locate the libxml2 library. You only need these lines if you are using
|
# Locate the libxml2 library. You only need these lines if you are using
|
||||||
# the VM_DEBUGGER option. If so, uncomment these and set appropriately.
|
# the VM_DEBUGGER option. If so, uncomment these and set appropriately.
|
||||||
|
|
|
@ -124,9 +124,9 @@ void execute_loop()
|
||||||
first. They have to be unsigned values, too, otherwise the
|
first. They have to be unsigned values, too, otherwise the
|
||||||
0x80000000 case goes wonky. */
|
0x80000000 case goes wonky. */
|
||||||
if (vals0 < 0) {
|
if (vals0 < 0) {
|
||||||
val0 = (-vals0);
|
val0 = (-(glui32)vals0);
|
||||||
if (vals1 < 0) {
|
if (vals1 < 0) {
|
||||||
val1 = (-vals1);
|
val1 = (-(glui32)vals1);
|
||||||
value = val0 / val1;
|
value = val0 / val1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -137,7 +137,7 @@ void execute_loop()
|
||||||
else {
|
else {
|
||||||
val0 = vals0;
|
val0 = vals0;
|
||||||
if (vals1 < 0) {
|
if (vals1 < 0) {
|
||||||
val1 = (-vals1);
|
val1 = (-(glui32)vals1);
|
||||||
value = -(val0 / val1);
|
value = -(val0 / val1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -153,13 +153,13 @@ void execute_loop()
|
||||||
if (vals1 == 0)
|
if (vals1 == 0)
|
||||||
fatal_error("Division by zero doing remainder.");
|
fatal_error("Division by zero doing remainder.");
|
||||||
if (vals1 < 0) {
|
if (vals1 < 0) {
|
||||||
val1 = -vals1;
|
val1 = -(glui32)vals1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val1 = vals1;
|
val1 = vals1;
|
||||||
}
|
}
|
||||||
if (vals0 < 0) {
|
if (vals0 < 0) {
|
||||||
val0 = (-vals0);
|
val0 = (-(glui32)vals0);
|
||||||
value = -(val0 % val1);
|
value = -(val0 % val1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -170,7 +170,7 @@ void execute_loop()
|
||||||
break;
|
break;
|
||||||
case op_neg:
|
case op_neg:
|
||||||
vals0 = inst[0].value;
|
vals0 = inst[0].value;
|
||||||
value = (-vals0);
|
value = (-(glui32)vals0);
|
||||||
store_operand(inst[1].desttype, inst[1].value, value);
|
store_operand(inst[1].desttype, inst[1].value, value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -527,7 +527,7 @@ void execute_loop()
|
||||||
vals1 = (vals0) - vals1;
|
vals1 = (vals0) - vals1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
vals1 = (-vals1) % vals0;
|
vals1 = (-(glui32)vals1) % vals0;
|
||||||
}
|
}
|
||||||
if (vals1 == 0)
|
if (vals1 == 0)
|
||||||
break;
|
break;
|
||||||
|
@ -663,7 +663,7 @@ void execute_loop()
|
||||||
else if (vals0 >= 1)
|
else if (vals0 >= 1)
|
||||||
value = glulx_random() % (glui32)(vals0);
|
value = glulx_random() % (glui32)(vals0);
|
||||||
else
|
else
|
||||||
value = -(glulx_random() % (glui32)(-vals0));
|
value = -(glulx_random() % (glui32)(-(glui32)vals0));
|
||||||
store_operand(inst[1].desttype, inst[1].value, value);
|
store_operand(inst[1].desttype, inst[1].value, value);
|
||||||
break;
|
break;
|
||||||
case op_setrandom:
|
case op_setrandom:
|
||||||
|
|
|
@ -81,10 +81,10 @@ typedef int16_t glsi16;
|
||||||
/* Some macros to read and write integers to memory, always in big-endian
|
/* Some macros to read and write integers to memory, always in big-endian
|
||||||
format. */
|
format. */
|
||||||
#define Read4(ptr) \
|
#define Read4(ptr) \
|
||||||
( (glui32)(((unsigned char *)(ptr))[0] << 24) \
|
( (glui32)((glui32)((unsigned char *)(ptr))[0] << 24) \
|
||||||
| (glui32)(((unsigned char *)(ptr))[1] << 16) \
|
| (glui32)((glui32)((unsigned char *)(ptr))[1] << 16) \
|
||||||
| (glui32)(((unsigned char *)(ptr))[2] << 8) \
|
| (glui32)((glui32)((unsigned char *)(ptr))[2] << 8) \
|
||||||
| (glui32)(((unsigned char *)(ptr))[3]))
|
| (glui32)((glui32)((unsigned char *)(ptr))[3]))
|
||||||
#define Read2(ptr) \
|
#define Read2(ptr) \
|
||||||
( (glui16)(((unsigned char *)(ptr))[0] << 8) \
|
( (glui16)(((unsigned char *)(ptr))[0] << 8) \
|
||||||
| (glui16)(((unsigned char *)(ptr))[1]))
|
| (glui16)(((unsigned char *)(ptr))[1]))
|
||||||
|
@ -195,6 +195,7 @@ extern void (*stream_char_handler)(unsigned char ch);
|
||||||
extern void (*stream_unichar_handler)(glui32 ch);
|
extern void (*stream_unichar_handler)(glui32 ch);
|
||||||
|
|
||||||
/* main.c */
|
/* main.c */
|
||||||
|
extern glui32 init_rng_seed;
|
||||||
extern void set_library_start_hook(void (*)(void));
|
extern void set_library_start_hook(void (*)(void));
|
||||||
extern void set_library_autorestore_hook(void (*)(void));
|
extern void set_library_autorestore_hook(void (*)(void));
|
||||||
extern void fatal_error_handler(char *str, char *arg, int useval, glsi32 val) GLK_ATTRIBUTE_NORETURN;
|
extern void fatal_error_handler(char *str, char *arg, int useval, glsi32 val) GLK_ATTRIBUTE_NORETURN;
|
||||||
|
|
|
@ -14,6 +14,8 @@ glui32 gamefile_len = 0; /* The length within the stream. */
|
||||||
char *init_err = NULL;
|
char *init_err = NULL;
|
||||||
char *init_err2 = NULL;
|
char *init_err2 = NULL;
|
||||||
|
|
||||||
|
glui32 init_rng_seed = 0;
|
||||||
|
|
||||||
/* The library_start_hook is called at the beginning of glk_main. This
|
/* The library_start_hook is called at the beginning of glk_main. This
|
||||||
is not normally necessary -- the library can do all its setup work
|
is not normally necessary -- the library can do all its setup work
|
||||||
before calling glk_main -- but iosglk has some weird cases which
|
before calling glk_main -- but iosglk has some weird cases which
|
||||||
|
@ -49,7 +51,7 @@ void glk_main()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
glulx_setrandom(0);
|
glulx_setrandom(init_rng_seed);
|
||||||
#ifdef FLOAT_SUPPORT
|
#ifdef FLOAT_SUPPORT
|
||||||
if (!init_float()) {
|
if (!init_float()) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -14,6 +14,19 @@
|
||||||
symbol. Code contributions welcome.
|
symbol. Code contributions welcome.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Always use Glulxe's random number generator for MacOS and Windows.
|
||||||
|
For Unix and anything else, it is optional: define
|
||||||
|
COMPILE_RANDOM_CODE to use it.
|
||||||
|
*/
|
||||||
|
#if (defined(OS_MAC) || defined (WIN32)) && !defined(COMPILE_RANDOM_CODE)
|
||||||
|
#define COMPILE_RANDOM_CODE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef COMPILE_RANDOM_CODE
|
||||||
|
static glui32 lo_random(void);
|
||||||
|
static void lo_seed_random(glui32 seed);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef OS_UNIX
|
#ifdef OS_UNIX
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
@ -45,13 +58,21 @@ void glulx_setrandom(glui32 seed)
|
||||||
{
|
{
|
||||||
if (seed == 0)
|
if (seed == 0)
|
||||||
seed = time(NULL);
|
seed = time(NULL);
|
||||||
|
#ifdef COMPILE_RANDOM_CODE
|
||||||
|
lo_seed_random(seed);
|
||||||
|
#else
|
||||||
srandom(seed);
|
srandom(seed);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return a random number in the range 0 to 2^32-1. */
|
/* Return a random number in the range 0 to 2^32-1. */
|
||||||
glui32 glulx_random()
|
glui32 glulx_random()
|
||||||
{
|
{
|
||||||
|
#ifdef COMPILE_RANDOM_CODE
|
||||||
|
return (lo_random() << 16) ^ lo_random();
|
||||||
|
#else
|
||||||
return (random() << 16) ^ random();
|
return (random() << 16) ^ random();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* OS_UNIX */
|
#endif /* OS_UNIX */
|
||||||
|
@ -81,10 +102,6 @@ void glulx_free(void *ptr)
|
||||||
free(ptr);
|
free(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define COMPILE_RANDOM_CODE
|
|
||||||
static glui32 lo_random(void);
|
|
||||||
static void lo_seed_random(glui32 seed);
|
|
||||||
|
|
||||||
/* Return a random number in the range 0 to 2^32-1. */
|
/* Return a random number in the range 0 to 2^32-1. */
|
||||||
glui32 glulx_random()
|
glui32 glulx_random()
|
||||||
{
|
{
|
||||||
|
@ -127,10 +144,6 @@ void glulx_free(void *ptr)
|
||||||
free(ptr);
|
free(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define COMPILE_RANDOM_CODE
|
|
||||||
static glui32 lo_random(void);
|
|
||||||
static void lo_seed_random(glui32 seed);
|
|
||||||
|
|
||||||
/* Return a random number in the range 0 to 2^32-1. */
|
/* Return a random number in the range 0 to 2^32-1. */
|
||||||
glui32 glulx_random()
|
glui32 glulx_random()
|
||||||
{
|
{
|
||||||
|
|
|
@ -142,7 +142,7 @@ void stream_num(glsi32 val, int inmiddle, int charnum)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
ival = -val;
|
ival = -(glui32)val;
|
||||||
else
|
else
|
||||||
ival = val;
|
ival = val;
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ static void glkunix_game_autorestore(void);
|
||||||
glkunix_argumentlist_t glkunix_arguments[] = {
|
glkunix_argumentlist_t glkunix_arguments[] = {
|
||||||
|
|
||||||
{ "--undo", glkunix_arg_ValueFollows, "Number of undo states to store." },
|
{ "--undo", glkunix_arg_ValueFollows, "Number of undo states to store." },
|
||||||
|
{ "--rngseed", glkunix_arg_ValueFollows, "Fix initial RNG if nonzero." },
|
||||||
|
|
||||||
#if GLKUNIX_AUTOSAVE_FEATURES
|
#if GLKUNIX_AUTOSAVE_FEATURES
|
||||||
{ "--autosave", glkunix_arg_NoValue, "Autosave every turn." },
|
{ "--autosave", glkunix_arg_NoValue, "Autosave every turn." },
|
||||||
|
@ -82,8 +83,9 @@ int glkunix_startup_code(glkunix_startup_t *data)
|
||||||
if (!strcmp(data->argv[ix], "--undo")) {
|
if (!strcmp(data->argv[ix], "--undo")) {
|
||||||
ix++;
|
ix++;
|
||||||
if (ix<data->argc) {
|
if (ix<data->argc) {
|
||||||
int val = atoi(data->argv[ix]);
|
char *endptr = NULL;
|
||||||
if (val <= 0) {
|
int val = strtol(data->argv[ix], &endptr, 10);
|
||||||
|
if (*endptr) {
|
||||||
init_err = "--undo must be a number.";
|
init_err = "--undo must be a number.";
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -92,6 +94,20 @@ int glkunix_startup_code(glkunix_startup_t *data)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strcmp(data->argv[ix], "--rngseed")) {
|
||||||
|
ix++;
|
||||||
|
if (ix<data->argc) {
|
||||||
|
char *endptr = NULL;
|
||||||
|
int val = strtol(data->argv[ix], &endptr, 10);
|
||||||
|
if (*endptr) {
|
||||||
|
init_err = "--rngseed must be a number.";
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
init_rng_seed = val;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
#if GLKUNIX_AUTOSAVE_FEATURES
|
#if GLKUNIX_AUTOSAVE_FEATURES
|
||||||
if (!strcmp(data->argv[ix], "--autosave")) {
|
if (!strcmp(data->argv[ix], "--autosave")) {
|
||||||
pref_autosave = TRUE;
|
pref_autosave = TRUE;
|
||||||
|
|
|
@ -75,20 +75,6 @@ interpreters: $(INTERPRETERS)/dumb-frotz/dumb-frotz $(INTERPRETERS)/dumb-glulx/g
|
||||||
# that story files in Z format perform as intended. It's written in old C,
|
# that story files in Z format perform as intended. It's written in old C,
|
||||||
# and is dumb in the sense that it uses a dumb terminal.
|
# and is dumb in the sense that it uses a dumb terminal.
|
||||||
|
|
||||||
GLKLIB = libcheapglk.a
|
|
||||||
GLKINCLUDEDIR = ../cheapglk
|
|
||||||
GLKLIBDIR = ../cheapglk
|
|
||||||
GLKMAKEFILE = Make.cheapglk
|
|
||||||
|
|
||||||
CHEAPGLK_OBJS = \
|
|
||||||
cgfref.o cggestal.o cgmisc.o cgstream.o cgstyle.o cgwindow.o cgschan.o \
|
|
||||||
cgunicod.o main.o gi_dispa.o gi_blorb.o cgblorb.o
|
|
||||||
|
|
||||||
GLULXE_OBJS = main.o files.o vm.o exec.o float.o funcs.o operand.o string.o glkop.o \
|
|
||||||
heap.o serial.o search.o gestalt.o osdepend.o unixstrt.o accel.o profile.o
|
|
||||||
|
|
||||||
CHEAPGLK_HEADERS = cheapglk.h gi_dispa.h
|
|
||||||
|
|
||||||
$(INTERPRETERS)/dumb-frotz/dumb-frotz: \
|
$(INTERPRETERS)/dumb-frotz/dumb-frotz: \
|
||||||
$(INTERPRETERS)/dumb-frotz/*.c \
|
$(INTERPRETERS)/dumb-frotz/*.c \
|
||||||
$(INTERPRETERS)/dumb-frotz/*.h
|
$(INTERPRETERS)/dumb-frotz/*.h
|
||||||
|
@ -127,7 +113,7 @@ $(INTERPRETERS)/dumb-glulx/glulxe/glulxe: \
|
||||||
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make clean
|
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make clean
|
||||||
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make
|
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make
|
||||||
cd $(INTERPRETERS)/dumb-glulx/glulxe; make clean
|
cd $(INTERPRETERS)/dumb-glulx/glulxe; make clean
|
||||||
cd $(INTERPRETERS)/dumb-glulx/glulxe; make
|
cd $(INTERPRETERS)/dumb-glulx/glulxe; make OPTIONS=-g\ -Wall\ -Wno-unused\ -DOS_UNIX\ -UWIN32\ -DCOMPILE_RANDOM_CODE
|
||||||
|
|
||||||
# Cleaning up:
|
# Cleaning up:
|
||||||
|
|
||||||
|
@ -138,9 +124,9 @@ clean:
|
||||||
.PHONY: purge
|
.PHONY: purge
|
||||||
purge:
|
purge:
|
||||||
$(call clean-up)
|
$(call clean-up)
|
||||||
rm -f $(ME)/Tangled/$(ME)
|
rm -f $(ME)/Tangled/$(ME)$(EXEEXTENSION)
|
||||||
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz
|
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz$(EXEEXTENSION)
|
||||||
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
|
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe$(EXEEXTENSION)
|
||||||
|
|
||||||
define clean-up
|
define clean-up
|
||||||
rm -f $(SANDBOX)/*.o
|
rm -f $(SANDBOX)/*.o
|
||||||
|
|
|
@ -1,29 +1,29 @@
|
||||||
100.0% in inform7 run
|
100.0% in inform7 run
|
||||||
67.6% in compilation to Inter
|
68.8% in compilation to Inter
|
||||||
45.7% in //Sequence::undertake_queued_tasks//
|
46.3% in //Sequence::undertake_queued_tasks//
|
||||||
4.6% in //MajorNodes::pre_pass//
|
5.0% in //MajorNodes::pre_pass//
|
||||||
3.8% in //MajorNodes::pass_1//
|
3.6% in //MajorNodes::pass_1//
|
||||||
1.5% in //ImperativeDefinitions::assess_all//
|
1.8% in //ImperativeDefinitions::assess_all//
|
||||||
1.5% in //RTKindConstructors::compile//
|
1.4% in //RTKindConstructors::compile//
|
||||||
1.1% in //RTPhrasebook::compile_entries//
|
1.4% in //RTPhrasebook::compile_entries//
|
||||||
1.1% in //Sequence::lint_inter//
|
1.0% in //Sequence::lint_inter//
|
||||||
|
0.7% in //ImperativeDefinitions::compile_first_block//
|
||||||
|
0.7% in //MajorNodes::pass_2//
|
||||||
|
0.7% in //World::stage_V//
|
||||||
0.3% in //CompletionModule::compile//
|
0.3% in //CompletionModule::compile//
|
||||||
0.3% in //ImperativeDefinitions::compile_first_block//
|
|
||||||
0.3% in //MajorNodes::pass_2//
|
|
||||||
0.3% in //RTKindConstructors::compile_permissions//
|
0.3% in //RTKindConstructors::compile_permissions//
|
||||||
0.3% in //Sequence::undertake_queued_tasks//
|
0.3% in //Sequence::undertake_queued_tasks//
|
||||||
0.3% in //Sequence::undertake_queued_tasks//
|
0.3% in //Sequence::undertake_queued_tasks//
|
||||||
0.3% in //World::stage_V//
|
4.4% not specifically accounted for
|
||||||
5.3% not specifically accounted for
|
26.8% in running Inter pipeline
|
||||||
28.0% in running Inter pipeline
|
9.0% in step 14/15: generate inform6 -> auto.inf
|
||||||
9.6% in step 14/15: generate inform6 -> auto.inf
|
6.8% in step 5/15: load-binary-kits
|
||||||
7.3% in step 5/15: load-binary-kits
|
5.4% in step 6/15: make-synoptic-module
|
||||||
5.7% in step 6/15: make-synoptic-module
|
1.8% in step 9/15: make-identifiers-unique
|
||||||
1.9% in step 9/15: make-identifiers-unique
|
|
||||||
0.3% in step 12/15: eliminate-redundant-operations
|
0.3% in step 12/15: eliminate-redundant-operations
|
||||||
0.3% in step 4/15: compile-splats
|
0.3% in step 4/15: compile-splats
|
||||||
0.3% in step 7/15: shorten-wiring
|
0.3% in step 7/15: shorten-wiring
|
||||||
0.3% in step 8/15: detect-indirect-calls
|
0.3% in step 8/15: detect-indirect-calls
|
||||||
1.9% not specifically accounted for
|
2.2% not specifically accounted for
|
||||||
3.4% in supervisor
|
3.9% in supervisor
|
||||||
0.8% not specifically accounted for
|
0.4% not specifically accounted for
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"is": {
|
"is": {
|
||||||
"type": "kit",
|
"type": "kit",
|
||||||
"title": "Architecture16Kit",
|
"title": "Architecture16Kit",
|
||||||
"version": "10.2.0-beta+6W67"
|
"version": "10.2.0-beta+6W68"
|
||||||
},
|
},
|
||||||
"compatibility": "16-bit",
|
"compatibility": "16-bit",
|
||||||
"kit-details": {
|
"kit-details": {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"is": {
|
"is": {
|
||||||
"type": "kit",
|
"type": "kit",
|
||||||
"title": "Architecture32Kit",
|
"title": "Architecture32Kit",
|
||||||
"version": "10.2.0-beta+6W67"
|
"version": "10.2.0-beta+6W68"
|
||||||
},
|
},
|
||||||
"compatibility": "32-bit",
|
"compatibility": "32-bit",
|
||||||
"kit-details": {
|
"kit-details": {
|
||||||
|
|
|
@ -404,11 +404,6 @@ This calculates a hash value for the string, using Bernstein's algorithm.
|
||||||
];
|
];
|
||||||
|
|
||||||
@h Printing.
|
@h Printing.
|
||||||
Unicode is not the native character set on Glulx: it came along as a late
|
|
||||||
addition to Glulx's specification. The deal is that we have to explicitly
|
|
||||||
tell the Glk interface layer to perform certain operations in a Unicode way;
|
|
||||||
if we simply perform |print (char) ch;| then the character |ch| will be
|
|
||||||
printed in ZSCII rather than Unicode.
|
|
||||||
|
|
||||||
=
|
=
|
||||||
[ TEXT_TY_Say txt ch i dsize;
|
[ TEXT_TY_Say txt ch i dsize;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"is": {
|
"is": {
|
||||||
"type": "kit",
|
"type": "kit",
|
||||||
"title": "BasicInformKit",
|
"title": "BasicInformKit",
|
||||||
"version": "10.2.0-beta+6W67"
|
"version": "10.2.0-beta+6W68"
|
||||||
},
|
},
|
||||||
"needs": [ {
|
"needs": [ {
|
||||||
"need": {
|
"need": {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"is": {
|
"is": {
|
||||||
"type": "kit",
|
"type": "kit",
|
||||||
"title": "CommandParserKit",
|
"title": "CommandParserKit",
|
||||||
"version": "10.2.0-beta+6W67"
|
"version": "10.2.0-beta+6W68"
|
||||||
},
|
},
|
||||||
"needs": [ {
|
"needs": [ {
|
||||||
"need": {
|
"need": {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"is": {
|
"is": {
|
||||||
"type": "kit",
|
"type": "kit",
|
||||||
"title": "EnglishLanguageKit",
|
"title": "EnglishLanguageKit",
|
||||||
"version": "10.2.0-beta+6W67"
|
"version": "10.2.0-beta+6W68"
|
||||||
},
|
},
|
||||||
"needs": [ {
|
"needs": [ {
|
||||||
"need": {
|
"need": {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"is": {
|
"is": {
|
||||||
"type": "kit",
|
"type": "kit",
|
||||||
"title": "WorldModelKit",
|
"title": "WorldModelKit",
|
||||||
"version": "10.2.0-beta+6W67"
|
"version": "10.2.0-beta+6W68"
|
||||||
},
|
},
|
||||||
"needs": [ {
|
"needs": [ {
|
||||||
"need": {
|
"need": {
|
||||||
|
|
|
@ -4,7 +4,7 @@ L sorts to {-7, -7, 0, 2, 3, 5, 11, 16}.
|
||||||
L then reverses to {16, 11, 5, 3, 2, 0, -7, -7}.
|
L then reverses to {16, 11, 5, 3, 2, 0, -7, -7}.
|
||||||
L then rotates to {-7, 16, 11, 5, 3, 2, 0, -7}.
|
L then rotates to {-7, 16, 11, 5, 3, 2, 0, -7}.
|
||||||
L then rotates backwards to {16, 11, 5, 3, 2, 0, -7, -7}.
|
L then rotates backwards to {16, 11, 5, 3, 2, 0, -7, -7}.
|
||||||
L sorts randomly to {3, 5, 11, 2, 16, -7, -7, 0}.
|
L sorts randomly to {3, 16, 2, 11, -7, -7, 0, 5}.
|
||||||
L sorts in reverse order to {16, 11, 5, 3, 2, 0, -7, -7}.
|
L sorts in reverse order to {16, 11, 5, 3, 2, 0, -7, -7}.
|
||||||
"F" = list of fruits: {apple, pear, orange}
|
"F" = list of fruits: {apple, pear, orange}
|
||||||
F sorts in size order to {orange, pear, apple}.
|
F sorts in size order to {orange, pear, apple}.
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
"a random fruit" = fruit: yuzu
|
"a random fruit" = fruit: apple
|
||||||
"a random fruit" = fruit: yuzu
|
"a random fruit" = fruit: yuzu
|
||||||
"a random fruit" = fruit: pear
|
"a random fruit" = fruit: pear
|
||||||
"a random fruit" = fruit: yuzu
|
"a random fruit" = fruit: persimmon
|
||||||
"a random fruit between pear and yuzu" = fruit: yuzu
|
|
||||||
"a random fruit between pear and yuzu" = fruit: persimmon
|
"a random fruit between pear and yuzu" = fruit: persimmon
|
||||||
"a random fruit from pear to yuzu" = fruit: yuzu
|
"a random fruit between pear and yuzu" = fruit: pear
|
||||||
"a random fruit from pear to yuzu" = fruit: yuzu
|
"a random fruit from pear to yuzu" = fruit: pear
|
||||||
"a random number between 10 and 19" = number: 19
|
"a random fruit from pear to yuzu" = fruit: pear
|
||||||
|
"a random number between 10 and 19" = number: 17
|
||||||
"a random number between 10 and 19" = number: 16
|
"a random number between 10 and 19" = number: 16
|
||||||
"a random number between 10 and 19" = number: 13
|
"a random number between 10 and 19" = number: 13
|
||||||
"a random number from 10 to 19" = number: 10
|
"a random number from 10 to 19" = number: 13
|
||||||
"a random number from 10 to 19" = number: 14
|
"a random number from 10 to 19" = number: 13
|
||||||
"a random number from 10 to 19" = number: 11
|
"a random number from 10 to 19" = number: 12
|
||||||
|
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||||
|
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: true
|
"whether or not a random chance of 1 in 3 succeeds" = truth state: true
|
||||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
"whether or not a random chance of 1 in 3 succeeds" = truth state: true
|
||||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
"a random number between 1 and 100" = number: 26
|
||||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
"a random number between 1 and 100" = number: 66
|
||||||
"a random number between 1 and 100" = number: 2
|
"a random number between 1 and 100" = number: 75
|
||||||
"a random number between 1 and 100" = number: 54
|
"a random number between 1 and 100" = number: 26
|
||||||
"a random number between 1 and 100" = number: 36
|
"a random number between 1 and 100" = number: 66
|
||||||
"a random number between 1 and 100" = number: 2
|
"a random number between 1 and 100" = number: 75
|
||||||
"a random number between 1 and 100" = number: 54
|
|
||||||
"a random number between 1 and 100" = number: 36
|
|
||||||
|
|
|
@ -11,90 +11,90 @@ This is Summer.
|
||||||
This is Autumn.
|
This is Autumn.
|
||||||
This is Winter.
|
This is Winter.
|
||||||
This is Spring.
|
This is Spring.
|
||||||
This is a rainy day.
|
This is a scorching hot day.
|
||||||
This is a rainy day.
|
This is a cloudy day.
|
||||||
|
This is a cloudy day.
|
||||||
|
This is a cloudy day.
|
||||||
|
This is a cloudy day.
|
||||||
|
This is a cloudy day.
|
||||||
|
This is a cloudy day.
|
||||||
|
This is a cloudy day.
|
||||||
|
This is a cloudy day.
|
||||||
This is a cloudy day.
|
This is a cloudy day.
|
||||||
This is a rainy day.
|
This is a rainy day.
|
||||||
This is a cloudy day.
|
|
||||||
This is a rainy day.
|
This is a rainy day.
|
||||||
This is a rainy day.
|
This is a rainy day.
|
||||||
This is a sunny day.
|
This is a sunny day.
|
||||||
This is a cloudy day.
|
This is a rainy day.
|
||||||
This is a cloudy day.
|
This is a cloudy day.
|
||||||
This is a rainy day.
|
This is a rainy day.
|
||||||
This is a scorching hot day.
|
This is a scorching hot day.
|
||||||
This is a rainy day.
|
|
||||||
This is a sunny day.
|
This is a sunny day.
|
||||||
This is a rainy day.
|
|
||||||
This is a cloudy day.
|
|
||||||
This is a cloudy day.
|
|
||||||
This is a rainy day.
|
|
||||||
This is a cloudy day.
|
|
||||||
Clearly it's Epitaph.
|
|
||||||
Clearly it's Level Five.
|
|
||||||
Clearly it's Nuages.
|
|
||||||
Clearly it's Lizard.
|
|
||||||
Clearly it's Starless.
|
Clearly it's Starless.
|
||||||
Clearly it's Level Five.
|
|
||||||
Clearly it's Fracture.
|
|
||||||
Clearly it's Lizard.
|
|
||||||
Clearly it's Level Five.
|
|
||||||
Clearly it's Starless.
|
|
||||||
Clearly it's Level Five.
|
|
||||||
Clearly it's Lizard.
|
|
||||||
Clearly it's Epitaph.
|
|
||||||
Clearly it's Fracture.
|
Clearly it's Fracture.
|
||||||
Clearly it's Lizard.
|
Clearly it's Lizard.
|
||||||
Clearly it's Epitaph.
|
Clearly it's Epitaph.
|
||||||
|
Clearly it's Lizard.
|
||||||
|
Clearly it's Nuages.
|
||||||
|
Clearly it's Lizard.
|
||||||
|
Clearly it's Epitaph.
|
||||||
|
Clearly it's Starless.
|
||||||
|
Clearly it's Epitaph.
|
||||||
Clearly it's Nuages.
|
Clearly it's Nuages.
|
||||||
Clearly it's Epitaph.
|
Clearly it's Epitaph.
|
||||||
The digit is 2.
|
Clearly it's Starless.
|
||||||
|
Clearly it's Epitaph.
|
||||||
|
Clearly it's Lizard.
|
||||||
|
Clearly it's Fracture.
|
||||||
|
Clearly it's Lizard.
|
||||||
|
Clearly it's Nuages.
|
||||||
|
The digit is 3.
|
||||||
|
The digit is 1.
|
||||||
The digit is 5.
|
The digit is 5.
|
||||||
|
The digit is 2.
|
||||||
|
The digit is 4.
|
||||||
The digit is 4.
|
The digit is 4.
|
||||||
The digit is 1.
|
The digit is 1.
|
||||||
The digit is 3.
|
The digit is 3.
|
||||||
The digit is 1.
|
|
||||||
The digit is 4.
|
|
||||||
The digit is 3.
|
|
||||||
The digit is 2.
|
The digit is 2.
|
||||||
The digit is 5.
|
The digit is 5.
|
||||||
The letter is A.
|
The letter is B.
|
||||||
The letter is A.
|
The letter is B.
|
||||||
The letter is A.
|
The letter is B.
|
||||||
The letter is A.
|
The letter is B.
|
||||||
The light changes randomly again; now it's red.
|
|
||||||
The light changes randomly again; now it's green.
|
|
||||||
The light changes randomly again; now it's red.
|
|
||||||
The light changes randomly again; now it's green.
|
The light changes randomly again; now it's green.
|
||||||
The light changes randomly again; now it's amber.
|
The light changes randomly again; now it's amber.
|
||||||
|
The light changes randomly again; now it's green.
|
||||||
|
The light changes randomly again; now it's amber.
|
||||||
|
The light changes randomly again; now it's green.
|
||||||
|
The coin comes up tails.
|
||||||
The coin comes up tails.
|
The coin comes up tails.
|
||||||
The coin comes up heads.
|
|
||||||
The coin comes up heads.
|
|
||||||
The coin comes up tails.
|
The coin comes up tails.
|
||||||
The coin comes up heads.
|
The coin comes up heads.
|
||||||
The coin comes up tails.
|
The coin comes up tails.
|
||||||
|
The coin comes up heads.
|
||||||
Maybe the murderer is Colonel Mustard.
|
Maybe the murderer is Colonel Mustard.
|
||||||
Maybe the murderer is Professor Plum.
|
Maybe the murderer is Professor Plum.
|
||||||
Maybe the murderer is Cardinal Cerise.
|
Maybe the murderer is Cardinal Cerise.
|
||||||
Maybe the murderer is Colonel Mustard.
|
Maybe the murderer is Colonel Mustard.
|
||||||
Maybe the murderer is Cardinal Cerise.
|
|
||||||
Maybe the murderer is Professor Plum.
|
|
||||||
Maybe the murderer is Cardinal Cerise.
|
|
||||||
Maybe the murderer is Professor Plum.
|
Maybe the murderer is Professor Plum.
|
||||||
Maybe the murderer is Colonel Mustard.
|
Maybe the murderer is Colonel Mustard.
|
||||||
Maybe the murderer is Cardinal Cerise.
|
Maybe the murderer is Cardinal Cerise.
|
||||||
Maybe the murderer is Professor Plum.
|
Maybe the murderer is Professor Plum.
|
||||||
|
Maybe the murderer is Colonel Mustard.
|
||||||
Maybe the murderer is Cardinal Cerise.
|
Maybe the murderer is Cardinal Cerise.
|
||||||
|
Maybe the murderer is Colonel Mustard.
|
||||||
|
Maybe the murderer is Professor Plum.
|
||||||
Maybe the victim is Colonel Mustard.
|
Maybe the victim is Colonel Mustard.
|
||||||
Maybe the victim is Professor Plum.
|
Maybe the victim is Professor Plum.
|
||||||
Maybe the victim is Cardinal Cerise.
|
Maybe the victim is Cardinal Cerise.
|
||||||
Maybe the victim is Colonel Mustard.
|
Maybe the victim is Professor Plum.
|
||||||
Maybe the victim is Cardinal Cerise.
|
|
||||||
Maybe the victim is Professor Plum.
|
Maybe the victim is Professor Plum.
|
||||||
Maybe the victim is Cardinal Cerise.
|
Maybe the victim is Cardinal Cerise.
|
||||||
|
Maybe the victim is Colonel Mustard.
|
||||||
|
Maybe the victim is Professor Plum.
|
||||||
Maybe the victim is Cardinal Cerise.
|
Maybe the victim is Cardinal Cerise.
|
||||||
Maybe the victim is Cardinal Cerise.
|
Maybe the victim is Professor Plum.
|
||||||
Maybe the victim is Cardinal Cerise.
|
|
||||||
Maybe the victim is Cardinal Cerise.
|
Maybe the victim is Cardinal Cerise.
|
||||||
Maybe the victim is Colonel Mustard.
|
Maybe the victim is Colonel Mustard.
|
||||||
The screen door squeaks surprisingly loudly.
|
The screen door squeaks surprisingly loudly.
|
||||||
|
|
|
@ -491,10 +491,10 @@ Table of Zoggle
|
||||||
(row 4) | 4.4 |
|
(row 4) | 4.4 |
|
||||||
Table of Selected Numbers
|
Table of Selected Numbers
|
||||||
(row 1) | 9 | nine |
|
(row 1) | 9 | nine |
|
||||||
(row 2) | 154 | one hundred and fifty-four |
|
(row 2) | 27 | twenty-seven |
|
||||||
(row 3) | 3 | three |
|
(row 3) | 4 | four |
|
||||||
(row 4) | 4 | four |
|
(row 4) | 3 | three |
|
||||||
(row 5) | 27 | twenty-seven |
|
(row 5) | 154 | one hundred and fifty-four |
|
||||||
(row 6) | -- --
|
(row 6) | -- --
|
||||||
(row 7) | -- --
|
(row 7) | -- --
|
||||||
(row 8) | -- --
|
(row 8) | -- --
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
-dataresourcetext '3:inform7/Tests/Test Filings/_internal_files/Nettles.txt'
|
-dataresourcetext "3:inform7/Tests/Test Filings/_internal_files/Nettles.txt"
|
||||||
|
|
|
@ -345,7 +345,7 @@ void RTInstances::set_translation(instance *I, text_stream *identifier) {
|
||||||
inter_name *iname = RTInstances::value_iname(I);
|
inter_name *iname = RTInstances::value_iname(I);
|
||||||
InterNames::set_translation(iname, identifier);
|
InterNames::set_translation(iname, identifier);
|
||||||
InterNames::clear_flag(iname, MAKE_NAME_UNIQUE_ISYMF);
|
InterNames::clear_flag(iname, MAKE_NAME_UNIQUE_ISYMF);
|
||||||
Hierarchy::make_available(iname);
|
Hierarchy::make_available_one_per_name_only(iname);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ When names are abbreviated for use on the World Index map (for instance,
|
@ When names are abbreviated for use on the World Index map (for instance,
|
||||||
|
|
|
@ -82,7 +82,7 @@
|
||||||
|
|
||||||
show: $A
|
show: $A
|
||||||
|
|
||||||
match text: $A $I
|
match platform text: $A $I
|
||||||
or: 'produced incorrect output'
|
or: 'produced incorrect output'
|
||||||
|
|
||||||
-end
|
-end
|
||||||
|
@ -110,10 +110,10 @@
|
||||||
|
|
||||||
show: $A
|
show: $A
|
||||||
|
|
||||||
match text: $AA $IA
|
match platform text: $AA $IA
|
||||||
or: 'produced incorrect output on A'
|
or: 'produced incorrect output on A'
|
||||||
|
|
||||||
match text: $AB $IB
|
match platform text: $AB $IB
|
||||||
or: 'produced incorrect output on B'
|
or: 'produced incorrect output on B'
|
||||||
|
|
||||||
-end
|
-end
|
||||||
|
|
|
@ -6,14 +6,14 @@ Gelato's Syndrome. It's struck, and it's struck hard. In these sticky summer mon
|
||||||
|
|
||||||
Patient Zero
|
Patient Zero
|
||||||
An Interactive Fiction
|
An Interactive Fiction
|
||||||
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
|
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||||
|
|
||||||
Alfred Cralle Pool Hall
|
Alfred Cralle Pool Hall
|
||||||
The town's most popular gathering-place, the pool hall is decorated in honor of the inventor of the ice cream scoop.
|
The town's most popular gathering-place, the pool hall is decorated in honor of the inventor of the ice cream scoop.
|
||||||
|
|
||||||
An air conditioner sits in the corner, unhappily inert.
|
An air conditioner sits in the corner, unhappily inert.
|
||||||
|
|
||||||
You can see Lewis and Linnea here.
|
You can see Lewis and Linnea here. The latter looks as though dipped in french vanilla.
|
||||||
|
|
||||||
>(Testing.)
|
>(Testing.)
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ Vanessa watches serenely as the metal door slides automatically back in place, s
|
||||||
>[6] ask vanessa for french vanilla
|
>[6] ask vanessa for french vanilla
|
||||||
"Do you have a coupon?" Vanessa demands. You admit you do not. "No french vanilla for you!"
|
"Do you have a coupon?" Vanessa demands. You admit you do not. "No french vanilla for you!"
|
||||||
|
|
||||||
Antony trades in the coupon and receives a chocolate chip ice cream cone from Vanessa.
|
Antony trades in the coupon and receives a blackberry sorbet ice cream cone from Vanessa.
|
||||||
|
|
||||||
>[7] ask vanessa for chocolate
|
>[7] ask vanessa for chocolate
|
||||||
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate for you!"
|
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate for you!"
|
||||||
|
@ -77,6 +77,6 @@ Vanessa watches serenely as the metal door slides automatically back in place, s
|
||||||
>[9] ask vanessa for chocolate chocolate chip
|
>[9] ask vanessa for chocolate chocolate chip
|
||||||
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate chocolate chip for you!"
|
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate chocolate chip for you!"
|
||||||
|
|
||||||
Martin trades in the coupon and receives a dulce de leche ice cream cone from Vanessa.
|
Martin trades in the coupon and receives a rocky road ice cream cone from Vanessa.
|
||||||
|
|
||||||
>Are you sure you want to quit?
|
>Are you sure you want to quit?
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
The Speed of Thought
|
The Speed of Thought
|
||||||
An Interactive Fiction
|
An Interactive Fiction
|
||||||
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
|
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||||
|
|
||||||
Science Journalism Desk
|
Science Journalism Desk
|
||||||
From here you, the Science Anchor, have the privilege of reporting the latest and most fascinating stories to an eager public.
|
From here you, the Science Anchor, have the privilege of reporting the latest and most fascinating stories to an eager public.
|
||||||
|
@ -14,19 +14,19 @@ Currently you have to report on the International Space Station. Your story coul
|
||||||
>(Testing.)
|
>(Testing.)
|
||||||
|
|
||||||
>[1] report experiment module
|
>[1] report experiment module
|
||||||
You turn to the camera and speak: "The experiment module has a length of about 7.34211 bathtubs."
|
You turn to the camera and speak: "The experiment module has a length of roughly 7.34211 bathtubs."
|
||||||
|
|
||||||
>[2] report logistics
|
>[2] report logistics
|
||||||
"The logistics module has a length of roughly 2.76974 bathtubs." Right now the station will be cutting over to a visual of that.
|
"The logistics module has a length of approximately 2.76974 bathtubs." Right now the station will be cutting over to a visual of that.
|
||||||
|
|
||||||
>[3] report height
|
>[3] report height
|
||||||
Turning to another camera angle, you add: "The station orbits at heights between about 627.53949 Empire State buildings and 1038.37476 Empire State buildings above the earth."
|
Turning to another camera angle, you add: "The station orbits at heights between around 627.53949 Empire State buildings and 1038.37476 Empire State buildings above the earth."
|
||||||
|
|
||||||
>[4] report array
|
>[4] report array
|
||||||
"The solar array has a length of around 1.16 Olympic swimming pools and an area of about 125.0 queen-sized mattresses." Pity the kids in audiovisual who have to scare that image together in a hurry.
|
"The solar array has a length of approximately 1.16 Olympic swimming pools and an area of about 125.0 queen-sized mattresses." Pity the kids in audiovisual who have to scare that image together in a hurry.
|
||||||
|
|
||||||
>[5] report solar cell
|
>[5] report solar cell
|
||||||
"The individual solar cell has an area of roughly 0.17391 credit cards." You smile brightly.
|
"The individual solar cell has an area of approximately 0.17391 credit cards." You smile brightly.
|
||||||
|
|
||||||
And that's all! The channel cuts to weather.
|
And that's all! The channel cuts to weather.
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
M. Melmoth's Duel
|
M. Melmoth's Duel
|
||||||
An Interactive Fiction
|
An Interactive Fiction
|
||||||
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
|
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||||
|
|
||||||
Saint-Germain-des-Prés
|
Saint-Germain-des-Prés
|
||||||
Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haunted sort, you once again find yourself outside M. Melmoth's hotel. Today crowds of vulgar children play chase around the lampposts, and you long to be indoors.
|
Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haunted sort, you once again find yourself outside M. Melmoth's hotel. Today crowds of vulgar children play chase around the lampposts, and you long to be indoors.
|
||||||
|
@ -16,7 +16,7 @@ Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haun
|
||||||
Hôtel d'Alsace
|
Hôtel d'Alsace
|
||||||
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
|
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
|
||||||
|
|
||||||
In this light, the wallpaper has a distinctly aquamarine wash.
|
In this light, the wallpaper has a distinctly darkish purple wash. You particularly dislike purple.
|
||||||
|
|
||||||
>[2] out
|
>[2] out
|
||||||
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.
|
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.
|
||||||
|
@ -30,7 +30,7 @@ Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haun
|
||||||
Hôtel d'Alsace
|
Hôtel d'Alsace
|
||||||
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
|
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
|
||||||
|
|
||||||
In this light, the wallpaper has a distinctly green wash.
|
In this light, the wallpaper has a distinctly aquamarine wash.
|
||||||
|
|
||||||
>[5] out
|
>[5] out
|
||||||
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.
|
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.
|
||||||
|
|
Loading…
Reference in a new issue