Sneekie

Zie de bytes bewegen

Sneekie heeft geen "slangobject". De slang, muren, harten en pijlen zijn gewoon tekens in het schermgeheugen, en de game leest en schrijft dat geheugen direct. Stuur hieronder en zie het gebeuren: het scherm bovenaan en het ruwe geheugen eronder zijn dezelfde bytes. Elke zet is een paar peeks en pokes — live rechts getoond. Eet een hart en ergens verschijnt een klaver; de vier pijlen patrouilleren zelfstandig.

Een Sneekie-speelveld verbonden met een gloeiend raster van tekst-videogeheugen.

Elke cel is twee bytes (teken, daarna helderheid/kleur-attribuut), geadresseerd met offset = (rij − 1) × 160 + (kolom − 1) × 2. Dit is een hoek van 22×15 uit het echte 80×25-scherm — dezelfde formule, dezelfde 160-byte rijstap.

Het scherm — wat je ziet
Operaties (deze zet)
Sturen
Het geheugen — de byte in elke cel

Dat is de hele truc achter de code uit 1988. Bekijk hem in de bron op de uitleg-pagina, of naast de JavaScript-port op de migratie-pagina.

PEEK- en POKE-stralen halen 3D-harten, klavers, pijlen, stenen en slangdelen uit videogeheugen.

De tekens achter de bytes

Elk teken dat je net zag bewegen — de slang, de muren, het hart — is één van de 256 tekens die in hetzelfde IBM VGA 8×16 ROM-font zitten waarmee de game tekent. Elk teken is 16 bytes, en elke byte is één rij van 8 pixels: een bit dat aan staat licht een pixel op. Dat hele font zit ingebakken in game.js. De gekleurde tekens zijn degene die Sneekie echt in het videogeheugen poket — beweeg over of tik op een cel om hem te ontleden.

CP437 — alle 256 tekens
Ontleed een teken
Code
Hex
Teken
In Sneekie
16 bytes → 16 rijen pixels
Een CRT-fontverkenner met een CP437-tekengrid, één gekozen hartteken vergroot tot pixels en de 16 byte-rijen ervan.