cache, set, and some gu funcs migrated

This commit is contained in:
M0liusX 2022-12-05 15:42:58 -06:00
parent 03e569d22d
commit 28e0ee52cf
26 changed files with 5546 additions and 5168 deletions

View File

@ -1,411 +1,407 @@
#ifndef _ABI_H_
#define _ABI_H_
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.32 $
* $Date: 1997/02/11 08:16:37 $
* $Source: /hosts/liberte/disk6/Master/cvsmdev2/PR/include/abi.h,v $
*
**************************************************************************/
/*
* Header file for the Audio Binary Interface.
* This is included in the Media Binary Interface file
* mbi.h.
*
* This file follows the framework used for graphics.
*
*/
/* Audio commands: */
#define A_SPNOOP 0
#define A_ADPCM 1
#define A_CLEARBUFF 2
#define A_ENVMIXER 3
#define A_LOADBUFF 4
#define A_RESAMPLE 5
#define A_SAVEBUFF 6
#define A_SEGMENT 7
#define A_SETBUFF 8
#define A_SETVOL 9
#define A_DMEMMOVE 10
#define A_LOADADPCM 11
#define A_MIXER 12
#define A_INTERLEAVE 13
#define A_POLEF 14
#define A_SETLOOP 15
#define ACMD_SIZE 32
/*
* Audio flags
*/
#define A_INIT 0x01
#define A_CONTINUE 0x00
#define A_LOOP 0x02
#define A_OUT 0x02
#define A_LEFT 0x02
#define A_RIGHT 0x00
#define A_VOL 0x04
#define A_RATE 0x00
#define A_AUX 0x08
#define A_NOAUX 0x00
#define A_MAIN 0x00
#define A_MIX 0x10
/*
* BEGIN C-specific section: (typedef's)
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/*
* Data Structures.
*/
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int addr;
} Aadpcm;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int addr;
} Apolef;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Aenvelope;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int dmem:16;
unsigned int pad2:16;
unsigned int count:16;
} Aclearbuff;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int pad2:16;
unsigned int inL:16;
unsigned int inR:16;
} Ainterleave;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int addr;
} Aloadbuff;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Aenvmixer;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int dmemi:16;
unsigned int dmemo:16;
} Amixer;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int dmem2:16;
unsigned int addr;
} Apan;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pitch:16;
unsigned int addr;
} Aresample;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Areverb;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int addr;
} Asavebuff;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int pad2:2;
unsigned int number:4;
unsigned int base:24;
} Asegment;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int dmemin:16;
unsigned int dmemout:16;
unsigned int count:16;
} Asetbuff;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int vol:16;
unsigned int voltgt:16;
unsigned int volrate:16;
} Asetvol;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int dmemin:16;
unsigned int dmemout:16;
unsigned int count:16;
} Admemmove;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int count:16;
unsigned int addr;
} Aloadadpcm;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int pad2:16;
unsigned int addr;
} Asetloop;
/*
* Generic Acmd Packet
*/
typedef struct {
unsigned int w0;
unsigned int w1;
} Awords;
typedef union {
Awords words;
Aadpcm adpcm;
Apolef polef;
Aclearbuff clearbuff;
Aenvelope envelope;
Ainterleave interleave;
Aloadbuff loadbuff;
Aenvmixer envmixer;
Aresample resample;
Areverb reverb;
Asavebuff savebuff;
Asegment segment;
Asetbuff setbuff;
Asetvol setvol;
Admemmove dmemmove;
Aloadadpcm loadadpcm;
Amixer mixer;
Asetloop setloop;
long long int force_union_align; /* dummy, force alignment */
} Acmd;
/*
* ADPCM State
*/
#define ADPCMVSIZE 8
#define ADPCMFSIZE 16
typedef short ADPCM_STATE[ADPCMFSIZE];
/*
* Pole filter state
*/
typedef short POLEF_STATE[4];
/*
* Resampler state
*/
typedef short RESAMPLE_STATE[16];
/*
* Resampler constants
*/
#define UNITY_PITCH 0x8000
#define MAX_RATIO 1.99996 /* within .03 cents of +1 octave */
/*
* Enveloper/Mixer state
*/
typedef short ENVMIX_STATE[40];
/*
* Macros to assemble the audio command list
*/
#define aADPCMdec(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aPoleFilter(pkt, f, g, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aClearBuffer(pkt, d, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); \
_a->words.w1 = (unsigned int)(c); \
}
#define aEnvMixer(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aInterleave(pkt, l, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); \
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aLoadBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aMix(pkt, f, g, i, o) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = _SHIFTL(i,16, 16) | _SHIFTL(o, 0, 16); \
}
#define aPan(pkt, f, d, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(d, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aResample(pkt, f, p, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | _SHIFTL(f, 16, 8) |\
_SHIFTL(p, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aSaveBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aSegment(pkt, s, b) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8); \
_a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24); \
}
#define aSetBuffer(pkt, f, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(i, 0, 16)); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aSetVolume(pkt, f, v, t, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \
_SHIFTL(v, 0, 16)); \
_a->words.w1 = _SHIFTL(t, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aSetLoop(pkt, a) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \
_a->words.w1 = (unsigned int)(a); \
}
#define aDMEMMove(pkt, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aLoadADPCM(pkt, c, d) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); \
_a->words.w1 = (unsigned int) d; \
}
#endif /* _LANGUAGE_C */
#endif /* !_ABI_H_ */

