+++ /dev/null
-#ifndef FIXEDPOINT_HPP\r
- #define FIXEDPOINT_HPP\r
-\r
-typedef long Fixed32; // 16.16 FixedPoint\r
-typedef unsigned char Iangle; // Integer angle (0..255)\r
-\r
-/* Macros for Type Conversion */\r
-#define INT_TO_FIXED(x) ((x) << 16)\r
-#define FIXED_TO_INT(x) ((x) >> 16)\r
-#define ROUND_FIXED_TO_INT(x) (((x) + 0x8000) >> 16)\r
-\r
-// Loads Fixed32 datafiles\r
-void initFixed32(void);\r
-\r
-// Common math functions\r
-Fixed32 FixedMul(Fixed32 num1, Fixed32 num2);\r
-Fixed32 FixedDiv(Fixed32 numer, Fixed32 denom);\r
-void CosSin(Iangle theta, Fixed32 *Cos, Fixed32 *Sin);\r
-\r
-Fixed32 FixedMulASM(Fixed32 num1, Fixed32 num2);\r
-#pragma aux FixedMulASM = \\r
- "imul edx" \\r
- "add eax, 8000h" \\r
- "adc edx, 0" \\r
- "shrd eax, edx, 16" \\r
- parm caller [eax] [edx] \\r
- value [eax] \\r
- modify [eax edx];\r
-\r
-Fixed32 FixedDivASM(Fixed32 numer, Fixed32 denom); // No rounding!\r
-#pragma aux FixedDivASM = \\r
- "xor eax, eax" \\r
- "shrd eax, edx, 16" \\r
- "sar edx, 16" \\r
- "idiv ebx" \\r
- parm caller [edx] [ebx] \\r
- value [eax] \\r
- modify [eax ebx edx];\r
-\r
-#endif\r
-\r