<?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-38020100</id><updated>2012-01-30T00:44:58.922+05:30</updated><category term='Source code'/><category term='C++'/><category term='PHP'/><category term='Windows XP'/><category term='Compiler Chokes'/><category term='Flash'/><category term='iPhone'/><category term='MySQL'/><category term='Daily Rants'/><category term='VSTO &apos;n&apos; Office VBA'/><category term='OpenGL ES'/><category term='AS3'/><category term='Flex'/><category term='VB.NET'/><category term='Apache'/><category term='Game Programming'/><category term='SVN'/><category term='Funny Sometimes'/><category term='Common Coding Tips'/><category term='Android'/><category term='Pixel Shaders'/><category term='Tutorials'/><category term='OpenGL'/><category term='iPhone Mac XCode'/><title type='text'>Quakeboy'z Dev Arena</title><subtitle type='html'>Technologies I play with, things I develop, this is a place to share it with the world.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-38020100.post-1798338690105006616</id><published>2011-12-26T19:21:00.000+05:30</published><updated>2011-12-27T20:17:42.531+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pixel Shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><title type='text'>Lets learn pixel shaders - Chap 2 - Basics</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;Important - &lt;/b&gt;To move forward open another tab in your browser and open the URL&amp;nbsp;&lt;a href="http://www.iquilezles.org/apps/shadertoy/" target="_blank"&gt;http://www.iquilezles.org/apps/shadertoy/&lt;/a&gt;, I will refer to this tab simply as 'Shader Toy'&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Chapter 2 - Basics of pixel shader with 'Shader toy'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let us write some code, switch to the shader toy and notice that the "&lt;i&gt;Deform&lt;/i&gt;" shader is already loaded and is running by default. On the right side bottom you see the source code, and on the left is the rendered effect. Take some time to notice the various details/controls shown to you like&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://en.wikipedia.org/wiki/Frame_rate" target="_blank"&gt;fps&lt;/a&gt;, time, play/pause button, restart button on top of render area (place where the effect is played).&lt;br /&gt;&lt;br /&gt;2) Dimensions panel - Width and height of the render area on top it. You can change it if you want.&lt;br /&gt;&lt;br /&gt;3) The textures passed to the pixel shader are given right to the width/height box. You can pass up to 4 textures and use them in the pixel shader. The texture used in deform shader is given in the box 'unit 0'. Copy paste that URL path in a new tab and check the texture for yourself, or you can just click &lt;a href="http://www.iquilezles.org/apps/shadertoy/presets/tex3.jpg" target="_blank"&gt;this&lt;/a&gt;&amp;nbsp;link.&lt;br /&gt;&lt;br /&gt;4) Also you can check the other shaders by going through presets drop down list. Don't forget to click 'Load'. There are some cool effects which you have no idea how to create, but at the end of this series you will learn to make most of them.&lt;br /&gt;&lt;br /&gt;5) Most important thing we need to notice is the compile button. It is given above the source code area along with 'help' button.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--E5Jv1exj4U/Tvh7Nt9TdfI/AAAAAAAACNk/WQbcqBMjKLU/s1600/Screen+Shot+2011-12-26+at+7.15.50+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--E5Jv1exj4U/Tvh7Nt9TdfI/AAAAAAAACNk/WQbcqBMjKLU/s1600/Screen+Shot+2011-12-26+at+7.15.50+PM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;n00b note&lt;/b&gt; - Every time we write new code, we need to press the compile button to see new source code taking effect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6) Now let us write some code. We will begin with a blank program. Copy paste the following code in the code window.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;#ifdef GL_ES&lt;br /&gt;precision highp float;&lt;br /&gt;#endif&lt;br /&gt;uniform float time;&lt;br /&gt;uniform vec2 resolution;&lt;br /&gt;uniform vec4 mouse;&lt;br /&gt;uniform sampler2D tex0;&lt;br /&gt;uniform sampler2D tex1;&lt;br /&gt;void main(void)&lt;br /&gt;{&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;--- Now hit the compile button and see the output on the left side&amp;nbsp;---&lt;br /&gt;&lt;br /&gt;7) Beautiful isn't it !&lt;br /&gt;It will be a blank screen. Basically for now we have not written any code. Being a programmer I'm sure &amp;nbsp;you can notice that main function is empty. If you don't know what main() function is, then stop reading right away, don't waste your time. Grab a good C or C++ book or tutorial.&lt;br /&gt;&lt;br /&gt;8) Now let us write our first line. If you recap I said - "pixel shaders are programs that are run for every pixel on the screen and they can do one thing, set the pixel color". So let us do that now. Inside the void main function block write the following line&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);&lt;/blockquote&gt;gl_FragColor is a built-in variable through which we can write the pixel color. vec4 is a custom data type just like int, float, bool etc. But vec4 is a vector of 4 float numbers. The numbers are the colors - R, G, B and A. So here we say R, G, B are zero and Alpha is one which works out to black color. Hit compile button and make sure it is not paused on the left side, you will see the screen turning black. Now try replacing that line with the following.&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);&lt;/blockquote&gt;Click compile and run again, you get the idea? As the same program is running for each pixel on the rendering area, and what we are doing is just setting it to white, the whole screen looks white.&lt;br /&gt;&lt;br /&gt;Now how do we make things interesting? Wait for next chapter :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-1798338690105006616?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/1798338690105006616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=1798338690105006616' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/1798338690105006616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/1798338690105006616'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2011/12/lets-learn-pixel-shaders-chap-2-basics.html' title='Lets learn pixel shaders - Chap 2 - Basics'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/--E5Jv1exj4U/Tvh7Nt9TdfI/AAAAAAAACNk/WQbcqBMjKLU/s72-c/Screen+Shot+2011-12-26+at+7.15.50+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-2121681342238666290</id><published>2011-12-25T16:09:00.001+05:30</published><updated>2011-12-28T16:00:27.234+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pixel Shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><title type='text'>Lets learn pixel shaders! - New Series - Chapter 1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is the beginning of a series of tutorials, about pixel shaders (aka fragment shaders) with WebGL. I will start by assuming you are someone who has "absolutely no experience in graphics programming", but you should know what pixels are, what their components are. And optionally if you have basic 3d texturing knowledge, it will help a lot, but again not compulsory.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Without more blah, blah, let us start learning fellow programmers!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks to&amp;nbsp;&lt;a href="http://www.iquilezles.org/apps/shadertoy/"&gt;http://www.iquilezles.org/apps/shadertoy/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;without which I would have never even started this! All our tutorials will be explain with reference to that web app. You will need one of the latest browser to run it.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: large;"&gt;Chapter 1 -&amp;nbsp;Pre-requisite (for the n00b graphics programmer)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Pixels (skip if you know)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Everything you see on your monitor is made of pixels. If you zoom into your computer monitor, basically it is made of basic blocks (usually square shaped) called pixels. But as they are very small and closely packed, you are not able to notice them. Every monitor doesn't have the same number of pixels.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Resolution (skip if you know)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It is (number of pixels lengthwise) x (number of pixels widthwise). For eg. iPhone 3GS has a resolution of 320 x 480 when you hold the phone in portrait mode. iPhone 4 / 4S has 960 x 640 as their resolution. A full HD (High Definition) monitor has 1920 x 1080 pixels. More the resolution, more is the image detail/clarity. Will you be able to show more details with a 10x10 grid of dots or a 100x100 grid of dots? Think about it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pixel components&amp;nbsp;(skip if you know)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Each pixel can do only one thing - "They can display a color". A pixel has three basic components - R, G and B. They are the primary colors, and combining them in various ways, we can make thousands (or millions, in latest monitors) of other colors. Usually each color is represented with one byte (8 bits, so value range is 0 - 255). So put together for each pixel you will have total of 3 x 8 bits = 24 bits or 3 bytes of color information.&lt;br /&gt;&lt;br /&gt;For eg.&lt;br /&gt;black (R = 0, G = 0, B = 0)&lt;br /&gt;white (R = 255, G = 255, B = 255)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Introducing Alpha&amp;nbsp;(skip if you know)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Apart from R, G and B, there is another component for a pixel, its called Alpha. Alpha = Transparency. Often pixels can be overwritten on top of each other, when that happens they are "mixed" according to their alpha levels. So R, G, B and A are the components of a pixel, which takes 32 bits per pixel. Understand there are more ways to represent a pixel, its not always 32 bits, but it is the most advanced pixel format, and enables an individual pixel to represent the max number of colours.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So, what are pixel shaders ?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now that you know what pixels are, pixel shaders are nothing but programs, very similar to a C program. Next paragraph is very important.&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;A pixel shader is run for every pixel, before getting displayed on the screen. So let us say we have 1920 x 1080 pixels for a full screen game, which is a total of&amp;nbsp;2073600 pixels, which means a pixel shader is run that many times! But that is okay because they are all run on the GPU, instead of the CPU (Graphics processing unit, a special hardware dedicated to graphics, present nowadays on almost all computers).&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img src="https://docs.google.com/drawings/pub?id=1fDLtNyC02MwAX29ge6TP0kmsJZBm0nyoCJ4L7ArjTuo&amp;amp;w=846&amp;amp;h=460" /&gt;Now that we know the basics, let us get started with&lt;br /&gt;1) what can be done in a pixel shader,&lt;br /&gt;2) how it can be done and&lt;br /&gt;3) what information we have access to in the next chapter !&lt;br /&gt;&lt;br /&gt;Any doubts are welcome in the comments section.&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/38020100-2121681342238666290?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/2121681342238666290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=2121681342238666290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2121681342238666290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2121681342238666290'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2011/12/lets-learn-pixel-shaders-new-series.html' title='Lets learn pixel shaders! - New Series - Chapter 1'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-4965036517222168235</id><published>2011-07-22T12:23:00.000+05:30</published><updated>2011-07-22T12:23:58.138+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Common Coding Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Game Programming'/><title type='text'>Common mistakes done by every (game) programmer</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is a re-blog of a recent article in programming section of Gamasutra. It was titled "&lt;a href="http://www.gamasutra.com/view/feature/6426/sponsored_feature_programming_.php"&gt;Programming Sins - Common Errors From Down In The Trenches&lt;/a&gt;". I would like to summarize it, but I definitely recommend you to read and start adding some points to your coding standards document.&lt;br /&gt;&lt;br /&gt;Here is what I thought are the main points from that article&lt;br /&gt;&lt;br /&gt;Coding standards for Games.&lt;br /&gt;&lt;br /&gt;1. Always code for NULL cases when loading resources and using it. Expect NULL data where ever possible and code.&lt;br /&gt;2. When you write functions DO NOT use ambiguous variable names, function names and parameter names.&lt;br /&gt;3. Do NOT use abbreviations when naming variables/ functions/ parameters.&lt;br /&gt;4. Validate pointers at least once before accessing them.&lt;br /&gt;5. Validate data (clip them to valid ranges etc.)&lt;br /&gt;6. Have a default state (like a default texture)&lt;br /&gt;7. Consider Memory fragmentation when planning your code.&lt;br /&gt;8. AVOID copy pasting code, try to always make them into functions when reusing. &lt;br /&gt;&lt;br /&gt;You should definitely read the &lt;a href="http://www.gamasutra.com/view/feature/6426/sponsored_feature_programming_.php"&gt;original article here&lt;/a&gt; though, as it convinces and gives excellent real world examples of why you should follow the above points.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-4965036517222168235?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/4965036517222168235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=4965036517222168235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4965036517222168235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4965036517222168235'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2011/07/common-mistakes-done-by-every-game.html' title='Common mistakes done by every (game) programmer'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-7564124713856118181</id><published>2011-04-12T16:25:00.000+05:30</published><updated>2011-04-17T21:18:31.943+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Mac XCode'/><title type='text'>XCode 4 icon</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-C-EVmGlIVbY/TaQung1_C7I/AAAAAAAAB4s/kazqSG4beds/s1600/Xcode_icon.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-C-EVmGlIVbY/TaQung1_C7I/AAAAAAAAB4s/kazqSG4beds/s400/Xcode_icon.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Like me if you have installed both XCode3 and XCode4, and you wanna have both in the dock, you will find having the same icon is confusing, so here is a custom icon which you can use.&lt;br /&gt;&lt;br /&gt;Right click XCode.app and click "Show Package Contents" and after that navigate to "Contents/Resources" and replace the existing Xcode.icns with &lt;a href="http://dl.dropbox.com/u/1389278/development/Xcode.icns"&gt;this&lt;/a&gt; one.&lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://dl.dropbox.com/u/1389278/development/Xcode.icns"&gt;Custom Xcode.icns file&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/38020100-7564124713856118181?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/7564124713856118181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=7564124713856118181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/7564124713856118181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/7564124713856118181'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2011/04/xcode-4-custom-icon.html' title='XCode 4 icon'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-C-EVmGlIVbY/TaQung1_C7I/AAAAAAAAB4s/kazqSG4beds/s72-c/Xcode_icon.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-2742346089850011343</id><published>2011-02-22T13:02:00.000+05:30</published><updated>2011-12-28T15:25:57.553+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Download Android SDK standalone for offline installation</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Update :- Ice Cream Sandwich links (4.0) updated - thanks Vikram!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1&gt;How to install Android SDK without internet connection&lt;/h1&gt;&lt;br /&gt;I searched all over the internet and found no posts like this, hence I'm making one hoping it would be helpful for a lot of people.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The magic URL used to be&amp;nbsp;&lt;/b&gt;- &lt;a href="http://dl-ssl.google.com/android/repository/repository.xml"&gt;http://dl-ssl.google.com/android/repository/repository.xml&lt;/a&gt;&amp;nbsp;(Outdated)&lt;br /&gt;That is the XML file from which the URL for downloading the SDK packages are obtained.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update :-&lt;/b&gt; The previous URL is now invalid, the new URL is given below&lt;br /&gt;&lt;a href="https://dl-ssl.google.com/android/repository/repository-5.xml" target="_blank"&gt;https://dl-ssl.google.com/android/repository/repository-5.xml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For e.g. if you want to download Android SDK for version 4.0.3 for all platforms, you could look up that XML file. You will find a block under tag SDK 4.0.3 like this&lt;br /&gt;&lt;br /&gt;&amp;lt;sdk:archive arch="any" os="any"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;sdk:size&amp;gt;44758833&amp;lt;/sdk:size&amp;gt;&lt;br /&gt;&amp;lt;sdk:checksum type="sha1"&amp;gt;f2aa75133c29916b0b0b984974c2d5e46cb09e9c&amp;lt;/sdk:checksum&amp;gt;&lt;br /&gt;&amp;lt;sdk:url&amp;gt;&lt;b&gt;android-15_r01.zip&lt;/b&gt;&amp;lt;/sdk:url&amp;gt;&lt;br /&gt;&amp;lt;/sdk:archive&amp;gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So the URL will be is &lt;a href="http://dl-ssl.google.com/android/repository/android-15_r01.zip" target="_blank"&gt;http://dl-ssl.google.com/android/repository/&lt;b&gt;android-15_r01.zip&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;If all the above sounds too complex&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;You can directly download from the below links. If this page does turn out to be useful, then I might update it regularly. Do leave a comment to let me know if it has helped you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 4.0.3 (*** NEW ***)&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-15_r01.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 4.0&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-14_r03.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 3.2 revision 1&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-3.2_r01-linux.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 3.1 revision 3&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-3.1_r03-linux.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 3.0, revision 2&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-3.0_r02-linux.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.3.3_r2&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.3.3_r02-linux.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.3.1_r2&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.3.1_r02-linux.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.2_r3&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.2_r03-linux.zip" target="_blank"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;--- OLDER LINKS (Still working) ---&lt;br /&gt;&lt;br /&gt;Android SDK Platform Honeycomb Preview, revision 1&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-3.0_pre_r01-linux.zip"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.3.3_r1 (Offline complete download) - Approx 80 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.3.3_r01-linux.zip"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.3_r1 (Offline complete download) - Approx 80 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.3_r01-linux.zip"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.2_r2 (Offline complete download) - Approx 80 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.2_r02-windows.zip"&gt;Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.2_r02-macosx.zip"&gt;Mac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.2_r02-linux.zip"&gt;Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.1_r1 (Offline complete download) - Approx 80 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.1_r01-windows.zip"&gt;Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.1_r01-macosx.zip"&gt;Mac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.1_r01-linux.zip"&gt;Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.0.1_r1 (Offline complete download) - Approx 80 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.0.1_r01-windows.zip"&gt;Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.0.1_r01-macosx.zip"&gt;Mac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.0.1_r01-linux.zip"&gt;Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 2.0, revision 1 (Offline complete download) - Approx 80 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.0_r01-windows.zip"&gt;Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.0_r01-macosx.zip"&gt;Mac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-2.0_r01-linux.zip"&gt;Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 1.6_r2&amp;nbsp; (Offline complete download) - Approx 63 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-1.6_r02-windows.zip"&gt;Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-1.6_r02-macosx.zip"&gt;Mac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-1.6_r02-linux.zip"&gt;Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Platform 1.5_r3&amp;nbsp; (Offline complete download) - Approx 54 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-1.5_r03-windows.zip"&gt;Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-1.5_r03-mac_x86.zip"&gt;Mac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/android-1.5_r03-linux_x86.zip"&gt;Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Docs for Android API 7, revision 1 - Approx 48 MB&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/docs-2.1_r01-linux.zip"&gt;All Platforms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android SDK Tools, revision 5&amp;nbsp; (16 to 23 MB)&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/tools_r05-windows.zip"&gt;Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/tools_r05-macosx.zip"&gt;Mac&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dl-ssl.google.com/android/repository/tools_r05-linux.zip"&gt;Linux&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/38020100-2742346089850011343?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/2742346089850011343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=2742346089850011343' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2742346089850011343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2742346089850011343'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2010/05/download-android-sdk-standalone-for.html' title='Download Android SDK standalone for offline installation'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-4101874798683514709</id><published>2011-02-17T18:12:00.000+05:30</published><updated>2011-02-17T18:12:36.347+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Compiler Chokes'/><title type='text'>Pointer not declared even when declared !</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A Strange problem encountered yesterday which left us puzzled for a few mins :) (Check image below)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-u5tK02SrLT4/TV0Vkul9ugI/AAAAAAAAB1U/9pYkhnX8Pl0/s1600/Screen+shot+2011-02-16+at+4.27.36+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/-u5tK02SrLT4/TV0Vkul9ugI/AAAAAAAAB1U/9pYkhnX8Pl0/s640/Screen+shot+2011-02-16+at+4.27.36+PM.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;So now, we tried everything possible. Until at last when we saw that there was a &lt;b&gt;backslash&lt;/b&gt; after "Plist" in the comment line. As backslash is an escape sequence, it made the whole next line invalid, more like a comment.&lt;br /&gt;&lt;br /&gt;Once we deleted that &lt;b&gt;backslash, &lt;/b&gt;things were back to normal. But hey, aren't comments supposed to suppress anything in them including escape characters&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-4101874798683514709?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/4101874798683514709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=4101874798683514709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4101874798683514709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4101874798683514709'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2011/02/pointer-not-declared-even-when-declared.html' title='Pointer not declared even when declared !'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-u5tK02SrLT4/TV0Vkul9ugI/AAAAAAAAB1U/9pYkhnX8Pl0/s72-c/Screen+shot+2011-02-16+at+4.27.36+PM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-4917827472475481074</id><published>2011-02-17T17:58:00.000+05:30</published><updated>2011-02-17T17:58:22.922+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>How to ignore build directory in SVN from command line</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This works for Windows/Mac/Linux, but its tested on Mac. On Windows, you can do it easily with Free TortoiseSVN Shell context menu, so this method will be useful on Mac/Linux.&lt;br /&gt;&lt;br /&gt;Lets suppose your folder structure is&lt;br /&gt;SVNfolder-&amp;gt;trunk-&amp;gt;development-&amp;gt;Projectfolder-&amp;gt;build&lt;br /&gt;&lt;br /&gt;Now open terminal and cd to development. (Now if you 'ls' it wil' list Projectfolder)&lt;br /&gt;type&lt;b&gt; &lt;/b&gt;&lt;i&gt;svn propset svn:ignore "build" Projectfolder/&amp;nbsp; &lt;/i&gt;and press Enter.&lt;br /&gt;&lt;br /&gt;and that is it, your build folder will be ignored.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-4917827472475481074?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/4917827472475481074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=4917827472475481074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4917827472475481074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4917827472475481074'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2011/02/how-to-ignore-build-directory-in-svn.html' title='How to ignore build directory in SVN from command line'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-2247472770536244018</id><published>2009-12-20T18:17:00.000+05:30</published><updated>2009-12-20T18:17:26.610+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><category scheme='http://www.blogger.com/atom/ns#' term='Source code'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Simflex Image Gallery - Full Free Flex Image Gallery</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Oht2jqXG8Hw/Sy4aTWRMiiI/AAAAAAAABSo/v3is1KFNuso/s1600-h/qbimagegallery.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Oht2jqXG8Hw/Sy4aTWRMiiI/AAAAAAAABSo/v3is1KFNuso/s400/qbimagegallery.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I am releasing my source code for a &lt;b&gt;full fledged Flex 3 image gallery along with a PHP based Minimal Image file manager &lt;/b&gt;page with upload, delete and automatic thumbnail generation features. I had made this while learning Flex, but it is very usable in many projects.&lt;br /&gt;&lt;br /&gt;To see it in action, download, extract and put the bin-debug folder under your web server. There is a folder called "Admin" inside "bin-debug" folder which has the PHP part responsible image upload, XML file generation and auto thumbnail code. To manage the images, use &lt;b&gt;filelist.php &lt;/b&gt;in admin folder. Tested with JPG and PNG images.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dl.dropbox.com/u/1389278/development/Quakeboy%20ImageGallery.rar"&gt;Download Source code&lt;/a&gt; - 8.78 MB (along with sample images)&lt;br /&gt;Please drop me a line if you are using this anywhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-2247472770536244018?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/2247472770536244018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=2247472770536244018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2247472770536244018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2247472770536244018'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/12/simflex-image-gallery-full-free-flex.html' title='Simflex Image Gallery - Full Free Flex Image Gallery'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Oht2jqXG8Hw/Sy4aTWRMiiI/AAAAAAAABSo/v3is1KFNuso/s72-c/qbimagegallery.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-250506206652543993</id><published>2009-12-20T12:25:00.000+05:30</published><updated>2009-12-20T18:19:26.623+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL ES'/><category scheme='http://www.blogger.com/atom/ns#' term='Source code'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>3d Tunnel OpenGL Source code - iPhone OpenGL ES compatible !</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Oht2jqXG8Hw/Sy29-rHRiYI/AAAAAAAABSg/P14ZqidEsJA/s1600-h/tunnel.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Oht2jqXG8Hw/Sy29-rHRiYI/AAAAAAAABSg/P14ZqidEsJA/s320/tunnel.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I am releasing source code of the iPhone OpenGL ES compatible Never-Ending Tunnel Source Code. The code is done using SDL on Windows only. But the OpenGL elements use only Triangle strips and all OpenGL ES compatible functions and porting to iPhone is a cakewalk.&lt;br /&gt;&lt;br /&gt;I have searched on the web and never found a ES compatible version which is easily portable, so here we go enjoy. I have intentionally left a small glitch in Texture Coordinate generation, which actually looks pretty according to me. If you need I can help you to fix is easily.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Some important notes :-&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No Models present - The Tunnel is a torus which is completely procedurally generated.. so the torus properties can be changed easily.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The Texture generation part is platform dependent. The files RTexture.h and RTexture.cpp is almost completely copy-paste reusable :D&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;DO NOT REMOVE &lt;/b&gt;- #define QUAKEBOY_IS_AWESOME &lt;a href="http://codingcomics.blogspot.com/2009/10/enforcing-awesomeness.html"&gt;(!)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://dl.dropbox.com/u/1389278/development/Tunnel.rar"&gt;Download Source code (along with SDL Library and Binaries included - 1.36 MB)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-250506206652543993?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/250506206652543993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=250506206652543993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/250506206652543993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/250506206652543993'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/12/3d-tunnel-opengl-source-code-iphone.html' title='3d Tunnel OpenGL Source code - iPhone OpenGL ES compatible !'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Oht2jqXG8Hw/Sy29-rHRiYI/AAAAAAAABSg/P14ZqidEsJA/s72-c/tunnel.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-5364447470695011090</id><published>2009-09-26T16:45:00.001+05:30</published><updated>2009-12-20T18:19:26.623+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Source code'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Andre Michelle's Tile based Scrolling ported to AS 3</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Update:-&lt;/span&gt; I have found something that has to be added to the existing code. The SWF embedded here runs only @ around 60 FPS on a Safari or Firefox &lt;span style="font-weight: bold;"&gt;on a Mac&lt;/span&gt;. I will work on a more consistent render loop code adding some timer calculation elements soon.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I have ported the &lt;a href="http://lab.andre-michelle.com/tilemapping"&gt;Tile based scrolling in Flash code by Andre Michelle &lt;/a&gt;to use Actionscript 3.0&lt;br /&gt;Main challenge I faced was the tearing issue which was removed after I used Timer Event and updateAfterEvent() method. Thanks to &lt;a href="http://www.8bitrocket.com/newsdisplay.aspx?newspage=10248"&gt;8bitRocket&lt;/a&gt; site for the tip.&lt;br /&gt;&lt;br /&gt;&lt;object width="420" height="320"&gt;&lt;embed src="http://img4.imageshack.us/img4/1617/mainnew.swf" wmode="transparent" width="420" height="320"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am getting a blazing 160 FPS in browser.. OMG Flash rocks ! If anyone wants me to provide comments and documentation for the code. I will happily do it on request.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dl.getdropbox.com/u/1389278/tilemapping.rar"&gt;Click here to get the full source code.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;P.S. If its slow, its because you might be having the static noise swf playing below (scroll page down). View on the post page by click the title to ensure it plays smoothly.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-5364447470695011090?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/5364447470695011090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=5364447470695011090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5364447470695011090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5364447470695011090'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/09/andre-michelles-tile-based-scrolling.html' title='Andre Michelle&apos;s Tile based Scrolling ported to AS 3'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-6691122991538943103</id><published>2009-09-16T00:25:00.000+05:30</published><updated>2009-12-20T18:19:26.624+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='AS3'/><category scheme='http://www.blogger.com/atom/ns#' term='Source code'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Creating Static TV Noise in Flash using AS3</title><content type='html'>&lt;object width="420" height="320"&gt;&lt;embed src="http://img30.imageshack.us/img30/7848/static.swf" width="420" height="320" wmode="transparent"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;Creating Fast and Smooth Static TV Noise in Flash using AS3 was a simpler task than I expected it. First attempt was using for loops to set every pixel and was not very fast. A Simple browse through the API docs for BitmapData class gave me the 'noise' method&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;b&gt;bgdata.noise(Math.random() * 1000, 0, 255, 7, true);&lt;/b&gt;&lt;/div&gt;&lt;div&gt;did the trick :)&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Complete code below&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;package {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;import flash.display.Sprite;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;import flash.events.Event;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;import flash.display.Graphics;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;import flash.display.Bitmap;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;import flash.display.BitmapData;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;import flash.geom.Point;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;public class StaticNoise extends Sprite {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;const ww = 480;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;const hh = 272;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;var bgdata:BitmapData = new BitmapData(ww, hh, false, 0xffffff);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;var bg:Bitmap = new Bitmap(bgdata);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;var zeroPt:Point = new Point(0,0);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;public function StaticNoise() {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;addChild(bg);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;addEventListener(Event.ENTER_FRAME, drawBaby);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;function drawBaby(e:Event) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;bgdata.lock();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;bgdata.noise(Math.random() * 1000, 0, 255, 7, true);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;bgdata.unlock();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;You can modify,use this code where ever you want, without giving credits. But please just let me know in the comments if it helped you.&lt;/blockquote&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/38020100-6691122991538943103?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/6691122991538943103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=6691122991538943103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6691122991538943103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6691122991538943103'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/09/creating-static-tv-noise-in-flash-using.html' title='Creating Static TV Noise in Flash using AS3'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-8790957907909473437</id><published>2009-07-10T11:28:00.000+05:30</published><updated>2009-07-10T11:33:54.278+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone Mac XCode'/><title type='text'>XCode code comes to center of screen problem</title><content type='html'>Today I had a strange error with code alignment when using XCode. After I pressed ENTER key, the next line begins from the center of screen. Each time I have to manually press the backspace and it was annoying.&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select All&lt;/li&gt;&lt;li&gt;Right Click/Ctrl Click&lt;/li&gt;&lt;li&gt;Select "Re-Indent Selection"&lt;/li&gt;&lt;li&gt;Now examine the full file by scrolling from top to bottom.&lt;/li&gt;&lt;li&gt;If the code starts aligning itself strangely from a particular line, the problem is with the previous line. You might have probably missed out a bracket (which was the case with me) or something else too..&lt;/li&gt;&lt;/ol&gt;Hope XCode developers @ Apple fix this in the next release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-8790957907909473437?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/8790957907909473437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=8790957907909473437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/8790957907909473437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/8790957907909473437'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/07/xcode-code-comes-to-center-of-screen.html' title='XCode code comes to center of screen problem'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-4994441036117817386</id><published>2009-07-09T13:09:00.000+05:30</published><updated>2009-07-09T13:35:14.459+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone OpenGL ES Extensions List</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;On the Simulator&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;iPhone 3.0 SDK with Simulator 3.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;GL_OES_compressed_paletted_texture&lt;br /&gt;GL_OES_draw_texture&lt;br /&gt;GL_OES_mapbuffer&lt;br /&gt;GL_OES_matrix_palette&lt;br /&gt;GL_OES_point_size_array&lt;br /&gt;GL_OES_read_format&lt;br /&gt;GL_OES_stencil8&lt;br /&gt;GL_OES_texture_mirrored_repeat&lt;br /&gt;GL_OES_point_sprite&lt;br /&gt;GL_OES_framebuffer_object&lt;br /&gt;GL_OES_blend_subtract&lt;br /&gt;GL_EXT_texture_lod_bias&lt;br /&gt;GL_EXT_texture_filter_anisotropic&lt;br /&gt;GL_OES_depth24&lt;br /&gt;GL_OES_rgb8_rgba8&lt;br /&gt;GL_IMG_read_format&lt;br /&gt;GL_IMG_texture_compression_pvrtc&lt;br /&gt;GL_IMG_texture_format_BGRA8888&lt;br /&gt;GL_APPLE_texture_2D_limited_npot&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;On the Device&lt;br /&gt;iPhone 3G with OS 3.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;GL_EXT_texture_filter_anisotropic&lt;br /&gt;GL_EXT_texture_lod_bias&lt;br /&gt;GL_IMG_read_format&lt;br /&gt;GL_IMG_texture_compression_pvrtc&lt;br /&gt;GL_IMG_texture_format_BGRA8888&lt;br /&gt;GL_OES_blend_subtract&lt;br /&gt;GL_OES_compressed_paletted_texture&lt;br /&gt;GL_OES_depth24&lt;br /&gt;GL_OES_draw_texture&lt;br /&gt;GL_OES_framebuffer_object&lt;br /&gt;GL_OES_mapbuffer&lt;br /&gt;GL_OES_matrix_palette&lt;br /&gt;GL_OES_point_size_array&lt;br /&gt;GL_OES_point_sprite&lt;br /&gt;GL_OES_read_format&lt;br /&gt;GL_OES_rgb8_rgba8&lt;br /&gt;GL_OES_texture_mirrored_repeat&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;On the Device&lt;br /&gt;iPod Touch 2nd Gen with OS 3.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;GL_EXT_texture_filter_anisotropic&lt;br /&gt;GL_EXT_texture_lod_bias&lt;br /&gt;GL_IMG_read_format&lt;br /&gt;GL_IMG_texture_compression_pvrtc&lt;br /&gt;GL_IMG_texture_format_BGRA8888&lt;br /&gt;GL_OES_blend_subtract&lt;br /&gt;GL_OES_compressed_paletted_texture&lt;br /&gt;GL_OES_depth24&lt;br /&gt;GL_OES_draw_texture&lt;br /&gt;GL_OES_framebuffer_object&lt;br /&gt;GL_OES_mapbuffer&lt;br /&gt;GL_OES_matrix_palette&lt;br /&gt;GL_OES_point_size_array&lt;br /&gt;GL_OES_point_sprite&lt;br /&gt;GL_OES_read_format&lt;br /&gt;GL_OES_rgb8_rgba8&lt;br /&gt;GL_OES_texture_mirrored_repeat&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://iphonedevelopment.blogspot.com"&gt;Jeff Lamarche&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Code to get all OpenGL ES extensions&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;NSString *extensionString = [NSString stringWithUTF8String:(char*)glGetString(GL_EXTENSIONS)];&lt;br /&gt;NSArray *extensions = [extensionString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];&lt;br /&gt;&lt;br /&gt;for (NSString *oneExtension in extensions)&lt;br /&gt;       NSLog(oneExtension);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Conclusion:&lt;/span&gt;- There is no difference in OpenGL ES Extensions between an iPhone and iPod touch versions used in tests above. But in Simulator, it has everything supported by Device + Extra Extensions too.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;/span&gt;&lt;span style="font-size:78%;"&gt;------------&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&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/38020100-4994441036117817386?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/4994441036117817386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=4994441036117817386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4994441036117817386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4994441036117817386'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/07/iphone-opengl-es-extensions-list.html' title='iPhone OpenGL ES Extensions List'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-7672058513739072458</id><published>2009-04-14T12:16:00.000+05:30</published><updated>2009-04-14T12:17:30.210+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android keyCodes list</title><content type='html'>a - z&lt;br /&gt;29 - 54&lt;br /&gt;&lt;br /&gt;"0" - "9"&lt;br /&gt;7 - 16&lt;br /&gt;&lt;br /&gt;BACK BUTTON - 4&lt;br /&gt;MENU BUTTON - 82&lt;br /&gt;&lt;br /&gt;UP, DOWN, LEFT, RIGHT&lt;br /&gt;19, 20, 21, 22&lt;br /&gt;&lt;br /&gt;SELECT (MIDDLE) BUTTON - 23&lt;br /&gt;&lt;br /&gt;SPACE - 62&lt;br /&gt;SHIFT - 59&lt;br /&gt;ENTER - 66&lt;br /&gt;BACKSPACE - 67&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-7672058513739072458?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/7672058513739072458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=7672058513739072458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/7672058513739072458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/7672058513739072458'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/04/android-keycodes-list.html' title='Android keyCodes list'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-3618700787059004545</id><published>2009-04-06T12:27:00.000+05:30</published><updated>2009-04-06T12:36:46.998+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>How to take Screenshot in Android Emulator with Eclipse</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Oht2jqXG8Hw/SdmpnstAfQI/AAAAAAAABIc/5_jlB6m-cIA/s1600-h/screen.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Oht2jqXG8Hw/SdmpnstAfQI/AAAAAAAABIc/5_jlB6m-cIA/s400/screen.PNG" alt="" id="BLOGGER_PHOTO_ID_5321470934194879746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I used to use PrintScreen &gt; MSPAINT &gt; Ctrl+V combination to capture screen of Android Emulator. Recently discovered that we can get a neat screen shot inside Eclipse using the Devices View.&lt;br /&gt;&lt;br /&gt;If the Devices panel is not visible, on the menu bar click Window &gt; Show View &gt; Other. In the newly opened dialog box, under Android category, select Devices.&lt;br /&gt;&lt;br /&gt;Now on the Devices panel, Click the button as shown in the Image and your screenshot is ready.&lt;br /&gt;&lt;br /&gt;tags:- &lt;span style="font-weight: bold;"&gt;android screen capture, android screenshot, android emulator screenshot&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-3618700787059004545?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/3618700787059004545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=3618700787059004545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/3618700787059004545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/3618700787059004545'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/04/how-to-take-screenshot-in-android.html' title='How to take Screenshot in Android Emulator with Eclipse'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Oht2jqXG8Hw/SdmpnstAfQI/AAAAAAAABIc/5_jlB6m-cIA/s72-c/screen.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-6965540870952593653</id><published>2009-02-11T16:12:00.000+05:30</published><updated>2009-02-11T16:22:13.511+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>OpenGL texture upside down in Android ?</title><content type='html'>Yes....&lt;br /&gt;&lt;br /&gt;The texture co-ordinates in Android for OpenGL ES has been to be calculated with upper left as origin 0,0 as opposed to the traditional OpenGL where bottom left is the origin (0,0)&lt;br /&gt;&lt;br /&gt;Remember upper left/ top left is the origin (0,0)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-6965540870952593653?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/6965540870952593653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=6965540870952593653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6965540870952593653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6965540870952593653'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/02/opengl-texture-upside-down-in-android.html' title='OpenGL texture upside down in Android ?'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-6623006092564961111</id><published>2009-02-09T19:09:00.001+05:30</published><updated>2009-12-20T18:19:26.625+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Source code'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>How to load a texture in Android OpenGL ES</title><content type='html'>Here is how you can easily load a texture from any image format - PNG, BMP, JPG etc.. in OpenGL ES in Android.&lt;br /&gt;&lt;br /&gt;**Before you begin the code, you need to import your images into your project's /res/drawable/ folder. Just right click the project in eclipse and select import to do that.**&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//First setup the integer array to hold texture numbers which OpenGL generates&lt;/span&gt;&lt;br /&gt;       &lt;span style="font-style: italic;"&gt;int texture[] = new int[1];&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//Generate and bind to the texture (gl is my GL10 object)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        gl.glGenTextures(1, texture, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//Setup the texture co-ordinates&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        float texCoords[] = {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                 0.0f, 0.0f,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                 1.0f, 0.0f,.......};&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        FloatBuffer texcoords = FloatBuffer.wrap(texCoords);        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texcoords);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        Bitmap wood = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.myimagefilenamewithoutextension);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//Setup optional texture parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//Set the texture image&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, wood, 0); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//Enable texture related flags (Important)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        gl.glEnable(GL10.GL_TEXTURE_2D);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope that helped you.. please let me know any problems&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-6623006092564961111?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/6623006092564961111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=6623006092564961111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6623006092564961111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6623006092564961111'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html' title='How to load a texture in Android OpenGL ES'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-5518339556326829990</id><published>2009-02-05T15:18:00.000+05:30</published><updated>2009-02-05T15:46:26.476+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Turning on Depth Buffer makes everything disappear !</title><content type='html'>I finally got to use textures on Android using OpenGL ES, and I found that its turn I started using the Depth buffer for some proper rendering. The moment I uncommented&lt;br /&gt;&lt;br /&gt;gl.glEnable(GL10.GL_DEPTH_BUFFER);&lt;br /&gt;&lt;br /&gt;The object disappeared and became invisible. Not even a pixel of the object was visible. Then a colleague of mine gave me a hint about clearing buffers !&lt;br /&gt;&lt;br /&gt;Uffff ! I corrected the line&lt;br /&gt;"gl.glClear(GL10.GL_COLOR_BUFFER_BIT);"&lt;br /&gt;--to--&lt;br /&gt;"gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);"&lt;br /&gt;&lt;br /&gt;and everything was fine again !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-5518339556326829990?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/5518339556326829990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=5518339556326829990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5518339556326829990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5518339556326829990'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/02/turning-on-depth-buffer-makes.html' title='Turning on Depth Buffer makes everything disappear !'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-4345923347161010640</id><published>2009-02-05T14:46:00.000+05:30</published><updated>2009-02-05T15:48:18.518+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Funny Sometimes'/><title type='text'>Funny Resume</title><content type='html'>I fell on&lt;span style="font-size:78%;"&gt; &lt;a href="http://uk.geocities.com/sloppyturds/cv.html"&gt;http://uk.geocities.com/sloppyturds/cv.html&lt;/a&gt;&lt;/span&gt; from one of gamedev.net forum posts. Then I found a CV which was interesting and funny (at least for me !)&lt;br /&gt;&lt;h1&gt;&lt;span style="font-size:100%;"&gt;zeds cv&lt;/span&gt;&lt;br /&gt;&lt;/h1&gt;    i am 29 years old kiwi who born in aoetearoa on the look out for game programming work.  &lt;h2&gt;&lt;span style="font-size:100%;"&gt;talents/deeds/wishes&lt;/span&gt;&lt;/h2&gt;  &lt;li&gt;ive written 2 operas + more than 400 songs &lt;/li&gt;&lt;li&gt;i can drink lots of piss without getting pissed &lt;/li&gt;&lt;li&gt;can program c, c++, pascal, basic, z80 assembly, cobol(the only one ive been offically taught). some  though i havent done for 'n years. &lt;/li&gt;&lt;li&gt;basic knowledge of win32 + linux + opengl + directx ( though i will not use the fascist api ). &lt;/li&gt;&lt;li&gt;i speak 3 languages (fluent in none - not even my mothertongune) &lt;/li&gt;&lt;li&gt;well travelled (7x round the world) &lt;/li&gt;&lt;li&gt;i need classical music to work esp wagner &lt;/li&gt;&lt;li&gt;one of the strongest ppl on the planet, physically and mentally &lt;/li&gt;&lt;li&gt;can work 80 hour weeks  &lt;/li&gt;&lt;li&gt;havent washed my hair this century, first person to fart this century (unofficial). &lt;/li&gt;&lt;li&gt;plays a resonable accoustic guitar &lt;/li&gt;&lt;li&gt;willing to relocate to + live in, in order of preference  ( no other countries!!! ) &lt;ul type="circle"&gt; - eastern europe - south germany - iceland - china - rest of europe - se asia - israel - south america - india - oz ( except queensland - too many wankers ) &lt;/ul&gt; &lt;h3&gt;&lt;span style="font-size:100%;"&gt;dont delay, hurry up and grab this ass-et for your programming team.&lt;/span&gt;&lt;/h3&gt;&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-4345923347161010640?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/4345923347161010640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=4345923347161010640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4345923347161010640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/4345923347161010640'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/02/i-was-strolling-through-httppille.html' title='Funny Resume'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-5584539325241329381</id><published>2009-01-23T16:24:00.000+05:30</published><updated>2009-01-23T16:37:36.938+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Using M_PI gives error even after including math.h ?</title><content type='html'>If you look at the math.h header file, the PI math constant M_PI and other values will be defined at the end of the file and just above that there will be a conditional #define pre-processor statement.&lt;br /&gt;&lt;br /&gt;Solution :- Just type in &lt;span style="font-weight: bold;"&gt;#define _USE_MATH_DEFINES &lt;/span&gt;&lt;del&gt;after&lt;/del&gt; before including math.h&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#define _USE_MATH_DEFINES&lt;br /&gt;#include &amp;lt;math.h&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-5584539325241329381?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/5584539325241329381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=5584539325241329381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5584539325241329381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5584539325241329381'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/01/using-mpi-gives-error-even-after.html' title='Using M_PI gives error even after including math.h ?'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-1950215616209989327</id><published>2009-01-19T12:24:00.000+05:30</published><updated>2009-01-19T12:27:59.114+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Daily Rants'/><title type='text'>class type re-definition error - Solution !</title><content type='html'>I am writing this to help other people avoid spending too much time on this silly error.&lt;br /&gt;I spent 45 mins after which I realized -&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;I missed out #pragma once on the .h file of the class declaration.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If the above solution didn't help you, you might search for another identity (class, function , variables) with the same name as the class name which gives the error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-1950215616209989327?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/1950215616209989327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=1950215616209989327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/1950215616209989327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/1950215616209989327'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2009/01/class-type-re-definition-error-solution.html' title='class type re-definition error - Solution !'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-5381236759361568241</id><published>2008-12-18T17:59:00.001+05:30</published><updated>2008-12-18T17:59:49.898+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>TCHAR array, std::string or std::wstring - none of them !</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Having confusion about how to make flexible use of strings in your C++ application. Here is the solution I got after googling. I love the way C++ macros help in maintaining code well&lt;br/&gt;&lt;br/&gt;You don't have to use TCHAR, std::string or std::wstring in your application directly and make it rigid. Make use of the code below and then use the typedef - String or tstring. Now your strings in your C++ application becomes very flexible.&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.gamedev.net/community/forums/topic.asp?topic_id=425833'&gt;Converting 'TChar' to 'String' in C++ - GameDev.Net Discussion Forums&lt;/a&gt;&lt;br/&gt;&lt;blockquote&gt;TCHAR is just a typedef that depending on your compilation configuration (whether you have #define'd UNICODE or not) defaults to char or wchar. Note that you don't necessarily need to #define UNICODE as part of your code. You may also pass it to your target compiler via some preprocessor definition argument, such as /D in microsoft's visual C++ compiler.&lt;br/&gt;&lt;br/&gt;Standard Template Library on the other hand supports both ASCII (with std::string) and wide character sets (with std::wstring). All you need to do is to typedef String as either std::string or std::wstring depending on your compilation configuration, if flexibility is what you're aiming for. Something like this might prove useful:&lt;br/&gt;&lt;br/&gt;#ifndef UNICODE&lt;br/&gt;typedef std::string String &lt;br/&gt;#else&lt;br/&gt;typedef std::wstring String &lt;br/&gt;#endif&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/blockquote&gt;&lt;a href='http://www.bokebb.com/dev/english/1960/posts/196056533.shtml'&gt;converting std::string to TCHAR&lt;/a&gt;&lt;br/&gt;&lt;blockquote&gt;You could do a compile time version of string like this:&lt;br/&gt;&lt;br/&gt;#include &lt;string&gt;&lt;br/&gt;&lt;br/&gt;namespace std {&lt;br/&gt;&lt;br/&gt;#if defined _UNICODE || defined UNICODE&lt;br/&gt;&lt;br/&gt;typedef wstring tstring;&lt;br/&gt;&lt;br/&gt;#else&lt;br/&gt;&lt;br/&gt;typedef string tstring;&lt;br/&gt;&lt;br/&gt;#endif&lt;br/&gt;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;Then you could use tstring instead of string and it would depend on the compile options.&lt;br/&gt;&lt;br/&gt;Tom&lt;/string&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-5381236759361568241?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/5381236759361568241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=5381236759361568241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5381236759361568241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5381236759361568241'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2008/12/tchar-array-stdstring-or-stdwstring_18.html' title='TCHAR array, std::string or std::wstring - none of them !'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-749566578381928057</id><published>2008-10-10T18:06:00.001+05:30</published><updated>2008-10-10T18:06:04.631+05:30</updated><title type='text'>SVN Very quick start tutorial/guide</title><content type='html'>&lt;p&gt;I recently setup a SVN server successfully on Windows XP and learnt to use a Visual Studio 2005/2008 Plugin called Ankh SVN (Previous versions of this plugin seem to be buggy, but the latest one kicks ass !).&lt;/p&gt;  &lt;p&gt;Windows Servers are available from &lt;a href="http://subversion.tigris.org/getting.html#windows" target="_blank"&gt;here&lt;/a&gt;. I used &lt;a href="http://www.collab.net/downloads/subversion/" target="_blank"&gt;this&lt;/a&gt; one.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Steps:-&lt;/strong&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download and install the latest SVN Server.&lt;/li&gt;    &lt;li&gt;I set up only the SVNServe standalone server and not the Apache addon module. (I read a comparision study revealing SVNServe is faster/better than Apache module)&lt;/li&gt;    &lt;li&gt;Then select the repository directory. (Here I will use - g:\repos)&lt;/li&gt;    &lt;li&gt;Complete the installation.&lt;/li&gt;    &lt;li&gt;Open CMD&lt;/li&gt;    &lt;li&gt;Type &lt;strong&gt;net start svnserve. &lt;/strong&gt;(You have to start server once only, on next reboot it will start automatically)&lt;/li&gt;    &lt;li&gt;Change directory to g:\repos by &lt;strong&gt;cd &lt;/strong&gt;command.&lt;/li&gt;    &lt;li&gt;Type - &lt;strong&gt;svnadmin create myrepos. &lt;/strong&gt;Repository is created.&lt;/li&gt;    &lt;li&gt;Open the svnserve.conf file under the conf folder in the created repository (g:\repos\myrepos).&lt;/li&gt;    &lt;li&gt;Uncomment the line &lt;strong&gt;password-db = passwd&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Open passwd file. Under [users] block remove the commented example users (Harry etc). Create users in the format &amp;lt;username = password&amp;gt;.&lt;/li&gt;    &lt;li&gt;Now &lt;a href="http://ankhsvn.open.collab.net/" target="_blank"&gt;download&lt;/a&gt; &amp;amp; install AnkhSVN for Visual Studio 2005/2008.&lt;/li&gt;    &lt;li&gt;Make sure Visual Studio is closed when installing and complete it.&lt;/li&gt;    &lt;li&gt;Open your Visual Studio Project. Right click the solution and select &lt;strong&gt;&amp;quot;Add solution to Subversion&amp;quot;.&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Next type in the Project Name as you wish. Repository URL should be &lt;strong&gt;svn://&amp;lt;computername/ipaddress&amp;gt;/myrepos. &lt;/strong&gt;Click OK.&lt;/li&gt;    &lt;li&gt;Now the type in the username+password, and comment. Now a place for your solution is created in the repository. But files are not added.&lt;/li&gt;    &lt;li&gt;To add the files, right click the solution and click Commit Solution Changes.&lt;/li&gt;    &lt;li&gt;Follow the steps enter a log message again to add all the files.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now all the files are in repository. To open this project for editing (technical term - check out) in another system - Open Visual Studio 2008, then select File&amp;gt;Open&amp;gt;Subversion Project. Click on the small blue icon Add Repository URL and enter the url again &lt;strong&gt;svn://&amp;lt;computername/ipaddress&amp;gt;/myrepos&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can select the solution file inside the directory and check out a working copy to a local folder. Next work on project as you wish, when others have made changes receive them by right clicking solution &amp;gt; &lt;strong&gt;Update to Latest Version.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Commit your changes as you progress. Happy team developing !!.   &lt;br /&gt;    &lt;br /&gt;Please leave a comment if you find this useful, thats a big reward I get for spending my time and effort :)&lt;/p&gt;  &lt;p&gt;P.S. You have more terms and concept to cover in the SVN book. I will try to write more articles.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-749566578381928057?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/749566578381928057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=749566578381928057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/749566578381928057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/749566578381928057'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2008/10/svn-very-quick-start-tutorialguide.html' title='SVN Very quick start tutorial/guide'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-2172755908069501036</id><published>2008-09-24T13:39:00.001+05:30</published><updated>2008-09-24T13:39:00.345+05:30</updated><title type='text'>Where did the Video control go in Flash CS3</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I have been searching for it. I don't want the FLVPlayback in the components panel. Oh ! god, googling doesn't help. I remember dragging and droppin it from somewhere else long back.. where was it..&lt;/p&gt;  &lt;p&gt;Finally go it. How stupid.. I just have to right click in the Library and create a new Video and then drag it to the stage !&lt;/p&gt;  &lt;p&gt;Now need to get the demo ready for the Red5 video capture project.. will post more about it soon !&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-2172755908069501036?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/2172755908069501036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=2172755908069501036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2172755908069501036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2172755908069501036'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2008/09/where-did-video-control-go-in-flash-cs3.html' title='Where did the Video control go in Flash CS3'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-7674395908924306676</id><published>2008-01-02T01:57:00.000+05:30</published><updated>2009-09-16T00:58:13.543+05:30</updated><title type='text'>Contact Me</title><content type='html'>Hey I am the person who runs this blog. Call me Quakeboy !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe name="zoho-Contact_Me1" src="http://creator.zoho.com/prasna991/techtola-blogger-contact-me/form-embed/Contact_Me1/" frameborder="0" height="500" scrolling="auto" width="100%"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-7674395908924306676?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/7674395908924306676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=7674395908924306676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/7674395908924306676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/7674395908924306676'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2008/01/contact-me.html' title='Contact Me'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-1937791258923405571</id><published>2008-01-01T15:32:00.001+05:30</published><updated>2008-01-01T15:32:55.666+05:30</updated><title type='text'>Quick Start STL in Visual Studio</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I have searched for a long time to get some practical beginners tutorial for STL in Windows with Visual&amp;nbsp;Studio, but I could not get any useful links which help you kick start&lt;/p&gt; &lt;p&gt;So here something which will really make you kick fly !!!&lt;/p&gt; &lt;p&gt;Declare a map, list&amp;nbsp;etc&lt;/p&gt; &lt;p&gt;&lt;em&gt;#include &amp;lt;list&amp;gt;&lt;br&gt;&lt;/em&gt;&lt;em&gt;#include &amp;lt;map&amp;gt;&lt;br&gt;&lt;/em&gt;&lt;em&gt;using namespace std;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Please dont forget the namespace thing, coz that will never give you proper error message and won't compile !&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;list&amp;lt;(type)&amp;gt; listname;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;e.g.&lt;br&gt;list&amp;lt;MyClass*&amp;gt; myclassptrslist;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;To iterate through the members&lt;/p&gt; &lt;p&gt;&lt;em&gt;list&amp;lt;MyClass*&amp;gt;::iterator myiterator;&lt;br&gt;for(myiterator= myclassptrslist.begin(); myiterator!=myclassptrslist.end(); myiterator++){&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;}&lt;/em&gt;&lt;/p&gt; &lt;p&gt;You should understand that &lt;strong&gt;myiterator is of type MyClass* actually. &lt;/strong&gt;So&amp;nbsp;to access the original object you can use &lt;br&gt;(*myiterator).myclassmethod() (or) myiterator-&amp;gt;myclassmethod();&lt;/p&gt; &lt;p&gt;Some more pointers&lt;/p&gt; &lt;p&gt;myclassptrslist.front() will give first element&lt;br&gt;myclassptrslist.back() will give last element and so on&lt;br&gt;&lt;br&gt;to be continued ..... be right back (brb)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-1937791258923405571?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/1937791258923405571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=1937791258923405571' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/1937791258923405571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/1937791258923405571'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2008/01/quick-start-stl-in-visual-studio.html' title='Quick Start STL in Visual Studio'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-2753554373704167605</id><published>2007-11-01T09:49:00.001+05:30</published><updated>2007-11-01T09:49:37.483+05:30</updated><title type='text'>MFC80UD.dll not found ? - A quick solution</title><content type='html'>&lt;p&gt;&lt;br&gt;I got this stupid error at random times, I am sure it was a bug, because it came up at random times initially while building and running my MFC Application under VS 2005 Visual Studio .NET &lt;/p&gt; &lt;p&gt;I googled and found some explanations telling that its due to invalid or erraneous manifest file. Well, I really didn't bother to read more and explain about it. I just wanted to make it work for debugging.&lt;/p&gt; &lt;p&gt;I went to WinSxS folder in c:\Windows and found this under the Debug version of MFC dlls. So the application compiled and ran under release mode also.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Solution: &lt;/strong&gt;Open the project properties &amp;gt; Configuration Properties &amp;gt; General &amp;gt; Project Defaults &amp;gt; Use of MFC = Use MFC in a Static Library&lt;/p&gt; &lt;p&gt;&lt;em&gt;Note : Now you application will run faster (in terms of load times) but will no more be KB's in size, because all the MFC Dll's codes are embedded with it. my &amp;gt;50KB application became 2.9 MB&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Overall, there will be ~2.8 MB increase in exe size.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-2753554373704167605?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/2753554373704167605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=2753554373704167605' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2753554373704167605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2753554373704167605'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2007/10/mfc80uddll-not-found-quick-solution.html' title='MFC80UD.dll not found ? - A quick solution'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-5809511639723679663</id><published>2007-08-29T17:10:00.000+05:30</published><updated>2009-11-13T16:34:49.146+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game Programming'/><title type='text'>Starting SDL !!!</title><content type='html'>&lt;p&gt;Its been quite sometime since I started to study SDL with my friend. I am going to summarise somethings about SDL as a beginner.&lt;/p&gt; &lt;p&gt;First let me tell the steps for configuring SDL with DevC++ IDE 4.9.9.2. After installing DevC++ IDE, download the SDL Library &lt;/p&gt; &lt;p&gt;Download the SDL development library for Mingw32&lt;br&gt;&lt;a title="http://libsdl.org/release/SDL-devel-1.2.12-mingw32.tar.gz" href="http://libsdl.org/release/SDL-devel-1.2.12-mingw32.tar.gz"&gt;http://libsdl.org/release/SDL-devel-1.2.12-mingw32.tar.gz&lt;/a&gt;&lt;br&gt;(might be changed in the future)&lt;br&gt;SDL Library official site is &lt;a href="http://www.libsdl.org"&gt;www.libsdl.org&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Place it in your C:\ Drive root. &lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;em&gt;You can also place it whereever you want to store, but here I am going to make further explanation assuming that we are extracting the downloaded file in C:\. If you are extracting at a different location make changes in the path as necessary in the below example&lt;/em&gt;&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#000000"&gt;Extract the contents. &lt;br&gt;It will create a folder called SDL-1.2.12. &lt;br&gt;Rename the folder to 'SDL' for simplicity sake. &lt;br&gt;Now extracted contents are in C:\SDL&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000"&gt;To verify check if there are folders by name &lt;br&gt;bin, build-scripts, lib, include etc. &lt;br&gt;under the path C:\SDL&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000"&gt;Now open the DevC++ IDE&lt;br&gt;Go to Tools Compiler Options. &lt;/font&gt;&lt;/li&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#000000"&gt;Under Compiler Tab&lt;br&gt;Check the 'Add these commands to the linker command line' checkbox.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000"&gt;Then enter &lt;br&gt;'-lmingw32 -lSDLmain -lSDL' &lt;br&gt;in that textbox without the single quotes.&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;&lt;font color="#000000"&gt;Next go to Directories Tab.&lt;/font&gt;&lt;/li&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#000000"&gt;Under Libraries add the path C:\SDL\lib&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font color="#000000"&gt;Under C/C++ includes add the path 'C:\SDL\include\SDL'&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;&lt;font color="#000000" size="2"&gt;&lt;strong&gt;Now you are all set to begin SDL !!&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-5809511639723679663?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/5809511639723679663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=5809511639723679663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5809511639723679663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5809511639723679663'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2007/08/starting-sdl.html' title='Starting SDL !!!'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-2578117127152288749</id><published>2007-08-04T16:59:00.000+05:30</published><updated>2009-11-13T16:36:37.945+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Game Programming'/><title type='text'>How to begin game programming ??</title><content type='html'>I remember I asked my father how games were made when I was in UKG after I got my ATARI 2600, and has been always trying to find out since then.&lt;br /&gt;&lt;br /&gt;(Throughout my school life, I never owned a computer at home, only thing they taught in school was LOGO and very very limited amount of Basic. When I was in 9th or 10th standard I met this awesome thing called "Flash" which was Flash 5 then, and Flash CS4 now !)&lt;br /&gt;&lt;br /&gt;This is something that I took years to find out. The first thing I started was to program with &lt;span style="font-weight: bold;"&gt;Flash&lt;/span&gt;. Soon I realized Flash's capabilities.I agree that you can make decent games with flash too. But still how do these people program real AAA titles like Half Life, Quake 3 etc ??&lt;br /&gt;&lt;br /&gt;Then I came to world of turbo C, started ambitiously later found its slow and screen was flickering, then came Java with &lt;a href="http://en.wikipedia.org/wiki/Double_buffering"&gt;&lt;span style="font-weight: bold;"&gt;double buffering&lt;/span&gt;&lt;/a&gt;, I got a tutorial about &lt;a href="http://en.wikipedia.org/wiki/Tile-based_game"&gt;&lt;span style="font-weight: bold;"&gt;tile based games&lt;/span&gt;&lt;/a&gt; and realized this is how games like Super Mario was made. Used it in Java, got some smooth scrolling, but could not make other things happen, too many bugs and I was not clear about many other tile concepts much.&lt;br /&gt;&lt;br /&gt;That time my classmate, a super cool brainy guy started out with the same set of tutorials, and made a mixture of Contra, Mario (I had the sprites there !!) But finally the game after all those efforts was too slow. Then  I learn t that people make use of something called &lt;span style="font-weight: bold;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Hardware_acceleration"&gt;hardware acceleration&lt;/a&gt; &lt;/span&gt;to create those super fast high graphics games. I learn t that&lt;br /&gt;there are APIs to use the H/W acceleration and create games.&lt;br /&gt;&lt;br /&gt;You can click links to learn more the terms, they all link to Wikipedia pages. Then I started to learn DirectX, the first step in becoming a real game programmer. Fortunately even though I am a diploma holder, I got job in a company to program CAD Applications, I learnt DirectX.NET there and realised it was hard to use it for CAD applications there, then came the world of OpenGL. I liked it mainly because of three things&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Its a open industry based standard as opposed to DirectX which was Microsoft's.&lt;/li&gt;&lt;li&gt;John Carmack, my role model uses that to create Quake 3, Doom 3 etc.&lt;/li&gt;&lt;li&gt;Its really simple and powerful, and better than DirectX in many ways.&lt;/li&gt;&lt;li&gt;OpenGL code is very very portable.&lt;/li&gt;&lt;/ul&gt;Then came SDL, when I started to program games in ubuntu linux. I made a small tetris clone, playable but no scores etc. Remember I told I am lazy.&lt;br /&gt;&lt;br /&gt;Now I like SDL, I am planning to learn and make some platformers using it, make is open source and make binaries for linux as well as windows. Lets see whether I am able to do it ???&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-2578117127152288749?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/2578117127152288749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=2578117127152288749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2578117127152288749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/2578117127152288749'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2007/08/how-to-begin-game-programming.html' title='How to begin game programming ??'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-6174097747159926624</id><published>2007-02-22T08:43:00.000+05:30</published><updated>2009-12-20T18:18:37.556+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>How to Install Apache Server &amp; MySQL with PHP on Windows XP</title><content type='html'>Each time i tried to installed Apache and MySQL on Windows XP with php something or the other doesn't work. So finally I have summarised some working tips.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the latest Apache, PHP and MySQL installer for Windows.&lt;/li&gt;&lt;li&gt;First install Apache. Don't forget to enter some email address in the Admin's Mail Address. and its always good to set the port to 80 by default to avoid typing colon and port number each time you access the website.&lt;/li&gt;&lt;li&gt;Then install the MySQL using installer. Select option for Developers Machine, enable root access from remote machines. and then install finally. Sometimes the service doesn't start at the first time. I don't remember why it happens. But finally it starts after two or three tries.&lt;/li&gt;&lt;li&gt;Now extract PHP to any directory you want to. Just make sure the &lt;span style="font-weight: bold;"&gt;path doesn't have spaces &lt;/span&gt;in between. For simplicity sake lets assume its in "e:\php"&lt;/li&gt;&lt;li&gt;Now in the php directory find a file called &lt;span style="font-weight: bold;"&gt;php.ini-recommended&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;php.ini-dist. &lt;/span&gt;Just make a copy of any one and rename it as php.ini&lt;/li&gt;&lt;li&gt;Now go to the place where you installed Apache. I recommend "c:\apache2" instead of "C:\Program Files\blah blah.....\".&lt;/li&gt;&lt;li&gt;Then find a file called httpd.conf in conf directory of your apache. Open it with notepad&lt;/li&gt;&lt;li&gt;Add the following lines&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;# For PHP 5 do something like this:&lt;br /&gt;LoadModule php5_module "e:/php/php5apache2_2.dll"&lt;br /&gt;AddType application/x-httpd-php .php&lt;br /&gt;# configure the path to php.ini&lt;br /&gt;PHPIniDir "e:/php"&lt;/li&gt;&lt;li&gt;Now just start the apache server and see if it starts without errors. If done then there is no error installing PHP to Apache.&lt;/li&gt;&lt;li&gt;The second task is to install MySql Extensions to PHP. Here we need two files &lt;span style="font-weight: bold;"&gt;libmysql.dll &lt;/span&gt;(present in the php directory)&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&amp;&lt;span style="font-weight: bold;"&gt; php_mysql.dll &lt;/span&gt;(present in the ext directory under the php.&lt;/li&gt;&lt;li&gt;Open php.ini and scroll down to find Windows Extensions or just extensions. In php.ini every line beginning with a ';' semi colon is a comment. Uncomment the line &lt;span style="font-weight: bold;"&gt;extension=php_mysql.dll &lt;/span&gt;then scroll up to find and change &lt;span style="font-weight: bold;"&gt;extension_dir = "e:\php\ext\".&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Now you have configured the php.ini still you need to make php find &lt;span style="font-weight: bold;"&gt;libmysql.dll&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;You can also find a libmysql.dll in the bin folder of your mysql directory. Use that incase the libmysql which came along with your php didn't work.&lt;/li&gt;&lt;li&gt;Finally &lt;span style="font-weight: bold;"&gt;copy that libmysql.dll to the system32 subfolder &lt;/span&gt;of your windows xp folder. It had worked once without doing this. But I don't know why. Moreover one more option will be to add the bin folder of MySQL to path. It will be done by default while installing and i had disabled it.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-6174097747159926624?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/6174097747159926624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=6174097747159926624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6174097747159926624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/6174097747159926624'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2007/02/how-to-install-apache-server-mysql-with.html' title='How to Install Apache Server &amp; MySQL with PHP on Windows XP'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-5895601412741610140</id><published>2007-02-16T08:19:00.000+05:30</published><updated>2007-02-16T08:47:40.720+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>Adding a printer in VB.NET</title><content type='html'>I took some time for me before I found out that API AddPrinter can be used to add printer whose driver is already installed. All I wanted to do was to add a Printer if its not present and the driver was built-in Windows XP itself.&lt;br /&gt;&lt;br /&gt;First I finished adding the printer in VC++ using MFC Application then I wanted to add it using VB.NET either using Declare Function or DllImport by wrapping it in a dll. Then i had to google for a long time when i last arrived at a code that really worked !!!&lt;br /&gt;&lt;br /&gt;Module Printer_Module&lt;br /&gt;    'declare the API in VB&lt;br /&gt;    Private Declare Function AddPrinter Lib "winspool.drv" Alias "AddPrinterW" _&lt;br /&gt;    (ByVal pName As IntPtr, ByVal Level As Int32, _&lt;br /&gt;    &amp;#60MarshalAs(UnmanagedType.LPStruct)&amp;#62 ByVal pPrinter As PRINTER_INFO_2) As Int32&lt;br /&gt;&lt;br /&gt;    'http://www.vbforums.com/archive/index.php/t-263437.html&lt;br /&gt;    'still dont know why PRINTER_INFO_2 is Class instead of a Structure&lt;br /&gt;&lt;br /&gt;    &amp;#60StructLayout(LayoutKind.Sequential)&amp;#62 _&lt;br /&gt;    Public Class PRINTER_INFO_2&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pServerName As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pPrinterName As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pShareName As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pPortName As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pDriverName As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pComment As String&lt;br /&gt;        Public pDevMode As IntPtr&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pLocation As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pSepFile As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pPrintProcessor As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pDatatype As String&lt;br /&gt;        &amp;#60MarshalAs(UnmanagedType.LPTStr)&amp;#62 Public pParameters As String&lt;br /&gt;        Public pSecurityDescriptor As IntPtr&lt;br /&gt;        Public Attributes As Integer&lt;br /&gt;        Public Priority As Integer&lt;br /&gt;        Public DefaultPriority As Integer&lt;br /&gt;        Public StartTime As Integer&lt;br /&gt;        Public UntilTime As Integer&lt;br /&gt;    End Class&lt;br /&gt;&lt;br /&gt;    Function AddMyPrinter() As Boolean&lt;br /&gt;&lt;br /&gt;        Dim PI2 As New PRINTER_INFO_2()&lt;br /&gt;        'only printer name, driver name, port name and print processor need to be filled&lt;br /&gt;        With PI2&lt;br /&gt;            .pServerName = String.Empty&lt;br /&gt;            .pPrinterName = "Apple Color LW 12/660 PS"&lt;br /&gt;            .pShareName = String.Empty&lt;br /&gt;            .pPortName = "FILE:"&lt;br /&gt;            .pDriverName = "Apple Color LW 12/660 PS"&lt;br /&gt;            .pComment = String.Empty&lt;br /&gt;            .pLocation = String.Empty&lt;br /&gt;            .pDevMode = 0&lt;br /&gt;            .pSepFile = String.Empty&lt;br /&gt;            .pPrintProcessor = "WinPrint"&lt;br /&gt;            .pDatatype = String.Empty&lt;br /&gt;            .pParameters = String.Empty&lt;br /&gt;            .pSecurityDescriptor = 0&lt;br /&gt;            .Attributes = 0&lt;br /&gt;            .Priority = 0&lt;br /&gt;            .DefaultPriority = 0&lt;br /&gt;            .StartTime = 0&lt;br /&gt;            .UntilTime = 0&lt;br /&gt;        End With&lt;br /&gt;&lt;br /&gt;        Dim x As Integer = AddPrinter(IntPtr.Zero, 2, PI2)&lt;br /&gt;        If x = 0 Then&lt;br /&gt;            MsgBox("Failed !!!")&lt;br /&gt;            MsgBox(Err.LastDllError)&lt;br /&gt;            End&lt;br /&gt;        End If&lt;br /&gt;        Return True&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;End Module&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-5895601412741610140?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/5895601412741610140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=5895601412741610140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5895601412741610140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/5895601412741610140'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2007/02/adding-printer-in-vbnet.html' title='Adding a printer in VB.NET'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-157976340712812839</id><published>2007-02-16T08:08:00.000+05:30</published><updated>2007-02-16T08:56:16.629+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>Cannot view chm help files !!!</title><content type='html'>Suddenly a week ago, all the .chm files (Windows help files) start showing up &lt;span style="font-weight: bold;"&gt;"This page cannot be displayed error"&lt;/span&gt;. But all the side links seemed to show up but on clicking them nothing turned up on the main section. First I thought its some kinda virus !! Then i just googled it and obviously many other people have had the same problem. It presented me with a list of scenarios something like an article from microsoft site showed that installation of a update for windows will block these chm files from accessing some places. I just scrolled below for the solution and there was some modification in the registry and i did it and naturally it didn't (coz its microsoft man!!!).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Oht2jqXG8Hw/RdUbXu8ToJI/AAAAAAAAAFc/woMGBLB6t2c/s1600-h/untitled.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_Oht2jqXG8Hw/RdUbXu8ToJI/AAAAAAAAAFc/woMGBLB6t2c/s400/untitled.JPG" alt="" id="BLOGGER_PHOTO_ID_5031958253208314002" border="0" /&gt;&lt;/a&gt;Then i searched and landed up on a blog of some guy who is CEO of some company. The guy had a cool pic of himself and solution was so damn simple. CHM files don't work if you have a '#' hash in the path. for eg. chm file path here was d:\#user\blah.. blah..\file.chm&lt;br /&gt;&lt;br /&gt;Then i just copied it to c:\folder\file.chm. folder was without a hash and so it worked.&lt;br /&gt;&lt;br /&gt;courtesy :  http://www.nik.com.au/archives/2005/04/06/chm-help-files-error-the-page-cannot-be-displayed/&lt;br /&gt;Chm help files error !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-157976340712812839?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/157976340712812839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=157976340712812839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/157976340712812839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/157976340712812839'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2007/02/cannot-view-chm-help-files.html' title='Cannot view chm help files !!!'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_Oht2jqXG8Hw/RdUbXu8ToJI/AAAAAAAAAFc/woMGBLB6t2c/s72-c/untitled.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38020100.post-116599489033797245</id><published>2006-12-13T12:54:00.000+05:30</published><updated>2007-02-22T08:43:29.112+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTO &apos;n&apos; Office VBA'/><title type='text'>DEPLOYING VSTO SOLUTIONS</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="font-size:180%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://photos1.blogger.com/x/blogger/7073/3868/1600/105734/s1.jpg"&gt;&lt;img style="margin: 0px 0px 10px 10px; float: right;" alt="" src="http://photos1.blogger.com/x/blogger/7073/3868/320/213961/s1.jpg" border="0" /&gt;&lt;/a&gt;This is for all people who know whats VSTO (Visual Studio Tools for office) and have developed apps using it and have not been able to deploy to end user systems. This is the most easy solution I have found to deploy document level solutions i.e. for a single&lt;br /&gt;excel or word file after a long time struggling. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Though there are many ways to deploy VSTO solution for a document level and most handy one i have found so far has been - signing the assembly with a strong name then add entry in the .NET 2.0 security configuration. This is most handy because if you use URL then you cant shift the location of the folder which i needed in my case. Here are the steps.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(NOTE: In the end users computer - You need to install feature .NET forms programmability in Office 2003 by using add/remove features in office 2003 installer and then install VSTOR.exe which can be found in the VSTO CD)&lt;br /&gt;(NOTE: In the developers computer you need the Visual Studio SDK if you need the Microsoft .NET Framework 2.0 Configuration under the admin tools of the control panel)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/x/blogger/7073/3868/1600/238906/2.jpg"&gt;&lt;img style="margin: 0px 0px 10px 10px; float: right;" alt="" src="http://photos1.blogger.com/x/blogger/7073/3868/320/860419/2.jpg" border="0" /&gt;&lt;/a&gt;1) First open your VSTO solution project and open project properties and then go to signing. Then give sign the assembly and key file name choose new. Enter a file name in the dialog box and set password if you need it. then save the project and rebuild it again.&lt;br /&gt;2) Then go to Control Panel&gt;Administrative Tools&gt;Microsoft .NET Framework 2.0 Configuration&lt;br /&gt;3) Then go to Console Root&gt;Microsoft .NET Framework 2.0 Configuration&gt;My Computer&gt;Runtime security policy&gt;Machine&gt;Code Groups&gt;All code&gt;My_Computer_Zone&lt;br /&gt;4) Right click and create new and enter a name click next and then select condition type to Strong Name.&lt;br /&gt;5) Click import below and select the required assembly and check the name and version boxes and give next, provide Fulltrust and then finish.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Now the assembly is ready to run on developers computer anywhere.&lt;/strong&gt; But you cant follow all the above steps in the endusers computer because you just can't expect every end user to have VS SDK installed. So the Microsoft .NET Framework 2.0 Configuration console doesnt appear.&lt;br /&gt;&lt;br /&gt;I had read in many places about caspol.exe tool and tried it but may be i was doing something wrong, and i just couldn't get it working. so the easiest way is this.&lt;br /&gt;In the developers computer open Control Panel&gt;Administrative Tools&gt;Microsoft .NET Framework 2.0 Configuration and thenright click runtime security policy and select create Deployment package, then set the security level to machine and select a place&lt;br /&gt;to save the MSI file and finish it. &lt;strong&gt;Now this msi file can be used to automatically follow the steps 2-5 in the endusers computer.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;So dont forget to restart the system after running the MSI file in the end users computer. If any doubt, comment and it will reply or mail me........&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38020100-116599489033797245?l=qdevarena.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qdevarena.blogspot.com/feeds/116599489033797245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38020100&amp;postID=116599489033797245' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/116599489033797245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38020100/posts/default/116599489033797245'/><link rel='alternate' type='text/html' href='http://qdevarena.blogspot.com/2006/12/deploying-vsto-solutions.html' title='DEPLOYING VSTO SOLUTIONS'/><author><name>Quakeboy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