#ifndef _ABI_H_
#define _ABI_H_
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.32 $
* $Date: 1997/02/11 08:16:37 $
* $Source: /hosts/liberte/disk6/Master/cvsmdev2/PR/include/abi.h,v $
*
**************************************************************************/
/*
* Header file for the Audio Binary Interface.
* This is included in the Media Binary Interface file
* mbi.h.
*
* This file follows the framework used for graphics.
*
*/
/* Audio commands: */
#define A_SPNOOP 0
#define A_ADPCM 1
#define A_CLEARBUFF 2
#define A_ENVMIXER 3
#define A_LOADBUFF 4
#define A_RESAMPLE 5
#define A_SAVEBUFF 6
#define A_SEGMENT 7
#define A_SETBUFF 8
#define A_SETVOL 9
#define A_DMEMMOVE 10
#define A_LOADADPCM 11
#define A_MIXER 12
#define A_INTERLEAVE 13
#define A_POLEF 14
#define A_SETLOOP 15
#define ACMD_SIZE 32
/*
* Audio flags
*/
#define A_INIT 0x01
#define A_CONTINUE 0x00
#define A_LOOP 0x02
#define A_OUT 0x02
#define A_LEFT 0x02
#define A_RIGHT 0x00
#define A_VOL 0x04
#define A_RATE 0x00
#define A_AUX 0x08
#define A_NOAUX 0x00
#define A_MAIN 0x00
#define A_MIX 0x10
/*
* BEGIN C-specific section: (typedef's)
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/*
* Data Structures.
*/
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int addr;
} Aadpcm;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int addr;
} Apolef;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Aenvelope;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int dmem:16;
unsigned int pad2:16;
unsigned int count:16;
} Aclearbuff;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int pad2:16;
unsigned int inL:16;
unsigned int inR:16;
} Ainterleave;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int addr;
} Aloadbuff;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Aenvmixer;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int gain:16;
unsigned int dmemi:16;
unsigned int dmemo:16;
} Amixer;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int dmem2:16;
unsigned int addr;
} Apan;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pitch:16;
unsigned int addr;
} Aresample;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int pad1:16;
unsigned int addr;
} Areverb;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int addr;
} Asavebuff;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:24;
unsigned int pad2:2;
unsigned int number:4;
unsigned int base:24;
} Asegment;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int dmemin:16;
unsigned int dmemout:16;
unsigned int count:16;
} Asetbuff;
typedef struct {
unsigned int cmd:8;
unsigned int flags:8;
unsigned int vol:16;
unsigned int voltgt:16;
unsigned int volrate:16;
} Asetvol;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int dmemin:16;
unsigned int dmemout:16;
unsigned int count:16;
} Admemmove;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int count:16;
unsigned int addr;
} Aloadadpcm;
typedef struct {
unsigned int cmd:8;
unsigned int pad1:8;
unsigned int pad2:16;
unsigned int addr;
} Asetloop;
/*
* Generic Acmd Packet
*/
typedef struct {
unsigned int w0;
unsigned int w1;
} Awords;
typedef union {
Awords words;
Aadpcm adpcm;
Apolef polef;
Aclearbuff clearbuff;
Aenvelope envelope;
Ainterleave interleave;
Aloadbuff loadbuff;
Aenvmixer envmixer;
Aresample resample;
Areverb reverb;
Asavebuff savebuff;
Asegment segment;
Asetbuff setbuff;
Asetvol setvol;
Admemmove dmemmove;
Aloadadpcm loadadpcm;
Amixer mixer;
Asetloop setloop;
long long int force_union_align; /* dummy, force alignment */
} Acmd;
/*
* ADPCM State
*/
#define ADPCMVSIZE 8
#define ADPCMFSIZE 16
typedef short ADPCM_STATE[ADPCMFSIZE];
/*
* Pole filter state
*/
typedef short POLEF_STATE[4];
/*
* Resampler state
*/
typedef short RESAMPLE_STATE[16];
/*
* Resampler constants
*/
#define UNITY_PITCH 0x8000
#define MAX_RATIO 1.99996 /* within .03 cents of +1 octave */
/*
* Enveloper/Mixer state
*/
typedef short ENVMIX_STATE[40];
/*
* Macros to assemble the audio command list
*/
#define aADPCMdec(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aPoleFilter(pkt, f, g, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aClearBuffer(pkt, d, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); \
_a->words.w1 = (unsigned int)(c); \
}
#define aEnvMixer(pkt, f, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aInterleave(pkt, l, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); \
_a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aLoadBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aMix(pkt, f, g, i, o) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(g, 0, 16)); \
_a->words.w1 = _SHIFTL(i,16, 16) | _SHIFTL(o, 0, 16); \
}
#define aPan(pkt, f, d, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(d, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aResample(pkt, f, p, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | _SHIFTL(f, 16, 8) |\
_SHIFTL(p, 0, 16)); \
_a->words.w1 = (unsigned int)(s); \
}
#define aSaveBuffer(pkt, s) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
_a->words.w1 = (unsigned int)(s); \
}
#define aSegment(pkt, s, b) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8); \
_a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24); \
}
#define aSetBuffer(pkt, f, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | \
_SHIFTL(i, 0, 16)); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aSetVolume(pkt, f, v, t, r) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \
_SHIFTL(v, 0, 16)); \
_a->words.w1 = _SHIFTL(t, 16, 16) | _SHIFTL(r, 0, 16); \
}
#define aSetLoop(pkt, a) \
{ \
Acmd *_a = (Acmd *)pkt; \
_a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \
_a->words.w1 = (unsigned int)(a); \
}
#define aDMEMMove(pkt, i, o, c) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24); \
_a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \
}
#define aLoadADPCM(pkt, c, d) \
{ \
Acmd *_a = (Acmd *)pkt; \
\
_a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); \
_a->words.w1 = (unsigned int) d; \
}
#endif /* _LANGUAGE_C */
#endif /* !_ABI_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -263,5 +263,4 @@ void guSprite2DInit(uSprite *SpritePointer,
int SourceImageOffsetS,
int SourceImageOffsetT);
#endif /* !_GU_H_ */

#endif /* !_GU_H_ */

View File

@ -1,99 +1,98 @@
#ifndef _MBI_H_
#define _MBI_H_
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.135 $
* $Date: 1997/11/26 00:30:54 $
* $Source: /hosts/liberte/disk6/Master/cvsmdev2/PR/include/mbi.h,v $
*
**************************************************************************/
/*
* Header file for the Media Binary Interface
*
* NOTE: This file is included by the RSP microcode, so any C-specific
* constructs must be bracketed by #ifdef _LANGUAGE_C
*
*/
/*
* the SHIFT macros are used to build display list commands, inserting
* bit-fields into a 32-bit word. They take a value, a shift amount,
* and a width.
*
* For the left shift, the lower bits of the value are masked,
* then shifted left.
*
* For the right shift, the value is shifted right, then the lower bits
* are masked.
*
* (NOTE: _SHIFTL(v, 0, 32) won't work, just use an assignment)
*
*/
#define _SHIFTL(v, s, w) \
((unsigned int) (((unsigned int)(v) & ((0x01 << (w)) - 1)) << (s)))
#define _SHIFTR(v, s, w) \
((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1)))
#define _SHIFT _SHIFTL /* old, for compatibility only */
#define G_ON (1)
#define G_OFF (0)
/**************************************************************************
*
* Graphics Binary Interface
*
**************************************************************************/
#include <PR/gbi.h>
/**************************************************************************
*
* Audio Binary Interface
*
**************************************************************************/
#include <PR/abi.h>
/**************************************************************************
*
* Task list
*
**************************************************************************/
#define M_GFXTASK 1
#define M_AUDTASK 2
#define M_VIDTASK 3
/**************************************************************************
*
* Segment macros and definitions
*
**************************************************************************/
#define NUM_SEGMENTS (16)
#define SEGMENT_OFFSET(a) ((unsigned int)(a) & 0x00ffffff)
#define SEGMENT_NUMBER(a) (((unsigned int)(a) << 4) >> 28)
#define SEGMENT_ADDR(num, off) (((num) << 24) + (off))
#ifndef NULL
#define NULL 0
#endif
#endif /* !_MBI_H_ */

#ifndef _MBI_H_
#define _MBI_H_
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.135 $
* $Date: 1997/11/26 00:30:54 $
* $Source: /hosts/liberte/disk6/Master/cvsmdev2/PR/include/mbi.h,v $
*
**************************************************************************/
/*
* Header file for the Media Binary Interface
*
* NOTE: This file is included by the RSP microcode, so any C-specific
* constructs must be bracketed by #ifdef _LANGUAGE_C
*
*/
/*
* the SHIFT macros are used to build display list commands, inserting
* bit-fields into a 32-bit word. They take a value, a shift amount,
* and a width.
*
* For the left shift, the lower bits of the value are masked,
* then shifted left.
*
* For the right shift, the value is shifted right, then the lower bits
* are masked.
*
* (NOTE: _SHIFTL(v, 0, 32) won't work, just use an assignment)
*
*/
#define _SHIFTL(v, s, w) \
((unsigned int) (((unsigned int)(v) & ((0x01 << (w)) - 1)) << (s)))
#define _SHIFTR(v, s, w) \
((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1)))
#define _SHIFT _SHIFTL /* old, for compatibility only */
#define G_ON (1)
#define G_OFF (0)
/**************************************************************************
*
* Graphics Binary Interface
*
**************************************************************************/
#include <PR/gbi.h>
/**************************************************************************
*
* Audio Binary Interface
*
**************************************************************************/
#include <PR/abi.h>
/**************************************************************************
*
* Task list
*
**************************************************************************/
#define M_GFXTASK 1
#define M_AUDTASK 2
#define M_VIDTASK 3
/**************************************************************************
*
* Segment macros and definitions
*
**************************************************************************/
#define NUM_SEGMENTS (16)
#define SEGMENT_OFFSET(a) ((unsigned int)(a) & 0x00ffffff)
#define SEGMENT_NUMBER(a) (((unsigned int)(a) << 4) >> 28)
#define SEGMENT_ADDR(num, off) (((num) << 24) + (off))
#ifndef NULL
#define NULL 0
#endif
#endif /* !_MBI_H_ */

View File

@ -1,201 +1,201 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.8 $
* $Date: 1997/11/10 10:48:35 $
* $Source: /hosts/liberte/disk6/Master/cvsmdev2/PR/include/sptask.h,v $
*
**************************************************************************/
#ifndef _SPTASK_H_
#define _SPTASK_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Task List Structure.
*
* Things an app might pass to the SP via the task list.
* Not every task ucode would need/use every field, but
*
* - type (audio, gfx, video, ...)
* - flags
* - wait for DP to drain before running new task
* - SEE BIT DEFINITIONS UNDER "Task Flags field"
* - pointer to boot ucode
* - size of boot ucode
* - pointer to ucode
* - size of ucode
* - pointer to initial DMEM data
* - size of initial DMEM data
* - pointer to DRAM stack
* - size of DRAM stack (max)
* - pointer to output buffer
* - pointer to store output buffer length
* - generic data pointer (for display list, etc.)
* - generic data length (for display list, etc.)
* - pointer to buffer where to store saved DMEM (in yield case)
* - size of buffer to store saved DMEM.
*
* IMPORTANT!!! Watch alignment issues.
*
* IMPORTANT!!! Watch data cache issues. The RCP may write data into the
* dram_stack, output_buff, output_buff_size, and the yield_data_ptr areas.
* These buffers should be cache aligned and use the entire line (16 bytes) to
* avoid corruption by writebacks by the CPU (cache tearing).
*
* IMPORTANT!!! all addresses are virtual addresses. Library does
* any necessary translation.
*
*/
typedef struct {
u32 type;
u32 flags;
u64 *ucode_boot;
u32 ucode_boot_size;
u64 *ucode;
u32 ucode_size;
u64 *ucode_data;
u32 ucode_data_size;
u64 *dram_stack;
u32 dram_stack_size;
u64 *output_buff;
u64 *output_buff_size;
u64 *data_ptr;
u32 data_size;
u64 *yield_data_ptr;
u32 yield_data_size;
} OSTask_t;
typedef union {
OSTask_t t;
long long int force_structure_alignment;
} OSTask;
typedef u32 OSYieldResult;
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_ASSEMBLY
/*
* For the RSP ucode:
* offsets into the task structure
*/
#include <PR/sptaskoff.h>
#endif
/*
* Task Flags field
*/
#define OS_TASK_YIELDED 0x0001
#define OS_TASK_DP_WAIT 0x0002
#define OS_TASK_LOADABLE 0x0004
#define OS_TASK_SP_ONLY 0x0008
#define OS_TASK_USR0 0x0010
#define OS_TASK_USR1 0x0020
#define OS_TASK_USR2 0x0040
#define OS_TASK_USR3 0x0080
/*
* Size of Yield buffer. The taskHdrPtr->t.yield_data_ptr must point to a
* buffer of this size. (The size is in bytes). ONLY If the task will NEVER
* yield it may be a null pointer. The buffer must be aligned to a 64 bit
* boundary. The taskHdrPtr->t.yield_data_ptr must be set to point to the
* buffer BEFORE the task is started.
*/
#if (defined(F3DEX_GBI)||defined(F3DLP_GBI))
#define OS_YIELD_DATA_SIZE 0xc00
#else
#define OS_YIELD_DATA_SIZE 0x900
#endif
#define OS_YIELD_AUDIO_SIZE 0x400
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/*
* this macro simulates atomic action.
*/
#define osSpTaskStart(tp) \
{ \
osSpTaskLoad((tp)); \
osSpTaskStartGo((tp)); \
}
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/*
* break this up into two steps for debugging.
*/
extern void osSpTaskLoad(OSTask *tp);
extern void osSpTaskStartGo(OSTask *tp);
extern void osSpTaskYield(void);
extern OSYieldResult osSpTaskYielded(OSTask *tp);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_SPTASK_H */
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
/**************************************************************************
*
* $Revision: 1.8 $
* $Date: 1997/11/10 10:48:35 $
* $Source: /hosts/liberte/disk6/Master/cvsmdev2/PR/include/sptask.h,v $
*
**************************************************************************/
#ifndef _SPTASK_H_
#define _SPTASK_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Task List Structure.
*
* Things an app might pass to the SP via the task list.
* Not every task ucode would need/use every field, but
*
* - type (audio, gfx, video, ...)
* - flags
* - wait for DP to drain before running new task
* - SEE BIT DEFINITIONS UNDER "Task Flags field"
* - pointer to boot ucode
* - size of boot ucode
* - pointer to ucode
* - size of ucode
* - pointer to initial DMEM data
* - size of initial DMEM data
* - pointer to DRAM stack
* - size of DRAM stack (max)
* - pointer to output buffer
* - pointer to store output buffer length
* - generic data pointer (for display list, etc.)
* - generic data length (for display list, etc.)
* - pointer to buffer where to store saved DMEM (in yield case)
* - size of buffer to store saved DMEM.
*
* IMPORTANT!!! Watch alignment issues.
*
* IMPORTANT!!! Watch data cache issues. The RCP may write data into the
* dram_stack, output_buff, output_buff_size, and the yield_data_ptr areas.
* These buffers should be cache aligned and use the entire line (16 bytes) to
* avoid corruption by writebacks by the CPU (cache tearing).
*
* IMPORTANT!!! all addresses are virtual addresses. Library does
* any necessary translation.
*
*/
typedef struct {
u32 type;
u32 flags;
u64 *ucode_boot;
u32 ucode_boot_size;
u64 *ucode;
u32 ucode_size;
u64 *ucode_data;
u32 ucode_data_size;
u64 *dram_stack;
u32 dram_stack_size;
u64 *output_buff;
u64 *output_buff_size;
u64 *data_ptr;
u32 data_size;
u64 *yield_data_ptr;
u32 yield_data_size;
} OSTask_t;
typedef union {
OSTask_t t;
long long int force_structure_alignment;
} OSTask;
typedef u32 OSYieldResult;
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_ASSEMBLY
/*
* For the RSP ucode:
* offsets into the task structure
*/
#include <PR/sptaskoff.h>
#endif
/*
* Task Flags field
*/
#define OS_TASK_YIELDED 0x0001
#define OS_TASK_DP_WAIT 0x0002
#define OS_TASK_LOADABLE 0x0004
#define OS_TASK_SP_ONLY 0x0008
#define OS_TASK_USR0 0x0010
#define OS_TASK_USR1 0x0020
#define OS_TASK_USR2 0x0040
#define OS_TASK_USR3 0x0080
/*
* Size of Yield buffer. The taskHdrPtr->t.yield_data_ptr must point to a
* buffer of this size. (The size is in bytes). ONLY If the task will NEVER
* yield it may be a null pointer. The buffer must be aligned to a 64 bit
* boundary. The taskHdrPtr->t.yield_data_ptr must be set to point to the
* buffer BEFORE the task is started.
*/
#if (defined(F3DEX_GBI)||defined(F3DLP_GBI))
#define OS_YIELD_DATA_SIZE 0xc00
#else
#define OS_YIELD_DATA_SIZE 0x900
#endif
#define OS_YIELD_AUDIO_SIZE 0x400
/**************************************************************************
*
* Global definitions
*
*/
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/*
* this macro simulates atomic action.
*/
#define osSpTaskStart(tp) \
{ \
osSpTaskLoad((tp)); \
osSpTaskStartGo((tp)); \
}
/**************************************************************************
*
* Extern variables
*
*/
/**************************************************************************
*
* Function prototypes
*
*/
/*
* break this up into two steps for debugging.
*/
extern void osSpTaskLoad(OSTask *tp);
extern void osSpTaskStartGo(OSTask *tp);
extern void osSpTaskYield(void);
extern OSYieldResult osSpTaskYielded(OSTask *tp);
#endif /* _LANGUAGE_C */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_SPTASK_H */

View File

@ -316,7 +316,7 @@ void func_8006E070(s16, s32);
u16 func_800174F4(s32, s32);
void func_8001775C(unkObjectStruct*, s32, s32);
void func_800264F8(s16, s16, f32, char*, char*, s32);
f32 func_80088060(f32);
f32 __sinf(f32);
void func_8001D420(s32, void*, void*, void*);
void func_8001D57C(s32);
f32 func_800B1750(f32);

72
include/sys/asm.h Normal file
View File

@ -0,0 +1,72 @@
/************************************************************************
Copyright (C) 1998,1999 NINTENDO Co,Ltd,
Copyright (C) 1998,1999 MONEGI CORPORATION,
All Rights Reserved
This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp.
and it is not to be reproduced, published, disclosed to others, copied,
adapted, distributed, or displayed without the prior authorization of
NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed
this Notice on all copies of the program, including partial copies or
modified versions thereof.
*************************************************************************/
/************************************************************************
$Date: 1999/07/06 13:21:13 $
$Revision: 1.1 $
$Author: doseki $
************************************************************************/
#ifndef __ASM_H__
#define __ASM_H__
#ifdef __cplusplus
extern "C" {
#endif
#define _MIPS_ISA_MIPS1 1 /* R2/3K */
#define _MIPS_ISA_MIPS2 2 /* R4K/6K */
#define _MIPS_ISA_MIPS3 3 /* R4K */
#define _MIPS_ISA_MIPS4 4 /* TFP */
#define _MIPS_SIM_ABI32 1 /* MIPS MSIG calling convention */
#define _MIPS_SIM_NABI32 2 /* MIPS new 32-bit abi */
/* NABI32 is 64bit calling convention but 32bit type sizes) */
#define _MIPS_SIM_ABI64 3 /* MIPS 64 calling convention */
#define LEAF(x) \
.globl x; \
.ent x,0; \
x:; \
.frame sp,0,ra
#define XLEAF(x) \
.global x;
#define END(proc) \
.end proc
#define ABS(x, y) \
.globl x; \
x = y
#define EXPORT(x) \
.globl x; \
x:
/*
#define WEAK(x, y) \
.weak x; \
.set x,y;
*/
#define WEAK(x, y)
#define STAY1(stmnt) .set noreorder; stmnt; .set reorder;
#define STAY2(stmnt, arg1) .set noreorder; stmnt, arg1; .set reorder;
#define STAY3(stmnt, arg1, arg2) .set noreorder; stmnt, arg1, arg2; .set reorder;
#define NOP .set noreorder; nop; .set reorder;
#define CACHE(op, reg) .set noreorder; cache op, reg; .set reorder;
#ifdef __cplusplus
}
#endif
#endif /* !__ASM_H__ */

187
include/sys/regdef.h Normal file
View File

