Возник непонятный трабл с открытием файла... Буду рад помощи... Code: #include <dos.h> #include <stdio.h> #include <conio.h> #include <mem.h> #include <stdlib.h> void main(){ unsigned char buff[199][319]; unsigned char sprite[39][31]; unsigned char far *screen = (char far *)MK_FP(0xa000,0); int i,j,k; FILE *bmp; REGPACK r; if((bmp=fopen("1.bmp","rb"))==NULL){ printf("Cant open file\n"); getch(); }else{ fseek(bmp,1078,0); fread(&sprite,sizeof(sprite),1,bmp); fclose(bmp); for(i=0;i<=39;i++){ for(j=0;j<=31;j++){ buff[i][j]=sprite[i][j]; } } r.r_ax=0x13; intr(0x10,&r); k=0; for(i=0;i<=199;i++){ for(j=0;j<=319;j++){ screen[k]=buff[i][j]; k++; } } sleep(5); r.r_ax=0x3; intr(0x10,&r); getch(); } }
Непроходи открытие файла ( Code: if((bmp=fopen("1.bmp","rb"))==NULL){ printf("Cant open file\n"); getch(); }else{
все предложения нащет пути втопку .. пока нетрогаю масив buff все идет отлично . нормально читаетса файл. выводитса данные других масивов в бижеобуфер .. отображаетса все в разрешении 320*200*256 норм .. . но как токо пишу се тв масив buff то пц ( а он нада позарез для формирования изображеня перед выводом .. ибо нада анимировать примерно 10 спрайтов одновременно
По-моему, это переполнение разве не так: fread(sprite,31*39,1,bmp); АХТУНГ: for(i=0;i<=39;i++){ for(j=0;j<=31;j++){ buff[j]=sprite[j]; } вместо <= должно быть < END АХТУНГ
Ахтунги приняты во внимание но проблема осталась прежней. Методом каментированием всего подряд выяснил кое что. Код работает ели закоментить в которых выполняютса операции над масивом buff строки: Code: #include <dos.h> #include <stdio.h> #include <conio.h> #include <mem.h> #include <stdlib.h> void main(){ unsigned char buff[199][319]; unsigned char sprite[39][31]; unsigned char far *screen = (char far *)MK_FP(0xa000,0); int i,j,k; FILE *bmp; REGPACK r; if((bmp=fopen("c:\\1.bmp","rb"))==NULL){ printf("Cant open file\n"); getch(); }else{ fseek(bmp,1078,0); fread(&sprite,36*31,1,bmp); fclose(bmp); // // for(i=0;i<39;i++){ // for(j=0;j<31;j++){ // buff[i][j]=sprite[i][j]; // } // } // r.r_ax=0x13; intr(0x10,&r); k=0; // // for(i=0;i<199;i++){ // for(j=0;j<319;j++){ // screen[k]=buff[i][j]; // k++; // } // } // sleep(5); r.r_ax=0x3; intr(0x10,&r); getch(); } }