/* * RSP Compiler plug in for Project64 (A Nintendo 64 emulator). * * (c) Copyright 2001 jabo (jabo@emulation64.com) and * zilmar (zilmar@emulation64.com) * * pj64 homepage: www.pj64.net * * Permission to use, copy, modify and distribute Project64 in both binary and * source form, for non-commercial purposes, is hereby granted without fee, * providing that this license information and copyright notice appear with * all copies and any derived work. * * This software is provided 'as-is', without any express or implied * warranty. In no event shall the authors be held liable for any damages * arising from the use of this software. * * Project64 is freeware for PERSONAL USE only. Commercial users should * seek permission of the copyright holders first. Commercial use includes * charging money for Project64 or software derived from Project64. * * The copyright holders request that bug fixes and improvements to the code * should be forwarded to them so if they want them. * */ #ifndef __Types_h #define __Types_h #include /* * pointer to RSP operation code functions or "func" * This is the type of all RSP interpreter and recompiler functions. */ typedef void(*p_func)(void); /* * `BOOL` is Windows-specific so is going to tend to be avoided. * `int` is the exact replacement. * * However, saying "int" all the time for true/false is a little ambiguous. * * Maybe in the future, with C++ (or C99) rewrites, we can switch to `bool`. * Until then, a simple type definition will help emphasize true/false logic. */ typedef int Boolean; typedef union tagUWORD { int32_t W; uint32_t UW; int16_t HW[2]; uint16_t UHW[2]; int8_t B[4]; uint8_t UB[4]; float F; } UWORD32; typedef union tagUDWORD { int64_t DW; uint64_t UDW; int32_t W[2]; uint32_t UW[2]; int16_t HW[4]; uint16_t UHW[4]; int8_t B[8]; uint8_t UB[8]; double D; float F[2]; } UDWORD; typedef union tagVect { int64_t DW[2]; uint64_t UDW[2]; int32_t W[4]; uint32_t UW[4]; int16_t HW[8]; uint16_t UHW[8]; int8_t B[16]; uint8_t UB[16]; double FD[2]; float FS[4]; } VECTOR; #endif