Below you find free software.

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
2. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
3. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.





Albert - 2013

All of Australia is on your tail.
At first, you the platypus is not admitted to enter these Spelunke called "Ponsby Station".
Then we will take your dough, all of it. And now you even hear from the captivity of your friends.
Awful many real reasons to get angry and trouble the place, don't you think?
So: create havoc. Get your money back, finish all the bandits and find the old Australia - your homeland!

Get it on iTunes Albert - The Platypus Game for iPhone and iPad
Get it on Google Play Albert - The Platypus Game for Android
Play Online Albert - The Platypus Game for Flash

Concept, Design, Graphics, Sound: Robin Piniek
Code, Backend: Sebastian Roll

Title of: Albert - Das Schnabeltier

In-game shot of: Albert - Das Schnabeltier



No code online.







Code snippet of the year - 2012

/**
 * Projects a value from a source range to a target range (linear mapping, linear transformation).
 * <code>source</code> should be in range between <code>sourceMin</code> and <code>sourceMax</code>.
 * <code>sourceMin</code> should be smaller than <code>sourceMax</code>.
 * <code>targetMin</code> should be smaller than <code>targetMax</code>.
 * @param source    value to be mapped from given source range to given target range
 * @param sourceMin start of the source range
 * @param sourceMax end of the source range
 * @param targetMin start of the target range
 * @param targetMax end of the target range
 * @return          the transformed value from source to target range, preserving the ratio of min and max
 */
public static float project(final float source, final float sourceMin, final float sourceMax, final float targetMin, final float targetMax)
{
   if (source < sourceMin) return targetMin;
   if (source > sourceMax) return targetMax;
   if ((sourceMax - sourceMin) == 0) return 0;

   return  ((source-sourceMin) / (sourceMax - sourceMin) * (targetMax - targetMin)) + targetMin;
}







Speedolino - 2011

A mind jogging game to train the interaction of the two cerebral hemispheres (i.e. your brain) by a combination of math problems and the pairs game.
Speedolino features a variety of puzzles, including memory and mathematical questions, all designed to help keep certain parts of the brain active.
Made with Flash 10 and ActionScript 3. Features online hi-score upload.
The first level is free to play at speedolino.de

Concept: Jens Voigt
Design, graphics, sound: Robin Piniek
Code: Sebastian Roll

ingame image of speedolino level 3

ingame image of speedolino level 1

ingame image of speedolino level 4



No code online.







Jesse - 2010

Uncle Jesse's Mysterious Shedwalk is a hidden object game made with Flash 9 and ActionScript 3.
This project is on hold, but the first level is playable already. Try to solve the tasks shown in the list.
You can combine objects to solve complex tasks. Hint: maximize the brightness on your screen to see all the objects.

Concept, graphics, sound: Robin Piniek
Code: Sebastian Roll

click to start the jesse game



No code online.







StartUp - 2010

StartUp is a tool to automate application launches where the time duration between launches can be configured.
UseCase:
After booting up your machine in the morning you double click several icons on the desktop one after another to setup your usual workspace.
You also wait between double clicks because Windows slows down when launching proceses in parallel.
StartUp can do the work automatically. You just need to setup a launch script once.

tool to launch applications automatically


How to install:
Copy StartUp.exe anywhere you want. There is no installation routine required.

How to configure:
Put the StartUp configuration file (filename = StartUpConfig.txt) into the same folder where StartUp.exe is located.
Open the file and add/change the configuration. The syntax is:
"full path to the exe file"
"wait n"
Where "n" is the duration to wait in seconds.

Example:
C:\WINDOWS\explorer.exe
wait 5

How to run:
Double click StartUp.exe


View code online:
StartUp.c - The console application.

Download StartUp.exe [11 kByte, SourceCode included]







Touch - 2009

Touch is a little tool for setting the timestamp of files to the current time.
It works on Windows systems and it is a simple version of the touch program commonly found on Unix machines.
Touch changes the creation, modification and access times of files.
The time is taken from standard Windows API. The time used can not be specified.

tool to set timestamp of files. like unix tool.


For each file operand, Touch performs the touch action.
If a given file's attribute is read-only, Touch temporarily removes the flag and performs the touch action.
If a given file does not exist, no action is taken, but the error is reported.
If Touch has no access to a given file, the error is reported.

