mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-14 05:19:36 +00:00
libultra cleanup (#215)
* cleanup libultra * fixes - use quotes instead of <> for includes - add macros for zelda specific thread priorities - fix Makefile - properly format the remaining pfs structs * fix button macros + add CHECK_BTN_ANY/CHECK_BTN_ALL * remove ULTRA_ABS * fix includes * update z_player.c/z_lib.c + run format.sh * merge upstream/master * fix include in En_Goroiwa * fix includes
This commit is contained in:
parent
6136ee6deb
commit
174af7384d
890 changed files with 2628 additions and 5625 deletions
21
Makefile
21
Makefile
|
@ -129,8 +129,15 @@ O_FILES := $(foreach f,$(S_FILES:.s=.o),build/$f) \
|
|||
# create build directories
|
||||
$(shell mkdir -p build/baserom $(foreach dir,$(SRC_DIRS) $(ASM_DIRS) $(TEXTURE_DIRS) $(TEXTURE_BIN_DIRS) $(SCENE_DIRS),build/$(dir)))
|
||||
|
||||
|
||||
build/src/libultra_boot_O1/%.o: OPTFLAGS := -O1
|
||||
build/src/libultra_boot_O2/%.o: OPTFLAGS := -O2
|
||||
build/src/libultra_code_O1/%.o: OPTFLAGS := -O1
|
||||
build/src/libultra_code_O2/%.o: OPTFLAGS := -O2
|
||||
build/src/libultra_code_O2_g3/%.o: OPTFLAGS := -O2 -g3
|
||||
|
||||
build/src/libultra_code_O1/llcvt.o: MIPS_VERSION := -mips3 -32
|
||||
|
||||
build/src/code/fault.o: CFLAGS += -trapuv
|
||||
build/src/code/fault.o: OPTFLAGS := -O2 -g3
|
||||
build/src/code/fault_drawer.o: CFLAGS += -trapuv
|
||||
|
@ -140,18 +147,12 @@ build/src/code/code_801068B0.o: OPTFLAGS := -g
|
|||
build/src/code/code_80106860.o: OPTFLAGS := -g
|
||||
build/src/code/code_801067F0.o: OPTFLAGS := -g
|
||||
|
||||
# Todo: split libultra_code into libultra_code_O1, etc..
|
||||
build/src/libultra_code/sqrt.o: OPTFLAGS := -O2 -g3
|
||||
build/src/libultra_code/absf.o: OPTFLAGS := -O2 -g3
|
||||
build/src/libultra_code/osSetTimer.o: OPTFLAGS := -O1
|
||||
build/src/libultra_code/osStopTimer.o: OPTFLAGS := -O1
|
||||
build/src/libultra_code/llcvt.o: OPTFLAGS := -O1
|
||||
build/src/libultra_code/llcvt.o: MIPS_VERSION := -mips3 -32
|
||||
|
||||
build/src/libultra_boot_O1/%.o: CC := $(CC_OLD)
|
||||
build/src/libultra_boot_O2/%.o: CC := $(CC_OLD)
|
||||
build/src/libultra_code_O1/%.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
|
||||
build/src/libultra_code_O2/%.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
|
||||
build/src/libultra_code_O2_g3/%.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
build/src/libultra_code/%.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
|
||||
build/src/code/jpegutils.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
|
||||
build/src/code/jpegdecoder.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
|
||||
|
||||
|
@ -229,7 +230,7 @@ build/src/%.o: src/%.c
|
|||
$(CC_CHECK) $^
|
||||
@$(OBJDUMP) -d $@ > $(@:.o=.s)
|
||||
|
||||
build/src/libultra_code/llcvt.o: src/libultra_code/llcvt.c
|
||||
build/src/libultra_code_O1/llcvt.o: src/libultra_code_O1/llcvt.c
|
||||
$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $^
|
||||
$(CC_CHECK) $^
|
||||
python3 tools/set_o32abi_bit.py $@
|
||||
|
|
622
include/PR/abi.h
622
include/PR/abi.h
|
@ -1,622 +0,0 @@
|
|||
#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: /exdisk2/cvs/N64OS/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 {
|
||||
uintptr_t w0;
|
||||
uintptr_t w1;
|
||||
} Awords;
|
||||
|
||||
typedef union {
|
||||
Awords words;
|
||||
#if IS_BIG_ENDIAN && !IS_64_BIT
|
||||
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;
|
||||
#endif
|
||||
long long int force_union_align; /* dummy, force alignment */
|
||||
} Acmd;
|
||||
|
||||
/*
|
||||
* ADPCM State
|
||||
*/
|
||||
typedef short ADPCM_STATE[16];
|
||||
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
/*
|
||||
* Info about parameters:
|
||||
*
|
||||
* A "count" in the following macros is always measured in bytes.
|
||||
*
|
||||
* All volumes/gains are in Q1.15 signed fixed point numbers:
|
||||
* 0x8000 is the minimum volume (-100%), negating the audio curve.
|
||||
* 0x0000 is silent.
|
||||
* 0x7fff is maximum volume (99.997%).
|
||||
*
|
||||
* All DRAM addresses refer to segmented addresses. A segment table shall
|
||||
* first be set up by calling aSegment for each segment. When a DRAM
|
||||
* address is later used as parameter, the 8 high bits will be an index
|
||||
* to the segment table and the lower 24 bits are added to the base address
|
||||
* stored in the segment table for this entry. The result is the physical address.
|
||||
*
|
||||
* Transfers to/from DRAM are executed using DMA and hence follow these restrictions:
|
||||
* All DRAM addresses should be aligned by 8 bytes, or they will be
|
||||
* rounded down to the nearest multiple of 8 bytes.
|
||||
* All DRAM lengths should be aligned by 8 bytes, or they will be
|
||||
* rounded up to the nearest multiple of 8 bytes.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Decompresses ADPCM data.
|
||||
* Possible flags: A_INIT and A_LOOP.
|
||||
*
|
||||
* First set up internal data in DMEM:
|
||||
* aLoadADPCM(cmd++, nEntries * 16, physicalAddressOfBook)
|
||||
* aSetLoop(cmd++, physicalAddressOfLoopState) (if A_LOOP is set)
|
||||
*
|
||||
* Then before this command, call:
|
||||
* aSetBuffer(cmd++, 0, in, out, count)
|
||||
*
|
||||
* Note: count will be rounded up to the nearest multiple of 32 bytes.
|
||||
*
|
||||
* ADPCM decompression works on a block of 16 (uncompressed) samples.
|
||||
* The previous 2 samples and 9 bytes of input are decompressed to
|
||||
* 16 new samples using the code book previously loaded.
|
||||
*
|
||||
* Before the algorithm starts, the previous 16 samples are loaded according to flag:
|
||||
* A_INIT: all zeros
|
||||
* A_LOOP: the address set by aSetLoop
|
||||
* no flags: the DRAM address in the s parameter
|
||||
* These 16 samples are immediately copied to the destination address.
|
||||
*
|
||||
* The result of "count" bytes will be written after these 16 initial samples.
|
||||
* The last 16 samples written to the destination will also be written to
|
||||
* the state address in DRAM.
|
||||
*/
|
||||
#define aADPCMdec(pkt, f, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); \
|
||||
_a->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Not used in SM64.
|
||||
*/
|
||||
#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 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Clears DMEM data, where d is address and c is count, by writing zeros.
|
||||
*
|
||||
* Note: c is rounded up to the nearest multiple of 16 bytes.
|
||||
*/
|
||||
#define aClearBuffer(pkt, d, c) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); \
|
||||
_a->words.w1 = (uintptr_t)(c); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Mixes an envelope with mono sound into 2 or 4 channels.
|
||||
* Possible flags: A_INIT, A_AUX (indicates that 4 channels should be used).
|
||||
*
|
||||
* Before this command, call:
|
||||
* aSetBuffer(cmd++, 0, inBuf, dryLeft, count)
|
||||
* aSetBuffer(cmd++, A_AUX, dryRight, wetLeft, wetRight)
|
||||
*
|
||||
* The first time (A_INIT is set), volume also needs to be set:
|
||||
* aSetVolume(cmd++, A_VOL | A_LEFT, initialVolumeLeft, 0, 0)
|
||||
* aSetVolume(cmd++, A_VOL | A_RIGHT, initialVolumeRight, 0, 0)
|
||||
* aSetVolume32(cmd++, A_RATE | A_LEFT, targetVolumeLeft, rampLeft)
|
||||
* aSetVolume32(cmd++, A_RATE | A_RIGHT, targetVolumeRight, rampRight)
|
||||
* aSetVolume(cmd++, A_AUX, dryVolume, 0, wetVolume)
|
||||
*
|
||||
* This command will now mix samples in inBuf into the destination buffers (dry and wet),
|
||||
* but with the volume increased (or decreased) from initial volumes to target volumes,
|
||||
* with the specified ramp rate. Once the target volume is reached, the volume stays
|
||||
* at that level. Before the samples are finally mixed (added) into the destination
|
||||
* buffers (dry and wet), the volume is changed according to dryVolume and wetVolume.
|
||||
*
|
||||
* Note: count will be rounded up to the nearest multiple of 16 bytes.
|
||||
* Note: the wet channels are used for reverb.
|
||||
*
|
||||
*/
|
||||
#define aEnvMixer(pkt, f, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \
|
||||
_a->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Interleaves two mono channels into stereo.
|
||||
*
|
||||
* First call:
|
||||
* aSetBuffer(cmd++, 0, 0, output, count)
|
||||
*
|
||||
* The count refers to the size of the output.
|
||||
* A left sample will be placed before the right sample.
|
||||
*
|
||||
* Note: count will be rounded up to the nearest multiple of 16 bytes.
|
||||
*/
|
||||
#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); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Loads a buffer from DRAM to DMEM.
|
||||
*
|
||||
* First call:
|
||||
* aSetBuffer(cmd++, 0, in, 0, count)
|
||||
*
|
||||
* The in parameter to aSetBuffer is the destination in DMEM and the
|
||||
* s parameter to this command is the source in DRAM.
|
||||
*/
|
||||
#define aLoadBuffer(pkt, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \
|
||||
_a->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Mixes audio.
|
||||
* Possible flags: no flags used, although parameter present.
|
||||
*
|
||||
* First call:
|
||||
* aSetBuffer(cmd++, 0, 0, 0, count)
|
||||
*
|
||||
* Input and output addresses are taken from the i and o parameters.
|
||||
* The volume with which the input is changed is taken from the g parameter.
|
||||
* After the volume of the input samples have been changed, the result
|
||||
* is added to the output.
|
||||
*
|
||||
* Note: count will be rounded up to the nearest multiple of 32 bytes.
|
||||
*/
|
||||
#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); \
|
||||
}
|
||||
|
||||
// Not present in the audio microcode.
|
||||
#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 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Resamples audio.
|
||||
* Possible flags: A_INIT, A_OUT? (not used in SM64).
|
||||
*
|
||||
* First call:
|
||||
* aSetBuffer(cmd++, 0, in, out, count)
|
||||
*
|
||||
* This command resamples the audio using the given frequency ratio (pitch)
|
||||
* using a filter that uses a window of 4 source samples. This can be used
|
||||
* either for just resampling audio to be able to be played back at a different
|
||||
* sample rate, or to change the pitch if the result is played back at
|
||||
* the same sample rate as the input.
|
||||
*
|
||||
* The frequency ratio is given in UQ1.15 fixed point format.
|
||||
* For no change in frequency, use pitch 0x8000.
|
||||
* For 1 octave up or downsampling to (roughly) half number of samples, use pitch 0xffff.
|
||||
* For 1 octave down or upsampling to double as many samples, use pitch 0x4000.
|
||||
*
|
||||
* Note: count represents the number of output samples and is rounded up to
|
||||
* the nearest multiple of 16 bytes.
|
||||
*
|
||||
* The state consists of the four following source samples when the algorithm stopped as
|
||||
* well as a fractional position, and is initialized to all zeros if A_INIT is given.
|
||||
* Otherwise it is loaded from DRAM at address s.
|
||||
*
|
||||
* The algorithm starts by writing the four source samples from the state (or zero)
|
||||
* to just before the input address given. It then creates one output sample by examining
|
||||
* the four next source samples and then moving the source position zero or more
|
||||
* samples forward. The first output sample (when A_INIT is given) is always 0.
|
||||
*
|
||||
* When "count" samples have been written, the following four source samples
|
||||
* are written to the state in DRAM as well as a fractional position.
|
||||
*/
|
||||
#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 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Stores a buffer in DMEM to DRAM.
|
||||
*
|
||||
* First call:
|
||||
* aSetBuffer(cmd++, 0, 0, out, count)
|
||||
*
|
||||
* The out parameter to aSetBuffer is the source in DMEM and the
|
||||
* s parameter to this command is the destination in DRAM.
|
||||
*/
|
||||
#define aSaveBuffer(pkt, s) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \
|
||||
_a->words.w1 = (uintptr_t)(s); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets up an entry in the segment table.
|
||||
*
|
||||
* The s parameter is a segment index, 0 to 15.
|
||||
* The b parameter is the base offset.
|
||||
*/
|
||||
#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); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets internal DMEM buffer addresses used for later commands.
|
||||
* See each command for how to use aSetBuffer.
|
||||
*/
|
||||
#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); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets internal volume parameters.
|
||||
* See aEnvMixer for more info.
|
||||
*/
|
||||
#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); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets the address to ADPCM loop state.
|
||||
*
|
||||
* The a parameter is a DRAM address.
|
||||
* See aADPCMdec for more info.
|
||||
*/
|
||||
#define aSetLoop(pkt, a) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
_a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \
|
||||
_a->words.w1 = (uintptr_t)(a); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Copies memory in DMEM.
|
||||
*
|
||||
* Copies c bytes from address i to address o.
|
||||
*
|
||||
* Note: count is rounded up to the nearest multiple of 16 bytes.
|
||||
*
|
||||
* Note: This acts as memcpy where 16 bytes are moved at a time, therefore
|
||||
* if input and output overlap, output address should be less than input address.
|
||||
*/
|
||||
#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); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Loads ADPCM book from DRAM into DMEM.
|
||||
*
|
||||
* This command loads ADPCM table entries from DRAM to DMEM.
|
||||
*
|
||||
* The count parameter c should be a multiple of 16 bytes.
|
||||
* The d parameter is a DRAM address.
|
||||
*/
|
||||
#define aLoadADPCM(pkt, c, d) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); \
|
||||
_a->words.w1 = (uintptr_t) d; \
|
||||
}
|
||||
|
||||
// This is a version of aSetVolume which takes a single 32-bit parameter
|
||||
// instead of two 16-bit ones. According to AziAudio, it is used to set
|
||||
// ramping values when neither bit 4 nor bit 8 is set in the flags parameter.
|
||||
// It does not appear in the official abi.h header.
|
||||
/*
|
||||
* Sets internal volume parameters.
|
||||
* See aEnvMixer for more info.
|
||||
*/
|
||||
#define aSetVolume32(pkt, f, v, tr) \
|
||||
{ \
|
||||
Acmd *_a = (Acmd *)pkt; \
|
||||
\
|
||||
_a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \
|
||||
_SHIFTL(v, 0, 16)); \
|
||||
_a->words.w1 = (uintptr_t)(tr); \
|
||||
}
|
||||
|
||||
#endif /* _LANGUAGE_C */
|
||||
|
||||
#endif /* !_ABI_H_ */
|
|
@ -1,392 +0,0 @@
|
|||
/*---------------------------------------------------------------------
|
||||
Copyright (C) 1997, Nintendo.
|
||||
|
||||
File gs2dex.h
|
||||
Coded by Yoshitaka Yasumoto. Jul 31, 1997.
|
||||
Modified by
|
||||
Comments Header file for S2DEX ucode.
|
||||
|
||||
$Id: gs2dex.h,v 1.21 1998/05/28 00:14:49 has Exp $
|
||||
---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _GS2DEX_H_
|
||||
#define _GS2DEX_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
/*===========================================================================*
|
||||
* Macro
|
||||
*===========================================================================*/
|
||||
#define GS_CALC_DXT(line) (((1<< G_TX_DXT_FRAC)-1)/(line)+1)
|
||||
#define GS_PIX2TMEM(pix, siz) ((pix)>>(4-(siz)))
|
||||
#define GS_PIX2DXT(pix, siz) GS_CALC_DXT(GS_PIX2TMEM((pix), (siz)))
|
||||
|
||||
/*===========================================================================*
|
||||
* Data structures for S2DEX microcode
|
||||
*===========================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Background
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define G_BGLT_LOADBLOCK 0x0033
|
||||
#define G_BGLT_LOADTILE 0xfff4
|
||||
|
||||
#define G_BG_FLAG_FLIPS 0x01
|
||||
#define G_BG_FLAG_FLIPT 0x10
|
||||
|
||||
/* Non scalable background plane */
|
||||
typedef struct {
|
||||
u16 imageX; /* x-coordinate of upper-left position of texture (u10.5) */
|
||||
u16 imageW; /* width of the texture (u10.2) */
|
||||
s16 frameX; /* upper-left position of transferred frame (s10.2) */
|
||||
u16 frameW; /* width of transferred frame (u10.2) */
|
||||
|
||||
u16 imageY; /* y-coordinate of upper-left position of texture (u10.5) */
|
||||
u16 imageH; /* height of the texture (u10.2) */
|
||||
s16 frameY; /* upper-left position of transferred frame (s10.2) */
|
||||
u16 frameH; /* height of transferred frame (u10.2) */
|
||||
|
||||
u64 *imagePtr; /* texture source address on DRAM */
|
||||
u16 imageLoad; /* which to use, LoadBlock or LoadTile */
|
||||
u8 imageFmt; /* format of texel - G_IM_FMT_* */
|
||||
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
|
||||
u16 imagePal; /* pallet number */
|
||||
u16 imageFlip; /* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */
|
||||
|
||||
/* The following is set in the initialization routine guS2DInitBg(). There is no need for the user to set it. */
|
||||
u16 tmemW; /* TMEM width and Word size of frame 1 line.
|
||||
At LoadBlock, GS_PIX2TMEM(imageW/4,imageSiz)
|
||||
At LoadTile GS_PIX2TMEM(frameW/4,imageSiz)+1 */
|
||||
u16 tmemH; /* height of TMEM loadable at a time (s13.2) 4 times value
|
||||
When the normal texture, 512/tmemW*4
|
||||
When the CI texture, 256/tmemW*4 */
|
||||
u16 tmemLoadSH; /* SH value
|
||||
At LoadBlock, tmemSize/2-1
|
||||
At LoadTile, tmemW*16-1 */
|
||||
u16 tmemLoadTH; /* TH value or Stride value
|
||||
At LoadBlock, GS_CALC_DXT(tmemW)
|
||||
At LoadTile, tmemH-1 */
|
||||
u16 tmemSizeW; /* skip value of imagePtr for image 1-line
|
||||
At LoadBlock, tmemW*2
|
||||
At LoadTile, GS_PIX2TMEM(imageW/4,imageSiz)*2 */
|
||||
u16 tmemSize; /* skip value of imagePtr for 1-loading
|
||||
= tmemSizeW*tmemH */
|
||||
} uObjBg_t; /* 40 bytes */
|
||||
|
||||
/* Scalable background plane */
|
||||
typedef struct {
|
||||
u16 imageX; /* x-coordinate of upper-left position of texture (u10.5) */
|
||||
u16 imageW; /* width of texture (u10.2) */
|
||||
s16 frameX; /* upper-left position of transferred frame (s10.2) */
|
||||
u16 frameW; /* width of transferred frame (u10.2) */
|
||||
|
||||
u16 imageY; /* y-coordinate of upper-left position of texture (u10.5) */
|
||||
u16 imageH; /* height of texture (u10.2) */
|
||||
s16 frameY; /* upper-left position of transferred frame (s10.2) */
|
||||
u16 frameH; /* height of transferred frame (u10.2) */
|
||||
|
||||
u64 *imagePtr; /* texture source address on DRAM */
|
||||
u16 imageLoad; /* Which to use, LoadBlock or LoadTile? */
|
||||
u8 imageFmt; /* format of texel - G_IM_FMT_* */
|
||||
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
|
||||
u16 imagePal; /* pallet number */
|
||||
u16 imageFlip; /* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */
|
||||
|
||||
u16 scaleW; /* scale value of X-direction (u5.10) */
|
||||
u16 scaleH; /* scale value of Y-direction (u5.10) */
|
||||
s32 imageYorig; /* start point of drawing on image (s20.5) */
|
||||
|
||||
u8 padding[4];
|
||||
|
||||
} uObjScaleBg_t; /* 40 bytes */
|
||||
|
||||
typedef union {
|
||||
uObjBg_t b;
|
||||
uObjScaleBg_t s;
|
||||
long long int force_structure_alignment;
|
||||
} uObjBg;
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* 2D Objects
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define G_OBJ_FLAG_FLIPS 1<<0 /* inversion to S-direction */
|
||||
#define G_OBJ_FLAG_FLIPT 1<<4 /* nversion to T-direction */
|
||||
|
||||
typedef struct {
|
||||
s16 objX; /* s10.2 OBJ x-coordinate of upper-left end */
|
||||
u16 scaleW; /* u5.10 Scaling of u5.10 width direction */
|
||||
u16 imageW; /* u10.5 width of u10.5 texture (length of S-direction) */
|
||||
u16 paddingX; /* Unused - Always 0 */
|
||||
s16 objY; /* s10.2 OBJ y-coordinate of s10.2 OBJ upper-left end */
|
||||
u16 scaleH; /* u5.10 Scaling of u5.10 height direction */
|
||||
u16 imageH; /* u10.5 height of u10.5 texture (length of T-direction) */
|
||||
u16 paddingY; /* Unused - Always 0 */
|
||||
u16 imageStride; /* folding width of texel (In units of 64bit word) */
|
||||
u16 imageAdrs; /* texture header position in TMEM (In units of 64bit word) */
|
||||
u8 imageFmt; /* format of texel - G_IM_FMT_* */
|
||||
u8 imageSiz; /* size of texel - G_IM_SIZ_* */
|
||||
u8 imagePal; /* pallet number (0-7) */
|
||||
u8 imageFlags; /* The display flag - G_OBJ_FLAG_FLIP* */
|
||||
} uObjSprite_t; /* 24 bytes */
|
||||
|
||||
typedef union {
|
||||
uObjSprite_t s;
|
||||
long long int force_structure_alignment;
|
||||
} uObjSprite;
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* 2D Matrix
|
||||
*---------------------------------------------------------------------------*/
|
||||
typedef struct {
|
||||
s32 A, B, C, D; /* s15.16 */
|
||||
s16 X, Y; /* s10.2 */
|
||||
u16 BaseScaleX; /* u5.10 */
|
||||
u16 BaseScaleY; /* u5.10 */
|
||||
} uObjMtx_t; /* 24 bytes */
|
||||
|
||||
typedef union {
|
||||
uObjMtx_t m;
|
||||
long long int force_structure_alignment;
|
||||
} uObjMtx;
|
||||
|
||||
typedef struct {
|
||||
s16 X, Y; /* s10.2 */
|
||||
u16 BaseScaleX; /* u5.10 */
|
||||
u16 BaseScaleY; /* u5.10 */
|
||||
} uObjSubMtx_t; /* 8 bytes */
|
||||
|
||||
typedef union {
|
||||
uObjSubMtx_t m;
|
||||
long long int force_structure_alignment;
|
||||
} uObjSubMtx;
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Loading into TMEM
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define G_OBJLT_TXTRBLOCK 0x00001033
|
||||
#define G_OBJLT_TXTRTILE 0x00fc1034
|
||||
#define G_OBJLT_TLUT 0x00000030
|
||||
|
||||
#define GS_TB_TSIZE(pix,siz) (GS_PIX2TMEM((pix),(siz))-1)
|
||||
#define GS_TB_TLINE(pix,siz) (GS_CALC_DXT(GS_PIX2TMEM((pix),(siz))))
|
||||
|
||||
typedef struct {
|
||||
u32 type; /* G_OBJLT_TXTRBLOCK divided into types */
|
||||
u64 *image; /* texture source address on DRAM */
|
||||
u16 tmem; /* loaded TMEM word address (8byteWORD) */
|
||||
u16 tsize; /* Texture size, Specified by macro GS_TB_TSIZE() */
|
||||
u16 tline; /* width of Texture 1-line, Specified by macro GS_TB_TLINE() */
|
||||
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12) */
|
||||
u32 flag; /* STATE flag */
|
||||
u32 mask; /* STATE mask */
|
||||
} uObjTxtrBlock_t; /* 24 bytes */
|
||||
|
||||
#define GS_TT_TWIDTH(pix,siz) ((GS_PIX2TMEM((pix), (siz))<<2)-1)
|
||||
#define GS_TT_THEIGHT(pix,siz) (((pix)<<2)-1)
|
||||
|
||||
typedef struct {
|
||||
u32 type; /* G_OBJLT_TXTRTILE divided into types */
|
||||
u64 *image; /* texture source address on DRAM */
|
||||
u16 tmem; /* loaded TMEM word address (8byteWORD)*/
|
||||
u16 twidth; /* width of Texture (Specified by macro GS_TT_TWIDTH()) */
|
||||
u16 theight; /* height of Texture (Specified by macro GS_TT_THEIGHT()) */
|
||||
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12) */
|
||||
u32 flag; /* STATE flag */
|
||||
u32 mask; /* STATE mask */
|
||||
} uObjTxtrTile_t; /* 24 bytes */
|
||||
|
||||
#define GS_PAL_HEAD(head) ((head)+256)
|
||||
#define GS_PAL_NUM(num) ((num)-1)
|
||||
|
||||
typedef struct {
|
||||
u32 type; /* G_OBJLT_TLUT divided into types */
|
||||
u64 *image; /* texture source address on DRAM */
|
||||
u16 phead; /* pallet number of load header (Between 256 and 511) */
|
||||
u16 pnum; /* loading pallet number -1 */
|
||||
u16 zero; /* Assign 0 all the time */
|
||||
u16 sid; /* STATE ID Multipled by 4 (Either one of 0, 4, 8 and 12)*/
|
||||
u32 flag; /* STATE flag */
|
||||
u32 mask; /* STATE mask */
|
||||
} uObjTxtrTLUT_t; /* 24 bytes */
|
||||
|
||||
typedef union {
|
||||
uObjTxtrBlock_t block;
|
||||
uObjTxtrTile_t tile;
|
||||
uObjTxtrTLUT_t tlut;
|
||||
long long int force_structure_alignment;
|
||||
} uObjTxtr;
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Loading into TMEM & 2D Objects
|
||||
*---------------------------------------------------------------------------*/
|
||||
typedef struct {
|
||||
uObjTxtr txtr;
|
||||
uObjSprite sprite;
|
||||
} uObjTxSprite; /* 48 bytes */
|
||||
|
||||
/*===========================================================================*
|
||||
* GBI Commands for S2DEX microcode
|
||||
*===========================================================================*/
|
||||
/* GBI Header */
|
||||
#ifdef F3DEX_GBI_2
|
||||
#define G_OBJ_RECTANGLE_R 0xda
|
||||
#define G_OBJ_MOVEMEM 0xdc
|
||||
#define G_RDPHALF_0 0xe4
|
||||
#define G_OBJ_RECTANGLE 0x01
|
||||
#define G_OBJ_SPRITE 0x02
|
||||
#define G_SELECT_DL 0x04
|
||||
#define G_OBJ_LOADTXTR 0x05
|
||||
#define G_OBJ_LDTX_SPRITE 0x06
|
||||
#define G_OBJ_LDTX_RECT 0x07
|
||||
#define G_OBJ_LDTX_RECT_R 0x08
|
||||
#define G_BG_1CYC 0x09
|
||||
#define G_BG_COPY 0x0a
|
||||
#define G_OBJ_RENDERMODE 0x0b
|
||||
#else
|
||||
#define G_BG_1CYC 0x01
|
||||
#define G_BG_COPY 0x02
|
||||
#define G_OBJ_RECTANGLE 0x03
|
||||
#define G_OBJ_SPRITE 0x04
|
||||
#define G_OBJ_MOVEMEM 0x05
|
||||
#define G_SELECT_DL 0xb0
|
||||
#define G_OBJ_RENDERMODE 0xb1
|
||||
#define G_OBJ_RECTANGLE_R 0xb2
|
||||
#define G_OBJ_LOADTXTR 0xc1
|
||||
#define G_OBJ_LDTX_SPRITE 0xc2
|
||||
#define G_OBJ_LDTX_RECT 0xc3
|
||||
#define G_OBJ_LDTX_RECT_R 0xc4
|
||||
#define G_RDPHALF_0 0xe4
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Background wrapped screen
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define gSPBgRectangle(pkt, m, mptr) gDma0p((pkt),(m),(mptr),0)
|
||||
#define gsSPBgRectangle(m, mptr) gsDma0p( (m),(mptr),0)
|
||||
#define gSPBgRectCopy(pkt, mptr) gSPBgRectangle((pkt), G_BG_COPY, (mptr))
|
||||
#define gsSPBgRectCopy(mptr) gsSPBgRectangle( G_BG_COPY, (mptr))
|
||||
#define gSPBgRect1Cyc(pkt, mptr) gSPBgRectangle((pkt), G_BG_1CYC, (mptr))
|
||||
#define gsSPBgRect1Cyc(mptr) gsSPBgRectangle( G_BG_1CYC, (mptr))
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* 2D Objects
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define gSPObjSprite(pkt, mptr) gDma0p((pkt),G_OBJ_SPRITE, (mptr),0)
|
||||
#define gsSPObjSprite(mptr) gsDma0p( G_OBJ_SPRITE, (mptr),0)
|
||||
#define gSPObjRectangle(pkt, mptr) gDma0p((pkt),G_OBJ_RECTANGLE, (mptr),0)
|
||||
#define gsSPObjRectangle(mptr) gsDma0p( G_OBJ_RECTANGLE, (mptr),0)
|
||||
#define gSPObjRectangleR(pkt, mptr) gDma0p((pkt),G_OBJ_RECTANGLE_R,(mptr),0)
|
||||
#define gsSPObjRectangleR(mptr) gsDma0p( G_OBJ_RECTANGLE_R,(mptr),0)
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* 2D Matrix
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define gSPObjMatrix(pkt, mptr) gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),0,23)
|
||||
#define gsSPObjMatrix(mptr) gsDma1p( G_OBJ_MOVEMEM,(mptr),0,23)
|
||||
#define gSPObjSubMatrix(pkt, mptr) gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),2, 7)
|
||||
#define gsSPObjSubMatrix(mptr) gsDma1p( G_OBJ_MOVEMEM,(mptr),2, 7)
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Loading into TMEM
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define gSPObjLoadTxtr(pkt, tptr) gDma0p((pkt),G_OBJ_LOADTXTR, (tptr),23)
|
||||
#define gsSPObjLoadTxtr(tptr) gsDma0p( G_OBJ_LOADTXTR, (tptr),23)
|
||||
#define gSPObjLoadTxSprite(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_SPRITE,(tptr),47)
|
||||
#define gsSPObjLoadTxSprite(tptr) gsDma0p( G_OBJ_LDTX_SPRITE,(tptr),47)
|
||||
#define gSPObjLoadTxRect(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_RECT, (tptr),47)
|
||||
#define gsSPObjLoadTxRect(tptr) gsDma0p( G_OBJ_LDTX_RECT, (tptr),47)
|
||||
#define gSPObjLoadTxRectR(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_RECT_R,(tptr),47)
|
||||
#define gsSPObjLoadTxRectR(tptr) gsDma0p( G_OBJ_LDTX_RECT_R,(tptr),47)
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Select Display List
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define gSPSelectDL(pkt, mptr, sid, flag, mask) \
|
||||
{ gDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
||||
gDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }
|
||||
#define gsSPSelectDL(mptr, sid, flag, mask) \
|
||||
{ gsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
||||
gsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }
|
||||
#define gSPSelectBranchDL(pkt, mptr, sid, flag, mask) \
|
||||
{ gDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
||||
gDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }
|
||||
#define gsSPSelectBranchDL(mptr, sid, flag, mask) \
|
||||
{ gsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \
|
||||
gsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Set general status
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define G_MW_GENSTAT 0x08 /* Note that it is the same value of G_MW_FOG */
|
||||
|
||||
#define gSPSetStatus(pkt, sid, val) \
|
||||
gMoveWd((pkt), G_MW_GENSTAT, (sid), (val))
|
||||
#define gsSPSetStatus(sid, val) \
|
||||
gsMoveWd( G_MW_GENSTAT, (sid), (val))
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
* Set Object Render Mode
|
||||
*---------------------------------------------------------------------------*/
|
||||
#define G_OBJRM_NOTXCLAMP 0x01
|
||||
#define G_OBJRM_XLU 0x02 /* Ignored */
|
||||
#define G_OBJRM_ANTIALIAS 0x04 /* Ignored */
|
||||
#define G_OBJRM_BILERP 0x08
|
||||
#define G_OBJRM_SHRINKSIZE_1 0x10
|
||||
#define G_OBJRM_SHRINKSIZE_2 0x20
|
||||
#define G_OBJRM_WIDEN 0x40
|
||||
|
||||
#define gSPObjRenderMode(pkt, mode) gImmp1((pkt),G_OBJ_RENDERMODE,(mode))
|
||||
#define gsSPObjRenderMode(mode) gsImmp1( G_OBJ_RENDERMODE,(mode))
|
||||
|
||||
/*===========================================================================*
|
||||
* Render Mode Macro
|
||||
*===========================================================================*/
|
||||
#define RM_RA_SPRITE(clk) \
|
||||
AA_EN | CVG_DST_CLAMP | \
|
||||
CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE | \
|
||||
GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)
|
||||
|
||||
#define G_RM_SPRITE G_RM_OPA_SURF
|
||||
#define G_RM_SPRITE2 G_RM_OPA_SURF2
|
||||
#define G_RM_RA_SPRITE RM_RA_SPRITE(1)
|
||||
#define G_RM_RA_SPRITE2 RM_RA_SPRITE(2)
|
||||
#define G_RM_AA_SPRITE G_RM_AA_TEX_TERR
|
||||
#define G_RM_AA_SPRITE2 G_RM_AA_TEX_TERR2
|
||||
#define G_RM_XLU_SPRITE G_RM_XLU_SURF
|
||||
#define G_RM_XLU_SPRITE2 G_RM_XLU_SURF2
|
||||
#define G_RM_AA_XLU_SPRITE G_RM_AA_XLU_SURF
|
||||
#define G_RM_AA_XLU_SPRITE2 G_RM_AA_XLU_SURF2
|
||||
|
||||
/*===========================================================================*
|
||||
* External functions
|
||||
*===========================================================================*/
|
||||
extern u64 gspS2DEX_fifoTextStart[], gspS2DEX_fifoTextEnd[];
|
||||
extern u64 gspS2DEX_fifoDataStart[], gspS2DEX_fifoDataEnd[];
|
||||
extern u64 gspS2DEX_fifo_dTextStart[], gspS2DEX_fifo_dTextEnd[];
|
||||
extern u64 gspS2DEX_fifo_dDataStart[], gspS2DEX_fifo_dDataEnd[];
|
||||
extern u64 gspS2DEX2_fifoTextStart[], gspS2DEX2_fifoTextEnd[];
|
||||
extern u64 gspS2DEX2_fifoDataStart[], gspS2DEX2_fifoDataEnd[];
|
||||
extern u64 gspS2DEX2_xbusTextStart[], gspS2DEX2_xbusTextEnd[];
|
||||
extern u64 gspS2DEX2_xbusDataStart[], gspS2DEX2_xbusDataEnd[];
|
||||
extern void guS2DInitBg(uObjBg *);
|
||||
|
||||
#ifdef F3DEX_GBI_2
|
||||
# define guS2DEmuBgRect1Cyc guS2D2EmuBgRect1Cyc /*Wrapper*/
|
||||
# define guS2DEmuSetScissor guS2D2EmuSetScissor /*Wrapper*/
|
||||
extern void guS2D2EmuSetScissor(u32, u32, u32, u32, u8);
|
||||
extern void guS2D2EmuBgRect1Cyc(Gfx **, uObjBg *);
|
||||
#else
|
||||
extern void guS2DEmuSetScissor(u32, u32, u32, u32, u8);
|
||||
extern void guS2DEmuBgRect1Cyc(Gfx **, uObjBg *);
|
||||
#endif
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
#endif /* _GS2DEX_H_ */
|
||||
|
||||
/*======== End of gs2dex.h ========*/
|
|
@ -1,29 +0,0 @@
|
|||
#ifndef _ULTRA64_GU_H_
|
||||
#define _ULTRA64_GU_H_
|
||||
|
||||
#include <PR/mbi.h>
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#define GU_PI 3.1415926
|
||||
/* Functions */
|
||||
|
||||
void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect,
|
||||
float near, float far, float scale);
|
||||
void guPerspective(Mtx *m, u16 *perspNorm, float fovy, float aspect, float near,
|
||||
float far, float scale);
|
||||
void guOrtho(Mtx *m, float left, float right, float bottom, float top,
|
||||
float near, float far, float scale);
|
||||
void guTranslate(Mtx *m, float x, float y, float z);
|
||||
void guRotate(Mtx *m, float a, float x, float y, float z);
|
||||
void guScale(Mtx *m, float x, float y, float z);
|
||||
void guMtxF2L(float mf[4][4], Mtx *m);
|
||||
void guMtxIdent(Mtx *m);
|
||||
void guMtxIdentF(float mf[4][4]);
|
||||
void guMtxL2F(float mf[4][4], Mtx *m);
|
||||
void guNormalize(float *, float *, float *);
|
||||
|
||||
/* Used only in Fast3DEX2 */
|
||||
void guLookAtReflect (Mtx *m, LookAt *l, float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp);
|
||||
#endif
|
|
@ -1,21 +0,0 @@
|
|||
#ifndef _ULTRA64_LIBAUDIO_H_
|
||||
#define _ULTRA64_LIBAUDIO_H_
|
||||
|
||||
#include "abi.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 *offset;
|
||||
s32 len;
|
||||
} ALSeqData;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
s16 revision;
|
||||
s16 seqCount;
|
||||
ALSeqData seqArray[1];
|
||||
} ALSeqFile;
|
||||
|
||||
void alSeqFileNew(ALSeqFile *f, u8 *base);
|
||||
|
||||
#endif
|
|
@ -1,18 +0,0 @@
|
|||
#ifndef _LIBULTRA_H
|
||||
#define _LIBULTRA_H
|
||||
|
||||
#define TV_TYPE_NTSC 1
|
||||
#define TV_TYPE_PAL 0
|
||||
#define TV_TYPE_MPAL 2
|
||||
|
||||
#define RESET_TYPE_COLD_RESET 0
|
||||
#define RESET_TYPE_NMI 1
|
||||
#define RESET_TYPE_BOOT_DISK 2
|
||||
|
||||
extern u32 osTvType;
|
||||
extern u32 osRomBase;
|
||||
extern u32 osResetType;
|
||||
extern u32 osMemSize;
|
||||
extern u8 osAppNmiBuffer[64];
|
||||
|
||||
#endif /* _LIBULTRA_H */
|
102
include/PR/mbi.h
102
include/PR/mbi.h
|
@ -1,102 +0,0 @@
|
|||
#ifndef _MBI_H_
|
||||
#define _MBI_H_
|
||||
|
||||
#include "platform_info.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.136 $
|
||||
* $Date: 1999/01/05 13:04:00 $
|
||||
* $Source: /hosts/gate3/exdisk2/cvs/N64OS/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
|
||||
#define M_HVQTASK 6
|
||||
#define M_HVQMTASK 7
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* 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_ */
|
|
@ -1,92 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_ai.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
||||
|
||||
$RCSfile: os_ai.h,v $
|
||||
$Revision: 1.1 $
|
||||
$Date: 1998/10/09 08:01:04 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _OS_AI_H_
|
||||
#define _OS_AI_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* Audio interface (Ai) */
|
||||
extern u32 osAiGetStatus(void);
|
||||
extern u32 osAiGetLength(void);
|
||||
extern s32 osAiSetFrequency(u32);
|
||||
extern s32 osAiSetNextBuffer(void *, u32);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_AI_H_ */
|
|
@ -1,96 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_cache.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
||||
|
||||
$RCSfile: os_cache.h,v $
|
||||
$Revision: 1.1 $
|
||||
$Date: 1998/10/09 08:01:04 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _OS_CACHE_H_
|
||||
#define _OS_CACHE_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
#define OS_DCACHE_ROUNDUP_ADDR(x) (void *)(((((u32)(x)+0xf)/0x10)*0x10))
|
||||
#define OS_DCACHE_ROUNDUP_SIZE(x) (u32)(((((u32)(x)+0xf)/0x10)*0x10))
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* Cache operations and macros */
|
||||
|
||||
extern void osInvalDCache(void *, size_t);
|
||||
extern void osInvalICache(void *, size_t);
|
||||
extern void osWritebackDCache(void *, size_t);
|
||||
extern void osWritebackDCacheAll(void);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_CACHE_H_ */
|
|
@ -1,107 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_eeprom.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
||||
|
||||
$RCSfile: os_eeprom.h,v $
|
||||
$Revision: 1.1 $
|
||||
$Date: 1998/10/09 08:01:06 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _OS_EEPROM_H_
|
||||
#define _OS_EEPROM_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
#include "os_message.h"
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/* EEPROM TYPE */
|
||||
|
||||
#define EEPROM_TYPE_4K 0x01
|
||||
#define EEPROM_TYPE_16K 0x02
|
||||
|
||||
/* definition for EEPROM */
|
||||
|
||||
#define EEPROM_MAXBLOCKS 64
|
||||
#define EEP16K_MAXBLOCKS 256
|
||||
#define EEPROM_BLOCK_SIZE 8
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* EEPROM interface */
|
||||
|
||||
extern s32 osEepromProbe(OSMesgQueue *);
|
||||
extern s32 osEepromRead(OSMesgQueue *, u8, u8 *);
|
||||
extern s32 osEepromWrite(OSMesgQueue *, u8, u8 *);
|
||||
extern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, int);
|
||||
extern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, int);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_EEPROM_H_ */
|
|
@ -1,119 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_exception.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
||||
|
||||
$RCSfile: os_exception.h,v $
|
||||
$Revision: 1.1 $
|
||||
$Date: 1998/10/09 08:01:07 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _OS_EXCEPTION_H_
|
||||
#define _OS_EXCEPTION_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
typedef u32 OSIntMask;
|
||||
typedef u32 OSHWIntr;
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/* Flags for debugging purpose */
|
||||
|
||||
#define OS_FLAG_CPU_BREAK 1 /* Break exception has occurred */
|
||||
#define OS_FLAG_FAULT 2 /* CPU fault has occurred */
|
||||
|
||||
/* Interrupt masks */
|
||||
|
||||
#define OS_IM_NONE 0x00000001
|
||||
#define OS_IM_SW1 0x00000501
|
||||
#define OS_IM_SW2 0x00000601
|
||||
#define OS_IM_CART 0x00000c01
|
||||
#define OS_IM_PRENMI 0x00001401
|
||||
#define OS_IM_RDBWRITE 0x00002401
|
||||
#define OS_IM_RDBREAD 0x00004401
|
||||
#define OS_IM_COUNTER 0x00008401
|
||||
#define OS_IM_CPU 0x0000ff01
|
||||
#define OS_IM_SP 0x00010401
|
||||
#define OS_IM_SI 0x00020401
|
||||
#define OS_IM_AI 0x00040401
|
||||
#define OS_IM_VI 0x00080401
|
||||
#define OS_IM_PI 0x00100401
|
||||
#define OS_IM_DP 0x00200401
|
||||
#define OS_IM_ALL 0x003fff01
|
||||
#define RCP_IMASK 0x003f0000
|
||||
#define RCP_IMASKSHIFT 16
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* Interrupt operations */
|
||||
|
||||
extern OSIntMask osGetIntMask(void);
|
||||
extern OSIntMask osSetIntMask(OSIntMask);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_EXCEPTION_H_ */
|
|
@ -1,18 +0,0 @@
|
|||
#ifndef _ULTRA64_OS_INTERNAL_H_
|
||||
#define _ULTRA64_OS_INTERNAL_H_
|
||||
|
||||
/* Internal functions used by the operating system */
|
||||
/* Do not include this header in application code */
|
||||
|
||||
/* Variables */
|
||||
|
||||
//extern u64 osClockRate;
|
||||
|
||||
/* Functions */
|
||||
|
||||
/*u32 __osProbeTLB(void *);
|
||||
u32 __osDisableInt(void);
|
||||
void __osRestoreInt(u32);*/
|
||||
OSThread *__osGetCurrFaultedThread(void);
|
||||
|
||||
#endif
|
|
@ -1,10 +0,0 @@
|
|||
#ifndef _OS_LIBC_H_
|
||||
#define _OS_LIBC_H_
|
||||
|
||||
#include "ultratypes.h"
|
||||
|
||||
// Old deprecated functions from strings.h, replaced by memcpy/memset.
|
||||
extern void bcopy(const void *, void *, size_t);
|
||||
extern void bzero(void *, size_t);
|
||||
|
||||
#endif /* !_OS_LIBC_H_ */
|
|
@ -1,155 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_message.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
#ifndef _OS_MESSAGE_H_
|
||||
#define _OS_MESSAGE_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
typedef u32 OSEvent;
|
||||
|
||||
/*
|
||||
* Structure for message
|
||||
*/
|
||||
typedef void * OSMesg;
|
||||
|
||||
/*
|
||||
* Structure for message queue
|
||||
*/
|
||||
typedef struct OSMesgQueue_s {
|
||||
OSThread *mtqueue; /* Queue to store threads blocked
|
||||
on empty mailboxes (receive) */
|
||||
OSThread *fullqueue; /* Queue to store threads blocked
|
||||
on full mailboxes (send) */
|
||||
s32 validCount; /* Contains number of valid message */
|
||||
s32 first; /* Points to first valid message */
|
||||
s32 msgCount; /* Contains total # of messages */
|
||||
OSMesg *msg; /* Points to message buffer array */
|
||||
} OSMesgQueue;
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/* Events */
|
||||
#ifdef _FINALROM
|
||||
#define OS_NUM_EVENTS 15
|
||||
#else
|
||||
#define OS_NUM_EVENTS 23
|
||||
#endif
|
||||
|
||||
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
|
||||
#define OS_EVENT_SW2 1 /* CPU SW2 interrupt */
|
||||
#define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */
|
||||
#define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_SP 4 /* SP task done interrupt */
|
||||
#define OS_EVENT_SI 5 /* SI (controller) interrupt */
|
||||
#define OS_EVENT_AI 6 /* AI interrupt */
|
||||
#define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */
|
||||
#define OS_EVENT_DP 9 /* DP full sync interrupt */
|
||||
#define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */
|
||||
#define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */
|
||||
#define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */
|
||||
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
|
||||
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
|
||||
#ifndef _FINALROM
|
||||
#define OS_EVENT_RDB_READ_DONE 15 /* RDB read ok event: used by rmon */
|
||||
#define OS_EVENT_RDB_LOG_DONE 16 /* read of log data complete */
|
||||
#define OS_EVENT_RDB_DATA_DONE 17 /* read of hostio data complete */
|
||||
#define OS_EVENT_RDB_REQ_RAMROM 18 /* host needs ramrom access */
|
||||
#define OS_EVENT_RDB_FREE_RAMROM 19 /* host is done with ramrom access */
|
||||
#define OS_EVENT_RDB_DBG_DONE 20
|
||||
#define OS_EVENT_RDB_FLUSH_PROF 21
|
||||
#define OS_EVENT_RDB_ACK_PROF 22
|
||||
#endif
|
||||
|
||||
/* Flags to turn blocking on/off when sending/receiving message */
|
||||
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/* Get count of valid messages in queue */
|
||||
#define MQ_GET_COUNT(mq) ((mq)->validCount)
|
||||
|
||||
/* Figure out if message queue is empty or full */
|
||||
#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0)
|
||||
#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount)
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* Message operations */
|
||||
|
||||
extern void osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32);
|
||||
extern s32 osSendMesg(OSMesgQueue *, OSMesg, s32);
|
||||
extern s32 osJamMesg(OSMesgQueue *, OSMesg, s32);
|
||||
extern s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32);
|
||||
|
||||
/* Event operations */
|
||||
|
||||
extern void osSetEventMesg(OSEvent, OSMesgQueue *, OSMesg);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_MESSAGE_H_ */
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef _ULTRA64_OS_MISC_H_
|
||||
#define _ULTRA64_OS_MISC_H_
|
||||
|
||||
/* Miscellaneous OS functions */
|
||||
|
||||
void osInitialize(void);
|
||||
u32 osGetCount(void);
|
||||
|
||||
uintptr_t osVirtualToPhysical(void *);
|
||||
|
||||
#endif
|
|
@ -1,85 +0,0 @@
|
|||
#ifndef _ULTRA64_PI_H_
|
||||
#define _ULTRA64_PI_H_
|
||||
|
||||
/* Ultra64 Parallel Interface */
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 errStatus;
|
||||
void *dramAddr;
|
||||
void *C2Addr;
|
||||
u32 sectorSize;
|
||||
u32 C1ErrNum;
|
||||
u32 C1ErrSector[4];
|
||||
} __OSBlockInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 cmdType;
|
||||
u16 transferMode;
|
||||
u16 blockNum;
|
||||
s32 sectorNum;
|
||||
uintptr_t devAddr;
|
||||
u32 bmCtlShadow;
|
||||
u32 seqCtlShadow;
|
||||
__OSBlockInfo block[2];
|
||||
} __OSTranxInfo;
|
||||
|
||||
typedef struct OSPiHandle_s
|
||||
{
|
||||
struct OSPiHandle_s *next;
|
||||
u8 type;
|
||||
u8 latency;
|
||||
u8 pageSize;
|
||||
u8 relDuration;
|
||||
u8 pulse;
|
||||
u8 domain;
|
||||
u32 baseAddress;
|
||||
u32 speed;
|
||||
__OSTranxInfo transferInfo;
|
||||
} OSPiHandle;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 type;
|
||||
uintptr_t address;
|
||||
} OSPiInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u16 type;
|
||||
u8 pri;
|
||||
u8 status;
|
||||
OSMesgQueue *retQueue;
|
||||
} OSIoMesgHdr;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/*0x00*/ OSIoMesgHdr hdr;
|
||||
/*0x08*/ void *dramAddr;
|
||||
/*0x0C*/ uintptr_t devAddr;
|
||||
/*0x10*/ size_t size;
|
||||
//OSPiHandle *piHandle; //from the official definition
|
||||
} OSIoMesg;
|
||||
|
||||
/* Definitions */
|
||||
|
||||
#define OS_READ 0 // device -> RDRAM
|
||||
#define OS_WRITE 1 // device <- RDRAM
|
||||
|
||||
#define OS_MESG_PRI_NORMAL 0
|
||||
#define OS_MESG_PRI_HIGH 1
|
||||
|
||||
/* Functions */
|
||||
|
||||
s32 osPiStartDma(OSIoMesg *mb, s32 priority, s32 direction,
|
||||
uintptr_t devAddr, void *vAddr, size_t nbytes, OSMesgQueue *mq);
|
||||
void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf,
|
||||
s32 cmdMsgCnt);
|
||||
OSMesgQueue *osPiGetCmdQueue(void);
|
||||
s32 osPiWriteIo(uintptr_t devAddr, u32 data);
|
||||
s32 osPiReadIo(uintptr_t devAddr, u32 *data);
|
||||
|
||||
#endif
|
|
@ -1,92 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_rdp.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
||||
|
||||
$RCSfile: os_rdp.h,v $
|
||||
$Revision: 1.1 $
|
||||
$Date: 1998/10/09 08:01:16 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _OS_RDP_H_
|
||||
#define _OS_RDP_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* Display processor interface (Dp) */
|
||||
extern u32 osDpGetStatus(void);
|
||||
extern void osDpSetStatus(u32);
|
||||
extern void osDpGetCounters(u32 *);
|
||||
extern s32 osDpSetNextBuffer(void *, u64);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_RDP_H_ */
|
|
@ -1,75 +0,0 @@
|
|||
#ifndef _ULTRA64_THREAD_H_
|
||||
#define _ULTRA64_THREAD_H_
|
||||
|
||||
/* Recommended priorities for system threads */
|
||||
#define OS_PRIORITY_MAX 255
|
||||
#define OS_PRIORITY_VIMGR 254
|
||||
#define OS_PRIORITY_RMON 250
|
||||
#define OS_PRIORITY_RMONSPIN 200
|
||||
#define OS_PRIORITY_PIMGR 150
|
||||
#define OS_PRIORITY_SIMGR 140
|
||||
#define OS_PRIORITY_APPMAX 127
|
||||
#define OS_PRIORITY_IDLE 0
|
||||
|
||||
#define OS_STATE_STOPPED 1
|
||||
#define OS_STATE_RUNNABLE 2
|
||||
#define OS_STATE_RUNNING 4
|
||||
#define OS_STATE_WAITING 8
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef s32 OSPri;
|
||||
typedef s32 OSId;
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct {f32 f_odd; f32 f_even;} f;
|
||||
} __OSfp;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* registers */
|
||||
/*0x20*/ u64 at, v0, v1, a0, a1, a2, a3;
|
||||
/*0x58*/ u64 t0, t1, t2, t3, t4, t5, t6, t7;
|
||||
/*0x98*/ u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
/*0xD8*/ u64 t8, t9, gp, sp, s8, ra;
|
||||
/*0x108*/ u64 lo, hi;
|
||||
/*0x118*/ u32 sr, pc, cause, badvaddr, rcp;
|
||||
/*0x12C*/ u32 fpcsr;
|
||||
__OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
|
||||
__OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
|
||||
} __OSThreadContext;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 flag;
|
||||
u32 count;
|
||||
u64 time;
|
||||
} __OSThreadprofile_s;
|
||||
|
||||
typedef struct OSThread_s
|
||||
{
|
||||
/*0x00*/ struct OSThread_s *next;
|
||||
/*0x04*/ OSPri priority;
|
||||
/*0x08*/ struct OSThread_s **queue;
|
||||
/*0x0C*/ struct OSThread_s *tlnext;
|
||||
/*0x10*/ u16 state;
|
||||
/*0x12*/ u16 flags;
|
||||
/*0x14*/ OSId id;
|
||||
/*0x18*/ int fp;
|
||||
/*0x1C*/ __OSThreadprofile_s *thprof;
|
||||
/*0x20*/ __OSThreadContext context;
|
||||
} OSThread;
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
void osCreateThread(OSThread *thread, OSId id, void (*entry)(void *),
|
||||
void *arg, void *sp, OSPri pri);
|
||||
OSId osGetThreadId(OSThread *thread);
|
||||
OSPri osGetThreadPri(OSThread *thread);
|
||||
void osSetThreadPri(OSThread *thread, OSPri pri);
|
||||
void osStartThread(OSThread *thread);
|
||||
void osStopThread(OSThread *thread);
|
||||
|
||||
#endif
|
|
@ -1,27 +0,0 @@
|
|||
#ifndef _ULTRA64_TIME_H_
|
||||
#define _ULTRA64_TIME_H_
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/os_message.h>
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct OSTimer_str
|
||||
{
|
||||
struct OSTimer_str *next;
|
||||
struct OSTimer_str *prev;
|
||||
u64 interval;
|
||||
u64 remaining;
|
||||
OSMesgQueue *mq;
|
||||
OSMesg *msg;
|
||||
} OSTimer;
|
||||
|
||||
typedef u64 OSTime;
|
||||
|
||||
/* Functions */
|
||||
|
||||
OSTime osGetTime(void);
|
||||
void osSetTime(OSTime time);
|
||||
u32 osSetTimer(OSTimer *, OSTime, u64, OSMesgQueue *, OSMesg);
|
||||
|
||||
#endif
|
|
@ -1,107 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_tlb.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
||||
|
||||
$RCSfile: os_tlb.h,v $
|
||||
$Revision: 1.1 $
|
||||
$Date: 1998/10/09 08:01:20 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _OS_TLB_H_
|
||||
#define _OS_TLB_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
typedef u32 OSPageMask;
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Page size argument for TLB routines
|
||||
*/
|
||||
#define OS_PM_4K 0x0000000
|
||||
#define OS_PM_16K 0x0006000
|
||||
#define OS_PM_64K 0x001e000
|
||||
#define OS_PM_256K 0x007e000
|
||||
#define OS_PM_1M 0x01fe000
|
||||
#define OS_PM_4M 0x07fe000
|
||||
#define OS_PM_16M 0x1ffe000
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* TLB management routines */
|
||||
|
||||
extern void osMapTLB(s32, OSPageMask, void *, u32, u32, s32);
|
||||
extern void osMapTLBRdb(void);
|
||||
extern void osUnmapTLB(s32);
|
||||
extern void osUnmapTLBAll(void);
|
||||
extern void osSetTLBASID(s32);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_TLB_H_ */
|
|
@ -1,117 +0,0 @@
|
|||
#ifndef _ULTRA64_VI_H_
|
||||
#define _ULTRA64_VI_H_
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/os_message.h>
|
||||
|
||||
/* Ultra64 Video Interface */
|
||||
|
||||
|
||||
/* Special Features */
|
||||
#define OS_VI_GAMMA_ON 0x0001
|
||||
#define OS_VI_GAMMA_OFF 0x0002
|
||||
#define OS_VI_GAMMA_DITHER_ON 0x0004
|
||||
#define OS_VI_GAMMA_DITHER_OFF 0x0008
|
||||
#define OS_VI_DIVOT_ON 0x0010
|
||||
#define OS_VI_DIVOT_OFF 0x0020
|
||||
#define OS_VI_DITHER_FILTER_ON 0x0040
|
||||
#define OS_VI_DITHER_FILTER_OFF 0x0080
|
||||
|
||||
#define OS_VI_GAMMA 0x08
|
||||
#define OS_VI_GAMMA_DITHER 0x04
|
||||
#define OS_VI_DIVOT 0x10
|
||||
#define OS_VI_DITHER_FILTER 0x10000
|
||||
#define OS_VI_UNK200 0x200
|
||||
#define OS_VI_UNK100 0x100
|
||||
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 ctrl;
|
||||
u32 width;
|
||||
u32 burst;
|
||||
u32 vSync;
|
||||
u32 hSync;
|
||||
u32 leap;
|
||||
u32 hStart;
|
||||
u32 xScale;
|
||||
u32 vCurrent;
|
||||
} OSViCommonRegs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 origin;
|
||||
u32 yScale;
|
||||
u32 vStart;
|
||||
u32 vBurst;
|
||||
u32 vIntr;
|
||||
} OSViFieldRegs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 type;
|
||||
OSViCommonRegs comRegs;
|
||||
OSViFieldRegs fldRegs[2];
|
||||
} OSViMode;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ u16 unk00; //some kind of flags. swap buffer sets to 0x10
|
||||
/* 0x02 */ u16 retraceCount;
|
||||
/* 0x04 */ void* buffer;
|
||||
/* 0x08 */ OSViMode *unk08;
|
||||
/* 0x0c */ u32 features;
|
||||
/* 0x10 */ OSMesgQueue *mq;
|
||||
/* 0x14 */ OSMesg *msg;
|
||||
/* 0x18 */ u32 unk18;
|
||||
/* 0x1c */ u32 unk1c;
|
||||
/* 0x20 */ u32 unk20;
|
||||
/* 0x24 */ f32 unk24;
|
||||
/* 0x28 */ u16 unk28;
|
||||
/* 0x2c */ u32 unk2c;
|
||||
} OSViContext;
|
||||
|
||||
void osCreateViManager(OSPri pri);
|
||||
void osViSetMode(OSViMode *mode);
|
||||
void osViSetEvent(OSMesgQueue *mq, OSMesg msg, u32 retraceCount);
|
||||
void osViBlack(u8 active);
|
||||
void osViSetSpecialFeatures(u32 func);
|
||||
void osViSwapBuffer(void *vaddr);
|
||||
|
||||
|
||||
#define OS_VI_NTSC_LPN1 0 /* NTSC */
|
||||
#define OS_VI_NTSC_LPF1 1
|
||||
#define OS_VI_NTSC_LAN1 2
|
||||
#define OS_VI_NTSC_LAF1 3
|
||||
#define OS_VI_NTSC_LPN2 4
|
||||
#define OS_VI_NTSC_LPF2 5
|
||||
#define OS_VI_NTSC_LAN2 6
|
||||
#define OS_VI_NTSC_LAF2 7
|
||||
#define OS_VI_NTSC_HPN1 8
|
||||
#define OS_VI_NTSC_HPF1 9
|
||||
#define OS_VI_NTSC_HAN1 10
|
||||
#define OS_VI_NTSC_HAF1 11
|
||||
#define OS_VI_NTSC_HPN2 12
|
||||
#define OS_VI_NTSC_HPF2 13
|
||||
|
||||
#define OS_VI_PAL_LPN1 14 /* PAL */
|
||||
#define OS_VI_PAL_LPF1 15
|
||||
#define OS_VI_PAL_LAN1 16
|
||||
#define OS_VI_PAL_LAF1 17
|
||||
#define OS_VI_PAL_LPN2 18
|
||||
#define OS_VI_PAL_LPF2 19
|
||||
#define OS_VI_PAL_LAN2 20
|
||||
#define OS_VI_PAL_LAF2 21
|
||||
#define OS_VI_PAL_HPN1 22
|
||||
#define OS_VI_PAL_HPF1 23
|
||||
#define OS_VI_PAL_HAN1 24
|
||||
#define OS_VI_PAL_HAF1 25
|
||||
#define OS_VI_PAL_HPN2 26
|
||||
#define OS_VI_PAL_HPF2 27
|
||||
|
||||
extern OSViMode osViModeTable[]; /* Global VI mode table */
|
||||
|
||||
|
||||
#endif
|
|
@ -1,113 +0,0 @@
|
|||
#ifndef _ULTRA64_SPTASK_H_
|
||||
#define _ULTRA64_SPTASK_H_
|
||||
|
||||
/* Task Types */
|
||||
#define M_GFXTASK 1
|
||||
#define M_AUDTASK 2
|
||||
#define M_VIDTASK 3
|
||||
#define M_HVQTASK 6
|
||||
#define M_HVQMTASK 7
|
||||
|
||||
#if (defined(F3DEX_GBI) || defined(F3DLP_GBI) || defined(F3DEX_GBI_2))
|
||||
#define OS_YIELD_DATA_SIZE 0xc00
|
||||
#else
|
||||
#define OS_YIELD_DATA_SIZE 0x900
|
||||
#endif
|
||||
#define OS_YIELD_AUDIO_SIZE 0x400
|
||||
|
||||
/* Flags */
|
||||
#define M_TASK_FLAG0 1
|
||||
#define M_TASK_FLAG1 2
|
||||
|
||||
/* SpStatus */
|
||||
#define SPSTATUS_CLEAR_HALT 0x00000001
|
||||
#define SPSTATUS_SET_HALT 0x00000002
|
||||
#define SPSTATUS_CLEAR_BROKE 0x00000004
|
||||
#define SPSTATUS_CLEAR_INTR 0x00000008
|
||||
#define SPSTATUS_SET_INTR 0x00000010
|
||||
#define SPSTATUS_CLEAR_SSTEP 0x00000020
|
||||
#define SPSTATUS_SET_SSTEP 0x00000040
|
||||
#define SPSTATUS_CLEAR_INTR_ON_BREAK 0x00000080
|
||||
#define SPSTATUS_SET_INTR_ON_BREAK 0x00000100
|
||||
#define SPSTATUS_CLEAR_SIGNAL0 0x00000200
|
||||
#define SPSTATUS_SET_SIGNAL0 0x00000400
|
||||
#define SPSTATUS_CLEAR_SIGNAL1 0x00000800
|
||||
#define SPSTATUS_SET_SIGNAL1 0x00001000
|
||||
#define SPSTATUS_CLEAR_SIGNAL2 0x00002000
|
||||
#define SPSTATUS_SET_SIGNAL2 0x00004000
|
||||
#define SPSTATUS_CLEAR_SIGNAL3 0x00008000
|
||||
#define SPSTATUS_SET_SIGNAL3 0x00010000
|
||||
#define SPSTATUS_CLEAR_SIGNAL4 0x00020000
|
||||
#define SPSTATUS_SET_SIGNAL4 0x00040000
|
||||
#define SPSTATUS_CLEAR_SIGNAL5 0x00080000
|
||||
#define SPSTATUS_SET_SIGNAL5 0x00100000
|
||||
#define SPSTATUS_CLEAR_SIGNAL6 0x00200000
|
||||
#define SPSTATUS_SET_SIGNAL6 0x00800000
|
||||
#define SPSTATUS_CLEAR_SIGNAL7 0x01000000
|
||||
#define SPSTATUS_SET_SIGNAL7 0x02000000
|
||||
|
||||
#define SPSTATUS_HALT 0x0001
|
||||
#define SPSTATUS_BROKE 0x0002
|
||||
#define SPSTATUS_DMA_BUSY 0x0004
|
||||
#define SPSTATUS_DMA_FULL 0x0008
|
||||
#define SPSTATUS_IO_FULL 0x0010
|
||||
#define SPSTATUS_SINGLE_STEP 0x0020
|
||||
#define SPSTATUS_INTERRUPT_ON_BREAK 0x0040
|
||||
#define SPSTATUS_SIGNAL0_SET 0x0080
|
||||
#define SPSTATUS_SIGNAL1_SET 0x0100
|
||||
#define SPSTATUS_SIGNAL2_SET 0x0200
|
||||
#define SPSTATUS_SIGNAL3_SET 0x0400
|
||||
#define SPSTATUS_SIGNAL4_SET 0x0800
|
||||
#define SPSTATUS_SIGNAL5_SET 0x1000
|
||||
#define SPSTATUS_SIGNAL6_SET 0x2000
|
||||
#define SPSTATUS_SIGNAL7_SET 0x4000
|
||||
|
||||
/* Types */
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/*0x00*/ u32 type;
|
||||
/*0x04*/ u32 flags;
|
||||
|
||||
/*0x08*/ u64 *ucode_boot;
|
||||
/*0x0C*/ u32 ucode_boot_size;
|
||||
|
||||
/*0x10*/ u64 *ucode;
|
||||
/*0x14*/ u32 ucode_size;
|
||||
|
||||
/*0x18*/ u64 *ucode_data;
|
||||
/*0x1C*/ u32 ucode_data_size;
|
||||
|
||||
/*0x20*/ u64 *dram_stack;
|
||||
/*0x24*/ u32 dram_stack_size;
|
||||
|
||||
/*0x28*/ u64 *output_buff;
|
||||
/*0x2C*/ u64 *output_buff_size;
|
||||
|
||||
/*0x30*/ u64 *data_ptr;
|
||||
/*0x34*/ u32 data_size;
|
||||
|
||||
/*0x38*/ u64 *yield_data_ptr;
|
||||
/*0x3C*/ u32 yield_data_size;
|
||||
} OSTask_t; // size = 0x40
|
||||
|
||||
typedef union {
|
||||
OSTask_t t;
|
||||
long long int force_structure_alignment;
|
||||
} OSTask;
|
||||
|
||||
typedef u32 OSYieldResult;
|
||||
|
||||
/* Functions */
|
||||
|
||||
#define osSpTaskStart(p) \
|
||||
osSpTaskLoad(p); \
|
||||
osSpTaskStartGo(p);
|
||||
|
||||
void osSpTaskLoad(OSTask *task);
|
||||
void osSpTaskStartGo(OSTask *task);
|
||||
void osSpTaskYield(void);
|
||||
OSYieldResult osSpTaskYielded(OSTask *task);
|
||||
|
||||
#endif
|
|
@ -1,23 +0,0 @@
|
|||
#ifndef _ULTRA64_UCODE_H_
|
||||
#define _ULTRA64_UCODE_H_
|
||||
|
||||
#define SP_DRAM_STACK_SIZE8 0x400
|
||||
#define SP_UCODE_SIZE 0x1000
|
||||
#define SP_UCODE_DATA_SIZE 0x800
|
||||
|
||||
// standard boot ucode
|
||||
extern u64 rspF3DBootStart[], rspF3DBootEnd[];
|
||||
|
||||
// F3D ucode
|
||||
extern u64 rspF3DStart[], rspF3DEnd[];
|
||||
|
||||
// F3D ucode data
|
||||
extern u64 rspF3DDataStart[], rspF3DDataEnd[];
|
||||
|
||||
// aspMain (audio) ucode
|
||||
extern u64 rspAspMainStart[], rspAspMainEnd[];
|
||||
|
||||
// aspMain ucode data
|
||||
extern u64 rspAspMainDataStart[], rspAspMainDataEnd[];
|
||||
|
||||
#endif
|
|
@ -1,42 +0,0 @@
|
|||
#ifndef _ULTRA64_TYPES_H_
|
||||
#define _ULTRA64_TYPES_H_
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL (void *)0
|
||||
#endif
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
typedef signed short int s16;
|
||||
typedef unsigned short int u16;
|
||||
typedef signed int s32;
|
||||
typedef unsigned int u32;
|
||||
typedef signed long long int s64;
|
||||
typedef unsigned long long int u64;
|
||||
|
||||
typedef volatile u8 vu8;
|
||||
typedef volatile u16 vu16;
|
||||
typedef volatile u32 vu32;
|
||||
typedef volatile u64 vu64;
|
||||
typedef volatile s8 vs8;
|
||||
typedef volatile s16 vs16;
|
||||
typedef volatile s32 vs32;
|
||||
typedef volatile s64 vs64;
|
||||
|
||||
typedef float f32;
|
||||
typedef double f64;
|
||||
|
||||
#ifdef TARGET_N64
|
||||
typedef u32 size_t;
|
||||
typedef s32 ssize_t;
|
||||
typedef u32 uintptr_t;
|
||||
typedef s32 intptr_t;
|
||||
typedef s32 ptrdiff_t;
|
||||
#else
|
||||
#include <stddef.h>
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _ALLOCA_H_
|
||||
#define _ALLOCA_H_
|
||||
|
||||
void* alloca(unsigned int);
|
||||
void* alloca(u32);
|
||||
#define alloca __builtin_alloca
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef _FP_H_
|
||||
#define _FP_H_
|
||||
#include <ultra64.h>
|
||||
#include "ultra64.h"
|
||||
|
||||
extern f32 qNaN0x3FFFFF;
|
||||
extern f32 qNaN0x10000;
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
#include "z64.h"
|
||||
|
||||
float fabsf(float f);
|
||||
f32 fabsf(f32 f);
|
||||
#pragma intrinsic(fabsf)
|
||||
float sqrtf(float f);
|
||||
f32 sqrtf(f32 f);
|
||||
#pragma intrinsic(sqrtf)
|
||||
double sqrt(double d);
|
||||
f64 sqrt(f64 d);
|
||||
#pragma intrinsic(sqrt)
|
||||
|
||||
void cleararena(void);
|
||||
|
@ -27,7 +27,7 @@ void DmaMgr_ProcessMsg(DmaRequest* req);
|
|||
void DmaMgr_ThreadEntry(void* arg0);
|
||||
s32 DmaMgr_SendRequestImpl(DmaRequest* req, u32 ram, u32 vrom, u32 size, u32 unk, OSMesgQueue* queue, OSMesg msg);
|
||||
s32 DmaMgr_SendRequest0(u32 ram, u32 vrom, u32 size);
|
||||
void DmaMgr_Start();
|
||||
void DmaMgr_Init();
|
||||
s32 DmaMgr_SendRequest2(DmaRequest* req, u32 ram, u32 vrom, u32 size, u32 unk5, OSMesgQueue* queue, OSMesg msg,
|
||||
const char* file, s32 line);
|
||||
s32 DmaMgr_SendRequest1(void* ram0, u32 vrom, u32 size, const char* file, s32 line);
|
||||
|
@ -55,8 +55,8 @@ void StackCheck_Cleanup(StackEntry* entry);
|
|||
StackStatus StackCheck_GetState(StackEntry* entry);
|
||||
u32 StackCheck_CheckAll();
|
||||
u32 StackCheck_Check(StackEntry* entry);
|
||||
float LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, float var1, const char* var2Name,
|
||||
float var2, const char* var3Name, float var3);
|
||||
f32 LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, f32 var1, const char* var2Name,
|
||||
f32 var2, const char* var3Name, f32 var3);
|
||||
s32 LogUtils_CheckIntRange(const char* exp, s32 arg1, const char* var1Name, s32 var1, const char* var2Name, s32 var2,
|
||||
const char* var3Name, s32 var3);
|
||||
void LogUtils_LogHexDump(void* ptr, s32 size0);
|
||||
|
@ -98,7 +98,7 @@ void osWritebackDCache(void* vaddr, s32 nbytes);
|
|||
void* osViGetNextFramebuffer();
|
||||
void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt);
|
||||
void __osDevMgrMain(void* arg);
|
||||
s32 __osPiRawStartDma(s32 dir, u32 cart_addr, void* dram_addr, size_t size);
|
||||
s32 __osPiRawStartDma(s32 dir, u32 cartAddr, void* dramAddr, size_t size);
|
||||
u32 osVirtualToPhysical(void* vaddr);
|
||||
void osViBlack(u8 active);
|
||||
s32 __osSiRawReadIo(void* a0, u32* a1);
|
||||
|
@ -118,6 +118,7 @@ void osInvalICache(void* vaddr, s32 nbytes);
|
|||
void osCreateMesgQueue(OSMesgQueue* mq, OSMesg* msg, s32 count);
|
||||
void osInvalDCache(void* vaddr, s32 nbytes);
|
||||
s32 __osSiDeviceBusy();
|
||||
s32 osJamMesg(OSMesgQueue* mq, OSMesg mesg, s32 flag);
|
||||
void osSetThreadPri(OSThread* thread, OSPri pri);
|
||||
OSPri osGetThreadPri(OSThread* thread);
|
||||
s32 __osEPiRawReadIo(OSPiHandle* handle, u32 devAddr, u32* data);
|
||||
|
@ -146,13 +147,19 @@ void __osSetFpcCsr(u32);
|
|||
u32 __osGetFpcCsr();
|
||||
s32 osEPiWriteIo(OSPiHandle* handle, u32 devAddr, u32 data);
|
||||
void osMapTLBRdb(void);
|
||||
void osYieldThread();
|
||||
u32 __osGetCause();
|
||||
s32 __osEPiRawWriteIo(OSPiHandle* handle, u32 devAddr, u32 data);
|
||||
void _Litob(_Pft* args, u8 type);
|
||||
ldiv_t ldiv(s32 num, s32 denom);
|
||||
lldiv_t lldiv(s64 num, s64 denom);
|
||||
void _Ldtob(_Pft* args, u8 type);
|
||||
s32 __osSiRawWriteIo(void* a0, u32 a1);
|
||||
void osCreateViManager(OSPri pri);
|
||||
void viMgrMain(void* vargs);
|
||||
OSViContext* __osViGetCurrentContext();
|
||||
void osStartThread(OSThread* thread);
|
||||
void osViSetYScale(float scale);
|
||||
void osViSetYScale(f32 scale);
|
||||
void osViSetXScale(f32 value);
|
||||
void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg);
|
||||
void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg);
|
||||
|
@ -1651,7 +1658,7 @@ void AudioMgr_HandleRetrace(AudioMgr* audioMgr);
|
|||
void AudioMgr_HandlePRENMI(AudioMgr* audioMgr);
|
||||
void AudioMgr_ThreadEntry(void* arg0);
|
||||
void AudioMgr_Unlock(AudioMgr* audioMgr);
|
||||
void AudioMgr_Start(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr);
|
||||
void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr);
|
||||
void TitleSetup_InitImpl(GameState* gameState);
|
||||
void TitleSetup_Destroy(GameState* gameState);
|
||||
void TitleSetup_Init(GameState* gameState);
|
||||
|
@ -1707,7 +1714,7 @@ void PadMgr_UnlockPadData(PadMgr* padmgr);
|
|||
void PadMgr_RumbleControl(PadMgr* padmgr);
|
||||
void PadMgr_RumbleStop(PadMgr* padmgr);
|
||||
void PadMgr_RumbleReset(PadMgr* padmgr);
|
||||
void PadMgr_RumbleSet(PadMgr* padmgr, u8* ctrlr_rumbles);
|
||||
void PadMgr_RumbleSet(PadMgr* padmgr, u8* ctrlrRumbles);
|
||||
void PadMgr_ProcessInputs(PadMgr* padmgr);
|
||||
void PadMgr_HandleRetraceMsg(PadMgr* padmgr);
|
||||
void PadMgr_HandlePreNMI(PadMgr* padmgr);
|
||||
|
@ -1864,7 +1871,7 @@ void IrqMgr_HandlePRENMI480(IrqMgr* this);
|
|||
void IrqMgr_HandlePRENMI500(IrqMgr* this);
|
||||
void IrqMgr_HandleRetrace(IrqMgr* this);
|
||||
void IrqMgr_ThreadEntry(void* arg0);
|
||||
void IrqMgr_Create(IrqMgr* this, void* stack, OSPri pri, u8 retraceCount);
|
||||
void IrqMgr_Init(IrqMgr* this, void* stack, OSPri pri, u8 retraceCount);
|
||||
void DebugArena_CheckPointer(void* ptr, u32 size, const char* name, const char* action);
|
||||
void* DebugArena_Malloc(u32 size);
|
||||
void* DebugArena_MallocDebug(u32 size, const char* file, s32 line);
|
||||
|
@ -1919,7 +1926,7 @@ void Fault_ProcessClients();
|
|||
void Fault_UpdatePad();
|
||||
void Fault_ThreadEntry(void*);
|
||||
void Fault_SetFB(void*, u16, u16);
|
||||
void Fault_Start(void);
|
||||
void Fault_Init(void);
|
||||
void Fault_HangupFaultClient(const char*, const char*);
|
||||
void Fault_AddHungupAndCrashImpl(const char*, const char*);
|
||||
void Fault_AddHungupAndCrash(const char*, u32);
|
||||
|
@ -2468,8 +2475,8 @@ void guScale(Mtx* m, f32 x, f32 y, f32 z);
|
|||
f32 sinf(f32);
|
||||
s16 sins(u16);
|
||||
// ? func_801004C0(?);
|
||||
// ? osSpTaskLoad(?);
|
||||
// ? osSpTaskStartGo(?);
|
||||
void osSpTaskLoad(OSTask* task);
|
||||
void osSpTaskStartGo(OSTask* task);
|
||||
s32 osSetRumble(OSPfs* pfs, u32 vibrate);
|
||||
void osSetUpMempakWrite(s32 channel, OSPifRam* buf);
|
||||
s32 osProbeRumblePak(OSMesgQueue* ctrlrqueue, OSPfs* pfs, u32 channel);
|
||||
|
@ -2482,24 +2489,22 @@ void __osPackRequestData(u8 poll);
|
|||
s32 osContStartReadData(OSMesgQueue* mq);
|
||||
void osContGetReadData(OSContPad* pad);
|
||||
void __osPackReadData();
|
||||
// ? guPerspectiveF(?);
|
||||
// ? guPerspective(?);
|
||||
// ? __osSpRawStartDma(?);
|
||||
void guPerspectiveF(f32 mf[4][4], u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale);
|
||||
void guPerspective(Mtx* m, u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale);
|
||||
s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, u32 size);
|
||||
s32 __osSiRawStartDma(s32 dir, void* addr);
|
||||
// ? osSpTaskYield(?);
|
||||
void osSpTaskYield(void);
|
||||
s32 __osPfsGetNextPage(OSPfs* pfs, u8* bank, __OSInode* inode, __OSInodeUnit* page);
|
||||
s32 osPfsReadWriteFile(OSPfs* pfs, s32 fileNo, u8 flag, s32 offset, s32 size, u8* data);
|
||||
s32 __osPfsGetStatus(OSMesgQueue* queue, s32 channel);
|
||||
void __osPfsRequestOneChannel(s32 channel, u8 poll);
|
||||
void __osPfsGetOneChannelData(s32 channel, OSContStatus* contData);
|
||||
// ? guMtxIdentF(?);
|
||||
void guLookAtF(float mf[4][4], f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp);
|
||||
void guLookAtF(f32 mf[4][4], f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp);
|
||||
void guLookAt(Mtx*, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp);
|
||||
s32 osPfsAllocateFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8* ext_name, s32 length,
|
||||
s32* file_no);
|
||||
s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, s32 fileSizeInPages, s32* startPage, u8 bank, s32* decleared,
|
||||
s32* finalPage);
|
||||
// ? osStopTimer(?);
|
||||
s32 osPfsAllocateFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName, s32 length, s32* fileNo);
|
||||
s32 __osPfsDeclearPage(OSPfs* pfs, __OSInode* inode, s32 fileSizeInPages, s32* startPage, u8 bank, s32* decleared, s32* finalPage);
|
||||
s32 osStopTimer(OSTimer* timer);
|
||||
u16 __osSumcalc(u8* ptr, s32 length);
|
||||
s32 __osIdCheckSum(u16* ptr, u16* csum, u16* icsum);
|
||||
s32 __osRepairPackId(OSPfs* pfs, __OSPackId* badid, __OSPackId* newid);
|
||||
|
@ -2509,26 +2514,26 @@ s32 __osCheckId(OSPfs* pfs);
|
|||
s32 __osPfsRWInode(OSPfs* pfs, __OSInode* inode, u8 flag, u8 bank);
|
||||
// ? func_80102FA0(?);
|
||||
s32 osPfsFindFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName, s32* fileNo);
|
||||
// ? osAfterPreNMI(?);
|
||||
// ? osContStartQuery(?);
|
||||
s32 osAfterPreNMI(void);
|
||||
s32 osContStartQuery(OSMesgQueue* mq);
|
||||
void osContGetQuery(OSContStatus* data);
|
||||
// ? guLookAtHiliteF(?);
|
||||
void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp,
|
||||
f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth,
|
||||
s32 hiliteHeight);
|
||||
// ? __osSpDeviceBusy(?);
|
||||
u32 __osSpDeviceBusy();
|
||||
// ? guMtxIdent(?);
|
||||
// ? guPositionF(?);
|
||||
void guPositionF(f32 mf[4][4], f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z);
|
||||
void guPosition(Mtx*, f32, f32, f32, f32, f32, f32, f32);
|
||||
// ? osSpTaskYielded(?);
|
||||
OSYieldResult osSpTaskYielded(OSTask* task);
|
||||
// ? guRotateF(?);
|
||||
void guRotate(Mtx*, f32 angle, f32 x, f32 y, f32 z);
|
||||
s32 osAiSetFrequency(u32 frequency);
|
||||
// ? __osGetActiveQueue(?);
|
||||
OSThread* __osGetActiveQueue();
|
||||
// ? guNormalize(?);
|
||||
u32 osDpGetStatus(void);
|
||||
void osDpSetStatus(u32 status);
|
||||
s32 osPfsDeleteFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8* ext_name);
|
||||
s32 osPfsDeleteFile(OSPfs* pfs, u16 companyCode, u32 gameCode, u8* gameName, u8* extName);
|
||||
s32 __osPfsReleasePages(OSPfs* pfs, __OSInode* inode, u8 initialPage, u8 bank, __OSInodeUnit* finalPage);
|
||||
void guOrthoF(f32[4][4], f32, f32, f32, f32, f32, f32, f32);
|
||||
void guOrtho(Mtx*, f32, f32, f32, f32, f32, f32, f32);
|
||||
|
@ -2541,18 +2546,19 @@ void __osPfsGetInitData(u8* pattern, OSContStatus* contData);
|
|||
void guS2DInitBg(uObjBg* bg);
|
||||
s32 __osPfsSelectBank(OSPfs* pfs, u8 bank);
|
||||
s32 osContSetCh(u8 ch);
|
||||
s32 osPfsFileState(OSPfs* pfs, s32 file_no, OSPfsState* state);
|
||||
s32 osPfsFileState(OSPfs* pfs, s32 fileNo, OSPfsState* state);
|
||||
s32 osPfsInitPak(OSMesgQueue* mq, OSPfs* pfs, s32 channel);
|
||||
s32 __osPfsCheckRamArea(OSPfs* pfs);
|
||||
s32 osPfsChecker(OSPfs* pfs);
|
||||
s32 func_80105788(OSPfs* pfs, __OSInodeCache* cache);
|
||||
s32 func_80105A60(OSPfs* pfs, __OSInodeUnit fpage, __OSInodeCache* cache);
|
||||
// ? osAiGetLength(?);
|
||||
u32 osAiGetLength(void);
|
||||
void guTranslate(Mtx* m, f32 x, f32 y, f32 z);
|
||||
s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force);
|
||||
s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* data);
|
||||
u8 __osContAddressCrc(u16 addr);
|
||||
u8 __osContDataCrc(u8* data);
|
||||
s32 osSetTimer(OSTimer* timer, OSTime countdown, OSTime interval, OSMesgQueue* mq, OSMesg msg);
|
||||
u32 __osSpGetStatus();
|
||||
void __osSpSetStatus(u32 status);
|
||||
void osWritebackDCacheAll(void);
|
||||
|
@ -2567,7 +2573,7 @@ OSThread* __osGetCurrFaultedThread();
|
|||
// ? __ull_to_d(?);
|
||||
// ? __ull_to_f(?);
|
||||
u32* osViGetCurrentFramebuffer(void);
|
||||
// ? __osSpSetPc(?);
|
||||
s32 __osSpSetPc(void* pc);
|
||||
f32 absf(f32);
|
||||
void* func_80106860(void* ptr, s32 val, size_t size);
|
||||
void* func_801068B0(void* dst, void* src, size_t size);
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
#define SQ(x) ((x)*(x))
|
||||
#define ABS(x) ((x) >= 0 ? (x) : -(x))
|
||||
#define ULTRA_ABS(x) ((x) > 0) ? (x) : -(x)
|
||||
#define DECR(x) ((x) == 0 ? 0 : ((x) -= 1))
|
||||
#define CLAMP(x, min, max) ((x) < (min) ? (min) : (x) > (max) ? (max) : (x))
|
||||
#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x))
|
||||
|
@ -55,7 +54,9 @@
|
|||
? gSaveContext.equips.buttonItems[button + 1] \
|
||||
: ITEM_NONE)
|
||||
|
||||
#define CHECK_PAD(state, combo) (~(state.in.button | ~(combo)) == 0)
|
||||
#define CHECK_BTN_ALL(state, combo) (~((state) | ~(combo)) == 0)
|
||||
#define CHECK_BTN_ANY(state, combo) (((state) & (combo)) != 0)
|
||||
|
||||
|
||||
#define LOG(exp, value, format, file, line) \
|
||||
do { \
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _MATH_H_
|
||||
#define _MATH_H_
|
||||
|
||||
#include "ultra64/types.h"
|
||||
|
||||
#define M_PI 3.14159265358979323846f
|
||||
#define M_SQRT2 1.41421356237309504880f
|
||||
#define FLT_MAX 340282346638528859811704183484516925440.0f
|
||||
|
@ -8,26 +10,20 @@
|
|||
#define SHT_MINV (1.0f / SHT_MAX)
|
||||
#define DEGTORAD(x) (x * M_PI / 180.0f)
|
||||
|
||||
float sinf(float);
|
||||
double sin(double);
|
||||
float cosf(float);
|
||||
double cos(double);
|
||||
float sqrtf(float f);
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
unsigned int hi;
|
||||
unsigned int lo;
|
||||
u32 hi;
|
||||
u32 lo;
|
||||
} word;
|
||||
|
||||
double d;
|
||||
f64 d;
|
||||
} du;
|
||||
|
||||
typedef union {
|
||||
unsigned int i;
|
||||
float f;
|
||||
u32 i;
|
||||
f32 f;
|
||||
} fu;
|
||||
|
||||
extern float __libm_qnan_f;
|
||||
extern f32 __libm_qnan_f;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _SEGMENT_SYMBOLS_H_
|
||||
#define _SEGMENT_SYMBOLS_H_
|
||||
|
||||
#include <z64.h>
|
||||
#include "z64.h"
|
||||
|
||||
#define DECLARE_SEGMENT(name) \
|
||||
extern u8 _##name##SegmentStart[]; \
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
#ifndef _STDARG_H_
|
||||
#define _STDARG_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
|
||||
// When building with GCC, use the official vaarg macros to avoid warnings
|
||||
// and possibly bad codegen.
|
||||
#ifdef __GNUC__
|
||||
|
@ -18,7 +16,7 @@ typedef char *va_list;
|
|||
#define _STRUCT 2
|
||||
|
||||
#define _VA_FP_SAVE_AREA 0x10
|
||||
#define _VA_ALIGN(p, a) (((unsigned int)(((char *)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
|
||||
#define _VA_ALIGN(p, a) (((u32)(((char*)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
|
||||
#define va_start(vp, parmN) (vp = ((va_list)&parmN + sizeof(parmN)))
|
||||
|
||||
#define __va_stack_arg(list, mode) \
|
||||
|
@ -29,14 +27,14 @@ typedef char *va_list;
|
|||
|
||||
#define __va_double_arg(list, mode) \
|
||||
( \
|
||||
(((long)list & 0x1) /* 1 byte aligned? */ \
|
||||
? (list = (char *)((long)list + 7), (char *)((long)list - 6 - _VA_FP_SAVE_AREA)) \
|
||||
: (((long)list & 0x2) /* 2 byte aligned? */ \
|
||||
? (list = (char *)((long)list + 10), (char *)((long)list - 24 - _VA_FP_SAVE_AREA)) \
|
||||
(((s32)list & 0x1) /* 1 byte aligned? */ \
|
||||
? (list = (char*)((s32)list + 7), (char*)((s32)list - 6 - _VA_FP_SAVE_AREA)) \
|
||||
: (((s32)list & 0x2) /* 2 byte aligned? */ \
|
||||
? (list = (char*)((s32)list + 10), (char*)((s32)list - 24 - _VA_FP_SAVE_AREA)) \
|
||||
: __va_stack_arg(list, mode))))
|
||||
|
||||
#define va_arg(list, mode) ((mode*)(((__builtin_classof(mode) == _FP && \
|
||||
__builtin_alignof(mode) == sizeof(double)) \
|
||||
__builtin_alignof(mode) == sizeof(f64)) \
|
||||
? __va_double_arg(list, mode) \
|
||||
: __va_stack_arg(list, mode))))[-1]
|
||||
#define va_end(__list)
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
#ifndef _STDLIB_H_
|
||||
#define _STDLIB_H_
|
||||
|
||||
#include "ultra64.h"
|
||||
|
||||
typedef struct lldiv_t {
|
||||
long long quot;
|
||||
long long rem;
|
||||
s64 quot;
|
||||
s64 rem;
|
||||
} lldiv_t;
|
||||
|
||||
typedef struct ldiv_t {
|
||||
long quot;
|
||||
long rem;
|
||||
s32 quot;
|
||||
s32 rem;
|
||||
} ldiv_t;
|
||||
|
||||
lldiv_t lldiv(long long, long long);
|
||||
ldiv_t ldiv(long, long);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
#ifndef _STRING_H_
|
||||
#define _STRING_H_
|
||||
|
||||
#include <ultra64/types.h>
|
||||
|
||||
void* memcpy(void*, const void*, size_t);
|
||||
size_t strlen(const u8* str);
|
||||
const u8* strchr(const u8* str, s32 ch);
|
||||
|
||||
#endif
|
|
@ -1,25 +1,28 @@
|
|||
#ifndef _ULTRA64_H_
|
||||
#define _ULTRA64_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <math.h>
|
||||
#include <unk.h>
|
||||
#include "stddef.h"
|
||||
#include "stdbool.h"
|
||||
#include "math.h"
|
||||
#include "unk.h"
|
||||
|
||||
#include <ultra64/types.h>
|
||||
#include <ultra64/interrupt.h>
|
||||
#include <ultra64/os_misc.h>
|
||||
#include <ultra64/rcp.h>
|
||||
#include <ultra64/rdp.h>
|
||||
#include <ultra64/rsp.h>
|
||||
#include <ultra64/os_thread.h>
|
||||
#include <ultra64/convert.h>
|
||||
#include <ultra64/time.h>
|
||||
#include <ultra64/os_message.h>
|
||||
#include <ultra64/sptask.h>
|
||||
#include <ultra64/gu.h>
|
||||
#include <ultra64/os_vi.h>
|
||||
#include <ultra64/os_pi.h>
|
||||
#include <ultra64/os_internal.h>
|
||||
#include "ultra64/types.h"
|
||||
#include "ultra64/interrupt.h"
|
||||
#include "ultra64/rcp.h"
|
||||
#include "ultra64/rdp.h"
|
||||
#include "ultra64/rsp.h"
|
||||
#include "ultra64/thread.h"
|
||||
#include "ultra64/convert.h"
|
||||
#include "ultra64/time.h"
|
||||
#include "ultra64/message.h"
|
||||
#include "ultra64/sptask.h"
|
||||
#include "ultra64/gu.h"
|
||||
#include "ultra64/vi.h"
|
||||
#include "ultra64/pi.h"
|
||||
#include "ultra64/hardware.h"
|
||||
#include "ultra64/controller.h"
|
||||
#include "ultra64/printf.h"
|
||||
#include "ultra64/mbi.h"
|
||||
#include "ultra64/pfs.h"
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef _ABI_H_
|
||||
#define _ABI_H_
|
||||
#ifndef _ULTRA64_ABI_H_
|
||||
#define _ULTRA64_ABI_H_
|
||||
|
||||
/* Audio commands: */
|
||||
#define A_SPNOOP 0
|
||||
|
@ -388,4 +388,4 @@ typedef short ENVMIX_STATE[40];
|
|||
_a->words.w1 = (unsigned int)d; \
|
||||
}
|
||||
|
||||
#endif /* !_ABI_H_ */
|
||||
#endif /* _ULTRA64_ABI_H_ */
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#ifndef _ULTRA64_CONTROLLER_H_
|
||||
#define _ULTRA64_CONTROLLER_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include <ultra64/pfs.h>
|
||||
#include <PR/os_message.h>
|
||||
#include "ultra64.h"
|
||||
#include "ultra64/message.h"
|
||||
|
||||
#define SIAccessQueueSize 2
|
||||
#define BLOCKSIZE 32
|
||||
|
@ -66,7 +65,6 @@
|
|||
#define CONT_OVERRUN_ERROR 0x4
|
||||
|
||||
/* Controller type */
|
||||
|
||||
#define CONT_ABSOLUTE 0x0001
|
||||
#define CONT_RELATIVE 0x0002
|
||||
#define CONT_JOYPORT 0x0004
|
||||
|
@ -78,143 +76,96 @@
|
|||
#define CONT_TYPE_VOICE 0x0100
|
||||
|
||||
/* Controller status */
|
||||
|
||||
#define CONT_CARD_ON 0x01
|
||||
#define CONT_CARD_PULL 0x02
|
||||
#define CONT_ADDR_CRC_ER 0x04
|
||||
#define CONT_EEPROM_BUSY 0x80
|
||||
|
||||
/* Buttons */
|
||||
|
||||
#define CONT_A 0x8000
|
||||
#define CONT_B 0x4000
|
||||
#define CONT_G 0x2000
|
||||
#define CONT_START 0x1000
|
||||
#define CONT_UP 0x0800
|
||||
#define CONT_DOWN 0x0400
|
||||
#define CONT_LEFT 0x0200
|
||||
#define CONT_RIGHT 0x0100
|
||||
#define CONT_L 0x0020
|
||||
#define CONT_R 0x0010
|
||||
#define CONT_E 0x0008
|
||||
#define CONT_D 0x0004
|
||||
#define CONT_C 0x0002
|
||||
#define CONT_F 0x0001
|
||||
|
||||
/* Nintendo's official button names */
|
||||
|
||||
#define A_BUTTON CONT_A
|
||||
#define B_BUTTON CONT_B
|
||||
#define L_TRIG CONT_L
|
||||
#define R_TRIG CONT_R
|
||||
#define Z_TRIG CONT_G
|
||||
#define START_BUTTON CONT_START
|
||||
#define U_JPAD CONT_UP
|
||||
#define L_JPAD CONT_LEFT
|
||||
#define R_JPAD CONT_RIGHT
|
||||
#define D_JPAD CONT_DOWN
|
||||
#define U_CBUTTONS CONT_E
|
||||
#define L_CBUTTONS CONT_C
|
||||
#define R_CBUTTONS CONT_F
|
||||
#define D_CBUTTONS CONT_D
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ union{
|
||||
u16 button;
|
||||
struct{
|
||||
u16 a : 1;
|
||||
u16 b : 1;
|
||||
u16 z : 1;
|
||||
u16 s : 1;
|
||||
u16 du : 1;
|
||||
u16 dd : 1;
|
||||
u16 dl : 1;
|
||||
u16 dr : 1;
|
||||
u16 illegal_h : 1;
|
||||
u16 illegal_l : 1;
|
||||
u16 l : 1;
|
||||
u16 r : 1;
|
||||
u16 cu : 1;
|
||||
u16 cd : 1;
|
||||
u16 cl : 1;
|
||||
u16 cr : 1;
|
||||
};
|
||||
};
|
||||
/* 0x02 */ s8 x;
|
||||
/* 0x03 */ s8 y;
|
||||
} PadInput; // size = 0x4
|
||||
#define BTN_CRIGHT 0x0001
|
||||
#define BTN_CLEFT 0x0002
|
||||
#define BTN_CDOWN 0x0004
|
||||
#define BTN_CUP 0x0008
|
||||
#define BTN_R 0x0010
|
||||
#define BTN_L 0x0020
|
||||
#define BTN_DRIGHT 0x0100
|
||||
#define BTN_DLEFT 0x0200
|
||||
#define BTN_DDOWN 0x0400
|
||||
#define BTN_DUP 0x0800
|
||||
#define BTN_START 0x1000
|
||||
#define BTN_Z 0x2000
|
||||
#define BTN_B 0x4000
|
||||
#define BTN_A 0x8000
|
||||
|
||||
typedef struct {
|
||||
u32 ram[15]; /* RAM */
|
||||
u32 status;
|
||||
} OSPifRam;
|
||||
/* 0x00 */ u32 ram[15];
|
||||
/* 0x3C */ u32 status;
|
||||
} OSPifRam; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
u16 type; /* Controller Type */
|
||||
u8 status; /* Controller status */
|
||||
u8 errno;
|
||||
} OSContStatus;
|
||||
/* 0x00 */ u16 type;
|
||||
/* 0x02 */ u8 status;
|
||||
/* 0x03 */ u8 errno;
|
||||
} OSContStatus; // size = 0x04
|
||||
|
||||
typedef struct {
|
||||
u16 button;
|
||||
s8 stick_x; /* -80 <= stick_x <= 80 */
|
||||
s8 stick_y; /* -80 <= stick_y <= 80 */
|
||||
u8 errno;
|
||||
} OSContPad;
|
||||
/* 0x00 */ u16 button;
|
||||
/* 0x02 */ s8 stick_x;
|
||||
/* 0x03 */ s8 stick_y;
|
||||
/* 0x04 */ u8 errno;
|
||||
} OSContPad; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
void *address; /* Ram pad Address: 11 bits */
|
||||
u8 databuffer[32]; /* address of the data buffer */
|
||||
u8 addressCrc; /* CRC code for address */
|
||||
u8 dataCrc; /* CRC code for data */
|
||||
u8 errno;
|
||||
} OSContRamIo;
|
||||
/* 0x00 */ void* address;
|
||||
/* 0x04 */ u8 databuffer[32];
|
||||
/* 0x24 */ u8 addressCrc;
|
||||
/* 0x25 */ u8 dataCrc;
|
||||
/* 0x26 */ u8 errno;
|
||||
} OSContRamIo; // size = 0x28
|
||||
|
||||
// Original name: __OSContRequesFormat
|
||||
typedef struct {
|
||||
u8 align;
|
||||
u8 txsize;
|
||||
u8 rxsize;
|
||||
u8 poll;
|
||||
u8 typeh;
|
||||
u8 typel;
|
||||
u8 status;
|
||||
u8 align1;
|
||||
} __OSContRequestHeader;
|
||||
/* 0x00 */ u8 align;
|
||||
/* 0x01 */ u8 txsize;
|
||||
/* 0x02 */ u8 rxsize;
|
||||
/* 0x03 */ u8 poll;
|
||||
/* 0x04 */ u8 typeh;
|
||||
/* 0x05 */ u8 typel;
|
||||
/* 0x06 */ u8 status;
|
||||
/* 0x07 */ u8 align1;
|
||||
} __OSContRequestHeader; // size = 0x8
|
||||
|
||||
// Original name: __OSContRequesHeaderFormatShort
|
||||
typedef struct {
|
||||
u8 txsize;
|
||||
u8 rxsize;
|
||||
u8 poll;
|
||||
u8 typeh;
|
||||
u8 typel;
|
||||
u8 status;
|
||||
} __OSContRequestHeaderAligned;
|
||||
/* 0x00 */ u8 txsize;
|
||||
/* 0x01 */ u8 rxsize;
|
||||
/* 0x02 */ u8 poll;
|
||||
/* 0x03 */ u8 typeh;
|
||||
/* 0x04 */ u8 typel;
|
||||
/* 0x05 */ u8 status;
|
||||
} __OSContRequestHeaderAligned; // size = 0x6
|
||||
|
||||
// Original Name: __OSContRamReadFormat
|
||||
typedef struct {
|
||||
u8 unk_00;
|
||||
u8 txsize;
|
||||
u8 rxsize;
|
||||
u8 poll;
|
||||
u8 hi;
|
||||
u8 lo;
|
||||
u8 data[BLOCKSIZE];
|
||||
u8 datacrc;
|
||||
} __OSContRamHeader;
|
||||
/* 0x00 */ u8 unk_00;
|
||||
/* 0x01 */ u8 txsize;
|
||||
/* 0x02 */ u8 rxsize;
|
||||
/* 0x03 */ u8 poll;
|
||||
/* 0x04 */ u8 hi;
|
||||
/* 0x05 */ u8 lo;
|
||||
/* 0x06 */ u8 data[BLOCKSIZE];
|
||||
/* 0x26 */ u8 datacrc;
|
||||
} __OSContRamHeader; // size = 0x27
|
||||
|
||||
// Original name: __OSContReadFormat
|
||||
typedef struct {
|
||||
u8 align;
|
||||
u8 txsize;
|
||||
u8 rxsize;
|
||||
u8 poll;
|
||||
u16 button;
|
||||
s8 joyX;
|
||||
s8 joyY;
|
||||
} __OSContReadHeader;
|
||||
/* 0x00 */ u8 align;
|
||||
/* 0x01 */ u8 txsize;
|
||||
/* 0x02 */ u8 rxsize;
|
||||
/* 0x03 */ u8 poll;
|
||||
/* 0x04 */ u16 button;
|
||||
/* 0x06 */ s8 joyX;
|
||||
/* 0x07 */ s8 joyY;
|
||||
} __OSContReadHeader; // size = 0x8
|
||||
|
||||
|
||||
#endif //_ULTRA64_CONTROLLER_H_
|
||||
#endif
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
#define OS_CLOCK_RATE 62500000LL
|
||||
#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4)
|
||||
|
||||
/* Macros */
|
||||
|
||||
#define OS_NSEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625000LL))/(1000000000LL/15625000LL))
|
||||
#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL))
|
||||
#define OS_CYCLES_TO_NSEC(c) (((u64)(c)*(1000000000LL/15625000LL))/(OS_CPU_COUNTER/15625000LL))
|
||||
|
@ -17,9 +15,4 @@
|
|||
#define OS_PHYSICAL_TO_K0(x) (void*)(((u32)(x)+0x80000000))
|
||||
#define OS_PHYSICAL_TO_K1(x) (void*)(((u32)(x)+0xA0000000))
|
||||
|
||||
/* Functions */
|
||||
|
||||
extern u32 osVirtualToPhysical(void*);
|
||||
extern void* osPhysicalToVirtual(u32);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include "mbi.h"
|
||||
#include "ultra64/mbi.h"
|
||||
|
||||
#ifndef _ULTRA64_GBI_H_
|
||||
#define _ULTRA64_GBI_H_
|
||||
|
|
|
@ -2,13 +2,7 @@
|
|||
#define _ULTRA64_GU_H_
|
||||
|
||||
#define GU_PI 3.1415926
|
||||
/* Functions */
|
||||
|
||||
#define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x) - 0.5))
|
||||
|
||||
void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect,
|
||||
float near, float far, float scale);
|
||||
void guPerspective(Mtx *m, u16 *perspNorm, float fovy, float aspect, float near,
|
||||
float far, float scale);
|
||||
|
||||
#endif
|
||||
|
|
28
include/ultra64/internal.h
Normal file
28
include/ultra64/internal.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
#ifndef _ULTRA64_INTERNAL_H_
|
||||
#define _ULTRA64_INTERNAL_H_
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 initialized;
|
||||
/* 0x04 */ OSThread* mgrThread;
|
||||
/* 0x08 */ OSMesgQueue* cmdQueue;
|
||||
/* 0x0C */ OSMesgQueue* eventQueue;
|
||||
/* 0x10 */ OSMesgQueue* acccessQueue;
|
||||
/* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, size_t);
|
||||
/* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, size_t);
|
||||
} OSMgrArgs; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ OSMesgQueue* queue;
|
||||
/* 0x04 */ OSMesg msg;
|
||||
} __osHwInt; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ OSMesgQueue* queue;
|
||||
/* 0x04 */ OSMesg msg;
|
||||
} __OSEventState; // size = 0x08
|
||||
|
||||
extern OSMgrArgs __osPiDevMgr;
|
||||
extern __osHwInt __osHwIntTable[];
|
||||
extern __OSEventState __osEventStateTab[];
|
||||
|
||||
#endif
|
|
@ -1,14 +1,6 @@
|
|||
#ifndef _ULTRA64_INTERRUPT_H_
|
||||
#define _ULTRA64_INTERRUPT_H_
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef u32 OSIntMask;
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
OSIntMask osGetIntMask(void);
|
||||
OSIntMask osSetIntMask(OSIntMask);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,25 +1,5 @@
|
|||
#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.136 $
|
||||
* $Date: 1999/01/05 13:04:00 $
|
||||
* $Source: /hosts/gate3/exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/mbi.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
#ifndef _ULTRA64_MBI_H_
|
||||
#define _ULTRA64_MBI_H_
|
||||
|
||||
/*
|
||||
* Header file for the Media Binary Interface
|
||||
|
@ -45,56 +25,21 @@
|
|||
*
|
||||
*/
|
||||
#define _SHIFTL(v, s, w) \
|
||||
((unsigned int) (((unsigned int)(v) & ((0x01 << (w)) - 1)) << (s)))
|
||||
((u32) (((u32)(v) & ((0x01 << (w)) - 1)) << (s)))
|
||||
#define _SHIFTR(v, s, w) \
|
||||
((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1)))
|
||||
((u32)(((u32)(v) >> (s)) & ((0x01 << (w)) - 1)))
|
||||
|
||||
#define _SHIFT _SHIFTL /* old, for compatibility only */
|
||||
|
||||
#define G_ON (1)
|
||||
#define G_OFF (0)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Graphics Binary Interface
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <ultra64/gbi.h>
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Audio Binary Interface
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <ultra64/abi.h>
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Task list
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#define M_NULTASK 0
|
||||
#define M_GFXTASK 1
|
||||
#define M_AUDTASK 2
|
||||
#define M_VIDTASK 3
|
||||
#define M_NJPEGTASK 4
|
||||
#define M_HVQTASK 6
|
||||
#define M_HVQMTASK 7
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Segment macros and definitions
|
||||
*
|
||||
**************************************************************************/
|
||||
#include "ultra64/gbi.h"
|
||||
#include "ultra64/abi.h"
|
||||
|
||||
#define NUM_SEGMENTS (16)
|
||||
#define SEGMENT_OFFSET(a) ((unsigned int)(a) & 0x00ffffff)
|
||||
#define SEGMENT_NUMBER(a) (((unsigned int)(a) << 4) >> 28)
|
||||
#define SEGMENT_OFFSET(a) ((u32)(a) & 0x00ffffff)
|
||||
#define SEGMENT_NUMBER(a) (((u32)(a) << 4) >> 28)
|
||||
#define SEGMENT_ADDR(num, off) (((num) << 24) + (off))
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
#endif /* !_MBI_H_ */
|
||||
|
|
|
@ -1,31 +1,39 @@
|
|||
#ifndef _ULTRA64_MESSAGE_H_
|
||||
#define _ULTRA64_MESSAGE_H_
|
||||
|
||||
/* Message Blocking Flags */
|
||||
#include "ultra64/types.h"
|
||||
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef void* OSMesg;
|
||||
typedef u32 OSEvent;
|
||||
|
||||
typedef struct OSMesgQueue_s
|
||||
{
|
||||
OSThread *mtqueue;
|
||||
OSThread *fullqueue;
|
||||
s32 validCount;
|
||||
s32 first;
|
||||
s32 msgCount;
|
||||
OSMesg *msg;
|
||||
} OSMesgQueue;
|
||||
#define OS_NUM_EVENTS 15
|
||||
|
||||
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
|
||||
#define OS_EVENT_SW2 1 /* CPU SW2 interrupt */
|
||||
#define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */
|
||||
#define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_SP 4 /* SP task done interrupt */
|
||||
#define OS_EVENT_SI 5 /* SI (controller) interrupt */
|
||||
#define OS_EVENT_AI 6 /* AI interrupt */
|
||||
#define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */
|
||||
#define OS_EVENT_DP 9 /* DP full sync interrupt */
|
||||
#define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */
|
||||
#define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */
|
||||
#define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */
|
||||
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
|
||||
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
|
||||
|
||||
/* Functions */
|
||||
|
||||
void osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32);
|
||||
s32 osSendMesg(OSMesgQueue *, OSMesg, s32);
|
||||
s32 osJamMesg(OSMesgQueue *, OSMesg, s32);
|
||||
s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32);
|
||||
typedef struct OSMesgQueue {
|
||||
/* 0x00 */ OSThread* mtqueue;
|
||||
/* 0x04 */ OSThread* fullqueue;
|
||||
/* 0x08 */ s32 validCount;
|
||||
/* 0x0C */ s32 first;
|
||||
/* 0x10 */ s32 msgCount;
|
||||
/* 0x14 */ OSMesg* msg;
|
||||
} OSMesgQueue; // size = 0x18
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
#ifndef _ULTRA64_OS_INTERNAL_H_
|
||||
#define _ULTRA64_OS_INTERNAL_H_
|
||||
|
||||
/* Internal functions used by the operating system */
|
||||
/* Do not include this header in application code */
|
||||
|
||||
/* Variables */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 initialized;
|
||||
OSThread *mgrThread;
|
||||
OSMesgQueue *cmdQueue;
|
||||
OSMesgQueue *eventQueue;
|
||||
OSMesgQueue *acccessQueue;
|
||||
s32 (*piDmaCallback)(s32, u32, void*, size_t);
|
||||
s32 (*epiDmaCallback)(OSPiHandle *, s32, u32, void *, size_t);
|
||||
} OSMgrArgs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
OSMesgQueue* queue;
|
||||
OSMesg msg;
|
||||
} __osHwInt;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
OSMesgQueue* queue;
|
||||
OSMesg msg;
|
||||
} __OSEventState;
|
||||
|
||||
/* Functions */
|
||||
|
||||
u32 __osProbeTLB(void *);
|
||||
s32 __osDisableInt(void);
|
||||
OSThread *__osPopThread(OSThread**);
|
||||
void __osCleanupThread(void);
|
||||
|
||||
#endif
|
|
@ -1,163 +0,0 @@
|
|||
|
||||
/*====================================================================
|
||||
* os_message.h
|
||||
*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
|
||||
* Inc.; the contents of this file may not be disclosed to third
|
||||
* parties, copied or duplicated in any form, in whole or in part,
|
||||
* without the prior written permission of Silicon Graphics, Inc.
|
||||
*
|
||||
* RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to
|
||||
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
|
||||
* in Technical Data and Computer Software clause at DFARS
|
||||
* 252.227-7013, and/or in similar or successor clauses in the FAR,
|
||||
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
|
||||
* Copyright Laws of the United States.
|
||||
*====================================================================*/
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo. (Originated by SGI)
|
||||
|
||||
$RCSfile: os_message.h,v $
|
||||
$Revision: 1.1 $
|
||||
$Date: 1998/10/09 08:01:15 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _OS_MESSAGE_H_
|
||||
#define _OS_MESSAGE_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <ultra64/types.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
|
||||
typedef u32 OSEvent;
|
||||
|
||||
/*
|
||||
* Structure for message
|
||||
*/
|
||||
typedef void * OSMesg;
|
||||
|
||||
/*
|
||||
* Structure for message queue
|
||||
*/
|
||||
typedef struct OSMesgQueue_s {
|
||||
OSThread *mtqueue; /* Queue to store threads blocked
|
||||
on empty mailboxes (receive) */
|
||||
OSThread *fullqueue; /* Queue to store threads blocked
|
||||
on full mailboxes (send) */
|
||||
s32 validCount; /* Contains number of valid message */
|
||||
s32 first; /* Points to first valid message */
|
||||
s32 msgCount; /* Contains total # of messages */
|
||||
OSMesg *msg; /* Points to message buffer array */
|
||||
} OSMesgQueue;
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/* Events */
|
||||
#ifdef _FINALROM
|
||||
#define OS_NUM_EVENTS 15
|
||||
#else
|
||||
#define OS_NUM_EVENTS 23
|
||||
#endif
|
||||
|
||||
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
|
||||
#define OS_EVENT_SW2 1 /* CPU SW2 interrupt */
|
||||
#define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */
|
||||
#define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_SP 4 /* SP task done interrupt */
|
||||
#define OS_EVENT_SI 5 /* SI (controller) interrupt */
|
||||
#define OS_EVENT_AI 6 /* AI interrupt */
|
||||
#define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */
|
||||
#define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */
|
||||
#define OS_EVENT_DP 9 /* DP full sync interrupt */
|
||||
#define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */
|
||||
#define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */
|
||||
#define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */
|
||||
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
|
||||
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
|
||||
#ifndef _FINALROM
|
||||
#define OS_EVENT_RDB_READ_DONE 15 /* RDB read ok event: used by rmon */
|
||||
#define OS_EVENT_RDB_LOG_DONE 16 /* read of log data complete */
|
||||
#define OS_EVENT_RDB_DATA_DONE 17 /* read of hostio data complete */
|
||||
#define OS_EVENT_RDB_REQ_RAMROM 18 /* host needs ramrom access */
|
||||
#define OS_EVENT_RDB_FREE_RAMROM 19 /* host is done with ramrom access */
|
||||
#define OS_EVENT_RDB_DBG_DONE 20
|
||||
#define OS_EVENT_RDB_FLUSH_PROF 21
|
||||
#define OS_EVENT_RDB_ACK_PROF 22
|
||||
#endif
|
||||
|
||||
/* Flags to turn blocking on/off when sending/receiving message */
|
||||
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/* Get count of valid messages in queue */
|
||||
#define MQ_GET_COUNT(mq) ((mq)->validCount)
|
||||
|
||||
/* Figure out if message queue is empty or full */
|
||||
#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0)
|
||||
#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount)
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
|
||||
/* Message operations */
|
||||
|
||||
extern void osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32);
|
||||
extern s32 osSendMesg(OSMesgQueue *, OSMesg, s32);
|
||||
extern s32 osJamMesg(OSMesgQueue *, OSMesg, s32);
|
||||
extern s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32);
|
||||
|
||||
/* Event operations */
|
||||
|
||||
extern void osSetEventMesg(OSEvent, OSMesgQueue *, OSMesg);
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_OS_MESSAGE_H_ */
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef _ULTRA64_OS_MISC_H_
|
||||
#define _ULTRA64_OS_MISC_H_
|
||||
|
||||
/* Miscellaneous OS functions */
|
||||
|
||||
u32 osGetCount(void);
|
||||
|
||||
#endif
|
|
@ -1,87 +0,0 @@
|
|||
#ifndef _ULTRA64_OS_PI_H_
|
||||
#define _ULTRA64_OS_PI_H_
|
||||
|
||||
/* Ultra64 Parallel Interface */
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ u32 errStatus;
|
||||
/* 0x04 */ void *dramAddr;
|
||||
/* 0x08 */ void *C2Addr;
|
||||
/* 0x0C */ u32 sectorSize;
|
||||
/* 0x10 */ u32 C1ErrNum;
|
||||
/* 0x14 */ u32 C1ErrSector[4];
|
||||
} __OSBlockInfo; /* length: 0x24 */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ u32 cmdType;
|
||||
/* 0x04 */ u16 transferMode;
|
||||
/* 0x06 */ u16 blockNum;
|
||||
/* 0x08 */ s32 sectorNum;
|
||||
/* 0x0C */ u32 devAddr;
|
||||
/* 0x10 */ u32 bmCtlShadow;
|
||||
/* 0x14 */ u32 seqCtlShadow;
|
||||
/* 0x18 */ __OSBlockInfo block[2];
|
||||
} __OSTranxInfo; /* length: 0x60 */
|
||||
|
||||
typedef struct OSPiHandle_s
|
||||
{
|
||||
/* 0x00 */ struct OSPiHandle_s *next;
|
||||
/* 0x04 */ u8 type;
|
||||
/* 0x05 */ u8 latency;
|
||||
/* 0x06 */ u8 pageSize;
|
||||
/* 0x07 */ u8 relDuration;
|
||||
/* 0x08 */ u8 pulse;
|
||||
/* 0x09 */ u8 domain;
|
||||
/* 0x0A padding */
|
||||
/* 0x0B padding */
|
||||
/* 0x0C */ u32 baseAddress;
|
||||
/* 0x10 */ u32 speed;
|
||||
/* 0x14 */ __OSTranxInfo transferInfo;
|
||||
} OSPiHandle; /* length: 0x74 */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 type;
|
||||
u32 address;
|
||||
} OSPiInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ u16 type;
|
||||
/* 0x02 */ u8 pri;
|
||||
/* 0x03 */ u8 status;
|
||||
/* 0x04 */ OSMesgQueue *retQueue;
|
||||
} OSIoMesgHdr; /* length: 0x8 */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/*0x00*/ OSIoMesgHdr hdr;
|
||||
/*0x08*/ void *dramAddr;
|
||||
/*0x0C*/ u32 devAddr;
|
||||
/*0x10*/ size_t size;
|
||||
/*0x14*/ OSPiHandle* piHandle; //from the official definition
|
||||
} OSIoMesg; /* length: 0x18 */
|
||||
|
||||
/* Definitions */
|
||||
|
||||
#define OS_READ 0 // device -> RDRAM
|
||||
#define OS_WRITE 1 // device <- RDRAM
|
||||
|
||||
#define OS_MESG_PRI_NORMAL 0
|
||||
#define OS_MESG_PRI_HIGH 1
|
||||
|
||||
/* Functions */
|
||||
|
||||
s32 osPiStartDma(OSIoMesg *mb, s32 priority, s32 direction,
|
||||
u32 devAddr, void *vAddr, size_t nbytes, OSMesgQueue *mq);
|
||||
void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf,
|
||||
s32 cmdMsgCnt);
|
||||
OSMesgQueue *osPiGetCmdQueue(void);
|
||||
s32 osPiWriteIo(u32 devAddr, u32 data);
|
||||
s32 osPiReadIo(u32 devAddr, u32 *data);
|
||||
|
||||
#endif
|
|
@ -1,75 +0,0 @@
|
|||
#ifndef _ULTRA64_THREAD_H_
|
||||
#define _ULTRA64_THREAD_H_
|
||||
|
||||
/* Recommended priorities for system threads */
|
||||
#define OS_PRIORITY_MAX 255
|
||||
#define OS_PRIORITY_VIMGR 254
|
||||
#define OS_PRIORITY_RMON 250
|
||||
#define OS_PRIORITY_RMONSPIN 200
|
||||
#define OS_PRIORITY_PIMGR 150
|
||||
#define OS_PRIORITY_SIMGR 140
|
||||
#define OS_PRIORITY_APPMAX 127
|
||||
#define OS_PRIORITY_IDLE 0
|
||||
|
||||
#define OS_STATE_STOPPED 1
|
||||
#define OS_STATE_RUNNABLE 2
|
||||
#define OS_STATE_RUNNING 4
|
||||
#define OS_STATE_WAITING 8
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef s32 OSPri;
|
||||
typedef s32 OSId;
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct {f32 f_odd; f32 f_even;} f;
|
||||
} __OSfp;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* registers */
|
||||
/*0x20*/ u64 at, v0, v1, a0, a1, a2, a3;
|
||||
/*0x58*/ u64 t0, t1, t2, t3, t4, t5, t6, t7;
|
||||
/*0x98*/ u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
/*0xD8*/ u64 t8, t9, gp, sp, s8, ra;
|
||||
/*0x108*/ u64 lo, hi;
|
||||
/*0x118*/ u32 sr, pc, cause, badvaddr, rcp;
|
||||
/*0x12C*/ u32 fpcsr;
|
||||
__OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
|
||||
__OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
|
||||
} __OSThreadContext;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 flag;
|
||||
u32 count;
|
||||
u64 time;
|
||||
} __OSThreadprofile_s;
|
||||
|
||||
typedef struct OSThread_s
|
||||
{
|
||||
/*0x00*/ struct OSThread_s *next;
|
||||
/*0x04*/ OSPri priority;
|
||||
/*0x08*/ struct OSThread_s **queue;
|
||||
/*0x0C*/ struct OSThread_s *tlnext;
|
||||
/*0x10*/ u16 state;
|
||||
/*0x12*/ u16 flags;
|
||||
/*0x14*/ OSId id;
|
||||
/*0x18*/ int fp;
|
||||
/*0x1C*/ __OSThreadprofile_s *thprof;
|
||||
/*0x20*/ __OSThreadContext context;
|
||||
} OSThread;
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
void osCreateThread(OSThread *thread, OSId id, void (*entry)(void *),
|
||||
void *arg, void *sp, OSPri pri);
|
||||
OSId osGetThreadId(OSThread *thread);
|
||||
OSPri osGetThreadPri(OSThread *thread);
|
||||
void osSetThreadPri(OSThread *thread, OSPri pri);
|
||||
void osStartThread(OSThread *thread);
|
||||
void osStopThread(OSThread *thread);
|
||||
|
||||
#endif
|
|
@ -1,116 +0,0 @@
|
|||
#ifndef _ULTRA64_VI_H_
|
||||
#define _ULTRA64_VI_H_
|
||||
|
||||
/* Ultra64 Video Interface */
|
||||
|
||||
|
||||
/* Special Features */
|
||||
#define OS_VI_GAMMA_ON 0x0001
|
||||
#define OS_VI_GAMMA_OFF 0x0002
|
||||
#define OS_VI_GAMMA_DITHER_ON 0x0004
|
||||
#define OS_VI_GAMMA_DITHER_OFF 0x0008
|
||||
#define OS_VI_DIVOT_ON 0x0010
|
||||
#define OS_VI_DIVOT_OFF 0x0020
|
||||
#define OS_VI_DITHER_FILTER_ON 0x0040
|
||||
#define OS_VI_DITHER_FILTER_OFF 0x0080
|
||||
|
||||
#define OS_VI_GAMMA 0x08
|
||||
#define OS_VI_GAMMA_DITHER 0x04
|
||||
#define OS_VI_DIVOT 0x10
|
||||
#define OS_VI_DITHER_FILTER 0x10000
|
||||
#define OS_VI_UNK200 0x200
|
||||
#define OS_VI_UNK100 0x100
|
||||
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 ctrl;
|
||||
u32 width;
|
||||
u32 burst;
|
||||
u32 vSync;
|
||||
u32 hSync;
|
||||
u32 leap;
|
||||
u32 hStart;
|
||||
u32 xScale;
|
||||
u32 vCurrent;
|
||||
} OSViCommonRegs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 origin;
|
||||
u32 yScale;
|
||||
u32 vStart;
|
||||
u32 vBurst;
|
||||
u32 vIntr;
|
||||
} OSViFieldRegs;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 type;
|
||||
OSViCommonRegs comRegs;
|
||||
OSViFieldRegs fldRegs[2];
|
||||
} OSViMode;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ f32 factor;
|
||||
/* 0x4 */ u16 offset;
|
||||
/* 0x8 */ u32 scale;
|
||||
} __OSViScale;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ u16 state;
|
||||
/* 0x02 */ u16 retraceCount;
|
||||
/* 0x04 */ void* buffer;
|
||||
/* 0x08 */ OSViMode *modep;
|
||||
/* 0x0c */ u32 features;
|
||||
/* 0x10 */ OSMesgQueue *mq;
|
||||
/* 0x14 */ OSMesg *msg;
|
||||
/* 0x18 */ __OSViScale x;
|
||||
/* 0x24 */ __OSViScale y;
|
||||
} OSViContext;
|
||||
|
||||
void osCreateViManager(OSPri pri);
|
||||
void osViSetMode(OSViMode *mode);
|
||||
void osViSetEvent(OSMesgQueue *mq, OSMesg msg, u32 retraceCount);
|
||||
void osViBlack(u8 active);
|
||||
void osViSetSpecialFeatures(u32 func);
|
||||
void osViSwapBuffer(void *vaddr);
|
||||
|
||||
|
||||
#define OS_VI_NTSC_LPN1 0 /* NTSC */
|
||||
#define OS_VI_NTSC_LPF1 1
|
||||
#define OS_VI_NTSC_LAN1 2
|
||||
#define OS_VI_NTSC_LAF1 3
|
||||
#define OS_VI_NTSC_LPN2 4
|
||||
#define OS_VI_NTSC_LPF2 5
|
||||
#define OS_VI_NTSC_LAN2 6
|
||||
#define OS_VI_NTSC_LAF2 7
|
||||
#define OS_VI_NTSC_HPN1 8
|
||||
#define OS_VI_NTSC_HPF1 9
|
||||
#define OS_VI_NTSC_HAN1 10
|
||||
#define OS_VI_NTSC_HAF1 11
|
||||
#define OS_VI_NTSC_HPN2 12
|
||||
#define OS_VI_NTSC_HPF2 13
|
||||
|
||||
#define OS_VI_PAL_LPN1 14 /* PAL */
|
||||
#define OS_VI_PAL_LPF1 15
|
||||
#define OS_VI_PAL_LAN1 16
|
||||
#define OS_VI_PAL_LAF1 17
|
||||
#define OS_VI_PAL_LPN2 18
|
||||
#define OS_VI_PAL_LPF2 19
|
||||
#define OS_VI_PAL_LAN2 20
|
||||
#define OS_VI_PAL_LAF2 21
|
||||
#define OS_VI_PAL_HPN1 22
|
||||
#define OS_VI_PAL_HPF1 23
|
||||
#define OS_VI_PAL_HAN1 24
|
||||
#define OS_VI_PAL_HAF1 25
|
||||
#define OS_VI_PAL_HPN2 26
|
||||
#define OS_VI_PAL_HPF2 27
|
||||
|
||||
extern OSViMode osViModeTable[]; /* Global VI mode table */
|
||||
|
||||
|
||||
#endif
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _ULTRA64_PFS_H_
|
||||
#define _ULTRA64_PFS_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include "ultra64.h"
|
||||
|
||||
/* File System size */
|
||||
#define OS_PFS_VERSION 0x0200
|
||||
|
@ -70,68 +70,68 @@
|
|||
#define PFS_SECTOR_SIZE (PFS_INODE_SIZE_PER_PAGE/PFS_SECTOR_PER_BANK)
|
||||
|
||||
typedef struct {
|
||||
int status;
|
||||
OSMesgQueue* queue;
|
||||
int channel;
|
||||
u8 id[32];
|
||||
u8 label[32];
|
||||
int version;
|
||||
int dir_size;
|
||||
int inode_table; /* block location */
|
||||
int minode_table; /* mirrioring inode_table */
|
||||
int dir_table; /* block location */
|
||||
int inodeStartPage; /* page # */
|
||||
u8 banks;
|
||||
u8 activebank;
|
||||
} OSPfs;
|
||||
/* 0x00 */ s32 status;
|
||||
/* 0x04 */ OSMesgQueue* queue;
|
||||
/* 0x08 */ s32 channel;
|
||||
/* 0x0C */ u8 id[32];
|
||||
/* 0x2C */ u8 label[32];
|
||||
/* 0x4C */ s32 version;
|
||||
/* 0x50 */ s32 dir_size;
|
||||
/* 0x54 */ s32 inode_table; /* block location */
|
||||
/* 0x58 */ s32 minode_table; /* mirrioring inode_table */
|
||||
/* 0x5C */ s32 dir_table; /* block location */
|
||||
/* 0x60 */ s32 inodeStartPage; /* page # */
|
||||
/* 0x64 */ u8 banks;
|
||||
/* 0x65 */ u8 activebank;
|
||||
} OSPfs; // size = 0x68
|
||||
|
||||
typedef struct {
|
||||
u32 file_size; /* bytes */
|
||||
u32 game_code;
|
||||
u16 company_code;
|
||||
char ext_name[4];
|
||||
char game_name[16];
|
||||
} OSPfsState;
|
||||
/* 0x00 */ u32 file_size; /* bytes */
|
||||
/* 0x04 */ u32 game_code;
|
||||
/* 0x08 */ u16 company_code;
|
||||
/* 0x0C */ char ext_name[4];
|
||||
/* 0x10 */ char game_name[16];
|
||||
} OSPfsState; // size = 0x20
|
||||
|
||||
typedef union {
|
||||
struct {
|
||||
u8 bank;
|
||||
u8 page;
|
||||
/* 0x00 */ u8 bank;
|
||||
/* 0x01 */ u8 page;
|
||||
} inode_t;
|
||||
u16 ipage;
|
||||
} __OSInodeUnit;
|
||||
/* 0x00 */ u16 ipage;
|
||||
} __OSInodeUnit; // size = 0x02
|
||||
|
||||
typedef struct {
|
||||
__OSInodeUnit inodePage[128];
|
||||
} __OSInode;
|
||||
/* 0x00 */ __OSInodeUnit inodePage[128];
|
||||
} __OSInode; // size = 0x100
|
||||
|
||||
typedef struct {
|
||||
u32 game_code;
|
||||
u16 company_code;
|
||||
__OSInodeUnit start_page;
|
||||
u8 status;
|
||||
s8 reserved;
|
||||
u16 data_sum;
|
||||
u8 ext_name[PFS_FILE_EXT_LEN];
|
||||
u8 game_name[PFS_FILE_NAME_LEN];
|
||||
} __OSDir;
|
||||
/* 0x00 */ u32 game_code;
|
||||
/* 0x04 */ u16 company_code;
|
||||
/* 0x06 */ __OSInodeUnit start_page;
|
||||
/* 0x08 */ u8 status;
|
||||
/* 0x09 */ s8 reserved;
|
||||
/* 0x0A */ u16 data_sum;
|
||||
/* 0x0C */ u8 ext_name[PFS_FILE_EXT_LEN];
|
||||
/* 0x10 */ u8 game_name[PFS_FILE_NAME_LEN];
|
||||
} __OSDir; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
u32 repaired;
|
||||
u32 random;
|
||||
u64 serialMid;
|
||||
u64 serialLow;
|
||||
u16 deviceid;
|
||||
u8 banks;
|
||||
u8 version;
|
||||
u16 checksum;
|
||||
u16 invertedChecksum;
|
||||
} __OSPackId;
|
||||
/* 0x00 */ u32 repaired;
|
||||
/* 0x04 */ u32 random;
|
||||
/* 0x08 */ u64 serialMid;
|
||||
/* 0x10 */ u64 serialLow;
|
||||
/* 0x18 */ u16 deviceid;
|
||||
/* 0x1A */ u8 banks;
|
||||
/* 0x1B */ u8 version;
|
||||
/* 0x1C */ u16 checksum;
|
||||
/* 0x1E */ u16 invertedChecksum;
|
||||
} __OSPackId; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
__OSInode inode;
|
||||
u8 bank;
|
||||
u8 map[PFS_INODE_DIST_MAP];
|
||||
} __OSInodeCache;
|
||||
/* 0x000 */ __OSInode inode;
|
||||
/* 0x100 */ u8 bank;
|
||||
/* 0x101 */ u8 map[PFS_INODE_DIST_MAP];
|
||||
} __OSInodeCache; // size = 0x202
|
||||
|
||||
#endif
|
||||
|
|
63
include/ultra64/pi.h
Normal file
63
include/ultra64/pi.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
#ifndef _ULTRA64_PI_H_
|
||||
#define _ULTRA64_PI_H_
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 errStatus;
|
||||
/* 0x04 */ void* dramAddr;
|
||||
/* 0x08 */ void* C2Addr;
|
||||
/* 0x0C */ u32 sectorSize;
|
||||
/* 0x10 */ u32 C1ErrNum;
|
||||
/* 0x14 */ u32 C1ErrSector[4];
|
||||
} __OSBlockInfo; // size = 0x24
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 cmdType;
|
||||
/* 0x04 */ u16 transferMode;
|
||||
/* 0x06 */ u16 blockNum;
|
||||
/* 0x08 */ s32 sectorNum;
|
||||
/* 0x0C */ u32 devAddr;
|
||||
/* 0x10 */ u32 bmCtlShadow;
|
||||
/* 0x14 */ u32 seqCtlShadow;
|
||||
/* 0x18 */ __OSBlockInfo block[2];
|
||||
} __OSTranxInfo; // size = 0x60
|
||||
|
||||
typedef struct OSPiHandle {
|
||||
/* 0x00 */ struct OSPiHandle* next;
|
||||
/* 0x04 */ u8 type;
|
||||
/* 0x05 */ u8 latency;
|
||||
/* 0x06 */ u8 pageSize;
|
||||
/* 0x07 */ u8 relDuration;
|
||||
/* 0x08 */ u8 pulse;
|
||||
/* 0x09 */ u8 domain;
|
||||
/* 0x0C */ u32 baseAddress;
|
||||
/* 0x10 */ u32 speed;
|
||||
/* 0x14 */ __OSTranxInfo transferInfo;
|
||||
} OSPiHandle; // size = 0x74
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 type;
|
||||
/* 0x04 */ u32 address;
|
||||
} OSPiInfo; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 type;
|
||||
/* 0x02 */ u8 pri;
|
||||
/* 0x03 */ u8 status;
|
||||
/* 0x04 */ OSMesgQueue* retQueue;
|
||||
} OSIoMesgHdr; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ OSIoMesgHdr hdr;
|
||||
/* 0x08 */ void* dramAddr;
|
||||
/* 0x0C */ u32 devAddr;
|
||||
/* 0x10 */ size_t size;
|
||||
/* 0x14 */ OSPiHandle* piHandle;
|
||||
} OSIoMesg; // size = 0x18
|
||||
|
||||
#define OS_READ 0 // device -> RDRAM
|
||||
#define OS_WRITE 1 // device <- RDRAM
|
||||
|
||||
#define OS_MESG_PRI_NORMAL 0
|
||||
#define OS_MESG_PRI_HIGH 1
|
||||
|
||||
#endif
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef _PRINTF_H_
|
||||
#define _PRINTF_H_
|
||||
#include <stdarg.h>
|
||||
#ifndef _ULTRA64_PRINTF_H_
|
||||
#define _ULTRA64_PRINTF_H_
|
||||
#include "stdarg.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ union {
|
||||
|
@ -19,7 +19,7 @@ typedef struct {
|
|||
/* 0x2C */ u32 nchar;
|
||||
/* 0x30 */ u32 flags;
|
||||
/* 0x34 */ u8 qual;
|
||||
} _Pft;
|
||||
} _Pft; // size = 0x38
|
||||
|
||||
#define FLAGS_SPACE 1
|
||||
#define FLAGS_PLUS 2
|
||||
|
@ -27,8 +27,4 @@ typedef struct {
|
|||
#define FLAGS_HASH 8
|
||||
#define FLAGS_ZERO 16
|
||||
|
||||
s32 _Printf(char *(*prout)(char *, const char *, size_t), char *dst, const char *fmt, va_list args);
|
||||
void _Litob(_Pft *args, u8 type);
|
||||
void _Ldtob(_Pft *args, u8 type);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -49,10 +49,4 @@
|
|||
#define DPC_CLR_CMD_CTR 0x0100
|
||||
#define DPC_CLR_CLOCK_CTR 0x0200
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
u32 osDpGetStatus(void);
|
||||
void osDpSetStatus(u32 status);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
#define _ULTRA64_SPTASK_H_
|
||||
|
||||
/* Task Types */
|
||||
#define M_NULTASK 0
|
||||
#define M_GFXTASK 1
|
||||
#define M_AUDTASK 2
|
||||
#define M_VIDTASK 3
|
||||
#define M_NJPEGTASK 4
|
||||
#define M_HVQTASK 6
|
||||
#define M_HVQMTASK 7
|
||||
|
||||
|
@ -24,10 +26,7 @@
|
|||
|
||||
#define OS_YIELD_DATA_SIZE 0xC00
|
||||
|
||||
/* Types */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 type;
|
||||
/* 0x04 */ u32 flags;
|
||||
|
||||
|
@ -61,15 +60,8 @@ typedef union
|
|||
|
||||
typedef u32 OSYieldResult;
|
||||
|
||||
/* Functions */
|
||||
|
||||
#define osSpTaskStart(p) \
|
||||
osSpTaskLoad(p); \
|
||||
osSpTaskStartGo(p);
|
||||
|
||||
void osSpTaskLoad(OSTask *task);
|
||||
void osSpTaskStartGo(OSTask *task);
|
||||
void osSpTaskYield(void);
|
||||
OSYieldResult osSpTaskYielded(OSTask *task);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,57 +1,59 @@
|
|||
#ifndef _ULTRA64_THREAD_H_
|
||||
#define _ULTRA64_THREAD_H_
|
||||
|
||||
/* Types */
|
||||
#define OS_PRIORITY_MAX 255
|
||||
#define OS_PRIORITY_VIMGR 254
|
||||
#define OS_PRIORITY_RMON 250
|
||||
#define OS_PRIORITY_RMONSPIN 200
|
||||
#define OS_PRIORITY_PIMGR 150
|
||||
#define OS_PRIORITY_SIMGR 140
|
||||
#define OS_PRIORITY_APPMAX 127
|
||||
#define OS_PRIORITY_IDLE 0
|
||||
|
||||
#define OS_STATE_STOPPED 1
|
||||
#define OS_STATE_RUNNABLE 2
|
||||
#define OS_STATE_RUNNING 4
|
||||
#define OS_STATE_WAITING 8
|
||||
|
||||
typedef s32 OSPri;
|
||||
typedef s32 OSId;
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct {f32 f_odd; f32 f_even;} f;
|
||||
} __OSfp;
|
||||
typedef union {
|
||||
struct {
|
||||
/* 0x00 */ f32 f_odd;
|
||||
/* 0x04 */ f32 f_even;
|
||||
} f;
|
||||
} __OSfp; // size = 0x08
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* registers */
|
||||
/*0x20*/ u64 at, v0, v1, a0, a1, a2, a3;
|
||||
/*0x58*/ u64 t0, t1, t2, t3, t4, t5, t6, t7;
|
||||
/*0x98*/ u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
/*0xD8*/ u64 t8, t9, gp, sp, s8, ra;
|
||||
/*0x108*/ u64 lo, hi;
|
||||
/*0x118*/ u32 sr, pc, cause, badvaddr, rcp;
|
||||
/*0x12C*/ u32 fpcsr;
|
||||
__OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
|
||||
__OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
|
||||
} __OSThreadContext;
|
||||
typedef struct {
|
||||
/* 0x000 */ u64 at, v0, v1, a0, a1, a2, a3;
|
||||
/* 0x038 */ u64 t0, t1, t2, t3, t4, t5, t6, t7;
|
||||
/* 0x078 */ u64 s0, s1, s2, s3, s4, s5, s6, s7;
|
||||
/* 0x0B8 */ u64 t8, t9, gp, sp, s8, ra;
|
||||
/* 0x0E8 */ u64 lo, hi;
|
||||
/* 0x0F8 */ u32 sr, pc, cause, badvaddr, rcp;
|
||||
/* 0x10C */ u32 fpcsr;
|
||||
/* 0x110 */ __OSfp fp0, fp2, fp4, fp6, fp8, fp10, fp12, fp14;
|
||||
/* 0x150 */ __OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
|
||||
} __OSThreadContext; // size = 0x190
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 flag;
|
||||
u32 count;
|
||||
u64 time;
|
||||
} __OSThreadprofile_s;
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 flag;
|
||||
/* 0x04 */ u32 count;
|
||||
/* 0x08 */ u64 time;
|
||||
} __OSThreadprofile; // size = 0x10
|
||||
|
||||
typedef struct OSThread_s
|
||||
{
|
||||
/*0x00*/ struct OSThread_s *next;
|
||||
typedef struct OSThread {
|
||||
/*0x00*/ struct OSThread* next;
|
||||
/*0x04*/ OSPri priority;
|
||||
/*0x08*/ struct OSThread_s **queue;
|
||||
/*0x0C*/ struct OSThread_s *tlnext;
|
||||
/*0x08*/ struct OSThread** queue;
|
||||
/*0x0C*/ struct OSThread* tlnext;
|
||||
/*0x10*/ u16 state;
|
||||
/*0x12*/ u16 flags;
|
||||
/*0x14*/ OSId id;
|
||||
/*0x18*/ int fp;
|
||||
/*0x1C*/ __OSThreadprofile_s *thprof;
|
||||
/*0x18*/ s32 fp;
|
||||
/*0x1C*/ __OSThreadprofile* thprof;
|
||||
/*0x20*/ __OSThreadContext context;
|
||||
} OSThread;
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
OSId osGetThreadId(OSThread *thread);
|
||||
OSPri osGetThreadPri(OSThread *thread);
|
||||
void osStartThread(OSThread *thread);
|
||||
void osStopThread(OSThread *thread);
|
||||
} OSThread; // size = 0x1B0
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,28 +1,17 @@
|
|||
#ifndef _ULTRA64_TIME_H_
|
||||
#define _ULTRA64_TIME_H_
|
||||
|
||||
#include <ultra64/os_message.h>
|
||||
|
||||
/* Types */
|
||||
#include "ultra64/message.h"
|
||||
|
||||
typedef u64 OSTime;
|
||||
|
||||
typedef struct OSTimer_s
|
||||
{
|
||||
struct OSTimer_s *next;
|
||||
struct OSTimer_s *prev;
|
||||
OSTime interval;
|
||||
OSTime value;
|
||||
OSMesgQueue *mq;
|
||||
OSMesg msg;
|
||||
} OSTimer;
|
||||
|
||||
|
||||
/* Functions */
|
||||
|
||||
OSTime osGetTime(void);
|
||||
|
||||
int osSetTimer(OSTimer *timer, OSTime countdown, OSTime interval, OSMesgQueue *mq, OSMesg msg);
|
||||
s32 osStopTimer(OSTimer *timer);
|
||||
typedef struct OSTimer {
|
||||
/* 0x00 */ struct OSTimer* next;
|
||||
/* 0x04 */ struct OSTimer* prev;
|
||||
/* 0x08 */ OSTime interval;
|
||||
/* 0x10 */ OSTime value;
|
||||
/* 0x18 */ OSMesgQueue* mq;
|
||||
/* 0x1C */ OSMesg msg;
|
||||
} OSTimer; // size = 0x20
|
||||
|
||||
#endif
|
||||
|
|
95
include/ultra64/vi.h
Normal file
95
include/ultra64/vi.h
Normal file
|
@ -0,0 +1,95 @@
|
|||
#ifndef _ULTRA64_VI_H_
|
||||
#define _ULTRA64_VI_H_
|
||||
|
||||
/* Special Features */
|
||||
#define OS_VI_GAMMA_ON 0x0001
|
||||
#define OS_VI_GAMMA_OFF 0x0002
|
||||
#define OS_VI_GAMMA_DITHER_ON 0x0004
|
||||
#define OS_VI_GAMMA_DITHER_OFF 0x0008
|
||||
#define OS_VI_DIVOT_ON 0x0010
|
||||
#define OS_VI_DIVOT_OFF 0x0020
|
||||
#define OS_VI_DITHER_FILTER_ON 0x0040
|
||||
#define OS_VI_DITHER_FILTER_OFF 0x0080
|
||||
|
||||
#define OS_VI_GAMMA 0x08
|
||||
#define OS_VI_GAMMA_DITHER 0x04
|
||||
#define OS_VI_DIVOT 0x10
|
||||
#define OS_VI_DITHER_FILTER 0x10000
|
||||
#define OS_VI_UNK200 0x200
|
||||
#define OS_VI_UNK100 0x100
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 ctrl;
|
||||
/* 0x04 */ u32 width;
|
||||
/* 0x08 */ u32 burst;
|
||||
/* 0x0C */ u32 vSync;
|
||||
/* 0x10 */ u32 hSync;
|
||||
/* 0x14 */ u32 leap;
|
||||
/* 0x18 */ u32 hStart;
|
||||
/* 0x1C */ u32 xScale;
|
||||
/* 0x20 */ u32 vCurrent;
|
||||
} OSViCommonRegs; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 origin;
|
||||
/* 0x04 */ u32 yScale;
|
||||
/* 0x08 */ u32 vStart;
|
||||
/* 0x0C */ u32 vBurst;
|
||||
/* 0x10 */ u32 vIntr;
|
||||
} OSViFieldRegs; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 type;
|
||||
/* 0x04 */ OSViCommonRegs comRegs;
|
||||
/* 0x24 */ OSViFieldRegs fldRegs[2];
|
||||
} OSViMode; // size = 0x4C
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ f32 factor;
|
||||
/* 0x4 */ u16 offset;
|
||||
/* 0x8 */ u32 scale;
|
||||
} __OSViScale; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 state;
|
||||
/* 0x02 */ u16 retraceCount;
|
||||
/* 0x04 */ void* buffer;
|
||||
/* 0x08 */ OSViMode* modep;
|
||||
/* 0x0c */ u32 features;
|
||||
/* 0x10 */ OSMesgQueue* mq;
|
||||
/* 0x14 */ OSMesg* msg;
|
||||
/* 0x18 */ __OSViScale x;
|
||||
/* 0x24 */ __OSViScale y;
|
||||
} OSViContext; // size = 0x30
|
||||
|
||||
#define OS_VI_NTSC_LPN1 0 /* NTSC */
|
||||
#define OS_VI_NTSC_LPF1 1
|
||||
#define OS_VI_NTSC_LAN1 2
|
||||
#define OS_VI_NTSC_LAF1 3
|
||||
#define OS_VI_NTSC_LPN2 4
|
||||
#define OS_VI_NTSC_LPF2 5
|
||||
#define OS_VI_NTSC_LAN2 6
|
||||
#define OS_VI_NTSC_LAF2 7
|
||||
#define OS_VI_NTSC_HPN1 8
|
||||
#define OS_VI_NTSC_HPF1 9
|
||||
#define OS_VI_NTSC_HAN1 10
|
||||
#define OS_VI_NTSC_HAF1 11
|
||||
#define OS_VI_NTSC_HPN2 12
|
||||
#define OS_VI_NTSC_HPF2 13
|
||||
|
||||
#define OS_VI_PAL_LPN1 14 /* PAL */
|
||||
#define OS_VI_PAL_LPF1 15
|
||||
#define OS_VI_PAL_LAN1 16
|
||||
#define OS_VI_PAL_LAF1 17
|
||||
#define OS_VI_PAL_LPN2 18
|
||||
#define OS_VI_PAL_LPF2 19
|
||||
#define OS_VI_PAL_LAN2 20
|
||||
#define OS_VI_PAL_LAF2 21
|
||||
#define OS_VI_PAL_HPN1 22
|
||||
#define OS_VI_PAL_HPF1 23
|
||||
#define OS_VI_PAL_HAN1 24
|
||||
#define OS_VI_PAL_HAF1 25
|
||||
#define OS_VI_PAL_HPN2 26
|
||||
#define OS_VI_PAL_HPF2 27
|
||||
|
||||
#endif
|
|
@ -1,8 +1,8 @@
|
|||
#ifndef _VARIABLES_H_
|
||||
#define _VARIABLES_H_
|
||||
|
||||
#include <z64.h>
|
||||
#include <segment_symbols.h>
|
||||
#include "z64.h"
|
||||
#include "segment_symbols.h"
|
||||
|
||||
extern u8 D_02000000[];
|
||||
extern u8 D_02000400[];
|
||||
|
@ -90,7 +90,7 @@ extern u8 D_800093F0[];
|
|||
extern s8 D_80009430;
|
||||
extern u32 D_80009460;
|
||||
extern u32 gDmaMgrDmaBuffSize;
|
||||
extern volatile u8 gViConfigUseDefault;
|
||||
extern vu8 gViConfigUseDefault;
|
||||
extern u8 gViConfigAdditionalScanLines;
|
||||
extern u32 gViConfigFeatures;
|
||||
extern f32 gViConfigXScale;
|
||||
|
@ -103,13 +103,11 @@ extern u64 osClockRate;
|
|||
extern s32 osViClock;
|
||||
extern u32 __osShutdown;
|
||||
extern u32 __OSGlobalIntMask;
|
||||
extern __osHwInt __osHwIntTable[];
|
||||
extern OSThread* __osThreadTail[];
|
||||
extern OSThread* __osRunQueue;
|
||||
extern OSThread* __osActiveQueue;
|
||||
extern OSThread* __osRunningThread;
|
||||
extern OSThread* __osFaultedThread;
|
||||
extern OSMgrArgs __osPiDevMgr;
|
||||
extern OSPiHandle* __osPiTable;
|
||||
extern OSPiHandle* __osCurrentHandle[];
|
||||
extern OSTimer* __osTimerList;
|
||||
|
@ -130,7 +128,6 @@ extern OSMesgQueue __osPiAccessQueue;
|
|||
extern OSPiHandle __Dom1SpeedParam;
|
||||
extern OSPiHandle __Dom2SpeedParam;
|
||||
extern OSThread __osThreadSave;
|
||||
extern __OSEventState __osEventStateTab[];
|
||||
extern OSTimer __osBaseTimer;
|
||||
extern OSTime __osCurrentTime;
|
||||
extern u32 __osBaseCounter;
|
||||
|
@ -578,7 +575,7 @@ extern Mtx gMtxClear;
|
|||
extern MtxF gMtxFClear;
|
||||
extern u8 D_8012DBB0;
|
||||
extern u32 D_8012DBC0;
|
||||
extern volatile u32 gIrqMgrResetStatus;
|
||||
extern vu32 gIrqMgrResetStatus;
|
||||
extern volatile OSTime gIrqMgrRetraceTime;
|
||||
extern s32 gDebugArenaLogSeverity;
|
||||
//extern ? sUCodeDisasGeometryModes;
|
||||
|
|
|
@ -1,30 +1,29 @@
|
|||
#ifndef _Z64_H_
|
||||
#define _Z64_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include <ultra64/gbi.h>
|
||||
#include <ultra64/gs2dex.h>
|
||||
#include <ultra64/controller.h>
|
||||
#include <z64light.h>
|
||||
#include <z64actor.h>
|
||||
#include <z64player.h>
|
||||
#include <z64audio.h>
|
||||
#include <z64object.h>
|
||||
#include <z64cutscene.h>
|
||||
#include <z64collision_check.h>
|
||||
#include <z64scene.h>
|
||||
#include <z64effect.h>
|
||||
#include <z64item.h>
|
||||
#include <z64animation.h>
|
||||
#include <z64dma.h>
|
||||
#include <z64math.h>
|
||||
#include <z64transition.h>
|
||||
#include <bgm.h>
|
||||
#include <sfx.h>
|
||||
#include <color.h>
|
||||
#include <ichain.h>
|
||||
#include <stdarg.h>
|
||||
#include <regs.h>
|
||||
#include "ultra64.h"
|
||||
#include "ultra64/gs2dex.h"
|
||||
#include "z64light.h"
|
||||
#include "z64actor.h"
|
||||
#include "z64player.h"
|
||||
#include "z64audio.h"
|
||||
#include "z64object.h"
|
||||
#include "z64cutscene.h"
|
||||
#include "z64collision_check.h"
|
||||
#include "z64scene.h"
|
||||
#include "z64effect.h"
|
||||
#include "z64item.h"
|
||||
#include "z64animation.h"
|
||||
#include "z64dma.h"
|
||||
#include "z64math.h"
|
||||
#include "z64transition.h"
|
||||
#include "bgm.h"
|
||||
#include "sfx.h"
|
||||
#include "color.h"
|
||||
#include "ichain.h"
|
||||
#include "stdarg.h"
|
||||
#include "stdlib.h"
|
||||
#include "regs.h"
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
|
@ -34,6 +33,14 @@
|
|||
#define REGION_JP 2
|
||||
#define REGION_EU 3
|
||||
|
||||
#define Z_PRIORITY_MAIN 10
|
||||
#define Z_PRIORITY_GRAPH 11
|
||||
#define Z_PRIORITY_AUDIOMGR 12
|
||||
#define Z_PRIORITY_PADMGR 14
|
||||
#define Z_PRIORITY_SCHED 15
|
||||
#define Z_PRIORITY_DMAMGR 16
|
||||
#define Z_PRIORITY_IRQMGR 17
|
||||
|
||||
// NOTE: Once we start supporting other builds, this can be changed with an ifdef
|
||||
#define REGION_NATIVE REGION_EU
|
||||
|
||||
|
@ -301,36 +308,10 @@ typedef struct GraphicsContext {
|
|||
} GraphicsContext; // size = 0x300
|
||||
|
||||
typedef struct {
|
||||
PadInput in;
|
||||
union {
|
||||
u16 status;
|
||||
struct {
|
||||
u8 errno;
|
||||
u8 statusLo;
|
||||
};
|
||||
};
|
||||
} PadState;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x00 */ PadState cur;
|
||||
/* 0x06 */ PadState prev;
|
||||
/* 0x0C */ PadState press; // X/Y store delta from last frame
|
||||
/* 0x12 */ PadState rel; // X/Y store adjusted
|
||||
/* The old version of this struct is:
|
||||
RawInput raw;
|
||||
u16 status;
|
||||
RawInput rawPrev;
|
||||
u16 statusPrev;
|
||||
u16 padPressed;
|
||||
s8 xDiff;
|
||||
s8 yDiff;
|
||||
char unk_10[0x02];
|
||||
u16 padReleased;
|
||||
s8 xAdjusted;
|
||||
s8 yAdjusted;
|
||||
char unk_16[0x02];
|
||||
*/
|
||||
/* 0x00 */ OSContPad cur;
|
||||
/* 0x06 */ OSContPad prev;
|
||||
/* 0x0C */ OSContPad press; // X/Y store delta from last frame
|
||||
/* 0x12 */ OSContPad rel; // X/Y store adjusted
|
||||
} Input; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
|
@ -1624,16 +1605,16 @@ typedef struct {
|
|||
/* 0x0078 */ IrqMgr* irqMgr;
|
||||
/* 0x0080 */ OSThread thread;
|
||||
/* 0x0230 */ Input inputs[4];
|
||||
/* 0x0290 */ PadState pads[4];
|
||||
/* 0x02A8 */ volatile u8 validCtrlrsMask;
|
||||
/* 0x0290 */ OSContPad pads[4];
|
||||
/* 0x02A8 */ vu8 validCtrlrsMask;
|
||||
/* 0x02A9 */ u8 ncontrollers;
|
||||
/* 0x02AA */ u8 ctrlrIsConnected[4]; // "Key_switch" originally
|
||||
/* 0x02AE */ u8 pakType[4]; // 1 if rumble pack, 2 if mempak?
|
||||
/* 0x02B2 */ volatile u8 rumbleEnable[4];
|
||||
/* 0x02B2 */ vu8 rumbleEnable[4];
|
||||
/* 0x02B6 */ u8 rumbleCounter[4]; // not clear exact meaning
|
||||
/* 0x02BC */ OSPfs pfs[4];
|
||||
/* 0x045C */ volatile u8 rumbleOffFrames;
|
||||
/* 0x045D */ volatile u8 rumbleOnFrames;
|
||||
/* 0x045C */ vu8 rumbleOffFrames;
|
||||
/* 0x045D */ vu8 rumbleOnFrames;
|
||||
/* 0x045E */ u8 preNMIShutdown;
|
||||
/* 0x0460 */ void (*retraceCallback)(void* padmgr, u32 unk464);
|
||||
/* 0x0464 */ u32 retraceCallbackValue;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#ifndef _Z64ACTOR_H_
|
||||
#define _Z64ACTOR_H_
|
||||
|
||||
#include <z64dma.h>
|
||||
#include <z64animation.h>
|
||||
#include <z64math.h>
|
||||
#include <z64collision_check.h>
|
||||
#include "z64dma.h"
|
||||
#include "z64animation.h"
|
||||
#include "z64math.h"
|
||||
#include "z64collision_check.h"
|
||||
|
||||
#define ACTOR_NUMBER_MAX 200
|
||||
#define INVISIBLE_ACTOR_MAX 20
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
#ifndef _Z64_ANIMATION_H
|
||||
#define _Z64_ANIMATION_H
|
||||
|
||||
#include <ultra64.h>
|
||||
#include <ultra64/gbi.h>
|
||||
#include <z64dma.h>
|
||||
#include <z64math.h>
|
||||
#include "ultra64.h"
|
||||
#include "z64dma.h"
|
||||
#include "z64math.h"
|
||||
|
||||
#define LINK_ANIMETION_OFFSET(addr,offset) (((u32)&_link_animetionSegmentRomStart)+((u32)addr)-((u32)&link_animetion_segment)+((u32)offset))
|
||||
#define LIMB_DONE 0xFF
|
||||
|
|
|
@ -459,7 +459,7 @@ typedef struct {
|
|||
// these bitfields should perhaps be merged into a single struct
|
||||
union {
|
||||
struct {
|
||||
/*?0x00 */ volatile u8 enabled : 1;
|
||||
/* 0x00 */ vu8 enabled : 1;
|
||||
/* 0x00 */ u8 needsInit : 1;
|
||||
/*?0x00 */ u8 finished : 1;
|
||||
/*?0x00 */ u8 envMixerNeedsInit : 1;
|
||||
|
|
|
@ -116,7 +116,7 @@ typedef struct {
|
|||
typedef struct {
|
||||
/* 0x00 */ Sphere16 modelSphere; // model space sphere
|
||||
/* 0x08 */ Sphere16 worldSphere; // world space sphere
|
||||
/* 0x10 */ float scale; // world space sphere = model * scale * 0.01
|
||||
/* 0x10 */ f32 scale; // world space sphere = model * scale * 0.01
|
||||
/* 0x14 */ u8 joint;
|
||||
} ColliderJntSphItemDim; // size = 0x18
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _Z64CUTSCENE_H_
|
||||
#define _Z64CUTSCENE_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include "ultra64.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 entrance; // entrance index upon which the cutscene should trigger
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#ifndef _Z64CUTSCENE_CMMANDS_H_
|
||||
#define _Z64CUTSCENE_CMMANDS_H_
|
||||
|
||||
#include <command_macros_base.h>
|
||||
#include <z64cutscene.h>
|
||||
#include "command_macros_base.h"
|
||||
#include "z64cutscene.h"
|
||||
|
||||
/**
|
||||
* ARGS
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _Z64_DMA_H_
|
||||
#define _Z64_DMA_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include "ultra64.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 vromAddr; // VROM address (source)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _Z64EFFECT_H_
|
||||
#define _Z64EFFECT_H_
|
||||
|
||||
#include <color.h>
|
||||
#include "color.h"
|
||||
|
||||
struct GraphicsContext;
|
||||
struct GlobalContext;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#ifndef _Z64LIGHT_H_
|
||||
#define _Z64LIGHT_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include <ultra64/gbi.h>
|
||||
#include <z64math.h>
|
||||
#include <color.h>
|
||||
#include "ultra64.h"
|
||||
#include "ultra64/gbi.h"
|
||||
#include "z64math.h"
|
||||
#include "color.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 x;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _Z64MATH_H_
|
||||
#define _Z64MATH_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include "ultra64.h"
|
||||
|
||||
#define VEC_SET(V,X,Y,Z) V.x=X;V.y=Y;V.z=Z
|
||||
|
||||
|
@ -54,10 +54,10 @@ typedef struct {
|
|||
} Cylinder16; // size = 0x0C
|
||||
|
||||
typedef struct {
|
||||
f32 radius;
|
||||
f32 height;
|
||||
f32 yShift;
|
||||
Vec3f pos;
|
||||
/* 0x00 */ f32 radius;
|
||||
/* 0x04 */ f32 height;
|
||||
/* 0x08 */ f32 yShift;
|
||||
/* 0x0C */ Vec3f pos;
|
||||
} Cylinderf; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
|
@ -72,9 +72,9 @@ typedef struct {
|
|||
|
||||
// Defines a point in the spherical coordinate system
|
||||
typedef struct {
|
||||
f32 r; // radius
|
||||
s16 pitch; // polar (zenith) angle
|
||||
s16 yaw; // azimuthal angle
|
||||
/* 0x00 */ f32 r; // radius
|
||||
/* 0x04 */ s16 pitch; // polar (zenith) angle
|
||||
/* 0x06 */ s16 yaw; // azimuthal angle
|
||||
} VecSph; // size = 0x08
|
||||
|
||||
#define IS_ZERO(f) (fabsf(f) < 0.008f)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _Z64PLAYER_H_
|
||||
#define _Z64PLAYER_H_
|
||||
|
||||
#include <z64actor.h>
|
||||
#include "z64actor.h"
|
||||
|
||||
struct Player;
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#ifndef _Z64TRANSITION_H_
|
||||
|
||||
#include <ultra64.h>
|
||||
#include <ultra64/gbi.h>
|
||||
#include <color.h>
|
||||
#include "ultra64.h"
|
||||
#include "color.h"
|
||||
|
||||
typedef struct {
|
||||
f32 unk_0;
|
||||
|
|
118
spec
118
spec
|
@ -411,8 +411,8 @@ beginseg
|
|||
include "build/src/code/code_800E11F0.o"
|
||||
include "build/data/code_800E11F0.data.o"
|
||||
include "build/data/code_800E11F0.rodata.o"
|
||||
include "build/src/libultra_code/code_800E6840.o"
|
||||
include "build/src/libultra_code/osAiSetNextBuffer.o"
|
||||
include "build/src/libultra_code_O2/code_800E6840.o"
|
||||
include "build/src/libultra_code_O2/osAiSetNextBuffer.o"
|
||||
include "build/src/code/audio_playback.o"
|
||||
include "build/src/code/audio_effects.o"
|
||||
include "build/data/audio_effects.data.o"
|
||||
|
@ -442,71 +442,71 @@ beginseg
|
|||
include "build/src/code/sleep.o"
|
||||
include "build/src/code/jpegutils.o"
|
||||
include "build/src/code/jpegdecoder.o"
|
||||
include "build/src/libultra_code/osPfsFreeBlocks.o"
|
||||
include "build/src/libultra_code_O2/osPfsFreeBlocks.o"
|
||||
include "build/asm/guScale.o"
|
||||
include "build/src/libultra_code/sinf.o"
|
||||
include "build/src/libultra_code/sins.o"
|
||||
include "build/src/libultra_code/sptask.o"
|
||||
include "build/src/libultra_code/osRumblePak.o"
|
||||
include "build/src/libultra_code/__osSiCreateAccessQueue.o"
|
||||
include "build/src/libultra_code/osContInit.o"
|
||||
include "build/src/libultra_code/osContStartReadData.o"
|
||||
include "build/src/libultra_code/guPerspectiveF.o"
|
||||
include "build/src/libultra_code/__osSpRawStartDma.o"
|
||||
include "build/src/libultra_code/__osSiRawStartDma.o"
|
||||
include "build/src/libultra_code/osSpTaskYield.o"
|
||||
include "build/src/libultra_code/pfsreadwritefile.o"
|
||||
include "build/src/libultra_code/__osPfsGetStatus.o"
|
||||
include "build/src/libultra_code_O2/sinf.o"
|
||||
include "build/src/libultra_code_O2/sins.o"
|
||||
include "build/src/libultra_code_O2/sptask.o"
|
||||
include "build/src/libultra_code_O2/osRumblePak.o"
|
||||
include "build/src/libultra_code_O2/__osSiCreateAccessQueue.o"
|
||||
include "build/src/libultra_code_O2/osContInit.o"
|
||||
include "build/src/libultra_code_O2/osContStartReadData.o"
|
||||
include "build/src/libultra_code_O2/guPerspectiveF.o"
|
||||
include "build/src/libultra_code_O2/__osSpRawStartDma.o"
|
||||
include "build/src/libultra_code_O2/__osSiRawStartDma.o"
|
||||
include "build/src/libultra_code_O2/osSpTaskYield.o"
|
||||
include "build/src/libultra_code_O2/pfsreadwritefile.o"
|
||||
include "build/src/libultra_code_O2/__osPfsGetStatus.o"
|
||||
include "build/asm/guMtxIdentF.o"
|
||||
include "build/src/libultra_code/guLookAt.o"
|
||||
include "build/src/libultra_code/pfsallocatefile.o"
|
||||
include "build/src/libultra_code/osStopTimer.o"
|
||||
include "build/src/libultra_code/contpfs.o"
|
||||
include "build/src/libultra_code/code_80102FA0.o"
|
||||
include "build/src/libultra_code/osPfsFindFile.o"
|
||||
include "build/src/libultra_code/sqrtf.o"
|
||||
include "build/src/libultra_code/osAfterPreNMI.o"
|
||||
include "build/src/libultra_code/contquery.o"
|
||||
include "build/src/libultra_code/guLookAtHilite.o"
|
||||
include "build/src/libultra_code/sp.o"
|
||||
include "build/src/libultra_code_O2/guLookAt.o"
|
||||
include "build/src/libultra_code_O2/pfsallocatefile.o"
|
||||
include "build/src/libultra_code_O1/osStopTimer.o"
|
||||
include "build/src/libultra_code_O2/contpfs.o"
|
||||
include "build/src/libultra_code_O2/code_80102FA0.o"
|
||||
include "build/src/libultra_code_O2/osPfsFindFile.o"
|
||||
include "build/src/libultra_code_O2/sqrtf.o"
|
||||
include "build/src/libultra_code_O2/osAfterPreNMI.o"
|
||||
include "build/src/libultra_code_O2/contquery.o"
|
||||
include "build/src/libultra_code_O2/guLookAtHilite.o"
|
||||
include "build/src/libultra_code_O2/sp.o"
|
||||
include "build/asm/guMtxIdent.o"
|
||||
include "build/src/libultra_code/guPosition.o"
|
||||
include "build/src/libultra_code/osSpTaskYielded.o"
|
||||
include "build/src/libultra_code/rotate.o"
|
||||
include "build/src/libultra_code/osAiSetFrequency.o"
|
||||
include "build/src/libultra_code/__osGetActiveQueue.o"
|
||||
include "build/src/libultra_code_O2/guPosition.o"
|
||||
include "build/src/libultra_code_O2/osSpTaskYielded.o"
|
||||
include "build/src/libultra_code_O2/rotate.o"
|
||||
include "build/src/libultra_code_O2/osAiSetFrequency.o"
|
||||
include "build/src/libultra_code_O2/__osGetActiveQueue.o"
|
||||
include "build/asm/guNormalize.o"
|
||||
include "build/src/libultra_code/osDpGetStatus.o"
|
||||
include "build/src/libultra_code/osDpSetStatus.o"
|
||||
include "build/src/libultra_code/osPfsDeleteFile.o"
|
||||
include "build/src/libultra_code/ortho.o"
|
||||
include "build/src/libultra_code/cosf.o"
|
||||
include "build/src/libultra_code_O2/osDpGetStatus.o"
|
||||
include "build/src/libultra_code_O2/osDpSetStatus.o"
|
||||
include "build/src/libultra_code_O2/osPfsDeleteFile.o"
|
||||
include "build/src/libultra_code_O2/ortho.o"
|
||||
include "build/src/libultra_code_O2/cosf.o"
|
||||
include "build/data/__libm_qnan_f.rodata.o"
|
||||
include "build/src/libultra_code/coss.o"
|
||||
include "build/src/libultra_code/osViSetEvent.o"
|
||||
include "build/src/libultra_code/osPfsIsPlug.o"
|
||||
include "build/src/libultra_code/guS2DInitBg.o"
|
||||
include "build/src/libultra_code/__osPfsSelectBank.o"
|
||||
include "build/src/libultra_code/osContSetCh.o"
|
||||
include "build/src/libultra_code/code_80104D60.o"
|
||||
include "build/src/libultra_code/pfsinitpak.o"
|
||||
include "build/src/libultra_code/pfschecker.o"
|
||||
include "build/src/libultra_code/osAiGetLength.o"
|
||||
include "build/src/libultra_code_O2/coss.o"
|
||||
include "build/src/libultra_code_O2/osViSetEvent.o"
|
||||
include "build/src/libultra_code_O2/osPfsIsPlug.o"
|
||||
include "build/src/libultra_code_O2/guS2DInitBg.o"
|
||||
include "build/src/libultra_code_O2/__osPfsSelectBank.o"
|
||||
include "build/src/libultra_code_O2/osContSetCh.o"
|
||||
include "build/src/libultra_code_O2/code_80104D60.o"
|
||||
include "build/src/libultra_code_O2/pfsinitpak.o"
|
||||
include "build/src/libultra_code_O2/pfschecker.o"
|
||||
include "build/src/libultra_code_O2/osAiGetLength.o"
|
||||
include "build/asm/guTranslate.o"
|
||||
include "build/src/libultra_code/__osContRamWrite.o"
|
||||
include "build/src/libultra_code/__osContRamRead.o"
|
||||
include "build/src/libultra_code/__osContAddressCrc.o"
|
||||
include "build/src/libultra_code/osSetTimer.o"
|
||||
include "build/src/libultra_code/__osSpGetStatus.o"
|
||||
include "build/src/libultra_code/__osSpSetStatus.o"
|
||||
include "build/src/libultra_code_O2/__osContRamWrite.o"
|
||||
include "build/src/libultra_code_O2/__osContRamRead.o"
|
||||
include "build/src/libultra_code_O2/__osContAddressCrc.o"
|
||||
include "build/src/libultra_code_O1/osSetTimer.o"
|
||||
include "build/src/libultra_code_O2/__osSpGetStatus.o"
|
||||
include "build/src/libultra_code_O2/__osSpSetStatus.o"
|
||||
include "build/asm/osWritebackDCacheAll.o"
|
||||
include "build/src/libultra_code/__osGetCurrFaultedThread.o"
|
||||
include "build/src/libultra_code_O2/__osGetCurrFaultedThread.o"
|
||||
include "build/asm/guMtxF2L.o"
|
||||
include "build/src/libultra_code/llcvt.o"
|
||||
include "build/src/libultra_code/osViGetCurrentFramebuffer.o"
|
||||
include "build/src/libultra_code/__osSpSetPc.o"
|
||||
include "build/src/libultra_code/sqrt.o"
|
||||
include "build/src/libultra_code/absf.o"
|
||||
include "build/src/libultra_code_O1/llcvt.o"
|
||||
include "build/src/libultra_code_O2/osViGetCurrentFramebuffer.o"
|
||||
include "build/src/libultra_code_O2/__osSpSetPc.o"
|
||||
include "build/src/libultra_code_O2_g3/sqrt.o"
|
||||
include "build/src/libultra_code_O2_g3/absf.o"
|
||||
include "build/src/code/code_801067F0.o"
|
||||
include "build/src/code/code_80106860.o"
|
||||
include "build/src/code/code_801068B0.o"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <z64.h>
|
||||
#include "global.h"
|
||||
|
||||
void __assert(const char* exp, const char* file, s32 line) {
|
||||
char msg[256];
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
StackEntry sBootThreadInfo;
|
||||
OSThread sIdleThread;
|
||||
|
@ -25,6 +24,6 @@ void bootproc(void) {
|
|||
Locale_Init();
|
||||
|
||||
StackCheck_Init(&sIdleThreadInfo, sIdleThreadStack, sIdleThreadStack + sizeof(sIdleThreadStack), 0, 256, "idle");
|
||||
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, 0, sIdleThreadStack + sizeof(sIdleThreadStack), 10);
|
||||
osCreateThread(&sIdleThread, 1, Idle_ThreadEntry, 0, sIdleThreadStack + sizeof(sIdleThreadStack), Z_PRIORITY_MAIN);
|
||||
osStartThread(&sIdleThread);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include <vt.h>
|
||||
#include "global.h"
|
||||
#include "vt.h"
|
||||
|
||||
OSThread gMainThread;
|
||||
u8 sMainStack[0x900];
|
||||
|
@ -11,7 +10,7 @@ OSViMode gViConfigMode;
|
|||
u8 D_80013960;
|
||||
|
||||
s8 D_80009430 = 1;
|
||||
u8 volatile gViConfigUseDefault = 1;
|
||||
vu8 gViConfigUseDefault = 1;
|
||||
u8 gViConfigAdditionalScanLines = 0;
|
||||
u32 gViConfigFeatures = OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF;
|
||||
f32 gViConfigXScale = 1.0;
|
||||
|
@ -21,7 +20,7 @@ void Main_ThreadEntry(void* arg0) {
|
|||
OSTime var1;
|
||||
|
||||
osSyncPrintf("mainx 実行開始\n");
|
||||
DmaMgr_Start();
|
||||
DmaMgr_Init();
|
||||
osSyncPrintf("codeセグメントロード中...");
|
||||
var1 = osGetTime();
|
||||
DmaMgr_SendRequest1(_codeSegmentStart, (u32)_codeSegmentRomStart, _codeSegmentRomEnd - _codeSegmentRomStart,
|
||||
|
@ -50,7 +49,7 @@ void Idle_ThreadEntry(void* a0) {
|
|||
osSyncPrintf("オーディオヒープのサイズは %d キロバイトです\n", ((s32)gSystemHeap - (s32)gAudioHeap) / 1024);
|
||||
osSyncPrintf(VT_RST);
|
||||
|
||||
osCreateViManager(0xFE);
|
||||
osCreateViManager(OS_PRIORITY_VIMGR);
|
||||
|
||||
gViConfigFeatures = 0x42;
|
||||
gViConfigXScale = 1.0f;
|
||||
|
@ -79,11 +78,11 @@ void Idle_ThreadEntry(void* a0) {
|
|||
ViConfig_UpdateVi(1);
|
||||
osViBlack(1);
|
||||
osViSwapBuffer(0x803DA80); //! @bug Invalid vram address (probably intended to be 0x803DA800)
|
||||
osCreatePiManager(150, &gPiMgrCmdQ, sPiMgrCmdBuff, 50);
|
||||
osCreatePiManager(OS_PRIORITY_PIMGR, &gPiMgrCmdQ, sPiMgrCmdBuff, 50);
|
||||
StackCheck_Init(&sMainStackInfo, sMainStack, sMainStack + sizeof(sMainStack), 0, 0x400, "main");
|
||||
osCreateThread(&gMainThread, 3, Main_ThreadEntry, a0, sMainStack + sizeof(sMainStack), 10);
|
||||
osCreateThread(&gMainThread, 3, Main_ThreadEntry, a0, sMainStack + sizeof(sMainStack), Z_PRIORITY_MAIN);
|
||||
osStartThread(&gMainThread);
|
||||
osSetThreadPri(NULL, 0);
|
||||
osSetThreadPri(NULL, OS_PRIORITY_IDLE);
|
||||
|
||||
while (1) {
|
||||
;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <z64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
OSPiHandle* sISVHandle; // official name : is_Handle
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#include <z64.h>
|
||||
#include <global.h>
|
||||
#include <vt.h>
|
||||
#include "global.h"
|
||||
#include "vt.h"
|
||||
|
||||
float LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, float var1, const char* var2Name,
|
||||
float var2, const char* var3Name, float var3) {
|
||||
f32 LogUtils_CheckFloatRange(const char* exp, s32 arg1, const char* var1Name, f32 var1, const char* var2Name, f32 var2,
|
||||
const char* var3Name, f32 var3) {
|
||||
if (var1 < var2 || var3 < var1) {
|
||||
osSyncPrintf("%s %d: range error %s(%f) < %s(%f) < %s(%f)\n", exp, arg1, var2Name, var2, var1Name, var1,
|
||||
var3Name, var3);
|
||||
|
@ -90,7 +89,6 @@ void LogUtils_CheckNullPointer(const char* exp, void* ptr, const char* file, s32
|
|||
}
|
||||
}
|
||||
|
||||
// check valid pointer
|
||||
void LogUtils_CheckValidPointer(const char* exp, void* ptr0, const char* file, s32 line) {
|
||||
u32 ptr = (u32)ptr0;
|
||||
if (!ptr || ptr < 0x80000000U || (0x80000000U + osMemSize) <= ptr) {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#include <z64.h>
|
||||
#include <global.h>
|
||||
#include <vt.h>
|
||||
#include "global.h"
|
||||
#include "vt.h"
|
||||
|
||||
StackEntry* sStackInfoListStart = NULL;
|
||||
StackEntry* sStackInfoListEnd = NULL;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include <vt.h>
|
||||
#include "global.h"
|
||||
#include "vt.h"
|
||||
|
||||
// this should probably go elsewhere but right now viconfig.o is the only object between idle and z_std_dma
|
||||
OSPiHandle* gCartHandle = 0;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <z64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
u8 sYaz0DataBuffer[0x400];
|
||||
u32 sYaz0CurDataEnd;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include <vt.h>
|
||||
#include "global.h"
|
||||
#include "vt.h"
|
||||
|
||||
u32 gCurrentRegion = 0;
|
||||
LocaleCartInfo sCartInfo;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include <vt.h>
|
||||
#include "global.h"
|
||||
#include "vt.h"
|
||||
|
||||
StackEntry sDmaMgrStackInfo;
|
||||
OSMesgQueue sDmaMgrMsgQueue;
|
||||
|
@ -1815,9 +1814,9 @@ void DmaMgr_ProcessMsg(DmaRequest* req) {
|
|||
"圧縮されたセグメントの一部だけをDMA転送することはできません");
|
||||
}
|
||||
|
||||
osSetThreadPri(NULL, 0x0A);
|
||||
osSetThreadPri(NULL, Z_PRIORITY_MAIN);
|
||||
Yaz0_Decompress(romStart, ram, romSize);
|
||||
osSetThreadPri(NULL, 0x10);
|
||||
osSetThreadPri(NULL, Z_PRIORITY_DMAMGR);
|
||||
found = true;
|
||||
|
||||
" Press ROM:%X RAM:%X SIZE:%X\n";
|
||||
|
@ -1910,7 +1909,7 @@ s32 DmaMgr_SendRequest0(u32 ram, u32 vrom, u32 size) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void DmaMgr_Start() {
|
||||
void DmaMgr_Init() {
|
||||
const char** name;
|
||||
s32 idx;
|
||||
DmaEntry* iter;
|
||||
|
@ -1952,7 +1951,8 @@ void DmaMgr_Start() {
|
|||
|
||||
osCreateMesgQueue(&sDmaMgrMsgQueue, sDmaMgrMsgs, sizeof(sDmaMgrMsgs) / sizeof(sDmaMgrMsgs[0]));
|
||||
StackCheck_Init(&sDmaMgrStackInfo, sDmaMgrStack, sDmaMgrStack + sizeof(sDmaMgrStack), 0, 0x100, "dmamgr");
|
||||
osCreateThread(&sDmaMgrThread, 0x12, &DmaMgr_ThreadEntry, 0, sDmaMgrStack + sizeof(sDmaMgrStack), 0x10);
|
||||
osCreateThread(&sDmaMgrThread, 0x12, &DmaMgr_ThreadEntry, 0, sDmaMgrStack + sizeof(sDmaMgrStack),
|
||||
Z_PRIORITY_DMAMGR);
|
||||
osStartThread(&sDmaMgrThread);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <z64.h>
|
||||
#include "z64.h"
|
||||
|
||||
// 0x18000 bytes
|
||||
u64 gGfxSPTaskOutputBuffer[0x3000];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <z64.h>
|
||||
#include "z64.h"
|
||||
|
||||
// 0x38000 bytes
|
||||
u8 gAudioHeap[0x38000];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <z64.h>
|
||||
#include "z64.h"
|
||||
|
||||
// 0x25800 bytes
|
||||
u16 gZBuffer[SCREEN_HEIGHT][SCREEN_WIDTH];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void PreRender_SetValuesSave(PreRenderContext* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg) {
|
||||
this->widthSave = width;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, u32 size) {
|
||||
THA_Ct((TwoHeadArena*)thga, start, size);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include <global.h>
|
||||
#include <vt.h>
|
||||
#include "global.h"
|
||||
#include "vt.h"
|
||||
|
||||
#define FILL_ALLOCBLOCK (1 << 0)
|
||||
#define FILL_FREEBLOCK (1 << 1)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void func_800C3C80(AudioMgr* audioMgr) {
|
||||
Sub_AudioMgr_18* sub;
|
||||
|
@ -91,7 +90,7 @@ void AudioMgr_Unlock(AudioMgr* audioMgr) {
|
|||
osRecvMesg(&audioMgr->unk_C8, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
void AudioMgr_Start(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr) {
|
||||
void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr) {
|
||||
bzero(audioMgr, sizeof(AudioMgr));
|
||||
|
||||
audioMgr->sched = sched;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "ultra64.h"
|
||||
#include "global.h"
|
||||
|
||||
void Audio_SequenceChannelProcessSound(SequenceChannel* seqChannel, s32 recalculateVolume, s32 b) {
|
||||
f32 channelVolume;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "ultra64.h"
|
||||
#include "global.h"
|
||||
|
||||
f32 func_800DDE20(f32 arg0) {
|
||||
return 256.0f * gAudioContext.gAudioBufferParameters.unkUpdatesPerFrameScaled / arg0;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void Audio_NoteSetVelPanReverb(Note* note, NoteSubEu* sub, Reverb* reverb) {
|
||||
f32 volRight, volLeft;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "ultra64.h"
|
||||
#include "global.h"
|
||||
|
||||
#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)
|
||||
#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_800430A0/func_800430A0.s")
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void DynaPolyInfo_SetActorMove(DynaPolyActor* dynaActor, DynaPolyMoveFlag flags) {
|
||||
dynaActor->dynaPolyId = -1;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void* MemCopy(void* dest, void* src, s32 size) {
|
||||
u8* destu = (u8*)dest;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void func_8006BA00(GlobalContext* globalCtx) {
|
||||
SoundSource* sources = &globalCtx->soundSources[0];
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void Flags_UnsetAllEnv(GlobalContext* globalCtx) {
|
||||
u8 i;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
f32 func_8006C510(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5) {
|
||||
char pad[0x1C];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include <global.h>
|
||||
#include "global.h"
|
||||
|
||||
void func_8008E6A0(SubGlobalContext7B8* this) {
|
||||
this->counter = 0;
|
||||
|
@ -6,20 +6,20 @@ void func_8008E6A0(SubGlobalContext7B8* this) {
|
|||
}
|
||||
|
||||
u32 func_8008E6AC(SubGlobalContext7B8* this, Input* input) {
|
||||
if (CHECK_PAD(input->cur, R_TRIG) && CHECK_PAD(input->press, D_JPAD)) {
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_R) && CHECK_BTN_ALL(input->press.button, BTN_DDOWN)) {
|
||||
this->toggle = !this->toggle;
|
||||
}
|
||||
if (!this->toggle) {
|
||||
goto ret_true;
|
||||
}
|
||||
|
||||
if (CHECK_PAD(input->cur, Z_TRIG)) {
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_Z)) {
|
||||
|
||||
if (CHECK_PAD(input->press, R_TRIG)) {
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_R)) {
|
||||
goto ret_true;
|
||||
}
|
||||
|
||||
if (CHECK_PAD(input->cur, R_TRIG)) {
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_R)) {
|
||||
this->counter++;
|
||||
if (this->counter >= 9) {
|
||||
goto ret_true;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue