JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=68f1973a62bd4d590219e514c59ada49Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Tut für Grafik in DOS

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Patric
Mini JLI'ler



Anmeldedatum: 17.09.2004
Beiträge: 28

Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 18:04    Titel: Tut für Grafik in DOS Antworten mit Zitat

Hallo

Ich wollt mal wissen ob mir einer einen Tut hat der mir erklärt wie ich in Dos mit Grafiken zu arbeiten zb um ein Spiel zu machen, ich will extra DOS und nicht Windows (da wüsste ich es ja), weil wir in der Schule noch mit DOS Programmen coden rumschlagen.
Also wäre net wenn mir einer eins geben könnte.

Patric
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 18:10    Titel: Antworten mit Zitat

Welche Programmiersprache?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patric
Mini JLI'ler



Anmeldedatum: 17.09.2004
Beiträge: 28

Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 18:13    Titel: Antworten mit Zitat

achso ja wenns geht so in richtung c++
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 18:16    Titel: Antworten mit Zitat

Da DOS im RealMode arbeitet, kannste locker mit dem VBE3.0 arbeiten für Grafikausgabe.

Eigentlich kannste da auch mit C drangehen, aber den Mode13 bekommste sehr schlecht unter C ans laufen Wink

Code:
#pragma    inline
asm    .386p

#include <io.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <fcntl.h>
#include <process.h>

#define byte     unsigned char
#define word    unsigned int
#define    dword    unsigned long

void     setpixel_in_c    ( word xpos, word ypos, byte color )
{
    char     *screen=(char*)0xa0000000;
   
    *(screen+320*ypos+xpos)=color;
}

void     setpixel     ( word xpos, word ypos, byte color )
{
    asm    push    [0xa000]
    asm    pop    es
    asm    mov    di,[xpos]
    asm    mov     bx,[ypos]
    asm    mov    al,[color]
    asm    mov    cx,bx
    asm    shl    bx,8
    asm    shl    cx,6
    asm    add    bx,cx
    asm    add    di,bx
    asm     stosb

}


void    copyscreen    ( word dest, word source )
{
    asm    mov    ds, [source]
    asm    mov    es, [dest]
    asm    xor    si, si
    asm    mov    di, si
    asm    mov    cx, 16000
    asm    rep    movsd
}

void    clearscreen     ( word dest )
{
    asm    push    [dest]
    asm    pop    es
    asm    xor    di, di
    asm    mov    cx, 16000
    asm    xor    eax,eax
    asm    rep    stosd
}

void    mode13exit     ( void )
{
    asm    mov    ax, 0x03
    asm    int    0x10
}

void    mode13init     ( void )
{
    asm    mov    ax, 0x13
    asm    int    0x10
}

void     setpal        ( char palette[] )
{
    word    counter;

    outp(0x3c8,0);
    for(counter=0;counter<=768;counter++)
    outp(0x3c9,palette[counter]);

}

void    loadtga        ( char *name, char *pixels, char palette[] )
{
    byte    file_handle,temp_col;
    word    counter;

    if ((file_handle =open(name, O_RDONLY | O_BINARY)) == -1)
    {
    printf("can't open %s\n",name);
    exit(1);
    }
    read(file_handle, pixels, 18);
    read(file_handle, palette, 768);
    for(counter=0;counter<=766;counter+=3)
    {
    temp_col=palette[counter]>>2;
    palette[counter+1]=palette[counter+1]>>2;
    palette[counter]=palette[counter+2]>>2;
    palette[counter+2]=temp_col;
    }
    for(counter=1;counter<=200;counter++)
    read(file_handle, (pixels+64000-counter*320), 320);
    close(file_handle);
}

void    loadpcx        ( char *name, char *pixels, char palette[] )
{

    int    handle;
    word    i,j,k;
    byte    p,q;


    i=0;j=0;p=0;k=0;

    if ((handle =open(name, O_RDONLY | O_BINARY)) == -1)
    {
    printf("can't open %s\n",name);
    exit(1);
    }
    lseek(handle,128,SEEK_SET);
    do
    {
    read(handle,&p,1);
    if((p&0xc0)==0xc0)
    {q=(p&0x3f);read(handle,&p,1);for(k=0;k<q;k++){*(pixels+j)=p;j++;}}
    else
    {*(pixels+j)=p;j++;}
    }
    while(j<64000);
    lseek(handle,-768,SEEK_END);
    for(i=0;i<768;i++)
    {read(handle,&p,1);palette[i]=p>>2;}
    close(handle);

}


Die beiden Bild-Loader nehmen nur Bilder, die 320X200 Pixel sind und 256 Farben haben.
Die Setpixel-Routine in C sieht zwar kurz und bündig aus, aber wer weiss was der Compiler draus macht? Auf jeden Fall ist die in Assembler geschriebene schneller (ich glaube weniger als 20 Taktzyklen auf 'nem 486-er), da ich die Multiplikation (320*y) in zwei Bitverschiebungen umwandle.

Gecodet mit Borland C-Compiler 3.x unter MS-Dos.

Für VBE3.0 http://www.vesa.org/ anschauen Smile
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patric
Mini JLI'ler



Anmeldedatum: 17.09.2004
Beiträge: 28

Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 18:18    Titel: Antworten mit Zitat

ah k thx ich werds mir mal ankucken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patric
Mini JLI'ler



Anmeldedatum: 17.09.2004
Beiträge: 28

Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 19:09    Titel: Antworten mit Zitat

Ach ne zusatz Frage, ist es möglich unter DOS, ein Chat Programm zu coden, also ein Chat zwischen 2 PCs zb. Ich will nur wissen obs rein technisch möglich ist. Und wenn ja schwierigkeit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 19:11    Titel: Antworten mit Zitat

Möglich ja, aber kannste knicken. DOS ist nicht umbedingt für Netzwerke gebaut worden.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patric
Mini JLI'ler



Anmeldedatum: 17.09.2004
Beiträge: 28

Medaillen: Keine

BeitragVerfasst am: 12.12.2004, 19:23    Titel: Antworten mit Zitat

Ah k thx war eingetlich auch nur rein aus interesse Razz
ach und sry wegen dopplepost da oben hats übersehen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 04.01.2005, 06:35    Titel: Antworten mit Zitat

Hmm, für Grafik-Spielereien unter DOS hab ich als Vor-Grundschüler Pascal benutzt. Würde dir auch Pascal empfehlen... Wegen Grafik, müssteste mal im WWW nach Units dafür suchen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kronos
Senior JLI'ler



Anmeldedatum: 19.03.2004
Beiträge: 290

Medaillen: Keine

BeitragVerfasst am: 04.01.2005, 14:09    Titel: Antworten mit Zitat

Jetzt bist du ja in der Grundschule und um einiges schlauer!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zyrian
Super JLI'ler



Anmeldedatum: 30.08.2003
Beiträge: 321
Wohnort: Essen
Medaillen: Keine

BeitragVerfasst am: 04.01.2005, 18:10    Titel: Antworten mit Zitat

Kronos hat Folgendes geschrieben:
Jetzt bist du ja in der Grundschule und um einiges schlauer!

löl wie fies
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 04.01.2005, 18:13    Titel: Antworten mit Zitat

Passend zum Thema:
www.256b.com
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum