http://asawicki.info/ Programming, graphics, games, media, C++, Windows, Internet and more...
Unofficial Firmware for Canon PowerShot A610
I have Canon PowerShow A610 digital camera. Today I've found a unofficial, free, powerful firmware for it, as well as other models from Canon. It's called CHDK - Canon Hacker Development Kit. Installation is quite easy and totally safe - it's enought to put the software onto SD card. On Windows this can be done with CardTricks application. The firmware adds some useful features, like:
I recommend this firmware to anyone who owns a Canon camera. Mine now looks like this:
Hakaton - HTML5 Programming Event
Today I was on Hakaton - a full day event organized by Google at Warsaw University of Technology. It was actually a contest in HTML5 programming. I had no previous experience in HTML5, but as a team with two other participants we scored 2nd place out of 17, won nice backpacks and books on web design :)
What I also liked was extensive use of Twitter during the party. #hakaton was second most popular hashtag in Poland today! Some screenshots:
Documentation in Visual CPP
Beginner programmers use only tutorials and are afraid of original documentation of any library. Most of programmers I know who use Visual C++ - even advanced ones - search for functions and classes documentation in Google, always being pointed to online version of MSDN Library. That's probably why noone told me about new Visual Studio documentation for such a long time.
But I can't imagine coding without having documentation for every library I use installed offline in my system and opened most of the time. For WinAPI, .NET, C and C++ standard libraries I used MSDN Library for Visual Studio 2008 SP1 - a free application that is available for download from Microsoft website in form of a DVD ISO image. But it's a 2008 version. I checked for some new version many times and couldn't find one.
Now I know that Microsoft changed this offline MSDN Library to a new help available in Visual Studio 2010, including Express edition. It can be installed by selecting Help / Manage Help Settings. A dialog box allows you to install, remove and update different parts of huge library (mine takes 3 GB of hard disk and it's located in C:\Users\All Users\Microsoft\HelpLibrary)
Files are downloaded, installed and after that, you can use Microsoft Help Viewer 1.1 to browse this documentation - hierarchical Contents, flat Index (I think it's the most useful), Favorites and full-text search. This help browser works faster than the old one (from MSDN Library). I recommend this method to anyone who code in Visual C++/C#/whatever.
Pointing to DLL Files in Visual CPP
When coding in Visual C++, we sometimes need to use some DLL libraries like FMOD, wxWidgets, Intel TBB etc. We download or build the library, setup directories to include and library files, finally #include <header.h>, #pragma comment(lib, "library.lib"), compile, run and...
Certainly our program also needs DLL file at runtime. Sure we have to attach it to the program when we distribute it, but do we really need to copy all these libraries to the Debug and Release subdirectories in our project? For a project run from Visual C++ to find required DLL files, they must be placed either in:
or in the PATH environmental variable. That's an option I've discovered yesterday. To use it in Visual C++, navigate to project properties / Configuration Properties / Debugging / Environment and set it to something like: PATH=$(PATH)$;C:\my_libraries\library_1\DLL_dir
If you do it correctly, your program launched from Visual C++ (with or without debugger - F5 or Ctrl+F5) will now be able to find required DLL libraries without need to copy them to your project directory.
Anomaly: Warzone Earth - a game from 11 bit studios
I had a wonderful time working for Metropolis Software, but the studio was closed so we didn't finish our FPS shooter - They. But then our bosses and some of the employees formed new company - 11 bit studios, developed new technology and today is the release date of their new game: Anomaly: Warzone Earth. It's kind of "inversed tower defence", where you lead a squad through the streets of cities and fight with towers. I've done some outsource programming for this project and also tested it. The game is available on Steam for PC and Mac platforms.
This entry won't be about programming, but still geeky :) I've recently bought a digital clock with projector and I like:
I like to keep an eye on all important parameters of my "system". In Windows, I just install Samurize and setup my config to show graph and current value of: CPU usage, physical memory load, network download/upload, disk read/write bytes/s and system IO bytes/s.
Under Linux/Gnome, I use System Monitor panel, which does similar job.
Similarly, I like to see "parameters" of my environment in real life :) The clock shows current time, date, day of week, as well as temperature and humidity. The equaliser visible at the bottom is a history of temperature difference from previous hours. Projector displays current time on the ceiling or wall, making it visible at night.
There are many kinds of such clocks. One should pay attention to whether it is powered by batteries only, turns on the display highlighting and projector only after pressing some button, or - just like mine - has a power supply and has the highlighting and projector on all the time.
Temple of ZUO - Our Entry from IGK Compo
Here is our entry from IGK Compo. It was a game development competition at IGK'8-2011 conference where we had to develop a game in teams of up to 4 people in 7.5 hours. The topic this year was "Temple Guardian". We scored 2nd place out of 12. Here is our game - "Temple of ZUO" - with Windows binary and source code:
This year's topic could possibly mean a game genre also called Tower Defence, but we interpreted it more directly - that we have some temple and someone who guards it. Our temple is evil and the guardian is a monster with tentacles. Mobs come out from spawn points. Player controls the monster that spreads its tentacles from the temple by clicking left mouse button and dragging the cursor. Player wins when the mana bar at the top is filled by drinking water from lakes across the map. Player loses when mobs take control of all the seals across the map. Tentacles can destroy mobs by hitting them with endings while mobs can also destroy tentacles by attacking them somewhere in the middle. Tentacles can be quickly collapsed with Space key. The number of available tentacles is increasing with the number of mobs destroyed, but mob spawn rate also increses.
Our team this year - Rzeźnicy Inc. - looked just like the year before: Krzysztof Kluczek (Krzysiek K.), Karol Kuczmarski (Xion), Grzegorz Stępnik (gemGreg) and me - Adam Sawicki (Reg). We coded in Visual C++, using Direct3D 9 and FMOD library. The foundation of our code was a simple framework by Krzysiek K. and the core of gameplay is certainly the physics of tentacles, coded by Krzysiek K. All the graphics have beed created during the compo by gemGreg. Music is: Lou Gaioto - GreensAuCarneVale - a free mp3 found on opsound.com.
Fullscreen mode, screen resolution and music volume can be tweaked in config.cfg file. Levels can be switched with F1..F6 keyboard shortcut.