Archive

Archive for the ‘C++’ Category

Slideflow: Qt4 Slideshow Application (alpha preview)

August 1st, 2007 Wesley 13 comments

Slideflow wordt een nieuw open source cross-platform slideshow programma.

Ondersteunde besturingssystemen: Windows XP/Vista, Linux, Mac OS X
Mogelijk ondersteund, maar niet getest: andere Windows versies, alle BSD varianten, Solaris, andere X11-based systemen

update: drag and drop support toegevoegd en screenshot + screencast vernieuwd

Slideflow

Klik hier voor een meer uitgebreide Slideflow demonstratie op YouTube

Ik ben bezig geweest met nieuwe mogelijkheden in Qt 4 waarmee mooie effecten te programmeren zijn zonder lowlevel kennis. Qt regelt zelf XRender (en indien gewenst OpenGL) acceleratie en met behulp van het nieuwe Animation Framework in Qt 4 is het niet moeilijk om mooie effecten te bereiken.

Slideflow is een (open source, cross-platform) slideshow programma dat door een winkel gebruikt zal worden om producten met uitleg op een moderne grafische manier weer te geven op een apart VGA scherm.

Ik ben gisteravond en deze namiddag/avond bezig geweest met de eerste stappen van het programma.

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)

GBA programming in Linux

July 12th, 2007 Wesley 4 comments

GBA Rom

Mijn eerste GBA rom aan de linkerkant :) Nouja, afgekeken van een voorbeeldbestand…

Gisterenavond wou ik eens proberen om iets te programmeren voor mijn oude Game Boy Advance. Na wat rondgezocht te hebben bleek het niet eens zo moeilijk te zijn. Er is slechts weinig kennis nodig van ARM assembler. Programma’s kunnen gewoon in C/C++ worden geschreven en trage stukken nadien eventueel geoptimaliseerd met assembler.

Wel ga ik me moeten inwerken in het registersysteem van de Game Boy Advance.

Het was niet moeilijk om een cross compiler (compiler die uitvoerbare code genereert voor een ander platform dan hetgeen waarop de compiler draait) te compileren en gebruiken.

Mijn gecompileerd testproject werkte op emulators (zoals mednafen of visualboyadvance) maar het niet kon worden ingelezen door mijn EZF Advance client software! (software die ik gebruik om roms te uploaden naar een Flashkaart zodat ik de roms ook op mijn echte Game Boy Advance kan testen)
Screenshot van het probleem

Vandaag ben ik dus even bezig geweest met het uitzoeken van het probleem. De rom header moest gefixt worden en nog allerlei zaken. Ik had een perl script gevonden die alles voor me zou gefixt hebben, en de headers leken daarna inderdaad in orde, maar het programma wou nog steeds niet importeren in EZF Advance.

Toen vond ik devkitPro/devkitARM. Een heel pakket met alles wat ik nodig had. Heel veel GBA libs, voorbeelden, een cross compiler, header-fix-tool, etc.! Dus dat maar eens geïnstalleerd en een nieuw project gecompileerd op basis van één van de voorbeelden. En zie daar. Het draait nu ook op mijn Game Boy Advance (hardware)! Ik zou er een foto van hebben genomen, maar ik heb geen digitale camera :)

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Assembler, C, C++, GBA, Hardware, Programming

Pong spelletje in SDL

July 11th, 2007 Wesley 4 comments

Simple Pong Game in SDL

Ik ben de laatste dagen bezig met SDL (of Simple DirectMedia Layer) en als testprojectje heb ik een klein Pong spelletje geschreven. Ik denk echter niet dat ik dit spel nog verder ga afwerken (hoewel er nog veel te verbeteren valt).

Credits:

  • Code/Graphics: ikzelf
  • Geluidseffecten: cleanus soundpack
  • Muziek: Jogeir Liljedahl