Requirements:
Microsoft .Net Framework 2.0 or higher.

Limitation:
The Win32 limitation for a command-line string is 8191 characters.
Let's say you got files in a folder named: E:\Public\Projects\C#\temp
And each file within this folder has 20 characters,
you end up with a length of each command-line argument by 46 characters, including the folder prefix.
8191 / 46 = 178 files can be processed with one call of Touch from command-line at max.

Examples:
1. Touch one file
touch FileName.txt

2. Touch two files
touch FileName_1.txt FileName_2.txt

3. Touch all content within a directory (recursive)
touch FolderPath

4. Touch all content within two directories (both recursive)
touch FolderPath_1 FolderPath_2

5. Touch all content within a directory (recursive) and one file
touch FolderPath FileName.txt


View code online:
Touch.cs - The console application.

Download Touch.exe [48 kByte] and get in touch.
Download Visual Studio 2008 Touch C# project [140 kByte] and build on your own.







Raw2Picture - 2008

This tool converts binary pixmap data to common readable image formats.
Input data might be for example a memory dump of some video frame buffer.
As the frame buffer data format is sometimes odd (proprietary to the vendors chipset), this tool is designed to read any color format.

tool to convert raw data to an image. user can set any color format as input.


To achive the most general data conversion possible, a special language is used here to describe input data bytes.
The language is like this: [ColorComponent, NumberOfBits]+

Valid ColorFormatChars (the alphabet):
r, R -> Red ColorComponent
g, G -> Green ColorComponent
b, B -> Blue ColorComponent
a, A -> Alpha ColorComponent
0,1,2,3,4,5,6,7,8,9 -> NumberOfBits (amount of bits for each component)

Some ColorFormat language examples:
R8G8B8 -> 3 input bytes are fetched and interpreted as red, green and blue color channel. Each channel is 8 bits wide.
R5G6B5 -> 2 input bytes are fetched and interpreted as red, green and blue color channel.
          Red and blue channel are 5 bits wide.
          Green channel is 6 bits wide.
       -> So, input data has 16 bits and looks like this:
          MSB 15    11 10    5 4     0 LSB
              +-------+-------+------+
              |  Red  | Green | Blue |
              +-------+-------+------+

A7R12B8G5 -> 4 input bytes are fetched and interpreted as alpha, red, blue and green color channel.
             Alpha is 7 bit wide.
             Red is 12 bit wide.
             Blue is 8 bit wide.
             Green is 5 bit wide.

Before input data is interpreted, you can filter (pre-process) the data in advance.
This can be useful to clear a color channel or to set all input alpha bits to one before conversion.

Valid FilterChars:
z, Z -> Set input bits to zero
s, S -> Set input bits to one
x, X -> Don't care
0,1,2,3,4,5,6,7,8,9 -> Following number (amount of bits for each filter)

Some PreFilter language examples:
X8 -> The byte fetched is not changed.
X24S8 -> The last of the 4 bytes fetched is set to 0xFF.
S4Z4X16Z4z4 -> MSB 4 bits set to one. Following 4 bits set to zero. Following 16 bits don't care. Following 8 bits set to zero.
            -> So, the resulting bit masks look like this:
               PreFilter SetToOneBitMask : F0000000
               PreFilter DontCareBitMask : 00FFFF00
               PreFilter SetToZeroBitMask: 0F0000FF
Remember:
The sum of bits (for PreFilter or ColorFormat) must be byte-aligned (1,2,3 or 4).
I.e. the numbers following the Filter/ColorFormat-Chars must in total sum up to 8,16,24 or 32.

This tool requires .Net Framework 2.0 and it is proven to work on WinXP machines.

There is also a command line syntax (if you don't want to use the mouse):
Raw2Picture inputFileName width height preFilter colorFormat outputFileName [noDialog]
e.g.: Raw2Picture.exe myBinary.bin 200 100 X16 R5G6B5 out.png
e.g.: Raw2Picture.exe myOtherBinary.dat 64 64 S8X8 A8G4R2B2 out.bmp noDialog

Not only raw binary data but also PNG, BMP, JPG and GIF can be loaded by presing the "Load File..." button.
The image will be displayed and you can then QuickSave it.
This is handy to generate raw data from existing files.

View code online:
Form1.cs - The main window handles user input and triggers conversion on any setting changes.
ColorFormatString.cs - Reads color format (freely set by user) and offers parsed bit position and length of color channels Alpha, Red, Green, Blue.
PreFilterString.cs - Reads filter format (freely set by user) and offers parsed bit position and length for values 1 or 0 to be applied before conversion.
PictureBuffer.cs - Holds raw picture data in pre-multiplied ARGB color format. A common known DotNet System.Drawing.Bitmap is exposed and can be used as you would expect.
HelpForm.cs - Popup window showing help and usage.
HexViewForm.cs - Shows binary file data in readable formatted hex view.
RawFileGenerator.cs - Writes binary data (input is uint[]) to disk in byte order ARGB8888 or RGBA8888.
Program.cs - Startup code, nothing special.

Download Raw2Picture.exe [160 kByte] and import your binaries right away.
Download Visual Studio 2005 Raw2Picture C# project [350 kByte] and geeks feel happy.







Asteroids Bot - 2008

One of the ever must-have-played games is for sure Asteroids by Atari. Asteroids hit the arcade rooms around 1976 and was a blast, people say.
On Mai 2008, a local computer magazine called "c't" shout out a coding competition: Make a program which is able to play against Asteroids by itself (a so called "bot").
As a true retro-gamer I was hooked and had very exciting days coding such a thing. Please see details [german] for a look behind the scene of Asteroids and how it was engineered.
So, here is my Bot playing:

program (bot) playing asteroids itself

And this is the original game state:

Asteroids emulated by MAME


The Bot receives 1024 bytes of vector-screen data at 60Hz via UDP from an Asteroids emulator [MAME].
The emulator is driven by the original ROM image from Atari. Additionally it can handle key commands received from a Bot: Left, Right, Fire, Hyperjump, Start.
Vector-screen data is interpreted and objects on screen are extracted frame by frame: Asteroids [big, middle, small], Saucer [big, small], shots [own, by saucer] and the ship itself.
Because all objects are very similiar, they have to be tracked by their position and velocity. If tracking is done right, a Bot can calculate the best angles to shot objects as fast as possible.

During competition the participants [2500 people] revealed lots of detailed knowledge about the internals of Asteroids. Such as:

Max count space ships [lives]: 255, but more than 20 drawn lives on screen -> the game slows down rapidly
Max count simultaneous own shots: 4
Max count simultaneous saucer shots: 2
Max count simultaneous asteroids: 26 [if then hit a big/middle asteroid results only in one smaller asteroid, instead of two]
Count of asteroids at level start: 4 to 11

Velocity of a shot:
At positive X-direction: 63 pixel in 8 frames
At negative X-direction: -64 Pixel in 8 frames
At positive Y-direction: 63 Pixel in 8 frames
At negative Y-direction: -64 Pixel in 8 frames

Space ship rotation:
One hit on left/right button turns the ship by 4,21875 degrees. It takes 85,33 keystrokes to turn the ship around its axis one time. Therefore the ship must be turned three times around its own axis [256 keystrokes] to return to its exact starting look-at-direction. So, there are 3 times more Asteroids internal rotation positions than you see on screen. Each internal rotation position results in a different shoot angle.

If two keys are pressed simultaneously, e.g. turn and shot, then the shot has the direction of the spaceship prior to the rotation.

Coordinate system of Asteroids build in 6502 micro processor: To show a smooth movement of the spaceship, even at low processor speeds, the 6502 works internally with an 8 times finer rasterized coordinate system than the image storage. E.g.: 8192 x 6144 pixels. These coordinates will probably be transformed by simply cutting off the lower bits of the frame buffer.

The lifetime of a projectile [shot] is 18 and is decremented every 4th frame by one [if the internal frame number is divisible by 4]. At total between 69 and 72 frames, depending on the launch date.

Asteroids manages the asteroids and their explosions in a 27-element array. New asteroids are always in the first free slot in this array.

And so on... there is much more to take care about, my bot is only worth ~96.000 points in a five minutes game.
Ohter contributors even re-coded the whole ROM image to guess Asteroids' random number generator output on next frames. That way, a bot can do ~115.000 points in 5 minutes.


Get C# source code of my bot here and have fun building your own!
Download Visual Studio 2005 project and EXE [60 kByte] and let it play Asteroids!
You will also need this version of Asteroids MAME [640 kByte] to play via UDP [ROM included].







492 Arcade Game Characters

Here are a lot of heroes and bastards taken from various classic arcade games.
Below picture shows 8 out of 492 uniquely ripped sprites in PNG image file format.

8 out of 492 unique cropped gaming characters.


Find the whole set here

Arranged to one huge picture it's like this:

Collage of classig arcade heroes and characters.


Most of them were snapshoted with MAME, SainT, WinUAE and Yape emulators.
Afterwards each game background was cut out by hand.







FileSystemWatch - 2008

Ever wonder what files are being created, changed, renamed or deleted by Windows OS during normal operation?
You want to know where and which files are created during installation of some software?
This little application keeps track of all file activities and reports them to you.
Not only Windows OS, but all file events are tracked according to your settings.
It's also a great helper to get immediate notifications on files being created/changed by other persons.
For example within shared folders on project drives at your company.
This application is executed in background on your machine and supervises folder and file changes at any local or network drive.

See below FSW screen shots:

Tool keeps track of file events and reports them in a DataGridView control.


Download File System Watcher Program: FileSystemWatchExe_20090129.zip (18 kByte, requires .Net Framework 2.0)
Update: Download File System Watcher Program: FileSystemWatchExe_20110523.zip (20 kByte, requires .Net Framework 4.0)

This tool was made using the DotNet Framework 2.0 and should run with XP SP2.
The .NET Framework has a pre-defined class named System.IO.FileSystemWatcher, with whose assistance you can prepare a program for monitoring the file system.
This class has properties with which you can specify the path which should be supervised. Whether changes on files/folders or sub-folders can be supervised.
With System.IO.FileSystemWatcher class, it is also possible to specify the file types to be supervised (with *.doc for example, changes at all Word files are supervised).
You can even indicate, which kinds of changes to pursue - so e.g. new files, changed file sizes or "touched files".

You can use this program for monitoring files on a local computer or in a network.
On startup three config files will be created at the EXE's location.
Right click the main window to open a context menu and set directories you want to watch.

Leech the VisualStudio 8.0 (2005) C# project including source code: FileSystemWatchProj_20090129.zip (40 kByte)

Update: VisualStudio 10.0 (2010) C# project including source code: FileSystemWatchProj_20110523.zip (43 kByte)
(Fixed: multiple error messages on losing connection to paths)

View code online:
MainWindow.cs - The main window with DataGridView, ContextMenuStrip and NotifyIcon. Utilizes one System.IO.FileSystemWatcher for each directory to watch.
EditDirectoriesWindow.cs - Window shown by context menu. User can edit paths (directory) to watch.
OptionsWindow.cs - Window shown by context menu. User can set several options like file-extensions to watch, user interface settings and logging.
PathContainer.cs - Abstracts an Array of Strings, can load/save Array from/to file. Can compare if a given String is inside the Array.







TableTop by Sebastian Roll, Philipp Roßberger - 2007

This is a virtual table where you can play around with photos.
Photos (pictures, images) must be in BMP, JPG, TGA, PCX, PNG, or PSD format.
A photo can also represent a video stream (MPEG 1/2/4, AVI, DivX, XviD)
or any other common container/codec. All visual media found in the folder ../media/photo
will be parsed and loaded (press 'L') onto the table. Once loaded photos follow the rules of Newton.
That is: you can lift them, screw and bounce them with your mouse like real photos on a table.
On double click, photos zoom up to be viewed in detail.

Here is a Table Top screen shot:

TableTop View Photo And Video On Virtual 3D Table


The main purpose for coding this application was to get inside graphics <-> physic syncing.
Here are some facts about TableTop:
  • Windows Win32 Exe
  • Uses DirectX 9, runs also with openGL or in pure software mode
  • Uses irrlicht engine for rendering. Visit irrlicht for more information.
  • Uses physX engine for physical simulation of the whole scene. Visit physX for more information.
  • Uses ffmpeg engine to encode videos in realtime. Visit ffmpeg for more information.


Somebody connected a Wiimote [Nintendo Wii remote] to control the application:




And some other guy claims to have made TableTop [aka DynAmbient] :)




