; conditional assembley variables and general constants ; constants for optimal conditional assembley ; don't pay for features you'll never use! (timewise) usez equ yes ; z camera rotations ommited if no, saves 12 imuls ; this speeds up computation in "compound" matrix usesteel equ yes ; set no if no sides will use steel texture. ; makes poly_fill routine faster useborders equ yes ; lxupdate and xupdate will be skipped if no. ; set to no if you have no intention of ever ; using the clear_fill routine. this really ; is used if you will have a landscape in the ; background and you want the fake_line routine ; to be faster yes equ 0 no equ -1 bulletcolour equ 4 ; what colour is single point object ; variables for object and polygon routine tolerance equ 60 ; max center of gravity offset for objects/ratio ztruncate equ 40 ; if z< ztruncate, z=ztruncate:for make3d minz equ 60 ; minimum z before object can be seen:for make1obj maxz equ 3000000 ; maximum distance in any axis object can be seen followtol equ 300 ; tolerance if already looking at object,newfollow ; polygon constants maxpoints equ 600 ; max points (*total* on screen if 3d2) maxsurfaces equ 600 ; max object surfaces (*total* on screen if 3d2) mult equ 3 ; shl ax,mult for number of sides maxpolys equ 8 ;2^mult ; max sides to a polygon,must = 2^mult,keep small!! maxobjects equ 10 ;50,100,? ; number of objects cameraobject equ maxobjects ; camera is last object in list ; constants for distance vs resolution smalla equ 1100 ; if objects are farther than smallabc, whatshape smallb equ 4500 ; will assume smaller form of object smallc equ 10000 ; a = close/high resolution, d = far/low res ; mode x definitions ; 0 = 320 x 200 ; 1 = 320 x 400 ; 2 = 360 x 200 ; 3 = 360 x 400 ; 4 = 320 x 240 ; 5 = 320 x 480 ; 6 = 360 x 240 ; 7 = 360 x 480 videomode equ -1 if videomode eq 0 xmode equ videomode xmax equ 160 xmin equ -160 ymax equ 100 ymin equ -100 xactual equ 320 yactual equ 200 xcenter equ 160 ycenter equ 100 ratiox equ 320 ratioy equ 260 pages equ 4 elseif videomode eq 1 xmode equ videomode xmax equ 160 ; right colomn just beyond screen for clipping xmin equ -160 ; left coloumn on screen, x's must be "and 0fff8h" ymax equ 200 ; lower row just beyond screen ymin equ -200 ; upper row on screen xactual equ 320 yactual equ 400 xcenter equ 160 ; screen center x,y for actual screen point (0,0) ycenter equ 200 ; make sure clipping still stays inside screen ratiox equ 320 ; apsect ratio for 3d conversion (zoom) ratioy equ 470 ; make x and y different to fine tune (draw circle) pages equ 2 elseif videomode eq 2 xmode equ videomode xmax equ 180 xmin equ -180 ymax equ 100 ymin equ -100 xactual equ 360 yactual equ 200 xcenter equ 180 ycenter equ 100 ratiox equ 320 ratioy equ 240 pages equ 3 elseif videomode eq 3 xmode equ videomode xmax equ 180 xmin equ -180 ymax equ 200 ymin equ -200 xactual equ 360 yactual equ 400 xcenter equ 180 ycenter equ 200 ratiox equ 300 ratioy equ 420 pages equ 1 elseif videomode eq 4 xmode equ videomode xmax equ 160 xmin equ -160 ymax equ 120 ymin equ -120 xactual equ 320 yactual equ 240 xcenter equ 160 ycenter equ 120 ratiox equ 300 ratioy equ 280 pages equ 3 elseif videomode eq 5 xmode equ videomode xmax equ 160 xmin equ -160 ymax equ 240 ymin equ -240 xactual equ 320 yactual equ 480 xcenter equ 160 ycenter equ 240 ratiox equ 260 ratioy equ 460 pages equ 1 elseif videomode eq 6 xmode equ videomode xmax equ 180 xmin equ -180 ymax equ 120 ymin equ -120 xactual equ 360 yactual equ 240 xcenter equ 180 ycenter equ 120 ratiox equ 320 ratioy equ 260 pages equ 3 elseif videomode eq 7 xmode equ videomode xmax equ 180 xmin equ -180 ymax equ 240 ymin equ -240 xactual equ 360 yactual equ 480 xcenter equ 180 ycenter equ 240 ratiox equ 280 ratioy equ 470 pages equ 1 ; if videomode = -1, custom configuration elseif videomode eq -1 xmode equ 1 xmax equ 9*16 xmin equ -9*16 ymax equ 140 ymin equ -140 xactual equ 320 yactual equ 400 xcenter equ 160 ycenter equ 200 ratiox equ 320 ratioy equ 464 pages equ 2 ; if videomode = -2, custom configuration elseif videomode eq -2 xmode equ 0 xmax equ 9*16 xmin equ -9*16 ymax equ 60 ymin equ -70 xactual equ 320 yactual equ 200 xcenter equ 160 ycenter equ 100 ratiox equ 320 ratioy equ 260 pages equ 2 endif ; ===== general xmode constants ===== false equ 0 true equ -1 nil equ 0 b equ byte ptr w equ word ptr d equ dword ptr o equ offset f equ far ptr s equ short ?x4 equ ?x3 equ ; ===== vga register values ===== vga_segment equ d 0a0000h ; vga memory segment attrib_ctrl equ 03c0h ; vga attribute controller gc_index equ 03ceh ; vga graphics controller sc_index equ 03c4h ; vga sequencer controller sc_data equ 03c5h ; vga sequencer data port crtc_index equ 03d4h ; vga crt controller crtc_data equ 03d5h ; vga crt controller data misc_output equ 03c2h ; vga misc register input_1 equ 03dah ; input status #1 register dac_write_addr equ 03c8h ; vga dac write addr register dac_read_addr equ 03c7h ; vga dac read addr register pel_data_reg equ 03c9h ; vga dac/pel data register r/w pixel_pan_reg equ 033h ; attrib index: pixel pan reg map_mask equ 002h ; sequ index: write map mask reg read_map equ 004h ; gc index: read map register start_disp_hi equ 00ch ; crtc index: display start hi start_disp_lo equ 00dh ; crtc index: display start lo map_mask_plane1 equ 00102h ; map register + plane 1 map_mask_plane2 equ 01102h ; map register + plane 1 all_planes_on equ 00f02h ; map register + all bit planes chain4_off equ 00604h ; chain 4 mode off async_reset equ 00100h ; (a)synchronous reset sequ_restart equ 00300h ; sequencer restart latches_on equ 00008h ; bit mask + data from latches latches_off equ 0ff08h ; bit mask + data from cpu vert_retrace equ 08h ; input_1: vertical retrace bit plane_bits equ 03h ; bits 0-1 of xpos = plane # all_planes equ 0fh ; all bit planes selected char_bits equ 0fh ; bits 0-3 of character data get_char_ptr equ 01130h ; vga bios func: get char set rom_8x8_lo equ 03h ; rom 8x8 char set lo pointer rom_8x8_hi equ 04h ; rom 8x8 char set hi pointer ; constants specific for these routines num_modes equ 8 ; # of mode x variations