<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xml:lang="en_US">
<channel><title>TASLabo</title>
<link>http://gocha.s1.zmx.jp/tas/</link>
<description>TASLabo Recent Diffs</description>
<language>en_US</language>
<generator>rssdiff plugin for PukiWiki</generator>
<item>
<link>http://gocha.s1.zmx.jp/tas/DragonQuest3Tricks.html</link>
<title>DragonQuest3Tricks</title>
<pubDate>Tue, 20 Jul 2010 09:04:03 +0900</pubDate>
<description>-このバグは「ふくろ」を先頭の人間と誤認識してしまうバグです。
-袋に入れたキメラの翼を使い、目的地を選択する前にキャンセルすることで発生します。
-袋にアイテムを入れるとき、通常は選択したアイテムを消しながら、袋の中にアイテムを発生させます。
-しかし、バグ化した袋で選択したアイテムを袋に入れ直すと、バグ袋の座標に対応したデータを消失させた後に袋の中のアイテムが一つ増えます。
-これによりアイテムの複製が可能になりますが、一歩間違うと大きな損失が発生するかもしれません。
-位置と情報の関係は下図のように対応してい...</description>
<content:encoded><![CDATA[<div class="block">
11
<div class="line"><del><code>このバグは「ふくろ」を先頭の人間と誤認識してしまうバグです。</code></del></div>
<div class="line"><del><code>袋に入れたキメラの翼を使い、目的地を選択する前にキャンセルすることで発生します。</code></del></div>
<div class="line"><del><code>袋にアイテムを入れるとき、通常は選択したアイテムを消しながら、袋の中にアイテムを発生させます。</code></del></div>
<div class="line"><del><code>しかし、バグ化した袋で選択したアイテムを袋に入れ直すと、バグ袋の座標に対応したデータを消失させた後に袋の中のアイテムが一つ増えます。</code></del></div>
<div class="line"><del><code>これによりアイテムの複製が可能になりますが、一歩間違うと大きな損失が発生するかもしれません。</code></del></div>
<div class="line"><del><code>位置と情報の関係は下図のように対応しています。</code></del></div>
<div class="line"><add><code>- このバグは「ふくろ」を先頭の人間と誤認識してしまうバグです。</code></add></div>
<div class="line"><add><code>- 袋に入れたキメラの翼を使い、目的地を選択する前にキャンセルすることで発生します。</code></add></div>
<div class="line"><add><code>- 袋にアイテムを入れるとき、通常は選択したアイテムを消しながら、袋の中にアイテムを発生させます。</code></add></div>
<div class="line"><add><code>- しかし、バグ化した袋で選択したアイテムを袋に入れ直すと、バグ袋の座標に対応したデータを消失させた後に袋の中のアイテムが一つ増えます。</code></add></div>
<div class="line"><add><code>- これによりアイテムの複製が可能になりますが、一歩間違うと大きな損失が発生するかもしれません。</code></add></div>
<div class="line"><add><code>- 位置と情報の関係は下図のように対応しています。</code></add></div>
</div>
<div class="block">
18
<div class="line"><add><code>- バグ袋座標に対応したキャラ情報をアイテムとして取り出すことが出来ます。</code></add></div>
<div class="line"><add><code>- また、アイテムを交換することによってキャラ情報を変更することも出来ます。</code></add></div>
<div class="line"><add><code></code></add></div>
<div class="line"><add><code>- さらに、キャラ情報をアイテムとして取り出したり、差し込んだりすることも可能です。</code></add></div>
<div class="line"><add><code>- キャラ情報には、基礎値と装備値があり、そのキャラの荷物やステータスに変動があったり、酒場に預けたりすると再計算されます。</code></add></div>
<div class="line"><add><code>- 基礎値ではなく装備値を変更することで強大な攻撃力を得ることも出来ますが、再計算されると値が戻ってしまうので注意が必要です。</code></add></div>
<div class="line"><add><code></code></add></div>
<div class="line"><add><code></code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/discussion/GanbareGoemon3Tricks.html</link>
<title>discussion/GanbareGoemon3Tricks</title>
<pubDate>Tue, 09 Mar 2010 02:06:09 +0900</pubDate>
<description></description>
<content:encoded><![CDATA[]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/PeopleChase.html</link>
<title>PeopleChase</title>
<pubDate>Tue, 02 Mar 2010 06:17:48 +0900</pubDate>
<description>-** gstick [#p5eacf74]
+** gstick [#gstick]

-- [[スティック海苔&gt;http://gstick.jugem.jp/]]（ブログ）
+- [[gstick on Twitter&gt;http://twitter.com/nori46]]
</description>
<content:encoded><![CDATA[<div class="block">
121
<div class="line"><del><code>** gstick [#p5eacf74]</code></del></div>
<div class="line"><add><code>** gstick [#gstick]</code></add></div>
</div>
<div class="block">
131
<div class="line"><del><code>- [[スティック海苔&gt;http://gstick.jugem.jp/]]（ブログ）</code></del></div>
<div class="line"><add><code>- [[gstick on Twitter&gt;http://twitter.com/nori46]]</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/discussion/gocha/ListOfIdeas.html</link>
<title>discussion/gocha/ListOfIdeas</title>
<pubDate>Sat, 16 Jan 2010 23:36:51 +0900</pubDate>
<description>+- スーパーマリオアドバンスシリーズの全て(Any%&amp;All%)というのはいかがでしょうか。 -- [[どっかのゆとりｚ]] &amp;new{2010-01-17 (日) 08:36:30};
</description>
<content:encoded><![CDATA[<div class="block">
3
<div class="line"><add><code>- スーパーマリオアドバンスシリーズの全て(Any%&amp;All%)というのはいかがでしょうか。 -- [[どっかのゆとりｚ]] &amp;new{2010-01-17 (日) 08:36:30};</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/KirbysDreamCourseTricks.html</link>
<title>KirbysDreamCourseTricks</title>
<pubDate>Fri, 15 Jan 2010 14:35:46 +0900</pubDate>
<description>-- [[wipe's HP: カービィボウル攻略 決定版！&gt;http://www2.fctv.ne.jp/~susuki/kou-kbowl.htm]]
+- [[wipe's HP: カービィボウル攻略 決定版！&gt;http://challenger.fctv.ne.jp/~susuki/kou-kbowl.htm]]
</description>
<content:encoded><![CDATA[<div class="block">
301
<div class="line"><del><code>- [[wipe's HP: カービィボウル攻略 決定版！&gt;http://www2.fctv.ne.jp/~susuki/kou-kbowl.htm]]</code></del></div>
<div class="line"><add><code>- [[wipe's HP: カービィボウル攻略 決定版！&gt;http://challenger.fctv.ne.jp/~susuki/kou-kbowl.htm]]</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/discussion/gocha/LuaScript.html</link>
<title>discussion/gocha/LuaScript</title>
<pubDate>Sat, 02 Jan 2010 11:43:40 +0900</pubDate>
<description></description>
<content:encoded><![CDATA[]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/gocha/LuaScript.html</link>
<title>gocha/LuaScript</title>
<pubDate>Fri, 20 Nov 2009 07:47:12 +0900</pubDate>
<description>-[[mt19937.lua&gt;http://pastebin.com/f6d743bdf]]
+[[mt19937.lua&gt;http://code.google.com/p/gocha-tas/source/browse/trunk/Scripts/mt19937.lua]]

-[[xorshift.lua&gt;http://pastebin.com/f56837842]]
+[[xorshift.lua&gt;http://code.google.com/p/gocha-tas/source/browse/trunk/Scripts/xorshift.lua]]

-* EmuLua scripts for certain games [#f0810373]
+* EmuLua scripts for certain games [#GameSpecificScripts]

-[[snesmadou-semiautomap.lua&gt;http://pastebin.ca/1403243]]
+[[SNESMadou_SemiAutoMap.lua&gt;http://code.google.com/p/gocha-...</description>
<content:encoded><![CDATA[<div class="block">
40
<div class="line"><del><code>[[mt19937.lua&gt;http://pastebin.com/f6d743bdf]]</code></del></div>
<div class="line"><add><code>[[mt19937.lua&gt;http://code.google.com/p/gocha-tas/source/browse/trunk/Scripts/mt19937.lua]]</code></add></div>
</div>
<div class="block">
59
<div class="line"><del><code>[[xorshift.lua&gt;http://pastebin.com/f56837842]]</code></del></div>
<div class="line"><add><code>[[xorshift.lua&gt;http://code.google.com/p/gocha-tas/source/browse/trunk/Scripts/xorshift.lua]]</code></add></div>
</div>
<div class="block">
61
<div class="line"><del><code>* EmuLua scripts for certain games [#f0810373]</code></del></div>
<div class="line"><add><code>* EmuLua scripts for certain games [#GameSpecificScripts]</code></add></div>
</div>
<div class="block">
65
<div class="line"><del><code>[[snesmadou-semiautomap.lua&gt;http://pastebin.ca/1403243]]</code></del></div>
<div class="line"><add><code>[[SNESMadou_SemiAutoMap.lua&gt;http://code.google.com/p/gocha-tas/source/browse/trunk/Projects/SNESMadouMonogatari/LuaScripts/SNESMadou_SemiAutoMap.lua]]</code></add></div>
</div>
<div class="block">
71
<div class="line"><del><code>[[smw-sprites.lua&gt;http://pastebin.ca/1411041]]</code></del></div>
<div class="line"><add><code>[[smw-sprites.lua&gt;http://pastebin.ca/1411041]] (this is old)</code></add></div>
</div>
<div class="block">
86
<div class="line"><del><code>#region(smwcheat.lua)</code></del></div>
<div class="line"><del><code> --[[</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  Super Mario World (U) Cheat Script by gocha</code></del></div>
<div class="line"><del><code>  Operation check done by using snes9x-rr 1.43 r26 (lua svn r2)</code></del></div>
<div class="line"><del><code>    http://code.google.com/p/snes9x143-rerecording/</code></del></div>
<div class="line"><del><code>  Note: this script doesn't work properly under DeHackEd's Snes9x</code></del></div>
<div class="line"><del><code>  Last modified: 2009-02-22 (WIP2.1, fixed crash after loading a ROM, lua version incremented)</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  === Cheat Keys ===</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  Level:</code></del></div>
<div class="line"><del><code>  up+select         Powerup (small,big,cape,fire)</code></del></div>
<div class="line"><del><code>  L+A               Change move method (normal.P-meter,free)</code></del></div>
<div class="line"><del><code>  pause+select      Exit the current level, with activating the next level</code></del></div>
<div class="line"><del><code>  pause+(A+select)  Exit the current level, with activating the next level (secret goal)</code></del></div>
<div class="line"><del><code>  pause+(B+select)  Exit the current level, without activating the next level</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  Note: color blocks can't be activated if you beat a switch palace with the pause-exit cheat.</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  === Other Features ===</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  - P-meter display</code></del></div>
<div class="line"><del><code>  - Cut powerup / powerdown animation</code></del></div>
<div class="line"><del><code>  - Display some other useful informations (holding L+R in 0.5s may switch info view)</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  Some of these features can be enabled / disabled by modifying the following option settings.</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> ]]--</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- option start here &gt;&gt;</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local smwCutPowerupAnimationOn = true</code></del></div>
<div class="line"><del><code> local smwCutPowerdownAnimationOn = true</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local smwShowInfoMore = false -- if true, displays some of useful informations (hopefully)</code></del></div>
<div class="line"><del><code> local smwShowInfoMoreKeySw = false -- if true, holding L+R in 0.5s switches info view</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- Move speed definitions for free move mode.</code></del></div>
<div class="line"><del><code> -- I guess you usually won't need to modify these.</code></del></div>
<div class="line"><del><code> local smwFreeMoveSpeed = 2.0 -- px/f</code></del></div>
<div class="line"><del><code> local smwFreeMoveSpeedupMax = 4.0 -- px/f</code></del></div>
<div class="line"><del><code> local smwFreeMovePMeterLength = 1 -- frame(s)</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local noDigitalTVSets = true -- well, it's Japanese joke :P</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- &lt;&lt; options end here</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- [ generic utility functions ] -----------------------------------------------</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- require(&quot;bit&quot;)</code></del></div>
<div class="line"><del><code> -- LuaBitOp style bitwise operation for tas lua</code></del></div>
<div class="line"><del><code> bit = {}</code></del></div>
<div class="line"><del><code> bit.band = function (...) return AND(...) end</code></del></div>
<div class="line"><del><code> bit.bor  = function (...) return OR(...)  end</code></del></div>
<div class="line"><del><code> bit.bxor = function (...) return XOR(...) end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- copy a table</code></del></div>
<div class="line"><del><code> function table_clone_recursive_(e)</code></del></div>
<div class="line"><del><code>     if type(e) == &quot;table&quot; then</code></del></div>
<div class="line"><del><code>         local newTable = {}</code></del></div>
<div class="line"><del><code>         for k, v in pairs(e) do</code></del></div>
<div class="line"><del><code>             newTable[k] = table_clone_recursive_(v)</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         return newTable</code></del></div>
<div class="line"><del><code>     else</code></del></div>
<div class="line"><del><code>         return e</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code> table.clone = function (e)</code></del></div>
<div class="line"><del><code>     if type(e) == &quot;table&quot; then</code></del></div>
<div class="line"><del><code>         return table_clone_recursive_(e)</code></del></div>
<div class="line"><del><code>     else</code></del></div>
<div class="line"><del><code>         error(&quot;bad argument #1 to 'table.clone' (table expected, got &quot; .. type(e) .. &quot;)&quot;)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- convert table to string (ex. {name=gocha, age=4})</code></del></div>
<div class="line"><del><code> function table_dump_recursive_(e)</code></del></div>
<div class="line"><del><code>     if type(e) == &quot;table&quot; then</code></del></div>
<div class="line"><del><code>         local str = &quot;&quot;</code></del></div>
<div class="line"><del><code>         local first = true</code></del></div>
<div class="line"><del><code>         local list = true</code></del></div>
<div class="line"><del><code>         local lastKey = 0</code></del></div>
<div class="line"><del><code>         for k in pairs(e) do</code></del></div>
<div class="line"><del><code>             if type(k) ~= &quot;number&quot; or k - lastKey ~= 1 then</code></del></div>
<div class="line"><del><code>                 list = false</code></del></div>
<div class="line"><del><code>                 break</code></del></div>
<div class="line"><del><code>             end</code></del></div>
<div class="line"><del><code>             lastKey = k</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         for k, v in pairs(e) do</code></del></div>
<div class="line"><del><code>             if not first then</code></del></div>
<div class="line"><del><code>                 str = str .. &quot;, &quot;</code></del></div>
<div class="line"><del><code>             else</code></del></div>
<div class="line"><del><code>                 first = false</code></del></div>
<div class="line"><del><code>             end</code></del></div>
<div class="line"><del><code>             if not list then</code></del></div>
<div class="line"><del><code>                 str = str .. table_dump_recursive_(k) .. &quot;=&quot;</code></del></div>
<div class="line"><del><code>             end</code></del></div>
<div class="line"><del><code>             if type(v) == &quot;string&quot; then</code></del></div>
<div class="line"><del><code>                str = str .. '&quot;' .. table_dump_recursive_(v) .. '&quot;'</code></del></div>
<div class="line"><del><code>             else</code></del></div>
<div class="line"><del><code>                str = str .. table_dump_recursive_(v)</code></del></div>
<div class="line"><del><code>             end</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         --if list then</code></del></div>
<div class="line"><del><code>         --    return &quot;(&quot; .. str .. &quot;)&quot;</code></del></div>
<div class="line"><del><code>         --else</code></del></div>
<div class="line"><del><code>             return &quot;{&quot; .. str .. &quot;}&quot;</code></del></div>
<div class="line"><del><code>         --end</code></del></div>
<div class="line"><del><code>     else</code></del></div>
<div class="line"><del><code>         return tostring(e)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code> table.dump = function (e)</code></del></div>
<div class="line"><del><code>     if type(e) == &quot;table&quot; then</code></del></div>
<div class="line"><del><code>         return table_dump_recursive_(e)</code></del></div>
<div class="line"><del><code>     else</code></del></div>
<div class="line"><del><code>         error(&quot;bad argument #1 to 'table.dump' (table expected, got &quot; .. type(e) .. &quot;)&quot;)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- [ gameemu lua utility functions ] -------------------------------------------</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> function gui.drawedgelessbox(x1, y1, x2, y2, colour)</code></del></div>
<div class="line"><del><code>     gui.drawline(x1+1, y1, x2-1, y1, colour) -- top</code></del></div>
<div class="line"><del><code>     gui.drawline(x2, y1+1, x2, y2-1, colour) -- right</code></del></div>
<div class="line"><del><code>     gui.drawline(x1+1, y2, x2-1, y2, colour) -- bottom</code></del></div>
<div class="line"><del><code>     gui.drawline(x1, y1+1, x1, y2-1, colour) -- left</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local pad_all_presses = { &quot;start&quot;, &quot;select&quot;, &quot;up&quot;, &quot;down&quot;, &quot;left&quot;, &quot;right&quot;, &quot;A&quot;, &quot;B&quot;, &quot;X&quot;, &quot;Y&quot;, &quot;L&quot;, &quot;R&quot; }</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local pad_max = 2</code></del></div>
<div class="line"><del><code> local pad_press, pad_down, pad_up, pad_prev, pad_send = {}, {}, {}, {}, {}</code></del></div>
<div class="line"><del><code> local pad_presstime = {}</code></del></div>
<div class="line"><del><code> for player = 1, pad_max do</code></del></div>
<div class="line"><del><code>     pad_press[player] = {}</code></del></div>
<div class="line"><del><code>     pad_presstime[player] = { start=0, select=0, up=0, down=0, left=0, right=0, A=0, B=0, X=0, Y=0, L=0, R=0 }</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- scan button presses</code></del></div>
<div class="line"><del><code> function scanJoypad()</code></del></div>
<div class="line"><del><code>     for i = 1, pad_max do</code></del></div>
<div class="line"><del><code>         pad_prev[i] = table.clone(pad_press[i])</code></del></div>
<div class="line"><del><code>         pad_press[i] = joypad.read(i)</code></del></div>
<div class="line"><del><code>         pad_send[i] = table.clone(pad_press[i])</code></del></div>
<div class="line"><del><code>         -- scan keydowns</code></del></div>
<div class="line"><del><code>         pad_down[i] = {}</code></del></div>
<div class="line"><del><code>         for k in pairs(pad_press[i]) do</code></del></div>
<div class="line"><del><code>             if not pad_prev[i][k] then</code></del></div>
<div class="line"><del><code>                 pad_down[i][k] = 1</code></del></div>
<div class="line"><del><code>             end</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         -- scan keyups</code></del></div>
<div class="line"><del><code>         pad_up[i] = {}</code></del></div>
<div class="line"><del><code>         for k in pairs(pad_prev[i]) do</code></del></div>
<div class="line"><del><code>             if not pad_press[i][k] then</code></del></div>
<div class="line"><del><code>                 pad_up[i][k] = 1</code></del></div>
<div class="line"><del><code>             end</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         -- count press length</code></del></div>
<div class="line"><del><code>         for k, v in ipairs(pad_all_presses) do</code></del></div>
<div class="line"><del><code>             if not pad_press[i][v] then</code></del></div>
<div class="line"><del><code>                 pad_presstime[i][v] = 0</code></del></div>
<div class="line"><del><code>             else</code></del></div>
<div class="line"><del><code>                 pad_presstime[i][v] = pad_presstime[i][v] + 1</code></del></div>
<div class="line"><del><code>             end</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code> -- send button presses</code></del></div>
<div class="line"><del><code> function sendJoypad()</code></del></div>
<div class="line"><del><code>     for i = 1, pad_max do</code></del></div>
<div class="line"><del><code>         joypad.set(i, pad_send[i])</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- append button presses</code></del></div>
<div class="line"><del><code> function AppendJoypadPresses(player, ...)</code></del></div>
<div class="line"><del><code>     local args = {...}</code></del></div>
<div class="line"><del><code>     for k, v in ipairs(args) do</code></del></div>
<div class="line"><del><code>         pad_send[player][v] = 1</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- delete button presses</code></del></div>
<div class="line"><del><code> function DeleteJoypadPresses(player, ...)</code></del></div>
<div class="line"><del><code>     local args = {...}</code></del></div>
<div class="line"><del><code>     for k, v in ipairs(args) do</code></del></div>
<div class="line"><del><code>         pad_send[player][v] = nil</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- toggle button presses</code></del></div>
<div class="line"><del><code> function ToggleJoypadPresses(player, ...)</code></del></div>
<div class="line"><del><code>     local args = {...}</code></del></div>
<div class="line"><del><code>     for k, v in ipairs(args) do</code></del></div>
<div class="line"><del><code>         if not pad_send[player][v] then</code></del></div>
<div class="line"><del><code>             pad_send[player][v] = 1</code></del></div>
<div class="line"><del><code>         else</code></del></div>
<div class="line"><del><code>             pad_send[player][v] = nil</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- [ game-specific utility functions ] -----------------------------------------</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local moveMethod_normal = 0</code></del></div>
<div class="line"><del><code> local moveMethod_pmeter = 1</code></del></div>
<div class="line"><del><code> local moveMethod_free = 2</code></del></div>
<div class="line"><del><code> local moveMethod_max = 3</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local smwMoveMethod = moveMethod_normal</code></del></div>
<div class="line"><del><code> local smwFreeMovePMeter = 0</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local RAM_frameCountAlt = 0x7e0014</code></del></div>
<div class="line"><del><code> local RAM_gameMode = 0x7e0100</code></del></div>
<div class="line"><del><code> local RAM_player = 0x7e0db3</code></del></div>
<div class="line"><del><code> local RAM_powerup = 0x7e0019</code></del></div>
<div class="line"><del><code> local RAM_pMeter = 0x7e13e4</code></del></div>
<div class="line"><del><code> local RAM_takeOffMeter = 0x7e149f</code></del></div>
<div class="line"><del><code> local RAM_starInvCount = 0x7e1490</code></del></div>
<div class="line"><del><code> local RAM_hurtInvCount = 0x7e1497</code></del></div>
<div class="line"><del><code> local RAM_xSpeed = 0x7e007b</code></del></div>
<div class="line"><del><code> local RAM_ySpeed = 0x7e007d</code></del></div>
<div class="line"><del><code> local RAM_xPos = 0x7e0094</code></del></div>
<div class="line"><del><code> local RAM_yPos = 0x7e0096</code></del></div>
<div class="line"><del><code> local RAM_xSubPos = 0x7e13da</code></del></div>
<div class="line"><del><code> local RAM_ySubPos = 0x7e13dc</code></del></div>
<div class="line"><del><code> local RAM_movement = 0x7e0071</code></del></div>
<div class="line"><del><code> local RAM_lockSpritesTimer = 0x7e009d</code></del></div>
<div class="line"><del><code> local RAM_marioFrameCount = 0x7e1496</code></del></div>
<div class="line"><del><code> local RAM_frozen = 0x7e13fb</code></del></div>
<div class="line"><del><code> local RAM_paused = 0x7e13d4</code></del></div>
<div class="line"><del><code> local RAM_levelIndex = 0x7e13bf</code></del></div>
<div class="line"><del><code> local RAM_levelFlagTable = 0x7e1ea2</code></del></div>
<div class="line"><del><code> local RAM_typeOfExit = 0x7e0dd5</code></del></div>
<div class="line"><del><code> local RAM_midwayPoint = 0x7e13ce</code></del></div>
<div class="line"><del><code> local RAM_activateNextLevel = 0x7e13ce</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local pMeter_max = 112</code></del></div>
<div class="line"><del><code> local takeOffMeter_max = 112</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local gameMode_ow  = 14</code></del></div>
<div class="line"><del><code> local gameMode_level = 20</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local smwPlayerPrev, smwPlayer, smwPlayerChanged</code></del></div>
<div class="line"><del><code> local smwGameModePrev, smwGameMode, smwGameModeChanged</code></del></div>
<div class="line"><del><code> local smwPausePrev, smwPause, smwPauseChanged</code></del></div>
<div class="line"><del><code> local smwMovementPrev, smwMovement, smwMovementChanged</code></del></div>
<div class="line"><del><code> -- scan some parameters that control behavior of the script</code></del></div>
<div class="line"><del><code> function smwScanStatus()</code></del></div>
<div class="line"><del><code>     smwPlayerPrev = smwPlayer</code></del></div>
<div class="line"><del><code>     smwPlayer = memory.readbyte(RAM_player) + 1</code></del></div>
<div class="line"><del><code>     smwPlayerChanged = (smwPlayer ~= smwPlayerPrev)</code></del></div>
<div class="line"><del><code>     smwGameModePrev = smwGameMode</code></del></div>
<div class="line"><del><code>     smwGameMode = memory.readbyte(RAM_gameMode)</code></del></div>
<div class="line"><del><code>     smwGameModeChanged = (smwGameMode ~= smwGameModePrev)</code></del></div>
<div class="line"><del><code>     smwPausePrev = smwPause</code></del></div>
<div class="line"><del><code>     smwPause = (memory.readbyte(RAM_paused) ~= 0)</code></del></div>
<div class="line"><del><code>     smwPauseChanged = (smwPause ~= smwPausePrev)</code></del></div>
<div class="line"><del><code>     smwMovementPrev = smwMovement</code></del></div>
<div class="line"><del><code>     smwMovement = memory.readbyte(RAM_movement)</code></del></div>
<div class="line"><del><code>     smwMovementChanged = (smwMovement ~= smwMovementPrev)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- increment powerup</code></del></div>
<div class="line"><del><code> function smwDoPowerUp()</code></del></div>
<div class="line"><del><code>     local powerup = memory.readbyte(RAM_powerup)</code></del></div>
<div class="line"><del><code>     memory.writebyte(RAM_powerup, (powerup + 1) % 4)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- set move method</code></del></div>
<div class="line"><del><code> function smwSetMoveMethod(mode)</code></del></div>
<div class="line"><del><code>     -- cleanups</code></del></div>
<div class="line"><del><code>     if smwMoveMethod == moveMethod_free then</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_frozen, 0) -- unfreeze Mario</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code>     -- apply new method</code></del></div>
<div class="line"><del><code>     smwMoveMethod = mode % moveMethod_max</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- normal move</code></del></div>
<div class="line"><del><code> function smwMoveNormalProc()</code></del></div>
<div class="line"><del><code>     -- do nothing</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- P-meter mode</code></del></div>
<div class="line"><del><code> function smwMovePMeterProc()</code></del></div>
<div class="line"><del><code>     memory.writebyte(RAM_pMeter, pMeter_max)</code></del></div>
<div class="line"><del><code>     memory.writebyte(RAM_takeOffMeter, takeOffMeter_max+1)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- count own pmeter for</code></del></div>
<div class="line"><del><code> function smwFreeMovePMeterCount()</code></del></div>
<div class="line"><del><code>     local move = pad_press[smwPlayer][&quot;left&quot;] or pad_press[smwPlayer][&quot;right&quot;]</code></del></div>
<div class="line"><del><code>         or pad_press[smwPlayer][&quot;up&quot;] or pad_press[smwPlayer][&quot;down&quot;]</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     -- count up own P-meter</code></del></div>
<div class="line"><del><code>     if pad_press[smwPlayer][&quot;Y&quot;] and move then</code></del></div>
<div class="line"><del><code>         if smwFreeMovePMeter &lt; smwFreeMovePMeterLength then</code></del></div>
<div class="line"><del><code>             smwFreeMovePMeter = smwFreeMovePMeter + 1</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>     else</code></del></div>
<div class="line"><del><code>         smwFreeMovePMeter = 0</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- Free move mode</code></del></div>
<div class="line"><del><code> function smwMoveFreeProc()</code></del></div>
<div class="line"><del><code>     local x = memory.readword(RAM_xPos) + (memory.readbyte(RAM_xSubPos)/256.0)</code></del></div>
<div class="line"><del><code>     local y = memory.readword(RAM_yPos) + (memory.readbyte(RAM_ySubPos)/256.0)</code></del></div>
<div class="line"><del><code>     local speed, xv, yv = 0.0, 0.0, 0.0</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     -- calc Mario's new position</code></del></div>
<div class="line"><del><code>     smwFreeMovePMeterCount()</code></del></div>
<div class="line"><del><code>     speed = smwFreeMoveSpeed + (smwFreeMoveSpeedupMax * smwFreeMovePMeter / smwFreeMovePMeterLength)</code></del></div>
<div class="line"><del><code>     if pad_press[smwPlayer][&quot;left&quot;]  then xv = xv - speed end</code></del></div>
<div class="line"><del><code>     if pad_press[smwPlayer][&quot;right&quot;] then xv = xv + speed end</code></del></div>
<div class="line"><del><code>     if pad_press[smwPlayer][&quot;up&quot;]    then yv = yv - speed end</code></del></div>
<div class="line"><del><code>     if pad_press[smwPlayer][&quot;down&quot;]  then yv = yv + speed end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     -- freeze Mario</code></del></div>
<div class="line"><del><code>     if smwMovement == 0 then</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_frozen, 1)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_xSpeed, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_ySpeed, 0)</code></del></div>
<div class="line"><del><code>         x, y = x + xv, y + yv</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>         -- but animate sprites</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_frameCountAlt, (memory.readbyte(RAM_frameCountAlt) + 1) % 256)</code></del></div>
<div class="line"><del><code>     else</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_frozen, 0)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code>     -- make him invulnerable</code></del></div>
<div class="line"><del><code>     memory.writebyte(RAM_hurtInvCount, 127)</code></del></div>
<div class="line"><del><code>     -- manipulate Mario's position</code></del></div>
<div class="line"><del><code>     memory.writeword(RAM_xPos, math.floor(x))</code></del></div>
<div class="line"><del><code>     memory.writeword(RAM_yPos, math.floor(y))</code></del></div>
<div class="line"><del><code>     memory.writeword(RAM_xSubPos, math.floor(x*16)%16*16)</code></del></div>
<div class="line"><del><code>     memory.writeword(RAM_ySubPos, math.floor(y*16)%16*16)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local smwMoveMethodProc = { smwMoveNormalProc, smwMovePMeterProc, smwMoveFreeProc }</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- force allow escape</code></del></div>
<div class="line"><del><code> local smwForceSecretExit = false</code></del></div>
<div class="line"><del><code> local smwModExitStatus = false</code></del></div>
<div class="line"><del><code> function smwAllowEscape()</code></del></div>
<div class="line"><del><code>     if smwPause and pad_down[smwPlayer][&quot;select&quot;] then</code></del></div>
<div class="line"><del><code>         local levelIndex = memory.readbyte(RAM_levelIndex)</code></del></div>
<div class="line"><del><code>         local levelFlag = memory.readbyte(RAM_levelFlagTable + levelIndex)</code></del></div>
<div class="line"><del><code>         -- save midway point flag</code></del></div>
<div class="line"><del><code>         if memory.readbyte(RAM_midwayPoint) == 1 then</code></del></div>
<div class="line"><del><code>             memory.writebyte(RAM_levelFlagTable + levelIndex, bit.bor(levelFlag, 0x40))</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         -- exit the level force</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_levelFlagTable + levelIndex, bit.bor(levelFlag, 0x80))</code></del></div>
<div class="line"><del><code>         smwForceSecretExit = (pad_press[smwPlayer][&quot;A&quot;] ~= nil)</code></del></div>
<div class="line"><del><code>         -- activate next stage (destination must be written by smwRewriteOnPauseExit())</code></del></div>
<div class="line"><del><code>         -- pressing B will cancel this effect (exit without activate the next level)</code></del></div>
<div class="line"><del><code>         if not pad_press[smwPlayer][&quot;B&quot;] then</code></del></div>
<div class="line"><del><code>             memory.writebyte(RAM_activateNextLevel, 1)</code></del></div>
<div class="line"><del><code>         else</code></del></div>
<div class="line"><del><code>             memory.writebyte(RAM_activateNextLevel, 0)</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         smwModExitStatus = true</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- allow start+select to beat the level</code></del></div>
<div class="line"><del><code> function smwRewriteOnPauseExit()</code></del></div>
<div class="line"><del><code>     if not smwModExitStatus then return end</code></del></div>
<div class="line"><del><code>     if memory.readbyte(RAM_typeOfExit) == 0x80 and memory.readbyte(RAM_activateNextLevel) == 1 then</code></del></div>
<div class="line"><del><code>         if smwForceSecretExit then</code></del></div>
<div class="line"><del><code>             memory.writebyte(RAM_typeOfExit, 2)</code></del></div>
<div class="line"><del><code>         else</code></del></div>
<div class="line"><del><code>             memory.writebyte(RAM_typeOfExit, 1)</code></del></div>
<div class="line"><del><code>         end</code></del></div>
<div class="line"><del><code>         smwModExitStatus = false</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- cut powerup animation</code></del></div>
<div class="line"><del><code> function smwCutPowerupAnimation()</code></del></div>
<div class="line"><del><code>     if smwMovement == 2 then -- super</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_lockSpritesTimer, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_movement, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_marioFrameCount, 0)</code></del></div>
<div class="line"><del><code>         smwDoPowerUp() -- don't know why script needs to process it, anyway</code></del></div>
<div class="line"><del><code>     elseif smwMovement == 3 then -- cape</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_lockSpritesTimer, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_movement, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_marioFrameCount, 0)</code></del></div>
<div class="line"><del><code>     elseif smwMovement == 4 then -- fire</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_lockSpritesTimer, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_movement, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_marioFrameCount, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(0x7e149b, 0)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- cut powerdown animation</code></del></div>
<div class="line"><del><code> function smwCutPowerdownAnimation()</code></del></div>
<div class="line"><del><code>     if smwMovement == 1 then -- powerdown</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_lockSpritesTimer, 0)</code></del></div>
<div class="line"><del><code>         memory.writebyte(RAM_marioFrameCount, 0) -- stops 1 frame, but who cares</code></del></div>
<div class="line"><del><code>         -- memory.writebyte(RAM_movement, 0)</code></del></div>
<div class="line"><del><code>         -- memory.writebyte(RAM_hurtInvCount, 127)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- [ game-specific main ] ------------------------------------------------------</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local preventItemPopup = false</code></del></div>
<div class="line"><del><code> -- apply various cheats that work in Level</code></del></div>
<div class="line"><del><code> function smwApplyLevelCheats()</code></del></div>
<div class="line"><del><code>     -- power-ups</code></del></div>
<div class="line"><del><code>     if not smwPause and pad_press[smwPlayer][&quot;up&quot;] and pad_down[smwPlayer][&quot;select&quot;] then</code></del></div>
<div class="line"><del><code>         smwDoPowerUp()</code></del></div>
<div class="line"><del><code>         preventItemPopup = true</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code>     -- moving method</code></del></div>
<div class="line"><del><code>     if not smwPause and pad_press[smwPlayer][&quot;L&quot;] and not pad_press[smwPlayer][&quot;R&quot;] and pad_down[smwPlayer][&quot;A&quot;] then</code></del></div>
<div class="line"><del><code>         smwSetMoveMethod(smwMoveMethod + 1)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code>     smwMoveMethodProc[smwMoveMethod+1]()</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     -- prevent item popup</code></del></div>
<div class="line"><del><code>     if preventItemPopup and not pad_press[smwPlayer][&quot;select&quot;] then</code></del></div>
<div class="line"><del><code>         preventItemPopup = false</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code>     if preventItemPopup then</code></del></div>
<div class="line"><del><code>         DeleteJoypadPresses(smwPlayer, &quot;select&quot;)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     -- cut powerup/powerdown animation</code></del></div>
<div class="line"><del><code>     if smwCutPowerupAnimationOn then</code></del></div>
<div class="line"><del><code>         smwCutPowerupAnimation()</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code>     if smwCutPowerdownAnimationOn then</code></del></div>
<div class="line"><del><code>         smwCutPowerdownAnimation()</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     -- allow escape</code></del></div>
<div class="line"><del><code>     smwAllowEscape()</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- apply various cheats</code></del></div>
<div class="line"><del><code> function smwApplyCheats()</code></del></div>
<div class="line"><del><code>     -- switch info display</code></del></div>
<div class="line"><del><code>     local pressLenLR = math.min(pad_presstime[smwPlayer][&quot;L&quot;], pad_presstime[smwPlayer][&quot;R&quot;])</code></del></div>
<div class="line"><del><code>     if smwShowInfoMoreKeySw and pressLenLR == 30 then</code></del></div>
<div class="line"><del><code>         smwShowInfoMore = not smwShowInfoMore</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     if smwGameMode == gameMode_level then</code></del></div>
<div class="line"><del><code>         smwApplyLevelCheats()</code></del></div>
<div class="line"><del><code>     elseif smwGameMode == gameMode_ow then</code></del></div>
<div class="line"><del><code>         smwMoveMethod = moveMethod_normal</code></del></div>
<div class="line"><del><code>     elseif smwGameMode == 11 then</code></del></div>
<div class="line"><del><code>         smwRewriteOnPauseExit()</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- draw P-meter in the screen</code></del></div>
<div class="line"><del><code> local pMeterMaxCount = 0</code></del></div>
<div class="line"><del><code> function smwDrawPMeter()</code></del></div>
<div class="line"><del><code>     if not (smwGameMode == gameMode_level) then return end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     local pMeter = memory.readbyte(RAM_pMeter)</code></del></div>
<div class="line"><del><code>     local pMeterBarXPos = 8</code></del></div>
<div class="line"><del><code>     local pMeterBarYPos = 208</code></del></div>
<div class="line"><del><code>     local pMeterBarWidth = 112</code></del></div>
<div class="line"><del><code>     local pMeterBarHeight = 6</code></del></div>
<div class="line"><del><code>     local pMeterBarLen</code></del></div>
<div class="line"><del><code>     local pMeterBorderColor = &quot;#ff000000&quot;</code></del></div>
<div class="line"><del><code>     local pMeterMeterColorNormal = &quot;#cc31bdc5&quot;</code></del></div>
<div class="line"><del><code>     local pMeterMeterColorMax = { &quot;#ccff0000&quot;, &quot;#ccff0000&quot;, &quot;#ccffffff&quot; }</code></del></div>
<div class="line"><del><code>     local pMeterMeterColor</code></del></div>
<div class="line"><del><code>     local pMeterBGColor = &quot;#80000000&quot;</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     if pMeter &gt;= pMeter_max or smwMoveMethod == moveMethod_pmeter then</code></del></div>
<div class="line"><del><code>         pMeterMaxCount = (pMeterMaxCount + 1) % 3</code></del></div>
<div class="line"><del><code>         pMeterMeterColor = pMeterMeterColorMax[1+pMeterMaxCount]</code></del></div>
<div class="line"><del><code>         pMeterBarLen = pMeterBarWidth</code></del></div>
<div class="line"><del><code>     else</code></del></div>
<div class="line"><del><code>         pMeterColorPulse = 0</code></del></div>
<div class="line"><del><code>         pMeterMeterColor = pMeterMeterColorNormal</code></del></div>
<div class="line"><del><code>         pMeterBarLen = math.floor((pMeter/1.0)*pMeterBarWidth/pMeter_max)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     gui.drawedgelessbox(pMeterBarXPos, pMeterBarYPos, pMeterBarXPos + pMeterBarWidth, pMeterBarYPos + pMeterBarHeight, &quot;#000000&quot;)</code></del></div>
<div class="line"><del><code>     gui.fillbox(pMeterBarXPos + 1, pMeterBarYPos + 1, pMeterBarXPos + pMeterBarWidth - 1, pMeterBarYPos + pMeterBarHeight - 1, pMeterBGColor)</code></del></div>
<div class="line"><del><code>     if pMeter &gt; 0 then</code></del></div>
<div class="line"><del><code>         gui.fillbox(pMeterBarXPos + 1, pMeterBarYPos + 1, pMeterBarXPos + pMeterBarLen - 1, pMeterBarYPos + pMeterBarHeight - 1, pMeterMeterColor)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- display some useful information</code></del></div>
<div class="line"><del><code> function smwDisplayInfo()</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     smwDrawPMeter()</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     if not smwShowInfoMore then return end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     if smwGameMode == gameMode_level then</code></del></div>
<div class="line"><del><code>         -- show Mario's position</code></del></div>
<div class="line"><del><code>         gui.text(120, 40, string.format(&quot;%4d.%03d,%3d.%03d&quot;,</code></del></div>
<div class="line"><del><code>             memory.readword(RAM_xPos), memory.readbyte(RAM_xSubPos),</code></del></div>
<div class="line"><del><code>             memory.readword(RAM_yPos), memory.readbyte(RAM_ySubPos)))</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> while true do</code></del></div>
<div class="line"><del><code>     -- give me digital TV sets! (joke feature)</code></del></div>
<div class="line"><del><code>     if noDigitalTVSets then</code></del></div>
<div class="line"><del><code>         gui.text(212, 9, string.char(177,197,219,184,222), &quot;#aaffffff&quot;, &quot;#aa666666&quot;)</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>     scanJoypad()</code></del></div>
<div class="line"><del><code>     smwScanStatus()</code></del></div>
<div class="line"><del><code>     smwDisplayInfo()</code></del></div>
<div class="line"><del><code>     if not movie.mode() then</code></del></div>
<div class="line"><del><code>        if smwPlayer &lt;= pad_max then</code></del></div>
<div class="line"><del><code>            smwApplyCheats()</code></del></div>
<div class="line"><del><code>        end</code></del></div>
<div class="line"><del><code>        sendJoypad()</code></del></div>
<div class="line"><del><code>     end</code></del></div>
<div class="line"><del><code>     snes9x.frameadvance()</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code>#endregion</code></del></div>
<div class="line"><add><code>[[smwcheat.lua&gt;http://code.google.com/p/gocha-tas/source/browse/trunk/Scripts/smwcheat.lua]]</code></add></div>
</div>
<div class="block">
99
<div class="line"><del><code>#region(gra3mouse.lua)</code></del></div>
<div class="line"><del><code> --[[</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  Gradius 3 + Mouse Control for Snes9x 1.43-rr r60</code></del></div>
<div class="line"><del><code>  This script looks working good on both (U) and (J) ROM.</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  SHOT/MISSILE   LEFT CLICK</code></del></div>
<div class="line"><del><code>  POWERUP        RIGHT CLICK</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  CAUTION!</code></del></div>
<div class="line"><del><code>  Do NOT change pad settings via OPTION. I don't care them at all.</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code>  gocha -- http://tasvideos.org/forum/r/gocha</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> ]]--</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- SCRIPT OPTION</code></del></div>
<div class="line"><del><code> local shotBehavior = 0 -- 0=auto, 1=leftClick(hold), 2=leftClick(trigger), 3=disable</code></del></div>
<div class="line"><del><code> local allowMouseAlways = true</code></del></div>
<div class="line"><del><code> local renderCursorInGame = false -- for video logging</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> gui.opacity(0.6)</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> --</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> emu = snes9x</code></del></div>
<div class="line"><del><code> if not emu then</code></del></div>
<div class="line"><del><code> 	error(&quot;This script runs under snes9x&quot;)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> -- draw traditional arrow cursor (for video logging) ;)</code></del></div>
<div class="line"><del><code> function gui.drawarrowcursor(x, y, color, outlineColor)</code></del></div>
<div class="line"><del><code> 	if color == nil then color = &quot;white&quot; end</code></del></div>
<div class="line"><del><code> 	if outlineColor == nil then outlineColor = &quot;black&quot; end</code></del></div>
<div class="line"><del><code> 	gui.line(x, y, x, y+16, outlineColor)</code></del></div>
<div class="line"><del><code> 	gui.line(x+1, y+1, x+11, y+11, outlineColor)</code></del></div>
<div class="line"><del><code> 	gui.line(x+1, y+15, x+3, y+13, outlineColor)</code></del></div>
<div class="line"><del><code> 	gui.line(x+7, y+11, x+10, y+11, outlineColor)</code></del></div>
<div class="line"><del><code> 	gui.line(x+4, y+12, x+7, y+19, outlineColor)</code></del></div>
<div class="line"><del><code> 	gui.line(x+7, y+12, x+10, y+19, outlineColor)</code></del></div>
<div class="line"><del><code> 	gui.line(x+8, y+20, x+9, y+20, outlineColor)</code></del></div>
<div class="line"><del><code> 	gui.line(x+1, y+2, x+1, y+14, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+2, y+3, x+2, y+13, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+3, y+4, x+3, y+12, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+4, y+5, x+4, y+11, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+5, y+6, x+5, y+13, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+6, y+7, x+6, y+15, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+7, y+8, x+7, y+10, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+8, y+9, x+8, y+10, color)</code></del></div>
<div class="line"><del><code> 	gui.pixel(x+9, y+10, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+7, y+14, x+7, y+17, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+8, y+16, x+8, y+19, color)</code></del></div>
<div class="line"><del><code> 	gui.line(x+9, y+18, x+9, y+19, color)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code> function gui.drawarrowcursorwithshadow(x, y)</code></del></div>
<div class="line"><del><code> 	gui.drawarrowcursor(x+1, y+1, &quot;#00000080&quot;, &quot;#00000080&quot;)</code></del></div>
<div class="line"><del><code> 	gui.drawarrowcursor(x, y)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> local key, keyprev = {}, {}</code></del></div>
<div class="line"><del><code> local mouse, mouseprev = {}, {}</code></del></div>
<div class="line"><del><code> local gra3State = memory.readbyte(0x7e0070)</code></del></div>
<div class="line"><del><code> local gra3RewriteBehavior = false</code></del></div>
<div class="line"><del><code> local gra3Paused = false</code></del></div>
<div class="line"><del><code> function emuOnBefore()</code></del></div>
<div class="line"><del><code> 	key = input.get()</code></del></div>
<div class="line"><del><code> 	mouse = { x = key.xmouse, y = key.ymouse }</code></del></div>
<div class="line"><del><code> 	key.xmouse, key.ymouse = nil, nil</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> 	if renderCursorInGame then</code></del></div>
<div class="line"><del><code> 		gui.drawarrowcursorwithshadow(mouse.x, mouse.y)</code></del></div>
<div class="line"><del><code> 	end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> 	gra3RewriteBehavior = false</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> 	local padId = (memory.readbyte(0x7e007a) / 2) + 1</code></del></div>
<div class="line"><del><code> 	if padId &lt; 1 or padId &gt; 2 then return end</code></del></div>
<div class="line"><del><code> 	local pad = joypad.get(padId)</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> 	gra3Paused = (memory.readbyte(0x7e0066) ~= 0)</code></del></div>
<div class="line"><del><code> 	gra3State = memory.readbyte(0x7e0070)</code></del></div>
<div class="line"><del><code> 	if gra3State ~= 6 then</code></del></div>
<div class="line"><del><code> 		if allowMouseAlways then</code></del></div>
<div class="line"><del><code> 			if key.leftclick then pad.A, pad.start = 1, 1 end</code></del></div>
<div class="line"><del><code> 			if key.rightclick then pad.select = 1 end</code></del></div>
<div class="line"><del><code> 			joypad.set(padId, pad)</code></del></div>
<div class="line"><del><code> 		end</code></del></div>
<div class="line"><del><code> 		return</code></del></div>
<div class="line"><del><code> 	end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> 	gra3RewriteBehavior = true</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> 	local x, y = mouse.x, mouse.y</code></del></div>
<div class="line"><del><code> 	if not gra3Paused then</code></del></div>
<div class="line"><del><code> 		pad.B = nil</code></del></div>
<div class="line"><del><code> 		if shotBehavior == 3 then</code></del></div>
<div class="line"><del><code> 			-- disable shooting</code></del></div>
<div class="line"><del><code> 		elseif shotBehavior == 1 then</code></del></div>
<div class="line"><del><code> 			if key.leftclick then pad.B = 1 end</code></del></div>
<div class="line"><del><code> 		elseif shotBehavior == 2 then</code></del></div>
<div class="line"><del><code> 			if key.leftclick and not keyprev.leftclick then pad.B = 1 end</code></del></div>
<div class="line"><del><code> 		else</code></del></div>
<div class="line"><del><code> 			pad.B = 1</code></del></div>
<div class="line"><del><code> 			if key.leftclick then pad.B = nil end</code></del></div>
<div class="line"><del><code> 		end</code></del></div>
<div class="line"><del><code> 		if key.rightclick and not keyprev.rightclick then</code></del></div>
<div class="line"><del><code> 			pad.A = 1</code></del></div>
<div class="line"><del><code> 		else</code></del></div>
<div class="line"><del><code> 			pad.A = nil</code></del></div>
<div class="line"><del><code> 		end</code></del></div>
<div class="line"><del><code> 		pad.left = 1 -- hold something to move options</code></del></div>
<div class="line"><del><code> 		joypad.set(padId, pad)</code></del></div>
<div class="line"><del><code> 	end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> 	if y &gt;= 224 then y = 255 - 16 end</code></del></div>
<div class="line"><del><code> 	memory.writebyte(0x7e020a, x)</code></del></div>
<div class="line"><del><code> 	memory.writebyte(0x7e020e, y + 16)</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code> function emuOnAfter()</code></del></div>
<div class="line"><del><code> 	keyprev = key</code></del></div>
<div class="line"><del><code> 	mouseprev = mouse</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code></code></del></div>
<div class="line"><del><code> emu.registerbefore(emuOnBefore)</code></del></div>
<div class="line"><del><code> emu.registerafter(emuOnAfter)</code></del></div>
<div class="line"><del><code> while true do</code></del></div>
<div class="line"><del><code> 	emu.frameadvance()</code></del></div>
<div class="line"><del><code> end</code></del></div>
<div class="line"><del><code>#endregion</code></del></div>
<div class="line"><add><code>[[gra3mouse.lua&gt;http://code.google.com/p/gocha-tas/source/browse/trunk/Scripts/gra3mouse.lua]]</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/discussion/FormatRule.html</link>
<title>discussion/FormatRule</title>
<pubDate>Wed, 30 Sep 2009 22:13:26 +0900</pubDate>
<description>-#comment
</description>
<content:encoded><![CDATA[<div class="block">
1
<div class="line"><del><code>#comment</code></del></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/gocha.html</link>
<title>gocha</title>
<pubDate>Sat, 26 Sep 2009 00:19:16 +0900</pubDate>
<description>-&amp;tag();
+&amp;tag(個人ページ);
</description>
<content:encoded><![CDATA[<div class="block">
212
<div class="line"><del><code>&amp;tag();</code></del></div>
<div class="line"><add><code>&amp;tag(個人ページ);</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/WhyAndHow.html</link>
<title>WhyAndHow</title>
<pubDate>Sat, 26 Sep 2009 00:16:29 +0900</pubDate>
<description>-&amp;tag();
+&amp;tag(TAS教材);
</description>
<content:encoded><![CDATA[<div class="block">
115
<div class="line"><del><code>&amp;tag();</code></del></div>
<div class="line"><add><code>&amp;tag(TAS教材);</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/HachiemonTricks.html</link>
<title>HachiemonTricks</title>
<pubDate>Sat, 26 Sep 2009 00:12:08 +0900</pubDate>
<description>-&amp;tag();
+&amp;tag(GBA,ハチエモン,ゲーム資料,スタブ);
</description>
<content:encoded><![CDATA[<div class="block">
54
<div class="line"><del><code>&amp;tag();</code></del></div>
<div class="line"><add><code>&amp;tag(GBA,ハチエモン,ゲーム資料,スタブ);</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/GanbareGoemonKirakiraDouchuuTricks.html</link>
<title>GanbareGoemonKirakiraDouchuuTricks</title>
<pubDate>Sat, 26 Sep 2009 00:09:18 +0900</pubDate>
<description>-&amp;tag();
+&amp;tag(SNES,がんばれゴエモン,ゲーム資料);
</description>
<content:encoded><![CDATA[<div class="block">
74
<div class="line"><del><code>&amp;tag();</code></del></div>
<div class="line"><add><code>&amp;tag(SNES,がんばれゴエモン,ゲーム資料);</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/GanbareGoemon3Tricks.html</link>
<title>GanbareGoemon3Tricks</title>
<pubDate>Sat, 26 Sep 2009 00:05:16 +0900</pubDate>
<description>-&amp;tag();
+&amp;tag(SNES,がんばれゴエモン,ゲーム資料);
</description>
<content:encoded><![CDATA[<div class="block">
498
<div class="line"><del><code>&amp;tag();</code></del></div>
<div class="line"><add><code>&amp;tag(SNES,がんばれゴエモン,ゲーム資料);</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/DensetsuNoStafyTricks.html</link>
<title>DensetsuNoStafyTricks</title>
<pubDate>Sat, 26 Sep 2009 00:01:39 +0900</pubDate>
<description>-&amp;tag();
+&amp;tag(GBA,伝説のスタフィー,ゲーム資料);
</description>
<content:encoded><![CDATA[<div class="block">
18
<div class="line"><del><code>&amp;tag();</code></del></div>
<div class="line"><add><code>&amp;tag(GBA,伝説のスタフィー,ゲーム資料);</code></add></div>
</div>
]]></content:encoded>
</item>
<item>
<link>http://gocha.s1.zmx.jp/tas/SNESGanbareGoemon2Tricks.html</link>
<title>SNESGanbareGoemon2Tricks</title>
<pubDate>Fri, 25 Sep 2009 23:55:59 +0900</pubDate>
<description>-&amp;tag();
+&amp;tag(SNES,がんばれゴエモン,ゲーム資料);
</description>
<content:encoded><![CDATA[<div class="block">
207
<div class="line"><del><code>&amp;tag();</code></del></div>
<div class="line"><add><code>&amp;tag(SNES,がんばれゴエモン,ゲーム資料);</code></add></div>
</div>
]]></content:encoded>
</item>
</channel>
</rss>