shithub: qk2

ref: a4c4b45d8b2136733c76a4b86c7896bfa939ad25
dir: qk2/fns.h

View raw version
void	flipfb(void);
void	setpal(uchar*);
void	initfb(void);
void	shutsnd(void);
void	restartsnd(void);
void	initsnd(void);
int	mkdir(char*);
void*	emalloc(ulong);

void	Qcommon_Init(int, char **);
void	Qcommon_Frame(int);
void	Z_Free(void *);
void*	Z_Malloc(int);
void*	Z_TagMalloc(int, int);
void	Z_FreeTags(int);
int	COM_Argc(void);
char*	COM_Argv(int);
void	COM_ClearArgv(int);
int	COM_CheckParm(char *);
void	COM_AddParm(char *);
void	COM_Init(void);
void	COM_InitArgv(int, char **);
char*	COM_SkipPath(char *);
void	COM_StripExtension(char *, char *);
void	COM_FileBase(char *, char *);
void	COM_FilePath(char *, char *);
void	COM_DefaultExtension(char *, char *);
char*	COM_Parse(char **);
void	Com_PageInMemory(uchar *, int);
char*	CopyString(char *);
char*	va(char *, ...);
void	Com_sprintf(char *, int, char *, ...);
void	Info_Print(char *);
void	Com_BeginRedirect(int, char *, int, void(*));
void	Com_EndRedirect(void);
void	Com_Printf(char *, ...);
void	Com_DPrintf(char *, ...);
void	Com_Error(int, char *, ...);
void	Com_Quit(void);
int	Com_ServerState(void);
void	Com_SetServerState(int state);
unsigned	Com_BlockChecksum(void *, int);
uchar	COM_BlockSequenceCRCByte(uchar *, int, int);
float	qfrand(void);
float	crand(void);

void	FS_InitFilesystem(void);
void	FS_SetGamedir(char *);
char*	FS_Gamedir(void);
char*	FS_NextPath(char *);
void	FS_ExecAutoexec(void);
int	FS_FOpenFile(char *, FILE **);
void	FS_FCloseFile(FILE *);
int	FS_LoadFile(char *, void **);
void	FS_Read(void *, int, FILE *);
void	FS_FreeFile(void *);
void	FS_CreatePath(char *);
char**	FS_ListFiles(char *, int *, int);

char*	Sys_FindFirst(char *, int);
char*	Sys_FindNext(int);
void	Sys_FindClose(void);
int	Sys_Milliseconds(void);
void	Sys_Init(void);
char*	Sys_ConsoleInput(void);
void	Sys_ConsoleOutput(char *);
void	Sys_SendKeyEvents(void);
void	Sys_Error(char *, ...);
void	Sys_Quit(void);
char*	Sys_GetClipboardData(void);
void	Sys_MakeCodeWriteable(ulong, ulong);
void	Sys_SetFPCW(void);
vlong	flen(int);
void*	Hunk_Begin(int);
void*	Hunk_Alloc(int);
void	Hunk_Free(void *);
int	Hunk_End(void);

void	CL_Init(void);
void	CL_Drop(void);
void	CL_Shutdown(void);
void	CL_Frame(int);

short	BigShort(short);
short	LittleShort(short);
int	BigLong(int);
int	LittleLong(int);
float	BigFloat(float);
float	LittleFloat(float);
void	Swap_Init(void);

char*	Info_ValueForKey(char *, char *);
void	Info_RemoveKey(char *, char *);
void	Info_SetValueForKey(char *, char *, char *);
qboolean	Info_Validate(char *);

void	SZ_Init(sizebuf_t *, uchar *, int);
void	SZ_Clear(sizebuf_t *);
void*	SZ_GetSpace(sizebuf_t *, int);
void	SZ_Write(sizebuf_t *, void *, int);
void	SZ_Print(sizebuf_t *, char *);
void	MSG_WriteChar(sizebuf_t *, int);
void	MSG_WriteByte(sizebuf_t *, int);
void	MSG_WriteShort(sizebuf_t *, int);
void	MSG_WriteLong(sizebuf_t *, int);
void	MSG_WriteFloat(sizebuf_t *, float);
void	MSG_WriteString(sizebuf_t *, char *);
void	MSG_WriteCoord(sizebuf_t *, float);
void	MSG_WritePos(sizebuf_t *, vec3_t);
void	MSG_WriteAngle(sizebuf_t *, float);
void	MSG_WriteAngle16(sizebuf_t *, float);
void	MSG_WriteDeltaUsercmd(sizebuf_t *, usercmd_t *, usercmd_t *);
void	MSG_WriteDeltaEntity(entity_state_t *, entity_state_t *, sizebuf_t *, qboolean, qboolean);
void	MSG_WriteDir(sizebuf_t *, vec3_t);
void	MSG_BeginReading(sizebuf_t *);
int	MSG_ReadChar(sizebuf_t *);
int	MSG_ReadByte(sizebuf_t *);
int	MSG_ReadShort(sizebuf_t *);
int	MSG_ReadLong(sizebuf_t *);
float	MSG_ReadFloat(sizebuf_t *);
char*	MSG_ReadString(sizebuf_t *);
char*	MSG_ReadStringLine(sizebuf_t *);
float	MSG_ReadCoord(sizebuf_t *);
void	MSG_ReadPos(sizebuf_t *, vec3_t);
float	MSG_ReadAngle(sizebuf_t *);
float	MSG_ReadAngle16(sizebuf_t *);
void	MSG_ReadDeltaUsercmd(sizebuf_t *, usercmd_t *, usercmd_t *);
void	MSG_ReadDir(sizebuf_t *, vec3_t);
void	MSG_ReadData(sizebuf_t *, void *, int);

void	CRC_Init(ushort *);
void	CRC_ProcessByte(ushort *, uchar);
ushort	CRC_Value(ushort);
ushort	CRC_Block(uchar *, int);

void	Cbuf_Init(void);
void	Cbuf_AddText(char *);
void	Cbuf_InsertText(char *);
void	Cbuf_ExecuteText(int, char *);
void	Cbuf_Execute(void);
void	Cbuf_AddEarlyCommands(qboolean);
qboolean	Cbuf_AddLateCommands(void);
void	Cbuf_CopyToDefer(void);
void	Cbuf_InsertFromDefer(void);
void	Cmd_Init(void);
void	Cmd_AddCommand(char *, xcommand_t);
void	Cmd_RemoveCommand(char *);
qboolean	Cmd_Exists(char *);
char*	Cmd_CompleteCommand(char *);
int	Cmd_Argc(void);
char*	Cmd_Argv(int);
char*	Cmd_Args(void);
void	Cmd_TokenizeString(char *, qboolean);
void	Cmd_ExecuteString(char *);
void	Cmd_ForwardToServer(void);

void	Con_DrawCharacter(int, int, int);
void	Con_CheckResize(void);
void	Con_Init(void);
void	Con_DrawConsole(float);
void	Con_Print(char *);
void	Con_CenteredPrint(char *);
void	Con_Clear_f(void);
void	Con_DrawNotify(void);
void	Con_ClearNotify(void);
void	Con_ToggleConsole_f(void);
void	DrawString(int, int, char *);
void	DrawAltString(int, int, char *);

cvar_t*	Cvar_Get(char *, char *, int);
cvar_t*	Cvar_Set(char *, char *);
cvar_t*	Cvar_ForceSet(char *, char *);
cvar_t*	Cvar_FullSet(char *, char *, int);
void	Cvar_SetValue(char *, float);
float	Cvar_VariableValue(char *);
char*	Cvar_VariableString(char *);
char*	Cvar_CompleteVariable(char *);
void	Cvar_GetLatchedVars(void);
qboolean	Cvar_Command(void);
void	Cvar_WriteVariables(char *);
void	Cvar_Init(void);
char*	Cvar_Userinfo(void);
char*	Cvar_Serverinfo(void);

void	CL_ParticleSteamEffect2(cl_sustain_t *);
void	CL_TeleporterParticles(entity_state_t *);
void	CL_ParticleEffect(vec3_t, vec3_t, int, int);
void	CL_ParticleEffect2(vec3_t, vec3_t, int, int);
void	CL_ParticleEffect3(vec3_t, vec3_t, int, int);
void	CL_ClearEffects(void);
void	CL_ClearTEnts(void);
void	CL_BlasterTrail(vec3_t, vec3_t);
void	CL_QuadTrail(vec3_t, vec3_t);
void	CL_RailTrail(vec3_t, vec3_t);
void	CL_BubbleTrail(vec3_t, vec3_t);
void	CL_FlagTrail(vec3_t, vec3_t, float);
void	CL_IonripperTrail(vec3_t, vec3_t);
void	CL_BlasterParticles2(vec3_t, vec3_t, uint);
void	CL_BlasterTrail2(vec3_t, vec3_t);
void	CL_DebugTrail(vec3_t, vec3_t);
void	CL_SmokeTrail(vec3_t, vec3_t, int, int, int);
void	CL_Flashlight(int, vec3_t);
void	CL_ForceWall(vec3_t, vec3_t, int);
void	CL_FlameEffects(centity_t *, vec3_t);
void	CL_GenericParticleEffect(vec3_t, vec3_t, int, int, int, int, float);
void	CL_BubbleTrail2(vec3_t, vec3_t, int);
void	CL_Heatbeam(vec3_t, vec3_t);
void	CL_ParticleSteamEffect(vec3_t, vec3_t, int, int, int);
void	CL_TrackerTrail(vec3_t, vec3_t, int);
void	CL_Tracker_Explode(vec3_t);
void	CL_TagTrail(vec3_t, vec3_t, float);
void	CL_ColorFlash(vec3_t, int, int, float, float, float);
void	CL_Tracker_Shell(vec3_t);
void	CL_MonsterPlasma_Shell(vec3_t);
void	CL_ColorExplosionParticles(vec3_t, int, int);
void	CL_ParticleSmokeEffect(vec3_t, vec3_t, int, int, int);
void	CL_Widowbeamout(cl_sustain_t *);
void	CL_Nukeblast(cl_sustain_t *);
void	CL_WidowSplash(vec3_t);
int	CL_ParseEntityBits(int *);
void	CL_ParseDelta(entity_state_t *, entity_state_t *, int, int);
void	CL_ParseFrame(void);
void	CL_ParseTEnt(void);
void	CL_ParseConfigString(void);
void	CL_ParseMuzzleFlash(void);
void	CL_ParseMuzzleFlash2(void);
void	SmokeAndFlash(vec3_t);
void	CL_SetLightstyle(int);
void	CL_RunParticles(void);
void	CL_RunDLights(void);
void	CL_RunLightStyles(void);
void	CL_AddEntities(void);
void	CL_AddDLights(void);
void	CL_AddTEnts(void);
void	CL_AddLightStyles(void);
void	CL_PrepRefresh(void);
void	CL_RegisterSounds(void);
void	CL_Quit_f(void);
void	CL_ParseLayout(void);
void	CL_Init(void);
void	CL_FixUpGender(void);
void	CL_Disconnect(void);
void	CL_Disconnect_f(void);
void	CL_GetChallengePacket(void);
void	CL_PingServers_f(void);
void	CL_RequestNextDownload(void);
void	CL_InitInput(void);
void	CL_SendCmd(void);
void	CL_SendMove(usercmd_t *);
void	CL_ClearState(void);
void	CL_ReadPackets(void);
int	CL_ReadFromServer(void);
void	CL_WriteToServer(usercmd_t *);
void	CL_BaseMove(usercmd_t *);
void	IN_CenterView(void);
float	CL_KeyState(kbutton_t *);
char*	Key_KeynumToString(int);
void	CL_WriteDemoMessage(void);
void	CL_Stop_f(void);
void	CL_Record_f(void);
void	CL_ParseServerMessage(void);
void	CL_LoadClientinfo(clientinfo_t *, char *);
void	SHOWNET(char *);
void	CL_ParseClientinfo(int);
void	CL_Download_f(void);
void	V_Init(void);
void	V_RenderView(float);
void	V_AddEntity(entity_t *);
void	V_AddParticle(vec3_t, int, float);
void	V_AddLight(vec3_t, float, float, float, float);
void	V_AddLightStyle(int, float, float, float);
void	CL_RegisterTEntSounds(void);
void	CL_RegisterTEntModels(void);
void	CL_SmokeAndFlash(vec3_t);
void	CL_InitPrediction(void);
void	CL_PredictMove(void);
void	CL_CheckPredictionError(void);
cdlight_t*	CL_AllocDlight(int);
void	CL_BigTeleportParticles(vec3_t);
void	CL_RocketTrail(vec3_t, vec3_t, centity_t *);
void	CL_DiminishingTrail(vec3_t, vec3_t, centity_t *, int);
void	CL_FlyEffect(centity_t *, vec3_t);
void	CL_BfgParticles(entity_t *);
void	CL_AddParticles(void);
void	CL_EntityEvent(entity_state_t *);
void	CL_TrapParticles(entity_t *);
void	M_Init(void);
void	M_Keydown(int);
void	M_Draw(void);
void	M_Menu_Main_f(void);
void	M_ForceMenuOff(void);
void	M_AddToServerList(netadr_t, char *);
void	CL_ParseInventory(void);
void	CL_KeyInventory(int);
void	CL_DrawInventory(void);
void	CL_PredictMovement(void);
qboolean	CL_CheckOrDownloadFile(char *);
void	CL_AddNetgraph(void);

void	SV_Init(void);
void	SV_Shutdown(char *, qboolean);
void	SV_Frame(int);
void	SV_FinalMessage(char *, qboolean);
void	SV_DropClient(client_t *);
int	SV_ModelIndex(char *);
int	SV_SoundIndex(char *);
int	SV_ImageIndex(char *);
void	SV_WriteClientdataToMessage(client_t *, sizebuf_t *);
void	SV_ExecuteUserCommand(char *);
void	SV_InitOperatorCommands(void);
void	SV_SendServerinfo(client_t *);
void	SV_UserinfoChanged(client_t *);
void	Master_Heartbeat(void);
void	Master_Packet(void);
void	SV_InitGame(void);
void	SV_Map(qboolean, char *, qboolean);
void	SV_PrepWorldFrame(void);
void	SV_FlushRedirect(int, char *);
void	SV_DemoCompleted(void);
void	SV_SendClientMessages(void);
void	SV_Multicast(vec3_t, multicast_t);
void	SV_StartSound(vec3_t, edict_t *, int, int, float, float, float);
void	SV_ClientPrintf(client_t *, int, char *, ...);
void	SV_BroadcastPrintf(int, char *, ...);
void	SV_BroadcastCommand(char *, ...);
void	SV_Nextserver(void);
void	SV_ExecuteClientMessage(client_t *);
void	SV_ReadLevelFile(void);
void	SV_Status_f(void);
void	SV_WriteFrameToClient(client_t *, sizebuf_t *);
void	SV_RecordDemoMessage(void);
void	SV_BuildClientFrame(client_t *);
void	SV_Error(char *, ...);
void	SV_InitGameProgs(void);
void	SV_ShutdownGameProgs(void);
void	SV_InitEdict(edict_t *);
void	SV_ClearWorld(void);
void	SV_UnlinkEdict(edict_t *);
void	SV_LinkEdict(edict_t *);
int	SV_AreaEdicts(vec3_t, vec3_t, edict_t **, int, int);
int	SV_PointContents(vec3_t);
trace_t	SV_Trace(vec3_t, vec3_t, vec3_t, vec3_t, edict_t *, int);

void	NET_Init(void);
void	NET_Shutdown(void);
void	NET_Config(qboolean);
qboolean	NET_GetPacket(netsrc_t, netadr_t *, sizebuf_t *);
void	NET_SendPacket(netsrc_t, int, void *, netadr_t);
qboolean	NET_CompareAdr(netadr_t, netadr_t);
qboolean	NET_CompareBaseAdr(netadr_t, netadr_t);
qboolean	NET_IsLocalAddress(netadr_t);
char*	NET_AdrToString(netadr_t);
qboolean	NET_StringToAdr (char *, netadr_t *);
void	NET_Sleep(int);

void	Netchan_Init(void);
void	Netchan_Setup(netsrc_t, netchan_t *, netadr_t, int);
qboolean	Netchan_NeedReliable(netchan_t *);
void	Netchan_Transmit(netchan_t *, int, uchar *);
void	Netchan_OutOfBand(int, netadr_t, int, uchar *);
void	Netchan_OutOfBandPrint(int, netadr_t, char *, ...);
qboolean	Netchan_Process(netchan_t *, sizebuf_t *);
qboolean	Netchan_CanReliable(netchan_t *);

void	Mod_Init(void);
void	Mod_ClearAll(void);
model_t*	Mod_ForName(char *, qboolean);
void*	Mod_Extradata(model_t *);
void	Mod_TouchModel(char *);
mleaf_t*	Mod_PointInLeaf(float *, model_t *);
uchar*	Mod_ClusterPVS(int, model_t *);
void	Mod_Modellist_f(void);
void	Mod_FreeAll(void);
void	Mod_Free(model_t *);

void	D_DrawSurfaces(void);
void	D_ViewChanged(void);
void	D_WarpScreen(void);
void	D_DrawSpans16(espan_t *);
void	D_DrawZSpans(espan_t *);
void	Turbulent8(espan_t *);
void	NonTurbulent8(espan_t *);
void	TransformVector(vec3_t, vec3_t);
void	SetUpForLineScan(fixed8_t, fixed8_t, fixed8_t, fixed8_t);
surfcache_t*	D_CacheSurface(msurface_t *, int);
void	R_DrawParticle(void);
void	R_PolysetUpdateTables(void);
void	R_DrawSurface(void);
void	R_RenderWorld(void);
void	R_ClearPolyList(void);
void	R_DrawPolyList(void);
void	R_DrawAlphaSurfaces(void);
void	R_DrawSprite(void);
void	R_DrawBeam(entity_t *);
void	R_RenderFace(msurface_t *, int);
void	R_RenderBmodelFace(bedge_t *, msurface_t *);
void	R_TransformPlane(mplane_t *, float *, float *);
void	R_TransformFrustum(void);
void	R_DrawSurfaceBlock16(void);
void	R_DrawSurfaceBlock8(void);
void	R_GenSkyTile(void *);
void	R_GenSkyTile16(void *);
void	R_Surf8Patch(void);
void	R_Surf16Patch(void);
void	R_DrawSubmodelPolygons(model_t *, int, mnode_t *);
void	R_DrawSolidClippedSubmodelPolygons(model_t *, mnode_t *);
void	R_AddPolygonEdges(emitpoint_t *, int, int);
surf_t*	R_GetSurf(void);
void	R_AliasDrawModel(void);
void	R_BeginEdgeFrame(void);
void	R_ScanEdges(void);
void	D_DrawSurfaces(void);
void	R_InsertNewEdges(edge_t *, edge_t *);
void	R_StepActiveU(edge_t *);
void	R_RemoveEdges(edge_t *);
void	R_PushDlights(model_t *);
void	R_Surf8Start(void);
void	R_Surf8End(void);
void	R_Surf16Start(void);
void	R_Surf16End(void);
void	R_EdgeCodeStart(void);
void	R_EdgeCodeEnd(void);
void	R_RotateBmodel(void);
void	R_InitTurb(void);
void	R_DrawParticles(void);
void	R_SurfacePatch(void);
void	R_DrawTriangle(void);
void	R_AliasClipTriangle(finalvert_t *, finalvert_t *, finalvert_t *);
void	R_PrintAliasStats(void);
void	R_PrintTimes(void);
void	R_PrintDSpeeds(void);
void	R_AnimateLight(void);
void	R_LightPoint(vec3_t, vec3_t);
void	R_SetupFrame(void);
void	R_cshift_f(void);
void	R_EmitEdge(mvertex_t *, mvertex_t *);
void	R_ClipEdge(mvertex_t *, mvertex_t *, clipplane_t *);
void	R_SplitEntityOnNode2(mnode_t *);
float	R_DLightPoint(vec3_t);
void	R_NewMap(void);
void	R_Register(void);
void	R_UnRegister(void);
void	Draw_InitLocal(void);
qboolean	R_Init(void);
void	R_Shutdown(void);
void	R_InitCaches(void);
void	D_FlushCaches(void);
void	R_ScreenShot_f(void);
void	R_BeginRegistration(char *map);
model_t*	R_RegisterModel(char *);
void	R_EndRegistration(void);
void	R_RenderFrame(refdef_t *);
image_t*	Draw_FindPic(char *);
void	Draw_GetPicSize(int *, int *, char *);
void	Draw_Pic(int, int, char *);
void	Draw_StretchPic(int, int, int, int, char *);
void	Draw_StretchRaw(int, int, int, int, int, int, uchar *);
void	Draw_Char(int, int, int);
void	Draw_TileClear(int, int, int, int, char *);
void	Draw_Fill(int, int, int, int, int);
void	Draw_FadeScreen(void);
void	Draw_GetPalette(void);
void	R_BeginFrame(float);
void	R_CinematicSetPalette(uchar *palette);
void	LoadPCX(char *, uchar **, uchar **, int *, int *);
void	R_InitImages(void);
void	R_ShutdownImages(void);
image_t*	R_FindImage(char *, imagetype_t);
void	R_FreeUnusedImages(void);
void	R_GammaCorrectAndSetPalette(uchar *pal);
void	R_InitSkyBox(void);
void	R_IMFlatShadedQuad(vec3_t, vec3_t, vec3_t, vec3_t, int, float);
image_t*	R_RegisterSkin(char *);

void	VectorMA(vec3_t, float, vec3_t, vec3_t);
vec_t	_DotProduct(vec3_t, vec3_t);	// just in case you do't want to use the macros
void	_VectorSubtract(vec3_t, vec3_t, vec3_t);
void	_VectorAdd(vec3_t, vec3_t, vec3_t);
void	_VectorCopy(vec3_t, vec3_t);
void	ClearBounds(vec3_t, vec3_t);
void	AddPointToBounds(vec3_t, vec3_t, vec3_t);
int	VectorCompare(vec3_t, vec3_t);
vec_t	VectorLength(vec3_t);
void	CrossProduct(vec3_t, vec3_t, vec3_t);
vec_t	VectorNormalize(vec3_t);
vec_t	VectorNormalize2 (vec3_t, vec3_t);
void	VectorInverse(vec3_t);
void	VectorScale(vec3_t, vec_t, vec3_t);
void	R_ConcatRotations(float[3][3], float[3][3], float[3][3]);
void	R_ConcatTransforms(float[3][4], float[3][4], float[3][4]);
void	AngleVectors(vec3_t, vec3_t, vec3_t, vec3_t);
int	BoxOnPlaneSide(vec3_t, vec3_t, cplane_t *);
float	anglemod(float);
float	LerpAngle(float, float, float);
void	ProjectPointOnPlane(vec3_t, vec3_t, vec3_t);
void	PerpendicularVector(vec3_t, vec3_t);
void	RotatePointAroundVector(vec3_t, vec3_t, vec3_t, float);

cmodel_t*	CM_LoadMap(char *, qboolean, unsigned *);
cmodel_t*	CM_InlineModel(char *);
int	CM_NumClusters(void);
int	CM_NumInlineModels(void);
char*	CM_EntityString(void);
int	CM_HeadnodeForBox(vec3_t, vec3_t);
int	CM_PointContents(vec3_t, int);
int	CM_TransformedPointContents(vec3_t, int, vec3_t, vec3_t);
trace_t	CM_BoxTrace(vec3_t, vec3_t, vec3_t, vec3_t, int, int);
trace_t	CM_TransformedBoxTrace(vec3_t, vec3_t, vec3_t, vec3_t, int, int, vec3_t, vec3_t);
uchar*	CM_ClusterPVS(int);
uchar*	CM_ClusterPHS(int);
int	CM_PointLeafnum(vec3_t);
int	CM_BoxLeafnums(vec3_t, vec3_t, int *, int, int *);
int	CM_LeafContents(int);
int	CM_LeafCluster(int);
int	CM_LeafArea(int);
void	CM_SetAreaPortalState(int, qboolean);
qboolean	CM_AreasConnected(int, int);
int	CM_WriteAreaBits(uchar *, int);
qboolean	CM_HeadnodeVisible(int, uchar *);
void	CM_WritePortalState(FILE *);
void	CM_ReadPortalState(FILE *);

void	Pmove(pmove_t *);

void	SCR_Init(void);
void	SCR_UpdateScreen(void);
void	SCR_SizeUp(void);
void	SCR_SizeDown(void);
void	SCR_CenterPrint(char *);
void	SCR_BeginLoadingPlaque(void);
void	SCR_EndLoadingPlaque(void);
void	SCR_DebugGraph(float, int);
void	SCR_TouchPics(void);
void	SCR_RunConsole(void);
void	SCR_AddDirtyPoint(int, int);
void	SCR_DirtyScreen(void);
void	SCR_PlayCinematic (char *name);
qboolean	SCR_DrawCinematic(void);
void	SCR_RunCinematic(void);
void	SCR_StopCinematic(void);
void	SCR_FinishCinematic(void);

void	VID_Init(void);
void	VID_Shutdown(void);
void	VID_CheckChanges(void);
void	VID_MenuInit(void);
void	VID_MenuDraw(void);
char*	VID_MenuKey(int);

void	S_Init(void);
void	S_Shutdown(void);
void	S_StartSound(vec3_t, int, int, sfx_t *, float,  float, float);
void	S_StartLocalSound(char *);
void	S_RawSamples(int, int, int, int, uchar *);
void	S_StopAllSounds(void);
void	S_Update(vec3_t, vec3_t, vec3_t, vec3_t);
void	S_Activate(qboolean);
void	S_BeginRegistration(void);
sfx_t*	S_RegisterSound(char *);
void	S_EndRegistration(void);
void	CL_GetEntitySoundOrigin(int, vec3_t);
int	SNDDMA_GetDMAPos(void);
void	SNDDMA_Submit(void);
wavinfo_t	GetWavinfo(char *, uchar *, int);
void	S_InitScaletable(void);
sfxcache_t*	S_LoadSound(sfx_t *);
void	S_IssuePlaysound(playsound_t *);
void	S_PaintChannels(int);
channel_t*	S_PickChannel(int, int);
void	S_Spatialize(channel_t *);

int	CDAudio_Init(void);
void	CDAudio_Shutdown(void);
void	CDAudio_Play(int, qboolean);
void	CDAudio_Stop(void);
void	CDAudio_Update(void);
void	CDAudio_Activate(qboolean);

void	IN_Init(void);
void	IN_Shutdown(void);
void	IN_Commands(void);
void	IN_Frame(void);
void	IN_Move(usercmd_t *);
void	IN_Activate(qboolean);
void	IN_Grabm(int);

void	Key_Event(int, qboolean, unsigned);
void	Key_Init(void);
void	Key_WriteBindings(FILE *);
void	Key_SetBinding(int, char *);
void	Key_ClearStates(void);
int	Key_GetKey(void);

qboolean	Field_Key(menufield_t *, int);
void	Menu_AddItem(menuframework_t *, void *);
void	Menu_AdjustCursor(menuframework_t *, int);
void	Menu_Center(menuframework_t *);
void	Menu_Draw(menuframework_t *);
void*	Menu_ItemAtCursor(menuframework_t *);
qboolean	Menu_SelectItem(menuframework_t *);
void	Menu_SetStatusBar(menuframework_t *, char *);
void	Menu_SlideItem(menuframework_t *, int);
int	Menu_TallySlots(menuframework_t *);
void	Menu_DrawString(int, int, char *);
void	Menu_DrawStringDark(int, int, char *);
void	Menu_DrawStringR2L(int, int, char *);
void	Menu_DrawStringR2LDark(int, int, char *);