From 597af81b9704b1b5e5c6753071e6e0ee18b1a9d5 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Wed, 19 Apr 2017 11:43:37 -0500 Subject: [PATCH] p16 is being worked on a bunch by me wwww [16_ca needs huge amounts of work and I should remember what needs to be done soon][OpenVGMFile needs to be ported to 16_snd.c]going to port rest of code to borland c some time so we can use the core components of id engine here [going to add 16_us.c eventually but the debug system and CA_ PM_ and MM_ usage is priority now]older zcroll renamed to xcroll][zcroll is now the pre menu game loop system with PROPER data usage with CAMMPM] sd extended --- src/exmmtest.c | 12 +++---- src/imfplay.c | 25 +++++-------- src/lib/16_mm.c | 16 +++++++-- src/lib/16_sd.c | 2 -- src/lib/16_sd.h | 1 - src/lib/16_tail.c | 80 +++++++++++++++++++++++++++++++++-------- src/lib/16_tail.h | 6 ++-- src/lib/vgmsnd/vgmSnd.c | 4 +-- src/vgmtest.c | 9 ++--- src/xcroll.c | 14 -------- 10 files changed, 102 insertions(+), 67 deletions(-) diff --git a/src/exmmtest.c b/src/exmmtest.c index 010bb6ea..d668c2db 100755 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -193,8 +193,8 @@ main(int argc, char *argv[]) // save the palette modexPalSave(&gvar.video.dpal); modexFadeOff(4, &gvar.video.dpal); //modexPalBlack(); #else //NOVID - //printf("main()=%Fp start MM\n", *argv[0]); - MM_Startup(&gvar); + StartupCAMMPM(&gvar); +/* MM_Startup(&gvar); #ifdef __16_PM__ #ifdef __DEBUG_PM__ if(dbg_debugpm>0) @@ -206,9 +206,8 @@ main(int argc, char *argv[]) } #endif //__DEBUG_PM__ #endif //__16_PM__ + CA_Startup(&gvar);*/ #endif //elsed NOVID - - CA_Startup(&gvar); #ifdef PRINTBBDUMP //0000 PRINTBB; KEYP @@ -308,14 +307,15 @@ PRINTBB; KEYP #ifndef NOVID Shutdown16(&gvar); #else //novid - #ifdef __16_PM__ + ShutdownCAMMPM(&gvar); +/* #ifdef __16_PM__ #ifdef __DEBUG_PM__ if(dbg_debugpm>0) #endif //__DEBUG_PM__ PM_Shutdown(&gvar); #endif //__16_PM__ CA_Shutdown(&gvar); - MM_Shutdown(&gvar); + MM_Shutdown(&gvar);*/ #endif //NOVID IN_Shutdown(&gvar); printf("========================================\n"); diff --git a/src/imfplay.c b/src/imfplay.c index 169ff8b5..697b6d36 100755 --- a/src/imfplay.c +++ b/src/imfplay.c @@ -110,8 +110,7 @@ int imf_load_music(const char *path, global_game_variables_t *gvar) { PRINTBB; return 1; } -*/ -#ifndef LIBIRQ0 + // WARNING: subroutine call in interrupt handler. make sure you compile with -zu flag for large/compact memory models void interrupt irq0() { @@ -124,8 +123,7 @@ void interrupt irq0() p8259_OCW2(0,P8259_OCW2_NON_SPECIFIC_EOI); } } -#endif -/* + void imf_tick() { if (imf_delay_countdown == 0) { do { @@ -190,8 +188,7 @@ void adlib_shut_up() { void main(int argc,char **argv) { static global_game_variables_t gvar; - unsigned long tickrate = 700; - unsigned long ptick; + unsigned long ptick, tickrate = 700; int c; #ifdef __DEBUG_CA__ dbg_debugca=1; @@ -200,24 +197,22 @@ void main(int argc,char **argv) { dbg_debugmm=1; #endif ggvv=&gvar; - MM_Startup(&gvar); - PM_Startup(&gvar); PM_CheckMainMem(&gvar); PM_UnlockMainMem(&gvar); - CA_Startup(&gvar); + StartupCAMMPM(&gvar); printf("ADLIB FM test program IMFPLAY\n"); if (argc < 2) { printf("You must specify an IMF file to play\n"); - return; +// return; } SD_Initimf(&gvar); if (!SD_imf_load_music(argv[1], &gvar)) { printf("Failed to load IMF Music\n"); - return; +// return; } write_8254_system_timer(T8254_REF_CLOCK_HZ / tickrate); - old_irq0 = _dos_getvect(8);/*IRQ0*/ + old_irq0 = _dos_getvect(8); /*IRQ0*/ _dos_setvect(8,irq0); _cli(); @@ -253,8 +248,6 @@ void main(int argc,char **argv) { SD_adlib_shut_up(); shutdown_adlib(); _dos_setvect(8,old_irq0); - write_8254_system_timer(0);/* back to normal 18.2Hz */ - PM_Shutdown(&gvar); - CA_Shutdown(&gvar); - MM_Shutdown(&gvar); + write_8254_system_timer(0); /* back to normal 18.2Hz */ + ShutdownCAMMPM(&gvar); } diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 56600685..ee484c1a 100755 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -74,8 +74,10 @@ void (* XMSaddr) (void); // far pointer to XMS driver ============================================================================= */ #ifndef __16_PM__ +#if 0 static char *ParmStringsexmm[] = {"noems","noxms",""}; #endif +#endif /* ====================== = @@ -172,6 +174,7 @@ boolean MML_CheckForEMS(void) } #ifndef __16_PM__ +#if 0 /* ====================== = @@ -456,6 +459,7 @@ byte MM_MapXEMS(global_game_variables_t *gvar) return 0; } #endif +#endif //========================================================================== /* @@ -491,6 +495,7 @@ boolean MML_CheckForXMS(void) } #ifndef __16_PM__ +#if 0 /* ====================== = @@ -578,6 +583,7 @@ void MML_ShutdownXMS(global_game_variables_t *gvar) } } #endif +#endif //========================================================================== /* @@ -815,6 +821,7 @@ void MM_Startup(global_game_variables_t *gvar) gvar->mmi.mainmem = gvar->mmi.nearheap + gvar->mmi.farheap; #if !defined(__16_PM__)// && defined(__WATCOMC__) +#if 0 if(!dbg_debugpm) { // // detect EMS and allocate up to 64K at page frame @@ -856,6 +863,7 @@ goto xmsskip;//0000 } xmsskip: #endif +#endif // // allocate the misc buffer // @@ -889,6 +897,7 @@ void MM_Shutdown(global_game_variables_t *gvar) free(gvar->mm.nearheap);// printf(" near freed\n"); #endif #ifndef __16_PM__ +#if 0 #ifdef __DEBUG__ if(!dbg_debugpm) { #endif @@ -898,6 +907,7 @@ void MM_Shutdown(global_game_variables_t *gvar) } #endif #endif +#endif } //========================================================================== @@ -1526,7 +1536,7 @@ dword MM_TotalFree (global_game_variables_t *gvar) ===================== */ -void MM_Report_(global_game_variables_t *gvar) +void MM_Report_ (global_game_variables_t *gvar) { printf("========================================\n"); printf(" MM_Report_\n"); @@ -1537,7 +1547,7 @@ void MM_Report_(global_game_variables_t *gvar) printf(" %c%cEMM v%x.%x available\n", 0xC7, 0xC4, gvar->pm.emm.EMSVer>>4,gvar->pm.emm.EMSVer&0x0F); printf(" %c%ctotalEMSpages: %u ", 0xC7, 0xC4, gvar->pm.emm.totalEMSpages); printf("freeEMSpages: %u\n", gvar->pm.emm.freeEMSpages); printf(" %c%cEMSPageFrame: %04x\n", 0xC7, 0xC4, gvar->pm.emm.EMSPageFrame); - printf(" %c%cEMSmem: %lu or %luk\n", 0xD3, 0xC4, gvar->mmi.EMSmem, gvar->mmi.EMSmem/1204); + printf(" %c%cEMSmem: %lu\n", 0xD3, 0xC4, gvar->mmi.EMSmem); } if(MML_CheckForXMS()) { @@ -1545,7 +1555,7 @@ void MM_Report_(global_game_variables_t *gvar) printf(" %c%cXMS v%x.%x available\n", 0xC7, 0xC4, XMSVer>>8,XMSVer&0x0F); printf(" %c%cXMSDriver: %Fp\n", 0xC7, 0xC4, XMSDriver); printf(" %c%cXMSHandle: %04x\n", 0xC7, 0xC4, gvar->pm.xmm.XMSHandle); - printf(" %c%cXMSmem: %lu or %lukb\n", 0xD3, 0xC4, gvar->mmi.XMSmem, gvar->mmi.XMSmem/1024); + printf(" %c%cXMSmem: %lu\n", 0xD3, 0xC4, gvar->mmi.XMSmem); } printf(" %cConv. %u\n", 0xC9, gvar->pm.mm.MainPresent); DebugMemory_(gvar, 0); //printf("mainmem: %lu\n", gvar->mmi.mainmem); diff --git a/src/lib/16_sd.c b/src/lib/16_sd.c index 7e16839a..b82ff3e8 100755 --- a/src/lib/16_sd.c +++ b/src/lib/16_sd.c @@ -270,7 +270,6 @@ int SD_imf_load_music(const char *path, global_game_variables_t *gvar) return 1; } -#ifdef LIBIRQ0 struct glob_game_vars *ggvv; // WARNING: subroutine call in interrupt handler. make sure you compile with -zu flag for large/compact memory models void interrupt irq0() @@ -284,7 +283,6 @@ void interrupt irq0() p8259_OCW2(0,P8259_OCW2_NON_SPECIFIC_EOI); } } -#endif void SD_imf_tick(global_game_variables_t *gvar) { diff --git a/src/lib/16_sd.h b/src/lib/16_sd.h index 3690fe36..a9711b70 100755 --- a/src/lib/16_sd.h +++ b/src/lib/16_sd.h @@ -34,7 +34,6 @@ #define MAX_REGISTER 0xF5 #define ADLIB_FM_ADDRESS 0x388 /* adlib address/status register */ #define ADLIB_FM_DATA 0x389 /* adlib data register */ -#define LIBIRQ0 /* * FM Instrument definition for .SBI files - SoundBlaster instrument diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index 6b08e0fb..742e1132 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); +} + +//=========================================================================== + /* ==================== = diff --git a/src/lib/16_tail.h b/src/lib/16_tail.h index cfb100a4..93022c26 100755 --- a/src/lib/16_tail.h +++ b/src/lib/16_tail.h @@ -126,8 +126,10 @@ word modexPalOverscan(word col); #endif -void Shutdown16(global_game_variables_t *gvar); -void Startup16(global_game_variables_t *gvar); +void Shutdown16(global_game_variables_t *gvar), + Startup16(global_game_variables_t *gvar), + StartupCAMMPM (global_game_variables_t *gvar), + ShutdownCAMMPM (global_game_variables_t *gvar); void TL_DosLibStartup(global_game_variables_t *gvar); void TL_VidInit(global_game_variables_t *gvar); boolean FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar); diff --git a/src/lib/vgmsnd/vgmSnd.c b/src/lib/vgmsnd/vgmSnd.c index d41f2abe..30d3a383 100755 --- a/src/lib/vgmsnd/vgmSnd.c +++ b/src/lib/vgmsnd/vgmSnd.c @@ -217,11 +217,11 @@ UINT8 OpenVGMFile(const char* FileName, VGM_FILE* vgmFile, global_game_variables void FreeVGMFile(VGM_FILE* vgmFile, global_game_variables_t *gvar) { //if(vgmFile->data){ free(vgmFile->data); vgmFile->data = NULL; } -// if(vgmFile->data) free(vgmFile->data); MM_FreePtr(MEMPTR gvar->ca.audiosegs[0], gvar); + if(vgmFile->data) free(vgmFile->data); vgmFile->dataLen = 0; - return; +// return; } diff --git a/src/vgmtest.c b/src/vgmtest.c index ef8d242d..6a53d65b 100755 --- a/src/vgmtest.c +++ b/src/vgmtest.c @@ -26,7 +26,6 @@ #include "src/lib/vgmsnd/vgmSnd.h" #include "src/lib/16_sd.h" //#include "src/lib/doslib/adlib.h" -#include "src/lib/16_in.h" #include "src/lib/16_tail.h" #include "src/lib/16_pm.h" #include "src/lib/16_ca.h" @@ -61,22 +60,18 @@ main(int argc, char *argv[]) if(argv[1]) strcpy(bakapee, argv[1]); MM_Startup(&gvar); -// PM_Startup(&gvar); PM_CheckMainMem(&gvar); PM_UnlockMainMem(&gvar); +// PM_Startup(&gvar); PM_UnlockMainMem(&gvar); // CA_Startup(&gvar); printf("%x\n", OpenVGMFile(bakapee, &pee[0], &gvar)); -// IN_Startup(); IN_Default(0,&gvar.player[0],ctrl_Keyboard1); InitEngine(); PlayMusic(&pee[0]); -// while(!IN_KeyDown(sc_Escape)) while(!kbhit()) { -// IN_ReadControl(0,&gvar.player); UpdateSoundEngine(); } StopMusic(); - FreeVGMFile(&pee[0], &gvar); + FreeVGMFile(&pee[0], &gvar); printf("ok\n"); DeinitEngine(); - //IN_Shutdown(); // PM_Shutdown(&gvar); // CA_Shutdown(&gvar); MM_Shutdown(&gvar); diff --git a/src/xcroll.c b/src/xcroll.c index 542301c1..d32cb9d7 100755 --- a/src/xcroll.c +++ b/src/xcroll.c @@ -53,28 +53,14 @@ void main(int argc, char *argv[]) { static global_game_variables_t gvar; struct glob_game_vars *ggvv; -// sword bakapee; -// if(argv[1]) bakapee = atoi(argv[1]); -// else bakapee = 1; - //char *bakapee1,*bakapee1p; char bakapee1[64] = FILENAME_1; char bakapee1p[64] = FILENAME_1P; Startup16(&gvar); -// bakapee1=mALLoc(64); -// bakapee1p=mALLoc(64); ggvv=&gvar; if (argc >= 2) { -/* if (argc < 2) { - //fprintf(stderr,"drawvrl \n palette file optional\n"); - bakapee1 = FILENAME_1; - bakapee1p = FILENAME_1P; - - }else{ - if(argv[1]) bakapee1 = argv[1]; - if(argv[2]) bakapee1p = argv[2];*/ if(argv[1]){ strcpy(bakapee1, argv[1]); if(argv[2]) strcpy(bakapee1p, argv[2]); } } -- 2.39.2