Invasion, Cyborg Hellgate και υποστήριξη V9990!

Γεια σε όλους,

Χαίρομαι που ο κλώνος μου του Defender, το Invasion, είχε γενικά θετική αποδοχή — θέλω να φτιάξω φυσικές εκδόσεις — μπορείτε να μου προτείνετε κάποιο μέρος;

Έχω έτοιμες τις εξής: ZX Spectrum Next, Sega Genesis/Megadrive, Amstrad CPC (με και χωρίς v9990), MSX (με v9990).

Μπορεί ο CPC να σηκώσει το Hellgate; Παραδόξως, ναι — περικόπηκε ελαφρώς (αφαιρέθηκε ένας μόνο εχθρός) και τρέχει σε μηχανήματα 128kb. Δεν νομίζω ότι υπάρχει κάτι παρόμοιο στον CPC και, λοιπόν, το v9990 είναι άλλη ιστορία — είναι εξίσου καλό με την έκδοση για το Megadrive!

Julian

2 «Μου αρέσει»

για να χρησιμοποιηθεί η V9990, το παιχνίδι θα τρέχει σε SymbOS;

CYBORG HELLGATE - ΟΙ ΕΚΔΟΣΕΙΣ, ΤΕΧΝΙΚΑ

Το Cyborg Hellgate είναι ένα bullet hell shooter τύπου Defender: ένας κυλιόμενος πλανήτης, ένα ραντάρ (scanner), ανθρωποειδή
προς διάσωση και ένα μεγάλο καστ - landers, mutants, baiters, bombers, pods, swarmers, fireflingers,
dunderheads, Yellowbelly goldfish, Fudd και Big Dud - συν τα power-ups του MECHRA, το warp HELLGATE,
το Ghosto, guard, αλυσίδες HIT και γιγάντια mechs.

Κάθε έκδοση είναι γραμμένη σε NTC BASIC, μεταγλωττισμένη σε εγγενή threaded code, με τα κρίσιμα για την ταχύτητα
τμήματα σε Z80 ή 68000. Η λογική του παιχνιδιού βασίζεται στην ίδια BASIC σε όλες τις εκδόσεις· αυτό που αλλάζει είναι ο τρόπος
με τον οποίο σχεδιάζει το κάθε μηχάνημα.

ΤΑΥΤΟΧΡΟΝΑ ΣΤΗΝ ΟΘΟΝΗ (ΤΑ ΟΡΙΑ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ, ΤΑ ΙΔΙΑ ΣΕ ΚΑΘΕ ΕΚΔΟΣΗ)

  • Εχθροί: έως και 16 ταυτόχρονα (4 μαζί με τα mechs σε επίπεδο αρχηγού).
  • Ανθρωποειδή: 8.
  • Γιγάντια mechs: έως 5, το καθένα 64 x 48 (12 sprites στο Next).
  • Εκρήξεις: 6. Pickups (P, μεγάλο P, πετράδια): 6.
  • Το σκάφος.
  • Εχθρικές σφαίρες: έως 52.
  • Βολές λέιζερ: έως 22 (16 ομοβροντίες λέιζερ στο Mega Drive, κάθε ομοβροντία με μία έως τρεις δέσμες).
  • Δηλαδή έως και περίπου 110 κινούμενα αντικείμενα ταυτόχρονα, χωρίς τα αστέρια.

