Archive

Archive for July, 2007

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

Film op achtergrond in AIGLX en Glucose-2

July 7th, 2007 Wesley No comments

Het oude xwinwrap programma (van David Reveman, hoofdontwikkelaar compiz) om films af te spelen op je bureaublad werkt ook met AIGLX. Op veel sites lees ik dat het niet mogelijk is om xwinwrap te gebruiken in AIGLX. Maar dat is dus niet helemaal waar.

Het heeft gewoon niet dezelfde mogelijkheden vanwege een gebrek aan OpenGL en Xv ‘forwarding’ in AIGLX, en dus zijn er wel beperkingen:

  • 3D programma’s (screensavers) kunnen niet op een correcte manier geforward worden en zijn dus ook onbruikbaar in xwinwrap
  • Xv kan niet op een correcte manier geforward worden en dus moet X11 gebruikt worden in combinatie met softwarematige video herschaling

Dit xwinwrap commando (no input, opacity 100%, fullscreen, sticky, no focus, skip pager, background) gebruikt mplayer met de X11 video uitvoer driver en herschaalt de video naar de opgegeven resolutie (vf scale). Verder wordt ook de kwaliteit van de softwarematige herschaling verhoogd (sws), de grootte van eventuele ondertitels aangepast (subfont-text-scale) en de ondertiteling naar boven verplaatst (subpos; anders staat de ondertiteling onder mijn kicker paneel)

xwinwrap -ni -o 1.0 -fs -s -st -sp -b -nf — mplayer -wid WID -quiet videofragment.avi -vo x11 -vf scale=1024:768 -subfont-text-scale 2 -subpos 90

PS: Ik heb de ontwikkelaar van Glucose gemaild (Zack Rusin, een Qt/KDE ontwikkelaar) en hij heeft me laten weten dat er gewerkt wordt aan een tweede Glucose branch. Deze tweede branch wordt voornamelijk beheerd door Alan Hourihane.

Glucose wordt de lijm tussen OpenGL, Xv en Aiglx :)

Anyway, hier is de mail (13 juni 2007) van Zack:

right now glucose-2 is the official branch. Alan is the main person working on it at the moment. From what he told me it’s working pretty nicely for him. In about a month I’m planning sit down with him to finish it up and try to get some of the other drivers on it. I wanted to do a little work on Mesa beforehand though (mainly implement robust shading framework for it).

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Composited desktop, Linux

KDE 4: KWin

July 4th, 2007 Wesley No comments

KDE 4 wordt de nieuwe incarnatie van de KDE desktopomgeving. De ontwikkelaars achter KDE zijn druk bezig met het ontwikkelen van deze nieuwe versie. KDE 4 zal bestaan uit verscheidene subprojecten.

De belangrijkste projecten voor KDE 4 zijn: Plasma, Phonon, Solid, Decibel, Kross, Dolphin, Oxygen en een nieuwe versie van KWin.

Vandaag bekijken we wat KWin precies is
en wat de nieuwste ontwikkelingen zijn in KWin.

Wat is KWin?

KWin is de vensterbeheerder van KDE. Een vensterbeheerder (of window manager) is een programma dat voor de vensteromranding zorgt bij programma’s en ervoor zorgt dat je meerdere vensters kan beheren (wisselen tussen vensters).

Vernieuwing

KWin bestaat al sinds de eerste versie van KDE (zonder vensterbeheerder heb je namelijk geen controle over de verschillende vensters), maar in KDE 4 wordt KWin uitgebreid met composite mogelijkheden.

Compowatte?

Een composite window manager of composite vensterbeheerder is een vensterbeheerder die de mogelijkheden van de grafische kaart kan exploiteren om de vensters te genereren en verschillende vensters soepel met elkaar te integreren.

Klinkt op het eerste zicht misschien saai, maar dat is het zeker niet. Met composite mogelijkheden worden er namelijk een heleboel interessante visuele effecten mogelijk.

Denk aan transparante vensters, herschaalde vensters naast elkaar weergeven, vensters verkleuren…

Voorbeelden

