Hallöchen!
In Freds wie diesem oder auch jenem wird ja über das Coden von Cracktros gesprochen. Sauhund hat irgendwo mal angeregt, meinen Demo-Maker-Pfusch mal einfach in ASM nachzucoden, unter anderem auch, um es nicht als Loader zu belassen, sondern zu lernen, wie man es vor ein Spiel linkt.
Immerhin habe ich nun mit Relaunch64/ACME schon mal durch Codeschnipsel-Klau hier und dort etwas zusammengestellt, was mir ein Koala anzeigt und dabei eine Musik abspielt. Das meiste verstehe ich auch, aber noch nicht ganz alles. Scroll fehlt noch, dürfte aber auch nicht das Problem sein.
Paar erklärende Worte vorweg:
1. Die Sound-Abspiel-Routine habe ich von Herrn Bayliss/Codebase64 übernommen, obwohl ich weiß, dass seine Beiträge nicht unumstritten sind. Ich war einfach faul und habe etwas gesucht, was Musik ab $A000 abspielt, weil meine einfachere SID-Abspielroutine für andere Speicherbereiche wie etwa $1000 sich immer mit der Grafik überschnitten hat im Speicher. Daraus ergab sich dann auch die Wahl des Tracks "I_Was_Bored" von Matt Gray (mit Sid2Play als .DAT gespeichert und später mit Dir-Master-Import wieder zum PRG gemacht). Ich weiß auch noch nicht wirklich ganz genau, weshalb BASIC-Kernal hier an- und ausgeknipst werden muss. Vielleicht kann mir das jemand erläutern oder generell einen besseren Vorschlag machen?
2. Generell bräuchte ich wohl mal einen Plan, was man tunlichst in welchem Bereich des Speichers machen sollte.
Hier der Code
- !to "cracktro.prg"
- *= $2000
- !bin "flandertm.prg",,2 ; Koala-Bild nach $2000 laden
- *= $a000
- !bin "boredmg.prg",,2 ; MattGray/I_was_Bored nach $A000 laden
- *= $0810 ; also später sys 2064
- lda #$00
- sta $d020 ; POKE53280,a
- sta $d021 ; POKE53281,a
- tax
- jmp .koala
- .koala:
- lda $3f40,x ; FARBEN IN BILDSCHIRM RAM
- sta $0400,x
- lda $4040,x
- sta $0500,x
- lda $4140,x
- sta $0600,x
- lda $4240,x
- sta $0700,x
- lda $4328,x ; FARBEN IN FARB-RAM
- sta $d800,x
- lda $4428,x
- sta $d900,x
- lda $4528,x
- sta $da00,x
- lda $4628,x
- sta $db00,x
- dex
- bne .koala
- lda #$3b ; BITMAP
- ldx #$18 ; MULTI-COLOR
- ldy #$18 ; SCREEN $0400, BITMAP $2000
- sta $d011
- stx $d016
- sty $d018
- .main:
- sei ; MUSIK-IRQ
- lda #<irq
- ldx #>irq
- sta $0314
- stx $0315
- lda #$7F
- sta $DC0D
- lda #$1B
- sta $D01B
- lda #$01
- sta $D01A
- lda #$35 ; BASIC-KERNAL aus
- sta $01
- lda #$00
- jsr $C000
- lda #$37 ; BASIC-KERNAL ein
- sta $01
- cli
- jmp *
- irq inc$D019
- lda #$00
- sta $D012
- lda #$35
- sta $01
- jsr $C003
- lda #$37
- sta $01
- jmp $EA31
- jmp .main
Angehängt habe ich die exomisierte Version "Packtro", weil das cracktro.prg logischerweise durch den unzusammenhängenden Wust ziemlich groß geworden ist, deshalb hat sich auch SYS2061 ergeben.
Freue mich über jede Form von Kommentar, bitte nicht so doll hauen, bin schließlich SEHR grüner ASM-Anfänger.