ZX SPECTRUM NEXT (ΤΟ ΠΡΩΤΟΤΥΠΟ)

  • 28 MHz Z80N, 50 καρέ το δευτερόλεπτο.
  • Layer 2 για το έδαφος, το copper για την κύλιση (scrolling), το tilemap για τον πίνακα ενδείξεων και τα κείμενα.
  • Hardware sprites για οτιδήποτε κινείται. Τα γιγάντια mechs είναι 64 x 48, δομημένα από 12 sprites:
    μόνο το αριστερό μισό αποθηκεύεται, το δεξί μισό αποτελείται από τα ίδια sprites ανεστραμμένα (mirrored).
  • Σφαίρες και λέιζερ μετακινούνται, ελέγχονται και σχεδιάζονται σε Z80: 52 εχθρικές σφαίρες και 22 βολές λέιζερ ως
    hardware sprites.
  • Τα δεδομένα των sprite και των γραμματοσειρών βρίσκονται στα NEX banks 45-47, εκτός της μνήμης του προγράμματος.
  • Στην οθόνη: 128 hardware sprites - υποδοχές (slots) 0-53 για το σκάφος, τους εχθρούς, τα ανθρωποειδή, τις εκρήξεις,
    τα pickups και τα mechs, 54-127 για τις 52 σφαίρες και τις 22 βολές - και 60 αστέρια στο Layer 2.
  • Έκδοση με φωνή (CYBHELLV): 25 φωνητικές γραμμές με vocoder στα 13,6 kHz, οι οποίες τροφοδοτούνται από το DMA του Next απευθείας
    στο DAC, οπότε ο Z80 σχεδόν δεν απασχολείται καθόλου. Απαιτείται Next με 1MB.

SEGA MEGA DRIVE / GENESIS

  • 68000 στα 7,6 MHz, H40 (320 x 224), NTSC 60 Hz ή PAL 50 Hz.
  • Οτιδήποτε εκτελείται για κάθε αντικείμενο σε κάθε καρέ είναι γραμμένο σε 68000: ο κύκλος επεξεργασίας (tick) και για τα 14 είδη εχθρών και
    τα ανθρωποειδή, τα pickups, το χειριστήριο, το σκάφος και η κάμερα, οι 52 εχθρικές βολές και οι 16 ομοβροντίες
    λέιζερ, ο πίνακας sprites, το ραντάρ, οι στήλες του τοπίου. Η BASIC αποφασίζει τι εμφανίζεται,
    πόσους πόντους αξίζει η εξόντωση κάθε εχθρού και τα κείμενα.
  • Plane B: τα αστέρια, με κύλιση στο ένα τέταρτο της ταχύτητας του εδάφους (το parallax του Next), και το
    ραντάρ. Plane A: τα κείμενα, ο πίνακας και το έδαφος. Οτιδήποτε κινείται είναι hardware
    sprite. Ο πίνακας sprites, το ραντάρ και οι νέες στήλες του τοπίου μεταφέρονται στο VDP μέσω DMA κατά
    το vertical blank.
  • Το παιχνίδι λειτουργεί με τον ρυθμό των 50 ticks/δευτερόλεπτο του Next τόσο σε NTSC όσο και σε PAL (1.500 ticks σε 1.800 NTSC
    καρέ, 1.500 σε 1.500 PAL)· η κύλιση είναι ομαλή και στα 60 Hz.
  • Στην οθόνη: το Mega Drive προβάλλει 80 hardware sprites, 20 ανά γραμμή (το Next 128), μοιρασμένα μεταξύ
    του σκάφους, των 16 εχθρών, των 8 ανθρωποειδών, των mechs, των εκρήξεων, των pickups, των 52 εχθρικών βολών και των 16 ομοβροντιών
    λέιζερ· γραμμές που ξεπέρασαν το όριο εμφανίστηκαν σε λιγότερο από το 1% των καρέ που δοκιμάστηκαν. Τα αστέρια είναι tiles στο
    plane B, επομένως δεν καταναλώνουν sprites.
  • Ηχητικά εφέ στο PSG, με μετατροπή κάθε περιόδου AY. Έκδοση με φωνή (CYBHELLV): οι φωνητικές γραμμές του Next με vocoder
    μέσω του DAC του YM2612 από ένα πρόγραμμα αναπαραγωγής στον Z80, το οποίο μένει εκτός του διαύλου (bus) του 68000 κατά τη διάρκεια του DMA.
  • 74K ROM, 612K με τη φωνή.
  • Χειριστήρια 3 και 6 κουμπιών.
  • Πέντε επίπεδα δυσκολίας (Αριστερά / Δεξιά στην οθόνη τίτλου): EASY (μπόνους κάθε 10.000 πόντους), MEDIUM
    (κάθε 50.000), HARD (κάθε 100.000), VERY HARD (κάθε 100.000 χωρίς επιπλέον σκάφος), INSANE (το ίδιο,
    ξεκινώντας με ένα μόνο σκάφος).
  • Δοκιμασμένο με bots έως το wave 25 και παραπέρα στο Genesis Plus GX.