You can download and test the project here:
TableTop_20071128.rar (18 MB)

Here are some facts about the project download:
  • Includes Visual Studio 8.0 project/solution
  • Includes source code (about 30 files C++ code)
  • Includes sample media (pics and short vidz)
  • Includes irrlicht SDK (sources, libs, compiled DLL)
  • Includes physX SDK (include header files, libs, DLLs)
  • Should run without installed physX SDK
  • Includes lib avcodec (aka ffmpeg) (sources, lib and compiled Win32 DLL)

Here are some facts about coding:
  • Interfaces physX to irrlicht transformation (irrSceneNode->setPosition( nxActor->getGlobalPose() )
  • Creating an irrlicht texture with ffmpeg video content and playback video on an irrlicht ISceneNode
  • Loading physx XML scene description (XML exported with StudioMax 3ds plugin)
  • Should run without installed physX SDK.
    A temporary registry key will be created to fake a complete physX installation.
  • Used irrlicht lib is: irrlicht-1.3.1
  • Used physX SDK is: physx-2.7.2
  • Used ffmpeg library is: libavcodec-51.43.0
  • Provided VisualStudio project should build right away after downloading.

You can download the plain source code (needs irrlicht SDK, physX SDK, ffmpeg SDK in order to build):
SourceOnly_TableTop_20771128.rar (45 KB)

Sources for TableTop are also available online

Application design / coding was done by Sebastian Roll.
Idea and artwork by Philipp Roßberger.







Swarm by Sebastian Roll, Philipp Roßberger - 2006

Swarm was born out of the idea to make a game with cooparate elements where the player
has to work together with other NPCs (Non-Player Characters). The player has to care about
the NPC and also uses it to manage the quest. The name "Swarm" states the fakt what the NPC
actually look like. It behaves like a flock of birds and is made out of many small NPCs.
Please visit the place of Craig Reynolds for more information about Flocks, Boids and Herds
and how they can be modelled with bits and bytes.

This screener shows a Flock of Boids performing a tornado pose:

Swarm Flock Boid Simulation Game Irrlicht


Swarm project implements such flock algorithms and output is done with irrlicht graphics engine.
This project has also a robust game state machine, terrain rendering and a large debug class
for logging. It can visualize debug-data also on screen in realtime (which might be usefull for other irrlicht coders).
The project was not completed and is abandoned now. Never the less I say thank you to following people and their work:
  • OpenSteer - Steering Behaviors for Autonomous Characters
  • The best UDP game network library on the net: RakNet
  • The Irrlicht Engine by Nikolaus Gebhardt.

Sources for Swarm are available online

Coding was done by Sebastian Roll.
Design and artwork was done by Philipp Roßberger.







Dragon Wings by Sebastian Roll, Philipp Roßberger - 2005

DragonWings is a game where you are a dragon, flying around to collect rings.
If all rings are touched in time, you mastered the game.
This game was public shown at "HAW Nacht des Wissens 2006"
See Nacht des Wissens 2006 PDF

Used software libraries from other people (thank you very much):

The Irrlicht Engine:
Copyright (c) 2002-2005 Nikolaus Gebhardt
www.irrlicht.sourceforge.net

The Character Animation Library (cal3D):
Copyright (c) 2001, 2002 Bruno 'Beosil' Heidelberger
www.cal3d.sourceforge.net

The FMOD audio library:
Copyright (c) Firelight Technologies Pty, Ltd. 1999-2004
www.fmod.org

Article - Using Cal3D with Irrlicht:
Copyright (c) Thomas Suter 2004
www.thomas.webtracker.ch/jahia/Jahia/cache/off/pid/672


Download the above mentioned libs, in order to build the DragonWings.exe
(We used following versions):
irrlicht - 0.12.0
cal3d - 0.10.0
fmod - api374win


Here is a Dragon Wings screen shot:

DragonWings Dragon Wing Game Nacht Des Wissens



Download the sorce code and of "Dragon Wings" and all related media:
DragonWingsProject.rar (10 MB)
Sources for DragonWings are also available online

Coding was done by Sebastian Roll.
Game design and artwork was done by Philipp Roßberger.
Visit www.einszunull.net for media related to Dragon Wings.







RFID Scanner (Bachelor Thesis, Computer Science) - 2004

This report describes the development of a technical equipment for optimizing the acquisition security of a RFID system (radio frequency identification).
The RFID system is a unit for automatic identification of objects in an industrial process (assembly-line).
The system identifies objects carrying a transponder. On request the transponder sends its ID with RFID technology to a reading device.
The developed application controller controls the sequence of acquisition and report the result to a higher instance.

RFID scan controller for ISO_15693 protocol tags


Download Thesis (German, PDF, 2 MB)







RasterPic - 2004

A ViualBasic 6.0 project to create old school "raster line" effects on images.
After loading a picture (BMP, JPG, GIF, WMF) you can select scaling factor and safe a rasterized copy.
How it works: Each line of input image is read and and written to
output image together with an following line of black color.
Each input line is converted to monochrome color format, e.g. green (color is adjustable).

Image rasterization looks like this:
(input)

Computer Lab HAW Technische Informatik input

(output)

Computer Lab HAW Technische Informatik output (rasterized)


This project was inspired by the movie Alien. Inside their space craft you can see various console screens
printing the usual "science fiction listing dumps" on screen.

Download RasterPic: RasterPic_20080106.rar (68 kByte)
Sources are also available online







Wurst Ritt - 2005

For all who love Trailblazer game, here is my version done in BlitzBasic 3D.
Beware it is not as addictive as the C64 original done by Mr. Chip Software, published by Gremlin Graphics 1986.
The goal is to maneuver a ball on a road with gaps and holes. Try to collect letters W U R S T to earn extra time.
Each level file can be modified easily as they are pure TXT files. Game runs on Win32 with DirectX 8.0 or higher.

WurstRitt looks like this:

Earth ball trailblazer road game


The game's name is as fabules as it's gfx which represent various sausages from a butcher's shop.
Avoid falling down the path to reach finish line in time. The path is assembled on the fly according to the level file.
Music is classic C64 SID tunes, hail to BB3D's mod play function.

Download Wurst Ritt project: Wurstritt_20080108.rar (2.2 MB)
Sources are also available online







WinSock - 2004

This is a chat server/client. Useful to send text based messages over the network to other machines.
To setup a chat, someone has to start WinSock in server mode - waiting for others to connect.
WinSock uses usual TCP/IP sockets where the bounded listen-port is configurable.

Some screens of WinSock:

A Text Chat Client and Server.


Download WinSock project and EXE: WinSock_20060623.rar (94 kByte)
Sources are also available online (Visual Basic 6.0):
Main form and code: Form1.frm
Config and login form: FrmLogin.frm
Win32 socket error codes: WinSockErrorCodes.bas
Network IP-adress to host-name helper function - VB6 code of Win32 API getHostByAddr(): WinSockHelper.bas







Titty Memory - 2004

The card game "Pairs" for Windows. Done in ViualBasic 6.0 this is a pretty clean project.
Size and content of your card set can be changed. By default three sets of pics of nice girls are provided to play with.
The program scans sub folder named "pics" on start up and imports any JPG inside.

Here is a screen of the Memory / Pairs game:

Asian Girl On Memory Game Memory


Asian Girl On Memory Game Pairs


Download TittyMemory project, EXE and media: TittyMemory_20080108.rar
Sources are also available online







Alien VS Hero - 2003

This is a casual fun game, an homage to "Space Invaders" by Taito Corporation (1978).
You (the Hero) control a space ship, glue'ed to the ground and shoot aliens as they attack you.
An alien theme is applied, taken from the arcade game named "Aliens" from Konami (1990).
Programming this was super fun as every day some new feature fit together the whole design.
Done in BlitzBasic, the EXE depends on DirectX 8.0 and is pure 2D sprite flipping.

Pictures of Alien VS Hero:

Alien VS Hero Game Title Screen

BlitzBasic Game


The game features a highscore list, multiple levels, End-Gegner and good drum n bass music from Decoder.
Download "Alien VS Hero" and play, some people have said it's fun: Alien_vs_Hero.rar
Sources are also available online