Hallo Besucher, der Thread wurde 1,4k mal aufgerufen und enthält 6 Antworten

letzter Beitrag von Flexman am

Spiel das am Emulator geht aber am echten C128 nicht

  • Dieses Release hat bei zwei meinen C128ern nicht funktioniert, am Vice-Emulator mit x128 aber schon:

    https://csdb.dk/release/?id=199463

    Also nach dem Intro-Screen kommt nur mehr ein chaotisches Bild.


    Lustigerweise geht das Original:

    https://csdb.dk/release/?id=199438


    Hat jemand eine Ahnung wie's sowas gibt?

  • Eine Möglichkeit wären Initialisierungswerte, die im originalen Gerät nicht immer gegeben sind. Klassiker: ein Emulator initialisiert das RAM mit 0, das echte Gerät enthält aber mehr oder weniger zufällige Muster (zum Beispiel 64 mal 0 und 64 mal 0xff). Ähnliche Effekte sind aber sicher auch bei Registern des SID/VIC usw. vorstellbar.

  • VICE emuliert derzeit nicht das Grafik-Gewusel, das im 2-MHz-Modus entsteht. Falls da so ein kewl phat crass brontaler uberhaxxor zum Entpacken auf 2MHz schaltet, das Zurückschalten auf 1MHz vergessen hat und das Ergebnis nicht auf realer Hardware testet, dann...


    ...kann sowas passieren, ja.

  • VICE emuliert derzeit nicht das Grafik-Gewusel, das im 2-MHz-Modus entsteht. Falls da so ein kewl phat crass brontaler uberhaxxor zum Entpacken auf 2MHz schaltet, das Zurückschalten auf 1MHz vergessen hat und das Ergebnis nicht auf realer Hardware testet, dann...


    ...kann sowas passieren, ja.

    Das hat tatsächlich damit zu tun:

    "Apparantly the C128 gets turned into 2 Mhz mode. This is because of a call to a kernal-routine at $e5aa from $0f47 with X-register at $ff. This will load a value outside the ROM-table that sets the 2 Mhz-bit. The jump should probably go to $e5a8 which sets the X-register correctly."

  • Unsauber programmiertes Intro... Hab das mal nachverfolgt im VICE:


    Der C128 schaltet in den 2 Mhz-Mode, weil bei $0f47 eine Kernal-Routine zur VIC-Initialisierung bei $e5aa aufgerufen wird. Hier ist das X-Register aber bei $ff wodurch 255 Werte geschrieben werden also weit über die ROM-Tabelle hinaus. Dadurch wird auch das Bit für den 2 Mhz-Mode bei $d030 gesetzt. Der Sprung sollte besser nach $e5a8 gehen, da wird das X-Register korrekt gesetzt.

  • EDIT: zu langsam...

    VICE emuliert derzeit nicht das Grafik-Gewusel, das im 2-MHz-Modus entsteht. Falls da so ein kewl phat crass brontaler uberhaxxor zum Entpacken auf 2MHz schaltet, das Zurückschalten auf 1MHz vergessen hat und das Ergebnis nicht auf realer Hardware testet, dann...


    ...kann sowas passieren, ja.

    Wobei das Spiel ja für den C64-Modus ist. Würde mich wundern wenn man dort etwas eingebaut hätte um die 2 MHz auszunutzen.

    Zum Entpacken ist das naheliegend und nicht ungewöhnlich, beim Exomizer wird es z.B. explizit in der Anleitung erwähnt. Dass die 2 MHz für das tatsächliche Spiel genutzt werden, kommt zwar auch vor (Uridium, Paradroid Redux, ...),, aber wahrscheinlicher ist wohl, dass der Coder einfach bei der VIC-Initialisierung die Schleife zu groß gemacht hat und versehentlich eines der beiden unteren Bits von $d030 setzt.

  • Da fällt mir ein: Ich hab mal einen Vergleich von der C64 und C128-Version der "Rocky Horror Picture Show" gemacht, und dort zum Vergleich die C128-Version auch mit 2Mhz gestartet. Ging natürlich nur im Vice:


    Auf der echten Hardware war schon das Intro-Bild etwas durcheinander, aber im Spiel war dann natürlich gar nichts mehr zu sehen.