Hello, Guest the thread was called710 times and contains 26 replays

last post from zagdul at the

Meine ersten Gehversuche - mal wieder

  • Gott, ist das lange her... aber so langsam wird es... wollte hier vielleicht auch mal meine geistigen "Ergüsse" posten. Ich bin leider von Berufs wegen "hochsprachenverseucht", da muss man schon rumsuchen.


    Ich wollte, nach den ersten "Hallo-Welt" Progrämmchen mal gucken, ob ich es noch schaffe, den screen zu löschen :D


    Was wollte ich machen:


    1. ich wollte mir mein Toolset mal zusammensuchen, um mal den Round-Trip zu testen - im Moment nutze ich KickAssembler mit Vice und Virtual64 auf dem Mac.

    2. ich wollte ein etwas komplexeres Beispiel testen, als nur 255 Zeichen auf den Screen packen. Also wollte ich den ganzen Bildschirm löschen, mit vernünftiger Ende-Erkennung.

    3. Der Ansatz hier ist sicher nicht optimal, aber für 60 Minuten probieren nach gut 30 Jahren pause, glaub ich ganz ok :D


    ich komme mir echt blöd vor, was man in 35 Jahren alles vergessen hat - damit könnte man ganze Bücher füllen :S. Damals hätte ich da sicher was besseres in deutlich weniger Zeit zustande gebracht. Mann oh man...


    Nur falls es einen interessiert... vielleicht hilfts ja noch jemandem. Aber seid gnädig, ich übe ja noch ;)

  • ja, die lösung habe ich auch gefunden. Allerdings erkennt die das Ende des Screens nicht 100% - der Screen endet bei 07e8, nicht bei 07ff.

    Mit der lösung oben würde man die "übrigen" bytes auch überschreiben. Da sind die Sprite-Pointer drin, glaub ich....


    Deine Lösung ist sicher flotter!

  • Was ich stattdessen mache: nur bis $fa zählen. Dann kommt man nicht über die $07e8 hinaus.


  • Ich hatte auch mal so angefangen und dann jede Woche, wenn es möglich war, irgendwas gecodet.

    Nur ZP-Adressen um den Bildschirmspeicher zu löschen, würde ich nicht unbedingt machen. Das ist sowas wie mit Kanonen auf Spatzen zu schiessen.:)

    das mit den ZP-Adressen war auch nur eine Übung. Ich fand das Beispiel ganz witzig um mal zu sehen, wie das mit der ZP-Adressierung so läuft und wie gut ich mich daran erinnern kann. Also das Beispiel davon hat höchstens einen Lerneffekt, sicherlich keinen Praxisbezug!


    Danke Dir!:)

  • Achso, das wusste ich nicht.


    Mit der unteren Spielerei kann man Breiche im RAM verschlüsseln oder entschlüsseln. Bei der Input64 wurde das so gemacht.

    Das untere kleine Beispiel kann die Programme auf der Input64 entschüsseln.


    LDA #$00

    STA $FC

    TAY

    LDA #$10

    STA $FD

    LOOP1

    LDA ($FC),Y

    EOR #$55

    STA ($FC),Y

    INI

    BNE LOOP1

    RTS

  • Richtig. Bei der Input64 waren alle Programme auf der Disk so verschlüsselt. Die XOR-Verschlüsselung wurde recht häufig bei diversen Kopierschutzverfahren genutzt.

    Bei dem Game Portal von Activision ist jeder Sektor mit eine unterschiedlichen XOR-Wert verschlüsselt. Das entschlüsseln findet im Floppy-RAM, während der Ladens statt.

  • oh ja, da klingelt was. Da habe ich mir damals auch über so was den kopf zerbrochen. Schlimm waren dann auch die Kopierschutze (ist das die Mehrzahl?:/), die irgendwelche besonderheiten der Floppy vorausgesetzt haben.


    Wobei, wenn ich mich recht entsinne, war das schwierigste, die stelle zu finden, wo die Prüfung "Fehler" geworfen hat und die Logik umzudrehen. ähm... hab ich gehört ;)

  • Die XOR-Verschlüsselung hatte nur den Sinn, es den Crackern schwer zu mache, den Code zu ändern. An dem Coden im Floppy-Ram war zudem auch recht schwer

    ranzukommen. In gegensatz zum C64 , da kann man mittels Frezzer Cartridge einen Monitor aufrufen und den Code ändern, gibt es sogut wie keine Möglichkeit, den Code

    im Floppy-RAM auszulesen, auch mit dem Action Replay nicht. Der IRQ-Lader verhindert das. Heute geht das ganz einfach mit dem Monitor im WinVice.:)


    Übrigens, die meisten Kopierschutzverfahren waren einfach nur Schice und eine Geldverschwendung. Ich kenne gerademal 8 Kopierschutze, die man als sehr gut bezeichnen kann.:)

  • Ja, das kann ich nur bestätigen. Ich kann mich erinnern, dass es einen "Kopierschutz" bei irgendeinem Game gab, da war schlicht ein Loch in der Floppy! Und das Layout der Blöcke war anders, dass man auf Jedem Fall in dem "Loch" landet, wenn man nicht den normalen Code nutzt. Die Umgehung dafür war aber wirklich simpel, glaub ich... irgendein RTS an der richtigen stelle und gut war es...


    Aber das ist nun wirklich OT - wenn auch schön über die "guten Alten Zeiten" abzunerden :D

  • das gute EOR :)

    Fuer die Anfaenger noch eine andere Schreibweise fuer das schnellste und sauberste Screen loeschen:

    ldx #250

    loop

    sta $0400+250*0 -1,x

    sta $0400+250*1 -1,x

    sta $0400+250*2 -1,x

    sta $0400+250*3 -1,x

    dex

    bne loop


    das -1 weil die Schleife nie mit X=0 durchlaufen wird.

    Das 250*n ist glaube ich intuitiver fuer den Anfang zu verstehen. Da ist dann nichts doppelt oder gar zu weit.