Το κυκλοφόρησα ΑΚΡΙΒΩΣ την ίδια στιγμή που πέσε το CPCWiki, οπότε δεν είχα ποτέ την ευκαιρία να μιλήσω για τις τεχνικές λεπτομέρειες. Ο κώδικας χρησιμοποιεί πολύ ακριβή συγχρονισμό (exact timing), οπότε για άλλη μια φορά έφτιαξα κατά λάθος ένα τεστ για emulators, όπως ανακαλύπτω όταν ο κόσμος ανεβάζει βίντεο όπου το παιχνίδι δεν φαίνεται σωστά…
Αφαίρεσα τα Extra Sugar modes επειδή όλα εκείνα τα scoreboards και τα achievements είχαν σχεδιαστεί για ένα σύστημα βασισμένο σε δισκέτα που θα αποθήκευε την πρόοδό σου. Έτσι σκέφτηκα, θα το ρυθμίσω να παίζει σαν το arcade παιχνίδι και θα έχω μόνο έναν πίνακα σκορ για να παραμείνει απλό για cartridge.
Στη συνέχεια, λίγο πριν ολοκληρωθεί το παιχνίδι, δόθηκε στο PicoGX η δυνατότητα ανάγνωσης/εγγραφής στην κάρτα SD, οπότε πρόσθεσα την αποθήκευση των υψηλών σκορ την τελευταία στιγμή. Νομίζω ότι θα ήταν το πρώτο παιχνίδι που θα χρησιμοποιούσε αυτή τη δυνατότητα, αν δεν με είχε προλάβει το Bloodwych mod. Οπότε, ίσως θα μπορούσα να εξετάσω το ενδεχόμενο να επαναφέρω το περιεχόμενο του Extra Sugar, αλλά θα έπρεπε να σχεδιάσω ξανά όλα τα νέα υπόβαθρα (backgrounds) που έφτιαξα για το Extra Sugar, τα οποία υπάρχουν μόνο σε 4 χρώματα. Και για να είμαι ειλικρινής, όχι και τόσο πολλοί άνθρωποι έχουν κατεβάσει το Bomb Jack GX σε σύγκριση με το Extra Sugar, πράγμα που έχει ενδιαφέρον.
Ο χάρτης μνήμης (memory map) είναι εντελώς διαφορετικός και αρκετός κώδικας έπρεπε να τροποποιηθεί ώστε να αφαιρεθεί το αυτο-τροποποιούμενο υλικό (self-modifying stuff) για να μπορεί να τρέξει από τη ROM. Η οθόνη δεν χρειάζεται πλέον double buffering χάρη στα hardware sprites και ο περισσότερος κώδικας τρέχει από τη ROM, οπότε τα 64k είναι υπεραρκετή RAM. Και η ROM είναι μόλις 128k, οπότε και πάλι, υπάρχει άφθονος χώρος.
Τα εικόνες φόντου προφανώς είναι σε Mode 0 αυτή τη φορά και στην πραγματικότητα χρησιμοποιούν περισσότερα χρώματα από το arcade, επειδή χρησιμοποίησα dithering όπου μπορούσα για να προσπαθήσω να τα κάνω να φαίνονται λίγο λιγότερο «chungus» στο Mode 0. Όλα διορθώθηκαν με το χέρι. Χρησιμοποιούν επίσης διαχωρισμούς χρωμάτων (colour splits) όπου είναι δυνατόν για να πετύχουν περισσότερα από 16 χρώματα. Ή 12 χρώματα, αφού οι πλατφόρμες πιάνουν πάντα 4.
Το σύστημα διακοπών (interrupt system) είναι πολύ πιο περίπλοκο από το Extra Sugar, αλλά η δομή του παιχνιδιού ήταν πολύ πιο εύκολο να γραφτεί χάρη στο PRI, το οποίο μπορεί να είναι το πιο υποτιμημένο χαρακτηριστικό του GX. Οποιοσδήποτε κώδικας ήταν κρίσιμος για τον συγχρονισμό μπήκε στην αλυσίδα διακοπών (interrupt chain), γεγονός που έκανε τα πάντα τόσο πιο απλά και πιο τακτοποιημένα.
Ο κώδικας των sprites ξαναγράφτηκε εντελώς για να χρησιμοποιεί hardware sprites. Το παιχνίδι χρειάζεται το πολύ 12 sprites για τα αντικείμενα του παιχνιδιού (1 παίκτης + 9 εχθροί + μπάλα P + νόμισμα B). Ανησυχούσα για το πόσος χρόνος θα χρειαζόταν για να ενημερωθεί το asic ώστε να τα κάνει animate, καθώς η μνήμη των sprites δεν είναι ευρετηριασμένη (indexed), πράγμα που είναι πολύ εκνευριστικό. Έτσι, για να τα κάνω να τρέχουν πιο γρήγορα, τα δεδομένα των sprites είναι όλα μεταγλωττισμένα (compiled) sprites και όπου είναι δυνατόν αποθηκεύονται ως delta, δηλαδή αλλάζουν μόνο τα pixels που διαφέρουν από το προηγούμενο sprite. Τα animations των εχθρών λειτουργούν όλα με αυτόν τον τρόπο και ενημερώνονται εναλλάξ, 4 κάθε φορά. Έτσι, στην πραγματικότητα η ενημέρωση των sprites γίνεται αρκετά γρήγορα, συνήθως πριν ξεκινήσει η σχεδίαση του ορατού frame. Και η λογική του παιχνιδιού ήταν ήδη γρήγορη, οπότε το παιχνίδι τρέχει άνετα στα 50hz.
Περισσότερος χρόνος καταναλώθηκε στο sprite multiplexing, το οποίο διαχειριζόταν ξανά η διακοπή (interrupt). Μετά τα αντικείμενα του παιχνιδιού, μου είχε απομείνει 4 ακόμα sprites και ήθελα να τα κάνω multiplex σε 24 βόμβες. Αυτό είναι παιχνιδάκι όταν είναι στοιβαγμένα κατακόρυφα, αλλά το πρόβλημα είναι ότι μπορούν να υπάρχουν έως και 7 βόμβες σε μια γραμμή. Έτσι, όποτε υπάρχουν περισσότερες από 4, το παιχνίδι κάνει ένα δύσκολο οριζόντιο multiplexing όπου τα sprites μετακινούνται εμπρός και πίσω σε κάθε scanline ώστε να εμφανίζονται δύο φορές. Αυτό απαιτεί ακριβή συγχρονισμό και είναι ένα σημείο αποτυχίας για τους emulators.
Ο μετρητής ουράνιου τόξου στο πάνω μέρος της οθόνης αποτελείται επίσης από δύο από τα sprites της βόμβας. Αυτά σχεδιάζονται ξανά γρήγορα σε βόμβες στο χρονικό διάστημα μεταξύ του τέλους της πάνω οθόνης και της αρχής της περιοχής παιχνιδιού (playfield). Έτσι το παιχνίδι έχει συχνά περισσότερα από 30 sprites στην οθόνη ταυτόχρονα και μπορεί να έχει περισσότερα από 16 sprites σε μια γραμμή. Δεν μπορείς να το κάνεις αυτό σε ένα Master System ή NES.
Οι επιπλέον ζωές στο κάτω μέρος της οθόνης δεν είναι sprites, αλλά γίνονται με colour splits όπως κάνει το Extra Sugar.
Η οθόνη τίτλου είναι μια εντελώς διαφορετική λύση στο ίδιο πρόβλημα — θέλω το λογότυπο να είναι σε υψηλή ανάλυση, αλλά χρειάζεσαι τουλάχιστον 7 χρώματα για να το σχεδιάσεις, και δεν μπορούν να διαχωριστούν εύκολα. Αυτή τη φορά είχα τα hardware sprites με το μέρος μου, αλλά τα γράμματα είναι πολύ μεγάλα για να καλυφθούν εξ ολοκλήρου με hardware sprites. Έτσι κατέληξα να σχεδιάσω το λογότυπο σε mode 1 χρησιμοποιώντας δύο αποχρώσεις του μπλε, μαύρο και πορτοκαλί, και τα γράμματα καλύπτονται με μια στρατηγική διάταξη hardware sprites σε συνδυασμό με colour splits στο πορτοκαλί κανάλι. Επανεγγράφει δύο από τα hardware sprites ενώ το κάνει αυτό, οπότε χρησιμοποιούνται συνολικά 18 sprites. Και πάλι αυτό απαιτεί ακριβή συγχρονισμό, οπότε και πάλι αυτό είναι κάτι που δεν φαίνεται 100% σωστό σε όλους τους emulators.
Εκτός από αυτό, όλα δέσανε αρκετά γρήγορα. Το GX είναι διασκεδαστικό και έχει ακόμα πολλές ανεκμετάλλευτες δυνατότητες.