SNESoIP: SNES Ethernet Adapter

Hier könnt ihr Euch mit Gleichgesinnten austauschen bei der Entwicklung eines neuen Spiels oder eines neuen Stücks Hardware... oder einfach nur über Coding und Spieleentwicklung allgemein plaudern.

Moderatoren: ikari_01, d4s

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Online Multiplayer-Projektidee

Beitrag von mupfelofen-de » 3. August 2013, 18:36

Kleiner Versuchsaufbau mit dem sich eine Weile arbeiten lässt. Das im Hintergrund entstandene Chaos zeig ich besser nicht.
Hab mir zudem eine Testrom geschrieben, welche die Controller-Eingaben kompakt auf dem Bildschirm anzeigt (Rom + Quellcode im Anhang).

So, nun erstmal Chaos beseitigen und dann kanns losgehen. :)

PS: Ja, ich hab tatsächlich einen Original-Controller auseinandergenommen. Diese 4€ Lionsware-Controller spielen sich zwar ganz gut, fallen aber schon auseinander wenn man sie schief anschaut.
Dateianhänge
testrom.zip
(9.84 KiB) 155-mal heruntergeladen
Zuletzt geändert von mupfelofen-de am 5. August 2013, 23:47, insgesamt 1-mal geändert.
Visit my user-profile at shackspace the hackerspace in Stuttgart.

Benutzeravatar
F_L_a_S_H
SNES-Freak
SNES-Freak
Beiträge: 423
Registriert: 10. September 2011, 02:24
+Positive Tradingpoints+: 9 von 9

Re: SNESoIP: SNES Online Multiplayer-Projektidee

Beitrag von F_L_a_S_H » 4. August 2013, 00:12

Einiges Emus haben doch Netzsupport, schau doch mal wie die das machen.

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Online Multiplayer-Projektidee

Beitrag von mupfelofen-de » 4. August 2013, 16:42

F_L_a_S_H hat geschrieben:Einiges Emus haben doch Netzsupport, schau doch mal wie die das machen.
Weil es für einen Emulator kein Problem darstellt die relevanten Informationen aus dem Speicher zu lesen und über das Netzwerk zu synchronisieren. Mein Ansatz ist ein anderer, da ich lediglich die Controller-Eingaben über das Internet leiten möchte.

Naja, selbst wenn es nicht zum spielen kommerzieller Spiele reichen sollte, bleibt immer noch die Option der Eigenentwicklung.

PS: Die Firmware formt sich so langsam und liest zumindest mal die Controller-Eingabe. :wink:
Visit my user-profile at shackspace the hackerspace in Stuttgart.

Benutzeravatar
F_L_a_S_H
SNES-Freak
SNES-Freak
Beiträge: 423
Registriert: 10. September 2011, 02:24
+Positive Tradingpoints+: 9 von 9

Re: SNESoIP: SNES Online Multiplayer-Projektidee

Beitrag von F_L_a_S_H » 5. August 2013, 00:52

Du hast aber Probleme mit der Asyncronität, du könntest natürlich das Bild streamen,aber Twitch und co haben eine sehr krasse Delay. Daher solltest du vielleicht mal schauen wie die Emulatoren das abgleichen.

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Online Multiplayer-Projektidee

Beitrag von mupfelofen-de » 5. August 2013, 09:54

Die Firmware liest nun die Controller-Eingaben in eine 16-Bit Integer variable und schickt die Daten dann an die Konsole. Eine Verzögerung konnte ich nicht spüren und habe damit erfolgreich den ersten Level von Zombies durchgespielt. Hätte nie gedacht, dass ich beim Schreiben einer so simplen Routine so viel lernen kann (und musste).

Die Basis ist jedenfalls fertig und der nächste Schritt ist die Netzwerkfunktionalität. :rock:
Das Ganze ist auch echt winzig; gerade mal 236 bytes! Mit etwas Glück kann ich mir später den ATmega168 sparen und bei einem ATmega8 bleiben. Hat ja immerhin 8kb Flash-Speicher. :)
F_L_a_S_H hat geschrieben:Du hast aber Probleme mit der Asyncronität, du könntest natürlich das Bild streamen,aber Twitch und co haben eine sehr krasse Delay. Daher solltest du vielleicht mal schauen wie die Emulatoren das abgleichen.
Ob ich später Probleme haben werde, kann ich im Augenblick noch nicht sagen. Erstmal muss es funktionieren. Wie gesagt: mein Ziel ist es lediglich die Controller-Eingaben zu tauschen, mehr nicht. Alle weitere Schritte überlege ich mir sobald es soweit ist.
Visit my user-profile at shackspace the hackerspace in Stuttgart.

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von mupfelofen-de » 5. August 2013, 23:33

Es macht irgendwie Laune, Zombies im Coop mit nur einem Controller zu spielen, gnaha. :twisted:

Nur zur Info: der Beitrag wurde auf meinen Wunsch hin umbenannt. Werde den Projektstatus ab sofort in den ersten Beitrag schreiben.
Visit my user-profile at shackspace the hackerspace in Stuttgart.

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von mupfelofen-de » 7. August 2013, 09:36

Hab mal 5 SNES-Controllerbuchsen bestellt und mit dem Netzwerkcode angefangen. Es geht also zügig vorran! :)
Visit my user-profile at shackspace the hackerspace in Stuttgart.

snoer
SNES-Programmer
SNES-Programmer
Beiträge: 249
Registriert: 27. Januar 2013, 13:10
+Positive Tradingpoints+: 5 von 5

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von snoer » 7. August 2013, 10:13

ich melde mich schonmal zur closed beta an ;p

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von lytron » 7. August 2013, 10:16

snoer hat geschrieben:ich melde mich schonmal zur closed beta an ;p
Ich hoffe, ich gelte sowieso als Betatester! :D

Sag bescheid, sobald es Sinn macht, dass ich mit der ROM anfange.
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
Redscorpion
snesfreaks.com-Team
snesfreaks.com-Team
Beiträge: 1739
Registriert: 18. November 2007, 13:08
+Positive Tradingpoints+: 85 von 85
Wohnort: Halle
Kontaktdaten:

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von Redscorpion » 7. August 2013, 10:54

dito!
<--- SNES USB PAD Fertig 100% --->
<--- Custom SNES Mod + 60 hz 100% --->

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von mupfelofen-de » 7. August 2013, 22:04

snoer hat geschrieben:ich melde mich schonmal zur closed beta an ;p
Als würde sich China nach meinem ganz persönlichen Zeitplan richten, hatte ich heute Mittag die bestellten Ethernet-Module im Briefkasten. Sind für den Anfang leider nur 2.

Aber sofern die Prototypen funktionieren, bau ich gerne noch ein paar Geräte auf. Aber nun muss es erstmal auf meinem Steckbrett funktionieren. :)

Ansonsten überlege ich gerade, wie das Gerät am ehesten konfiguriert werden könnte, da sich z.B. die IP des Servers verändern kann und nicht jeder einen ISP für AVRs besitzt. Vielleicht direkt über den Controller über eine Tastenkombination beim booten in binärer Form? Speichern könnte man das Ganze dann einfach im EEPROM des Mikrocontrollers. Vorschläge und Ideen sind willkommen!

Nachtrag: das mit der Tastenkombination beim Systemstart funktioniert sehr gut. Habs eben ausprobiert.
Visit my user-profile at shackspace the hackerspace in Stuttgart.

snoer
SNES-Programmer
SNES-Programmer
Beiträge: 249
Registriert: 27. Januar 2013, 13:10
+Positive Tradingpoints+: 5 von 5

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von snoer » 8. August 2013, 00:17

also.. ich verstehe ehrlichgesagt nur halb was du gerade fragst, aber ich denke, es geht darum die verbindung zwischen den beiden clients sicherzustellen.

letzten endes macht so ein ethernet adapter ja am meisten sinn, wenn er ohne dritt server funktioniert.
ansonsten macht man den benutzer ja von einem service abhängig oder nötigt ihn einen eigegen server laufen zu lassen.
sprich: es sollte ermöglicht werden direkt p2p zu connecten. wie sieht es aus wenn man ein scenario mit 3 playern und mehr in betracht zieht?

also am geilsten wäre es ja wenn man eine art hardware schalter hat, den man auf server bzw client stellt. in anbetracht der Tatsache, dass es spiele mit bis zu 8 spielern gibt (zumindest sollten aber 4 supportet werden) wäre ein Schalter gut auf dem man seine player nummer einstellt.
so wären jederzeit X leute die die hardware besitzen in der lage online zusammen zu spielen. sie müssten lediglich die ip austauschen.

player 1 stellt auf player1 (=server) und bekommt ..wie auch immer.. (vielleicht auf einem lcd display) seine ip angezeigt. (ist es realistisch deinen server auf einen ic in die hardware zu integrieren?)

ehe player2 sein snes anschaltet, stellt er auf player2 (=client1), und gibt die ip, die er von player 1 erhalten hat in sein controller modul ein ..entweder mit 3 knöpfen (einer macht +1, einer next, einer previous) oder einem num block.
..das würde aber eine externe stromversorgung verlangen.
bei player1 sollten LEDs am modul anzeigen ob, und welche player sich connected haben,
und bei den anderen playern, sollte per LED angezeigt werden, ob die verbindung zu player1 steht.

