From: demitri AT valint DOT net (Tim Elliott) Newsgroups: comp.os.msdos.djgpp Subject: Problem.... Date: Sat, 31 Jan 1998 18:17:36 -0800 Message-ID: NNTP-Posting-Host: 206.107.184.67 Lines: 102 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk I did this using DJGPP & ALLEGRO. I am having some problems with my program, it works for about 2 seconds, then it gives me some big error with a bunch of memory addresses and stuff. anyways, here is my source. if you need my *.dat file, email me at demitri AT valint DOT net. The problem is in the area of the (do while) part of main. if you take out the the line with do{ and }while ( !key[KEY_ESC] ); the program works fine. please help. --------------------------- #include #include #include #include #include "allegro.h" #include "bp.h" DATAFILE *bp_data; BITMAP *background; BITMAP *double_buffer; BITMAP *hero[5]; int hx,hy,hframe; int change = 0; void init_game() { int index; double_buffer = create_bitmap(320,200); clear(double_buffer); background = create_bitmap(320,200); background = (BITMAP *) bp_data[BG].dat; for (index=0; index<5; index++) hero[index] = create_bitmap(25,35); hero[0] = (BITMAP *) bp_data[RS_HERO].dat; hero[1] = (BITMAP *) bp_data[HR_1].dat; hero[2] = (BITMAP *) bp_data[HR_2].dat; hero[3] = (BITMAP *) bp_data[HR_3].dat; hero[4] = (BITMAP *) bp_data[HR_4].dat; } void main() { char data_filename[10] = "bp.dat"; hframe = 0; hx = (160 - 25); hy = (100 - 35); allegro_init(); install_keyboard(); install_timer(); set_gfx_mode(GFX_VGA, 320, 200, 0, 0); bp_data = load_datafile (data_filename); set_pallete(bp_data[MAIN_PAL].dat); init_game(); blit(background,double_buffer,0,0,0,0,320,200); draw_sprite(double_buffer, hero[hframe], hx, hy); blit(double_buffer,screen,0,0,0,0,320,200); clear_keybuf(); do{ hy--; hframe++; change = 1; vsync(); vsync(); vsync(); clear( double_buffer); blit( background, double_buffer,0,0,0,0,320,200); draw_sprite(double_buffer,hero[hframe],hx,hy); blit(double_buffer,screen,0,0,0,0,320,200); }while ( !key[KEY_ESC] ); readkey(); unload_datafile (bp_data); allegro_exit(); }