summaryrefslogtreecommitdiff
path: root/src/dsp1_gp32.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dsp1_gp32.h')
-rw-r--r--src/dsp1_gp32.h211
1 files changed, 106 insertions, 105 deletions
diff --git a/src/dsp1_gp32.h b/src/dsp1_gp32.h
index bd3ced1..56223c4 100644
--- a/src/dsp1_gp32.h
+++ b/src/dsp1_gp32.h
@@ -4,7 +4,7 @@
* (c) Copyright 1996 - 2001 Gary Henderson (gary.henderson@ntlworld.com) and
* Jerremy Koot (jkoot@snes9x.com)
*
- * Super FX C emulator code
+ * Super FX C emulator code
* (c) Copyright 1997 - 1999 Ivar (ivar@snes9x.com) and
* Gary Henderson.
* Super FX assembler emulator code (c) Copyright 1998 zsKnight and _Demo_.
@@ -47,41 +47,42 @@ typedef double VECTOR[3];
enum AttitudeMatrix { MatrixA, MatrixB, MatrixC };
-struct SDSP1 {
- bool8 waiting4command;
- bool8 first_parameter;
- uint8 command;
- uint32 in_count;
- uint32 in_index;
- uint32 out_count;
- uint32 out_index;
- uint16 parameters [10];
- uint16 output [10];
-
- // Attitude matrices
- MATRIX vMa;
- MATRIX vMb;
- MATRIX vMc;
-
- // Matrix and translaton vector for
- // transforming a 3D position into the global coordinate system,
- // from the view space coordinate system.
- MATRIX vM;
- VECTOR vT;
-
- // Focal distance
- double vFov;
-
- // A precalculated value for optimization
- double vPlaneD;
-
- // Raster position of horizon
- double vHorizon;
-
- // Convert a 2D screen coordinate to a 3D ground coordinate in global coordinate system.
- void ScreenToGround(VECTOR &v, double X2d, double Y2d);
-
- MATRIX &GetMatrix( AttitudeMatrix Matrix );
+struct SDSP1
+{
+ bool8 waiting4command;
+ bool8 first_parameter;
+ uint8 command;
+ uint32 in_count;
+ uint32 in_index;
+ uint32 out_count;
+ uint32 out_index;
+ uint16 parameters [10];
+ uint16 output [10];
+
+ // Attitude matrices
+ MATRIX vMa;
+ MATRIX vMb;
+ MATRIX vMc;
+
+ // Matrix and translaton vector for
+ // transforming a 3D position into the global coordinate system,
+ // from the view space coordinate system.
+ MATRIX vM;
+ VECTOR vT;
+
+ // Focal distance
+ double vFov;
+
+ // A precalculated value for optimization
+ double vPlaneD;
+
+ // Raster position of horizon
+ double vHorizon;
+
+ // Convert a 2D screen coordinate to a 3D ground coordinate in global coordinate system.
+ void ScreenToGround(VECTOR &v, double X2d, double Y2d);
+
+ MATRIX &GetMatrix(AttitudeMatrix Matrix);
};
///////////////// DSP Commands ////////////////////
@@ -89,153 +90,153 @@ struct SDSP1 {
// DSP1 Command 02h
struct DSP1_Parameter
{
- DSP1_Parameter( int16 Fx, int16 Fy, int16 Fz,
- uint16 Lfe, uint16 Les,
- int8 Aas, int8 Azs );
-
- // Raster number of imaginary center
- int16 Vof; // -32768 ~ +32767
-
- // Raster number representing
- // horizontal line.
- int16 Vva; // -32768 ~ +32767
-
- // X,Y coordinate of the point
- // projected on the center of the screen
- // (ground coordinate)
- int16 Cx; // -32768 ~ +32767
- int16 Cy; // -32768 ~ +32767
+ DSP1_Parameter(int16 Fx, int16 Fy, int16 Fz,
+ uint16 Lfe, uint16 Les,
+ int8 Aas, int8 Azs);
+
+ // Raster number of imaginary center
+ int16 Vof; // -32768 ~ +32767
+
+ // Raster number representing
+ // horizontal line.
+ int16 Vva; // -32768 ~ +32767
+
+ // X,Y coordinate of the point
+ // projected on the center of the screen
+ // (ground coordinate)
+ int16 Cx; // -32768 ~ +32767
+ int16 Cy; // -32768 ~ +32767
};
// DSP1 Command 0Ah
struct DSP1_Raster
{
- DSP1_Raster( int16 Vs );
-
- // Linear transformation matrix elements
- // for each raster
- int16 An;
- int16 Bn;
- int16 Cn;
- int16 Dn;
+ DSP1_Raster(int16 Vs);
+
+ // Linear transformation matrix elements
+ // for each raster
+ int16 An;
+ int16 Bn;
+ int16 Cn;
+ int16 Dn;
};
// DSP1 Command 06h
struct DSP1_Project
{
- DSP1_Project( int16 x, int16 y, int16 z );
+ DSP1_Project(int16 x, int16 y, int16 z);
- int16 H;
- int16 V;
- int16 M;
+ int16 H;
+ int16 V;
+ int16 M;
};
// DSP1 Command 0Eh
struct DSP1_Target
{
- DSP1_Target( int16 h, int16 v );
+ DSP1_Target(int16 h, int16 v);
- int16 X;
- int16 Y;
+ int16 X;
+ int16 Y;
};
// DSP1 Command 04h
struct DSP1_Triangle
{
- DSP1_Triangle (int16 Theta, int16 r );
- int16 S;
- int16 C;
+ DSP1_Triangle(int16 Theta, int16 r);
+ int16 S;
+ int16 C;
};
// DSP1 Command 08h
struct DSP1_Radius
{
- DSP1_Radius( int16 x, int16 y, int16 z );
- int16 Ll;
- int16 Lh;
+ DSP1_Radius(int16 x, int16 y, int16 z);
+ int16 Ll;
+ int16 Lh;
};
// DSP1 Command 18h
-int16 DSP1_Range( int16 x, int16 y, int16 z, int16 r );
+int16 DSP1_Range(int16 x, int16 y, int16 z, int16 r);
// DSP1 Command 28h
-int16 DSP1_Distance( int16 x, int16 y, int16 z );
+int16 DSP1_Distance(int16 x, int16 y, int16 z);
// DSP1 Command 0Ch
struct DSP1_Rotate
{
- DSP1_Rotate (int16 A, int16 x1, int16 y1);
+ DSP1_Rotate(int16 A, int16 x1, int16 y1);
- int16 x2;
- int16 y2;
+ int16 x2;
+ int16 y2;
};
// DSP1 Command 1Ch
struct DSP1_Polar
{
- DSP1_Polar( int8 Za, int8 Xa, int8 Ya, int16 x, int16 y, int16 z );
+ DSP1_Polar(int8 Za, int8 Xa, int8 Ya, int16 x, int16 y, int16 z);
- int16 X;
- int16 Y;
- int16 Z;
+ int16 X;
+ int16 Y;
+ int16 Z;
};
// DSP1 Command 01h, 11h and 21h
-void DSP1_Attitude( int16 m, int8 Za, int8 Xa, int8 Ya, AttitudeMatrix Matrix );
+void DSP1_Attitude(int16 m, int8 Za, int8 Xa, int8 Ya, AttitudeMatrix Matrix);
// DSP1 Command 0Dh, 1Dh and 2Dh
struct DSP1_Objective
{
- DSP1_Objective( int16 x, int16 y, int16 z, AttitudeMatrix Matrix );
+ DSP1_Objective(int16 x, int16 y, int16 z, AttitudeMatrix Matrix);
- int16 F;
- int16 L;
- int16 U;
+ int16 F;
+ int16 L;
+ int16 U;
};
// DSP1 Command 03h, 13h and 23h
struct DSP1_Subjective
{
- DSP1_Subjective( int16 F, int16 L, int16 U, AttitudeMatrix Matrix );
+ DSP1_Subjective(int16 F, int16 L, int16 U, AttitudeMatrix Matrix);
- int16 X;
- int16 Y;
- int16 Z;
+ int16 X;
+ int16 Y;
+ int16 Z;
};
// DSP1 Command 0Bh, 1Bh and 2Bh
-int16 DSP1_Scalar( int16 x, int16 y, int16 z, AttitudeMatrix Matrix );
+int16 DSP1_Scalar(int16 x, int16 y, int16 z, AttitudeMatrix Matrix);
// DSP1 Command 14h
struct DSP1_Gyrate
{
- DSP1_Gyrate( int8 Zi, int8 Xi, int8 Yi,
- int8 dU, int8 dF, int8 dL );
+ DSP1_Gyrate(int8 Zi, int8 Xi, int8 Yi,
+ int8 dU, int8 dF, int8 dL);
- int8 Z0;
- int8 X0;
- int8 Y0;
+ int8 Z0;
+ int8 X0;
+ int8 Y0;
};
// DSP1 Command 00h
-int16 DSP1_Multiply( int16 k, int16 I );
+int16 DSP1_Multiply(int16 k, int16 I);
// DSP1 Command 10h
struct DSP1_Inverse
{
- DSP1_Inverse( int16 a, int16 b );
+ DSP1_Inverse(int16 a, int16 b);
- int16 A;
- int16 B;
+ int16 A;
+ int16 B;
};
START_EXTERN_C
-void S9xResetDSP1 ();
-uint8 S9xGetDSP (uint16 Address);
-void S9xSetDSP (uint8 Byte, uint16 Address);
+void S9xResetDSP1();
+uint8 S9xGetDSP(uint16 Address);
+void S9xSetDSP(uint8 Byte, uint16 Address);
END_EXTERN_C
-#ifndef __GP32__
+#ifndef __GP32__
extern struct SDSP1 DSP1;
#else
extern "C" struct SDSP1 DSP1;