Meine MSX-Anwendungen

Während einer außerschulischen Tätigkeit in meiner Grundschule (ARCE) lernte ich in den letzten Jahren mit Juan Carlos, einem Lehrer, der aus Salvador Batlle kam, in Basic zu programmieren.

Später kaufte ich einen MSX-Computer (ein Sony Hit Bit 501P (Sony HB-501P)) und gemeinsam mit einem Freund erforschten wir die Möglichkeiten der Maschine und verbrachten ganze Nachmittage mit Schreibprogrammen, die in einigen MSX-Magazinen der Zeit auf Papier geschrieben wurden.

Der nächste Schritt, nachdem ich die Herausforderung von meinem Mathematiklehrer angenommen hatte, war das Programmieren in MSX Assembly Language (Z-80 Prozessor).


Auf dieser Website beabsichtige ich, einige der besten Anwendungen zu teilen, die ich damals im.cas-Format programmiert habe:

  • Flöte: Ein Programm für einen Wettbewerb an meiner Sekundarschule (I.B. Gabriel Ferrater), als ich im ersten Jahr der BUP (in BASIC) war.
  • Design: Ein Grafikdesigner, um die Grafik für die Spiele zu entwerfen, die er in Zukunft programmieren wollte (im Assembler Z-80).
  • Zodia: Ein Raumschiff-Spiel, mit vertikalen Scrolling enthalten (in Assembler Z-80).
  • Habla: Eine Text-zu-Sprach-Anwendung für Spanisch. (Eine Kombination aus Z-80 Assembler und BASIC).
  • Tetris: Meine Version des beliebten Tetris-Spiels. (in Assembler Z-80).
  • Ristu: Der Same von dem, was eigentlich ein Labyrinthspiel sein sollte, inspiriert von Konamis Labyrinth von Galious. Mir ist die Erinnerung ausgegangen... (im Assembler Z-80).
  • Ich teile auch die Quellcodes der Apps in Assembler, zusammen mit dem Hisoft Assembler, die ich gekauft zurück in den Tag, und die ich unter den.cas-Dateien im Download (nicht alle von ihnen funktionieren).


Ich werde auch einige Änderungen an der Kommandozeilen-Schnittstelle von wav2cas, programmiert von Vincent van Dam, teilen.

Es gibt nun eine optionale Funktion, um das von wav2cas verarbeitete Signal unter anderem auf ein csv zu deponieren.

Ich werde auch eine Reihe von komplementären Skripten teilen, um mit.cas zu arbeiten, oder mit den neuen.csv der wav2cas Signalproben:

  • histogram.py : Skript, um Histogrammwerte aus Samples zu erhalten.
  • ........................................................................................................
  • split_msx_tapes_into_singular_files.py : Splitt.cas-Dateien in.cas-Dateien mit einzelnen Dateien. Behandelt casdir-Dateitypen sowie asm (HiSoft Assembler) Quelldateien.
  • ........................................................................................................
  • Extrakt_msx_sources.py : Es erlaubt Ihnen, eine.txt-Datei mit jeder Quelldatei aus einer.cas-Datei (ascii und asm) zu extrahieren. Es funktioniert nicht sehr gut, aber es kann ein Anfang sein.
  • ........................................................................................................

Flöte (1987)

Uhr vídeo

Grafikdesigner (1989)

Uhr vídeo

Zodia (1987-1989)

Uhr vídeo

Synthesizer (1991)

Uhr vídeo

Tetris (1992)

Uhr vídeo

Spricht (1991)

Uhr vídeo

Ristu (1990-1992)

Uhr vídeo

Sitzung mit dem Assembler

Uhr vídeo

Programmbeschreibung

image
image

Das Flauta-Programm wurde entwickelt, um an einem Software-Wettbewerb an meiner Sekundarschule (I.B. Gabriel Ferrater) teilzunehmen, als ich im ersten Jahr der High School war.

Es soll eine Anwendung für die Überprüfung der Fingerposition für die Wiedergabe jeder Note auf einer Flöte sein.

Das Programm ist eine Ausrede, um eine Benutzeroberfläche im grafischen Modus anzuzeigen.

Sie können ein Video des Programms arbeiten sehen Demo-Video

image
image

Die Idee des Grafikdesigners (Diseña) war, ein Werkzeug zu haben, um die Grafik für die Spiele, die er in der Zukunft programmieren würde, richtig zu gestalten.

Es ist in Assembler Z-80 programmiert.

Ich habe es nach zwei intensiven Monaten der Entwicklung programmiert.

Es ist das profitabelste Programm, das ich programmiert habe, dank seiner Nützlichkeit und der Anzahl der Male, die ich es benutzt habe.

Damit könnten Sie Präsentationsbildschirme, Sprites und Spielfiguren entwerfen.

Sie können ein Video des Programms arbeiten sehen Demo-Video


Es gibt auch eine Demo mit den besten Screenshots und Grafiken, die ich damit entworfen habe: Video der besten Bildschirme

image
image

Ich programmierte das Zodia Raumschiff Spiel, inspiriert von Konamis scrollenden Raumschiff-Spielen.

Es ist in Assembler Z-80 programmiert.

Es ist meinem Mathelehrer (J. R. M. - José Ramón Molina) gewidmet, weil er mir die Idee gab, Assembler zu lernen.

Das Spiel ist auf SCREEN 1, mit leichteren Grafiken als SCREEN 2.


Um dir eine Vorstellung davon zu geben, wie die Dinge waren...

Offensichtlich musste irgendwann die Punktzahl des Spielers gedruckt werden...

Die Zahlen entsprachen entweder uint8 oder uint16

Für die Anzeigetafel wählte ich den Typ uint16 (es konnte 65535) nicht überschreiten.

Um die Ziffern zu drucken, musste die Zahl in Base-10 umgewandelt werden, was ich durch die Teilung durch 10 n mal tat, indem ich die Moduli und Quotienten nahm.

Aber... der Z-80 hatte in Assembler keine Anweisungen zum Multiplizieren oder Trennen!! Und was jetzt?

Nun, es ist einfach... wir teilen uns, subtrahieren den Teiler von der Dividende N mal, und wir erhöhen den Quotient, solange das Ergebnis nicht überläuft...

Wie kitschig!

Nun, so waren die Dinge...


Es gibt ein Video, das die komplette Scroll zeigt (mit einigen Fehlern): Vollständiges Scroll-Video


Sie können ein Video des Programms arbeiten sehen Demo-Video

image

Nachdem ich die Highschool beendet hatte, wollte ich meine Programmierkenntnisse in der Montagesprache noch einmal ausprobieren.

