# Invasion, Cyborg Hellgate and also V9990 Support!

**URL:** <https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034>\
**Category:** General\
**Tags:** game\
**Created:** [October 28, 2026, 6:19am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034 "2026-10-28T06:19:12Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 6:19am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/1 "2026-10-28T06:19:12Z")

</div>

Hi Everyone,

I’m glad my Defender clone Invasion has been well received in general - I am wanting to make physical versions - can you recommend anywhere?

I have ready to go: ZX Spectrum Next, Sega Genesis/Megadrive, Amstrad CPC (with and without v9990), MSX (with v9990).

Can the CPC handle Hellgate? Surprisingly ok - it was cutdown (a single enemy removed) and runs on 128kb machines. I don’t think there is anything like it on CPC and well, the v9990 is another story - it’s as good as the Megadrive version!

Julian

---

<div class="post-metadata">

**Author:** ![XeNoMoRPH](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/xenomorph/32/28_2.png) [@XeNoMoRPH](https://forum.cpcwiki.eu/u/XeNoMoRPH)\
**Post date:** [October 28, 2026, 6:24am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/2 "2026-10-28T06:24:23Z")

</div>

To use the V9990, will the game run on SymbOS?

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 6:31am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/3 "2026-10-28T06:31:21Z")

</div>

CYBORG HELLGATE - THE VERSIONS, TECHNICALLY

Cyborg Hellgate is a Defender-style bullet hell shooter: a scrolling planet, a scanner, humanoids  
to save, and a big cast - landers, mutants, baiters, bombers, pods, swarmers, fireflingers,  
dunderheads, Yellowbelly goldfish, Fudd and Big Dud - plus MECHRA’s power-ups, the HELLGATE warp,  
Ghosto, guard, HIT chains and giant mechs.

Every version is written in NTC BASIC, compiled to native threaded code, with the speed-critical  
parts in Z80 or 68000. The game logic is the same BASIC across them all; what changes is how each  
machine draws it.

ON SCREEN AT ONCE (THE GAME’S LIMITS, THE SAME IN EVERY VERSION)

- Enemies: up to 16 at a time (4 alongside the mechs on a boss level).
- Humanoids: 8.
- Giant mechs: up to 5, each 64 x 48 (12 sprites on the Next).
- Explosions: 6. Pickups (P, big P, gems): 6.
- The ship.
- Enemy bullets: up to 52.
- Laser shots: up to 22 (16 laser volleys on the Mega Drive, each volley one to three beams).
- That’s up to about 110 moving things at once, before the stars.

ZX SPECTRUM NEXT (THE ORIGINAL)

- 28 MHz Z80N, 50 frames a second.
- Layer 2 for the ground, the copper for the scrolling, the tilemap for the panel and the words.
- Hardware sprites for everything that moves. The giant mechs are 64 x 48, built from 12 sprites:  
only the left half is stored, the right half is the same sprites mirrored.
- Bullets and lasers moved, checked and drawn in Z80: 52 enemy bullets and 22 laser shots as  
hardware sprites.
- The sprite and font data sit in NEX banks 45-47, outside the program’s memory.
- On screen: 128 hardware sprites - slots 0-53 for the ship, enemies, humanoids, explosions,  
pickups and mechs, 54-127 for the 52 bullets and 22 shots - and 60 stars on Layer 2.
- Voice build (CYBHELLV): 25 vocoded lines at 13.6 kHz, fed by the Next’s DMA straight into the  
DAC, so the Z80 hardly does anything for it. Needs a 1MB Next.

SEGA MEGA DRIVE / GENESIS

- 68000 at 7.6 MHz, H40 (320 x 224), NTSC 60 Hz or PAL 50 Hz.
- Everything done for every object every frame is in 68000: the tick for all 14 enemy kinds and  
the humanoids, the pickups, the pad, the ship and view, the 52 enemy shots and 16 laser  
volleys, the sprite table, the scanner, the landscape columns. The BASIC decides what comes on,  
what a kill is worth, and the words.
- Plane B: the stars, scrolled at a quarter of the ground’s speed (the Next’s parallax), and the  
scanner. Plane A: the words, the panel and the ground. Everything that moves is a hardware  
sprite. The sprite table, the scanner and new landscape columns go to the VDP by DMA in the  
vertical blank.
- The game ticks at the Next’s 50 a second on both NTSC and PAL (1,500 ticks in 1,800 NTSC  
frames, 1,500 in 1,500 PAL); the scrolling is smooth at 60 Hz too.
- On screen: the Mega Drive shows 80 hardware sprites, 20 on a line (the Next 128), shared by the  
ship, the 16 enemies, 8 humanoids, mechs, explosions, pickups, 52 enemy shots and 16 laser  
volleys; lines over the limit came up in under 1% of frames tested. The stars are tiles on  
plane B, so they cost no sprites.
- Sound effects on the PSG, each AY period converted. Voice build (CYBHELLV): the Next’s vocoded  
lines through the YM2612’s DAC from a Z80 player, which keeps off the 68000’s bus during DMA.
- 74K ROM, 612K with the voice.
- 3 and 6 button pads.
- Five difficulty levels (Left / Right on the title): EASY a bonus every 10,000 points, MEDIUM  
every 50,000, HARD every 100,000, VERY HARD every 100,000 with no extra ship, INSANE the same  
starting with one ship.
- Bot-played to wave 25 and beyond on Genesis Plus GX.

AMSTRAD CPC (FULL VERSION)

- 4 MHz Z80, mode 0, double-buffered screens at #C000 and #0000. No sprite hardware: everything  
is software.
- Compiled sprites: each sprite is a Z80 routine that writes its bytes straight to the screen,  
plain and mirrored copies. 118 patterns, about 49K of code, in the 6128’s extra RAM; the rest of  
the program in bank 7.
- Erase lists: only the bytes actually drawn get blacked out. The ground and the stars keep their  
own lists.
- Frame clock from an IM 2 interrupt off the gate array’s 300 Hz, with a 257 byte vector table so  
it works on expanded machines where the bus doesn’t read #FF.
- On screen: 57 software sprite slots (the ship, enemies, humanoids, explosions, pickups, and a  
mech’s 12 cells), up to 52 enemy bullets and 22 laser shots as small blobs with their own erase  
lists, and 24 stars.
- Locked to every second frame: 25 fps at the Next’s real-time pace, moves doubled. Busy waves  
run 16-19 fps.
- Needs 128K (a 6128, or a 464 / 664 with 64K added).

AMSTRAD CPC LITE

Same engine, trimmed to play smoothly:

- Dotted ground: every 8th world column, pinned to the world as it scrolls.
- No stars and no scanner.
- The panel only shows while TAB is held. The purple line stays, so you can see how high the  
landers go.
- Unmasked compiled sprites (edge bytes written straight): the sprite code drops to 27.6K in two  
banks.
- Sprite rows step with pop bc / add hl, bc from per-line tables instead of an add-and-check on  
every row.
- Dormant aliens: anything more than 240 world pixels from the view stops completely, timers and  
all, until you fly near it. With no scanner you never know. Carrying landers, falling  
humanoids, the chasers and the mechs always stay awake.
- No dunderheads: they move too fast for the CPC to show smoothly.
- On screen: the same 57 sprite slots, 52 bullets and 22 laser shots as the full version, no  
stars - and with dormancy only the aliens near the view are moving.
- Mostly 25 fps, the odd dip in the busiest waves. 128K.

AMSTRAD CPC + V9990 (AMSDAP WITH AN MSX GFX9000 OR VIDEO9000, OR A POWERGRAPH)

- The CPC runs the game logic; the V9990 does the drawing in P1 mode: two hardware-scrolled tile  
layers and 125 hardware sprites (16 x 16, 16 colours).
- Ground and stars on one layer, the panel and the scanner on the other. All sprites are  
hardware; the mechs use stored mirrored copies, since P1 can’t flip.
- On screen: the V9990’s 125 hardware sprites (16 on a line) carry the game’s 57 object slots  
plus the bullets and laser shots (up to 52 and 22), and 60 stars on the background layer.
- Over 16 sprites on a line: the bullets’ order flips every frame, so they flicker instead of  
vanishing.
- One frame in hand: a finished frame is queued and shown at the V9990’s next frame, so a quick  
frame can lend time to a slow one. The cost is one frame (40 ms) of lag.
- The busiest BASIC moved into Z80: the controls, the clocks, the score, the mech guns.
- 25 fps in waves 1-2 and the boss levels; wave 7’s bullet hell on time 93% of frames.
- Smaller than the plain CPC version (66K against 87K): sprites are 4-bit data in the card’s  
memory, not compiled code. Needs 128K and the card at &FF60.

MSX2 + V9990 (GFX9000, VIDEO9000, POWERGRAPH)

- Almost the same code as the CPC + V9990 version: the V9990 driver is unchanged; only the  
keyboard, joystick, sound and memory code differ.
- Two builds from one source: an MSX-DOS 2 / Nextor .COM with two data files (loaded into memory  
mapper pages, the way the CPC fills its banks), and a 128K ASCII16 MegaROM that runs on the free  
C-BIOS.
- Sound on the PSG (the same AY chip as the CPC), pitches rescaled for the MSX’s 1.79 MHz clock.
- On screen: the same as the CPC + V9990 version - 57 object slots, 52 bullets, 22 laser shots,  
60 stars.
- The V9990 always runs at 50 Hz, so the game plays at the same pace on 50 and 60 Hz MSXs.
- Close to the CPC + V9990 speed: wave 1 on time 99% of frames, wave 7 83%.

TESTING

- CPC versions in Caprice32; CPC + V9990 in 1984 (the CPC emulator with PowerGraph V9990  
support); the MSX ROM in openMSX with the GFX9000 extension; the Mega Drive in Genesis Plus GX.
- Everything also bot-played through waves, giant mech levels and game over in NTC’s own timing  
harnesses.
- Figures are from emulators and harnesses, not real hardware.
- blueMSX has no V9990: use openMSX or WebMSX for the MSX version.

(c) 2026 Cyborg Unicorn Pty Ltd

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 6:33am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/4 "2026-10-28T06:33:04Z")

</div>

If Symbos can run CPC stuff - which takes over the machine - it should work. You would lose what you are doing in Symbos.

Could I build a Symbos version? Perhaps - but I’m unsure how NTC BASIC will co-exist and bang the hardware, maybe in a ‘friendly’ cooperative way.

I’d have to work with Prodatron’s guidance.

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 7:25am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/5 "2026-10-28T07:25:02Z")

</div>

Cyborg Hellgate CPC v9990 version:

[![](https://forum.cpcwiki.eu/uploads/default/original/2X/d/d424635c334d59b46f1fc17c44b69406d3fb7cbe.jpeg "28 October 2026") ](https://www.youtube.com/watch?v=xyU5hjrthZU)

Cyborg Hellgate ZX Spectrum Next version:

[![](https://forum.cpcwiki.eu/uploads/default/original/2X/b/b9d97143b57044255f53e642a76b4e07d6278ff2.jpeg "28 October 2026") ](https://www.youtube.com/watch?v=TGAhn123RS0)

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 8:27am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/6 "2026-10-28T08:27:17Z")

</div>

Playable Demos here:

> **[Cyborg Hellgate Playable Demo (Amstrad CPC) by Cyborg Unicorn Pty Ltd](https://cyborgunicornau.itch.io/cyborg-hellgate-playable-demo-amstrad-cpc)**

---

<div class="post-metadata">

**Author:** ![XeNoMoRPH](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/xenomorph/32/28_2.png) [@XeNoMoRPH](https://forum.cpcwiki.eu/u/XeNoMoRPH)\
**Post date:** [October 28, 2026, 9:19am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/7 "2026-10-28T09:19:19Z")

</div>

Awesome, this is one of the few games that works with the V9990 outside of the SymbOS ecosystem. I’m going to try to capture a video from the real machine, cheers!!!

EDIT: It’s not detecting my V9990, I have the Amstrad Edition model from Tecnobytes

 ![photo_2026-10-28_10-41-56](https://forum.cpcwiki.eu/uploads/default/original/2X/6/6780b994540aa6962e07c1b771b98093675facf8.png)  
e

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 9:56am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/8 "2026-10-28T09:56:35Z")

</div>

I’ve added a v9938 for AMSDAP users - it’s experimental but I’d like to know how you went.

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 9:57am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/9 "2026-10-28T09:57:24Z")

</div>

More are coming! As many of my ZX Spectrum Next games I can port which don’t need the CPU speed requirements of the ZX Spectrum Next.

---

<div class="post-metadata">

**Author:** ![XeNoMoRPH](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/xenomorph/32/28_2.png) [@XeNoMoRPH](https://forum.cpcwiki.eu/u/XeNoMoRPH)\
**Post date:** [October 28, 2026, 9:57am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/10 "2026-10-28T09:57:59Z")

</div>

> [@zhulien](#):
>
> I’ve added a v9938 for AMSDAP users - it’s experimental but I’d like to know how you went

I have it connected to the AMSDAP too

 ![WhatsApp Image 2026-10-28 at 11.10.23](https://forum.cpcwiki.eu/uploads/default/original/2X/6/6aa9804998edac3589056b3d90d64629ca98615b.jpeg)

However, I have the V9990 as I mentioned above, and it seems it doesn’t work on real hardware.

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 2:53pm UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/11 "2026-10-28T14:53:37Z")

</div>

Ah, i just read your notes above - I will get back to you. I also have a real Amstrad one from Technobytes.

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 2:58pm UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/12 "2026-10-28T14:58:05Z")

</div>

Do you have any good documentation on how to code it on CPC? I cannot find anything and am making some guesses. I don’t mean the v9990 itself.

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 28, 2026, 3:33pm UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/13 "2026-10-28T15:33:23Z")

</div>

V9938 at &FF88:

```auto
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 at &FF60:

```auto
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))

```

**What the numbers mean:**

- **5A A5:** the card works. The loader’s test is the problem: the latch, or the top-of-VRAM address.
- **FF FF:** nothing is answering at that port. Look at the adapter, power or reset.
- **Anything else:** something is answering, either another expansion fighting over the port or the card in a bad state.

---

<div class="post-metadata">

**Author:** ![XeNoMoRPH](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/xenomorph/32/28_2.png) [@XeNoMoRPH](https://forum.cpcwiki.eu/u/XeNoMoRPH)\
**Post date:** [October 28, 2026, 4:27pm UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/14 "2026-10-28T16:27:05Z")

</div>

I’ll try it.

---

<div class="post-metadata">

**Author:** ![WacKEDmaN](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/wackedman/32/99_2.png) [@WacKEDmaN](https://forum.cpcwiki.eu/u/WacKEDmaN)\
**Post date:** [October 29, 2026, 10:33am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/15 "2026-10-29T10:33:16Z")

</div>

that game reminds me alot of Subterranean Stryker, with the scanner at the top, and being able to fly both directions, and picking up humans..

[![](https://forum.cpcwiki.eu/uploads/default/original/2X/f/ff98c3b95ac022d9bc8249d3bec934b654a6eb4b.jpeg "Amstrad CPC - Subterranean Stryker - Level 1-3") ](https://www.youtube.com/watch?v=MwDH7UitF7g)

---

<div class="post-metadata">

**Author:** ![XeNoMoRPH](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/xenomorph/32/28_2.png) [@XeNoMoRPH](https://forum.cpcwiki.eu/u/XeNoMoRPH)\
**Post date:** [October 30, 2026, 10:01am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/16 "2026-10-30T10:01:43Z")

</div>

It now works on real CPC hardware with the V9990!!! Great job..

[![](https://forum.cpcwiki.eu/uploads/default/original/2X/9/9f639ff2aca333fc4eeb4e877d663e97ddc125b2.jpeg "Cyborg Hellgate - Amstrad CPC - V9990 version - Short gameplay") ](https://www.youtube.com/watch?v=kafPLC_az7Y)

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 30, 2026, 10:33am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/17 "2026-10-30T10:33:57Z")

</div>

Thanks XeNoMoRPH for testing - seems the card must be initialised in a certain way and now NTC BASIC will have full v9990 support. No excuse for everyone not to make more games for it.

Now rebuilding v9938 to see if the same issue was there.

---

<div class="post-metadata">

**Author:** ![zhulien](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zhulien](https://forum.cpcwiki.eu/u/zhulien)\
**Post date:** [October 30, 2026, 10:35am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/18 "2026-10-30T10:35:16Z")

</div>

What do you think game too fast? That’s how I like it - no more slow defender - but I could put a speed setting in there easily enough.

---

<div class="post-metadata">

**Author:** ![XeNoMoRPH](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/xenomorph/32/28_2.png) [@XeNoMoRPH](https://forum.cpcwiki.eu/u/XeNoMoRPH)\
**Post date:** [October 30, 2026, 11:10am UTC](https://forum.cpcwiki.eu/t/invasion-cyborg-hellgate-and-also-v9990-support/1034/19 "2026-10-30T11:10:52Z")

</div>

It really is super fast!!! By the way, now you have another front opened up: a friend tested it on real MSX hardware and gets this on screen. Here the issue seems to be different from the V9990 detection

 ![IMG_5739](https://forum.cpcwiki.eu/uploads/default/original/2X/a/a22192a546e7171a1abf7e337f6f4c702326da8b.jpeg)
