Hallo Besucher, der Thread wurde 9,3k mal aufgerufen und enthält 44 Antworten

letzter Beitrag von Ernie76 am

Elite DX Easyflash

  • Lieber Stephan Scheuer,

    Es gibt da ein wichtiges kulturhistorisches Projekt, eine perfekte easyflash 1581 etc Version von Elite.

    Das ist irgendwann sicher schon mal zur Sprache gekommen. Ich finde nur keine tiefergehenden Diskussionen ausser MJs Aktion das Spiel flickerfrei zu machen.

    Die Herausforderung geht jedoch darüber hinaus.

    - bilingual deutsch english select

    - alle bekannten cheats für beide Sprachversionen

    - save file Editor

    - BUG FIX: Joystick Steuerung verträgt sich nicht mit keyboard Input. Es kann nur einen geben. Das ist gerade bei diesem Spiel eine Katastrophe

    - BUG FIX: Flickering Vector Grafiken. Dass das nicht sein muss haben Elite 128 und MJ bereits bewiesen

    - Musik. Es gibt einige Hacks . auch wo Musik und Sound Effekte gleichzeitig stattfinden

    - SCPU ich kenne mich nicht aus aber damit kann man sicher die Kämpfe mit mehreren Gegnern glätten

    - das schöne titellbild. Fehlt in den meisten cracks . passt halt nicht in den Speicher.

    - docking Computer auch in englischer Version verfügbar

    - etc


    Du bist der einzige der das hinkriegen kann.

  • Ich habe den Code so c.a. 6 Stunden analysiert und muss sagen, dass ich einige deiner angeführten Punkte lösen kann, andere Wünsche übersteigen jedoch mein können, teilweise bei Weitem.

    Da würde ich Unterstützung und Hilfe benötigen, denn das ist nicht einfach mal so in 4 Wochen erstellt.

  • Da würde ich Unterstützung und Hilfe benötigen, denn das ist nicht einfach mal so in 4 Wochen erstellt.

    Ich kann zwar coden, aber das geht ueber 10 Print "Hallo ich bin ein coder":GOTO 10 nicht hinaus, und selbst da ist wahrscheinlich schon ein bug drin. Aber ich kann usability testing machen, bis ins kleinste Detail. Ich steigere mich da rein, von der "user perspective".

    Der bereits erwaehnte MJ sollte angesprochen werden.

    ELITE tech Diskussion

    Er hat es geschafft das flickering zu entfernen - eine erstaunliche Leistung!


    Dann gibt es noch den Mann hinter Elite 128, Ullrich von Bassewitz. Der hat das Spiel auf links gezogen und dann wieder richtig gemacht und ganz neue features hinzugefuegt, allerdings bin ich (persoenlich) nicht mit allem zufrieden. Ihm ging es wohl hauptsaechlich darum die 2Mhz vom C128 im C64 Modus auszunutzen. Das hat auch ganz gut geklappt. Ob er noch interessiert ist? Keine Ahnung. Ian Bell hat ihm erlaubt seine Version zu veroeffentlichen.

    https://www.von-bassewitz.de/uz/

    Die vermutlich endgueltige Version ist hier:

    https://csdb.dk/release/?id=176103

    Ich habe sie auch angehaengt.

    Allerdings kann ich mir vorstellen dass der gute Mann noch einiges in petto hat, was nicht veroeffentlicht wurde. Der kennt wahrscheinlich jedes byte von Elite auswendig.

    Die Dokumentation ist nicht so einfach zu finden, ich habe sie daher angehaengt.


    Einer der Erfinder von Elite, Ian Bell, hat eine page gemacht wo er alle mods gelistet hat, aber es gab wohl einen hirnrissigen Aerger mit seinem Kollegen, und die page ist zwar noch da, aber die links sind tot.

    http://www.iancgbell.clara.net/elite/c64/index.htm


    Die Elite versionen in der Wolke sind ziemlich nutzlos. Ich habe sie alle angeschaut.


    Das Titelbild stammt offenbar von der Tapeversion, als Ladebild. Ich habe es angefuegt. Es kann sein dass es ein besseres scrape gibt.

  • Da würde ich Unterstützung und Hilfe benötigen, denn das ist nicht einfach mal so in 4 Wochen erstellt.

    Eine Kooperation mit M. J. wäre dafür doch klasse.

    Er kennt das Spiel doch in und auswendig.

  • Er hat es geschafft das flickering zu entfernen - eine erstaunliche Leistung!

    Das war nicht ich, sondern vermutlich Ian Bell, der dies in der AppleII-Version, die nach der C64-Version veröffentlicht wurde, eingebaut hat. Ich habe es nur in die C64-Version rüberkopiert.

    Das Titelbild stammt offenbar von der Tapeversion, als Ladebild. Ich habe es angefuegt. Es kann sein dass es ein besseres scrape gibt.

    1.) Hast Du dafür vielleicht einen Link auf die Bitmap-Daten. Das PNG müßte man ja erst wieder in Bits und Bytes für den C64 umwandeln.

    2.) Wann soll das Bild erscheinen? Es dürfte kein großes Problem sein, das Bild zusammen mit dem Spiel zu laden und zu Beginn des Spiels anzeigen zu lassen, bis eine Taste gedrückt wird. Wäre das ausreichend?

    - SCPU ich kenne mich nicht aus aber damit kann man sicher die Kämpfe mit mehreren Gegnern glätten

    Zwar besteht die Möglichkeit, alle bekannten Beschleuniger (c128, dtv, tc64, SCPU) zu unterstützen, indem man einen zusätzlichen Interrupt einbaut. Schwierig wird es aber, das Spiel auf eine sinnvolle Bildrate zu begrenzen, denn bei aktivierter SCPU oder im 50Mhz tc64-Modus wird es sonst einfach zu schnell.

    docking Computer auch in englischer Version verfügbar

    Tut mir leid. Das habe ich nicht verstanden. Der Docking Computer ist in allen Versionen vorhanden. Was genau meinst Du?

    save file Editor

    Ob das so sinnvoll ist...:gruebel Nebenbei: Wenn ich mich recht erinnere, gibt es zwei verschiedene Spielstandspeicher-Versionen (Englisch ohne Titelmusik, Englisch und Deutsch mit Titelmusik). Ohnehin wäre dies ein Extraprogramm.

    alle bekannten cheats für beide Sprachversionen

    Die Cheats sind im Prinzip bei jeder Version gleich, da sich der Code nicht geändert hat. Unterschiede gibt es in der Position des Cheatcodes im Ram, die entstehen aufgrund der Änderung in der Größe der Stringdaten sowie der Reduzierung der Logarithmentabellen auf ein loginv anstelle von zwei.

    Dann gibt es noch den Mann hinter Elite 128, Ullrich von Bassewitz.

    Tja, es wäre nett, wenn er uns den Sourcecode überlassen könnte, aber anscheinend ist er schon lange nicht mehr in der Szene aktiv.

    allerdings bin ich (persoenlich) nicht mit allem zufrieden.

    Was genau gefällt Dir daran nicht?

    BUG FIX: Joystick Steuerung verträgt sich nicht mit keyboard Input. Es kann nur einen geben. Das ist gerade bei diesem Spiel eine Katastrophe

    Prinzipiell ist das machbar. Aber viel schlimmer ist, daß bei der Abfrage von Joystick und Tastatur stets der Interrupt ausgeschaltet wird. Falls sich jemand mal gewundert hat, wieso es öfters zu einem Flackern beim unteren Rasterinterrupt kommt... Das ist der Grund.


    Leider gibt es bei dem Programm jede Menge Sachen, die man abändern kann. Für meine Experimente hatte ich zuletzt den Code der deutschen Elite-Version disassembliert und in einen assemblierbaren Sourcecode umgewandelt. Damit ist der Code relokatibel, und man kann verschiedene Anpassungen vornehmen, ohne wild Patches im Speicher verteilen zu müssen. Dennoch ist ein freies Umprogrammieren nicht so einfach, da die Speicheraufteilung das Programm in zwei Hälften trennt. (Die Anzeigebitmap liegt mitten drin bei $4000...) Zwei Bugs hatte ich mal probeweise korrigiert: 1.) Der Carrybug beim Rotieren der Objekte. 2.) Nach dem Laden eines Spielstands springt das Programm merkwürdigerweise hinter den JSR zum Einschalten der Titelmusik. Eigentlich müßte an dieser Stelle die Musik wieder eingeschaltet werden. Des weiteren findet sich In der Soundroutine ein nettes Feature, von dem ich nicht weiß, ob es vielleicht einen Bug darstellt.


    Kurz gesagt: Man kann an dem Programm sehr viel ändern, das ist ein nahezu ein Faß ohne Boden, wird aber immer mit dem arg begrenzten Speicher zu kämpfen haben. Was das Alles jedoch mit einer 1581 zu tun hat...?

  • Also das mit dem Savegame Editor und den Cheats, würde ich direkt in die Tonne kloppen. Wer bei Elite Cheatet, hat den Sinn des Spiels nicht verstanden.

    Zudem ist das Spiel eh schon viel zu einfach. Man kann nach unter 10 Sprüngen zwischen Lave und leesti schon den Docking Computer haben und danach ist das ganze quasi ein selbstläufer.


    Für mich gibts im Grunde nur 4 Features die ich mir wünschen würde:

    1. Flicker Reduzierung, wie in M. J. s version ja bereits eingefügt wurde

    2. Tasten und Joystick eingabe gleichzeitig möglich

    3. Titelbild und Anfangs Musik Sollten enthalten sein.

    4. Allgemeines Bugfixing.

  • Ja, meine feature wishlist ist etwas ungeordnet.

    Das Spiel ist ziemlich gut erforscht, z.B. sind hier alle cheats die man mit POKE aktivieren kann, gelistet:

    https://www.c64-wiki.com/wiki/Elite

    Da dies bekannt ist sollte es auch eingebaut werden. Es geht nicht darum zu "betruegen" sondern um alle Moeglichkeiten auszutesten. Ansonsten stimme ich Ernie's Liste zu.


    Beim docking computer habe ich's kapiert: Die deutsche Version hat den docking computer von Anfang an dabei, in der englischen muss man ihn kaufen. Sollte man vielleicht einfach so lassen wie es ist.


    Bei Elite 128 empfehle ich die Dokumentation zu lesen. Auch von Bassewitz erwaehnt dass man sich darin verlieren kann zu versuchen das Spiel zu verbessern. Und dann hat er ausgerechnet etwas gemacht was keinen Sinn macht, z.B. ist das Schiff langsamer wenn man extra cargo bay hat. Naja... Unsere fancy easycart Version sollte nicht in solche Sachen eingreifen.

    Andere Verbesserungen von ihm sind super, z.B. autopilot, friend or foe system, und anderes. Vielleicht sollte man einfach seine Version als dritte zur Auswahl stellen, unveraendert so wie er sie hinterlassen hat, neben unseren bug fixed "normalen" deutsch/englisch - Versionen. Ich werde ihn kontaktieren und fragen ob er was beisteuern kann, und wenn es nur der source code ist.


    Angehaengt eine Version aus der Wolke, wo das Titelbild als PRG separat auf der disc ist. Reicht das aus? Ihr koennt sowas doch rippen nehme ich an. Dieser crack hat auch 10 cheats eingebaut.

  • Also ich hatte die Deutsche Tape Version und da war der Dockingcomputer nicht von Anfang an da. Wäre ja auch sinnlos, da das andocken ohne ihn am Anfang eine der wenigen Herausforderungen im Spiel ist. Der Kampf gegen den Prototyp ist noch etwas heftiger, aber der Rest vom Spiel ist ja ziemlich simpel. Eine Version die von Anfang an den DC hat, würde ich direkt ablehnen.

  • BUG FIX: Joystick Steuerung verträgt sich nicht mit keyboard Input. Es kann nur einen geben. Das ist gerade bei diesem Spiel eine Katastrophe

    Prinzipiell ist das machbar. Aber viel schlimmer ist, daß bei der Abfrage von Joystick und Tastatur stets der Interrupt ausgeschaltet wird. Falls sich jemand mal gewundert hat, wieso es öfters zu einem Flackern beim unteren Rasterinterrupt kommt... Das ist der Grund.

    Vielleicht hat Elite 128 diese Interrupt Nuss geknackt. Ich habe diesen von Bassewitz angeschrieben, mal sehen ob er sich meldet.

  • Hallo,


    Uz hier :)


    Ich kann mal ein paar Sachen zu Elite 128 schreiben.


    Vielleicht das wichtigste vorweg: Den Quellcode gibt's derzeit von mir leider nicht. Das liegt nicht an mir, sondern an der unklaren Rechtssituation. Ich habe mich damals mit Ian Bell ausgetauscht, der nichts gegen die Veröffentlichung hatte. David Braben hat mir nicht geantwortet und ist etwas später gegen Elite TNK vorgegangen. Christian Pinder hat damals seinen Code weitgehend aus dem Netz entfernt.


    Es kann sein, dass sich die Situation inzwischen geändert hat. Insbesondere Christian Pinder hat den TNK Quellcode wieder auf GitHub veröffentlicht: https://github.com/fesh0r/newkind


    Solange ich da aber nichts offizielles habe, halte ich mich mit verteilen von Quellcode zurück. Ich kann aber gerne Tips geben oder von mir geschriebene Teile bereitstellen.


    Ansonsten gibt's auch eine neuere Version von Elite 128. Ich weiss gerade nicht mehr, was die Version 1.0 konnte jedenfalls gibt's eine die SuperCPU, DTV, REU und andere Hardware unterstützt, ich müsste bloss mal sichten, in welchem Zustand die ist.


    Die zusätzliche Hardware wird zum einen zum Auslagern von Code in Overlays, zum zweiten zur Beschleunigung der Löschroutine für den Bildschirm verwendet. Der Flickerfix verwendet zwei Bildschirmseiten, auf der einen wird geschrieben, die andere wird angezeigt. Wegen der Größe ist der Zeitbedarf für das Löschen nicht unerheblich. Bei dieser Version funktioniert auch das Frame Rate Limiting mit der SuperCPU vernünftig.


    Ich muss mich gerade mal um was anderes kümmern - später vielleicht mehr.


    Gruß



    Uz

  • bugjam: Hallo Hartmut, ja ich erinnere mich. Wir haben mal 64er Hefte getauscht oder so :)


    Bzgl. des Keyboard Pollings: Ich habe die Quellen 1997, also vor mehr als 20 Jahren das erste Mal in die Versionskontrolle eingecheckt. Die Änderung an der Tastatur-Routine ist offenbar bereits davor passiert, ich kann also nicht mehr genau sagen, was ich geändert habe. Ich kann aber jederzeit die Routine hier posten oder jemandem mailen.


    Wegen Code-Größe und Aufteilung: Der Speicher für den Bildschirm liegt tatsächlich mittendrin. Zudem liegen einige Routinen hinter dem Kernal ROM. Es lassen sich aber einige Dinge komprimieren, die viel Platz benötigen. So lassen sich beispielsweise für die ganzen Texte bessere Codierungen finden. Die Grafik für das On-Flight Radar im unteren Bereich liegt als Bitmap vor, das man RLE codieren kann. Ähnlich für die Musikstücke: Hier läßt sich durch bessere Codierung fast die Hälfte einsparen. Ziemlich hilfreich war außerdem die Verwendung von ca65, weil sich damit die einzelnen Code-Teile auf viele Segmente verteilen ließen, die sich - ohne Änderungen am Code - via Linker Config einfach hin und her schieben lassen.


    Soweit mal. Konkrete Fragen kann ich gerne beantworten.


    Gruß, Uz

  • Uz hier :)


    Ich kann mal ein paar Sachen zu Elite 128 schreiben.

    Hallo Uz!


    Zunächst mal "Herzlich WIllkommen im Forum!":wilkommen:

    Und "Vielen Dank!" für Deine Rückmeldung und das Angebot, Fragen zu beantworten. Diesbezüglich hätte ich allerdings einige.. :/ Sag also bitte bescheid, wenn es zu viel wird.


    Für den Anfang:

    Einen Flickerfix via DoubleBuffering hatte ich mir auch schon überlegt. Das scheiterte aber daran, daß je nach Organisation dazu bis zu ca. 8 kb Speicher notwendig sind für die zweite Bitmap. Bezieht sich Deine Umsetzung daher nur auf eine mögliche REU-/SCPU-Version oder auch auf einen "normalen" C64?

    Desweiteren würde mich interessieren, wie Du dabei das Radar handhaben würdest. Bei einem vollständigen DoubleBuffering müßte man ja auch dieses verdoppeln, was aber zu Problemen führt beim Löschen und Neumalen. Ein fortwährendes komplettes Neuzeichnen des Radarhintergrunds würde ich für zu aufwendig halten. Mein Gedanke war daher, das Double-Buffering auf den oberen Anzeigebereich zu beschränken und das Radar weiterhin mit einer Bitmap zu realisieren, auch wenn dies den unhübschen Effekt hat, daß es weiterhin flimmert und aufgrund der EOR-Verknüpfung farbverfälscht ist.

    Ein weiterer Punkt, der mir beim DoubleBuffering stets schwer im Magen liegt, ist das andauernde Neuzeichnen von "Front", "Rear" ... oder auch (noch schlimmer) Meldungen wie "Docking Computer On", da dies sehr viele Takte verbrät. Hattest Du dafür eine Idee?

  • Hallo und danke für das freundliche Willkommen. Tatsächlich war ich vor langer Zeit schon mal angemeldet, bin aber offenbar einer Aufräumaktion zum Opfer gefallen.


    Das Double Buffering macht bereits die Version 1.0, die es im Netz gibt. Volle 8K werden nicht benötigt, weil nur der obere Teil des Bildschirms umgeschaltet wird. Ich denke es sind 6KB, die man zusätzlich braucht. Die Console im unteren Bereich ist nicht double buffered, das lohnt in meinen Augen nicht. Hier findet tatsächlich beim Zeichnen ein XOR statt, so wie es in der ursprünglichen Version auch im oberen Teil gemacht wird. Wie ich aber bereits geschrieben habe, gibt es einige Möglichkeiten, an mehr Speicher zu kommen. In Elite 128 gab's ja sogar noch ein drittes Musikstück.


    Bezüglich der Texte kann ich leider nicht mehr sagen, wie das im originalen Elite gelöst ist. Meine Version ging leider erst in die Versionskontrolle, als sie bereits viele Anpassungen hinter sich hatte. Bei mir findet die tatsächliche Ausgabe der Texte jeweils vor dem Page Flip statt. Was aber auch ziemlich dauert ist das Zusammenstückeln und Dekomprimieren der Strings - und das wird während des normalen Ablaufs gemacht. Es befindet sich vor dem Page Flip also der vollständige Text bereits in einem Puffer, er muss dann nur noch auf den Bildschirm gebracht werden.


    Die Tools die bei mir die Texte komprimieren, bauen auch einen Index auf um das Dekomprimieren zu beschleunigen. Im Original ist das arg langsam, weil für die einzelnen Teilstrings die Liste linear durchsucht wird. Man sieht das z.B. wenn während des Dockens die Beschreibungen der Systeme ausgegeben werden - da kann man fast bei der Ausgabe mitlesen.

  • die Version 1.0, die es im Netz gibt

    Öhm... Wo kann ich die finden? Habe mal hier auf csdb geschaut. Dort ist als Version 1.0 im Dateinamen und Begleittext angegeben, jedoch enthält diese kein DoubleBuffering. :(

    nur der obere Teil des Bildschirms umgeschaltet wird

    [..]

    Die Console im unteren Bereich ist nicht double buffered

    Okay,entspricht also auch meinen Versuchen.:puhh:^^

  • Öhm... Wo kann ich die finden? Habe mal hier auf csdb geschaut. Dort ist als Version 1.0 im Dateinamen und Begleittext angegeben, jedoch enthält diese kein DoubleBuffering. :(

    Stimmt, Du hast völlig recht!

    Ich dachte, in elite128.txt sowas gelesen zu haben und habe deshalb gar nicht mehr in die alten Quellen geschaut.


    Ich muss mir den Code doch nochmal genauer anschauen, das ist leider etwas her (letzte Änderung 2006). Wenn ich mir's recht überlege, dann könnte das auch der Grund sein, warum ich die Hardware-Erweiterungen zu einem ähnlichen Zeitpunkt wie den Page Flip eingebaut habe: Mit einem nackten C64 bekommst Du nämlich Zeitprobleme, weil das Löschen so lange dauert.


    Das "Fenster" ist 256 Pixel breit und 144 Pixel hoch. D.h. zum Löschen müssen ca. 4,5KB beschrieben werden. Selbst mit loop unrolling braucht das 5 Zyklen pro Byte, macht 23ms (wenn ich mich nicht verrechnet habe). Die REU braucht 1 Zyklus pro Byte, d.h. ca 4.5ms und das DTV ist ähnlich schnell.


    Ich schaue mal, dass ich die letzte Version des Codes zum Laufen bekomme, derzeit gibt's irgendwo Abstürze.


    Wie gut ist eigentlich der DTV Code im Vice? Kann man dem trauen? Den gab's damals noch nicht, und ich habe immer auf dem echten DTV getestet. Derzeit kann ich aber am PC keine C64 Disks mehr beschreiben und bin deshalb auf Vice angewiesen.

  • So, ich habe meinen Code wieder am Laufen und kann mit Zusatzinfos dienen:


    Die DTV Version läuft konstant in den Framerate Limiter rein, wenn nicht wirklich viel graphisch passiert. Das bedeutet 4 Page Flips pro Zyklus, d.h. ca. 12.5 fps. Damit spielt es sich sehr smooth, vor allem weil es auch weitgehend während den Kämpfen so bleibt. Das hat mir damals schon gefallen.


    Die REU Version hat bereits im Intro-Screen 8-9 Flips pro Zyklus. Das merkt man auch im Kampf, da wird's arg ruckelig.


    Eine reine C64 Version habe ich gerade nicht, aber die ist noch langsamer als die mit REU. Evtl. hilft der C128 ein bisschen. SCPU müsste das DTV locker in die Tasche stecken, aber da habe ich auch gerade keine lauffähige Version.


    Ich weiss ja nicht genau, was Ihr vorhabt, aber eine Elite Version auf der originalen Hardware würde ich eher nicht mehr machen. Das kriegt man nicht so schnell, dass es richtig schön zu spielen ist.


    Ich schau mal, ob ich die DTV Version release-fertig bekomme.


    Goodie am Rande: Da ist eine Schiffs-Enzyklopädie drin.

    dtv-elite-1.pngdtv-elite-2.png

    Die Daten liegen (wie einiges mehr) im erweiterten Speicher von REU/DTV und werden bei Bedarf via DMA in die unteren 64K geladen. Das wird auch mit der Musik so gemacht und dadurch wird im unteren Bereich natürlich eine Menge Speicher frei.

  • So, ich habe ab heute Urlaub, bis nächstes Jahr. Zuerst werde ich die angefangenen Projekte beenden "Murder on the Misssissippi, Starflight" und bei "THe Pawn" die SCPU-Version.

    Das ist nicht allzuviel Arbeit, denn der Code ist schon fertig. Jetzt muss nur noch alles zusammenbauen und getesten werden.

    Ich habe mir aber schonmal den Thread durchgelesen und auch den geposteten Quellcode überflogen. Bei den Wünschen muss vieles neugecodet werden und dann reicht der Speicher nicht mehr aus.

    Es gibt dann nur noch die Möglichkeit, eine Speichererweiterung zu nutzen. Die Easyflash steht da bei mir an erster Stelle gefolgt von der REU.

    Wenn man die SCPU mit einbezieht, sollte man diese nicht als Ramdisk nutzen, sondern die wichtigen Routinen auch als 16-Bit Code ablegen, um die volle Leistung dieser nutzen zu können.

    Übrigens, wenn man die Bereiche $01A000-$01BFFF, $01D000-$1D2FF und $01D400-$01FFFF ausklammert, kann auch eine SCPU ohne RAM-Card genutzt werden.