Hallo Besucher, der Thread wurde 180k mal aufgerufen und enthält 1853 Antworten

letzter Beitrag von Retrofan am

Neuer Retro-Computer im 8-Bit Style

  • Mal ein Vorschlag zur Güte:

    man braucht ja so oder so eine Art "Graphics-Memory" Controller, der regelt, wer auf den Framebuffer wann zugreift (es sei denn man hat echtes dual-ported VRAM, was ich mal als unrealistisch abtue).

    Also hängt das entsprechende RAM ja nicht direkt am CPU-Bus und dieser Controller könnte der CPU ein Layout vorgaukeln, dass es einfacher macht, auf Pixel zuzugreifen.


    Konkret könnte man die Pixel byte-adressierbar machen, auch wenn es nur 4 Bit Werte sind. Wenn man dann noch Zeilenbreite 256 wählt (muss ja nicht komplett sichtbar sein, kann ein Teil unsichtbar für

    Bildaufbau vor dem Reinscrollen), dann ist es recht trivial von X,Y Coordinaten auf die Speicheradresse eines Pixels zu kommen.


    Man verschwendet natürlich etwas Bandbreite (es sei denn der Grafikcontroller wäre schlau genug für linear progressive Zugriffe der CPU zu puffern), aber ich denke es würde dadurch viel weniger Bitgefriemel geben, wenn man alle Grafikoperationen (als Bibliothek) in 68000er Assembler schreibt.

  • "8bit Style" heißt halt für einige hier (und speziell auch für mich) nicht notwendigerweise "mit 8bit CPU" - das sagt ja nun auch nicht viel. Es gibt moderne 8bit-RISC-CPUs und antiken Kram wie den 6510. Und man kann prinzipiell auch mit einer 8bit-ALU einen 32bit-Adreßraum benutzen - das ist nur unhandlich. Gerade ein großer Adreßraum ist halt einfache ein Offenbarung gegenüber Page-Gefrickel und wenn man schon einen 32bit-Adreßraum hat, ist eine 32bit ALU einfach ein logischer Schritt. Zumal eine 8bit ALU und selbst eine 16bit ALU halt doch mit großen Einschränkungen bei ganz normalen Berechnungen verbunden sind.


    Wie schon früher dargelegt, bedeutet für mich "8bit Style" im wesentlichen, das das eine relativ kompakte Kiste ist, ...

    wenn der C64 mit 20MHz 32bit-CPU, 1MB RAM, 256 Farben bei 320x200 und 32 HW-Sprites rausgekommen wäre, hätte es dann unsere Begeisterung gemildert?

    Den Punkt finde ich sehr zutreffend.

    Zum Programmieren lernen ist ein 80er Jahre 8-Bit Rechner wirklich sehr schlecht geeignet. Es gibt viel zu viel zu lernen, bis man mal zum Punkt kommt(Speichermanagement, Bit Gefrickel bis mal ein Sprite da ist wo er hin soll usw.)

    Eine schlanke Lib wie die SDL, meinetwegen noch schlanker, ist dagegen weit besser geeignet. Einfach nur eine Set und Get Pixel Funktion/Maus/Tastaturabfrage,/Soundausgabe in C oder Python oder was auch immer, macht es den Programmierer viel leichter sich wirklich auf die Entwicklung des Spiels zu konzentrieren und keinen, heute unnötigen, Quatsch zu lernen.

    Das kann man heute alles einfach haben und auch heute braucht ein OS nur wenige Sekunden bis es einsatzbereit ist, aber hier solle es unbedingt ein autarkes Gerät sein. (Verstehe den Sinn dahinter nicht, da es fürs Programmieren lernen völlig egal ob autark, im Browser oder Emu oder sonst was, aber die Diskussion müssen wir hier nicht führen.)

    Wenn es also simple sein soll dann eben keine 8 Bit CPU im alten Style und keine Hardwareregister mit bit 9 irgendwo anders oder solche Spezialfälle die einem wirklich den Spaß an der Sache rauben.

    ASM ist sone Sache, will man das wirklich? Ich meine früher musste man wenn man eine bestimmte Performance erreichen wollte. Aber wer einmal eine Hochsprache genossen hat, der will doch nicht freiwillig zu ASM zurück, es sei denn als Herausforderung, so wie ich das mache. Das ist wie Feuer machen mit dem Feuerstein, jedes mal wenn man sich einen Kaffee kochen möchte. Kann man machen, aber in der Regel nimmt man doch lieber die Kaffeemaschine.


    Für mich ist 8-Bit Coding auf dem C64 immer eine Reise in die Kompliziertheit der 80er, um die einfachsten Sachen umzusetzen muss man unglaublich viel machen.

    Heute sind die Computer viel komplexer und nicht zu verstehen von einer einzelnen Person, dafür um Längen einfacher zu bedienen und zu programmieren.


    Hat alles seine Vor- und Nachteile, nicht alles war früher besser. Darum finde ich diesen 8Bit Style Begriff hier auch viel besser als wirklich den 8-Bit Kram von früher zu kopieren und alles so kompliziert zu machen wie auf einem C64.

  • Von 8-Bit CPU haben wir uns ja längst verabschiedet. Und der Einsteiger soll auch (erstmal) nicht Assembler programmieren müssen. Es geht eher darum, ob man Grafik mit viel Special-HW (Sprites, Blitter, "GPU") macht, oder die CPU schnell genug ist, dass es brauchbare Grafik-Primitive in Software gibt. Wenn man aber nicht wieder eine super-duper high-end GHz CPU einbaut, müssen diese halt schon etwas low-level optimiert werden. Ein 7-25 MHz 68000 ist nunmal auch nicht so schnell, dass man alle Grafik Operationen pixelweise in interpretiertem Lua macht.


    Und was Assembler vs. Hochsprache angeht: ich persönlich würde 68K Assembler manchen modernen Hochsprachen vorziehen. Es ist sofort klar ,was ein Instruktion tut und zur Not steppt man durch, um den Ablauf zu verstehen.

    Bei "modern C++" mit genügend Boost, STL, Inlines, Templates und Lambdas kommt man auch mit dem Debugger single-step oft nicht mehr weiter. Zumindest der von VS gibt da irgendwann auch auf mit source-level Debugging.

  • Verstehe was du meinst, ich mache meine Software 3D Rendering Sachen gerade in purem C mit SDL und finde das super, hier und da ist es etwas kniffelig, aber nix was man nicht lösen kann. Für Kundensachen kommt sowas natürlich nicht in Frage da sind dann C# und Co weit besser geeignet, aber ich mag den portablen Assembler C, nah genug dran und doch CPU unabhängig und nur ganz wenige Grundlagen die man für die Sprache braucht.


    Aber das ist ja das schöne heute, wie leben in einem Programmiererparadies. Jede Grundlage nur einen Klick entfernt und man kann sich die Sprache aussuchen, die am besten zu einem passt. Was wäre ich froh wenn ich damals solche Möglichkeiten gehabt hätte.

  • Mit geht es darum, daß man auch in Assembler programmieren kann, aber nicht muß. Deshalb würde ich auch auf jeden Fall eine (Soft-)CPU mit verfügbarem C-Compiler auswählen.

    Und für mich ist es halt auch nur ein echter Heimcomputer, wenn man direkt in Register und den Grafikspeicher reinschreiben kann - möglichst per CPU oder DMA.

    Daß man das auch per Lib machen kann, ist ein anderes Thema. Aber wenn es nur über eine Library praktikabel ist, dann ist es für mich kein Heimcomputer mehr.


    Bin übrigens persönlich kein 100%iger Freund des 68000ers (mehr). Ich halte alleine schon "Big Endian" für einen Irrweg, der einem in der Praxis nur Ärger macht (Pointer auf Byte statt Word braucht andere Adresse usw.).

    Ich finde den Befehlssatz von (little endian) 32bit RISC-Prozessoren wie Cortex M3 und Renesas RH850 ganz sympathisch, aber die sind natürlich geschützt (Lizenzen usw.). Aus solchen Erwägungen fände ich einen 32bit-Risc-V-Softcore wie NEORV32 interessant. Wobei im Risc-V-Standard schrulligerweise noch praktisch keine erweiterten Befehle zur Bitmanipulation (count leading zeroes usw.) existieren bzw. festgezurrt sind. Aber ich gehe davon aus, daß die "Bitmanip Extension" auch in NEORV32nachgerüstet wird, sobald sie offiziell ist.

    Zur Not ginge auch sowas wie Amber (Arm v2a wie im Archimedes) wobei der Adreßraum wohl nur 26bit hat und der Befehlssatz wohl auch recht eingeschränkt ist.

  • Deshalb würde ich auch auf jeden Fall eine (Soft-)CPU mit verfügbarem C-Compiler auswählen.

    ZPU - dann wird freiwillig in einer Hochsprache statt in Assembler programmiert ;)

  • :

    Ich konnte die von mir gewünschten Specs dank des Threads optimieren und konkretisieren. Mehr hatte ich mir ja ursprünglich auch gar nicht erhofft. Falls sich irgendwer durch den Thread "aufgerufen" fühlt, etwas davon praktisch umzusetzen (zumindest in Teilen) – umso besser. Vieles wird einem ja auch erst richtig klar, wenn man vor den technischen Problemen konkret steht.

    :

    Wenn ich nochmal Deine Specs zusammenfasse wäre das ein System mit:

    Grafik: 240x216 16 Farben bzw. 480x216 16(?) Farben, Hardware-Scrolling

    CPU: leistungsstärker als 8bit CPU z.B. 68K

    RAM: 1-2 MByte


    Wenn man noch 8Bit PCM-Sound oben drauf wirft wäre man bei einem Amiga.


    D.h. Hardware als auch Emulator wären vorhanden, zudem ist die Plattform skalierbar: A500 -> A1200, Fast-RAM, Turbokarte. Entwicklungsumgebungen sollten auch verfügbar sein. Nachteilig ist dass die Grafik nicht richtig skaliert/gestreckt ist und das mit den Bitplanes ist auch nicht so dolle.


    Was fehlt wäre:

    - einfacher Kernal / OS

    - Deine Spiele-IDE


    Wenn man das ganze final noch in ein eigenes KickROM kippt (was man nicht machen muss weil es ja nur eine Machbarkeitsstudie ist, aber cool wärs trotzdem) wärst Du doch am Ziel. Oder nicht ?

  • Amiga (OCS):

    Grafik 320x256 32/64 Farben aus 4096, 640x512 16 Farben, Hardware-Scrolling, Blitter, Copper, Sprites

    CPU: 68000@7MHz

    RAM 0.5-8.5 MByte

    4x 8Bit PCM Sound


    Der Amiga (und auch der ST) haben also eine ganze Menge mehr Pixel und Farben. OK, muss man ja nicht nutzen, genauso wie die anderen Grafik-Features.

    Die CPU dürfte aber zu lahm sein, um in einer interpretierten, strukturierten Hochsprache Action-Spiele zu coden, ohne die Extra-HW wie Blitter/Sprites zu verwenden.


    Und Retrofan will ja HDMI mit 16:9 an modernen LCD-TVs und da bekommt man mit A500 und Co doch Probleme.

    Scart ist nunmal nur 4:3 PAL SD-Resolution. Upscaling im TV wird nicht pixelgenau sein und auch keine Retro-Scanlines oder CRT-Effekte einführen.


    Aber grundsätzlich finde ich die Idee gut, ein "bare-metal" Game-Basic statt Kickstart zu machen. Mit der ACA500+ kann ich dann auch recht problemlos testen, ohne echte (E)ROMs zu brennen und umzustecken.

  • Scart ist nunmal nur 4:3 PAL SD-Resolution.

    Nö.

    Ich meine Amiga->Scart. Aber vielleicht hast Du Recht und der OCS Amiga kann auch ein 320x180@50 Hz so ausgeben, das mancher moderne TV es perfekt auf HD oder FullHD zieht.

    Nur machen die dann wohl bilineare Interpolation und dann sieht es sehr blurry aus.

  • Sind wir jetzt am Punkt angekommen "juhuuu wir brauchen ja gar keinen neuen Rechner, wir haben ja nen Amiga"?

    Pst. Irgendwann behauptet noch wer der Amiga wäre ein Retro-Rechner. Wenn das die richtig harten Amiga-Fans mit ihren AmigaOS4.x PPC Höllenkisten hören, dann bricht aber der Shitstorm los im Forum64.

  • Sind wir jetzt am Punkt angekommen "juhuuu wir brauchen ja gar keinen neuen Rechner, wir haben ja nen Amiga"?

    Pst. Irgendwann behauptet noch wer der Amiga wäre ein Retro-Rechner. Wenn das die richtig harten Amiga-Fans mit ihren AmigaOS4.x PPC Höllenkisten hören, dann bricht aber der Shitstorm los im Forum64.

    Der Amiga ist doch aus dem letzten Jahrhundert, oder nicht?

    Wenn das nicht Retro ist, dann weiis ich nix mehr :-D

  • Waren wir da nicht von Anfang an? :whistling:

    Ein Amiga ist aber kein "8-Bit-Style".


    8-Bit-Style ist ein Computer in einer Tastatur, anschließbar am heimischen Fernseher und beim einschaltet meldet sich das "OS" mit einem freundlichen READY, und man kann gleich loslegen in BASIC.

    Halt so'n Ding wie Sinclair ZX81, VIC 20, C16, C64, C128, CPC 464, MSX 1 & 2, Atari XL/XE etc.pp

    Ach ja :platsch: fast vergessen: und ein Casettenport zum Daten speichern ;-)

  • Ein Amiga ist aber kein "8-Bit-Style".


    [...]

    Ach ja :platsch: fast vergessen: und ein Casettenport zum Daten speichern ;-)

    Cassetten? Das ging doch noch viel besser auf dem Amiga, als auf jedem C64. Gigabytes an Daten auf einem VHS Band mit dem Video-Recorder speichern...

    Hab nur vergessen, wie sich dieses VHS-Backup-System nannte ... aber Google sagt: http://www.hugolyppens.com/VBS.html (VBS - "Video Backup System" - Namen die so simpel und generisch sind, dass man sie sofort versteht und sofort wieder vergisst)

  • Cassetten? Das ging doch noch viel besser auf dem Amiga, als auf jedem C64. Gigabytes an Daten auf einem VHS Band mit dem Video-Recorder speichern...

    Hab nur vergessen, wie sich dieses VHS-Backup-System nannte ... aber Google sagt: http://www.hugolyppens.com/VBS.html (VBS - "Video Backup System" - Namen die so simpel und generisch sind, dass man sie sofort versteht und sofort wieder vergisst)


    On an 68000 Amiga, the throughput is about 40MB per hour.


    Wie lange ich da wohl brauche um meine Videos (1,5TB) auf VideoTape zu backuppen? ;)

  • 8-Bit-Style ist ein Computer in einer Tastatur, anschließbar am heimischen Fernseher und beim einschaltet meldet sich das "OS" mit einem freundlichen READY, und man kann gleich loslegen in BASIC.

    Halt so'n Ding wie Sinclair ZX81, VIC 20, C16, C64, C128, CPC 464, MSX 1 & 2, Atari XL/XE etc.pp

    Ach ja :platsch: fast vergessen: und ein Casettenport zum Daten speichern ;-)

    Also ein Amiga wie z.B. A500, nur mit einem anderen ROM. ;)