I have always had a great passion for computer programming and I have produced a huge amount of software and documentation unrelated to my job, which is software engineering by the way. This page is dedicated to my programming as a hobbist and contains (a small) part of my production.
This is not a place for fully polished and tested software, as it often happens that an incomplete prototype is good enough for me to prove a new idea or concept. Yet, I think the overall quality of the code is very satisfying and many ideas still interesting after several years.
All or almost all of this software is licensed under the GNU General Public License, I hope you enjoy it.
Kiwi is a chess engine compatible with Winboard interfaces. It is currently playing and trying to defend its feathers in several tournaments, and will certainly appreciate your good wishes and support. Download this nice bird and a lot more in the computer chess page!
Tickle is a multiple game emulator as well as a platform for developing games and similar applications. It is the latest (and probably the last, as I'll keep extending it rather than writing new ones from scratch) of my emulation projects and shares the same goal of providing simple and easy to undestand code. Tickle is currently available as a Windows application, but I'll soon start working on a Linux front-end (the base code is already portable). Get more info, code and screenshots in the Tickle pages!
March 15, 2004. The Space Invaders soundboard pages collect information about the sound circuits in the Space Invaders hardware. The goal is to emulate all the sounds in software, possibly using a high-level approach that doesn't require emulating each and every discrete component. So far I have emulated six effects out of ten (the simplest ones, I'm afraid). This means that there are only four effects left! I would really appreciate every bit of information you can provide on these circuits, as it's starting to get a little tough for me alone...
You can hear the sounds in action from within my emulator Tickle. In version 0.90 the "flash" effect is also simulated (meaning a couple of parameters had to be hand tuned), so you can play an entire game without having to use sampled sounds... you won't score much in that game though! ;-)
Note: as of April 17 I have received only a few interesting mails but unfortunately no new information... come on... some of you must know something!!!
LCS is a differencing program for source files. It is based on a very simple idea, which I have then developed into a full application as a study for a better program to come. In fact as of version 1.1 (beta) it has already become quite interesting with features like user-extensible syntax highlighting and a builtin full text editor. More info and downloads in the LCS page.
I have started working on a series of notes about programming best practices. This work is still at an early stage but it can already be sampled here. In fact I would be very interested to know your opinion so please drop me a message and let me know.
Taskbar and icons in Windows 95. This article has been published in Computer Programming (an Italian magazine) in February 1996. It shows how to add and manage a small icon in the taskbar "tray" area (the part closer to the clock). It also shows an undocumented technique to do the same for 16 bit programs. Taskbar e icone in Windows 95. Questo articolo è stato pubblicato da Computer Programming nel n. 44 di Febbraio 1996 e spiega come inserire e gestire un'icona nella "tray area" della taskbar (la zona vicina all'orologio). Viene inoltre illustrata una tecnica non documentata per ottenere lo stesso risultato da programmi a 16 bit. Disponibile anche in formato PDF.
Hook, subclassing and... WordPad. This article has been published in Computer Programming (an Italian magazine) in April 1996. It shows how to inject a DLL into some other process and use it to modifying the behavior of an application. As an example, the WPX program runs WordPad and dinamically modifies its interface adding a new menu (complete with help in the status bar). The new menu also adds new features to WordPad, such as changing the background color or getting information about the text. Hook, subclassing e... WordPad. Questo articolo è stato pubblicato nel n. 46 di Computer Programming (Aprile 1996) e dimostra come sia possibile iniettare una DLL all'interno di un processo e usarla per modificare il comportamento di un'applicazione. Come esempio viene fornito il programma WPX che lancia WordPad e ne modifica dinamicamente l'interfaccia, aggiungendo un menu completo di help. A sua volta il menu estende le funzionalità di WordPad permettendo ad esempio di cambiare il colore di sfondo e di ottenere informazioni sul testo. Disponibile anche in formato PDF.
A couple of very old articles written for SBDI... on the (Autodesk Animator) FLIC file format and on the audio CDs.
FileLock is a very simple utility that can be used to lock files. It was written to test the behavior of other programs when they try to access a locked file. Download the Delphi source files or the compiled executable (for Windows, 194K).
Metronome is, quite unsurprisingly, a metronome. It has the few basic features and can use a MIDI synth for output, or just the system speaker. Download the Delphi source files or the standalone installer (for Windows, 553K).
Yawn is a simple but fun game with dice. It is a demo for the Delphi TDice component (also included in the source files) that I wrote to show a friend how to write a graphic component in Delphi (we are talking the first Delphi here, and Windows 3.1, but the component still works). Download the Delphi source files or the compiled executable (for Windows, 197K). This program has been also ported to Java (sources are 9K zipped) and it is possible to play it online.
Id3tag is an ID3 tag (i.e. MP3 information) editor that I wrote a few years ago because I could not find an application with the features I needed, particularly setting properties of several files at once and guessing properties from the file name. It has served me well ever since. Here are the Delphi source files or the standalone installer (for Windows, 609K). I have also ported the sources to Kylix 3 (Open Edition, which is free to download and use for GPL applications) and compiled the program under Linux. Binaries are not available though, just the Kylix source files.
Baldur's Gate Dice Roller. I love computer RPG's. When Baldur's Gate was released in 1999 I rushed to grab a copy, installed it and immediately started rolling those virtual dice in order to get good stats for my character. After two hours of continuous clicking I finally got a 95, a very good score indeed! But fate was not favorable that day, as in the excitement I bumped the manual, which fell on the ESC key, which in turn rejected the score! I could not believe it, I had to start again and my hand was already aching like hell. I decided to tackle the problem in another way, and in a way that could not be considered cheating. So I prepared myself a long coffee and started hacking at the keyboard. In a few hours, the program reached its final and stable form. It did exactly what I had initially done: keep rolling the dice until a good score is reached. And it plays by the rules: it moves the mouse, clicks around and so on... just like me! That night I went out to the pub and on coming back a very nice 99 was waiting for me on the screen... I was going to kick ass really bad with my mage! I am publishing this program because I think some of the techniques are interesting, for example the sort of "pattern recognition" used to read the score back from the game window. Anyway, here's the Delphi source code.
SIDE is a Space Invaders emulator that is written for those interested in how an emulator works. It has a simple architecture and is fully documented, from high-level design issues down to source code classes and functions. I spent a lot of time on this project, but it was all in great fun. Today, I still run the emulator every now and then, and enjoy one of the greatest games ever. You can find all the documentation, source code, original sound samples and a precompiled Windows version in the SIDE pages.
PIE is the second project in the series started by SIDE. It is a Pacman emulator that is also written with clarity and simplicity in mind from the start. It features the same architecture of SIDE but of course adds more interesting emulation (Z80 CPU, color video, real-time sound) and some nice additional features, such as for example the ability of saving and restoring the game at any time. You can find all the info you ever need on Pacman and more in the PIE pages.
I have a large collection of software that I wrote many, many years ago. For me these programs have a great affective and "historical" value. There are many 16-bit DOS program there, for the most part written at night using Pascal and Assembly language. As I explore old and lost directories on my disk, I'll put what I find in the software from the old days page.
Highlights include ModeX, a graphics library written in Assembly for the 286 and Dr. Track, which to my knowledge was the very first player and editor of Amiga MOD files for DOS (the absolutely first program I can remember was the mythical SoundTracker, but it was only a player and lacked many of the features of Dr. Track, which for example could play a MOD in the background while Windows 3.1 was running at almost full speed...).
Novità!!! Serve un'idea per una costante da usare come "numero magico" o "firma" da qualche parte? Nessun problema... ho compilato una lista di parole italiane che si possono scrivere come numeri esadecimali! Ecco qui la lista delle esaparole...
May 16, 2004. On the performance of Targa decoders... A couple of weeks ago I have read an article about a Targa decoder written in Erlang and how fast it performed: 5.68 images/second on a 333 MHz Pentium II (running Windows ME) and 66 images/second on a superfast 3 GHz Pentium 4 with an 800 MHz front-end bus (running Windows XP). Well today I decided to have a go at it: I resumed some stuff I wrote several years ago and quickly assembled a benchmark in Delphi using a 512x512 32-bit picture (1 Mb). With no optimizations I got 70 images/second on my really old 700 MHz Athlon (running Windows 2000), including reading each image from disk (though it gets obviously cached by the operating system) and allocating/freeing the image buffer in memory. Hey, that's faster than the 3 GHz monster... :-)
Copyright (c) 2003-2004,2005 Alessandro Scotti. All rights reserved.
|Home :: Computer Programming|