This question already has an answer here:
- Help: ZX81 BASIC “Peek” function 3 answers
I need a way to find if the character ('<') has hit a wall (Black pixel Graphic)
-On a ZX81 game.
I'm been looking at another game... which uses code
if peek(peek 16398 +256*peek 16399) = code "blackpixel graphic" then ...
Which seems to work for them...
Is this correct code?
I'm not really knowledgable with addresses and getting memory and stuff.
Please help me...
-If you know a better way. Please answer :) -Someone mentioned 'cursor position' what the hell is that on a ZX81? Thanks,
PEEK(PEEK 16398+256*PEEK 16399)
is an idiom meaning “get the character number at the current PRINT position”. This works because the two-byte word at 16398 is used by the ZX81 BASIC/ROM to store a pointer to the memory location in the screen data block corresponding to the PRINT position.So to do collision detection, you'd first have to set:
co-ordinates to where the
>
is about to move, then readthen you can print the
>
on-screen (overwriting the previous character whose code is now inC
) if you want to before doing the check:(I'm guessing the character you want is the all-black character 128, █.)
Oh boy, do I feel old.
Wow does this go back. I haven't used a ZX81, but I did write some games on a TRS-80 way back in the day.
The inner part:
is pretty much taking the value of two memory locations (8 bit) and creating a 16 bit
number from them, which is then used as the address of the outer peek; you might rewrite this as:
I'm guessing that the 'addrToCheck' value is actually the character position in the game, expressed as an address on the screen. So if the value is not a wall, then you would update the values in address 16398 and 16399 with a new character position (using a 'poke', no doubt).
Hope this helps