1 /* 2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX 3 SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO 4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A 5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS 6 IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS 7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE 8 FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE 9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS 10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. 11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. 12 */ 13 14 15 #if defined(POLY_ACC) 16 #if !defined(POLY_ACC_H) 17 #define POLY_ACC_H 18 19 // 20 // A simplified interface to a variety of 3D cards. 21 // 22 23 #define SM_640x480x15xPA 23 // 640x480 15 bits per pixel, POLY ACC 24 #define BM_LINEAR15 5 // 1555 format, may be able to replace with BM_RGB15. John indicated that 25 // BM_RGB15 wasn't finished so I made a new type. 26 #define PA_BPP 2 // bytes per pixel. 27 28 extern unsigned short pa_clut[256]; // translate from 8 bit pixels to 15 bit pixels. 29 extern int pa_filter_mode; // For Virge filtering control, set in Custom Detail Level menu. 30 31 int pa_init(void); // init library. 32 void pa_reset(); // cleans up library. 33 int pa_detect(int mode); // detect card and whether mode is supported. 34 void pa_set_mode(int mode); // sets display mode if valid PA mode. 35 void pa_update_clut( // 8 bit to 15 bit table update. 36 unsigned char *pal, 37 int start, int count, 38 int type); // type 0==0..63, 1==0..255. 39 void pa_restore_clut(void); 40 void pa_save_clut(void); 41 void pa_step_up(int r, int g, int b); 42 43 void *pa_get_buffer_address(int which); // returns a pointer to the front(0), or back(1) buffer. 44 // NOTE: this only makes sense until the next page flip. 45 void pa_swap_buffer(void); // performs the page flip. 46 void pa_ibitblt(void *src, void *dst, void *mask); 47 48 void pa_clear_buffer(int buffer, ushort color); 49 void pa_set_3d_offset(int x, int y); // where on screen the triangles should be drawn. 50 void pa_draw_tmap(void /*$$grs_bitmap*/ * srcb, void /*$$g3ds_tmap*/ * tmap, int transparency_on, int lighting_on, 51 int perspective, fix min_z); 52 void pa_draw_flat(void /*$$g3ds_tmap*/ * tmap, int color, int alpha); 53 void pa_blit(grs_bitmap *dst, int dx, int dy, grs_bitmap *src, int sx, int sy, int w, int h); 54 void pa_blit_scale(grs_bitmap *source_bmp, grs_bitmap *dest_bmp, 55 int x0, int y0, int x1, int y1, 56 fix u0, fix v0, fix u1, fix v1, int orient 57 ); 58 int pa_blit_lit(grs_bitmap *dst, int dx, int dy, grs_bitmap *src, int sx, int sy, int w, int h); 59 60 int pa_rect(int left,int top,int right,int bot); 61 62 void pa_init_cache(void); 63 void pa_cache_hit(int slot); 64 void pa_cache_miss(int slot, grs_bitmap * bmp); 65 66 int pa_idle(void); // allows program to poll whether the chip is busy. 67 void pa_sync(void); // waits for current async op to complete. 68 void pa_flush(void); // flushes dma and waits for everything to complete. 69 70 void pa_about_to_flip(); // used in Rendition version, but not in S3 version 71 72 void pa_set_write_mode (int mode); // used by 3Dfx 73 void pa_set_frontbuffer_current(void); // used by 3Dfx 74 75 #endif 76 #endif 77