<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7999159521423864317</id><updated>2012-01-30T21:54:01.512-08:00</updated><category term='xml'/><category term='z-ground'/><category term='ray tracing'/><category term='HaXe'/><category term='html5'/><category term='as1'/><category term='Bengine'/><category term='tutorial'/><category term='project announcement'/><category term='Encryption'/><category term='script engine'/><category term='game'/><category term='voxel'/><category term='filter'/><category term='ray-casting'/><category term='asm'/><category term='panorama'/><category term='source'/><category term='nme'/><category term='Snippet'/><category term='Alchemy'/><category term='3D'/><category term='chatbot'/><category term='Stage3D'/><category term='pixel'/><category term='as2'/><category term='terrain'/><category term='Obfuscation'/><category term='snow'/><title type='text'>F.L.A.S.W.F</title><subtitle type='html'>"I program, I dream."

Bruce Jawn's flash blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-8284325196414505656</id><published>2011-09-28T21:46:00.000-07:00</published><updated>2011-09-28T21:47:52.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='chatbot'/><title type='text'>The ChatBot MegaHAL Ported to Flash</title><content type='html'>&lt;embed height="600" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="http://games.mochiads.com/c/g/megahal-flash-chatbot/MegahalFlash.swf" type="application/x-shockwave-flash" width="600"&gt;&lt;/embed&gt;&lt;br /&gt;Also: Have a Talk with MegaHAL on &lt;a href="http://www.kongregate.com/games/Bruce_Jawn/megahal-flash-chatbot-training"&gt;Kongregate&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When I first created &lt;a href="http://bruce-lab.blogspot.com/2008/08/my-chatbot-in-flash.html"&gt;a simple Chatbot&lt;/a&gt;, which just searches answers for user inputs from a predefined XML file, someone pointed me to MegaHAL as an example which can be trained from users' inputs.&lt;br /&gt;MegaHAL is an advanced ChatBot, created by Jason Hutchens in 1998 and won the &lt;a href="http://en.wikipedia.org/wiki/Loebner_Prize"&gt;Loebner Prize&lt;/a&gt; Contest. MegaHAL is based on 4&lt;sup&gt;th&lt;/sup&gt;-order &lt;a href="http://en.wikipedia.org/wiki/Markov_models"&gt;Markov models&lt;/a&gt; to construct the model of language, so it can learn from user's input. Thanks to &lt;a href="http://labs.adobe.com/technologies/alchemy/"&gt;Adobe Alchemy&lt;/a&gt;, porting MegaHAL is almost painless.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;[1 HOW TO PLAY]&lt;/div&gt;Click after the prompt "&amp;gt;" to get focus. Then type what you want to say after the prompt and press Enter key twice to sent your message to the Bot. Now you can get your reply. (The interface is command-like)&lt;br /&gt;[&lt;span style="color: blue;"&gt;Save the brains&lt;/span&gt;]: "right click" =&amp;gt;"#Save brain"&lt;br /&gt;[&lt;span style="color: blue;"&gt;Upload your brains&lt;/span&gt;]: "right click" =&amp;gt;"#Upload brain"=&amp;gt;browse for your save brain, it's a zip file=&amp;gt; type command "#brain user" to change the brain&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;[2 CHANGING PERSONALITIES]&lt;/div&gt;Use MEGAHAL COMMAND “#brain YourBrainName”&lt;br /&gt;{&lt;br /&gt;Available Brains:&lt;br /&gt;#brain aliens(Bishop from Aliens!)&lt;br /&gt;#brain bill(Bill Clinton)&lt;br /&gt;#brain caitsith(Cait Sith from FFVII)&lt;br /&gt;#brain danish(Danish MegaHAL).&lt;br /&gt;#brain dune(Alia from Dune!)&lt;br /&gt;#brain ferris(Mr. Ferris Bueller himself!)&lt;br /&gt;#brain german(German MegaHAL)&lt;br /&gt;#brain manson(MegaMANSON, the Marylin Manson personality)#brain pulp(Marsellus Wallace from Pulp Fiction!)&lt;br /&gt;#brain scream(Randy from Scream!)&lt;br /&gt;#brain startrek(Data from Star Trek)&lt;br /&gt;#brain starwars(Threepio from the Star Wars Trilogy)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I also created a forum for Flash MegaHAL, so you can upload and share your trained brains there:&lt;br /&gt;&lt;a href="http://flaswf.freeforums.org/flash-megahal-f25.html"&gt;http://flaswf.freeforums.org/flash-megahal-f25.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color: red;"&gt;Source Code&lt;/b&gt; of Flash MegaHAL:&lt;br /&gt;In Game-&amp;gt;Right Click-&amp;gt;Download Source Code &lt;br /&gt;&lt;br /&gt;MegaHAL Official Website: &lt;br /&gt;&lt;a href="http://megahal.alioth.debian.org/"&gt;http://megahal.alioth.debian.org/&lt;/a&gt;&lt;u&gt;&lt;a class="external text" href="http://www.blogger.com/blogger.g?blogID=7999159521423864317" rel="nofollow"&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;To know more about one of the best ChatBots MegaHal:&lt;br /&gt;&lt;megahal.alioth.debian.or g=""&gt;&lt;a href="http://en.wikipedia.org/wiki/MegaHAL"&gt;http://en.wikipedia.org/wiki/MegaHAL&lt;/a&gt;&lt;/megahal.alioth.debian.or&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-8284325196414505656?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/8284325196414505656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=8284325196414505656&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/8284325196414505656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/8284325196414505656'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/09/chatbot-megahal-ported-to-flash.html' title='The ChatBot MegaHAL Ported to Flash'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-1188707375448177760</id><published>2011-09-24T21:09:00.000-07:00</published><updated>2011-09-24T21:09:54.364-07:00</updated><title type='text'>Paint Online with Chinese Water Color Brush</title><content type='html'>I once tried to learn &lt;span class="short_text" id="result_box" lang="en"&gt;&lt;span class="hps"&gt;Chinese &lt;a href="http://en.wikipedia.org/wiki/East_Asian_calligraphy"&gt;calligraphy&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Chinese_painting"&gt;painting&lt;/a&gt; when I was in primary school. Unfortunately, I dropped them for lack of gifts.&amp;nbsp; However, I'm still fond of these Chinese styles of art&lt;/span&gt;&lt;/span&gt;. So I have always wanted to create something to simulate the Chinese Brush and Chinese Painting in Flash.&lt;br /&gt;&lt;br /&gt;&lt;embed height="480" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="https://flaswf.googlecode.com/svn/trunk/WaterColorBrush/WaterColorProject.swf" type="application/x-shockwave-flash" width="640"&gt;&lt;/embed&gt;&lt;br /&gt;This is a project I made for &lt;a href="http://app.baidu.com/contest/index"&gt;Baidu's APP contest&lt;/a&gt;. This toy use &lt;a href="http://en.wikipedia.org/wiki/Automata-based_programming"&gt;automata machine&lt;/a&gt; to simulate the dispersion of the ink, which is explained &lt;a href="http://twicetwo.com/pmwiki.php?n=Code.Ink"&gt;here&lt;/a&gt;.&lt;br /&gt;A Chinese version of this toy can be found here: &lt;a href="http://app.baidu.com/widget?appid=138371"&gt;http://app.baidu.com/widget?appid=138371&lt;/a&gt; &lt;br /&gt;You can share your art and suggestions at the &lt;b&gt;Forum&lt;/b&gt; for this toy:&lt;br /&gt;&lt;a href="http://flaswf.freeforums.org/watercolorbrush-f33.html"&gt;http://flaswf.freeforums.org/watercolorbrush-f33.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-1188707375448177760?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/1188707375448177760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=1188707375448177760&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1188707375448177760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1188707375448177760'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/09/paint-online-with-chinese-water-color.html' title='Paint Online with Chinese Water Color Brush'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-9022649523036069694</id><published>2011-09-05T02:07:00.000-07:00</published><updated>2012-01-21T20:33:39.324-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='ray-casting'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Full Source Code of the Game - The Feeder Released!</title><content type='html'>&lt;embed height="480" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="https://bruce-games-collection.googlecode.com/svn/trunk/FLASWF/TheFeeder.swf" type="application/x-shockwave-flash" width="640"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;b&gt;Description:&lt;/b&gt; Risk your life to feed those "lovely" hungry monsters. Feed all monsters in the level to go to next level. Be careful and good luck! It is a Wolfenstein3D like first person "shooting" game.&lt;br /&gt;&lt;b&gt;Objective:&lt;/b&gt; Feed all monsters in the level to go to next level. Enter key to view time, level, life and score.&amp;nbsp; &lt;br /&gt;&lt;b&gt;Instructions:&lt;/b&gt;&lt;br /&gt;&lt;i&gt;W/up:&lt;/i&gt; move forward &lt;br /&gt;&lt;i&gt;S/down:&lt;/i&gt; move back &lt;br /&gt;&lt;i&gt;left arrow key:&lt;/i&gt; turn left &lt;br /&gt;&lt;i&gt;A:&lt;/i&gt; strafe left &lt;br /&gt;&lt;i&gt;right arrow key:&lt;/i&gt; turn right &lt;br /&gt;&lt;i&gt;D:&lt;/i&gt; strafe right &lt;br /&gt;---------- &lt;br /&gt;&lt;i&gt;Space:&lt;/i&gt; shoot &lt;br /&gt;&lt;i&gt;M:&lt;/i&gt; map &lt;br /&gt;&lt;i&gt;Enter:&lt;/i&gt; pause game/view game status &lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Feeder&lt;/b&gt; is the game I made for &lt;a href="http://dm.stanford.edu/flashgames"&gt;Stanford Hackathon 2011 flash game competition&lt;/a&gt;. It is a 2.5D "FPS" game using ray casting technology. Now I release the full source code of the game for you.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: red;"&gt;Source Code:&lt;/b&gt; In Game Menu, Right Click-&amp;gt;Download Source Code.&lt;br /&gt;&lt;br /&gt;Special Thanks to:&lt;br /&gt;&lt;a href="http://code.dawnofthegeeks.com/2009/05/05/c-lesson-37-wolf5k-making-it-better-part-1/"&gt;http://code.dawnofthegeeks.com/2009/05/05/c-lesson-37-wolf5k-making-it-better-part-1/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://minimalcomps.com/"&gt;http://minimalcomps.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.ickydime.com/2011/01/flash-game-competition-stanford-adobe.html"&gt;http://blog.ickydime.com/2011/01/flash-game-competition-stanford-adobe.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-9022649523036069694?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/9022649523036069694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=9022649523036069694&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/9022649523036069694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/9022649523036069694'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/09/full-source-code-of-game-feeder.html' title='Full Source Code of the Game - The Feeder Released!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-308187565154971141</id><published>2011-08-25T21:45:00.000-07:00</published><updated>2011-11-27T07:41:08.096-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='voxel'/><title type='text'>Simple Ray Tracing Voxel Demo</title><content type='html'>&lt;script src="http://wonderfl.net/blogparts/9sY8/js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div class="ttlBpWonderfl" style="font-size: 11px; margin: 0; text-align: right; width: 465px;"&gt;&lt;a href="http://wonderfl.net/c/9sY8" title="Raytracing Voxel"&gt;Raytracing Voxel - wonderfl build flash online&lt;/a&gt;&lt;/div&gt;Just a simple demo using Ray Tracing to render Voxels.&lt;br /&gt;I use a 1D array - &lt;span style="color: blue;"&gt;voxelData[]&lt;/span&gt; to represent voxels/3D points with colors. It's easier for understanding if I use a 3D array, &lt;span style="color: blue;"&gt;voxelData[x][y][z]&lt;/span&gt;, where x, y, z is the position of the voxel in 3D space and the value of the array is color for that voxel. Note that &lt;span style="color: blue;"&gt;voxelData[x][y][z] = voxelData[x&amp;lt;&amp;lt;16|y&amp;lt;&amp;lt;8|z]&lt;/span&gt; if the dimension is set to 256 at max.&lt;br /&gt;&lt;br /&gt;The rendering idea is simple, since we want to fill the screen using colors, for each pixel in the screen, trace a ray, and march the ray in the voxel space, until the ray hit a voxel, then we get the color and write it to the screen. This is the so-called "first-hit" algorithm. &lt;br /&gt;&lt;br /&gt;Ray tracing is slow,&amp;nbsp; a fast way to render voxel is ray casting, such as the algorithm used in &lt;a href="http://bruce-lab.blogspot.com/p/bengine.html"&gt;Bengine&lt;/a&gt;. But using ray tracing, you can easily add some reflection/shadow effect after calculate normal vectors of the voxels.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href="https://flaswf.googlecode.com/svn/trunk/RaytracingVoxel"&gt;https://flaswf.googlecode.com/svn/trunk/RaytracingVoxel&lt;/a&gt;&lt;br /&gt;(similar to the source code of the voxel ray tracing demo in my &lt;a href="http://bruce-lab.blogspot.com/2009/04/ray-tracing-voxel-rendering-in-flash.html"&gt;earlier post&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;==================== &lt;br /&gt;&lt;span style="color: red;"&gt;&amp;nbsp;Update: November, 27, 2011&lt;/span&gt;&lt;br /&gt;====================&lt;br /&gt;&lt;br /&gt;Ray Tracing Voxel Demo using 3D DDA/Bresenham's line algorithm&lt;br /&gt;&lt;br /&gt;&lt;script src="http://wonderfl.net/blogparts/gUA8/js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div class="ttlBpWonderfl" style="font-size: 11px; margin: 0; text-align: right; width: 465px;"&gt;&lt;a href="http://wonderfl.net/c/gUA8" title="Raytracing Voxel Demo with 3D Bresenham's line algorithm"&gt;Raytracing Voxel Demo with 3D Bresenham's line algorithm - wonderfl build flash online&lt;/a&gt;&lt;/div&gt;&lt;b&gt;Source code:&lt;/b&gt; &lt;a href="https://flaswf.googlecode.com/svn/trunk/RaytracingVoxel/3DDDA"&gt;https://flaswf.googlecode.com/svn/trunk/RaytracingVoxel/3DDDA&lt;/a&gt;&lt;br /&gt;More about Bresenham's line algorithm:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm%20"&gt;http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cobrabytes.com/index.php?topic=1150.0"&gt;http://www.cobrabytes.com/index.php?topic=1150.0&lt;/a&gt;&lt;br /&gt;&lt;a href="http://adf.ly/821527/banner/http://www.jonof.id.au/forum/index.php?topic=1338.msg9213;topicseen#msg9213"&gt;http://www.jonof.id.au/forum/index.php?topic=1338.msg9213;topicseen#msg9213&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-308187565154971141?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/308187565154971141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=308187565154971141&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/308187565154971141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/308187565154971141'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/08/simple-ray-tracing-voxel-demo.html' title='Simple Ray Tracing Voxel Demo'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-2349573038110786968</id><published>2011-08-19T00:32:00.000-07:00</published><updated>2011-08-28T02:21:02.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Use vLib.swc to manage flash project resources and protect swf assets</title><content type='html'>vLib - the virtual library project, is a AS3 swc lib to handle your flash project resources, such as bitmaps, swfs, mp3 sounds, texts, xmls and binary files.&lt;br /&gt;It will ease you from importing assets into your .fla's library, writing lots of Embed stuffs for the Flex project, and save your efforts of using lots of &lt;span style="color: blue;"&gt;URLLoader&lt;/span&gt; and &lt;span style="color: blue;"&gt;Loader&lt;/span&gt; codes.&lt;br /&gt;Only need to write a XML file and markup the name and URL address for all flash resources, you can then access them using simple AS3 api provided by vLib.swc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tutorial of using vLib.swc, Step by Step:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1[Prepare the test resources files]: &lt;/b&gt;&lt;br /&gt;Create a folder and put all the resources(such as Binary files, mp3 sounds, swfs, text files, xml files, .JPG and .PNG pictures) into it. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2[Write the description xml]:&lt;/b&gt;&lt;br /&gt;Write a xml file of the resources' names and URLs. &lt;br /&gt;The XML must begin and end with&lt;br /&gt;&lt;pre class="brush:xml"&gt;&lt;lib&gt;&lt;level0&gt;&lt;/level0&gt;&lt;/lib&gt;&lt;/pre&gt;&lt;br /&gt;There're 6 kinds of resources, each kind has a tag, they're:&lt;br /&gt;&lt;pre class="brush:xml"&gt;&lt;text&gt;&lt;/text&gt; for all text files&lt;br /&gt;&lt;texture&gt;&lt;/texture&gt; for all picture files&lt;br /&gt;&lt;swf&gt;&lt;/swf&gt; for all swf files&lt;br /&gt;&lt;sound&gt;&lt;/sound&gt; for all mp3 files&lt;br /&gt;&lt;bin&gt;&lt;/bin&gt; for all binary files&lt;br /&gt;&lt;/pre&gt;All resource files should be written into the corresponding tag of the format&lt;br /&gt;&lt;pre class="brush:xml"&gt;&lt;file_name&gt; &lt;values url="File_URL"&gt; &lt;/values&gt;&lt;/file_name&gt;&lt;br /&gt;&lt;/pre&gt;The details of the description XML's format are showed in the example.&lt;br /&gt;&lt;i style="color: blue;"&gt;Example&lt;/i&gt;["vLib.xml" from &lt;i&gt;vLib\examples\bin\DataFiles&lt;/i&gt;]:&lt;br /&gt;&lt;pre class="brush:xml"&gt;&lt;lib&gt;&lt;br /&gt;&lt;level0&gt;&lt;br /&gt;&lt;br /&gt;&lt;text&gt;&lt;br /&gt;&lt;textfile_0&gt; &lt;values url="DataFiles/texts/Textfile_0.txt"&gt; &lt;/values&gt;&lt;/textfile_0&gt;&lt;br /&gt;&lt;textfile_1&gt; &lt;values url="DataFiles/texts/Textfile_1.txt"&gt; &lt;/values&gt;&lt;/textfile_1&gt;&lt;br /&gt;&lt;/text&gt;&lt;br /&gt;&lt;br /&gt;&lt;xml&gt;&lt;br /&gt;&lt;xmlfile_0&gt; &lt;values url="DataFiles/xmls/Xmlfile_0.xml"&gt; &lt;/values&gt;&lt;/xmlfile_0&gt;&lt;br /&gt;&lt;xmlfile_1&gt; &lt;values url="DataFiles/xmls/Xmlfile_1.xml"&gt; &lt;/values&gt;&lt;/xmlfile_1&gt;&lt;br /&gt;&lt;/xml&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;texture&gt;&lt;br /&gt;&lt;jpgfile&gt; &lt;values url="DataFiles/textures/JPGfile.JPG"&gt; &lt;/values&gt;&lt;/jpgfile&gt;&lt;br /&gt;&lt;pngfile&gt; &lt;values url="DataFiles/textures/PNGfile.PNG"&gt; &lt;/values&gt;&lt;/pngfile&gt;&lt;br /&gt;&lt;/texture&gt;&lt;br /&gt;&lt;br /&gt;&lt;swf&gt;&lt;br /&gt;&lt;enemydead&gt;&lt;values url="DataFiles/swfs/enemydead.swf"&gt;&lt;/values&gt;&lt;/enemydead&gt;&lt;br /&gt;&lt;enemyfire&gt;&lt;values url="DataFiles/swfs/enemyfire.swf"&gt;&lt;/values&gt;&lt;/enemyfire&gt;&lt;br /&gt;&lt;/swf&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;sound&gt;&lt;br /&gt;&lt;s0&gt;&lt;values url="DataFiles/sounds/sound1.mp3"&gt;&lt;/values&gt;&lt;/s0&gt;&lt;br /&gt;&lt;s1&gt;&lt;values url="DataFiles/sounds/sound2.mp3"&gt;&lt;/values&gt;&lt;/s1&gt;&lt;br /&gt;&lt;s2&gt;&lt;values url="DataFiles/sounds/sound3.mp3"&gt;&lt;/values&gt;&lt;/s2&gt;&lt;br /&gt;&lt;/sound&gt;&lt;br /&gt;&lt;br /&gt;&lt;bin&gt;&lt;br /&gt;&lt;binaryfile_0&gt; &lt;values url="DataFiles/bins/Binaryfile_0.bin"&gt; &lt;/values&gt;&lt;/binaryfile_0&gt;&lt;br /&gt;&lt;binaryfile_1&gt; &lt;values url="DataFiles/bins/Binaryfile_1.bin"&gt; &lt;/values&gt;&lt;/binaryfile_1&gt;&lt;br /&gt;&lt;/bin&gt;&lt;br /&gt;&lt;br /&gt;&lt;/level0&gt;&lt;br /&gt;&lt;/lib&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Note:&lt;/span&gt; &lt;/b&gt;Due to formatting issues, the above xmls don't display correctly, all tag names should be &lt;span style="color: red;"&gt;in upper case in the first character&lt;/span&gt;, for details, please see the examples in the &lt;a href="https://flaswf.googlecode.com/svn/trunk/vLib/examples"&gt;svn&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Step 3[Add the vLib.swc to library]: &lt;/b&gt;&lt;br /&gt;Add the "vLib.swc" to your flash/flex project, so you can use it in your AS3 code.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Step 4[Initialize the virtual library]: &lt;/b&gt;&lt;br /&gt;First declare an instance and provide the the description xml file "vLib.xml" to it.&lt;br /&gt;&lt;pre class="brush:as3"&gt;import Lib.*;&lt;br /&gt;var myLib:Lib = new Lib();&lt;br /&gt;myLib.addEventListener(Event.COMPLETE, Libloaded);&lt;br /&gt;myLib.init0("./DataFiles/Lib.xml");&lt;br /&gt;function Libloaded(event:Event):void&lt;br /&gt;{&lt;br /&gt;//All Resources Loaded!&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Step 5[Access resources from the virtual library]: &lt;/b&gt;&lt;br /&gt;As showed in the code, once all resources are loaded, it will triger the callback function "Libloaded", that's the time you can use them.&lt;br /&gt;&lt;pre class="brush:as3"&gt;function Libloaded(event:Event):void&lt;br /&gt;{&lt;br /&gt;//All Resources Loaded!&lt;br /&gt;test();&lt;br /&gt;}&lt;br /&gt;function test():void&lt;br /&gt;{&lt;br /&gt;myLib.load(new DataFiles_Class());&lt;br /&gt;addChild(myLib.getSwf("enemyfire"));&lt;br /&gt;var test = myLib.getSwf("enemydead");&lt;br /&gt;addChild(test);&lt;br /&gt;test.x = 100;&lt;br /&gt;&lt;br /&gt;trace(myLib.getXML("Xmlfile_0"));&lt;br /&gt;trace(myLib.getXML("Xmlfile_1"));&lt;br /&gt;			&lt;br /&gt;trace(myLib.getText("Textfile_0"));&lt;br /&gt;trace(myLib.getText("Textfile_1"));&lt;br /&gt;			&lt;br /&gt;trace(myLib.getBin("Binaryfile_0"));&lt;br /&gt;trace(myLib.getBin("Binaryfile_1").length);&lt;br /&gt;			&lt;br /&gt;addChild(new Bitmap(myLib.getBitmapData("PNGfile")));&lt;br /&gt;}//end of test&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Step 6[Export Data files as compressed binary package]: &lt;/b&gt;&lt;br /&gt;Export all resources as a single compressed binary file and protect your swf assets.&lt;br /&gt;Add this line:&lt;br /&gt;&lt;pre class="brush:as3"&gt;myLib.save("myLib.vLib"); &lt;br /&gt;&lt;/pre&gt;in function "Libloaded".&lt;br /&gt;You will get a binary file named "myLib.vLib" which contains all the resources.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 7[Use the compressed data file package]: &lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:as3"&gt;myLib.addEventListener(Event.COMPLETE, Libloaded);&lt;br /&gt;myLib.init1("./DataFiles/myLib.vLib");&lt;br /&gt;function Libloaded(event:Event):void&lt;br /&gt;{&lt;br /&gt;//All Resources Loaded!&lt;br /&gt;test();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Or &lt;br /&gt;Embed the file "myLib.vLib" as a binary asset:&lt;br /&gt;&lt;pre class="brush:as3"&gt;[Embed(source="../bin/DataFiles/myLib.vLib",mimeType="application/octet-stream")]&lt;br /&gt;private static const DataFiles_Class:Class;&lt;br /&gt;myLib.load(new DataFiles_Class());&lt;br /&gt;test();&lt;br /&gt;&lt;/pre&gt;You can use the data files directly after calling load().&lt;br /&gt;If you Embed all resources using Embed tag or import them into .fla's library, all resources will be compiled into SWF tags. SWF decompilers can read those tags and extract the resources directly.&lt;br /&gt;But in this step, because all resources are encoded into a single binary file, &lt;span style="color: red;"&gt;it's a good way to protect the swf assets&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 8[Export Data files as a .as class]: &lt;/b&gt;&lt;br /&gt;Export .as Class with Embeds:&lt;br /&gt;&lt;pre class="brush:as3"&gt;myLib.XML2AS("./DataFiles/Lib.xml", "myLibT" /*, "myPackageT"*/);&lt;br /&gt;&lt;/pre&gt;You will get a .as file named "myLibT.as" as follows:&lt;br /&gt;&lt;pre class="brush:as3"&gt;package &lt;br /&gt;{&lt;br /&gt;     import flash.display.*;&lt;br /&gt;     import flash.media.*;&lt;br /&gt;     import flash.text.*;&lt;br /&gt;     import flash.utils.*;&lt;br /&gt;//Export from vLib-v0.1 by Bruce Jawn (zhoubu1988@gmail.com)&lt;br /&gt;&lt;br /&gt;     public class myLibT&lt;br /&gt;     {&lt;br /&gt;     [Embed(source="DataFiles/texts/Textfile_0.txt", mimeType="application/octet-stream")]&lt;br /&gt;     private static const Textfile_0:Class;&lt;br /&gt;     [Embed(source="DataFiles/texts/Textfile_1.txt", mimeType="application/octet-stream")]&lt;br /&gt;     private static const Textfile_1:Class;&lt;br /&gt;     [Embed(source="DataFiles/xmls/Xmlfile_0.xml", mimeType="application/octet-stream")]&lt;br /&gt;     private static const Xmlfile_0:Class;&lt;br /&gt;     [Embed(source="DataFiles/xmls/Xmlfile_1.xml", mimeType="application/octet-stream")]&lt;br /&gt;     private static const Xmlfile_1:Class;&lt;br /&gt;     [Embed(source="DataFiles/textures/JPGfile.JPG")]&lt;br /&gt;     private static const JPGfile:Class;&lt;br /&gt;     [Embed(source="DataFiles/textures/PNGfile.PNG")]&lt;br /&gt;     private static const PNGfile:Class;&lt;br /&gt;     [Embed(source="DataFiles/swfs/enemydead.swf")]&lt;br /&gt;     private static const enemydead:Class;&lt;br /&gt;     [Embed(source="DataFiles/swfs/enemyfire.swf")]&lt;br /&gt;     private static const enemyfire:Class;&lt;br /&gt;     [Embed(source="DataFiles/sounds/sound1.mp3")]&lt;br /&gt;     private static const S0:Class;&lt;br /&gt;     [Embed(source="DataFiles/sounds/sound2.mp3")]&lt;br /&gt;     private static const S1:Class;&lt;br /&gt;     [Embed(source="DataFiles/sounds/sound3.mp3")]&lt;br /&gt;     private static const S2:Class;&lt;br /&gt;     [Embed(source="DataFiles/bins/Binaryfile_0.bin", mimeType="application/octet-stream")]&lt;br /&gt;     private static const Binaryfile_0:Class;&lt;br /&gt;     [Embed(source="DataFiles/bins/Binaryfile_1.bin", mimeType="application/octet-stream")]&lt;br /&gt;     private static const Binaryfile_1:Class;&lt;br /&gt;&lt;br /&gt;        private function getClass(name:String):Class&lt;br /&gt;        {&lt;br /&gt;            var ClassReference:Class = getDefinitionByName("myLibT_"+name) as Class;&lt;br /&gt;            return ClassReference;&lt;br /&gt;        }      &lt;br /&gt;&lt;br /&gt;		private function getInstance(name:String):Object&lt;br /&gt;		{&lt;br /&gt;			var ClassReference:Class = getClass(name);&lt;br /&gt;			return new ClassReference();&lt;br /&gt;		}&lt;br /&gt;		public function getBin (name:String) : ByteArray&lt;br /&gt;		{&lt;br /&gt;			return ByteArray(getInstance(name));&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		public function getBitmapData (name:String) : BitmapData&lt;br /&gt;		{&lt;br /&gt;			return Bitmap(getInstance(name)).bitmapData;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;        public function getFont (name:String) : Class&lt;br /&gt;		{&lt;br /&gt;			return getClass(name);&lt;br /&gt;			//return Font(getInstance(name));&lt;br /&gt;			//Font.registerFont(EmbeddedFont); &lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		public function getSound (name:String) : Sound&lt;br /&gt;		{&lt;br /&gt;			return Sound(getInstance(name));&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		public function getSwf (name:String) : Sprite&lt;br /&gt;		{&lt;br /&gt;			return Sprite(getInstance(name));&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		public function getText (name:String) : String&lt;br /&gt;		{&lt;br /&gt;			return String(getInstance(name));&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		public function getXML (name:String) : XML&lt;br /&gt;		{&lt;br /&gt;			return XML(getInstance(name));&lt;br /&gt;		}&lt;br /&gt;	}//end of class	&lt;br /&gt;}//end of package&lt;br /&gt;&lt;/pre&gt;Then you can import this class into your AS3 projects and compile everything into the final single SWF.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Links:&lt;/b&gt;&lt;br /&gt;vLib.swc API references:&lt;br /&gt;&lt;a href="http://code.google.com/p/flaswf/wiki/vLib"&gt;http://code.google.com/p/flaswf/wiki/vLib&lt;/a&gt;&lt;br /&gt;vLib.swc v0.1 download:&lt;br /&gt;&lt;a href="http://flaswf.googlecode.com/svn/trunk/vLib/bin/"&gt;http://flaswf.googlecode.com/svn/trunk/vLib/bin/&lt;/a&gt;&lt;br /&gt;Source code of vLib.swc examples:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/vLib/examples"&gt;https://flaswf.googlecode.com/svn/trunk/vLib/examples&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-2349573038110786968?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/2349573038110786968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=2349573038110786968&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2349573038110786968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2349573038110786968'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/08/use-vlibswc-to-manage-flash-project.html' title='Use vLib.swc to manage flash project resources and protect swf assets'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-4124801176694374778</id><published>2011-07-10T03:29:00.000-07:00</published><updated>2011-07-10T03:34:01.824-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>Porting lib FANN to Flash using Alchemy</title><content type='html'>&lt;b&gt;Test Environment:&lt;/b&gt; &lt;i&gt;&lt;i&gt;OS: Windows XP, &lt;/i&gt;Alchemy: Alchemy Toolkit Preview, Flash SDK: 3.2, Flash Player 10, FANN: 2.1.0, Cygwin, &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Lib FANN(Fast Artificial Neural Network Library) is a free open source  neural network library written in C. In this tutorial I will show you  how to use Adobe Alchemy to port FANN to Flash, step by step.&lt;br /&gt;&lt;br /&gt;1. Download the FANN library: &lt;a href="http://leenissen.dk/fann/wp/download/"&gt;http://leenissen.dk/fann/wp/download/&lt;/a&gt; (&lt;span style="color: #3d85c6;"&gt;fann-2.1.0beta.zip&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;2. Unzip the source code to some folder("&lt;span style="color: #3d85c6;"&gt;F:\alchemy\FANN\fann-2.1.0&lt;/span&gt;")&lt;br /&gt;&lt;br /&gt;3. Run "Cygwin" and do the config for the source code:&lt;br /&gt;&lt;div style="color: blue;"&gt;cd /cygdrive/f/alchemy/FANN/fann-2.1.0&lt;/div&gt;&lt;div style="color: blue;"&gt;./configure&lt;/div&gt;Now you should find the Makefile created in "&lt;span style="color: blue;"&gt;F:\alchemy\FANN\fann-2.1.0\src&lt;span style="color: black;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. First of all, as a simple test, let's compile the source code of FANN to exe:&lt;br /&gt;&lt;span style="color: blue;"&gt;cd src&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt; make&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ar rc libFANNLib.a doublefann.o fixedfann.o floatfann.o&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ranlib libFANNLib.a&lt;/span&gt;&lt;br /&gt;Copy the files "&lt;span style="color: #3d85c6;"&gt;xor.data, xor_train.c, xor_test.c&lt;/span&gt;" from "&lt;span style="color: #3d85c6;"&gt;examples&lt;/span&gt;" folder to "&lt;span style="color: #3d85c6;"&gt;src&lt;/span&gt;" folder.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt; gcc -o xor_train xor_train.c -Iinclude libFANNLib.a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt; gcc -o xor_test xor_test.c -Iinclude libFANNLib.a&lt;/span&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Now you can find the compiled exe "xor_train.exe, xor_test.exe" in the src folder.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;Copy "&lt;span style="color: #3d85c6;"&gt;cygwin1.dll&lt;/span&gt;"&amp;nbsp; and click to run "&lt;span style="color: #3d85c6;"&gt;xor_train.exe&lt;/span&gt;", it&amp;nbsp; will created files "&lt;span style="color: #3d85c6;"&gt;xor_fixed.data, xor_fixed.net, xor_float.net&lt;/span&gt;". Using the cmd to run "&lt;span style="color: #3d85c6;"&gt;xor_test.exe&lt;/span&gt;":&lt;/span&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;Windows Start -&amp;gt; run -&amp;gt; cmd -&amp;gt; cd F:\alchemy\FANN\fann-2.1.0\src&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;F:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;xor_test.exe&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;And you will see the result.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. &lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;Now let compile the lib using alchemy:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;source /cygdrive/f/alchemy/alchemy-setup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;alc-on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;6. A quick test to compile&amp;nbsp; "xor_test.c&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;" to swfs:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;(Since &lt;span style="color: blue;"&gt;ar rc libFANNLib.a doublefann.o fixedfann.o floatfann.o will &lt;span style="color: black;"&gt;throw link errors&lt;/span&gt;&lt;span style="color: #666666;"&gt;&lt;span style="color: black;"&gt;"&lt;/span&gt;$ gcc xor_test.c -Iinclude libFANNLibfx.a libFANNLibfl.a libFANNLibdb.a -swf -O3 -Wall -o xor_test.swf&lt;/span&gt;&lt;br style="color: #666666;" /&gt;&lt;span style="color: #666666;"&gt;llvm-ld: error: Cannot link file 'FANNLibfl.l.bc': Linking globals named 'fann_d&lt;/span&gt;&lt;span style="color: #666666;"&gt;efault_error_log': symbol multiply defined!&lt;span style="color: black;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;,&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;I will do it this way:&lt;/span&gt;) &lt;br /&gt;&lt;span style="color: blue;"&gt;ar rc libFANNLibfx.a fixedfann.o&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ranlib libFANNLibfx.a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;gcc xor_train.c -Iinclude libFANNLibfx.a -swf -O3 -Wall -o xor_train_fx.swf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;gcc xor_test.c -Iinclude libFANNLibfx.a -swf -O3 -Wall -o xor_test_fx.swf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ar rc libFANNLibfl.a floatfann.o&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ranlib libFANNLibfl.a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;gcc xor_train.c -Iinclude libFANNLibfl.a -swf -O3 -Wall -o xor_train_fl.swf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;gcc xor_test.c -Iinclude libFANNLibfl.a -swf -O3 -Wall -o xor_test_fl.swf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;ar rc libFANNLibdb.a doublefann.o&lt;br /&gt;ranlib libFANNLibdb.a&lt;br /&gt;gcc xor_train.c -Iinclude libFANNLibdb.a -swf -O3 -Wall -o xor_train_db.swf&lt;br /&gt;gcc xor_test.c -Iinclude libFANNLibdb.a -swf -O3 -Wall -o xor_test_db.swf&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;br /&gt;&lt;/div&gt;Now make sure the compiled swfs and the files "&lt;span style="color: #3d85c6;"&gt;xor.data, xor_fixed.data, xor_fixed.net, xor_float.net&lt;/span&gt;" are in the same folder.&lt;br /&gt;run the &lt;span style="color: #3d85c6;"&gt;xor_train_fx.swf&lt;/span&gt;, the result:&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: xx-small;"&gt;FANN Error 2: Unable to open configuration file "xor_float.net" for writing.&lt;br /&gt;FANN Error 2: Unable to open configuration file "xor_fixed.net" for writing.&lt;br /&gt;FANN Error 8: Unable to open train data file "xor_fixed.data" for writing.&lt;br /&gt;Creating network.&lt;br /&gt;Training network.&lt;br /&gt;Testing network. 0.000000&lt;br /&gt;XOR test (nan,nan) -&amp;gt; 0.000000, should be nan, difference=nan&lt;br /&gt;XOR test (nan,0.000000) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;XOR test (0.000000,nan) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;XOR test (0.000000,0.000000) -&amp;gt; 0.000000, should be nan, difference=nan&lt;br /&gt;Saving network.&lt;br /&gt;Cleaning up.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;run the &lt;span style="color: #3d85c6;"&gt;xor_test_fx.swf&lt;/span&gt;, the result:&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: xx-small;"&gt;FANN Error 3: Wrong version of configuration file, aborting read of configuration file "xor_float.net".&lt;br /&gt;Creating network.&lt;br /&gt;Error creating ann --- ABORTING.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;run the &lt;span style="color: #3d85c6;"&gt;xor_train_fl.swf&lt;/span&gt;, the result:&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: xx-small;"&gt;FANN Error 2: Unable to open configuration file "xor_float.net" for writing.&lt;br /&gt;FANN Error 2: Unable to open configuration file "xor_fixed.net" for writing.&lt;br /&gt;FANN Error 8: Unable to open train data file "xor_fixed.data" for writing.&lt;br /&gt;Creating network.&lt;br /&gt;Training network.&lt;br /&gt;Max epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1000. Desired error: 0.0000000000.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. Current error: 0.2960163057. Bit fail 4.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10. Current error: 0.0559476353. Bit fail 4.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20. Current error: 0.0005034587. Bit fail 3.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28. Current error: 0.0000435168. Bit fail 0.&lt;br /&gt;Testing network. 0.000031&lt;br /&gt;XOR test (-1.000000,-1.000000) -&amp;gt; -0.995960, should be -1.000000, difference=0.004040&lt;br /&gt;XOR test (-1.000000,1.000000) -&amp;gt; 0.982892, should be 1.000000, difference=0.017108&lt;br /&gt;XOR test (1.000000,-1.000000) -&amp;gt; 0.988707, should be 1.000000, difference=0.011293&lt;br /&gt;XOR test (1.000000,1.000000) -&amp;gt; -0.992229, should be -1.000000, difference=0.007771&lt;br /&gt;Saving network.&lt;br /&gt;Cleaning up.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;run the &lt;span style="color: #3d85c6;"&gt;xor_test_fl.swf&lt;/span&gt;, the result:&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: xx-small;"&gt;Creating network.&lt;br /&gt;Layer / Neuron 0123456&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 1 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 ZZZ....&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 1 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 ZZZ....&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 1 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 6 .......&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 2 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 ...ZZZZ&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 2 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 8 .......&lt;br /&gt;Input layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 2 neurons, 1 bias&lt;br /&gt;&amp;nbsp; Hidden layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 3 neurons, 1 bias&lt;br /&gt;Output layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1 neurons&lt;br /&gt;Total neurons and biases&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 8&lt;br /&gt;Total connections&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 13&lt;br /&gt;Connection rate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.000&lt;br /&gt;Network type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_NETTYPE_LAYER&lt;br /&gt;Training algorithm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_TRAIN_RPROP&lt;br /&gt;Training error function&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_ERRORFUNC_TANH&lt;br /&gt;Training stop function&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_STOPFUNC_BIT&lt;br /&gt;Bit fail limit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.000&lt;br /&gt;Learning rate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.700&lt;br /&gt;Learning momentum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.000&lt;br /&gt;Quickprop decay&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; -0.000100&lt;br /&gt;Quickprop mu&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.750&lt;br /&gt;RPROP increase factor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.200&lt;br /&gt;RPROP decrease factor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.500&lt;br /&gt;RPROP delta min&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.000&lt;br /&gt;RPROP delta max&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 50.000&lt;br /&gt;Cascade output change fraction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.010000&lt;br /&gt;Cascade candidate change fraction&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.010000&lt;br /&gt;Cascade output stagnation epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 12&lt;br /&gt;Cascade candidate stagnation epochs&amp;nbsp; :&amp;nbsp; 12&lt;br /&gt;Cascade max output epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 150&lt;br /&gt;Cascade max candidate epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 150&lt;br /&gt;Cascade weight multiplier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.400&lt;br /&gt;Cascade candidate limit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :1000.000&lt;br /&gt;Cascade activation functions[0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIGMOID&lt;br /&gt;Cascade activation functions[1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIGMOID_SYMMETRIC&lt;br /&gt;Cascade activation functions[2]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_GAUSSIAN&lt;br /&gt;Cascade activation functions[3]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_GAUSSIAN_SYMMETRIC&lt;br /&gt;Cascade activation functions[4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_ELLIOT&lt;br /&gt;Cascade activation functions[5]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_ELLIOT_SYMMETRIC&lt;br /&gt;Cascade activation functions[6]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIN_SYMMETRIC&lt;br /&gt;Cascade activation functions[7]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_COS_SYMMETRIC&lt;br /&gt;Cascade activation functions[8]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIN&lt;br /&gt;Cascade activation functions[9]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_COS&lt;br /&gt;Cascade activation steepnesses[0]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.250&lt;br /&gt;Cascade activation steepnesses[1]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.500&lt;br /&gt;Cascade activation steepnesses[2]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.750&lt;br /&gt;Cascade activation steepnesses[3]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.000&lt;br /&gt;Cascade candidate groups&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;Cascade no. of candidates&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 80&lt;br /&gt;Testing network.&lt;br /&gt;XOR test (-1.000000, -1.000000) -&amp;gt; 0.000000, should be -1.000000, difference=1.000000&lt;br /&gt;XOR test (-1.000000, 1.000000) -&amp;gt; 0.000000, should be 1.000000, difference=1.000000&lt;br /&gt;XOR test (1.000000, -1.000000) -&amp;gt; 0.000000, should be 1.000000, difference=1.000000&lt;br /&gt;XOR test (1.000000, 1.000000) -&amp;gt; 0.000000, should be -1.000000, difference=1.000000&lt;br /&gt;Cleaning up.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;run the &lt;span style="color: #3d85c6;"&gt;xor_train_db.swf&lt;/span&gt;, the result:&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: xx-small;"&gt;FANN Error 2: Unable to open configuration file "xor_float.net" for writing.&lt;br /&gt;FANN Error 2: Unable to open configuration file "xor_fixed.net" for writing.&lt;br /&gt;FANN Error 8: Unable to open train data file "xor_fixed.data" for writing.&lt;br /&gt;Creating network.&lt;br /&gt;Training network.&lt;br /&gt;Max epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1000. Desired error: 0.0000000000.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. Current error: 0.2960163057. Bit fail 4.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10. Current error: 0.0559476353. Bit fail 4.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20. Current error: 0.0005034586. Bit fail 3.&lt;br /&gt;Epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 28. Current error: 0.0000435167. Bit fail 0.&lt;br /&gt;Testing network. 0.000031&lt;br /&gt;XOR test (0.000000,-1.875000) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;XOR test (0.000000,-1.875000) -&amp;gt; 67114963815632994304.000000, should be 0.000000, difference=67114963815632994304.000000&lt;br /&gt;XOR test (0.000000,1.875000) -&amp;gt; 0.000146, should be 0.000000, difference=0.000146&lt;br /&gt;XOR test (0.000000,1.875000) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;Saving network.&lt;br /&gt;Cleaning up.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;run the &lt;span style="color: #3d85c6;"&gt;xor_test_db.swf&lt;/span&gt;, the result:&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;i&gt;Creating network.&lt;br /&gt;Layer / Neuron 0123456&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 1 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 ZZZ....&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 1 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 ZZZ....&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 1 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 ZZZ....&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 1 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 6 .......&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 2 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 ...ZZZZ&lt;br /&gt;L&amp;nbsp;&amp;nbsp; 2 / N&amp;nbsp;&amp;nbsp;&amp;nbsp; 8 .......&lt;br /&gt;Input layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 2 neurons, 1 bias&lt;br /&gt;&amp;nbsp; Hidden layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 3 neurons, 1 bias&lt;br /&gt;Output layer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1 neurons&lt;br /&gt;Total neurons and biases&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 8&lt;br /&gt;Total connections&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 13&lt;br /&gt;Connection rate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.000&lt;br /&gt;Network type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_NETTYPE_LAYER&lt;br /&gt;Training algorithm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_TRAIN_RPROP&lt;br /&gt;Training error function&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_ERRORFUNC_TANH&lt;br /&gt;Training stop function&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_STOPFUNC_BIT&lt;br /&gt;Bit fail limit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.000&lt;br /&gt;Learning rate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.700&lt;br /&gt;Learning momentum&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.000&lt;br /&gt;Quickprop decay&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; -0.000100&lt;br /&gt;Quickprop mu&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.750&lt;br /&gt;RPROP increase factor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.200&lt;br /&gt;RPROP decrease factor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.500&lt;br /&gt;RPROP delta min&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.000&lt;br /&gt;RPROP delta max&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 50.000&lt;br /&gt;Cascade output change fraction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.010000&lt;br /&gt;Cascade candidate change fraction&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.010000&lt;br /&gt;Cascade output stagnation epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 12&lt;br /&gt;Cascade candidate stagnation epochs&amp;nbsp; :&amp;nbsp; 12&lt;br /&gt;Cascade max output epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 150&lt;br /&gt;Cascade max candidate epochs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 150&lt;br /&gt;Cascade weight multiplier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.400&lt;br /&gt;Cascade candidate limit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :1000.000&lt;br /&gt;Cascade activation functions[0]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIGMOID&lt;br /&gt;Cascade activation functions[1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIGMOID_SYMMETRIC&lt;br /&gt;Cascade activation functions[2]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_GAUSSIAN&lt;br /&gt;Cascade activation functions[3]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_GAUSSIAN_SYMMETRIC&lt;br /&gt;Cascade activation functions[4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_ELLIOT&lt;br /&gt;Cascade activation functions[5]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_ELLIOT_SYMMETRIC&lt;br /&gt;Cascade activation functions[6]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIN_SYMMETRIC&lt;br /&gt;Cascade activation functions[7]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_COS_SYMMETRIC&lt;br /&gt;Cascade activation functions[8]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_SIN&lt;br /&gt;Cascade activation functions[9]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; FANN_COS&lt;br /&gt;Cascade activation steepnesses[0]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.250&lt;br /&gt;Cascade activation steepnesses[1]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.500&lt;br /&gt;Cascade activation steepnesses[2]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 0.750&lt;br /&gt;Cascade activation steepnesses[3]&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 1.000&lt;br /&gt;Cascade candidate groups&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;Cascade no. of candidates&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 80&lt;br /&gt;Testing network.&lt;br /&gt;XOR test (0.000000, -1.875000) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;XOR test (0.000000, -1.875000) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;XOR test (0.000000, 1.875000) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;XOR test (0.000000, 1.875000) -&amp;gt; 0.000000, should be 0.000000, difference=0.000000&lt;br /&gt;Cleaning up.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, still buggy, but from the prints we see that the lib works. The errors are partially caused by that it can't find the needed files, and some linking errors, too. A better way to make the port useful is to write some wrapper functions using the &lt;a href="http://labs.adobe.com/wiki/index.php/Alchemy"&gt;Alchemy API&lt;/a&gt; and compile everything to a swc.&lt;br /&gt;&lt;br /&gt;Finally, the Compiled SWFs: &lt;a href="https://flaswf.googlecode.com/svn/trunk/flaswfblog/Tutorials/ALCFANN"&gt;https://flaswf.googlecode.com/svn/trunk/flaswfblog/Tutorials/ALCFANN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-4124801176694374778?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/4124801176694374778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=4124801176694374778&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4124801176694374778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4124801176694374778'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/07/porting-lib-fann-to-flash-using-alchemy.html' title='Porting lib FANN to Flash using Alchemy'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-2737815812623379634</id><published>2011-07-04T04:45:00.000-07:00</published><updated>2011-07-04T04:45:39.052-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='Snippet'/><title type='text'>Flash Bitmap Fonts</title><content type='html'>Ported from Lazy Foo' SDL tutorial: &lt;a href="http://lazyfoo.net/SDL_tutorials/lesson30/index.php"&gt;http://lazyfoo.net/SDL_tutorials/lesson30/index.php&lt;/a&gt;&lt;br /&gt;Bitmap Font by Lazy Foo: &lt;a href="http://lazyfoo.net/"&gt;http://lazyfoo.net&lt;/a&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Source Code&lt;/span&gt;: &lt;a href="http://flaswf.googlecode.com/svn/trunk/BitmapFont/En/"&gt;http://flaswf.googlecode.com/svn/trunk/BitmapFont/En/&lt;/a&gt;&lt;br /&gt;&lt;script src="http://wonderfl.net/blogparts/zONx/js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div class="ttlBpWonderfl" style="font-size: 11px; margin: 0; text-align: right; width: 465px;"&gt;&lt;a href="http://wonderfl.net/c/zONx" title="Bitmap Fonts"&gt;Bitmap Fonts - wonderfl build flash online&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-2737815812623379634?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/2737815812623379634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=2737815812623379634&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2737815812623379634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2737815812623379634'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/07/flash-bitmap-fonts.html' title='Flash Bitmap Fonts'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-2260959365528879343</id><published>2011-07-03T03:55:00.000-07:00</published><updated>2011-11-14T19:20:10.538-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='Snippet'/><title type='text'>Convert 32-Bit Bitmap to 8-Bit</title><content type='html'>Ported from &lt;a href="http://www.codeproject.com/KB/graphics/Image_Bitdepth_Conversion.aspx"&gt;http://www.codeproject.com/KB/graphics/Image_Bitdepth_Conversion.aspx&lt;/a&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Source code:&lt;/span&gt; &lt;a href="http://flaswf.googlecode.com/svn/trunk/Palette%20AS3/"&gt;http://flaswf.googlecode.com/svn/trunk/Palette%20AS3/&lt;/a&gt; &lt;br /&gt;&lt;b&gt;Right Click&lt;/b&gt; to upload a different image!&lt;br /&gt;&lt;script src="http://wonderfl.net/blogparts/dCMl/js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div class="ttlBpWonderfl" style="font-size: 11px; margin: 0; text-align: right; width: 465px;"&gt;&lt;a href="http://wonderfl.net/c/dCMl" title="32-Bit to 8-Bit"&gt;32-Bit to 8-Bit - wonderfl build flash online&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-2260959365528879343?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/2260959365528879343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=2260959365528879343&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2260959365528879343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2260959365528879343'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/07/convert-32-bit-bitmap-to-8-bit.html' title='Convert 32-Bit Bitmap to 8-Bit'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-2348784708875300899</id><published>2011-05-06T22:39:00.000-07:00</published><updated>2011-11-14T19:20:19.629-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='Snippet'/><title type='text'>Simple Fast Bilinear Color Interpolation</title><content type='html'>&lt;script src="http://wonderfl.net/blogparts/hQhJ/js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div class="ttlBpWonderfl" style="font-size: 11px; margin: 0px; text-align: right; width: 465px;"&gt;&lt;a href="http://wonderfl.net/c/hQhJ" title="Simple Fast Bilinear Color Interpolation"&gt;Simple Fast Bilinear Color Interpolation - wonderfl build flash online&lt;/a&gt;&lt;/div&gt;Simple, fast implementation of bilinear color interpolation.&lt;br /&gt;The purpose of this snippet is to fill a rectangle with smooth colors interpolated from the four vertices.&lt;br /&gt;This snippet is ripped from my &lt;a href="http://bruce-lab.blogspot.com/p/bengine.html"&gt;Bengine voxel raycaster&lt;/a&gt;, where it is used to scale a single voxel and fill the gap of screen. Color differences are calculated to avoid multiplies, so there are only adds in the for loop. Certainly, the code can be optimized further, I leave it what it is because it's easier for understanding the algorithm.&lt;br /&gt;If you only want to interpolate one single pixel use its neighbours, like the height interpolation in a terrain raycaster, try to find the implementation in &lt;a href="http://bruce-lab.blogspot.com/2008/10/open-source-as30-voxel-terrain-engine.html"&gt;this code&lt;/a&gt;.&lt;br /&gt;By the way, the simple maths behind the algorithm:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Bilinear_interpolation"&gt;http://en.wikipedia.org/wiki/Bilinear_interpolation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;Source Code:&lt;/div&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Snippets/SimpleFastBilinearColorInterpolation/"&gt;https://flaswf.googlecode.com/svn/trunk/Snippets/SimpleFastBilinearColorInterpolation/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-2348784708875300899?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/2348784708875300899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=2348784708875300899&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2348784708875300899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2348784708875300899'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/05/simple-fast-bilinear-color.html' title='Simple Fast Bilinear Color Interpolation'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-358750356722070468</id><published>2011-03-28T22:58:00.000-07:00</published><updated>2011-09-05T07:03:36.387-07:00</updated><title type='text'>Donating One FDT 4 Pure License Key(expired)</title><content type='html'>&lt;b&gt;&lt;span style="font-size: large;"&gt;Everyone,&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;The license key has been sent to the lucky one. I wish I had more keys to share... Thanks for everyone who sents me emails. For the others,&amp;nbsp;I suggest you to&amp;nbsp;try the open source alternative &lt;/span&gt;&lt;/b&gt;&lt;a href="http://www.gnu.org/software/emacs/"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Emacs&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt; and &lt;/span&gt;&lt;/b&gt;&lt;a href="http://www.flashdevelop.org/"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;FlashDevelop&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;. &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Best Wishes!&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Bruce&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;==========&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As a participant of &lt;a href="http://dm.stanford.edu/flashgames"&gt;Stanford Hackathon 2011 flash game competition&lt;/a&gt;, I got one &lt;span style="color: blue;"&gt;FDT 4 &lt;b&gt;Pure&lt;/b&gt; license key&lt;/span&gt; donated by &lt;a href="http://twitter.com/#%21/BrunoFonzi"&gt;Bruno Fonzi&lt;/a&gt; of &lt;a href="http://www.fdt.powerflasher.com/"&gt;FDT&lt;/a&gt; ($129 value). &lt;br /&gt;&lt;br /&gt;However, I have no plan to use this software since I work along well with &lt;a href="http://www.gnu.org/software/emacs/"&gt;Emacs&lt;/a&gt; and &lt;a href="http://www.flashdevelop.org/"&gt;FlashDevelop&lt;/a&gt;. So I decide to donate this license key for who really needs it.&lt;br /&gt;&lt;br /&gt;Just &lt;b&gt;&lt;span style="color: red;"&gt;sent me a request email&lt;/span&gt;&lt;/b&gt;(you can find my email address in my blog profile) if you are interested in FDT. I will &lt;b&gt;randomly sample&lt;/b&gt; one from those who send me emails and this one will get the license key &lt;b style="color: red;"&gt;for free&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;I will stop accepting request emails after &lt;b&gt;2011 April 15&lt;/b&gt;, so be quick if you need it. Good luck!&lt;br /&gt;&lt;br /&gt;More about FDT 4: (The Eclipse plugin for Flash/ActionScript/MXML)&lt;br /&gt;&lt;a href="http://www.fdt.powerflasher.com/developer-tools/fdt/features/"&gt;http://www.fdt.powerflasher.com/developer-tools/fdt/features/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Update 2011/09/05:&lt;/span&gt; &lt;a href="http://bruce-lab.blogspot.com/2011/09/full-source-code-of-game-feeder.html"&gt;Full source code of my game for Stanford Hackathon 2011 flash game competition released!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-358750356722070468?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/358750356722070468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=358750356722070468&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/358750356722070468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/358750356722070468'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/03/donating-one-fdt-4-pure-license-key.html' title='Donating One FDT 4 Pure License Key(expired)'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-525448199915823437</id><published>2011-03-28T19:49:00.000-07:00</published><updated>2011-11-14T19:20:44.356-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='HaXe'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Stage3D'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>Molehill with HaXe/HxSL</title><content type='html'>&lt;span style="color: red;"&gt;Last update:&lt;/span&gt; &lt;b&gt;Nov. 10, 2011&lt;/b&gt;, Upgraded to Flash Player 11. &lt;br /&gt;Finally I decide to use HaXe, because it grants me what I can't reject-HxSL, the haXe Shader Language, which can let you write your shaders more efficiently.&lt;br /&gt;First, follow the instructions to install HaXe for Flash Player 11:&lt;br /&gt;&lt;a href="http://haxe.org/doc/advanced/flash3d"&gt;http://haxe.org/doc/advanced/flash3d&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now some HaXe codes to get started(forked from the cube example):&lt;br /&gt;&lt;pre class="brush:as3"&gt;/*&lt;br /&gt;  Forked from http://haxe.org/doc/advanced/flash3d: Example 0 - Cube&lt;br /&gt;  Nov. 10, 2011; BY Bruce Jawn&lt;br /&gt;  [http://bruce-lab.blogspot.com]&lt;br /&gt;*/&lt;br /&gt;import format.agal.Tools;&lt;br /&gt;&lt;br /&gt;typedef K = flash.ui.Keyboard;&lt;br /&gt;&lt;br /&gt;class Shader extends format.hxsl.Shader {&lt;br /&gt;&lt;br /&gt;  static var SRC = {&lt;br /&gt;    var input : {&lt;br /&gt;      /*input vertex format: &lt;br /&gt; pos.x:float; pos.y:float; pos.z:float; color.r:float; color.g:float; color.b:float;&lt;br /&gt; should be consistent with the input vertexbuffer*/&lt;br /&gt;    pos : Float3,/*vertex position as input*/&lt;br /&gt;    col : Float3,/*vertex color as input*/&lt;br /&gt;    };&lt;br /&gt;    var color : Float3;/*temp color variable for output*/&lt;br /&gt;    function vertex( mpos : M44, mproj : M44 ) {&lt;br /&gt;      out = pos.xyzw * mpos * mproj;/*set vertex transformation*/&lt;br /&gt;      color = col;/*set temp color as input color*/&lt;br /&gt;    }&lt;br /&gt;    function fragment() {&lt;br /&gt;      out = color.xyzw;/*set output color*/&lt;br /&gt;    }&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Test {&lt;br /&gt;&lt;br /&gt;  var stage : flash.display.Stage;&lt;br /&gt;  var s : flash.display.Stage3D;&lt;br /&gt;  var c : flash.display3D.Context3D;&lt;br /&gt;  var shader : Shader;&lt;br /&gt;  var pol : Polygon;&lt;br /&gt;  var t : Float;&lt;br /&gt;  var keys : Array&lt;bool&gt;;&lt;br /&gt;&lt;br /&gt;  var camera : Camera;&lt;br /&gt;  var vertexbuffer : flash.display3D.VertexBuffer3D;&lt;br /&gt;  var indexbuffer : flash.display3D.IndexBuffer3D;&lt;br /&gt;  function new() {&lt;br /&gt;    t = 0;&lt;br /&gt;    keys = [];&lt;br /&gt;    stage = flash.Lib.current.stage;&lt;br /&gt;    s = stage.stage3Ds[0];&lt;br /&gt;    s.addEventListener( flash.events.Event.CONTEXT3D_CREATE, onReady );&lt;br /&gt;    stage.addEventListener( flash.events.KeyboardEvent.KEY_DOWN, callback(onKey,true) );&lt;br /&gt;    stage.addEventListener( flash.events.KeyboardEvent.KEY_UP, callback(onKey,false) );&lt;br /&gt;    flash.Lib.current.addEventListener(flash.events.Event.ENTER_FRAME, update);&lt;br /&gt;    s.requestContext3D();&lt;br /&gt;&lt;br /&gt;    trace("Click the screen to get Focus!");&lt;br /&gt;    trace("Arrow Keys: Rotation"); &lt;br /&gt;    trace("Z/X: Zoom in/out");   &lt;br /&gt;  }//end of function new&lt;br /&gt;&lt;br /&gt;  function onKey( down, e : flash.events.KeyboardEvent ) {&lt;br /&gt;    keys[e.keyCode] = down;&lt;br /&gt;  }//end of function onKey&lt;br /&gt;&lt;br /&gt;  function onReady( _ ) {&lt;br /&gt;    c = s.context3D;&lt;br /&gt;    c.enableErrorChecking = true;&lt;br /&gt;    c.configureBackBuffer( stage.stageWidth, stage.stageHeight, 0, true );&lt;br /&gt;&lt;br /&gt;    shader = new Shader(c);&lt;br /&gt;    camera = new Camera();&lt;br /&gt;    /*&lt;br /&gt;      Let's draw a plane, which contains 12 triangles:&lt;br /&gt;&lt;br /&gt;      0------1------2------3&lt;br /&gt;      |     /|     /|     /|&lt;br /&gt;      | t0 / | t2 / | t4 / |&lt;br /&gt;      |   /  |   /  |   /  |&lt;br /&gt;      |  /   |  /   |  /   |&lt;br /&gt;      | / t1 | / t3 | / t5 |&lt;br /&gt;      |/     |/     |/     |&lt;br /&gt;      4------5------6------7&lt;br /&gt;      |     /|     /|     /|&lt;br /&gt;      | t6 / | t8 / | t10/ |&lt;br /&gt;      |   /  |   /  |   /  |&lt;br /&gt;      |  /   |  /   |  /   |&lt;br /&gt;      | / t7 | / t9 | / t11|&lt;br /&gt;      |/     |/     |/     |&lt;br /&gt;      8------9-----10-----11&lt;br /&gt;      0-11: vertex index&lt;br /&gt;      t0-t11: triangle index&lt;br /&gt;    */&lt;br /&gt;    vertexbuffer = c.createVertexBuffer(12,6);&lt;br /&gt;&lt;br /&gt;    var myVertexes:flash.Vector&lt;float&gt; = new flash.Vector&lt;float&gt;(0,false);&lt;br /&gt;    for(j in 0...3)&lt;br /&gt;      for(i in 0...4)&lt;br /&gt; {&lt;br /&gt;   //set the vertex's position&lt;br /&gt;   myVertexes.push(i);//vertex.x&lt;br /&gt;   myVertexes.push(j);//vertex.y&lt;br /&gt;   myVertexes.push(0.0);//vertex.z&lt;br /&gt;   //set the vertex's color(random)&lt;br /&gt;   myVertexes.push(Math.random());//color.r&lt;br /&gt;   myVertexes.push(Math.random());//color.g&lt;br /&gt;   myVertexes.push(Math.random());//color.b&lt;br /&gt; }&lt;br /&gt;    vertexbuffer.uploadFromVector(myVertexes,0,12);&lt;br /&gt;    indexbuffer = c.createIndexBuffer(36);&lt;br /&gt;&lt;br /&gt;    var myIndexes:flash.Vector&lt;uint&gt; = new flash.Vector&lt;uint&gt;(0,false);&lt;br /&gt;    for(i in 0...2)&lt;br /&gt;      for(j in 0...3)&lt;br /&gt; {&lt;br /&gt;   //up:t0&lt;br /&gt;   myIndexes.push(i*4+j);//triangle.a:0&lt;br /&gt;   myIndexes.push(i*4+(j+1));//triangle.b:1&lt;br /&gt;   myIndexes.push((i+1)*4+j);//triangle.c:4&lt;br /&gt;   //down:t1&lt;br /&gt;   myIndexes.push((i+1)*4+j);//triangle.a:4&lt;br /&gt;   myIndexes.push(i*4+(j+1));//triangle.b:1&lt;br /&gt;   myIndexes.push((i+1)*4+(j+1));//triangle.c:5&lt;br /&gt; }&lt;br /&gt;    indexbuffer.uploadFromVector(myIndexes,0,36);&lt;br /&gt;&lt;br /&gt;  }//end of function onReady&lt;br /&gt;&lt;br /&gt;  function update(_) {&lt;br /&gt;    if( c == null ) return;&lt;br /&gt;&lt;br /&gt;    t += 0.01;&lt;br /&gt;&lt;br /&gt;    c.clear(0, 0, 0, 1);&lt;br /&gt;    c.setDepthTest( true, flash.display3D.Context3DCompareMode.LESS_EQUAL );&lt;br /&gt;    c.setCulling(flash.display3D.Context3DTriangleFace.BACK);&lt;br /&gt;&lt;br /&gt;    if( keys[K.UP] )&lt;br /&gt;      camera.moveAxis(0,-0.1);&lt;br /&gt;    if( keys[K.DOWN] )&lt;br /&gt;      camera.moveAxis(0,0.1);&lt;br /&gt;    if( keys[K.LEFT] )&lt;br /&gt;      camera.moveAxis(-0.1,0);&lt;br /&gt;    if( keys[K.RIGHT] )&lt;br /&gt;      camera.moveAxis(0.1, 0);&lt;br /&gt;    if( keys[88] )&lt;br /&gt;      camera.zoom /= 1.05;&lt;br /&gt;    if( keys[90] )&lt;br /&gt;      camera.zoom *= 1.05;&lt;br /&gt;    camera.update();&lt;br /&gt;&lt;br /&gt;    var project = camera.m.toMatrix();&lt;br /&gt;    var mpos = new flash.geom.Matrix3D();&lt;br /&gt;    mpos.appendRotation(t * 10, flash.geom.Vector3D.Z_AXIS);&lt;br /&gt;&lt;br /&gt;    shader.init(&lt;br /&gt;  { mpos : mpos, mproj : project },&lt;br /&gt;  {}&lt;br /&gt;  );&lt;br /&gt;    //draw the triangles  &lt;br /&gt;    shader.bind(vertexbuffer);&lt;br /&gt;    c.drawTriangles(indexbuffer,0,-1);&lt;br /&gt;    c.present();&lt;br /&gt;  }//end of function update&lt;br /&gt;&lt;br /&gt;  static function main() {&lt;br /&gt;    haxe.Log.setColor(0xFF0000);&lt;br /&gt;    var inst = new Test();&lt;br /&gt;  }//end of function main&lt;br /&gt;&lt;br /&gt;}//end of class&lt;br /&gt;&lt;/uint&gt;&lt;/uint&gt;&lt;/float&gt;&lt;/float&gt;&lt;/bool&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b style="color: blue;"&gt;Result:&lt;/b&gt;(Flash Player 11 needed!)&lt;br /&gt;&lt;embed align="middle" allowfullscreen="true" allowscriptaccess="sameDomain" base="./" bgcolor="#000000" height="600" menu="false" name="QUACK3 Flash" pluginspage="http://www.adobe.com/go/getflashplayer" quality="low" src="http://flaswf.googlecode.com/svn/trunk/flaswfblog/Tutorials/HaXeMolehillTest/flash11/test.swf" type="application/x-shockwave-flash" width="800" wmode="direct"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;Source Code:&lt;/b&gt;&lt;/div&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/flaswfblog/Tutorials/HaXeMolehillTest/"&gt;https://flaswf.googlecode.com/svn/trunk/flaswfblog/Tutorials/HaXeMolehillTest/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;b&gt;Links:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Announcing HxSL:&lt;br /&gt;&lt;a href="http://ncannasse.fr/blog/announcing_hxsl"&gt;http://ncannasse.fr/blog/announcing_hxsl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using Flash 3D API(&lt;span style="color: red;"&gt;lighting/texture&lt;/span&gt; examples):&lt;br /&gt;&lt;a href="http://haxe.org/doc/advanced/flash3d"&gt;http://haxe.org/doc/advanced/flash3d&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HxSL Documentation:&lt;br /&gt;&lt;a href="http://haxe.org/manual/hxsl"&gt;http://haxe.org/manual/hxsl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Flash 11 API Doc:&lt;br /&gt;&lt;a href="http://www.flash3v.com/doc/flash11/"&gt;http://www.flash3v.com/doc/flash11/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-525448199915823437?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/525448199915823437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=525448199915823437&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/525448199915823437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/525448199915823437'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/03/molehill-with-haxehxsl.html' title='Molehill with HaXe/HxSL'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-7984162457551799067</id><published>2011-03-09T07:30:00.000-08:00</published><updated>2011-12-24T18:27:52.321-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='Stage3D'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>Quake3 has been ported to Flash!</title><content type='html'>&lt;span style="color: red;"&gt;Update(2011/10/12):&lt;/span&gt;&lt;br /&gt;===========================&amp;nbsp;&lt;span style="color: red;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;Updated source code for Flash Player 11: &lt;br /&gt;&lt;a href="http://adf.ly/3ALvI"&gt;https://the-backup-project.googlecode.com/svn/trunk/quake3_flash/&lt;/a&gt;&lt;br /&gt;===========================&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I'm sure this will happen sooner or later, but never expected that it will be so quick.&lt;br /&gt;Quake3 has already been ported to Flash!&lt;br /&gt;This port use alchemy and molehill API and is fully playable.&lt;br /&gt;More details &amp;amp; Play it online:&lt;br /&gt;&lt;a href="http://q3fl.impulse12.com/"&gt;http://q3fl.impulse12.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And I uploaded everything, the&amp;nbsp;compiled swf, source code from the author and quake3 demo data files,&amp;nbsp;in a zip to rayfile, &lt;br /&gt;you can download it here(144MB):&lt;br /&gt;&lt;strike&gt;&lt;a href="http://adf.ly/2XE1N"&gt;http://www.rayfile.com/en/files/ca1ad8fd-4a58-11e0-8ddb-0015c55db73d/&lt;/a&gt;&lt;/strike&gt;&lt;br /&gt;You may need &lt;br /&gt;&lt;span style="color: blue;"&gt;Flash Player Incubator Debugger Standalone Version&lt;/span&gt;(win32/EXE)&lt;br /&gt;&lt;a href="http://code.google.com/p/flaswf/downloads/detail?name=FlashPlayerIncubatorDebugger.exe"&gt;http://code.google.com/p/flaswf/downloads/detail?name=FlashPlayerIncubatorDebugger.exe&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-Ohu6Q9GBgoA/TXedAPlq1EI/AAAAAAAAArA/wYM8Nt8MASs/s1600/quake3_flash.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="377" q6="true" src="https://lh6.googleusercontent.com/-Ohu6Q9GBgoA/TXedAPlq1EI/AAAAAAAAArA/wYM8Nt8MASs/s400/quake3_flash.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-7984162457551799067?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/7984162457551799067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=7984162457551799067&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7984162457551799067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7984162457551799067'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/03/quake3-has-been-ported-to-flash.html' title='Quake3 has been ported to Flash!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-Ohu6Q9GBgoA/TXedAPlq1EI/AAAAAAAAArA/wYM8Nt8MASs/s72-c/quake3_flash.PNG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-2943062576543567256</id><published>2011-02-23T00:50:00.000-08:00</published><updated>2011-11-14T19:22:15.625-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bengine'/><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='project announcement'/><category scheme='http://www.blogger.com/atom/ns#' term='voxel'/><title type='text'>Pixel Bender, Molehill - Updates and Future Plans for Bengine</title><content type='html'>The new low-level Flash 3D API Molehill&amp;nbsp;is&amp;nbsp;about to launch, I don't know what it means for Bengine. For Bengine's&amp;nbsp;voxel rendering, I only need a fast way to push all Screen Buffer to the Screen, though,&amp;nbsp;a fast rendering algorithm is more important. Here I want to share some new demos and plans for Bengine. &lt;br /&gt;&lt;br /&gt;First,&amp;nbsp; &lt;a href="http://www.mochigames.com/game/_v690/"&gt;&lt;b&gt;the game BengineRace&lt;/b&gt;&lt;/a&gt;. I added submit scores function, now you can submit three kind of scores: &lt;span style="color: blue;"&gt;Best Racer&lt;/span&gt; for the time you spent to complete the game, &lt;span style="color: blue;"&gt;High &lt;/span&gt;&lt;span style="color: blue;"&gt;Scores&lt;/span&gt; for the total score you earn and &lt;span style="color: blue;"&gt;Best Destructor&lt;/span&gt;&amp;nbsp;estimate how many voxels you destroy or more specifically, voxels left in total. You must&amp;nbsp;make through&amp;nbsp;the game to submit scores for the first two and you can submit&amp;nbsp;the score of voxels left in total at any time during the play. Press "&lt;span style="color: blue;"&gt;X&lt;/span&gt;" to enter destroyer mode, energy required for destroying walls is limited.&amp;nbsp;After you fell in holes&amp;nbsp;or died, click "&lt;span style="color: blue;"&gt;continue&lt;/span&gt;" to respawn, then voxels destroyed last time will&amp;nbsp;still be contained in&amp;nbsp;your final score.&lt;br /&gt;&lt;br /&gt;Second, I made a&lt;b&gt; 8-bit version of BengineRace&lt;/b&gt; and now have given up that idea. The advantage of 8-bit&amp;nbsp;is that the screen looks "better" in a higher resolution because of fewer colors used, maybe it's more like a solid fill&amp;nbsp;engine. Besides, less memory needed for storing the voxel data&amp;nbsp;when you use a palette. The disadvantage is limited color choice and the trouble to&amp;nbsp;design and make the palette. You can find the early build of the game in 8-bit here:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/8-bit/Bengine-8bit.swf"&gt;https://flaswf.googlecode.com/svn/trunk/Bengine/demo/8-bit/Bengine-8bit.swf&lt;/a&gt;&lt;br /&gt;Some pictures:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/8-bit/Bengine-8bit0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/8-bit/Bengine-8bit0.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/8-bit/Bengine-8bit1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/8-bit/Bengine-8bit1.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Third, my attempt to &lt;b&gt;render Voxelstein3D/Voxlap .vxl maps in Flash&lt;/b&gt;!&lt;br /&gt;Bengine can render those maps in a low res at a slow speed.&lt;br /&gt;Voxlap demo map:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_voxlap_0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_voxlap_0.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_voxlap_1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_voxlap_1.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;demo:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/Bengine_voxlap.swf"&gt;https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/Bengine_voxlap.swf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cave demo map:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_cave_0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_cave_0.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_cave_1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_cave_1.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;demo:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/Bengine_cave.swf"&gt;https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/Bengine_cave.swf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Voxelstein3D map:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_wolf_0.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_wolf_0.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_wolf_1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/B_wolf_1.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;demo:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/Bengine_wolf.swf"&gt;https://flaswf.googlecode.com/svn/trunk/Bengine/demo/vxl/Bengine_wolf.swf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And finally, new plan for Bengine. Bengine will be renamed to &lt;b&gt;PBengine&lt;/b&gt;, which initially means PixelBender+Bengine but now represents for PreBengine(Editors)+PlayBengine(Game Core)+Benigne(Voxel Rendering Core)+PostBengine(PixelBender Post-Processing).&lt;br /&gt;It will be a bigger project. I hope to exploit the advantage of Molehill through PixelBender in the future.&lt;br /&gt;But what can PixelBender do with Bengine?&amp;nbsp;Many many things, I have to say. I will mainly use&amp;nbsp;PixelBender for various Post-Processing effects for Bengine. Here is a simple example showing what it will be like:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/PBengine/demo/water/PBengineWater_buggy.swf"&gt;https://flaswf.googlecode.com/svn/trunk/PBengine/demo/water/PBengineWater_buggy.swf&lt;/a&gt;&lt;br /&gt;Make sure try to interact with the water surface with your mouse.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/PBengine/demo/water/PBengineWater_buggy0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/PBengine/demo/water/PBengineWater_buggy0.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/PBengine/demo/water/PBengineWater_buggy1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" j6="true" src="https://flaswf.googlecode.com/svn/trunk/PBengine/demo/water/PBengineWater_buggy1.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In this demo, I use Bengine for rendering the voxels and PixelBender for the water effect. It is still buggy, the reflection is not correct. And it is terribly slow, only about 10fps in my test. I hope Molehill can make it faster. Optimazions of Post-Processing are needed, but it will be done when Molehill is available.&lt;br /&gt;&lt;br /&gt;But how fast can Bengine be? I don't know. I'm still improving it. The rendering algorithm has been written for several times.&amp;nbsp;In the past, after&amp;nbsp;each written, I always thought may be it can not&amp;nbsp;be faster any more.&amp;nbsp;But I proved I'm wrong. Before I wrote this engine, I never expect a voxel engine like this can run at real time in flash, let alone making a playable game. So no one knows how fast it can be and how fast it will be. I will continue optimizing it. Here is the latest demo testing the rendering speed, with a slightly different rendering algorithm from BengineRace. In my laptop, it can render the same map from Bengine Race at/above 30fps.&lt;br /&gt;The demo:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Bengine/demo/speed-test/BengineSpeedTest.swf"&gt;https://flaswf.googlecode.com/svn/trunk/Bengine/demo/speed-test/BengineSpeedTest.swf&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;PS: Controls for all demos mention above:&lt;br /&gt;==========&lt;br /&gt;W/up: move forward&lt;br /&gt;S/down: move back/recharge speed&lt;br /&gt;A/left: turn left&lt;br /&gt;D/right: turn right&lt;br /&gt;Q: look down&lt;br /&gt;E: look up&lt;br /&gt;----------&lt;br /&gt;Z: max speed(speed*2)&lt;br /&gt;X: max armor(to destroy walls)&lt;br /&gt;C: max power(to fly)&lt;br /&gt;----------&lt;br /&gt;Space: fly&lt;br /&gt;Enter: pause&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-2943062576543567256?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/2943062576543567256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=2943062576543567256&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2943062576543567256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2943062576543567256'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/02/pixel-bender-molehill-updates-and.html' title='Pixel Bender, Molehill - Updates and Future Plans for Bengine'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-6161996184655872057</id><published>2011-01-23T01:43:00.000-08:00</published><updated>2011-11-18T04:27:10.600-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='asm'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>[Adobe Alchemy Hacks] Compile *.as Source Files Assembly to SWF and SWC</title><content type='html'>With alchemy, we can compile AS3 source files assembly, which means we can use some AVM2 inline assembly language in our AS3 source file. Here is the code snippet for using inline asm and accessing memory in AS3:&lt;br /&gt;&lt;pre class="brush:as3"&gt;/*&lt;br /&gt;[Adobe Alchemy Hacks]&lt;br /&gt;AlchemyAD_hack.as&lt;br /&gt;{Simple example for using inline asm and &lt;br /&gt;accessing memory in AS3}&lt;br /&gt;By Bruce Jawn (January/23/2011)&lt;br /&gt;[http://bruce-lab.blogspot.com]&lt;br /&gt;&lt;br /&gt;To compile this source file with Alchemy: &lt;br /&gt;cd /cygdrive/f/alchemy/&lt;br /&gt;java -Xms16M -Xmx196M -jar F:/alchemy/bin/asc.jar -AS3 -strict -import F:/alchemy/flashlibs/global.abc -import F:/alchemy/flashlibs/playerglobal.abc -config Alchemy::Debugger=false -config Alchemy::NoDebugger=true -config Alchemy::Shell=false -config Alchemy::NoShell=true -config Alchemy::LogLevel=0 -config Alchemy::Vector=true -config Alchemy::NoVector=false -config Alchemy::SetjmpAbuse=false -swf AlchemyAD_hack,800,600,60 AlchemyAD_hack.as&lt;br /&gt;*/&lt;br /&gt;package&lt;br /&gt;{    &lt;br /&gt; import flash.display.Sprite;&lt;br /&gt; import flash.text.TextField;&lt;br /&gt; import flash.utils.ByteArray;&lt;br /&gt; import flash.utils.Endian;&lt;br /&gt; import flash.system.ApplicationDomain;&lt;br /&gt; public class AlchemyAD_hack extends Sprite{&lt;br /&gt;&lt;br /&gt;public function AlchemyAD_hack () &lt;br /&gt;{ &lt;br /&gt;  /*Create the print shell*/&lt;br /&gt;  var MyShell:TextField=new TextField();&lt;br /&gt;  MyShell.height=600;&lt;br /&gt;  addChild(MyShell);&lt;br /&gt;  function print(output:*):void&lt;br /&gt;  {&lt;br /&gt;   MyShell.appendText(String(output));&lt;br /&gt;   MyShell.appendText("\n");&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  /*Test Memory Write*/&lt;br /&gt;  //ByteArray for the test&lt;br /&gt;  var testData:ByteArray = new ByteArray();&lt;br /&gt;  testData.endian = Endian.LITTLE_ENDIAN;&lt;br /&gt;  testData.length=0xffff*4;&lt;br /&gt;  //select testdata in memory&lt;br /&gt;  ApplicationDomain.currentDomain.domainMemory=testData;&lt;br /&gt;  var AdrInt:int=0;&lt;br /&gt;  //the test value we will write into testData via memory&lt;br /&gt;  var testValue:int=123;&lt;br /&gt;  //write the testValue into testData&lt;br /&gt;  ApplicationDomain.currentDomain.domainMemory[0] = testValue;&lt;br /&gt;  //Check if testValue has been written into testData&lt;br /&gt;  print(testData[0]);//should print 123&lt;br /&gt;  &lt;br /&gt;  /*Test Memory Read*/&lt;br /&gt;  var readedValue:int=ApplicationDomain.currentDomain.domainMemory[0];&lt;br /&gt;  print(readedValue);//should print 123 &lt;br /&gt;  &lt;br /&gt;  /*Test Inline ASM*/&lt;br /&gt;  //label and jump&lt;br /&gt;  __asm(jump, target('myLable'));&lt;br /&gt;  print("not jumped!");//this line will be skipped&lt;br /&gt;  __asm(label, lbl('myLable'));&lt;br /&gt;  print("jumped!"); &lt;br /&gt;  //switch jump&lt;br /&gt;  var myState:int=1;&lt;br /&gt;  __asm(push(myState), switchjump('state0','state1','state2'));&lt;br /&gt;  __asm(lbl('state0'));&lt;br /&gt;  print("This is state0.");&lt;br /&gt;  __asm(lbl('state1'));&lt;br /&gt;  print("This is state1.");&lt;br /&gt;  __asm(lbl('state2'));&lt;br /&gt;  print("This is state2.");&lt;br /&gt;  //iftrue jump&lt;br /&gt;  var temp:int=1;&lt;br /&gt;  __asm(push(temp!=0), iftrue, target('turejump'));&lt;br /&gt;  print("iftrue not jumped!");//this line will be skipped&lt;br /&gt;  __asm(label, lbl('turejump'));&lt;br /&gt;  print("iftrue jumped!"); &lt;br /&gt;  &lt;br /&gt;  /*Test Alchemy Memory Instructions*/&lt;br /&gt;  //All memory opcodes listed here:&lt;br /&gt;  /*&lt;br /&gt;  Get a 32 bit value at the location addr and return as an int:&lt;br /&gt;  _mr32(addr:int):int{ return __xasm&lt;int&gt;(push(addr), op(0x37)); }&lt;br /&gt;&lt;br /&gt;  Get a 16 bit unsigned value at the location addr and return as an int:. &lt;br /&gt;  _mru16(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x36)); }&lt;br /&gt;&lt;br /&gt;  Get a 16 bit signed value at the location addr and return as an int: &lt;br /&gt;  _mrs16(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x36)); } // li16&lt;br /&gt;&lt;br /&gt;  Get a 8 bit value at the location addr and return as an int:&lt;br /&gt;  _mru8(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x35)); }&lt;br /&gt;  &lt;br /&gt;  Get a 8 bit value at the location addr and return as an int: &lt;br /&gt;  _mrs8(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x35)); }&lt;br /&gt;&lt;br /&gt;  Get a float value at the location addr and return as an Number:&lt;br /&gt;  _mrf(addr:int):Number { return __xasm&lt;int&gt;(push(addr), op(0x38)); }&lt;br /&gt;&lt;br /&gt;  Get a double value at the location addr and return as an Number:&lt;br /&gt;  _mrd(addr:int):Number { return __xasm&lt;int&gt;(push(addr), op(0x39)); }&lt;br /&gt;&lt;br /&gt;  Write an int as a 32 bit value at the location addr: &lt;br /&gt;  _mw32(addr:int, val:int):void { __asm(push(val), push(addr), op(0x3c)); }&lt;br /&gt;&lt;br /&gt;  Write an int as a 16 bit value at the location addr: &lt;br /&gt;  _mw16(addr:int, val:int):void { __asm(push(val), push(addr), op(0x3b)); }&lt;br /&gt;&lt;br /&gt;  Write an int as a 8 bit value at the location addr: &lt;br /&gt;  _mw8(addr:int, val:int):void { __asm(push(val), push(addr), op(0x3a)); }&lt;br /&gt;&lt;br /&gt;  Write a Number as a float at the location addr: &lt;br /&gt;  _mwf(addr:int, val:Number):void { __asm(push(val), push(addr), op(0x3d)); }&lt;br /&gt;&lt;br /&gt;  Write a Number as a double at the location addr:&lt;br /&gt;  _mwd(addr:int, val:Number):void { __asm(push(val), push(addr), op(0x3e)); }&lt;br /&gt;  */&lt;br /&gt;  &lt;br /&gt;  //Write an int 654321 as a 32 bit value at the location 1000&lt;br /&gt;  __asm(push(654321),push(1000),op(0x3c));&lt;br /&gt;  //Trace the memory&lt;br /&gt;  ApplicationDomain.currentDomain.domainMemory.position=1000;&lt;br /&gt;  print(ApplicationDomain.currentDomain.domainMemory.readInt());//should print 654321&lt;br /&gt;  //Get a 32 bit value at the location 1000 and return as an int&lt;br /&gt;  var temp:int=__xasm&lt;int&gt;(push(1000), op(0x37));&lt;br /&gt;  print(temp);//should print 654321&lt;br /&gt;&lt;br /&gt;  /*Test some AVM2 Instructions*/&lt;br /&gt;  //More AVM2 Instructions can be found at:&lt;br /&gt;  //http://www.anotherbigidea.com/javaswf/avm2/AVM2Instructions.html&lt;br /&gt;  &lt;br /&gt;  //test add: 0xA0 &lt;br /&gt;  var var1:int=123;&lt;br /&gt;  var var2:int=321;&lt;br /&gt;  //write (var1+var2)=444 to testData[0] via memory&lt;br /&gt;  //ApplicationDomain.currentDomain.domainMemory.position=AdrInt;&lt;br /&gt;  //ApplicationDomain.currentDomain.domainMemory.writeInt(var1+var2);&lt;br /&gt;  __asm(push(var1), push(var2), op(0xA0), push(AdrInt), op(0x3c));&lt;br /&gt;  testData.position=0;&lt;br /&gt;  print(testData.readInt());//should print 444&lt;br /&gt;  &lt;br /&gt;  //test subtract: 0xA1&lt;br /&gt;  var result:int=__xasm(push(var1), push(var2), op(0xA1));//var result=var1-var2;&lt;br /&gt;  print(result);//should print -198&lt;br /&gt;  //write (var1-var2)=-198 to testData[1] via memory in a different way&lt;br /&gt;  __asm(push(result),push(AdrInt+4),op(0x3c));&lt;br /&gt;  testData.position=4;&lt;br /&gt;  print(testData.readInt());//should print -198&lt;br /&gt;  &lt;br /&gt;}//end of function AlchemyAD_hack&lt;br /&gt;&lt;br /&gt;}//end of class&lt;br /&gt;}//end of pacakge&lt;br /&gt;/*&lt;br /&gt;References:&lt;br /&gt;http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Developing_with_Alchemy:AS3_API&lt;br /&gt;http://unitzeroone.com/blog/2009/05/22/another-scream-on-flash-alchemy-memory-and-compilers/&lt;br /&gt;http://blog.frankula.com/?p=211&lt;br /&gt;http://forums.adobe.com/message/2616985&lt;br /&gt;http://forums.adobe.com/message/3001861&lt;br /&gt;Special thanks to Bernd Paradies (http://forums.adobe.com/people/Bernd%20Paradies)&lt;br /&gt;*/&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/pre&gt;======&lt;br /&gt;&lt;span style="color: red;"&gt;Update: 20, Feb., 2011&lt;/span&gt;&lt;br /&gt;All AVM2 Opcode names for Alchemy can be found here:(ASC source code)&lt;br /&gt;&lt;a href="http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/modules/asc/src/java/macromedia/abc/Opcodes.java"&gt;http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/modules/asc/src/java/macromedia/abc/Opcodes.java&lt;/a&gt;&lt;br /&gt;so for example, the following code&lt;br /&gt;&lt;span style="color: blue;"&gt;var result:int=__xasm(push(var1), push(var2), &lt;b&gt;op(0xA1)&lt;/b&gt;); &lt;/span&gt;&lt;br /&gt;can be also writen as &lt;br /&gt;&lt;span style="color: blue;"&gt;var result:int=__xasm(push(var1), push(var2), &lt;b&gt;subtract&lt;/b&gt;);&lt;/span&gt;&lt;br /&gt;======&lt;br /&gt;&lt;b&gt;The output:&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;123&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;123&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;jumped!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;This is state2.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;iftrue jumped!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;654321&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;654321&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;444&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;-198&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;-198&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And when we compile C/C++ code to swf or swc, we can manuly modify the *.as file generated during the compilation process, for optimization and then use Alchemy asc to compile the modified *.as to swf or swc. By default the temp *.as file will be deleted, to get that file, we can simply copy and paste that file before it deleted during the compilation, or modify the "gcc" file in "alchemy\achacks" folder, remove/commentize the last two lines:&lt;br /&gt;&lt;span style="color: blue;"&gt;# remove junk TODO failure leaves stuff around!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if(!$ENV{ACHACKS_TMPS})&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;{ sys("rm", "-f", &amp;amp;lt;$$.achacks.*&amp;gt;) }&lt;/span&gt;&lt;br /&gt;Now we have the generated *.as files from the compiler, something like "19048.achacks.as".&lt;br /&gt;It's easy to compile the *.as to a swf, use the command in the code snippet above.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;To compile the *.as to swc&lt;/b&gt;, there are several ways.&lt;br /&gt;First way, you can compile the *.as to swf, unzip the swc compiled before and replace the "library.swf" with the new swf. I've tried this but there are some problems I haven't solved.&lt;br /&gt;Second way, modify the gcc file, you can follow this post: &lt;a href="http://blog.frankula.com/?p=211"&gt;http://blog.frankula.com/?p=211&lt;/a&gt;.&lt;br /&gt;Third way, use the makefile from this project:&lt;br /&gt;&lt;a href="http://alchemy-hacks.googlecode.com/svn/trunk/tricks/"&gt;http://alchemy-hacks.googlecode.com/svn/trunk/tricks/&lt;/a&gt;&lt;br /&gt;Fourth way, follow this post &lt;br /&gt;&lt;a href="http://unitzeroone.com/blog/2009/05/22/another-scream-on-flash-alchemy-memory-and-compilers/"&gt;http://unitzeroone.com/blog/2009/05/22/another-scream-on-flash-alchemy-memory-and-compilers/&lt;/a&gt;&lt;br /&gt;Fifth way, mentioned by Bernd Paradies,&amp;nbsp;can be found&amp;nbsp;here: &lt;a href="http://forums.adobe.com/message/3001861"&gt;http://forums.adobe.com/message/3001861&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;Final way, this is what I recommend&lt;/span&gt;&lt;/b&gt;, use the wrapper by Ed McManus.&lt;br /&gt;Ed McManus posted the script here: &lt;a href="http://forums.adobe.com/message/2616985"&gt;http://forums.adobe.com/message/2616985&lt;/a&gt;,&lt;br /&gt;but there are some errors caused by the forum formatting. I fixed the errors,&lt;br /&gt;one obvious error is extra spaces in "nbsp;", another big problem is when you try to use the compiled swc, flashdevelop will throw the error "&lt;span style="color: red;"&gt;Target Matching “[xX][mM][lL]” is Not Allowed&lt;/span&gt;", thanks to this post &lt;a href="http://www.anujgakhar.com/2009/02/17/the-processing-instruction-target-matching-xxmmll-is-not-allowed/"&gt;http://www.anujgakhar.com/2009/02/17/the-processing-instruction-target-matching-xxmmll-is-not-allowed/&lt;/a&gt;, I figure out this problem is caused by the spaces before&lt;br /&gt;catalog.xml's header. I made changes to the script and now it works properly.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;You can download the fixed version(alc-asc) here:&lt;/b&gt; &lt;a href="http://flaswf.googlecode.com/svn/trunk/QuickAlchemy/Hack/SWC/"&gt;http://flaswf.googlecode.com/svn/trunk/QuickAlchemy/Hack/SWC/&lt;/a&gt;&lt;br /&gt;To use it, put it into your "alchemy/achacks" folder, go to cygwin use command&lt;br /&gt;such as "&lt;span style="color: blue;"&gt;alc-asc modifiedAlchemy.as outputLib.swc&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Links:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://forums.adobe.com/message/2616985"&gt;http://forums.adobe.com/message/2616985&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.adobe.com/message/3001861"&gt;http://forums.adobe.com/message/3001861&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.frankula.com/?p=211"&gt;http://blog.frankula.com/?p=211&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.anujgakhar.com/2009/02/17/the-processing-instruction-target-matching-xxmmll-is-not-allowed/"&gt;http://www.anujgakhar.com/2009/02/17/the-processing-instruction-target-matching-xxmmll-is-not-allowed/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://unitzeroone.com/blog/2009/05/22/another-scream-on-flash-alchemy-memory-and-compilers/"&gt;http://unitzeroone.com/blog/2009/05/22/another-scream-on-flash-alchemy-memory-and-compilers/&lt;/a&gt;&lt;br /&gt;And Ed McManus wrote some very good documents on Alchemy -&lt;br /&gt;General Porting Tips:&lt;br /&gt;&lt;a href="https://github.com/emcmanus/flashsnes/blob/master/docs/General_Porting_Tips"&gt;https://github.com/emcmanus/flashsnes/blob/master/docs/General_Porting_Tips&lt;/a&gt;&lt;br /&gt;Alchemy VM Architecture:&lt;br /&gt;&lt;a href="https://github.com/emcmanus/flashsnes/blob/master/docs/Alchemy_VM_Architecture.txt"&gt;https://github.com/emcmanus/flashsnes/blob/master/docs/Alchemy_VM_Architecture.txt&lt;/a&gt;&lt;br /&gt;Performance:&lt;br /&gt;&lt;a href="https://github.com/emcmanus/flashsnes/blob/master/docs/Performance"&gt;https://github.com/emcmanus/flashsnes/blob/master/docs/Performance&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-6161996184655872057?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/6161996184655872057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=6161996184655872057&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/6161996184655872057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/6161996184655872057'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/01/adobe-alchemy-hacks-compile-as-source.html' title='[Adobe Alchemy Hacks] Compile *.as Source Files Assembly to SWF and SWC'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-9037251373209900651</id><published>2011-01-13T06:39:00.000-08:00</published><updated>2012-01-07T01:55:49.419-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='asm'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>Adobe Alchemy Hacks - access memory and use inline asm in C</title><content type='html'>It's not a short time since Alchemy emerged in 2008. &lt;br /&gt;To my disapointment, scarcely any more great C projects ported to Flash after doom and quake.&lt;br /&gt;And there is no updates for this great tool.I like alchemy and use it a lot because it allows you to do flash in C. Alchemy is much more than the new fast memory opcodes, it is a C virtual machine, which wraps the standard C lib for ActionScript. Do flash in C, makes porting C programs easy and also makes your flash program portable. Moreover, the gcc and llvm compilers can optimaize your code a lot. That's why although there are both powerful tools like &lt;a href="http://code.google.com/p/apparat/"&gt;apparat&lt;/a&gt;, &lt;a href="http://www.yogda.com/"&gt;yogda&lt;/a&gt; and handy tools like &lt;a href="http://www.buraks.com/azoth/"&gt;azoth&lt;/a&gt; which let you to use those alchemy memory opcodes in pure AS3, I'm still using alchemy. Actually, if there is no alchemy, I was already a &lt;a href="http://haxe.org/"&gt;Haxer&lt;/a&gt; in 2008.&lt;br /&gt;&lt;br /&gt;The obvious disadvantage to use alchemy is this tool has lots of bugs and it is very hard to debug. As far as I know most bugs are with C++(broken string.h, can't use cin/cout, the class initialization function will never initialize), so don't try to port a C++ program with alchemy now unless you're ready to port the C++ program to C first. What's more, it lacks documentations and developing resources. Although the &lt;a href="http://forums.adobe.com/community/labs/alchemy"&gt;official forum&lt;/a&gt; is a good place to discuss alchemy, it' not easy to find some advanced and detailed things. There is no instructions for inline asm and memory manipulation which many people may be intereted in.&lt;br /&gt;After some search, finally I got some useful things.&lt;br /&gt;So I wrote this little code snippet, hope to help those who want to know more about how to use alchemy. I hope Adobe can give more emphasis on alchemy, update it, remove the bugs, make it stable and make the developing process easier. It is a great thing and should not only be an experimental project, which be played with for some moment, then thrown into some dark corner of the lab and let it decay. I even wish Adobe could make C/C++ an official alternative for ActionScript to develop flash. &lt;br /&gt;&lt;pre class="brush:c"&gt;/*&lt;br /&gt;[Adobe Alchemy Hacks]&lt;br /&gt;AlchemyVM_hack.c&lt;br /&gt;{Simple example for using inline asm and &lt;br /&gt;accessing memory of Alchemy Virtual Machine in C}&lt;br /&gt;By Bruce Jawn (January/14/2011)&lt;br /&gt;[http://bruce-lab.blogspot.com]&lt;br /&gt;&lt;br /&gt;To compile this source file with Alchemy: &lt;br /&gt;cd /cygdrive/f/alchemy/&lt;br /&gt;source /cygdrive/f/alchemy/alchemy-setup&lt;br /&gt;alc-on&lt;br /&gt;gcc AlchemyVM_hack.c -O3 -Wall -swf -o AlchemyVM_hack.swf&lt;br /&gt;*/&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;as3.h&gt;&lt;br /&gt;//get the Alchemy C Virtual Machine memory&lt;br /&gt;//use asm to embed AS3 code&lt;br /&gt;asm("var ALCVM_Memory:ByteArray = gstate.ds;");&lt;br /&gt;int main () &lt;br /&gt;{ &lt;br /&gt;  /*Test Memory Write*/&lt;br /&gt;  //array of int for the test&lt;br /&gt;  int* testData = malloc(0xff * sizeof(int));&lt;br /&gt;  //get the address of testdata in memory&lt;br /&gt;  AS3_Val Adr=AS3_Ptr(testData);&lt;br /&gt;  int AdrInt=AS3_IntValue(Adr);&lt;br /&gt;  //the test value we will write into testData via memory&lt;br /&gt;  int testValue=123;&lt;br /&gt;  //write the testValue into testData&lt;br /&gt;  //gcc AT&amp;amp;T inline assembly used here&lt;br /&gt;  asm("ALCVM_Memory[%0] = %1;" : : "r"(AdrInt), "r"(testValue)); //ALCVM_Memory[AdrInt] = testValue;&lt;br /&gt;  //Check if testValue has been written into testData&lt;br /&gt;  printf("%d\n",testData[0]);//should print 123&lt;br /&gt;  &lt;br /&gt;  /*Test Memory Read*/&lt;br /&gt;  int readedValue;&lt;br /&gt;  asm("%0 ALCVM_Memory[%1];" : "=r"(readedValue) : "r"(AdrInt));&lt;br /&gt;  printf("%d\n",readedValue);//should print 123&lt;br /&gt;  &lt;br /&gt;  /*Test Inline ASM*/&lt;br /&gt;  //label and jump&lt;br /&gt;  asm("__asm(jump, target('myLable'))");&lt;br /&gt;  printf("%s\n","not jumped!");//this line will be skipped&lt;br /&gt;  asm("__asm(label, lbl('myLable'))");&lt;br /&gt;  printf("%s\n","jumped!"); &lt;br /&gt;  //switch jump&lt;br /&gt;  asm("var myState:int=1;");&lt;br /&gt;  asm("__asm(push(myState), switchjump('state0','state1','state2'));");&lt;br /&gt;  asm("__asm(lbl('state0'))");&lt;br /&gt;  printf("%s\n","This is state0.");&lt;br /&gt;  asm("__asm(lbl('state1'))");&lt;br /&gt;  printf("%s\n","This is state1.");&lt;br /&gt;  asm("__asm(lbl('state2'))");&lt;br /&gt;  printf("%s\n","This is state2.");&lt;br /&gt;  //iftrue jump&lt;br /&gt;  asm("var temp:int=1;");&lt;br /&gt;  asm("__asm(push(temp!=0), iftrue, target('turejump'));");&lt;br /&gt;  printf("%s\n","iftrue not jumped!");//this line will be skipped&lt;br /&gt;  asm("__asm(label, lbl('turejump'))");&lt;br /&gt;  printf("%s\n","iftrue jumped!"); &lt;br /&gt;  &lt;br /&gt;  /*Test Alchemy Memory Instructions*/&lt;br /&gt;  //All memory opcodes listed here:&lt;br /&gt;  /*&lt;br /&gt;  Get a 32 bit value at the location addr and return as an int:&lt;br /&gt;  _mr32(addr:int):int{ return __xasm&lt;int&gt;(push(addr), op(0x37)); }&lt;br /&gt;&lt;br /&gt;  Get a 16 bit unsigned value at the location addr and return as an int:. &lt;br /&gt;  _mru16(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x36)); }&lt;br /&gt;&lt;br /&gt;  Get a 16 bit signed value at the location addr and return as an int: &lt;br /&gt;  _mrs16(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x36)); } // li16&lt;br /&gt;&lt;br /&gt;  Get a 8 bit value at the location addr and return as an int:&lt;br /&gt;  _mru8(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x35)); }&lt;br /&gt;  &lt;br /&gt;  Get a 8 bit value at the location addr and return as an int: &lt;br /&gt;  _mrs8(addr:int):int { return __xasm&lt;int&gt;(push(addr), op(0x35)); }&lt;br /&gt;&lt;br /&gt;  Get a float value at the location addr and return as an Number:&lt;br /&gt;  _mrf(addr:int):Number { return __xasm&lt;int&gt;(push(addr), op(0x38)); }&lt;br /&gt;&lt;br /&gt;  Get a double value at the location addr and return as an Number:&lt;br /&gt;  _mrd(addr:int):Number { return __xasm&lt;int&gt;(push(addr), op(0x39)); }&lt;br /&gt;&lt;br /&gt;  Write an int as a 32 bit value at the location addr: &lt;br /&gt;  _mw32(addr:int, val:int):void { __asm(push(val), push(addr), op(0x3c)); }&lt;br /&gt;&lt;br /&gt;  Write an int as a 16 bit value at the location addr: &lt;br /&gt;  _mw16(addr:int, val:int):void { __asm(push(val), push(addr), op(0x3b)); }&lt;br /&gt;&lt;br /&gt;  Write an int as a 8 bit value at the location addr: &lt;br /&gt;  _mw8(addr:int, val:int):void { __asm(push(val), push(addr), op(0x3a)); }&lt;br /&gt;&lt;br /&gt;  Write a Number as a float at the location addr: &lt;br /&gt;  _mwf(addr:int, val:Number):void { __asm(push(val), push(addr), op(0x3d)); }&lt;br /&gt;&lt;br /&gt;  Write a Number as a double at the location addr:&lt;br /&gt;  _mwd(addr:int, val:Number):void { __asm(push(val), push(addr), op(0x3e)); }&lt;br /&gt;  */&lt;br /&gt;&lt;br /&gt;  //Write an int 654321 as a 32 bit value at the location 1000&lt;br /&gt;  asm("__asm(push(654321),push(1000),op(0x3c));");&lt;br /&gt;  //Trace the memory&lt;br /&gt;  asm("ALCVM_Memory.position=1000");&lt;br /&gt;  asm("trace(ALCVM_Memory.readInt());");//should trace 654321 in flashlog.txt&lt;br /&gt;  //Get a 32 bit value at the location 1000 and return as an int&lt;br /&gt;  asm("var temp:int=__xasm&lt;int&gt;(push(1000), op(0x37));");&lt;br /&gt;  asm("trace(temp)");//should trace 654321 in flashlog.txt&lt;br /&gt;&lt;br /&gt;  /*Test some AVM2 Instructions*/&lt;br /&gt;  //More AVM2 Instructions can be found at:&lt;br /&gt;  //http://www.anotherbigidea.com/javaswf/avm2/AVM2Instructions.html&lt;br /&gt;  &lt;br /&gt;  //test add: 0xA0 &lt;br /&gt;  int var1=123;&lt;br /&gt;  int var2=321;&lt;br /&gt;  //write (var1+var2)=444 to testData[0] via memory&lt;br /&gt;  //ALCVM_Memory.position=AdrInt;&lt;br /&gt;  //ALCVM_Memory.writeInt(var1+var2);&lt;br /&gt;  asm("__asm(push(%0), push(%1), op(0xA0), push(%2), op(0x3c))" : : "r"(var1), "r"(var2), "r"(AdrInt));&lt;br /&gt;  printf("%d\n",testData[0]);//should print 444&lt;br /&gt;&lt;br /&gt;  //test subtract: 0xA1  &lt;br /&gt;  asm("var result:int=__xasm(push(%0), push(%1), op(0xA1));" : : "r"(var1), "r"(var2));//var result=var1-var2;&lt;br /&gt;  //write (var1-var2)=-198 to testData[1] via memory in a different way&lt;br /&gt;  asm("__asm(push(result),push(%0),op(0x3c));":: "r"(AdrInt+4));&lt;br /&gt;  printf("%d\n",testData[1]);//should print -198&lt;br /&gt;&lt;br /&gt;  return 0;&lt;br /&gt;} &lt;br /&gt;/*&lt;br /&gt;References:&lt;br /&gt;http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Developing_with_Alchemy:AS3_API&lt;br /&gt;http://blog.frankula.com/?p=211&lt;br /&gt;http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html&lt;br /&gt;http://gcc.gnu.org/onlinedocs/gcc/Simple-Constraints.html&lt;br /&gt;http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html&lt;br /&gt;Special thanks to zazzo9 (http://forums.adobe.com/people/zazzo9)&lt;br /&gt;http://forums.adobe.com/thread/660099&lt;br /&gt;http://forums.adobe.com/message/2101303&lt;br /&gt;http://forums.adobe.com/message/1059161&lt;br /&gt;http://forums.adobe.com/message/1915605&lt;br /&gt;http://forums.adobe.com/message/2101405&lt;br /&gt;http://forums.adobe.com/message/1914780&lt;br /&gt;*/&lt;br /&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/int&gt;&lt;/as3.h&gt;&lt;/stdio.h&gt;&lt;/pre&gt;The compiled swf will display:&lt;br /&gt;&lt;span style="color: blue;"&gt;123&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;123&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;jumped!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;This is state2.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;iftrue jumped!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;444&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;-198&lt;/span&gt;&lt;br /&gt;The &lt;b&gt;flashlog&lt;/b&gt;(C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player\Logs\flashlog.txt)&lt;br /&gt;&lt;span style="color: blue;"&gt;654321&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;654321&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;[object AlchemyExit]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;at global/shellExit()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;at cmodule.AlchemyVM_hack::CSystemLocal/exit()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;at cmodule.AlchemyVM_hack::CRunner/work()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;at &lt;anonymous&gt;()&lt;/anonymous&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;at flash.utils::Timer/_timerDispatch()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;at flash.utils::Timer/tick&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;[Update 2012/Jan/06]&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Alchemy GOODIES: The C and AS3 mixed syntax using ASM.&lt;/b&gt;&lt;br /&gt;It is not a good habit to mix C code with AS3, but this can be handy sometimes:&lt;br /&gt;&lt;pre class="brush:c"&gt;//AS3 values to C&lt;br /&gt;int myINT = 0;&lt;br /&gt;asm("var ASvar1 = 1; var ASvar2 = 2;");//Embed AS3 code in C&lt;br /&gt;asm("%0 ASvar1+ASvar2" : "=r"(myINT) : );//myINT=ASvar1+ASvar2;&lt;br /&gt;AS3_Trace(AS3_String("myINT="));&lt;br /&gt;AS3_Trace(AS3_Int(myINT));//will print 3&lt;br /&gt;&lt;br /&gt;//C values to AS3&lt;br /&gt;int myINT0 = 123456;&lt;br /&gt;asm("var ASvar0:int;");&lt;br /&gt;asm("ASvar0 = %0" :: "r" (myINT0) );&lt;br /&gt;asm("trace('ASvar0=');");&lt;br /&gt;asm("trace(ASvar0);");//will print 123456&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-9037251373209900651?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/9037251373209900651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=9037251373209900651&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/9037251373209900651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/9037251373209900651'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/01/adobe-alchemy-hacks-access-memory-and.html' title='Adobe Alchemy Hacks - access memory and use inline asm in C'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-4131448291474205434</id><published>2011-01-04T19:35:00.000-08:00</published><updated>2011-11-11T01:13:58.667-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='HaXe'/><category scheme='http://www.blogger.com/atom/ns#' term='terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='voxel'/><category scheme='http://www.blogger.com/atom/ns#' term='ray-casting'/><category scheme='http://www.blogger.com/atom/ns#' term='nme'/><title type='text'>Ken Silverman's GROUFST2 Terrain Raycaster Ported to AS3</title><content type='html'>&lt;script src="http://wonderfl.net/blogparts/7d41/js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;div class="ttlBpWonderfl" style="font-size: 11px; margin: 0px; text-align: right; width: 465px;"&gt;&lt;a href="http://wonderfl.net/c/7d41" title="Ken Silverman's GROUFST2 Terrain Raycaster"&gt;Ken Silverman's GROUFST2 Terrain Raycaster - wonderfl build flash online&lt;/a&gt;&lt;/div&gt;Simple nice heightmap terrain raycaster, a good start for your own voxel engine.&lt;br /&gt;Fork it here:&lt;br /&gt;&lt;a href="http://wonderfl.net/c/7d41"&gt;http://wonderfl.net/c/7d41&lt;/a&gt;&lt;br /&gt;or&lt;br /&gt;&lt;a href="http://flaswf.googlecode.com/svn/trunk/GROUFST2/"&gt;http://flaswf.googlecode.com/svn/trunk/GROUFST2/&lt;/a&gt;&lt;br /&gt;==========&lt;br /&gt;&lt;b&gt;Update: &lt;span style="color: red;"&gt;April, 4，2011&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;GROUFST2 Ported to &lt;b style="color: blue;"&gt;HaXe&lt;/b&gt;(Supporting targeting &lt;span style="color: red;"&gt;swf&lt;/span&gt; and &lt;span style="color: red;"&gt;cpp&lt;/span&gt; both):&lt;br /&gt;Source Code: &lt;a href="https://flaswf.googlecode.com/svn/trunk/GROUFST2/Groufst2HXNME"&gt;https://flaswf.googlecode.com/svn/trunk/GROUFST2/Groufst2HXNME&lt;/a&gt;&lt;br /&gt;==========&lt;br /&gt;&lt;b&gt;Update: &lt;span style="color: red;"&gt;11, 11，2011&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Add HTML5 support:&lt;br /&gt;Source Code: &lt;a href="https://flaswf.googlecode.com/svn/trunk/GROUFST2/Groufst2HXNME"&gt;https://flaswf.googlecode.com/svn/trunk/GROUFST2/Groufst2HXNME/Groufst2NME_HTML5/&lt;/a&gt;&lt;br /&gt;DEMO:&amp;nbsp; &lt;a href="https://flaswf.googlecode.com/svn/trunk/GROUFST2/Groufst2HXNME/Groufst2NME_HTML5/Export/html5/bin/index.html"&gt;https://flaswf.googlecode.com/svn/trunk/GROUFST2/Groufst2HXNME/Groufst2NME_HTML5/Export/html5/bin/index.html&lt;/a&gt; (&lt;span style="color: red;"&gt;Very, very slow.&lt;/span&gt;)&lt;br /&gt;==========&lt;br /&gt;&lt;br /&gt;Original source code can be found at Ken's website:&lt;br /&gt;Qbasic: &lt;a href="http://www.advsys.net/ken/voxlap.htm"&gt;http://www.advsys.net/ken/voxlap.htm&lt;/a&gt; (GROUFST2.BAS)&lt;br /&gt;EVALDRAW: &lt;a href="http://www.advsys.net/ken/download.htm"&gt;http://www.advsys.net/ken/download.htm&lt;/a&gt; (evaldraw.zip\demos\groufst2b.kc)&lt;br /&gt;&lt;br /&gt;And&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Happy Coding 2011!&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-4131448291474205434?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/4131448291474205434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=4131448291474205434&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4131448291474205434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4131448291474205434'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2011/01/ken-silvermans-groufst2-terrain.html' title='Ken Silverman&apos;s GROUFST2 Terrain Raycaster Ported to AS3'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-3063427451454503245</id><published>2010-09-26T07:49:00.000-07:00</published><updated>2012-01-21T20:29:07.171-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bengine'/><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='voxel'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Bengine Race – the first game powered by Bengine released!</title><content type='html'>&lt;a href="http://www.blogger.com/"&gt;&lt;/a&gt;&lt;span id="goog_1122893568"&gt;&lt;/span&gt;&lt;span id="goog_1122893569"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="font-family: Tahoma;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;a href="http://www.mochimedia.com/games/_v690/"&gt;Play the game here:&lt;/a&gt;&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;embed height="384" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="https://bruce-games-collection.googlecode.com/svn/trunk/FLASWF/BengineRace.swf" type="application/x-shockwave-flash" width="512"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US" style="color: #333333; font-family: Georgia;"&gt;&lt;span style="color: blue;"&gt;Objective:&lt;/span&gt; Drive to the &lt;/span&gt;&lt;span lang="EN-US" style="font-family: Tahoma;"&gt;destination as quickly as possible, be careful of holes on the ground and avoid crashes into the walls and &lt;span style="color: black;"&gt;road-blocks.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;----------&lt;br /&gt;&lt;span style="color: blue;"&gt;Tips:&lt;/span&gt; You can use three skills when needed.&lt;br /&gt;&lt;br /&gt;Max speed (key Z) can save your time by increasing your speed.&lt;br /&gt;&lt;br /&gt;Max armor (key X) will let you destroy walls and create a short cut to the destination.&lt;br /&gt;&lt;br /&gt;Max power (key C) can enable you to fly over blocks and holes.&lt;br /&gt;&lt;br /&gt;Always remember to switch between these skills and you will find the game easier and more interesting. &lt;br /&gt;&lt;br /&gt;And when the skills are used up, you can&lt;br /&gt;&lt;br /&gt;move back to recharge speed,&lt;br /&gt;&lt;br /&gt;hit the walls to exchange life for power,&lt;br /&gt;&lt;br /&gt;and fly to gain armor.&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;==========&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Controls:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;==========&lt;br /&gt;&lt;br /&gt;&lt;b&gt;W/up:&lt;/b&gt; move forward&lt;br /&gt;&lt;br /&gt;&lt;b&gt;S/down:&lt;/b&gt; move back/recharge speed&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A/left:&lt;/b&gt; turn left&lt;br /&gt;&lt;br /&gt;&lt;b&gt;D/right:&lt;/b&gt; turn right&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:&lt;/b&gt; look down&lt;br /&gt;&lt;br /&gt;&lt;b&gt;E:&lt;/b&gt; look up&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Z:&lt;/b&gt; max speed(speed*2)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;X:&lt;/b&gt; max armor(to destroy walls)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;C:&lt;/b&gt; max power(to fly)&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Space:&lt;/b&gt; fly&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Enter:&lt;/b&gt; pause game&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;Video: &lt;a href="http://www.youtube.com/watch?v=moAD_s8FlRo"&gt;http://www.youtube.com/watch?v=moAD_s8FlRo&lt;/a&gt; &lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VM_xh6rvt_I/TJoCrwCnhxI/AAAAAAAAAmM/x7KkEv5TcKg/BR_1.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="269" px="true" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/TJoCrwCnhxI/AAAAAAAAAmM/x7KkEv5TcKg/BR_1.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VM_xh6rvt_I/TJoCvNthQFI/AAAAAAAAAmc/zRbE08gN3Cw/BR_2.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="269" px="true" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/TJoCvNthQFI/AAAAAAAAAmc/zRbE08gN3Cw/BR_2.PNG" width="320" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_VM_xh6rvt_I/TJoCtF3yJBI/AAAAAAAAAmU/ILHj14MnCOQ/BR_0.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="269" px="true" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/TJoCtF3yJBI/AAAAAAAAAmU/ILHj14MnCOQ/BR_0.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VM_xh6rvt_I/TJoCzRGMf0I/AAAAAAAAAmk/ogboAWc-hHM/BR_3.PNG" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="269" px="true" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/TJoCzRGMf0I/AAAAAAAAAmk/ogboAWc-hHM/BR_3.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;It is an experimental game. A simple “proof of concept” demo. There are many bugs. &lt;br /&gt;I didn’t spend much time on the game design because my time&amp;nbsp;went to the engine.&lt;br /&gt;I think the interesting part is to freely explore the voxel world. Yes, just forget the time meter and the objectives! Try to go to a higher place with the flying skill, or do some destructions using the max armor skill.&lt;br /&gt;&lt;br /&gt;Well, I think I should thank &lt;span style="color: blue;"&gt;&lt;b&gt;&lt;a href="http://www.advsys.net/ken/"&gt;Ken Silverman&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; for his handy tools &lt;b&gt;&lt;a href="http://www.advsys.net/ken/download.htm"&gt;slab6&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://www.advsys.net/ken/download.htm"&gt;poly2vox&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;These tools are useful when I was editing my voxel game map. &lt;br /&gt;And Ken’s &lt;b&gt;&lt;a href="http://www.advsys.net/ken/voxlap.htm"&gt;voxlap&lt;/a&gt;&lt;/b&gt; engine is the inspiration and motivation for me to create Bengine.&lt;br /&gt;Also, thanks to &lt;span style="color: blue;"&gt;&lt;b&gt;&lt;a href="http://www.bit-101.com/"&gt;Bit101&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;, you may realized, the game UI is created by his &lt;span style="color: black;"&gt;&lt;b&gt;&lt;a href="http://www.minimalcomps.com/"&gt;minimalcomps&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; library.&lt;br /&gt;Finally, &lt;span style="color: blue;"&gt;&lt;b&gt;&lt;a href="http://www.flashkit.com/"&gt;flashkit&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; and &lt;span style="color: blue;"&gt;&lt;b&gt;&lt;a href="http://www.drpetter.se/project_sfxr.html"&gt;sfxr&lt;/a&gt; &lt;/b&gt;&lt;/span&gt;for the sound effect and many other free online resources/codes I used for the game!&lt;br /&gt;Next time I will give you more details on the engine and plans for the next game power by Bengine v0.2 – &lt;b&gt;Blaze&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-3063427451454503245?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/3063427451454503245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=3063427451454503245&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/3063427451454503245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/3063427451454503245'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2010/09/bengine-race-first-game-powered-by.html' title='Bengine Race – the first game powered by Bengine released!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VM_xh6rvt_I/TJoCrwCnhxI/AAAAAAAAAmM/x7KkEv5TcKg/s72-c/BR_1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-7760647021311592999</id><published>2010-08-23T01:04:00.001-07:00</published><updated>2012-01-08T20:24:00.615-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='Obfuscation'/><title type='text'>Free SWF Decompilers!</title><content type='html'>&lt;div id="internal-source-marker_0.22259587695590077" style="text-align: justify;"&gt;&lt;span style="color: red;"&gt;UPDATE 2011_8_16&lt;/span&gt;&lt;br /&gt;&lt;a href="http://adf.ly/821527/sites.google.com/site/as3extractor/home"&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;https://sites.google.com/site/as3extractor/home&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;&lt;span style="color: black;"&gt;ActionScript Extractor&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;A free actionscript3 decompiler.&lt;/span&gt;&lt;b&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Ke_Y3Hp7Q5Q/TkpzkqOQ_eI/AAAAAAAAAsc/ZK4-_n_fF1Q/s800/ActionScriptExtractor.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://1.bp.blogspot.com/-Ke_Y3Hp7Q5Q/TkpzkqOQ_eI/AAAAAAAAAsc/ZK4-_n_fF1Q/s400/ActionScriptExtractor.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;================================================&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;UPDATE 2011_6_19&lt;/span&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/asdec/"&gt;http://www.swfwire.com/&lt;/a&gt;&lt;b&gt;&lt;span style="color: red;"&gt;(Highly Recommended!)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="https://github.com/magicalhobo/SWFWire"&gt;https://github.com/magicalhobo/SWFWire&lt;/a&gt;&lt;br /&gt;&lt;h1 style="font-weight: normal;"&gt;&lt;a href="http://1.bp.blogspot.com/-e7M_QskR1Pg/Tf12QFbtnwI/AAAAAAAAAro/LNFrDVhUjyw/swfwire.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-e7M_QskR1Pg/Tf12QFbtnwI/AAAAAAAAAro/LNFrDVhUjyw/swfwire.png" /&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;SWFWire Decompiler&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;&lt;h1 style="font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;An &lt;a href="http://github.com/magicalhobo/SWFWire/tree/master/SWFWireDecompiler/"&gt;open source&lt;/a&gt;     library written in ActionScript 3 for reading and writing swfs.&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;&lt;h1 style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;SWFWire Inspector&lt;/span&gt;&lt;/h1&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.blogger.com/goog_1818843424" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;     &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;      "Easily view the contents of SWF files with this open source AIR app.      You can view images, shapes, and even syntax-highlighted ActionScript 3.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.blogger.com/goog_1818843424" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;      See what parts of your code are taking up the most space.      Make sure sensitive data isn't being exposed.      Gain a deeper understanding of the file format.      You might even be impressed at how efficient Flash is."&lt;/span&gt;&lt;/span&gt;     &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MzoDAP8_uYM/Tf13HXJZbVI/AAAAAAAAArs/SEeh76E3Qz0/s800/swfwire1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/-MzoDAP8_uYM/Tf13HXJZbVI/AAAAAAAAArs/SEeh76E3Qz0/s320/swfwire1.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h1 style="font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MJMPxJa5r0E/Tf13IR9dUJI/AAAAAAAAArw/6_ssLVuUh1M/s800/swfwire0.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://2.bp.blogspot.com/-MJMPxJa5r0E/Tf13IR9dUJI/AAAAAAAAArw/6_ssLVuUh1M/s320/swfwire0.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;================================================&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;UPDATE 2010_2_09&lt;/span&gt;&lt;br /&gt;&lt;a href="http://adf.ly/821527/code.google.com/p/asdec/"&gt;http://code.google.com/p/asdec/&lt;/a&gt;&lt;b&gt;&lt;span style="color: red;"&gt;(Highly Recommended!)&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;asdec&lt;/b&gt;: Open Source&amp;nbsp;ActionScript decompiler written in Java&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"JP ActionScript decompiler (ASDec) is program for decompiling ActionScript parts from flash SWF files. Program has also basic ability to edit (assemble) ActionScript."&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VM_xh6rvt_I/TVIoo7RI9OI/AAAAAAAAAoQ/h7eSvRgCTmA/s1600/ASdecshot8.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="188" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/TVIoo7RI9OI/AAAAAAAAAoQ/h7eSvRgCTmA/s320/ASdecshot8.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Features: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Opening SWF files version 10 or older &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Showing source code of ActionScript1/2 and ActionScript3. (See source limitations) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Exporting sources to file (at the moment only AS3) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Editing source code via modifying assembler source (See editing limitations) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Saving modified actionscript back to the file &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Built-in proxy server for editing SWF files which come through i &lt;/span&gt;&lt;br /&gt;================================================&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;ActionScript Decompiler&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;a href="http://www.showmycode.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.showmycode.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“Decompile flash ActionScript from the swf flash file. Use this online flash swf decompiler to get the source code of the swf file.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="87" src="https://lh6.googleusercontent.com/tMTejTfIIuuqkaoh1XelgRVCIz-AnAVjYNOosHUL9v0vO2U_Fwb7mbgrWjsJIN9auCVSS9vmzyfeRxMhGyKOyUr7jZH032dXMihlVyAhsLJ9TFkb" width="554" /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;HP SWFScan&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;strike&gt;&lt;a href="http://www.hp.com/go/swfscan"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;www.&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;b&gt;&lt;span style="font-size: 130%;"&gt;hp&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;.com/go/swfscan&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/strike&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://h30499.www3.hp.com/t5/Following-the-White-Rabbit-A/SWFScan-FREE-Flash-decompiler/ba-p/5440167"&gt;http://h30499.www3.hp.com/t5/Following-the-White-Rabbit-A/SWFScan-FREE-Flash-decompiler/ba-p/5440167&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“Decompiles applications built on the Adobe Flash platform to extract the ActionScript code and statically analyzes it to identify security issues such as information disclosure.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;ol start="2"&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="390" src="https://lh5.googleusercontent.com/wIW9dZPNvM01SF5i1e2xiS8rKFUQlexhG7Ys2uNyqztjnNv-IQH4Nk3lpMeG52I030a8RA68EcBAoOUVeY3HvssjZsLZTgUxmsz4MuoV-7oUfXLE" width="554" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;b&gt;&lt;span style="font-size: 130%;"&gt;Resource Extractor/Modifier&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;1. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://adf.ly/821527/www.decompileflash.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.decompileflash.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;(&lt;a href="http://www.swfdecompiler.net/"&gt;http://www.swfdecompiler.net&lt;/a&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.decompileflash.com/decompile_flash_free/index.htm"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Decompile Flash Free Version&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; is an outstanding SWF decompiling tool which allows you to convert flash between SWF and FLA format. Decompile Flash offers the powerful function of editing dynamic texts of flash movie and replacing images as your own easily and watch the edited result immediately. The easy-to-use interface helps you catch on to the system quickly.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="385" src="https://lh4.googleusercontent.com/NOOADKfZv6K8z6g_j_i_IYiqWfdld9trn61XlH2c6Z4d_3UvefqmE5-YjZsBExe5wToUYSYZrTI8IYHWxAWU8x_fQdRymTP5DVXS18Kw5N1SSBXq" width="537" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;2.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.swfdecompiler.net/free_swf_decompiler/index.html"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.swfdecompiler.net/free_swf_decompiler/index.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“SWF Decompiler Premium Free Version is a 100% freeware. It allows you to convert between swf and exe format, besides, the powerful function supports edit the dynamic texts and replace images. The player window is innovatively separated from the main panel, which enables users to drag and drop the window wherever they want it to be.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="284" src="https://lh5.googleusercontent.com/Stv0U2uCtV29nA_iy_uk-ZtXa4sc1zCdn1MpoavuLDYuB0_Z-SRQ9Cif1RDRJVrDhlweA9ry2Yc3hxpTN1ZmWC9K17dehz2NJVJWVRhbkeEHuGZR" width="336" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;span style="font-size: 85%;"&gt;3. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.swftools.org/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;SWFDump&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; “Prints out various informations about SWFs, like contained images/fonts/sounds, disassembly of contained code as well as cross-reference and bounding box data.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;SWFExtract&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; “Allows to extract Movieclips, Sounds, Images etc. from SWF files.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;4. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.swfmodify.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.swfmodify.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“swfModify software is useful tool for edit , rebuild flash file, and it's free. It’s different from other edit tools. You need no experience of flash design, all you should do is click mouse button. You can replace virtual item in .swf file, and save as another flash file. In the future, we hope every user can upload your flash resources for the others.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;img height="261" src="https://lh4.googleusercontent.com/i8AzMzLPTZ1x6gdzBgpb7oMwPp1YNzrHu1VycFRmQnAFDLxL0_PlNyFSGppLrjUmnuYSjunEQqx45UFVAq-aluUcgRHMaDI4rVqzRlVxdAGoXE1s" width="333" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;5. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.flashprobe.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.flashprobe.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.flashprobe.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“Flash Probe is a free online tool that can parse flash files and display text and images found within. The tool will create HTML versions of your flash websites. Some use it to see what part of their flash website will get indexed by search engines.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="128" src="https://lh5.googleusercontent.com/WZubB683BMt9JtmN-frAFh0JHyTxbYNBCwgW19oTB_D4DIha7cX2HEufZSQ6l8SKY2OnDaSWI5TSdtys3COpf9C0ZQMxzKJWLsH9malVo2KaYmiD" width="575" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;6. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.swixkit.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.swixkit.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“Easy to use XML-based editor for SWF debugging and updating; Decompiling of SWF into SWiX-format XML; Reassembly of SWiX-format XML into an SWF”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img height="247" src="https://lh4.googleusercontent.com/4j_1zhiA66hZt9sADbZ11fgh-lvUECw7r79QpBw6AAhVHDcCymmBH3xxmc4qJQjhoi-oEZQzmn5ssVNqHgLIA40DI-UnFOlxA4rrJfMJHjsJ_CRJ" width="197" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;7. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;SWF To Image GUI&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://bytescout.com/products/developer/swftoimagesdk/swftoimagegui.html"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://bytescout.com/products/developer/swftoimagesdk/swftoimagegui.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;SWF To Image GUI is a freeware utility to convert flash movies (SWF) into JPEG, GIF, PNG, BMP images”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="376" src="https://lh3.googleusercontent.com/iKcgLAE2Elv5dUVnPbwwWW5ekVzjw3EDL-xtqm8TLt-R-KGT0AGprqClITg3COpALhDeJxHAXQhMFKSRDgZ5nx3qXcj_z2fe_OhbwsjmZSJzqPTo" width="552" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;b&gt;&lt;span style="font-size: 130%;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;b&gt;&lt;span style="font-size: 130%;"&gt;Bytecode Disassembler&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;1. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://eval.hurlant.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://eval.hurlant.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“As3Eval is a library that packages the&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.mozilla.org/projects/tamarin/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; Tamarin&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; ESC compiler to work within a run-of-the-mill flash player. You can also paste the output of&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.onlamp.com/linux/cmd/cmd.csp?path=h/hexdump"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; hexdump -C&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; on a swf to disassemble it within the UI.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="x.2q" style="text-align: left;"&gt;&lt;img src="http://docs.google.com/File?id=dcv48gdn_58cxwp88fz_b" style="height: 365px; width: 553px;" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;2. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #28313a;"&gt;&lt;span style="font-size: 100%;"&gt;Nemo 440&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.docsultant.com/nemo440/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 100%;"&gt;www.docsultant.com/nemo440/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #28313a;"&gt;&lt;span style="font-size: 100%;"&gt;Advanced ActionScript 3/ABC2/Flex 2/Flex 3/Flex 4/AIR disassembler&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="458" src="https://lh6.googleusercontent.com/oUmWNXV0F-_G1lpGoIwvRufLhEBTMccnDCBBwftZi5sAl-w0eAYfbc-d9w-bj67v3EBKDP00E5IFQHI3QC-u6YzOgAIqWONuJrEbqOwJif7LTzd6" width="553" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;3. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://segfaultlabs.com/swfutils"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://segfaultlabs.com/swfutils&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://segfaultlabs.com/swf/abcflex/index.html"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://segfaultlabs.com/swf/abcflex/index.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img height="423" src="https://lh5.googleusercontent.com/qU04zo9H3MIGQHI_f_ctpGBO7gweGZbepGtcC2fbUXbjwm-iqrimTVo-YoQ2Yi6FV7gJYGBYGEfO74vxdLkBLjoRJZ73KW1FYs0My3dVmghReaNH" width="549" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;span style="font-size: 85%;"&gt;4. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://code.google.com/p/apparat/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;table class="zeroBorder" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;&lt;tbody&gt;&lt;tr style="height: 0px;"&gt;&lt;td style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; vertical-align: top;"&gt;&lt;img height="63" src="https://lh6.googleusercontent.com/uLEuM832XvmL9FoSBV0fuOlIa0r4sJ5nIBxucdj1U1-YR-AZwUx2qy3oYrMgyIiG_w5x-aq8HpZu2fWexlEsEDVRB45TRs9Xiw-3HuLf9EyQ4I8M" width="63" /&gt;&lt;/td&gt;&lt;td style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://code.google.com/p/apparat/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: 180%;"&gt;apparat&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://code.google.com/p/apparat/"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;i&gt;&lt;span style="font-size: 85%;"&gt;A framework to optmize ABC, SWC and SWF files&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;span style="font-size: 85%;"&gt;5. &lt;a href="http://www.yogda.com/"&gt;http://www.yogda.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;AVM2 Bytecode Assembler, Disassembler, also has the functions of &lt;span style="color: blue;"&gt;editing(adding/removing) swf tags&lt;/span&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-WgmH-QQ2cGg/TfcCBDWlC7I/AAAAAAAAArg/ctRzdj6xaHs/s1600/yogdasc_main.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-WgmH-QQ2cGg/TfcCBDWlC7I/AAAAAAAAArg/ctRzdj6xaHs/s320/yogdasc_main.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/apparat/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;b&gt;&lt;span style="font-size: 130%;"&gt;Unprotectors&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #28313a;"&gt;&lt;span style="font-size: 100%;"&gt;1. SWF Decrypt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.swfdecrypt.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“WF Decrypt will reverse and remove the few junk code these types of software add to your SWF file and charge you money for. The purpose of this software is to help you assess the protection solution that you have chosen. I hope it will also encourage the authors of SWF Encrypt and SWF Protector to either implement actual code obfuscation methods or discontinue their products and stop charging for junk.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img height="256" src="https://lh6.googleusercontent.com/XBTeuZpvAPeVHDbgpTW515m7E5XOofHPWQImWLIbN2A623S6AsK3RYSKlCMuonLtUWIsNjv6QX1llSaafcAKyhKqG8_sYo4_13teVaFJ2arK4kyi" width="293" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;2. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.swf-reader.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt;http://www.swf-reader.com&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 130%;"&gt; &lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;“SWF Reader Professional is first program to unprotect encrypted swf files.&lt;br class="kix-line-break" /&gt;Main features:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Remove/add tags.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Manipulate doABC structure (AS3).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Full unprotect AS2 files which are encrypted by SWF Encrypt 5 (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.amayeta.com/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://www.amayeta.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Unprotect AS3 files which are encrypted by SWF Encrypt 5 (http://www.amayeta.com/). There is not possible to recover names (class, vars, functions) because encrypter remove original names irretrievably.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;This one also has a nice &lt;span style="color: blue;"&gt;memory dump tool&lt;/span&gt;&lt;b&gt;/&lt;/b&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;SWF vampire&lt;/span&gt;&lt;/b&gt;(&lt;span style="color: lime;"&gt;File-&amp;gt;Load from memory&lt;/span&gt;) for &lt;span style="color: red;"&gt;unpacking&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;img height="447" src="https://lh4.googleusercontent.com/6_XXJwc5O5gI6W7qU5nMLkH75BmkJ_4JLU2p2bvWlfEhGL9QE43U_8d0tMRC6N98fQxE0UkqkM-Bdu4JxfC43TYPZCjhToOgM4mTftdvWyrpdcmA" width="553" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;b&gt;&lt;span style="font-size: 130%;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #001144;"&gt;&lt;b&gt;&lt;span style="font-size: 130%;"&gt;Miscellaneous Links:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.nowrap.de/flasm.html"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://www.nowrap.de/flasm.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.nowrap.de/flare.html"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://www.nowrap.de/flare.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.nowrap.de/flare.html"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.dcomsoft.com/download/dfdinstall.exe"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Dump Flash Decompiler&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.dcomsoft.com/download/dfdinstall.exe"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://www.dcomsoft.com/download/dfdinstall.exe&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Swf Picture Extractor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.dcomsoft.com/download/swf_picture_extractor.exe"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://www.dcomsoft.com/download/swf_picture_extractor.exe&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.dcomsoft.com/download/swf_picture_extractor.exe"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://code.google.com/p/flash-decompiler/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://code.google.com/p/flash-decompiler/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://www.libspark.org/wiki/yossy/swfassist"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.deitte.com/archives/2008/03/randomcompiler.htm"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://www.deitte.com/archives/2008/03/randomcompiler.htm&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://blogs.adobe.com/gosmith/2008/02/disassembling_a_swf_with_swfdu_1.html"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://blogs.adobe.com/gosmith/2008/02/disassembling_a_swf_with_swfdu_1.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://dougmccune.com/flex/FOTB_Decompiling_Doug_McCune.pdf"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://dougmccune.com/flex/FOTB_Decompiling_Doug_McCune.pdf&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://dougmccune.com/blog/2008/09/21/i-just-decompiled-a-decompiler-so-i-could-use-it-to-decompile-itself/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://dougmccune.com/blog/2008/09/21/i-just-decompiled-a-decompiler-so-i-could-use-it-to-decompile-itself/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://shigeru-nakagaki.com/index.cfm/2008/3/18/20080318-LibraryManager-Beta-is-released"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://shigeru-nakagaki.com/index.cfm/2008/3/18/20080318-LibraryManager-Beta-is-released&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://flashpanoramas.com/blog/2007/07/02/swf-parser-air-application/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://flashpanoramas.com/blog/2007/07/02/swf-parser-air-application/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.5etdemi.com/blog/archives/2007/01/as3-decompiler/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;www.5etdemi.com/blog/archives/2007/01/as3-decompiler/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="https://www.flashsec.org/wiki/Simple_AS3_Decompiler_Using_Tamarin"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;https://www.flashsec.org/wiki/Simple_AS3_Decompiler_Using_Tamarin&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;a href="http://blog.reversing.com.ar/2010/02/debugging-actionscript-jited-code/"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://blog.reversing.com.ar/2010/02/debugging-actionscript-jited-code/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;/u&gt;&lt;b&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Extract SWF files from Flash Executables(EXE):&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://www.northcode.com/blog.php/2007/08/02/Extract-SWF-files-from-Flash-Executables"&gt;http://www.northcode.com/blog.php/2007/08/02/Extract-SWF-files-from-Flash-Executables&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;b style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Libraries for reading/writing SWF and modifying ActionScript Bytecode:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://www.flagstonesoftware.com/transform/"&gt;http://www.flagstonesoftware.com/transform/&lt;/a&gt; (Java)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="https://github.com/CyberShadow/RABCDAsm"&gt;https://github.com/CyberShadow/RABCDAsm&lt;/a&gt; (D)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;a href="http://www.libspark.org/wiki/yossy/swfassist"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://www.libspark.org/wiki/yossy/swfassist &lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;(AS3)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;a href="http://segfaultlabs.com/swfdb"&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;http://segfaultlabs.com/swfdb &lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/u&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;(AS3)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="https://github.com/magicalhobo/SWFWire"&gt;https://github.com/magicalhobo/SWFWire&lt;/a&gt; (AS3) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;u&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="https://github.com/laomoi/swfdiy"&gt;https://github.com/laomoi/swfdiy&lt;/a&gt; (AS3)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://sourceforge.net/projects/swfdotnet/"&gt;http://sourceforge.net/projects/swfdotnet/&lt;/a&gt; (C# .Net or VB.Net&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;)&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/graphics/swfdotnet-decompiler.aspx"&gt;http://www.codeproject.com/KB/graphics/swfdotnet-decompiler.aspx&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="https://github.com/RintarouTW/SWFVisualizer"&gt;https://github.com/RintarouTW/SWFVisualizer&lt;/a&gt;(AS3)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="https://github.com/RintarouTW/swfparser"&gt;https://github.com/RintarouTW/swfparser&lt;/a&gt;(C++)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: normal; vertical-align: baseline;"&gt;&lt;span style="font-family: times new roman;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt; &lt;a href="https://github.com/junfenggeng/libswf/"&gt;https://github.com/junfenggeng/libswf/&lt;/a&gt;(C)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Pixel Bender .pbj files Decompiler:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.kaourantin.net/2008/09/pixel-bender-pbj-files.html"&gt;http://www.kaourantin.net/2008/09/pixel-bender-pbj-files.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AGAL ByteCode Decompiler:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;DEMO: &lt;a href="http://boycy.webs.com/Disassembler.swf%20"&gt;http://boycy.webs.com/Disassembler.swf&amp;nbsp;&lt;/a&gt;&lt;br /&gt;Source Code: &lt;a href="http://boycy.webs.com/Disassembler.rar"&gt;http://boycy.webs.com/Disassembler.rar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-7760647021311592999?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/7760647021311592999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=7760647021311592999&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7760647021311592999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7760647021311592999'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2010/08/freeswfdecompilers.html' title='Free SWF Decompilers!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Ke_Y3Hp7Q5Q/TkpzkqOQ_eI/AAAAAAAAAsc/ZK4-_n_fF1Q/s72-c/ActionScriptExtractor.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-4892067904173849712</id><published>2010-08-03T22:13:00.000-07:00</published><updated>2011-08-08T06:51:12.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='Obfuscation'/><title type='text'>SWF Cry v0.02 released, protect your swf for free!</title><content type='html'>&lt;div style="color: red;"&gt;Update: August, 8, 2011&lt;/div&gt;A minor version(&lt;span style="color: blue;"&gt;v0.02fixed&lt;/span&gt;) maintenance update for SWF-Cry released!&lt;br /&gt;Fixed several bugs. &lt;br /&gt;&lt;i&gt;Warning: this version maybe more buggy than the previous version(&lt;span style="color: blue;"&gt;v0.02&lt;/span&gt;).&lt;/i&gt;&lt;br /&gt;For backup purpose, you can find all old releases here:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/Swfcry/builds"&gt;https://flaswf.googlecode.com/svn/trunk/Swfcry/builds&lt;/a&gt;&lt;br /&gt;A major version(&lt;span style="color: blue;"&gt;v0.03&lt;/span&gt;) update, which has fewer bugs, more functions and better UI, will be available in the future.&lt;br /&gt;==========&lt;br /&gt;&lt;embed height="600" src="https://flaswf.googlecode.com/svn/trunk/Swfcry/builds/v0.02/SWFCry002fixed.swf" type="application/x-shockwave-flash" width="600"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;TUTORIAL&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: medium;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: medium;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;How to use it:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="color: black;"&gt;First of all, click to expand the "&lt;span style="color: #333333;"&gt;&lt;i&gt;&lt;b&gt;Advanced Configuration&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;" window .&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;1. Choose&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt; your main swf to be &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;encrypted&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;Browse _SWF&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to upload your swf.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;2. Choose&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt; your water mark swf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “&lt;i&gt;&lt;b&gt;&lt;span style="color: #333333;"&gt;Browse _WaterMark&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to upload your water mark.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If you do&lt;/span&gt;&lt;span style="font-size: small;"&gt;n't need a water mark, uncheck “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;Use&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;_WaterMark&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;You&lt;/span&gt;&lt;span style="font-size: small;"&gt; can set the water mark swf's &lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;x&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;, &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;y&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;,&lt;/span&gt; &lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;scaleX&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;,&lt;/span&gt; &lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;scaleY&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; and &lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;alpha&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; properties.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Change&lt;/span&gt; &lt;span style="font-size: small;"&gt;the “&lt;b&gt;&lt;span style="color: #333333;"&gt;&lt;i&gt;LinkTo&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;”&lt;/span&gt; &lt;span style="font-size: small;"&gt;url to your sites and the final output swf will have a water mark&lt;/span&gt; &lt;span style="font-size: small;"&gt;navigate&lt;/span&gt;&lt;span style="font-size: small;"&gt;s&lt;/span&gt;&lt;span style="font-size: small;"&gt; to your sites when you click it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;3. Obfuscate&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Edit the names list &lt;/span&gt;&lt;span style="font-size: small;"&gt;there;&lt;/span&gt;&lt;span style="font-size: small;"&gt; add names that you&lt;/span&gt; &lt;span style="font-size: small;"&gt;wish to&lt;/span&gt;&lt;span style="font-size: small;"&gt; be&lt;/span&gt; &lt;span style="font-size: small;"&gt;changed to&lt;/span&gt; &lt;span style="font-size: small;"&gt;random&lt;/span&gt;&lt;span style="font-size: small;"&gt; strings.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Use comma&lt;/span&gt; &lt;span style="font-size: small;"&gt;("&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;,&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;") to &lt;/span&gt;&lt;span style="font-size: small;"&gt;separate&lt;/span&gt;&lt;span style="font-size: small;"&gt; names.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If you don't want to &lt;/span&gt;&lt;span style="font-size: small;"&gt;obfuscate&lt;/span&gt;&lt;span style="font-size: small;"&gt;, uncheck "&lt;/span&gt;&lt;span style="color: #333333; font-size: small;"&gt;&lt;b&gt;&lt;i&gt;Obfuscate&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;4. Pack&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Edit the name (default &lt;/span&gt;&lt;span style="font-size: small;"&gt;“&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;uploadedswfname_&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: #333333; font-size: small;"&gt;&lt;b&gt;&lt;i&gt;CryOut.swf&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;) after “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;OutPut_SWF_Name&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;. That's the &lt;/span&gt;&lt;span style="font-size: small;"&gt;encrypted&lt;/span&gt;&lt;span style="font-size: small;"&gt; swf&lt;/span&gt;&lt;span style="font-size: small;"&gt;’&lt;/span&gt;&lt;span style="font-size: small;"&gt;s&lt;/span&gt;&lt;span style="font-size: small;"&gt; name. You can also change it after the &lt;/span&gt;&lt;span style="font-size: small;"&gt;encrypted&lt;/span&gt;&lt;span style="font-size: small;"&gt; swf &lt;/span&gt;&lt;span style="font-size: small;"&gt;is &lt;/span&gt;&lt;span style="font-size: small;"&gt;created.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If you don't want &lt;/span&gt;&lt;span style="font-size: small;"&gt;to pack your swf, uncheck “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;Pack&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Notes:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt; if you uncheck “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;Pack&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;” and “&lt;/span&gt;&lt;span style="color: #333333; font-size: small;"&gt;&lt;b&gt;&lt;i&gt;Obfuscate&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt; both, SWF Cry will do nothing. Make sure at least one is checked.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;5. Save&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt; the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/" id="OLE_LINK1" name="OLE_LINK1"&gt;&lt;/a&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;encrypted swf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;Cry_and_Save&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to &lt;/span&gt;&lt;span style="font-size: small;"&gt;begin&lt;/span&gt;&lt;span style="font-size: small;"&gt; the &lt;/span&gt;&lt;span style="font-size: small;"&gt;encryption&lt;/span&gt;&lt;span style="font-size: small;"&gt; process, please wait a while till it's done and then you can save the encrypted swf.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;6. Save&lt;/span&gt;&lt;/span&gt; &lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;your config&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;Save_Config&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to save your current config, you can l&lt;/span&gt;&lt;span style="font-size: small;"&gt;oad your config by “&lt;b&gt;&lt;i&gt;&lt;span style="color: #333333;"&gt;Load_Config&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;. The saved config is &lt;/span&gt;&lt;span style="font-size: small;"&gt;an&lt;/span&gt;&lt;span style="font-size: small;"&gt; xml file, you can edit it manually.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;7.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Test&lt;/span&gt;&lt;span style="font-size: small;"&gt; your output swf, if you only see a blank swf, try &lt;/span&gt;&lt;span style="font-size: small;"&gt;unchecking&lt;/span&gt; &lt;span style="font-size: small;"&gt;“&lt;/span&gt;&lt;span style="color: #333333; font-size: small;"&gt;&lt;b&gt;&lt;i&gt;Pack&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If t&lt;/span&gt;&lt;span style="font-size: small;"&gt;he player throw errors such as “can't find &lt;/span&gt;&lt;span style="font-size: small;"&gt;definition&lt;/span&gt;&lt;span style="font-size: small;"&gt;...&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit;"&gt;check the obfuscate names list, make sure no as3 key words there!&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="color: blue; font-size: 100%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;i&gt;&lt;b&gt;KOWN ISSUES:&lt;/b&gt;&lt;/i&gt; &lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;br /&gt;1. Only as3, AVM1 swfs (as2,as1) are not supported currently and won't be supported in the future.&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;2. Sometimes swfs access net files won't run on a local computer after Pack.&lt;br /&gt;3. If your swf accesses stage, add code below in your main class's constructor function:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:as3"&gt;if(stage==null)&lt;br /&gt;{this.addEventListener(Event.ADDED_TO_STAGE,onAdded);}&lt;br /&gt;else {init();}&lt;br /&gt;function onAdded(event:Event){init();}&lt;br /&gt;function init(){}&lt;/pre&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;Otherwise, the packed swf will throw errors. Go here (&lt;a href="http://www.flashandmath.com/intermediate/swfload/docclass.html"&gt;http://www.flashandmath.com/intermediate/swfload/docclass.html&lt;/a&gt;) for details. &lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;4. Many other bugs... &lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;br /&gt;Bugs, ideas, requirements, just drop a comment!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;b&gt;Links:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;1.SWF-Cry v0.01:&lt;a href="http://bruce-lab.blogspot.com/2010/05/swf-cry-free-online-swf.html"&gt;http://bruce-lab.blogspot.com/2010/05/swf-cry-free-online-swf.html&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-4892067904173849712?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/4892067904173849712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=4892067904173849712&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4892067904173849712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4892067904173849712'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2010/08/swf-cry-v002-released-protect-your-swf.html' title='SWF Cry v0.02 released, protect your swf for free!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-3089270471434619229</id><published>2010-07-28T06:19:00.000-07:00</published><updated>2011-04-08T23:56:37.936-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='script engine'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>AS3 Eval Draw - Eval the AS3 drawing API!</title><content type='html'>&lt;iframe border="1" frameborder="1" framespacing="1" height="700px" marginheight="1" marginwidth="1" name="sense" noresize="" scrolling="no" src="https://flaswf.googlecode.com/svn/trunk/AS3_Evaldraw_En/bin/index.html" width="600px"&gt;&lt;/iframe&gt;&lt;br /&gt;Inspired by Ken Silverman's &lt;span style="color: #3333ff;"&gt;EVALDRAW&lt;/span&gt;(&lt;a href="http://www.advsys.net/ken/evaltut/evaldraw_tut.htm"&gt;http://www.advsys.net/ken/evaltut/evaldraw_tut.htm&lt;/a&gt;),&lt;br /&gt;I made this little project, AS3 Eval Draw, used to quickly test the AS3 drawing API on the fly without compiling the AS3 code. Thanks to &lt;span style="color: #3333ff;"&gt;BISE Scripting Engine&lt;/span&gt;, an easy to learn and use but powerful scripting engine, making everything simple. The grammar of BISE Scripting Engine is similar to AS3 and makes it easy to export the eval scripts to AS3.&lt;br /&gt;I use BIT-101’s &lt;span style="color: #3333ff;"&gt;MinimalComps&lt;/span&gt; for the UI and &lt;span style="color: #3333ff;"&gt;Atlas's syntax highlighter&lt;/span&gt; to highlight the code.&lt;br /&gt;&lt;br /&gt;AS3 Eval Draw now supports very simple AS3 drawing API, mostly 2D graphics &amp;amp; Bitmapdata manipulation. I also implemented other basic functions, such as load/save code, screen print and export AS3.&lt;br /&gt;It is not hard to make it support text displaying and the new AS3 3D drawing, sounds generation API. Another useful thing is loading function so we can play with picture assets and use them as textures. Supporting more AS3 events (like keyboard &amp;amp; mouse events) will be helpful too. We can then make some little games at run-time!&lt;br /&gt;Now I just like it simple as this.&lt;br /&gt;One limitation is speed. Luckily the Eval Draw script can easily be ported to AS3 (thanks to BISE Scripting Engine again!).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Full &lt;span style="color: red;"&gt;source code&lt;/span&gt; of the project:&lt;br /&gt;&lt;/b&gt;&lt;a href="http://flaswf.googlecode.com/svn/trunk/AS3_Evaldraw_En/"&gt;http://flaswf.googlecode.com/svn/trunk/AS3_Evaldraw_En/&lt;/a&gt;&lt;br /&gt;Feel free to use it and fork it!&lt;br /&gt;&lt;b&gt;Play it now:&lt;br /&gt;&lt;/b&gt;Click "Eval" to run the example code, click "Canvas" to see the result in action.&lt;br /&gt;&lt;b&gt;More examples:&lt;/b&gt;&lt;br /&gt;(thanks to Zevan Rosser - &lt;a href="http://actionsnippet.com/"&gt;http://actionsnippet.com/&lt;/a&gt;)&lt;br /&gt;&lt;a href="http://flaswf.googlecode.com/svn/trunk/AS3_Evaldraw_En/Evaldraw_examples/"&gt;http://flaswf.googlecode.com/svn/trunk/AS3_Evaldraw_En/Evaldraw_examples/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Links:&lt;/b&gt;&lt;br /&gt;1. Ken Silverman's EVALDRAW&lt;br /&gt;&lt;a href="http://www.advsys.net/ken/evaltut/evaldraw_tut.htm"&gt;http://www.advsys.net/ken/evaltut/evaldraw_tut.htm&lt;/a&gt;&lt;br /&gt;2. BISE Scripting Engine (AS3) by Yoshihiro Shindo and Sean Givan&lt;br /&gt;&lt;a href="http://kinsmangames.wordpress.com/bise-scripting-engine/"&gt;http://kinsmangames.wordpress.com/bise-scripting-engine/&lt;/a&gt;&lt;br /&gt;3. MinimalComps by Keith Peters (BIT-101)&lt;br /&gt;&lt;a href="http://www.minimalcomps.com/"&gt;http://www.minimalcomps.com/&lt;/a&gt;&lt;br /&gt;4. Atlas's Syntax Highlighter&lt;br /&gt;&lt;a href="http://www.atlascs.co.uk/blog/2007/02/09/as3-syntax-highlighting-in-as3"&gt;http://www.atlascs.co.uk/blog/2007/02/09/as3-syntax-highlighting-in-as3&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://actionsnippet.com/"&gt;http://actionsnippet.com/&lt;/a&gt;&lt;br /&gt;6. A similar project using &lt;a href="http://www.riaone.com/deval/"&gt;D.eval() &lt;/a&gt;&lt;br /&gt;&lt;a href="http://insideria.com/2008/03/try-out-the-drawing-api-withou.html"&gt;http://insideria.com/2008/03/try-out-the-drawing-api-withou.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-3089270471434619229?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/3089270471434619229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=3089270471434619229&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/3089270471434619229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/3089270471434619229'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2010/07/as3-eval-draw-eval-as3-drawing-api.html' title='AS3 Eval Draw - Eval the AS3 drawing API!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-5585554955462107835</id><published>2010-05-15T22:02:00.001-07:00</published><updated>2011-08-08T06:41:35.595-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Encryption'/><category scheme='http://www.blogger.com/atom/ns#' term='Obfuscation'/><title type='text'>SWF Cry - A Free online swf Encryption/Obfuscation tool!</title><content type='html'>================================================&lt;br /&gt;&lt;span style="color: red;"&gt;UPDATE 2010_8_03&lt;/span&gt;&lt;br /&gt;SWF Cry v0.02 released:&lt;br /&gt;&lt;a href="http://bruce-lab.blogspot.com/2010/08/swf-cry-v002-released-protect-your-swf.html"&gt;http://bruce-lab.blogspot.com/2010/08/swf-cry-v002-released-protect-your-swf.html&lt;/a&gt;&lt;br /&gt;================================================&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" height="600" width="600"&gt;&lt;param name="_cx" value="15875"&gt;&lt;param name="_cy" value="15875"&gt;&lt;param name="FlashVars" value=""&gt;&lt;param name="Movie" value="https://flaswf.googlecode.com/svn/trunk/Swfcry/builds/v0.01/SWF-Cry_v0.0.swf"&gt;&lt;param name="Src" value="https://flaswf.googlecode.com/svn/trunk/Swfcry/builds/v0.01/SWF-Cry_v0.0.swf"&gt;&lt;param name="WMode" value="Window"&gt;&lt;param name="Play" value="0"&gt;&lt;param name="Loop" value="-1"&gt;&lt;param name="Quality" value="High"&gt;&lt;param name="SAlign" value=""&gt;&lt;param name="Menu" value="-1"&gt;&lt;param name="Base" value=""&gt;&lt;param name="AllowScriptAccess" value=""&gt;&lt;param name="Scale" value="ShowAll"&gt;&lt;param name="DeviceFont" value="0"&gt;&lt;param name="EmbedMovie" value="0"&gt;&lt;param name="BGColor" value=""&gt;&lt;param name="SWRemote" value=""&gt;&lt;param name="MovieData" value=""&gt;&lt;param name="SeamlessTabbing" value="1"&gt;&lt;param name="Profile" value="0"&gt;&lt;param name="ProfileAddress" value=""&gt;&lt;param name="ProfilePort" value="0"&gt;&lt;param name="AllowNetworking" value="all"&gt;&lt;param name="AllowFullScreen" value="false"&gt;&lt;embed type="application/x-shockwave-flash" width="600" height="600" src="https://flaswf.googlecode.com/svn/trunk/Swfcry/builds/v0.01/SWF-Cry_v0.0.swf"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;I wrote this simple swf Encrypt&lt;/span&gt;&lt;span style="font-size: small;"&gt;ion/Obfuscation tool - SWF Cry,&lt;/span&gt; &lt;span style="font-size: small;"&gt;in &lt;/span&gt;&lt;span style="font-size: small;"&gt;about &lt;/span&gt;&lt;span style="font-size: small;"&gt;two weeks' spare time.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;The UI is powered by minimalcomps (&lt;/span&gt;&lt;a href="http://www.minimalcomps.com/"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;http://www.minimalcomps.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;)&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;It&lt;/span&gt; &lt;span style="font-size: small;"&gt;can &lt;/span&gt;&lt;span style="font-size: small;"&gt;obfuscate&lt;/span&gt; &lt;span style="font-size: small;"&gt;names of packages, classes, functions and &lt;/span&gt;&lt;span style="font-size: small;"&gt;variables&lt;/span&gt;&lt;span style="font-size: small;"&gt; (Thanks to &lt;/span&gt;&lt;/span&gt;&lt;a href="http://makc.coverthesky.com/FlashFX/"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;makc3d&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;!)&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;It can also pack your swf into a packer&lt;/span&gt;&lt;span style="font-size: small;"&gt;/shell&lt;/span&gt;&lt;span style="font-size: small;"&gt; to prevent your swf being &lt;/span&gt;&lt;span style="font-size: small;"&gt;decompiled&lt;/span&gt;&lt;span style="font-size: small;"&gt; directly.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;The (un)encryption scripts are written in &lt;/span&gt;&lt;span style="font-size: small;"&gt;C via &lt;/span&gt;&lt;span style="font-size: small;"&gt;adobe alchemy&lt;/span&gt; &lt;span style="font-size: small;"&gt;so it's very hard to unpack it&lt;/span&gt; &lt;span style="font-size: small;"&gt;simply by decompile the packer.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;SWF Cry is in a very primary status &lt;/span&gt;&lt;span style="font-size: small;"&gt;now (&lt;/span&gt;&lt;span style="font-size: small;"&gt;v0.0&lt;/span&gt;&lt;span style="font-size: small;"&gt;1&lt;/span&gt;&lt;span style="font-size: small;"&gt;)&lt;/span&gt;&lt;span style="font-size: small;"&gt;;&lt;/span&gt; &lt;span style="font-size: small;"&gt;this&lt;/span&gt;&lt;span style="font-size: small;"&gt; is only &lt;/span&gt;&lt;span style="font-size: small;"&gt;an&lt;/span&gt; &lt;span style="font-size: small;"&gt;unstable&lt;/span&gt; &lt;span style="font-size: small;"&gt;prerelease&lt;/span&gt; &lt;span style="font-size: small;"&gt;version. &lt;/span&gt;&lt;span style="font-size: small;"&gt;I&lt;/span&gt;&lt;span style="font-size: small;"&gt;t&lt;/span&gt;&lt;span style="font-size: small;"&gt; ha&lt;/span&gt;&lt;span style="font-size: small;"&gt;s&lt;/span&gt; &lt;span style="font-size: small;"&gt;many &lt;/span&gt;&lt;span style="font-size: small;"&gt;bugs and other serious problems. It may do damage to your swf and even crash the browser or the flash player. Please backup your files before &lt;/span&gt;&lt;span style="font-size: small;"&gt;test&lt;/span&gt;&lt;span style="font-size: small;"&gt;ing it. &lt;/span&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: small;"&gt;TRY&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;span style="font-size: small;"&gt; IT AT YOUR OWN RISK!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;b&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;(&lt;/span&gt;&lt;span style="font-size: small;"&gt;Possible&lt;/span&gt;&lt;span style="font-size: small;"&gt;) &lt;/span&gt;&lt;span style="font-size: small;"&gt;Features of&lt;/span&gt;&lt;span style="font-size: small;"&gt; the next release (v0.1)&lt;/span&gt;&lt;span style="font-size: small;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;1.&lt;/span&gt; &lt;span style="font-size: small;"&gt;Fewer bugs&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;2.&lt;/span&gt; &lt;span style="font-size: small;"&gt;B&lt;/span&gt;&lt;span style="font-size: small;"&gt;etter UI&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;3.&lt;/span&gt; &lt;span style="font-size: small;"&gt;Better &lt;/span&gt;&lt;span style="font-size: small;"&gt;execution &lt;/span&gt;&lt;span style="font-size: small;"&gt;e&lt;/span&gt;&lt;span style="font-size: small;"&gt;fficiency&lt;/span&gt;&lt;span style="font-size: small;"&gt; and &lt;/span&gt;&lt;span style="font-size: small;"&gt;low&lt;/span&gt;&lt;span style="font-size: small;"&gt;er&lt;/span&gt;&lt;span style="font-size: small;"&gt; memory usage&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;4.&lt;/span&gt; &lt;span style="font-size: small;"&gt;D&lt;/span&gt;&lt;span style="font-size: small;"&gt;omain lock&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;5.&lt;/span&gt; &lt;span style="font-size: small;"&gt;Junk&lt;/span&gt;&lt;span style="font-size: small;"&gt; code injection&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;6.&lt;/span&gt; &lt;span style="font-size: small;"&gt;P&lt;/span&gt;&lt;span style="font-size: small;"&gt;revent &lt;/span&gt;&lt;span style="font-size: small;"&gt;swf &lt;/span&gt;&lt;span style="font-size: small;"&gt;being extract&lt;/span&gt;&lt;span style="font-size: small;"&gt;ed&lt;/span&gt;&lt;span style="font-size: small;"&gt; from RAM&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;TUTORIAL&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: medium;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: medium;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;How to use it:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;1. Choose&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt; your main swf to be &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;encrypted&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “Browse _SWF”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to upload your swf.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;2. Choose&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt; your water mark swf&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “Browse _WaterMark”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to upload your water mark.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If you do&lt;/span&gt;&lt;span style="font-size: small;"&gt;n't need a water mark, uncheck “Use&lt;/span&gt; &lt;span style="font-size: small;"&gt;_WaterMark”&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;You&lt;/span&gt;&lt;span style="font-size: small;"&gt; can set the water mark swf's x&lt;/span&gt;&lt;span style="font-size: small;"&gt;, &lt;/span&gt;&lt;span style="font-size: small;"&gt;y,&lt;/span&gt; &lt;span style="font-size: small;"&gt;scaleX,&lt;/span&gt; &lt;span style="font-size: small;"&gt;scaleY and alpha properties.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Change&lt;/span&gt; &lt;span style="font-size: small;"&gt;the “LinkTo”&lt;/span&gt; &lt;span style="font-size: small;"&gt;url to your sites and the final output swf will have a water mark&lt;/span&gt; &lt;span style="font-size: small;"&gt;navigate&lt;/span&gt;&lt;span style="font-size: small;"&gt;s&lt;/span&gt;&lt;span style="font-size: small;"&gt; to your sites when you click it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;3. Obfuscate&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Edit the names list &lt;/span&gt;&lt;span style="font-size: small;"&gt;there;&lt;/span&gt;&lt;span style="font-size: small;"&gt; add names that you&lt;/span&gt; &lt;span style="font-size: small;"&gt;wish to&lt;/span&gt;&lt;span style="font-size: small;"&gt; be&lt;/span&gt; &lt;span style="font-size: small;"&gt;changed to&lt;/span&gt; &lt;span style="font-size: small;"&gt;random&lt;/span&gt;&lt;span style="font-size: small;"&gt; strings.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Use comma&lt;/span&gt; &lt;span style="font-size: small;"&gt;(",") to &lt;/span&gt;&lt;span style="font-size: small;"&gt;separate&lt;/span&gt;&lt;span style="font-size: small;"&gt; names.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If you don't want to &lt;/span&gt;&lt;span style="font-size: small;"&gt;obfuscate&lt;/span&gt;&lt;span style="font-size: small;"&gt;, uncheck "&lt;/span&gt;&lt;span style="font-size: small;"&gt;Obfuscate&lt;/span&gt;&lt;span style="font-size: small;"&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;4. Pack&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Edit the name (default &lt;/span&gt;&lt;span style="font-size: small;"&gt;“&lt;/span&gt;&lt;span style="font-size: small;"&gt;CryOut.swf&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;) after “OutPut_SWF_Name”&lt;/span&gt;&lt;span style="font-size: small;"&gt;. That's the &lt;/span&gt;&lt;span style="font-size: small;"&gt;encrypted&lt;/span&gt;&lt;span style="font-size: small;"&gt; swf&lt;/span&gt;&lt;span style="font-size: small;"&gt;’&lt;/span&gt;&lt;span style="font-size: small;"&gt;s&lt;/span&gt;&lt;span style="font-size: small;"&gt; name. You can't change it after the &lt;/span&gt;&lt;span style="font-size: small;"&gt;encrypted&lt;/span&gt;&lt;span style="font-size: small;"&gt; swf &lt;/span&gt;&lt;span style="font-size: small;"&gt;is &lt;/span&gt;&lt;span style="font-size: small;"&gt;created.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If you don't want &lt;/span&gt;&lt;span style="font-size: small;"&gt;to pack your swf, uncheck “Pack”&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Notes:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt; if you uncheck “Pack” and “&lt;/span&gt;&lt;span style="font-size: small;"&gt;Obfuscate&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt; both, SWF Cry will do nothing. Make sure at least one is checked.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;5. Save&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt; the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/" id="OLE_LINK1" name="OLE_LINK1"&gt;&lt;/a&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;encrypted swf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “Cry_and_Save”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to &lt;/span&gt;&lt;span style="font-size: small;"&gt;begin&lt;/span&gt;&lt;span style="font-size: small;"&gt; the &lt;/span&gt;&lt;span style="font-size: small;"&gt;encryption&lt;/span&gt;&lt;span style="font-size: small;"&gt; process, please wait a while till it's done and then you can save the encrypted swf.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;6. Save&lt;/span&gt;&lt;/span&gt; &lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;your config&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Press “Save_Config”&lt;/span&gt;&lt;span style="font-size: small;"&gt; button to save your current config, you can l&lt;/span&gt;&lt;span style="font-size: small;"&gt;oad your config by “Load_Config”&lt;/span&gt;&lt;span style="font-size: small;"&gt;. The saved config is &lt;/span&gt;&lt;span style="font-size: small;"&gt;an&lt;/span&gt;&lt;span style="font-size: small;"&gt; xml file, you can edit it manually.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;7.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Test&lt;/span&gt;&lt;span style="font-size: small;"&gt; your output swf, if you only see a blank swf, try &lt;/span&gt;&lt;span style="font-size: small;"&gt;unchecking&lt;/span&gt; &lt;span style="font-size: small;"&gt;“&lt;/span&gt;&lt;span style="font-size: small;"&gt;Pack&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt;&lt;span style="font-size: small;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt 5pt 18pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;If t&lt;/span&gt;&lt;span style="font-size: small;"&gt;he player throw errors such as “can't find &lt;/span&gt;&lt;span style="font-size: small;"&gt;definition&lt;/span&gt;&lt;span style="font-size: small;"&gt;...&lt;/span&gt;&lt;span style="font-size: small;"&gt;”&lt;/span&gt; &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-family: inherit;"&gt;check the obfuscate names list, make sure no as3 key words there!&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;8. &lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;Add a preloader for the &lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;encrypted swf&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;To-Do&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;…&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;b&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;KOWN ISSUES:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;1. Only&lt;/span&gt;&lt;span style="font-size: small;"&gt; as3, AVM1 swfs (as2,as1) are not fully &lt;/span&gt;&lt;span style="font-size: small;"&gt;supported&lt;/span&gt;&lt;span style="font-size: small;"&gt; currently. (But you can try your luck!)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;2. &lt;/span&gt;&lt;span style="font-size: small;"&gt;Sometimes s&lt;/span&gt;&lt;span style="font-size: small;"&gt;wfs&lt;/span&gt;&lt;span style="font-size: small;"&gt; access net files&lt;/span&gt; &lt;span style="font-size: small;"&gt;won't run on a local computer after Pack.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;3. If&lt;/span&gt; &lt;span style="font-size: small;"&gt;your swf &lt;/span&gt;&lt;span style="font-size: small;"&gt;accesses&lt;/span&gt;&lt;span style="font-size: small;"&gt; stage, add code below in your main class's constructor function:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:as3"&gt;if(stage==null){this.addEventListener(Event.ADDED_TO_STAGE,onAdded);} else {init();}&lt;/pre&gt;&lt;pre class="brush:as3"&gt;function onAdded(event:Event){init();}function init(){}&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;Otherwise, the packed swf will throw errors.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;Go here &lt;/span&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;(&lt;/span&gt;&lt;a href="http://www.flashandmath.com/intermediate/swfload/docclass.html"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;http://www.flashandmath.com/intermediate/swfload/docclass.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;) for details.&lt;/span&gt;&lt;br /&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;4. You can't rename the packed out&lt;/span&gt;&lt;span style="font-size: small;"&gt;put swf anymore&lt;/span&gt; &lt;span style="font-size: small;"&gt;(&lt;/span&gt;&lt;span style="font-size: small;"&gt;the file name is protected)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;5. &lt;/span&gt;&lt;span style="font-size: small;"&gt;Many o&lt;/span&gt;&lt;span style="font-size: small;"&gt;ther&lt;/span&gt;&lt;span style="font-size: small;"&gt; small bugs...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Bugs,&lt;/span&gt; &lt;span style="font-size: small;"&gt;ideas,&lt;/span&gt; &lt;span style="font-size: small;"&gt;requirements, just drop a comment!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: medium;"&gt;&lt;b&gt;Links:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;1. Flash&lt;/span&gt;&lt;span style="font-size: small;"&gt; Protection Gold&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Version 1.42 (Free / Full features) Now&lt;/span&gt;&lt;span style="font-size: small;"&gt;!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.avimpeg.net/flash_protection.htm"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;http://www.avimpeg.net/flash_protection.htm&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;2.&lt;/span&gt; &lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;http://&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;makc3d.wordpress.com&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;/2010/02/09/open-source-swf-obfuscator/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;3. &lt;/span&gt;&lt;a href="http://www.badsectoracula.com/projects/sob/"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;http://www.badsectoracula.com/projects/sob/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;4. &lt;/span&gt;&lt;a href="http://github.com/shapedbyregret/actionscript-3-obfuscator"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;http://github.com/shapedbyregret/actionscript-3-obfuscator&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;5. &lt;/span&gt;&lt;a href="http://active.tutsplus.com/tutorials/workflow/protect-your-flash-files-from-decompilers-by-using-encryption/"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;http://active.tutsplus.com/tutorials/workflow/protect-your-flash-files-from-decompilers-by-using-encryption/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;6. &lt;/span&gt;&lt;a href="http://www.swfdecrypt.com/"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;http://www.swfdecrypt.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: inherit; font-size: small;"&gt; Unprotect SWF Files&lt;/span&gt;&lt;/div&gt;&lt;div style="margin: 5pt 0pt;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;7. &lt;/span&gt;&lt;a href="http://gamedev.rasmuswriedtlarsen.com/2010/04/07/some-swf-encryptorsprotectors-are-worthless/"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;some SWF encryptors&lt;/span&gt;&lt;/u&gt;&lt;/span&gt; &lt;span style="color: blue;"&gt;&lt;u&gt;&lt;span style="font-size: small;"&gt;are worthless&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;8. &lt;a href="http://flashfreeprotection.blogspot.com/"&gt;http://flashfreeprotection.blogspot.com/&lt;/a&gt;&amp;nbsp;(A tool that protect your flash files from most of the decompilers, for free!)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-5585554955462107835?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/5585554955462107835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=5585554955462107835&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/5585554955462107835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/5585554955462107835'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2010/05/swf-cry-free-online-swf.html' title='SWF Cry - A Free online swf Encryption/Obfuscation tool!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-6540676162461680931</id><published>2010-04-05T22:25:00.001-07:00</published><updated>2010-04-06T21:07:05.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='ray-casting'/><title type='text'>Alchemy Ray Casting Engine source code released</title><content type='html'>&lt;p style="margin:0pt;text-align:justify"&gt;&lt;img alt="height=215" src="http://docs.google.com/File?id=dcv48gdn_52gccbxkc5_b" width="260"&gt;&lt;a id="OLE_LINK9" name="OLE_LINK9"&gt;&lt;/a&gt;&lt;a id="OLE_LINK10" name="OLE_LINK10"&gt;&lt;/a&gt;&lt;img alt="height=215" src="http://docs.google.com/File?id=dcv48gdn_53c4qvmngx_b" width="260"&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#ff0000"&gt;&lt;b&gt;&lt;font size="3"&gt;DEMO: &lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;a href="http://flaswf.googlecode.com/files/Alchemy_RayCaster_DEMO.swf"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;&lt;font size="3"&gt;http://flaswf.googlecode.com/files/Alchemy_RayCaster_DEMO.swf&lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#ff0000"&gt;&lt;b&gt;&lt;font size="3"&gt;SOURCE:&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt; &lt;a href="http://flaswf.googlecode.com/files/ALC_Ray_Caster.zip"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;&lt;font size="3"&gt;http://flaswf.googlecode.com/files/ALC_Ray_Caster.zip&lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;This is my first project using &lt;/font&gt;&lt;/font&gt;&lt;a id="OLE_LINK4" name="OLE_LINK4"&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;alchemy&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, port&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;ing&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; a simple ray cast&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;ing&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; engine from this tutorial &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;a href="http://www.student.kuleuven.be/~m0216922/CG/raycasting.html"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;&lt;font size="3"&gt;http://www.student.kuleuven.be/~m0216922/CG/raycasting.html&lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;) &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;to flash&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;and finished&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; about half a year ago&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;. Source code is just released because I&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;m too lazy to&lt;/font&gt;&lt;/font&gt;&lt;a id="OLE_LINK1" name="OLE_LINK1"&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; clean up&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; the dirty code &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;behind the first demo.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;This engine is better than may other flash based &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;ray caster&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; because it can render ceil/floor and sprites. &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;It&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;s not hard to make a &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;W&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;olfenstein-like game using this engine but I&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;m not motivated to do that now. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;We already have more powerful alchemy doom and alchemy quake engine now. &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;There are many good game &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;editors&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; for these two engines&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; we can create a quake-like FPS even without programming now. &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;But it&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;s strange that I haven&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;t seen any new game made.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;(If you want to do this, here are tutorials:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;a href="http://bruce-lab.blogspot.com/2009/09/build-your-doom-in-flash-step-by-step.html"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;&lt;font size="3"&gt;http://bruce-lab.blogspot.com/2009/09/build-your-doom-in-flash-step-by-step.html&lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;a href="http://bruce-lab.blogspot.com/2009/12/simple-tutorial-for-using-alchemy-quake.html"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;&lt;font size="3"&gt;http://bruce-lab.blogspot.com/2009/12/simple-tutorial-for-using-alchemy-quake.html&lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;O&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;ne reason is&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; no &lt;/font&gt;&lt;/font&gt;&lt;a id="OLE_LINK2" name="OLE_LINK2"&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;LAN&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; game play&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, hope someone can solve this problem.&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;I think a&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;nother &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;reason is those engines are too complicated to deal with&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;. This &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;little &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;engine &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;is much simple&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;r&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;and &lt;/font&gt;&lt;/font&gt;&lt;a id="OLE_LINK3" name="OLE_LINK3"&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;can be &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;used&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; personally&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, hope you will like it.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;I won&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;t develop it further because &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;recently&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;I&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;m focus on a totally new&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;ray casting&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; engine&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;ndash;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; BENGINE&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;a href="http://flaswf.googlecode.com/files/Bengine_v01.swf"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;&lt;font size="3"&gt;http://flaswf.googlecode.com/files/Bengine_v01.swf&lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;a voxel based 2.5D/3D ray &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;casting engine&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;As to the source code of this &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;alchemy&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; ray caster&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, special thanks to&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;Lode&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, the original author of the C++ code, and &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;Ralph Hauwert&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;unitzeroone.com&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;I learned how to use alchemy from his source.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;It is not well written, and m&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;aybe you won&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;t like my way of writing C code, I don&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;&amp;rsquo;&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;t use .h file, I prefer C to C++ (so the original C++ source is C now) and like to use include a lot.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;div style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;Besides, t&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;here may be lots of bugs and many thing&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;s can be optimized.&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="margin:0pt;text-align:justify"&gt;&amp;nbsp;&lt;/div&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;If you want to make it better, some ToDos&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; (for you)&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;1.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;U&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;se 1D screen&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;buffer ([]) &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;instead&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; of 2D screen&lt;/font&gt;&lt;/font&gt; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;buffer ([][]) to speed up rendering.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;2.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;Improve&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; the sprite sorting function&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;3.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;U&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;se &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;a &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;lookup table&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; to &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;calculate&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; rays instead of vectors &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;a id="OLE_LINK5" name="OLE_LINK5"&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;#1&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;4.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;More controls: &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;Strafe&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; left/right&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; jump/&lt;/font&gt;&lt;/font&gt;&lt;a id="OLE_LINK6" name="OLE_LINK6"&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;crouch&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, run, look up/down &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;#1&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;5.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;S&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;ome lighting &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;effect (&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;#1&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;6.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;A&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; better way &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;to handle&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; textures/sprite&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;s&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, doom wad like data/resources&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;7.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;A&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; better way to define a map&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;, &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;a map editor, import &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;W&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;olfenstein map format&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;8.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a id="OLE_LINK7" name="OLE_LINK7"&gt;&lt;/a&gt;&lt;a id="OLE_LINK8" name="OLE_LINK8"&gt;&lt;/a&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;A&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;nimate&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;d&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; sprite&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;s&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt 0pt 0pt 18pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;9.&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;W&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;rite a simple game&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;#1&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; Another nice ray casting &lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt;tutorial&lt;/font&gt;&lt;/font&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font size="3"&gt; you may need:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0pt;text-align:justify"&gt;&lt;a href="http://www.permadi.com/tutorial/raycast/index.html"&gt;&lt;font face="&amp;#39;times new roman&amp;#39;"&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;&lt;font size="3"&gt;http://www.permadi.com/tutorial/raycast/index.html&lt;/font&gt;&lt;/u&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-6540676162461680931?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/6540676162461680931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=6540676162461680931&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/6540676162461680931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/6540676162461680931'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2010/04/alchemy-ray-casting-engine-source-code.html' title='Alchemy Ray Casting Engine source code released'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-4127748805395119688</id><published>2010-02-22T07:30:00.001-08:00</published><updated>2010-08-23T01:27:54.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Games That Had Been Flashed - flash ports of well-known games</title><content type='html'>&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;div style="TEXT-ALIGN: left" id="tqoi"&gt;&lt;span style="font-size:100%;color:#000000;"&gt;&lt;span style="font-family:宋体;"&gt;1.&lt;span style="font-family:Arial;color:#000000;"&gt;&lt;b&gt;Castlevania&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;a href="http://www.flashkof.fr/castle/site/htm/news.htm"&gt;http://www.flashkof.fr/castle/site/htm/news.htm&lt;/a&gt; &lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left" id="jd.2"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px" src="http://docs.google.com/File?id=dcv48gdn_42fnjkmgfq_b" /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left" id="c15i"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px" src="http://docs.google.com/File?id=dcv48gdn_43ccs5jpg8_b" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:100%;"&gt;2.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Doom&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:100%;"&gt;Doom*&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:100%;"&gt;3&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:100%;"&gt;game-&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.newgrounds.com/portal/view/470460" target="_blank"&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color:#cc0033;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;Doom&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:宋体;"&gt;&lt;span style="color:#2200cc;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;Triple Pack&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:100%;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color:#cc0033;"&gt;&lt;span style="font-size:100%;"&gt;Doom&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:100%;"&gt;, Heretic, and Hexen):&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;a href="http://www.newgrounds.com/portal/view/470460" target="_blank"&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.newgrounds.com/portal/view/470460&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_266bmbpwhk_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_2789n38rdf_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#666666;"&gt;&lt;span style="font-size:100%;"&gt;P.S.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;doom2d&lt;/span&gt;&lt;/span&gt; &lt;a href="http://www.codinsoft.de/doom2d.html" target="_blank"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.codinsoft.de/doom2d.html&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;3.&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;EA 2D’&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt; Dragon Age Journeys&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.dragonagejourneys.com/"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;h&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;ttp://www.dragonagejourneys.com&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_9d9sz2xgn_b" width="302" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_10cd6354mn_b" width="302" /&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;4. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Half-Life&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://web.archive.org/web/20070509125829/www.halflife2d.com/"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://web.archive.org/web/20070509125829/www.halflife2d.com/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_19cmt3q6cn_b" width="378" /&gt; &lt;/p&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_20fzjsf3cq_b" width="378" /&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;5.&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;Infamous&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.agame.com/game/Infamous.html?home_new"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.agame.com/game/Infamous.html?home_new&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_17f2v823cs_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_18c35rxvfv_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;6. &lt;span style="font-family:Arial;"&gt;&lt;b&gt;James Bond: Quantum of Solace&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://www.007.com/game/"&gt;&lt;span style="color:#810081;"&gt;http://www.007.com/game/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;div style="TEXT-ALIGN: left" id="w_su"&gt;&lt;div style="TEXT-ALIGN: left" id="t-.1"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 225px" src="http://docs.google.com/File?id=dcv48gdn_41vq227bzp_b" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;div style="TEXT-ALIGN: left" id="d2:-"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 225px" src="http://docs.google.com/File?id=dcv48gdn_38s66ddbtx_b" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;7. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;M&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;etal &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;G&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;ear &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;VR M&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;ission&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;Flash Gear Solid&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;VR&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.mochimedia.com/games/flash-gear-solid-vr-the-nikita-missions/"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.mochimedia.com/games/flash-gear-solid-vr-the-nikita-missions/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_33h5nfkjf3_b" width="378" /&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_34fgzkbppq_b" width="227" /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:100%;"&gt;8. &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;M&lt;/span&gt;&lt;span style="font-size:130%;"&gt;etal Slug&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.google.com/search?source=hp&amp;amp;q=metal+slug+flash"&gt;http://www.google.com/search?source=hp&amp;amp;q=metal+slug+flash&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left" id="rq.s"&gt;&lt;img style="WIDTH: 400px; HEIGHT: auto" src="http://docs.google.com/File?id=dcv48gdn_48hs3hb2f7_b" /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left" id="z9mu"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 287px" src="http://docs.google.com/File?id=dcv48gdn_49hbz346db_b" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;9.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt; Mirror’s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt; edge &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://mirrorsedge2d.com/"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://mirrorsedge2d.com&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_13cmjm65hh_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_14cmwrb84g_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;10&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;P&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;ortal &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://portal.wecreatestuff.com/"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://portal.wecreatestuff.com&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_229kj459db_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_23cs6gr4fq_b" width="378" /&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;11. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;P&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;rice of &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Persia&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.gamespot.com/promos/princeofpersia-game/flash/"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.gamespot.com/promos/princeofpersia-game/flash/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_30sfzh2bxr_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_31cm2kxkhd_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_32nspfpphs_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;12. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Quake&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.silvergames.com/game/quake-flash/" target="_blank"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.silvergames.com/game/quake-flash/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_28cksqskf4_b" width="302" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_29ftch6qf9_b" width="302" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;13. &lt;/span&gt;&lt;a href="http://www.stalker-game.com/" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;S.T.A.L.K.E.R.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.stalker-game.com/en/?page=archive_news&amp;amp;subpage=9"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.stalker-game.com/en/?page=archive_news&amp;amp;subpage=9&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://tymchenko.jrhdata.de/" target="_blank"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:78%;"&gt;tymchenko.jrhdata.de&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_5zxppk6d6_b" width="120" /&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_6fqbgs5ck_b" width="120" /&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_7cfwxgnd4_b" width="189" /&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_8d48xvp34_b" width="189" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:Arial;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;14. &lt;/span&gt;&lt;b&gt;Spider-Man&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.sonypictures.com/homevideo/spider-man3/"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;http://www.sonypictures.com/homevideo/spider-man3/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img style="WIDTH: 278px; HEIGHT: 259px" src="http://docs.google.com/File?id=dcv48gdn_37grpskv34_b" /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.sonypictures.com/homevideo/spider-man3/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:Arial;font-size:100%;"&gt;&lt;span style="font-family:Times New Roman;"&gt;15.&lt;/span&gt;&lt;b&gt;Street Fighter 2&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;p style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a id="a1gg" title="http://www.dotemu.com/sf2/" href="http://www.dotemu.com/sf2/"&gt;http://www.dotemu.com/sf2/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: left" id="v5j4"&gt;&lt;img style="WIDTH: 384px; HEIGHT: auto" src="http://docs.google.com/File?id=dcv48gdn_44g9g3tbch_b" /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left" id="udm1"&gt;&lt;img style="WIDTH: 384px; HEIGHT: 261px" src="http://docs.google.com/File?id=dcv48gdn_45gmjmdxc8_b" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;16. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;S&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;uper Mario&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.google.com/search?source=hp&amp;amp;q=super+mario+flash"&gt;http://www.google.com/search?source=hp&amp;amp;q=super+mario+flash&lt;/a&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;div style="TEXT-ALIGN: left" id="kry:"&gt;&lt;img style="WIDTH: 300px; HEIGHT: auto" src="http://docs.google.com/File?id=dcv48gdn_36fs5pzkdn_b" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;newwindow=1&amp;amp;q=super+mario+flash+game&amp;amp;btnG=Search&amp;amp;aq=f&amp;amp;aqi=&amp;amp;oq="&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:Times New Roman;font-size:100%;"&gt;17. &lt;span style="font-family:Arial;"&gt;&lt;b&gt;Unreal Flash&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://armorgames.com/play/643/unreal-flash-2007"&gt;http://armorgames.com/play/643/unreal-flash-2007&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;div style="TEXT-ALIGN: left" id="d6pm"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px" src="http://docs.google.com/File?id=dcv48gdn_46frbthkdr_b" /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left" id="duez"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 200px" src="http://docs.google.com/File?id=dcv48gdn_47m35d6s49_b" /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;18.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt; Witcher&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;V&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;ersus&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://wiedzminversus.gry-online.pl/"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://wiedzminversus.gry-online.pl/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://versus.thewitcher.com/?link=http%3A%2F%2Fversus%2Ethewitcher%2Ecom"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://versus.thewitcher.com/?link=http%3A%2F%2Fversus%2Ethewitcher%2Ecom&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_11fzqz7wvz_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_12fjmfz77z_b" width="378" /&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;19.&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;Wolfenstein3&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:130%;"&gt;D&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;Wolfen&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;F&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;lash &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;3D by Glen Rhodes&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;Flash ray engine&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.glenrhodes.com/wolf/" target="_blank"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.glenrhodes.com/wolf/&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_24frghwkvq_b" width="378" /&gt;&lt;/p&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_25ghnxm5c2_b" width="378" /&gt;&lt;/p&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color:#666666;"&gt;&lt;span style="font-size:100%;"&gt;P.S. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://blog.nihilogic.dk/2008/04/javascript-wolfenstein-3d.html"&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color:#ffaa33;"&gt;&lt;span style="font-size:100%;"&gt;Javascript Wolfenstein 3D&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;a href="http://blog.nihilogic.dk/2008/04/javascript-wolfenstein-3d.html"&gt;&lt;/a&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://blog.nihilogic.dk/2008/04/javascript-wolfenstein-3d.html"&gt;http://blog.nihilogic.dk/2008/04/javascript-wolfenstein-3d.html&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://blog.nihilogic.dk/2008/04/javascript-wolfenstein-3d.html"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;/p&gt;&lt;p style="MARGIN: 5pt 0pt"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="font-size:100%;"&gt;20.&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;Z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;ombies &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;vs.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:130%;"&gt;lants&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;a href="http://www.popcap.com/games/free/pvz/?mid=pvz_pcweb_en_full"&gt;&lt;span style="font-family:'times new roman';"&gt;&lt;span style="color:#0000ff;"&gt;&lt;u&gt;&lt;span style="font-size:100%;"&gt;http://www.popcap.com/games/free/pvz/?mid=pvz_pcweb_en_full&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="TEXT-ALIGN: justify; MARGIN: 0pt"&gt;&lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_15hj39f388_b" width="378" /&gt; &lt;img alt="height=" src="http://docs.google.com/File?id=dcv48gdn_16fpng33hj_b" width="378" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0000;"&gt;==========update 2010, August, 20==========&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Prince of Persia: The Forgotten Sands&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://prince-of-persia.us.ubi.com/games/game-01.php"&gt;http://prince-of-persia.us.ubi.com/games/game-01.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/THIwBv6k2nI/AAAAAAAAAlM/rXPdkFZkkQ8/s1600/prince-persia-flash.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 400px; FLOAT: left; HEIGHT: 256px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5508518100827691634" border="0" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/THIwBv6k2nI/AAAAAAAAAlM/rXPdkFZkkQ8/s400/prince-persia-flash.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_VM_xh6rvt_I/THIwBdAayUI/AAAAAAAAAlE/9oq9WLpqYVk/s1600/Prince-of-Persia-The-Forgotten-Sands-Flash-Game.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 400px; FLOAT: left; HEIGHT: 257px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5508518095751924034" border="0" alt="" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/THIwBdAayUI/AAAAAAAAAlE/9oq9WLpqYVk/s400/Prince-of-Persia-The-Forgotten-Sands-Flash-Game.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-4127748805395119688?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/4127748805395119688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=4127748805395119688&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4127748805395119688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4127748805395119688'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2010/02/games-that-had-been-flashed-flash-ports.html' title='Games That Had Been Flashed - flash ports of well-known games'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VM_xh6rvt_I/THIwBv6k2nI/AAAAAAAAAlM/rXPdkFZkkQ8/s72-c/prince-persia-flash.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-1970410079015200712</id><published>2009-12-03T08:06:00.001-08:00</published><updated>2011-12-26T23:01:28.932-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>A simple tutorial for using Alchemy Quake Engine to create your own  FPS game!</title><content type='html'>&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt; margin-left: 1em; margin-right: 1em;"&gt;&lt;span lang="EN-US" style="clear: left; color: black; float: left; font-family: Verdana; font-size: 10pt; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="a-custom-quake-map-in-flash" class="alignnone size-medium wp-image-77269" height="247" src="https://lh4.googleusercontent.com/_VM_xh6rvt_I/TWDyjZ1mdoI/AAAAAAAAApA/LiKUuuJ1zkU/a-custom-quake-map-in-flash-300x2472.GIF.jpg" title="a-custom-quake-map-in-flash" width="300" /&gt;&lt;/span&gt;&lt;img alt="a-custom-quake-map-in-flash" class="alignnone size-medium wp-image-77267" height="247" src="https://lh4.googleusercontent.com/_VM_xh6rvt_I/TWDxakSJm9I/AAAAAAAAAo0/LREjOpBvJX0/a-custom-quake-map-in-flash-300x247.gif.jpg" title="a-custom-quake-map-in-flash" width="300" /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;(custom quake maps in flash)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;b&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana;"&gt;&lt;span style="font-size: medium;"&gt;PART 1 COMPILE THE SOURCE&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana;"&gt;&lt;span style="font-size: medium;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;1.&lt;/b&gt; &lt;b&gt;Get the source&lt;/b&gt; code at &lt;span style="color: black; text-decoration: none;"&gt;&lt;a href="http://github.com/mkr3142/QuakeFlash" target="_blank"&gt;http://github.com/mkr3142/QuakeFlash&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;using git and&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;2.&lt;/b&gt; &lt;b&gt;Install alchemy&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;If you don't know how to do that (step 1&amp;amp;2) check &lt;a href="http://bruce-lab.blogspot.com/2009/09/build-your-doom-in-flash-step-by-step.html"&gt;this tutorial&lt;/a&gt; (I wrote for &lt;b&gt;alchemy doom&lt;/b&gt;).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;3.&lt;/b&gt; &lt;b&gt;Compile the&lt;/b&gt; source to a &lt;b&gt;swc&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Copy the&amp;nbsp;source folder to “&lt;i&gt;&lt;span style="color: green;"&gt;F:\alchemy\&lt;/span&gt;&lt;/i&gt;” (suppose you install alchemy into this folder)&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;First you need a simple modification of the C source of wiquak in the source folder “&lt;i&gt;&lt;span style="color: green;"&gt;D:\alchemy\QuakeFlash\WinQuake&lt;/span&gt;&lt;/i&gt;”:&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Open the file “&lt;i&gt;&lt;span style="color: green;"&gt;common.c&lt;/span&gt;&lt;/i&gt;” by any text editor, find this line (by searching key words such as “use modified games”)&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;” Sys_Error ("You must have the registered version to use modified games");”&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Just remove or add”&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;//&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;” before (commentize) that line.&lt;/span&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="registered_remove" class="alignnone size-full wp-image-77229" height="492" src="https://lh4.googleusercontent.com/_VM_xh6rvt_I/TWDyqoct54I/AAAAAAAAAps/qNKeivvtkfc/registered_remove.GIF.jpg" title="registered_remove" width="695" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: red; font-family: Verdana; font-size: 10pt;"&gt;This is important if you want to use the engine to run your mods or total conversions, that line will check if the game data “PAK0.pak” is original (not modified), and won’t let the game run if not.&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Now let’s build the C source to a swc: (you may want to read "&lt;span style="color: green;"&gt;readme_QuakeFlash.txt&lt;/span&gt;" in your downloaded source folder first)&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Run Cygwin go to the “&lt;i&gt;&lt;span style="color: green;"&gt;F:\alchemy\QuakeFlash\quakeswf&lt;/span&gt;&lt;/i&gt;” folder and compile the source:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;cd F:&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;cd alchemy/QuakeFlash/quakeswf&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;source /cygdrive/f/alchemy/alchemy-setup&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;alc-on&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;make -f makeswc&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&amp;nbsp;&lt;img alt="flashquake1" class="alignnone size-full wp-image-77276" height="400" src="https://lh4.googleusercontent.com/_VM_xh6rvt_I/TWDyn1WgXOI/AAAAAAAAApU/CTpGGf78t_Q/flashquake1.GIF.jpg" title="flashquake1" width="660" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="quakeflash" class="alignnone size-full wp-image-77225" height="438" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWDypE-o7DI/AAAAAAAAApc/KFD2zIBbd34/quakeflash.GIF.jpg" title="quakeflash" width="669" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;When it's done, check that "&lt;i&gt;&lt;span style="color: green;"&gt;quake.swc&lt;/span&gt;&lt;/i&gt;”&amp;nbsp;was created in “&lt;span style="color: green;"&gt;&lt;i&gt;F:\alchemy\QuakeFlash\lib&lt;/i&gt;&lt;/span&gt;”&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;(if not, go to “&lt;i&gt;&lt;span style="color: green;"&gt;F:\alchemy\QuakeFlash\quakeswf\Release&lt;/span&gt;&lt;/i&gt;”, copy "quake.swc&amp;nbsp;" to “&lt;span style="color: green;"&gt;&lt;i&gt;F:\alchemy\QuakeFlash\lib&lt;/i&gt;&lt;/span&gt;”)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;4. get the&lt;/b&gt; game data &lt;b&gt;PAK0.pak&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Download the original&amp;nbsp;quake game demo(DOS) from&amp;nbsp;&amp;nbsp;&lt;span style="color: black; text-decoration: none;"&gt;&lt;a href="http://www.idsoftware.com/games/quake/quake/" target="_blank"&gt;http://www.idsoftware.com/games/quake/quake/&lt;/a&gt;&lt;/span&gt;, you will get the file&amp;nbsp;“&lt;i&gt;&lt;span style="color: green;"&gt;quake106.zip&lt;/span&gt;&lt;/i&gt;”, unzip it and run “&lt;i&gt;&lt;span style="color: green;"&gt;install.bat&lt;/span&gt;&lt;/i&gt;”,&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;go to the folder you installed your game such as "&lt;i&gt;&lt;span style="color: green;"&gt;C:\QUAKE_SW&lt;/span&gt;&lt;/i&gt;",&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;copy the "&lt;i&gt;&lt;span style="color: green;"&gt;PAK0.PAK&lt;/span&gt;&lt;/i&gt;" form "&lt;i&gt;&lt;span style="color: green;"&gt;C:\QUAKE_SW\ID1&lt;/span&gt;&lt;/i&gt;" to&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;“&lt;span style="color: green;"&gt;&lt;i&gt;F:\alchemy\QuakeFlash\quakeswf\embed&lt;/i&gt;&lt;/span&gt;”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;5. compile the swf&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Open the FlashDevelop project file “&lt;i&gt;&lt;span style="color: green;"&gt;QuakeFlash.as3proj&lt;/span&gt;&lt;/i&gt;” in"&lt;span style="color: green;"&gt;&lt;i&gt;F:\alchemy\QuakeFlash\quakeswf&lt;/i&gt;&lt;/span&gt;",&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;build the project you will get the “&lt;i&gt;&lt;span style="color: green;"&gt;QuakeFlash.swf&lt;/span&gt;&lt;/i&gt;” in “&lt;span style="color: green;"&gt;&lt;i&gt;F:\alchemy\QuakeFlash\quakeswf\bin&lt;/i&gt;&lt;/span&gt;”.&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Run it, it will play the demos, press space key-&amp;gt;NEW GAME, you can play the game now!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana;"&gt;PART 2 MODS and TOTAL CONVERSIONS&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;1.&lt;/b&gt; &lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;choose one of your favorite &lt;b&gt;quake editors&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;There’re lots of free &amp;amp; open source game editors for quake1.&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Some of which I know are &lt;b&gt;&lt;span style="color: green;"&gt;quark&lt;/span&gt;&lt;/b&gt; (&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;quark.sourceforge.net&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;cite&gt;&lt;span lang="EN-US" style="color: black; font-family: Arial; font-style: normal;"&gt;&lt;span style="font-size: small;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/cite&gt; &lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;powerful for making total conversions, can create &amp;amp; modify maps, models, textures and sounds…), &lt;span style="color: green;"&gt;&lt;b&gt;bspquakeeditor&lt;/b&gt;&lt;/span&gt; (&lt;a href="http://www.bspquakeeditor.com/" target="_blank"&gt;http://www.bspquakeeditor.com/&lt;/a&gt;) and &lt;b&gt;&lt;span style="color: green;"&gt;quakeED&lt;/span&gt;&lt;/b&gt; (&lt;a href="http://www.celephais.net/board/view_thread.php?id=60225&amp;amp;end=25" target="_blank"&gt;&lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;http://www.celephais.net/board/view_thread.php?id=60225&amp;amp;end=25&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; font-size: 10pt;"&gt;，&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;unzip and put it in “&lt;i&gt;&lt;span style="color: green;"&gt;C:\games\quake\tools&lt;/span&gt;&lt;/i&gt;”, you need to create that folder by yourself.) for levels (new maps), a light and useful tool &lt;b&gt;&lt;span style="color: green;"&gt;PakExplorer&lt;/span&gt;&lt;/b&gt;(for creating &amp;amp; modifying PAK0.PAK, quark has a build in Pak Explorer too.).&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;2.&lt;/b&gt; I prefer quark, just learn how to use it to &lt;b&gt;create &amp;amp; modify PAK0.Pak&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&amp;nbsp;&lt;img alt="quark_pak" class="alignnone size-medium wp-image-77227" height="298" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWDyp9CdIWI/AAAAAAAAApk/SH9gEGNYluw/quark_pak-300x298.GIF.jpg" title="quark_pak" width="300" /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="quark_map" class="alignnone size-medium wp-image-77226" height="177" src="https://lh4.googleusercontent.com/_VM_xh6rvt_I/TWDypa0SDSI/AAAAAAAAApg/md-2UONvE-4/quark_map-300x177.GIF.jpg" title="quark_map" width="300" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="qurk_model" class="alignnone size-medium wp-image-77228" height="172" src="https://lh6.googleusercontent.com/_VM_xh6rvt_I/TWDyqDj9UqI/AAAAAAAAApo/yugPigaWp5Q/qurk_model-300x172.GIF.jpg" title="qurk_model" width="300" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;to make your mods and TCs. There are docs and video tutorials online (&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;quark.sourceforge.net&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;) to help you.&lt;/span&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;P.S.&lt;/b&gt;For bspquakeeditor quakeED, the default quake level format is &lt;i&gt;&lt;span style="color: green;"&gt;*.map&lt;/span&gt;&lt;/i&gt;, you need to compile the &lt;i&gt;&lt;span style="color: green;"&gt;*.map&lt;/span&gt;&lt;/i&gt; to &lt;i&gt;&lt;span style="color: green;"&gt;*.bsp&lt;/span&gt;&lt;/i&gt; (both editor can do that).&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&amp;nbsp;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="quakeed" class="alignnone size-full wp-image-77272" height="432" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWDyor32mcI/AAAAAAAAApY/K1D9-M2YILU/s576/quakeed.GIF.jpg" title="quakeed" width="495" /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="bsp" class="alignnone size-full wp-image-77270" height="430" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWDyk7JxekI/AAAAAAAAApE/wA5eBBTBfXU/bsp.GIF.jpg" title="bsp" width="561" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;3.&lt;/b&gt; &lt;b&gt;A quick start – test your first quake mod level in flash:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;You created/downloaded a level and want to test it in the flash.&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;Use PakExplorer open PAK0.PAK, import (drag and drop) *.bsp into maps folder of PAK0.Pak, delete e1m1.bsp, rename your *.bsp to e1m1.bsp, save and recompile the flashproject. The first level of the game will be yours.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;If you download a mod’s PAK0.PAK (here are some:&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-size: 10pt;"&gt;&lt;a href="http://www.quaketerminus.com/" target="_blank"&gt;&lt;span style="font-family: Times New Roman;"&gt;http://www.quaketerminus.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;), just open it and the original PAK0.PAK by PakExplorer, right click and copy any *.bsp from MOD.PAK’s map folder and paste it in the original one’s map folder, delete or rename “&lt;i&gt;&lt;span style="color: green;"&gt;e1m1.bsp&lt;/span&gt;&lt;/i&gt;”, rename the mod’s .bsp to “&lt;span style="color: green;"&gt;&lt;i&gt;e1m1.bsp&lt;/i&gt;&lt;/span&gt;”, save the PAK file, rebuilt the swf and the first level will be changed.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;b&gt;P.S.&lt;/b&gt; a tip for moders: compile the swf everytime when you want to test your level is time consuming, because the “&lt;i&gt;&lt;span style="color: green;"&gt;Main.as&lt;/span&gt;&lt;/i&gt;” embed the “&lt;span style="color: green;"&gt;&lt;i&gt;PAK0.PAK&lt;/i&gt;&lt;/span&gt;” file to get a standalone swf, modify &lt;i&gt;Main.as&lt;/i&gt;, use Loader, let it load the "&lt;span style="color: green;"&gt;&lt;i&gt;PAK0.PAK&lt;/i&gt;&lt;/span&gt;", so you won’t need to recompile the swf any more whenever you change the “&lt;span style="color: green;"&gt;&lt;i&gt;PAK0.PAK&lt;/i&gt;&lt;/span&gt;”, (if you’re not clear of what I mean or how to do that, email me or leave a comment.)&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="copy" class="alignnone size-full wp-image-77220" height="552" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWDyljsGWmI/AAAAAAAAApI/haI2_huxJFM/s1600/copy.GIF.jpg" title="copy" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="delete" class="alignnone size-full wp-image-77221" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWDymZZ30hI/AAAAAAAAApM/4T8yAUytgWY/s1600/delete.GIF.jpg" title="delete" /&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;img alt="e1m1" class="alignnone size-full wp-image-77222" src="https://lh3.googleusercontent.com/_VM_xh6rvt_I/TWDymzx3E6I/AAAAAAAAApQ/GJ1V-RWEpiE/s1600/e1m1.GIF.jpg" title="e1m1" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;A&amp;nbsp;free (GPL) game&amp;nbsp;data (PAK file) for quake1 is here: &lt;a href="http://openquartz.sourceforge.net/index.html" target="_blank"&gt;http://openquartz.sourceforge.net/index.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;download &lt;a href="http://prdownloads.sourceforge.net/openquartz/oq-pak-bin-2004.08.01.zip?download" target="_blank"&gt;Game data in binary format&lt;/a&gt;, use PakExplorer open pak0~3.pak, copy all files in pak1~3.pak&amp;nbsp;into pak0.pak, repalce what's in &lt;span style="color: green;"&gt;&lt;i&gt;F:\alchemy\QuakeFlash\quakeswf\embed&lt;/i&gt; &lt;span style="color: black;"&gt;with&lt;/span&gt;&lt;/span&gt;"config.cfg" of openquartz and the newly created pak0.pak, compile&amp;nbsp;the project, you will get something like this:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;a href="http://www.quake-1.com/docs/flashquake/OpenQuartz.swf" target="_blank"&gt;http://www.quake-1.com/docs/flashquake/&lt;span style="color: #cc0033;"&gt;OpenQuartz.swf&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;b&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;LINKS&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;1. quake1 mods and tools: &lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;&lt;a href="http://www.quaketerminus.com/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.quaketerminus.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;2.&amp;nbsp;free web client version of &lt;span style="color: black;"&gt;Quake&lt;/span&gt;: &lt;span style="color: black;"&gt;&lt;a href="http://www.blogger.com/www.quakelive.com"&gt;http://www.blogger.com/www.quakelive.com&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;3. &lt;i&gt;&lt;a href="http://www.blogger.com/p/paperquake2/" id="project_summary_link" name="project_summary_link" style="color: black; text-decoration: none;"&gt;Quake 2 for Papervision3D&lt;/a&gt;:&lt;a href="http://code.google.com/p/paperquake2/" target="_blank"&gt;http://code.google.com/p/paperquake2/&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;&lt;i&gt;4.&lt;/i&gt; Flash quake/descent style renderer: &lt;a href="http://board.flashkit.com/board/showthread.php?t=749263" target="_blank"&gt;http://board.flashkit.com/board/showthread.php?t=749263&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;source: &lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://esl.eng.ohio-state.edu/%7Erac/hobby.html" target="_blank"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #0066cc; font-size: x-small;"&gt;http://esl.eng.ohio-state.edu/~rac/hobby.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;5. Quake 2’s Maps in Flash 10: &lt;a href="http://blog.promethe.net/2009/10/01/load-and-display-quake-2s-maps-in-flash-10/" target="_blank"&gt;http://blog.promethe.net/2009/10/01/load-and-display-quake-2s-maps-in-flash-10/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US" style="color: black; font-family: Verdana; font-size: 10pt;"&gt;&lt;span style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; text-decoration: none;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;6. alternativa 3d quake: &lt;a href="http://makc.googlecode.com/svn/trunk/flash/alternativa3d_quake/quake.swf" target="_blank"&gt;http://makc.googlecode.com/svn/trunk/flash/alternativa3d_quake/quake.swf&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;7. Quake2-based 3D renderer for flash using HaXe:&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;a href="http://hxquake.appspot.com/html/index.html"&gt;http://hxquake.appspot.com/html/index.html&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;a href="http://code.google.com/p/hxquake/" target="_blank"&gt;http://code.&lt;span class="t_tag" href="http://bbs.9ria.com/tag.php?name=google"&gt;google&lt;/span&gt;.com/p/hxquake/&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/TVIlkibD-rI/AAAAAAAAAoM/xSjpushH6G4/s1600/hxqk1.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="149" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/TVIlkibD-rI/AAAAAAAAAoM/xSjpushH6G4/s200/hxqk1.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-1970410079015200712?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/1970410079015200712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=1970410079015200712&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1970410079015200712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1970410079015200712'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/12/simple-tutorial-for-using-alchemy-quake.html' title='A simple tutorial for using Alchemy Quake Engine to create your own  FPS game!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/_VM_xh6rvt_I/TWDyjZ1mdoI/AAAAAAAAApA/LiKUuuJ1zkU/s72-c/a-custom-quake-map-in-flash-300x2472.GIF.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-444518473526837718</id><published>2009-11-28T07:53:00.001-08:00</published><updated>2011-01-13T06:31:20.254-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><title type='text'>Quake in flash using alchemy, source and swf available online now!</title><content type='html'>Thanks to &lt;a href="http://github.com/mkr3142" onclick="javascript:pageTracker._trackPageview('/outbound/article/github.com');" target="_blank"&gt;Michael Rennie&lt;/a&gt;,&lt;br /&gt;&lt;strong&gt;Play the game online&lt;/strong&gt;: &lt;a href="http://www.silvergames.com/game/quake-flash/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.silvergames.com');" target="_blank"&gt;http://www.silvergames.com/game/quake-flash/&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Source Code&lt;/span&gt;&lt;/strong&gt;: &lt;a href="http://github.com/mkr3142/QuakeFlash" onclick="javascript:pageTracker._trackPageview('/outbound/article/github.com');" target="_blank"&gt;http://github.com/mkr3142/QuakeFlash&lt;/a&gt;&lt;br /&gt;Great news!&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-444518473526837718?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/444518473526837718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=444518473526837718&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/444518473526837718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/444518473526837718'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/11/quake-in-flash-using-alchemy-source-and.html' title='Quake in flash using alchemy, source and swf available online now!'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-7439581116217959648</id><published>2009-09-18T07:07:00.001-07:00</published><updated>2011-02-20T03:53:28.486-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Build your doom in flash step by step - Instructions for compile  alchemy doom</title><content type='html'>&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;It is when I found &lt;a href="http://www.newgrounds.com/portal/view/470460" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.newgrounds.com');" target="_blank"&gt;this game&lt;/a&gt; I began to believe how useful adobe alchemy will be.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Finally, the classical doom was ported into flash player as an playable game!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Thanks to adobe alchemy and Mike(&lt;a href="http://mike.newgrounds.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/mike.newgrounds.com');" target="_blank"&gt;http://mike.newgrounds.com/&lt;/a&gt;), who made it and shared the source!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;I am not an expert on doom , alchemy or even flash but I feel glad to share&amp;nbsp;what I know about&lt;/span&gt;&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;this project with those who like doom and flash.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;This simple tutorial is the first step to build your doom in flash using Mike’s source, hope it can help.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;strong&gt;&amp;nbsp;&lt;span style="font-size: medium;"&gt;PART 1 - COMPILE THE SOURCE&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;1.&amp;nbsp; get the souce code&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;(1) simplely download this packge:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://flaswf.googlecode.com/files/alchemy_linuxdoom-1.10_by_Mike.zip" onclick="javascript:pageTracker._trackPageview('/outbound/article/flaswf.googlecode.com');" target="_blank"&gt;&lt;strong&gt;&lt;span style="font-size: large;"&gt;http://fla&lt;span class="t_tag" onclick="tagshow(event)"&gt;swf&lt;/span&gt;.googlecode.com/files/alchemy_linuxdoom-1.10_by_Mike.zip&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;(include Mike’s source(mybe outdated, try (2) to get the latest source) and my flashdevelop project file,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: royalblue;"&gt;just open "&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: royalblue;"&gt;my doom project.as3proj"(alchemy_linuxdoom-1.10\my doom project\.) and build it you will get the "doom.swf"(\bin\.).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;no pre-loader in this package,&lt;/span&gt;&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;if you want that, go to the project home or make your own.)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;(2) gip &lt;a href="http://github.com/Herschel/flash-doom/tree/master" onclick="javascript:pageTracker._trackPageview('/outbound/article/github.com');" target="_blank"&gt;http://github.com/Herschel/flash-doom/tree/master&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;1.download this sofeware &lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://msysgit.googlecode.com/files/Git-1.6.4-preview20090730.exe" onclick="javascript:pageTracker._trackPageview('/outbound/article/msysgit.googlecode.com');" style="white-space: nowrap;" target="_blank"&gt;&lt;span style="color: #0000cc;"&gt;Git-1.6.4-preview20090730.exe&lt;/span&gt;&lt;/a&gt;&amp;nbsp;from&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://code.google.com/p/msysgit/downloads/list" onclick="javascript:pageTracker._trackPageview('/outbound/article/code.google.com');" target="_blank"&gt;http://code.google.com/p/msysgit/downloads/list&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;install and run "Git bash":&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;git clone git://github.com/Herschel/flash-doom.git&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="git0" class="alignnone size-full wp-image-38787" height="438" src="https://lh6.googleusercontent.com/_VM_xh6rvt_I/TWD-SoNv_DI/AAAAAAAAAqc/lCU6jtYeK4Q/git0.jpg" title="git0" width="669" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;when done go to&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;"C:\Documents and Settings\user\flash-doom" and find your source.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;you can also download raw file directly one by one&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;(&lt;a href="http://github.com/Herschel/flash-doom/blob/7fa25473c3285d3258d27818ec06d1ebc2fb87ed/src/as3/DoomGame.as" onclick="javascript:pageTracker._trackPageview('/outbound/article/github.com');" target="_blank"&gt;http://github.com/Herschel/flash-doom/blob/7fa25473c3285d3258d27818ec06d1ebc2fb87ed/src/as3/DoomGame.as&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;-click raw on the right of the title)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;2. install alchemy&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;follow the instructions:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Getting_Started" onclick="javascript:pageTracker._trackPageview('/outbound/article/labs.adobe.com');" target="_blank"&gt;http://labs.adobe.com/wiki/index.php/Alchemy &lt;img align="absBottom" alt=":D" border="0" class="wp-smiley" src="http://extra-001.yo2cdn.com/wp-includes/images/smilies/icon_biggrin.gif" /&gt; ocumentation:Getting_Started&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;P.S. you&amp;nbsp;should install&amp;nbsp;"make(Devel ) packages" when&amp;nbsp;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;installing &lt;a class="external" href="http://www.cygwin.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.cygwin.com');" rel="nofollow" target="_blank" title="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;3. compile the source code&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Download the source files and copy them to D:\alchemy\(supposed you install alchemy into this folder)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Run Cygwin go to the alchemy_linuxdoom-1.10 folder and compile the source:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;cd D:&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;cd alchemy/alchemy_linuxdoom-1.10)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;source /cygdrive/d/alchemy/alchemy-setup&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;alc-on&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;make&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="cygwin_setup_make" class="alignnone size-full wp-image-38788" height="438" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWD-Q2OFwOI/AAAAAAAAAqM/iZc6Nc3jevk/cygwin_setup_make.jpg" title="cygwin_setup_make" width="669" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;It will take some time to finish compiling all c source files into a swc.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;When you see this:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="make_incomplete" class="alignnone size-full wp-image-38789" height="438" src="https://lh6.googleusercontent.com/_VM_xh6rvt_I/TWD-TdCoYCI/AAAAAAAAAqk/-XgzGLwRSSc/make_incomplete.jpg" title="make_incomplete" width="669" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;You can find lots of .o file in your swc folder, compilation is almost done,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;it will now pause for a while, and then build all .o file into a swc:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="make_done" class="alignnone size-full wp-image-38794" height="438" src="https://lh6.googleusercontent.com/_VM_xh6rvt_I/TWD-S-Wul3I/AAAAAAAAAqg/cltluM-KkEg/make_done.jpg" title="make_done" width="669" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;When it is done, go to &lt;span style="color: black;"&gt;"&lt;span style="color: royalblue;"&gt;&lt;span style="color: black;"&gt;swc"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; folder and copy the generated "doom.swc" to your project folder.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;4.create your flashdevelop project&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Create an flashdevelop project:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="flashdevelop_project" class="alignnone size-medium wp-image-38791" height="262" src="https://lh4.googleusercontent.com/_VM_xh6rvt_I/TWD-SH7PHYI/AAAAAAAAAqY/5E6tMuCt8NQ/flashdevelop_project-300x262.jpg" title="flashdevelop_project" width="300" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Copy "DoomGame.as" into "D:\alchemy\alchemy_linuxdoom-1.10\my build\src"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;and "doom1.wad" into&amp;nbsp;"D:\alchemy\alchemy_linuxdoom-1.10\my build\lib"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;add the swc asset:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="addswc" class="alignnone size-full wp-image-38792" height="487" src="https://lh6.googleusercontent.com/_VM_xh6rvt_I/TWD-QkM3sGI/AAAAAAAAAqI/jafGcZWcFF0/addswc.jpg" title="addswc" width="438" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;DoomGame.as - (right click) always compile&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Properties -&amp;nbsp;Output -&amp;nbsp;platform target - flash player 10&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="project" class="alignnone size-full wp-image-38793" height="232" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWD-TyhxZSI/AAAAAAAAAqs/YlKK8dGskKA/project.jpg" title="project" width="170" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Build your project now!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Finally find your "&lt;span style="color: royalblue;"&gt;doom.swf&lt;/span&gt;" in bin folder&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;and Run it,&amp;nbsp;Press&amp;nbsp;space key - new game...&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;PART 2 - CREATE YOUR FLASH FPS GAME POWERED BY ALCHEMY DOOM ENGINE&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;1.create/add new levels – doom builder&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.doombuilder.com/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.doombuilder.com');" target="_blank"&gt;http://www.doombuilder.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Doom Builder.exe-file-open map/new map-"doom1.wad"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Game Configuration-Doom&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Add resourc-From WAD File-doom1.wad–ok&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="db0" class="alignnone size-full wp-image-38795" height="531" src="https://lh3.googleusercontent.com/_VM_xh6rvt_I/TWD-RSPJzPI/AAAAAAAAAqQ/ffP742dXdMw/s512/db0.jpg" title="db0" width="426" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="db1" class="alignnone size-full wp-image-38796" height="534" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWD-R-11OfI/AAAAAAAAAqU/tIa347xrg8w/s512/db1.jpg" title="db1" width="548" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Now you&amp;nbsp;need to&amp;nbsp;learn how to use this software to make new levels by yourself.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;When done:File-save map into-choose your wad.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;2.make total conversations -&amp;nbsp;XWE&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.doomworld.com/xwe/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.doomworld.com');" target="_blank"&gt;http://www.doomworld.com/xwe/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Xwe.exe-file open-"doom1.wad"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;img alt="xwe0" class="alignnone size-large wp-image-38797" height="336" src="https://lh5.googleusercontent.com/_VM_xh6rvt_I/TWD-QdvzSoI/AAAAAAAAAqE/b0FO4yTyWh0/s912/xwe0-1024x525.jpg" title="xwe0" width="711" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Play with this powerful editor, you&amp;nbsp;can create a totally different&amp;nbsp; game!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Don't forget to&amp;nbsp;replace the original "doom1.wad" with the new edited one when rebuilt your game!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;1.some doom ports:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.doomworld.com/classicdoom/ports/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.doomworld.com');" target="_blank"&gt;http://www.doomworld.com/classicdoom/ports/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;2.the doom game:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.idsoftware.com/games/doom/doom-final/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.idsoftware.com');" target="_blank"&gt;http://www.idsoftware.com/games/doom/doom-final/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;3.doomonline-&lt;span lang="EN-US" style="font-size: 18pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US" style="font-size: 12pt;"&gt;&lt;a href="http://code.google.com/p/doomedonline/" onclick="pageTracker._trackPageview('/outbound/article/code.google.com');" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;A port of Doom for Flash&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;span lang="EN-US" style="font-size: 12pt;"&gt;by&lt;/span&gt; &lt;span lang="EN-US" style="font-size: 12pt;"&gt;&lt;a href="http://blog.brokenfunction.com/" onclick="pageTracker._trackPageview('/outbound/article/blog.brokenfunction.com');" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;Max Herkender&lt;/span&gt;&lt;/a&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US" style="font-size: 18pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US" style="font-size: 12pt;"&gt;&lt;span lang="EN-US" style="font-size: 18pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://code.google.com/p/doomedonline/" onclick="pageTracker._trackPageview('/outbound/article/code.google.com');" target="_blank"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #0066cc;"&gt;http://code.google.com/p/doomedonline/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US" style="font-size: 18pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US" style="font-size: 12pt;"&gt;&lt;span lang="EN-US" style="font-size: 18pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10.5pt;"&gt;&lt;a href="http://blog.brokenfunction.com/2007/07/20/flash-plays-doom/" onclick="pageTracker._trackPageview('/outbound/article/blog.brokenfunction.com');" target="_blank"&gt;&lt;span style="color: #0066cc;"&gt;&lt;span style="font-size: small;"&gt;http://blog.brokenfunction.com/2007/07/20/flash-plays-doom/&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;4.&lt;span lang="EN-US" style="font-size: 12pt;"&gt;Ryan A. Chilton’s &lt;strong&gt;Flash doom &amp;amp; quake&lt;/strong&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://esl.eng.ohio-state.edu/~rac/hobby.html" onclick="pageTracker._trackPageview('/outbound/article/esl.eng.ohio-state.edu');" target="_blank"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #0066cc;"&gt;http://esl.eng.ohio-state.edu/~rac/hobby.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;5.doom 2d flash:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.codinsoft.de/doom2d.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.codinsoft.de');" target="_blank"&gt;http://www.codinsoft.de/doom2d.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;6.&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;game-&lt;a class="l" href="http://www.newgrounds.com/portal/view/470460" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.newgrounds.com');" onmousedown="return clk(0,'','','res','1','')" target="_blank"&gt;&lt;span style="color: #cc0033;"&gt;Doom&lt;/span&gt; &lt;span style="color: #2200cc;"&gt;Triple Pack&lt;/span&gt;&lt;/a&gt;&lt;span class="std nobr"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="std nobr"&gt;(&lt;span style="color: #cc0033;"&gt;Doom&lt;/span&gt;, Heretic, and Hexen):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="std nobr"&gt;&lt;a href="http://www.newgrounds.com/portal/view/470460" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.newgrounds.com');" target="_blank"&gt;http://www.newgrounds.com/portal/view/470460&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;7.doom in java applet:&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;a href="http://jpc.sourceforge.net/"&gt;http://jpc.sourceforge.net/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;Any question or problem please feel free to drop your comment!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-7439581116217959648?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/7439581116217959648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=7439581116217959648&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7439581116217959648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7439581116217959648'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/09/build-your-doom-in-flash-step-by-step.html' title='Build your doom in flash step by step - Instructions for compile  alchemy doom'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/_VM_xh6rvt_I/TWD-SoNv_DI/AAAAAAAAAqc/lCU6jtYeK4Q/s72-c/git0.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-5891174298087271547</id><published>2009-08-18T23:10:00.001-07:00</published><updated>2011-02-08T20:27:10.773-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='Alchemy'/><category scheme='http://www.blogger.com/atom/ns#' term='ray-casting'/><title type='text'>Adobe Alchemy Ray Caster Port</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;======== UPDATE 2010, April 5======== &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Source Code Released: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;a href="http://bruce-lab.blogspot.com/2010/04/alchemy-ray-casting-engine-source-code.html"&gt;http://bruce-lab.blogspot.com/2010/04/alchemy-ray-casting-engine-source-code.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;======== UPDATE 2010, April 5======== &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Interested in ray casting, I once wanted to port&lt;/span&gt; &lt;a href="http://www.student.kuleuven.be/~m0216922/CG/raycasting.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.student.kuleuven.be');" target="_blank"&gt;&lt;span style="font-size: small;"&gt;this&lt;/span&gt;&lt;/a&gt; &lt;span style="font-size: small;"&gt;C++ code to as3.&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Don't have much time for that and have little faith in as3's speed, I haven't done that yet.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Then I knew adobe alchemy, played Mike's Doom port and decided to have a try using Alchemy.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;A Wolfenstein 3D is to complicated for me but this simple code is just fine. Not used to C/C++ programing any more, I got lots and lots of&lt;/span&gt;&lt;/span&gt; &lt;span style="font-size: small;"&gt;warnings when compiling my swc. Luckily, it works in the end.&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I first tried no textures, then one texture and finally full textures.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;The swf looks all right but it is a mess behind what you see. Lots of work need to be done with the source code.&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;&lt;span style="font-size: small;"&gt;DEMO:&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://flaswf.googlecode.com/files/Alchemy_RayCaster_DEMO.swf" onclick="javascript:pageTracker._trackPageview('/outbound/article/flaswf.googlecode.com');" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://flaswf.googlecode.com/files/Alchemy_RayCaster_DEMO.swf&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;img border="0" h5="true" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/TVIVp2doO3I/AAAAAAAAAn0/WP69tw_--Bc/s1600/arcnotex-300x247.jpg" /&gt;&lt;img border="0" h5="true" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/TVIViF-tYKI/AAAAAAAAAno/iuu2VSMcD7k/s1600/arc1tex-300x247.jpg" /&gt;&lt;img border="0" h5="true" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/TVIVlI22uAI/AAAAAAAAAns/aG51fJLuWSs/s1600/arc_1-300x247.jpg" /&gt;&lt;img border="0" h5="true" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/TVIVpX2dObI/AAAAAAAAAnw/iLiKzzOtoWQ/s1600/arc_2-300x247.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Besides this simple test, I also played with a voxel terrain engine (as3 port by me available here) and other old school effects using Alchemy.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;img border="0" h5="true" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/TVIVusT8QiI/AAAAAAAAAoA/BMSylJNehQE/s1600/voxel-150x150.jpg" /&gt;&lt;img border="0" h5="true" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/TVIVslC520I/AAAAAAAAAn4/Ka79_psF_dU/s1600/nioise-150x150.jpg" /&gt;&lt;img border="0" h5="true" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/TVIVtI9IZPI/AAAAAAAAAn8/DC9EJlCnkQ4/s1600/tunnel-150x150.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-5891174298087271547?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/5891174298087271547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=5891174298087271547&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/5891174298087271547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/5891174298087271547'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/08/adobe-alchemy-ray-caster-port.html' title='Adobe Alchemy Ray Caster Port'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VM_xh6rvt_I/TVIVp2doO3I/AAAAAAAAAn0/WP69tw_--Bc/s72-c/arcnotex-300x247.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-1402839520269274743</id><published>2009-07-06T20:44:00.000-07:00</published><updated>2011-11-17T05:52:26.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='ray-casting'/><title type='text'>Ray casting in Flash</title><content type='html'>&lt;span lang="EN-US"&gt;Ray casting is a technology used in many old ‘3D’ games such as Wolfenstein 3D&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;DOOM. Game engine use ray casting is also called a 2.5 D engine.&lt;/span&gt; &lt;span lang="EN-US"&gt;The limitation of a simple ray casting engine in Wolfenstein 3D is that you can't look up or down – you can’t rotate X axis. Ray casting is fast and simple so before flash 10 which supports 3d, many people used this technology to make some 3D effect. Ray casting can easily create a maze-like world of walls. You can render terrains, too. Terrain rendering is much different from walls, it is also called voxel rendering.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;Here are some information about voxel terrains and volume rendering:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://bruce-lab.blogspot.com/2009/01/terrain-rendering-in-flash.html" target="_blank"&gt;http://bruce-lab.blogspot.com/2009/01/terrain-rendering-in-flash.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;Ray casting is different from mode7, mode7 is much more simple,  good at rendering floors or grounds, but can’t do with walls.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;I collected some good examples of flash based ray casting:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;1.&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US" style="line-height: 120%;"&gt;&lt;span lang="EN-US" style="line-height: 120%;"&gt;Wolfenstein 3D flash ported by Glen Rhodes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US" style="line-height: 120%;"&gt;&lt;span lang="EN-US" style="line-height: 120%;"&gt;&lt;b&gt;Flash ray engine&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US" style="line-height: 120%;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;a href="http://www.glenrhodes.com/wolf/" target="_blank"&gt;http://www.glenrhodes.com/wolf/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="180" src="http://lh4.ggpht.com/_VM_xh6rvt_I/SlIRAPclOhI/AAAAAAAAAcs/nlT2SmYBhEU/s288/flashrayengine.jpg" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;2.&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;b&gt;Andre Michelle’s ray caster&lt;/b&gt;(&lt;span style="color: red;"&gt;s&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;span style="color: red;"&gt;ource available&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;(1)AS3 version&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;a href="http://lab.andre-michelle.com/raycaster-v3" target="_blank"&gt;http://lab.andre-michelle.com/raycaster-v3&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;img alt="" class="alignnone" height="187" src="http://lh6.ggpht.com/_VM_xh6rvt_I/SlIQ-L_3StI/AAAAAAAAAck/FTXQdH5ta4A/s288/amrayv3.JPG" width="288" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;(2)old as2 version&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://recycle.andre-michelle.com/as2/packages.zip" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://recycle.andre-michelle.com/as2/packages.zip&lt;/span&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;You can find the source in ‘fla/examples/pro/raycasting’&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="155" src="http://lh3.ggpht.com/_VM_xh6rvt_I/SlIWrLRsdHI/AAAAAAAAAeU/yH3tOQpvGPk/s288/amray.JPG" width="240" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;3&lt;b&gt;.fast ray casting engine&lt;/b&gt;(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;a href="http://git.runtimeterror.com/?p=rayfaster1.git;a=summary"&gt;http://git.runtimeterror.com/?p=rayfaster1.git;a=summary&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://gimme.badsectoracula.com/rayfaster/" target="_blank"&gt;http://gimme.badsectoracula.com/rayfaster/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="215" src="http://lh6.ggpht.com/_VM_xh6rvt_I/SlIQ9vHFq2I/AAAAAAAAAcg/xeFxBdqHatI/s288/rayfaster.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="252" src="http://lh4.ggpht.com/_VM_xh6rvt_I/SlIQ9cT4UVI/AAAAAAAAAcc/mMbbejWI1hs/s288/mapasrf.png.jpg" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;4.&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;b&gt;half baked ray casting&lt;/b&gt; (&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;very powerful but use c processor.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;Demo:&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://hbrc.sourceforge.net/" target="_blank" title="http://hbrc.sourceforge.net/"&gt;&lt;span style="font-size: small;"&gt;http://hbrc.sourceforge.net/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;Source:&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://sourceforge.net/projects/hbrc" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://sourceforge.net/projects/hbrc&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;&lt;img alt="" class="alignnone" height="144" src="http://lh3.ggpht.com/_VM_xh6rvt_I/SlIQ_HpkUPI/AAAAAAAAAco/y70bPGZydf8/s288/Half%20Baked%20Raycaster.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;5&lt;b&gt;.Pixel raycasting engine&lt;/b&gt; (&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;a href="http://www.digital-ist-besser.de/tryouts/raycasting_pixelbased/" target="_blank"&gt;http://www.digital-ist-besser.de/tryouts/raycasting_pixelbased/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;(Broken link)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="160" src="http://lh6.ggpht.com/_VM_xh6rvt_I/SlIRJ_EkrmI/AAAAAAAAAdc/LC8BALW9B_w/s288/raycaster_movieclip_slice.JPG" width="240" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="174" src="http://lh3.ggpht.com/_VM_xh6rvt_I/SlIRS7zdvhI/AAAAAAAAAd4/hQq28rfo1tY/s288/Raycaster_pixel.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://zhoubu1988.googlepages.com/digital-ist-besser.de_as3raycaster.zip" target="_blank"&gt;&lt;span style="font-size: small;"&gt;as3 source&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;6.&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.furi.dk/raycaster/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;http://www.furi.dk/raycaster/&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="216" src="http://lh4.ggpht.com/_VM_xh6rvt_I/SlIRBJBdnZI/AAAAAAAAAcw/uUx2m9rzRpE/s288/furi.dk-raycaster.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;7.&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;b&gt;Strille’s ray caster&lt;/b&gt;(flash5)(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.strille.net/works/raycasting_v2.swf" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.strille.net/works/raycasting_v2.swf&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.strille.net/works/raycasting.swf" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.strille.net/works/raycasting.swf&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; &lt;span lang="EN-US"&gt;(source available at flashkit)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;img alt="" class="alignnone" height="217" src="http://lh5.ggpht.com/_VM_xh6rvt_I/SlIRCHu6F_I/AAAAAAAAAc0/L3tTUQFu5Sw/s288/strille_raycaster.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;8&lt;/span&gt;&lt;span lang="EN-US"&gt;.&lt;/span&gt;&lt;span lang="EN-US"&gt;Frédéric Heintz, aka FredH’s &lt;b&gt;flash maze&lt;/b&gt;(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.fredheintz.com/sitefred/flash/maze/maze.html" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.fredheintz.com/sitefred/flash/maze/maze.html&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US"&gt;Find the flash8 source at&lt;/span&gt; &lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.fredheintz.com/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.fredheintz.com&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span lang="EN-US"&gt;This one also has a simple editor.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="218" src="http://lh5.ggpht.com/_VM_xh6rvt_I/SlIRCusAwII/AAAAAAAAAc4/CfacJKkMKHM/s288/raycasting_maze.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;img alt="" class="alignnone" height="195" src="http://lh3.ggpht.com/_VM_xh6rvt_I/SlIREmCK1vI/AAAAAAAAAc8/1i80tENVgKs/s288/raycasting_maze_editor.JPG" width="288" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;9.&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;a href="http://code.google.com/p/doomedonline/" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;&lt;b&gt;doomedonline&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://code.google.com/p/doomedonline/" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;A port of Doom for Flash&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;span lang="EN-US"&gt;by&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;a href="http://blog.brokenfunction.com/" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;Max Herkender&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://code.google.com/p/doomedonline/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://code.google.com/p/doomedonline/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;a href="http://blog.brokenfunction.com/2007/07/20/flash-plays-doom/" target="_blank"&gt;http://blog.brokenfunction.com/2007/07/20/flash-plays-doom/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;&lt;img alt="" class="alignnone" height="210" src="http://lh3.ggpht.com/_VM_xh6rvt_I/SlIRFO4UfJI/AAAAAAAAAdA/y59wK_CSKg8/s288/doomonline.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;10.&lt;/span&gt; &lt;span lang="EN-US"&gt;Ryan A. Chilton’s &lt;b&gt;Flash doom &amp;amp; quake&lt;/b&gt;(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://esl.eng.ohio-state.edu/%7Erac/hobby.html" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://esl.eng.ohio-state.edu/~rac/hobby.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;&lt;img alt="" class="alignnone" height="179" src="http://lh4.ggpht.com/_VM_xh6rvt_I/SlIRJkHrPZI/AAAAAAAAAdY/4geto1k9iXw/s288/flashdoom.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;&lt;img alt="" class="alignnone" height="181" src="http://lh6.ggpht.com/_VM_xh6rvt_I/SlIRIb3SsSI/AAAAAAAAAdU/DG9-HHxusmk/s288/flashquake.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;11.Another simple as3 raycaster&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.signalsondisplay.com/blog/wp-content/uploads/as3/raycaster/Raycaster.html" target="_blank"&gt;http://www.signalsondisplay.com/blog/wp-content/uploads/as3/raycaster/Raycaster.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;img alt="" class="alignnone" height="214" src="http://lh5.ggpht.com/_VM_xh6rvt_I/SldW0AE1gSI/AAAAAAAAAfQ/PEqRLsB5BJk/s288/anothersimraycst.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;12.&lt;a href="http://peaceoutside.org/3d.php" target="_blank"&gt;http://peaceoutside.org/3d.php&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;img alt="" class="alignnone" height="155" src="http://lh5.ggpht.com/_VM_xh6rvt_I/SlhAHeQ7DhI/AAAAAAAAAfs/ebiq9lZpD74/s288/peaceoutside%20raycaster.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;13.ericlin’s &lt;b&gt;3d maze&lt;/b&gt;(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://ericlin2.tripod.com/f3d/maze3d5.html" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://ericlin2.tripod.com/f3d/maze3d5.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.gotoandplay.it/_articles/2004/07/el_maze3d.php" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://www.gotoandplay.it/_articles/2004/07/el_maze3d.php" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://www.gotoandplay.it/_articles/2004/07/el_maze3d.php" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.gotoandplay.it/_articles/2004/07/el_maze3d.php&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;img alt="" class="alignnone" height="210" src="http://lh6.ggpht.com/_VM_xh6rvt_I/SlIRHhoJ8uI/AAAAAAAAAdQ/XcBFB2WSWVY/s288/ericlin3dmaze.JPG" width="288" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;This one is not ray casting. It skews movieclips to create a perspective wall effect which is similar to raycasting.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;====================&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;b&gt;TUTORIALS&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;1. F. Permadi’s Ray-Casting Tutorial&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.permadi.com/tutorial/raycast/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.permadi.com/tutorial/raycast/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;java source:&lt;a href="http://www.permadi.com/java/rayc/Rayc.java" target="_blank"&gt;http://www.permadi.com/java/rayc/Rayc.java&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;2.&lt;/span&gt; &lt;span lang="EN-US"&gt;Lode's Computer Graphics Tutorial-Raycasting (&lt;span style="color: red;"&gt;c++ source available&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.student.kuleuven.be/%7Em0216922/CG/raycasting.html" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://www.student.kuleuven.be/%7Em0216922/CG/raycasting.html" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://www.student.kuleuven.be/%7Em0216922/CG/raycasting.html" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.student.kuleuven.be/~m0216922/CG/raycasting.html&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;3. Another&lt;/span&gt; &lt;span lang="EN-US"&gt;Raycasting Engine Tutorial&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.iirc.net/petes/" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://www.iirc.net/petes/" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://www.iirc.net/petes/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.iirc.net/petes/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;4. Advanced raycasting techniques (Line based raycasting/Doom style, instead of cell based/Wolf style)&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.iirc.net/petes/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.gamedev.net/page/resources/_/technical/graphics-programming-and-theory/advanced-raycasting-techniques-r872&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;====================&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;b&gt;LINKS&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;1.&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;a href="http://en.wikipedia.org/wiki/Id_Software" target="_blank" title="Id Software"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;id Software&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;’s Wolfenstein3D source code&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;Find it here:&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="ftp://ftp.idsoftware.com/idstuff/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;ftp://ftp.idsoftware.com/idstuff/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;2.&lt;/span&gt; &lt;span lang="EN-US"&gt;A fast java raycaster like doom or wolfenstein 3D (&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.shinelife.co.uk/java-maze/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.shinelife.co.uk/java-maze/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US" style="font-family: 'Times New Roman';"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;&lt;img alt="" class="alignnone" height="230" src="http://lh3.ggpht.com/_VM_xh6rvt_I/SlIRGpwuQ1I/AAAAAAAAAdI/yPdHfb2-jM4/s288/javamaze.jpg" width="230" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;3.&lt;/span&gt; &lt;span lang="EN-US"&gt;Wolfenstein 3D  in&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;a href="http://www.ozoneasylum.com/29836" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;20 lines of JavaScript&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;span lang="EN-US"&gt;by&lt;/span&gt; &lt;span lang="EN-US"&gt;&lt;a href="http://www.p01.org/" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;Mathieu 'p01' Henri&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;span lang="EN-US"&gt;(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span class="MsoHyperlink"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.p01.org/releases/20_lines_Castle_Wolfenstein/" target="_blank"&gt;&lt;span style="font-size: small;"&gt;http://www.p01.org/releases/20_lines_Castle_Wolfenstein/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;img alt="" class="alignnone" height="143" src="http://lh6.ggpht.com/_VM_xh6rvt_I/SlIRHduqvII/AAAAAAAAAdM/L2ZOVwx2_UM/s288/20linejswolf.JPG" width="288" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;4.&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.ozoneasylum.com/29836" target="_blank"&gt;&lt;span style="color: windowtext; text-decoration: none;"&gt;JavaScript&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;span lang="EN-US"&gt;ray caster by Ben Joffe&lt;/span&gt;&lt;span lang="EN-US"&gt;(&lt;span style="color: red;"&gt;source available&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.benjoffe.com/code/demos/canvascape/textures" target="_blank"&gt;http://www.benjoffe.com/code/demos/canvascape/textures&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;5.Flash AS3 Ray Casting Tutorial with example and source&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.rustyarcade.com/blog/read/33/Ray-Casting-Tutorial" target="_blank"&gt;http://www.rustyarcade.com/blog/read/33/Ray-Casting-Tutorial&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;=============================================&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;&lt;span style="color: red;"&gt;UPDATE(2009-12-4)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;span lang="EN-US"&gt;rayfaster 2 test:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.badsectoracula.com/peponi/rayfaster2/" target="_blank"&gt;http://www.badsectoracula.com/peponi/rayfaster2/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-1402839520269274743?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/1402839520269274743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=1402839520269274743&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1402839520269274743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1402839520269274743'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/07/ray-casting-in-flash.html' title='Ray casting in Flash'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_VM_xh6rvt_I/SlIRAPclOhI/AAAAAAAAAcs/nlT2SmYBhEU/s72-c/flashrayengine.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-282308736430071999</id><published>2009-05-15T04:29:00.000-07:00</published><updated>2010-08-07T02:26:41.060-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pixel'/><category scheme='http://www.blogger.com/atom/ns#' term='filter'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>Image Binarization and Edge Tracing in Flash</title><content type='html'>Image binarization and edge tracing are some old school image technologies.&lt;br /&gt;&lt;div&gt;&lt;div&gt;Just played with them in as3 when I was trying to create &lt;a href="http://bruce-lab.blogspot.com/2009/04/cartoonize-image-by-as30.html"&gt;a cartoon filter for flash&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Those techs are pixel level transformations, get/setPixel and get/setPixel32 can do that job,&lt;/div&gt;&lt;div&gt;it works slow, though.&lt;/div&gt;&lt;div&gt;The result,&lt;/div&gt;original image:&lt;br /&gt;&lt;div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 300px; CURSOR: hand" border="0" alt="" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/Sesfbp7U3bI/AAAAAAAAAZs/m-FqaQ_wOk4/s400/original.jpg" /&gt;Binarized image:&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 301px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5335662990536916050" border="0" alt="" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SgwVOGgmvFI/AAAAAAAAAaM/UuJlWpj4lJ0/s400/binarized.JPG" /&gt;&lt;/div&gt;&lt;div&gt;Edge:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 300px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5335662995029829634" border="0" alt="" src="http://lh5.ggpht.com/_VM_xh6rvt_I/SgwVOXPzKAI/AAAAAAAAAaU/BHahLars0RE/s400/edge_trace.JPG" /&gt;&lt;br /&gt;Nothing new here. But if you need it, here are the codes:&lt;br /&gt;&lt;pre class="brush:as3"&gt;&lt;br /&gt;/**&lt;br /&gt; *Simple Image Binarization and Edge Tracing Test in ActionScript3.0&lt;br /&gt; *May. 15, 2009&lt;br /&gt; *Bruce Jawn&lt;br /&gt; *http://bruce-lab.blogspot.com/&lt;br /&gt; *http://www.geocities.com/zhoubu1988&lt;br /&gt;  &lt;br /&gt; *Feel Free To Use This Code!&lt;br /&gt; *Build this class file with FLEX or FlashDevelop &lt;br /&gt; *OR Set Document Class in Flash IDE (9 and above)&lt;br /&gt; *OR just copy what between "TIMELINE CODES BEGIN&lt;&lt;"*"&gt;&gt;TIMELINE CODES END"-&lt;br /&gt; *to Flash IDE TIMELINE and Press Ctrl+Enter.-&lt;br /&gt; *Don't forget to give your image a linkage-"SourceImage"-&lt;br /&gt; *and remove "//" before "var mytex:..."!&lt;br /&gt; **/&lt;br /&gt;package {&lt;br /&gt; import flash.display.*;&lt;br /&gt; //[SWF(backgroundColor="#000000", frameRate="12", width="550", height="400")]&lt;br /&gt; public class IBET_Test_Timeline_Class extends Sprite {&lt;br /&gt;  [Embed(source='Your_Image_URL_Here.jpg')]&lt;br /&gt;  private var SourceImage:Class;&lt;br /&gt;  public function IBET_Test_Timeline_Class():void {&lt;br /&gt;   var mytex:BitmapData=(new SourceImage()).bitmapData;&lt;br /&gt;   //------------------------------------------------&lt;br /&gt;   //TIMELINE CODES BEGIN&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;br /&gt;   //var mytex:BitmapData=new SourceImage(0,0);&lt;br /&gt;   var w:int=mytex.width;&lt;br /&gt;   var h:int=mytex.height;&lt;br /&gt;   var c:Array=new Array(256);&lt;br /&gt;&lt;br /&gt;   function look(a:int,b:int):void {&lt;br /&gt;    for (var i:int=0; i&lt; a; i++) {&lt;br /&gt;     c[i]=0x00ffffff;&lt;br /&gt;    }&lt;br /&gt;    for (var i:int=a; i&lt; a+b-1; i++) {&lt;br /&gt;     c[i]=0x00000000;&lt;br /&gt;    }&lt;br /&gt;    for (var i:int=a+b-1; i&lt;=255; i++) {&lt;br /&gt;     c[i]=0x00ffffff;&lt;br /&gt;    }&lt;br /&gt;   }//end of function look&lt;br /&gt;&lt;br /&gt;   look(50,100);&lt;br /&gt;&lt;br /&gt;   var outB:BitmapData=new BitmapData(w,h,false,0x000000);//Binarized Image&lt;br /&gt;&lt;br /&gt;   //Graylize Source Image&lt;br /&gt;   for (var i:int=w-1; i&gt;=0; i--) {&lt;br /&gt;    for (var j:int=0; j&lt;=h-1; j++) {&lt;br /&gt;     var pixelValue:uint=mytex.getPixel32(i,j);&lt;br /&gt;     var alphaValue:uint=pixelValue&gt;&gt;24&amp;0xFF;&lt;br /&gt;     var red:uint=pixelValue&gt;&gt;16&amp;0xFF;&lt;br /&gt;     var green:uint=pixelValue&gt;&gt;8&amp;0xFF;&lt;br /&gt;     var blue:uint=pixelValue&amp;0xFF;&lt;br /&gt;     var color:uint=Math.round(0.3*red+0.59*green+0.11*blue);&lt;br /&gt;     var cc:uint=c[color];&lt;br /&gt;     if (cc&gt;0) {&lt;br /&gt;      color=0xffffff;&lt;br /&gt;     } else {&lt;br /&gt;      color=0x000000;&lt;br /&gt;     }&lt;br /&gt;     outB.setPixel(i,j,color);&lt;br /&gt;    }//end of for0&lt;br /&gt;   }//end of for1&lt;br /&gt;&lt;br /&gt;   var outT:BitmapData=outB.clone();//Edge Image&lt;br /&gt;&lt;br /&gt;   for (i=1; i&lt;=w-1; i++) {&lt;br /&gt;    for (j=1; j&lt;=h-1; j++) {&lt;br /&gt;     var pixelValue1:uint=outB.getPixel(i,j);&lt;br /&gt;     if (pixelValue1==0) {&lt;br /&gt;      var n1:uint=outB.getPixel(i+1,j);&lt;br /&gt;      var n2:uint=outB.getPixel(i,j+1);&lt;br /&gt;      var n3:uint=outB.getPixel(i-1,j);&lt;br /&gt;      var n4:uint=outB.getPixel(i,j-1);&lt;br /&gt;      var n5:uint=outB.getPixel(i-1,j-1);&lt;br /&gt;      var n6:uint=outB.getPixel(i+1,j+1);&lt;br /&gt;      var n7:uint=outB.getPixel(i+1,j-1);&lt;br /&gt;      var n8:uint=outB.getPixel(i-1,j+1);&lt;br /&gt;      if (n1+n2+n3+n4+n5+n6+n7+n8==0) {&lt;br /&gt;       outT.setPixel(i,j,0xffffff);&lt;br /&gt;      }//end of if (n1+n2+n3+n4+n5+n6+n7+n8==0)&lt;br /&gt;     }//end of if (pixelValue1==0)&lt;br /&gt;    }//end of for0&lt;br /&gt;   }//end of for1&lt;br /&gt;&lt;br /&gt;   addChild(new Bitmap(outB));&lt;br /&gt;   addChild(new Bitmap(outT));&lt;br /&gt;   this.getChildAt(0).y=h;&lt;br /&gt;   //&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;TIMELINE CODES END&lt;br /&gt;   //------------------------------------------------&lt;br /&gt;  }//end of function IBET_Test_Timeline_Class&lt;br /&gt; }//end of class&lt;br /&gt;}//end of package&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;================================================&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;UPDATA 2009_7_09&lt;/span&gt;&lt;br /&gt;another cartoon filter (version B) using Image binarization and edge tracing:&lt;br /&gt;original image:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_VM_xh6rvt_I/TF0g3sh4WbI/AAAAAAAAAk0/Z1PaQuxkTS4/s1600/Cartoonize_verB_Orignal.jpg"&gt;&lt;img style="WIDTH: 288px; HEIGHT: 193px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5502590460934773170" border="0" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/TF0g3sh4WbI/AAAAAAAAAk0/Z1PaQuxkTS4/s400/Cartoonize_verB_Orignal.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;result:&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_VM_xh6rvt_I/TF0g37w6inI/AAAAAAAAAk8/5xs2Snmnj9M/s1600/Cartoonize_verB_RESULT.jpg"&gt;&lt;img style="WIDTH: 288px; HEIGHT: 193px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5502590465024363122" border="0" alt="" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/TF0g37w6inI/AAAAAAAAAk8/5xs2Snmnj9M/s400/Cartoonize_verB_RESULT.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;source file:&lt;/span&gt;&lt;a href="http://flaswf.googlecode.com/files/CartoonFilter_B.as"&gt;http://flaswf.googlecode.com/files/CartoonFilter_B.as&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-282308736430071999?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/282308736430071999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=282308736430071999&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/282308736430071999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/282308736430071999'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/05/image-binarization-and-edge-tracing-in.html' title='Image Binarization and Edge Tracing in Flash'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VM_xh6rvt_I/Sesfbp7U3bI/AAAAAAAAAZs/m-FqaQ_wOk4/s72-c/original.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-4589565859063158538</id><published>2009-04-19T04:32:00.000-07:00</published><updated>2010-09-10T17:50:16.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='filter'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><title type='text'>Cartoonize Image by AS3.0 - Cartoon Filter</title><content type='html'>Using Photoshop or Gimp, you can create lots of artistic pictures from photos like water painting, oil painting, sketch ..., by powerful filters there.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Actionscript provides some filters such as &lt;span style="color:#3333ff;"&gt;BlurFilter&lt;/span&gt;, &lt;span style="color:#3333ff;"&gt;DisplacementMapFilter&lt;/span&gt;... and two basic but useful filter &lt;span style="color:#3333ff;"&gt;ColorMatrixFilter&lt;/span&gt; and &lt;span style="color:#3333ff;"&gt;ConvolutionFilter&lt;/span&gt;. We can do many things using those two filter. Here are two tutorials explaining them:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://www.adobe.com/devnet/flash/articles/matrix_transformations_01.html"&gt;http://www.adobe.com/devnet/flash/articles/matrix_transformations_01.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://docs.gimp.org/en/plug-in-convmatrix.html"&gt;http://docs.gimp.org/en/plug-in-convmatrix.html&lt;/a&gt; (ConvolutionFilter) &lt;/div&gt;&lt;div&gt;Once I want to convert a photo into a Chinese painting style pic but failed.&lt;/div&gt;&lt;div&gt;What inspired me recently is this &lt;span style="color:#009900;"&gt;free&lt;/span&gt; online app based on flash -&lt;span style="color:#3333ff;"&gt;Befunky Cartoonizer &lt;/span&gt;&lt;a href="http://www.befunky.com/"&gt;http://www.befunky.com/&lt;/a&gt;, which can convert your photo into a cartoon style pic. &lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 165px; DISPLAY: block; HEIGHT: 76px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5326380300151363858" border="0" alt="" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SesaqaEpGRI/AAAAAAAAAZk/fYHkJNwemqQ/s400/befunky.jpg" /&gt;I searched the Internet and found some tutorials on how to cartoonize your photo into cartoon&lt;br /&gt;&lt;div&gt;using some image processing software.&lt;/div&gt;&lt;div&gt;GIMP:&lt;a href="http://www.blogger.com/ocaoimh.ie/2004/10/01/cartoonizing-photos-with-the-gimp/"&gt;ocaoimh.ie/2004/10/01/cartoonizing-photos-with-the-gimp/ &lt;/a&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5326379719806572850" border="0" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SesaIoHqWTI/AAAAAAAAAZU/eumiiIwsaNU/s320/GIMPdsc04007-c.jpg" /&gt; (Now we have a &lt;span style="color:#ff0000;"&gt;cartoon filter&lt;/span&gt; in GIMP: &lt;a href="http://docs.gimp.org/en/plug-in-cartoon.html)"&gt;http://docs.gimp.org/en/plug-in-cartoon.html)&lt;/a&gt;&lt;/div&gt;&lt;div&gt;PHOTOSHOP: &lt;a href="http://prashantmullick.com/wlog/archives/2004/09/14/cartoonize/"&gt;http://prashantmullick.com/wlog/archives/2004/09/14/cartoonize/&lt;/a&gt; &lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5326379717763137218" border="0" alt="" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SesaIggd_sI/AAAAAAAAAZc/0vgs8JZB0NM/s320/PScartoonize.bmp" /&gt;I found that the only trick is to find edges of image, extract outline of shapes and set BelndMode to multiply! I think Actionscript can handle that, so did this little experiment.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Firstly, ConvolutionFilter can do edge detection. Secondly, we can use BitmapData.draw()&lt;/div&gt;&lt;div&gt;+&lt;span style="color:#3333ff;"&gt;BlendMode&lt;/span&gt; to set blend mode.&lt;/div&gt;&lt;div&gt;However, in my test, simple edge detection using ConvolutionFilter with 3*3 array &lt;/div&gt;&lt;div&gt;[ 0, -1, 0, -1, 4, -1, 0, -1, 0 ] or [1, 2, 1, 0 ,0, 0, -1, -2, -1] or [1, 0, -1, 2, 0, -2, 1, 0, -1]&lt;/div&gt;&lt;div&gt;wouldn't result a nice effect.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;But thanks to this post:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.kirupa.com/forum/showthread.php?p=2205469"&gt;http://www.kirupa.com/forum/showthread.php?p=2205469&lt;/a&gt;&lt;/div&gt;&lt;div&gt;I get a better way to extract outlines.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you wants to know more about edge detection using AS3.0, here are two tutorials &lt;span style="color:#ff0000;"&gt;with source&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;&lt;a href="http://lukewalsh.co.uk/blog/2008/06/sobel-edge-detection-in-flash.html"&gt;http://lukewalsh.co.uk/blog/2008/06/sobel-edge-detection-in-flash.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.kilometer0.com/edge_detection.php"&gt;http://www.kilometer0.com/edge_detection.php&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And I found &lt;span style="color:#3333ff;"&gt;BlendMode.OVERLAY&lt;/span&gt; seems better than &lt;span style="color:#3333ff;"&gt;BlendMode.MULTIPLY&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;This is the final result:&lt;/div&gt;&lt;div&gt;original picture:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 300px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5326385544267357618" border="0" alt="" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/Sesfbp7U3bI/AAAAAAAAAZs/m-FqaQ_wOk4/s400/original.jpg" /&gt;&lt;/div&gt;&lt;div&gt;edge detection:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 299px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5329637773674312482" border="0" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SfatUUlccyI/AAAAAAAAAaE/RzmCFztKzV8/s400/CartoonEdge.JPG" /&gt;BlendMode.MULTIPLY+Blur :&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 301px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5326385546190210802" border="0" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SesfbxFxRvI/AAAAAAAAAZ0/uM3PAs_q9BQ/s400/multiply%2Bblur.JPG" /&gt;BlendMode.OVERLAY :&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 300px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5326385549110674930" border="0" alt="" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/Sesfb7-EBfI/AAAAAAAAAZ8/DXNjzmeswn8/s400/overlay.JPG" /&gt;It doesn't look like a cartoon very much and may produce ugly things when using photos of human face but that's all I can do now.&lt;br /&gt;&lt;br /&gt;In my test this is not suitable for real time rendering. 6*applyFilter()+3*draw()+2*threshold() eats too much CPU. I hope to find some better ways to do this. Hope some one could write a shader to do that work. If anyone knows a faster way to trace edges, please tell me. I do hope to make it run on the fly!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Source Code:&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;&lt;a href="http://flaswf.googlecode.com/files/CartoonFilter.zip"&gt;http://flaswf.googlecode.com/files/CartoonFilter.zip&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;================================================&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;UPDATE 2009_7_09&lt;br /&gt;&lt;/span&gt;another cartoon filter (version B) using Image binarization and edge tracing:&lt;br /&gt;&lt;a href="http://bruce-lab.blogspot.com/2009/05/image-binarization-and-edge-tracing-in.html"&gt;http://bruce-lab.blogspot.com/2009/05/image-binarization-and-edge-tracing-in.html&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-4589565859063158538?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/4589565859063158538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=4589565859063158538&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4589565859063158538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4589565859063158538'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/04/cartoonize-image-by-as30.html' title='Cartoonize Image by AS3.0 - Cartoon Filter'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VM_xh6rvt_I/SesaqaEpGRI/AAAAAAAAAZk/fYHkJNwemqQ/s72-c/befunky.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-3758705539117790381</id><published>2009-04-17T08:04:00.000-07:00</published><updated>2011-08-25T21:51:47.104-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='voxel'/><title type='text'>Ray Tracing - Voxel Rendering in Flash</title><content type='html'>I did some experiments on &lt;a href="http://bruce-lab.blogspot.com/2008/08/ray-tracing-in-as30.html"&gt;ray tracing in as3&lt;/a&gt; before and I'm interested in this technology because it is simple but can create convincing 3D effects like shadows and reflections.&lt;br /&gt;The problem is efficiency, real time rendering for complicated objects seems impossible for&lt;br /&gt;hardware limitations nowadays.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Voxel&lt;/span&gt; rendering&lt;/span&gt; is another interesting thing, I once played with &lt;span style="color: #3333ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;voxel&lt;/span&gt; terrains&lt;/span&gt;, you can find some work here:&lt;br /&gt;&lt;a href="http://bruce-lab.blogspot.com/2009/01/terrain-rendering-in-flash.html"&gt;http://bruce-lab.blogspot.com/2009/01/terrain-rendering-in-flash.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bruce-lab.blogspot.com/2008/10/open-source-as30-voxel-terrain-engine.html"&gt;http://bruce-lab.blogspot.com/2008/10/open-source-as30-voxel-terrain-engine.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Voxel&lt;/span&gt; rendering for 3d objects -&lt;a href="http://en.wikipedia.org/wiki/Volume_rendering"&gt;volume rendering &lt;/a&gt;is something a little different.&lt;br /&gt;Mr &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;doob&lt;/span&gt; gave us a very impressive demo(&lt;span style="color: red;"&gt;with source&lt;/span&gt;):&lt;a href="http://www.mrdoob.com/blog/post/571"&gt;http://www.mrdoob.com/blog/post/571&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mrdoob.com/lab/effects/voxels/head/"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5325691488323948322" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SeioMSDezyI/AAAAAAAAAYU/IGgr8yjZlaw/s400/romancortes%2Bmrdoob_voxelhead.png" style="cursor: hand; display: block; height: 266px; margin: 0px auto 10px; text-align: center; width: 350px;" /&gt;&lt;/a&gt;That &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;swf&lt;/span&gt; load a confusing "data.v" file, at first I thought it is a &lt;a href="http://www.cs.ubc.ca/labs/lci/vista/vista.html"&gt;Vista&lt;/a&gt;/&lt;a href="http://static.cbs.mpg.de/lipsia/START/index3.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Lipsia&lt;/span&gt; &lt;/a&gt;medical CT data format file, but now I think I was wrong. It is just a compressed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;bytearray&lt;/span&gt; data storing the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;voxel&lt;/span&gt; head data -x,y,z and colour values of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;voxels&lt;/span&gt;, please check the loading part of the source code for details. I don't know how they created such data file, maybe use some other software or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;mybe&lt;/span&gt; just by as3. That source is not very readable, what's more I can't figure out how to get those &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;voxel&lt;/span&gt; data.&lt;br /&gt;&lt;br /&gt;After I saw &lt;a class="url fn n" href="http://shapevent.com.sixxs.org/sketchbook/author/zevan/" title="View all posts by zevan"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;zevan&lt;/span&gt;&lt;/a&gt;'s work &lt;a href="http://shapevent.com/sketchbook/2008/12/28/voxel-play/"&gt;http://shapevent.com/sketchbook/2008/12/28/voxel-play/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.shapevent.com/swfs/iso_voxels_opt.swf"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5325691493314311010" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SeioMkpRs2I/AAAAAAAAAYc/flf-8XDwFqI/s400/vox3.jpg" style="cursor: hand; display: block; height: 285px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt; and this &lt;span style="color: #3366ff;"&gt;Isometric &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Voxels&lt;/span&gt;&lt;/span&gt;: &lt;a href="http://actionsnippet.com/?p=431"&gt;http://actionsnippet.com/?p=431&lt;/a&gt; (&lt;span style="color: red;"&gt;with code&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5325691495179479586" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SeioMrl96iI/AAAAAAAAAYk/t_npDhBegvM/s400/voxels.jpg" style="cursor: hand; display: block; height: 297px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; I decide to do something myself. I tried a simple way - create my own &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;voxel&lt;/span&gt; data and use ray tracing to render it. Ray tracing is slow, so I give up real time. I can only create some simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;voxel&lt;/span&gt; object - cube&amp;amp;sphere, I used six pictures as textures, five for cube and one for the sphere. I use &lt;span style="color: #3366ff;"&gt;256*256*256&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;voxels&lt;/span&gt; to represent a simple scene - a sphere in a cube and stored the values in an array, convert and compress it into a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;bytearray&lt;/span&gt; and then save it as 'cube_sphere.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;vd&lt;/span&gt;'. The data file is still large - &lt;span style="color: red;"&gt;3.23MB&lt;/span&gt;! The '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;voxel&lt;/span&gt;_data_tracer.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;swf&lt;/span&gt;' loads this &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;voxel&lt;/span&gt; data file and renders the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;voxels&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This is what I got:&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5325692232679022962" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/Seio3m_j4XI/AAAAAAAAAYs/RYpRXgg_Jxk/s400/myrrvoxel.JPG" style="cursor: hand; display: block; height: 310px; margin: 0px auto 10px; text-align: center; width: 264px;" /&gt; You can download the demo here:&lt;br /&gt;&lt;a href="http://flaswf.googlecode.com/files/raytracing%20voxel%20rendering.zip"&gt;http://flaswf.googlecode.com/files/raytracing%20voxel%20rendering.zip&lt;/a&gt;&lt;br /&gt;but it is &lt;span style="color: red;"&gt;NOT RECOMMEND&lt;/span&gt;, it is slow and eats too much, too much memory - about &lt;span style="color: red;"&gt;200,000k&lt;/span&gt; when &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;initing&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;cpu&lt;/span&gt; &lt;span style="color: red;"&gt;50%&lt;/span&gt; and more than &lt;span style="color: red;"&gt;120,000k&lt;/span&gt; memory needs while rendering.&lt;br /&gt;&lt;strike&gt;Source code needs too much optimization so I can't put it here now.&lt;/strike&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;[Update:2011/08/26]&lt;/span&gt; Source code&lt;/b&gt; for the demo:&lt;br /&gt;&lt;a href="http://bruce-lab.blogspot.com/2011/08/simple-ray-tracing-voxel-demo.html"&gt;http://bruce-lab.blogspot.com/2011/08/simple-ray-tracing-voxel-demo.html &lt;/a&gt;&lt;br /&gt;--------------------------------------------&lt;br /&gt;&lt;span style="color: #3366ff;"&gt;Ken &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Silverman&lt;/span&gt;&lt;/span&gt; created a fast &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;cpu&lt;/span&gt; based &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;voxel&lt;/span&gt; 3d engine -&lt;span style="color: #3366ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Voxlap&lt;/span&gt;&lt;/span&gt; using C and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;DirectX&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://www.advsys.net/ken/voxlap/voxlap05.htm"&gt;http://www.advsys.net/ken/voxlap/voxlap05.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5325695269141583010" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SeiroWsplKI/AAAAAAAAAZM/wCmHNW00jfU/s320/voxlap_lib.jpg" style="cursor: hand; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;The world of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Voxlap&lt;/span&gt; is &lt;span style="color: red;"&gt;fully destructible&lt;/span&gt;, yes , you can destroy everything there!&lt;br /&gt;That is the most exciting part of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;voxels&lt;/span&gt;!&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;Voxlap&lt;/span&gt; is &lt;span style="color: red;"&gt;open source&lt;/span&gt;, but God understands what those crazy codes mean!&lt;br /&gt;&lt;br /&gt;An open source game using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;Voxlap&lt;/span&gt; is &lt;a href="http://voxelstein3d.blogspot.com/"&gt;V O X E L S T E I N 3 D&lt;/a&gt; - a FPS game inspired by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;Wolfenstein&lt;/span&gt; 3D.&lt;br /&gt;&lt;a href="http://voxelstein3d.blogspot.com/"&gt;http://voxelstein3d.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://voxelstein3d.sourceforge.net/"&gt;http://voxelstein3d.sourceforge.net/&lt;/a&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5325695263698885266" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SeiroCbAmpI/AAAAAAAAAZE/Psfz6BUXOSg/s320/voxelstein3d.png" style="display: block; height: 121px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;br /&gt;&lt;b&gt;Links:&lt;/b&gt;&lt;br /&gt;A minecraft level render in flash:&lt;br /&gt;&lt;a href="http://liquify.eu/flash/MCExplorer" target="_blank"&gt;http://liquify.eu/flash/MCExplorer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.minecraftforum.net/viewtopic.php?f=25&amp;amp;t=96591" target="_blank"&gt;http://www.minecraftforum.net/viewtopic.&lt;span class="t_tag" href="http://bbs.9ria.com/tag.php?name=php"&gt;php&lt;/span&gt;?f=25&amp;amp;t=96591&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VM_xh6rvt_I/TVIjexDJgDI/AAAAAAAAAoE/0Pi0U82HA40/s1600/ibeiG6.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" h5="true" height="150" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/TVIjexDJgDI/AAAAAAAAAoE/0Pi0U82HA40/s200/ibeiG6.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-3758705539117790381?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/3758705539117790381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=3758705539117790381&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/3758705539117790381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/3758705539117790381'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/04/ray-tracing-voxel-rendering-in-flash.html' title='Ray Tracing - Voxel Rendering in Flash'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VM_xh6rvt_I/SeioMSDezyI/AAAAAAAAAYU/IGgr8yjZlaw/s72-c/romancortes%2Bmrdoob_voxelhead.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-2183641897059324091</id><published>2009-03-13T07:35:00.000-07:00</published><updated>2011-02-23T20:46:59.712-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='z-ground'/><title type='text'>Z-Ground News opened</title><content type='html'>I started a simple page for z-ground engine, you can find all news about the engine from now on. &lt;br /&gt;Check it here:&lt;br /&gt;&lt;a href="http://zhoubu1988.googlepages.com/z-groundnews" target="_blank"&gt;&lt;strike&gt;http://zhoubu1988.googlepages.com/z-groundnews&lt;/strike&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bruce-lab.blogspot.com/p/z-ground.html"&gt;http://bruce-lab.blogspot.com/p/z-ground.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://zhoubu1988.googlepages.com/z-groundnews" target="_blank"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5312682368840156610" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/Sbpwd3cyxcI/AAAAAAAAAXE/g3BJkchoc9U/s400/zgrounnews.JPG" style="cursor: hand; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 350px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-2183641897059324091?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/2183641897059324091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=2183641897059324091&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2183641897059324091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/2183641897059324091'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/03/z-ground-news-opened.html' title='Z-Ground News opened'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VM_xh6rvt_I/Sbpwd3cyxcI/AAAAAAAAAXE/g3BJkchoc9U/s72-c/zgrounnews.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-8375807770383827586</id><published>2009-02-12T05:19:00.000-08:00</published><updated>2009-04-09T07:39:01.271-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='z-ground'/><title type='text'>new demos of z-ground room &amp; terrain</title><content type='html'>The first one is a doom-like demo:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5301902528451259634" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 349px; CURSOR: hand; HEIGHT: 200px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SZQkQkoVLPI/AAAAAAAAAVc/k5uRs_T3HO4/s400/z_ground_doom_style_room_test1.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5301902528621694242" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 350px; CURSOR: hand; HEIGHT: 201px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SZQkQlQ9zSI/AAAAAAAAAVk/XGn9VFiF5fo/s400/z_ground_doom_style_room_test2.JPG" border="0" /&gt;DEMO:&lt;/span&gt;&lt;a href="http://flaswf.googlecode.com/files/z_ground_doom_style_room_test.swf"&gt;http://flaswf.googlecode.com/files/z_ground_doom_style_room_test.swf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The second one is terrain generated by a heightmap and a texture map :&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5301902535573842642" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 351px; CURSOR: hand; HEIGHT: 180px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SZQkQ_KfKtI/AAAAAAAAAV0/OQDIM5AGtmo/s400/z-ground_Terrain_new2.JPG" border="0" /&gt;&lt;img id="BLOGGER_PHOTO_ID_5301902528634829714" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 349px; CURSOR: hand; HEIGHT: 181px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SZQkQlUGO5I/AAAAAAAAAVs/NeXxppMDAVA/s400/z-ground_Terrain_new1.JPG" border="0" /&gt;&lt;span style="color:#ff0000;"&gt;DEMO:&lt;/span&gt;&lt;a href="http://flaswf.googlecode.com/files/z-ground_Terrain_new.swf"&gt;http://flaswf.googlecode.com/files/z-ground_Terrain_new.swf&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-8375807770383827586?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/8375807770383827586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=8375807770383827586&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/8375807770383827586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/8375807770383827586'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/02/new-demos-of-z-ground-room-terrain.html' title='new demos of z-ground room &amp; terrain'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VM_xh6rvt_I/SZQkQkoVLPI/AAAAAAAAAVc/k5uRs_T3HO4/s72-c/z_ground_doom_style_room_test1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-7269373924354431699</id><published>2009-02-12T05:02:00.000-08:00</published><updated>2011-11-14T19:19:10.533-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><title type='text'>flash 10 drawTriangles test</title><content type='html'>Test of flash 10's 3D API - &lt;span style="color: #3366ff;"&gt;drawTriangles&lt;/span&gt;.&lt;br /&gt;&lt;embed bgcolor="#FFFFFF" height="256" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="https://flaswf.googlecode.com/svn/trunk/flaswfblog/FP10_drawTriangles_test.swf" type="application/x-shockwave-flash" width="256"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-7269373924354431699?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/7269373924354431699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=7269373924354431699&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7269373924354431699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/7269373924354431699'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/02/flash-10-drawtriangles-test.html' title='flash 10 drawTriangles test'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-1009726528907552051</id><published>2009-01-31T22:41:00.000-08:00</published><updated>2011-10-13T19:16:25.979-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='terrain'/><category scheme='http://www.blogger.com/atom/ns#' term='voxel'/><title type='text'>terrain rendering in flash(draft)</title><content type='html'>back later...&lt;br /&gt;I do like playing with terrains.&lt;br /&gt;Generally there are two ways of rendering terrains or landscapes, the first one is called &lt;span style="color: #3366ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;voxel&lt;/span&gt;&lt;/span&gt;, the second one is using 3D &lt;span style="color: #3366ff;"&gt;triangles&lt;/span&gt;.&lt;br /&gt;There are difference between the two ways, both in theory and the result.&lt;br /&gt;Many flashers did some very impressive experiments about terrains by action script.&lt;br /&gt;1.A great one was &lt;a href="http://www.electricoyster.com/"&gt;Electric Oyster &lt;/a&gt;'s flash flight simulator over the arctic.&lt;br /&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;swf&lt;/span&gt; is based on their own 3D engine-Electric 3D engine using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;tiangles&lt;/span&gt; way to render the terrain.&lt;br /&gt;Great texture and rendering speed!&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;a full screen version :&lt;br /&gt;&lt;a href="http://adf.ly/821527/www.electricoyster.com/electric3d/index.html"&gt;http://www.electricoyster.com/electric3d/index.html&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297718371250760418" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYVGykZ2auI/AAAAAAAAAPM/mxcycIE0yMQ/s400/Electric+3D+engine.jpg" style="cursor: hand; display: block; height: 218px; margin: 0px auto 10px; text-align: center; width: 377px;" /&gt;P.S.Anyone who want an standalone (off-line) vision,just go to your Temporary Internet Files’ folder,copy the files ‘Main.swf’and‘data_lq.bin’ out, save them where you want.(don’t change the name of the second one,keep it ‘data_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;lq&lt;/span&gt;.bin’)-play ‘Main.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;swf&lt;/span&gt;’&lt;br /&gt;for full screen version it will be 'data_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;hq&lt;/span&gt;.bin'&lt;br /&gt;you may need to take care of flash player's security problems.&lt;br /&gt;2. &lt;a href="http://away3d.com/"&gt;away 3D &lt;/a&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;greenpalnt&lt;/span&gt; demo&lt;br /&gt;&lt;a href="http://www.closier.nl/playground/greenplanet.html"&gt;http://www.closier.nl/playground/greenplanet.html&lt;/a&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297719997813134066" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVIRP0ikvI/AAAAAAAAAPU/BrH12Nql3cc/s400/Away3d+greenplanet.jpg" style="cursor: hand; display: block; height: 290px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;much more than just landscape, very impressive!&lt;br /&gt;3. &lt;a href="http://www.cleoag.ru/"&gt;Den &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Ivanov&lt;/span&gt; &lt;/a&gt;did lots of beautiful experiment on terrain.&lt;br /&gt;The most famous one is his land craft simulator in flash 8.&lt;br /&gt;&lt;a href="http://lab.parkstudio.ru/terra/"&gt;http://lab.parkstudio.ru/terra/&lt;/a&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297723339928069666" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYVLTyK1ZiI/AAAAAAAAAPk/YBDfbJbgsfQ/s400/landcraft.jpg" style="cursor: hand; display: block; height: 289px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; He also did other simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;voxel&lt;/span&gt; terrain with source their&lt;br /&gt;Check: &lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;TerrainAni&lt;/span&gt; :&lt;a href="http://www.cleoag.ru/2007/05/13/sources-for-my-3d-voxel-terrain/"&gt;http://www.cleoag.ru/2007/05/13/sources-for-my-3d-voxel-terrain/&lt;/a&gt;(&lt;span style="color: red;"&gt;with source&lt;/span&gt;)&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297724701580012162" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SYVMjCt9KoI/AAAAAAAAAPs/6To1s-kfH30/s400/TerrainAni.JPG" style="cursor: hand; display: block; height: 237px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;TerrainAni&lt;/span&gt;2 &lt;a href="http://www.cleoag.ru/2007/04/13/another-voxel-terrain-demo/"&gt;http://www.cleoag.ru/2007/04/13/another-voxel-terrain-demo/&lt;/a&gt; (&lt;span style="color: red;"&gt;with source&lt;/span&gt;) &lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297725353478271762" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVNI_OnMxI/AAAAAAAAAQE/3aGT5xHVC4A/s400/TerrainAni2.jpg" style="cursor: hand; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;a href="http://www.cleoag.ru/2007/03/29/musicscape/" rel="bookmark" title="Permanent Link: MusicScape"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;MusicScape&lt;/span&gt;&lt;/a&gt;: &lt;a href="http://www.cleoag.ru/2007/03/29/musicscape/"&gt;http://www.cleoag.ru/2007/03/29/musicscape/&lt;/a&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298118725707339810" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYay6Q-hmCI/AAAAAAAAATc/KTLo4BdKEL8/s400/musicscape.JPG" style="cursor: hand; display: block; height: 287px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; But &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;PaperTerrain&lt;/span&gt; :&lt;a href="http://www.cleoag.ru/2007/03/31/sources-for-papervision3d-terrain/"&gt;http://www.cleoag.ru/2007/03/31/sources-for-papervision3d-terrain/&lt;/a&gt;is using another approach &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;papervision&lt;/span&gt; 3D&lt;br /&gt;And triangles.(&lt;span style="color: red;"&gt;with source&lt;/span&gt;)&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297733911507975746" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SYVU7IX5PkI/AAAAAAAAAQM/NTGu9ZCZEFk/s400/PaperTerrain.JPG" style="cursor: hand; display: block; height: 290px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;/div&gt;&lt;div&gt;an old work &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;realtime&lt;/span&gt; 3D landscape:&lt;br /&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/flaswfblog/realtime_3D_landscape_Y2K_onego.swf"&gt;https://flaswf.googlecode.com/svn/trunk/flaswfblog/realtime_3D_landscape_Y2K_onego.swf&lt;/a&gt; &lt;/div&gt;&lt;div&gt;(sorry, can't find the original link...)&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5300712498493224706" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SY_p7tkpdwI/AAAAAAAAAVE/qDTECUfaYPk/s400/realtime+3D+landscape.JPG" style="cursor: hand; display: block; height: 218px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;We can easily see the difference of final result:&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Voxel&lt;/span&gt; is much more month, on the other hand you can recognize the triangles&lt;br /&gt;4.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;SWFZ&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;TerrainLoadingTest&lt;/span&gt; &lt;a href="http://www.swfzlab.com/swfz/terrain/TerrainLoadingTest.swf" style="color: #cccccc;"&gt;http://www.swfzlab.com/swfz/terrain/TerrainLoadingTest.swf&lt;/a&gt;(broken link)&lt;br /&gt;&lt;div&gt;&lt;a href="http://adf.ly/821527/the-backup-project.googlecode.com/svn/trunk/3D/swfz/Terrain.swf"&gt;http://the-backup-project.googlecode.com/svn/trunk/3D/swfz/Terrain.swf&lt;/a&gt; (backup)&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297735003747954338" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVV6tSMrqI/AAAAAAAAAQU/iCI7aJcbMlU/s400/swfzTerrainLoadingTest.JPG" style="cursor: hand; display: block; height: 213px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; Based on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Joho&lt;/span&gt;’s powerful flash 3D engine.&lt;br /&gt;5.Unit Zero One 3d &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;voxel&lt;/span&gt; landscapes &lt;a href="http://www.unitzeroone.com/blog/2006/10/03/flash-9-example-3d-landscapes-voxel-engine/"&gt;http://www.unitzeroone.com/blog/2006/10/03/flash-9-example-3d-landscapes-voxel-engine/&lt;/a&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297741020614330002" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVbY727hpI/AAAAAAAAAQc/i2Kht415Yvo/s400/unitzeroone+voxel+sngine.jpg" style="cursor: hand; display: block; height: 225px; margin: 0px auto 10px; text-align: center; width: 310px;" /&gt; 6.&lt;a href="http://isaacwilliams.net/author/isaac/" title="Posts by isaac"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;isaac&lt;/span&gt;&lt;/a&gt; 's flash &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;voxel&lt;/span&gt; engine:&lt;/div&gt;&lt;div&gt;&lt;a href="http://isaacwilliams.net/2007/12/30/flash-voxel-engine/"&gt;http://isaacwilliams.net/2007/12/30/flash-voxel-engine/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://isaacwilliams.net/2008/01/01/voxel-engine-update/"&gt;http://isaacwilliams.net/2008/01/01/voxel-engine-update/&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;voxel&lt;/span&gt; land(&lt;span style="color: red;"&gt;with source&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&lt;a href="http://isaacwilliams.net/2008/01/08/voxelland-source/"&gt;http://isaacwilliams.net/2008/01/08/voxelland-source/&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297742262955111794" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYVchP8DdXI/AAAAAAAAAQk/JsWyJEw9HeA/s400/isaac+voxel+engine.JPG" style="cursor: hand; display: block; height: 232px; margin: 0px auto 10px; text-align: center; width: 361px;" /&gt;7.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;oaxoa's&lt;/span&gt; Real-time &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;voxel&lt;/span&gt; landscape&lt;br /&gt;&lt;a href="http://blog.oaxoa.com/2008/08/28/actionscript-3-as3-real-time-voxel-landscape/"&gt;http://blog.oaxoa.com/2008/08/28/actionscript-3-as3-real-time-voxel-landscape/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297751938510703506" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVlUcMRS5I/AAAAAAAAARc/rKofoX6Xwd4/s400/oaxoa+voxel.jpg" style="cursor: hand; display: block; height: 312px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 8.&lt;a href="http://www.smart-page.net/blog/2008/11/01/voxelworld/" rel="bookmark" title="Permanent Link: Voxelworld"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Voxelworld&lt;/span&gt;&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.smart-page.net/blog/2008/11/01/voxelworld/"&gt;http://www.smart-page.net/blog/2008/11/01/voxelworld/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297743690048154034" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYVd0URjKbI/AAAAAAAAAQs/o21C21xIzYA/s400/Voxelworld.jpg" style="cursor: hand; display: block; height: 215px; margin: 0px auto 10px; text-align: center; width: 350px;" /&gt;9.&lt;a href="http://www.neuroproductions.be/" modo="false" target="_blank"&gt;Kris &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;Temmerman&lt;/span&gt;&lt;/a&gt;'s Generated Landscape&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.neuroproductions.be/uploads/blog/perlinnoise.swf"&gt;http://www.neuroproductions.be/uploads/blog/perlinnoise.swf&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297847477772092258" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYW8NjrOA2I/AAAAAAAAAS8/GviRkVxtKME/s400/perlinnoise.jpg" style="cursor: hand; display: block; height: 288px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 10.Mike Johnson Flash 8 : &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Perlin&lt;/span&gt; Noise Landscaping(&lt;span style="color: red;"&gt;with source&lt;/span&gt;) &lt;a href="http://mx.coldstorageonline.com/index.php?bid=42"&gt;http://mx.coldstorageonline.com/index.php?bid=42&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297848475023246242" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SYW9HmubA6I/AAAAAAAAATE/RHGim-z64Ko/s400/coldstorageonlinelandscape.jpg" style="cursor: hand; display: block; height: 200px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/div&gt;11.&lt;a href="http://www.polyaktiv.de/neu/swf/virtuallc.htm"&gt;http://www.polyaktiv.de/neu/swf/virtuallc.htm&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297756595112304802" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYVpjfYm4KI/AAAAAAAAARs/LXoXtwJeilI/s400/polyaktiv_virtuallc.JPG" style="cursor: hand; display: block; height: 161px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;a href="http://www.polyaktiv.de/neu/swf/landscape2.htm"&gt;http://www.polyaktiv.de/neu/swf/landscape2.htm&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297756593345134706" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYVpjYzSAHI/AAAAAAAAAR0/VOYM23pTzdE/s400/polyaktiv_Landscape1.JPG" style="cursor: hand; display: block; height: 275px; margin: 0px auto 10px; text-align: center; width: 398px;" /&gt;12.3D slice mountain&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.arseiam.com/"&gt;http://www.arseiam.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.arseiam.com/fx/01.php"&gt;http://www.arseiam.com/fx/01.php&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297841129394803346" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYW2cCIIEpI/AAAAAAAAASk/BOvXfC8xIcE/s400/arseiam1.JPG" style="cursor: hand; display: block; height: 189px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;a href="http://www.arseiam.com/fx/54.php"&gt;http://www.arseiam.com/fx/54.php&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297841129762231538" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYW2cDfulPI/AAAAAAAAASs/supHvu_r8Hk/s400/arseiam2.JPG" style="cursor: hand; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 399px;" /&gt;&lt;br /&gt;13.&lt;a href="http://psyark.jp/?entry=20060719222011"&gt;http://psyark.jp/?entry=20060719222011&lt;/a&gt; (&lt;span style="color: red;"&gt;with source&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298094896449074018" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SYadPOEoM2I/AAAAAAAAATM/fTO7A-3t3Y8/s400/psyark_heightfield.JPG" style="cursor: hand; display: block; height: 190px; margin: 0px auto 10px; text-align: center; width: 287px;" /&gt;&lt;br /&gt;&lt;a href="http://psyark.jp/archive/2006/07/19/sunkenworld.swf"&gt;http://psyark.jp/archive/2006/07/19/sunkenworld.swf&lt;/a&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298094900864711026" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYadPehZeXI/AAAAAAAAATU/2n7Epad05xE/s400/psyark_sunkenworld.JPG" style="cursor: hand; display: block; height: 130px; margin: 0px auto 10px; text-align: center; width: 313px;" /&gt; &lt;/div&gt;&lt;div&gt;14.3D Topographical Terrain&lt;br /&gt;&lt;a href="http://www.mattmaxwelldesign.com/mm3dengine/sample3.swf"&gt;http://www.mattmaxwelldesign.com/mm3dengine/sample3.swf&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5300718199640468258" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SY_vHkAEqyI/AAAAAAAAAVU/atcM56iBH3k/s400/Topographical+Terrain.JPG" style="cursor: hand; display: block; height: 313px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 15.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;iso&lt;/span&gt; terrain&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://blog.justgreat.nl/2008/03/25/game-tiles-experiment/"&gt;http://blog.justgreat.nl/2008/03/25/game-tiles-experiment/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298123522729800162" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SYa3RfRzceI/AAAAAAAAATk/TBrpcRx1bnI/s400/Game+tiles+experiment.JPG" style="cursor: hand; display: block; height: 180px; margin: 0px auto 10px; text-align: center; width: 300px;" /&gt; Simple terrain generator experiment&lt;br /&gt;&lt;div&gt;&lt;a href="http://labs.justgreat.nl/exp070702.htm"&gt;http://labs.justgreat.nl/exp070702.htm&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298123521839616850" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYa3Rb9kU1I/AAAAAAAAATs/qO0wfmKwcl8/s400/terrain+generator.JPG" style="cursor: hand; display: block; height: 299px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;/div&gt;&lt;div&gt;16.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Papervision&lt;/span&gt; Mesh3D Terrain Map Simplification - Proof of Concept &lt;a href="http://www.overset.com/2007/09/04/papervision-mesh3d-terrain-map-simplification-proof-of-concept/"&gt;http://www.overset.com/2007/09/04/papervision-mesh3d-terrain-map-simplification-proof-of-concept/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297841127582541730" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYW2b7YDJ6I/AAAAAAAAASc/5gagAj8UcAY/s400/Papervision+Mesh3D+Terrain+Map.JPG" style="cursor: hand; display: block; height: 290px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;17.&lt;a href="http://antonvolkov.com/flash/land3d/"&gt;http://antonvolkov.com/flash/land3d/&lt;/a&gt;&lt;br /&gt;This one shows how triangle works.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298464130575177650" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYftDeYVF7I/AAAAAAAAAU8/fwXqrkpxcB4/s400/land3d.JPG" style="cursor: hand; display: block; height: 360px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;18.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;perlin&lt;/span&gt; terrain 3d study 1&amp;amp;2&lt;br /&gt;&lt;div&gt;&lt;a href="http://lab.zupko.info/index2.html"&gt;http://lab.zupko.info/index2.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298124312545452482" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYa3_dkh4cI/AAAAAAAAAT8/DZkdeSpP1Fc/s400/zupko_perlin+terrain+3d+study1.JPG" style="cursor: hand; display: block; height: 124px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298124305716067042" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYa3_EIRuuI/AAAAAAAAAT0/CLrIDDk2y0E/s400/mountainhill.JPG" style="cursor: hand; display: block; height: 254px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 19.&lt;a href="http://mrdoob.com/blog"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;mrdoob&lt;/span&gt;&lt;/a&gt;'s &lt;/div&gt;&lt;div&gt;Terrain &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;Raycaster&lt;/span&gt; &lt;br /&gt;&lt;div&gt;&lt;a href="http://wonderfl.kayac.com/code/071aec946bbb1716d603b74f6877a58cefd06548"&gt;http://wonderfl.kayac.com/code/071aec946bbb1716d603b74f6877a58cefd06548&lt;/a&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297765227635636546" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVxZ-CjeUI/AAAAAAAAASM/A1rejuDHnec/s400/wonderfl_terrain.png" style="cursor: hand; display: block; height: 260px; margin: 0px auto 10px; text-align: center; width: 350px;" /&gt;&lt;/div&gt;&lt;div&gt;Desert Generator &lt;/div&gt;&lt;div&gt;&lt;a href="http://wonderfl.kayac.com/code/9d2de22acc0df34bdd5eac0f861930b4393bd059"&gt;http://wonderfl.kayac.com/code/9d2de22acc0df34bdd5eac0f861930b4393bd059&lt;/a&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297765220539657570" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SYVxZjmvbWI/AAAAAAAAASE/AgKS7pyRNeU/s400/wonderfl_desert.png" style="cursor: hand; display: block; height: 263px; margin: 0px auto 10px; text-align: center; width: 350px;" /&gt;&lt;/div&gt;&lt;div&gt;Cube world &lt;/div&gt;&lt;div&gt;&lt;a href="http://wonderfl.kayac.com/code/dabc70c4044d20b1a3bdfad562123120ddaddc89"&gt;http://wonderfl.kayac.com/code/dabc70c4044d20b1a3bdfad562123120ddaddc89&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297765222357979890" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVxZqYQ0vI/AAAAAAAAAR8/XVPOD9n5AHM/s400/wonderfl_cubeworld.png" style="cursor: hand; display: block; height: 271px; margin: 0px auto 10px; text-align: center; width: 350px;" /&gt; &lt;br /&gt;&lt;div&gt;20.&lt;a href="http://wonderwhy-er.deviantart.com/art/Voxel-Engine-Revamped-74141703"&gt;http://wonderwhy-er.deviantart.com/art/Voxel-Engine-Revamped-74141703&lt;/a&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;Voxel&lt;/span&gt; Engine Revamped by *&lt;a class="u" href="http://wonderwhy-er.deviantart.com.sixxs.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;wonderwhy&lt;/span&gt;-ER&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297841128255557314" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYW2b94gjsI/AAAAAAAAASU/CHAc123YSm4/s400/Voxel+Engine+Revamped.JPG" style="cursor: hand; display: block; height: 241px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;br /&gt;21.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;joa&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;ebert's&lt;/span&gt; &lt;a href="http://blog.joa-ebert.com/2006/05/01/as3-voxelengine/" rel="bookmark" title="'Permanent"&gt;AS3 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;VoxelEngine&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://blog.joa-ebert.com/2006/05/01/as3-voxelengine/"&gt;http://blog.joa-ebert.com/2006/05/01/as3-voxelengine/&lt;/a&gt; &lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297845378748488834" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYW6TYM_nII/AAAAAAAAAS0/iFJKvrYmW8o/s400/joa-ebert.JPG" style="cursor: hand; display: block; height: 186px; margin: 0px auto 10px; text-align: center; width: 250px;" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;22.&lt;a href="http://weblog.cahlan.com/files/PerlinLandscape.html"&gt;http://weblog.cahlan.com/files/PerlinLandscape.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298126876835789138" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYa6UuS_OVI/AAAAAAAAAUE/Ofs6pB6EBgg/s400/cahlan-PerlinLandscape.JPG" style="cursor: hand; display: block; height: 262px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;br /&gt;&lt;div&gt;23.&lt;a href="http://davr.org/flash/"&gt;http://davr.org/flash/&lt;/a&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298126875200352706" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYa6UoNEccI/AAAAAAAAAUM/kCzIx1719m4/s400/davr_landscape.jpg" style="cursor: hand; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 24.&lt;a href="http://chrisbenjaminsen.com/show/mapdraw.swf"&gt;http://chrisbenjaminsen.com/show/mapdraw.swf&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5300717310931319010" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SY_uT1TTOOI/AAAAAAAAAVM/lD_QK-NtQVs/s400/mapdraw.JPG" style="cursor: hand; display: block; height: 261px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;/div&gt;&lt;div&gt;25.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;flashkit&lt;/span&gt; post -Pseudo 3d with bitmap as displacement for y-axis&lt;br /&gt;&lt;a href="http://board.flashkit.com/board/showthread.php?t=747849"&gt;http://board.flashkit.com/board/showthread.php?t=747849&lt;/a&gt;&lt;br /&gt;&lt;a class="bigusername" href="http://board.flashkit.com/board/member.php?u=61758"&gt;slight&lt;/a&gt;'s &lt;a class="bigusername" href="http://board.flashkit.com/board/member.php?u=370227"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;SaphuA&lt;/span&gt;&lt;/a&gt;'s Space&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://board.flashkit.com/board/attachment.php?attachmentid=64099&amp;amp;d=1192793912"&gt;http://board.flashkit.com/board/attachment.php?attachmentid=64099&amp;amp;d=1192793912&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297746037954304146" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVf8-5_2JI/AAAAAAAAAQ0/UGPUZHrfdpY/s400/SaphuA+Space.JPG" style="cursor: hand; display: block; height: 297px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;a class="bigusername" href="http://board.flashkit.com/board/member.php?u=451735"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;JerryScript&lt;/span&gt;&lt;/a&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;voxel&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://board.flashkit.com/board/attachment.php?attachmentid=64124&amp;amp;d=1192906336"&gt;http://board.flashkit.com/board/attachment.php?attachmentid=64124&amp;amp;d=1192906336&lt;/a&gt; (&lt;span style="color: red;"&gt;source&lt;/span&gt;)&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297747151578566082" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYVg9zetjcI/AAAAAAAAAQ8/dhClyOSrDWk/s400/JerryScript+voxel.JPG" style="cursor: hand; display: block; height: 203px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;3D Terrain &amp;amp; Object Positioning Via HeightMap &amp;amp; ColorMap Generated from PerlinNoise&lt;br /&gt;&lt;a href="http://www.geocities.com/webwizardsways/flash/prerender.html"&gt;http://www.geocities.com/webwizardsways/flash/prerender.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.geocities.com/webwizardsways/flash/render.html"&gt;http://www.geocities.com/webwizardsways/flash/render.html&lt;/a&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297748760397434514" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYVibczBTpI/AAAAAAAAARM/WJpTlLlaUPg/s400/JerryScript+3D+Terrain.JPG" style="cursor: hand; display: block; height: 128px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;a class="bigusername" href="http://board.flashkit.com/board/member.php?u=61758"&gt;slight&lt;/a&gt;'s pseudo voxel&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.evilbastard.org/slight/pseudovox.swf" rel="nofollow" target="_blank"&gt;http://www.evilbastard.org/slight/pseudovox.swf&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.evilbastard.org/slight/pseudovox2.swf" rel="nofollow" target="_blank"&gt;http://www.evilbastard.org/slight/pseudovox2.swf&lt;/a&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297747794774031858" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SYVhjPkdffI/AAAAAAAAARE/65vRodRxC0I/s400/slight+pseudovox.JPG" style="cursor: hand; display: block; height: 197px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 26.terrain from 25-Line ActionScript Contest &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;all source can be found here: &lt;a href="http://www.25lines.com/"&gt;http://www.25lines.com/&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;2009-January 25 lines contest: Entry-008&lt;br /&gt;Petri Leskinen's flight 25&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297754734356813138" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYVn3Lh7VVI/AAAAAAAAARk/w35WspfLbh8/s400/flight25.JPG" style="cursor: hand; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; &lt;a href="http://www.25lines.com/finalists/0901/008.txt"&gt;http://www.25lines.com/finalists/0901/008.txt&lt;/a&gt; (&lt;span style="color: red;"&gt;source&lt;/span&gt;)&lt;a href="http://www.25lines.com/finalists/0901/008.swf"&gt;http://www.25lines.com/finalists/0901/008.swf&lt;/a&gt;&lt;br /&gt;2008-November / December 25 lines contest: Entry-068&lt;br /&gt;oaxoa's voxel terrain&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298461241967956114" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYfqbVes0JI/AAAAAAAAAU0/SSszqqeDMko/s400/oaxoa+25line+voxel.JPG" style="cursor: hand; display: block; height: 206px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;2008-November / December 25 lines contest: Entry-005&lt;/div&gt;&lt;div&gt;Paulo Afonso's DYNAMIC TERRAIN&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298461238225174450" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYfqbHiWf7I/AAAAAAAAAUk/CWKmdMcuF6I/s400/25line+DYNAMIC+TERRAIN.JPG" style="cursor: hand; display: block; height: 158px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 2008-November / December 25 lines contest: Entry-027&lt;br /&gt;Piergiorgio Niero's Random Terrain 3D Generator&lt;br /&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298461237057611426" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYfqbDL-5qI/AAAAAAAAAUs/ke9lxQsja-0/s400/25line+Random+Terrain.JPG" style="cursor: hand; display: block; height: 130px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; 2008-November / December 25 lines contest: Entry-064&lt;/div&gt;&lt;div&gt;Daniil Tutubalin's Bottle Glass Mountains(in Finalists)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298461235417888434" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SYfqa9FCtrI/AAAAAAAAAUc/tEQ9wlaeNsc/s400/25line+Bottle+Glass+Mountains.JPG" style="cursor: hand; display: block; height: 301px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;27.bit-101's terrain&lt;/div&gt;&lt;div&gt;Spider Defense:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.bit-101.com/blog/?p=1022"&gt;http://www.bit-101.com/blog/?p=1022&lt;/a&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5312913851411981346" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SbtC_7Op5CI/AAAAAAAAAXU/W00XkDIyBOo/s400/bit101Spider+Defense.JPG" style="cursor: hand; display: block; height: 90px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt; terrain 2d:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.bit-101.com/content/020808.swf"&gt;http://www.bit-101.com/content/020808.swf&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.bit-101.com/flafiles/020808.fla"&gt;http://www.bit-101.com/flafiles/020808.fla&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5312913850999944658" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SbtC_5satdI/AAAAAAAAAXM/4M4uzMktzjA/s400/bit101terrain.JPG" style="cursor: hand; display: block; height: 121px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;span style="color: red;"&gt;lots &lt;/span&gt;of linescapes there!&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.artfromcode.com/?p=564"&gt;http://www.artfromcode.com/?p=564&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.artfromcode.com/?cat=6"&gt;http://www.artfromcode.com/?cat=6&lt;/a&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5312917851197085682" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SbtGovlvF_I/AAAAAAAAAXk/Eg2dP-L6VgQ/s400/bit101T2.JPG" style="cursor: hand; display: block; height: 206px; margin: 0px auto 10px; text-align: center; width: 396px;" /&gt;&lt;br /&gt;28.Andre Michelle's mode7 terrain: &lt;br /&gt;&lt;div&gt;&lt;a href="https://flaswf.googlecode.com/svn/trunk/flaswfblog/am_mode7_place3d_terrain.swf"&gt;https://flaswf.googlecode.com/svn/trunk/flaswfblog/am_mode7_place3d_terrain.swf&lt;/a&gt;&lt;br /&gt;(can't find the original link...) &lt;/div&gt;&lt;div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5312916533889382754" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SbtFcEPGuWI/AAAAAAAAAXc/Jr-DSfaKFvA/s400/ammode7T.bmp" style="cursor: hand; display: block; height: 157px; margin: 0px auto 10px; text-align: center; width: 350px;" /&gt; &lt;b&gt;&lt;span style="font-size: 130%;"&gt;Tutorials:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;1.Perlin Noise and Dynamic Terrain Generation &lt;/div&gt;&lt;div&gt;:&lt;a href="http://www.onlinekarma.net/flash3d/index.php?option=com_content&amp;amp;task=view&amp;amp;id=16&amp;amp;Itemid=1"&gt;http://www.onlinekarma.net/flash3d/index.php?option=com_content&amp;amp;task=view&amp;amp;id=16&amp;amp;Itemid=1&lt;/a&gt; (&lt;span style="color: red;"&gt;with source&lt;/span&gt;)&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5297750805089085250" src="http://4.bp.blogspot.com/_VM_xh6rvt_I/SYVkSd3f50I/AAAAAAAAARU/40Tnr5VbG1Q/s400/perliinsandy.JPG" style="cursor: hand; display: block; height: 258px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: black; font-size: 130%;"&gt;&lt;b&gt;LINKS:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;1.Generating Random Fractal Terrain&lt;/div&gt;&lt;div&gt;&lt;a href="http://gameprogrammer.com/fractal.html"&gt;http://gameprogrammer.com/fractal.html&lt;/a&gt;&lt;br /&gt;2. Voxel terrain engine(tutorial with c++ source)&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.codermind.com/articles/Voxel-terrain-engine-building-the-terrain.html"&gt;http://www.codermind.com/articles/Voxel-terrain-engine-building-the-terrain.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #cccccc;"&gt;MEMO:&lt;br /&gt;My work 1 pixel style&lt;br /&gt;2triangle perlin/3/color&lt;br /&gt;Zground 3d slic/zground traingle&lt;br /&gt;Voxel terrain&lt;/span&gt;&lt;br /&gt;&lt;a href="http://m-design.bg/terrain/"&gt;&lt;span style="color: #cccccc;"&gt;http://m-design.bg/terrain/&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #cccccc;"&gt; ?&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-1009726528907552051?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/1009726528907552051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=1009726528907552051&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1009726528907552051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/1009726528907552051'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/01/terrain-rendering-in-flash.html' title='terrain rendering in flash(draft)'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VM_xh6rvt_I/SYVGykZ2auI/AAAAAAAAAPM/mxcycIE0yMQ/s72-c/Electric+3D+engine.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-4008765022004706927</id><published>2009-01-25T03:00:00.000-08:00</published><updated>2009-01-25T21:02:43.131-08:00</updated><title type='text'>Happy New Year !</title><content type='html'>&lt;div align="center"&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;Happy New Year, Everyone !&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_VM_xh6rvt_I/SX1DucFQ0jI/AAAAAAAAAOU/UUZtQZR41F8/s1600-h/firework2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295463201948881458" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 267px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/SX1DucFQ0jI/AAAAAAAAAOU/UUZtQZR41F8/s400/firework2.JPG" border="0" /&gt;&lt;/a&gt; &lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/SX1DuLsHvWI/AAAAAAAAAOM/Jc1P9JZf0IA/s1600-h/firework1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295463197548461410" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 267px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/SX1DuLsHvWI/AAAAAAAAAOM/Jc1P9JZf0IA/s400/firework1.JPG" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-4008765022004706927?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/4008765022004706927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=4008765022004706927&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4008765022004706927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/4008765022004706927'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2009/01/happy-new-year.html' title='Happy New Year !'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VM_xh6rvt_I/SX1DucFQ0jI/AAAAAAAAAOU/UUZtQZR41F8/s72-c/firework2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-542307317306321763</id><published>2008-12-24T05:02:00.000-08:00</published><updated>2009-02-02T21:17:26.203-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snow'/><category scheme='http://www.blogger.com/atom/ns#' term='z-ground'/><title type='text'>Z-Ground Merry Christmas !</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://flaswf.googlecode.com/files/Z-Ground_Merry_Christmas.swf"&gt;&lt;img id="BLOGGER_PHOTO_ID_5283342498789528018" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 358px; CURSOR: hand; HEIGHT: 250px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SVI0AqMTEdI/AAAAAAAAAOE/ED90fmvHezU/s400/Z-Ground_Merry_Christmas.JPG" border="0" /&gt;&lt;/a&gt; A new demo of Z-Ground, pure code &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;swf&lt;/span&gt;.&lt;/div&gt;&lt;div align="center"&gt;FEATURE:snow, tree and shadow.&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://flaswf.googlecode.com/files/Z-Ground_Merry_Christmas.swf"&gt;CLICK HERE&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-542307317306321763?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/542307317306321763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=542307317306321763&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/542307317306321763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/542307317306321763'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2008/12/z-ground-merry-christmas.html' title='Z-Ground Merry Christmas !'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VM_xh6rvt_I/SVI0AqMTEdI/AAAAAAAAAOE/ED90fmvHezU/s72-c/Z-Ground_Merry_Christmas.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-6373303692963735334</id><published>2008-12-10T17:12:00.000-08:00</published><updated>2011-11-14T19:19:32.023-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3D'/><category scheme='http://www.blogger.com/atom/ns#' term='z-ground'/><category scheme='http://www.blogger.com/atom/ns#' term='panorama'/><title type='text'>z-ground goes 'real' 3D ! - z-ground FP10 preview</title><content type='html'>&lt;div align="center"&gt;This demo shows the future of z-ground engine. It combines&lt;span style="color: #3333ff;"&gt; flash 10's 3D &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;API&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; with the core of z-ground. &lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;Technically,&lt;/span&gt; &lt;b&gt;z-ground engine is still &lt;span style="color: #009900;"&gt;independent &lt;/span&gt;of flash 10's 3D functions&lt;/b&gt;&lt;/span&gt;. What you see here can also be achieved by using some old pseudo 3D tricks in flash 9, such as what is done in &lt;span style="color: #3333ff;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Papervision&lt;/span&gt;&lt;/span&gt; 3D&lt;/span&gt;. But no doubt flash 10 is simple and much better! After the release of &lt;b&gt;z-ground v0.1 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;FP&lt;/span&gt;&lt;/span&gt;9&lt;/b&gt; (maybe in the first or second month in 2009), this is what I will be busy with.&lt;a href="http://flaswf.googlecode.com/files/z-ground_FP10_preview.swf"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5278339018779050050" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SUBtXypowEI/AAAAAAAAAN8/kwPD2UWV1ME/s400/z-ground_FP10_preview.JPG" style="cursor: hand; display: block; height: 325px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt; (&lt;span style="color: red;"&gt;&lt;a href="http://labs.adobe.com/technologies/flashplayer10/"&gt;flash player 10 &lt;/a&gt;required&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;div align="center"&gt;&lt;b&gt;DEMO-v1:&lt;/b&gt;&lt;a href="http://flaswf.googlecode.com/files/z-ground_FP10_preview.swf"&gt;&lt;b&gt;HERE&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="color: #3333ff;"&gt;arrow keys-move&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="color: #3333ff;"&gt;drag-look&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="color: #3333ff;"&gt;wheel-change &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;FOV&lt;a href="http://flaswf.googlecode.com/files/z-ground-FP10-DEMO_SEA.swf"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298201069550354434" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/SYb9zTskwAI/AAAAAAAAAUU/L4dczVfxtY8/s400/z-ground-fp10-demo-v2.JPG" style="cursor: hand; display: block; height: 279px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;b&gt;DEMO-v2&lt;/b&gt;:&lt;a href="http://flaswf.googlecode.com/files/z-ground-FP10-DEMO_SEA.swf"&gt;HERE&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7999159521423864317-6373303692963735334?l=bruce-lab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bruce-lab.blogspot.com/feeds/6373303692963735334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7999159521423864317&amp;postID=6373303692963735334&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/6373303692963735334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7999159521423864317/posts/default/6373303692963735334'/><link rel='alternate' type='text/html' href='http://bruce-lab.blogspot.com/2008/12/z-ground-goes-to-real-3d-z-ground-fp10.html' title='z-ground goes &apos;real&apos; 3D ! - z-ground FP10 preview'/><author><name>Bruce Jawn</name><uri>http://www.blogger.com/profile/08115632286488544449</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://4.bp.blogspot.com/_VM_xh6rvt_I/SX1FI8M5LfI/AAAAAAAAAO0/CEuzdW8CJMo/S220/Bruce_Jawn_2008.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VM_xh6rvt_I/SUBtXypowEI/AAAAAAAAAN8/kwPD2UWV1ME/s72-c/z-ground_FP10_preview.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7999159521423864317.post-4810424059282407332</id><published>2008-11-20T04:13:00.000-08:00</published><updated>2009-02-02T21:19:07.551-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='z-ground'/><title type='text'>Maximum z-ground ---- z-ground FP9 v 0.1 preview</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5273727298468204930" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 362px; CURSOR: hand; HEIGHT: 258px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_VM_xh6rvt_I/STALCVt6UYI/AAAAAAAAAJs/Ee9nMGLf25U/s400/zsky.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;I am preparing new demos of &lt;a href="http://flaswf.googlecode.com/files/zground_prerelease_demo_package_oldslowversion.rar"&gt;z-ground engine &lt;/a&gt;recently. What I want to do half an year ago were almost finished. Source code of the engine is still under optimization. I think the &lt;span style="color:#009900;"&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;code v0.1&lt;/span&gt; for flash player 9 will be &lt;span style="color:#3333ff;"&gt;available&lt;/span&gt; in the following year - &lt;span style="color:#3333ff;"&gt;2009&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Optimization is a really taught task. I'm disappointed at the efficiency of my z-ground engine but don't know how to make it faster. The demo below shows some new features of the engine. I'm sure no PC can run it at the speed of &lt;span style="color:#ff0000;"&gt;20 FPS&lt;/span&gt; or above currently. That's why there are only pictures instead of the swf. I am also considering &lt;span style="color:#3333ff;"&gt;upgrade it on flash player 10&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;new features of z-ground&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;1.&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;walls &amp;amp; ceilings&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMBWX73dI/AAAAAAAAAKc/UnV0p4qKLC4/s1600-h/wall1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5273728380976225746" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 143px" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMBWX73dI/AAAAAAAAAKc/UnV0p4qKLC4/s200/wall1.JPG" border="0" /&gt;&lt;/a&gt;&lt;img id="BLOGGER_PHOTO_ID_5273728384651514962" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 143px" alt="" src="http://1.bp.blogspot.com/_VM_xh6rvt_I/STAMBkEMVFI/AAAAAAAAAKk/67fQBrynfak/s200/wall2.JPG" border="0" /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMBv_G84I/AAAAAAAAAKs/QUjqLMiyX3I/s1600-h/wall3.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5273728387851416450" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 171px" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMBv_G84I/AAAAAAAAAKs/QUjqLMiyX3I/s200/wall3.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMBzylSAI/AAAAAAAAAK0/k9AcJhI_KdM/s1600-h/wall4.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5273728388872620034" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 170px" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMBzylSAI/AAAAAAAAAK0/k9AcJhI_KdM/s200/wall4.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMCOQsHaI/AAAAAAAAAK8/1myBce7L19s/s1600-h/wall5.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5273728395978218914" style="WIDTH: 200px; CURSOR: hand; HEIGHT: 170px" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMCOQsHaI/AAAAAAAAAK8/1myBce7L19s/s200/wall5.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="left"&gt;This enable us to create rooms on the ground. &lt;/div&gt;&lt;div align="left"&gt;The way of drawing walls is totally different from the pre-released demo and much more efficient. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div align="left"&gt;2.&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;z-sky vs b-sky&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMz6GBYGI/AAAAAAAAALE/zfrtn6nxGrA/s1600-h/zsky.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5273729249558224994" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 228px" alt="" src="http://3.bp.blogspot.com/_VM_xh6rvt_I/STAMz6GBYGI/AAAAAAAAALE/zfrtn6nxGrA/s320/zsky.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Y
