Sehr coole Bilder 👍
Mega Karate - Wer macht mit ?
-
- Idea/Feature request!
- MC64
- Thread is Unresolved
-
-
Wielviel Hindergründe soll denn das Spiel enthalten ?
Ich denke, so 1024 dürften erstmal ausreichen.
-
Wielviel Hindergründe soll denn das Spiel enthalten ?
Yes
Die Hauptstädte der Welt fände ich gut. Und natürlich im Kakteenhain.
-
Oder wie hier schon zu sehen. vor den Sehenswürdigkeiten derWelt.
-
Ich hab mal ein Problem mit den Sprites.
Ich möchte die Spriteblöcke (16x21 Pixel in 16 Farben) umschalten um eine Animation zu realisieren.
Ich setze den Pointer auf Block 0 und erhalte das erste Bild. Wenn ich den Pointer jetzt auf 1 setze,
habe ich Teile vom ersten und vom 2. Bild. erst wenn ich den Pointer auf 3 setze, also 2
Blöcke auslasse erhalte ich erst das 2. Bild. Obwohl die Daten 168 Bytes für das 1. Bild und direkt dahinter
die nächsten 168 Bytes für das 2. Bild im Speicher liegen.
Muss ich an VIC Konfig noch etwas ändern ?
-
Wielviel Hindergründe soll denn das Spiel enthalten ?
Yes
Die Hauptstädte der Welt fände ich gut. Und natürlich im Kakteenhain.
Daran habe ich auch schon gedacht, aber welchen Platz soll ich da nehmen damit man es gleich erkennt.
Berlin ist leicht, da kann man den Bundestag nehmen, Das Branderburger Tor wurde auch schon gewünscht.
Aber ich werde mir das was einfallen lassen.
Und die Hauptstadt von Kakteen-Land muss ich noch finden. Bin aber ihr auf der Spur.
-
Ich hab mal ein Problem mit den Sprites.
Ich möchte die Spriteblöcke (16x21 Pixel in 16 Farben) umschalten um eine Animation zu realisieren.
Ich setze den Pointer auf Block 0 und erhalte das erste Bild. Wenn ich den Pointer jetzt auf 1 setze,
habe ich Teile vom ersten und vom 2. Bild. erst wenn ich den Pointer auf 3 setze, also 2
Blöcke auslasse erhalte ich erst das 2. Bild. Obwohl die Daten 168 Bytes für das 1. Bild und direkt dahinter
die nächsten 168 Bytes für das 2. Bild im Speicher liegen.
Muss ich an VIC Konfig noch etwas ändern ?
Nur mal so ein paar Gedanken dazu. Muss gleich vorwegschicken, dass ich mich mit BASIC Null auskenne, da ich immer alles direkt in Assembler mit den Chips direkt bespreche.
Kann es sein, dass BASIC gar keine Fullcolor-Sprites unterstützt? Dann musstest Du wahrscheinlich per POKE dem VIC direkt sagen, dass das Sprite Fullcolor ist? Ich gehe mal stark davon aus, dass BASIC das ja nicht mitbekommt und weiterhin davon ausgeht, dass nur ein Bit pro Pixel an Farbddaten im RAM stehen. Durch die Änderung werden aber nun immer vier Bits pro Farbe benutzt - das Sprite wird also viermal größer im RAM. Daher musst Du wohl jetzt auch immer die Pointer entsprechend anders setzen.
-
Kann es sein, dass BASIC gar keine Fullcolor-Sprites unterstützt? Dann musstest Du wahrscheinlich per POKE dem VIC direkt sagen, dass das Sprite Fullcolor ist? Ich gehe mal stark davon aus, dass BASIC das ja nicht mitbekommt und weiterhin davon ausgeht, dass nur ein Bit pro Pixel an Farbddaten im RAM stehen. Durch die Änderung werden aber nun immer vier Bits pro Farbe benutzt - das Sprite wird also viermal größer im RAM. Daher musst Du wohl jetzt auch immer die Pointer entsprechend anders setzen.
Die Sprites sind auf Fullcolor gesetzt.Ich dachte der VIC passt sich dem intern an.
Dann habe ich doch nichts falsch gemacht.
-
Obwohl die Daten 168 Bytes für das 1. Bild und direkt dahinter
die nächsten 168 Bytes für das 2. Bild im Speicher liegen.
Du hast es zwar eh schon selbst beantwortet. Aber ja, bei Fullcolor 16x21 Sprites brauchen wir jeweils 3 x 64-Byte-Slots, daher muss der Pointer jeweils um 3 erhöht werden. Die jeweils letzten 24 Bytes (192-168) bleiben dann halt unbenutzt ...
-
Du hast es zwar eh schon selbst beantwortet. Aber ja, bei Fullcolor 16x21 Sprites brauchen wir jeweils 3 x 64-Byte-Slots, daher muss der Pointer jeweils um 3 erhöht werden. Die jeweils letzten 24 Bytes (192-168) bleiben dann halt unbenutzt ...
Ich hatte hier mit mehreren Problemen zu kämpfen. Erst mal war mir nicht klar, das der VIC das nicht anpasst, was die Spritepointer angeht.
Das nächste war das meine Spritedatei fehlerhaft ohne Ende ist. Ich habe versucht mit C64 Studio die Sprites zu konvertieren, das geht
aber voll in die Hose. Unterm Strich kam vom ersten Spriteblock abgesehen, nur Grafikmüll dabei raus.
Mein Werdegang der letzten Stunden: -> -> -> -> -> -> -> -> ->
Aber jetzt gehts wieder.
-
Wot? Wo gibt's Probleme mit den Sprites beim C64Studio? Wenn ich da Fehler drin habe, immer her mit der Info!
-
Ich hatte gedacht das das Problem schon lange behoben worden ist, da ich ja auch damit Ärger hatte.
Und Endurion hat das seiner seits auch gleich korrigiert als ich das gemeldet habe. Dies bezog sich sich zwar nur auf das S-Basic von Snoopy,
dürfte aber nichts daran änderen, oder täusche ich mich da.
-
Nur mal ganz grob. Ich werde Später Bilder machen.
Ich habe aus einer Datei die Sprites importiert. Das funktioniert auch hervorragend. Wenn ich
aber die als Binärdatei exportiere. Dann sind die Sprites verschoben. Sie sind in der horizontalen verschoben.
Eventuell auch in der vertikalen, da bin ich aber noch nicht sicher.
Ich habe Data Statements generiert. Mach ich das mit einem Spriteblock, stimmen die Daten.
Bei 2 Spriteblöcken, stimmen die Daten dann nicht mehr überein.
Daher kam bei mir die Frage mit den Pointern auf, da ich dachte das ich die ganze Zeit einen Fehler mache.
So wie ich das bisher sehe, werden da zusätzliche Datas integriert, die da nichts verloren haben und alles
durcheinander bringen. Bis auf den ersten Block.
-
Was ich schon mal gemacht habe, als das bei mir mit Sprites war bei C64-Studio.
Ich hab die Sprites mit S-Basic erstellt.
Siehe Beispiel:
Code- 5 BORDER 0:PAPER 0:INK 5
- 20 CURSOR 10,10:PRINT "JUMPMAN-SPRITE EINLESEN UND ABSPEICHERN"
- 30 PROC "FCSPRITE JUMPMAN"
- 40 FCSPRSAVE "JMFCSPR04",U8
- 50 CURSOR 10,11:PRINT "SPRITES WURDEN GESPEICHERT"
- 60 END
- ###################################
- ## FCSPRITE JUMPMAN KLON ##
- ###################################
- 10000 DEFPROC "FCSPRITE JUMPMAN"
- ## SPRITE 0 MIT 16 FRAMES FCSPRDEF <Sprite>, <Frame>, <Zeile>, "<String>"
- 10005 FCSPRDEF 0,1, 1,"................"
- 10010 FCSPRDEF 0,1, 2,"................"
- 10015 FCSPRDEF 0,1, 3,"......999999...."
- 10020 FCSPRDEF 0,1, 4,".....98888889..."
- 10025 FCSPRDEF 0,1, 5,"....9888888889.."
- 10030 FCSPRDEF 0,1, 6,"....98888888889."
- 10035 FCSPRDEF 0,1, 7,"....98888888889."
- 10040 FCSPRDEF 0,1, 8,"....98881..189.."
- 10045 FCSPRDEF 0,1, 9,"....988811.11..."
- 10050 FCSPRDEF 0,1,10,".....98111111..."
- 10055 FCSPRDEF 0,1,11,".....29111111..."
- 10060 FCSPRDEF 0,1,12,"....22222111...."
- 10065 FCSPRDEF 0,1,13,"...222222222...."
- 10070 FCSPRDEF 0,1,14,"..2222B2222211.."
- 10075 FCSPRDEF 0,1,15,".1112BB2222111.."
- 10080 FCSPRDEF 0,1,16,".111.B44444111.."
- 10085 FCSPRDEF 0,1,17,"..11.B44444....."
- 10090 FCSPRDEF 0,1,18,".....BBB444....."
- 10095 FCSPRDEF 0,1,19,"...1144BBB44111."
- 10100 FCSPRDEF 0,1,20,"...1111..111111."
- 10105 FCSPRDEF 0,1,21,"...11111..1111.."
So habe ich es dann mit allen meine Sprites gemacht.
Mit C64 Studio die Sprites gezeichnet, dann die Sprites nach S-Basic konventieren lassen.
Endurion war so freundlich mit der Bitte von mir das im C64 Studio mit einzubauen.
Ist zwar etwas umständich, aber meine Sprites werde damit korrekt angezeigt.
Falls es von Wichtigkeit ist, die Sprites werden für das S-Basic nach $8000 geladen.
Und man hat unter S-Basic nur einen bestimme Anzahl für seine Sprites. Hängt mit dem Speicher zusammen. Aber drüber kann Snoopy mehr schreiben.
-
Und man hat unter S-Basic nur einen bestimme Anzahl für seine Sprites. Hängt mit dem Speicher zusammen.
Der MEGA65 bietet uns hier super Möglichkeiten; Wir sind zwar wie früher mit 8 gleichzeitig limitiert, aber wir haben ein extrem schnelles DMA (auch in BASIC) und wir haben viel Speicher im ATTIC RAM. Üblicherweise ändert man bei Spriteanimationen den Spritepointer. Ich möchte das aber jetzt bewusst etwas überstrapazieren: Wir könnten sogar die Spritepointer oder einzelne Spritepointer gleich lassen und dafür laufend Spritedaten vom ATTIC in den lower RAM schieben.
In einer Sekunde kann BASIC65 mit EDMA über 3000 (!) Einzeltransfers von 168 Bytes Daten durchführen. Natürlich muss in einer Sekunde sonst auch noch viel gerechnet werden (Joystick input, Move Sprites, Töne spielen, KI, etc), aber mit 10% der verfügbaren Rechenleistung bekämen wir satte 30fps für 8 Sprites hin, ohne auch nur ein einziges Mal einen Pointer zu ändern. Das ist natürlich nur ein Rechenbeispiel, denn natürlich werden wir mit den Pointern arbeiten, aber ich wollte v.a. klarstellen, dass wir - was den Speicher anbelangt - mit großer Sicherheit an keine Grenze stoßen werden
-
aber ich wollte v.a. klarstellen, dass wir - was den Speicher anbelangt - mit großer Sicherheit an keine Grenze stoßen werden
Besser ist das. Die Sprites nehmen derzeit 43KB ein und das ist gerade etwas mehr als die hälfte.
-
Besser ist das. Die Sprites nehmen derzeit 43KB ein und das ist gerade etwas mehr als die hälfte.
Ja, überhaupt kein Problem. Ganz im Gegenteil, je mehr unterschiedliche Bewegungen, umso interessanter das Spielerlebnis
-
Falls es von Wichtigkeit ist, die Sprites werden für das S-Basic nach $8000 geladen.
Das ist in dem Fall egal. Ich habe die Sprites in Bank 4 liegen.
Es ist so, das die Datei falsch erstellt wird. Das erste Sprite ist immer korrekt.
Das zweite dann nicht mehr, das habe ich von Hand korrigiert und das funktionierte dann auch.
-
Ja, überhaupt kein Problem. Ganz im Gegenteil, je mehr unterschiedliche Bewegungen, umso interessanter das Spielerlebnis
Deshalb hatte ich mich für die GBA Sprites entschieden. Da hat man die meisten Bewegungen.
War es nun eigentlich möglich mit einem R3 Board Joysticks mit 2 Buttons anzusprechen ?
Ich meine, das geht nur mit neuen R6 Board.
-
War es nun eigentlich möglich mit einem R3 Board Joysticks mit 2 Buttons anzusprechen ?
Da bin ich überfragt. Ich weiß wie 1 Button implementiert ist (Bit 7), aber ich kann natürlich nicht ausschließen, dass es neben 56320/56321 auch noch andere Register gibt, mit denen der Status vom 2. Button abgefragt werden kann ...