Posts by Hoogo

    Das hat es ja unter Windows noch nie gegeben, dass ein Drucker nicht druckt...:whistling:

    Es vergeht bei uns kaum ein Tag, an dem es keine Tickets zum Drucken gäbe.

    - Alle Drucker weg

    - Alle Drucker doppelt

    - Druckdialog braucht 10 Minuten

    - Papiergrößen weg

    - Seitenränder abgeschnitten

    - Oder einfach so nicht drucken.

    Ich hab gestern Kubuntu von USB gestartet und mich ein Weilchen durch die Menüs geklickt.

    Mein erster Eindruck war hervorragend, aufgeräumter als Windows.

    Bis zu den Feinheiten oder das richtige Einrichten von allem bin ich noch nicht vorgedrungen.

    Aber wenn das so weitergeht verstehe ich, warum man Windows nur noch zum Zocken nimmt.

    Mach doch mal einen Screenshot, dann kann ich evtl. erraten, wo das Problem liegt.

    Hier ein Beispiel... Die Beschriftung der Tabs oben ist knackscharf, die Schrift mit der Datum und Uhrzeit rechts neben der Uhr ausgegeben werden ist hingegen unscharf.


    Achja, bitte nicht mit dem Anzeigetool auf Windows laden, aus irgendeinem Grunde legt das noch einen Filter drüber und spült alles weich.

    Mach mal Cleartype an.
    Findet sich in Win7 unter Systemsteuerung\Darstellung und Anpassung\Schriftarten.


    Imho spielt kaum noch was eine Rolle, sobald die Displays die doppelte Auflösung des Auges überschritten haben.

    Bei "normalen" Monitoren ist das aber glaub ich noch nicht erreicht.

    Now if I wanna move logo (multicolor bitmap) in sb whats the best way for that?

    You've already seen that badlines are a problem and the reason why you only used 4 sprites with open borders.

    There's a trick to disable badlines, but still have bitmap mode.

    But I'm not sure if it can be combined with open borders, and you have come so far with 4 sprites + badlines, better keep going that way.


    Yours screenshot show only colorful blocks for the sprites.

    I assume that you did not change the sprite pointers (usually 2040-2047) yet?

    That would be the next step to do.

    ----------------------------------------
    I think with only 4 sprites you can directly change the sprite pointers with lda/sta 2044/5/6/7 in one raster line.

    => You will spend the last raster line of a sprite for changing the sprite pointers, so the next line with the multiplexed sprite will start with a fresh graphic.

    Of the other 20 lines, you will spent 1 with multiplexing, and the rest is opening the sideborder as usual.

    That will not work if you have to change the pointers in a badline, there's just no time left!

    => Avoid Y positions where the sprites end on a badline! Or better: The last rasterline of your last sprite row can and should end on a badline. Then count 8 sprites up: You can have 8*21=168 lines of graphics without caring about that topic.

    => So your first row of sprites should not start on a badline, but 1 pixel below.
    => Double check that number 3 times, I might be wrong, and changing positions later might hurt.

    => And also test if it is really possible to change the sprite blocks in the last line of the sprites.

    ----------------------------------------

    If 168 pixels are enough, then you can use any tool to convert graphics into sprites.

    It would be easiest if your logo is restricted to 4 colors, multicolor.

    More colors are not a technical problem, but tools for 4 colors are more handy.


    For your code:

    Start with some simple test patterns, like 10*$00ff00, 11*$ff00ff, next sprites 10*0f0f0f, 11*f0f0f0, then repeat.
    This way you can easily tell if you switched the sprite patterns in the right moment or too early or too late.

    You can later replace that with the real graphics.

    ----------------------------------------
    If you want to add real movement, then it's obviously easiest if you only move left/right with charset.

    ----------------------------------------

    If 168 pixels are not enough:

    Then you have to change the sprite pointers in a wrong raster line.

    It will work fine, but the sprite format is somewhat distorted in memory.

    There's a thread about that somewhere here.


    I remember that I used this distorted sprites even with such few rasterlines, but I don't remember why...

    Maybe the 168 pixels are a lesson that I learned by doing it wrong.

    Guck doch mal, ob Du nicht im IRQ vorne noch ein INC $d021 reinbekommst, und ganz am Ende ein passendes DEC dazu. (Evtl. kommst Du ohne das $ffff aus, wenn das Timing knapp wird).

    Dann siehst Du, mit welcher Verzögerung aus gleichen Gründen der erste IRQ eigentlich kommt.

    Vielleicht löst das den Knoten

    Weiß jemand warum es diesen einen Zyklus Versatz beim Auslösen in einem NOP gibt?

    Ein Befehl wird immer komplett ausgeführt, bevor ein IRQ bedient wird.


    Nun braucht NOP 2 Takte.

    Der IRQ kann während des ersten Taktes passieren, dann muss der IRQ muss halt 1 Takt später ausgeführt werden und kommt zu spät.

    Oder der IRQ passiert während des zweiten Taktes, weil der NOP bis zum Zeilenende reichte. Dann kommt der IRQ sofort dran und passt genau.


    Das ist zumindest das Prinzip.

    Kann sein, dass der IRQ schon beim letzten Takt des vorigen Befehls anliegen muss,

    Irgendwas war da mit Branches, aber das weiß ich nicht mehr genau.

    Welches Linux würdet Ihr mir denn für einen Desktop empfehlen?

    - Phenom II

    - Amd RX470 Graka

    - Parallel zu Win7 installiert

    - Wine für Photoline

    - Ich surfe mit Chrome, Browser ist mir aber nicht sooo wichtig.

    - Gibt es DosBox?

    - vsCode wäre cool, und was für C64-Entwicklung.

    - Ich glaube, es wird einfacher, die 2. Datasette am Parallelport der 1541 anzuschließen.

    Geht das? Hat die einen?

    Jein, an einer der 2 VIAs ist ein 8 Bit-I/O-Register unbenutzt, wo man ein Parallel-Kabel dran anschließen konnte.


    Will man eine 2. Datasette getrennt ansprechen, dann muss man deren Leitungen eh irgendwo anders (Userport oder serielle Buchse) anbringen und alles neu programmieren. Ich weiß nicht, ob MOTOR so einfach ohne weitere Elektronik anzuschließen wäre, aber der Rest sollte gehen.

    Das wird in der Praxis aber schwierig: da die CPU beim Kassettenzugriff komplett ausgelastet ist, könnte man auch bei Vorhandensein eines zweiten Ports kein zweites Gerät ansprechen. Und leider kann man auch nicht byte-genau innerhalb eines Files das Lesen oder Schreiben stoppen und wieder aufnehmen.

    Klingt schon ziemlich knifflig....
    - Ich stelle mir grad einen NMI fürs schreiben und einen IRQ fürs Lesen vor.
    - Oder ein bisschen Code fürs Lesen und Schreiben abwechselnd, wo alle Programmzweige gleich lang laufen, egal, ob nichts gelesen wurde oder ein ganzes Byte fertiggestellt und weggeschrieben wurde.

    - Ich glaube, es wird einfacher, die 2. Datasette am Parallelport der 1541 anzuschließen.

    Bei dem Titel war ich sowieso etwas irritiert. "The Dark Eye: Chains of Satinav" klingt ja vom Titel her, wie ein Rollenspiel, aber es ist halt ein klassisches Point & Click. Oder ist die Story vielleicht aus einem "Das Schwarze Auge" Setting entnommen? Oder heisst es nur zufällig "The Dark Eye" und hat gar nichts damit zu tun?

    Mit der Welt oder Geschichte des DSA hatte es eher wenig zu tun, mit den Regeln eigentlich gar nichts.

    Königreich Andergast und die Magieakademie passen in das Universum, Satinav als Wächter der Zeit ebenso, und Geron ist Magiedilletant, das passt auch. An viel mehr erinnere ich mich jetzt nicht, müsste ich vielleicht mal wieder spielen.


    Memoria nimmt ein bisschen mehr Bezug auf Völker, Geschichte und bekannte Zauber aus dem Regelwerk. Aber auch nicht wahnsinnig viel oder besonders streng.


    RICHTIG DSA ist das Drakensang von 2008, bis hin zu korrekten Biermarken und kandierten Koschammerzungen.

    Ein Jammer, dass daraus nicht mehr geworden ist.

    Einen Glitch gibts beim "h" keine Ahnung warum. Im Charset sehe ich den nicht am Schirm schon.

    Das könnte der I-Punkt sein, der bei allen I's fehlt.

    Vielleicht die falschen 8 Bytes aus dem Zeichensatz abgegriffen?


    Wenn Du noch mehr Zeichen auf dem Schirm haben möchtest, dann gehen auch 7 Pixel Höhe sehr gut.

    Also von "The Dark Ey: Chains of Satinav" bin ich echt begeistert.

    Ach DAS schwarze Auge! Ja, das ist großartig.

    Der Nachfolger Memoria ist auch großartig, im Abspann hab ich echt geheult.


    Auf Steam sehe ich das nicht im Sale, aber auf GOG (nur auf Englisch?? Memoria ist jedenfalls nur auf Englisch dort) oder Humblebundle

    Was genau sind denn die Bedingungen für einen Bug? Das habe ich nicht ganz verstanden.

    Irgendwas mit einem internen Counter, der bis "Gleich Null" runterzählt und es daher nicht unbedingt mag, wenn man die abzuziehende Zahl unterwegs verändert. Und solche Änderungen passieren wohl, wenn man das Gatebit setzt/löscht oder ADR neu beschreibt. Ist mir jetzt zu anstrengend, über die Details nachzudenken :)


    Da war aber mal ein Thread in der CSDB, in der der Bug für verschiedene Werte auf den Taktzyklus genau erforscht wurde. Mag 5 Jahre her sein.

    Es wird aber momentan nichts gesetzt, wenn eine Pause eintritt - da passiert einfach nichts, das wird ignoriert.

    Hm, vielleicht sprechen wir dann ein bisschen aneinander vorbei...

    Ich finde, da sollte unbedingt ein bisschen Code mit rein, der eine "Pause" ermöglicht.

    Also Wellenform auf $40 (also die eingestellte nur ohne Gatebit), und dann wählbar ein paar Frames Pause machen, damit der Ton ausklingen kann.

    Das mit dem SID-Bug muss ich mal ausprobieren. Ich muss also im Grunde die Hüllkurve auf $00, $00 stellen und das Gate-Bit ausstellen, dann zwei Frames warten und anschließend den eigentlichen Ton spielen?

    Irgendwie so hab ich den "Hard Restart" auch verstanden.

    Oder halt die Bedingungen vermeiden, unter denen der Fehler auftreten kann.
    Ich hab da nicht genau drüber nachgedacht, was da eigentlich beschrieben ist.

    Mir scheint es sicher, wenn man für ADR den gleichen Wert benutzt, darum oben die $55 nach d405/d406.

    Probier mal, ob Du damit noch ein Stolpern hörst.

    Also ich hab am Schreibtischtest keine offensichtlichen Programmfehler gefunden.

    Hier und da kann man was hübscher machen, aber nix dramatisches.


    Hab dann den Assembler angeschmissen und per Farbänderungen das Ändern des Gatebit geprüft, das passt so.

    Ich hab aber auch kein besonders musikalisches Ohr, ich GLAUBE, ich höre das Stolpern auch...


    Probier mal am Anfang andere Werte für ADSR:
    lda #$55

    sta $D405

    lda #$55

    sta $D406


    Ist das Stolpern dann weg?

    Eventuell ist das ein SID-Bug.

    Nein, ich würge den Ton nicht ab. Ich schalte erst alles aus, damit ich anschließend den eigentlichen Wert mit Gate reinschreiben kann.

    lda BufferCTRL

    beq nocnt

    ldx #$00

    stx $D404

    sta $D404


    ^^ Das ist Abwürgen in reinster Form :)
    Bei langen Noten wird die Hüllkurve AD durchlaufen und auf dem Level von S stehen bleiben.
    Wenn Du jetzt $40 nach $d404 schreiben würdest, dann würde R anfangen, und der Ton dürfte ausklingen.

    Das können schon ein paar Frames sein, die ein Ton ausklingt.