Neue C64 ASM/Basic Compo : Dreh' das Sprite.

  • Neue C64 ASM/Basic Compo : Dreh' das Sprite.

    Einer meiner Vorsätze für das neue Jahr war es, endlich eine neue ASM-Compo ins Leben zu rufen.
    Folgende Aufgabe:


    Im Spriteblock 13 (also ab Adresse $0340, dezimal 832) liegt ein
    Hires-Sprite, dass in den Spritelblock 14 (also ab Adresse $0380,
    dezimal 896) gedreht kopiert werden soll.

    Dabei liegt das Sprite ab Block 13 folgendermassen vor:

    Quellcode

    1. abcdefgh ijklmnop qrstuXXX
    2. ...
    3. (19 Zeilen)
    4. ...
    5. vwxyzABC DEFGHIJK LMNOPXXX
    und soll folgendermaßen gedreht werden:

    Quellcode

    1. u P000
    2. t O000
    3. s N000
    4. r M000
    5. q L000
    6. p K000
    7. o J000
    8. n I000
    9. m H000
    10. l G000
    11. k ... (19 Spalten) ... F000
    12. j E000
    13. i D000
    14. h C000
    15. g B000
    16. f A000
    17. e z000
    18. d y000
    19. c x000
    20. b w000
    21. a v000
    Alles anzeigen
    Da ein Sprite 24 Pixel breit ist, aber nur 21 Zeilen hoch, gibt es am Ende 3 Spalten des Spriteblocks 13, die nicht mit gedreht werden können. Diese sind oben mit "X" gekennzeichnet.

    Die Buchstaben (bis auf das X) repräsentieren die Pixel, die in dem Quell-und Zielsprite den gleichen Wert haben.

    Allerdings müssen die letzten 3 Spalten des neuen Sprites in Block 14 mit Nullen aufgefüllt werden (wie oben dargestellt).

    Ziel der Competition ist das KÜRZESTE Programm, dass diese Aufgabe bewältigen kann.
    Dabei gelten folgende Einschränkungen:


    - Das Programm muss als Ladenadresse $0801 (dezimal 2049) haben.
    - Das Programm muss mit "run" startbar sein.
    - Das Programm darf keine Adresse größer $bfff schreibend benutzen.
    - Der Speicher von $0400 bis $07ff ist tabu !
    - Das Programm darf auf realer Hardware nicht länger als 10 Minuten laufen.
    - Das Programm muss in das Basic-Prompt zurückwechseln.
    - Das Programm muss den Speicher soweit intakt lassen, dass man nach dem Programmlauf
    mindestens noch einen "sys 49152" eingeben kann und dieser SYS auch wirklich ausgeführt wird
    (damit ich mein Auswertungs-Programm benutzen kann).
    - Ich schließe mich selber aus dem Wettbewerb aus.
    - Einsendeschluss ist am Samstag, den 18.02.2017, um 23:59 Uhr deutscher Zeit.
    - Spriteblock 13 muß erhalten bleiben. (Wenn das Sprite wieder danach restauriert wird, ist das auch in Ordnung)
    - Daten im Spriteblock 14 sind vor dem Anstarten des Programmes als zufällig zu betrachten.
    - Filenamen werden vor dem Korrektheitstest beliebig geändert.
    - Register A,X,Y sind mit 0 initialisiert

    Die oberen Regeln ermöglichen es, dass sowohl Basic- als auch Assemberlösungen erlaubt sind.


    Viel Spaß !

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von TheRealWanderer () aus folgendem Grund: Weiteren Punkt eingefügt!

  • Super, dass endlich jemand vortritt!
    Danke für diese Aufgabe. :thumbsup:

    <EDIT>Eine Frage/Anmerkung noch: Wenn ich das richtig sehe, lässt Du das Bitmapmuster des Sprites offen nach Wahl. Macht es nicht Sinn, besser ein vordefiniertes Sprite/Bytemuster hier zu definieren?
    Dann sind die Bedingungen 1:1 für alle gleich. Ich könnte mir vorstellen, dass das Bit/Bytemuster evt. auch den einen oder anderen Vorteil haben kann, wenn man das etwas "gezielt" auswählt. :search:
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: Copyright 2017 by Saiki

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von syshack ()

  • lässt Du das Bitmapmuster des Sprites offen nach Wahl
    Ja, denn mein Prüfcode wird benutzt werden, ob die Lösung bei einem von mir gewähltem sprite korrekt ist. Sonst könnte man ja einfach den sprite einmal "von Hand" drehen und dann die 63 Bytes einfach nach $0380 kopieren.
  • peiselulli schrieb:

    lässt Du das Bitmapmuster des Sprites offen nach Wahl
    Ja, denn mein Prüfcode wird benutzt werden, ob die Lösung bei einem von mir gewähltem sprite korrekt ist. Sonst könnte man ja einfach den sprite einmal "von Hand" drehen und dann die 63 Bytes einfach nach $0380 kopieren.
    Ja danke, jetzt habe ich es verstanden. :facepalm:
    Dein Sprite. Deine Wahl. Danke :thumbsup:
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: Copyright 2017 by Saiki
  • enthusi schrieb:

    Im ersten Post ist eine Skizze.
    Wirklich gedreht. Immer 90 Grad, immer mathematisch positiv also links herum.
    Die obere Seite wird zur linken Seite.
    Eigentlich -90° oder 270°. Normalerweise gibt man doch die Winkelangaben im Uhrzeigersinn an, oder?
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: Copyright 2017 by Saiki
  • Bytebreaker schrieb:

    Wann ist denn Abgabe/Deadline?
    Steht im ersten Posting: 18.2.2017 23:59 Uhr!

    EDIT: DATUM KORRIGIERT!
    ______________________________________________
    Wenn ich posten will, werde ich Briefträger...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von TheRealWanderer () aus folgendem Grund: DATUM KORRIGIERT!

  • syshack schrieb:

    enthusi schrieb:

    Im ersten Post ist eine Skizze.
    Wirklich gedreht. Immer 90 Grad, immer mathematisch positiv also links herum.
    Die obere Seite wird zur linken Seite.
    Eigentlich -90° oder 270°. Normalerweise gibt man doch die Winkelangaben im Uhrzeigersinn an, oder?
    Wie ich schrieb, links herum ist 'mathematisch positiv'.