X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_tail.c;h=4d6040cb640fcbb51a9907bf805aeb7998b76c3d;hb=adefd71cb8a3e70da10523e4eb97e442a655a6cd;hp=ec7023c8e47c0fba9c013f629551f88a693dad8e;hpb=7092caf49f8feaee14bba0a140f1974bd57d3228;p=16.git diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index ec7023c8..4d6040cb 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -36,25 +36,19 @@ ========================== */ -void Startup16(global_game_variables_t *gvar) +void Startup16 (global_game_variables_t *gvar) { gvar->video.VL_Started=0; TL_VidInit(gvar); gvar->mm.mmstarted=0; gvar->pm.PMStarted=0; - MM_Startup(gvar); + StartupCAMMPM(gvar); #ifdef __WATCOMC__ #ifdef __DEBUG_InputMgr__ if(!dbg_nointest) #endif IN_Startup(gvar); #endif -#ifdef __16_PM__ - PM_Startup(gvar); - PM_CheckMainMem(gvar); - PM_UnlockMainMem(gvar); -#endif - CA_Startup(gvar); } //=========================================================================== @@ -69,19 +63,15 @@ void Startup16(global_game_variables_t *gvar) ========================== */ -void Shutdown16(global_game_variables_t *gvar) +void Shutdown16 (global_game_variables_t *gvar) { -#ifdef __16_PM__ - PM_Shutdown(gvar); -#endif #ifdef __WATCOMC__ #ifdef __DEBUG_InputMgr__ if(!dbg_nointest) #endif IN_Shutdown(gvar); #endif - CA_Shutdown(gvar); - MM_Shutdown(gvar); + ShutdownCAMMPM(gvar); #ifdef __WATCOMC__ if(gvar->video.VL_Started) VL_Shutdown (gvar);//VGAmodeX(0, 1, gvar); @@ -90,6 +80,68 @@ void Shutdown16(global_game_variables_t *gvar) //=========================================================================== +/* +========================== += += StartupCAMMPM += +========================== +*/ + +void StartupCAMMPM (global_game_variables_t *gvar) +{ +/* + MM_Startup (); // so the signon screen can be freed + + SignonScreen (); + + VW_Startup (); + IN_Startup (); + PM_Startup (); + PM_UnlockMainMem (); + SD_Startup (); + CA_Startup (); + US_Startup (); +*/ + MM_Startup(gvar); +#ifdef __16_PM__ + PM_Startup(gvar); +//???? PM_CheckMainMem(gvar); + PM_UnlockMainMem(gvar); +#endif + CA_Startup(gvar); +} + +//=========================================================================== + +/* +========================== += += ShutdownCAMMPM += +========================== +*/ + +void ShutdownCAMMPM (global_game_variables_t *gvar) +{ +/* + US_Shutdown (); + SD_Shutdown (); + PM_Shutdown (); + IN_Shutdown (); + VW_Shutdown (); + CA_Shutdown (); + MM_Shutdown () +*/ +#ifdef __16_PM__ + PM_Shutdown(gvar); +#endif + CA_Shutdown(gvar); + MM_Shutdown(gvar); +} + +//=========================================================================== + /* ==================== = @@ -97,25 +149,25 @@ void Shutdown16(global_game_variables_t *gvar) = ==================== */ - -/*void ReadConfig(void) +#if 0 +void ReadConfig(void) { int file; - SDMode sd; - SMMode sm; - SDSMode sds; +// SDMode sd; +// SMMode sm; +// SDSMode sds; - if ( (file = open(configname,O_BINARY | O_RDONLY)) != -1) + if ( (file = open(CONFIGNAME,O_BINARY | O_RDONLY)) != -1) { // // valid config file // - read(file,Scores,sizeof(HighScore) * MaxScores); +// read(file,Scores,sizeof(HighScore) * MaxScores); - read(file,&sd,sizeof(sd)); - read(file,&sm,sizeof(sm)); - read(file,&sds,sizeof(sds)); +// read(file,&sd,sizeof(sd)); +// read(file,&sm,sizeof(sm)); +// read(file,&sds,sizeof(sds)); read(file,&mouseenabled,sizeof(mouseenabled)); read(file,&joystickenabled,sizeof(joystickenabled)); @@ -133,7 +185,7 @@ void Shutdown16(global_game_variables_t *gvar) close(file); - if (sd == sdm_AdLib && !AdLibPresent && !SoundBlasterPresent) + /*if (sd == sdm_AdLib && !AdLibPresent && !SoundBlasterPresent) { sd = sdm_PC; sd = smm_Off; @@ -141,7 +193,7 @@ void Shutdown16(global_game_variables_t *gvar) if ((sds == sds_SoundBlaster && !SoundBlasterPresent) || (sds == sds_SoundSource && !SoundSourcePresent)) - sds = sds_Off; + sds = sds_Off;*/ if (!MousePresent) mouseenabled = false; @@ -156,7 +208,7 @@ void Shutdown16(global_game_variables_t *gvar) // // no config file, so select by hardware // - if (SoundBlasterPresent || AdLibPresent) +/* if (SoundBlasterPresent || AdLibPresent) { sd = sdm_AdLib; sm = smm_AdLib; @@ -172,7 +224,7 @@ void Shutdown16(global_game_variables_t *gvar) else if (SoundSourcePresent) sds = sds_SoundSource; else - sds = sds_Off; + sds = sds_Off;*/ if (MousePresent) mouseenabled = true; @@ -189,7 +241,7 @@ void Shutdown16(global_game_variables_t *gvar) SD_SetMusicMode (sm); SD_SetSoundMode (sd); SD_SetDigiDevice (sds); -}*/ +} /* @@ -200,20 +252,20 @@ void Shutdown16(global_game_variables_t *gvar) ==================== */ -/*void WriteConfig(void) +void WriteConfig(void) { int file; - file = open(configname,O_CREAT | O_BINARY | O_WRONLY, + file = open(CONFIGNAME,O_CREAT | O_BINARY | O_WRONLY, S_IREAD | S_IWRITE | S_IFREG); if (file != -1) { - write(file,Scores,sizeof(HighScore) * MaxScores); +// write(file,Scores,sizeof(HighScore) * MaxScores); - write(file,&SoundMode,sizeof(SoundMode)); - write(file,&MusicMode,sizeof(MusicMode)); - write(file,&DigiMode,sizeof(DigiMode)); +// write(file,&SoundMode,sizeof(SoundMode)); +// write(file,&MusicMode,sizeof(MusicMode)); +// write(file,&DigiMode,sizeof(DigiMode)); write(file,&mouseenabled,sizeof(mouseenabled)); write(file,&joystickenabled,sizeof(joystickenabled)); @@ -226,13 +278,13 @@ void Shutdown16(global_game_variables_t *gvar) write(file,&buttonmouse,sizeof(buttonmouse)); write(file,&buttonjoy,sizeof(buttonjoy)); - write(file,&viewsize,sizeof(viewsize)); +// write(file,&viewsize,sizeof(viewsize)); write(file,&mouseadjustment,sizeof(mouseadjustment)); close(file); } -}*/ - +} +#endif //=========================================================================== /* @@ -243,27 +295,38 @@ void Shutdown16(global_game_variables_t *gvar) =================== */ -#define PIXPERFRAME 1600 - boolean FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar) { word p,pixperframe; unsigned drawofs,pagedelta; byte mask,maskb[8] = {1,2,4,8}; - unsigned x,y,frame ,esorig,q; - dword rndval; - word screenseg = SCREENSEG; + unsigned x,y,frame; + long rndval; + word screenseg; +#ifdef __WATCOMC__ + unsigned esorig;//,q; +#endif pagedelta = dest-source; - rndval = 1; esorig = 0; q = 16; + rndval = 1; +#ifdef __WATCOMC__ + esorig = 0;// q = 16; +#endif x = y = 0; - pixperframe = 76800/(dword)frames; + pixperframe = (dword)(gvar->video.page[0].width*gvar->video.page[0].height)/frames; + screenseg = SCREENSEG; IN_StartAck (gvar); +// modexClearRegion(&(gvar->video.page[0]), 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 0); +// modexClearRegion(&(gvar->video.page[1]), 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 15); + +#ifdef __WATCOMC__ __asm { mov [esorig],es } +#endif +// TimeCount= frame=0; do // while (1) { @@ -308,22 +371,19 @@ noxor: mov [WORD PTR rndval+2],dx } - if ((x>width || y>height) && (xwidth || y>height) +// if ((x>width || y>height) && (xvideo.ofs.ylookup[y]) + (x>>2); +// drawofs = source+(gvar->video.ofs.ylookup[y]) + (x>>2); drawofs = source+(y*gvar->video.page[0].stridew) + (x>>2); // // copy one pixel // -//* mask = x&3; VGAREADMAP(mask); mask = maskb[mask]; VGAMAPMASK(mask); -//*/ -// modexputPixel(&(gvar->video.page[0]), x, y, rand()%8); -// VL_Plot (x, y, 15, &(gvar->video.ofs)); __asm { mov di,[drawofs] @@ -337,15 +397,81 @@ noxor: } frame++; //-- while (TimeCountca.audiosegs[STARTMUSIC + i]) + { + MM_SetPurge(MEMPTRCONV gvar->ca.audiosegs[STARTMUSIC + i],3, gvar); + MM_SetLock(MEMPTRCONV gvar->ca.audiosegs[STARTMUSIC + i],false, gvar); + } +} + +//========================================================================== + + +/* +================= += += StartMusic += +================= +*/ + +void TL_StartMusic(global_game_variables_t *gvar) +{ + musicnames chunk; + + SD_MusicOff(); + chunk = 0;//++++songs[gamestate.mapon+gamestate.episode*10]; + +// if ((chunk == -1) || (MusicMode != smm_AdLib)) +//DEBUG control panel return; + +//++++ MM_BombOnError (false,gvar); +//++++ CA_CacheAudioChunk(STARTMUSIC + chunk, gvar); +//++++ MM_BombOnError (true,gvar); +//++++ if (gvar->mm.mmerror) +//++++ gvar->mm.mmerror = false; +//++++ else +//++++ { + MM_SetLock(MEMPTRCONV gvar->ca.audiosegs[STARTMUSIC + chunk],true, gvar); + SD_StartMusic((MusicGroup far *)gvar->ca.audiosegs[STARTMUSIC + chunk]); +//++++ } +} + /* ================== = @@ -387,6 +513,128 @@ void DebugMemory_(global_game_variables_t *gvar, boolean q) // if(q) MM_ShowMemory (gvar); } +/* +=================== += += TestSprites += +=================== +*/ + +#if 0 +#define DISPWIDTH 110 +#define TEXTWIDTH 40 +void TestSprites(void) +{ + int hx,hy,sprite,oldsprite,bottomy,topx,shift; + spritetabletype far *spr; + spritetype _seg *block; + unsigned mem,scan; + + + VW_FixRefreshBuffer (); + US_CenterWindow (30,17); + + US_CPrint ("Sprite Test"); + US_CPrint ("-----------"); + + hy=PrintY; + hx=(PrintX+56)&(~7); + topx = hx+TEXTWIDTH; + + US_Print ("Chunk:\nWidth:\nHeight:\nOrgx:\nOrgy:\nXl:\nYl:\nXh:\nYh:\n" + "Shifts:\nMem:\n"); + + bottomy = PrintY; + + sprite = STARTSPRITES; + shift = 0; + + do + { + if (sprite>=STARTTILE8) + sprite = STARTTILE8-1; + else if (spritewidth);US_Print ("\n");PrintX=hx; + US_PrintUnsigned (spr->height);US_Print ("\n");PrintX=hx; + US_PrintSigned (spr->orgx);US_Print ("\n");PrintX=hx; + US_PrintSigned (spr->orgy);US_Print ("\n");PrintX=hx; + US_PrintSigned (spr->xl);US_Print ("\n");PrintX=hx; + US_PrintSigned (spr->yl);US_Print ("\n");PrintX=hx; + US_PrintSigned (spr->xh);US_Print ("\n");PrintX=hx; + US_PrintSigned (spr->yh);US_Print ("\n");PrintX=hx; + US_PrintSigned (spr->shifts);US_Print ("\n");PrintX=hx; + if (!block) + { + US_Print ("-----"); + } + else + { + mem = block->sourceoffset[3]+5*block->planesize[3]; + mem = (mem+15)&(~15); // round to paragraphs + US_PrintUnsigned (mem); + } + + oldsprite = sprite; + do + { + // + // draw the current shift, then wait for key + // + VWB_Bar(topx,hy,DISPWIDTH,bottomy-hy,WHITE); + if (block) + { + PrintX = topx; + PrintY = hy; + US_Print ("Shift:"); + US_PrintUnsigned (shift); + US_Print ("\n"); + VWB_DrawSprite (topx+16+shift*2,PrintY,sprite); + } + + VW_UpdateScreen(); + + scan = IN_WaitForKey (); + + switch (scan) + { + case sc_UpArrow: + sprite++; + break; + case sc_DownArrow: + sprite--; + break; + case sc_LeftArrow: + if (--shift == -1) + shift = 3; + break; + case sc_RightArrow: + if (++shift == 4) + shift = 0; + break; + case sc_Escape: + return; + } + + } while (sprite == oldsprite); + + } while (1); + + +} + +#endif + /* ========================== = @@ -461,10 +709,7 @@ void Quit (global_game_variables_t *gvar, char *error) //=========================================================================== -#ifndef __WATCOMC__ -char global_temp_status_text[512]; -char global_temp_status_text2[512]; -#else +#ifdef __WATCOMC__ // // for mary4 (XT) // this is from my XT's BIOS