Guten Morgen in die Runde,
gestern trat ein komisches Timingproblem beim Test meines neuen Spieles auf:
Bei mir lief alles komplett im Mac Emulator stabil, bei Janko auf dem Altirra lief alles gut, stürzte aber bei einem Tastendruck völlig unerwartet ab... auf einem nativen Rechner erfolgte zwar kein Absturz, die Musik fing aber zu eiern an.
Da die Tastatur das Problem auslöste, suchten wir nach der Möglichkeit diese abzuschalten.
Die Befehle sei / cli schaltet zwar die Tastatur ab, alle anderen maskierten Interrupts allerdings auch.. dies war also nicht die Lösung.
Man kann die Tastatur aber recht einfach ganz selektiv abschalten. Das Schattenregister hierzu ist $10 und mit den Anweisungen:
lda $10
and #%01000000
sta $10
Das hat den Absturz dann auch beseitigt und das Programm lief dann wieder stabil.
Das Problem war natürlich letztendlich ein ganz anderes:
Ich lasse die Musik über den VBI laufen und noch ein paar andere Dinge. Der VBI ist damit grenzwertig belastet. Wenn man nun die Tastatur betätigt, wird ja ein weiterer Interrupt ausgelöst und dieser überlastet dann alles und das Spiel stürzt ab. Ich werde nun den VBI umbauen und komplett entlasten und viel schlanker machen. Generell macht es wohl Sinn, möglichst wenig Code in den VBI zu stecken - soll das Spiel dann auch noch für unsere amerikanischen Freunde mit 60 Hz laufen, dann macht es eh Sinn...
Was man allerdings hier auch gut sieht:
Die Emulatoren sind irgendwie alle unterschiedlich vom Verhalten und auch unterschiedlich zum Original!!
LG
Peter
Tastatur selektiv abschalten...
Moderator: Rockford
Online
- Irgendwer
- Beiträge: 126
- Registriert: 25.08.2021 19:05
- Has thanked: 24 times
- Been thanked: 66 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
Um solche Situation im Vorfeld zu verhindern, empfiehlt es sich, ein Flag beim Betreten des VBIs zu setzen und abzufragen (und am Ende wieder zu löschen).
Notfalls kann man dann einen VBI aussetzen, ohne das der Rechner gleich abstürzt. Während der Entwicklung kann man diesen Zustand auch noch visualisieren (z.B. über ein Farbregister) und bekommt dadurch eine Rückmeldung über das Problem.
Häufiger ist auch ein Mechanismus anzutreffen, beim Betreten des VBI das Hintergrundfarbregister auf eine andere Farbe zu setzen als beim Verlassen (direkt das Hardwareregister, nicht das Schattenregister!). Somit bekommt man eine schöne CPU-Last-Anzeige während der Entwicklung, je nachdem wie viel Zeilen andersfarbig sind...
(Der klassische RMT-Player macht genau das...)
Online
- Dr. Irata
- Beiträge: 1233
- Registriert: 24.08.2021 14:40
- Has thanked: 177 times
- Been thanked: 405 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
... alles cool ... nur hilft es nicht, wenn alles ok aussieht und mein Entwicklungsemulator kein Problem anzeigt und nur der Altirra dann rumzickt...
Übrigens habe ich den Farbwechseltest im vbi drin, in diesem Fall zeigt er gar keine Überlastung an...
Übrigens habe ich den Farbwechseltest im vbi drin, in diesem Fall zeigt er gar keine Überlastung an...
- pps
- Beiträge: 756
- Registriert: 18.06.2021 23:05
- Has thanked: 189 times
- Been thanked: 360 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
Also wenn man "nur" den Emulator hat zum Testen, empfehle ich aktuell den Altirra. Kein anderer Emulator kommt so nahe an den echten ATARI ran. Dort am besten dann auch originales OS und BASIC nutzen und auf möglichst viel Kompatibilität konfigurieren. Dennoch ist ein Test am echten Gerät immer sinnvoll, bevor man dann das Programm veröffentlicht.
Online
- Dr. Irata
- Beiträge: 1233
- Registriert: 24.08.2021 14:40
- Has thanked: 177 times
- Been thanked: 405 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
... ich habe halt einen Mac ... und das ist leider mit Altirra schwierig und langsam...
- Irgendwer
- Beiträge: 126
- Registriert: 25.08.2021 19:05
- Has thanked: 24 times
- Been thanked: 66 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
Es ist besser, ein Licht zu entzünden, als auf die Dunkelheit zu schimpfen.
Konfuzius (551 - 479 v. Chr.)
(Die Logik zum Ignorieren eines VBI, der bereits in Behandlung ist, hätte Dich aber schon vor dem Absturz bewahrt.)
Konfuzius (551 - 479 v. Chr.)
(Die Logik zum Ignorieren eines VBI, der bereits in Behandlung ist, hätte Dich aber schon vor dem Absturz bewahrt.)
Online
- Dr. Irata
- Beiträge: 1233
- Registriert: 24.08.2021 14:40
- Has thanked: 177 times
- Been thanked: 405 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
... vielen Dank für all die guten Ratschläge ... vielleicht sollte ich wieder ein paar Bilder malen statt auf einem alten Atari zu programmieren...
Ich muss es auch eigentlich nicht erklären, dennoch versuche ich es noch einmal:
Aus arbeitstechnischen Gründen musste ich seit 2009 komplett auf Mac umstellen. Die Rechner sind auch toll und laufen sehr stabil.
Es gibt sicherlich sehr viele Vorteile einen Mac zu nutzen, natürlich auch Nachteile. Ist auch egal, denn eigentlich habe ich kaum eine Wahl.
Natürlich kann ich mir auch einen Windows Rechner kaufen und dann diesen nur für Atari nutzen, das würde für mich aber mehr Kosten verursachen und mehr Platz verbrauchen. Da ich auch von unterwegs programmiere (egal wo ich bin - den Rechner habe ich dabei) und aber auch mal mobil arbeiten muss, bräuchte ich also ständig 2 Rechner, die ich auch mitschleppen müsste. Das ist mega unpraktisch - darüber nachgedacht habe ich allerdings schon...
Ich bin also auf Mac angewiesen und arbeite tatsächlich auch lieber mit diesen Kisten.
Wenn man auf Mac programmiert, dann ist es immer schwieriger hinsichtlich der ganzen Atari-Umgebung. Natürlich ist der Altirra besser und genauer, aber auf Mac unpraktisch. Wenn ich in WUDSN Mads Eclipse programmiere, dann teste ich direkt in der Eclipse Umgebung. Der Start von Altirra über Wine dauert echt lange und ist daher eher unschön - außerdem hängt sich das ganze System nach ca. 20 Sekunden auf. Vielleicht können wir das ja endlich auf der Fujiama fixen...
Wenn jetzt - wie in diesem Fall - ein Fehler bzw. Absturz erst dann auftritt (und nur unter Altirra) wenn man die Tastatur drückt (die man in dem Spiel gar nicht nutzt), dann wird der Entwickler (also ich) ja gar nicht aufmerksam auf dieses Problem. Warum Janko beim Test das gemacht hat, weiß ich nicht, war aber gut.
Übrigens läuft das Programm auch bei 60 Hz unter Altirra fehlerlos (wenn man nicht eine Taste drückt).
Ich würde mal sagen, daß jeder Scrollshooter mit mehreren DLI´s, VBIs, verschiedenen DL, Bankswitching, selbstmodifizierender Code inside zeitkritisch ist auf dem A8. Da kann immer alles passieren.
Und eigentlich wollte ich hier ja nur posten, wie man selektiv die Tastatur abschalten kann, da sie offensichtlich bei einem zeitkritischen Spiel den Rechner überlasten kann...
Ich muss es auch eigentlich nicht erklären, dennoch versuche ich es noch einmal:
Aus arbeitstechnischen Gründen musste ich seit 2009 komplett auf Mac umstellen. Die Rechner sind auch toll und laufen sehr stabil.
Es gibt sicherlich sehr viele Vorteile einen Mac zu nutzen, natürlich auch Nachteile. Ist auch egal, denn eigentlich habe ich kaum eine Wahl.
Natürlich kann ich mir auch einen Windows Rechner kaufen und dann diesen nur für Atari nutzen, das würde für mich aber mehr Kosten verursachen und mehr Platz verbrauchen. Da ich auch von unterwegs programmiere (egal wo ich bin - den Rechner habe ich dabei) und aber auch mal mobil arbeiten muss, bräuchte ich also ständig 2 Rechner, die ich auch mitschleppen müsste. Das ist mega unpraktisch - darüber nachgedacht habe ich allerdings schon...
Ich bin also auf Mac angewiesen und arbeite tatsächlich auch lieber mit diesen Kisten.
Wenn man auf Mac programmiert, dann ist es immer schwieriger hinsichtlich der ganzen Atari-Umgebung. Natürlich ist der Altirra besser und genauer, aber auf Mac unpraktisch. Wenn ich in WUDSN Mads Eclipse programmiere, dann teste ich direkt in der Eclipse Umgebung. Der Start von Altirra über Wine dauert echt lange und ist daher eher unschön - außerdem hängt sich das ganze System nach ca. 20 Sekunden auf. Vielleicht können wir das ja endlich auf der Fujiama fixen...
Wenn jetzt - wie in diesem Fall - ein Fehler bzw. Absturz erst dann auftritt (und nur unter Altirra) wenn man die Tastatur drückt (die man in dem Spiel gar nicht nutzt), dann wird der Entwickler (also ich) ja gar nicht aufmerksam auf dieses Problem. Warum Janko beim Test das gemacht hat, weiß ich nicht, war aber gut.
Übrigens läuft das Programm auch bei 60 Hz unter Altirra fehlerlos (wenn man nicht eine Taste drückt).
Ich würde mal sagen, daß jeder Scrollshooter mit mehreren DLI´s, VBIs, verschiedenen DL, Bankswitching, selbstmodifizierender Code inside zeitkritisch ist auf dem A8. Da kann immer alles passieren.
Und eigentlich wollte ich hier ja nur posten, wie man selektiv die Tastatur abschalten kann, da sie offensichtlich bei einem zeitkritischen Spiel den Rechner überlasten kann...
- Irgendwer
- Beiträge: 126
- Registriert: 25.08.2021 19:05
- Has thanked: 24 times
- Been thanked: 66 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
Wie wäre es denn mit Bilder malen für den oder auf dem Atari? 
Ist doch prima, dass Du Dich auf dem Mac so wohl fühlst.
Ich weiß jetzt nicht, ob das wirklich ein Trost ist, aber ich entwickle fast ausschließlich unter Linux und auch wenn ich Altirra einigermaßen problemlos unter Wine hier zum Laufen bekomme, ist mein "Hauptemulator" atari800, der einfach besser ins System "passt".
(Der große Meister und "fleißiges Bienchen" Fandal nutzt übrigens auch nicht Altirra, da er die UI überhaupt nicht mag und unpraktisch findet. Trotzdem haut er eine Produktion nach der anderen heraus:
http://a8.fandal.cz/stuff.php
http://a8.fandal.cz/search.php?search=f ... etails_x=x
)
Man kann also auch sehr gut ohne Altirra auskommen und musste es vor 15 Jahren - als es den Emulator noch nicht gab - ja auch. Der Test auf physischer Hardware ist für mich sowieso unabdingbar, da ich meist "komische Controller" unterstütze, die von keinem Emulator nachgebildet werden...
Noch ein letzten Hinweis zur Tastaturabschaltung:
Die meisten "Profis"
- verzichten auf das OS
- schreiben ihre eigenen IRQ-Service-Routinen
- reduzieren den Satz von Schattenregistern aus Performancegründen
- blenden das OS aus um an den Speicher darunter zu kommen und brauchen dann auch eigene Handler
und laufen somit gar nicht in das Problem, weil es gar keine Unterstützung für die Tastatur gibt.
(Für den Fall, dass Du noch ein wenig mehr aus dem System kitzeln musst...)

