Meine Arbeiten für Outline 2020

Am 22. und 24. Mai findet eine Online-Abstimmung über Demopati 2020 statt. Die Veranstaltung war für Mai dieses Jahres geplant, wurde jedoch aus allen bekannten Gründen auf Oktober verschoben.
Ich werde über meine Arbeit sprechen


Ich erinnere mich nicht, wann ich auf den 128-Byte-Intro-Wettbewerb aufmerksam gemacht habe, aber jedes Jahr versuche ich, daran teilzunehmen. Die Vorbereitungen für den Wettbewerb werden im Voraus getroffen. Für das Jahr 2020 waren die Pläne Arbeiten für das ZX Spectrum und Atari XE, aber später wurden die Pläne geändert. Ich werde mit Apple II beginnen:

HiRes Walk




Ich mag diesen Computer, er ist attraktiv, weil es viel Mühe kostet, einfache Probleme zu lösen. Aufgaben waren: Tonwiedergabe, Plattenoperationen, Grafiken, SWEET-16-Interpreter.
Die Grafiken für Apple II sind zwei Modi - LoRes mit einer Auflösung von 40x48, 16 Farben und Hires mit einer Auflösung von 280x192 6 Farben.

Das Studium der Bildschirmstruktur wird seltsam erscheinen, wahrscheinlich liegt dieses Format daran, dass Wozniak beim Entwerfen eines Computers auf allen verfügbaren Chips gespeichert hat. Der Umgang mit dem Textmodus und LoRes war für mich einfach, aber der HiRes-Modus war eine Sackgasse. Für alle Vorgänge mit dem Bildschirm sind Codeabschnitte erforderlich, die es dem Intro nicht ermöglichen, in die Größe von 128 Byte zu passen. Also habe ich beschlossen, mit den verfügbaren Verfahren zu betrügenund versuche deine Hand. Die Idee war einfach: Zeichnen Sie eine Linie, die Spuren hinterlässt.

Jeder, der etwas Ähnliches wie ein Pong-Spiel geschrieben hat, kennt den Algorithmus. Für das Intro benötigen Sie die Daten X1, dx1, dxe / Y1, dy1, dye. X1, Y1 - die aktuelle Koordinate, dx1, dy1 bestimmen die Bewegungsrichtung, dxe, farbstoff - setzen die Koordinatengrenze. Mit diesem Datensatz können Sie eine Prozedur für die Koordinaten (X1, Y1), (X2, Y2) oder für die erste weiße Linie verwenden.

Es bleibt eine Spur zu machen. Die Idee kam von selbst: Ich schrieb ein Programm, führte es 16 Mal mit dem Debugger aus und nahm die fertigen Daten - ein Paar (X3, Y3) und (X4, Y4) dient dazu, eine schwarze Linie zu zeichnen. Es stellt sich heraus, dass sich die Punkte (X1, Y1), (X2, Y2) entlang einer bestimmten Flugbahn bewegen und (X3, Y3), (X4, Y4) ihnen folgen, jedoch mit einer gewissen Verzögerung. Die letzte Arbeit - übertrug die notwendigen Daten an Adresse 0, so dass die Größe des Codes aufgrund der Adressierung der Nullseite gespeichert wird.

Die Perfektionisten werden murren, dass die Linie nicht die rechte Ecke berührt, aber ich werde die vorbereitete Entschuldigung bekommen. Die Bildschirmauflösung beträgt 280 Punkte, daher wurde der Code geändert, um 16-Bit-Daten zu bearbeiten, und das Intro ist von 128 Byte auf 256 Byte angewachsen.

Halfton




Dies ist ein Remake der vorherigen Arbeit . Ich habe beschlossen, die Eingabe von Attributen nach Textur zu ändern. 47 Bytes wurden auf 128 erhöht, der Rest wurde von der Texturgenerierung und -anzeige belegt. Es gibt einen Nachteil: Das Intro ist langsam, aber Sie können nicht über 128 Byte hinaus springen.

Sparx




Die Idee eines Intro kam von selbst. Ich beschloss, Code zu schreiben und zu sehen, was passiert. Das Intro ist einfach - es wird ein Standardtextmodus mit zusätzlichen Einstellungen verwendet. Atari hat einen Grafikmodus GTIA, er heißt GRAPHICS 9. Übrigens können Sie in BASIC denselben Modus verwenden. Sie wird eingeschaltet, indem Bit 6 im GRIOR-Speicherplatz (Adresse 623) gesetzt wird. In diesem Modus werden die hohen und niedrigen Bytes des Bytes als Wert der Farbhelligkeit interpretiert (0-15).
Ein Beispiel ist das Programm (Turbo BASIC).
Bild

Das Ergebnis der Arbeit
Bild

. Im Textmodus sieht der Bildschirm nach dem Schreiben von POKE 623.64 folgendermaßen aus:
Bild

Im Textmodus Zeichen, die wie folgt aussehen Rechtecke mit einer Helligkeit von 0-15.

Für Atari gibt es die ATASCII-Zeichencodierung, die Reihenfolge auf der Tabelle
Bild

Zusätzlich zur Codierung gibt es jedoch auch einen internen Zeichencode:
Bild

Geben Sie TurboBasic ein.
POKE DPEEK(88),1
In der oberen linken Ecke wird "!"

Diese Nummerierung wird verwendet, um die Schriftart zu beschreiben - 8 Bytes für Leerzeichen, die nächsten 8 Bytes für "!". In BASIC wird die Schriftartadresse in Zelle 756 (CHBAS) gespeichert. Sie müssen den Wert mit 256 multiplizieren. Außerdem ist die Adresse 756 der Schattenwert für $ D409.

Für den ausgewählten Modus wurden Schriftarten gebildet: 8 Werte $ 00, 7 Werte $ 11..8 Werte $ FF. Wir haben Zeichen mit den Codes 0-15 und einer Helligkeit von 0-15.

Der Aktionsalgorithmus erwies sich als einfach: Zeile für Zeile kopieren und den Wert um 1 verringern, wenn ein Code gefunden wird, der nicht gleich 0 ist.

Smalevi4




Arbeit ist ein Witz. Ich las den Artikel über Serepindipitous Circles im BYTE Magazine, August 1977, Band 2, N8, und beschloss, den Code auszuprobieren. Und wieder stellte sich ein kleines Intro von 48 Bytes heraus. Ich wollte die fertige Arbeit nicht zeigen, deshalb habe ich den Code und die Zeichenoptionen so geändert, dass eine ähnliche Figur mit einem Quadrat in der Mitte gezeichnet wurde. Insgesamt 128 Bytes.

Ufff. Wenn die Präsentation der Prinzipien des Intro genauso viel Zeit in Anspruch nahm wie die Arbeit am Intro? Das Entwickeln von Effekten macht sehr viel Spaß, und das Optimieren des Codes auf Größe macht auch Spaß. Versuchen Sie sich, was ist, wenn es klappt?

All Articles