Ziel war es, einen an den MSX-Soundchip angepassten Synthesizer zu programmieren (mit drei Stimmen, und Reverb-Effekte (schnelle Änderung (manuell) der emittierten Frequenz für jede gedrückte Note), und die Note auszuschalten, wenn die Taste freigegeben wurde.

Der Zustand von drei Synthesizer-Tasten gleichzeitig gedrückt (die drei Stimmen des Chips) wurde erinnert.

Ich wollte auch die Frequenzen nutzen, die mit jeder Note verbunden sind, die ich bei einer Suche in einem Bereich des MSX ROMs festkodiert fand.

Um die Suche durchzuführen, fuhr ich fort, einfach die Frequenz der Note A ((Tuninggabel) 400 Hz zu kennen und einen Wurzelzwölffaktor von 2 (2 ^ (1/12)) (eine Oktave, zwölf Halbtöne) anzuwenden.

Und dann auf der Suche nach den entsprechenden Elementen im ROM, mit uint16 Typennummern.


Sie können ein Video des Programms arbeiten sehen Demo-Video

image

Im Sommer zwischen meinem Abitur und meinem ersten Jahr Teleco (1991) arbeitete ich intensiv als Kellner bei Bar Argente's in Salou.

Ich nahm den Bus hin und her, und auf dem Rückweg, bevor ich nach Hause ging, hielt ich an einer Arkade, um ein paar Spiele der fabelhaften Tetris zu spielen...

Nach mehr als 60 Spielen dieses Spiels wurde ich ein Experte, und ich liebte es, dieses Spiel zu finden, wenn das Schicksal mich zufällig an einen Ort brachte, wo es Arcade-Maschinen gab.


1992 beschloss ich, meine Version von Tetris, in Assembler Z-80 und in der Rekordzeit von drei Tagen zu programmieren.

Damals hatte ich schon ein wenig mit der Digitalisierung von Sounds (aus dem MSX-Band) geflirtet, und auf dem Standby-Bildschirm des Spiels wird ein Song durch den Lautsprecher gespielt. (Der OpenMSX Emulator emuliert genau dieses Detail).


Sie können ein Video des Programms arbeiten sehen Demo-Video

image

Ich erinnere mich nicht, als ich das erste Mal auf die Möglichkeit stieß, Sounds aus dem MSX-Band zu digitalisieren.

Aber ich erinnere mich, dass ich nicht einmal wusste, in welcher Frequenz ich gesampelt habe... Ich habe einfach eine Verzögerungsschleife zwischen Samples für die Digitalisierung und die gleiche Verzögerungsschleife für die Wiedergabe durch den Lautsprecher gesetzt.

Als diese Verzögerung zu groß war, reproduzierte sich der Klang nicht gut. Später erfuhr ich durch die Sampling-Theorie, dass dieser Effekt als Aliasing bekannt war.


Von einer Fernsehserie, die ich mochte, bekam ich die Idee, dass ein Computer einen Satz "aussprechen" könnte, der vom Benutzer gewählt wurde.

Mit dem neuen Spielzeug der Digitalisierung machte ich mich also auf den Weg, alle Phoneme zu erhalten, indem ich meine eigene Stimme digitalisierte.

Der nächste Schritt wäre, durch die Buchstaben eines Satzes zu gehen, es in Phonemen zu trennen und jedes Phonem wiederum auszusenden.

Ja, ein bisschen kitschig, aber es gab nichts mehr...

Ich programmierte die Regeln der spanischen Phonetik in einer Assembler Z-80 Anwendung, mit der Interaktion mit dem Benutzer, indem ich nach dem Satz in BASIC fragte.


Mit dem openMSX Emulator können Sie die Ausführung dieses kleinen Programms perfekt nachahmen.


Sie können ein Video des Programms arbeiten sehen Demo-Video

image

Nun, nachdem ich unzählige Stunden damit verbracht hatte, The Maze of Galious zu spielen, beschloss ich, ein Labyrinthspiel zu kreieren, das von ihm inspiriert wurde, und mit einem sehr ähnlichen visuellen Aussehen (mit meinen Einschränkungen).

Das Programm war wieder in Assembler Z-80.

Ich erstellte die Bildschirme (in einer 14 x 12 Bildschirmmatrix) basierend auf 4x4 Zeichenblöcken, die wie ein Puzzle kombiniert wurden.

Also, ein Bildschirm belegt 5 x 8 = 40 Bytes, obwohl eine feste Speicherbelegung hinzugefügt werden musste, um die 4 x 4 Blöcke zu definieren.


Ich rettete mehrere Implementierungen, um den Charakter um die Welt zu bewegen, obwohl die vollständigste ('PERFEC'), Ich konnte es nicht bekommen, um im Emulator zu arbeiten.

Ich denke, es hat damit zu tun, dass der Quellcode in der Montage zu viel Platz nahm und mit dem Bereich BASIC-Daten kollidierte, und der Assembler unter diesen Bedingungen weigerte sich, das Programm zusammenzubauen.

Ich erinnere mich, dass ich eines Tages den Trick machen musste, den BASIC-Speicherbereich höher zu bewegen (mit einigen wunderbaren Pokes, an die ich mich nicht mehr erinnere).

Und ohne sie gibt es keine Möglichkeit, diese Implementierung funktionieren zu lassen (obwohl dieser Quellcode korrekt in den.cas extrahiert wurde).


Sie können ein Video des Programms arbeiten sehen Demo-Video

image

Der Assembler ist ein wesentlicher Bestandteil der Entwicklung in Assembler Z-80.

Ich kaufte das Devpack von hisoft und machte das Beste daraus und nutzte es intensiv.

Es gab auch einen Monitor, aber ich wusste nie, wie man ihn zum Laufen bringt...


Im Video sehen Sie ein Beispiel einer Sitzung mit dem Assembler Demo-Video

Videos

Downloads