<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>FinalFury Forum</title>
        <description></description>
        <link>http://www.finalfury.co.uk/phorum/index.php</link>
        <lastBuildDate>Thu, 21 Aug 2008 09:40:45 +0100</lastBuildDate>
        <generator>Phorum 5.2.7</generator>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,53,53#msg-53</guid>
            <title>NOS - Almost ready for the masses... (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,53,53#msg-53</link>
            <description><![CDATA[ I've been busy writing some more apps for NOS as well as ironing out a few bugs and adding some new features. The screen shot below shows the new mini web browser application (just uses the built in JEditorPane, can only view very simple webpages) and, not that you can tell in the screenshot, 3d animated desktop backgrounds. I estimate that I should have a full version of this ready for public use in about a week if all goes well.<br />
<br />
<center class="bbcode"><br />
[attachment 21 NOS_Gruppled.jpg]<br />
Style: Gruppled by Craig Laparo<br />
Background: Island 3D MAML Scene by Kaloth<br />
</center><br />
<br />
The animated desktop backgrounds are created using my very own software 3D engine called MAML. If you have Java installed you will see an example at the top of this page displaying a few random 3d models. MAML looks like XML and is a little like VRML in the way that it works (ie: hierarchical modelling). You can find some more examples of MAML <a rel="nofollow"  href="http://www.finalfury.co.uk/java.php">here</a>.]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Wed, 23 Jul 2008 16:28:10 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,51,51#msg-51</guid>
            <title>NOS - Nomadic Operating System (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,51,51#msg-51</link>
            <description><![CDATA[ NOS is my attempt at writing a nomadic desktop environment. It uses Java as the base technology so that it can be used on a wide variety of machines. Users each have their own file system backed by a set of php scripts on a web server. This allows them to upload their own applications and files in any way they want. The main desktop environment is implemented to look like the popular Blackbox environment (<a rel="nofollow"  href="http://www.bb4win.org">bb4win</a>, <a rel="nofollow"  href="http://xoblite.net/">xoblite</a>, <a rel="nofollow"  href="http://bb4win.sourceforge.net/bblean/">bblean</a>) and includes a full blackbox style interpreter that can make use of the hundreds of styles available on the net (<a rel="nofollow"  href="http://www.boxshots.org/">boxshots</a>). I hope to release this project to the public in the near future, let me know if you're interested as I'm looking for some beta testers to try out and provide feedback on what I have so far :)<br />
<br />
<center class="bbcode"><br />
[attachment 20 NOS_ember.jpg]<br />
Style: Ember by Blockhead<br />
Background: Fzeema by Blockhead<br />
</center>]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Mon, 14 Jul 2008 21:32:09 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,50,50#msg-50</guid>
            <title>Website Attacked :( (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,50,50#msg-50</link>
            <description><![CDATA[ Some stupid hackers with nothing better to do than waste my time screwed up this forum today forcing me to restore from a recent backup. It's such a shame that people feel they have to express there pent up angst by destroying that which others strive so hard to create.]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Mon, 14 Jul 2008 21:30:49 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?3,44,44#msg-44</guid>
            <title>RocketDock and BBwintrans? (4 replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?3,44,44#msg-44</link>
            <description><![CDATA[ I use the latest BBlean and the latest RocketDock. I also use the latest BBwintrans.<br />
I have it configured to display the focused window at full opacity and all other windows at 200 (alpha transparency). This works fine and my my excludes work fine, with the exception of RocketDock. RocketDock and BBwintrans do not play well together, whenever BBwintrans is active, RD stops working right. Here is a screenshot of my desktop with the failing RD. I don't know if you know why this happens or how to fix it, but I have excluded all programs with &quot;rocketdock&quot; anywhere in the module name and it still happens this way.<br />
<br />
Any help would be appreciated.<br />
Screenshot of what it's supposed to look like: <a rel="nofollow"  href="http://cmetcjr.com/screen_right.jpg">http://cmetcjr.com/screen_right.jpg</a><br />
Screenshot of what it does look like: <a rel="nofollow"  href="http://cmetcjr.com/screen_wrong.jpg">http://cmetcjr.com/screen_wrong.jpg</a><br />
<br />
-cmetcjr]]></description>
            <dc:creator>cmetcjr</dc:creator>
            <category>Blackbox</category>
            <pubDate>Wed, 16 Jul 2008 13:37:51 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,43,43#msg-43</guid>
            <title>Sin City Image Filter (Colour Isolation) (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,43,43#msg-43</link>
            <description><![CDATA[ I've often wondered how they produced that funky looking image effect used in the film Sin City. What choice is a computer wielding geek left with but to implement their own version of it! :D So, what they appear to do is pick a colour that they want to isolate in the final image (eg: red) and then desaturate (ie: fade to grey scale) all the other colours.<br />
<br />
A great way to isolate a colour is to convert your image to YUV (see handy wikipedia <a rel="nofollow"  href="http://en.wikipedia.org/wiki/Y%27UV">page</a>) and use distance measurement in the UV plane to work out how close to your desired colour, irrespective of brightness (Y plane), the current pixel is. Then back in RGB space all you have to do is desaturate your pixel based on the distance value you calculated in YUV space. It took a bit of tweaking to get the relationship between distance in the UV plane and desaturation looking nice. This is the formulae I came up with...<br />
<br /><pre class="bbcode">
scale = max(0.0f, min(1.0f, (D - T)/S));

avg = (int)(((in_r + in_g + in_b) / 3) * scale );

out_r = (int)( in_r * ( 1.0f - scale ) + avg );
out_g = (int)( in_g * ( 1.0f - scale ) + avg );
out_b = (int)( in_b * ( 1.0f - scale ) + avg );</pre>
<br />
<br />
Where D is the distance in UV, T is the tolerance level and S is the spread. By 'spread' I mean the smoothness of the gradient between fully saturated and fully unsaturated.<br />
<br />
The end result is quite good if you then ramp up the contrast loads as well :P<br />
<br />
[attachment 17 red_dress.jpg][attachment 18 red_dress_iso.jpg][attachment 19 red_dress_iso_contrast.jpg]]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Tue, 10 Jun 2008 13:17:47 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?3,39,39#msg-39</guid>
            <title>BBPlugManager &amp; langdis.dll (1 reply)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?3,39,39#msg-39</link>
            <description><![CDATA[ Hi Kaloth<br />
Im using your plugin for a while and have no problem unless I  wanted to try Language\Locale Display by Tres`ni...<br />
It shows a MsgBox : Could not link to plugin functions in...  ...\langdis.dll <br />
If I try to load this plugin via xoblite menu, it loads correctly with no err..<br />
...so what is wrong ? :)<br />
<br />
<br />
Petsof<br />
p.s. Marry christmass ;)]]></description>
            <dc:creator>petsof</dc:creator>
            <category>Blackbox</category>
            <pubDate>Thu, 03 Jul 2008 12:58:49 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,25,25#msg-25</guid>
            <title>Water (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,25,25#msg-25</link>
            <description><![CDATA[ I've recently been playing about with the idea of water simulation. My idea was to simulate the surface of a body of water in 3D using the abstraction of a mesh with springs attached to each of the vertices.<br />
<br />
In a spring system the amount of acceleration can be calculated from the distance to the equilibrium point. So in other words the more stretched the spring is the more it wants to be back at the equilibrium point.<br />
<br />
This on it's own works nicely but only simulates each vertex of the surface individually. I needed a way to link the surface together as a whole and therefore create a wave system. To do this I simply do a bit of post processing and move each of the vertices to the average of it's neighbours. This means that displacements (and therefore accelerations) ripple out from their sources. The final result is quite pleasing to the eye...<br />
<br />
<center class="bbcode">[attachment 10 water.jpg]</center><br />
<br />
You can see the animation in action <a rel="nofollow"  href="http://www.finalfury.co.uk/MAMLApplet6.php">here</a>]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Fri, 19 Oct 2007 10:33:54 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,24,24#msg-24</guid>
            <title>Video and Subs... (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,24,24#msg-24</link>
            <description><![CDATA[ <strong class="bbcode">Sub Filtering</strong><br />
<br />
PNG uses a process it calls 'filtering' to prepare image data for scanline compression. Various filter functions are used on a per-scanline basis, but the one I'll talk about here is call 'Sub'.<br />
<br />
What the Sub filter does is to store the differences  (using mod 256 arithmetic) between the bytes in each pixel instead of the absolute values. This means that for a 8bit grayscale image the following gradient...<br />
<br />
0, 1, 2, 3, 4, 5, 6, 7, 8<br />
<br />
becomes...<br />
<br />
0, 1, 1, 1, 1, 1, 1, 1, 1<br />
<br />
As you can probably imagine, the filtered data is much easier to compress than the original. This is how PNG manages to compress it's <a rel="nofollow"  href="http://www.mywebsite.force9.co.uk/png/png24.htm">famous</a> 48mb gradient image into 58kb.<br />
<br />
Applying this filter to my image compression technique on a per-tile basis achieves the same affect. It is not however quite as good at compressing artificially constructed gradients because working on a per-tile basis means that the arrays of numbers contain quite a few jumps when we wrap around the stride of the tile. I'm happy with this however because in 'real' images (eg: photographs) I get comparable and often better compression ratios.<br />
<br />
<strong class="bbcode">Video Encoding</strong><br />
<br />
One thing I wanted to use my image compression technique for was VNC between my PDA (Dell Axim x30 High) and desktop PC. My use of quadtrees means that a computer desktop screenshot is very highly compressed (&gt;90% most of the time). But to achieve better compression I decided to use an incremental technique to send the VNC data.<br />
<br />
Given that not much changes from frame to frame on a computer desktop I decided to send the difference between frames instead of absolute images. This means that whole swathes of the image get reduced down to blank pixels which can be encoded in a highly compressed manner using the quadtrees. Neat huh? The quadtrees effectively give me a very cheap form of motion detection.<br />
<br />
Trying this out on my PDA gave framerates of 25fps in a standard desktop with notepad and a few other apps open. I also tried out a few games and got 15fps in Transport Tycoon, but only about 1-2fps in Oblivion. Oblivion goes so slowly because in most frames the entire screen changes, this means that the entire image has to be sent each time.<br />
<br />
I hope to put my VNC ap on this site for download when I've ironed out the rough edges.]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Sat, 06 Oct 2007 11:39:16 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,23,23#msg-23</guid>
            <title>Image Compression (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,23,23#msg-23</link>
            <description><![CDATA[ I was looking at the specs for the PNG format the other day and realised that it's just GIF with support for true 32bit colour and an open compression format. Which lead me to thinking that there must be a way to improve on it :)<br />
<br />
So, armed with quad trees and a gzip compressor class I set out to create a similar format that uses quadtrees to identify 'tiles' within an image that are the same colour.<br />
<br />
The crux of my idea is to split the image into manageable tiles (eg: 32x32) and then create a quadtree from the top 32x32 level down to the 1x1 level. Then in a second pass work through the tree grouping all the neighbouring subtrees that contain the same colour. This means that for each 32x32 tile of an blank image I only store one 32bit colour.<br />
<br />
If I then combine this with a pallet system akin to that of GIF &amp; PNG it leads to (for a 2 tone image) 1 bit per 32x32 tile plus 2x32bit colours.<br />
<br />
Next some header information is needed to tell the decompresser about each level of the tree. This is simply a byte per tree level where one nybble is used to indicate leaf nodes and the other the data type of the leaf nodes. The data type is required because the quadtree method actually inflates data if you have an image where all the neighbouring pixels are different colours (due to all the header info needed at each sub-level). So in this method a leaf can either be a single pixel or a group of contiguous pixels (ie: just like a standard bitmap).<br />
<br />
So, all this means that in the end for a blank image of 64x64 in 32bit colour we have...<br />
<br /><pre class="bbcode">
4 bytes   - format identifier
1 byte    - format version
4 bytes   - pallet size
4 bytes   - pallet colour 0
4*1 bytes - tile headers
4*1 bytes - tile colours</pre>
<sup class="bbcode">(note that the tile colour has to be rounded up to a byte in size to make decoding easier)</sup><br />
<br />
This becomes a total size of 25 bytes (prior to gzip compression). PNG gets a size of 301 bytes and BMP gets 16384 bytes. Not a bad improvement (99.85% vs 98.16% compression). For generic photographs and such the difference becomes much less, but my format still comes out on top of PNG for most cases :)<br />
<br />
The one case where I consistently lose out to PNG is when an image contains a lot of gradients. In this case my quadtree technique doesn't gain me any compression and I'm left to rely on colour pallets and standard gzip compression.<br />
<br />
I'll post some more examples and details of how I improved this to make a motion detecting video codec soon.]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Fri, 28 Sep 2007 11:06:39 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,19,19#msg-19</guid>
            <title>(Intermission) In-Body Attachments (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,19,19#msg-19</link>
            <description><![CDATA[ Attaching images to a post in Phorum is very easy once you've installed the correct mod, but updating all the templates to work with that mod is rather difficult. For example, the image below should appear in the post...<br />
<br />
<center class="bbcode">[attachment 8 leafy.jpg]</center><br />
<br />
But, as you can see it is not visible. Hopefully I can get it to show up otherwise this blog is going to contain a lot more posts like this one....<br />
<br />
ARG! :X<br />
<br />
[EDIT] YAY! it works now :D [/EDIT]]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Thu, 27 Sep 2007 12:18:42 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?4,3,3#msg-3</guid>
            <title>To blog or not to blog? (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?4,3,3#msg-3</link>
            <description><![CDATA[ Everyone seems to have a fancy blog these days, so here is mine. It's not going to be regular or particularly interesting, but it should provide a place where I can tell you all about my latest (often pointless) inventions :)<br />
<br />
Can you wait? Can you? I think not!]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Developement Blog</category>
            <pubDate>Mon, 03 Sep 2007 15:46:43 +0100</pubDate>
        </item>
        <item>
            <guid>http://www.finalfury.co.uk/phorum/read.php?1,2,2#msg-2</guid>
            <title>New phorum! (no replies)</title>
            <link>http://www.finalfury.co.uk/phorum/read.php?1,2,2#msg-2</link>
            <description><![CDATA[ PhpBB was becoming a target for spammers so I've switched to Phorum5 to try and avoid the issues. Hopefully this will keep them at bay for at least a while :)]]></description>
            <dc:creator>Kaloth</dc:creator>
            <category>Misc. Discussion</category>
            <pubDate>Sun, 26 Aug 2007 22:47:37 +0100</pubDate>
        </item>
    </channel>
</rss>
