This page contains software projects that has been discontinued - there are projects that have served me well, and still works well, but also unfinished stuff that I have abandoned before they get matured. Some of the projects has been useful, some of them totally useless and only implemented for some motivation forgotten long ago. The common denominator is that I have not made penny of money with these projects - but I noticed that someone may have fun with them, probably figure out some real use or just learn something.
Naturally any of these codes or applications does not contain any kind of warranty. Using them or part of them has no warranty regardless which kind of issues or problems anyone may have. All codes here are published under GPL license. If someone feel that I have violated someone else's rights - that has been purely accidental. I just want to publish these for common good. If someone assumes that publishing code for free, even S60 code, is against common good, especially these pieces of forgotten code projects. then I'm sorry.
Axonometric game engine, or more precisely Isometric engine - for Zaxxon or Marble Maddness kind of games. It is very old - well over ten years, and I have never used it in any other projects. Actually I cannot remember at which phase it was when abandoned, does it actually do anything, do it even compile - I have no idea.
Download sources: Axo sources.
Ball Game is tiny game. I implemented in in few hours for S80. If I remember right it was more of demonstrating that Nokia 9210 performance was adequate for shoot-em-up games. There is not too much content in it, just shooting balls - lot of balls. That is all I remember.
BreakWall is a lousy Arkanoid close for Windows. Actually it is so poor that it won't even work in modern PCs: The ball moves so fast that it is impossible to play. I implemented it using my 486, but didn't add any timer to control framerate or ball speed. It probably runs in busy loop. I don't want to look at its code, I think it is very bad code :-) However, if I remember right that was my first attempt to write multi platform code. I get some version of this running also in Sun Sparc Station.
Download sources: BreakWall sources.
DeskMaster is a virtual desktop application.I wroted it as I was used virtual desktops on SunOS's OpenWindows, and when at same time Windows 95 was published, which then implemented a thread support. So it is one of my first Windows applications. Even DeskMaster does what it promises - the code is terrible spagetti, and I had to discontinue developing it.
DeskMaster is not restricted to typical four or so virtual windows, with DeskMaster there can be thousands of virtual windows. Another interesting point is its memory consumption, its quite minimal, and binary size is 43kb.
Download sources: Deskmaster sources.
DIB stands for Device Independent Bitmap - what it is not. Its my first graphics library to make Symbian pixel graphics easy. But nowdays its quite obsolete.
Its API contains classes:
CQuickGraphControl - that is a CCoeControl which uses CDirectDraw interface for drawing. Long ago, for 9210 ir was using other methods, but after that I ported it to S60 3rd edition and for platform security direct draw was an good options. It creates a CDIBitmap (see below) for a canvas.
CDIBitmap - is a bitmap implementation. Its single pixels can be manipulated using TPixIterator class (see below).
TPixIterator - has functions for bitmap pixel manipulation. It hides all bitmap locking etc. hassle that Symbian has.
Download sources: DIB sources.
I think Ege3D was the first 3D engine for Nokia phones. Over ten years ago I bought a book Cutting-Edge 3d Game Programming With C++ and wrote a 3D engine based on that. I changed certain things as I started to disagree with author how some things should be implemented and designed. Im not sure if my way is better or worse. The engine interface is in ege3d.h file and implemented by COrange class. There are lot of functions, and some of them are even commented. But demo application there explains it better. Ege3D is implemented for Nokia 9210 and therefore most of the functions work only in its EColor4k mode - i.e. has 4096 colors. If I remember right also 8-bit and 24-bit colors (24-bit or 32-bit, I have no clue anymore) could be supported. But at least textures works only in 12-bit mode.
Bugs I remember:
Download sources: Ege3D sources.
Epoclib is Symbian Libraries on Posix. It let you write using Symbian APIs on Windows or Linux. Crazy?. When I was writing Ege3D I needed a editor to create meshes. Before I implemented a converter from DXF format I spend some time to write own editor. I wrote that on Windows, and since I wanted to use same 3D engine that I was already written on Symbian, using Symbian interfaces - I wrote Epoclib. I skipped the 3D editor quite soon, but Epoclib was fun to do - my intention was not to lurk from orginal implementation how the things were done, but instead do it by myself from the begining . I actually implemented a RegExp from Futils on it, instead initially on Symbian. The Epoclib is far from complete, I have just implemented classes there on demand basis - and nothing has happen with in many years. If I remember right, the next step was to do RThread and especially request semaphores - but that didnt get ready.
Using document opened by types is painful is Symbian. You have to write a plug-in module; binary that handles that datatype. Symbian file recognizers can dig type out from file data, but I think that is overengineered (for mobile phone OS) - as many cases just rely on extension is enough. That is worked pretty well in Windows more than twenty years. To help that pain I wrote a general recognizer that uses file extension to map which application handles certain document type. Unfortunately Symbian platform security (sigh) killed that idea as I will not sign my binaries (Recognizer plug-ins requires extensive capabilities) - and that works only in S60 2nd and S80 devices.
Foxel - that is an old one, is a heightmap engine implementation. Heightmaps Voxels, etc, are something that your grandfather saw in his games before they get extincted by 3D graphics. See rest from the Wikipedia. When I implemented it, Nokia 9210 just did not had enough memory. When Symbian phones did, the 3D was conquered earth and near space. Foxel is for curious people only.
Download sources: Foxel sources.
Futis - aka File utils, is a well served Symbian library that I have used with many projects. It contains APIs for searching files, reading text files, regular expressions and a simple stream handling.
Main interfaces are:
CFileUtils - search asynchronously files that matches to given pattern.
TFileUtils - a class that the CFileUtils internally uses, but also has some other utility funtions.
TStreamUtils - a pretty obsolete class that makes CDictionatyStore (yeah, I said obsolete) usage easier.
CFileLineReader - reads ASCII and several type of UNICODE files line by line. User does not have to care about file format - the type (ASCII or what UNICODE variant) is recognized. This has been useful as Symbian TFileText reads (or used to be) only handled one type of UNICODE - bad bad. CFileLineReader has not such problems. Ok I have to admit that its implementation is a bit messy if negative sides are considered :-). It does some buffering as well so it's performance has been adequate for my purposes.
CRegExp - Does about PERL type regular expressions and implements e.g. matching and substituting. Long ago I wanted to learn regexps - and there was not better way than implement them by yourselves. It was revealed to very hard to test - how you can write all possible regular expression combinations? Impossible. But for me, my purposes my test cases, it has worked as I have expected. I have no idea about its speed, never really evaluated that. Hopefully there is not found more bugs - debugging it is quite demanding.
Download sources: Futils sources.
Gamed is a Windows editor for Wormaze. It is graphical level editor which let you draw, name and manage levels. I think I had too much time those days. I think my purpose was that it would be easily configurable for similar level based games, but I doubt it, as I followed that principle very strictly in practice. That is why its name is just Gamed, rather than "Wormaze editor" or something - and the icon is pretty stupid. When I wrote Windows applications long ago, the work started by drawing an icon.
Download sources: Gamed sources.
Halloca is a test application to implement workaround for missing alloca function. The problem was that in Symbian stack is limited very small, about 81kb, and then I had to write a function that emulated stack using heap. Im not sure if this is the latest version. You should also check from C2Doom sources if there is upgrades. But Olli figured out even more clever way to handle the stack limit - you may see Quake for S60 sources for that solution.
Download sources: Halloca sources.
Keymapper is a application that does - oh, key map files. It views a PC 102 keyboard and then let those keys to be mapped to S60 phone keys; and produces an ASCII file. The Keymapper is used in C2Doom- a S60 Doom implementation to help configure gaming keys for different phone models. It works well, and contains example code how to change files between processes regardless Symbian platform security. The user interface works well, however would need some graphics designer touch. Terrible colors, terrible hi-light.
Download sources: S60 KeyMapper sources.
This is an Windows application that I used many years, even I don't clearly remember what it does. I had it in my startup and then it was able to write log when my Windows was booted up, and when it was shut down. I stopped using it when I didn't anymore remember why I needed that information.
I think that this was a test application for FixedPoint, for integer maths and Dib, for fast drawing interface. Mandel (or Mandelbrot, I cannot remember the application actual name) draws Mandelbrot set. It let you to zoom there - but not to infinity. It is using only 32-bit fixed point numbers and thus it fails when zooming too close - but for viewing some beautiful details it works - you can also change and manipulate colors application is using. This can be surprisingly addictive stuff.
Download sources: Mandel sources.
MasterMind is something different. Symbian SDK provides an ancient version of Perl - and with that distribution I found Perl/Tk. Something that I have never seen been used before. Then I implement classic Master Mind game using that by applying test driven development, TDD. Quite fun. Quite hardcore.
Download: Master Mind
MoWin is a MS-Windows application. Im not sure if there is need for this kind of application anymore: It let you add a "handle" to window where you can move it. It was useful when application stopped responding and thus cannot be moved - with MoWin you can add a handle and carry it to new place. It also let you move windows which does not have a title bar. It let you also kill the window.
Download sources: MoWin sources.
MyQuiz (or TinyQuiz - I'm not sure) is an s60 application that can be used for quizes - just add questions. It has a very simple format that everyone can use. Binary and documentation can be found from TinyQuiz Download.
I had never interest do improve its UI neither write any other questions than those, now expired, driving license tests. UI looks bad, but I never get better idea how it should works - without touch screen. But I never implemented that support. Engine however works nice and fast.
Download sources: My Quiz sources.
Picture message viewer for S80. Long before there was MMS, Multi Media Messages, there was picture messages, a message format that packed graphics in 160 characters. Not very famous - but I confused when my Nokia 9210 was not able to view them. So I implemented a viewer. Along that same release I also published Beamer and Versit Utils, but I was unable to find their source codes. However binaries and descriptions are still in My Symbian.com.
PolePosition is an attempt to implement a Pole Position game in ten hours. What I didn't completed. I failed miserably. Probably my target was too hi as I was wondering how that old Atari implementation was working and tried to keep the calculations as light as I could (not to mention avoid floating points). Now I know that my guess for algorithm was totally wrong, but I never improved or continued the project as those hours were gone. The PolePosition runs on SDL. I have compiled on Windows, OSX, Linux, and of course - S60 SDL.
There are not to much gems in it. But someone may get some hint for SDL programming or my hilarious blitter algorithm. (I think there is same thing used in S60 SDL sources.)
Download sources: PolePosition sources.
RecBrowser is my first PyQt application. I a Topfield PVR Digital recorder and then I have copied a lot of those .rec files to my PC. In PC those files just had their filename - which does not tell too much. Then I copied an application that let you browse information stored in those files. Information like program full name, description and when it was broadcasted - and then initialize player application (e.g. VLC player) to view it. For a people who has a Topfield, "Toppy", and then has recordings on computer - that Python application may be useful. RecBrowser requires Python and PyQt4 to be installed.
Life is Conway's Game of Life implementation. I implemented it first to Nokia 9210, and then ported to S60. This version is for S60. By default there is only F-pentomino pattern, but it supports .lif files, so there are more than plenty of stuff to explore. If you are interested:-) Most of the people prefer watching when paint is drying. More info, links and binaries available at Life Download.
Download sources: S60 Life sources.
This application is for Nokia S90 - and it probably views all bitmaps hidden in device. I think its here as there are some useful code - however most important stuff is concentrated to Futils. Not really useful, please dont bother. I just added this here to have a single S90 application in the collection.
Download sources: Skinner sources.
SpaceRace is a attempt to do a 3D game using Ege3D engine. The game works somehow, even at least starfield background confuses sometimes. I have written that long ago - but if I remember right the goal is to fly to green objects one by one before opponents, an arrow points where to go. Very fascinating. And braindead. To be honest the goal was much more ambitious, but this far I get focused until I got enough and buried the project. I suppose this can work "as-is" in S60 2nd gen phones.
Download sources: SpaceRace sources.
Wormaze was one of my first S80 or Symbian applicatins (not the really first one however) - and it suffers bad design and clumsy implementation. However after many hours (too many) I get it working. It has labyrinth like levels which has one or more worms and fruits. One of worms is controlled by player and others are controlled by artificial intelligence. Ok-pretty talk about A.I. or rather just computer, or CPU as those worms are more stupid than average earthworm. But they are hungry! And they are after fruits and your ass! The target in game is to eat all fruits to get next level. For each fruit eaten a worm grows longer. But worms can also eat each other - especially CPU worms try to eat you and you can eat them. I don't remember when eating each others head, likely you worm die. See also Gamed - Wormaze editor.