Heute so gecodet...

Es gibt 2.379 Antworten in diesem Thema, welches 480.622 mal aufgerufen wurde. Der letzte Beitrag (1. November 2025 um 13:53) ist von Unseen.

  • Echt beeindruckend! Tatsächlich habe ich mir in dieser Richtung auch schon Gedanken gemacht als ich meine Tabelle geschrieben habe, weil ich da Zellen als Variablen benutzt habe, und da habe ich mir gedacht, eigentlich ist das wie wenn ich einen grossen Speicher habein dem ich alle möglicihen Zustände speichern kann. Bedingungen und Formeln kann Excel ja. Was mir allerdings gefehlt hat ist, wie man Unterfunktionen realisieren könnte. Und in dem Video geht er/sie(?) auch nicht darauf ein wie man den Spieler steuern kann.

    Dass man allerdings so weit gehen kann und eine 3D Darstellung hinbekommt hätte ich nicht gedacht! :thumbsup:

    Jetzt brauchen wir nur noch eine Excel 3D Hardwarebeschleunigungskarte. :D

  • eigentlich ist das wie wenn ich einen grossen Speicher habein dem ich alle möglicihen Zustände speichern kann. Bedingungen und Formeln kann Excel ja.

    Excel wird aber sehr träge wenn die ganzen Formeln immer neu berechnet werden.

    Jetzt brauchen wir nur noch eine Excel 3D Hardwarebeschleunigungskarte. :D

    Trotz Multithreading bin ich :dafuer:.

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:

  • Excel wird aber sehr träge wenn die ganzen Formeln immer neu berechnet werden.

    Ja, das überrascht mich nicht wirklich. Aber das Interessante daran wäre ja auch eher die Machbarkeit und nicht so sehr die Performance.

    So ähnlich wie der VCS 2600 Emulator in Minecraft. :D

    Trotz Multithreading bin ich :dafuer:.

    LOL! :D

    • Offizieller Beitrag
    • Interessanter Beitrag

    Ich hatte Nachts, weil ich teilweise nicht gut schlafen konnte, mal zur Ablenkung wieder ein bisschen gecodet.

    Herausgekommen sind dabei mehrere Sachen:

    1. Eine nette kleine Inputroutine

    Im Prinzip ist es die Routine, die ich für Tetris Recoded programmiert hatte (Highscore Namenseingabe). Die habe ich etwas optimiert und flexibler gemacht.

    Es kann definiert werden, welche Zahlen, Buchstaben oder Sonderzeichen eingegeben werden können.

    Optional kann ein Charanimierter Cursor verwendet werden und ein Timeout für Eingaben aktiviert werden.

    Es kann eine Eingabe von 1 bis 255 Zeichen voreingestellt werden (derzeit 40 Zeichen).

    2. Ein rudimentäres Word-Processing

    Hier werden die eingegeben Wörter/Sätze bereinigt. D.h. es werden alle Sonderzeichen entfernt, alle Buchstaben in Kleinbuchstaben umgewandelt und doppelte/mehrfache Leerzeichen entfernt.

    Dann werden alle Wörter entsprechend so abgelegt, dass sie leicht weiterverarbeitet werden können.

    3. Einen Parser

    Ich habe einen kleinen Parser geschrieben, der die mit der Inputroutine eingegebenen und mit dem Word-Processing verarbeiteten Wörter erkennen kann.

    Dabei wird aus den Wörtern jeweils ein Token erstellt. Die Tokens bestehen aus 2 Bytes.

    Folgende Features hat der Parser:

    a. Erkennt bis zu 12 Worte aus einer Eingabe.

    b. Die Hinterlegte Wortliste ist leicht erweiterbar und nur durch den Speicher begrenzt.

    c. Es werden Wörter erkannt, die gleich beginnen, aber unterschiedlich lang sind (z.B. "Look", "Looking").

    d. Es werden Redewendungen bzw. getrennt geschriebene Wörter die zusammenhängend einen Sinn ergeben als ein Wort erkannt (z.B. "by the way", oder "Pina Colada" usw.).

    e. Ich habe ca. 1100 Wörter aus einem bekannten PC-Adventure hinterlegt.

    f. der Code für den Parser (ohne Daten, also nur reines Programm, ohne Input Routine und ohne vorheriges Word-Processing) ist derzeit nur 314 Bytes groß (besser klein :D ).

    g. Sehr schnell. Im Prinzip erkennt der Parser alles insgesamt unter einer Sekunde (egal wie viel eingegeben wurde -> Begrenzung nur durch Inputroutine derzeit 40 Zeichen).

    Mal sehen, was daraus wird... ;)


    Hier mal Videos dazu (Farbwechel bei Beginn und Ende des Parsens):


    Bitte melde dich an, um dieses Medienelement zu sehen.


    Bitte melde dich an, um dieses Medienelement zu sehen.

  • Mal sehen, was daraus wird... ;)

    Klingt ja knorke ^^

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

    "Retro-Stammtisch" in München -> Bitte melde dich an, um diesen Link zu sehen. (Wer in die zugehörige WhatsApp-Gruppe aufgenommen werden will, bitte per PM melden.)

  • Heute so in Excel und VB gecodet... :D

    Excel:

    Code
    =WENNFEHLER(TEXT(WENN(AC69>9;AC69/10;AC69);"0,00");"0,00")

    VB:

    Code
    For i = 0 To 15
    If sInput(i) > 9 Then
    Wert = sInput(i) / 10
    Else
    Wert = sInput(i)
    End If
    
    s = Wert.ToString("0,00")
    Next

    Fehler beim der Umwandlung von Double nach String. :gruebel

    Ausgabe:

    Code
    (0) "000" String
    (1) "001" String
    (2) "001" String
    (3) "002" String
    (4) "006" String
    (5) "000" String
    (6) "002" String
    (7) "001" String
    (8) "004" String
    (9) "000" String

    Das Problem bei s war schnell gefunden.

    s = Wert.ToString("0.00")

    Neue Ausgabe:

    Code
    (0) "0,34" String
    (1) "1,47" String
    (2) "0,95" String
    (3) "2,00" String
    (4) "6,33" String
    (5) "0,08" String
    (6) "1,67" String
    (7) "0,96" String
    (8) "4,17" String
    (9) "0,11" String

    Jetzt ist es richtig. Excel liefert mit , sofort das richtige Ergebnis. VB will das erst mit einen . haben um es dann mit Komma richtig anzuzeigen. 8|

    Das liegt natürlich an den Spracheinstellungen. Trotzdem etwas merkwürdig das Ganze.

    Hinzu kommt das ich eine größere Tabelle nach VB übertrage und ich manche Zeilen mit WENN starte und nicht mit IF. Ich glaub ich werde tüdelig. :alt:

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom:


  • Hinzu kommt das ich eine größere Tabelle nach VB übertrage und ich manche Zeilen mit WENN starte und nicht mit IF. Ich glaub ich werde tüdelig. :alt:

    Ich finde das schrecklich mit den eingedeutschten Befehlen. :D Eine Programmiersprache muss für mich in Englisch sein, so gehört sich das einfach. Obwohl ich mich schon des öfteren gefragt habe, wie die das gelöst haben, da ja bei jeder Spracheinstellung trotzdem noch die englischen Befehle weiter funktionieren. Vermutlich mit so einer Art Mapping wo die Sprache auf die eigentlichen Befehle gemappt wird.

  • Heute wollte ich mein GeoRamCopy um die FD-2000 und 4000 erweitern, aber ich habe noch keine Möglichkeit gefunden, wie man den physischen Track 81 lesen (und schreiben) kann. Schade.

    Früher waren 64k unglaublich viel, heute reicht es nicht mal mehr für "Hello, world!".

  • Schon gestern:

    Ein Quick-n-Dirty PoC, dass man mit OpenCBM Images von CMD FD2000 und FD4000 auslesen kann:

    Bitte melde dich an, um diesen Link zu sehen.

    Tester benötigt, weil ich keine CMD-Hardware besitze!

  • Wow da tut sich ja was im FDx000 Bereich. Fehlt jetzt eigentlich nur noch eine Erweiterung von CC1541 für CMD Laufwerke.

    Vorstellung Raveolution BBS -> Bitte melde dich an, um diesen Link zu sehen.
    Raveolution BBS -> raveolution.hopto.org:64128
    Raveolution Gopher Hole -> gopher://raveolution.hopto.org:70

  • Mehr "die letzten Tage mit dem Debugger rumgequält und Workarounds gesucht" als programmiert und leider ein lange Textwüste, aber als Verarbeitung meiner Frustration über verschwendete Lebenszeit muß ich das trotzdem loswerden:

    Ich habe jetzt mehrere Tage mit Debugging und Prototypen-Experimenten an meinem Projekt Bitte melde dich an, um diesen Link zu sehen. (um USB-Joysticks/-Gamepads/-Tastaturen an einer NeoGeo bzw. einem NeoGeo MVS Arcade-Board zu benutzen) verbracht.

    Ausgangspunkt war, daß ich die ganze Zeit einen Bitte melde dich an, um diesen Link zu sehen. damit benutzt hatte, aber dann hat es mich irgendwie gejuckt und ich habe den Bitte melde dich an, um diesen Link zu sehen. des gleichen Hersteller gekauft. Die Idee war, daß er genauso gut wie der Wireless Controller funktionieren würde, aber das war natürlich leider nicht der Fall.

    In der Stellung "S" (Switch) wurde der Arcade Stick sowohl unter Windows als auch von meinem STUSB2DB15 als HID-Joystick erkannt aber der Joystick hat nicht reagiert und die Joystickbuttons haben ständig an/aus geflackert. In der Stellung "X" hat der Arcade Stick unter Windows perfekt funktioniert, aber mein STUSB2DB15 hat ihn überhaupt nicht als HID-Gerät erkannt.

    Das Debugging war an dieser Stelle ziemlich quälend, weil ich in dem ursprünglich von Microsoft stammenden "USBX"-USB-Stack herumsuchen mußte, der von Compilerschaltern und Indirektionen nur so strotzt. Dazu meldet sich der drahtlose Empfänger auch schon bei ausgeschaltetem Arcade Stick in irgendeiner Form als USB-Gerät an und die ganze Anmeldeprozedur ruft die gleichen Funktionen mehrfach mit unterschiedlichen Werten in referenzierten Strukturen auf, die jeweils nur teilweise mit sinnvollen Werten gefüllt sind.

    Wie auch immer: irgendwann in den letzten Tagen ist es mir endlich gelungen, das grundsätzliche Problem zu verstehen: der Arcade Stick meldet sich nicht als Gerät der HID-Klasse ("HID_CLASS" : 3) an, sondern mit dem Wert 0xFF, der für benutzerdefinierte Geräte steht.

    Ich habe dann spaßeshalber mal auch 0xFF als (HID-)Klasse zugelassen, wenn "Protocol" gleichzeitig 1 ist (weil das der Arcade Stick so gemeldet hat). Damit wurde der Arcade Stick immerhin grundsätzlich erkannt und ich konnte irgendwelche Reaktionen sehen. Aber es war ein totales Chaos. Buttons wurden als Achsen erkannt, der Joystick als (teils mehrere) Buttons oder gar nicht. Weil der USBX-Stack die HID-Deskriptoren ausliest und auswertet, gab es eigentlich nur eine Erklärung: die HID-Deskriptoren waren entweder falsch oder USBX kam nicht damit zurecht. Aber warum kommt ein USB-Stack von Microsoft damit nicht zurecht, wenn Windows kein Problem damit hat?

    Irgendwann war mir vorher schon aufgefallen, daß der Arcade Stick sich unter Windows als "Xbox 360-Controller für Windows" anmeldet und als Treiber "xusb22.sys" verwendet wird und nicht "Hidusb.sys" wie bei richtigen HID-USB-Geräten. Ich hatte das aber zunächst ignoriert, weil sich der NeoGeo Wireless Controller unter Windows genau gleich verhalten hat, obwohl er sich bei meinem STUSB2DB15 brav als HID-Gamepad angemeldet hat.

    Angesichts des anscheinend defekten HID-Deskriptors habe ich mal angefangen, nach "XUSB22 HID XBox Controller" zu recherchieren und nach einigen Fehlschlägen habe ich diese sehr interessante Seite gefunden:

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Nach meinem derzeitigen Verständnis hat Microsoft diesen "XInput"-Deskriptor nie offengelegt und alle Gerätschaften, die in irgendeiner Form XBox-Controller unterstützen, tun das auf die "harte" Methode, also durch direktes Auswerten der Bytes in den Botschaften.

    Also dachte ich mir, daß kann ich auch und habe für die spezifische PID/VID des Xbox 360 Controllers den USB-Stack auf Rohdaten umgeschaltet und sie auf die harte Tour ausgewertet. Das war mein Status gestern. Das hat recht schnell funktioniert und ich war mit mir zufrieden, aber dann wurde es noch einmal düster. Zum einen schien der "Release Build" überhaupt nicht mehr zu laufen (OLED aus), zum anderen wurde jetzt der NeoGeo Wireless Controller nicht mehr erkannt.

    Was das OLED angeht, ist mir so etwas kürzlich auch schon mit einem anderen Projekt so ähnlich passiert und dort habe ich eine kleine Wartezeit vor die Initialisierung des OLEDs einbauen müssen, weil es anscheinend etwas braucht, bis man mit ihm kommunizieren kann. In dem anderen Projekt haben 100µs gereicht, hier hat auch 1ms noch nicht gereicht und ich bin gleich auf 5ms hochgegangen. Jetzt ging das OLED zwar immer an, hat aber im Release-Build nur Pixelrauschen angezeigt. Das ganze Thema war insofern besonders heimtückisch, weil es zum einen nur im Release-Build aufgetreten ist (in dem man nicht richtig gut debuggen kann) und zum anderen teils dadurch verdeckt wurde, daß das OLED anscheinend extrem lange die Spannung hält. Ich mußte immer für 10 Sekunden die Spannung wegschalten, um sicher zu sein, daß ein Kaltstart auch wirklich funktioniert.

    Das Thema hat mich deshalb extrem viel Nerven gekostet, aber am Ende konnte ich eine Routine identifizieren, die dem OLED die erste/letzte Spalte und "Page" für folgende Datenbefehle schickt. Ich habe allerdings immer noch nicht genau verstanden, warum die Routine ohne Optimierung tut und mit Optimierung nicht. Ich habe manuelle Delays eingebaut und alles Mögliche probiert, aber am Ende mußte ich sie komplett neu schreiben, damit sie auch im Release-Build funktioniert. Keine Ahnung, hatte irgendwann keine Lust mehr, darüber nachzudenken.

    Blieb noch das Problem mit dem NeoGeo Wireless Controller. Auch hier war es gemeinerweise so, daß die Erkennung ohne Debugger praktisch nie funktioniert hat, aber mit Breakpoint usw. fast jedes Mal. Ich hatte deshalb zuerst auch das Timing in Verdacht, aber konnte mit Wartezeiten usw. keine wirklichen Verbesserungen erzielen. Weil der NeoGeo Wireless Controller sich unter Windows ja auch als XBox 360 Controller bzw. Xinput-Gerät meldet, bin ich irgendwann auf die Idee gekommen, daß das neu eingebaute Akzeptieren der kundenspezifischen Klasse 0xFF ihn eventuell irgendwie verwirrt. Tatsächlich scheint das so zu sein, denn nachdem ich diesen 0xFF-Workaround auf die PID/VID des XBox 360 Controller beschränkt habe, wurde der NeoGeo Wireless Controller auch wieder gefunden.

    Das sehr unterschiedliche Verhalten der beiden Geräte des gleichen Herstellers verwirrt mich allerdings nach wie vor. Der Arcade Stick meldet sich explizit mit der PID/VID des Xbox 360 Controllers und scheint keinerlei HID-Fallback zu haben. Der NeoGeo Wireless Controller scheint sich sowohl als normales HID-Gamepad als auch als XInput-Gerät mit dem Namen "Xbox 360-Controller für Windows", aber anderer PID/VID zu melden. Unter Windows scheint der XInput-Deskriptor benutzt zu werden, aber mit meinem STUSB2DB15 kommt darüber keine Anmeldung als Gamepad zustande (obwohl das mit dem Arcade Stick funktioniert) und das Akzeptieren der Anfrage führt dazu, daß es meist keine Anfrage für ein HID-Gamepad mehr gibt (außer im Debug-Modus mit entsprechenden Breakpoints).

    Am Ende habe ich nicht wirklich Bitte melde dich an, um diesen Link zu sehen. (und nicht mal alle Änderungen waren wirklich relevant), aber das hat mich die Freizeit mehrerer Tage gekostet und hinterläßt mal wieder den faden Geschmack verbrannter Lebenszeit.

  • Eine kleine Laderoutine für CBM Basic 4, um immer nach $1500 zu laden beim Kaffee geschrieben.

    Bitte melde dich an, um diesen Anhang zu sehen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Mein C128 will nicht so, wie ich wohl will.

    Um das Problem loszuwerden, habe ich, genaugenommen gestern u. heute, ein kleines Helferlein zusammengetippt, das mir Speicherfehler anzeigt...

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
  • Eigentlich kleine Vorarbeiten für das nächste Programm "pixeler for pet pcg", damit kann man dann eine kleine Bitmap (8x8 oder 16x4 Chars) pixeln. Bald ist mehr Zeit.

    Heute ein bisschen beim Kaffee erweitert: im Editor wird der gesetzte oder nicht gesetzte Pixel nicht mehr vom "Edit-Sternchen" beeinflusst. Wie es eigentlich auch sein sollte.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ein Bild vom CBM4032 mit kleinem Monitor und der Basic4-Version.

    Wird am Wochenende in beide Versionen eingebaut: Bitte melde dich an, um diesen Link zu sehen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Eine kleine Laderoutine für CBM Basic 4, um immer nach $1500 zu laden beim Kaffee geschrieben.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Gibt es eigentlich keine Einsprungleiste für die Kernal-Routinen (OPEN etc.) oder sind das eben diese?

  • Gibt es eigentlich keine Einsprungleiste für die Kernal-Routinen (OPEN etc.) oder sind das eben diese?

    Ja, das sind die. Ich hatte nur Probleme beim Übergehen der Ladeadresse, damit immer nach $1500 geladen wird. So werden die Pointer $fb/$fc nicht mehr aus der zu ladenden Datei neu gesetzt. Man kann also einen Char mit Pointer $1000 nach $1500 laden, ohne etwas an der Datei ändern zu müssen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • 8x8 Char Mini-Bitmap.

    Bitte melde dich an, um diesen Anhang zu sehen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Beim Programieren mit VB wollte ich Wissen wie sich bestimmte Änderungen im Code auf die Laufzeit auswirken.

    Dabei ist (bis heute) folgendes Programm rausgekommen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen. :verehr: .: Mit Bitte melde dich an, um dieses Bild zu sehen.wäre das nicht passiert! :. :prof:  Bitte melde dich an, um diesen Anhang zu sehen.

    :syshack: .: Meine 3D-Drucker Teile auf :. Bitte melde dich an, um diesen Link zu sehen. :strom: