// save the palette\r
modexPalSave(&gvar.video.dpal); modexFadeOff(4, &gvar.video.dpal); //modexPalBlack();\r
#else //NOVID\r
- //printf("main()=%Fp start MM\n", *argv[0]);\r
- MM_Startup(&gvar);\r
+ StartupCAMMPM(&gvar);\r
+/* MM_Startup(&gvar);\r
#ifdef __16_PM__\r
#ifdef __DEBUG_PM__\r
if(dbg_debugpm>0)\r
}\r
#endif //__DEBUG_PM__\r
#endif //__16_PM__\r
+ CA_Startup(&gvar);*/\r
#endif //elsed NOVID\r
-\r
- CA_Startup(&gvar);\r
#ifdef PRINTBBDUMP\r
//0000\r
PRINTBB; KEYP\r
#ifndef NOVID\r
Shutdown16(&gvar);\r
#else //novid\r
- #ifdef __16_PM__\r
+ ShutdownCAMMPM(&gvar);\r
+/* #ifdef __16_PM__\r
#ifdef __DEBUG_PM__\r
if(dbg_debugpm>0)\r
#endif //__DEBUG_PM__\r
PM_Shutdown(&gvar);\r
#endif //__16_PM__\r
CA_Shutdown(&gvar);\r
- MM_Shutdown(&gvar);\r
+ MM_Shutdown(&gvar);*/\r
#endif //NOVID\r
IN_Shutdown(&gvar);\r
printf("========================================\n");\r
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()
{
p8259_OCW2(0,P8259_OCW2_NON_SPECIFIC_EOI);
}
}
-#endif
-/*
+
void imf_tick() {
if (imf_delay_countdown == 0) {
do {
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;
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();
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);
}
=============================================================================\r
*/\r
#ifndef __16_PM__\r
+#if 0\r
static char *ParmStringsexmm[] = {"noems","noxms",""};\r
#endif\r
+#endif\r
/*\r
======================\r
=\r
}\r
\r
#ifndef __16_PM__\r
+#if 0\r
/*\r
======================\r
=\r
return 0;\r
}\r
#endif\r
+#endif\r
//==========================================================================\r
\r
/*\r
}\r
\r
#ifndef __16_PM__\r
+#if 0\r
/*\r
======================\r
=\r
}\r
}\r
#endif\r
+#endif\r
//==========================================================================\r
\r
/*\r
gvar->mmi.mainmem = gvar->mmi.nearheap + gvar->mmi.farheap;\r
\r
#if !defined(__16_PM__)// && defined(__WATCOMC__)\r
+#if 0\r
if(!dbg_debugpm) {\r
//\r
// detect EMS and allocate up to 64K at page frame\r
}\r
xmsskip:\r
#endif\r
+#endif\r
//\r
// allocate the misc buffer\r
//\r
free(gvar->mm.nearheap);// printf(" near freed\n");\r
#endif\r
#ifndef __16_PM__\r
+#if 0\r
#ifdef __DEBUG__\r
if(!dbg_debugpm) {\r
#endif\r
}\r
#endif\r
#endif\r
+#endif\r
}\r
\r
//==========================================================================\r
=====================\r
*/\r
\r
-void MM_Report_(global_game_variables_t *gvar)\r
+void MM_Report_ (global_game_variables_t *gvar)\r
{\r
printf("========================================\n");\r
printf(" MM_Report_\n");\r
printf(" %c%cEMM v%x.%x available\n", 0xC7, 0xC4, gvar->pm.emm.EMSVer>>4,gvar->pm.emm.EMSVer&0x0F);\r
printf(" %c%ctotalEMSpages: %u ", 0xC7, 0xC4, gvar->pm.emm.totalEMSpages); printf("freeEMSpages: %u\n", gvar->pm.emm.freeEMSpages);\r
printf(" %c%cEMSPageFrame: %04x\n", 0xC7, 0xC4, gvar->pm.emm.EMSPageFrame);\r
- printf(" %c%cEMSmem: %lu or %luk\n", 0xD3, 0xC4, gvar->mmi.EMSmem, gvar->mmi.EMSmem/1204);\r
+ printf(" %c%cEMSmem: %lu\n", 0xD3, 0xC4, gvar->mmi.EMSmem);\r
}\r
if(MML_CheckForXMS())\r
{\r
printf(" %c%cXMS v%x.%x available\n", 0xC7, 0xC4, XMSVer>>8,XMSVer&0x0F);\r
printf(" %c%cXMSDriver: %Fp\n", 0xC7, 0xC4, XMSDriver);\r
printf(" %c%cXMSHandle: %04x\n", 0xC7, 0xC4, gvar->pm.xmm.XMSHandle);\r
- printf(" %c%cXMSmem: %lu or %lukb\n", 0xD3, 0xC4, gvar->mmi.XMSmem, gvar->mmi.XMSmem/1024);\r
+ printf(" %c%cXMSmem: %lu\n", 0xD3, 0xC4, gvar->mmi.XMSmem);\r
}\r
printf(" %cConv. %u\n", 0xC9, gvar->pm.mm.MainPresent); DebugMemory_(gvar, 0);\r
//printf("mainmem: %lu\n", gvar->mmi.mainmem);\r
return 1;\r
}\r
\r
-#ifdef LIBIRQ0\r
struct glob_game_vars *ggvv;\r
// WARNING: subroutine call in interrupt handler. make sure you compile with -zu flag for large/compact memory models\r
void interrupt irq0()\r
p8259_OCW2(0,P8259_OCW2_NON_SPECIFIC_EOI);\r
}\r
}\r
-#endif\r
\r
void SD_imf_tick(global_game_variables_t *gvar)\r
{\r
#define MAX_REGISTER 0xF5\r
#define ADLIB_FM_ADDRESS 0x388 /* adlib address/status register */\r
#define ADLIB_FM_DATA 0x389 /* adlib data register */\r
-#define LIBIRQ0\r
\r
/*\r
* FM Instrument definition for .SBI files - SoundBlaster instrument\r
==========================\r
*/\r
\r
-void Startup16(global_game_variables_t *gvar)\r
+void Startup16 (global_game_variables_t *gvar)\r
{\r
gvar->video.VL_Started=0;\r
TL_VidInit(gvar);\r
gvar->mm.mmstarted=0;\r
gvar->pm.PMStarted=0;\r
- MM_Startup(gvar);\r
+ StartupCAMMPM(gvar);\r
#ifdef __WATCOMC__\r
#ifdef __DEBUG_InputMgr__\r
if(!dbg_nointest)\r
#endif\r
IN_Startup(gvar);\r
#endif\r
-#ifdef __16_PM__\r
- PM_Startup(gvar);\r
- PM_CheckMainMem(gvar);\r
- PM_UnlockMainMem(gvar);\r
-#endif\r
- CA_Startup(gvar);\r
}\r
\r
//===========================================================================\r
==========================\r
*/\r
\r
-void Shutdown16(global_game_variables_t *gvar)\r
+void Shutdown16 (global_game_variables_t *gvar)\r
{\r
-#ifdef __16_PM__\r
- PM_Shutdown(gvar);\r
-#endif\r
#ifdef __WATCOMC__\r
#ifdef __DEBUG_InputMgr__\r
if(!dbg_nointest)\r
#endif\r
IN_Shutdown(gvar);\r
#endif\r
- CA_Shutdown(gvar);\r
- MM_Shutdown(gvar);\r
+ ShutdownCAMMPM(gvar);\r
#ifdef __WATCOMC__\r
if(gvar->video.VL_Started)\r
VL_Shutdown (gvar);//VGAmodeX(0, 1, gvar);\r
\r
//===========================================================================\r
\r
+/*\r
+==========================\r
+=\r
+= StartupCAMMPM\r
+=\r
+==========================\r
+*/\r
+\r
+void StartupCAMMPM (global_game_variables_t *gvar)\r
+{\r
+/*\r
+ MM_Startup (); // so the signon screen can be freed\r
+\r
+ SignonScreen ();\r
+\r
+ VW_Startup ();\r
+ IN_Startup ();\r
+ PM_Startup ();\r
+ PM_UnlockMainMem ();\r
+ SD_Startup ();\r
+ CA_Startup ();\r
+ US_Startup ();\r
+*/\r
+ MM_Startup(gvar);\r
+#ifdef __16_PM__\r
+ PM_Startup(gvar);\r
+//???? PM_CheckMainMem(gvar);\r
+ PM_UnlockMainMem(gvar);\r
+#endif\r
+ CA_Startup(gvar);\r
+}\r
+\r
+//===========================================================================\r
+\r
+/*\r
+==========================\r
+=\r
+= ShutdownCAMMPM\r
+=\r
+==========================\r
+*/\r
+\r
+void ShutdownCAMMPM (global_game_variables_t *gvar)\r
+{\r
+/*\r
+ US_Shutdown ();\r
+ SD_Shutdown ();\r
+ PM_Shutdown ();\r
+ IN_Shutdown ();\r
+ VW_Shutdown ();\r
+ CA_Shutdown ();\r
+ MM_Shutdown ()\r
+*/\r
+#ifdef __16_PM__\r
+ PM_Shutdown(gvar);\r
+#endif\r
+ CA_Shutdown(gvar);\r
+ MM_Shutdown(gvar);\r
+}\r
+\r
+//===========================================================================\r
+\r
/*\r
====================\r
=\r
word modexPalOverscan(word col);\r
#endif\r
\r
-void Shutdown16(global_game_variables_t *gvar);\r
-void Startup16(global_game_variables_t *gvar);\r
+void Shutdown16(global_game_variables_t *gvar),\r
+ Startup16(global_game_variables_t *gvar),\r
+ StartupCAMMPM (global_game_variables_t *gvar),\r
+ ShutdownCAMMPM (global_game_variables_t *gvar);\r
void TL_DosLibStartup(global_game_variables_t *gvar);\r
void TL_VidInit(global_game_variables_t *gvar);\r
boolean FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar);\r
void FreeVGMFile(VGM_FILE* vgmFile, global_game_variables_t *gvar)\r
{\r
//if(vgmFile->data){ free(vgmFile->data); vgmFile->data = NULL; }\r
-// if(vgmFile->data) free(vgmFile->data);\r
MM_FreePtr(MEMPTR gvar->ca.audiosegs[0], gvar);\r
+ if(vgmFile->data) free(vgmFile->data);\r
vgmFile->dataLen = 0;\r
\r
- return;\r
+// return;\r
}\r
\r
\r
#include "src/lib/vgmsnd/vgmSnd.h"\r
#include "src/lib/16_sd.h"\r
//#include "src/lib/doslib/adlib.h"\r
-#include "src/lib/16_in.h"\r
#include "src/lib/16_tail.h"\r
#include "src/lib/16_pm.h"\r
#include "src/lib/16_ca.h"\r
if(argv[1]) strcpy(bakapee, argv[1]);\r
\r
MM_Startup(&gvar);\r
-// PM_Startup(&gvar); PM_CheckMainMem(&gvar); PM_UnlockMainMem(&gvar);\r
+// PM_Startup(&gvar); PM_UnlockMainMem(&gvar);\r
// CA_Startup(&gvar);\r
printf("%x\n", OpenVGMFile(bakapee, &pee[0], &gvar));\r
-// IN_Startup(); IN_Default(0,&gvar.player[0],ctrl_Keyboard1);\r
InitEngine();\r
PlayMusic(&pee[0]);\r
-// while(!IN_KeyDown(sc_Escape))\r
while(!kbhit())\r
{\r
-// IN_ReadControl(0,&gvar.player);\r
UpdateSoundEngine();\r
}\r
StopMusic();\r
- FreeVGMFile(&pee[0], &gvar);\r
+ FreeVGMFile(&pee[0], &gvar); printf("ok\n");\r
DeinitEngine();\r
- //IN_Shutdown();\r
// PM_Shutdown(&gvar);\r
// CA_Shutdown(&gvar);\r
MM_Shutdown(&gvar);\r
{\r
static global_game_variables_t gvar;\r
struct glob_game_vars *ggvv;\r
-// sword bakapee;\r
-// if(argv[1]) bakapee = atoi(argv[1]);\r
-// else bakapee = 1;\r
- //char *bakapee1,*bakapee1p;\r
char bakapee1[64] = FILENAME_1;\r
char bakapee1p[64] = FILENAME_1P;\r
\r
Startup16(&gvar);\r
\r
-// bakapee1=mALLoc(64);\r
-// bakapee1p=mALLoc(64);\r
ggvv=&gvar;\r
\r
if (argc >= 2) {\r
-/* if (argc < 2) {\r
- //fprintf(stderr,"drawvrl <VRL file> <palette file>\n palette file optional\n");\r
- bakapee1 = FILENAME_1;\r
- bakapee1p = FILENAME_1P;\r
-\r
- }else{\r
- if(argv[1]) bakapee1 = argv[1];\r
- if(argv[2]) bakapee1p = argv[2];*/\r
if(argv[1]){ strcpy(bakapee1, argv[1]);\r
if(argv[2]) strcpy(bakapee1p, argv[2]); }\r
}\r