Dzięki Raf za testing
Są dwa błędy w moim listingu - pierwszy to zamiast: sta $0315 -> powinno być stx $0315. Drugi to wywołanie music_init, powinno być poprzedzone chociaż lda #$00 <- to zazwyczaj numer muzyczki do odtwarzania(no ja akurat jak testowałem, miałem takiego playera który widocznie nie potrzebował numeru songa, bo działało ), co do $d011 to nie ma znaczenia (wysypywało Ci się raczej przez te lda#$00 przed inicjacją), ponieważ warość #$ff przy $d012 może wystąpić tylko raz na \'ramkę\' - nie ma potrzeby ustawiać starszego bitu rastra.
Ok, ale idźmy w takim razie dalej
:
Ponieważ Basic korzysta z pamięci od $0801 do $a000 (potem ma już swój interpreter), procedurkę umieśćmy tuź przed końcem tego obszarem np. $9fc0. A muzyczkę przydałoby się przerelokować pod $A000 (Interpreter Basic jest w ROM-ie, a więc go i tak nie skasujemy
) tyle że do procedurek trzeba by dodać następujące wpisy:
...
lda #$36
sta $01
lda #$00
txa
tay
jsr music_init
lda #$37
sta $01
cli
rts
irq lda #$36
sta $01
jsr play_music
lda #$37
sta $01
inc $d019
jmp $ea31
aha, trzeba obgraniczyć jeszcze basic, żeby nie \'wlazł\' w końcu na naszą procedurkę - obeteniemy te $40 na program (myślę że to nie wpłynie zbytnio na pamięć gry
) czyli
w komórkach $0037-$0038 trzba wstawić wskaźnik na $9fc0 - czyli w programie dopisać
poke 55,192: poke 56,159
Zostało nam teraz przerelokować muzyczkę pod $a000, znacie jakieć dobre (uniwersalne) relokatory ?
pzdr