Game over...

Moderator: Rockford

Antworten
Benutzeravatar
Dr. Irata
Beiträge: 960
Registriert: 24.08.2021 14:40
Has thanked: 114 times
Been thanked: 283 times
Kontaktdaten:

Game over...

Beitrag von Dr. Irata »

... 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

Benutzeravatar
Kveldulfur
Beiträge: 673
Registriert: 17.08.2021 02:32
Has thanked: 257 times
Been thanked: 183 times
Kontaktdaten:

Re: Game over...

Beitrag von Kveldulfur »

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 :-)
Zuletzt geändert von Kveldulfur am 30.04.2024 16:05, insgesamt 1-mal geändert.
Meine Projekte findest Du hier...

Benutzeravatar
Dr. Irata
Beiträge: 960
Registriert: 24.08.2021 14:40
Has thanked: 114 times
Been thanked: 283 times
Kontaktdaten:

Re: Game over...

Beitrag von Dr. Irata »

... 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...

Benutzeravatar
pps
Beiträge: 573
Registriert: 18.06.2021 23:05
Has thanked: 126 times
Been thanked: 229 times
Kontaktdaten:

Re: Game over...

Beitrag von pps »

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...
Reset umdrehen war nicht ganz so trivial. Hatte damals mal eine Routine, die funktionierte... Naja, bisher nicht wieder gefunden...
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
DjayBee
Beiträge: 701
Registriert: 17.08.2021 04:02
Has thanked: 430 times
Been thanked: 204 times
Kontaktdaten:

Re: Game over...

Beitrag von DjayBee »

Dr. Irata hat geschrieben:
30.04.2024 16:05
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...
Was ging nicht?
- Es war kein Warmstart.
- Deine Variablen wurden nicht initialisiert.

Benutzeravatar
LarsImNetz
Beiträge: 169
Registriert: 24.08.2021 18:27
Has thanked: 126 times
Been thanked: 88 times
Kontaktdaten:

Re: Game over...

Beitrag von LarsImNetz »

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.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast