Learn to Write (Retro)Videogames! new sei italiano?
Learn to Write (Retro)Videogames! new sei italiano?
Embark on a journey into the (retro)programming of three simple video games, three "easy pieces", which will help you become familiar with some basic concepts, to apply them to computers with limited resources.

The purpose of this book, therefore, is not just to illustrate a source code: instead it offers ideas for actively developing the three easy pieces.

Programming while reading.
Learn to Write (Retro)Videogames! new sei italiano?
Embark on a journey into the (retro)programming of three simple video games, three "easy pieces", which will help you become familiar with some basic concepts, to apply them to computers with limited resources.

  • v1.18 [rev. 20251112] HOTFIX


    for pc128op mo5 to8 commit: b2bb76d69 (on github)
    • Fixed transparency optimization on ef936x (mo5, pc128op, to8)
    • Fixed DEFINE TRANSPARENCY COARSE means using transparency
    • Fixed GET IMAGE / BITMAP under ef936x (mo5, pc128op, to8)
    • Fixed file permission


  • v1.17.2 [rev. 20250825] HOTFIX


    for c64 c64reu c128 commit: a6c21228f (on github)
    • Fixed optimized for 6502 (SYS calls)


  • v1.17.2 [rev. 20250726] HOTFIX


    for c64 c64reu commit: 77ceec43b (on github)
    • Fixed MSPRITES under c64/c64reu (irq interference).


  • v1.17.2 [rev. 20250719] HOTFIX


    for c64 c128 c64reu commit: 9082d3b66 (on github)
    • Fixed TIMER increment under multiplexed ack (c64, c128, c64reu).


  • v1.17.2 [rev. 20250714] HOTFIX


    for coco d32 d64 commit: c6ca26621 (on github)
    • Fixed optimistic rule on peephole optimizer for 6809.


  • v1.17.2 [rev. 20250703] HOTFIX


    for coco3 commit: e4e34d2a3 (on github)
    • Fixed wrong warnings on gime and cpc.


  • v1.17 [rev. 20250205] HOTFIX


    for coco commit: b9b789cdc (on github)
    • Fixed hang on BELL command under coco.


  • v1.17 [rev. 20250204] HOTFIX


    for coco3 commit: 3444ee459 (on github)
    • Fixed IRQ processor restore under coco3.


  • v1.17 [rev. 20250203] HOTFIX


    for coco commit: 5565ea4ac (on github)
    • Fixed IRQ processor restore under coco/coco3.


  • v1.17 [rev. 20250202] HOTFIX


    for cpc commit: d1a33ecd8 (on github)
    • Compiler crash if RESTORE is used without DATA #1189


  • v1.17 [rev. 20250130] HOTFIX


    for coco coco3 commit: 1a7649e90 (on github)
    • Fixed palette allocation on gime modes (coco3)
    • Fixed tab parsing under gime (coco3)
    • Fixed INKEY for not printable characters under coco


  • v1.16.5 [rev. 20250106] HOTFIX


    for cpc commit: 8f0823226 (on github)
    • Fixed DEFINE IMAGE FREE WIDTH support under cpc


  • v1.16.5 [rev. 20241220] HOTFIX


    for cpc commit: 7234534cb (on github)
    • Unexpected behaviour with RANDOM HEIGHT and RANDOM WIDTH #1115


  • v1.16.5 [rev. 20241204] HOTFIX


    for c64reu commit: 649dfdcac (on github)
    • Re-enabled peephole optimizer under 6502
    • LEFT (instruction) vs LEFT (function) manual problem #1061


  • v1.16.5 [rev. 20241202] HOTFIX


    for cpc commit: c6253b3fb (on github)
    • Wrong JOY FIRE (constant) #1059
    • INCLUDE command syntax unrecognized #1055
    • Wrong behaviour of INSERT after second line #1058
    • The keyword LCASE doesn't seems recognized (does not compile) #1060
    • LEFT (instruction) vs LEFT (function) manual problem #1061
    • Wrong example on LEFT ARROW (constant) #1062


  • v1.16.4 [rev. 20241118] HOTFIX


    for coco commit: b3bb0c20a (on github)
    • Artefacts on low res scrolling under coco #1037


  • v1.16.4 [rev. 20241118] HOTFIX


    for cpc commit: 8a34d72ab (on github)
    • DIV command unsupported on FLOAT type #1034
    • Wrong DISTANCE result on z80 #1033
    • Fixed UBOUND maximum limit to base 0
    • Fixed n-bits copy for 6502


  • v1.16.4 [rev. 20241116] HOTFIX


    for cpc commit: bba330b7c (on github)
    • Clear seems not clearing variables correctly #1027
    • Issues on ellipse algorithm #986
    • PUT KEY issue (cpc) #994


  • v1.16.4 [rev. 20241115] HOTFIX


    for cpc commit: 4c3a7cb73 (on github)
    • Wrong color value for purple on cpc #1029


  • v1.16.4 [rev. 20241114] HOTFIX


    for cpc commit: 4a056d193 (on github)
    • Ghost keys with ASCIICODE on cpc #1017
    • Issues on ellipse algorithm #986


  • v1.16.4 [rev. 20241110] HOTFIX


    for cpc commit: 9c1a4fa31 (on github)
    • Wrong duration of SOUND command on cpc #1002
    • Conflict between F4 key and F4 note #1004
    • Missing PLAY syntax as documented #1007
    • Added support for volume encoding in midi>imf converter (cpc)
    • VOLUME does not work under cpc #1005
    • MUSIC does not work under cpc #1009


  • v1.16.4 [rev. 20241106] HOTFIX


    for cpc commit: fba7a648c (on github)
    • BLIT IMAGE problem (cpc) #990


  • v1.16.4 [rev. 20241104] HOTFIX


    for cpc commit: a576dee29 (on github)
    • CONSOLE command again (cpc) #979
    • CLINE error (cpc) #976
    • errors with CLEFT$ and CRIGHT$ on cpc #975
    • error with AT command on cpc #973


  • v1.16.4 [rev. 20241101] HOTFIX


    for cpc commit: 03c95b641 (on github)
    • error with CDOWN$ on cpc #973
    • strange behaviour with CMOVE on cpc #970
    • CMOVE documentation unclear (cpc) #971


  • v1.16.4 [rev. 20241030] HOTFIX


    for cpc commit: 712010994 (on github)
    • SGN issue (cpc) #965
    • MAX and MIN error (cpc) #964
    • copying arrays compilation error (cpc) #963


  • v1.16.4 [rev. 20241029] HOTFIX


    for cpc commit: 0c46ce141 (on github)
    • initialising a vector with no dimension (cpc) #961
    • issue with floats on cpc #955
    • BYTE type conversion on cpc #956
    • INSTR error #959


  • v1.16.4 [rev. 20241028] HOTFIX


    for cpc commit: b0a8dfa46 (on github)
    • PAPER/PAPER$ functions don't work as intended on CPC #954
    • Fixed TAB parsing on cpc


  • v1.16.4 [rev. 20241023] HOTFIX


    for zx commit: 6d22abf43 (on github)
    • Fixed PRINT at the end of the screen (zx)


  • v1.16.4 [rev. 20241018] HOTFIX


    for c64 commit: 315958dc3 (on github)
    • Fixed POW using FLOAT


  • v1.16.4 [rev. 20241008] HOTFIX


    for pc128op to8 mo6 commit: c54046679 (on github)
    • Optimized array access on writing (offset calculation)
    • Added CPU instruction cpu_store_8bit_with_offset2
    • GET IMAGE optimizations (SEQUENCE/IMAGES offset precalculation) (pc128op, to8, mo5)
    • GET IMAGE optimizations (direct coordinates and banking)
    • Added support for DEFINE RESIDENT DETECTION ON / OFF (pc128op)
    • PUT IMAGE optimization under ef936 using bank and compression (pc128op)
    • PUT IMAGE optimization under ef936 prefetch frame / sequence (pc128op)
    • PUT IMAGE optimization under ef936 using banks (pc128op, mo5, to8)
    • PUT IMAGE optimization under ef936 using banks (pc128op, mo5, to8)
    • Optimization in PUT IMAGE call (smaller data types) under ef936x (pc128op, to8, mo5)
    • PUT IMAGE optimizations (direct coordinates and banking)
    • Fix D register on BANK READ / UNCOMPRESS on ef936x (pc128op, to8, mo5)


  • v1.16.4 [rev. 20241007] HOTFIX


    for pc128op to8 commit: b960147b1 (on github)
    • Added support for inplace XOR
    • Added support fot cpu_xor_const CPU instruction
    • Optimization: direct constant values passing on procedure calls
    • Fixed unread optimization rules for relative constants
    • Optimized access to limited monodimensional 1-byte arrays
    • Fixed unread optimization rules for relative constants
    • Optimized ABS() by using direct jump on compar
    • Added cpu_less_than_and_branch_8bit_const CPU instruction
    • Optimized ABS() by using high byte direct comparison


  • v1.16.4 [rev. 20241006] HOTFIX


    for pc128op commit: 34804fc40 (on github)
    • Fixed optimization on 6809 code generation (A->B)
    • Fixed optimization on 6809 code generation (B->A)


  • v1.16.4 [rev. 20241002] HOTFIX


    commit: 05326f1a1 (on github)
    • Fix CLS under DEFINE DOUBLE BUFFER ON (pc128op).
    • Fixed KEY PRESSED / KEY STATE on multiple key press (pc128op)
    • Fixed screen vertical offset (c64, c64reu, c128)
    • Fixed SPRITE ENABLE / DISABLE with multiplexed sprites (vic2)
    • Fixed PRINT under multicolor bitmap vic2
    • Fixed disruptive optimization rules under 6502


  • v1.16.3 [rev. 20240921] HOTFIX


    commit: 39765312b (on github)
    • Fixed PUT IMAGE routines for multicolor mode under vic2
    • Fixed color detection for multicolor images under vic2
    • Fixed d64 image generation (c64, c64reu, c128)
    • Fixed PUT IMAGE under c64reu
    • Fixed loading banks from d64 on c64reu


  • v1.16.2 [rev. 20240619] HOTFIX


    commit: c1b65668d (on github)
    • Initialized to zero variables should be not reinitialized #788


Any problem?

If you have found a problem, if you think there is a bug or, more simply, you would like something to be improved, write a topic on the official forum, or open an issue on GitHub.
Thank you!