@ -0,0 +1,187 @@
/************************************************************************
Copyright (C) 1998,1999 NINTENDO Co,Ltd,
Copyright (C) 1998,1999 MONEGI CORPORATION,
All Rights Reserved
This program is a trade secret of NINTENDO Co,Ltd and MONEGI Corp.
and it is not to be reproduced, published, disclosed to others, copied,
adapted, distributed, or displayed without the prior authorization of
NINTENDO Co,Ltd. and MONEGI Corp. Licensee agrees to attach or embed
this Notice on all copies of the program, including partial copies or
modified versions thereof.
*************************************************************************/
/************************************************************************
$Date: 1999/07/06 13:21:13 $
$Revision: 1.1 $
$Author: doseki $
************************************************************************/
#ifndef __REGDEF_H__
#define __REGDEF_H__
#ifdef __cplusplus
extern "C" {
#endif
#ifdef mips
#if (_MIPS_SIM == _MIPS_SIM_ABI32)
#define zero $0
#define AT $at
#define v0 $2
#define v1 $3
#define a0 $4
#define a1 $5
#define a2 $6
#define a3 $7
#define t0 $8
#define t1 $9
#define t2 $10
#define t3 $11
#define t4 $12
#define ta0 $12
#define t5 $13
#define ta1 $13
#define t6 $14
#define ta2 $14
#define t7 $15
#define ta3 $15
#define s0 $16
#define s1 $17
#define s2 $18
#define s3 $19
#define s4 $20
#define s5 $21
#define s6 $22
#define s7 $23
#define t8 $24
#define t9 $25
#define jp $25
#define k0 $26
#define k1 $27
#define gp $28
#define sp $29
#define fp $30
#define s8 $30
#define ra $31
#endif
#if (_MIPS_SIM == _MIPS_SIM_ABI64)
#define zero $0
#define AT $at
#define v0 $2
#define v1 $3
#define a0 $4
#define a1 $5
#define a2 $6
#define a3 $7
#define a4 $8
#define ta0 $8
#define a5 $9
#define ta1 $9
#define a6 $10
#define ta2 $10
#define a7 $11
#define ta3 $11
#define t0 $12
#define t1 $13
#define t2 $14
#define t3 $15
#define s0 $16
#define s1 $17
#define s2 $18
#define s3 $19
#define s4 $20
#define s5 $21
#define s6 $22
#define s7 $23
#define t8 $24
#define t9 $25
#define jp $25
#define k0 $26
#define k1 $27
#define gp $28
#define sp $29
#define fp $30
#define s8 $30
#define ra $31
#endif
#if (_MIPS_SIM == _MIPS_SIM_ABI32)
#define fv0 $f0
#define fv0f $f1
#define fv1 $f2
#define fv1f $f3
#define fa0 $f12
#define fa0f $f13
#define fa1 $f14
#define fa1f $f15
#define ft0 $f4
#define ft0f $f5
#define ft1 $f6
#define ft1f $f7
#define ft2 $f8
#define ft2f $f9
#define ft3 $f10
#define ft3f $f11
#define ft4 $f16
#define ft4f $f17
#define ft5 $f18
#define ft5f $f19
#define fs0 $f20
#define fs0f $f21
#define fs1 $f22
#define fs1f $f23
#define fs2 $f24
#define fs2f $f25
#define fs3 $f26
#define fs3f $f27
#define fs4 $f28
#define fs4f $f29
#define fs5 $f30
#define fs5f $f31
#endif
#if (_MIPS_SIM == _MIPS_SIM_ABI64)
#define fv0 $f0
#define fv1 $f2
#define fa0 $f12
#define fa1 $f13
#define fa2 $f14
#define fa3 $f15
#define fa4 $f16
#define fa5 $f17
#define fa6 $f18
#define fa7 $f19
#define ft0 $f4
#define ft1 $f5
#define ft2 $f6
#define ft3 $f7
#define ft4 $f8
#define ft5 $f9
#define ft6 $f10
#define ft7 $f11
#define ft8 $f20
#define ft9 $f21
#define ft10 $f22
#define ft11 $f23
#define ft12 $f1
#define ft13 $f3
#define fs0 $f24
#define fs1 $f25
#define fs2 $f26
#define fs3 $f27
#define fs4 $f28
#define fs5 $f29
#define fs6 $f30
#define fs7 $f31
#endif
#define fcr31 $31
#endif /* mips */
#ifdef __cplusplus
}
#endif
#endif /* !__REGDEF_H__ */

View File

@ -115,6 +115,17 @@ segments:
- [0x83490, bin]
#- [0x83490, c] #has some code, weird to split?
- [0x83960, c]
- [0x88E00, c, "../src/lib/2.0I/gu/translate"]
- [0x88ED0, c, "../src/lib/2.0I/gu/random"]
- [0x88F00, hasm, "lib/2.0I/os/invaldcache"]
- [0x88FB0, hasm, "lib/2.0I/os/invalicache"]
- [0x89090, hasm, "lib/2.0I/os/setintmask"]
- [0x89130, hasm, "lib/2.0I/os/setcause"]
- [0x89140, hasm, "lib/2.0I/os/setcompare"]
- [0x89150, hasm, "lib/2.0I/os/setcount"]
- [0x89160, hasm, "lib/2.0I/os/setsr"]
- [0x89170, hasm, "lib/2.0I/os/osWritebackDCache"]
- [0x891F0, hasm, "lib/2.0I/os/writebackdcacheall"]
- [0x89220, c, "../src/lib/2.0I/os/createmesgqueue"]
- [0x89250, c, "../src/lib/2.0I/os/createthread"]
- [0x89320, c, "../src/lib/2.0I/os/destroythread"]

View File

