<?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-6901120488741741537</id><updated>2012-02-16T15:18:07.518-05:00</updated><category term='C++ framework'/><category term='Megaman X'/><category term='Gaming Console'/><category term='techFX reflow 3.0'/><category term='BlueScreen SUN'/><category term='BlueScreen SUN7'/><category term='LPC2478'/><category term='misc'/><category term='reflow oven'/><title type='text'>Francois's projects</title><subtitle type='html'>This blog contains my personal projects and other projects I took part in.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-6525591493178824570</id><published>2010-07-06T13:39:00.003-04:00</published><updated>2010-07-06T13:42:51.895-04:00</updated><title type='text'>Background sound added</title><content type='html'>Sometimes, the small details make a big difference. That what a background sound in a game is. I decided to add sound mixing feature to my sound manager and I think the demo is way better with it. See for yourself in the following video.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gvuDaOed838&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gvuDaOed838&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-6525591493178824570?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/6525591493178824570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/07/background-sound-added.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6525591493178824570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6525591493178824570'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/07/background-sound-added.html' title='Background sound added'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-8526982706073134853</id><published>2010-07-03T12:15:00.005-04:00</published><updated>2010-07-03T15:31:05.570-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN7'/><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><title type='text'>Complete Megaman + USB + Sound demo</title><content type='html'>Major update on the console project!&lt;br /&gt;Yesterday I finished (for the most part) the USB stack and the Xbox360 controller driver and I've been able to make it work with the Megaman demo.&lt;br /&gt;&lt;br /&gt;I was stuck with a synchronization problem but it turned out to be a problem with my toggle bit on data packets. This is a bug very hard to find since even with the wrong data toggle I was getting no transmission errors. Now I still have to clean up my code a little but it should be really quick.&lt;br /&gt;&lt;br /&gt;From now, the next big thing I have to do I isolate the game from the kernel and load the game from the SD card instead of bundling it with the kernel on the chip.&lt;br /&gt;&lt;br /&gt;Here's the demo&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ZWlxCrXSx10&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ZWlxCrXSx10&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-8526982706073134853?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/8526982706073134853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/07/complete-megaman-usb-sound-demo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8526982706073134853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8526982706073134853'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/07/complete-megaman-usb-sound-demo.html' title='Complete Megaman + USB + Sound demo'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-8597358095262649733</id><published>2010-06-09T09:49:00.006-04:00</published><updated>2010-06-09T13:11:33.165-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN7'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Bluescreen SUN7</title><content type='html'>Yesterday I finally received my BlueScreen SUN7 from ThaiEasyElec. It took 4 days to ship from Thailand to Montreal but thanks to DHL it got stock 1 week in their depot. Anyway from now I'll be able to continue my tests without being scared of my board catching on fire (see last post).&lt;br /&gt;&lt;br /&gt;This board has a really nice look with the screen now on a different PCB. And don't worry I just tested it and it's backward compatible with your BlueScreen SUN code. What that means is that you can run your code on the SUN7 without any modification. Of course if you do that you won't be able to use the extra IOs on the board since these new IOs are, for the most part, the unused LCD pins. Unused LCD pins? Yes I forgot to mention that the screen is now locked to 18bit color instead of 24. This is because they are now using the same controller for both 4.3 inches and 7 inches and the 7 inches screen is 18bit color. I didn't do any intensive testing on that but I'm pretty sure that it's really hard to see the difference between 18 bits and 24 bits (for the human eye), except maybe for the green shades. It is also worth mentionning that the SUN7 has an Ethernet port built in but the USB device port is gone. Who wants a USB device port anyway?&lt;br /&gt;&lt;br /&gt;A little more on the console project now. In the video, I'm showing my broken USB host code. You'll se that it's able to detect devices but it's not able to "talk" (read communicate) to them. I'll shoud fix that pretty soon and then I'll be able to finish that tiny USB stack.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/m3Sl4tbsO98&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/m3Sl4tbsO98&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-8597358095262649733?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/8597358095262649733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/06/bluescreen-sun7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8597358095262649733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8597358095262649733'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/06/bluescreen-sun7.html' title='Bluescreen SUN7'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-9037615108051524437</id><published>2010-05-26T12:01:00.007-04:00</published><updated>2010-05-26T17:04:20.701-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>ThaiEasyElec excellent support</title><content type='html'>On May 23rd I was working on the project as usual but more precisely on the game sound effects. As you saw in a previous post the sound section was working but only in a synchronous manner. In other words, if used in a game, the game would stop until the sound is played only to continue at the end of the sound. That's surely not what we want.&lt;br /&gt;&lt;br /&gt;But then when I started one of my multiple tests the backlight of the screen started flickering. For those who don't know, I'm using a &lt;a href="http://www.thaieasyelec.net/index.php//ARM/Bluescreen-SUN-LPC2478-with-4-3/7-inch-TFT-TouchTouch-Screen/p_52.html"&gt;BlueScreen Sun board&lt;/a&gt; from &lt;a href="http://www.thaieasyelec.net/"&gt;ThaiEasyElec&lt;/a&gt;. I was starting to worry so I turned off the board and saw that one of the inductance involved in the backlight circuit was overheating.&lt;br /&gt;&lt;br /&gt;This is a big problem for me since I'm working full time on this project now and I need to test my code all the time. Furthermore, since this project has to be finished in a couple of months, the time is running out.&lt;br /&gt;&lt;br /&gt;I immediately wrote an urgent email to &lt;a href="http://www.thaieasyelec.net/"&gt;ThaiEasyElec&lt;/a&gt; to ask them to help me. I don't know how they do it but they almost always answer within 10 minutes even if their time zone is close to 10 hours ahead of mine. They told me right away that they would help me. I was relieved and that stopped me from worrying for the sake of the gaming console project.&lt;br /&gt;&lt;br /&gt;Now a couple of days later they are supposed to ship me a new board so I can continue my testing. In the mean time, I can continue using my current board for really quick tests so I think that this won't even affect the project after all. Thanks to the &lt;a href="http://www.thaieasyelec.net/"&gt;ThaiEasyElec&lt;/a&gt; team!&lt;br /&gt;&lt;br /&gt;So why am I telling all that. Well first to keep you updated on the project. But the main reason is because this company is not well known in America and you might be scared to buy from them since it's really far away but don't. They have really good products at very low cost that you can use as a learning tool, a prototyping board or even in your end product. If you check their website you'll see that they offer a whole bunch of other services that might suit your needs. Ok ok enough publicity...&lt;br /&gt;&lt;br /&gt;Thanks again ThaiEasyElec!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-9037615108051524437?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/9037615108051524437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/thaieasyelec-excellent-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/9037615108051524437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/9037615108051524437'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/thaieasyelec-excellent-support.html' title='ThaiEasyElec excellent support'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-46214137898120517</id><published>2010-05-22T11:55:00.003-04:00</published><updated>2010-05-22T12:12:09.695-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Game Engine : Collision detection + transparency</title><content type='html'>Lots of new things today!&lt;br /&gt;&lt;br /&gt;First the collision detection. For now the detection algorithm is pretty basic and it checks for collision for the whole picture square. I'm not going to go into the details but if you want more information  just check &lt;a href="http://www.gamedev.net/reference/articles/article735.asp"&gt;gamedev.net&lt;/a&gt;. I'm using their first algorithm. Anyway it doesn't really matter what I'm using for now since, thanks to object oriented programming, you just have to change one place and the whole game will use the new algorithm.&lt;br /&gt;&lt;br /&gt;The interesting part is how I tell the sprites that they collide with some other sprite. For that I'm using a modified version of the visitor pattern. You can have more information &lt;a href="http://wiki.ahnfelt.dk/DoubleDispatch.html"&gt;there&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Then there is the transparency. As I though, it was pretty straightforward. I only added a black and white mask for every pictures and then did these two logic operation :&lt;br /&gt;&lt;br /&gt;VideoMemory AND Mask&lt;br /&gt;VideoMemory OR Image&lt;br /&gt;&lt;br /&gt;This is the same thing as if you would want to set a register to some value at runtime.&lt;br /&gt;&lt;br /&gt;So as usual, here's a video of all that in action:&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wbX2NPXqUJ0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;hd=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/wbX2NPXqUJ0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-46214137898120517?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/46214137898120517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-collision-detection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/46214137898120517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/46214137898120517'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-collision-detection.html' title='Game Engine : Collision detection + transparency'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-6395537296958034087</id><published>2010-05-15T19:16:00.003-04:00</published><updated>2010-05-15T20:58:31.541-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Game Engine : Enemy spawning</title><content type='html'>I worked a lot today to add enemy spawning to the console. It was somehow difficult since I have to keep track of where I have to spawn enemies but once spawned I have to let them loose until they get out of the screen. To do this I put the Sprite into a SpriteContainer to add some more information to the Sprite like the spawn position and whether it's been spawned (active) of not. Then when the sprite gets out of the screen I remove it from the active sprite list and it can then be spawned again if the hero run into the spawning area if this sprite.&lt;br /&gt;&lt;br /&gt;Take a look at the video to see the result.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GrMPdOutH2k&amp;hl=en_US&amp;fs=1&amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/GrMPdOutH2k&amp;hl=en_US&amp;fs=1&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-6395537296958034087?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/6395537296958034087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-enemy-spawning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6395537296958034087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6395537296958034087'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-enemy-spawning.html' title='Game Engine : Enemy spawning'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-7472337182316494072</id><published>2010-05-12T20:54:00.002-04:00</published><updated>2010-05-12T21:01:00.973-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Game Engine : Final hero only demo</title><content type='html'>This should be the last hero only demo. There is nothing new here except that all the left states are implemented so the hero can go on both side. I'm not even talking in this video since there is nothing to say. On the next update there's going to be either sound effect, enemies or transparency. These are the 3 things I need to work on next.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sQPKJ6TRc2o&amp;hl=en_US&amp;fs=1&amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sQPKJ6TRc2o&amp;hl=en_US&amp;fs=1&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-7472337182316494072?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/7472337182316494072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-final-hero-only-demo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/7472337182316494072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/7472337182316494072'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-final-hero-only-demo.html' title='Game Engine : Final hero only demo'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-4275739080208594672</id><published>2010-05-12T08:15:00.003-04:00</published><updated>2010-05-12T08:21:41.623-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Game Engine : Gravity</title><content type='html'>Yesterday I worked quite a lot on the game engine and added the gravity to the game. So now Megaman is able to jump and fall according to the current gravity. I don't feel like explaining a lot in this post since I still have a lot of work so here's the video right away.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hEj6r_pB8js&amp;hl=en_US&amp;fs=1&amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/hEj6r_pB8js&amp;hl=en_US&amp;fs=1&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-4275739080208594672?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/4275739080208594672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-gravity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/4275739080208594672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/4275739080208594672'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/game-engine-gravity.html' title='Game Engine : Gravity'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-1789281789828010512</id><published>2010-05-08T11:16:00.004-04:00</published><updated>2010-05-08T12:38:04.547-04:00</updated><title type='text'>720p video!</title><content type='html'>I finally did some more tests with my lifecam cinema and I now able to record at 720p 30fps so that's going to upgrade my video quality a lot. Here's an HD embedding test.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RZdaURMZ_pg&amp;hl=en_US&amp;fs=1&amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RZdaURMZ_pg&amp;hl=en_US&amp;fs=1&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-1789281789828010512?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/1789281789828010512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/720p-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/1789281789828010512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/1789281789828010512'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/720p-video.html' title='720p video!'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-6760564488177964255</id><published>2010-05-06T03:16:00.003-04:00</published><updated>2010-05-06T03:25:19.654-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Hero running right</title><content type='html'>Today I added a new state and some state transitions that permit the hero to run right and stop. For now, there is no ground detection though but that should be implemented soon. Here a little video to show all this in action.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XdLL1ApexOA&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/XdLL1ApexOA&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;As you can see there is still some white around the hero but I'll fix that when the hero is going to be fully functional.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-6760564488177964255?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/6760564488177964255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/hero-running-right.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6760564488177964255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6760564488177964255'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/hero-running-right.html' title='Hero running right'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-8291536488736693247</id><published>2010-05-04T13:11:00.004-04:00</published><updated>2010-05-04T13:23:53.607-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Hero rendering</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JBvDpGkity4/S-BXHdvtTgI/AAAAAAAAATg/9OwQbNxCBE8/s1600/DSCN1238.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_JBvDpGkity4/S-BXHdvtTgI/AAAAAAAAATg/9OwQbNxCBE8/s320/DSCN1238.JPG" alt="" id="BLOGGER_PHOTO_ID_5467465733383212546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was not supposed to spend time on the console this week but I still did some work. For the first time now we can render a hero. For now everything looks static but I can assure you (nothing's stopping you from looking at the code) all of that is pretty dynamic indeed.&lt;br /&gt;&lt;br /&gt;I used the state pattern for the hero movement and rendering and for now I only implemented the HeroStandingRight state so that's why nothing's moving. That only a matter of time before I implement the other states and I think from now it's going to be pretty quick.&lt;br /&gt;&lt;br /&gt;As for the white around the hero I'll fix that at the end when I'll have a hero running and jumping. I'll use the common masking technic so it should be pretty straightforward.&lt;br /&gt;&lt;br /&gt;I think the hero rendering stuff what the hardest part remaining for the gaming engine. All the other sprite handling should be a simplified version of the hero handling. Except for the final optimisation of course, that should take a while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-8291536488736693247?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/8291536488736693247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/hero-rendering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8291536488736693247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8291536488736693247'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/hero-rendering.html' title='Hero rendering'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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://1.bp.blogspot.com/_JBvDpGkity4/S-BXHdvtTgI/AAAAAAAAATg/9OwQbNxCBE8/s72-c/DSCN1238.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-192903275598766373</id><published>2010-05-04T12:45:00.007-04:00</published><updated>2010-05-06T03:26:53.396-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techFX reflow 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='reflow oven'/><title type='text'>First reflow soldering</title><content type='html'>Last Sunday I tried to solder a &lt;a href="http://www.national.com/images/pkg/m14a.jpg"&gt;SOIC&lt;/a&gt; chip on a DIP adapter and for the first try I think it went pretty well. I just put a little too much solder paste but that's it. Hopefully now I'll be able to stop using my cheap soldering iron.&lt;br /&gt;&lt;br /&gt;Here's a few pictures.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JBvDpGkity4/S-BSM0rTxeI/AAAAAAAAASw/zOprcu0sM-g/s1600/DSCN1225.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_JBvDpGkity4/S-BSM0rTxeI/AAAAAAAAASw/zOprcu0sM-g/s320/DSCN1225.JPG" alt="" id="BLOGGER_PHOTO_ID_5467460327879984610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S-BTA0x2vWI/AAAAAAAAAS4/39AEJgLJW0g/s1600/DSCN1226.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S-BTA0x2vWI/AAAAAAAAAS4/39AEJgLJW0g/s320/DSCN1226.JPG" alt="" id="BLOGGER_PHOTO_ID_5467461221260639586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JBvDpGkity4/S-BTBBvLt2I/AAAAAAAAATA/ido1nZm5OoE/s1600/DSCN1227.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_JBvDpGkity4/S-BTBBvLt2I/AAAAAAAAATA/ido1nZm5OoE/s320/DSCN1227.JPG" alt="" id="BLOGGER_PHOTO_ID_5467461224739092322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JBvDpGkity4/S-BTB4AtkkI/AAAAAAAAATI/7IWfWP2pdyc/s1600/DSCN1232.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_JBvDpGkity4/S-BTB4AtkkI/AAAAAAAAATI/7IWfWP2pdyc/s320/DSCN1232.JPG" alt="" id="BLOGGER_PHOTO_ID_5467461239308128834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JBvDpGkity4/S-BTCLgrarI/AAAAAAAAATQ/F4aoZee1b_o/s1600/DSCN1235.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_JBvDpGkity4/S-BTCLgrarI/AAAAAAAAATQ/F4aoZee1b_o/s320/DSCN1235.JPG" alt="" id="BLOGGER_PHOTO_ID_5467461244542479026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JBvDpGkity4/S-BUqFwgnSI/AAAAAAAAATY/HJFIHSxKqV8/s1600/DSCN1245.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_JBvDpGkity4/S-BUqFwgnSI/AAAAAAAAATY/HJFIHSxKqV8/s320/DSCN1245.JPG" alt="" id="BLOGGER_PHOTO_ID_5467463029704662306" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-192903275598766373?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/192903275598766373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/05/first-reflow-soldering.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/192903275598766373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/192903275598766373'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/05/first-reflow-soldering.html' title='First reflow soldering'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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://1.bp.blogspot.com/_JBvDpGkity4/S-BSM0rTxeI/AAAAAAAAASw/zOprcu0sM-g/s72-c/DSCN1225.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-2897969341561169677</id><published>2010-04-28T15:36:00.002-04:00</published><updated>2010-04-28T15:56:03.322-04:00</updated><title type='text'>Tile and background rendering</title><content type='html'>Yesterday I added the background rendering to the game engine but after some testing I figured it was running way to slow. So today I worked the whole day trying to optimize that and it worked out pretty well. Actually now the slower part it the tile rendering. To achieve this I used a DMA channel which is a lot faster that manual refreshing of every pixel.&lt;br /&gt;&lt;br /&gt;Since the background is scrolling, the source addresses are changing on every refresh so I still have to loop a little before every DMA transfer. However, I optimized it like crazy to help the compiler and right now it's literally one step before assembly. In other word, I wrote the C code as if I was going to translate it to assembly so it's really easy for the compiler to optimize the code . On the other hand, the code is now really hard to read but I left the good looking version commented in the file.&lt;br /&gt;&lt;br /&gt;There is one major drawback to this optimization which is the background now needs to have some specific dimensions. For instance, the background needs to be 256 pixels wide and repeat itself 3 times inside the same BMP file. This means that the actual image file is 768 pixels wide. For now this big file is hard to load into memory but once again there is a lot of possible optimization. First I could use DMA transfer to copy the file from the SD card to memory. Then I could optimize my BMP handling code which could probably be a lot faster.&lt;br /&gt;&lt;br /&gt;Here's a quick video of the result.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eSdUr38Rjd4&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/eSdUr38Rjd4&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-2897969341561169677?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/2897969341561169677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/04/tile-and-background-rendering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/2897969341561169677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/2897969341561169677'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/04/tile-and-background-rendering.html' title='Tile and background rendering'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-4753883452611042667</id><published>2010-04-27T09:12:00.005-04:00</published><updated>2010-04-27T09:21:15.917-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Tile rendering (cont.)</title><content type='html'>I was kinda in a hurry when I did my last post and I think I forgot some important details. Here's some more information. First, this is what I'm rendering with some additional lines so you can see the actual tile array.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S9bji-VcJfI/AAAAAAAAASY/NsdZH1hfth8/s1600/DSCN1198_ed.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S9bji-VcJfI/AAAAAAAAASY/NsdZH1hfth8/s320/DSCN1198_ed.JPG" alt="" id="BLOGGER_PHOTO_ID_5464805387848656370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With this you can see more clearly that the tiles on the right are not rendered completely. The same thing apply to the bottom of the bottom tiles. And just to be sure that you get all the information, here are the two tiles I'm using in this demo. These are the only image loaded in memory.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S9bkM-zUOGI/AAAAAAAAASg/3LUGLQmT_Dc/s1600/snow.bmp"&gt;&lt;img style="cursor: pointer; width: 56px; height: 32px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S9bkM-zUOGI/AAAAAAAAASg/3LUGLQmT_Dc/s320/snow.bmp" alt="" id="BLOGGER_PHOTO_ID_5464806109528471650" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JBvDpGkity4/S9bkZBwawhI/AAAAAAAAASo/zRuxMnXE4II/s1600/brick.bmp"&gt;&lt;img style="cursor: pointer; width: 56px; height: 32px;" src="http://3.bp.blogspot.com/_JBvDpGkity4/S9bkZBwawhI/AAAAAAAAASo/zRuxMnXE4II/s320/brick.bmp" alt="" id="BLOGGER_PHOTO_ID_5464806316480053778" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-4753883452611042667?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/4753883452611042667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/04/tile-rendering-cont.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/4753883452611042667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/4753883452611042667'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/04/tile-rendering-cont.html' title='Tile rendering (cont.)'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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/_JBvDpGkity4/S9bji-VcJfI/AAAAAAAAASY/NsdZH1hfth8/s72-c/DSCN1198_ed.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-5049095546092451120</id><published>2010-04-26T13:17:00.003-04:00</published><updated>2010-04-26T13:33:40.387-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Tile rendering</title><content type='html'>I just finished my exams and I'm now back on the console project. This morning I did most of the tile rendering stuff along with the side scrolling.&lt;br /&gt;&lt;br /&gt;More precisely, I can render tiles of any rectangular dimension. The rendering function can handle tiles that are partially visible on the screen and all that with double buffering so there is no screen flickering.&lt;br /&gt;&lt;br /&gt;On the picture below I used tile of 56x32 pixel. This means that the last tile to the right is not completely displayed. Furthermore, all the bottom of the second row is not displayed as only 71% of them is required to fill the screen. I think that this example tests all possible cases and I'll be able to start working on something else right away.&lt;br /&gt;&lt;br /&gt;The next step is probably the background rendering which shouldn't be too hard. Then I'll start the sprite rendering.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S9XN0BDgI_I/AAAAAAAAASQ/3hRQ5zJmPuo/s1600/DSCN1198.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S9XN0BDgI_I/AAAAAAAAASQ/3hRQ5zJmPuo/s320/DSCN1198.JPG" alt="" id="BLOGGER_PHOTO_ID_5464500016403981298" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-5049095546092451120?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/5049095546092451120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/04/tile-rendering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/5049095546092451120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/5049095546092451120'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/04/tile-rendering.html' title='Tile rendering'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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/_JBvDpGkity4/S9XN0BDgI_I/AAAAAAAAASQ/3hRQ5zJmPuo/s72-c/DSCN1198.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-5340807798888366498</id><published>2010-04-03T22:25:00.003-04:00</published><updated>2010-04-03T22:44:22.853-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Sound on the console prototype</title><content type='html'>Here we are now with another update. Even though I'm at the end of the school semester, I'm in a coding spree for that console. I think it's more like an addiction at that point. Anyway. So as stated in the title, I got the sound running. This is pretty cool since it's one of the last "risky" thing that I had to do. I say risky because I've never done it so it was possible that I would run into something that seemed possible at first but impossible in the end. That means that I can relax a little more. ;)&lt;br /&gt;&lt;br /&gt;So for the sound I did pretty much like the Bitmap handling. I have some structures for the header of the file and a big array for the data. I load everything into memory from the SD card and I play it afterward. To play the sound on the micro-controller I use the 10bit DAC embedded on the chip. Although it doesn't sound that nice, it's good enough for my tests. We'll see later if we want to add a better DAC in the final version of the board. As always, this is an early test and I need to clean things up in the code. The first thing I'll do is change the dumb delay for a timer delay for the song playback. Hopefully it's going to be more precise and the sound won't be out of timing like in the video (The Megaman fans will notice that it's playing a little too slow).&lt;br /&gt;&lt;br /&gt;Now I really have to put some more time in my homework so the next update may be in a week maybe more. After that I'll probably start working on the tile engine again so there is more to come.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/helXFmzUEWg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/helXFmzUEWg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-5340807798888366498?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/5340807798888366498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/04/sound-on-console-prototype.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/5340807798888366498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/5340807798888366498'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/04/sound-on-console-prototype.html' title='Sound on the console prototype'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-8359261075845696503</id><published>2010-04-01T08:32:00.002-04:00</published><updated>2010-04-01T09:02:44.456-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><category scheme='http://www.blogger.com/atom/ns#' term='C++ framework'/><title type='text'>Bitmap on the console prototype from SD card</title><content type='html'>Up until now, when I wanted to display a picture on the screen of the BlueScreen Sun board I had to translate it to an array and dump it to a .h file. This was a quick and dirty way for fast testing. This is now part of the past since the SD card access is now up and running.&lt;br /&gt;&lt;br /&gt;Here is some technical details.&lt;br /&gt;&lt;br /&gt;First, the FAT32 handling is done using &lt;a href="http://elm-chan.org/fsw/ff/00index_e.html"&gt;FatFs&lt;/a&gt;. This project is pretty active these days and I must say it's working pretty well. Furthermore, it's really easy to port since the low-level part can be easily identified and implemented. Talking about the low-level section, I did not even program it. Basically all I did was porting &lt;a href="http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_lpc2k_spi"&gt;this&lt;/a&gt; which was only a matter of some define modification and some pin configuration. However, this doesn't look pretty since all my code is in C++ and this SD card handling code is in C. What I'm thinking of doing in a near future is keeping FatFs as-is but port the low-level section to C++ to keep things as constant as possible. All I would need is a C adapter calling my C++ functions.&lt;br /&gt;&lt;br /&gt;Other than porting code, I did a Bitmap parser which is a Bitmap class that receive a file path in the constructor. This class is able to load the picture in memory and reformat it a little so it can be displayed easily. This class can later be used with my DisplayHelper class to display the picture on the screen.&lt;br /&gt;&lt;br /&gt;As you can see on this video, it's working pretty well. However, some part of the code is still dirty so be warned if you check the source on the &lt;a href="http://code.google.com/p/armconsole/"&gt;SVN&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SEFOpjAlU5E&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/SEFOpjAlU5E&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-8359261075845696503?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/8359261075845696503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/04/bitmap-on-console-prototype-from-sd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8359261075845696503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8359261075845696503'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/04/bitmap-on-console-prototype-from-sd.html' title='Bitmap on the console prototype from SD card'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-3631523908174345874</id><published>2010-03-29T01:17:00.008-04:00</published><updated>2010-03-29T10:11:00.461-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techFX reflow 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='reflow oven'/><title type='text'>Reflow oven finished!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JBvDpGkity4/S7Ctde0uU4I/AAAAAAAAARg/1dWOYiJ9dBs/s1600/DSCN1180.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_JBvDpGkity4/S7Ctde0uU4I/AAAAAAAAARg/1dWOYiJ9dBs/s320/DSCN1180.JPG" alt="" id="BLOGGER_PHOTO_ID_5454049870747685762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see on the picture it's finally done. I had some problem with the reflow module at first but now it's fixed and everything seems to be working correctly. It is important to note though that I don't have any solder paste yet so I didn't do a real test but still the temperature curve doesn't lie. Anyway I should try to solder things with it pretty soon.&lt;br /&gt;&lt;br /&gt;If you are curious, the reflow module is a techFX reflow 3.0 from &lt;a href="http://thesiliconhorizon.com/"&gt;thesiliconhorizon.com&lt;/a&gt;. It's a great temperature controller if you don't want to create one yourself. Furthermore, they have a crazy good support. I sent them quite a few emails and they replied most of the time within 10 minutes! Even sometime on the weekend. On the other hand I must that the PC application is nothing fancy and probably wouldn't get a good grade in a UI course but who cares right? The important thing is the controller which is able to stabilize the temperature within nearly +/- 1 Celcius.&lt;br /&gt;&lt;br /&gt;Here's some more pictures of the oven hacking process:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S7CypkEHjsI/AAAAAAAAARo/rPZbLKHaGD0/s1600/DSCN1144.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S7CypkEHjsI/AAAAAAAAARo/rPZbLKHaGD0/s320/DSCN1144.JPG" alt="" id="BLOGGER_PHOTO_ID_5454055575871000258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JBvDpGkity4/S7CzB0V0h7I/AAAAAAAAARw/Yb5P5UNmPBw/s1600/DSCN1146.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_JBvDpGkity4/S7CzB0V0h7I/AAAAAAAAARw/Yb5P5UNmPBw/s320/DSCN1146.JPG" alt="" id="BLOGGER_PHOTO_ID_5454055992557078450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JBvDpGkity4/S7CzVDWoBjI/AAAAAAAAAR4/wsthZ2suK4g/s1600/DSCN1147.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_JBvDpGkity4/S7CzVDWoBjI/AAAAAAAAAR4/wsthZ2suK4g/s320/DSCN1147.JPG" alt="" id="BLOGGER_PHOTO_ID_5454056323004499506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JBvDpGkity4/S7CzrhKZSxI/AAAAAAAAASA/49lBY6QQreg/s1600/DSCN1179.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_JBvDpGkity4/S7CzrhKZSxI/AAAAAAAAASA/49lBY6QQreg/s320/DSCN1179.JPG" alt="" id="BLOGGER_PHOTO_ID_5454056708963388178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S7C0PcqAxUI/AAAAAAAAASI/Chnd_enOf9s/s1600/DSCN1184.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S7C0PcqAxUI/AAAAAAAAASI/Chnd_enOf9s/s320/DSCN1184.JPG" alt="" id="BLOGGER_PHOTO_ID_5454057326229112130" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-3631523908174345874?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/3631523908174345874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/03/reflow-oven-finished.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/3631523908174345874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/3631523908174345874'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/03/reflow-oven-finished.html' title='Reflow oven finished!'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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/_JBvDpGkity4/S7Ctde0uU4I/AAAAAAAAARg/1dWOYiJ9dBs/s72-c/DSCN1180.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-4158200727015866933</id><published>2010-03-23T19:22:00.003-04:00</published><updated>2010-03-23T20:11:33.269-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><title type='text'>Gaming console update</title><content type='html'>It's been quite a long time since the last update so here's a little update to keep you posted on what's going on with the gaming console.&lt;br /&gt;&lt;br /&gt;First, I figured out that my PLL configuration was wrong so the chip wasn't running at 72MHz. This is now fixed and everything is running much closer to my calculation in term of screen refresh rate. I don't think I'll have any problem to run a game at (kinda) high resolution but for now I'll stay close to the SNES resolution.&lt;br /&gt;&lt;br /&gt;As for the tile engine, I'm still working on everything at once and nothing is close to a demo for now. There is still a lot to do before I can do some engine testing. Here is some kind of road map of my next steps on this project.&lt;br /&gt;&lt;br /&gt;- Configure DMA memory-to-memory transfer that will be used to refresh the background and possibly foreground&lt;br /&gt;&lt;br /&gt;- Configure SD card access to store some real pictures&lt;br /&gt;&lt;br /&gt;- Configure DMA transfer for the SD card&lt;br /&gt;&lt;br /&gt;- Handle FAT32&lt;br /&gt;&lt;br /&gt;- Continue engine development&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-4158200727015866933?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/4158200727015866933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/03/gaming-console-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/4158200727015866933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/4158200727015866933'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/03/gaming-console-update.html' title='Gaming console update'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-6174701292093606827</id><published>2010-03-15T10:18:00.009-04:00</published><updated>2010-03-15T13:56:37.675-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Tile game engine</title><content type='html'>As mentioned in the previous post, I've been working on a tile game engine for the console and thanks to Louis Lynch, I have a solid starting point in therm of class model. As for the code, a lot of the basic stuff it done and I'm now slowly going through the rendering functions.&lt;br /&gt;&lt;br /&gt;Since the screen is square, I'm pretty sure I'll be able to find a clean way to render the tile map but since I have problem finding it, I'll post about it and it will hopefully clear things up in my head.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_JBvDpGkity4/S55QIZhZl4I/AAAAAAAAARY/0NHWlxpNlHA/s1600-h/tile_rendering.png"&gt;&lt;img style="cursor: pointer; width: 150px; height: 148px;" src="http://3.bp.blogspot.com/_JBvDpGkity4/S55QIZhZl4I/AAAAAAAAARY/0NHWlxpNlHA/s320/tile_rendering.png" alt="" id="BLOGGER_PHOTO_ID_5448880704385030018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the upper picture you can see a typical case of tile rendering. The square array represent the tile map of the entire level and the thick line, the visible area i.e. the screen area. This is the known starting point of the rendering process. In other words, I have (x1, y1) and (x2, y2) of the screen area in pixel.&lt;br /&gt;&lt;br /&gt;Here's a list of the problems I'm facing and some possible solutions.&lt;br /&gt;&lt;br /&gt;Problem 1: All the tiles are stored in an array and know their position but these position are useless since it has to be relative to the visible area.&lt;br /&gt;&lt;br /&gt;Possible solution: None&lt;br /&gt;&lt;br /&gt;Problem 2: Not all tiles should be rendered completely.&lt;br /&gt;&lt;br /&gt;Possible solution: Create a render mask and give it to the tile render function.&lt;br /&gt;&lt;br /&gt;Problem 3: Tiles don't know where to render themselves on the screen. This is linked to the problem 1 since if they would know their position relative to the visible area, they would know where to render.&lt;br /&gt;&lt;br /&gt;Possible solution: Send the render position to the tile render function. This kinda defeat the tile map function since even if two tile are next to each other, the environment could tell them to render in some other random position.&lt;br /&gt;&lt;br /&gt;Hints:&lt;br /&gt;&lt;br /&gt;All tiles on the same line should render the same height of pixel. Same apply for column and width of pixel.&lt;br /&gt;&lt;br /&gt;Any suggestion? Anyone?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-6174701292093606827?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/6174701292093606827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/03/tile-game-engine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6174701292093606827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6174701292093606827'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/03/tile-game-engine.html' title='Tile game engine'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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/_JBvDpGkity4/S55QIZhZl4I/AAAAAAAAARY/0NHWlxpNlHA/s72-c/tile_rendering.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-1960516505162083041</id><published>2010-03-15T10:05:00.003-04:00</published><updated>2010-03-15T10:17:40.709-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='reflow oven'/><title type='text'>Projects update</title><content type='html'>It's been a long time since I haven't posted anything and it's because I didn't reach any milestone in my projects. So here's a little more information of what's going on around here. &lt;br /&gt;&lt;br /&gt;In the reflow oven project, I received the PID control module and somehow broke it after plugging it for about 20 seconds. I really don't know what happened but I shipped the module back and by now it should be close to its destination. The SiliconHorizon should try to fix it and tell me what went wrong with it. More on this soon.&lt;br /&gt;&lt;br /&gt;Then in the gaming console project, I didn't find anyone to work on the gaming engine so I decided to try to do it myself. I did a little bit of research before taking this decision and it seemed that it was not that difficult and I though I should be able to work something out before the end of the semester. I'm actively working on that right now and I'll add some more information on the development in a different post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-1960516505162083041?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/1960516505162083041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/03/projects-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/1960516505162083041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/1960516505162083041'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/03/projects-update.html' title='Projects update'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-6840644674916079212</id><published>2010-02-28T01:49:00.002-05:00</published><updated>2010-02-28T01:54:26.318-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN'/><category scheme='http://www.blogger.com/atom/ns#' term='Megaman X'/><title type='text'>Megaman X on the BlueScreen SUN board</title><content type='html'>It late at night already but I just couldn't help myself. So here you have it, Megaman X running on the LCD. Note that for now I still don't have access to any kind of storage so all that is in a big 2D array in a .h file. Still, I think it's really cool!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/d4_YBb-7Kr8&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/d4_YBb-7Kr8&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-6840644674916079212?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/6840644674916079212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/megaman-x-on-bluescreen-sun-board.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6840644674916079212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/6840644674916079212'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/megaman-x-on-bluescreen-sun-board.html' title='Megaman X on the BlueScreen SUN board'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-8945886765917779021</id><published>2010-02-27T19:03:00.007-05:00</published><updated>2010-02-27T19:25:32.180-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN'/><title type='text'>Some fun with the BlueScreen SUN LCD</title><content type='html'>After being waked up by some guys that wanted to give me religious fliers, I decided to play a little more with the LCD screen. I started by displaying some random math functions but then I figured I should stop wasting my time and get down to business by displaying 24-bit color pictures. Here's what I've done.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S4m2h2-9VzI/AAAAAAAAARM/o3BrF_QFGqQ/s1600-h/DSCN1135.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S4m2h2-9VzI/AAAAAAAAARM/o3BrF_QFGqQ/s320/DSCN1135.JPG" alt="" id="BLOGGER_PHOTO_ID_5443082317465474866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For this picture, it's the first time I actually take the time to create some kind of setup to hold the camera while taking a long exposure picture. I quite happy with the result though. By the way, this is a 1:1 picture of the game taken with zsnes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_JBvDpGkity4/S4m0yUKvdiI/AAAAAAAAAQ0/sjSBxYet9TE/s1600-h/DSCN1115.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_JBvDpGkity4/S4m0yUKvdiI/AAAAAAAAAQ0/sjSBxYet9TE/s320/DSCN1115.JPG" alt="" id="BLOGGER_PHOTO_ID_5443080401154176546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pixel = x * y&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JBvDpGkity4/S4m1HsqDmTI/AAAAAAAAAQ8/NObSUBYDTVc/s1600-h/DSCN1118.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_JBvDpGkity4/S4m1HsqDmTI/AAAAAAAAAQ8/NObSUBYDTVc/s320/DSCN1118.JPG" alt="" id="BLOGGER_PHOTO_ID_5443080768505223474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pixel = sqrt(x^2 + y^2)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JBvDpGkity4/S4m1ml7TmbI/AAAAAAAAARE/wdOkDwHyub0/s1600-h/DSCN1120.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_JBvDpGkity4/S4m1ml7TmbI/AAAAAAAAARE/wdOkDwHyub0/s320/DSCN1120.JPG" alt="" id="BLOGGER_PHOTO_ID_5443081299274471858" border="0" /&gt;&lt;/a&gt;&lt;&lt;br /&gt;Pixel = x^2 + y^2&lt;br /&gt;&lt;br /&gt;Ok maybe I have too much time on my hand (like Styx :P) but you have to agree that it's kinda cool to actually *see* math, isn't it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-8945886765917779021?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/8945886765917779021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/some-fun-with-bluescreen-sun-lcd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8945886765917779021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8945886765917779021'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/some-fun-with-bluescreen-sun-lcd.html' title='Some fun with the BlueScreen SUN LCD'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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/_JBvDpGkity4/S4m2h2-9VzI/AAAAAAAAARM/o3BrF_QFGqQ/s72-c/DSCN1135.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-965523505384094471</id><published>2010-02-27T10:38:00.004-05:00</published><updated>2010-02-27T10:53:09.914-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>The LCD is now up and running</title><content type='html'>After working with the GPIO section I started coding the USB part which was according to my plan. But after some debugging, I though that it would be way easier to debug using the small LCD I had with the board. Anyway, how hard can configuring a LCD controller be? Well it is in fact not that complicated but to make it work I had to configure the SDRAM as well which was not supposed to be that soon. Anyway all that is working now and I have a little demo of it. It's not that great for now but at least its not a blinking led ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Vr-8h9Yke18&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Vr-8h9Yke18&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-965523505384094471?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/965523505384094471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/lcd-is-now-up-and-running.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/965523505384094471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/965523505384094471'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/lcd-is-now-up-and-running.html' title='The LCD is now up and running'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-2968842505989422107</id><published>2010-02-18T19:23:00.003-05:00</published><updated>2010-02-18T19:41:42.928-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN'/><category scheme='http://www.blogger.com/atom/ns#' term='C++ framework'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Gpio section ported successfully</title><content type='html'>Today I tested the GPIO part of the framework on the BlueScreen SUN development board. I ran across a little problem when trying to create a new object. After some testing I found that my implementation of sbrk() didn't like the heap to be on top of the stack. I agree, putting the stack under the heap is not the standard way of doing things but that's how it was done in the linker script sample I got from NXP. Anyway I changed it with a quick and dirty fix for now but I'll try to do it the right way before committing  it to the &lt;a href="http://code.google.com/p/armconsole/"&gt;SVN&lt;/a&gt;. Other than that, everything seems to be working smoothly. I'm not adding any picture or video today since I'm tired of showing blinking LEDs. Don't worry though, the next thing I'm testing if the USB section which is going to be a little more fun to show.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-2968842505989422107?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/2968842505989422107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/gpio-section-ported-successfully.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/2968842505989422107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/2968842505989422107'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/gpio-section-ported-successfully.html' title='Gpio section ported successfully'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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-6901120488741741537.post-7607430124824972298</id><published>2010-02-16T06:54:00.011-05:00</published><updated>2010-02-16T16:54:22.255-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming Console'/><category scheme='http://www.blogger.com/atom/ns#' term='BlueScreen SUN'/><category scheme='http://www.blogger.com/atom/ns#' term='LPC2478'/><title type='text'>Gaming console development Part1</title><content type='html'>Apart from the &lt;a href="http://francois-projects.blogspot.com/2010/02/starting-point-of-reflow-oven.html"&gt;reflow oven&lt;/a&gt;, I'm working on a gaming console project. The goal would be to create a small and low cost embedded platform where it would be fast and easy to develop 2D games like Megaman or Metroid. I had this idea after working on &lt;a href="http://www.youtube.com/watch?v=TzW0JAx2lFM"&gt;this project&lt;/a&gt; last semester. I first wanted to continue on the Cortex-M3 microcontroller since I had a great C++ framework to work with but there was two problems with that. First, software controlled display use a lot of CPU power. It is not impossible and it has been done already with some chip &lt;a href="http://www.ladyada.net/make/fuzebox/"&gt;way smaller&lt;/a&gt; than the 72Mhz STM32 but I had a feeling that I was wasting the potential of the MCU. And that's not all. I wanted to have at least the power of the SNES and some SNES games are way largers than the 512Kbytes of the internal storage of the STM32 I was using. I could have taken the bigger STM32 which support external SRAM but then that would defeat the low-cost part of the project since SRAM is still quite expensive. So in the end I decided to go with the LPC2478 from Philips which has a LCD and SDRAM controller. I though about that for a really long time and I have a big sheet of paper here full of different MCU models with their pros and cons. If you think I made the wrong choice, don't hesitate to post a comment and we'll talk about it ;)&lt;br /&gt;&lt;br /&gt;Before going further with this, I have to tell you that everything I've done for that project is on google code : &lt;a href="http://code.google.com/p/armconsole/"&gt;http://code.google.com/p/armconsole/&lt;/a&gt;. Note that I'll use the same C++ framework than the &lt;a href="http://www.youtube.com/watch?v=TzW0JAx2lFM"&gt;Xbox360 controller interface&lt;/a&gt; project which is here : &lt;a href="http://code.google.com/p/usbarm/"&gt;http://code.google.com/p/usbarm/&lt;/a&gt;. In these repository you have access to not only code but UMLs, sequence diagrams and even our final report in the case of the Xbox360 interface project.&lt;br /&gt;&lt;br /&gt;For now, all I need to do is port the C++ framework from the Cortex-M3 to the LPC2478 including the USB part which needs a lot of work since I was using the MAX3421E with the STM32 but now the LPC has a OHCI compliant USB controller. I must say these two controller are quite different. This project will go mainstream next semester. I'll have one teammate that will focus on the hardware part and maybe another that will build or port a 2D game engine.&lt;br /&gt;&lt;br /&gt;In case someone is wondering what I mean by framework, well it's just a set of classes that can abstract the hardware. For example, if I want to blink an IO pin, I do like this :&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;Gpio *gpio1 = LPC2478::getGpio1();&lt;br /&gt;&lt;br /&gt;// Set default port behavior&lt;br /&gt;GpioConfiguration portConfig(Gpio::INPUT);&lt;br /&gt;gpio1-&gt;configure(portConfig);&lt;br /&gt;&lt;br /&gt;// Configure blinking led&lt;br /&gt;GpioPinConfiguration ledPinConfig;&lt;br /&gt;ledPinConfig.pin = Gpio::OUTPUT;&lt;br /&gt;gpio1-&gt;getPin(12)-&gt;configure(ledPinConfig);&lt;br /&gt;&lt;br /&gt;GpioPin *led = gpio1-&gt;getPin(12);&lt;br /&gt;&lt;br /&gt;// Blink led&lt;br /&gt;while(1) {&lt;br /&gt;    led-&gt;setHigh(); // On&lt;br /&gt;    for(uint32_t i=0; i&lt;100000; i++);&lt;br /&gt;    led-&gt;setLow(); // Off&lt;br /&gt;    for(uint32_t i=0; i&lt;100000; i++);&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;For now, the GPIO section and part of USB is done. But nothing has been tested. I'll keep you posted on that.  On the other hand, I managed to boot the chip and toggle an IO the low-level way which at that point is great! This means that the toolchain, Makefile, linker script and the bootstrap are all working correctly. As a side note, I'm using the same toolchain as when I was working on the Cortex-M3. If you would like some more information on that, you can read &lt;a href="http://www.micromouseonline.com/blog/2009/10/19/another-stm32-project-template"&gt;the article&lt;/a&gt; I wrote last semester.&lt;br /&gt;&lt;br /&gt;So that's it for now. Here you can see a picture of the prototyping board I'm working on because we just like pictures :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JBvDpGkity4/S3sNe17svVI/AAAAAAAAAQs/wwA1vLZmHhM/s1600-h/DSCN1094.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_JBvDpGkity4/S3sNe17svVI/AAAAAAAAAQs/wwA1vLZmHhM/s320/DSCN1094.JPG" alt="" id="BLOGGER_PHOTO_ID_5438955798504717650" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-7607430124824972298?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/7607430124824972298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/cortex-m3-framework-port-part1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/7607430124824972298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/7607430124824972298'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/cortex-m3-framework-port-part1.html' title='Gaming console development Part1'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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://1.bp.blogspot.com/_JBvDpGkity4/S3sNe17svVI/AAAAAAAAAQs/wwA1vLZmHhM/s72-c/DSCN1094.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-8531899067123349742</id><published>2010-02-15T08:05:00.006-05:00</published><updated>2010-02-15T08:52:38.541-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflow oven'/><title type='text'>SSR mounted on the oven</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_JBvDpGkity4/S3lIernvCqI/AAAAAAAAAQk/oCRJdfs53VQ/s1600-h/DSCN1071.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_JBvDpGkity4/S3lIernvCqI/AAAAAAAAAQk/oCRJdfs53VQ/s320/DSCN1071.JPG" alt="" id="BLOGGER_PHOTO_ID_5438457716969245346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;After having some fun with the drill, here is how it looks. There is really not much to say here except that I'm quite happy with the result.&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/6901120488741741537-8531899067123349742?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/8531899067123349742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/ssr-mounted-on-oven.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8531899067123349742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/8531899067123349742'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/ssr-mounted-on-oven.html' title='SSR mounted on the oven'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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://1.bp.blogspot.com/_JBvDpGkity4/S3lIernvCqI/AAAAAAAAAQk/oCRJdfs53VQ/s72-c/DSCN1071.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-2509058158259371841</id><published>2010-02-14T20:50:00.003-05:00</published><updated>2010-02-14T21:19:05.662-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflow oven'/><title type='text'>Starting point of the reflow oven</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_JBvDpGkity4/S3iqx8oQ6dI/AAAAAAAAAQE/qn0c4DkpwSM/s1600-h/DSCN1067.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_JBvDpGkity4/S3iqx8oQ6dI/AAAAAAAAAQE/qn0c4DkpwSM/s320/DSCN1067.JPG" alt="" id="BLOGGER_PHOTO_ID_5438284325115193810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've been working on a reflow oven project for a month or so now. I'll try to catch up with a series two or three posts. Basically I want to modify a toaster oven to work with the &lt;a href="http://www.thesiliconhorizon.com/"&gt;TechFX Reflow 3.0&lt;/a&gt; temperature control module. Nothing that hasn't been done already but with a little luck this could end the soldering iron era for me.&lt;br /&gt;&lt;br /&gt;So this is the first part of the project. You can see on the (bad quality) picture one of the side cover of the oven with a solid state relay and an omega big heatsink :) Just as a side note, I don't need a heatsink that big but I found the smaller one ugly so since it doesn't matter, here I am with the big one. These are coming from &lt;a href="http://www.futurlec.com/"&gt;futurlec&lt;/a&gt; in case someone is wondering.&lt;br /&gt;&lt;br /&gt;In the next post I'll show you all these together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-2509058158259371841?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/2509058158259371841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/starting-point-of-reflow-oven.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/2509058158259371841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/2509058158259371841'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/starting-point-of-reflow-oven.html' title='Starting point of the reflow oven'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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/_JBvDpGkity4/S3iqx8oQ6dI/AAAAAAAAAQE/qn0c4DkpwSM/s72-c/DSCN1067.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6901120488741741537.post-871917042996534833</id><published>2010-02-14T17:50:00.004-05:00</published><updated>2010-02-27T19:26:18.762-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>It starts.. (timon's voice)</title><content type='html'>Ok, so I finally decided to have a blog on my projects. I think I'll start by posting about my current one and I'll maybe add some of my older projects later.&lt;br /&gt;&lt;br /&gt;You should see some posts about the reflow oven and the 2D console I'm working on right now in the next few days.&lt;br /&gt;&lt;br /&gt;Francois&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6901120488741741537-871917042996534833?l=francois-projects.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://francois-projects.blogspot.com/feeds/871917042996534833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://francois-projects.blogspot.com/2010/02/it-starts-timon-voice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/871917042996534833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6901120488741741537/posts/default/871917042996534833'/><link rel='alternate' type='text/html' href='http://francois-projects.blogspot.com/2010/02/it-starts-timon-voice.html' title='It starts.. (timon&apos;s voice)'/><author><name>Francois Gervais</name><uri>http://www.blogger.com/profile/00143102045114904501</uri><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></feed>
