Posts by 5ace

    Hallo Retrofan, Dein Mockup geht schon sehr in die Richtung, was ich mir unter Manimalismus für eine GUI vorstelle.
    Besonders die Menüleiste und die Titelleiste. Ich würde auf die Zeichen mit dem Rahmen, die im Scrollbalken auftauchen, auf der ganzen Oberfläche verzichten, d.h. auch zwischen den Eingabefeldern und den Buttons. Das Fieldset und einige andere Kleinigkeiten, würde ich auch anders gestalten.


    Das ist nicht als Kritik oder Aufforderung o.ä. gedacht, sondern nur als Info. Geschmäcker sind ja unterschiedlich...


    Ich habe eine Frage. Gibt es einen Hires Editor, in dem man direkt Zeichen (aus dem Zeichensatz oder Rom) einfügen kann?
    Welchen Editor hast Du benutzt? (Ich würde gerne meine Vorstellung als Mockup umsetzen, nur um zu sehen, wie diese wirken würde.)

    Das finde ich auch und obwohl ich leider über rudimentäre BASIC-Kenntnisse nie hinaus gekommen bin, möchte ich den Vorschlag in den Raum stellen, ein 4-Spieler-Autorennen zu programmieren. Hier mal ein grober Entwurf, wie ich mir das vorstelle:
    Es gibt ja zahlreiche Spiele, wo mehrere Spieler auf einem gemeinsamen Parcours um die Wette fahren. Ich habe mich gefragt, ob es nicht
    möglich sein könnte, einen 4-Spieler-Splitscreen zu realisieren. Dabei sähe jeder Spieler den kleinen Abschnitt der Strecke, auf dem er sich gerade befindet und vom Gameplay wäre das dann ähnlich wie Rally Speedway. Auf dem obigen Bild sieht man in der Mitte die Strecke und wo sich welcher Fahrer gerade befindet, unten sieht man, dass der gelbe und der lila Rennwagen sich gerade vor der Ziellinie befinden. Was noch fehlt sind Eingeblendete Rundenzeiten und Anzeige der jeweiligen Runde, sowie Position des eigenen Spielers. Vielleicht könnte man sogar noch weitere Computergegner realisieren. Was meint Ihr dazu?

    Die Spielidee finde ich sehr gut, weil Sie schön in meine Crap-Game Sammlung passen würde.



    Zur Umsetzbarkeit der Strecke ist mir nur folgende Idee gekommen:
    - Man speichert das Level 4 mal ab und scrollt immer um 4 Pixel.
    - Die Strecke liegt also einmal im Original vor, einmal um 4 Pixel nach links verschoben, einmal um 4 Pixel nach oben und einmal um 4 Pixel nach oben und nach links verschoben vor.
    - Am besten kann man sich das mit den Blöcken aus dem Petscii-Zeichensatz vorstellen. Ich habe das jetzt nicht zuende gedacht, aber es könnte auch sein, dass mehr Details möglich sind. Die einfachste Vorstellung ist der Original-Zeichensatz im Hires-Charset-Modus mit dem Hellgrau als Hintergrundfarbe und dem Grün als Vordergrundfarbe (so wäre die Hardware-Sprite-Hintergrundkollision nutzbar).
    - Die Stecke muss nicht bei Programmstart in der Form vorliegen, sondern könnte aus einer 1-Bit Bitmap entpackt werden.


    Angenommen man würde 32KB für die Strecke reservieren, dann wäre das "echte" Level ein viertel davon groß, d.h. 8 KB würde einer Größe von 128x64 Zeichen entsprechen. Die 1-Bit-Bitmap, um diese 8KB zu füllen wäre also 32Byte*64Byte = 1KB groß.
    128x64 Zeichen (=Die Dimensionen der Strecke) entsprechen ca. 3x2,5 Bildschirmen.


    Zur Darstellung der Autos genügen 2 Rasterirqs. Ein Ausschnitt für einen Spieler könnte 20x12 Pixel groß sein. Wenn man "Glück" hat und schön optimiert, könnte man jeden Frame ein Bildschirmupdate machen...


    Nachfolgend ein Screenshot zu einem unoptimierten Test, in dem ich 20x10 Pixel für jeden Spieler update. Der Cyan-farbene Bereich zeigt die freie Zeit an. Wenn man jeden zweiten Frame ein Update durchführen würde, hätte man mit Sicherheit keine Hürden.



    Was ich noch anmerken wollte ist, dass im Rasterzeileninterupt/"Spritemultiplexer" die Farben und die Spriteblöcke nicht neu gesetzt werden müssen, weil sie immer gleich bleiben. (Im Speicher würde man z.B. 16 Richtungen für das Fahrzeug bereithalten.)
    (...)


    Nicht, dass ich das jetzt programmieren möchte, aber wie hast Du Dir die Steuerung durch die anderen Spieler vorgestellt?
    4 Joysticks oder 2 Joystick + 2 mal Keyboard ?
    (...)


    Wenn man noch einwenig weiterspinnt, könnte man sich auch andere Spiele in dieser Form vorstellen:
    - z.B. etwas Gauntlet ähnliches oder irgendetwas wie Pacman, in dem 2 Spieler 2 andere jagen usw.usf....

    Ich wünsche euch allen Frohe Weihnachten mit einem weiteren Crapgame "Happy Deer Hunter".
    (Das Spiel sollte wahrscheinlich besser "Crappy Deer Hunter" heißen.)



    Storyline:
    Santas Hirsche haben eine neue Form von Rinderwahnsinn eingefangen und sind geflohen.
    Hilf ihm, indem Du sie mit Deinem Gewehr betäubst, damit Weihnachten rechtzeitig gefeiert werden kann.
    Feuer drücken, um Deine Mission zu starten - und erinnere Dich daran, dass keine Tiere verletzt werden
    HOHOHO, frohe Weihnachten ;)



    Viel Spaß damit
    5ace

    Wäre es dann nicht besser, den Threadtitel ändern zu lassen, sonst findet das doch keiner!
    WOWXS ist gar nicht schlecht, würde nur noch mehr Spaß machen, dass wenn die Monster durchgelaufen sind, einem Punkte wieder abgezogen würden.

    Danke CapFuture1975 für Dein Feedback.
    Ja, das stimmt mit Threadtitel.
    Die Idee mit dem Punktabzug werde ich in einer nächsten Version von WOWXS einbauen.

    Hallo an alle,


    nachfolgend noch ein extrem simples "Spielchen" (als Übung in einer Sizung entstanden) mit einer Größe von 1.473 Bytes für den C64, wovon 896 Bytes auf die Sprites entfallen.
    Ich werde alle "Crapgames", die noch so auf diese Weise entstehen, einfach unter dieses Thema posten.


    Viel Spass damit (evtl. als Idee für ein loader-game o.ä..)
    5ace

    Files

    • wowxs.prg

      (1.47 kB, downloaded 19 times, last: )

    Hallo an alle,


    anbei ein kleines und extrem simples Spielchen.
    Es handelt sich um ein Atari Combat-ähnliches "Spiel", wenn man es so nennen kann, in 790 Bytes für den C64.
    Danke für die Idee und viele Grüße an den Frankfurter Nerd Stammtisch.


    5ace

    Files

    Der 19.08.2018 ist verstrichen. Keine Interessenten/Teilnehmer und somit auch keine "Gewinner".
    Evtl. kommt demnächst ein neuer Vorschlag von Jemandem für die ASM-Compo, in der Hoffnung, dass dieser dann einwenig "mehr" Resonanz findet.

    Nur zur Info, als kurzen Zwischenstand bzw. als Messlatte oder Ansporn für eine noch unoptimierte COMPARE_STRING-Routine für die einfachste Form, d.h.
    - einfacher Stringvergleich mit mehreren möglichen Platzhaltern '?' und max. einem Wildcard-Zeichen '*', ohne Trennzeichen und mit Zeropage-index-nutzung in 35 Bytes.


    Der Suchstring lautet
    !text "G??FARB*",0


    und liefert als Ergebnis
    "G1 FARBDEMO.PRG"
    "G4 FARBDEMO.PRG"


    (((Der Code ist überhaupt nicht optimiert.)))
    Edit: jetzt sind es 32 Bytes für die einfachste Form.

    Grundgerüst (645 Bytes .prg ohne Vergleichsfunktion) im "Compodictator"-Style:
    (Wer möchte kann es natürlich verbessern.)


    f64-asmcompo6-main.asm


    Ich hoffe Ihr findet gefallen an der Idee/ dem Vorschlag.
    Als Deadline wähle ich mal selbst So., den 5.8.2018 um 23:59 Uhr, d.h. in 2 Wochen.
    Ich hoffe Ihr (bzw. jemand) macht mit.
    Fragen oder Unklarheiten könnt Ihr natürlich noch stellen.

    Ich habe folgende Idee für eine Aufgabe:
    Stringvergleich mit Wildcards.


    Stellt euch vor Ihr möchtet eine Liste an Dateinameneinträgen filtern bzw. ihr möchtet nach Dateinameneinträgen suchen.
    Ein Dateinameneintrag hat den Aufbau: <Dateiname>.<Dateiendung><nullbyte>


    Der Suchstring kann
    - einen oder mehrer Platzhalter '?' für ein Zeichen beinhalten
    - max. 1 Wildcard-Zeichen '*' für den Dateinamen beinhalten
    - max. 1 Wildcard-Zeichen '*' für die Dateiendung beinhalten
    - kann max. 1 Trennzeichen '.' für die Markierung der Trennung zwischen Dateiname und Dateiendung beinhalten.


    Nach dem Wildcard-Zeichen soll kein Matching im Dateinamen oder in der Dateiendung mehr erfolgen, d.h. es markiert, falls es verwendet wird, die letzter Stelle des Dateinamens oder der Dateiendung im Suchstring.


    Die Funktion, die geschrieben werden soll, soll also
    - zwei nullbyte-terminierte Strings (einen Suchstring und einen Dateinameneintrag) miteinander vergleichen und zurückgeben, ob die Strings unter Berücksichtigung der Wildcards im Suchstring "gleich" sind oder nicht.
    - Es dürfen keine Kernal- oder Basicfunktionen verwendet werden.
    - Die Funktion soll möglichst klein sein.


    ------
    Man könnte die Aufgabe schwieriger gestalten:
    - Die Zeropage soll unter keinen Umständen verwendet werden, d.h. weder direkt, noch indexiert.


    oder einfacher:
    - Man könnte den Stringvergleich auf einfache Strings ohne Trennzeichen reduzieren, d.h. ein Suchstring kann einen oder mehrere Platzhalter '?' und max. ein Wildcard-Zeichen '*' enthalten.


    (((Ein Grundgerüst habe ich noch nicht, aber ich stelle mir das so vor, dass die Funktion auf zwei feste Zeiger im Speicher (, je nach Schwierigkeit der Aufgabe nicht zwangsläufig in der Zeropage!, ) mit den Startadressen der zu vergleichenden Strings zurückgreifen kann.)))


    Was haltet ihr von der Idee?

    Ich lasse euch einen Termin wählen.
    Zum jetzigen Zeitpunkt kann ich keine feste Zusage für einen bestimmten Tag machen, ... d.h. ich lege mich noch nicht fest und geselle mich dann ggbfs. spontan und gerne dazu ;)

    Die Reihenfolge "erst die Korrekturwerte, dann das eigentliche Programm" braucht beim Laden unnötig viel Speicher, da die Korrekturwerte komplett zwischengespeichert werden müssen. Anders herum ist besser: Erst lädt man das Programm, dann iteriert man über die Korrekturwerte - so brauchen sie quasi überhaupt keinen Hauptspeicher. Ich meine mich zu erinnern, dass das bei .o65 ebenfalls so ist.

    Ich habe gerade nachgeschaut: bei .o65 liegt die Tabelle nach dem Code. .o65 hat jedoch noch einen Header vorne an der Datei.


    Dein Vorschlag ist gut, d.h. man spart sich das Verschieben/Kopieren.
    Am besten, wenn man auch auf einen Header vorne verzichten könnte und ihn hinten (in umgekehrter Reihenfolge!) dranhängt.
    Ich glaube jedoch, dass man trotzdem erst alles laden muss, damit man die Länge der Headers ermitteln/abfragen kann.



    Aber es ist schon eine Einsparung:
    1.) Speicher allokieren
    2.) Datei gesamt laden
    3.) Adressen ändern
    4.) Header aus dem Speicher entfernen/freigeben


    Ich denke, dass der zusätzliche Speicher für die Tabelle/den Header nicht ins Gewicht fallen wird;
    Geht man davon aus, dass z.B. 100 Speicherstellen in einem Programm geändert werden müssten, entspricht das 208 Bytes für den Header, d.h. wenn man "Glück" hat, könnte die letzte Page des Programms druch den Header ausgefüllt werden und man könnte alles einfach so stehen lassen, ohne den Header zu entfernen/den Speicher freizugeben, da er ja Programmcode enthält.


    edit: in dem Beispiel könnte man auch die Headerlänge statt headerstart angeben, ich denke jedoch, dass die max. Größe eines Programms bei 64KB liegt und dass man sich dadurch eine Berechnung spart.

    Mir ist gerade aufgefallen, dass ich die Ideen für Bibliotheksaufrufe vergessen/übersprungen habe.
    Welche Ideen gibt es von eurer Seite dazu?
    Evtl. können wir hier einige Vorschläge sammeln.