|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Patric Mini JLI'ler
Anmeldedatum: 17.09.2004 Beiträge: 28
Medaillen: Keine
|
Verfasst am: 12.12.2004, 18:04 Titel: Tut für Grafik in DOS |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
Nach oben |
|
|
Patric Mini JLI'ler
Anmeldedatum: 17.09.2004 Beiträge: 28
Medaillen: Keine
|
Verfasst am: 12.12.2004, 18:13 Titel: |
|
|
achso ja wenns geht so in richtung c++ |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 12.12.2004, 18:16 Titel: |
|
|
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
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 _________________ '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 |
|
|
Patric Mini JLI'ler
Anmeldedatum: 17.09.2004 Beiträge: 28
Medaillen: Keine
|
Verfasst am: 12.12.2004, 18:18 Titel: |
|
|
ah k thx ich werds mir mal ankucken |
|
Nach oben |
|
|
Patric Mini JLI'ler
Anmeldedatum: 17.09.2004 Beiträge: 28
Medaillen: Keine
|
Verfasst am: 12.12.2004, 19:09 Titel: |
|
|
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 |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
Patric Mini JLI'ler
Anmeldedatum: 17.09.2004 Beiträge: 28
Medaillen: Keine
|
Verfasst am: 12.12.2004, 19:23 Titel: |
|
|
Ah k thx war eingetlich auch nur rein aus interesse
ach und sry wegen dopplepost da oben hats übersehen... |
|
Nach oben |
|
|
nigs Super JLI'ler
Anmeldedatum: 19.12.2002 Beiträge: 359
Medaillen: Keine
|
Verfasst am: 04.01.2005, 06:35 Titel: |
|
|
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 |
|
|
Kronos Senior JLI'ler
Anmeldedatum: 19.03.2004 Beiträge: 290
Medaillen: Keine
|
Verfasst am: 04.01.2005, 14:09 Titel: |
|
|
Jetzt bist du ja in der Grundschule und um einiges schlauer! |
|
Nach oben |
|
|
Zyrian Super JLI'ler
Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 04.01.2005, 18:10 Titel: |
|
|
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 |
|
|
PeaceKiller JLI Master
Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 04.01.2005, 18:13 Titel: |
|
|
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 |
|
|
|
|
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
|