Hilfe: ZX81 'BASIC' Peek-Funktion [duplizieren]

8

Ich muss herausfinden, ob der Charakter ('& lt;') eine Wand getroffen hat (schwarze Pixelgrafik)

- Bei einem ZX81-Spiel.

Ich habe mir ein anderes Spiel angeschaut ... welches Code benutzt

wenn peek (peek 16398 + 256 * peek 16399) = Code " blackpixel Grafik " dann ...

Das scheint für sie zu funktionieren ...

Ist das der richtige Code?

Ich bin nicht wirklich mit Adressen vertraut und bekomme Speicher und so.

Bitte helfen Sie mir ...

- Wenn Sie einen besseren Weg kennen. Bitte antworte :) Jemand erwähnte "Cursorposition" was zur Hölle ist das auf einem ZX81? Danke,

    
James Rattray 07.07.2010, 16:31
quelle

2 Antworten

5

PEEK(PEEK 16398+256*PEEK 16399) ist ein Idiom, das "die Zeichenanzahl an der aktuellen PRINT-Position" angibt. Dies funktioniert, weil das Zwei-Byte-Wort bei 16398 vom ZX81 BASIC / ROM verwendet wird, um einen Zeiger auf den Speicherplatz im Bildschirmdatenblock zu speichern, der der PRINT-Position entspricht.

Um die Kollisionserkennung durchzuführen, müssen Sie zuerst Folgendes einstellen:

%Vor%

koordiniert, wo sich > bewegt, dann gelesen

%Vor%

Dann können Sie das > auf dem Bildschirm ausgeben (überschreiben Sie das vorherige Zeichen, dessen Code jetzt in C ist), wenn Sie dies vor der Überprüfung tun möchten:

%Vor%

(Ich vermute, das gewünschte Zeichen ist das schwarze Zeichen 128, █.)

Oh Junge, fühle ich mich alt.

    
bobince 07.07.2010, 18:12
quelle
1

Wow, das geht zurück. Ich habe keinen ZX81 benutzt, aber ich habe einige Spiele auf einem TRS-80-Weg zurück geschrieben.

Der innere Teil:

  

(Peek 16398 + 256 * Peek 16399)

nimmt so ziemlich den Wert von zwei Speicherplätzen (8 Bit) und erstellt ein 16 Bit

Nummer von ihnen, die dann als die Adresse des äußeren Peek verwendet wird; Sie könnten dies wie folgt umschreiben:

  

addrToCheck = (peek 16398 + 256 * peek 16399)

     

pixelValue = peek (addrToCheck)

     

wenn pixelValue = code "blackpixel graphic" dann ...

Ich vermute, dass der 'addrToCheck' Wert tatsächlich die Zeichenposition im Spiel ist, ausgedrückt als eine Adresse auf dem Bildschirm. Wenn also der Wert keine Wand ist, würden Sie die Werte in Adresse 16398 und 16399 mit einer neuen Zeichenposition aktualisieren (mit einem 'poke', kein Zweifel).

Hoffe das hilft

    
jackjumper 07.07.2010 16:59
quelle

Tags und Links