home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 28
/
amigaformatcd28.iso
/
-screenplay-
/
otherstuff
/
adoomppc_src
/
amiga_main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-04-23
|
5KB
|
241 lines
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// $Log:$
//
// DESCRIPTION:
// Main program, simply calls D_DoomMain high level loop.
//
//-----------------------------------------------------------------------------
const char amigaversion[] = "$VER: ADoomPPC 1.2.6 " __AMIGADATE__ ;
long __oslibversion = 38; /* we require at least OS3.0 for LoadRGB32() */
char __stdiowin[] = "CON:0/20/640/140/ADoomPPC";
char __stdiov37[] = "/AUTO/CLOSE/WAIT";
#include <stdio.h>
#include <stdlib.h>
#include <exec/exec.h>
#include <workbench/startup.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <PowerUP/ppclib/ppc.h>
#include <proto/exec.h>
#include <proto/icon.h>
#include "doomdef.h"
#include "m_argv.h"
#include "d_main.h"
#include "i_system.h"
#include "m_fixed.h"
/**********************************************************************/
int VERSION = 110;
int cpu_type;
int bus_clock;
int bus_MHz;
double tb_scale_lo;
double tb_scale_hi;
/**********************************************************************/
extern int _WBArgc;
extern char **_WBArgv;
int main (int argc, char* argv[])
{
int i, p;
double pll;
/* these command line arguments are flags */
static char *flags[] = {
"-forcedemo",
"-changepitch",
"-mouse",
"-joypad",
"-music",
"-nosfx",
"-mmu",
"-fps",
"-rotatemap",
"-maponhu",
// "-rtg",
// "-native",
// "-ehb",
"-mousepointer",
"-sega3",
"-sega6",
"-pcchecksum",
"-revrseipx",
"-directcgx",
// "-graffitilo",
// "-graffitihi",
"-rawkey",
"-maxdemo",
"-nodraw",
"-noblit",
"-debugfile",
"-shdev",
"-regdev",
"-comdev",
"-nomonsters",
"-respawn",
"-fast",
"-devparm",
"-altdeath",
"-deathmatch",
"-cdrom",
"-playdemo",
"-avg"
};
/* these command line arguments each take a value */
static char *settings[] = {
"-screenmode",
// "-taskpriority",
"-heapsize",
"-cpu",
"-bus",
"-forceversion",
"-width",
"-height",
"-waddir",
"-file",
"-deh",
"-timedemo",
"-skill",
"-episode",
"-timer",
"-statcopy",
"-record",
"-playdemo",
"-timedemo",
"-loadgame",
"-config",
"-turbo"
};
printf ("%s\n", &amigaversion[6]);
if (argc == 0)
{
/* run from WB, _WBArgv is name and TOOLTYPEs */
argc = _WBArgc;
argv = _WBArgv;
}
myargc = argc;
if ((myargv = malloc(sizeof(char *)*MAXARGVS)) == NULL)
I_Error ("malloc(%d) failed", sizeof(char *)*MAXARGVS);
memset (myargv, 0, sizeof(char *)*MAXARGVS);
memcpy (myargv, argv, sizeof(char *)*myargc);
printf ("\nADoomPPC parameters are:\n\n ");
for (i = 1; i < myargc; i++)
printf (" %s", myargv[i]);
printf ("\n\n");
cpu_type = PPCGetAttr(PPCINFOTAG_CPU);
p = M_CheckParm ("-cpu");
if (p && p < myargc - 1) {
cpu_type = atoi (myargv[p+1]);
}
switch (cpu_type) {
case 3:
printf ("\nCPU is PPC603 ");
break;
case 4:
printf ("\nCPU is PPC604 ");
break;
case 5:
printf ("\nCPU is PPC602 ");
break;
case 6:
printf ("\nCPU is PPC603e ");
break;
case 7:
printf ("\nCPU is PPC603e+ ");
break;
case 8:
printf ("\nCPU is PPC604e ");
break;
default:
printf ("\nCPU is PPC ");
break;
}
bus_clock = PPCGetAttr(PPCINFOTAG_CPUCLOCK);
printf ("running at %d MHz ", bus_clock);
if (!bus_clock)
bus_clock = 50000000;
else
bus_clock = bus_clock * 1000000;
i = PPCGetAttr(PPCINFOTAG_CPUPLL);
switch (i) {
case 0:
case 1:
case 2:
case 3:
pll = 1.0; // PLL is 1:1 (or bypassed)
break;
case 4:
case 5:
pll = 2.0; // PLL is 2:1
break;
case 8:
case 9:
pll = 3.0; // PLL is 3:1
break;
case 12:
if ((cpu_type == 4) || (cpu_type == 8))
pll = 1.5; // PLL is 1.5:1
else
pll = 4.0; // PLL is 4:1
break;
case 13:
pll = 4.0; // PLL is 4:1
break;
default:
pll = 3.0;
break;
}
printf ("using a PLL divisor of %3.1f.\n", pll);
bus_clock = (int)((double)bus_clock / pll);
p = M_CheckParm ("-bus");
if (p && p < myargc - 1) {
bus_clock = atoi (myargv[p+1]);
}
bus_MHz = bus_clock / 1000000;
printf("Bus clock is %d MHz.\n\n", bus_MHz);
tb_scale_lo = ((double)(bus_clock >> 2)) / 35.0;
tb_scale_hi = (4.294967296E9 / (double)(bus_clock >> 2)) * 35.0;
SetFPMode (); /* set FPU rounding mode to "trunc towards -infinity" */
p = M_CheckParm ("-forceversion");
if (p && p < myargc - 1)
VERSION = atoi (myargv[p+1]);
D_DoomMain ();
return 0;
}