Ich bin gerade mit dem Game fertig geworden und schwuppdiwupps lade ich es hoch.
Das Spiel benötigt eine GeoRAM mit mindestens 512kb. Die Dateien können zudem auch in ein D64-Image kopiert werden. Es werden alle Laufwerke unterstützt.
Soll eine Ünterstützung für eine variable Laufwerksadresse gewünscht werden, Bitte Bescheid geben. Was soll ich zu dem Game sonst noch schreiben, jeder kennt
es und auch die lausige KI. Ein Spiel mal so zwischendurch bringt aber immer Spass.
Viel Spass mit der Anpassung.
PS: Ein Bild ist von der C64 Version und eins von der Atari-ST Version. Das konvertierte Bild ist mit auf dem D81-Image.
Achja, eine Sidekick64 Version wird es auch geben.
So, jetzt noch was in eigener Sache. Ich hatte heute beim Erstellen des Spiels, durch Zufall eine bösen Bug in dem GeoRAM-Filecache/Ramdisk entdeckt. Ich hätte können als ich das sah.
Die Dateien werden mittels Supercpu-Tool gelinkt. Dieses Tool erstellt auch das interne Directory, zu finden am Anfang der letzten GeoRAM-Bank. Nun sind die Supercpu-Bänke 64kB groß, die einer
512Kb GeoRAM nur 16kB groß. Es müssen die SCPU Offset-Daten Low,High,Bank der Files nach GeoRAM Datei-Offset konvertiert werden. Das funktioniert auch sehr gut, nur in manchen Fällen eben nicht.
Ich habe mal den Auschnitt des Quellcods im Codefenster gepostet. Vielleicht entdeck ja einer von euch den Mistfehler.
- ; - ausschnitt aus der georam routine
- !to "georam-ramdisk.prg",cbm
- !cpu 6502
- *= $c000
- rds01 lda #$00 ; ---- den wert #00 in den akku laden
- sta buf03 ; ---- und den puffer auf startwert zurücksetzen
- sta dir02+1 ; ---- dir-page counter auf startwert #00 setzen
- sta grm02+1 ; ---- cmp-routine auf startwert #00 ($de00) setzen
- sta cnt01 ; ---- dateizähler auf startwert #00 setzen
- ; ----------------------------------------------------------
- ; ---- scpu file parameter für die georam konvertieren -----
- ; ----------------------------------------------------------
- lda buf01+6 ; ---- bank-byte aus parameterpuffer in den akku laden
- sec ; ---- carry-flag setzten
- sbc #$03 ; ---- um #03 bänke reduzieren. wenn die scpu startbank #03 ist
- sta buf01+6 ; ---- in datei parameterpuffer zurückschreiben
- lda buf01 ; ---- die dateigröße low-byte in den akku laden
- clc ; ---- das carry-flag löschen
- adc #$01 ; ---- und dateigröße um #02 bytes erhöhen
- sta buf01 ; ---- neuer parameter in den puffer schreiben
- bcc add20 ; ---- wenn das carry-flag gesetzt wurde, dann
- inc buf01+1 ; ---- dateigröße high-byte um einen erhöhen
- add20 lda buf01+6 ; ---- das bankbyte aus der parametertabelle in den akku laden
- beq add27 ; ---- hier weiter, wenn das bank-byte auf #00 steht
- add55 lda buf03 ; ---- bank-byte aus bank-byte puffer in den akku laden.startwert ist #$00
- clc ; ---- carry-flag setzen
- adc #$04 ; ---- #04 hinzu addieren. eine scpu-bank besteht aus #04 georam bänke
- sta buf03 ; ---- in den bank-byte puffer zurückschreiben
- dec buf01+6 ; ---- bank-byte im parameterpuffer um einen verringern
- bne add55 ; ---- wenn bank-byte im parameterpuffer #00 ist, dann
- add27 lda buf01+5 ; ---- das page-byte aus dem parameterpuffer in den akku laden
- beq add42 ; ---- hier weiter, wenn das pagebyte #00 ist
- tax ; ---- page-byte in x-register sichern
- add22 sec ; ---- carry-flag setzen
- sbc #$40 ; ---- vom page-byte #40 subtrahieren
- bcs add21 ; ---- wenn das carry-flag gelöscht wurde, dann
- txa ; ---- das page-byte aus dem x-register in den akku schieben
- sta buf01+5 ; ---- und in die parametertabelle zurückschreiben
- lda buf03 ; ---- die konvertierten bank-bytes in den akku laden
- sta buf01+6 ; ---- und in den parameter-puffer schreiben
- add42 jmp loa10 ; ---- weiter zur datenkopier routint
- add21 inc buf03 ; ---- den bank-byte puffer um einen erhöhen
- tax ; ---- aktuelles page-byte in x-register sichen
- jmp add22 ; ---- weiter,nächsten #40 bytes subtrahieren
- ; -----------------------------------------------
- ; ---- buf01 hat folgende datei parameter ----
- ; -----------------------------------------------
- ; ---- bytegröße der datei in low und high ----
- ; ---- ladeadresse der datei in low und high ----
- ; ---- page offset. adresse inerhalb $de00 ----
- ; ---- georam page. eine von #3f pro bank ----
- ; ---- georam bank. eine von #1f bei 512kb ----
- ; -----------------------------------------------
- cnt01 !by $00 ; ---- additions puffer
- buf01 !by $ff,$ff,$ff,$ff,$ff,$ff,$ff ; ---- hier stehen nach der konvertierung die daten, damit das georam weiß, wo die angeforderte datei zu finden ist, wo diese im c64 hinkommt und wieviele bytes zu übertragen sind
- buf03 !by $00 ; ---- merkpuffer für bank bytes