// C Header File // Created 11/27/2002; 1:00:03 PMr static inline void MakeRandomFloorOrCeiling(unsigned short *addr, short ceiling); static inline void CycleCeilFloor(void); static inline void SetUpCeilingAndFloor(void); #ifndef __CEILFLOOR_H__ #define __CEILFLOOR_H__ static inline void MakeRandomFloorOrCeiling(unsigned short *addr, short ceiling) { register GameGlobals *ggg asm("a4") = gg; short a,b; long temp; long _FFFFFFFF = 0xFFFFFFFFL; for (a=0;a<6;a++) { unsigned long* dest = (long*)addr+a*48+(ceiling?0:24); for (b=0;b<24;b++,dest++) { switch(ceiling?ggg->ceilmode:ggg->floormode) { case WHITELIGHT: *dest |= rand_long(); break; case WHITEDARK: *(dest+288) |= rand_long(); break; case WHITEBLACK: temp = rand_long(); *dest |= temp; *(dest+288) |= temp; break; case LIGHT: *(dest) |= _FFFFFFFF; break; case LIGHTDARK: *(dest) |= _FFFFFFFF; temp = rand_long(); *dest ^= temp; *(dest+288) |= temp; break; case LIGHTBLACK: *dest |= _FFFFFFFF; *(dest+288) |= rand_long(); break; case DARK: *(dest+288) |= _FFFFFFFF; break; case DARKBLACK: *dest |= rand_long(); *(dest+288) |= _FFFFFFFF; break; case BLACK: *(dest) |= _FFFFFFFF; *(dest+288) |= _FFFFFFFF; break; } } } } static inline void CycleCeilFloor(void) { register GameGlobals *ggg asm("a4") = gg; fc->background = (unsigned short*)ggg->bg_img[ggg->bg_cycle]; ggg->bg_cycle++; if(ggg->bg_cycle==BGMAX) ggg->bg_cycle=0; } static inline void SetUpCeilingAndFloor(void) { register GameGlobals *ggg asm("a4") = gg; short a; for(a=0;abg_img[a],0x00,1152*2); if(ggg->ceilmode>=WHITE) { MakeRandomFloorOrCeiling((unsigned short*)ggg->bg_img[a],/*ceiling*/TRUE); } else { short i; for(i=0;i<12*96;i+=96) { if(ggg->ceilmode==DARKSKY) memcpy((BYTE*)ggg->bg_img[a]+i*2,(BYTE*)darksky+i,96); else if(ggg->ceilmode==LIGHTSKY) memcpy((BYTE*)ggg->bg_img[a]+i*2,(BYTE*)lightsky+i,96); else if(ggg->ceilmode==MEDSKY) memcpy((BYTE*)ggg->bg_img[a]+i*2,(BYTE*)medsky+i,96); else if(ggg->ceilmode==STARSKY) memcpy((BYTE*)ggg->bg_img[a]+i*2,(BYTE*)starsky+i,96); } } MakeRandomFloorOrCeiling((unsigned short*)ggg->bg_img[a],/*floor*/FALSE); } fc->background = (unsigned short*)ggg->bg_img[0]; } #endif