vielleicht an der frage vorbei, vielleicht nicht, aber:
ich frage mich gerade wie man das Ganze syncron starten kann..
es müsste ja so sein, dass erst player2 das snes anmacht, und sich das modul mit player1 verbindet. andererseits muss player1 sein snes anhaben, um seine ip zu kennen.
ich habe schon mehrfach erlebt, dass spiele freezen wenn man während des betriebs einen controller einsteckt. das wäre tatsächlich ein argument für eine externe server software.

ich merke, es ist spät und ich habe tatsächlich mehr wein getrunken als ich dachte, als ich anfing diese beitrag zu verfassen. ich schick ihn trotzdem ab. wer weiss.. vielleicht war er ja nicht vollkommen am thema vorbei.. ansonsten, nichts für ungut ":)

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von mupfelofen-de » 8. August 2013, 08:23

snoer hat geschrieben:also.. ich verstehe ehrlichgesagt nur halb was du gerade fragst, aber ich denke, es geht darum die verbindung zwischen den beiden clients sicherzustellen.
Im Augenblick befinden sich die Einstellungsparameter direkt im Quellcode. Und da der Adapter softwareunabhängig von der SNES arbeitet, benötige ich eine Möglichkeit diese Parameter zu ändern.
Ein LCD-Display und Taster wären denkbar, aber eigentlich würde ich darauf gerne verzichten, damit die Kosten für die Hardware nicht unnötig in die Höhe gehen. Der Adapter soll nicht viel können, aber das was er kann soll er gut machen. :)
snoer hat geschrieben:letzten endes macht so ein ethernet adapter ja am meisten sinn, wenn er ohne dritt server funktioniert.
ansonsten macht man den benutzer ja von einem service abhängig oder nötigt ihn einen eigegen server laufen zu lassen.
sprich: es sollte ermöglicht werden direkt p2p zu connecten. wie sieht es aus wenn man ein scenario mit 3 playern und mehr in betracht zieht?
Hmm, diese Möglichkeit habe ich um ehrlich zu sein noch gar nicht in Betracht gezogen. Vielleicht einfach nur aus Bequemlichkeit. Möglich wäre das natürlich schon, würde aber auch bedeuten, dass die Einstellungsparameter ständig geändert werden müssten.

Und wegen der Spielerzahl: nun, das müsste man ausprobieren. Dazu kann ich sicherlich mehr sagen, wenn mein Prototyp funktioniert. Solange es nicht zu Timing-Problemen kommt, könnte man die Anzahl der Spieler im Prinzip nach belieben erweitern (solange der verwendete Mikrocontroller ausreichend Pins zur Verfügung hat und ihm sagt welche Daten er an welchen Ausgang weiterreichen soll.
snoer hat geschrieben:also am geilsten wäre es ja wenn man eine art hardware schalter hat, den man auf server bzw client stellt. in anbetracht der Tatsache, dass es spiele mit bis zu 8 spielern gibt (zumindest sollten aber 4 supportet werden) wäre ein Schalter gut auf dem man seine player nummer einstellt.
so wären jederzeit X leute die die hardware besitzen in der lage online zusammen zu spielen. sie müssten lediglich die ip austauschen.
Falls du meinen ursprünglichen ersten Beitrag gelesen hast, wirst du sehen dass ich etwas ähnliches im Sinn hatte. Die Spieler-Nummer wäre in diesem Fall eine einmalige ID des Adapters, die von einem weiteren Gerät angefordert werden kann (via Einstellungsparameter an einem DIP-Schalter). Ich werde diese Idee aber auf jeden Fall im Hinterkopf behalten, jedoch erstmal ohne p2p-Modell weiterarbeiten. Der Server ist ja quasi so gut wie fertig und ich habe im Augenblick ja auch nur ein Gerät mit dem ich arbeiten kann. Das macht das Entwickeln bequem. Zudem fällt es mir zum gegebenen Zeitpunkt noch etwas schwer, mich in ein mehr-als-zwei-Spieler-Szenario hineinzudenken. :)
snoer hat geschrieben:[…] (ist es realistisch deinen server auf einen ic in die hardware zu integrieren?)
Absolut. Es macht bei nur zwei Adaptern in der Tat keinen nennenswerten Unterschied. Lediglich der Programmcode würde vermutlich etwas mehr Platz auf dem Mikrocontroller benötigen. Wie gut das aber bei mehr als zwei Spielern funktionieren würde, kann ich leider erst sagen, wenn ich es ausprobiert habe.
snoer hat geschrieben:ehe player2 sein snes anschaltet, stellt er auf player2 (=client1), und gibt die ip, die er von player 1 erhalten hat in sein controller modul ein ..entweder mit 3 knöpfen (einer macht +1, einer next, einer previous) oder einem num block.

