X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_tail.c;h=7cfd84e10fd109dd27606012d5ff8d9cee230649;hb=63ef4817fa4ce338b5d8d19cee7ffe7842661456;hp=6d66ec1c0e39d7f85d904e1fc48f9c69a78f198f;hpb=14c5716ee17d95f1c730de73ed462f95e8b41692;p=16.git diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index 6d66ec1c..7cfd84e1 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -24,6 +24,7 @@ */ #include "src/lib/16_tail.h" +#include "src/lib/16text.h" /* ========================== @@ -37,6 +38,9 @@ void Startup16(global_game_variables_t *gvar) { +#ifdef __WATCOMC__ + start_timer(gvar); + // DOSLIB: check our environment probe_dos(); @@ -58,14 +62,28 @@ void Startup16(global_game_variables_t *gvar) return; } + if (_DEBUG_INIT() == 0) { +#ifdef DEBUGSERIAL + //printf("WARNING: Failed to initialize DEBUG output\n"); +#endif + } + _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log + _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U); + + textInit(); +#endif gvar->mm.mmstarted=0; gvar->pm.PMStarted=0; MM_Startup(gvar); +#ifdef __WATCOMC__ +#ifdef __DEBUG_InputMgr__ + if(!dbg_nointest) +#endif IN_Startup(gvar); +#endif PM_Startup(gvar); PM_UnlockMainMem(gvar); CA_Startup(gvar); - } //=========================================================================== @@ -83,12 +101,162 @@ void Startup16(global_game_variables_t *gvar) void Shutdown16(global_game_variables_t *gvar) { PM_Shutdown(gvar); +#ifdef __WATCOMC__ +#ifdef __DEBUG_InputMgr__ + if(!dbg_nointest) +#endif IN_Shutdown(gvar); +#endif CA_Shutdown(gvar); MM_Shutdown(gvar); } +//=========================================================================== + +/* +==================== += += ReadConfig += +==================== +*/ + +/*void ReadConfig(void) +{ + int file; + SDMode sd; + SMMode sm; + SDSMode sds; + + + if ( (file = open(configname,O_BINARY | O_RDONLY)) != -1) + { + // + // valid config file + // + read(file,Scores,sizeof(HighScore) * MaxScores); + + 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)); + read(file,&joypadenabled,sizeof(joypadenabled)); + read(file,&joystickprogressive,sizeof(joystickprogressive)); + read(file,&joystickport,sizeof(joystickport)); + + read(file,&dirscan,sizeof(dirscan)); + read(file,&buttonscan,sizeof(buttonscan)); + read(file,&buttonmouse,sizeof(buttonmouse)); + read(file,&buttonjoy,sizeof(buttonjoy)); + + read(file,&viewsize,sizeof(viewsize)); + read(file,&mouseadjustment,sizeof(mouseadjustment)); + + close(file); + + if (sd == sdm_AdLib && !AdLibPresent && !SoundBlasterPresent) + { + sd = sdm_PC; + sd = smm_Off; + } + + if ((sds == sds_SoundBlaster && !SoundBlasterPresent) || + (sds == sds_SoundSource && !SoundSourcePresent)) + sds = sds_Off; + + if (!MousePresent) + mouseenabled = false; + if (!JoysPresent[joystickport]) + joystickenabled = false; + + MainMenu[6].active=1; + MainItems.curpos=0; + } + else + { + // + // no config file, so select by hardware + // + if (SoundBlasterPresent || AdLibPresent) + { + sd = sdm_AdLib; + sm = smm_AdLib; + } + else + { + sd = sdm_PC; + sm = smm_Off; + } + + if (SoundBlasterPresent) + sds = sds_SoundBlaster; + else if (SoundSourcePresent) + sds = sds_SoundSource; + else + sds = sds_Off; + + if (MousePresent) + mouseenabled = true; + + joystickenabled = false; + joypadenabled = false; + joystickport = 0; + joystickprogressive = false; + + viewsize = 15; + mouseadjustment=5; + } + + SD_SetMusicMode (sm); + SD_SetSoundMode (sd); + SD_SetDigiDevice (sds); +}*/ + + +/* +==================== += += WriteConfig += +==================== +*/ + +/*void WriteConfig(void) +{ + int file; + + 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,&SoundMode,sizeof(SoundMode)); + write(file,&MusicMode,sizeof(MusicMode)); + write(file,&DigiMode,sizeof(DigiMode)); + + write(file,&mouseenabled,sizeof(mouseenabled)); + write(file,&joystickenabled,sizeof(joystickenabled)); + write(file,&joypadenabled,sizeof(joypadenabled)); + write(file,&joystickprogressive,sizeof(joystickprogressive)); + write(file,&joystickport,sizeof(joystickport)); + + write(file,&dirscan,sizeof(dirscan)); + write(file,&buttonscan,sizeof(buttonscan)); + write(file,&buttonmouse,sizeof(buttonmouse)); + write(file,&buttonjoy,sizeof(buttonjoy)); + + write(file,&viewsize,sizeof(viewsize)); + write(file,&mouseadjustment,sizeof(mouseadjustment)); + + close(file); + } +}*/ + //=========================================================================== /* @@ -127,11 +295,26 @@ void DebugMemory_(global_game_variables_t *gvar, boolean q) printf("With purge:"); if(q) printf(" "); printf("%uk\n", MM_TotalFree(gvar)/1024); if(q) printf("------------\n"); #ifdef __WATCOMC__ - IN_Ack (); + //IN_Ack (); #endif if(q) MM_ShowMemory (gvar); } -#ifdef __WATCOMC__ + +/* +========================== += += ClearMemory += +========================== +*/ + +void ClearMemory (global_game_variables_t *gvar) +{ + PM_UnlockMainMem(gvar); + //snd + MM_SortMem (gvar); +} + /* ========================== = @@ -140,46 +323,43 @@ void DebugMemory_(global_game_variables_t *gvar, boolean q) ========================== */ -void Quit (char *error) +void Quit (global_game_variables_t *gvar, char *error) { - unsigned finscreen; - memptr screen; - union REGS in, out; + //unsigned finscreen; + memptr screen=0; - //ClearMemory (); + ClearMemory (gvar); if (!*error) { - //WriteConfig (); +// #ifndef JAPAN +// CA_CacheGrChunk (ORDERSCREEN); +// screen = grsegs[ORDERSCREEN]; +// #endif +// WriteConfig (); } else { - //CA_CacheGrChunk (ERRORSCREEN); - //screen = grsegs[ERRORSCREEN]; +// CA_CacheGrChunk (ERRORSCREEN); +// screen = grsegs[ERRORSCREEN]; } - - //ShutdownId (); - IN_Shutdown(); - //modexLeave(); - in.h.ah = 0x00; - in.h.al = 0x3; - int86(0x10, &in, &out); + Shutdown16(gvar); if (error && *error) { - //movedata ((unsigned)screen,7,0xb800,0,7*160); - //gotoxy (10,4); - fprintf(stderr, "%s\n", error); - //gotoxy (1,8); - exit(1); + movedata((unsigned)screen,7,0xb800,0,7*160); + gotoxy (10,4); + fprintf(stderr, "%s\n", error); + gotoxy (1,8); + exit(1); } else if (!error || !(*error)) { - //clrscr(); - //#ifndef JAPAN + clrscr(); +#ifndef JAPAN movedata ((unsigned)screen,7,0xb800,0,4000); - //gotoxy(1,24); - //#endif + gotoxy(1,24); +#endif //asm mov bh,0 //asm mov dh,23 // row //asm mov dl,0 // collumn @@ -189,6 +369,111 @@ void Quit (char *error) exit(0); } -#endif //=========================================================================== + +void walktypeinfo(player_t *player, word pn) +{ + switch(player[pn].walktype) + { + case 0: //bump + sprintf(global_temp_status_text, "%s", "b"); + break; + case 1: //walk no scroll + sprintf(global_temp_status_text, "%s", "w"); + break; + case 2: //scrolling walk + sprintf(global_temp_status_text, "%s", "s"); + break; + } +} + +// +// for mary4 (XT) +// this is from my XT's BIOS +// http://www.phatcode.net/downloads.php?id=101 +// +void turboXT(byte bakapee) +{ + __asm { + push ax + push bx + push cx + in al, 61h ; Read equipment flags + xor al, bakapee ; toggle speed + out 61h, al ; Write new flags back + + mov bx, 0F89h ; low pitch blip + and al, 4 ; Is turbo mode set? + jz @@do_beep + mov bx, 52Eh ; high pitch blip + +@@do_beep: + mov al, 10110110b ; Timer IC 8253 square waves + out 43h, al ; channel 2, speaker + mov ax, bx + out 42h, al ; send low order + mov al, ah ; load high order + out 42h, al ; send high order + in al, 61h ; Read IC 8255 machine status + push ax + or al, 00000011b + out 61h, al ; Turn speaker on + mov cx, 2000h +@@delay: + loop @@delay + pop ax + out 61h, al ; Turn speaker off + pop cx + pop bx + pop ax + } +} + +const char *nibble_to_binary(nibble x) +{ + static char b[9]; + int z; + + b[0] = '\0'; + for (z = 8; z > 0; z >>= 1) + { + strcat(b, ((x & z) == z) ? "1" : "0"); + } + return b; +} + +const char *boolean_to_binary(boolean x) +{ + static char b[9]; + int z; + + b[0] = '\0'; + for (z = 1; z > 0; z >>= 1) + { + strcat(b, ((x & z) == z) ? "1" : "0"); + } + return b; +} + +void nibbletest() +{ + nibble pee; + printf("nibbletest\n"); + /* nibble to binary string */ + for(pee=0;pee<18;pee++) + printf(" %u %s\n", pee, nibble_to_binary(pee)); + printf(" sizeof(nibble)=%s\n", nibble_to_binary(sizeof(nibble))); + printf("end of nibble test\n"); +} + +void booleantest() +{ + boolean pee; + printf("booleantest\n"); + /* boolean to binary string */ + for(pee=0;pee<4;pee++) + printf(" %u %s\n", pee, boolean_to_binary(pee)); + printf(" sizeof(boolean)=%s\n", boolean_to_binary(sizeof(boolean))); + printf("end of boolean test\n"); +}