home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2000 January / LCD_01_2000.iso / games / doom / pmdoom / src / i_system.c < prev    next >
C/C++ Source or Header  |  1999-12-17  |  16KB  |  709 lines

  1. /*  Emacs style mode select   -*- C++ -*-  */
  2. /* ----------------------------------------------------------------------------- */
  3. /*  */
  4. /*  $Id:$ */
  5. /*  */
  6. /*  Copyright (C) 1993-1996 by id Software, Inc. */
  7. /*  */
  8. /*  This source is available for distribution and/or modification */
  9. /*  only under the terms of the DOOM Source Code License as */
  10. /*  published by id Software. All rights reserved. */
  11. /*  */
  12. /*  The source is distributed in the hope that it will be useful, */
  13. /*  but WITHOUT ANY WARRANTY; without even the implied warranty of */
  14. /*  FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License */
  15. /*  for more details. */
  16. /*  */
  17. /*  $Log:$ */
  18. /*  */
  19. /*  DESCRIPTION: */
  20. /*  */
  21. /* ----------------------------------------------------------------------------- */
  22.  
  23. #include <stdlib.h>
  24. #include <stdio.h>
  25. #include <string.h>
  26. #include <signal.h>
  27.  
  28. #include <stdarg.h>
  29. #include <sys/time.h>
  30. #include <unistd.h>
  31.  
  32. #ifdef ATARI
  33. #include <osbind.h>
  34. #endif
  35.  
  36. #include "doomdef.h"
  37. #include "m_misc.h"
  38. #include "i_video.h"
  39. #include "i_sound.h"
  40.  
  41. #include "d_net.h"
  42. #include "g_game.h"
  43. #include "m_argv.h"
  44.  
  45. #include "sound/sndserv.h"
  46.  
  47. #ifdef LINUX
  48. #include "video/svgalib.h"
  49. #include "video/x11.h"
  50. #include "sound/devaudio.h"
  51. #endif
  52.  
  53. #ifdef ATARI
  54. #include "i_cookies.h"
  55. #include "control/ikbd.h"
  56. #include "control/joypad.h"
  57. #include "control/time.h"
  58. #include "control/bios.h"
  59. #include "video/xbios.h"
  60. #include "video/vdi.h"
  61. #include "sound/ataridma.h"
  62. #endif
  63.  
  64. #ifdef __GNUG__
  65. #pragma implementation "i_system.h"
  66. #endif
  67. #include "i_system.h"
  68.  
  69. int    mb_used = 8;    /*  8 Mo par dΘfaut */
  70.  
  71. void I_NullSysFunc(void);
  72.  
  73. void
  74. I_Tactile
  75. ( int    on,
  76.   int    off,
  77.   int    total )
  78. {
  79.   /*  UNUSED. */
  80.   on = off = total = 0;
  81. }
  82.  
  83. ticcmd_t    emptycmd;
  84. ticcmd_t*    I_BaseTiccmd(void)
  85. {
  86.     return &emptycmd;
  87. }
  88.  
  89. #ifdef ATARI
  90. int atari_HeapSize=8<<20;    /* 8 Mo par defaut */
  91. #endif
  92.  
  93. int  I_GetHeapSize (void)
  94. {
  95.     return mb_used*1024*1024;
  96. }
  97.  
  98. byte* I_ZoneBase (int*    size)
  99. {
  100. #ifdef ATARI
  101.     *size=Mxalloc(-1,3)-131072;
  102.     if (*size>atari_HeapSize)
  103.         *size=atari_HeapSize;
  104. #else
  105.     *size = mb_used*1024*1024;
  106. #endif
  107.  
  108.     printf(" %d Kbytes allocated for zone\n",(*size)>>10);
  109.  
  110.     return (byte *) malloc (*size);
  111. }
  112.  
  113.  
  114.  
  115. /*  */
  116. /*  I_GetTime */
  117. /*  returns time in 1/70th second tics */
  118. /*  */
  119.  
  120. int  I_GetTime (void)
  121. {
  122.     static int        basetime=0;
  123. #ifndef ATARI
  124.     int            newtics;
  125.     struct timeval    tp;
  126.     struct timezone    tzp;
  127.   
  128.     gettimeofday(&tp, &tzp);
  129.     if (!basetime)
  130.     basetime = tp.tv_sec;
  131.     newtics = (tp.tv_sec-basetime)*TICRATE + tp.tv_usec*TICRATE/1000000;
  132.  
  133.     return newtics;
  134. #else
  135.     Supexec(I_Asm_UpdateTime);
  136.  
  137.     if (!basetime)
  138.         basetime = atari_curtime;
  139.  
  140.     return ((atari_curtime-basetime)*TICRATE)/200;    /* Return 35hz value */
  141. #endif
  142. }
  143.  
  144.  
  145. /*  */
  146. /*  I_Init */
  147. /*  */
  148. void I_Init (void)
  149. {
  150.     I_InitSound();
  151.     /* I_InitGraphics(); */
  152.     I_InitControl();
  153.  
  154.     signal(SIGINT, (void (*)(int)) I_Quit);
  155. }
  156.  
  157. /*  */
  158. /*  I_Quit */
  159. /*  */
  160. void I_Quit (void)
  161. {
  162.     D_QuitNetGame ();
  163.     I_ShutdownControl();
  164.     I_ShutdownSound();
  165.     I_ShutdownMusic();
  166.     M_SaveDefaults ();
  167.     I_ShutdownGraphics();
  168.     exit(0);
  169. }
  170.  
  171. void I_WaitVBL(int count)
  172. {
  173. #ifdef SGI
  174.     sginap(1);                                           
  175. #else
  176. #ifdef SUN
  177.     sleep(0);
  178. #else
  179. #ifdef ATARI
  180.     int i;
  181.  
  182.     for (i=0;i<count;i++)
  183.         Vsync();
  184. #else
  185.     usleep (count * (1000000/70) );                                
  186. #endif
  187. #endif
  188. #endif
  189. }
  190.  
  191. byte*    I_AllocLow(int length)
  192. {
  193.     byte*    mem;
  194.         
  195.     mem = (byte *)malloc (length);
  196.     memset (mem,0,length);
  197.     return mem;
  198. }
  199.  
  200.  
  201. /*  */
  202. /*  I_Error */
  203. /*  */
  204. extern boolean demorecording;
  205.  
  206. void I_Error (char *error, ...)
  207. {
  208.     va_list    argptr;
  209.  
  210.     /*  Message first. */
  211.     va_start (argptr,error);
  212.     fprintf (stderr, "Error: ");
  213.     vfprintf (stderr,error,argptr);
  214.     fprintf (stderr, "\n");
  215.     va_end (argptr);
  216.  
  217.     fflush( stderr );
  218.  
  219.     /*  Shutdown. Here might be other errors. */
  220.     if (demorecording)
  221.     G_CheckDemoStatus();
  222.  
  223.     D_QuitNetGame ();
  224.     I_ShutdownControl();
  225.     I_ShutdownSound();
  226.     I_ShutdownMusic();
  227.     I_ShutdownGraphics();
  228.     
  229.     exit(-1);
  230. }
  231.  
  232. void I_StartTic(void)
  233. {
  234.     I_UpdateKeyboard();
  235.     I_UpdateMouse();
  236.     I_UpdateJoystick();
  237. #ifdef ATARI
  238.     I_UpdateJoypad();
  239. #endif
  240. }
  241.  
  242. /* ----------------------------------------------------------------- */
  243. /*                 Dynamic system dependent functions                */
  244. /* ----------------------------------------------------------------- */
  245.  
  246. typedef struct {
  247.     char *name;        /* Routine name */
  248.     char *param;    /* Parameter to force the use of this routine */
  249.     int number;        /* Number of the routine */
  250. } routlist_t;
  251.  
  252. enum {
  253.     KEYBOARD_OFF =0,
  254.     KEYBOARD_SVGALIB,
  255.     KEYBOARD_X11,
  256.     KEYBOARD_6301,
  257.     KEYBOARD_BIOS
  258. };
  259.  
  260. routlist_t keyboard_rout[]={
  261.     {"Off",        "off",        KEYBOARD_OFF},
  262.     {"Svgalib",    "svgalib",    KEYBOARD_SVGALIB},
  263.     {"X11",        "x11",        KEYBOARD_X11},
  264.     {"Ikbd 6301",    "ikbd",        KEYBOARD_6301},
  265.     {"Bios",    "bios",        KEYBOARD_BIOS}
  266. };
  267.  
  268. enum {
  269.     MOUSE_OFF =0,
  270.     MOUSE_SVGALIB,
  271.     MOUSE_X11,
  272.     MOUSE_6301
  273. };
  274.  
  275. routlist_t mouse_rout[]={
  276.     {"Off",        "off",        MOUSE_OFF},
  277.     {"Svgalib",    "svgalib",    MOUSE_SVGALIB},
  278.     {"X11",        "x11",        MOUSE_X11},
  279.     {"Ikbd 6301",    "ikbd",        MOUSE_6301}
  280. };
  281.  
  282. enum {
  283.     JOYSTICK_OFF =0,
  284.     JOYSTICK_SVGALIB,
  285.     JOYSTICK_X11,
  286.     JOYSTICK_6301
  287. };
  288.  
  289. routlist_t joystick_rout[]={
  290.     {"Off",        "off",        JOYSTICK_OFF},
  291.     {"Svgalib",    "svgalib",    JOYSTICK_SVGALIB},
  292.     {"X11",        "x11",        JOYSTICK_X11},
  293.     {"Ikbd 6301",    "ikbd",        JOYSTICK_6301}
  294. };
  295.  
  296. enum {
  297.     JOYPAD_OFF =0,
  298.     JOYPAD_ON
  299. };
  300.  
  301. routlist_t joypad_rout[]={
  302.     {"Off",    "off",    JOYPAD_OFF},
  303.     {"On",    "on",    JOYPAD_ON}
  304. };
  305.  
  306. enum {
  307.     SOUND_OFF =0,
  308.     SOUND_SERVER,
  309.     SOUND_DEVAUDIO,
  310.     SOUND_DMA8
  311. };
  312.  
  313. routlist_t sound_rout[]={
  314.     {"Off",            "off",        SOUND_OFF},
  315.     {"Sound server",    "sndserver",    SOUND_SERVER},
  316.     {"Linux /dev/audio",    "devaudio",    SOUND_DEVAUDIO},
  317.     {"8 bits Dma",        "dma8",        SOUND_DMA8}
  318. };
  319. /*
  320. enum {
  321.     MUSIC_OFF =0
  322. };
  323.  
  324. routlist_t music_rout[]={
  325.     {"Off",    "off",    MUSIC_OFF}
  326. };
  327. */
  328. enum {
  329.     VIDEO_OFF=0,
  330.     VIDEO_SVGALIB,
  331.     VIDEO_X11,
  332.     VIDEO_XBIOS,
  333.     VIDEO_VDI
  334. };
  335.  
  336. routlist_t video_rout[]={
  337.     {"Off",        "off",        VIDEO_OFF},
  338.     {"Svgalib",    "svgalib",    VIDEO_SVGALIB},
  339.     {"X11",        "x11",        VIDEO_X11},
  340.     {"Xbios",    "xbios",    VIDEO_XBIOS},
  341.     {"Vdi",        "vdi",        VIDEO_VDI}
  342. };
  343.  
  344. void I_SysInit(void)
  345. {
  346.     int p;
  347.  
  348.     int numkbd,nummouse,numjoystick;
  349. #ifdef ATARI
  350.     int numjoypad;
  351. #endif
  352.     int numsound,/*nummusic,*/numvideo;
  353.  
  354.     /* --- Initialise default system functions --- */
  355.  
  356.     /* controllers */
  357.  
  358.     I_InitControl = I_NullSysFunc; /* Init controller functions */
  359.     I_ShutdownControl = I_NullSysFunc; /* Shutdown controller functions */
  360.  
  361.     I_UpdateKeyboard = I_NullSysFunc;
  362.     numkbd = KEYBOARD_OFF;
  363.     I_UpdateMouse = I_NullSysFunc;
  364.     nummouse = MOUSE_OFF;
  365.     I_UpdateJoystick = I_NullSysFunc;
  366.     numjoystick = JOYSTICK_OFF;
  367. #ifdef ATARI
  368.     I_UpdateJoypad = I_NullSysFunc;
  369.     numjoypad = JOYPAD_OFF;
  370. #endif
  371.  
  372.     /* sound */
  373.  
  374.     I_SndInit = I_NullSysFunc;
  375.     I_SndUpdate = I_NullSysFunc;
  376.     I_InitSound = I_NullSysFunc;
  377.     I_ShutdownSound = I_NullSysFunc;
  378.     I_StartSound = I_NullSysFunc;
  379.     numsound = SOUND_OFF;
  380.  
  381.     /* music */
  382. /*    nummusic = MUSIC_OFF;*/
  383.  
  384.     /* video */
  385.  
  386.     I_VidInit = I_NullSysFunc;
  387.     I_VidUpdate = I_NullSysFunc;
  388.     I_SetPalette256 = I_NullSysFunc;
  389.     I_InitGraphics = I_InitGraphics_null;
  390.     I_ShutdownGraphics = I_NullSysFunc;
  391.     I_SetMainScreen = I_NullSysFunc;
  392.     numvideo = VIDEO_OFF;
  393.  
  394. #ifdef ATARI
  395.     /* --- Initialise default ATARI functions --- */
  396.  
  397.     I_ScanCookies();
  398.     
  399.     /* controllers */
  400.     if ((cookie_mch == MCH_TT) || (cookie_mch == MCH_F30))
  401.     {
  402.         I_InitControl = I_InitControl_6301;
  403.         I_ShutdownControl = I_ShutdownControl_6301;
  404.  
  405.         I_UpdateKeyboard = I_UpdateKeyboard_6301;
  406.         numkbd=KEYBOARD_6301;
  407.         I_UpdateMouse = I_UpdateMouse_6301;
  408.         nummouse=MOUSE_6301;
  409.         I_UpdateJoystick = I_UpdateJoystick_6301;
  410.         numjoystick=JOYSTICK_6301;
  411.     }
  412.     else
  413.     {
  414.         I_InitControl = I_InitControl_bios;
  415.         I_UpdateKeyboard = I_UpdateKeyboard_bios;
  416.         numkbd=KEYBOARD_BIOS;
  417.     }
  418.  
  419.     if (cookie_mch == MCH_F30)
  420.     {
  421.         I_UpdateJoypad = I_UpdateJoypad_hardware;
  422.         numjoypad=JOYPAD_ON;
  423.     }
  424.  
  425.     /* video */
  426.     switch (cookie_vdo) {
  427.         case VDO_TT:
  428.         case VDO_F30:
  429.             /* Xbios display */
  430.             I_VidInit = I_VidInit_xbios;
  431.             I_VidUpdate = I_VidUpdate_xbios;
  432.             I_SetPalette256 = I_SetPalette256_xbios;
  433.             I_InitGraphics = I_InitGraphics_xbios;
  434.             I_ShutdownGraphics = I_ShutdownGraphics_xbios;
  435. /*            I_SetMainScreen = I_SetMainScreen_xbios;*/
  436.             numvideo=VIDEO_XBIOS;
  437.             break;
  438.         default:
  439.             /* Vdi display */
  440.             I_VidInit = I_VidInit_vdi;
  441.             I_VidUpdate = I_VidUpdate_vdi;
  442.             I_SetPalette256 = I_SetPalette256_vdi;
  443.             I_InitGraphics = I_InitGraphics_vdi;
  444.             I_ShutdownGraphics = I_ShutdownGraphics_vdi;
  445.             I_SetMainScreen = I_SetMainScreen_vdi;
  446.             numvideo=VIDEO_VDI;
  447.             break;
  448.     }
  449.  
  450.     /* sound */
  451.     if (cookie_snd & (1<<SND_DMA8)) {
  452.         I_SndInit = I_SndInit_atari;
  453.         I_SndUpdate = I_NullSysFunc;
  454.         I_InitSound = I_InitSound_atari;
  455.         I_ShutdownSound = I_ShutdownSound_atari;
  456.         I_StartSound = I_StartSound_atari;
  457.         numsound=SOUND_DMA8;
  458.     }
  459.  
  460. #endif
  461.  
  462. #ifdef LINUX
  463.     /* --- Initialise default LINUX functions --- */
  464.  
  465.     if (getenv("DISPLAY"))
  466.     {
  467.         /* X11 controllers */
  468.         I_UpdateKeyboard = I_UpdateKeyboard_x11;
  469.         numkbd = KEYBOARD_X11;
  470.         I_UpdateMouse = I_UpdateMouse_x11;
  471.         nummouse = MOUSE_X11;
  472.  
  473.         /* X11 display */
  474.         I_VidUpdate = I_VidUpdate_x11;
  475.         I_SetPalette256 = I_SetPalette256_x11;
  476.         I_InitGraphics = I_InitGraphics_x11;
  477.         I_ShutdownGraphics = I_ShutdownGraphics_x11;
  478.         numvideo=VIDEO_X11;
  479.     } else {
  480.         /* Svgalib controllers */
  481.         I_UpdateKeyboard = I_UpdateKeyboard_svgalib;
  482.         numkbd = KEYBOARD_SVGALIB;
  483.  
  484.         /* Svgalib display */
  485.         I_VidInit = I_VidInit_svgalib;
  486.         I_VidUpdate = I_VidUpdate_svgalib;
  487.         I_SetPalette256 = I_SetPalette256_svgalib;
  488.         I_InitGraphics = I_InitGraphics_svgalib;
  489.         I_ShutdownGraphics = I_ShutdownGraphics_svgalib;
  490.         numvideo = VIDEO_SVGALIB;
  491.     }
  492.  
  493.     I_SndInit = I_NullSysFunc;
  494.     I_SndUpdate = I_NullSysFunc;
  495.     I_InitSound = I_InitSound_sndserver;
  496.     I_ShutdownSound = I_ShutdownSound_sndserver;
  497.     I_StartSound = I_StartSound_sndserver;
  498.     numsound=SOUND_SERVER;
  499.  
  500. #endif
  501.  
  502.     /* --- Initialise forced functions --- */
  503.  
  504.     p=M_CheckParm("-keyboard");
  505.     if (p && p < myargc-1 )
  506.     {
  507.         if (!strcmp("off",myargv[p+1])) {
  508. #ifdef LINUX
  509.             /* Keep keyboard routine under X11 */
  510.             if ( I_UpdateKeyboard != I_UpdateKeyboard_x11)
  511. #endif
  512.             {
  513.                 I_UpdateKeyboard = I_NullSysFunc;
  514.                 numkbd=KEYBOARD_OFF;
  515.             }
  516.         }        
  517. #ifdef ATARI
  518.         if (!strcmp(keyboard_rout[KEYBOARD_BIOS].param,myargv[p+1]))
  519.         {
  520.             /* Set bios routines */
  521.             I_InitControl=I_InitControl_bios;
  522.             I_ShutdownControl=I_NullSysFunc;
  523.  
  524.             I_UpdateKeyboard=I_UpdateKeyboard_bios;
  525.             numkbd=KEYBOARD_BIOS;
  526.             I_UpdateMouse=I_NullSysFunc;
  527.             nummouse=MOUSE_OFF;
  528.             I_UpdateJoystick=I_NullSysFunc;
  529.             numjoystick=JOYSTICK_OFF;
  530.         }
  531. #endif
  532.     }
  533.  
  534.     p=M_CheckParm("-mouse");
  535.     if (p && p < myargc-1 )
  536.     {
  537.         if (!strcmp(mouse_rout[MOUSE_OFF].param,myargv[p+1])) {
  538.             I_UpdateMouse = I_NullSysFunc;
  539.             nummouse=MOUSE_OFF;
  540.         }        
  541.     }
  542.  
  543.     p=M_CheckParm("-joystick");
  544.     if (p && p < myargc-1 )
  545.     {
  546.         if (!strcmp(joystick_rout[JOYSTICK_OFF].param,myargv[p+1])) {
  547.             I_UpdateJoystick = I_NullSysFunc;
  548.             numjoystick=JOYSTICK_OFF;
  549.         }        
  550.     }
  551.  
  552. #ifdef ATARI
  553.     /* disable IKBD routines if keyboard disabled */
  554.     if ((numkbd == KEYBOARD_OFF) && (I_InitControl == I_InitControl_6301))
  555.     {
  556.         I_InitControl = I_NullSysFunc;
  557.         I_ShutdownControl = I_NullSysFunc;
  558.  
  559.         I_UpdateKeyboard = I_NullSysFunc;
  560.         numkbd =KEYBOARD_OFF;
  561.         I_UpdateMouse = I_NullSysFunc;
  562.         nummouse=MOUSE_OFF;
  563.         I_UpdateJoystick = I_NullSysFunc;
  564.         numjoystick=JOYSTICK_OFF;
  565.     }
  566. #endif
  567.  
  568. #ifdef ATARI
  569.     p=M_CheckParm("-joypad");
  570.     if (p && p < myargc-1 )
  571.     {
  572.         if (!strcmp(joypad_rout[JOYPAD_OFF].param,myargv[p+1])) {
  573.             I_UpdateJoypad = I_NullSysFunc;
  574.             numjoypad=JOYPAD_OFF;
  575.         }        
  576.     }
  577. #endif
  578.  
  579.     p=M_CheckParm("-sound");
  580.     if (p && p < myargc-1 )
  581.     {
  582.         if (!strcmp(sound_rout[SOUND_OFF].param,myargv[p+1])) {
  583.             I_SndInit = I_NullSysFunc;
  584.             I_SndUpdate = I_NullSysFunc;
  585.             I_InitSound = I_NullSysFunc;
  586.             I_ShutdownSound = I_NullSysFunc;
  587.             numsound=SOUND_OFF;
  588.         }        
  589. #ifdef LINUX
  590.         if (!strcmp(sound_rout[SOUND_DEVAUDIO].param,myargv[p+1])) {
  591.             I_SndInit = I_NullSysFunc;
  592.             I_SndUpdate = I_SndUpdate_linux;
  593.             I_InitSound = I_InitSound_linux;
  594.             I_ShutdownSound = I_ShutdownSound_linux;
  595.             I_StartSound = I_StartSound_linux;
  596.             numsound = SOUND_DEVAUDIO;
  597.         }
  598. #endif
  599.         if (!strcmp(sound_rout[SOUND_SERVER].param,myargv[p+1])) {
  600.             I_SndInit = I_NullSysFunc;
  601.             I_SndUpdate = I_NullSysFunc;
  602.             I_InitSound = I_InitSound_sndserver;
  603.             I_ShutdownSound = I_ShutdownSound_sndserver;
  604.             I_StartSound = I_StartSound_sndserver;
  605.             numsound=SOUND_SERVER;
  606.         }        
  607.     }
  608. /*
  609.     p=M_CheckParm("-music");
  610.     if (p && p < myargc-1 )
  611.     {
  612.         if (!strcmp("off",myargv[p+1])) {
  613.             nummusic=MUSIC_OFF;
  614.         }        
  615.     }
  616. */
  617.     p=M_CheckParm("-video");
  618.     if (p && p < myargc-1 )
  619.     {
  620.         if (!strcmp(video_rout[VIDEO_OFF].param,myargv[p+1])) {
  621. #ifdef LINUX
  622.             /* Disable keyboard,mouse if no appropriate video */
  623.             if (( I_VidUpdate == I_VidUpdate_x11) ||
  624.                 (I_VidUpdate == I_VidUpdate_svgalib))
  625.             {
  626.                 I_UpdateKeyboard = I_NullSysFunc;
  627.                 numkbd=KEYBOARD_OFF;
  628.                 I_UpdateMouse = I_NullSysFunc;
  629.                 nummouse=MOUSE_OFF;
  630.             }
  631. #endif
  632.  
  633.             I_VidInit = I_NullSysFunc;
  634.             I_VidUpdate = I_NullSysFunc;
  635.             I_SetPalette256 = I_NullSysFunc;
  636.             I_InitGraphics = I_InitGraphics_null;
  637.             I_ShutdownGraphics = I_NullSysFunc;
  638.             I_SetMainScreen = I_NullSysFunc;
  639.             numvideo=VIDEO_OFF;
  640.         }        
  641. #ifdef ATARI
  642.         if (!strcmp(video_rout[VIDEO_VDI].param,myargv[p+1])) {
  643.             I_VidInit = I_VidInit_vdi;
  644.             I_VidUpdate = I_VidUpdate_vdi;
  645.             I_SetPalette256 = I_SetPalette256_vdi;
  646.             I_InitGraphics = I_InitGraphics_vdi;
  647.             I_ShutdownGraphics = I_ShutdownGraphics_vdi;
  648.             I_SetMainScreen = I_SetMainScreen_vdi;
  649.             numvideo=VIDEO_VDI;
  650.         }        
  651. #endif
  652.     }
  653.  
  654.     /* Display routines names */
  655.  
  656.     printf("Keyboard.: %s\n",keyboard_rout[numkbd].name);
  657.     printf("Mouse....: %s\n",mouse_rout[nummouse].name);
  658.     printf("Joystick.: %s\n",joystick_rout[numjoystick].name);
  659. #ifdef ATARI
  660.     printf("Joypad...: %s\n",joypad_rout[numjoypad].name);
  661. #endif
  662.     printf("Sound....: %s\n",sound_rout[numsound].name);
  663. /*    printf("Music....: %s\n",music_rout[nummusic].name);*/
  664.     printf("Video....: %s\n\n",video_rout[numvideo].name);
  665.  
  666.     /* First initializations */
  667.  
  668.     I_VidInit();
  669.     I_SndInit();
  670. }
  671.  
  672. /* --- Default system dynamic function = Null */
  673.  
  674. void I_NullSysFunc(void)
  675. {
  676. }
  677.  
  678. /* --- Controllers : update (keyboard,mouse,joystick,joypads,etc... */
  679.  
  680. /* void (*I_StartTic)(void); */
  681.  
  682. void (*I_InitControl) (void);
  683. void (*I_ShutdownControl) (void);
  684.  
  685. void (*I_UpdateKeyboard) (void);
  686. void (*I_UpdateMouse) (void);
  687. void (*I_UpdateJoystick) (void);
  688. #ifdef ATARI
  689. void (*I_UpdateJoypad) (void);
  690. #endif
  691.  
  692. /* --- Sound */
  693.  
  694. void (*I_SndInit)(void);        /* Initializations required for sound */
  695. void (*I_SndUpdate)(void);        /* Update sound */
  696. void (*I_InitSound)(void);        /* Initialize sound */
  697. void (*I_ShutdownSound)(void);        /* Shutdown sound */
  698.  
  699. /* --- Music */
  700.  
  701. /* --- Video */
  702.  
  703. void (*I_VidInit)(void);        /* Initializations required for video */
  704. void (*I_VidUpdate)(void);        /* Render the final screen */
  705. void (*I_SetPalette256)(byte *palette); /* set a 256 colours palette */
  706. void (*I_InitGraphics)(void);        /* Init video */
  707. void (*I_ShutdownGraphics)(void);    /* Shutdown video */
  708. void (*I_SetMainScreen)(void);        /* Set final screen pointer */
  709.