..das würde aber eine externe stromversorgung verlangen.
bei player1 sollten LEDs am modul anzeigen ob, und welche player sich connected haben,
und bei den anderen playern, sollte per LED angezeigt werden, ob die verbindung zu player1 steht.
Wieso bevor der zweite Spieler sein SNES anschaltet? Ich glaube, ich weiß schon worauf das hinausläuft und springe einfach mal zum nächsten Punkt. :)
snoer hat geschrieben:vielleicht an der frage vorbei, vielleicht nicht, aber:
ich frage mich gerade wie man das Ganze syncron starten kann..
es müsste ja so sein, dass erst player2 das snes anmacht, und sich das modul mit player1 verbindet. andererseits muss player1 sein snes anhaben, um seine ip zu kennen.
ich habe schon mehrfach erlebt, dass spiele freezen wenn man während des betriebs einen controller einsteckt. das wäre tatsächlich ein argument für eine externe server software.
Das ist in der Tat das größte Problem, welches in meinem Konzept nicht berücksichtigt wird: Synchronität.
Der Adapter tauscht lediglich die Eingaben und schert sich in keinster Weise um irgendwelche Zufallswerte im Spielverhalten. Die tendenzielle Möglichkeit mit solchen Adaptern online zu spielen, beruht lediglich auf ein (vermutlich nicht ganz realistisches) Grundvertrauen, dass die Spielemodule genau das gleiche tun und sich die Spieler zumindest zu einem einzigen Zeitpunkt auf dem gleichen Bildschirm befinden. Das müsste man einfach ausprobieren. Freue mich schon auf das erste proof-of-concept Street Fighter II-Match. :P
snoer hat geschrieben:ich merke, es ist spät und ich habe tatsächlich mehr wein getrunken als ich dachte, als ich anfing diese beitrag zu verfassen. ich schick ihn trotzdem ab. wer weiss.. vielleicht war er ja nicht vollkommen am thema vorbei.. ansonsten, nichts für ungut ":)
Am Thema vorbei? In keinster Weise. Danke für die ausführliche Rückmeldung und die tollen Ideen. Werde ernsthaft über ein p2p-Konzept nachdenken und ggf. noch einmal auf dich zurückkommen.

Und als Weintrinker verstehe ich dich natürlich besser als du glaubst. Wein macht eben sinnig und lustig. xD

Viele Grüße
M.
Visit my user-profile at shackspace the hackerspace in Stuttgart.

basitsch

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von basitsch » 8. August 2013, 09:04

Spendiere deinem AVR doch noch nen SD-Slot. Dort könntest du ne Config-Datei ablegen, die eingelesen und deren Inhalt im EEProm gespeichert wird. Also braucht man die SD-Karte nur für eine Änderung der Config, sonst nicht.

Sparst dir Knöpfe und Display. Brauchst nur nen SD-Slot und so was wie nen HC4050. Kosten alles nicht viel.

Benutzeravatar
mupfelofen-de
SNES-Programmer
SNES-Programmer
Beiträge: 214
Registriert: 2. März 2013, 10:38
+Positive Tradingpoints+: 0 von 0
Wohnort: Stuttgart
Kontaktdaten:

Re: SNESoIP: SNES Ethernet Adapter

Beitrag von mupfelofen-de » 8. August 2013, 21:47

basitsch hat geschrieben:Spendiere deinem AVR doch noch nen SD-Slot. Dort könntest du ne Config-Datei ablegen, die eingelesen und deren Inhalt im EEProm gespeichert wird. Also braucht man die SD-Karte nur für eine Änderung der Config, sonst nicht.

Sparst dir Knöpfe und Display. Brauchst nur nen SD-Slot und so was wie nen HC4050. Kosten alles nicht viel.
Tolle Idee, benötigt aber wiederum mehr Flash-Speicher für zusätzliche Logik und Zugriff auf den Slot von Außen. Wäre aber auf jeden Fall eine sehr komfortable Lösung. Für den EEPROM gäbe es dafür auch schöne Update-Funktionen, die nicht immer sofort losschreibt. Wie wichtig ist der Buffer? Habe bisher noch nie etwas mit SD-Karten gemacht.
Visit my user-profile at shackspace the hackerspace in Stuttgart.

Antworten