@ -41,7 +41,7 @@ void func_80046828(unkObjectStruct* arg0) {
switch (arg0->unk_4C) {
case 0:
arg0->unk_24 = arg0->unk_24 + 30.0f;
arg0->unk_30 = func_80088060(arg0->unk_24 * D_800CAFF0) * 0.5f + 1.0f;
arg0->unk_30 = __sinf(arg0->unk_24 * D_800CAFF0) * 0.5f + 1.0f;
for (i = 1; (((D_800D6658 + 1) / 10) + 1) >= i; i++) {
func_80067354(D_800D65FC[D_800D6654], i, arg0->unk_30, arg0->unk_30);
@ -89,7 +89,7 @@ void func_800471FC(void) {
}
void func_8004720C(unkObjectStruct* arg0) {
arg0->unk_1C = 74.0f - (func_80088060((f32) ((f64) arg0->unk_28 * D_800CB008)) * 5.0f);
arg0->unk_1C = 74.0f - (__sinf((f32) ((f64) arg0->unk_28 * D_800CB008)) * 5.0f);
arg0->unk_28 += 8.0f;
if (arg0->unk_28 >= 360.0f) {

View File

@ -251,7 +251,7 @@ void func_8004F044(Object* arg0) {
void func_8004F084(unkObjectStruct* arg0) {
f32 temp_f0;
func_800264F8(arg0->unk_3C, arg0->unk_44, (func_80088060((f32) (arg0->unk_18 * D_800CB128)) / 2.0f) + 0.5f, D_800CB110, D_800CB11C, 0);
func_800264F8(arg0->unk_3C, arg0->unk_44, (__sinf((f32) (arg0->unk_18 * D_800CB128)) / 2.0f) + 0.5f, D_800CB110, D_800CB11C, 0);
arg0->unk_18 += 20.0f;
if (arg0->unk_18 >= 360.0f) {
arg0->unk_18 -= 360.0f;

View File

@ -66,11 +66,11 @@ INCLUDE_ASM(s32, "83960", func_80086410);
INCLUDE_ASM(s32, "83960", func_80086D94);
INCLUDE_ASM(s32, "83960", func_80086E70);
INCLUDE_ASM(s32, "83960", guMtxF2L);
INCLUDE_ASM(s32, "83960", func_80086F08);
INCLUDE_ASM(s32, "83960", guMtxL2F);
INCLUDE_ASM(s32, "83960", func_80086FB0);
INCLUDE_ASM(s32, "83960", guMtxIdentF);
INCLUDE_ASM(s32, "83960", func_80087000);
@ -78,52 +78,28 @@ INCLUDE_ASM(s32, "83960", func_800870F0);
INCLUDE_ASM(s32, "83960", func_800871CC);
INCLUDE_ASM(s32, "83960", func_80087280);
INCLUDE_ASM(s32, "83960", guMtxCatL);
INCLUDE_ASM(s32, "83960", func_800872F4);
INCLUDE_ASM(s32, "83960", guMtxXFML);
INCLUDE_ASM(s32, "83960", func_80087380);
INCLUDE_ASM(s32, "83960", guOrthoF);
INCLUDE_ASM(s32, "83960", func_800874B0);
INCLUDE_ASM(s32, "83960", guOrtho);
INCLUDE_ASM(s32, "83960", func_80087600);
INCLUDE_ASM(s32, "83960", guPerspectiveF);
INCLUDE_ASM(s32, "83960", func_800877B0);
INCLUDE_ASM(s32, "83960", guPerspective);
INCLUDE_ASM(s32, "83960", func_80087980);
INCLUDE_ASM(s32, "83960", guRotateF);
INCLUDE_ASM(s32, "83960", func_80087ADC);
INCLUDE_ASM(s32, "83960", guRotate);
INCLUDE_ASM(s32, "83960", func_80087C60);
INCLUDE_ASM(s32, "83960", guRotateRPYF);
INCLUDE_ASM(s32, "83960", func_80087DE8);
INCLUDE_ASM(s32, "83960", guRotateRPY);
INCLUDE_ASM(s32, "83960", func_80087F80);
INCLUDE_ASM(s32, "83960", guScaleF);
INCLUDE_ASM(s32, "83960", func_80087FE0);
INCLUDE_ASM(s32, "83960", guScale);
INCLUDE_ASM(s32, "83960", func_80088060);
INCLUDE_ASM(s32, "83960", func_80088200);
INCLUDE_ASM(s32, "83960", func_80088254);
INCLUDE_ASM(s32, "83960", func_800882D0);
INCLUDE_ASM(s32, "83960", func_80088300);
INCLUDE_ASM(s32, "83960", func_800883B0);
INCLUDE_ASM(s32, "83960", func_80088490);
INCLUDE_ASM(s32, "83960", func_80088530);
INCLUDE_ASM(s32, "83960", __osSetCompare);
INCLUDE_ASM(s32, "83960", func_80088550);
INCLUDE_ASM(s32, "83960", func_80088560);
INCLUDE_ASM(s32, "83960", func_80088570);
INCLUDE_ASM(s32, "83960", func_800885F0);
INCLUDE_ASM(s32, "83960", __sinf);

42
src/lib/2.0I/gu/guint.h Normal file
View File

@ -0,0 +1,42 @@
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
#include "mbi.h"
#include "gu.h"
typedef union
{
struct
{
unsigned int hi;
unsigned int lo;
} word;
double d;
} du;
typedef union
{
unsigned int i;
float f;
} fu;
#ifndef __GL_GL_H__
typedef float Matrix[4][4];
#endif
#define ROUND(d) (int)(((d) >= 0.0) ? ((d) + 0.5) : ((d) - 0.5))
#define ABS(d) ((d) > 0) ? (d) : -(d)
extern float __libm_qnan_f;

34
src/lib/2.0I/gu/random.c Normal file
View File

@ -0,0 +1,34 @@
/**************************************************************************
* *
* Copyright (C) 1995, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
#include "guint.h"
/*
* Return a pseudorandom 32 bit number
* try the RAND macro too
*
*/
extern unsigned int xseed;
int guRandom(void)
{
// static unsigned int xseed = 174823885; TODO: Add this to data section?
unsigned int x;
x = (xseed<<2) + 2;
x *= (x+1);
x = x >> 2;
xseed = x;
return( x );
}

View File

@ -0,0 +1,31 @@
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
#include "guint.h"
void guTranslateF(float mf[4][4], float x, float y, float z)
{
guMtxIdentF(mf);
mf[3][0] = x;
mf[3][1] = y;
mf[3][2] = z;
}
void guTranslate(Mtx *m, float x, float y, float z)
{
Matrix mf;
guTranslateF(mf, x, y, z);
guMtxF2L(mf, m);
}

View File

@ -85,7 +85,7 @@ INCLUDE_ASM(s32, "ovl_01_ChanceTime/D51E0", func_800F87CC_D73CC);
INCLUDE_ASM(s32, "ovl_01_ChanceTime/D51E0", func_800F8A6C_D766C);
void func_800F988C_D848C(unkObjectStruct* arg0) {
func_800264F8(arg0->unk_3C, arg0->unk_44, (func_80088060(arg0->unk_18 * D_80101478) / 2.0f) + 0.5f, D_80101464, D_80101470, 0);
func_800264F8(arg0->unk_3C, arg0->unk_44, (__sinf(arg0->unk_18 * D_80101478) / 2.0f) + 0.5f, D_80101464, D_80101470, 0);
arg0->unk_18 += 20.0f;
if (arg0->unk_18 >= 360.0f) {
arg0->unk_18 -= 360.0f;

View File

@ -149,7 +149,7 @@ void func_800F6C14_2861A4(unkObjectStruct* arg0) {
Object* temp_s0_3;
temp_s0 = D_800F7178_ovl48;
temp_s0->unk_18.x = func_80088060(arg0->unk_24 * 0.017453292519943295);
temp_s0->unk_18.x = __sinf(arg0->unk_24 * 0.017453292519943295);
temp_s0_2 = D_800F7178_ovl48;
temp_s0_2->unk_18.z = func_800855C0(arg0->unk_24 * 0.017453292519943295);
if ((arg0->unk_4C == 0) || !(arg0->unk_24 < -310.0f)) {
@ -159,7 +159,7 @@ void func_800F6C14_2861A4(unkObjectStruct* arg0) {
}
} else {
temp_s0_3 = D_800F7178_ovl48;
temp_s0_3->unk_30 = ((func_80088060(arg0->unk_28 * 0.017453292519943295)) * 4.0f) + D_800F70CC_28665C[1].y;
temp_s0_3->unk_30 = ((__sinf(arg0->unk_28 * 0.017453292519943295)) * 4.0f) + D_800F70CC_28665C[1].y;
arg0->unk_28 = arg0->unk_28 + 5.0f;
if (arg0->unk_28 >= 360.0f) {
arg0->unk_28 -= 360.0f;

View File

@ -137,7 +137,7 @@ void func_800F6C10_286D30(unkObjectStruct* arg0) {
Object* temp_s0_3;
temp_s0 = D_800F7188;
temp_s0->unk_18.x = func_80088060(arg0->unk_24 * 0.017453292519943295);
temp_s0->unk_18.x = __sinf(arg0->unk_24 * 0.017453292519943295);
temp_s0_2 = D_800F7188;
temp_s0_2->unk_18.z = func_800855C0(arg0->unk_24 * 0.017453292519943295);
if ((arg0->unk_4C == 0) || !(arg0->unk_24 < -310.0f)) {
@ -147,7 +147,7 @@ void func_800F6C10_286D30(unkObjectStruct* arg0) {
}
} else {
temp_s0_3 = D_800F7188;
temp_s0_3->unk_30 = ((func_80088060(arg0->unk_28 * 0.017453292519943295)) * 4.0f) + D_800F70DC[1].y;
temp_s0_3->unk_30 = ((__sinf(arg0->unk_28 * 0.017453292519943295)) * 4.0f) + D_800F70DC[1].y;
arg0->unk_28 = arg0->unk_28 + 5.0f;
if (arg0->unk_28 >= 360.0f) {
arg0->unk_28 -= 360.0f;

View File

@ -148,9 +148,9 @@ void func_800F66B4_289C74(void) {
for(i = 0; i < 0x15F; i += 5) {
temp_s0_2 = D_800F74FC;
//temp_s0_2->coords.x = D_800F752C.x + (func_80088060((i * 5) * 0.017453292519943295) * var_f24) ;
//temp_s0_2->coords.x = D_800F752C.x + (__sinf((i * 5) * 0.017453292519943295) * var_f24) ;
new_var3 = &D_800F752C.x;
temp_s0_2->coords.x = (*new_var3) + (func_80088060((i * 5) * 0.017453292519943295) * var_f24);
temp_s0_2->coords.x = (*new_var3) + (__sinf((i * 5) * 0.017453292519943295) * var_f24);
temp_s0_2 = D_800F74FC;
temp_s0_2->coords.y = D_800F752C.y + 200.0f + (i / 2);
@ -158,7 +158,7 @@ void func_800F66B4_289C74(void) {
temp_s0_2->coords.z = D_800F752C.z + (func_800855C0((i * 5) * 0.017453292519943295) * var_f24);
temp_s0_2 = D_800F74FC;
temp_s0_2->unk_18.x = func_80088060(var_f22 * 0.017453292519943295);
temp_s0_2->unk_18.x = __sinf(var_f22 * 0.017453292519943295);
temp_s0_2 = D_800F74FC;
temp_s0_2->unk_18.z = func_800855C0(var_f22 * 0.017453292519943295);
@ -202,7 +202,7 @@ void func_800F66B4_289C74(void) {
temp_s0_2->coords.y = D_800F752C.y + 200.0f + (i / 2);
temp_s0_2->coords.z = D_800F752C.z;
var_f22 += 10.0f;
temp_s0_2->unk_18.x = func_80088060(var_f22 * 0.017453292519943295);
temp_s0_2->unk_18.x = __sinf(var_f22 * 0.017453292519943295);
temp_s0_2 = D_800F74FC;
temp_s0_2->unk_18.z = func_800855C0(var_f22 * 0.017453292519943295);
SleepVProcess();

View File

@ -49,7 +49,7 @@ void func_800F6708_28BD98(unkObjectStruct* arg0) {
Object* temp_s0;
temp_s0 = D_800F7858_28CEE8;
temp_s0->unk_18.x = func_80088060(arg0->unk_18 * (0.017453292519943295));
temp_s0->unk_18.x = __sinf(arg0->unk_18 * (0.017453292519943295));
temp_s0 = D_800F7858_28CEE8;
temp_s0->unk_18.z = func_800855C0(arg0->unk_18 * (0.017453292519943295));
arg0->unk_18 += 5.0f;
@ -82,7 +82,7 @@ void func_800F67BC_28BE4C(void) {
for (i = 0; i < 0x37; i++) {
temp_s0 = D_800F7848_28CED8->unk_3C;
temp_s0->unk_24 = -func_80088060( ((i * 6) + 0x1E) * (0.017453292519943295)) * 30.0f;
temp_s0->unk_24 = -__sinf( ((i * 6) + 0x1E) * (0.017453292519943295)) * 30.0f;
if (i == 10) {
func_8004EE14(0, &D_800F7878_28CF08, 0x14, D_800F7840_28CED0);
}
@ -109,9 +109,9 @@ void func_800F67BC_28BE4C(void) {
for (i = 0, var_s2 = 0; i < 3;) { //strange for loop that only increments if i is 0?
temp_s0_2 = D_800F7848_28CED8->unk_3C;
temp_s0_2->unk_24 = -func_80088060((var_s2 * (0.017453292519943295))) * 20.0f;
temp_s0_2->unk_24 = -__sinf((var_s2 * (0.017453292519943295))) * 20.0f;
temp_s0 = D_800F7840_28CED0->unk_3C;
temp_s0->unk_24 = -func_80088060((var_s2 * (0.017453292519943295))) * 20.0f;
temp_s0->unk_24 = -__sinf((var_s2 * (0.017453292519943295))) * 20.0f;
if (func_8004F018(D_800F7848_28CED8) == 0) {
if (i != 2) {

View File

@ -34,7 +34,7 @@ INCLUDE_ASM(s32, "ovl_52_FlyGuyWarioBoard/28ECA0", func_800F7070_28F730);
void func_800F72DC_28F99C(unkObjectStruct* arg0) {
Object* temp_s0 = D_800F8234;
temp_s0->unk_30 = ((func_80088060((arg0->unk_28 * D_800F8210)) * arg0->unk_4C) + arg0->unk_1C);
temp_s0->unk_30 = ((__sinf((arg0->unk_28 * D_800F8210)) * arg0->unk_4C) + arg0->unk_1C);
arg0->unk_28 += 10.0f;
if (arg0->unk_28 >= 360.0f) {
arg0->unk_28 -= 360.0f;
@ -44,7 +44,7 @@ void func_800F72DC_28F99C(unkObjectStruct* arg0) {
void func_800F7384_28FA44(unkObjectStruct* arg0) {
Object* temp_s0 = D_800F8070;
temp_s0->unk_30 = ((func_80088060((arg0->unk_28 * D_800F8218)) * arg0->unk_4C) + arg0->unk_1C);
temp_s0->unk_30 = ((__sinf((arg0->unk_28 * D_800F8218)) * arg0->unk_4C) + arg0->unk_1C);
arg0->unk_28 += 10.0f;
if (arg0->unk_28 >= 360.0f) {
arg0->unk_28 -= 360.0f;

View File

@ -31,45 +31,45 @@ void func_800F66AC_29332C(f32 arg0) {
if (D_800ED154.unk_00 != 0) {
temp_s0 = D_800F6DF4;
temp = &D_800F6DBC_293A3C;
temp_s0->coords.x = temp->x + (func_80088060(arg0 * 0.017453292519943295) * 200.0f);
temp_s0->coords.x = temp->x + (__sinf(arg0 * 0.017453292519943295) * 200.0f);
temp_s0 = D_800F6DF4;
temp_s0->coords.z = (func_800855C0(arg0 * 0.017453292519943295) * 200.0f) + D_800F6DBC_293A3C.z;
temp_s0 = D_800F6DF4;
temp_s0->unk_18.x = func_80088060(arg0 * 0.017453292519943295);
temp_s0->unk_18.x = __sinf(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DF4;
temp_s0->unk_18.z = func_800855C0(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DFC;
temp_s0->unk_18.x = func_80088060(arg0 * 0.017453292519943295);
temp_s0->unk_18.x = __sinf(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DFC;
temp_s0->unk_18.z = func_800855C0(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DF8;
temp_s0->coords.x = temp->x - (func_80088060(arg0 * 0.017453292519943295) * 200.0f);
temp_s0->coords.x = temp->x - (__sinf(arg0 * 0.017453292519943295) * 200.0f);
temp_s0 = D_800F6DF8;
temp_s0->coords.z = temp->z - (func_800855C0(arg0 * 0.017453292519943295) * 200.0f);
temp_s0 = D_800F6DF8;
temp_s0->unk_18.x = -func_80088060(arg0 * 0.017453292519943295);
temp_s0->unk_18.x = -__sinf(arg0 * 0.017453292519943295);
var_s0 = D_800F6DF8;
var_s0->unk_18.z = -func_800855C0(arg0 * 0.017453292519943295);
} else {
temp_s0 = D_800F6DF8;
temp = &D_800F6DBC_293A3C;
temp_s0->coords.x = (func_80088060(arg0 * 0.017453292519943295) * 200.0f) + temp->x;
temp_s0->coords.x = (__sinf(arg0 * 0.017453292519943295) * 200.0f) + temp->x;
temp_s0 = D_800F6DF8;
temp_s0->coords.z = (func_800855C0(arg0 * 0.017453292519943295) * 200.0f) + D_800F6DBC_293A3C.z;
temp_s0 = D_800F6DF8;
temp_s0->unk_18.x = func_80088060(arg0 * 0.017453292519943295);
temp_s0->unk_18.x = __sinf(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DF8;
temp_s0->unk_18.z = func_800855C0(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DFC;
temp_s0->unk_18.x = func_80088060(arg0 * 0.017453292519943295);
temp_s0->unk_18.x = __sinf(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DFC;
temp_s0->unk_18.z = func_800855C0(arg0 * 0.017453292519943295);
temp_s0 = D_800F6DF4;
temp_s0->coords.x = temp->x - (func_80088060(arg0 * 0.017453292519943295) * 200.0f);
temp_s0->coords.x = temp->x - (__sinf(arg0 * 0.017453292519943295) * 200.0f);
temp_s0 = D_800F6DF4;
temp_s0->coords.z = D_800F6DBC_293A3C.z - (func_800855C0(arg0 * 0.017453292519943295) * 200.0f);
temp_s0 = D_800F6DF4;
temp_s0->unk_18.x = -func_80088060(arg0 * 0.017453292519943295);
temp_s0->unk_18.x = -__sinf(arg0 * 0.017453292519943295);
var_s0 = D_800F6DF4;
var_s0->unk_18.z = -func_800855C0(arg0 * 0.017453292519943295);
}

View File

@ -92,12 +92,12 @@ void func_800F66C4_296C54(void) { //fix me: remove gotos
temp_s0_4 = D_800F7590;
temp_s0_4->coords.y = D_800F75B8_297B48.y + 200.0f + (f32) (var_s1_3 / 2);
temp_f20 = var_s1_3 * 5 * 0.017453292519943295;
temp_s0_4->coords.x = (func_80088060(temp_f20) * var_f22) + D_800F75B8_297B48.x;
temp_s0_4->coords.x = (__sinf(temp_f20) * var_f22) + D_800F75B8_297B48.x;
temp_s0_4 = D_800F7590;
temp_s0_4->coords.z = (func_800855C0(temp_f20) * var_f22) + D_800F75B8_297B48.z;
temp_s0_4 = D_800F7590;
temp_f20_2 = var_f24 * 0.017453292519943295;
temp_s0_4->unk_18.x = func_80088060(temp_f20_2);
temp_s0_4->unk_18.x = __sinf(temp_f20_2);
temp_s0_4 = D_800F7590;
temp_s0_4->unk_18.z = func_800855C0(temp_f20_2);
SleepVProcess();
@ -260,7 +260,7 @@ void func_800F7120_2976B0(void) {
D_800F7654->xScale = D_800F7654->yScale = D_800F7654->zScale = 1.5f;
func_80025F60(*D_800F7654->unk_3C->unk_40, 0);
temp_s0 = D_800F7654;
temp_s0->unk_18.x = func_80088060(0.10471976f);
temp_s0->unk_18.x = __sinf(0.10471976f);
temp_s0_2 = D_800F7654;
temp_s0_2->unk_18.z = func_800855C0(0.10471976f);
D_800F7658 = CreateObject(6U, &D_800F75C4_297B54);

View File

@ -100,12 +100,12 @@ void func_800F66BC_29808C(void) {
temp_s0_4 = D_800F7060_298A30;
temp_s0_4->coords.y = D_800F707C_298A4C.y + 200.0f + (f32) (var_s1_3 / 2);
temp_f20 = var_s1_3 * 5 * 0.017453292519943295;
temp_s0_4->coords.x = (func_80088060(temp_f20) * var_f22) + D_800F707C_298A4C.x;
temp_s0_4->coords.x = (__sinf(temp_f20) * var_f22) + D_800F707C_298A4C.x;
temp_s0_4 = D_800F7060_298A30;
temp_s0_4->coords.z = (func_800855C0(temp_f20) * var_f22) + D_800F707C_298A4C.z;
temp_s0_4 = D_800F7060_298A30;
temp_f20_2 = var_f24 * 0.017453292519943295;
temp_s0_4->unk_18.x = func_80088060(temp_f20_2);
temp_s0_4->unk_18.x = __sinf(temp_f20_2);
temp_s0_4 = D_800F7060_298A30;
temp_s0_4->unk_18.z = func_800855C0(temp_f20_2);
SleepVProcess();

View File

@ -71,7 +71,7 @@ void func_800F8F78_2B9E38(unkObjectStruct* arg0) {
Object* temp_s0;
temp_s0 = D_800F9604;
temp_s0->unk_30 = func_80088060(arg0->unk_28 * D_800F95C8)* 20.0f + 150.0f;
temp_s0->unk_30 = __sinf(arg0->unk_28 * D_800F95C8)* 20.0f + 150.0f;
arg0->unk_28 += 2.0f;
if (arg0->unk_28 >= 360.0f) {
arg0->unk_28 -= 360.0f;

View File

@ -134,6 +134,8 @@ osGetMemSize = 0x800931A0;
osGetCount = 0x80093780;
osGetTime = 0x80088810;
osVirtualToPhysical = 0x80089230;
osWritebackDCache = 0x80088570;
osWritebackDCacheAll = 0x800885F0;
__osProbeTLB = 0x800937A0;
__osDisableInt = 0x80093520;
@ -161,4 +163,34 @@ __osTimerList = 0x800C64C0;
__osCurrentTime = 0x800F0A30;
__osBaseCounter = 0x800ECB18;
__osSetCompare = 0x80088540;
osInvalDCache = 0x80088300;
osInvalICache = 0x800883B0;
osSetIntMask = 0x80088490;
__osSetCause = 0x80088530;
__osSetCompare = 0x80088540;
__osSetCount = 0x80088550;
__osSetSR = 0x80088560;
guRandom = 0x800882D0;
xseed = 0x800C6490;
guTranslateF = 0x80088200;
guTranslate = 0x80088254;
guMtxF2L = 0x80086E70;
guMtxL2F = 0x80086F08;
guMtxIdentF = 0x80086FB0;
guMtxCatL = 0x80087280;
guMtxXFML = 0x800872F4;
guOrthoF = 0x80087380;
guOrtho = 0x800874B0;
guPerspectiveF = 0x80087600;
guPerspective = 0x800877B0;
guRotateF = 0x80087980;
guRotate = 0x80087ADC;
guRotateRPYF = 0x80087C60;
guRotateRPY = 0x80087DE8;
guScaleF = 0x80087F80;
guScale = 0x80087FE0;
__sinf = 0x80088060;