Voila je vais tenter de bien expliquer les chose.
En premier je vais vous presenter le code.
Citation :
#include <conio.h>
#include <dpmi.h>
#include <dos.h>
#include <string.h>
void int_vesa()
{
__dpmi_regs registres;
registres.x.ax = 0x4F02;
registres.x.bx = 0x101;
__dpmi_int(0x10, ®istres);
return;
}
void def_num_deg(char num)
{
__dpmi_regs registres;
registres.x.ax = 0x4F05;
registres.x.dx = num;
__dpmi_int(0x10, ®istres);
return;
}
int main()
{
char ecran_vir[65535];
memset(&ecran_vir,0xAB,65535);
//memset(&ecran_vir,0x3A,65535);
int_vesa();
dosmemput(&ecran_vir,65535,0xA0000);
getch();
return 0;
}
|
Le mode VESA me fais des choses asser bisard.
La premier fois que je l'ai utiliser s'étais sur un pc virtuelle et les codes marchaient relativement bien.
A present je suis sous XP et il se passe des chose que je ne m'esplique pas.
Tous les programes sur le sujet vesa( exemple, tuto), aucun ne marche ou presque auqun.
En cherchan j'arive progresivement a localiser des problemme et voila que j'arive a une inpasse.
Le code si desus est compiler sous djgpp.
Se copilateur 32bits est soidisant sencet assurer 4294967296 byte de memoir.
Selement si je veux programer le mode 0x112 : soit mon ecran virtuelle
int ecanr_vir[19][16384]; (soit int 4 bytes) et seg = 65535 bytes 19 = 640*480*4/65535.
La memoir utiliser est donc de 1245184 bytes, jutilise une pichnette de memoir.
Voila se qu'il me repon
Citation :
Exiting due to signal SIGSEGV
Stack Fault at eip=00001f8a
eax=000b8000 ebx=00000299 ecx=00092758 edx=00000000 esi=00000054 edi=00012770
ebp=00092748 esp=fff5273c program=C:\DJGPP\TRAVAIL\VESA5.EXE
cs: sel=01a7 base=02990000 limit=0009ffff
ds: sel=01af base=02990000 limit=0009ffff
es: sel=01af base=02990000 limit=0009ffff
fs: sel=017f base=00007550 limit=0000ffff
gs: sel=01bf base=00000000 limit=0010ffff
ss: sel=01af base=02990000 limit=0009ffff
App stack: [00092770..00012770] Exceptn stack: [000126d4..00010794]
Call frame traceback EIPs:
0x00001f8a
|
Alors la
En final a se poin, est t'il posible de reservet un espase memoir sous djgpp comme sous turbo c(PS un espase de 1245184 BYTES mini)
De plus si je depasse une resolution de 640 * 480 (peux inporte le nombre de couleur)
L'ecran mafiche "frecance trop élever"
Si vous pourier m'eclerais j'en vous serais reconesent.
PS je suis sous XP
DSL pour l'ortografe, ni faite pas a tention, j'ai pas eu le temtp de men ocuper.
@++
Message édité par darta123 le 21-04-2007 à 18:05:01