Βήμα 13ο Η μεταγλώττιση του κώδικα και η εκτέλεση στο GameBoy.
Χριστός Ανέστη! Υγεία και ευτυχία σε όλους!
Φτάσαμε λοιπόν στο πολυπόθητο σημείο. Στο σημείο δηλαδή που θα μεταγλωτίσσουμε
(compile) τον κώδικα και θα τον εκτελέσουμε στο GameBoy Advance.
Είναι προτιμότερο να χρησιμοποιούμε έναν editor για να γράφουμε τον κώδικα μας, επειδή πέρα από τον κατάλληλο χρωματισμό των εντολών που κάνει, μας βοηθάει και σε άλλα πράγματα. Για τα Windows δύο πολύ καλοί editors για τη συγγραφή κώδικα είναι ο
Notepad++ και ο
Programmers Notepad. Προσωπικά χρησιμοποιώ το δεύτερο, αλλά και οι δύο είναι πολύ καλοί.
Αφού λοιπόν γράψαμε τον κώδικά μας στον editor, σειρά έχει να τον αποθηκεύσουμε κάπου στον σκληρό μας δίσκο, δίνοντάς του ένα όνομα και την κατάληξη .c, αφού πρόκειται για κώδικα γραμμένο στην γλώσσα προγραμματισμού C. Είναι προτιμότερο να τον αποθηκεύσουμε σε έναν ξεχωριστό κατάλογο
(κατα προτίμηση με το ίδιο όνομα όπως του κώδικά μας).
Ας υποθέσουμε λοιπόν ότι γράψαμε τον κώδικα του προηγούμενου post, όπως φαίνεται στην εικόνα
Το αποθήκευσα με το όνομα pixel.c, αφού αυτό που κάνει είναι να φωτίζει με λευκό χρώμα, ένα μόνο pixel στο κέντρο της οθόνης. Όπως είπα καλό είναι να το αποθηκεύσουμε σε έναν κατάλογο με το ίδιο όνομα
(εδώ pixel), αλλά φυσικά αυτό δεν είναι απαραίτητο. Βοηθάει όμως πάρα πολύ για να μην μπερδευόμαστε με το αρχείο μεταγλώττισης που θα φτιάξουμε στη συνέχεια. Παρόλο αυτά εγώ το αποθήκευσα κάτω από έναν κατάλογο με το όνομα gba_examples, όπως φαίνεται στην επόμενη εικόνα
Το επόμενο βήμα είναι να φτιάξουμε το αρχείο μεταγλώττισης
(make), πού όταν θα το εκτελούμε θα παράγει τον εκτελέσιμο κώδικα που θα πρέπει να φορτώσουμε στο GameBoy. Το αρχείο αυτό είναι ένα αρχείο batch
(με κατάληξη .bat) που εκτελείται από το command prompt των Windows, όταν κάνουμε διπλό κλικ σε αυτό... Αυτό το αρχείο τρέχει όλα τα απαραίτητα προγράμματα
(που εγκαταστήσαμε στα προηγούμενα βήματα και με την σωστή σειρά) ώστε να μεταγλωττιστεί ο κώδικάς μας
Και αυτό το αρχείο μπορούμε να το γράψουμε στον ίδιο editor που γράψαμε και τον κώδικα της C
(εδώ το Programmers Notepad) και φαίνεται παρακάτω
Κτυπώ δυνατά:
@echo off
set name=pixel
set path=C:\files\devkitadv\bin;%path%
IF EXIST "%CD%\%name%.gba" (
del "%CD%\%name%.gba"
)
gcc -o "%CD%\%name%.elf" "%CD%\%name%.c"
IF EXIST "%CD%\%name%.elf" (
objcopy -O binary "%CD%\%name%.elf" "%CD%\%name%.gba"
gbafix "%CD%\%name%.gba"
del "%CD%\%name%.elf"
)
pause
και ενα screenshot
Στη συνέχεια αποθηκεύουμε αυτό το αρχείο με το όνομα make.bat
(προσοχή στην κατάληξη, αλλιώς τα Windows δε θα το αναγνωρίζουν σωστά) στον ίδιο φάκελο με το αρχείο του κώδικά μας, όπως στην εικόνα
Αυτό ήταν! Το μόνο που έχουμε να κάνουμε είναι διπλό κλικ στο αρχείο make.bat και ο κώδικας θα μεταγλωτιστεί. Ένα παράθυρο θα βγει που θα πρέπει να μας πληροφορεί με το μήνυμα Rom fixed!, όπως στην εικόνα
Αν κοιτάξουμε τώρα στον κατάλογο, θα πρέπει να έχει δημιουργηθεί ένα καινούργιο αρχείο με το ίδιο όνομα με αυτό του κώδικα, αλλά με την κατάληξη .gba. Πρόκειται για τον μεταγλωτισμένο κώδικα μας, που είναι έτοιμος να τον εκτελέσουμε στο GameBoy μας.
Πριν όμως, μπορούμε αν θέλουμε, να το δοκιμάσουμε στον εξομοιωτή που εγκαταστήσαμε σε προηγούμενο βήμα. Αυτό είναι πολύ βολικό όταν κάνουμε δοκιμές στον κώδικά μας, ώστε να μην χρειάζεται κάθε φορά να τον μεταφέρουμε στο GameBoy.
Με διπλό κλικ πάνω στο .gba αρχείο, θα τρέξει ο εξομοιωτής και αφού φορτώσει τον κώδικά μας θα τον εκτελέσει, όπως στην εικόνα.
Όπως βλέπουμε δουλεύει!!! Το κεντρικό pixel της οθόνης άναψε!
Και τώρα η πολυπόθυτη στιγμή... Η εκτέλεση του κώδικα στο GameBoy.
Τα πράγματα δε θα μπορούσαν να είναι απλούστερα. Απλά αντιγράφουμε το αρχείο με την κατάληξη .gba σε μια κάρτα sd
(χρησιμοποιώντας έναν card reader). Μετά την κάρτα sd την συνδέουμε στην
Supercard Mini SD Adapter
Συνδέουμε την Supercard στο GameBoy και το ανοίγουμε. To GameBoy με τη βοήθεια της Supercard, θα διαβάσει την κάρτα sd και σε μια λίστα θα μας δείξει όλα τα αρχεία εκτελέσιμου κώδικα που έχουμε αποθηκεύσει σε αυτήν
Στην περίπτωσή μας μόνο το pixle.gba υπάρχει. Το επιλέγουμε με τα βέλη
(αν δεν είναι ήδη επιλεγμένο) και πατάμε το πλήκτρο Α στο GameBoy και θα δούμε αμέσως τον κώδικά μας να εκτελείται!!!
Σημείωση: Επειδή ο κώδιακας αναει ένα μόνο pixel στην οθόνη του GmaeBoy δεν ήταν εύκολο να το βγάλω φωτογραφία για να σας το δείξω... Ωστόσο, πιστέψτε με...δουλεύει!!!
Λίγα λόγια για το αρχείο make.bat: Εδώ πρέπει να σας πω ότι κάθε φορά που γράφουμε έναν καινούργιο κώδικα για το GameBoy, θα πρέπει να γράφουμε και το αρχείο make.bat. Ωστόσο, έτσι όπως είναι γραμμένο το make.bat, κάνει τη διαδικασία πολύ ευκολη. Απλά κάνουμε copy-paste και το μόνο που χρειάζεται να αλλάζουμε είναι το όνομα στη δεύτερη εντολή
(δηλαδή σε αυτήν που λέει set name= ...
) και να βάζουμε το όνομα του αρχείου C του κώδικά μας
(χωρίς την κατάληξη .c)
Δηλαδή, για παράδειγμα, αν ονομάζαμε το αρχείο του κώδικά μας, hello.c, τότε θα γράφαμε το παρακάτω στην εντολή set name του make.bat
Τα υπόλοιπα μένουν ίδια
Παρατήρηση: Στο make.bat προυποθέτω ότι έχετε εγκαταστήσει το
DevKit Advance στον κατάλογο C:\files\devkitadv, όπως είχαμε αναφέρει σε προηγούμενο post. Αν το εγκαταστήσατε σε διαφορετικό κατάλογο, απλά αλλάξτε την εντολή
set path=C:\files\devkitadv\bin;%path% , ώστε να παραπέμπει στον κατάλογο που είναι εγκατεστημένο το DevKit Advance