Musik in BASIC

Es gibt 5 Antworten in diesem Thema, welches 1.075 mal aufgerufen wurde. Der letzte Beitrag (26. März 2024 um 06:56) ist von BIF.

  • Hallo zusammen,

    ich bastel gerade an einem kleinen Spiel für meine kleine Tochter in BASIC. Spiel läuft, ist im Endeffekt ein simpler Snake Klon mit der Raupe Nimmersatt. Mittlerweile ist auch ein kleines PETSCII Titelbild dazu gekommen. Soweit so gut... Titelbild läuft und lädt das Spiel nach, Tochter (5) gefällt das Spiel, aber kennt halt mittlerweile auch ein paar andere C64 Spiele und fragt nach "Musik"...

    Genau hier liegt der Hund begraben, da haperts... Jetzt hab ich mir das hier angesehen: Bitte melde dich an, um dieses Medienelement zu sehen.. Laut Anleitung vorgegangen, SID File in .PRG konvertiert und das BASIC Script läuft und spielt Musik. Dieses Script lädt das "MUSIK".PRG nach und spielt es dann ab.... Jetzt hab ich das in mein Titelbildschirmprogramm eingebunden und steh vor dem Problem, dass dann logischerweise das Spiel nicht mehr nachgeladen wird, weil ja schon das andere Programm geladen wurde...

    Wie kann ich am besten ein SID File in meinen "Loader" einbauen? Im Idealfall so, dass es dabei im Speicher bleibt und die Musik auch im nachgeladenen Spiel noch weiter läuft?

    Oder muss ich die Musik komplett im Loader und ggf. im Hauptprogramm hinterlegen?

    Im Anhang mal mein Loader als .d64 und der Player aus dem Tutorial sieht so aus:


    5 rem irq-driven music player by

    10 rem robin @ 8-bit show and tell

    15 rem

    20 if l=0 then l=1:load"music.prg",8,1

    30 x=49152

    40 read a:if a<0 then 60

    50 pokex,a:x=x+1:goto40

    60 sys 49152

    70 poke 44,32:poke 32*256,0:new

    100 data 169, 0, 32, 0, 16, 169, 127, 141, 13, 220

    110 data 173, 13, 220, 120, 169, 1, 141,26, 208, 169

    120 data 100, 141, 18, 208, 173, 17, 208, 41, 127, 141

    130 data 17, 208, 169, 44, 141, 20, 3, 169, 192, 141

    140 data 21, 3, 88, 96, 238, 25, 208, 238, 32, 208

    150 data 32, 3, 16, 206, 32, 208, 76, 49, 234, -1

    Die einfachste Variante wäre natürlich, ich schnapp mir einen der typischen Demo Maker, wandel das PETSCII Bild in ein Koala Format um, lade das dann in den Intromaker, wähl Musik usw. und nutz dann die Linker Funktion, die einige bieten umd das Spiel dann nachzuladen und verzichte da auf die Musik. Aber das möchte ich eigentlich vermeiden.


    .

  • Jetzt hab ich das in mein Titelbildschirmprogramm eingebunden und steh vor dem Problem, dass dann logischerweise das Spiel nicht mehr nachgeladen wird, weil ja schon das andere Programm geladen wurde...

    Ich bin mir nicht ganz sicher, was jetzt genau das Problem ist. Klar, wenn Programm1 erst Programm2 nachlädt, kann es danach nicht mehr Programm3 laden, denn dann läuft es ja nicht mehr. Aber was spricht dagegen, am Ende von Programm2 einfach von dort aus Programm3 nachzuladen?

    Oder stehst Du noch vor dem Problem, dass es komische Abstürze gibt, weil das nachgeladene Basic-Programm länger ist als das vorige? Es gibt verschiedene Workarounds dafür, aber evtl. hast Du das ja schon lange gelöst...

    Guter Rat 1: Statt DATA-Wüsten in den Speicher zu poken, lade diese Sachen nach. Das geht sogar schneller, denn die DATA-Zeilen müssen ja auch geladen werden und das sind bis zu vier mal so viel Daten wie eigentlich nötig.

    Guter Rat 2: Wenn Du mehrere Dateien nachlädst (Musik, Player-Code, Titelbild), dann mach das nicht per "IF A=0 THEN A=1:LOAD...", sondern per SYS-Aufruf von Kernal-LOAD. Das hat den Vorteil, dass das Basic-Programm nicht neu gestartet wird. Einer der Bookmarks meines Profils sollte auf einen entsprechenen Beitrag von Mike verweisen, wo er die Methode erklärt.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Danke für den Tipp. Hab jetzt das Titelbild per PRINT Befehlen noch mal neu gemacht, was satte 21 Blöcke auf der Diskette spart ;) dann gleich den Programmcode des Spiels per Merge eingebaut, jetzt spar ich mir da schon einmal nachladen. DAnn werde ich jetzt mal versuchen, ob ich den Music-Loader und das Spiel irgendwie verlinkt bekomme.

  • Jo, PRINT inst schneller, meiner Meinung gibt es immer die Tendenz zum One-Filer.
    Binäre Daten kann man übrigen auch kompakt im Anhang speichern und per Block-Kopy schnell verschieben.

    Schönen Gruß.