Helfen Sie uns, mehr Highscore-Spiele zu ermöglichen!

Moderator: Rockford

Antworten
tschak909
Beiträge: 202
Registriert: 17.08.2021 00:22
Has thanked: 4 times
Been thanked: 142 times
Kontaktdaten:

Helfen Sie uns, mehr Highscore-Spiele zu ermöglichen!

Beitrag von tschak909 »

Hallo, alle zusammen.

Jetzt, wo viele der existierenden Atari 8-Bit-Spiele mit Highscore-Tabellen portiert wurden, um die Vorteile von FujiNets #HighScoreEnabled-Funktion zu nutzen, denke ich, dass es eine gute Idee wäre, Highscore-Tabellen zu Spielen hinzuzufügen, die sie noch nicht haben.

Um zu beginnen, habe ich Änderungen an zwei Spielen vorgenommen:

PAC-MAN: https://github.com/FujiNetWIFI/fujinet- ... ts/pac-man
und Donkey Kong: https://github.com/FujiNetWIFI/fujinet- ... orts/dkong

Beide Spiele verwenden die gleichen Grundfunktionen für die Implementierung von Highscores:

* ANTIC Mode 6 Anzeige, die über die Anzeigeliste in einen bestehenden Bildschirm geschnitten wird
* 10 Punkteplätze
* 7-stellige Punktzahl
* 3 Initialen für den Namen
* gespeichert auf den Sektoren 719 und 720, die auch als Highscore-fähig markiert sind, so dass das FujiNet in diese Sektoren schreiben kann.

Das Muster für die Implementierung ist immer dasselbe: Finde eine Stelle, an der wir zu unserem Code springen können, dann:

* Sektoren von der Festplatte lesen
* die Highscore-Sache machen
* wenn die Punktetabelle geändert wurde, Sektoren zurückschreiben.
* zum Spiel zurückkehren

Es gibt auch Score-Scraper-Programme, die in C geschrieben sind und auf jedem Standard-PC kompiliert werden können. Sie erkennen, wenn ein Disk-Image geändert wird, und geben eine neue HTML-Datei mit der Punktetabelle aus, die auf einem Webserver angezeigt werden kann. Diese Programme sind hier zu sehen: http://scores.irata.online/ und in Quellform: https://github.com/FujiNetWIFI/fujinet- ... main/atari

Ein Trick, der hier angewandt wird, besteht darin, dass ein Lesevorgang in Sektor 1 durchgeführt und dann verworfen wird, so dass der Festplatten-Cache im FujiNet ungültig gemacht wird.

Ein Vorteil dieser Implementierung ist, dass sie sich ausschließlich auf das Lesen und Schreiben von Sektoren stützt und keine Netzwerkfunktionalität verwendet, so dass auch Nicht-FujiNet-Benutzer in den Genuss eines lokal gespeicherten Highscore-Spiels kommen.

Ich schreibe dies als eine Bitte, ich denke, dass dies etwas ist, bei dem andere helfen können, und wir alle davon profitieren können, indem wir den Beispielcode nehmen, den ich oben gepostet habe, und ihn an alle Spiele anpassen (z.B. Dig-Dug, Berzerk, Pole Position, etc.), so dass wir etwas haben, von dem die ganze Gemeinschaft profitieren kann.

Kann jemand anders helfen? :)

-Thom

---

Hi, Everyone.

Now that many of the existing Atari 8-bit games that have high score tables have been ported to take advantage of FujiNet's #HighScoreEnabled feature, I think it would be a good idea to start adding high score tables to games that do not already have them.

To start, I've done changes to two games:

PAC-MAN: https://github.com/FujiNetWIFI/fujinet- ... ts/pac-man
and Donkey Kong: https://github.com/FujiNetWIFI/fujinet- ... orts/dkong

Both of these games use the same basic feature set for implementing high scores:

* ANTIC Mode 6 display, cutting into an existing screen via display list
* 10 score places
* 7 digit score
* 3 initials for name
* stored on sectors 719 and 720, which are also marked as High Score enabled so that the FujiNet will write to them.

The pattern is always the same for implementation, find a spot where we can jump to our code, then:

* Read sectors from disk
* do the high score thing
* if score table changed, write sectors back.
* go back to game

There are also score-scraper programs, written in C and compilable on any standard PC, which detect when a disk image is changed, and output a new score table HTML file to be displayed on a web server, these can be seen here: http://scores.irata.online/ and in source form: https://github.com/FujiNetWIFI/fujinet- ... main/atari

One trick that's done here is that a read to sector 1 is done, and thrown away, so that the disk cache on the FujiNet is invalidated.

A benefit of this implementation, is that it relies entirely on merely reading and writing sectors, and does not use any networking functionality, so even non-FujiNet users get the benefit of a locally stored high score enabled game.

I am writing this as a plea, I think this is something that others can help with, and we all can benefit, by taking the example code that I've posted above, and adapting it to all the games (e.g. Dig-Dug, Berzerk, Pole Position, etc.) so that we can have something the whole community can benefit from.

Can anyone else help? :)

-Thom

Benutzeravatar
LarsImNetz
Beiträge: 156
Registriert: 24.08.2021 18:27
Has thanked: 115 times
Been thanked: 84 times
Kontaktdaten:

Re: Helfen Sie uns, mehr Highscore-Spiele zu ermöglichen!

Beitrag von LarsImNetz »

Hi,
ich würde gerne Night Knight mit einer High-Score Liste ausstatten, mit ein paar Änderungen:
  • Als Anzeige auch Graphics 1 (Antic 6)
    Daten aber wie folgt:
    • 1 Byte der Platz 1-9
      4 Bytes Score im BCD Format
      9 Bytes Name in Antic 6.
    Das sind dann 14 * 9 Bytes an Daten und die passen exakt in einen Sektor (126 Bytes) 2 Bytes bleiben über (vielleicht am Anfang "HT" für Highscore Table" Marker)
Als Ansicht würde ich folgendes vorschlagen: Da es exakt in eine 20 Bytes breite Zeile passt.

Code: Alles auswählen

# Score    Name
1 12345678 ABCDEFGHI
2 ...
...
9 12345678 ABCDEFGHI
Ich muss das mal runtercoden, wenn ich wieder Zeit habe.

Alles zusammen darf 2.5kb nicht überschreiten, mehr Speicher ist da nicht, vermutlich braucht es ca. 2kb. mit Buffer und Font.

Benutzeravatar
DjayBee
Beiträge: 678
Registriert: 17.08.2021 04:02
Has thanked: 418 times
Been thanked: 199 times
Kontaktdaten:

Re: Helfen Sie uns, mehr Highscore-Spiele zu ermöglichen!

Beitrag von DjayBee »

LarsImNetz hat geschrieben:
26.12.2023 14:14
Als Anzeige auch Graphics 1 (Antic 6)
Daten aber wie folgt:
Da bist du vollkommen frei.
Thoms Vorschlag bezieht sich nur darauf, bestehende Programme zu hacken.

Wenn du die FujiNet Highscore-Funktionalität verwenden willst, ist es nur wichtig, dass die Sektoren an einer fixen Stelle sind.

Wenn du zusätzlich die Scoreboards im Internet nutzen willst, brauchst du immer ein Stück Software (a.k.a. Scraper) im Webserver, das die Umwandlung deiner internen Datenstruktur in das erledigt, was die Website braucht.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast