# Ronald In The Maze (GX4000)

**URL:** https://forum.cpcwiki.eu/t/ronald-in-the-maze-gx4000/386
**Category:** Games!
**Tags:** game
**Created:** [September 11, 2026, 5:32pm UTC](https://forum.cpcwiki.eu/t/ronald-in-the-maze-gx4000/386 "2026-09-11T17:32:15Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Dabzy](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/dabzy/32/417_2.png) [@Dabzy](https://forum.cpcwiki.eu/u/Dabzy)
#### Post date: [September 11, 2026, 5:32pm UTC](https://forum.cpcwiki.eu/t/ronald-in-the-maze-gx4000/386/1 "2026-09-11T17:32:15Z")

</div>

I’d like to share my first Amstrad GX4000 game, Ronald In The Maze:

[RolandMazeGX4000.zip](https://forum.cpcwiki.eu/uploads/short-url/p0BnNYhfKIn7QxEfktYyt7XwDXC.zip) (467.8 KB)

 ![RonaldInTheMaze __back__ w800](https://forum.cpcwiki.eu/uploads/default/original/1X/fe8e1d50c0d6a019318d8aa53c01d24f3d18dedd.jpeg)

 ![screenie](https://forum.cpcwiki.eu/uploads/default/original/1X/69f4a2913386167c5b182202d11b63abf8d3bbba.png)

 ![RonaldInTheMaze __front__ w800](https://forum.cpcwiki.eu/uploads/default/original/1X/da87a7dfd48da6a363e40b521b142b4bdb1d7828.jpeg)

Tested on Arnold and Retro Virtual Machine.

Dabzy

---

<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: [September 11, 2026, 5:45pm UTC](https://forum.cpcwiki.eu/t/ronald-in-the-maze-gx4000/386/2 "2026-09-11T17:45:47Z")

</div>

Ouuuh yeah , thanks

---

<div class="post-metadata">

### Author: ![dthrone](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/dthrone/32/164_2.png) [@dthrone](https://forum.cpcwiki.eu/u/dthrone)
#### Post date: [September 12, 2026, 10:00am UTC](https://forum.cpcwiki.eu/t/ronald-in-the-maze-gx4000/386/3 "2026-09-12T10:00:27Z")

</div>

Nice! haha, I like the backstory 😀 What did you use to make it?

---

<div class="post-metadata">

### Author: ![Dabzy](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/dabzy/32/417_2.png) [@Dabzy](https://forum.cpcwiki.eu/u/Dabzy)
#### Post date: [September 12, 2026, 10:52am UTC](https://forum.cpcwiki.eu/t/ronald-in-the-maze-gx4000/386/4 "2026-09-12T10:52:38Z")

</div>

Lol, the back story… Yeah, I had to keep the [sometimes] dreadful game plots of the era still going! 😃

Well, I made it with my own tools, unfinished at the minute, but I call it Ronald4000, it’s a BASIC-\>ASM compiler, which uses RASM to build the final cart…

As an example, here is a little Invaders game in it:

```auto
' INVADERS - a simple little Space Invaders for the GX4000
' Written in Ronald BASIC

' Sprites (hardware, zero flicker):
' slots 0..11 - the invader formation (4 x 3)
' slot 12 - the player cannon
' slot 13 - the player's bullet
' Images (software, drawn once):
' "bunker" - three shield blocks along the bottom
'
' Controls: LEFT/RIGHT move, FIRE shoots.
' Clear the wave to win; let them reach you and it's game over.
' FIRE plays again.

Mode 1
Ink 0, 0 ' black
Ink 1, 18 ' bright green (text + bunkers)
Ink 2, 6 ' red
Ink 3, 26 ' white
Border 0

Dim alive:Byte[12]

' bake + load the sprite patterns once (all 12 invaders share one pattern)
For i = 0 To 11
  LoadSprite "invader", i
Next
LoadSprite "player", 12
LoadSprite "bullet", 13

' outer loop - one pass = one game, then restart on FIRE

Repeat

  ' ---- reset state ----
  For i = 0 To 11
    alive[i] = 1
  Next
  remaining = 12
  score = 0
  marchX = 0
  marchY = 0
  dir = 1 ' 1 = marching right, 0 = marching left
  tick = 0
  bAlive = 0
  px = 148
  py = 176
  gameover = 0
  won = 0

  Cls
  ' shields - software images, painted once; the sprites glide over them
  DrawImage "bunker", 40, 150
  DrawImage "bunker", 148, 150
  DrawImage "bunker", 256, 150
  Locate 1, 1
  Print "SCORE ", score, " "

  ' place the formation and the cannon
  For i = 0 To 11
    row = i / 4
    col = i - row * 4
    Sprite i, 30 + col * 28 + marchX, 24 + row * 22 + marchY
  Next
  Sprite 12, px, py

  ' main game loop

Repeat
    Wait

    ' ---- move the cannon ----
    If JoyLeft Then px = px - 3
    If JoyRight Then px = px + 3
    If px < 4 Then px = 4
    If px > 292 Then px = 292
    Sprite 12, px, py

    ' ---- fire (one shot at a time) ----
    If FireHit And bAlive = 0 Then
      bAlive = 1
      bx = px
      by = py - 8
    EndIf

    ' ---- update the bullet ----
    If bAlive = 1 Then
      by = by - 6
      If by <= 10 Then
        bAlive = 0
        SpriteHide 13
      Else
        Sprite 13, bx, by
        ' did it hit an invader?
        For i = 0 To 11
          If alive[i] = 1 Then
            If SpritePixelHit(13, i) Then
              alive[i] = 0
              SpriteHide i
              bAlive = 0
              SpriteHide 13
              score = score + 10
              remaining = remaining - 1
              Locate 1, 1
              Print "SCORE ", score, " "
              Exit
            EndIf
          EndIf
        Next
      EndIf
    EndIf

    ' ---- march the formation on a timer (speeds up as they thin out) ----
    tick = tick + 1
    spd = 3 + remaining
    If tick >= spd Then
      tick = 0
      If dir = 1 Then
        marchX = marchX + 8
        If marchX >= 176 Then
          marchX = 176
          dir = 0
          marchY = marchY + 12
        EndIf
      Else
        If marchX <= 8 Then
          marchX = 0
          dir = 1
          marchY = marchY + 12
        Else
          marchX = marchX - 8
        EndIf
      EndIf
      ' reposition the living invaders
      For i = 0 To 11
        If alive[i] = 1 Then
          row = i / 4
          col = i - row * 4
          Sprite i, 30 + col * 28 + marchX, 24 + row * 22 + marchY
        EndIf
      Next
      ' they reached the cannon line?
      If marchY >= 92 Then gameover = 1
    EndIf

    ' ---- wave cleared? ----
    If remaining = 0 Then
      won = 1
      gameover = 1
    EndIf

  Until gameover = 1

  ' round over - clear the field, show the result

For i = 0 To 11
    SpriteHide i
  Next
  SpriteHide 12
  SpriteHide 13

  Locate 16, 12
  If won = 1 Then Print "YOU WIN!"
  If won = 0 Then Print "GAME OVER"
  Locate 12, 14
  Print "FIRE TO PLAY AGAIN"

  ' wait for a fresh FIRE press
  Repeat
    Wait
  Until FireHit

Until 0

```

And a screenie of the IDE, which has autocomplete, but not shown:

 ![ronald4000](https://forum.cpcwiki.eu/uploads/default/original/1X/485a36177c11919f950f237120ec39ba01d9f5bb.png)

It has built in sprite and tilemap editors accessible on the left.

The tool is still unfinished, got quite a bit to work on… Its a bit of a side project to my main one, which, not to be spammy, is a BASIC language called BambooBasic ([www.bamboobasic.org](http://www.bamboobasic.org)), I took a lot from that and implemented it into Ronald4000!

No formal date on when it will be done because Bamboo takes up a lot of my time, but, it will done!

Anyway, thanks for having a peek! 🙂

Dabzy