Ist doch prima, dass Du Dich auf dem Mac so wohl fühlst.
Ich weiß jetzt nicht, ob das wirklich ein Trost ist, aber ich entwickle fast ausschließlich unter Linux und auch wenn ich Altirra einigermaßen problemlos unter Wine hier zum Laufen bekomme, ist mein "Hauptemulator" atari800, der einfach besser ins System "passt".
(Der große Meister und "fleißiges Bienchen" Fandal nutzt übrigens auch nicht Altirra, da er die UI überhaupt nicht mag und unpraktisch findet. Trotzdem haut er eine Produktion nach der anderen heraus:
http://a8.fandal.cz/stuff.php
http://a8.fandal.cz/search.php?search=f ... etails_x=x
)
Man kann also auch sehr gut ohne Altirra auskommen und musste es vor 15 Jahren - als es den Emulator noch nicht gab - ja auch. Der Test auf physischer Hardware ist für mich sowieso unabdingbar, da ich meist "komische Controller" unterstütze, die von keinem Emulator nachgebildet werden...

Noch ein letzten Hinweis zur Tastaturabschaltung:
Die meisten "Profis"
- verzichten auf das OS
- schreiben ihre eigenen IRQ-Service-Routinen
- reduzieren den Satz von Schattenregistern aus Performancegründen
- blenden das OS aus um an den Speicher darunter zu kommen und brauchen dann auch eigene Handler
und laufen somit gar nicht in das Problem, weil es gar keine Unterstützung für die Tastatur gibt.
(Für den Fall, dass Du noch ein wenig mehr aus dem System kitzeln musst...)
Online
- Dr. Irata
- Beiträge: 1233
- Registriert: 24.08.2021 14:40
- Has thanked: 177 times
- Been thanked: 405 times
- Kontaktdaten:
Re: Tastatur selektiv abschalten...
also das OS ausblenden und RAM unter ROM nutzen habe ich beim letzten Spiel genutzt, das klappt ganz gut.
Ich will jetzt den Shooter beenden und dann mal sehen was ich mache...
Ich denke etwas weiter an dem RayCaster rumforschen - ob da jemals was rauskommt, keine Ahnung.
Ansonsten mal mit dem vbxe was machen und dann hätte ich echt mal Lust etwas wirklich schönes einfaches zu bauen... was weiß ich noch nicht...
Ich will jetzt den Shooter beenden und dann mal sehen was ich mache...
Ich denke etwas weiter an dem RayCaster rumforschen - ob da jemals was rauskommt, keine Ahnung.
Ansonsten mal mit dem vbxe was machen und dann hätte ich echt mal Lust etwas wirklich schönes einfaches zu bauen... was weiß ich noch nicht...
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast