mirror of
https://github.com/id-Software/idsetup.git
synced 2026-03-19 16:39:39 +01:00
The source of the setup program included with DOOM, Final DOOM, Strife, etc.
This commit is contained in:
553
MUSIC.C
Normal file
553
MUSIC.C
Normal file
@@ -0,0 +1,553 @@
|
||||
#include "main.h"
|
||||
#include "default.h"
|
||||
#include "keys.h"
|
||||
|
||||
//
|
||||
// Choose MIDI port
|
||||
//
|
||||
enum
|
||||
{
|
||||
MIDI_220,
|
||||
MIDI_230,
|
||||
MIDI_240,
|
||||
MIDI_250,
|
||||
MIDI_300,
|
||||
MIDI_320,
|
||||
MIDI_330,
|
||||
MIDI_332,
|
||||
MIDI_334,
|
||||
MIDI_336,
|
||||
MIDI_340,
|
||||
MIDI_360,
|
||||
MIDI_MAX
|
||||
};
|
||||
|
||||
item_t midiportitems[]=
|
||||
{
|
||||
{MIDI_220, 32,6,13, -1,-1},
|
||||
{MIDI_230, 32,7,13, -1,-1},
|
||||
{MIDI_240, 32,8,13, -1,-1},
|
||||
{MIDI_250, 32,9,13, -1,-1},
|
||||
{MIDI_300, 32,10,13, -1,-1},
|
||||
{MIDI_320, 32,11,13, -1,-1},
|
||||
{MIDI_330, 32,12,13, -1,-1},
|
||||
{MIDI_332, 32,13,13, -1,-1},
|
||||
{MIDI_334, 32,14,13, -1,-1},
|
||||
{MIDI_336, 32,15,13, -1,-1},
|
||||
{MIDI_340, 32,16,13, -1,-1},
|
||||
{MIDI_360, 32,17,13, -1,-1}
|
||||
};
|
||||
|
||||
menu_t midiportmenu=
|
||||
{
|
||||
&midiportitems[0],
|
||||
MIDI_330,
|
||||
MIDI_MAX,
|
||||
0x7f
|
||||
};
|
||||
|
||||
int ChooseMidiPort (DMXCARD * card)
|
||||
{
|
||||
short field;
|
||||
short key;
|
||||
int rval = 0;
|
||||
|
||||
SaveScreen();
|
||||
DrawPup(&midiport);
|
||||
|
||||
// DEFAULT FIELD ========================================
|
||||
|
||||
switch ( card->midiport )
|
||||
{
|
||||
default:
|
||||
case 0x220:
|
||||
field = MIDI_220;
|
||||
break;
|
||||
|
||||
case 0x230:
|
||||
field = MIDI_230;
|
||||
break;
|
||||
|
||||
case 0x240:
|
||||
field = MIDI_240;
|
||||
break;
|
||||
|
||||
case 0x250:
|
||||
field = MIDI_250;
|
||||
break;
|
||||
|
||||
case 0x300:
|
||||
field = MIDI_300;
|
||||
break;
|
||||
|
||||
case 0x320:
|
||||
field = MIDI_320;
|
||||
break;
|
||||
|
||||
case 0x330:
|
||||
field = MIDI_330;
|
||||
break;
|
||||
|
||||
case 0x332:
|
||||
field = MIDI_332;
|
||||
break;
|
||||
|
||||
case 0x334:
|
||||
field = MIDI_334;
|
||||
break;
|
||||
|
||||
case 0x336:
|
||||
field = MIDI_336;
|
||||
break;
|
||||
|
||||
case 0x340:
|
||||
field = MIDI_340;
|
||||
break;
|
||||
|
||||
case 0x360:
|
||||
field = MIDI_360;
|
||||
break;
|
||||
}
|
||||
|
||||
while(1)
|
||||
{
|
||||
SetupMenu(&midiportmenu);
|
||||
field = GetMenuInput();
|
||||
key = menukey;
|
||||
switch ( key )
|
||||
{
|
||||
case KEY_ESC:
|
||||
rval = -1;
|
||||
goto func_exit;
|
||||
|
||||
case KEY_ENTER:
|
||||
case KEY_F10:
|
||||
switch ( field )
|
||||
{
|
||||
case MIDI_220:
|
||||
card->midiport = 0x220;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_230:
|
||||
card->midiport = 0x230;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_240:
|
||||
card->midiport = 0x240;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_250:
|
||||
card->midiport = 0x250;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_300:
|
||||
card->midiport = 0x300;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_320:
|
||||
card->midiport = 0x320;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_330:
|
||||
card->midiport = 0x330;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_332:
|
||||
card->midiport = 0x332;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_334:
|
||||
card->midiport = 0x334;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_336:
|
||||
card->midiport = 0x336;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_340:
|
||||
card->midiport = 0x340;
|
||||
goto func_exit;
|
||||
|
||||
case MIDI_360:
|
||||
card->midiport = 0x360;
|
||||
goto func_exit;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
func_exit:
|
||||
|
||||
RestoreScreen();
|
||||
return ( rval );
|
||||
}
|
||||
|
||||
//
|
||||
// Choose which SoundBlaster port to use (or any port!)
|
||||
//
|
||||
enum
|
||||
{
|
||||
SB_PORT_210,
|
||||
SB_PORT_220,
|
||||
SB_PORT_230,
|
||||
SB_PORT_240,
|
||||
SB_PORT_250,
|
||||
SB_PORT_260,
|
||||
SB_PORT_280,
|
||||
SB_PORT_MAX
|
||||
};
|
||||
|
||||
item_t sbportitems[]=
|
||||
{
|
||||
{SB_PORT_210, 32,9,13, -1,-1},
|
||||
{SB_PORT_220, 32,10,13, -1,-1},
|
||||
{SB_PORT_230, 32,11,13, -1,-1},
|
||||
{SB_PORT_240, 32,12,13, -1,-1},
|
||||
{SB_PORT_250, 32,13,13, -1,-1},
|
||||
{SB_PORT_260, 32,14,13, -1,-1},
|
||||
{SB_PORT_280, 32,15,13, -1,-1}
|
||||
};
|
||||
|
||||
menu_t sbportmenu =
|
||||
{
|
||||
&sbportitems[0],
|
||||
SB_PORT_220,
|
||||
SB_PORT_MAX,
|
||||
0x7f
|
||||
};
|
||||
|
||||
int ChooseSbPort (DMXCARD * card) // RETURN: 0 = OK, -1 == ABORT
|
||||
{
|
||||
short field;
|
||||
short key;
|
||||
int rval = 0;
|
||||
|
||||
SaveScreen();
|
||||
DrawPup(&sbport);
|
||||
|
||||
// DEFAULT FIELD ========================================
|
||||
|
||||
switch ( card->port )
|
||||
{
|
||||
default:
|
||||
field = SB_PORT_220;
|
||||
break;
|
||||
|
||||
case 0x210:
|
||||
field = SB_PORT_210;
|
||||
break;
|
||||
|
||||
case 0x220:
|
||||
field = SB_PORT_220;
|
||||
break;
|
||||
|
||||
case 0x230:
|
||||
field = SB_PORT_230;
|
||||
break;
|
||||
|
||||
case 0x240:
|
||||
field = SB_PORT_240;
|
||||
break;
|
||||
|
||||
case 0x250:
|
||||
field = SB_PORT_250;
|
||||
break;
|
||||
|
||||
case 0x260:
|
||||
field = SB_PORT_260;
|
||||
break;
|
||||
|
||||
case 0x280:
|
||||
field = SB_PORT_280;
|
||||
break;
|
||||
}
|
||||
|
||||
sbportmenu.startitem = field;
|
||||
while(1)
|
||||
{
|
||||
SetupMenu(&sbportmenu);
|
||||
field = GetMenuInput();
|
||||
key = menukey;
|
||||
switch ( key )
|
||||
{
|
||||
case KEY_ESC:
|
||||
rval = -1;
|
||||
goto func_exit;
|
||||
|
||||
case KEY_ENTER:
|
||||
case KEY_F10:
|
||||
switch ( field )
|
||||
{
|
||||
case SB_PORT_210:
|
||||
card->port = 0x210;
|
||||
goto func_exit;
|
||||
|
||||
case SB_PORT_220:
|
||||
card->port = 0x220;
|
||||
goto func_exit;
|
||||
|
||||
case SB_PORT_230:
|
||||
card->port = 0x230;
|
||||
goto func_exit;
|
||||
|
||||
case SB_PORT_240:
|
||||
card->port = 0x240;
|
||||
goto func_exit;
|
||||
|
||||
case SB_PORT_250:
|
||||
card->port = 0x250;
|
||||
goto func_exit;
|
||||
|
||||
case SB_PORT_260:
|
||||
card->port = 0x260;
|
||||
goto func_exit;
|
||||
|
||||
case SB_PORT_280:
|
||||
card->port = 0x280;
|
||||
goto func_exit;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
func_exit:
|
||||
|
||||
RestoreScreen();
|
||||
return ( rval );
|
||||
}
|
||||
|
||||
//
|
||||
// Menu for choosing Music Card
|
||||
//
|
||||
enum
|
||||
{
|
||||
MCARD_GMIDI,
|
||||
MCARD_SBAWE32,
|
||||
MCARD_CANVAS,
|
||||
MCARD_WAVE,
|
||||
MCARD_GUS,
|
||||
MCARD_PAS,
|
||||
MCARD_SB,
|
||||
MCARD_ADLIB,
|
||||
MCARD_NONE,
|
||||
MCARD_MAX
|
||||
};
|
||||
|
||||
item_t mcarditems[]=
|
||||
{
|
||||
{MCARD_GMIDI, 26,8,28, -1,-1},
|
||||
{MCARD_SBAWE32,26,9,28, -1,-1},
|
||||
{MCARD_CANVAS, 26,10,28, -1,-1},
|
||||
{MCARD_WAVE, 26,11,28, -1,-1},
|
||||
{MCARD_GUS, 26,12,28, -1,-1},
|
||||
{MCARD_PAS, 26,13,28, -1,-1},
|
||||
{MCARD_SB, 26,14,28, -1,-1},
|
||||
{MCARD_ADLIB, 26,15,28, -1,-1},
|
||||
{MCARD_NONE, 26,16,28, -1,-1}
|
||||
};
|
||||
|
||||
menu_t mcardmenu =
|
||||
{
|
||||
&mcarditems[0],
|
||||
MCARD_NONE,
|
||||
MCARD_MAX,
|
||||
0x7f
|
||||
};
|
||||
|
||||
int ChooseMusicCard (void) // RETURN: 0 = OK, -1 == ABORT
|
||||
{
|
||||
short key;
|
||||
short field;
|
||||
int rval = 0;
|
||||
|
||||
switch ( newc.m.card )
|
||||
{
|
||||
default:
|
||||
case M_NONE:
|
||||
field = MCARD_NONE;
|
||||
break;
|
||||
|
||||
case M_ADLIB:
|
||||
field = MCARD_ADLIB;
|
||||
break;
|
||||
|
||||
case M_PAS:
|
||||
field = MCARD_PAS;
|
||||
break;
|
||||
|
||||
case M_GUS:
|
||||
field = MCARD_GUS;
|
||||
break;
|
||||
|
||||
case M_SB:
|
||||
field = MCARD_SB;
|
||||
break;
|
||||
|
||||
case M_WAVE:
|
||||
field = MCARD_WAVE;
|
||||
break;
|
||||
|
||||
case M_CANVAS:
|
||||
field = MCARD_CANVAS;
|
||||
break;
|
||||
|
||||
case M_SBAWE32:
|
||||
field = MCARD_SBAWE32;
|
||||
break;
|
||||
|
||||
case M_GMIDI:
|
||||
field = MCARD_GMIDI;
|
||||
break;
|
||||
}
|
||||
|
||||
mcardmenu.startitem = field;
|
||||
SaveScreen();
|
||||
DrawPup(&mcard);
|
||||
|
||||
while(1)
|
||||
{
|
||||
SetupMenu(&mcardmenu);
|
||||
field = GetMenuInput();
|
||||
key = menukey;
|
||||
|
||||
switch ( key )
|
||||
{
|
||||
case KEY_ESC:
|
||||
rval = -1;
|
||||
goto func_exit;
|
||||
|
||||
case KEY_ENTER:
|
||||
case KEY_F10:
|
||||
switch ( field )
|
||||
{
|
||||
case MCARD_SBAWE32:
|
||||
newc.m.card = M_SBAWE32;
|
||||
newc.m.port = -1;
|
||||
newc.m.irq = -1;
|
||||
newc.m.dma = -1;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_GMIDI:
|
||||
newc.m.card = M_GMIDI;
|
||||
newc.m.port = -1;
|
||||
newc.m.irq = -1;
|
||||
newc.m.dma = -1;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_CANVAS:
|
||||
newc.m.card = M_CANVAS;
|
||||
newc.m.port = -1;
|
||||
newc.m.irq = -1;
|
||||
newc.m.dma = -1;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_WAVE:
|
||||
newc.m.card = M_WAVE;
|
||||
newc.m.port = -1;
|
||||
newc.m.irq = -1;
|
||||
newc.m.dma = -1;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_SB:
|
||||
newc.m.card = M_SB;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_PAS:
|
||||
newc.m.card = M_PAS;
|
||||
newc.m.midiport = -1;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_GUS:
|
||||
newc.m.card = M_GUS;
|
||||
newc.m.midiport = -1;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_ADLIB:
|
||||
newc.m.card = M_ADLIB;
|
||||
newc.m.port = -1;
|
||||
newc.m.midiport = -1;
|
||||
newc.m.irq = -1;
|
||||
newc.m.dma = -1;
|
||||
goto func_exit;
|
||||
|
||||
case MCARD_NONE:
|
||||
newc.m.card = M_NONE;
|
||||
newc.m.port = -1;
|
||||
newc.m.midiport = -1;
|
||||
newc.m.irq = -1;
|
||||
newc.m.dma = -1;
|
||||
goto func_exit;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
func_exit:
|
||||
|
||||
RestoreScreen();
|
||||
return ( rval );
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Choose Music Card menu
|
||||
//
|
||||
int SetupMusic (void)
|
||||
{
|
||||
if ( ChooseMusicCard() == -1 ) return ( -1 );
|
||||
|
||||
DrawCurrentConfig();
|
||||
|
||||
switch ( newc.m.card )
|
||||
{
|
||||
default:
|
||||
savemusic = FALSE;
|
||||
break;
|
||||
|
||||
case M_NONE:
|
||||
savemusic = TRUE;
|
||||
break;
|
||||
|
||||
case M_ADLIB:
|
||||
savemusic = TRUE;
|
||||
break;
|
||||
|
||||
case M_PAS:
|
||||
case M_GUS:
|
||||
savemusic = TRUE;
|
||||
break;
|
||||
|
||||
|
||||
case M_SB:
|
||||
if ( ChooseSbPort( &newc.m ) == -1 ) return ( -1 );
|
||||
savemusic = TRUE;
|
||||
break;
|
||||
|
||||
case M_WAVE:
|
||||
if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 );
|
||||
savemusic = TRUE;
|
||||
break;
|
||||
|
||||
case M_SBAWE32:
|
||||
case M_CANVAS:
|
||||
newc.m.midiport = 0x330;
|
||||
if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 );
|
||||
savemusic = TRUE;
|
||||
break;
|
||||
|
||||
case M_GMIDI:
|
||||
if ( ChooseMidiPort( &newc.m ) == -1 ) return ( -1 );
|
||||
savemusic = TRUE;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user