Hi...
Kann man SID Tunes konvertieren und wieder in
Intros, Demos verwenden?
Es gibt 11 Antworten in diesem Thema, welches 2.633 mal aufgerufen wurde. Der letzte Beitrag (
Hi...
Kann man SID Tunes konvertieren und wieder in
Intros, Demos verwenden?
Ja, z.B. mit Sidplay lassen sich die Sid's mit Speichern unter -> C64 .dat files sichern, das sind die reinen C64 Daten der Musik.
hab ich schon probiert, und zwar mit StĂĽcken von JCH
wo die Init bei $1000 liegt und die play-routine bei $1003.
Funktionierte leider nicht. Hab mir dann das Ganze im Text-Editor
angesehen, und mir fiel auf, daĂź die ' .dat' am Anfang 2 Byte MĂĽll stehen hat.
Hab das Ganze dann um 2 Byte gekĂĽrzt, brachte jedoch auch keine abhilfe.
das sollte schon gehen... also mit sidplay als .dat speichern
die zwei byte "mĂĽll" sind offensichtlich die ladeadresse die du weglassen musst wenn du den tune zb per incbin in irgendeinem crossassembler einbindest.
hmmm... kenne zwar den sidplay nicht, aber die ersten 2 bytes werden vermutlich die ladeadresse sein (00, 10). und die braucht ein c64 prg file ja um zu wissen, wo es hingeladen werden soll.
was verstehst du unter "es funktionier nicht" ?.
stille? falsche töne? absturz?
hast du beim init auch ein lda Bitte melde dich an, um diesen Link zu sehen. gemacht?
und die playroutine "richtig" in eine irq-routine eingebaut?
Also:
Benutze Relaunch mit ACME als crosscompiler und hab noch NIE damit
gearbeitet, deshalb hier mein Code:
!to "test.prg"
*= $1000
!bin "sample\tr_test\Beatbassie.bin"
*= $0900
jsr $e544
lda#0
sta $d020
sta$d021
jsr $1000
lda#$18
sta$D018
SEI
LDA #<INIT
LDX #>INIT
STA $0314
STX $0315
LDA #$00
STA $D012
LDA #$7F
STA $DC0D
LDA #$01
STA $D01A
CLI
loop JMP loop
INIT LDA #$01
STA $D019
jsr $1003
JMP $EA81
Wenn ich die orginal konvertierte '.dat' vom Sidplay einbinde, dann crashed die
Routine.
Lösche ich die ersten 2 Bytes dann spielt die Routine Music, jedoch völligen Quatsch.
1) lade mal vorm init auch in x/y eine 0 (einige player wollen die songnummer nicht im akku)
2) versuchs auch mal mit nem andren tune
ansonsten sehe ich da jetzt nix offensichtlich falsches
also, deine routine ist ok (sofern sie wirklich nicht noch was anderes macht, was du hier im code nicht geschrieben hast... z.b. noch zeropage-addressen wenden, usw..)
dem init reicht auch ein lda #$00.
entweder:
- ist der sid tune schon defekt
- der sidplay konvertiert es falsch (schneide doch einfach selber die ersten $7c bytes weg...dann hast du das original prg.)
- der assembler verkackt das alles (hab noch nie mit assembler programmiert).
also, entweder holst du die mal den sid-tune aus einer anderen quelle.
oder testest den konvertierten tune mit code, den du in einem monitor schreibst.
Also:
So läufts:
Da der Konverter des Sid-Plays noch diese 2 Bytes am Anfang hat, muĂź man
den Offset des Sounds 2 Bytes davor legen:
*= $0ffe
!bin "sample\tr_test\Beatbassie.bin"
Danach ganz normal initialisieren (hier: $1000) und spielen (hier: $1003).
Warum diese 2 Bytes da sind, bzw nicht gelöscht werden können, weiß ich auch nicht.
Trotzdem auf jedenfall
vielen Dank an Euch
hae????
wie lauten diese ominösen 2 bytes denn?
denn das sollten ja eigentlich die ladeadresse $1000 sein (also 00 10).
vielleicht solltest du im assembler anstelle von
!bin
irgend was anderen machen (!prg vielleicht.. kenne die befehle des ass ja nicht).
schau mal nach dem "laden" des tunes in den speicher, ob die 2 bytes auf $0ffe
liegen (hmmm...sollten sie warscheinlich bei einem *=$0ffe).
sollte ja aber auch möglich sein, "normale" files wie bitmaps oder so, OHNE die ladeadresse in den speicher zu laden.
Ueblicherweise ist das die Ladeadresse.
!bin"mucke.prg",,2
Damit werden die ersten 2 Bytes geskipped.
Acme hat eine Anleitung. ![]()
Michael
hab hier andere musiken, die schon im *bin format waren .
Die werden auch erst ab $1000 geladen (bei JCH) und die funktionieren auch ganz
normal.
es geht lediglich um die zurĂĽckkonvertierten StĂĽcken mit dem Sidplay.
Probiert es doch mal.