Tuesday, July 11, 2006

Gamepark32



Το περασμένο καλοκαίρι δανείστικα μια φορητή κονσόλα για developing. Το Gamepark32. Δεν θα το έχετε ίσως ακούσει. Είναι Κορεάτικη και πολύ πιο ισχυρή από το Gameboy Advance αλλά ίσως και το καινούριο DS. Αν εξαιρέσουμε ότι δεν έχει τα τσιπάκια γραφικών των άλλων δυο με τα special κόλπα για 2d και 3d. Αλλά με τέτοια ισχύ (ARM 100Mhz και overclocked μέχρι 166, 8MB ram, 320*240*16bpp, SMC Card έως και 128MB) και λίγο καλό προγραμματισμό πολλά είναι εφικτά.

Το αγάπησα όμως επειδή ήταν αρκετά ανοιχτό για τους προγραμματιστές. Η λογική της Gamepark ήταν "Δώσε developer tools, documentation, USB cable, υποστήριξη, κλπ. στους χρήστες και ας τους ελεύθερα να πέσουν με τα μούτρα στο homebrew developing ώστε να αποκτήσει κοινό το μηχάνημα και να διαφημιστεί". Λογική αντιδιαμετρικά αντίθετη από αυτή της Nintendo. Homebrew όρος, εννοεί του σπιτιού, χομπίστικη δουλειά από καμένα geeks χωρίς υλικό αντίκρισμα, γκαραζιά! (σκέφτομαι την κορίλλα του πρώτου apple εδώ πέρα). Και η λεγόμενη homebrew scene έβγαλε freeware παιχνίδια και εφαρμογές, ports από emulators και παιχνίδια του PC. Ειδικά το τελευταίο είναι πολύ εντυπωσιακό για την κονσόλα. Ποιός θα το περίμενε ότι σε ένα φορητό handheld που μοιάζει με το Gameboy Advance θα μπορούσες να τρέξεις Doom, Quake, ScummVM ή τα παλιά παιχνίδια ή demos από CPC, C64, Spectrum, AtariST, NES, gameboy, Mega Drive, Master System, MAME? Στην οθόνη του φορητού! Αυτά έδειχνα σε φίλους μου και ψηνόντουσαν να αγοράσουν και αυτοί ένα..

Και όμως αυτό το μηχάνημα δεν πέτυχε. Ενώ δημιούργησε μια πολύ καλή homebrew community, να το marketing, να οι λάθος κινήσεις της εταιρίας, να το ότι μάλλον δεν υπήρχαν καλοί εμπορικοί τίτλοι για το μηχάνημα (Εγώ δεν ενδιαφέρθηκα να αγοράσω ποτέ κανένα γιατί είχα τα homebrew τζαμπέ! Λες για αυτό;) είχε ως αποτέλεσμα το μηχάνημα να μην κυριαρχήσει. Πάντως η εταιρία καλά κρατεί και έχει σχεδόν ένα εξάμηνο που κυκλοφόρησε τον ακόλουθο του μηχανήματος, το GP2X. Το μηχάνημα είναι πολύ πιο ισχυρό, είναι βασισμένο στο Linux και την SDL, επιτέλους παίζει και σωστά DivX (και το παλιό έπαιζε αλλά με βουντού (όχι την κάρτα :)), γρήγορο MAME επιτέλους, αργούς αλλά υποσχόμενους PC, Amiga και PSX emulators, επίσης έχουν εξαφανιστεί πολλά από τα εκνευριστικά για τους developers λάθη του παλιού hardware αλλά προστέθηκαν καινούρια και ανάγκη για πολλαπλά firmware updates. Το δανείστικα και αυτό και είναι πραγματικά απίστευτο! (ακόμα και μαζί με τα σπαστικά λάθη και ατέλιες στην σχεδίαση που προσωπικά δεν μου άρεσαν) Δύο παράλληλους επεξαργαστές ARM στα 200Mhz ο καθένας, 64MB Ram, παίρνει SD Cards (η δικιά μου είναι 512MB αλλά μπορεί να πάρει μέχρι και 4GB!), έχει κάποια hardware acceleration functions για 2d graphics αυτήν τη φορά, και είναι εντελώς Linuxάδικο και πιο ανοικτό. Ένας φίλος μου πορώθηκε στην καφετέρια με αυτό και κούραζε το sterm (port του xterm σε SDL) με τον σπαστικό χειρισμό με το pad και τα buttons. Εεε, πορώθηκε και παρήγγειλε ένα για αυτόν και για το φίλο του! Επίσης δεν σας είπα στην ιστορία ότι το GP2X στην ουσία είναι της εταιρίας Gamepark Holdings η οποία διασπάστηκε από την Gamepark επειδή ορισμένοι δεν τα βρήκαν. Ουσιαστικά η Gamepark έβγαλε το XGP με 3d acceleration και κλειστή αρχιτεκτονική το οποίο μάλλον προορίζεται να είναι ανταγωνιστής του PSP, ενώ οι προγραμματιστές που έφυγαν ήθελαν να συνεχίσουν την ανοιχτή αρχιτεκτονική και στο καινούριο handheld. Σε αυτό πέρασα και εγώ, όπου πάει η χομπίστικη homebrew scene! Ουσιαστικά για το XGP δεν ξέρω τι παίζει, αν υπάρχει σκηνή εκεί, δεν είδα κανα νέο. Όλα τα καλά βγαίνουν για το GP2X πια. Και φυσικά το GP32 πέθανε!


