Hallo Besucher, der Thread wurde 2,8k mal aufgerufen und enthält 19 Antworten

letzter Beitrag von tilobyte am

Lightpen für Emulatoren/VGA display?

  • Hi Leute,
    ich brauch mal ein paar Ideen.
    Ich habe hier 35 Lightpen und überlege, wie ich diese auf aktuelle Systeme übertragen kann.


    Klassisch laufen die ja über den Kathodenstrahl und dann springt die Software an, die die Position berechnet.


    Die aktuellen Display mit LCD usw. arbeiten da ja anders.
    Kann man ein Interface erstellen das das VGA-Bild nutzen kann um den Lightpen eine saubere Position zu übermitteln?
    So auf Armel, PIC oder gar auf Raspi-Basis?
    Ganz genial wäre, das ich dann den Adapter an eine TC64 stecken kann und loslegen könnte.


    Gruß Höppie

  • Ja, das ist mir klar, das ohne Kathodenstrahl es nicht geht!
    Habe ich das nicht geschrieben?


    Die Frage ist, kann man das Emulieren und das so gut, das es mit zB mit einen LCD -VGA geht?


    Eine Idee wäre:
    Ich kann zB einen WII-Remote als Kamera missbrauchen und zB einen rote LED an die Spitze des Lightpens
    setzten. So kann ich die Spitze mit der LED auf den Display tracken.

  • Ich kann zB einen WII-Remote als Kamera missbrauchen und zB einen rote LED an die Spitze des Lightpens

    die Wiimote trackt aber zwei Referenz IR LEDs und ermittelt die eigene Position und nicht die Position einer LED.
    Ich verwende am PC ein Track-IR Headtracker, eventuell könnte man in dieser Richtung überlegen. Funktioniert mit entweder Reflektion oder eben aktiver IR Quellen. Auch wenn für die 3D Erfassung drei versetzte Quellen (Reflektoren bzw IR LED) benötigt werden, würde für eine 2D Bewegung eine Quelle reichen.
    Ähnlicher Ansatz sind die Playstation bzw XBOX Tracker...

  • Kann man ein Interface erstellen das das VGA-Bild nutzen kann um den Lightpen eine saubere Position zu übermitteln?
    So auf Armel, PIC oder gar auf Raspi-Basis?
    Ganz genial wäre, das ich dann den Adapter an eine TC64 stecken kann und loslegen könnte.

    Ich wüsste nicht, wie das gehen sollte. Der Light-Pen besteht ja nur aus einer Linse und einer Fotodiode, die Positionsberechnung findet direkt im Videochip statt. Wobei "Berechnung" eher unpassend ist, denn es werden ja nur beim Eintreffen des Signals die aktuellen Rasterwerte in die Lightpen-Register kopiert.


    Das VGA-Bild von TC64 oder externem Konverter hat die doppelte Zeilenfrequenz des Originalsignals, daher gibt es automatisch einen zeitlichen Versatz, und somit kann der Lightpen nicht mehr korrekt funktionieren. Selbst wenn man an das VGA-Signal eine Röhre hängt, geht das schief: Denn zu dem Zeitpunkt, wo der Light-Pen auf ein VGA-Pixel reagiert, wäre der VIC ja schon mindestens eine Rasterzeile weiter (bis hin zu einem ganzen Frame).


    Das Problem ist also gar nicht die Erkennung der Position, sondern die nötige Kenntnis über das Timing des Original-Videosignals.

  • Um das ganze noch etwas auszuführen: beim System VIC-II > Röhre > Lightpen > VIC-II handelt es sich um eine Signalkette, wo alle Verzögerungen in den ">"s bekannt, konstant, und sehr klein sind (im Bereich von ein paar Mikrosekunden höchstens).


    Hält der User also den Lightpen an eine bestimmte Stelle und fliegt der Elektronenstrahl daran vorbei, dann geht das Signal zum VIC-II und der kopiert (wie Mac Bacon schon geschrieben hat), seine *internen* Raster-X- und -Y-Koordinaten in die Lightpen-Register. Aufgrund der o.g. Zeitverzögerung entsprechen die einem Punkt, der etwas weiter rechts liegt, aber der muß erst noch durch den Videoverstärker bis er dargestellt wird - der Elektronenstrahl ist dann aber auch schon die dazu nötige Strecke weiter nach rechts gelaufen.


    Der LCD-Bildschirm wird nun gar nicht mehr in der Weise von einem Elektronenstrahl aktualisiert (also, 'abgelaufen'), wie es bei einer Röhre stattfindet. Die Pixel 'leuchten' entweder die ganze Zeit und werden irgendwann geändert (im Prinzip ist so ein LCD-Panel ein analoger Speicherchip, der aber nicht ausgelesen werden kann), teilweise wird auch die Hintergrundbeleuchtung 100x pro Sekunde (oder öfter) ausgeschaltet um den Refresh zu kaschieren - dann 'blinkt' der Bildschirm aber als ganzes.


    Auf jeden Fall läßt sich aber kein zeitlicher *konstanter* Zusammenhang zwischen ausgegebenem Videosignal und Rückmeldung vom Lightpen zum Videochip mehr herstellen, und darum kann ein Lightpen an einem LCD-Bildschirm nicht funktionieren.

  • Folgende Idee.
    Ich tracke einen simulierten Lightpen (also nicht den originalen mit Photodiode).
    Bekomme da X- und Y-Werte.
    Der erzeugt dann das passende Signal, was ein richtiger Lightpen an dieser Stelle erzeuge würde.
    Das speise in dann im Port#1 oder #2 ein.
    Wie schnell müsste die Hardware sein, die das ermöglicht?


    Mir geht es um das Lightpen-Feeling und das man die C64 Software ohne Modifikation im Emulator oder
    auf einem originalen C64 mit VGA/HDMI benutzen kann,

  • Wie schnell müsste die Hardware sein, die das ermöglicht?

    Nun, in erster Näherung willst du eine Genauigkeit von einem einzelnen Pixel haben, also muss die Hardware mindestens so schnell reagieren können wie der echte VIC Pixel ausgibt - das sind ca. 8 MHz.

  • Das Problem ist das solch eine Lösung "Wissen" muss wo der vic gerade auf dem Schirm ist. Dann könnte so etwas mit tracking gehen. Das tracking system muss nämlich zu genau diesem Zeitpunkt das Signal schicken wenn der vic gerade am Punkt des ligthpens ist.

  • Puh... O.K.


    Also: im Prinzip bräuchtest Du einen CRT-Simulator. Heißt, etwas, was das originale Videosignal vom VIC-II mitliest und anhand der Synchronisationssignale herausbringt, wo der Videochip gerade 'ist'. Ist jetzt nicht völlig unmöglich - so etwas in der Art müssen die LCD-Bildschirme ja auch machen, um das Signal an der 'richtigen' Stelle in einen Puffer und von da dann ins Panel zu schreiben (wann das jetzt vom Puffer auf's Panel geht, ist im wesentlichen unbestimmt, aber so weit waren wir ja schon).


    Und jetzt macht deine Hardware eben einen Puls, wenn die so ermittelte X,Y-Koordinate mit den durch Tracking ermittelten X,Y-Koordinaten übereinstimmt. Wie schnell die Hardware sein müßte? Nun ja, die Auflösung des Lightpens am VIC-II ist 1 Multicolor-Pixel und der wird in 1/4 Mikrosekunde dargestellt.


    In VICE kennt der Emulator die Position vom Mauszeiger über dem Hauptfenster (das wäre dein Tracking) und weiß auch wo der VIC-II im Frame gerade 'ist'. Darum kann VICE nicht nur die richtigen Werte in die (emulierten) Lightpen-Register hineinschreiben, sondern sie werden auch exakt zum richtigen Zeitpunkt aktualisiert.

  • Ok,
    an die Info aus dem VIC käme ich über den User-Port, wenn ich bei original Hardware bin?
    (So wie es die TC64 macht?)
    Im Emulator wäre es fast leichter.
    Mit einem ATMEL kann ich auf 32MHz Takten, könnte das reichen?
    Müsste ein ganz schöner Aufwand sein nur um eventuell eine Lightgun, Koala-Paint oder Doodel
    Laufen zu lassen. :(

  • Das Problem ist das solch eine Lösung "Wissen" muss wo der vic gerade auf dem Schirm ist. Dann könnte so etwas mit tracking gehen. Das tracking system muss nämlich zu genau diesem Zeitpunkt das Signal schicken wenn der vic gerade am Punkt des ligthpens ist.

    Bei einem Emulator weiss man das sowieso, bei echter Hardware schiebt man das Luma-Signal durch einen Sync-Separator. Mit dessen Ausgangssignalen kann man den Anfang des Bildaufbaus finden und die Zeilen mitzählen und die horizontale Position in einer Zeile bestimmt sich dann durch die Zeit seit Zeilenanfang.

  • Wäre das evtl. mit einem Touchscreen möglich?
    Über USB würden dann die Koordinaten der entsprechenden Zelle ja übergeben und müssten „nur“ mit einer Zusatzhardware in ein für den c64 verwertbares Signal übersetzt werden?


    Nur geht das dann nicht mehr mit einem Lightpen, sondern man könnte mit den Fingern oder mit einem Stift auf dem Monitor malen...

  • Man kriegt sicher auf alle erdenklichen Weisen x- und y-Koordinaten ermittelt. Sollen die aber in den Lightpen-Registern auftauchen - nochmals! - geht das nur, indem der *originale* Output vom Videochip dahingehend analysiert wird, wo sich der Elektronenstrahl gerade bei einer Röhre befinden müßte (wie von Unseen und mir in Post #12 und #10 vorgeschlagen) und exakt dann einen Puls am Lightpen-Eingang reinschickt, wenn diese Position mit den anders ermittelten, "getrackten" oder "getouchscreenten" Koordinaten übereinstimmt.


    Läßt man die Erfordernis "das muß in den Lightpen-Registern drinstehen" weg, können die x- und y-Koordinaten natürlich auf beliebige Weise in den C64 gelangen. Der einzige andere Standard dürfte da die 1351-Maus bzw. das Koala-Pad (hier also über die Paddle-Register) sein. Alles andere erfordert eine Anpassung der Programme, die man mit dem neuen Eingabegerät nutzen will.

  • Ende der 90er hatte ich mal einen Bildschirm-Pen (WACOM?). Durch einen am
    Bildschirm montierten Winkel wurde die Position des Pens am Bildschirm ermittelt,
    was auch sehr gut funktionierte. Per UART wurde die Position dann an den PC
    weitergegeben. Und genau hier kann man eine Zusatzhardware zwischenschalten.
    Sie muss die C64-Sync-Signale abgreifen und damit den Strahl per Zähler
    nachbilden. Zum richtigen Zeitpunkt wird dann ein Impuls an den VIC geschickt.


    Ich würde dafür einen CPLD nehmen, ein schneller uC kann aber auch funktionieren.

  • Eine dumpfe Idee.
    So ein Display hat im Schnitt 60Hz, Kann man nicht da ein Tracking-Bild einbauen?
    zB: in einer Farbe, die der cevie nicht hat.
    Auf den Lightpen, kommt eine Folie, die nur diese Farbe durchlässt.
    Im Prinzip müssten wir doch alle 25 Bilder pro Sekunde die Stelle wissen?
    Hirnschmalz müsste in das Trackingbild (log2 suche pro Zeile und Spalte) stecken.
    Ok, das ganze würde flackern, aber, wenn tracking als overlay zum aktuellen Bild setzt, könnte es
    gehen.
    Rot ist der Pointer.

  • Gibts denn was Neues? Wäre ja schon cool, Lightpens und Guns weiter an modernen Ausgabegeräten nutzen zu können.

    Gerade den Pen fand ich immer ganz witzig, aber die senkrechte Benutzung war auf Dauer zu anstrengend. Ein kleines flaches LCD- Display oder einen TV dagegen könnte man auch hinlegen oder z.B. in die Schreibtischplatte versenken.