# Vespertino world racing

**URL:** <https://forum.cpcwiki.eu/t/vespertino-world-racing/334>\
**Category:** Games!\
**Tags:** game\
**Created:** [September 7, 2026, 11:32am UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334 "2026-09-07T11:32:12Z")\
**Posts on this page:** 20\
**Page:** 4

<div class="post-metadata">

**Author:** ![DanyPPC](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/danyppc/32/536_2.png) [@DanyPPC](https://forum.cpcwiki.eu/u/DanyPPC)\
**Post date:** [October 16, 2026, 2:41pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/61 "2026-10-16T14:41:17Z")

</div>

Even more anxiety 🙂

Only 2 question:

- we know game will be released in Cartridge format with a CPC std and Plus series adapter, is it right ?
- Is a digital version planned for emulators or FPGA systems ?

---

<div class="post-metadata">

**Author:** ![Rhino](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/r/a5b964/32.png) [@Rhino](https://forum.cpcwiki.eu/u/Rhino)\
**Post date:** [October 16, 2026, 3:03pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/62 "2026-10-16T15:03:32Z")

</div>

[![](https://forum.cpcwiki.eu/uploads/default/original/2X/c/c6ec4cd8e323abd03348debffb345df85361786b.jpeg "Vespertino World Racing (Amstrad CPC) - Trailer (50hz)") ](https://www.youtube.com/watch?v=Kb-lauXvqjk)

---

<div class="post-metadata">

**Author:** ![SagaDS](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/sagads/32/160_2.png) [@SagaDS](https://forum.cpcwiki.eu/u/SagaDS)\
**Post date:** [October 16, 2026, 3:17pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/63 "2026-10-16T15:17:40Z")

</div>

Again, just AI slope…

:Laying on the ground crying:

---

<div class="post-metadata">

**Author:** ![SagaDS](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/sagads/32/160_2.png) [@SagaDS](https://forum.cpcwiki.eu/u/SagaDS)\
**Post date:** [October 16, 2026, 3:19pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/64 "2026-10-16T15:19:43Z")

</div>

No 4 players on same screen? Give me back my money that I didn’t have yet spent…

---

<div class="post-metadata">

**Author:** ![Spybro](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/spybro/32/1154_2.png) [@Spybro](https://forum.cpcwiki.eu/u/Spybro)\
**Post date:** [October 16, 2026, 3:30pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/65 "2026-10-16T15:30:46Z")

</div>

Rhino really I’m speechless.

RESPECT to you personally and to all the guys that took part in this.

Starting with Batman Forever in 2011 you have really recharged the CPC community in so many ways.

Thank you!

---

<div class="post-metadata">

**Author:** ![Vincent\_GR](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/vincent_gr/32/271_2.png) [@Vincent\_GR](https://forum.cpcwiki.eu/u/Vincent_GR)\
**Post date:** [October 16, 2026, 3:37pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/66 "2026-10-16T15:37:07Z")

</div>

The killer game is here as promised.

Thank you.

---

<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:** [October 16, 2026, 3:42pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/67 "2026-10-16T15:42:09Z")

</div>

I can only say:

wtf.

---

<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 16, 2026, 3:52pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/68 "2026-10-16T15:52:02Z")

</div>

Pending seeing it on real CPC hardware, it looks impressive—not long now 👽🆒

---

<div class="post-metadata">

**Author:** ![Maniac](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/maniac/32/53_2.png) [@Maniac](https://forum.cpcwiki.eu/u/Maniac)\
**Post date:** [October 16, 2026, 4:51pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/69 "2026-10-16T16:51:12Z")

</div>

Simply stunning!

---

<div class="post-metadata">

**Author:** ![DanyPPC](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/danyppc/32/536_2.png) [@DanyPPC](https://forum.cpcwiki.eu/u/DanyPPC)\
**Post date:** [October 16, 2026, 5:17pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/70 "2026-10-16T17:17:33Z")

</div>

Simply A m a z i n g !!!

---

<div class="post-metadata">

**Author:** ![Devlin](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/devlin/32/19_2.png) [@Devlin](https://forum.cpcwiki.eu/u/Devlin)\
**Post date:** [October 16, 2026, 5:30pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/71 "2026-10-16T17:30:57Z")

</div>

it’s looking impressive, but why did you get the slopmachine to do that crappy trailer?

Thirty seconds of video - running on real hardware would have done the trick even more effectively.

---

<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:** [October 16, 2026, 5:39pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/72 "2026-10-16T17:39:16Z")

</div>

grumpy old guy gonna grump 😃

---

<div class="post-metadata">

**Author:** ![Grimmy](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/grimmy/32/38_2.png) [@Grimmy](https://forum.cpcwiki.eu/u/Grimmy)\
**Post date:** [October 16, 2026, 5:41pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/73 "2026-10-16T17:41:32Z")

</div>

Not sure about _World Racing_ in the title. _Real Racing Simulator_ has a much nicer ring to it. And while we’re at it, why not add _Gran_ before _Vespertino_? There we go! We’ve nailed it!

---

<div class="post-metadata">

**Author:** ![ixien](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/ixien/32/366_2.png) [@ixien](https://forum.cpcwiki.eu/u/ixien)\
**Post date:** [October 16, 2026, 7:41pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/76 "2026-10-16T19:41:58Z")

</div>

OMG, imagine a version on a standard Plus cartridge, full joypad control, playable on a 128K modded GX4000 😛! Can you imagine?

---

<div class="post-metadata">

**Author:** ![cpcitor](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/cpcitor/32/321_2.png) [@cpcitor](https://forum.cpcwiki.eu/u/cpcitor)\
**Post date:** [October 16, 2026, 9:00pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/77 "2026-10-16T21:00:59Z")

</div>

Interesting video. It seems to confirm my intuition.

Below my intuition and guesses. I’m not judging or trying to downplay. The result is very impressive. Bravo!

## The overall strategy IMHO has two axes

- 🐿 Z80 has no instruction cache. Every instruction costs a lot (compared to i386 and later where instructions executed many times within a small loop are much faster). Fast Z80 code is code that has _fewer_ instructions executed _per byte written_. Therefore, a golden rule of Z80 code optimization is: _remove all instructions that do not write bytes to the destination_. Remove (unroll) loops. It’s surprising how much you can remove when pushing such approach to the extreme. This was by exploring these ideas to the extreme that I managed to write [Sunny Day (for A Shadow Party) :: pouët.net](https://www.pouet.net/prod.php?which=104432)
- 💿 Extreme memory-vs-CPU tradeoff strategy. Normally, the CPC has not enough memory to push the strategy to the extreme. If you have an external ROM as big as you want, you can go even further. Details below.

## Details

- 👾 Pixel peeping the video frame-by-frame reveals that cars are drawn with byte granularity. Width extends left an right by jumps of two pixels. When one of those is unwanted it’s grey. Invisible on the grey sections of the road. Visible elsewhere. This makes simpler and faster drawing routines: just write bytes, no mask no bit handling.
- ⚡ Still, an extremely fast drawing routine is needed. Apply golden rule above.
- ↔ If the car doesn’t move up or down (player car in particular), the routine is even simpler and faster.
- 💿 Push those choice to extreme lengths, whatever the cost in storage. This is why this works only with a ROM cartridge. Huge (read-only) areas are needed.
- 🪟 The huge rotating cars in the selection screen is simple delta compression. Most pixels don’t change and changes are known in advance, which makes the thing very fast. When you have lots of ROM bytes available just do that. Again similar in [Sunny Day (for A Shadow Party) :: pouët.net](https://www.pouet.net/prod.php?which=104432) where the actually written set of bytes is _n times smaller_ than what it seems (IIRC n=6).
- ⚡ All animated things are drawn with “graphics-as-code”. Drawing does not call a _generic_ “draw something” routine given some _specific_ “something data”. Instead “drawing something” means calling a _specialized_ routine (e.g. one routine for each car in each specific orientation, one routine for each object at each distance). Routines are pre-generated Z80 code, conceptually very simple, just write bytes, no loop no nothing. (Technique is not new, has been used in a number of prods. I did this for the level transition goodies in [Just Get 9](https://cpcitor.itch.io/just-get-9))
- 💿 A giveaway for the “once you assume a huge ROM is available, it’s okay to have huge ROM needs” strategy is the number of views of each object. In the video the authors claim 5000+ sprites. Once you have a zillion bytes and can generate thousands of sprites with a render of a digital model of a car, do it. The result is impressively smooth and enjoyable rendering of the 3D positions of the cars on the road.
- 🛣 This I guess applies to the road drawing. Have a huge list of specialized routines that just draw a fully finished horizontal section of the road. Call the proper routine for each line. It will be faster than the already fast Chase HQ which draws rough sections then refines for the white lane lines. This is of course more complex than a repetitive pattern like in [Sub Hunter](https://www.cpc-power.com/index.php?page=detail&num=6258), yet that game shows that huge areas of the screen can be animated smoothly by actually writing (_push_ing) bytes.
- 🪟 Also double buffer but not for the whole screen. A full overscan screen is 24k of useful bytes. With specific settings of the CRTC and maybe some screen split, those 24k can be “packed” (leaving the rest of the memory not too fragmented). Two buffers means 48k. A full swappable 16k area for bank switching remains. You bank switch the zillion pages to access the physical ROM in the cartridge. Even the code can be replicated in ROMs.

And… I’m not 100% sure this covers all. Maybe (probably) there are more secrets.

---

<div class="post-metadata">

**Author:** ![Rhino](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/r/a5b964/32.png) [@Rhino](https://forum.cpcwiki.eu/u/Rhino)\
**Post date:** [October 16, 2026, 10:03pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/78 "2026-10-16T22:03:31Z")

</div>

Thank you very much for your words!

---

<div class="post-metadata">

**Author:** ![Rhino](https://forum.cpcwiki.eu/letter_avatar_proxy/v4/letter/r/a5b964/32.png) [@Rhino](https://forum.cpcwiki.eu/u/Rhino)\
**Post date:** [October 16, 2026, 10:44pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/79 "2026-10-16T22:44:15Z")

</div>

An interesting analysis, I won’t say whether it’s accurate or not! 🙂  
But I have a question… In these types of games, the width of the road is usually much greater than the width of the visible screen, since the road shifts as you move laterally. Would the routines you’re proposing, which draw each horizontal line, render only the visible area? if so, how many routines would be required for each horizontal line to achieve horizontal pixel scrolling? Thanks!

---

<div class="post-metadata">

**Author:** ![ervin](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/ervin/32/87_2.png) [@ervin](https://forum.cpcwiki.eu/u/ervin)\
**Post date:** [October 16, 2026, 10:56pm UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/80 "2026-10-16T22:56:17Z")

</div>

This is absolutely beyond mindblowing. Just incredible!

Congratulations to the whole team for this phenomenal development.

@Rhino

Will there be any future discussions about some of the techniques used in the game?

---

<div class="post-metadata">

**Author:** ![Anthony\_Flack](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/anthony_flack/32/35_2.png) [@Anthony\_Flack](https://forum.cpcwiki.eu/u/Anthony_Flack)\
**Post date:** [October 17, 2026, 12:36am UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/81 "2026-10-17T00:36:19Z")

</div>

When I heard the game was going to be using thousands of pre-rendered sprites stored on ROM I knew it would have a smoothness of scaling and rotation that went beyond anything that had been attempted before and seeing it in motion at last, it does not disappoint. The CPC can do impressive things if you strap a lot of memory to it, but it takes a lot of work to use it well.

What has really impressed me is the amount of care and attention given to the front end, menus etc. This is a time-consuming and not always fun part of game development and it all looks as polished as can be, and with a coherent design that pulls everything together.

With this amount of effort we can only hope it plays as good as it looks. I see quite a few cars on screen at the same time which is promising. Not skimping on the opponent cars.

---

<div class="post-metadata">

**Author:** ![cpcitor](https://forum.cpcwiki.eu/user_avatar/forum.cpcwiki.eu/cpcitor/32/321_2.png) [@cpcitor](https://forum.cpcwiki.eu/u/cpcitor)\
**Post date:** [October 17, 2026, 6:26am UTC](https://forum.cpcwiki.eu/t/vespertino-world-racing/334/82 "2026-10-17T06:26:10Z")

</div>

> [@Rhino](#):
>
> In these types of games, the width of the road is usually much greater than the width of the visible screen, since the road shifts as you move laterally. Would the routines you’re proposing, which draw each horizontal line, render only the visible area? if so, how many routines would be required for each horizontal line to achieve horizontal pixel scrolling? Thanks!

Well, you the master coder of the Batman Group, are asking me a question about coding? There must be a trick. 😅

And indeed, I have not done any calculation, its also why I strategically wrote “a zillion bytes”, which brings some welcome “blur”.

Okay let me think and try to answer your question. Having specialized routines that write a whole road line in all the cases would be simple (constant time, write 80 or even 96 bytes in full overscan) but would require an extremely high number of routines. One way to reduce could be to PUSH ground-color bytes from the right then call specialized routines to write the road itself, then PUSH some more ground-color bytes. This model limits somehow the number of combinations but cannot draw when the road extends farther than the screen edges on the left or right. Mmmh, there’s a further option that again limits the routine count, while keeping the overall speed fast. How about a cascading two-level table: for a given line geometry, lookup a list of shorter routines, call these routines. They have precomputed byte values to draw all the pixels and their number is much smaller. This will cover even situations where the road line extends outside the screen left and right, without run-time computation. Do I guess right, @Rhino ?

> [@cpcitor](#):
>
> And… I’m not 100% sure this covers all. Maybe (probably) there are more secrets.

(warning, joke ahead 🚨) Plot twist: through the years the Vespertino teasers were faked, authors ask people on forum, gather their answers through the years until a powerful enough AI exists, to feed it the answers and get the real job. 🤯 Just kidding. 😄

Let’s become real again: congrats to the whole team for this impressive prod!

After all this time and teasers I’m eager to at last see and play Vespertino!

[Previous page](https://forum.cpcwiki.eu/t/vespertino-world-racing/334.md?page=3)

[Next page](https://forum.cpcwiki.eu/t/vespertino-world-racing/334.md?page=5)
