letzter Beitrag von Haubitze am
Neue C64 ASM/Basic Compo : Dreh' das Sprite.
- peiselulli
- Erledigt
-
-
was zur hoelle 56-70 bytes keine ahnung wie ihr das macht, ich seh bei mir keine optimierungsmoeglichkeiten.
oder ich denk einfach zu umstaendlich. scheinbar muss ich noch viel lernen. -
@TRW: Hau rein! Ich bin jetzt bei 58 Bytes und weniger wird's wohl nicht mehr werden. Also schlag mich bitte, sonst muß ich die nächste Compo abhalten.
58? Hammer
Aber da werd ich nicht hinkommen.
Rechnerisch könnte ich ca. 64 schaffen, da ich 3 redundante Bereiche hab, die in eine Schleife gepackt werden müssen.
Dafür muss ich alle Register ziehen, die ich nicht habUnd wenn ich dann noch ein paar Bytes bei der Schleife für das Nullen des Sprites (bisher 10 Bytes) bei Pointer 14 einsparen könnte, dann könnten es so um die 60 werden.
Aber alles darunter dürfte für mich nicht machbar sein.Haubitze: komm schon, Carry on
-
Okay, 56 Bytes. Weiß zufällig jemand, wo Roland ist...?
Das is verdammt gut.
Ist das jetz schon inklusive Basiczeile?Ich bin übrigens bei 72 (inkl. Basic) und weiß grad' nich, wo ich da noch kürzen kann.
-
Ist das jetz schon inklusive Basiczeile?
Ja, inklusive. Dafür ist das Programm aber auch fürchterlich langsam. Normalerweise würde ich so einen Code nicht schreiben... Soviel kann ich verraten: Das Zielsprite wird nicht genullt, das Originalsprite (auch während des Programmablaufs) nicht zerstört, und der Code enthält keine illegalen Opcodes. Es gibt da also noch Verbesserungsmöglichkeiten für die echten Cracks hier im Forum.
-
63 Bytes, Schluss für heute (MD5: 2021a3a6f7a96081e6cd5b385a0ddd97)
EDIT: Inklusive Ladeadresse und Basiczeile, immer noch keine Illegals. Block 13 wird nicht verändert, Block 14 nicht vorher genullt, das Programm verändert sich selbst und läuft immer nur einmal korrekt.
-
69 bytes (incl. ladeaddresse + basic).
programm kann mehrfach laufen.
keine illegals.
eigentlich wollte ich ja nicht dran teilnehmen...MD5 (rot-sprite-alx-v1.prg) = cf49eacbcfe146cefd452bc875e6afd4
Update:
63 mit illegals.
MD5 (rot-sprite-alx-v2.prg) = fe9defa02b3616155b11adca65147c0a -
Ich bin bei 68. Mal schauen, ob ich es noch kleiner hinbekomme...
-
Irgendetwas mache ich wohl zu kompliziert, bin bei 126 Bytes.
Edit: Na, wenigstens auf 99 Bytes konnte ich es jetzt drücken, aber jetzt kann ohne kompletten Umbau vermutlich nicht mehr viel gehen.
-
Komplett neuer Ansatz - und jetzt 59 Bytes (inkl. Ladeadresse). Ohne Illegals.
-
ich komm nett auf ne andre idee, aber naja paar bytes hab ich gespart. is aber immernoch zu lang
dafuer komm ich ohne illegals aus und relocable solltes auch sein, denke recht flott isses auch -
@Haubitze : das stimmt aber was noch nicht ....
XML- (C:$03c0) ms $0340
- >C:0340 ***********....*********
- >C:0343 ********...****.********
- >C:0346 *****...*******.********
- >C:0349 ***..***********.*******
- >C:034c **.*************.*******
- >C:034f *.*****..*****..*.******
- >C:0352 .******..*****..**.*****
- >C:0355 .******************.****
- >C:0358 .*******************.***
- >C:035b *.******************..**
- >C:035e **.*****************.*.*
- >C:0361 ***.****************.**.
- >C:0364 ****.*****.............*
- >C:0367 ****.****.**************
- >C:036a ****.***.***************
- >C:036d ****.*******************
- >C:0370 ****.**.****************
- >C:0373 ****.**.****************
- >C:0376 ****.*.*****************
- >C:0379 ****..******************
- >C:037c ****.*******************
- (C:$0380) ms $0380
- >C:0380 ********.....***********
- >C:0383 *******.****.***********
- >C:0386 ******.*****.***********
- >C:0389 *****.******.***********
- >C:038c ***..*******.***********
- >C:038f *..**..*****.***********
- >C:0392 .****..*****.***********
- >C:0395 .***********.***********
- >C:0398 .***********.***********
- >C:039b .***********.***********
- >C:039e *.**********.***********
- >C:03a1 *.***********.**********
- >C:03a4 *.***..*******.*********
- >C:03a7 **.**..*********..******
- >C:03aa **.***************.*****
- >C:03ad **.*********************
- >C:03b0 ***.********.......*****
- >C:03b3 ***.*******.************
- >C:03b6 ****.*****.*************
- >C:03b9 *****.***.**************
- >C:03bc ******...***************
Das gedrehte Sprite ist 2 Spalten zu schmal ... -
hm komisch bei mir stimmt das immer wenn ich aus and #%11100000 -> and #%11111000 mach dann is das sprite bei mir wieder zu breit.
ich lad mal zwei versionen hoch dann koenntest du mir ja sagen welche davon richtiger ist?
weil wie gesagt bei mir sieht das alles IO aus, letztere bringt bei mir ein falsches ergebniss. -
"asm-combo_and#%11111000.prg" ist richtig. "asm-combo_and#%11100000.prg" ist falsch.
-
was zum... , ich nehme an das ersteres zu breit ist und letzteres wie oben gezeigt zu schmal oder?
edit: ah gut ich dacht schon ich muss mich in die ecke stellen und schmollen
-
@peiselulli: Würdest du dein Tool für die Prüfung hier veröffentlichen, oder lieber nicht? Ich würde gern mal testen, ob wirklich jeder Pixel richtig sitzt.
Inzwischen bin ich wieder bei 80 Bytes, da mein Programm noch einen Fehler hatte.
-
Ich habe noch zwei Fragen:
1) Kann man davon ausgehen, dass die Register (A,X,Y) auf 0 initialisiert sind?
2) Kann man davon ausgehen, dass bestimmte ZP-Adressen gesetzt sind? Ich denke da so an $39/$3a mit der aktuellen Zeilennummer oder $2d/$2e, die direkt hinter das Programm zeigen sollen.
-
Sowas hab ich mir schon gedacht. Da ich das in den Regeln nicht berücksichtigt habe, mach ich jetzt immer folgendes:
Testcode laden, Reset, Pre-Text starten, Testkandidat laufen lassen, Testcheck laufen lassen.Mit anderen Worten für 1) und 2) -> ja
-
so kleiner bekomm ichs nich, bin halt zu doof um auf ne andre idee zu komm.
-
Komplett neuer Ansatz - und jetzt 59 Bytes (inkl. Ladeadresse). Ohne Illegals.
Super! Weiter so!
Nur leider: letzter Stand: 53 Bytes. Aber die restlichen Bytes schaffst Du auch noch.