Vectrex Port für ESP32 (FabGL/TTGO)

  • 1. Für FabGL und TTGO:

    GitHub - rpsubc8/ESP32TinyVectrex: Port Vectrex John Hawthorn to ESP32
    Port Vectrex John Hawthorn to ESP32. Contribute to rpsubc8/ESP32TinyVectrex development by creating an account on GitHub.
    github.com


    2. Hier gibt es einen extrem unaufgeräumten Hack um die Darstellung auf einem Oszilloskop zu ermöglichen:

    GitHub - OzmoOzmo/ESP32TinyVectrex: Port Vectrex John Hawthorn to ESP32
    Port Vectrex John Hawthorn to ESP32. Contribute to OzmoOzmo/ESP32TinyVectrex development by creating an account on GitHub.
    github.com


    Zu 1: Hat das schon einmal jemand auf einem TTGO Board installiert (Erfahrungen/Bilder/videos)?


    Zu 2: Anscheinend wurden anstatt PS/2 dann einige Pins zur Steuerung verwendet. In osint.cpp wird CuL/R/U/D und b1/2/3/4 referenziert.


    Aber wo sind diese definiert? Welche Pins verstecken sich dahinter?


    Ich konnte es kompilieren in der Arduino IDE 1.8.19 mit ESP32 1.0.6 Erweiterung und installierter Library FabGL 1.0.9.

    Es kommt das Spiel Minestorm. Das Raumschiff dreht dabei immer links / Gegenuhrzeiger-Richtung.

    Generell ist die Framerate zu langsam.


    Es sind wohl noch weitere Roms inkludiert (Demos). Aber wie lassen sich diese aktivieren?


    Das readme sagt einfach: ..schaue in den code.. habe ich - bin leider (noch) nicht schlauer geworden..


    VG Peter

    github.com/petersieg

  • Ich habe schon gesucht.. überall. Entweder ich habe es übersehen.. oder einfach nicht gefunden.

    Die ganze PS/2 Geschichte scheint da noch so halbseiden drin zu sein..

    Aber in osint.cpp wird dann in readevents():



    b1-b4 = vermutlich die 4 Buttons am Vectrex Keypad mittels digitalRead und

    CuL/R/U/D = Cu L=left, R=right, U=up, D=down = Vertex Joystick auch mittels digitalRead

    abgefragt.

    Aber wo ist definiert, welche Pins das sind? Das kann ich nicht finden.

    Und diese Pins sollten irgendwo als INPUT und idealerweise mit internem PULLUP definiert sein - nur wo?


    VG Peter

    github.com/petersieg

  • Boar eh. Danke!


    In FastDAC.h und in DACinit() werden sie als INPUT_PULLUP initialisiert:



    VG Peter

    github.com/petersieg

  • Hier noch ein Video:


    Zu 1 habe ich nur ein SDL Video gefunden - nichts auf einem TTGO?


    Zu 2 (auf Oszi):

    https://www.youtube.com/watch?v=J523SKyvs14


    Da sieht man das der Bildaufbau viel zu langsam ist.

    Außerdem scheint die Verarbeitung der Tasten noch fehlerhaft zu sein?


    Nur wenn ich b1-b4 so lasse, läuft das Spiel los:

    enum{b1=15, b2=13, b3=12, b4=14};

    //enum{CuL=2, CuR=0, CuU=4, CuD=5};

    //enum{b1=21, b2=13, b3=22, b4=14};

    enum{CuL=16, CuR=17, CuU=18, CuD=19};


    wenn man bei Anzeige Player den b4=Fire drückt, soll es loslaufen.

    Das tut es aber nicht, wenn ich einen anderen freien Input nutze und den kurz auf GND ziehe.


    Die Verarbeitung findet in osint.cpp in der Routine readevents() statt:


    Auch wie man die anderen Cartridges/Roms startet habe ich noch nicht finden können :(


    siehe gbrom.h:


    Da ist/wäre also wohl noch viel zu tun..


    VG

    github.com/petersieg

  • Auch wie man die anderen Cartridges/Roms startet habe ich noch nicht finden können :(

    siehe gbrom.h:

    schau mal in die osd.cpp, da wird auch ein ROM-Menu genannt.

    Evtl. hat (wegen FabGL) das Vectrex ein OSD-Menu wie RunCPM auf dem VGA32?

    Bei RunCPM wird das OSD normal mit F12 aufgerufen.

    Da der Vectrex port auf dem von "ackerman" basier, kannst D in folgendem YT-Video teilweise das eingeblendete OSD-Menu sehen: https://www.youtube.com/watch?v=pJX1VhIOsV8&t=244s

  • Moin.

    Nein, der ganze PS2 Kram sind hier ungenutzte "Altlasten" - inkl. OSD Menü - da kein PS/2 etc..

    Ich habe inzwischen auf meinem GitHub einen Fork erstellt, indem ich mal versucht habe, alles ungenutzte Zeug los zu werden

    und so doch einmal stark aufzuräumen:

    PS2*, OSD, WIFI und auskommentierte Dinge etc. pp.


    Und so funktioniert die Cartridge Auswahl (z.Z nur als Compiler Option) in Datei osint.cpp:

    Code
    // char *gb_cartfilename=NULL;
    unsigned char gb_load_new_rom = 1;
    unsigned char gb_id_cur_rom = 2; // rom actual; Default 0 - max_list_rom 6; see file: dataFlash/gbrom.h
    //  0 = "rom/gbCartEmpty.h"
    //  1 = "rom/gbCartRainy.h"
    //  2 = "rom/gbCartOnslaughtElect.h"
    //  3 = "rom/gbCartDemo2019party.h"
    //  4 = "rom/gbCartDeadline2019.h"
    //  5 = "rom/gbCartRaidingparty.h"
    //  6 = "rom/gbCartTrex.h"


    Viele Demos laufen aber nur teilweise.. :(

    Da ist wohl der zugrunde liegende Emulator vecx noch nicht ausgereift genug.

    Lohnt sich nicht wirklich.


    VG Peter

    github.com/petersieg

  • Es geht 😀😏

    Und ich mag keine Metallarbeiten und ich mag auch keine schlecht lötbaren Kabel 🤮😄


    Also. Mindstorm lässt sich spielen.

    Fühlt sich an wie zeitverzögert/Zeitlupe. Schätze Faktor 1,5-2x langsamer als original.

    Dazu flackert der Bildschirm stark.

    Vermutlich sind die Bildschirm Updates nicht oft genug.


    Die dazu nötigen Optimierungen gehen aber über meine Kenntnisse!


    Bitluni wäre ggf. ein Experte.

    Oder die 6809 Emulation auf dem zweiten Core des Esp32 ausführen?


    Trotzdem schöne Spielwiese!


    VG Peter