Posts by Soulstealer

    Ok, danke, werde ich mal weiter schauen.


    Ich kann man noch daran erinnern, wie ich immer so ca.30 Minuten für das Laden gebraucht habe.

    Am Anfang kannte ich den Trick mit dem Zähler am Tape ja noch nicht ;)

    Der hat dann halt immer die ersten Spiele überspringen müssen.

    Ich glaube da waren auch nur zwei Spiele drauf die "gut" waren, das andere interessiert mich natürlich jetzt.

    Ich suche den Namen einer Spielesammlung für den C64, folgende Eckdaten meine ich zu kennen:

    • erschien auf Tape
    • ein Spiel darauf war Wizard
    • muss vor 1990 raus gekommen sein

    Evtl. kann sich da ja jemand dran erinnern, müssten meine ersten Spiele damals gewesen sein?

    Was man auf jeden Fall bei RGB machen sollte ist den 100 Ohm Widerstand zwischen Sync und Masse (Muss man zur Not nicht mal löten, wie hier runterscrollen zum untersten Bild)

    Wenn Lötkenntnisse vorhanden sind, den GBS modifizieren https://github.com/ramapcsx2/g…l/wiki/Build-the-Hardware


    Ein GBS kann danach auch z.B. über WLAN gesteuert werden, hier wäre ein Blick auf die Web-Oberfläche.

    Die zusätzlichen Kosten belaufen sich auf ein paar EUR für einen ESP8266.

    Hm, ich glaube ich habe einen Fehler entdeckt, bin mir aber auch nicht zu 100% sicher.

    Ich wollte je nach Definition eine andere Makrodefinition haben, aber irgendwie bekomme ich das nicht hin.


    Hier mal ein stark vereinfachtes Beispiel um den Fehler aufzuzeigen:

    Edit: Ok, mit der !end Syntax geht es zumindest. Sollte aber mit den Klammern eigentlich auch gehen, oder?

    Hi Endurion, ich habe hier mal einen Featurewunsch:


    Könnte man die Project und Solution Dateien evtl. auftrennen, so dass die Buildscripte und Dateiname von den User Informationen (geöffneten Tabs usw.) getrennt sind?

    Im Moment ist es nämlich nicht wirklich möglich mit mehreren an einem Projekt (z.B. GIT/Dropbox) zu arbeiten, da sich die Solution und Project Dateien bei jedem öffnen ändern.


    Gerade im bei Verwendung von GIT währe es natürlich auch schön, wenn diese Dateien Text (XML?) wären, dann kann man die auch schöner mergen.

    Egal, ob ich mit PSEUDOPC oder *= $02 arbeite, erzeugt der immer falschen Code.
    Ich hätte in Zeile 7 ein STA $04 erwartet, aber erhalte STA $0005

    Das mit dem "unbenutzten Byte" war wohl auch mein primärer Denkfehler, der Zähler steht also schon immer einen Wert weiter.
    Ich habe beim Initialisieren des Bereichs ab $7f dadurch wohl einen Zähler mehr gehabt.
    Es Funktionierte soweit ja, ich wollte nur wissen wieso. Meinen Quelltext/Kommentare habe ich daraufhin direkt angepasst.

    Irgendjemand auf der letzten X meinte, dass man für einen Effekt die Mainloop umschalten soll.
    Jetzt habe ich das soweit geschafft, indem ich den Stack sozusagen halbiere und jedesmal in einem IRQ den Stackpointer umschalte.
    Dabei ist mir aufgefallen, dass neben der Rücksprungadresse auch zwei Bytes gespeichert werden, die ich nicht zuordnen kann.
    Diese habe ich beim Debuggen einfach aus dem anderen Bereich im Stack übernommen.


    Ich habe mal meinen Code unten angehangen. Dort sind die Werte mal im Kommentar als "magic value" betitelt und haben den Wert $a0 und $b7
    Weiß jemand von euch was das für Werte sind? Sind das Prozessorflags die beim IRQ auslösen gesichert werden?

    So, nachdem ich mich ein wenig reingefuchst hatte, habe ich die für mich kleine und schnelle Lösung zum setzen eines 2x2 Tiles gefunden. Zuerst hatte ich natürlich den Ansatz mit der X indizierten ZP Adresse, aber da musste ich natürlich jedesmal inx dann nach a kopieren u adc #$40 machen. Außerdem brauchte ich mindestens zwei Tabellen und musste das HI byte vorher ausrechnen.


    Mein Ansatz beruht darauf, dass ich ja den Screen mit vier festen X indizierten Werten erreichen kann. Also, habe ich nur die relative Adresse des Tiles abgespeichert (bei mir 19x11, geht aber auch bis zu 20x11, Hauptsache unter 255!)



    Also m.M.n. ist der Weg schon ziemlich der Beste. Wenig Rechnerei und nur eine Table. Man könnte evtl. noch was sparen, wenn man den Wert am Anfang evtl. in A statt in X ablegt.

    @Mac Bacon
    Danke schon mal für die Tipps, die habe ich direkt umgesetzt. Aber das Rendern des kompletten screens war ja schon relativ flott und kommt ja ohne Tabellen aus.
    Ich habe nur keine gute Lösung ein einzelnes Tile neu zu setzen, z.B. wenn man was einsammelt und das vom screen verschwindet.
    Dank @Squidwards Tipp brauche ich zumindest zwei Tabellen weniger. Trotzdem rechne ich da noch für meinen Gechmack zu viel, dafür dass ich zwei Tabellen als 'Cache' habe.


    Edit: Das mit dem Interleaving habe ich noch nicht so ganz verstanden. Wie sollten die Daten denn da am besten abgelegt werden?


    Edit2: Ah, ich glaube ich habe das mit dem Interleaving doch verstanden. Naja, bei mir passt ein Level in 228 bytes. das kann ich natürlich schön X\Y indiziert abrufen, dass wäre ja dann nicht mehr möglich, da ich über 256bytes kommen würde.


    Edit3: ok war wohl doch noch falsch. Der Ansatz ist wohl eher das in zwei 114er Tabellen zu aufzuteilen, sagen wir mal A und B und dann immer ABABABABA abzulegen. Dann kann ich da in Zweierschritten durch und muss nur nach der Hälfte wieder auf den anfang+1 setzen?

    Momentan stehe ich vor dem Problem, einigermaßen elegant ein einzelnes 2x2 Tile auf den Bildschirm zu bringen :cursing:
    Ich verbrauche irgendwie jede menge Speicher für vier Tabellen jeweils (Hi+Low Screen+Colormem), sowie danach noch einiges an ZP Addition. :cry:
    Bei meinem (2x2) Screen gibt es 19 Spalten in 11 Zeilen (der erste und letzte Char bleibt immer leer, angefangen wird ab Zeile 2).


    Das Rendern des gesamten Screens braucht als (halber) Speedcode nur m.M.n. schlanke ~734 kb (Syntax ist C64 Studio)


    Hat da jemand einen Tipp/Rant oder Beispielsource, wie man das schöner/schneller/kleiner machen kann?