What's new
iamretro

Wow! It seems you have yet to create an account with us! Needless to say, you have to register in order to get the full "iamretro" experience! You will then be able to create your own topics, reply to posts and be an active member of the MOST prolific community in Greece (even further than that, but we're being modest for now). So don't delay! REGISTER!

C tutorials για Amstrad

Optimus

Retro Starter
Comrade
Joined
Mar 20, 2012
Messages
54
Λοιπόν, για να ανοίξει και λίγο αυτό το section είπα να δώσω κάποια links για όποιον ενδιαφέρεται για C programming σε Amstrad.
Το θεωρώ πολύ καλή λύση για όποιον ούτε με την πάναργη ταχύτητα της basic μπορεί να τα βγάλει πέρα, ούτε θέλει να μπλέξει με καθαρή assembly. Παλαιότερα πίστευα ότι σε τόσο παλιά μηχανήματα η χρήση 100% assembly είναι αυστηρή. Αλλά φαίνεται να μην ισχύει αυτό απολύτως.

Demos από τα Phat, Pheelone, Phreaks του No Recess, αλλά και δύο δικές μου δουλειές, το Chunky Chan και το πρόσφατο Wolfenstrad γράφτηκαν σε έναν σημαντικό βαθμό σε απλή C και έπειτα τα κομμάτια που θέλανε optimize ξαναγράφτηκαν σε assembly. Δύσκολα να κάνεις rendering μεγάλα κομμάτια της οθόνης σε pure C αλλά φανταστείτε πόσο διευκολύνει τη δουλειά και την οργάνωση του κώδικα σε initializations, precalcs generation, demo scripting, game logic, πράγματα δηλαδή που είτε γίνονται πριν να ξεκινήσει το realtime κομμάτι και δεν σε νοιάζει αν καθυστερήσουν και 2 δευτερόλεπτα παραπάνω, ή πράγματα είναι λίγα και υπάρχει πολύς χρόνος για να αποφασίσεις ας πούμε τις θέσεις 3 sprites στο επόμενο καρέ, τα collision μεταξύ τους και τι θα γίνει άμα πάρεις το τάδε bonus, ενώ το sprite rendering ας πούμε θα παραμείνει σε assembly. Προσωπικά με έχει βοηθήσει πάρα πολύ και έχω χτίσει και ένα κοινό framework που θα κάνει compile είτε αυθεντική έκδοση για CPC είτε έναν κώδικα C που τρέχει σε PC και εξοιμοιώνει το τι πρόκειται να δω στην videoram του CPC αλλά σε παραθυράκι στο PC. Είναι πραγματικά πολλές οι δυνατότητες με το cross developing και η προσθήκη της δυνατότητας να γράφεις και σε C σε 8bits τις βελτιώνει. Μοναδικό υστέρημα η μνήμη. Γεμίζει πιο εύκολα από ότι αν έγραφες τα ίδια πράγματα σε assembly. Για μικρά demos με βόλεψε αλλά το πως θα συνεχίσω για μεγαλύτερα projects θα δείξει.

Η πρώτη μου επαφή με την C σε Amstrad ήταν η PhrozenC που διατήθεται και compiler που τρέχει πάνω στον Amstrad για να γράφεις κώδικα και στο real thing. Αλλά θα πρότεινα σήμερα τον SDCC compiler που βγάζει καλύτερο κώδικα και είναι πιο κοντά στην C που ξέρουμε με όλα τα καλούδια όπως structs, pointers, κλπ.

Κάπου στα programming άρθρα σε αυτό το link υπάρχουν 4 μέρη ενός άρθρου για το πως να ξεκινήσετε με την SDCC συν το tool του NoRecess για μια πιο ανθρώπινη z80 assembly (για τα κομμάτια του κώδικα που προτιμείται assembly αντί για C) κοντά στα πρότυπα του Maxam (γιατί η SDCC σύνταξη για την z80 assembly που χρησιμοποιείται είναι τόσο περίεργη που δεν την προτιμώ). Στο ίδιο link έχει και ένα preconfigured SDCC environment με όλα αυτά τα tools για να ξεκινήσετε.

Κάτι πιο ενδιαφέρον που θα το πρότεινα είναι μια σειρά από tutorials πάνω στο ίδιο θέμα, όπου ο συγγραφέας προχωράει παραπέρα και δίχνει ένα παράδειγμα πως να κάνετε π.χ. 2d ή 3d stars με αξιοπρεπή ταχύτητα και μόνο με την χρήση C (η χρήση assembly βρίσκεται μόνο στα σημεία που χρειάζεται να μιλήσεις με τα hardware ports για αλλαγή mode, παλέτας, timer, κλπ. Αυτό αναγκαστικό και δεν γλυτώνεται, αλλά κανείς μπορεί να πάρει και τις ρουτίνες έτοιμες). Έχει και εξτρά μαθήματα όπου δίχνει πως να κάνεις optimize αυτές τις ρουτίνες και πάλι πλήρως σε C για να βγάλει καλύτερο assembly κώδικα ο compiler και να μπορείς να κάνεις επιτέλους rendering και με pure C σε Amstrad.

Έπειτα, σε κάποια στιγμή θα βγει το νέο τεύχος του Phoenix και από το προηγούμενο άρθρο είχα ξεκινήσει να γράφω για CPC coding. Ίσως σκέφτομαι να το περάσω σε C coding στον CPC στα μελλοντικά άρθρα και να γράψω κάτι σε και αυτό στο προηγούμενο link, δηλαδή τα βασικά και μετά κάτι πρακτικό (ίσως ένα μικρό απλοϊκό παιχνίδι). Θα δείξει..
 
A

Anonymous

Guest
Απ: C tutorials για Amstrad

Τα έψαξα κι εγώ κατά καιρούς αυτά τα tutorials, και τα βρήκα πολύ ενδιαφέρον.  Τα σπάει να γράψεις σε C για τον z80. Εκεί που απογοητεύτηκα όμως είναι με τα πολλά κρασαρισματα και γενικά την όλη φασαρία που χρειάζεται, από την στιγμή που γράφεις τον κώδικα, μέχρι την ώρα που θα κάνεις run στον emulator ή στον amstrad. Επίσης δεν μπόρεσα να καταλήξω σε ποια C από τις προσφερόμενες να καταλήξω.  Καλό το SDCC environment, αλλά πιστεύω χρειάζεται κάποια βελτίωση, καθώς επίσης και ένα σωστό και σοβαρό tutorial.

@ Optimus μπορούμε να δούμε δείγμα της δουλείας σου? Αναμένω με αγωνία τα tuts σου στο phoenix. Πολύ καλή κίνηση μπράβο!
 

dR_wH0

Solder Noob
Staff member
Comrade
Joined
Mar 24, 2012
Messages
5,854
Φίλε optimus σε χαιρετώ και απο εδώ! Νομίζω γνωριστήκαμε στην έκθεση ? :mrgreen: :geek:

Στην 1η ευκαιρία που θα έχω χρόνο θα τσεκάρω τα tutorials που έδωσες!! Να αναμένεις ένα κάρο ερωτήσεις βέβαια στην πορεία!!
 
Top