Έτσι και εγώ, επειδή πήρα το καινούριο στα χέρια μου αποφάσισα να τελειώνω με το demo που είχα ξεκινήσει να γράφω στο παλιό από το προηγούμενο καλοκαίρι και τόσο λαχταρούσα να κάνω release. Έχει 3-4 μέρες που βγήκε σε sites της demoscene (www.pouet.net) ή της Gamepark community (www.gp32x.com) και είμαι πολύ ευχαριστημένος με τα σχόλια. Αν και υστερεί σε πολλά σημεία, ίσως είναι μια από τις λίγες φορές που ξαναζώ αυτό το συναίσθημα του να κάνω release μια μεγάλη μου δουλειά και να χαλαρώνω μετά από μέρες coding διαβάζοντας τα comments στα ενλόγω sites. Πρώτη φορά λαμβάνω τόσα θετικά σχόλια στο Pouet και ειδικά να φτάσει ένα demo μου δεύτερο στα top του μήνα! Μπορώ να είμαι ιδιαίτερα χαρούμενος για αυτό :)

Το demo γράφτηκε σε C και χρησιμοποιεί το official SDK της Gamepark. Για να μην κουράζομαι με τη διαδικασία compile->σύρε καλώδιο USB->transfer->boot GP32->τρέξε στο menu->ααα δεν δουλεύει, πάμε πάλι πίσω στον PC να δούμε τις φταίει,.. έφτιαξα και ένα SDL port στις αρχές του developing, κάτι σαν wrapper των functions του Gamepark SDK, ώστε να γράφω κώδικα και να τον τρέχω στον PC σε κάτι σαν simulation του πως θα φαίνεται αντίστοιχα στο GP32. Και αφού δουλεύουν όλα, αντιγράφω τον κώδικα στο Gamepark (με ορισμένες αλλαγές που έκανα με το χέρι όμως, μια και δεν είχα αντιγράψει τέλεια την λογική όλων των functions και για άλλους λόγους. Not fully cross compilation δηλ.) και μάλλον θα δουλεύει και εκεί (είχε και να μην δουλεύει ;P). Το καλό της υπόθεσης έτσι όμως, είναι ότι είχα και PC port για ταυτόχρονο release (πολλοί λίγοι sceners έχουν GP32, οπότε οι περισσότεροι θα ήθελαν να το δουν στον PC, άσε που δεν υπάρχει και σωστός emulator). Και μια και είχα το PC port έτοιμο, έβγαλα βασισμένος σε αυτό και ένα βιαστικό port για το καινούριο GP2X ενώ ο φίλος μου έσυρε Linux32/64bit, FreeBSD και SGI Iris ports παρακαλώ! (Τα καλά του opensource θα πει ;). Ο κώδικας είναι opensource (πολιτική του demogroup Mindlapse (mindlapse.demoscene.gr) under which έγινε release το demo) οπότε όποιος γουστάρει να το κάνει port για οποιαδήποτε άλλη πλατφόρμα, ελεύθερα! (Απλώς στείλτε μου ένα μήνυμα να ξέρω)

Με το Gamepark32 είχα την καλύτερες μου στιγμές όσον αφορά το satisfaction του προγραμματιστή και της εμπειρίας που απέκτισα. Έφτιαξα επιτέλους την πρώτη μου software 3d engine (πρωτύτερα κούραζα κυρίως 2d graphics), δούλεψα σε ένα limited περιβάλλον που θυμίζει 486/Pentium δίχως FPU, δοκίμασα διάφορα optimizations και είδα πόσο τον πίνεις με τόσο μικρή cache, ακόμα και με τα makefiles και τα toolchains του gcc κουράστικα και εξεικιώθηκα (Με το GP2X προβλέπεται να βάλω και Linux ;))). Τρομερή εμπειρία με θετικό αποτέλεσμα. Η χαρά του achievement και ο κόσμος που πέρασε καλά για 5 λεπτά βλέποντας το demo σου που το έφτιαχνες για ένα χρόνο :) Άντε και εις ανώτερα με το GP2X. Προς το παρόν θέλω να ξεκουραστώ. Θα ρίξω μια ματιά στα σχόλια, θα προσπαθήσω να απαντήσω στα numerous emails που πήρα με τα συγχαρητήρια και requests για συνεργασία/ερωτήσεις. Θα αγναντέψω στο παρελθόν, να αφουγκραστώ την εξέλιξη μου. Ή απλά θα πάω να κοιμηθώ και θα σας αφήσω στην ησυχία..

(Στην τελευταία φωτογραφία το τελευταίο part του demo μου με την Jennifer Love Hewitt, τρελό inspiration για τους καμμένους coder σαν κι εμένα, συν ένα όμορφο 3d flower να κάνει κυματάκια στο νερό ^_^)

Link για το demo (κατεβάστε την PC version αν δεν έχετε Gamepark console (χάνετε!))

No comments:

Locations of visitors to this page