You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Add iQue support
This commit is contained in:
126
include/ique/PR/PRimage.h
Executable file
126
include/ique/PR/PRimage.h
Executable file
@@ -0,0 +1,126 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* $Revision: 1.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/PRimage.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef __GL_IMAGE_H__
|
||||
#define __GL_IMAGE_H__
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Defines for image files . . . .
|
||||
*
|
||||
* Paul Haeberli - 1984
|
||||
* Look in /usr/people/4Dgifts/iristools/imgtools for example code!
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define IMAGIC 0732
|
||||
|
||||
/* colormap of images */
|
||||
#define CM_NORMAL 0 /* file contains rows of values which
|
||||
* are either RGB values (zsize == 3)
|
||||
* or greyramp values (zsize == 1) */
|
||||
#define CM_DITHERED 1
|
||||
#define CM_SCREEN 2 /* file contains data which is a screen
|
||||
* image; getrow returns buffer which
|
||||
* can be displayed directly with
|
||||
* writepixels */
|
||||
#define CM_COLORMAP 3 /* a colormap file */
|
||||
|
||||
#define TYPEMASK 0xff00
|
||||
#define BPPMASK 0x00ff
|
||||
#define ITYPE_VERBATIM 0x0000
|
||||
#define ITYPE_RLE 0x0100
|
||||
#define ISRLE(type) (((type) & 0xff00) == ITYPE_RLE)
|
||||
#define ISVERBATIM(type) (((type) & 0xff00) == ITYPE_VERBATIM)
|
||||
#define BPP(type) ((type) & BPPMASK)
|
||||
#define RLE(bpp) (ITYPE_RLE | (bpp))
|
||||
#define VERBATIM(bpp) (ITYPE_VERBATIM | (bpp))
|
||||
#define IBUFSIZE(pixels) (((pixels)+((pixels)>>6))<<2)
|
||||
#define RLE_NOP 0x00
|
||||
|
||||
#define ierror(p) (((p)->flags&_IOERR)!=0)
|
||||
#define ifileno(p) ((p)->file)
|
||||
#define getpix(p) (--(p)->cnt>=0 ? *(p)->ptr++ : ifilbuf(p))
|
||||
#define putpix(p,x) (--(p)->cnt>=0 \
|
||||
? ((int)(*(p)->ptr++=(unsigned)(x))) \
|
||||
: iflsbuf(p,(unsigned)(x)))
|
||||
|
||||
typedef struct {
|
||||
unsigned short imagic; /* stuff saved on disk . . */
|
||||
unsigned short type;
|
||||
unsigned short dim;
|
||||
unsigned short xsize;
|
||||
unsigned short ysize;
|
||||
unsigned short zsize;
|
||||
unsigned long min;
|
||||
unsigned long max;
|
||||
unsigned long wastebytes;
|
||||
char name[80];
|
||||
unsigned long colormap;
|
||||
|
||||
long file; /* stuff used in core only */
|
||||
unsigned short flags;
|
||||
short dorev;
|
||||
short x;
|
||||
short y;
|
||||
short z;
|
||||
short cnt;
|
||||
unsigned short *ptr;
|
||||
unsigned short *base;
|
||||
unsigned short *tmpbuf;
|
||||
unsigned long offset;
|
||||
unsigned long rleend; /* for rle images */
|
||||
unsigned long *rowstart; /* for rle images */
|
||||
long *rowsize; /* for rle images */
|
||||
} IMAGE;
|
||||
|
||||
IMAGE *icreate();
|
||||
/*
|
||||
* IMAGE *iopen(char *file, char *mode, unsigned int type, unsigned int dim,
|
||||
* unsigned int xsize, unsigned int ysize, unsigned int zsize);
|
||||
* IMAGE *fiopen(int f, char *mode, unsigned int type, unsigned int dim,
|
||||
* unsigned int xsize, unsigned int ysize, unsigned int zsize);
|
||||
*
|
||||
* ...while iopen and fiopen can take an extended set of parameters, the
|
||||
* last five are optional, so a more correct prototype would be:
|
||||
*
|
||||
*/
|
||||
IMAGE *iopen(char *file, char *mode, ...);
|
||||
IMAGE *fiopen(int f, char *mode, ...);
|
||||
|
||||
/*
|
||||
*
|
||||
* unsigned short *ibufalloc(IMAGE *image);
|
||||
* int ifilbuf(IMAGE *image);
|
||||
* int iflush(IMAGE *image);
|
||||
* unsigned int iflsbuf(IMAGE *image, unsigned int c);
|
||||
* void isetname(IMAGE *image, char *name);
|
||||
* void isetcolormap(IMAGE *image, int colormap);
|
||||
*/
|
||||
|
||||
int iclose(IMAGE *image);
|
||||
int putrow(IMAGE *image, unsigned short *buffer, unsigned int y, unsigned int z);
|
||||
int getrow(IMAGE *image, unsigned short *buffer, unsigned int y, unsigned int z);
|
||||
|
||||
/*
|
||||
IMAGE *iopen();
|
||||
IMAGE *icreate();
|
||||
*/
|
||||
|
||||
unsigned short *ibufalloc();
|
||||
|
||||
#define IMAGEDEF /* for backwards compatibility */
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !__GL_IMAGE_H__ */
|
||||
453
include/ique/PR/R4300.h
Executable file
453
include/ique/PR/R4300.h
Executable file
@@ -0,0 +1,453 @@
|
||||
/**************************************************************************
|
||||
* *
|
||||
* Copyright (C) 1995, Silicon Graphics, Inc. *
|
||||
* *
|
||||
* These coded instructions, statements, and computer programs contain *
|
||||
* unpublished proprietary information of Silicon Graphics, Inc., and *
|
||||
* are protected by Federal copyright law. They may not be disclosed *
|
||||
* to third parties or copied or duplicated in any form, in whole or *
|
||||
* in part, without the prior written consent of Silicon Graphics, Inc. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* $Revision: 1.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/R4300.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef __R4300_H__
|
||||
#define __R4300_H__
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
/*
|
||||
* Segment base addresses and sizes
|
||||
*/
|
||||
#define KUBASE 0
|
||||
#define KUSIZE 0x80000000
|
||||
#define K0BASE 0x80000000
|
||||
#define K0SIZE 0x20000000
|
||||
#define K1BASE 0xA0000000
|
||||
#define K1SIZE 0x20000000
|
||||
#define K2BASE 0xC0000000
|
||||
#define K2SIZE 0x20000000
|
||||
|
||||
/*
|
||||
* Exception vectors
|
||||
*/
|
||||
#define SIZE_EXCVEC 0x80 /* Size of an exc. vec */
|
||||
#define UT_VEC K0BASE /* utlbmiss vector */
|
||||
#define R_VEC (K1BASE+0x1fc00000) /* reset vector */
|
||||
#define XUT_VEC (K0BASE+0x80) /* extended address tlbmiss */
|
||||
#define ECC_VEC (K0BASE+0x100) /* Ecc exception vector */
|
||||
#define E_VEC (K0BASE+0x180) /* Gen. exception vector */
|
||||
|
||||
/*
|
||||
* Address conversion macros
|
||||
*/
|
||||
#ifdef _LANGUAGE_ASSEMBLY
|
||||
|
||||
#define K0_TO_K1(x) ((x)|0xA0000000) /* kseg0 to kseg1 */
|
||||
#define K1_TO_K0(x) ((x)&0x9FFFFFFF) /* kseg1 to kseg0 */
|
||||
#define K0_TO_PHYS(x) ((x)&0x1FFFFFFF) /* kseg0 to physical */
|
||||
#define K1_TO_PHYS(x) ((x)&0x1FFFFFFF) /* kseg1 to physical */
|
||||
#define KDM_TO_PHYS(x) ((x)&0x1FFFFFFF) /* direct mapped to physical */
|
||||
#define PHYS_TO_K0(x) ((x)|0x80000000) /* physical to kseg0 */
|
||||
#define PHYS_TO_K1(x) ((x)|0xA0000000) /* physical to kseg1 */
|
||||
|
||||
#else /* _LANGUAGE_C */
|
||||
|
||||
#define K0_TO_K1(x) ((u32)(x)|0xA0000000) /* kseg0 to kseg1 */
|
||||
#define K1_TO_K0(x) ((u32)(x)&0x9FFFFFFF) /* kseg1 to kseg0 */
|
||||
#define K0_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) /* kseg0 to physical */
|
||||
#define K1_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) /* kseg1 to physical */
|
||||
#define KDM_TO_PHYS(x) ((u32)(x)&0x1FFFFFFF) /* direct mapped to physical */
|
||||
#define PHYS_TO_K0(x) ((u32)(x)|0x80000000) /* physical to kseg0 */
|
||||
#define PHYS_TO_K1(x) ((u32)(x)|0xA0000000) /* physical to kseg1 */
|
||||
|
||||
#endif /* _LANGUAGE_ASSEMBLY */
|
||||
|
||||
/*
|
||||
* Address predicates
|
||||
*/
|
||||
#define IS_KSEG0(x) ((u32)(x) >= K0BASE && (u32)(x) < K1BASE)
|
||||
#define IS_KSEG1(x) ((u32)(x) >= K1BASE && (u32)(x) < K2BASE)
|
||||
#define IS_KSEGDM(x) ((u32)(x) >= K0BASE && (u32)(x) < K2BASE)
|
||||
#define IS_KSEG2(x) ((u32)(x) >= K2BASE && (u32)(x) < KPTE_SHDUBASE)
|
||||
#define IS_KPTESEG(x) ((u32)(x) >= KPTE_SHDUBASE)
|
||||
#define IS_KUSEG(x) ((u32)(x) < K0BASE)
|
||||
|
||||
/*
|
||||
* TLB size constants
|
||||
*/
|
||||
|
||||
#define NTLBENTRIES 31 /* entry 31 is reserved by rdb */
|
||||
|
||||
#define TLBHI_VPN2MASK 0xffffe000
|
||||
#define TLBHI_VPN2SHIFT 13
|
||||
#define TLBHI_PIDMASK 0xff
|
||||
#define TLBHI_PIDSHIFT 0
|
||||
#define TLBHI_NPID 255 /* 255 to fit in 8 bits */
|
||||
|
||||
#define TLBLO_PFNMASK 0x3fffffc0
|
||||
#define TLBLO_PFNSHIFT 6
|
||||
#define TLBLO_CACHMASK 0x38 /* cache coherency algorithm */
|
||||
#define TLBLO_CACHSHIFT 3
|
||||
#define TLBLO_UNCACHED 0x10 /* not cached */
|
||||
#define TLBLO_NONCOHRNT 0x18 /* Cacheable non-coherent */
|
||||
#define TLBLO_EXLWR 0x28 /* Exclusive write */
|
||||
#define TLBLO_D 0x4 /* writeable */
|
||||
#define TLBLO_V 0x2 /* valid bit */
|
||||
#define TLBLO_G 0x1 /* global access bit */
|
||||
|
||||
#define TLBINX_PROBE 0x80000000
|
||||
#define TLBINX_INXMASK 0x3f
|
||||
#define TLBINX_INXSHIFT 0
|
||||
|
||||
#define TLBRAND_RANDMASK 0x3f
|
||||
#define TLBRAND_RANDSHIFT 0
|
||||
|
||||
#define TLBWIRED_WIREDMASK 0x3f
|
||||
|
||||
#define TLBCTXT_BASEMASK 0xff800000
|
||||
#define TLBCTXT_BASESHIFT 23
|
||||
#define TLBCTXT_BASEBITS 9
|
||||
|
||||
#define TLBCTXT_VPNMASK 0x7ffff0
|
||||
#define TLBCTXT_VPNSHIFT 4
|
||||
|
||||
#define TLBPGMASK_4K 0x0
|
||||
#define TLBPGMASK_16K 0x6000
|
||||
#define TLBPGMASK_64K 0x1e000
|
||||
|
||||
/*
|
||||
* Status register
|
||||
*/
|
||||
#define SR_CUMASK 0xf0000000 /* coproc usable bits */
|
||||
|
||||
#define SR_CU3 0x80000000 /* Coprocessor 3 usable */
|
||||
#define SR_CU2 0x40000000 /* Coprocessor 2 usable */
|
||||
#define SR_CU1 0x20000000 /* Coprocessor 1 usable */
|
||||
#define SR_CU0 0x10000000 /* Coprocessor 0 usable */
|
||||
#define SR_RP 0x08000000 /* Reduced power (quarter speed) */
|
||||
#define SR_FR 0x04000000 /* MIPS III FP register mode */
|
||||
#define SR_RE 0x02000000 /* Reverse endian */
|
||||
#define SR_ITS 0x01000000 /* Instruction trace support */
|
||||
#define SR_BEV 0x00400000 /* Use boot exception vectors */
|
||||
#define SR_TS 0x00200000 /* TLB shutdown */
|
||||
#define SR_SR 0x00100000 /* Soft reset occured */
|
||||
#define SR_CH 0x00040000 /* Cache hit for last 'cache' op */
|
||||
#define SR_CE 0x00020000 /* Create ECC */
|
||||
#define SR_DE 0x00010000 /* ECC of parity does not cause error */
|
||||
|
||||
/*
|
||||
* Interrupt enable bits
|
||||
* (NOTE: bits set to 1 enable the corresponding level interrupt)
|
||||
*/
|
||||
#define SR_IMASK 0x0000ff00 /* Interrupt mask */
|
||||
#define SR_IMASK8 0x00000000 /* mask level 8 */
|
||||
#define SR_IMASK7 0x00008000 /* mask level 7 */
|
||||
#define SR_IMASK6 0x0000c000 /* mask level 6 */
|
||||
#define SR_IMASK5 0x0000e000 /* mask level 5 */
|
||||
#define SR_IMASK4 0x0000f000 /* mask level 4 */
|
||||
#define SR_IMASK3 0x0000f800 /* mask level 3 */
|
||||
#define SR_IMASK2 0x0000fc00 /* mask level 2 */
|
||||
#define SR_IMASK1 0x0000fe00 /* mask level 1 */
|
||||
#define SR_IMASK0 0x0000ff00 /* mask level 0 */
|
||||
|
||||
#define SR_IBIT8 0x00008000 /* bit level 8 */
|
||||
#define SR_IBIT7 0x00004000 /* bit level 7 */
|
||||
#define SR_IBIT6 0x00002000 /* bit level 6 */
|
||||
#define SR_IBIT5 0x00001000 /* bit level 5 */
|
||||
#define SR_IBIT4 0x00000800 /* bit level 4 */
|
||||
#define SR_IBIT3 0x00000400 /* bit level 3 */
|
||||
#define SR_IBIT2 0x00000200 /* bit level 2 */
|
||||
#define SR_IBIT1 0x00000100 /* bit level 1 */
|
||||
|
||||
#define SR_IMASKSHIFT 8
|
||||
|
||||
#define SR_KX 0x00000080 /* extended-addr TLB vec in kernel */
|
||||
#define SR_SX 0x00000040 /* xtended-addr TLB vec supervisor */
|
||||
#define SR_UX 0x00000020 /* xtended-addr TLB vec in user mode */
|
||||
#define SR_KSU_MASK 0x00000018 /* mode mask */
|
||||
#define SR_KSU_USR 0x00000010 /* user mode */
|
||||
#define SR_KSU_SUP 0x00000008 /* supervisor mode */
|
||||
#define SR_KSU_KER 0x00000000 /* kernel mode */
|
||||
#define SR_ERL 0x00000004 /* Error level, 1=>cache error */
|
||||
#define SR_EXL 0x00000002 /* Exception level, 1=>exception */
|
||||
#define SR_IE 0x00000001 /* interrupt enable, 1=>enable */
|
||||
|
||||
/*
|
||||
* Cause Register
|
||||
*/
|
||||
#define CAUSE_BD 0x80000000 /* Branch delay slot */
|
||||
#define CAUSE_CEMASK 0x30000000 /* coprocessor error */
|
||||
#define CAUSE_CESHIFT 28
|
||||
|
||||
/* Interrupt pending bits */
|
||||
#define CAUSE_IP8 0x00008000 /* External level 8 pending - COMPARE */
|
||||
#define CAUSE_IP7 0x00004000 /* External level 7 pending - INT4 */
|
||||
#define CAUSE_IP6 0x00002000 /* External level 6 pending - INT3 */
|
||||
#define CAUSE_IP5 0x00001000 /* External level 5 pending - INT2 */
|
||||
#define CAUSE_IP4 0x00000800 /* External level 4 pending - INT1 */
|
||||
#define CAUSE_IP3 0x00000400 /* External level 3 pending - INT0 */
|
||||
#define CAUSE_SW2 0x00000200 /* Software level 2 pending */
|
||||
#define CAUSE_SW1 0x00000100 /* Software level 1 pending */
|
||||
|
||||
#define CAUSE_IPMASK 0x0000FF00 /* Pending interrupt mask */
|
||||
#define CAUSE_IPSHIFT 8
|
||||
|
||||
#define CAUSE_EXCMASK 0x0000007C /* Cause code bits */
|
||||
|
||||
#define CAUSE_EXCSHIFT 2
|
||||
|
||||
/* Cause register exception codes */
|
||||
|
||||
#define EXC_CODE(x) ((x)<<2)
|
||||
|
||||
/* Hardware exception codes */
|
||||
#define EXC_INT EXC_CODE(0) /* interrupt */
|
||||
#define EXC_MOD EXC_CODE(1) /* TLB mod */
|
||||
#define EXC_RMISS EXC_CODE(2) /* Read TLB Miss */
|
||||
#define EXC_WMISS EXC_CODE(3) /* Write TLB Miss */
|
||||
#define EXC_RADE EXC_CODE(4) /* Read Address Error */
|
||||
#define EXC_WADE EXC_CODE(5) /* Write Address Error */
|
||||
#define EXC_IBE EXC_CODE(6) /* Instruction Bus Error */
|
||||
#define EXC_DBE EXC_CODE(7) /* Data Bus Error */
|
||||
#define EXC_SYSCALL EXC_CODE(8) /* SYSCALL */
|
||||
#define EXC_BREAK EXC_CODE(9) /* BREAKpoint */
|
||||
#define EXC_II EXC_CODE(10) /* Illegal Instruction */
|
||||
#define EXC_CPU EXC_CODE(11) /* CoProcessor Unusable */
|
||||
#define EXC_OV EXC_CODE(12) /* OVerflow */
|
||||
#define EXC_TRAP EXC_CODE(13) /* Trap exception */
|
||||
#define EXC_VCEI EXC_CODE(14) /* Virt. Coherency on Inst. fetch */
|
||||
#define EXC_FPE EXC_CODE(15) /* Floating Point Exception */
|
||||
#define EXC_WATCH EXC_CODE(23) /* Watchpoint reference */
|
||||
#define EXC_VCED EXC_CODE(31) /* Virt. Coherency on data read */
|
||||
|
||||
/* C0_PRID Defines */
|
||||
#define C0_IMPMASK 0xff00
|
||||
#define C0_IMPSHIFT 8
|
||||
#define C0_REVMASK 0xff
|
||||
#define C0_MAJREVMASK 0xf0
|
||||
#define C0_MAJREVSHIFT 4
|
||||
#define C0_MINREVMASK 0xf
|
||||
|
||||
/*
|
||||
* Coprocessor 0 operations
|
||||
*/
|
||||
#define C0_READI 0x1 /* read ITLB entry addressed by C0_INDEX */
|
||||
#define C0_WRITEI 0x2 /* write ITLB entry addressed by C0_INDEX */
|
||||
#define C0_WRITER 0x6 /* write ITLB entry addressed by C0_RAND */
|
||||
#define C0_PROBE 0x8 /* probe for ITLB entry addressed by TLBHI */
|
||||
#define C0_RFE 0x10 /* restore for exception */
|
||||
|
||||
/*
|
||||
* 'cache' instruction definitions
|
||||
*/
|
||||
|
||||
/* Target cache */
|
||||
#define CACH_PI 0x0 /* specifies primary inst. cache */
|
||||
#define CACH_PD 0x1 /* primary data cache */
|
||||
#define CACH_SI 0x2 /* secondary instruction cache */
|
||||
#define CACH_SD 0x3 /* secondary data cache */
|
||||
|
||||
/* Cache operations */
|
||||
#define C_IINV 0x0 /* index invalidate (inst, 2nd inst) */
|
||||
#define C_IWBINV 0x0 /* index writeback inval (d, sd) */
|
||||
#define C_ILT 0x4 /* index load tag (all) */
|
||||
#define C_IST 0x8 /* index store tag (all) */
|
||||
#define C_CDX 0xc /* create dirty exclusive (d, sd) */
|
||||
#define C_HINV 0x10 /* hit invalidate (all) */
|
||||
#define C_HWBINV 0x14 /* hit writeback inv. (d, sd) */
|
||||
#define C_FILL 0x14 /* fill (i) */
|
||||
#define C_HWB 0x18 /* hit writeback (i, d, sd) */
|
||||
#define C_HSV 0x1c /* hit set virt. (si, sd) */
|
||||
|
||||
/*
|
||||
* Cache size definitions
|
||||
*/
|
||||
#define ICACHE_SIZE 0x4000 /* 16K */
|
||||
#define ICACHE_LINESIZE 32 /* 8 words */
|
||||
#define ICACHE_LINEMASK (ICACHE_LINESIZE-1)
|
||||
|
||||
#define DCACHE_SIZE 0x2000 /* 8K */
|
||||
#define DCACHE_LINESIZE 16 /* 4 words */
|
||||
#define DCACHE_LINEMASK (DCACHE_LINESIZE-1)
|
||||
|
||||
/*
|
||||
* C0_CONFIG register definitions
|
||||
*/
|
||||
#define CONFIG_CM 0x80000000 /* 1 == Master-Checker enabled */
|
||||
#define CONFIG_EC 0x70000000 /* System Clock ratio */
|
||||
#define CONFIG_EC_1_1 0x6 /* System Clock ratio 1 :1 */
|
||||
#define CONFIG_EC_3_2 0x7 /* System Clock ratio 1.5 :1 */
|
||||
#define CONFIG_EC_2_1 0x0 /* System Clock ratio 2 :1 */
|
||||
#define CONFIG_EC_3_1 0x1 /* System Clock ratio 3 :1 */
|
||||
#define CONFIG_EP 0x0f000000 /* Transmit Data Pattern */
|
||||
#define CONFIG_SB 0x00c00000 /* Secondary cache block size */
|
||||
|
||||
#define CONFIG_SS 0x00200000 /* Split scache: 0 == I&D combined */
|
||||
#define CONFIG_SW 0x00100000 /* scache port: 0==128, 1==64 */
|
||||
#define CONFIG_EW 0x000c0000 /* System Port width: 0==64, 1==32 */
|
||||
#define CONFIG_SC 0x00020000 /* 0 -> 2nd cache present */
|
||||
#define CONFIG_SM 0x00010000 /* 0 -> Dirty Shared Coherency enabled*/
|
||||
#define CONFIG_BE 0x00008000 /* Endian-ness: 1 --> BE */
|
||||
#define CONFIG_EM 0x00004000 /* 1 -> ECC mode, 0 -> parity */
|
||||
#define CONFIG_EB 0x00002000 /* Block order:1->sequent,0->subblock */
|
||||
|
||||
#define CONFIG_IC 0x00000e00 /* Primary Icache size */
|
||||
#define CONFIG_DC 0x000001c0 /* Primary Dcache size */
|
||||
#define CONFIG_IB 0x00000020 /* Icache block size */
|
||||
#define CONFIG_DB 0x00000010 /* Dcache block size */
|
||||
#define CONFIG_CU 0x00000008 /* Update on Store-conditional */
|
||||
#define CONFIG_K0 0x00000007 /* K0SEG Coherency algorithm */
|
||||
|
||||
#define CONFIG_UNCACHED 0x00000002 /* K0 is uncached */
|
||||
#define CONFIG_NONCOHRNT 0x00000003
|
||||
#define CONFIG_COHRNT_EXLWR 0x00000005
|
||||
#define CONFIG_SB_SHFT 22 /* shift SB to bit position 0 */
|
||||
#define CONFIG_IC_SHFT 9 /* shift IC to bit position 0 */
|
||||
#define CONFIG_DC_SHFT 6 /* shift DC to bit position 0 */
|
||||
#define CONFIG_BE_SHFT 15 /* shift BE to bit position 0 */
|
||||
|
||||
/*
|
||||
* C0_TAGLO definitions for setting/getting cache states and physaddr bits
|
||||
*/
|
||||
#define SADDRMASK 0xFFFFE000 /* 31..13 -> scache paddr bits 35..17 */
|
||||
#define SVINDEXMASK 0x00000380 /* 9..7: prim virt index bits 14..12 */
|
||||
#define SSTATEMASK 0x00001c00 /* bits 12..10 hold scache line state */
|
||||
#define SINVALID 0x00000000 /* invalid --> 000 == state 0 */
|
||||
#define SCLEANEXCL 0x00001000 /* clean exclusive --> 100 == state 4 */
|
||||
#define SDIRTYEXCL 0x00001400 /* dirty exclusive --> 101 == state 5 */
|
||||
#define SECC_MASK 0x0000007f /* low 7 bits are ecc for the tag */
|
||||
#define SADDR_SHIFT 4 /* shift STagLo (31..13) to 35..17 */
|
||||
|
||||
#define PADDRMASK 0xFFFFFF00 /* PTagLo31..8->prim paddr bits35..12 */
|
||||
#define PADDR_SHIFT 4 /* roll bits 35..12 down to 31..8 */
|
||||
#define PSTATEMASK 0x00C0 /* bits 7..6 hold primary line state */
|
||||
#define PINVALID 0x0000 /* invalid --> 000 == state 0 */
|
||||
#define PCLEANEXCL 0x0080 /* clean exclusive --> 10 == state 2 */
|
||||
#define PDIRTYEXCL 0x00C0 /* dirty exclusive --> 11 == state 3 */
|
||||
#define PPARITY_MASK 0x0001 /* low bit is parity bit (even). */
|
||||
|
||||
/*
|
||||
* C0_CACHE_ERR definitions.
|
||||
*/
|
||||
#define CACHERR_ER 0x80000000 /* 0: inst ref, 1: data ref */
|
||||
#define CACHERR_EC 0x40000000 /* 0: primary, 1: secondary */
|
||||
#define CACHERR_ED 0x20000000 /* 1: data error */
|
||||
#define CACHERR_ET 0x10000000 /* 1: tag error */
|
||||
#define CACHERR_ES 0x08000000 /* 1: external ref, e.g. snoop*/
|
||||
#define CACHERR_EE 0x04000000 /* error on SysAD bus */
|
||||
#define CACHERR_EB 0x02000000 /* complicated, see spec. */
|
||||
#define CACHERR_EI 0x01000000 /* complicated, see spec. */
|
||||
#define CACHERR_SIDX_MASK 0x003ffff8 /* secondary cache index */
|
||||
#define CACHERR_PIDX_MASK 0x00000007 /* primary cache index */
|
||||
#define CACHERR_PIDX_SHIFT 12 /* bits 2..0 are paddr14..12 */
|
||||
|
||||
/* R4000 family supports hardware watchpoints:
|
||||
* C0_WATCHLO:
|
||||
* bits 31..3 are bits 31..3 of physaddr to watch
|
||||
* bit 2: reserved; must be written as 0.
|
||||
* bit 1: when set causes a watchpoint trap on load accesses to paddr.
|
||||
* bit 0: when set traps on stores to paddr;
|
||||
* C0_WATCHHI
|
||||
* bits 31..4 are reserved and must be written as zeros.
|
||||
* bits 3..0 are bits 35..32 of the physaddr to watch
|
||||
*/
|
||||
#define WATCHLO_WTRAP 0x00000001
|
||||
#define WATCHLO_RTRAP 0x00000002
|
||||
#define WATCHLO_ADDRMASK 0xfffffff8
|
||||
#define WATCHLO_VALIDMASK 0xfffffffb
|
||||
#define WATCHHI_VALIDMASK 0x0000000f
|
||||
|
||||
/*
|
||||
* Coprocessor 0 registers
|
||||
*/
|
||||
#ifdef _LANGUAGE_ASSEMBLY
|
||||
#define C0_INX $0
|
||||
#define C0_RAND $1
|
||||
#define C0_ENTRYLO0 $2
|
||||
#define C0_ENTRYLO1 $3
|
||||
#define C0_CONTEXT $4
|
||||
#define C0_PAGEMASK $5 /* page mask */
|
||||
#define C0_WIRED $6 /* # wired entries in tlb */
|
||||
#define C0_BADVADDR $8
|
||||
#define C0_COUNT $9 /* free-running counter */
|
||||
#define C0_ENTRYHI $10
|
||||
#define C0_SR $12
|
||||
#define C0_CAUSE $13
|
||||
#define C0_EPC $14
|
||||
#define C0_PRID $15 /* revision identifier */
|
||||
#define C0_COMPARE $11 /* counter comparison reg. */
|
||||
#define C0_CONFIG $16 /* hardware configuration */
|
||||
#define C0_LLADDR $17 /* load linked address */
|
||||
#define C0_WATCHLO $18 /* watchpoint */
|
||||
#define C0_WATCHHI $19 /* watchpoint */
|
||||
#define C0_ECC $26 /* S-cache ECC and primary parity */
|
||||
#define C0_CACHE_ERR $27 /* cache error status */
|
||||
#define C0_TAGLO $28 /* cache operations */
|
||||
#define C0_TAGHI $29 /* cache operations */
|
||||
#define C0_ERROR_EPC $30 /* ECC error prg. counter */
|
||||
|
||||
# else /* ! _LANGUAGE_ASSEMBLY */
|
||||
|
||||
#define C0_INX 0
|
||||
#define C0_RAND 1
|
||||
#define C0_ENTRYLO0 2
|
||||
#define C0_ENTRYLO1 3
|
||||
#define C0_CONTEXT 4
|
||||
#define C0_PAGEMASK 5 /* page mask */
|
||||
#define C0_WIRED 6 /* # wired entries in tlb */
|
||||
#define C0_BADVADDR 8
|
||||
#define C0_COUNT 9 /* free-running counter */
|
||||
#define C0_ENTRYHI 10
|
||||
#define C0_SR 12
|
||||
#define C0_CAUSE 13
|
||||
#define C0_EPC 14
|
||||
#define C0_PRID 15 /* revision identifier */
|
||||
#define C0_COMPARE 11 /* counter comparison reg. */
|
||||
#define C0_CONFIG 16 /* hardware configuration */
|
||||
#define C0_LLADDR 17 /* load linked address */
|
||||
#define C0_WATCHLO 18 /* watchpoint */
|
||||
#define C0_WATCHHI 19 /* watchpoint */
|
||||
#define C0_ECC 26 /* S-cache ECC and primary parity */
|
||||
#define C0_CACHE_ERR 27 /* cache error status */
|
||||
#define C0_TAGLO 28 /* cache operations */
|
||||
#define C0_TAGHI 29 /* cache operations */
|
||||
#define C0_ERROR_EPC 30 /* ECC error prg. counter */
|
||||
|
||||
#endif /* _LANGUAGE_ASSEMBLY */
|
||||
|
||||
/*
|
||||
* floating-point status register
|
||||
*/
|
||||
#define FPCSR_FS 0x01000000 /* flush denorm to zero */
|
||||
#define FPCSR_C 0x00800000 /* condition bit */
|
||||
#define FPCSR_CE 0x00020000 /* cause: unimplemented operation */
|
||||
#define FPCSR_CV 0x00010000 /* cause: invalid operation */
|
||||
#define FPCSR_CZ 0x00008000 /* cause: division by zero */
|
||||
#define FPCSR_CO 0x00004000 /* cause: overflow */
|
||||
#define FPCSR_CU 0x00002000 /* cause: underflow */
|
||||
#define FPCSR_CI 0x00001000 /* cause: inexact operation */
|
||||
#define FPCSR_EV 0x00000800 /* enable: invalid operation */
|
||||
#define FPCSR_EZ 0x00000400 /* enable: division by zero */
|
||||
#define FPCSR_EO 0x00000200 /* enable: overflow */
|
||||
#define FPCSR_EU 0x00000100 /* enable: underflow */
|
||||
#define FPCSR_EI 0x00000080 /* enable: inexact operation */
|
||||
#define FPCSR_FV 0x00000040 /* flag: invalid operation */
|
||||
#define FPCSR_FZ 0x00000020 /* flag: division by zero */
|
||||
#define FPCSR_FO 0x00000010 /* flag: overflow */
|
||||
#define FPCSR_FU 0x00000008 /* flag: underflow */
|
||||
#define FPCSR_FI 0x00000004 /* flag: inexact operation */
|
||||
#define FPCSR_RM_MASK 0x00000003 /* rounding mode mask */
|
||||
#define FPCSR_RM_RN 0x00000000 /* round to nearest */
|
||||
#define FPCSR_RM_RZ 0x00000001 /* round to zero */
|
||||
#define FPCSR_RM_RP 0x00000002 /* round to positive infinity */
|
||||
#define FPCSR_RM_RM 0x00000003 /* round to negative infinity */
|
||||
|
||||
#endif /* __R4300_H */
|
||||
841
include/ique/PR/abi.h
Normal file
841
include/ique/PR/abi.h
Normal file
File diff suppressed because it is too large
Load Diff
69
include/ique/PR/audiotools.h
Executable file
69
include/ique/PR/audiotools.h
Executable file
@@ -0,0 +1,69 @@
|
||||
/*====================================================================
|
||||
* audiotools.h
|
||||
*
|
||||
* Copyright 1993, 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.
|
||||
*====================================================================*/
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* $Revision: 1.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/audiotools.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
*
|
||||
* This file contains defines used by the audiotools programs.
|
||||
*
|
||||
*-------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __AUDIOTOOLS__
|
||||
#define __AUDIOTOOLS__
|
||||
|
||||
#define AL_SYM_FILE_VERSION 'SF01'
|
||||
|
||||
typedef struct {
|
||||
s32 objectId;
|
||||
s32 objectClass;
|
||||
s32 bankFileOffset;
|
||||
s32 stringOffset;
|
||||
s32 refCount;
|
||||
} ALSymFileObj;
|
||||
|
||||
typedef struct {
|
||||
s32 revision;
|
||||
s32 fileSize;
|
||||
s32 objectCount;
|
||||
} ALSymFile;
|
||||
|
||||
|
||||
#define AL_NO_CLASS 0
|
||||
#define AL_BANK_CLASS 1
|
||||
#define AL_INST_CLASS 2
|
||||
#define AL_SOUND_CLASS 3
|
||||
#define AL_KEYMAP_CLASS 4
|
||||
#define AL_WAVETBL_CLASS 5
|
||||
#define AL_LOOP_CLASS 6
|
||||
#define AL_BNKFILE_CLASS 7
|
||||
#define AL_ENVLP_CLASS 8
|
||||
#define AL_BOOK_CLASS 9
|
||||
#define AL_SNDFILE_CLASS 10
|
||||
|
||||
#define AL_NUM_CLASSES 11
|
||||
|
||||
#endif /* !__AUDIOTOOLS__ */
|
||||
86
include/ique/PR/bbfs.h
Normal file
86
include/ique/PR/bbfs.h
Normal file
@@ -0,0 +1,86 @@
|
||||
#ifndef __bb_fs_h__
|
||||
#define __bb_fs_h__
|
||||
|
||||
#include <PR/bbtypes.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/*
|
||||
* BBplayer file system data structures
|
||||
*/
|
||||
|
||||
#define BB_FL_PAGE_SIZE 512
|
||||
#define BB_FL_SPARE_SIZE 16
|
||||
#define BB_FL_BLOCK_SIZE 16384
|
||||
#define BB_FL_BYTE_TO_BLOCK(x) ((u32)(x)>>14)
|
||||
#define BB_FL_BLOCK_TO_BYTE(x) ((u32)(x)<<14)
|
||||
#define BB_FL_KB_TO_BLOCK(x) ((u32)(x)>>4)
|
||||
#define BB_FL_BLOCK_TO_KB(x) ((u32)(x)<<4)
|
||||
#define BB_FL_BYTE_TO_PAGE(x) ((u32)(x)>>9)
|
||||
#define BB_FL_PAGE_TO_BYTE(x) ((u32)(x)<<9)
|
||||
#define BB_FL_BLOCK_PAGES (BB_FL_BLOCK_SIZE/BB_FL_PAGE_SIZE)
|
||||
#define BB_FL_ECC0_OFF (525-512)
|
||||
#define BB_FL_ECC1_OFF (520-512)
|
||||
#define BB_FL_BLOCK_STATUS_OFF (517-512)
|
||||
#define BB_FL_BLOCK_LINK_OFF (512-512)
|
||||
#define BB_FL_BLOCK_LINK_SIZE 2
|
||||
#define BB_FL_SEQ_OFF (514-512)
|
||||
|
||||
/*
|
||||
* FAT entries are 16-bit block numbers, each pointing to the
|
||||
* next block in a file or a system-specific code
|
||||
* Block numbers are relative to the start of the device.
|
||||
*/
|
||||
typedef u16 BbFatEntry;
|
||||
|
||||
#define BB_FAT_AVAIL 0x0000 /* available block */
|
||||
#define BB_FAT_LAST 0xFFFF /* last block of a file */
|
||||
#define BB_FAT_BAD 0xFFFE /* unreadable/writable block */
|
||||
#define BB_FAT_RESERVED 0xFFFD /* reserved block */
|
||||
|
||||
#define BB_FAT16_ENTRIES 4096 /* enough to span 64MB */
|
||||
#define BB_FAT16_ENTRIES_SHIFT 12 /* enough to span 64MB */
|
||||
|
||||
#define BB_INODE16_ENTRIES 409 /* remainder of space in FAT block */
|
||||
#define BB_INODE16_NAMELEN 11 /* maximum name length */
|
||||
|
||||
#define BB_FAT16_MAGIC "BBFS"
|
||||
#define BB_FAT16_LINK_MAGIC "BBFL"
|
||||
|
||||
#define BB_FAT16_CKSUM 0xcad7
|
||||
|
||||
#define BB_FAT16_BLOCKS 16 /* number of copies of the fat */
|
||||
#define BB_SYSTEM_AREA_SIZE 0x100000 /* 384KB reserved for system area */
|
||||
#define BB_BIG_FILE_THRESHOLD 0x100000 /* allocation hint */
|
||||
|
||||
/*
|
||||
* Inode entries contain the file name, type, first block address
|
||||
* and file size. There are a fixed number of inodes immediately
|
||||
* following the FAT entries.
|
||||
*/
|
||||
|
||||
/*
|
||||
* All fields are big-endian
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
u8 name[BB_INODE16_NAMELEN]; /* 8.3 name */
|
||||
u8 type; /* unused type field */
|
||||
u16 block; /* address of first block in file */
|
||||
u16 pad; /* to align on 4-byte boundary */
|
||||
u32 size; /* size of file in bytes */
|
||||
} BbInode;
|
||||
|
||||
typedef struct { /* FAT for a 16K block size */
|
||||
BbFatEntry entry[BB_FAT16_ENTRIES];
|
||||
BbInode inode[BB_INODE16_ENTRIES];
|
||||
u8 magic[4]; /* 'BBFS' */
|
||||
u32 seq; /* highest number is current */
|
||||
u16 link; /* link to another FAT */
|
||||
u16 cksum; /* mod 2^16 checksum */
|
||||
} BbFat16;
|
||||
|
||||
#define BB_FAT16_NEXT(fat,n) (fat)[(n)>>BB_FAT16_ENTRIES_SHIFT].entry[(n)&(BB_FAT16_ENTRIES-1)]
|
||||
|
||||
#endif
|
||||
#endif
|
||||
14
include/ique/PR/bbfs_export.h
Executable file
14
include/ique/PR/bbfs_export.h
Executable file
@@ -0,0 +1,14 @@
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 2002 - 2004 BroadOn Communications.
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __bb_fs_h__
|
||||
#define __bb_fs_h__
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
#define BB_FL_BLOCK_SIZE 16384
|
||||
#define BB_INODE16_NAMELEN 11 /* maximum name length */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
179
include/ique/PR/bbskapi.h
Normal file
179
include/ique/PR/bbskapi.h
Normal file
@@ -0,0 +1,179 @@
|
||||
#ifndef __BB_SK_API_HDR__
|
||||
#define __BB_SK_API_HDR__
|
||||
|
||||
|
||||
/*
|
||||
* To add an sk api function:
|
||||
* 1) add SK_API_CALL_ define
|
||||
* 2) add function prototype in this header
|
||||
* 3) implement function in lib/SK/skapi.c
|
||||
* 4) add the function to the array skapi_call_table (lib/SK/skapi.c)
|
||||
* 5) add entry stub to libultra/bb/sk/skapi.s.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Function call mapping numbers, must be in order 0..end
|
||||
*/
|
||||
|
||||
#define SK_API_CALL_GET_ID 0
|
||||
#define SK_API_CALL_LAUNCH_SETUP 1
|
||||
#define SK_API_CALL_LAUNCH 2
|
||||
#define SK_API_CALL_LIST_VALID 3
|
||||
#define SK_API_CALL_RECRYPT_BEGIN 4
|
||||
#define SK_API_CALL_RECRYPT_DATA 5
|
||||
#define SK_API_CALL_RECRYPT_STATE 6
|
||||
#define SK_API_CALL_RECRYPT_END 7
|
||||
#define SK_API_CALL_SIGN_HASH 8
|
||||
#define SK_API_CALL_VERIFY_HASH 9
|
||||
#define SK_API_CALL_GET_CONSUMPTION 10
|
||||
#define SK_API_CALL_ADVANCE_TICKET_WINDOW 11
|
||||
#define SK_API_CALL_SET_LIMIT 12
|
||||
#define SK_API_CALL_EXIT 13
|
||||
#define SK_API_CALL_KEEP_ALIVE 14
|
||||
|
||||
/*
|
||||
* the calls below are for test purpose, not for default or
|
||||
* production build
|
||||
*/
|
||||
|
||||
#define SK_API_CALL_GET_RAND 15
|
||||
#define SK_API_CALL_DUMP_VIRAGE 16
|
||||
#define SK_API_CALL_TEST2 17
|
||||
#define SK_API_CALL_TEST3 18
|
||||
#define SK_API_CALL_RESET_WINDOW 19
|
||||
#define SK_API_CALL_VALIDATE_RLS 20
|
||||
|
||||
|
||||
|
||||
/* sk api error and return codes. Negative implies failure. */
|
||||
#define SK_API_SUCCESS 0
|
||||
#define SK_API_RECRYPT_NOT_REQUIRED 1
|
||||
#define SK_API_RECRYPT_COMPLETE 2
|
||||
#define SK_API_RECRYPT_INCOMPLETE 3
|
||||
#define SK_API_RECRYPT_NEW 4
|
||||
|
||||
#define SK_API_FAIL -1
|
||||
#define SK_API_INVALID_TSRL -2
|
||||
#define SK_API_INVALID_CARL -3
|
||||
#define SK_API_INVALID_CPRL -4
|
||||
#define SK_API_INVALID_CRL -5
|
||||
#define SK_API_INVALID_CERT -6
|
||||
#define SK_API_INVALID_CONT_HASH -7
|
||||
#define SK_API_SIGNER_MISMATCH -8
|
||||
#define SK_API_REVOKED_SERVER -9
|
||||
#define SK_API_REVOKED_CONTENT -10
|
||||
#define SK_API_NO_ENTRY_FOUND -11
|
||||
|
||||
#define SK_IDENTITY (0x06091968)
|
||||
#define API_IDENTITY (0x00000001)
|
||||
|
||||
#define SK_RECRYPT_KEYLIST_SIZE (16*1024)
|
||||
|
||||
/*
|
||||
* Function call declarations.
|
||||
* NOTE: max number of args is 4, and they must fit into a0-a3.
|
||||
*/
|
||||
|
||||
#if defined(_LANGUAGE_C)
|
||||
|
||||
#include <PR/bbticket.h>
|
||||
#include <PR/bbcert.h>
|
||||
#include <PR/bbcrl.h>
|
||||
#include <PR/bbvirage.h>
|
||||
|
||||
typedef struct {
|
||||
BbCrlHead *head;
|
||||
BbServerSuffix *list; /* the actual names of revoked SNs */
|
||||
|
||||
/* each pointer points to a cert object */
|
||||
BbCertBase *certChain[BB_CERT_CHAIN_MAXLEN];
|
||||
} BbCrlBundle;
|
||||
|
||||
typedef struct {
|
||||
BbTicket *ticket;
|
||||
BbCertBase *ticketChain[BB_CERT_CHAIN_MAXLEN];
|
||||
BbCertBase *cmdChain[BB_CERT_CHAIN_MAXLEN];
|
||||
} BbTicketBundle;
|
||||
|
||||
typedef struct {
|
||||
BbCrlBundle tsrl; /* ticket server revocation list */
|
||||
BbCrlBundle carl; /* certificate authority revocation list */
|
||||
BbCrlBundle cprl; /* content publishing server revocation list */
|
||||
} BbAppLaunchCrls;
|
||||
|
||||
|
||||
/*
|
||||
* The actual sk api function declarations. All functions
|
||||
* return SK_API_ return codes defined above. Any return
|
||||
* value < 0 is failure.
|
||||
*/
|
||||
|
||||
|
||||
/* get the bbid */
|
||||
int skGetId(BbId *id);
|
||||
|
||||
/* setup app launch. does not transfer data.
|
||||
*/
|
||||
int skLaunchSetup(BbTicketBundle *ticket,
|
||||
BbAppLaunchCrls *crls,
|
||||
void *pKeyList);
|
||||
|
||||
/* setyp app rights and xfer control to app at addr. */
|
||||
int skLaunch(u32 addr);
|
||||
|
||||
/* primes sk for ensuing skRecrypt*() calls.
|
||||
* ticket and crls are as in skLaunchSetup().
|
||||
* pKeyList will obtain list to be stored.
|
||||
* Maximum key list length is 16KB.
|
||||
*/
|
||||
int skRecryptListValid(void *pKeyList);
|
||||
|
||||
int skRecryptBegin(BbTicketBundle *ticket,
|
||||
BbAppLaunchCrls *crls,
|
||||
void *pKeyList);
|
||||
|
||||
int skRecryptData(u8 *data, u32 size);
|
||||
|
||||
/* when recovering from aborted recryption attempt, this call must
|
||||
* be used to feed the already recrypted data before calling
|
||||
* skRecryptData to finish.
|
||||
*/
|
||||
int skRecryptComputeState(u8 *data, u32 size);
|
||||
|
||||
/* end recyrption and determine success.
|
||||
* pKeyList will obtain list to be stored.
|
||||
* Maximum key list length is 16KB.
|
||||
*/
|
||||
int skRecryptEnd(void *pKeyList);
|
||||
|
||||
/*sign hash: operates on SHA-1 hash only, add on an optional identity */
|
||||
int skSignHash(BbShaHash hash, BbEccSig sign);
|
||||
|
||||
/*verify hash: operates on SHA-1 hash only, use an optional identity */
|
||||
int skVerifyHash(BbShaHash hash, BbGenericSig *sign, BbCertBase *certChain[],
|
||||
BbAppLaunchCrls *crls);
|
||||
|
||||
|
||||
extern int skGetConsumption(u16* tidWindow, u16 cc[BB_MAX_CC]);
|
||||
extern int skAdvanceTicketWindow(void);
|
||||
extern int skSetLimit(u16 limit, u16 code);
|
||||
extern int skExit(void);
|
||||
extern int skKeepAlive(void);
|
||||
|
||||
#ifdef SK_DEVELOP
|
||||
/* test calls for developement, not for production */
|
||||
int skGetRandomKeyData(u8 *data, int size); /* max size = 16 bytes */
|
||||
int skDumpVirage(u8 *virage2data);
|
||||
int skTest2(int a,int b);
|
||||
int skTest3(int a,int b);
|
||||
int skResetWindow(void);
|
||||
int skValidateRls(BbCrlBundle *carl, BbCrlBundle *cprl,
|
||||
BbCrlBundle *tsrl, u32 *versions);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _LANGUAGE_C */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
19
include/ique/PR/bbskapi_export.h
Executable file
19
include/ique/PR/bbskapi_export.h
Executable file
@@ -0,0 +1,19 @@
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 2002 - 2004 BroadOn Communications.
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __BB_SK_API_HDR__
|
||||
#define __BB_SK_API_HDR__
|
||||
|
||||
#if defined(_LANGUAGE_C)
|
||||
|
||||
typedef u32 BbId; /* 32-bit Player identity */
|
||||
typedef u32 BbContentId; /* 32-bit content identity */
|
||||
|
||||
/* get the bbid */
|
||||
int skGetId(BbId *id);
|
||||
extern int skExit(void);
|
||||
|
||||
#endif /* _LANGUAGE_C */
|
||||
|
||||
#endif
|
||||
38
include/ique/PR/dbgdefs.h
Executable file
38
include/ique/PR/dbgdefs.h
Executable file
@@ -0,0 +1,38 @@
|
||||
/**************************************************************************
|
||||
* *
|
||||
* Copyright (C) 1995, Silicon Graphics, Inc. *
|
||||
* *
|
||||
* These coded instructions, statements, and computer programs contain *
|
||||
* unpublished proprietary information of Silicon Graphics, Inc., and *
|
||||
* are protected by Federal copyright law. They may not be disclosed *
|
||||
* to third parties or copied or duplicated in any form, in whole or *
|
||||
* in part, without the prior written consent of Silicon Graphics, Inc. *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* $Revision: 1.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/dbgdefs.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef _DBGDEFS_H_
|
||||
#define _DBGDEFS_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
typedef int TVid;
|
||||
typedef unsigned short TVushort;
|
||||
typedef unsigned char TVuchar;
|
||||
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
609
include/ique/PR/dbgproto.h
Executable file
609
include/ique/PR/dbgproto.h
Executable file
File diff suppressed because it is too large
Load Diff
134
include/ique/PR/driverd.h
Executable file
134
include/ique/PR/driverd.h
Executable file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* driverd.h: driver daemon declarations & struct definitions.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* $Revision: 1.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/driverd.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#define MAXCLIENTS 5
|
||||
|
||||
/*
|
||||
* Same numbers as videod, bumped up by one each.
|
||||
*/
|
||||
#define DRIVERD_TCP_PORT 8001
|
||||
#define DRIVERD_RPC_PORT 391012
|
||||
|
||||
/*
|
||||
* Daemon must keep track of each client which has attached; it does so by
|
||||
* maintaining an array of 'em.
|
||||
*/
|
||||
|
||||
typedef struct _Client *ClientPtr;
|
||||
|
||||
typedef struct _Client {
|
||||
|
||||
int fd; /* File descriptor of private socket between daemon/client */
|
||||
id_t id; /* Process ID of the client (so that we can signal them) */
|
||||
/*
|
||||
* Event range (6 bit numbers) that this client is interested in; when
|
||||
* the game sends the daemon an event via a socket (that the emulator
|
||||
* opens with the daemon), the daemon checks to see which clients are
|
||||
* interested in this event, then writes to their sockets to indicate
|
||||
* that the event came in. The clients then wake up, realize an event
|
||||
* has occurred, & query the daemon to find out what happened (just as
|
||||
* they'll have to query the device driver via ioctl to find out what
|
||||
* happened).
|
||||
*/
|
||||
int min_event;
|
||||
int max_event;
|
||||
int index;
|
||||
} ClientRec;
|
||||
|
||||
/*
|
||||
* We need a special one byte header on all writes to the private socket
|
||||
* between daemon & client to differentiate between the three actions we
|
||||
* expect the daemon to perform:
|
||||
*
|
||||
* Session registration (new clients identify themselves & pass pid to daemon)
|
||||
*
|
||||
* Events from Game (emulator writes events on private socket)
|
||||
*
|
||||
* Commands to Game (daemon receives commands from host side clients,
|
||||
* arbitrates for control of ramrom, writes the command into ramrom,
|
||||
* sends a signal to the game to tell it to read the ramrom arena, then
|
||||
* waits for an acknowledge to come back from the game indicating that the
|
||||
* command has been accepted (so that the daemon could begin a new command
|
||||
* arbitration if needed).
|
||||
*/
|
||||
|
||||
#define DRIVERD_REGISTER_SESSION 101
|
||||
#define DRIVERD_REGISTER_EMULATOR 102
|
||||
#define DRIVERD_EVENT_FROM_GAME 103
|
||||
#define DRIVERD_IOCTL_REQUEST 104
|
||||
|
||||
typedef struct _registerSession *registerSessionPtr;
|
||||
|
||||
typedef struct _registerSession {
|
||||
|
||||
unsigned int dd_header; /* One of the three possible actions for daemon*/
|
||||
|
||||
id_t id; /* Process ID of the client (so that we can signal them) */
|
||||
/*
|
||||
* Event range (6 bit numbers) that this client is interested in; when
|
||||
* the game sends the daemon an event via a socket (that the emulator
|
||||
* opens with the daemon), the daemon checks to see which clients are
|
||||
* interested in this event, then writes to their sockets to indicate
|
||||
* that the event came in. The clients then wake up, realize an event
|
||||
* has occurred, & query the daemon to find out what happened (just as
|
||||
* they'll have to query the device driver via ioctl to find out what
|
||||
* happened).
|
||||
*/
|
||||
} RegisterSession;
|
||||
|
||||
typedef struct _registerEmulator {
|
||||
|
||||
unsigned int dd_header; /* One of the possible actions for daemon*/
|
||||
|
||||
id_t id; /* Process ID of emulate (so that we can signal them) */
|
||||
int shmkey; /* Shared memory key */
|
||||
} RegisterEmulator;
|
||||
|
||||
typedef struct _eventFromGame *eventFromGamePtr;
|
||||
|
||||
typedef struct _eventFromGame {
|
||||
unsigned int dd_header; /* One of the possible actions for daemon*/
|
||||
int event; /* Signed value */
|
||||
} EventFromGame;
|
||||
|
||||
typedef struct _commandToGame *commandToGamePtr;
|
||||
|
||||
typedef struct _commandToGame {
|
||||
unsigned int dd_header; /* One of the possible actions for daemon*/
|
||||
/*
|
||||
* XXX
|
||||
*/
|
||||
} CommandToGame;
|
||||
|
||||
typedef struct _ioctlRequest {
|
||||
unsigned int dd_header; /* One of the possible actions for daemon*/
|
||||
int request;
|
||||
} IoctlRequest;
|
||||
|
||||
extern int MakeDriverDConnection(char *phostname, int iserver, int retries, int *familyp); /* RETURN */
|
||||
102
include/ique/PR/em.h
Executable file
102
include/ique/PR/em.h
Executable file
@@ -0,0 +1,102 @@
|
||||
#ifndef _EM_H_
|
||||
#define _EM_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.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/em.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <PR/mbi.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
typedef struct {
|
||||
int x;
|
||||
int y;
|
||||
unsigned int buttons;
|
||||
} MouseState;
|
||||
|
||||
#define BUTTON_LEFT 0x4
|
||||
#define BUTTON_MIDDLE 0x2
|
||||
#define BUTTON_RIGHT 0x1
|
||||
|
||||
typedef struct {
|
||||
unsigned short button; /* all of the 14 buttons */
|
||||
unsigned char stick_x;
|
||||
unsigned char stick_y;
|
||||
} GamePad;
|
||||
|
||||
/* Simulate interrupts with signals */
|
||||
#define SIGSW1 (SIGRTMIN + OS_EVENT_SW1)
|
||||
#define SIGSW2 (SIGRTMIN + OS_EVENT_SW2)
|
||||
#define SIGCART (SIGRTMIN + OS_EVENT_CART)
|
||||
#define SIGCOUNTER (SIGRTMIN + OS_EVENT_COUNTER)
|
||||
#define SIGSP (SIGRTMIN + OS_EVENT_SP)
|
||||
#define SIGSI (SIGRTMIN + OS_EVENT_SI)
|
||||
#define SIGAI (SIGRTMIN + OS_EVENT_AI)
|
||||
#define SIGVI (SIGRTMIN + OS_EVENT_VI)
|
||||
#define SIGPI (SIGRTMIN + OS_EVENT_PI)
|
||||
#define SIGDI (SIGRTMIN + OS_EVENT_DP)
|
||||
#define SIGBREAK (SIGRTMIN + OS_EVENT_CPU_BREAK)
|
||||
#define SIGSPBREAK (SIGRTMIN + OS_EVENT_SP_BREAK)
|
||||
|
||||
|
||||
/*
|
||||
* Function Prototypes
|
||||
*/
|
||||
|
||||
extern void emDisplayBuffer(unsigned int);
|
||||
extern void emGetMouseState(MouseState *);
|
||||
extern int emInitController(int);
|
||||
extern int emGetController(int, GamePad *);
|
||||
extern int emMemoryDump(const char *);
|
||||
extern int emMemoryLoad(const char *);
|
||||
extern int emPrintf(const char *, ...);
|
||||
extern void emGIOInit( void );
|
||||
extern void emInitSocket( void );
|
||||
extern void emWriteSocket( char );
|
||||
extern void emRomToHost( int, int );
|
||||
|
||||
/* connect to RSP: */
|
||||
extern int emRSPFrame(char *prefix, int fid, int keepMem, int DRAMoutput, int RDPin);
|
||||
extern int emRSPAudioFrame(char *prefix, int fid, int keepMem);
|
||||
extern int emRSPQuit(void);
|
||||
|
||||
/* audio support */
|
||||
|
||||
extern void emAudioInit(char *filename);
|
||||
extern void emAudioWrite(short *out, int count);
|
||||
extern void emAudioFlush(void);
|
||||
extern void emPause(void);
|
||||
|
||||
/* DRAM definites */
|
||||
|
||||
#define KSEG0_BASE 0x20000000
|
||||
#define DRAM_SIZE 0x200000
|
||||
|
||||
/* locations for shared ROM in emulator */
|
||||
|
||||
#define ROM_BASE (KSEG0_BASE + DRAM_SIZE + 0x2000)
|
||||
#define GIO_CART_INT_REGISTER (ROM_BASE + RAMROM_SIZE - 4)
|
||||
#define SHM_CART_INT_REGISTER (RAMROM_MSG_SIZE - 4)
|
||||
#define SHM_MSG_BUFFER_ADDRESS (RAMROM_MSG_SIZE - 8)
|
||||
|
||||
|
||||
#endif /* _LANGUAGE_C */
|
||||
|
||||
#endif /* !_EM_H_ */
|
||||
129
include/ique/PR/gbi-poslight.h
Normal file
129
include/ique/PR/gbi-poslight.h
Normal file
@@ -0,0 +1,129 @@
|
||||
#ifndef _GBI_POSLIGHT_H_
|
||||
#define _GBI_POSLIGHT_H_
|
||||
|
||||
/* version 990705 */
|
||||
#define G_LIGHTING_POSITIONAL 0x00400000
|
||||
#ifdef _LANGUAGE_ASSEMBLY
|
||||
#define G_LIGHTING_POSITIONAL_H (G_LIGHTING_POSITIONAL/0x10000)
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
unsigned char col[3]; /* diffuse light value (rgba) */
|
||||
unsigned char kc; /* positional lighting enable flag & constant attenuation Kc */
|
||||
unsigned char colc[3]; /* copy of diffuse light value (rgba) */
|
||||
unsigned char kl; /* linear attenuation Kl */
|
||||
short pos[3]; /* light position x, y, z */
|
||||
unsigned char kq; /* quadratic attenuation Kq */
|
||||
char reserved1;
|
||||
} PosLight_t;
|
||||
|
||||
typedef union {
|
||||
PosLight_t p;
|
||||
Light_t l;
|
||||
long long int force_structure_alignment[2];
|
||||
} PosLight;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[7];
|
||||
} PosLightsn;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[1];
|
||||
} PosLights0;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[1];
|
||||
} PosLights1;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[2];
|
||||
} PosLights2;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[3];
|
||||
} PosLights3;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[4];
|
||||
} PosLights4;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[5];
|
||||
} PosLights5;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[6];
|
||||
} PosLights6;
|
||||
|
||||
typedef struct {
|
||||
Ambient a;
|
||||
PosLight l[7];
|
||||
} PosLights7;
|
||||
|
||||
#define _gSPLightColor2(pkt, n, col1, col2) \
|
||||
{\
|
||||
gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_a##n, col1);\
|
||||
gMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_b##n, col2);\
|
||||
}
|
||||
#define _gsSPLightColor2(n, col1, col2) \
|
||||
gsMoveWd(G_MW_LIGHTCOL, G_MWO_a##n, col1),\
|
||||
gsMoveWd(G_MW_LIGHTCOL, G_MWO_b##n, col2)
|
||||
|
||||
#define _gdSPDefAmbient(ar,ag,ab) {{ {ar,ag,ab},0,{ar,ag,ab},0}}
|
||||
#define _gdSPDefPosLight(r,g,b,x,y,z,c,l,q) {{ {r,g,b},c,{r,g,b},l,{x,y,z},q,0 }}
|
||||
#define _gdSPDefInfLight(r,g,b,x,y,z) {{ {r,g,b},0,{r,g,b},0,{((x)<<8)|((y)&0xff),(z)<<8,0},0,0}}
|
||||
#define gdSPDefPosLights0(ar,ag,ab) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(0,0,0,0,0,0,0,0,0)} }
|
||||
#define gdSPDefPosLights1(ar,ag,ab,r1,g1,b1,x1,y1,z1,c1,l1,q1) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(r1,g1,b1,x1,y1,z1,c1,l1,q1)} }
|
||||
#define gdSPDefPosLights2(ar,ag,ab,r1,g1,b1,x1,y1,z1,c1,l1,q1,r2,g2,b2,x2,y2,z2,c2,l2,q2) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(r1,g1,b1,x1,y1,z1,c1,l1,q1), \
|
||||
_gdSPDefPosLight(r2,g2,b2,x2,y2,z2,c2,l2,q2)} }
|
||||
#define gdSPDefPosLights3(ar,ag,ab,r1,g1,b1,x1,y1,z1,c1,l1,q1,r2,g2,b2,x2,y2,z2,c2,l2,q2,r3,g3,b3,x3,y3,z3,c3,l3,q3) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(r1,g1,b1,x1,y1,z1,c1,l1,q1), \
|
||||
_gdSPDefPosLight(r2,g2,b2,x2,y2,z2,c2,l2,q2), \
|
||||
_gdSPDefPosLight(r3,g3,b3,x3,y3,z3,c3,l3,q3)} }
|
||||
#define gdSPDefPosLights4(ar,ag,ab,r1,g1,b1,x1,y1,z1,c1,l1,q1,r2,g2,b2,x2,y2,z2,c2,l2,q2,r3,g3,b3,x3,y3,z3,c3,l3,q3,r4,g4,b4,x4,y4,z4,c4,l4,q4) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(r1,g1,b1,x1,y1,z1,c1,l1,q1), \
|
||||
_gdSPDefPosLight(r2,g2,b2,x2,y2,z2,c2,l2,q2), \
|
||||
_gdSPDefPosLight(r3,g3,b3,x3,y3,z3,c3,l3,q3), \
|
||||
_gdSPDefPosLight(r4,g4,b4,x4,y4,z4,c4,l4,q4)} }
|
||||
#define gdSPDefPosLights5(ar,ag,ab,r1,g1,b1,x1,y1,z1,c1,l1,q1,r2,g2,b2,x2,y2,z2,c2,l2,q2,r3,g3,b3,x3,y3,z3,c3,l3,q3,r4,g4,b4,x4,y4,z4,c4,l4,q4,r5,g5,b5,x5,y5,z5,c5,l5,q5) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(r1,g1,b1,x1,y1,z1,c1,l1,q1), \
|
||||
_gdSPDefPosLight(r2,g2,b2,x2,y2,z2,c2,l2,q2), \
|
||||
_gdSPDefPosLight(r3,g3,b3,x3,y3,z3,c3,l3,q3), \
|
||||
_gdSPDefPosLight(r4,g4,b4,x4,y4,z4,c4,l4,q4), \
|
||||
_gdSPDefPosLight(r5,g5,b5,x5,y5,z5,c5,l5,q5)} }
|
||||
#define gdSPDefPosLights6(ar,ag,ab,r1,g1,b1,x1,y1,z1,c1,l1,q1,r2,g2,b2,x2,y2,z2,c2,l2,q2,r3,g3,b3,x3,y3,z3,c3,l3,q3,r4,g4,b4,x4,y4,z4,c4,l4,q4,r5,g5,b5,x5,y5,z5,c5,l5,q5,r6,g6,b6,x6,y6,z6,c6,l6,q6) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(r1,g1,b1,x1,y1,z1,c1,l1,q1), \
|
||||
_gdSPDefPosLight(r2,g2,b2,x2,y2,z2,c2,l2,q2), \
|
||||
_gdSPDefPosLight(r3,g3,b3,x3,y3,z3,c3,l3,q3), \
|
||||
_gdSPDefPosLight(r4,g4,b4,x4,y4,z4,c4,l4,q4), \
|
||||
_gdSPDefPosLight(r5,g5,b5,x5,y5,z5,c5,l5,q5), \
|
||||
_gdSPDefPosLight(r6,g6,b6,x6,y6,z6,c6,l6,q6)} }
|
||||
#define gdSPDefPosLights7(ar,ag,ab,r1,g1,b1,x1,y1,z1,c1,l1,q1,r2,g2,b2,x2,y2,z2,c2,l2,q2,r3,g3,b3,x3,y3,z3,c3,l3,q3,r4,g4,b4,x4,y4,z4,c4,l4,q4,r5,g5,b5,x5,y5,z5,c5,l5,q5,r6,g6,b6,x6,y6,z6,c6,l6,q6,r7,g7,b7,x7,y7,z7,c7,l7,q7) \
|
||||
{ _gdSPDefAmbient(ar,ag,ab), \
|
||||
{ _gdSPDefPosLight(r1,g1,b1,x1,y1,z1,c1,l1,q1), \
|
||||
_gdSPDefPosLight(r2,g2,b2,x2,y2,z2,c2,l2,q2), \
|
||||
_gdSPDefPosLight(r3,g3,b3,x3,y3,z3,c3,l3,q3), \
|
||||
_gdSPDefPosLight(r4,g4,b4,x4,y4,z4,c4,l4,q4), \
|
||||
_gdSPDefPosLight(r5,g5,b5,x5,y5,z5,c5,l5,q5), \
|
||||
_gdSPDefPosLight(r6,g6,b6,x6,y6,z6,c6,l6,q6), \
|
||||
_gdSPDefPosLight(r7,g7,b7,x7,y7,z7,c7,l7,q7)} }
|
||||
|
||||
#endif /* _GBI_POSLIGHT_H_ */
|
||||
4805
include/ique/PR/gbi.h
Executable file
4805
include/ique/PR/gbi.h
Executable file
File diff suppressed because it is too large
Load Diff
393
include/ique/PR/gs2dex.h
Executable file
393
include/ique/PR/gs2dex.h
Executable file
@@ -0,0 +1,393 @@
|
||||
/*---------------------------------------------------------------------
|
||||
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.1.1.1 2002/05/02 03:28:24 blythe 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 座標 (u10.5) */
|
||||
u16 imageW; /* テクスチャの幅 (u10.2) */
|
||||
s16 frameX; /* 転送されるフレームの左上位置(s10.2) */
|
||||
u16 frameW; /* 転送されるフレームの幅 (u10.2) */
|
||||
|
||||
u16 imageY; /* テクスチャの左上位置 Y 座標 (u10.5) */
|
||||
u16 imageH; /* テクスチャの高さ (u10.2) */
|
||||
s16 frameY; /* 転送されるフレームの左上位置(s10.2) */
|
||||
u16 frameH; /* 転送されるフレームの高さ (u10.2) */
|
||||
|
||||
u64 *imagePtr; /* DRAM 上のテクスチャソースアドレス */
|
||||
u16 imageLoad; /* LoadBlock, LoadTile のどちらを使用するか */
|
||||
u8 imageFmt; /* テクセルのフォーマット G_IM_FMT_* */
|
||||
u8 imageSiz; /* テクセルのサイズ G_IM_SIZ_* */
|
||||
u16 imagePal; /* パレット番号 */
|
||||
u16 imageFlip; /* イメージの左右反転 G_BG_FLAG_FLIPS で反転 */
|
||||
|
||||
/* 以下は初期化ルーチン guS2DInitBg() 内で設定されるのでユーザが設
|
||||
定する必要はない */
|
||||
u16 tmemW; /* frame 1 ラインの TMEM 幅 Word サイズ
|
||||
LoadBlock の時 GS_PIX2TMEM(imageW/4,imageSiz)
|
||||
LoadTile の時 GS_PIX2TMEM(frameW/4,imageSiz)+1 */
|
||||
u16 tmemH; /* 一度にロードできる TMEM 高さ (s13.2) 4倍値
|
||||
通常テクスチャの時 512/tmemW*4
|
||||
CI テクスチャの時 256/tmemW*4 */
|
||||
u16 tmemLoadSH; /* SH 値
|
||||
LoadBlock の時 tmemSize/2-1
|
||||
LoadTile の時 tmemW*16-1 */
|
||||
u16 tmemLoadTH; /* TH 値 or Stride 値
|
||||
LoadBlock の時 GS_CALC_DXT(tmemW)
|
||||
LoadTile の時 tmemH-1 */
|
||||
u16 tmemSizeW; /* image 1 ライン分の imagePtr のスキップ値
|
||||
LoadBlock の時 tmemW*2
|
||||
LoadTile の時 GS_PIX2TMEM(imageW/4,imageSiz)*2 */
|
||||
u16 tmemSize; /* ロード一回分の imagePtr のスキップ値
|
||||
= tmemSizeW*tmemH */
|
||||
} uObjBg_t; /* 40 bytes */
|
||||
|
||||
/* Scalable background plane */
|
||||
typedef struct {
|
||||
u16 imageX; /* テクスチャの左上位置 X 座標 (u10.5) */
|
||||
u16 imageW; /* テクスチャの幅 (u10.2) */
|
||||
s16 frameX; /* 転送されるフレームの左上位置(s10.2) */
|
||||
u16 frameW; /* 転送されるフレームの幅 (u10.2) */
|
||||
|
||||
u16 imageY; /* テクスチャの左上位置 Y 座標 (u10.5) */
|
||||
u16 imageH; /* テクスチャの高さ (u10.2) */
|
||||
s16 frameY; /* 転送されるフレームの左上位置(s10.2) */
|
||||
u16 frameH; /* 転送されるフレームの高さ (u10.2) */
|
||||
|
||||
u64 *imagePtr; /* DRAM 上のテクスチャソースアドレス */
|
||||
u16 imageLoad; /* LoadBlock, LoadTile のどちらを使用するか */
|
||||
u8 imageFmt; /* テクセルのフォーマット G_IM_FMT_* */
|
||||
u8 imageSiz; /* テクセルのサイズ G_IM_SIZ_* */
|
||||
u16 imagePal; /* パレット番号 */
|
||||
u16 imageFlip; /* イメージの左右反転 G_BG_FLAG_FLIPS で反転 */
|
||||
|
||||
u16 scaleW; /* X 方向スケール値 (u5.10) */
|
||||
u16 scaleH; /* Y 方向スケール値 (u5.10) */
|
||||
s32 imageYorig; /* 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 /* S 方向反転 */
|
||||
#define G_OBJ_FLAG_FLIPT 1<<4 /* T 方向反転 */
|
||||
|
||||
typedef struct {
|
||||
s16 objX; /* s10.2 OBJ 左上端 X 座標 */
|
||||
u16 scaleW; /* u5.10 幅方向スケーリング */
|
||||
u16 imageW; /* u10.5 テクスチャの幅 (S 方向の長さ) */
|
||||
u16 paddingX; /* 未使用 常に 0 */
|
||||
s16 objY; /* s10.2 OBJ 左上端 Y 座標 */
|
||||
u16 scaleH; /* u5.10 高さ方向スケーリング */
|
||||
u16 imageH; /* u10.5 テクスチャの高さ (T 方向の長さ) */
|
||||
u16 paddingY; /* 未使用 常に 0 */
|
||||
u16 imageStride; /* テクセルの折り返し幅 (64bit word 単位) */
|
||||
u16 imageAdrs; /* TMEM 内のテクスチャ先頭位置 (64bit word 単位) */
|
||||
u8 imageFmt; /* テクセルのフォーマット G_IM_FMT_* */
|
||||
u8 imageSiz; /* テクセルのサイズ G_IM_SIZ_* */
|
||||
u8 imagePal; /* パレット番号 0-7 */
|
||||
u8 imageFlags; /* 表示フラグ 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; /* Type 種別 G_OBJLT_TXTRBLOCK */
|
||||
u64 *image; /* DRAM 上のテクスチャソースアドレス */
|
||||
u16 tmem; /* ロード先の TMEM ワードアドレス (8byteWORD) */
|
||||
u16 tsize; /* Texture サイズ マクロ GS_TB_TSIZE() で指定 */
|
||||
u16 tline; /* Texture 1 ライン幅 マクロ GS_TB_TLINE() で指定 */
|
||||
u16 sid; /* STATE ID 4 の倍数で 0,4,8,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; /* Type 種別 G_OBJLT_TXTRTILE */
|
||||
u64 *image; /* DRAM 上のテクスチャソースアドレス */
|
||||
u16 tmem; /* ロード先の TMEM ワードアドレス (8byteWORD) */
|
||||
u16 twidth; /* Texture 幅 マクロ GS_TT_TWIDTH() で指定 */
|
||||
u16 theight; /* Texture 高さ マクロ GS_TT_THEIGHT() で指定 */
|
||||
u16 sid; /* STATE ID 4 の倍数で 0,4,8,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; /* Type 種別 G_OBJLT_TLUT */
|
||||
u64 *image; /* DRAM 上のテクスチャソースアドレス */
|
||||
u16 phead; /* ロード先頭のパレット番号 256 以上 511 以下 */
|
||||
u16 pnum; /* ロードするパレット数 - 1 */
|
||||
u16 zero; /* 常に 0 を代入する */
|
||||
u16 sid; /* STATE ID 4 の倍数で 0,4,8,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 /* 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 ========*/
|
||||
365
include/ique/PR/gt.h
Executable file
365
include/ique/PR/gt.h
Executable file
@@ -0,0 +1,365 @@
|
||||
|
||||
/*
|
||||
* Copyright 1995, Silicon Graphics, Inc.
|
||||
* ALL RIGHTS RESERVED
|
||||
*
|
||||
* UNPUBLISHED -- Rights reserved under the copyright laws of the United
|
||||
* States. Use of a copyright notice is precautionary only and does not
|
||||
* imply publication or disclosure.
|
||||
*
|
||||
* U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
|
||||
* Use, duplication or disclosure by the Government is subject to restrictions
|
||||
* as set forth in FAR 52.227.19(c)(2) or subparagraph (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, or the DOD or NASA FAR
|
||||
* Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
|
||||
* 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
|
||||
*
|
||||
* THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
|
||||
* INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
|
||||
* DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
|
||||
* PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
|
||||
* GRAPHICS, INC.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* File: gt.h
|
||||
* Creator: hsa@sgi.com
|
||||
* Create Date: Thu Oct 12 15:48:14 PDT 1995
|
||||
*
|
||||
* This file defines the GBI for the TURBO 3D graphics microcode.
|
||||
* The turbo microcode is a special FEATURE-LIMITED microcode designed
|
||||
* for specific applications. It is not for general use.
|
||||
*
|
||||
* (see XXX for more information)
|
||||
*
|
||||
*/
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* $Revision: 1.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/gt.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef _GT_H_
|
||||
#define _GT_H_
|
||||
|
||||
/* this file should be #included AFTER gbi.h */
|
||||
|
||||
#include "sptask.h"
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif /* _LANGUAGE_C_PLUS_PLUS */
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
/* the following #defines seem out of order, but we need them
|
||||
* for the microcode.
|
||||
*/
|
||||
|
||||
/*
|
||||
* object state field: rendState
|
||||
*
|
||||
* This flag word is built up out of the bits from a
|
||||
* subset of the G_SETGEOMETRYMODE flags from gbi.h.
|
||||
*
|
||||
* When each of these bits is '1', the comments below explain
|
||||
* the effect on the triangles.
|
||||
*/
|
||||
#define GT_ZBUFFER G_ZBUFFER
|
||||
#define GT_TEXTURE G_TEXTURE_ENABLE /* texture ON */
|
||||
#define GT_CULL_BACK G_CULL_BACK /* reject backfaces */
|
||||
#define GT_SHADING_SMOOTH G_SHADING_SMOOTH /* smooth shade ON */
|
||||
|
||||
/*
|
||||
* object state field: textureState
|
||||
*
|
||||
* The lower 3 bits of this flag word contain the texture tile number
|
||||
* to be used. All triangles of an object are rendered with the same
|
||||
* texture tile.
|
||||
*/
|
||||
|
||||
/*
|
||||
* object state field: flag
|
||||
*
|
||||
* This is a group of what would be pad bits. We use them for some
|
||||
* flag bits.
|
||||
*/
|
||||
#define GT_FLAG_NOMTX 0x01 /* don't load the matrix */
|
||||
#define GT_FLAG_NO_XFM 0x02 /* load vtx, use verbatim */
|
||||
#define GT_FLAG_XFM_ONLY 0x04 /* xform vtx, write to *TriN */
|
||||
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/* turbo 3D ucode: */
|
||||
extern long long int gspTurbo3DTextStart[], gspTurbo3DTextEnd[];
|
||||
extern long long int gspTurbo3DDataStart[], gspTurbo3DDataEnd[];
|
||||
extern long long int gspTurbo3D_dramTextStart[], gspTurbo3D_dramTextEnd[];
|
||||
extern long long int gspTurbo3D_dramDataStart[], gspTurbo3D_dramDataEnd[];
|
||||
extern long long int gspTurbo3D_fifoTextStart[], gspTurbo3D_fifoTextEnd[];
|
||||
extern long long int gspTurbo3D_fifoDataStart[], gspTurbo3D_fifoDataEnd[];
|
||||
|
||||
/*
|
||||
* This is the global state structure. It's definition carefully
|
||||
* matches the ucode, so if this structure changes, you must also change
|
||||
* the ucode.
|
||||
*/
|
||||
typedef struct {
|
||||
u16 perspNorm; /* persp normalization */
|
||||
u16 pad0;
|
||||
u32 flag;
|
||||
Gfx rdpOthermode;
|
||||
u32 segBases[16]; /* table of segment base addrs (SEE NOTE!) */
|
||||
Vp viewport; /* the viewport to use */
|
||||
Gfx *rdpCmds; /* block of RDP data, process if !NULL
|
||||
* block terminated by gDPEndDisplayList()
|
||||
* (This is a segment address)
|
||||
*/
|
||||
} gtGlobState_t;
|
||||
|
||||
/* NOTE:
|
||||
* Although there are 16 segment table entries, the first one (segment 0)
|
||||
* is reserved for physical memory mapping. You should not segment 0
|
||||
* to anything other than 0x0.
|
||||
*/
|
||||
|
||||
typedef union {
|
||||
gtGlobState_t sp;
|
||||
long long int force_structure_alignment;
|
||||
} gtGlobState;
|
||||
|
||||
|
||||
/*
|
||||
* This is the 'state' structure associated with each object
|
||||
* to be rendered. It's definition carefully matches the
|
||||
* ucode, so if this structure changes, you must also change
|
||||
* the gtoff.c tool and the ucode.
|
||||
*/
|
||||
typedef struct {
|
||||
u32 renderState; /* render state */
|
||||
u32 textureState; /* texture state */
|
||||
u8 vtxCount; /* how many verts? */
|
||||
u8 vtxV0; /* where to load verts? */
|
||||
u8 triCount; /* how many tris? */
|
||||
u8 flag;
|
||||
Gfx *rdpCmds; /* ptr (segment address) to RDP DL */
|
||||
Gfx rdpOthermode;
|
||||
Mtx transform; /* the transform matrix to use */
|
||||
} gtState_t;
|
||||
|
||||
typedef union {
|
||||
gtState_t sp;
|
||||
long long int force_structure_alignment;
|
||||
} gtState;
|
||||
|
||||
/* gtStateLite : same as gtState, but no matrix (see flags below) */
|
||||
/* this structure must be identical to gtState! (bad) */
|
||||
typedef struct {
|
||||
u32 renderState; /* render state */
|
||||
u32 textureState; /* texture state */
|
||||
u8 vtxCount; /* how many verts? */
|
||||
u8 vtxV0; /* where to load verts? */
|
||||
u8 triCount; /* how many tris? */
|
||||
u8 flag;
|
||||
Gfx *rdpCmds; /* ptr (segment address) to RDP DL */
|
||||
Gfx rdpOthermode;
|
||||
} gtStateL_t;
|
||||
|
||||
typedef union {
|
||||
gtStateL_t sp;
|
||||
long long int force_structure_alignment;
|
||||
} gtStateL;
|
||||
|
||||
/*
|
||||
* The vertex list for the turbo display list uses the
|
||||
* Vtx struct in gbi.h
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* This structure represents a single triangle, part of the
|
||||
* triangle list of the object to be rendered.
|
||||
*
|
||||
* NOTE: The triangle list MUST be aligned to an 8-byte boundary.
|
||||
* Since this structure is only 4 bytes, we are REQUIRING that
|
||||
* this structure only be used as an array of triangles, and we
|
||||
* depend on the MIPS C compiler (which always aligns arrays to
|
||||
* 8-byte boundaries). THIS IS DANGEROUS!!!!
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
u8 v0, v1, v2, flag; /* flag is which one for flat shade */
|
||||
} gtTriN;
|
||||
|
||||
|
||||
/*
|
||||
* This structure represents the transformed points. It is the format
|
||||
* of the points written out when GT_FLAG_XFM_ONLY is set, as well as
|
||||
* the format expected when GT_FLAG_NO_XFM is used.
|
||||
*
|
||||
* NOTE: The size and layout of these points is very similar to Vtx,
|
||||
* except the screen coordinates overwrite the x,y,z,pad fields.
|
||||
* (we could consider adding to the Vtx union, but we want to keep
|
||||
* turbo stuff out of gbi.h)
|
||||
*
|
||||
* NOTE: The z is a special format. It can be used to compare vertices
|
||||
* for sorting, but it should not be used for other purposes. If modified,
|
||||
* the z-buffer hardware might not understand the data.
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
short int xscrn; /* x,y screen coordinates are SSSS10.2 */
|
||||
short int yscrn;
|
||||
int zscrn; /* z screen is S15.16 */
|
||||
|
||||
short int s; /* transformed texture coord, S10.5 */
|
||||
short int t;
|
||||
|
||||
u8 r; /* color (or normal) */
|
||||
u8 g;
|
||||
u8 b;
|
||||
u8 a;
|
||||
} gtVtxOut_t;
|
||||
|
||||
/* see "Data Structure" comment in gbi.h for information about why
|
||||
* we use this union.
|
||||
*/
|
||||
typedef union {
|
||||
gtVtxOut_t v;
|
||||
long long int force_structure_alignment;
|
||||
} gtVtxOut;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* state field: rdpOthermode
|
||||
*
|
||||
* This is one of the trickier state fields. The turbo interface
|
||||
* requires the RDP othermode command to be cached by the host,
|
||||
* therefore we provide a different interface in libultra to help cache
|
||||
* this in the gt state (this word is just bits, you could pack them
|
||||
* on your own).
|
||||
*
|
||||
* gtStateSetOthermode() accomplishs this, taking as arguments
|
||||
* the state, one of the following mode enums, and a piece of data
|
||||
* (othermode parameters from gbi.h).
|
||||
*
|
||||
* By definition, the othermode word from the gt state structure is sent
|
||||
* to the RDP *before* any RDP commands from the rdpCmds[] field. The
|
||||
* othermode is *always* sent.
|
||||
*
|
||||
* Stated another way, NONE of the gbi RDP othermode commands equivalent
|
||||
* to those listed here are allowed in the rdpCmd[] field of the
|
||||
* gt state structure.
|
||||
*
|
||||
* Notice also that many of these commands do not make sense for
|
||||
* the turbo ucode (they control features not supported, like mip-mapping).
|
||||
* They are only included here for completeness.
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
GT_CLEAR, /* special gt mode, clears othermode state */
|
||||
GT_ALPHACOMPARE,
|
||||
GT_ZSRCSEL,
|
||||
GT_RENDERMODE,
|
||||
GT_ALPHADITHER,
|
||||
GT_RGBDITHER,
|
||||
GT_COMBKEY,
|
||||
GT_TEXTCONV,
|
||||
GT_TEXTFILT,
|
||||
GT_TEXTLUT,
|
||||
GT_TEXTLOD,
|
||||
GT_TEXTDETAIL,
|
||||
GT_TEXTPERSP,
|
||||
GT_CYCLETYPE,
|
||||
GT_PIPELINE
|
||||
} gtStateOthermode_t;
|
||||
|
||||
/*
|
||||
* This call builds up an othermode command word. The 'mode' is one of
|
||||
* the above modes, the 'data' field comes from gbi.h, it is the data
|
||||
* field for the equivalent gbi setothermode macro.
|
||||
*/
|
||||
extern void gtStateSetOthermode(Gfx *om, gtStateOthermode_t mode, int data);
|
||||
|
||||
/*
|
||||
* This call dumps a turbo display list for use with gbi2mem and RSPSIM
|
||||
*/
|
||||
#define GT_DUMPTURBO_HANGAFTER 64
|
||||
#define GT_DUMPTURBO_NOTEXTURES 128
|
||||
extern void gtDumpTurbo(OSTask *tp,u8 flags);
|
||||
|
||||
/*
|
||||
* Special macros to init othermode words to all 0's, a good default
|
||||
* value.
|
||||
*/
|
||||
#define gDPClearOtherMode(pkt) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
\
|
||||
_g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE, 24, 8); \
|
||||
_g->words.w1 = 0x0; \
|
||||
}
|
||||
|
||||
#define gsDPClearOtherMode() \
|
||||
{ \
|
||||
_SHIFTL(G_RDPSETOTHERMODE, 24, 8), 0x0 \
|
||||
}
|
||||
|
||||
/*
|
||||
* Special macros to end DP blocks (see above). These commands
|
||||
* generate all 0's, which the turbo ucode looks for. They *aren't*
|
||||
* real DP commands!
|
||||
*/
|
||||
#define gDPEndDisplayList(pkt) gSPNoOp(pkt)
|
||||
#define gsDPEndDisplayList() gsSPNoOp()
|
||||
|
||||
/*
|
||||
* This structure is a turbo 'object', the turbo display list is
|
||||
* simply a list of these.
|
||||
*
|
||||
* NOTE: All pointers are segment addresses
|
||||
*
|
||||
* NOTE: If (statep->flag & GT_FLAG_XFM_ONLY), the trip field is
|
||||
* interpreted as a pointer to gtVtxOut[] that can be used to store
|
||||
* the transformed points. (statep->triCount should be 0, else bad
|
||||
* things could happen...)
|
||||
*
|
||||
* NOTE: If (statep->flag & GT_FLAG_NO_XFM), the vtxp field is
|
||||
* interpreted as a pointer to gtVtxOut[] that can be used to load
|
||||
* pre-transformed points.
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
gtGlobState *gstatep; /* global state, usually NULL */
|
||||
gtState *statep; /* if this is NULL, end object processing */
|
||||
Vtx *vtxp; /* if this is NULL, use points in buffer */
|
||||
gtTriN *trip; /* if this is NULL, use tris in buffer */
|
||||
} gtGfx_t;
|
||||
|
||||
typedef union {
|
||||
gtGfx_t obj;
|
||||
long long int force_structure_alignment;
|
||||
} gtGfx;
|
||||
|
||||
|
||||
#endif /* _LANGUAGE_C */
|
||||
|
||||
#ifdef _LANGUAGE_ASSEMBLY
|
||||
#include <PR/gtoff.h>
|
||||
#endif /* _LANGUAGE_ASSEMBLY */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif /* _LANGUAGE_C_PLUS_PLUS */
|
||||
|
||||
#ifdef _LANGUAGE_MAKEROM
|
||||
#endif /* _LANGUAGE_MAKEROM */
|
||||
|
||||
#endif /* _GT_H_ */
|
||||
12
include/ique/PR/gtoff.h
Executable file
12
include/ique/PR/gtoff.h
Executable file
@@ -0,0 +1,12 @@
|
||||
/* GENERATED FILE, DO NOT EDIT! */
|
||||
|
||||
/* gtState_t structure offsets for assembly language: */
|
||||
#define GT_STATE_SIZE 88
|
||||
#define GT_STATE_OFF_RENDSTATE 0x00
|
||||
#define GT_STATE_OFF_TEXSTATE 0x04
|
||||
#define GT_STATE_OFF_VTXCOUNT 0x08
|
||||
#define GT_STATE_OFF_VTXV0 0x09
|
||||
#define GT_STATE_OFF_TRICOUNT 0x0a
|
||||
#define GT_STATE_OFF_RDPCMDS 0x0c
|
||||
#define GT_STATE_OFF_OTHERMODE 0x10
|
||||
#define GT_STATE_OFF_TRANSFORM 0x18
|
||||
269
include/ique/PR/gu.h
Executable file
269
include/ique/PR/gu.h
Executable file
@@ -0,0 +1,269 @@
|
||||
#ifndef _GU_H_
|
||||
#define _GU_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.1.1.2 $
|
||||
* $Date: 2002/10/29 08:06:34 $
|
||||
* $Source: /home/routefree/bb/depot/rf/sw/bbplayer/include/gu.h,v $
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <PR/mbi.h>
|
||||
#include <PR/ultratypes.h>
|
||||
#include <PR/sptask.h>
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||
#endif
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) (((a)<(b))?(a):(b))
|
||||
#endif
|
||||
|
||||
#define M_PI 3.14159265358979323846
|
||||
#define M_DTOR (3.14159265358979323846/180.0)
|
||||
|
||||
#define FTOFIX32(x) (long)((x) * (float)0x00010000)
|
||||
#define FIX32TOF(x) ((float)(x) * (1.0f / (float)0x00010000))
|
||||
#define FTOFRAC8(x) ((int) MIN(((x) * (128.0f)), 127.0f) & 0xff)
|
||||
|
||||
#define FILTER_WRAP 0
|
||||
#define FILTER_CLAMP 1
|
||||
|
||||
#define RAND(x) (guRandom()%x) /* random number between 0 to x */
|
||||
|
||||
/*
|
||||
* Data Structures
|
||||
*/
|
||||
typedef struct {
|
||||
unsigned char *base;
|
||||
int fmt, siz;
|
||||
int xsize, ysize;
|
||||
int lsize;
|
||||
/* current tile info */
|
||||
int addr;
|
||||
int w, h;
|
||||
int s, t;
|
||||
} Image;
|
||||
|
||||
typedef struct {
|
||||
float col[3];
|
||||
float pos[3];
|
||||
float a1, a2; /* actual color = col/(a1*dist + a2) */
|
||||
} PositionalLight;
|
||||
|
||||
|
||||
/*
|
||||
* Function Prototypes
|
||||
*/
|
||||
|
||||
extern int guLoadTextureBlockMipMap(Gfx **glist, unsigned char *tbuf, Image *im,
|
||||
unsigned char startTile, unsigned char pal, unsigned char cms,
|
||||
unsigned char cmt, unsigned char masks, unsigned char maskt,
|
||||
unsigned char shifts, unsigned char shiftt, unsigned char cfs,
|
||||
unsigned char cft);
|
||||
|
||||
extern int guGetDPLoadTextureTileSz (int ult, int lrt);
|
||||
extern void guDPLoadTextureTile (Gfx *glistp, void *timg,
|
||||
int texl_fmt, int texl_size,
|
||||
int img_width, int img_height,
|
||||
int uls, int ult, int lrs, int lrt,
|
||||
int palette,
|
||||
int cms, int cmt,
|
||||
int masks, int maskt,
|
||||
int shifts, int shiftt);
|
||||
|
||||
|
||||
/*
|
||||
* matrix operations:
|
||||
*
|
||||
* The 'F' version is floating point, in case the application wants
|
||||
* to do matrix manipulations and convert to fixed-point at the last
|
||||
* minute.
|
||||
*/
|
||||
extern void guMtxIdent(Mtx *m);
|
||||
extern void guMtxIdentF(float mf[4][4]);
|
||||
extern void guOrtho(Mtx *m, float l, float r, float b, float t,
|
||||
float n, float f, float scale);
|
||||
extern void guOrthoF(float mf[4][4], float l, float r, float b, float t,
|
||||
float n, float f, float scale);
|
||||
extern void guFrustum(Mtx *m, float l, float r, float b, float t,
|
||||
float n, float f, float scale);
|
||||
extern void guFrustumF(float mf[4][4], float l, float r, float b, float t,
|
||||
float n, float f, float scale);
|
||||
extern void guPerspective(Mtx *m, u16 *perspNorm, float fovy,
|
||||
float aspect, float near, float far, float scale);
|
||||
extern void guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy,
|
||||
float aspect, float near, float far, float scale);
|
||||
extern void guLookAt(Mtx *m,
|
||||
float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp);
|
||||
extern void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp);
|
||||
extern void guLookAtReflect(Mtx *m, LookAt *l,
|
||||
float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp);
|
||||
extern void guLookAtReflectF(float mf[4][4], LookAt *l,
|
||||
float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp);
|
||||
extern void guLookAtHilite(Mtx *m, LookAt *l, Hilite *h,
|
||||
float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp,
|
||||
float xl1, float yl1, float zl1,
|
||||
float xl2, float yl2, float zl2,
|
||||
int twidth, int theight);
|
||||
extern void guLookAtHiliteF(float mf[4][4], LookAt *l, Hilite *h,
|
||||
float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp,
|
||||
float xl1, float yl1, float zl1,
|
||||
float xl2, float yl2, float zl2,
|
||||
int twidth, int theight);
|
||||
extern void guLookAtStereo(Mtx *m,
|
||||
float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp,
|
||||
float eyedist);
|
||||
extern void guLookAtStereoF(float mf[4][4],
|
||||
float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
float xUp, float yUp, float zUp,
|
||||
float eyedist);
|
||||
extern void guRotate(Mtx *m, float a, float x, float y, float z);
|
||||
extern void guRotateF(float mf[4][4], float a, float x, float y, float z);
|
||||
extern void guRotateRPY(Mtx *m, float r, float p, float y);
|
||||
extern void guRotateRPYF(float mf[4][4], float r, float p, float h);
|
||||
extern void guAlign(Mtx *m, float a, float x, float y, float z);
|
||||
extern void guAlignF(float mf[4][4], float a, float x, float y, float z);
|
||||
extern void guScale(Mtx *m, float x, float y, float z);
|
||||
extern void guScaleF(float mf[4][4], float x, float y, float z);
|
||||
extern void guTranslate(Mtx *m, float x, float y, float z);
|
||||
extern void guTranslateF(float mf[4][4], float x, float y, float z);
|
||||
extern void guPosition(Mtx *m, float r, float p, float h, float s,
|
||||
float x, float y, float z);
|
||||
extern void guPositionF(float mf[4][4], float r, float p, float h, float s,
|
||||
float x, float y, float z);
|
||||
extern void guMtxF2L(float mf[4][4], Mtx *m);
|
||||
extern void guMtxL2F(float mf[4][4], Mtx *m);
|
||||
extern void guMtxCatF(float m[4][4], float n[4][4], float r[4][4]);
|
||||
extern void guMtxCatL(Mtx *m, Mtx *n, Mtx *res);
|
||||
extern void guMtxXFMF(float mf[4][4], float x, float y, float z,
|
||||
float *ox, float *oy, float *oz);
|
||||
extern void guMtxXFML(Mtx *m, float x, float y, float z,
|
||||
float *ox, float *oy, float *oz);
|
||||
|
||||
/* vector utility: */
|
||||
extern void guNormalize(float *x, float *y, float *z);
|
||||
|
||||
/* light utilities: */
|
||||
void guPosLight(PositionalLight *pl, Light *l,
|
||||
float xOb, float yOb, float zOb);
|
||||
void guPosLightHilite(PositionalLight *pl1, PositionalLight *pl2,
|
||||
Light *l1, Light *l2,
|
||||
LookAt *l, Hilite *h,
|
||||
float xEye, float yEye, float zEye,
|
||||
float xOb, float yOb, float zOb,
|
||||
float xUp, float yUp, float zUp,
|
||||
int twidth, int theight);
|
||||
extern int guRandom(void);
|
||||
|
||||
/*
|
||||
* Math functions
|
||||
*/
|
||||
extern float sinf(float angle);
|
||||
extern float cosf(float angle);
|
||||
extern signed short sins (unsigned short angle);
|
||||
extern signed short coss (unsigned short angle);
|
||||
extern float sqrtf(float value);
|
||||
#ifdef __sgi
|
||||
#pragma intrinsic(sqrtf);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Dump routines for low-level display lists
|
||||
*/
|
||||
/* flag values for guParseRdpDL() */
|
||||
#define GU_PARSERDP_VERBOSE 1
|
||||
#define GU_PARSERDP_PRAREA 2
|
||||
#define GU_PARSERDP_PRHISTO 4
|
||||
#define GU_PARSERDP_DUMPONLY 32 /* doesn't need to be same as */
|
||||
/* GU_PARSEGBI_DUMPOLNY, but this */
|
||||
/* allows app to use interchangeably */
|
||||
|
||||
extern void guParseRdpDL(u64 *rdp_dl, u64 nbytes, u8 flags);
|
||||
extern void guParseString(char *StringPointer, u64 nbytes);
|
||||
|
||||
/*
|
||||
* NO LONGER SUPPORTED,
|
||||
* use guParseRdpDL with GU_PARSERDP_DUMPONLY flags
|
||||
*/
|
||||
/* extern void guDumpRawRdpDL(u64 *rdp_dl, u64 nbytes); */
|
||||
|
||||
/* flag values for guBlinkRdpDL() */
|
||||
#define GU_BLINKRDP_HILITE 1
|
||||
#define GU_BLINKRDP_EXTRACT 2
|
||||
|
||||
extern void
|
||||
guBlinkRdpDL(u64 *rdp_dl_in, u64 nbytes_in,
|
||||
u64 *rdp_dl_out, u64 *nbytes_out,
|
||||
u32 x, u32 y, u32 radius,
|
||||
u8 red, u8 green, u8 blue,
|
||||
u8 flags);
|
||||
|
||||
/* flag values for guParseGbiDL() */
|
||||
#define GU_PARSEGBI_ROWMAJOR 1
|
||||
#define GU_PARSEGBI_NONEST 2
|
||||
#define GU_PARSEGBI_FLTMTX 4
|
||||
#define GU_PARSEGBI_SHOWDMA 8
|
||||
#define GU_PARSEGBI_ALLMTX 16
|
||||
#define GU_PARSEGBI_DUMPONLY 32
|
||||
/*
|
||||
#define GU_PARSEGBI_HANGAFTER 64
|
||||
#define GU_PARSEGBI_NOTEXTURES 128
|
||||
*/
|
||||
extern void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags);
|
||||
extern void guDumpGbiDL(OSTask *tp,u8 flags);
|
||||
|
||||
#define GU_PARSE_GBI_TYPE 1
|
||||
#define GU_PARSE_RDP_TYPE 2
|
||||
#define GU_PARSE_READY 3
|
||||
#define GU_PARSE_MEM_BLOCK 4
|
||||
#define GU_PARSE_ABI_TYPE 5
|
||||
#define GU_PARSE_STRING_TYPE 6
|
||||
|
||||
typedef struct {
|
||||
int dataSize;
|
||||
int dlType;
|
||||
int flags;
|
||||
u32 paddr;
|
||||
} guDLPrintCB;
|
||||
|
||||
void guSprite2DInit(uSprite *SpritePointer,
|
||||
void *SourceImagePointer,
|
||||
void *TlutPointer,
|
||||
int Stride,
|
||||
int SubImageWidth,
|
||||
int SubImageHeight,
|
||||
int SourceImageType,
|
||||
int SourceImageBitSize,
|
||||
int SourceImageOffsetS,
|
||||
int SourceImageOffsetT);
|
||||
|
||||
#endif /* !_GU_H_ */
|
||||
633
include/ique/PR/gzsort.h
Executable file
633
include/ique/PR/gzsort.h
Executable file
File diff suppressed because it is too large
Load Diff
280
include/ique/PR/leo.h
Executable file
280
include/ique/PR/leo.h
Executable file
@@ -0,0 +1,280 @@
|
||||
|
||||
/*---------------------------------------------------------------------*
|
||||
Copyright (C) 1998 Nintendo.
|
||||
|
||||
$RCSfile: leo.h,v $
|
||||
$Revision: 1.1.1.1 $
|
||||
$Date: 2002/05/02 03:28:24 $
|
||||
*---------------------------------------------------------------------*/
|
||||
|
||||
#ifndef _LEO_H_
|
||||
#define _LEO_H_
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <PR/os.h>
|
||||
#include <PR/leoappli.h>
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Type definitions
|
||||
*
|
||||
*/
|
||||
typedef u32 LEOError;
|
||||
|
||||
typedef u8 LEOSpdlMode;
|
||||
|
||||
typedef u8 LEOStatus;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 drive; /* version of hw */
|
||||
u8 driver; /* version of sw */
|
||||
u8 deviceType; /* dev type, always 00 */
|
||||
u8 ndevices; /* # of devices, always 01 */
|
||||
} LEOVersion;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 startLBA;
|
||||
u32 endLBA;
|
||||
u32 nbytes;
|
||||
} LEOCapacity;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 pad;
|
||||
u8 yearhi;
|
||||
u8 yearlo;
|
||||
u8 month;
|
||||
u8 day;
|
||||
u8 hour;
|
||||
u8 minute;
|
||||
u8 second;
|
||||
} LEODiskTime;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u64 lineNumber;
|
||||
LEODiskTime time;
|
||||
} LEOSerialNum;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 gameName[4];
|
||||
u8 gameVersion;
|
||||
u8 diskNumber;
|
||||
u8 ramUsage;
|
||||
u8 diskUsage;
|
||||
LEOSerialNum serialNumber;
|
||||
u8 company[2];
|
||||
u8 freeArea[6];
|
||||
} LEODiskID;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LEOCmdHeader header;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
u32 lba;
|
||||
u32 xfer_blks;
|
||||
void *buff_ptr;
|
||||
u32 rw_bytes;
|
||||
#ifdef _LONGCMD
|
||||
u32 size;
|
||||
#endif
|
||||
} readwrite;
|
||||
struct
|
||||
{
|
||||
u32 lba;
|
||||
} seek;
|
||||
struct
|
||||
{
|
||||
void *buffer_pointer;
|
||||
} readdiskid;
|
||||
LEODiskTime time;
|
||||
struct
|
||||
{
|
||||
u8 reserve1;
|
||||
u8 reserve2;
|
||||
u8 standby_time;
|
||||
u8 sleep_time;
|
||||
u32 reserve3;
|
||||
} modeselect;
|
||||
|
||||
} data;
|
||||
|
||||
} LEOCmd;
|
||||
|
||||
|
||||
#define _nbytes readwrite.rw_bytes
|
||||
#define _result header.status
|
||||
|
||||
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Global definitions
|
||||
*
|
||||
*/
|
||||
#define LEO_SW_VERSION 6 /* This will be returned by */
|
||||
/* LeoInquiry command */
|
||||
|
||||
#define OS_PRIORITY_LEOMGR OS_PRIORITY_PIMGR
|
||||
|
||||
/*
|
||||
* Drive Rom offset address
|
||||
*/
|
||||
#define DDROM_FONT_START 0x000a0000
|
||||
#define DDROM_WAVEDATA_START 0x00140000
|
||||
|
||||
/*
|
||||
* Definition for osLeoSpdlMotor()
|
||||
*/
|
||||
#define ACTIVE 0
|
||||
#define STANDBY 1
|
||||
#define SLEEP 2
|
||||
#define BRAKE 4
|
||||
|
||||
#define LEO_MOTOR_ACTIVE 0
|
||||
#define LEO_MOTOR_STANDBY 1
|
||||
#define LEO_MOTOR_SLEEP 2
|
||||
#define LEO_MOTOR_BRAKE 4
|
||||
|
||||
#define NUM_LBAS 4292 /* total number of LBAs */
|
||||
|
||||
#define BLK_SIZE_ZONE0 19720
|
||||
#define BLK_SIZE_ZONE1 18360
|
||||
#define BLK_SIZE_ZONE2 17680
|
||||
#define BLK_SIZE_ZONE3 16320
|
||||
#define BLK_SIZE_ZONE4 14960
|
||||
#define BLK_SIZE_ZONE5 13600
|
||||
#define BLK_SIZE_ZONE6 12240
|
||||
#define BLK_SIZE_ZONE7 10880
|
||||
#define BLK_SIZE_ZONE8 9520
|
||||
|
||||
#define MAX_BLK_SIZE BLK_SIZE_ZONE0
|
||||
#define MIN_BLK_SIZE BLK_SIZE_ZONE8
|
||||
|
||||
/*
|
||||
* Error codes
|
||||
*/
|
||||
#define LEO_ERROR_GOOD 0
|
||||
#define LEO_ERROR_DRIVE_NOT_READY 1
|
||||
#define LEO_ERROR_DIAGNOSTIC_FAILURE 2
|
||||
#define LEO_ERROR_COMMAND_PHASE_ERROR 3
|
||||
#define LEO_ERROR_DATA_PHASE_ERROR 4
|
||||
#define LEO_ERROR_REAL_TIME_CLOCK_FAILURE 5
|
||||
#define LEO_ERROR_BUSY 8
|
||||
#define LEO_ERROR_INCOMPATIBLE_MEDIUM_INSTALLED 11
|
||||
#define LEO_ERROR_UNKNOWN_FORMAT 11
|
||||
#define LEO_ERROR_NO_SEEK_COMPLETE 21
|
||||
#define LEO_ERROR_WRITE_FAULT 22
|
||||
#define LEO_ERROR_UNRECOVERED_READ_ERROR 23
|
||||
#define LEO_ERROR_NO_REFERENCE_POSITION_FOUND 24
|
||||
#define LEO_ERROR_TRACK_FOLLOWING_ERROR 25
|
||||
#define LEO_ERROR_TRACKING_OR_SPDL_SERVO_FAILURE 25
|
||||
#define LEO_ERROR_INVALID_COMMAND_OPERATION_CODE 31
|
||||
#define LEO_ERROR_LBA_OUT_OF_RANGE 32
|
||||
#define LEO_ERROR_WRITE_PROTECT_ERROR 33
|
||||
#define LEO_ERROR_COMMAND_CLEARED_BY_HOST 34
|
||||
#define LEO_ERROR_COMMAND_TERMINATED 34
|
||||
#define LEO_ERROR_QUEUE_FULL 35
|
||||
#define LEO_ERROR_ILLEGAL_TIMER_VALUE 36
|
||||
#define LEO_ERROR_WAITING_NMI 37
|
||||
#define LEO_ERROR_DEVICE_COMMUNICATION_FAILURE 41
|
||||
#define LEO_ERROR_MEDIUM_NOT_PRESENT 42
|
||||
#define LEO_ERROR_POWERONRESET_DEVICERESET_OCCURED 43
|
||||
#define LEO_ERROR_RAMPACK_NOT_CONNECTED 44
|
||||
#define LEO_ERROR_MEDIUM_MAY_HAVE_CHANGED 47
|
||||
#define LEO_ERROR_EJECTED_ILLEGALLY_RESUME 49
|
||||
|
||||
/*
|
||||
* Reserved
|
||||
*/
|
||||
#define LEO_ERROR_NOT_BOOTED_DISK 45
|
||||
#define LEO_ERROR_DIDNOT_CHANGED_DISK_AS_EXPECTED 46
|
||||
|
||||
/*
|
||||
* Error codes only used in IPL
|
||||
*/
|
||||
#define LEO_ERROR_RTC_NOT_SET_CORRECTLY 48
|
||||
#define LEO_ERROR_DIAGNOSTIC_FAILURE_RESET 50
|
||||
#define LEO_ERROR_EJECTED_ILLEGALLY_RESET 51
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Macro definitions
|
||||
*
|
||||
*/
|
||||
#define GET_ERROR(x) ((x).header.sense)
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Extern variables
|
||||
*
|
||||
*/
|
||||
extern LEODiskID leoBootID;
|
||||
extern OSPiHandle *__osDiskHandle; /* For exceptasm to get disk info*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* Function prototypes
|
||||
*
|
||||
*/
|
||||
/* Initialize routine */
|
||||
extern s32 LeoCreateLeoManager(OSPri comPri, OSPri intPri,
|
||||
OSMesg *cmdBuf, s32 cmdMsgCnt);
|
||||
extern s32 LeoCJCreateLeoManager(OSPri comPri, OSPri intPri,
|
||||
OSMesg *cmdBuf, s32 cmdMsgCnt);
|
||||
extern s32 LeoCACreateLeoManager(OSPri comPri, OSPri intPri,
|
||||
OSMesg *cmdBuf, s32 cmdMsgCnt);
|
||||
extern u32 LeoDriveExist(void);
|
||||
|
||||
/* Synchronous functions */
|
||||
extern s32 LeoClearQueue(void);
|
||||
extern s32 LeoByteToLBA(s32 startLBA, u32 nbytes, s32 *lbas);
|
||||
extern s32 LeoLBAToByte(s32 startLBA, u32 nLBAs, s32 *bytes);
|
||||
extern s32 LeoReadCapacity(LEOCapacity *cap, s32 dir);
|
||||
extern s32 LeoInquiry(LEOVersion *ver);
|
||||
extern s32 LeoTestUnitReady(LEOStatus *status);
|
||||
|
||||
/* Asynchronous functions */
|
||||
extern s32 LeoSpdlMotor(LEOCmd *cmdBlock, LEOSpdlMode mode, OSMesgQueue *mq);
|
||||
extern s32 LeoSeek(LEOCmd *cmdBlock, u32 lba, OSMesgQueue *mq);
|
||||
extern s32 LeoRezero(LEOCmd *cmdBlock, OSMesgQueue *mq);
|
||||
extern s32 LeoReadWrite(LEOCmd *cmdBlock, s32 direction,
|
||||
u32 LBA, void *vAddr, u32 nLBAs, OSMesgQueue *mq);
|
||||
extern s32 LeoReadDiskID(LEOCmd *cmdBlock, LEODiskID *vaddr, OSMesgQueue *mq);
|
||||
extern s32 LeoSetRTC(LEOCmd *cmdBlock, LEODiskTime *RTCdata, OSMesgQueue *mq);
|
||||
extern s32 LeoReadRTC(LEOCmd *cmdBlock, OSMesgQueue *mq);
|
||||
extern s32 LeoModeSelectAsync(LEOCmd *cmdBlock, u32 standby,
|
||||
u32 sleep, OSMesgQueue *mq);
|
||||
|
||||
/* Font routines */
|
||||
extern int LeoGetKAdr(int sjis);
|
||||
extern int LeoGetAAdr(int code,int *dx,int *dy, int *cy);
|
||||
extern int LeoGetAAdr2(u32 ccode,int *dx,int *dy, int *cy);
|
||||
|
||||
/* Boot function */
|
||||
extern void LeoBootGame(void *entry);
|
||||
|
||||
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
|
||||
|
||||
#ifdef _LANGUAGE_C_PLUS_PLUS
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* !_LEO_H */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user