Hier zijn een paar Youtube video’s van de huidige stand van zaken met KWin. Opgelet: de video’s zijn ondertussen wel al twee maanden oud

Desktop Grid Effect Desktop Grid Effect * Op een gebruikersvriendelijke manier wisselen van virtueel bureaublad is heel eenvoudig met het Desktop Grid Effect in de nieuwe KWin.
Present Windows Effect Present Windows Effect * Op dezelfde manier kunnen ook alle vensters naast elkaar weergegeven worden. Best handig. Als extraatje kan je filteren op venstertitel.
Zoom Effect Zoom + Magnifier Effect * Een vergrote weergave die je muiscursor volgt, of een virtueel vergrootglas. Zeer handig voor presentaties of voor mensen met een visuele handicap.
Dim Inactive Effect Dim Inactive + Dialog Parent Effect * Inactieve vensters kunnen donkerder gekleurd worden om duidelijk te maken welk venster actief is. Ook dialoogvensters van een ander venster (subvensters) kunnen het onderliggende venster (parent window) verkleuren.
Fall Apart Effect Fall Apart Effect * Vensters kunnen uit elkaar vallen (lijkt op een soort van kleine ontploffing) bij het sluiten van vensters. Want eyecandy is natuurlijk ook nodig

Zoals je kan zien voegen de meeste effecten extra functionaliteit en gebruikersvriendelijkheid toe aan KDE. En dat op een aangename visuele manier.

Hoe zit het dan met Compiz, Beryl en Compiz-Fusion?

Eerst en vooral moet duidelijk worden gemaakt dat alle Beryl ontwikkelaars nu aan het Compiz-Fusion project werken en dat Beryl dus niet meer verder ontwikkeld wordt. Maar ik heb het toch in het subtiteltje laten staan, omdat nog heel veel mensen Beryl kennen, maar niet weten dat het nu eigenlijk Compiz-Fusion is geworden. Lees deze blogpost door als je er meer over wil weten.

Het gebruik van Compiz (of Compiz-Fusion) zal waarschijnlijk nog steeds mogelijk zijn onder KDE 4, maar mensen die liever alle uitgebreide mogelijkheden van KWin blijven gebruiken kunnen nu genieten van de oorspronkelijke KWin, uitgebreid met zijn eigen composite effecten.

De reden dat er werd gekozen voor een uitbreiding van KWin in plaats van Compiz(-Fusion) is omdat het heel moeilijk zou zijn om alle mogelijkheden van KWin in Compiz(-Fusion) te integreren. Composite ondersteuning en bijhorende visuele effecten toevoegen aan KWin is volgens de ontwikkelaars makkelijker en zo zijn ze ook zeker van een stabiele basis (de huidige KWin basis).

Een aantal effecten zullen echter gewoon gekopieerd worden van Compiz(-Fusion).

Plugin systeem

De effecten die KWin gebruikt werken via plugins, net zoals bij Compiz(-Fusion). Hierdoor zal het mogelijk zijn voor externe ontwikkelaars om extra plugins te ontwikkelen en gebruiken in KWin.

Dit zal er wellicht ook voor zorgen dat heel wat Compiz(-Fusion) plugins geport worden naar KWin door externe ontwikkelaars.

Prestaties

Volgens enkele alphatesters van de nieuwe KWin voelt de composite ondersteuning momenteel nog trager aan dan Compiz(-Fusion). Er moet wel gezegd worden dat ook deze informatie meer dan een maand verouderd is en dat KWin nog niet geoptimaliseerd werd voor snelheid (dat komt later nog wel). Ik ben ervan overtuigd dat de uiteindelijke release van KDE 4 een supersnelle KWin met composite ondersteuning zal hebben.

KWin voorziet wel in de mogelijkheid om terug te vallen op XRender wanneer GL niet beschikbaar is en zodoende nog een aantal lichte grafische effecten toe te laten. Als XRender ook niet beschikbaar is, wordt er teruggevallen op standaard X rendering (standaard KWin zonder composite ondersteuning)

Bronnen: KDE Dot News, YouTube

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Composited desktop, KDE, Linux