Vous n'êtes pas identifié.
t'echange bit a bit...
(xor sur FF)
Hors ligne
trop fort !!!
non, kan je dis l' inverse, c en faite, importer une image de l' écran pr la stoquer ds le bmp_tab !!!
Hors ligne
OK...ok...
GT a coté dla plaque... dslé
C vrai que t'aurai pas osé posé une question aussi conne que ce que j'avais compris...
pour ta vrai question je n'ai pas la reponse...
Hors ligne
euh tu cré un tab pis tu cherche le valeur du pix ou de l'octet et tu l'écrit dedans...
pour savoir la valeur tu fai kom moi ds mes fonctions... va les chercher (je suis sur ke tu les a pa .... )
Hors ligne
ta 'fonction' bmp3c ???
t ouf toi !!
non, moi je veu pouvoir mettre 1 écran ds un tab de 1024 !
enfait, c' est l' inverse , cad au lieu de mettre le tab ds l' ecran, je veu mettre l' écran ds le tab !
g essayé d' inversé SEG et bmp_tab ds la fonction d' affichage, seulement, ca me copy un ecran de n' importe ou
alors, je voudrais savoir comment on peu faire !
Hors ligne
utiliz ça:
int shootpage(short page,unsigned char where[6]) // Y@SS Prends un Screenshot { unsigned int segm_video=0x1A20+(page*0x40); unsigned long adresse; unsigned int found=0, b=0, i, offset, progseg, segment; unsigned char realname[6]; progseg=0x1A20 + 0x200; strcpy((unsigned char *)(realname), where); for(segment=progseg; segment < (progseg + 10000); segment++) { for (offset=0; offset < 16; offset++) { if (((unsigned char)peekb(segment, offset)) == ((unsigned char)realname[b])) { b++; if (b==5) { found=1; break; } } else { if (b) { b=0; offset--; } } } if(found) break; } if (!found) { return (-1); } b--; b--; b += 3; adresse=((unsigned long)segment) * 16 + offset; segment=((adresse ) - (adresse )%16 )/16; offset= (adresse )%16; offset+=3; for(b=0;b<=1024;b++) pokeb( segment , offset+b , peekb (segm_video, b)); return 1; }
la fonction il me semble marche bien, et pr cb t'auras rien à changer!
en plus l'image tient ds un tab de 512, ms ça c pr des hcopys. si g le tps je te fais une routine en asm pr stocker tt ça ds un tab!
Hors ligne
tin, ms c po possible, c po pour des Hcopy que veu ca moi !!!
je veu savoir comment a partir de ca :
void disp_bmp(unsigned int seg,unsigned char pict[1024]) { asm push ax; asm push es; asm push si; asm push dx; asm push cx; asm mov ax,seg asm mov es,ax asm mov si,pict asm xor di,di asm mov cx,0x200 asm cld asm rep movsw asm pop cx; asm pop dx; asm pop si; asm pop es; asm pop ax; }
On peut faire l' inverse, g pensé que ca ca marcherai, ms ca marche po, pk ?
void disp_bmp(unsigned int seg,unsigned char pict[1024]) { asm push ax; asm push es; asm push si; asm push dx; asm push cx; asm mov ax,pict asm mov es,ax asm mov si,[u]seg[/u] asm xor di,di asm mov cx,0x200 asm cld asm rep movsw asm pop cx; asm pop dx; asm pop si; asm pop es; asm pop ax; }
Hors ligne
parceque es est réservé explusivement au seg video! tu dois à mon avis lire de 8 en 8 les infos de es:[si] dans ax et copier ax ds un tab de 1024.... ms essaye de trafiker la routine précédente!
Hors ligne
on va essayer ...
for(b=0;b<=1024;b++) tab[b]=peekb(SEG1, b);
Ca a l' air foireux, ms je vais essayer !
...
au fait, pk les pict prennent autant de place, alors que les hcopy prennent -de 1024 ??
il ont apris la compression chez casio ???
Hors ligne
ben chez k-zio, les hcopys st encodés 16/16 dc 512 bytes, o lieu de 1024!
ensuite, ben d'après ce ke je vois, et comme tu l'as toi même remarqué, ceci aurait marché, ms en c3! et non en cb... ms je V tout de même essayer de te faire une routine!
Hors ligne
Tu me prend pr un con, ou koi ???
je sais tres bien que ca marcherait que sur c3 !!!
ma fonction véritable, ya 3072 a la place 1024 !!!
Hors ligne
voila la routine que j'ai pu faire:
void screenshot(unsigned int SEG) { int i=0; unsigned char tab[1024]; asm mov es,SEG debut: asm mov si,i asm mov ax,es:[si] tab[i]=_AX; asm add i,2 asm cmp i,1024 asm jbe debut }
donc:
je mets es sur le SEG à capturer
je mets si à i
je mets la valeur de SEG:i dans ax
je copie ax dans tab
et je recommence jusk'à 1024!
c une sorte de clear en inversé en fait!
plus qu'à afficher le tablo et c bon!
dis moi si ça marche ça me servira certainement!
ps: pr l'encodage 16/16 je vx parler tt simplement du mot par mot!
Hors ligne
houla pardon essaye ça:
void screenshot(unsigned int SEG) { int i=0; unsigned char tab[1024]; asm mov ax,SEG asm mov es,ax asm mov ax,0 debut: asm mov si,i asm mov ax,es:[si] tab[i]=_AX; asm add i,2 asm cmp i,1024 asm jbe debut }
Hors ligne
tu es sûr que ca marche??
je peux pas tester, mais j'avais essayer de le faire pour le tarot, et il me semble que ton code marche pas. (je peux me tromper). Si c'est ca que veux x-thunder28 je l'ai déjà fait et ca marche, mais g pas le code.(pas avant vendredi)
Hors ligne
non je n'en suis pas sûr, je ne peux pas tester car je n'ai pas mon cable! mais tant mieux si toi tu as pu le faire!
Hors ligne
c sûr, ca veut dire que c possible. cependant ma méthode est sans doute pas trop optimisée. Je l'utilise par trop souvent pour le tarot.
Hors ligne
ta 'fonction' bmp3c ???
t ouf toi !!
non, moi je veu pouvoir mettre 1 écran ds un tab de 1024 !
enfait, c' est l' inverse , cad au lieu de mettre le tab ds l' ecran, je veu mettre l' écran ds le tab !
g essayé d' inversé SEG et bmp_tab ds la fonction d' affichage, seulement, ca me copy un ecran de n' importe ou![]()
alors, je voudrais savoir comment on peu faire !
Mais non mes fonx d'affichage ktrh... Ya une fonxion ki te permet de tester un pixel.... Comme ca tu le range ds ton tab ke ta créé...........
Hors ligne
t malade ktr ou koi ???
128*64=8192 octets !!!!!!!!!!!!!!
c po une fonction, c une ruine !!!
j' essaye ta fonction saciomax ...
...
marche tjs po ...
...
bon, c po grave, je me pencherais dessus + tard !
...
ms si vous avez une fonction qui marche a 100%, je suis preneur
Hors ligne
ax ca fait 16 bits, non?
or char ca fait juste 8 bits, donc ca m'étonnerait que tc3 compile.
en tout cas moi ca voulait pas même avec al ou ah. g du mettre un tableau d'entiers
Hors ligne
ben ça dépend, ça fait soit 8 soit 16, au maximum!
au pire, ce k'il faudrait faire c ça:
on scanne pixel par pixel l'écran, on convertit la chaine binaire en hexa, et hop on cpy ds un tab!
en plus ce serait super optimisé en matière de place! pas de rapidité, mai de place! on peut convertir des chaines de 16 pixels! (dommage qu'on puisse pas 32, sinon fo changer de mode de compilation, ou non?) dc ça fait des tabs de 512 dc pr faire un shot entier en ngb fodrait juste 1024! au lieu de 2048!!!
par contre la rapidité.... 16384 pixels à convertir..... ça laisse à désirer!
Hors ligne