AMSTRAD CPC (ΠΛΗΡΗΣ ΕΚΔΟΣΗ)

  • 4 MHz Z80, mode 0, διπλά buffer οθόνης στα #C000 και #0000. Χωρίς hardware sprites: τα πάντα
    γίνονται μέσω λογισμικού (software).
  • Μεταγλωττισμένα sprites: κάθε sprite είναι μια ρουτίνα Z80 που γράφει τα byte της απευθείας στην οθόνη,
    σε κανονικά και αντικατοπτρισμένα αντίγραφα. 118 μοτίβα, περίπου 49K κώδικα, στην επιπλέον RAM του 6128· το υπόλοιπο
    πρόγραμμα στο bank 7.
  • Λίστες διαγραφής (erase lists): μαυρίζουν μόνο τα bytes που σχεδιάστηκαν πραγματικά. Το έδαφος και τα αστέρια διατηρούν
    τις δικές τους λίστες.
  • Χρονισμός καρέ από διακοπή IM 2 στα 300 Hz του gate array, με πίνακα διανυσμάτων 257 byte ώστε
    να λειτουργεί σε επεκταμένα μηχανήματα όπου ο δίαυλος δεν διαβάζει #FF.
  • Στην οθόνη: 57 software sprite slots (το σκάφος, εχθροί, ανθρωποειδή, εκρήξεις, pickups και τα 12
    κελιά ενός mech), έως και 52 εχθρικές σφαίρες και 22 βολές λέιζερ ως μικρά blobs με τις δικές τους λίστες διαγραφής,
    και 24 αστέρια.
  • Κλειδωμένο σε κάθε δεύτερο καρέ: 25 fps στον ρυθμό πραγματικού χρόνου του Next, με διπλασιασμένες κινήσεις. Τα απαιτητικά waves
    τρέχουν στα 16-19 fps.
  • Απαιτείται 128K (ένας 6128, ή ένας 464 / 664 με επέκταση 64K).

AMSTRAD CPC LITE

Η ίδια μηχανή, βελτιστοποιημένη για ομαλό παιχνίδι:

  • Διακεκομμένο έδαφος: κάθε 8η στήλη του κόσμου, καρφιτσωμένη στον κόσμο καθώς κυλάει.
  • Χωρίς αστέρια και χωρίς ραντάρ.
  • Ο πίνακας ενδείξεων εμφανίζεται μόνο όσο είναι πατημένο το TAB. Η μωβ γραμμή παραμένει, ώστε να βλέπετε πόσο ψηλά
    φτάνουν τα landers.
  • Μεταγλωττισμένα sprites χωρίς μάσκα (τα ακραία bytes γράφονται απευθείας): ο κώδικας των sprite μειώνεται στα 27,6K σε δύο
    banks.
  • Οι γραμμές των sprites προχωρούν με pop bc / add hl, bc από πίνακες ανά γραμμή αντί για έλεγχο και πρόσθεση (add-and-check)
    σε κάθε γραμμή.
  • Εξωγήινοι σε αδράνεια: οτιδήποτε απέχει πάνω από 240 pixels κόσμου από το οπτικό πεδίο σταματά εντελώς, μαζί και τα χρονόμετρα,
    μέχρι να πετάξετε κοντά του. Χωρίς ραντάρ δεν το καταλαβαίνετε ποτέ. Τα landers που μεταφέρουν φορτίο, τα ανθρωποειδή που πέφτουν,
    οι διώκτες και τα mechs παραμένουν πάντα ενεργά.
  • Χωρίς dunderheads: κινούνται υπερβολικά γρήγορα για να τα αποδώσει ομαλά ο CPC.
  • Στην οθόνη: τα ίδια 57 sprite slots, 52 σφαίρες και 22 βολές λέιζερ όπως στην πλήρη έκδοση, χωρίς
    αστέρια - και με την αδράνεια κινούνται μόνο οι εξωγήινοι κοντά στο οπτικό πεδίο.
  • Κυρίως 25 fps, με περιστασιακές πτώσεις στα πιο έντονα waves. 128K.

AMSTRAD CPC + V9990 (AMSDAP ME MSX GFX9000 Ή VIDEO9000, Ή POWERGRAPH)

  • Ο CPC εκτελεί τη λογική του παιχνιδιού· το V9990 αναλαμβάνει τη σχεδίαση σε λειτουργία P1: δύο hardware-scrolled επίπεδα
    πλακιδίων (tile layers) και 125 hardware sprites (16 x 16, 16 χρώματα).
  • Έδαφος και αστέρια σε ένα επίπεδο, ο πίνακας ενδείξεων και το ραντάρ στο άλλο. Όλα τα sprites είναι
    hardware· τα mechs χρησιμοποιούν αποθηκευμένα αντικατοπτρισμένα αντίγραφα, καθώς η λειτουργία P1 δεν υποστηρίζει αναστροφή (flip).
  • Στην οθόνη: τα 125 hardware sprites του V9990 (16 ανά γραμμή) διαχειρίζονται τις 57 υποδοχές αντικειμένων του παιχνιδιού
    συν τις σφαίρες και τις βολές λέιζερ (έως 52 και 22), και 60 αστέρια στο παρασκήνιο (background layer).
  • Πάνω από 16 sprites σε μία γραμμή: η σειρά των σφαιρών εναλλάσσεται σε κάθε καρέ, ώστε να τρεμοπαίζουν αντί
    να εξαφανίζονται.
  • Ένα καρέ σε αναμονή: ένα ολοκληρωμένο καρέ μπαίνει σε ουρά και εμφανίζεται στο επόμενο καρέ του V9990, επιτρέποντας σε ένα γρήγορο
    καρέ να δανείσει χρόνο σε ένα αργό. Το κόστος είναι ένα καρέ (40 ms) καθυστέρησης (lag).
  • Τα πιο απαιτητικά τμήματα της BASIC μεταφέρθηκαν σε Z80: τα χειριστήρια, τα ρολόγια, το σκορ, τα όπλα των mechs.
  • 25 fps στα waves 1-2 και στα επίπεδα αρχηγών· το bullet hell του wave 7 εντός χρόνου στο 93% των καρέ.
  • Μικρότερο μέγεθος από την απλή έκδοση CPC (66K έναντι 87K): τα sprites είναι δεδομένα 4-bit στη μνήμη
    της κάρτας, όχι μεταγλωττισμένος κώδικας. Απαιτείται 128K και η κάρτα στο &FF60.

MSX2 + V9990 (GFX9000, VIDEO9000, POWERGRAPH)

  • Σχεδόν ο ίδιος κώδικας με την έκδοση CPC + V9990: ο driver του V9990 είναι πανομοιότυπος· διαφέρει
    μόνο ο κώδικας για το πληκτρολόγιο, το joystick, τον ήχο και τη μνήμη.
  • Δύο εκδόσεις (builds) από έναν πηγαίο κώδικα: ένα αρχείο .COM για MSX-DOS 2 / Nextor με δύο αρχεία δεδομένων (που φορτώνονται σε σελίδες του memory
    mapper, όπως γεμίζει ο CPC τα banks του), και μια 128K ASCII16 MegaROM που εκτελείται στο δωρεάν
    C-BIOS.
  • Ήχος στο PSG (το ίδιο τσιπ AY με τον CPC), με τις συχνότητες αναπροσαρμοσμένες για τον χρονισμό του MSX στα 1,79 MHz.
  • Στην οθόνη: ό,τι και στην έκδοση CPC + V9990 - 57 υποδοχές αντικειμένων, 52 σφαίρες, 22 βολές λέιζερ,
    60 αστέρια.
  • Το V9990 λειτουργεί πάντα στα 50 Hz, επομένως το παιχνίδι παίζεται στον ίδιο ρυθμό σε MSX των 50 και 60 Hz.
  • Πολύ κοντά στην ταχύτητα του CPC + V9990: wave 1 εντός χρόνου στο 99% των καρέ, wave 7 στο 83%.

ΔΟΚΙΜΕΣ

  • Οι εκδόσεις CPC στο Caprice32· το CPC + V9990 στο 1984 (τον εξομοιωτή CPC με υποστήριξη
    PowerGraph V9990)· η MSX ROM στο openMSX με την επέκταση GFX9000· το Mega Drive στο Genesis Plus GX.
  • Τα πάντα ελέγχθηκαν επίσης με bot σε waves, επίπεδα με γιγάντια mechs και game over μέσα από τα ειδικά περιβάλλοντα χρονισμού
    της NTC.
  • Οι αριθμοί προέρχονται από εξομοιωτές και harnesses δοκιμών, όχι από πραγματικό υλικό (hardware).
  • Το blueMSX δεν διαθέτει V9990: χρησιμοποιήστε το openMSX ή το WebMSX για την έκδοση MSX.

(c) 2026 Cyborg Unicorn Pty Ltd

Αν το Symbos μπορεί να τρέξει πράγματα για CPC —τα οποία καταλαμβάνουν πλήρως το μηχάνημα— θα έπρεπε να δουλέψει. Θα έχανες ό,τι κάνεις στο Symbos.

Θα μπορούσα να φτιάξω μια έκδοση για το Symbos; Ίσως — αλλά δεν είμαι σίγουρος πώς η NTC BASIC θα συνυπάρξει και θα «χτυπάει» το hardware, ίσως με έναν «φιλικό», συνεργατικό τρόπο.

Θα έπρεπε να δουλέψω υπό την καθοδήγηση του Prodatron.

Έκδοση του Cyborg Hellgate για το CPC v9990:

Έκδοση του Cyborg Hellgate για το ZX Spectrum Next:

1 «Μου αρέσει»

Παίξιμα demos εδώ:

1 «Μου αρέσει»

Εξαιρετικά, αυτό είναι ένα από τα λίγα παιχνίδια που λειτουργεί με την V9990 έξω από το οικοσύστημα του Symbos, θα προσπαθήσω να τραβήξω βίντεο από το πραγματικό μηχάνημα, χαιρετισμούς !!!

EDIT , δεν μου ανιχνεύει την V9990, εγώ έχω το μοντέλο Amstrad Edition της Tecnobytes


e

Πρόσθεσα ένα v9938 για τους χρήστες του AMSDAP — είναι πειραματικό, αλλά θα ήθελα να μάθω πώς πήγε.

Έρχονται κι άλλα! Όσα περισσότερα από τα παιχνίδια μου για το ZX Spectrum Next μπορώ να μεταφέρω, τα οποία δεν απαιτούν την ταχύτητα CPU του ZX Spectrum Next.

Την έχω συνδεδεμένη στο AMSDAP επίσης

Αλλά εγώ έχω τη V9990, όπως ανέφερα παραπάνω, φαίνεται πως σε πραγματικό μηχάνημα δεν λειτουργεί.

Α, μόλις διάβασα τις παραπάνω σημειώσεις σου — θα σου απαντήσω σύντομα. Έχω επίσης ένα αυθεντικό Amstrad από την Technobytes.

Έχεις κάποια καλή τεκμηρίωση για το πώς να το προγραμματίσω σε CPC; Δεν μπορώ να βρω τίποτα και κάνω απλώς υποθέσεις. Δεν εννοώ το ίδιο το v9990.

V9938 στη διεύθυνση &FF88:

10 x=INP(&FF89)
20 OUT &FF89,0:OUT &FF89,&8E
30 OUT &FF89,0:OUT &FF89,&40:OUT &FF88,&5A:OUT &FF88,&A5
40 OUT &FF89,0:OUT &FF89,0:a=INP(&FF88):b=INP(&FF88)
50 PRINT HEX$(a),HEX$(b),HEX$(INP(&FF89))

V9990 στη διεύθυνση &FF60:

10 OUT &FF67,2:OUT &FF67,0
20 OUT &FF64,0:OUT &FF63,0:OUT &FF63,0:OUT &FF63,0:OUT &FF60,&5A:OUT &FF60,&A5
30 OUT &FF64,3:OUT &FF63,0:OUT &FF63,0:OUT &FF63,0:a=INP(&FF60):b=INP(&FF60)
40 PRINT HEX$(a),HEX$(b),HEX$(INP(&FF65))

Τι σημαίνουν οι αριθμοί:

  • 5A A5: η κάρτα λειτουργεί. Το πρόβλημα είναι ο έλεγχος του loader: το latch ή η διεύθυνση στο άνω όριο της VRAM (top-of-VRAM address).
  • FF FF: τίποτα δεν αποκρίνεται σε αυτή τη θύρα. Ελέγξτε τον αντάπτορα, την τροφοδοσία ή την επαναφορά (reset).
  • Οτιδήποτε άλλο: κάτι αποκρίνεται, είτε κάποια άλλη επέκταση που διεκδικεί τη θύρα είτε η κάρτα βρίσκεται σε κακή κατάσταση.
1 «Μου αρέσει»

Θα το δοκιμάσω.

Αυτό το παιχνίδι μου θυμίζει πολύ το Subterranean Stryker, με το σκάνερ στην κορυφή, τη δυνατότητα να πετάς και προς τις δύο κατευθύνσεις, και το να μαζεύεις ανθρώπους…

1 «Μου αρέσει»

Λειτουργεί ήδη σε πραγματικό CPC με το V9990 !!! καλή δουλειά..

1 «Μου αρέσει»

Ευχαριστώ XeNoMoRPH για τη δοκιμή - φαίνεται ότι η κάρτα πρέπει να αρχικοποιηθεί με συγκεκριμένο τρόπο και τώρα το NTC BASIC θα έχει πλήρη υποστήριξη για το v9990. Καμία δικαιολογία για όλους να μην φτιάξουν περισσότερα παιχνίδια γι’ αυτό.

Τώρα ξαναχτίζω το v9938 για να δω αν υπήρχε το ίδιο πρόβλημα και εκεί.

1 «Μου αρέσει»

Πώς σου φαίνεται, πολύ γρήγορο το παιχνίδι; Εμένα έτσι μου αρέσει — τέρμα οι αργοί αμυντικοί — αλλά θα μπορούσα πανεύκολα να προσθέσω μια ρύθμιση ταχύτητας.

Πράγματι, πάει απίστευτα γρήγορα!!! Παρεμπιπτόντως, τώρα σου άνοιξε άλλο μέτωπο: ένας φίλος το δοκίμασε σε πραγματικό MSX και του βγάζει αυτό στην οθόνη. Εδώ το πρόβλημα φαίνεται να είναι διαφορετικό από τον εντοπισμό της V9990

1 «Μου αρέσει»