Landung 001

Für diesen Beitrag wurde das CBM prg Studio verwendet.
weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

CBM prg StudioSource ‚aufräumen‚ und Grafiken erstellen

Da wir im CBM prg Studio in einem Projekt auch mehrere Source-Dateien verwenden können, habe ich das Projekt etwas angepasst.

  1. Alle Dateien, die zu einem Programmteil gehören (z. B. Puzzle) bekommen einen Präfix. Somit heißt ‘solved.sdd‚ nun ‚puzzle_solved.sdd‚.
     
  2. Routinen, die für mehrere Programmteile interessant sind, wurden nach ‚love_lib.asm‚ ausgelagert und werden dann mit incasm "love_lib" im jeweiligen Programm eingefügt. Das Selbe wurde mit den allgemeingültigen Konstanten gemacht, allerdings habe ich diese auch noch in den neuen Source ‚lander.asm‚ kopiert, damit die Autovervollständigung klappt. In abgeschlossenen Modulen wird aber nur noch  incasm "system_const.asm" verwendet. Es gibt auch noch ein incasm "love_const.asm" , dort sind alle Projektbezogenen Konstanten zu finden.
     
  3. Zur Sicherheit wurden alle Sourcen, außer dem aktuellen ‚lander.asm‚, vom Build ausgeschlossen.

 

Der Canyon
Wir entwerfen als erstes unseren Canyon im Screen Designer. Wir verwenden zum letzten Mal den standard Zeichensatz, ab Level 3 entwerfen wir unsere eigenen Zeichensätze. Der Canyon sollte leicht labyrinthartig sein. Unser Raumschiff wird später die Größe eines Sprites haben. Daher müssen wir darauf achten, dass an den engsten Stellen mind. drei Zeichen Platz bleiben. Ein Sprite hat bekanntlich die Ausmaße 24*21 Pixel und ein Zeichen belegt 8*8 Pixel. Auch diesmal verzichten wir darauf das Sprite über die X-Position 255 hinaus zubewegen.

Hier nun mein vorläufiger Entwurf für den Canyon:

Entwurf des Canyon
Entwurf des Canyon

Der sichere Landebereich ist grün hervorgehoben.

 

Das Landungsschiff
Unser Schiff wird diesmal ein Hi-Res-Sprite. Damit wir aber etwas Farbe bekommen, werden wir es aus zwei Sprites zusammensetzen. Die Feuerstöße sind dann wieder Multi-Color-Sprites.

Hier seht ihr alle Sprites und wie sie später auf dem Bildschirm übereinandergelegt aussehen könnten.

Die Sprites
Die Sprites

Das waren die Vorbereitungen, jetzt wurde „lander.asm„ noch soweit angepasst, dass der Canyon angezeigt wird.

Das laufende Programm
Das laufende Programm

Wundert euch nicht, dass der Screenshot so unscharf ist. Ich habe die CRT-Emulation unter WinVICE aktiviert, um einen ‚retromäßigeren‚ Look zu erzielen.

 


Das wars erstmal. Beim nächsten mal wollen wir für einen blauen Himmel über dem Canyon sorgen, aktuell sieht es ja eher wie eine Höhle aus. Dazu benötigen wir den berühmt / berüchtigten Rasterzeileninterrupt.


 

Start im Java Emulator

 


Schrott!!Naja...Geht so...Ganz gut...SUPER! (3 Bewertungen | Ø 5,00 von 5 | 100,00%)

Loading...


 

<<< zurück | weiter >>>

 

weitersagen ...
Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

6 Gedanken zu „Landung 001“

  1. Hallo Jörn,

    Ich wollte was neues ausprobieren und habe mit Charpad einen Hintergrund mit 40×25 Chars erstellt, ohne Multicolor, aber wo die verschiedenen Tiles ihre eigene Farbe haben.

    Den Zeichensatz lade ich in CBM Prg Studio bei $3800 ein.

    Die Map lese ich mit einer leicht umgebauten Version von deiner DrawScreen: Routine ein und schreibe sie in $0400,x usw.
    Das klappt auch soweit wunderbar und der Hintergrund wird auch in Vice angezeigt. Alles bis jetzt in einer Character-Farbe.

    Ich habe ein zweites Mal die drawscreen: Routine angepasst, dieses Mal um die Farben zu laden, aber diese werden nicht richtig angezeigt.

    Wäre es ok dir die kleine Datei zu zeigen? Ich weiss einfach nicht wo die Farbinfo herholen. Charpad exportiert zwar Attribute, diese sind aber nur 48 Bytes gross, und keine 1000 Bytes (40×25 Farbwerte sollten es ja sein).

    Danke für deine Hilfe.

    1. Hallo,
      das Char Pad ist in erster Linie ein Editor für Tile Sets und darauf basierende Maps. Damit erstellst du 1×1 bis 5×5 große ‚Bauteile‘ (Tiles) aus einzelnen Zeichen. Mit den Tiles wird dann der Bildschirm (Map) zusammengesetzt. Daher beziehen sich die Atrribute (Farben) auf die Tiles und nicht auf den gesamten Bildschirm. Aus diesem Grund gibt es in deinem Beispiel auch nur 48 Bytes und keine 1000!

      Du musst also, je nachdem wie deine Tiles aussehen und wofür du dich beim Export entschieden hast, die Farben für das jeweilige Zeichen bzw. Tile holen und ins Color-RAM kopieren.

      1. Danke für die Erklärung. Schade, dass Charpad nicht eine Art Color-Map für die Char-Map exportieren kann. So muss ich ja dann jedes mal manuell ausrechnen wohin ich welche Farbe hinschreibe. 🙁
        Oder eventuell eine Tabelle mit 40×25 Byte werten generieren und dann ab $d800 einkopieren.

        VG

        1. Du musst dich vom ‚Bildschirm-Denken‘ lösen…

          Ich weiß zwar nicht wie deine Map genau aussieht, aber wenn du z. B. nur 1×1 große Tiles verwendest, dann kannst du ganz einfach innerhalb einer Schleife den Bildschirm und das Color-RAM füllen…

          lda map,Y ;Tile-Nr. (hier =Zeichen) holen
          sta SCREENRAM,Y ;auf dem BS ausgeben (nur bei 1x1)
          tax ;Tile-Nr. ins X-Reg. kopieren
          lda attribute,X ;Farbe holen
          sta COLORRAM,Y ;ins Color-RAM kopieren

          Du benötigst keine Hilfstabellen oder Berechnungen. Bei größeren Tiles, musst du freilich mit der Tile-Nr. die benötigten Zeichen aus dem exportierten ‚Tile Set‘ holen.


          Ich habe zwar bei ‚Fahrt 003‚ schon mal etwas über Tiles geschrieben, aber vielleicht mache ich nochmal einen Beitrag mit dem Char Pad und wie man die Daten ausgibt.
          1. Ich denke auch, dass ich Tiles fälschlicherweise wie Character behandele, da ich das Tiles-Konzept noch nicht ganz verstanden habe.
            Ich dem Sinne wären ein Beitrag zum Workflow von Charpad -> CBM Prog Studio höchst interessant. 😉

            Danke für den Code. Ich werde es mit der Logik versuchen.

            Hier wird illustriert was soweit passierte:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Protected by WP Anti Spam