2013-06-07

Vintage stuff from my days of 320x200-pixel 256-color VGA

Techniques demonstrated:

  • Ultra-fast font rendering
  • Ultra-fast bitmap scaling
  • Ultra-fast bitmap rotation
  • Projection of 3D structures to 2D for rendering
  • Invisible surface detection
  • Ultra-fast rendering of lines and polygons directly into video RAM
  • Gouraud shading
  • Ultra-fast dithering
  • A voxel rendering experiment
  • A tiled floor rendering experiment

Summary (just give me the TL;DR)

A collection of very short YouTube videos of graphics demos that I did all by myself at home for fun back in the mid-nineties (when I was in my twenties) rendering pixels directly into the video RAM of the 320x200-pixel, 256-color palette VGA without the use of any libraries. Everything is in C or C++ with the crucial routines written in 80386 assembly, in some cases generating machine code on the fly.

2013-06-05

A few samples of my work on Darkfall Online

The development of a game like Darkfall Online in a country like Greece was a rather unlikely thing to happen, so I consider myself very lucky that it happened and that I was part of it.  Here is the wikipedia page for the game: https://en.wikipedia.org/wiki/Darkfall

The funding came from a Greek-Libyan family which has made enough money out of oil-related construction to be able to afford the luxury of investing on something fun, rather than on something with a high ROI, or even a guaranteed ROI. Thus Razorwax, a promising team of Norwegians some of whom were already published in the gaming industry, was brought to Greece to build Darkfall.  I was the first Greek programmer hired, and I worked primarily on the GUI of the game. I stayed with the company for about a year after the game was released.

Me at Aventurine, in 2004. Click to enlarge.
What follows is a rough diagram of the design of the GUI that I built for Darkfall: The graphics engine (written by a colleague in C++) provided me with just two asynchronous primitives, one for drawing textures, and one for drawing text. The layer we called middleware (written by another colleague, also in C++) provided me with the functionality of the "GetTextExtents" Win32 GDI function, and with an interface to the browser window (encapsulated instances of Microsoft Internet Explorer.) 

2013-05-30

Vintage: my work on FESPA for Windows (Visual C++ and MFC)

This post shows some screen captures demonstrating work that I did on a Computer-Aided Civil Engineering application called "FESPA for Windows" back in 1996-1998 while working at SENA Ltd. on behalf of "LH Logismiki".

"FESPA for Windows" is now called "Master". SENA Ltd. does not exist anymore, but LH Logismiki does, and their website can be found here: http://www.lhlogismiki.gr/.  I took these screen captures from their web site, and apparently the modules that I built for them back in 1998 have not changed much, 15 years later. Even most of the icons that I designed for them are still the same.

3DV on black background #1. Click to enlarge.
The above is a screen capture of the "3DV" module, designed and written entirely by me. It is from the early black-background days, before we were told to switch to white background to "make it look more like Microsoft Word".  3DV can pan the structure up, down, right and left, zoom it in and out, and rotate it in any way the user likes. Using data produced by the finite-element analysis module, it can also show the distortions that the building undergoes due to static loads, or in the event of an earthquake. It can even animate the distortion of the whole building. (Pretty fancy stuff!) 

2013-05-27

Screen Capture (Screenshot) under Android 4

The TL;DR version of this post:

Depress as simultaneously as possible, and keep holding down for about a second, both the home button and the power button.

The order in which the buttons are depressed does not matter, but simultaneity matters: from the moment that one of the buttons has been depressed, there is an extremely small window of time, perhaps as small as one tenth of a second, within which the other button must also be depressed, or else no scweesho fo joo!

You will know that you have managed to take a screenshot when your phone will emit an oh-so-vintage camera shutter sound, a bright white frame will momentarily appear along the borders of the screen, and a "picture" icon will take seat in the notification area.

The oh-how-much-I-love-writing version of the post:

2013-05-12

A pristine Windows Registry

The following files were exported from a pristine installation of Windows 7 Ultimate x64 living inside a virtual machine created by VMware Player.  So, they represent a default (clean) copy of the registry of that windows system before installing any software on it.  (Well, except for VMware Tools.)


Here is the .ZIP file containing all the .REG files. (9.5 MB)

IMPORTANT NOTICE: The location of these files may change in the future, but the location of this blog post will not, so if you want to provide links, please make sure to link to this post, not to the actual .reg files.

Explanation:

For reference purposes, I needed to get my hands on a default (clean) copy of the registry of Windows. I could not find anything on the interwebz, so I had to load Windows into a virtual machine and extract the registry from it.  I figured that this may be useful to many people out there, so I have posted the results of my labor.

2013-05-07

Microsoft Visual Studio 2012 (up until update 2) is lame!

If I knew there are no macros in VS2012 I would have saved myself the trouble of upgrading from Windows XP to Windows 7 and reinstalling all my stuff from scratch. The all caps menu is fixable; the awful colors are fixable; the dreadful icons I can live with; the rest of the god-awful ugliness I can live with; but the macros? I cannot work without macros! So, I am reverting to VS2010 and sticking to it for now.

Aside from that, the operating system upgrade means that I am now 64-bit!  Going up in life!  C-:=

2013-05-04

tattoodavie's woes

This is so funny I had to share it.

Somewhere in some troubleshooting forum (it does not matter where) a certain technical issue is being discussed (it does not matter what) and user 'tattoodavie' leaves the following comment:
i have the same problem but i have windows 7 ultimate 7600 installed on an asus X83Vb-X2 notebook, but i also have another problem... i cant get into the bios and set the clock, change the settings... nothing...its password protected. it was my ex-girlfriends, she bought the laptop, but gave it to me for me for my birthday, turns out it came from a pawn shop, which one i will never know, seeing as how we cant talk to eachother any more (court order) i have no clue how i can clear the password. I have had it for some time now, and have grown too attached to it to. i just installed windows 7 and the new NVIDIA 182 driver for its GeForce 9300m GS 512mb graphix card. and now every time i restart this thing it sets the time and date back to 12/05/2008. I assume thats the date it was built. any ideas what the he** is going on?
Okay, it is from here: social.technet.microsoft.comWindows 7 64 bit and Asus P5Q BIOS issue

2013-03-27

My notes on "Clean Code" by Robert C. Martin

These are my notes on the book "Clean Code" by Robert C. Martin from Prentice Hall.



I am in agreement with almost everything that this book says; the following notes are either quotes from the book which I found especially interesting and/or especially well written, or they point out issues that I disagree with, or errata which objectively need correction. If some point from the book is not mentioned below, then I agree with it.

2013-02-21

C# Blooper №14: Weird / annoying interface method visibility rules.


Before reading any further, please read the disclaimer.

As it turns out, an explicit interface method implementation in C# must be tied to the base-most interface to which it belongs; it cannot be tied to a descendant interface.

namespace Test14
{
    class Test
    {
        interface A
        {
            void F();
        }

        interface B: A
        {
        }

        class C: B
        {
            void A.F() //OK
            {
            }

            void B.F() //error CS0539: 'B.F' in explicit interface declaration is not a member of interface
            {
            }
        }
    }
}

Well, sorry, but... it is.

-

2013-02-05

C# Blooper №13: Stack and Queue do not implement ICollection


Before reading any further, please read the disclaimer.

This is a blooper of the Common Language Runtime (CLR), not of the language itself: Stack<T> and Queue<T> derive from ICollection, but not from ICollection<T>, so they do not support the Remove( T ) method! Why, oh why?

-