# 4XCPC, an Ascendancy inspired 4X game for Amstrad CPC 6128

**URL:** <https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220>\
**Category:** AI-assisted games\
**Tags:** ai\
**Created:** [November 11, 2026, 11:46am UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220 "2026-11-11T11:46:29Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![TheRewk](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/t/9fc348/32.png) [@TheRewk](https://forum.cpcwiki.eu/u/TheRewk)\
**Post date:** [November 11, 2026, 11:46am UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/1 "2026-11-11T11:46:29Z")

</div>

Hi ! I’ve made a version v1.1 of my 4X game, which adds a short help message. It was indeed a bit rough it you never played Ascendancy before.

> **[4XCPC by TheRewk](https://therewk.itch.io/4xcpc)**
>
> A simple 4X game for Amstrad CPC 6128, inspired by Ascendancy

### Code & Logic Involvement

Hybrid (AI generated key routines; human assembled/edited)

### Assets & Pipeline Involvement

Story, dialogue, or manual text

### Project Notes & Prompts

Claude Code + Arkos Tracker + RASM + some custom tools written in Go to edit assets, fuzz and build the game.

This game makes heavy use of split-rasters to display a lot of colors in mode 1. A real CPC or a precise emulator is required.

---

<div class="post-metadata">

**Author:** ![rexbeng](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/rexbeng/32/356_2.png) [@rexbeng](https://forum.cpcwiki.eu/u/rexbeng)\
**Post date:** [November 11, 2026, 12:24pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/2 "2026-11-11T12:24:29Z")

</div>

[4xcpc.dsk](https://forum.cpcwiki.eu/uploads/short-url/qs3giHp7xQzodqlSzOcBC4os4VF.dsk) (199.8 KB)

---

<div class="post-metadata">

**Author:** ![TheRewk](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/t/9fc348/32.png) [@TheRewk](https://forum.cpcwiki.eu/u/TheRewk)\
**Post date:** [November 11, 2026, 1:31pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/3 "2026-11-11T13:31:46Z")

</div>

This Play In Browser button is great! Is it automatic when a DSK is posted?

The split rasters come out fine.

---

<div class="post-metadata">

**Author:** ![rexbeng](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/rexbeng/32/356_2.png) [@rexbeng](https://forum.cpcwiki.eu/u/rexbeng)\
**Post date:** [November 11, 2026, 1:44pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/4 "2026-11-11T13:44:03Z")

</div>

Yes. You only need to drop the file in the message body.

---

<div class="post-metadata">

**Author:** ![TheRewk](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/t/9fc348/32.png) [@TheRewk](https://forum.cpcwiki.eu/u/TheRewk)\
**Post date:** [November 11, 2026, 1:47pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/5 "2026-11-11T13:47:49Z")

</div>

If anybody is interested:

- the DSK is generated directly by a Go library that I wrote a few years ago. It allows to place binary data directly on any sectors. The |cpm loader has a table containing the data location and its target in the CPC ram (banks, offset). It avoids the catalogue usage that makes the head go back at the beginning of the disk.
- The split rasters are backed by a CPC emulation library written by Claude, using [GitHub - koron-go/z80: Z80 emulator written in Go · GitHub](https://github.com/koron-go/z80) . Once NOP calibrated on a real CPC, it allows for automatic unit testing of the split rasters.
- The music and keyboard are handled before the draw area, where the rasters occurs. They are done in constant time, using FAP player for the music.
- When the screen is blanked for enemy turn calculation, the music is replugged on the normal interrupts of the CPC to avoid suttering.
- It can display the full 27 colors at once on a screen. Each line has a palette of 6 colors. Well, 5. The black is fixed. There are 3 pens set during the hsync, (about 30 nops) then, pen 1 and pen 3 are set again during the drawing of the line. It allows to blink a color either on left or right column. The left icon is not touched by the blanking.
- This could be used on any spreadsheet-like game, i think. It allows blinking a line by changing only 8 values each cycles.

The game is be doable in about 2 or 3 hours. Or a few minutes if you just pass time until the opponent wins…

---

<div class="post-metadata">

**Author:** ![Typhon](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/typhon/32/173_2.png) [@Typhon](https://forum.cpcwiki.eu/u/Typhon)\
**Post date:** [November 11, 2026, 2:19pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/6 "2026-11-11T14:19:27Z")

</div>

Ooooh, it looks lovely. I’m very interested in the technical details of the raster changes.

(ie I want to use them in my own productions)

---

<div class="post-metadata">

**Author:** ![TheRewk](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/t/9fc348/32.png) [@TheRewk](https://forum.cpcwiki.eu/u/TheRewk)\
**Post date:** [November 11, 2026, 2:34pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/7 "2026-11-11T14:34:09Z")

</div>

I’ve used AceDL to look at how it was done in the game `Le Fugitif`. The basic idea is to create a long list of pens, point it with HL, and then have something like:

```auto
    ; set background color
    ld e, 0x54
    out (c), 0
    out (c), e

    ld c, 0x01
    ld d, 0x02
    ld e, 0x03

display_loop:
    out (c), c
    outi
    inc b
    out (c), d
    outi
    inc b
    out (c), e
    outi
    
    nop
    ...
    nop
    
    dec a
    jp nz, display_loop

```

Each outi will set the color pointed by HL into the selected pen, then increment it. It’s very important to inc b after, because outi decrements B.

And, of course, before that, you have to wait for the VBL to get in sync.

```auto
    ; wait VBL
    ei ; active les interruptions (nous en avons besoin pour le HALT)
    ld b,0xF5
novbl:
    in a,(c)
    rra
    jr nc,novbl

    halt ; nous sommes synchros 16 lignes avant l'écran
    di ; et maintenant on coupe les interruptions jusqu'au bout

    ; here can go any code that has exact timing like FAP player. Or a lot of nops and loops to use time.

```

And, of course, you can do outi;inc b several times to change the same pen several times during the line, hence the split.

---

<div class="post-metadata">

**Author:** ![Gryzor](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/gryzor/32/7_2.png) [@Gryzor](https://forum.cpcwiki.eu/u/Gryzor)\
**Post date:** [November 11, 2026, 3:03pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/8 "2026-11-11T15:03:11Z")

</div>

Hm, am I having a moment? How do you give your input?

---

<div class="post-metadata">

**Author:** ![TheRewk](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/t/9fc348/32.png) [@TheRewk](https://forum.cpcwiki.eu/u/TheRewk)\
**Post date:** [November 11, 2026, 3:13pm UTC](https://forum.cpcwiki.eu/t/4xcpc-an-ascendancy-inspired-4x-game-for-amstrad-cpc-6128/1220/9 "2026-11-11T15:13:59Z")

</div>

In the game ? Use the arrow and return to select an item in a menu. Then use the highlighted letters in red in the verbs for [Next]. Or [Pass] to skip to the next event. (End of construction,pop growth, research done..)

Maybe I should add an help screen about the controls. 🤔
