Entscheidung was man für ein Spiel kreieren könnte

Diskussion zum Thema Programmierung unter DOS (Intel x86)
drzeissler
DOS-Gott
Beiträge: 3336
Registriert: Mo 8. Feb 2010, 16:59

Re: Entscheidung was man für ein Spiel kreieren könnte

Beitrag von drzeissler »

Schreib den damaligen PC-Portierer an.
CPU: 486 DX2/66 MOBO: SNI-D882 RAM: 3x16MB - FDD: 3,5" 1,44MB HDD: 6,4GB Seagate ISA(1): Audican32Plus PCI(1): 3com TX 905 OS: MsDos622 - Win95a - WinNT 3.51
wobo
DOS-Guru
Beiträge: 614
Registriert: So 17. Okt 2010, 14:40

Re: Entscheidung was man für ein Spiel kreieren könnte

Beitrag von wobo »

Brueggi hat geschrieben:Hi,

das hab ich schon alles versucht.
Auch, das mein Patch zuerst den Grafikmodus einschaltet, die Farben setzt (auch schon mit/ohne/verschiedene Gruppierungen), und dann den GraKa-Interrupt "umlenkt" auf eine routine, die nur dann zum Graka-INT springt, wenn in den Textmodus geschaltet wird, ansonsten lediglich IRET ausführt.

Alles ohne Erfolg. Es wird nur die erste hälfte der Palette gesetzt oder eben beide Hälften gleich (das sieht dann aus, als hätte das Game 4-6 Farben). Manchmal kommen auch nur Falschfarben.
In den 16-Farbmodi 320sx200/16 und 640x200/16 befinden sich die ersten 8 Farben bei VGA-Karten in den Palettenregistern 0..7 und die zweiten 8 Farben in den Palettenregistern 16..23; in den Modi 640x350/16 und 640x480/16 sowie in den Textmodi ist die Verteilung anders.
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Entscheidung was man für ein Spiel kreieren könnte

Beitrag von DOSferatu »

Ja, die haben bei HErc/CGA/EGA/VGA quasi immer wieder alte Modi "aufgebohrt", um neue daraus zu machen. Daher ist bei älteren Modi manchmal die Pixel-Verteilung im Speicher, sowie die Verteilung der Paletten (und Realisierung der Farben) sehr "crazy" gelöst.
Ich habe Dokumentationen hier, um die ganzen Register rauszufinden. Außerdem könnte die RBIL helfen da stehen glaub auch die Register drin. Habe das jetzt alles nicht im Kopf.
(Momentan arbeite ich eher mit VGA.)
Ich kann zur Not bei Bedarf mal recherchieren. Aber was wobo geschrieben hat, klingt schon ganz plausibel.
Brueggi

Re: Entscheidung was man für ein Spiel kreieren könnte

Beitrag von Brueggi »

Im ersten Anlauf hats nicht geklappt - wieder falschfarben.
Vielleicht habe ich auch einen Denkfehler:

Ich fange den GraKa-Interrupt ab ($10) und leite im ersten Schritt die Anfrage an den echten Interrupt weiter, setzt danach die Farbpalette neu (egal ob direkt über out oder über INT $10 - es geht nur die erste Hälfte der Palette). Mit Neu-Gruppierung usw. habe ich es auch schon probiert, auch die Palette zuerst setzen, dann "Disable Loading Default Palette" aufgerufen, dann Grafikmodus - Falschfarben.

Im Moment habe ich aber nur wenig Zeit, da weiter dran zu sitzen. :-(
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Entscheidung was man für ein Spiel kreieren könnte

Beitrag von DOSferatu »

Soweit ich mich dunkel erinnere ist das ganze Ding "zweistufig".
Man ordnet die Farbnummer einer Palettennummer zu UND kann die Farbe ändern. Das Ändern der Farbe geht erst seit VGA.
In EGA und davor entsprach der Palettenindex gleich der Farbe (6bit=2rot, 2grün, 2blau) und man kann diese 64 Indizes den 17 Registern zuordnen (0-15 = die 16 Farben, 17=Rahmenfarbe, was RegNr16 macht, weiß ich grad nicht).
Irgendwie so war das.
Erst ab VGA ist das ja so, daß die Farben nicht mehr 6bit, sondern 18bit sind und noch diese "extra palette" haben. Für die Abwärtskompatibilität steht die zu Anfang in den 4bit Modi (Textmodes+Grafikmodes) auf der "EGA" Paletteneinstellung.
Benutzeravatar
zatzen
DOS-Guru
Beiträge: 518
Registriert: Di 17. Apr 2012, 05:10
Wohnort: bei Köln
Kontaktdaten:

Re: Entscheidung was man für ein Spiel kreieren könnte

Beitrag von zatzen »

Nochmal kurz zurück zum Thema, zu der Frage, was man für ein Spiel machen könnte.

Ist eigentlich einfach: Damit das Spiel am Ende Plattform-unabhängig ist, programmiert man
eine Engine, die einen bestimmten Stil des Spieles vorgibt. Die Inhalte selbst kann man
dann komplett gestalten, ohne eine einzige Zeile wirklichen Code zu schreiben.
Das ist doch eine gute Gewissensentlastung - ich kann, wenn ich es so angehe,
unbekümmert ein Spiel für den Real-Mode erschaffen, aber mit der Möglichkeit,
dass irgendwann sich jemand der Engine annimmt und sie nach Java oder sonstwohin
portiert, für die Leute die für DosBox zu faul sind. Nebenbei ist es auch einfach schöner,
wenn man ein Spiel bastelt, wenn man dabei nicht hunderte Seiten Code wälzen muss
sondern sich auf das künstlerisch-Kreative konzentrieren kann.
Von wegen DosBox zu faul: Da habe ich ja direkt impliziert dass ich davon ausgehe
dass das Ergebnis eher nicht auf echter Hardware laufen gelassen wird. Trotzdem ist
es umso sinnvoller und interessanter, wenn die Engine auf meinetwegen einem echten
486er funktioniert. Es ist dann auch egal, ob ich Sound als Timer nehme oder nicht.
Man kann es ja jederzeit noch abändern, denn man ändert ja nichts am Spiel sondern
verbessert nur die Engine...
Und da kann ich mir auch Teamarbeit vorstellen, dass eben z.B. jemand von euch
sinnvollere Routinen zum Timing schreibt.

Ich denke mal, LucasArts machen das ja auch so, und ScummVM kann man ja sogar
mit Spielen Ende der 80er füttern, wenn ich das richtig verstehe.

Wieder alles nix neues - aber das leidige Thema Dos oder nicht oder Real Mode oder nicht
erledigt sich, wenn man mit einer generellen Engine arbeitet. Und es passt genau in mein
Konzept: Formate ausdenken.

Und so kann das dann auch etwas werden - denn wenn ich alles auf einmal machen müsste,
wären da immer Hürden - wenn ich programmiere habe ich die Grafiken nicht, wenn ich
Grafiken und Animationen haben will fehlt mir noch der Code dafür, ähnlich mit Sound und
Musik... Und auch überhaupt mit dem, was überhaupt im Spiel passieren soll. Lieber ersteinmal
eine Engine aufsetzen und mit kleinen Grafik / Sound Daten und ein paar Definitionen testen.
mov ax, 13h
int 10h

while vorne_frei do vor;
Antworten