... da habe ich immer wieder Schwierigkeiten.
Bei meinem aktuellen Spiel habe ich neben dem Hauptprogramm mal wieder einen Zwischenlevel eingebaut.
Dieser Part hat nun eine komplett andere Displaylist, diese wird dann auch noch nach einer gewissen Zeit im Zwischenlevel verändert.
Die letzten ca. 2-3 Wochen habe ich damit verbracht, die Übergänge zwischen Hauptprogramm / Zwischenlevel / zurück / Game Over / Restart zu fixen.
Ein paar Kleinigkeiten sind noch zu machen, aber im Prinzip läuft es jetzt stabil und die Übergänge klappen reibungslos.
Dabei habe ich mal wieder festgestellt (das war auch schon in den anderen Spielen so), daß vor allem der Übergang von Game Over zu Restart erhebliche Schwierigkeiten machen kann. Wenn man das Spiel primär startet, dann ist ja alles schön "frisch" und die Variablen sind definiert. Wenn man aber aaus dem "Game Over" kommt, dann sind bestimmte Variablen schon benutzt und haben Werte, die primär gar nicht passen - hier muss man also genau schauen, daß man bei einem Restart alles richtig neu definiert. Das kann ganz schön tricky sein und hat mich mal wieder echt beschäftigt.
Und wenn dann noch die Displaylist modifiziert, muss man das auch bei einem Restart alles schön rückgängig machen.
Wie ist da eure Erfahrung? Gibt es noch smartere Lösungen einen Restart hinzubekommen? Vielleicht springt man durch den Warmreset...
LG
Peter
Game over...
Moderator: Rockford
Online
- Kveldulfur
- Beiträge: 697
- Registriert: 17.08.2021 02:32
- Has thanked: 266 times
- Been thanked: 207 times
- Kontaktdaten:
Re: Game over...
Hallo!
Meine Variabeln werde nicht "fertig" geladen, sondern liegen i.d.R. im Speicher ab Adresse $0600 undefiniert.
Ich muss, bevor der Spieler spielen kann, diese sinnvoll belegen. Dadurch ist es egal, ob das Spiel zum ersten Mal oder bereits ein zweites Mal gespielt wird.
Die aktive Displaylist lege ich übrigens immer an der selben Stelle im Speicher ab. Jede "neue" Displaylist muss also dorthin kopiert werden.
Auch hier ist es somit egal, ob ich diese das erste Mal "lade" oder bereits ein zweites Mal.
Auf diese Weise kann man später ein Programm auch leichter vom Modul aus starten, da die Speicherzellen, die verändert werden, generell Adresse <$4000 bei mir liegen. Der "feste" Code liegt bei mir i.d.R >$4000, bzw. bei einem Modul ab $8000.
Grüße
Janko
PS: Okay... ich programmiere gerade mein 4. Spiel... aber Schränker 3 habe ich bereits so programmiert und Schränker 1 so umprogrammiert, wg. der Modulversion
Meine Variabeln werde nicht "fertig" geladen, sondern liegen i.d.R. im Speicher ab Adresse $0600 undefiniert.
Ich muss, bevor der Spieler spielen kann, diese sinnvoll belegen. Dadurch ist es egal, ob das Spiel zum ersten Mal oder bereits ein zweites Mal gespielt wird.
Die aktive Displaylist lege ich übrigens immer an der selben Stelle im Speicher ab. Jede "neue" Displaylist muss also dorthin kopiert werden.
Auch hier ist es somit egal, ob ich diese das erste Mal "lade" oder bereits ein zweites Mal.
Auf diese Weise kann man später ein Programm auch leichter vom Modul aus starten, da die Speicherzellen, die verändert werden, generell Adresse <$4000 bei mir liegen. Der "feste" Code liegt bei mir i.d.R >$4000, bzw. bei einem Modul ab $8000.
Grüße
Janko
PS: Okay... ich programmiere gerade mein 4. Spiel... aber Schränker 3 habe ich bereits so programmiert und Schränker 1 so umprogrammiert, wg. der Modulversion
Zuletzt geändert von Kveldulfur am 30.04.2024 16:05, insgesamt 1-mal geändert.
Meine Projekte findest Du hier...
- Dr. Irata
- Beiträge: 963
- Registriert: 24.08.2021 14:40
- Has thanked: 118 times
- Been thanked: 284 times
- Kontaktdaten:
Re: Game over...
... ja das werde ich beim nächsten Spiel auch so machen!!
Gerade hatte ich gehofft, ich könnte mit dem Warmreset dem Ganzen ein Schnippchen schlagen, indem ich durch Adresse $e474 springe und vorher den Vektor in 10/11 auf meinen Programmstart biege, geht aber leider nicht...
Gerade hatte ich gehofft, ich könnte mit dem Warmreset dem Ganzen ein Schnippchen schlagen, indem ich durch Adresse $e474 springe und vorher den Vektor in 10/11 auf meinen Programmstart biege, geht aber leider nicht...
- pps
- Beiträge: 574
- Registriert: 18.06.2021 23:05
- Has thanked: 126 times
- Been thanked: 229 times
- Kontaktdaten:
Re: Game over...
Reset umdrehen war nicht ganz so trivial. Hatte damals mal eine Routine, die funktionierte... Naja, bisher nicht wieder gefunden...Dr. Irata hat geschrieben: ↑30.04.2024 16:05... ja das werde ich beim nächsten Spiel auch so machen!!
Gerade hatte ich gehofft, ich könnte mit dem Warmreset dem Ganzen ein Schnippchen schlagen, indem ich durch Adresse $e474 springe und vorher den Vektor in 10/11 auf meinen Programmstart biege, geht aber leider nicht...
- DjayBee
- Beiträge: 702
- Registriert: 17.08.2021 04:02
- Has thanked: 433 times
- Been thanked: 204 times
- Kontaktdaten:
Re: Game over...
Was ging nicht?
- Es war kein Warmstart.
- Deine Variablen wurden nicht initialisiert.
- LarsImNetz
- Beiträge: 170
- Registriert: 24.08.2021 18:27
- Has thanked: 127 times
- Been thanked: 89 times
- Kontaktdaten:
Re: Game over...
Das Programm mal starten mit "SRAM(random)"
Also nicht davon ausgehen, das der Speicher beim Starten mit 0 belegt ist.
Im Altirra im Menü: System->Configure...->Memory dort unter "Power-up pattern" einstellen.
Compiler haben auch manchmal den Vorteil, das diese meckern, wenn eine Variable nicht initialisiert ist. Hilft natürlich eher nicht, wenn man Variablen bewusst überschreibt und dann das zurücksetzen vergisst.
Also nicht davon ausgehen, das der Speicher beim Starten mit 0 belegt ist.
Im Altirra im Menü: System->Configure...->Memory dort unter "Power-up pattern" einstellen.
Compiler haben auch manchmal den Vorteil, das diese meckern, wenn eine Variable nicht initialisiert ist. Hilft natürlich eher nicht, wenn man Variablen bewusst überschreibt und dann das zurücksetzen vergisst.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast