Posts by berni

    The binary monitor interface can be used for that: https://vice-emu.sourceforge.io/vice_13.html#SEC298

    I managed to create a connection (after I realised that I hat to turn the non-binary remote monitor off). My version of VICE (3.5 (GTK3 3.24.24, GLib 2.66.7)) seems to use an older version of the protocoll (1 instead of 2). As I couldn't find any specs for that I pretended, that the differences between these two versions do not matter here. This worked well with 0x82 command to find out, which values are used for which bank.


    Now I tried to query the memory, but here I got a response code of $00 and error code of $80, so I'm probably doing something wrong... (Maybe, the side effects flag needs to be different, I guessed a few values, but didn't succeed.)

    Code
    1. >>> 02 01 08 00 00 00 ad de 34 12 02 00 31 00 34 00
    2.     00 01 00
    3. <<< 02 01 2a 00 00 00 31 00 ff ff ff ff
    4. <<< 0a 00 03 03 cf e5 03 00 00 00 03 01 00 00 03 02
    5.     0a 00 03 04 f3 00 03 37 2f 00 03 38 37 00 03 05
    6.     22 00 03 35 00 00 03 36 01 00
    7. <<< 02 01 02 00 00 00 62 00 ff ff ff ff
    8. <<< cf e5
    9. <<< 02 01 00 00 00 00 00 80 ad de 34 12

    Any ideas?

    Scheint so, dass bei der Originalroutine das Überlesen von Leerzeichen und der Fall $3B-$FF (Variablennamen, Token, Operatoren) als eher häufigerer Fall, den Ausschlag gegeben hat. Das hängt dann wohl sehr davon ab, wie viele Konstanten und Zeilennummern im Programmtext vorkommt, damit die Alternativroutinen hier einen Vorteil einfahren können ... generell kann man, ohne eine statistische Erhebung des "mittleren Anteils" über einen repräsentative Menge von BASIC-Programmen, wohl nicht sagen, welche Routine hier tatsächlich "besser" ist.

    Ich habe gerade im Wiki was zur Zeitersparnis durch Platzierung in der Zeropage geschrieben (nach meinen Berechnungen sind BASIC-Programme etwa 0,1% schneller, als wenn der Code nicht in der Zeropage läge; man spart also etwa eine Minute pro Tag...).


    Ich habe hierfür die Token in "OEL", "Pirates" und "Durch die Wüste" ausgewertet: $3B-$FF ist mit 47% der seltenere Fall. Space kommen nahezu gar nicht vor (0,4%), da Stringkonstanten nicht mit CHRGET ausgewertet werden. Ziffern machen 31% aus. (Ob das jetzt repräsentativ genug ist, kann ich aber nicht sagen.)

    Wieso ist es relevant, wer wann was zuerst gemacht hat?

    Naja, Ehre, wem Ehre gebührt. Wenn es mehrere Leute gab, die nahezu zeitgleich etwas herausgefunden haben, ist das auch OK. Dann kann man das ja so schreiben.


    Abgesehen davon finde ich es vor allem interessant zu sehen, wann eine bestimmte Technik zum ersten Mal benutzt wurde. Meist war das ja in Demos, weil es da einen entsprechenden Wettbewerb gab (und immer noch gibt?)

    Ich brauche mal wieder eure Hilfe: Ich bin gerade am Wiki-Artikel zu Sprite-Stretching. Das erste Mal wurde das von Bob/Triad genutzt, allerdings verändern die das Sprite während des Stretchings nicht, wodurch jeweils mehrere Zeilen identisch aussehen (die Auflösung der Sprites ändert sich nicht). Man kann aber auch durch Ändern der Spritedatenzeiger jede Zeile einzeln festlegen und damit maximale Auflösung in Y-Richtung erreichen.


    Ich weiß, dass diese Technik im Grafik-Format NUFLI verwendet wird, aber ich vermute mal stark, dass das auch schon vorher in irgendwelchen Demos genutzt wurde, da es, wenn man erst mal Sprite-Stretching hat, nicht mehr sonderlich schwierig ist, das auch noch einzubauen. Wer war da der erste?


    Any ideas?

    Letzter Versuch (zu mehr habe ich keine Zeit):

    Danke dir, dass du trotz anderer Verpflichtungen dir die Zeit genommen hast, mir zu antworten. :)


    Ich denke, ich hab' jetzt eine einfache Erklärung: Ich muss mich vertan haben.

    Dein "High" Segment ist ein Gate. Es nimmt den Wert des "Low" Segments an, wenn PHI1 High ist und behält diesen Wert wenn PHI1

    wieder auf low wechselt.


    Dein "Low" Segment" ist der Ausgang eines Inverters. Das Gate dieses Inverters ist das lila segment direkt rechts von dem grünen

    "grounded diffusion".

    Ja, das ist alles klar. (Nur, dass ich immer noch der Meinung bin, dass im Bezug auf den Transistor oben rechts "High" nicht das Gate ist. Das ist dort "PHI 1". "High" ist das Gate vom Transistor unten rechts. Aber egal.)


    Was ich dachte, bemerkt zu haben, ist, dass "High" seinen Wert eben nicht behält, wenn "PHI1" auf low wechselt, sondern plötzlich seinen Zustand auch ändert. Ich konnte das aber jetzt nicht mehr reproduzieren. Vielleicht war ich da letztens zu überarbeitet und hatte was gesehen, was gar nicht da war? Falls es doch nochmal auftauchen sollte, melde ich mich nochmal und liefere Details. :whistling:

    Wenn man in 0 und 1 denkt, ist das Teilstück zwischen dem oben rechts und unten rechts undefiniert.

    Es reicht aber nicht, nur in 0 und 1 zu denken - der Netzlistensimulator von visual6502 kennt IIRC 5 oder mehr Zustände. Ohne Ladungstransfer würde der simulierte 6502 gar nicht funktionieren.

    Ja, das ist mir klar, dass man nicht in 0 und 1 denken darf. Die Frage für mich ist nur, wie denkt man dann? Das ist genau das, wo ich mich nicht mehr auskenne und Hilfe bräuchte. (Und beim Simulator von visual6502 ist dummerweise die Ausgabe mit dem Highlighting auf 0-1 beschränkt. Die anderen Zustände kann man dort (außer, wenn man tief im Javascript wühlt) nicht herausfinden, oder?)


    Ich habe gerade einen Eintrag auf nesdev.org gefunden, der, glaube ich, schon recht nahe an dem ist, was ich wissen will. Nur passt es noch nicht ganz. Dort steht, dass das "closed off" Teilstück nach dem Abtrennen noch die vorige Ladung für einen kurzen Zeitraum behält. Das klingt logisch.


    Bei mir oben ist ja auch so ein abgetrenntes Teilstück. Aber da ist es plötzlich geladen, obwohl es vor dem Abtrennen nicht geladen war. Das ist das, was ich nicht verstehe. Wo kommt da diese Ladung plötzlich her?

    Sorry... aber ich glaube eher du hast ein Verständnisproblem?!

    Schon möglich, deswegen frage ich ja.

    Vielleicht ist Analyse auf Transistorebene der falsche Weg um die Funktion zu verstehen?

    Das glaube ich jetzt eher nicht. Ich hab in den letzten Tagen größere Teile des Schaltplans durchgearbeitet und das ergab alles seinen Sinn. Nur an der Stelle hier trat jetzt diese Ungereimtheit auf, die ich nicht verstehe. Ich vermute, dass mir hier irgend ein Wissen fehlt. Ich weiß aber noch nicht einmal, wie ich danach suchen soll...

    ansonsten einfach mal nach z.B. 8501 dissected hier schauen... da ist alles drin.

    Ich habe unter dem Stichwort "8501 dissected" das da gefunden, verstehe aber den Zusammenhang mit meiner Frage nicht.

    das was du mit High markiert hast ist ein Gate. das mit low bezeichnete Segment ist der Ausgang eines inverters.

    Ich habe den Eindruck, dass da ein Verständnisproblem ist. :S Du und thierer, ihr habt meine Frage auf die gleiche Art anders verstanden, als ich sie gemeint habe; da habe ich mich wohl blöd ausgedrückt. Der kleine rote Knubbel oberhalb von "high" ist fest mit "high" verbunden. Für mich war das einfach ein einzelnes Element, aber wenn ich das Bild jetzt genauer anschaue, sehe ich, dass das durch das Highlighting unklar wird.


    Ich versuche es nochmal anders, diesmal ohne Highlighting, dafür mit Schaltplan (*):


    problem2.png


    Ihr beide sprecht von dem Transistor unten rechts. Ich hab' mich auf den oben rechts bezogen. Die beiden Transistoren unten sind Inverter, das ist klar (beim zweiten gibt es einen im Ausschnitt nicht sichtbaren Pull-Up-Transistor, wie das beim ersten oben links auch der Fall ist).


    Der Transistor oben rechts unterbricht das zweimalige Invertieren und lässt das Signal nur in der ersten Takthälfte durch. Meine Frage bezieht sich auf die zweite Takthälfte, wenn der Transistor oben rechts sperrt: Wenn man in 0 und 1 denkt, ist das Teilstück zwischen dem oben rechts und unten rechts undefiniert. In der Praxis ist es allerdings auf "high", denn der Transistor unten rechts muss leiten, damit die Logik funktioniert und der Simulator bei visual6502 bestätigt das auch. Warum?



    (*) Bei der russischen Gruppe "breaknes" abgemalt. Deren Webseite ist leider seit dem Ukraine-Krieg nicht erreichbar. Eine Kopie findet sich aber in der Wikipedia.

    Ich kenne mich da auch nicht besonders gut aus, aber wenn sonst keiner antwortet :)

    Danke :-) Ich denke, es antwortet keiner, weil es einfach eine schwierige Frage ist. Allerdings:

    Das rote ist m.E. nicht Drain, sondern das Gate (Drain ist das gelbe rechts davon). Wenn das Gate high ist, dann war der Eingang (das, was du mit "low" gekennzeichnet hast) wohl high, als es vom Takt gelatcht wurde.

    Ne, das ist schon der nächste Transistor; bei dem stimmt wieder alles. Ich beziehe mich auf den darüber, mit den Anschlüssen "low", "phi1" und "high".


    Ich vermute ja inzwischen (hab' gestern noch länger drüber nachgedacht), dass solche Teile, die weder mit high noch mit low verbunden sind, ihre Ladung noch eine kurze Zeit behalten und es damit irgendwie zusammenhängt. Zudem sind die ja nie perfekt abgetrennt, sondern es gibt immer noch kleine Ströme. Könnte sein, dass auch das ausreicht, da ja phi1 jeden zweiten Halbtakt an ist. Aber das ist nur so Halbwissen. Ich würde es gerne von jemandem bestätigt (oder korrigiert) wissen, der sich damit auskennt.

    (Bin mir nicht ganz sicher, ob das hier die richtige Stelle zum Fragen ist; ich hab' aber keine bessere gefunden.)


    Ich habe gerade versucht, den Ablauf beim Schreiben auf den Datenbus beim 6502 mit visual6502 zu verstehen. Dabei bin ich auf eine Ungereimtheit gestossen, bei der ich vermute, dass mein elektrotechnisches Wissen nicht ausreicht. Hier der entsprechende Ausschnitt (erhält man auch, wenn man auf obigen Link klickt):


    (grün=grounded diffusion, rot=powered diffusion, gelb=diffusion, lila=polysilicon; "low" und "high" sind highlighted und in Wirklichkeit auch beide gelb.)


    Der mit "low" bezeichnete Bereich wird durch (nicht auf dem Ausschnitt sichtbare) Metallschinen auf low gezogen. Soweit ist mir das klar.

    Dieser Bereich ist die Source für den anschließenden Transistor mit Gate phi1 (Systemtakt, der ist gerade ebenfalls auf low). Meine Frage bezieht sich jetzt auf das mit "high" markierte Stück darunter; aus Sicht des Transistors das "drain". Laut visual6502-Simulator ist das auf "high" (und wenn es das nicht wäre, würde auch die ganze Schaltung danach nicht funktionieren). Ich kann aber keinen Grund dafür erkennen. Meiner Meinung nach ist das ein Stück "diffusion", welches weder auf high, noch auf low gezogen wird. Wenn da ein Pull-Up-Widerstand dran wäre (wie das links oberhalb von "low" bei "low" der Fall ist), wäre das klar. Aber der ist da nicht. (Das obere Ende von "high" sieht ein wenig wie so ein Pull-Up-Widerstand aus, aber das kommt vom highlighting. In Wirklichkeit ist das gelb und eben nicht rot.)


    Hat das jemand von euch verstanden und kann mir weiterhelfen?

    "Nippon" ist eine gigantische Spielewelt, die man erkunden kann. Ich empfehle allerdings, gleich am Anfang mit dem Cheat das Geld hoch zu setzen. Das tut dem Spielen keinen Abbruch; im Gegenteil, dann kann man sich mehr auf das Erkunden der Welt konzentrieren.

    Es gibt ja viele Möglichkeiten, wie man Dinge erreichen kann. Ich hab' mal ein paar gesammelt, mit denen man den Rahmen schwärzen kann:

    OK, die letzte Version übertreibtst vielleicht ein bisschen... :D