A downloadable programming tutorial

Download NowName your own price

This book explains in simple language how to develop games for the ZX Spectrum in assembly language, from "Hello world" to your first complete game.  This document shows how to display text on screen, read the keyboard and joystick, operate the speaker etc.  Step by step it shows you how to perform each task and create a Centipede style game.  From there it moves on to trickier topics such as drawing sprites, double buffering and using mathematics.  Everything you need to know to create a Spectrum game in 97 pages.

StatusReleased
CategoryBook
Rating
Rated 5.0 out of 5 stars
(7)
AuthorJonathan Cauldwell
GenreEducational
TagsRetro, ZX Spectrum

Download

Download NowName your own price

Click download now to get access to the following files:

HowToWriteSpectrumGames1.1.pdf 670 kB

Comments

Log in with itch.io to leave a comment.

(1 edit)

I'm wondering if the code for attribute-based collision could be modified to be character-based instead.

I want to implement something like that to my game.

How easy would that be to do?

(2 edits)

How to disable the "scroll?" message that keeps appearing whenever I try to place a tile in one of the two rows of space on the bottom of the screen?

Please reply.

(+1)

When using the ROM routines you need to open the channel to display things on the bottom two lines.  Putting 0 or 1 into the accumulator and calling 5633 will do the job.  When you want to display on the rest of the screen, call 5633 with 2 in the accumulator.

Thanks!

Now the tiles appear to be scrolling from the bottom and disappearing when they touch the top of the screen.

I don't understand what you're trying to do.  If you want to scroll the screen just call the ROM routine at 3582

I put 0 in accumulator and called 5633 and this is what happened.

(the same thing happens when I put 1)

What I'm trying to do is be able to put UDGs and text on the bottom of the screen without the "scroll?" thing ruining it.

(+1)

Once you've opened the lower screen for printing, make sure you reset the cursor position to the top left.  Printing chr$ 22, chr$ 0 and then chr$ 0 will do that.  Then you should be able to put another 64 characters in the bottom panel.  Don't go beyond that or that part of the screen will scroll up

Is it possible that in the routine "scadd" (Chapter 8) ycoord and xcoord have been accidentally exchanged in the code ?

Yes, that's the way I have always written games.  X is the distance from the top of the screen, Y is the distance from the left edge.  I usually put comments in to warn people that's how my routines work

Thanks so much for this resource! I have a question: in the section regarding loudspeaker audio where do the constants 437500 and 30.125 come from in this formula ?

HL = Pitch = 437500 / Frequency – 30.125

Oh wait, I found the answer in Dr Logan's book :)

Thank you for this.

Thanks a lot! I have some interest in retro games. But have no idea about ZX machine, or how to make something for it.

Great. A good lecture for summer :)
Thanks

Amazing. The kind of work that cannot be absent in physical format. Thank you. 

I'm always grateful when an experienced developer share their knowledge in a structured way. Instant buy :-)