Enkele leuke details:

  • Programmeertaal: C++ met libSDL
  • Achtergrond beweegt dynamisch
  • Infoboxen hebben ware alpha compositing dankzij sdl_gfx
  • Pong balletje wordt gerenderd en antialiased door sdl_gfx
  • Rechtse speler is een AI bot (computergestuurd)
  • Geluidspanning om geluid te positioneren (links vs rechts)

Simple Pong
Oooeh! Bijna gemist!
Simple Pong
Pff, ik kan wel winnen van die AI bot hoor ;)

Meer screenshots:
Game over! Gewonnen!

Sourcecode (GPL v2 licentie)

(build dependencies: recente versie van libsdl-dev, libsdl-mixer-dev, libsdl-gfx-dev, libsdl-image-dev, libsdl-ttf-dev)

PS: Linux gebruikers kunnen ook proberen om het spel te runnen zonder compilatie. Zou moeten werken op i386 indien de benodigde libsdl pakketten zijn geinstalleerd. Getest op Ubuntu Feisty Fawn. Windows gebruikers (en andere ondersteunde platformen) moeten sowieso hun eigen binaries compileren, want ik heb geen tijd/zin gehad om het spel te compileren voor Windows.

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: C++, Open Source, Programming, SDL

PolyKrypt 1.0.2 met Morse Decryptie

February 23rd, 2007 Wesley No comments

Mensen die met internet security bezig zijn kennen Rhican misschien wel. Rhican is één van de enige personen die alle security challenges op de security website net-force.nl heeft opgelost. Per toeval kwam ik Rhican gisteren tegen op het #qt IRC kanaal omdat hij blijkbaar tegenwoordig ook programma’s schrijft met Qt4/C++.

Hij heeft een programma (PolyKrypt) geschreven waarmee je allerlei zaken kan encrypten en decrypten. Het programma is gebaseerd op het Polycrypt (met een c) programma voor Windows van Goliath team.

De versie van Rhican werkt echter op zowat elk besturingssysteem en is open source. Ik heb van de gelegenheid gebruik gemaakt om de ontbrekende morse decryptie functie te schrijven voor PolyKrypt en sinds versie 1.0.2 is PolyKrypt dus beschikbaar met een Morse Decryptie functie :)

Voor de geïnteresseerden, dit is de morse decryptie functie:

// morse decryption algorithm by wesley@ubuntu.com
// based on rhican's morse encryption algorithm
void polyKryptMainWindow::morseDecrypt() {
    char * morse[]={"A",".-",    "B","-...",   "C","-.-.",  "D","-..",   "E",".",     "F","..-.",   "G","--.",
            "H","....",  "I","..",     "J",".---",  "K","-.-",   "L",".-..",  "M","--" ,    "U","..-",
            "N","-.",    "O","---",    "P",".--.",  "Q","--.-",  "R",".-.",   "S","...",    "T","-",
            "V","...-",  "W",".--",    "X","-..-",  "Y","-.--",  "Z","--..",  "0","-----",  "1",".----",
            "2","..---", "3","...--",  "4","....-", "5",".....", "6","-....", "7","--...",  "8","---..",
            "9","----.", ".",".-.-.-", ",","--..--"};

    QString padding="/";
    QMap<QString,char> morsemap;
    for (int i=0;i<38;++i)
        morsemap[morse[(i<<1)+1]]=*morse[i<<1];

    QString plain = textInMorse->toPlainText();
    QStringList wordMorse = plain.split(" ");
    QString cipher = "";
    QString word;
    QStringList lettersMorse;
    QString letter;
    foreach(word, wordMorse)
    {
        lettersMorse = word.split(padding);
        foreach(letter, lettersMorse)
        {
            if (letter.length()==0)
                cipher+=letter;
            else
                cipher+=morsemap[letter];
        }
        cipher+=" ";
    }
    textOutMorse->setPlainText(cipher);
}

Het programma en de broncode van het programma kan je downloaden op de website van Rhican.

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: C++, Programming, Qt, Security