aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kmath.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/engine/kmath.cpp')
-rw-r--r--engines/sci/engine/kmath.cpp66
1 files changed, 27 insertions, 39 deletions
diff --git a/engines/sci/engine/kmath.cpp b/engines/sci/engine/kmath.cpp
index 6925970d8a..ae8cc038dd 100644
--- a/engines/sci/engine/kmath.cpp
+++ b/engines/sci/engine/kmath.cpp
@@ -29,16 +29,14 @@
reg_t
-kRandom(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
- return make_reg(0,
- SKPV(0) + (int) ((SKPV(1) + 1.0 - SKPV(0)) * (rand() / (RAND_MAX + 1.0))));
+kRandom(state_t *s, int funct_nr, int argc, reg_t *argv) {
+ return make_reg(0,
+ SKPV(0) + (int)((SKPV(1) + 1.0 - SKPV(0)) * (rand() / (RAND_MAX + 1.0))));
}
reg_t
-kAbs(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kAbs(state_t *s, int funct_nr, int argc, reg_t *argv) {
/* This is a hack, but so is the code in Hoyle1 that needs it. */
if (argv[0].segment)
return make_reg(0, 0x3e8); /* Yes people, this is an object */
@@ -47,19 +45,17 @@ kAbs(state_t *s, int funct_nr, int argc, reg_t *argv)
reg_t
-kSqrt(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kSqrt(state_t *s, int funct_nr, int argc, reg_t *argv) {
return make_reg(0, (gint16) sqrt((float) abs(SKPV(0))));
}
int
-get_angle(int xrel, int yrel)
-{
+get_angle(int xrel, int yrel) {
if ((xrel == 0) && (yrel == 0))
return 0;
else {
- int val = (int) (180.0/PI * atan2((double)xrel, (double)-yrel));
+ int val = (int)(180.0 / PI * atan2((double)xrel, (double) - yrel));
if (val < 0)
val += 360;
@@ -67,7 +63,7 @@ get_angle(int xrel, int yrel)
FSCI. SCI games sometimes check for equality with
"round" angles */
if (val % 45 == 44)
- val++;
+ val++;
else if (val % 45 == 1)
val--;
@@ -76,8 +72,7 @@ get_angle(int xrel, int yrel)
}
reg_t
-kGetAngle(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kGetAngle(state_t *s, int funct_nr, int argc, reg_t *argv) {
/* Based on behavior observed with a test program created with
** SCI Studio.
*/
@@ -89,7 +84,7 @@ kGetAngle(state_t *s, int funct_nr, int argc, reg_t *argv)
int yrel = y1 - y2; /* y-axis is mirrored. */
int angle;
- /* Move (xrel, yrel) to first quadrant. */
+ /* Move (xrel, yrel) to first quadrant. */
if (y1 < y2)
yrel = -yrel;
if (x2 < x1)
@@ -118,64 +113,58 @@ kGetAngle(state_t *s, int funct_nr, int argc, reg_t *argv)
reg_t
-kGetDistance(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
- int xrel = (int) (((float) SKPV(1) - SKPV_OR_ALT(3, 0))/cos(SKPV_OR_ALT(5, 0)* PI / 180.0)); /* This works because cos(0)==1 */
- int yrel = SKPV(0) - SKPV_OR_ALT(2, 0);
+kGetDistance(state_t *s, int funct_nr, int argc, reg_t *argv) {
+ int xrel = (int)(((float) SKPV(1) - SKPV_OR_ALT(3, 0)) / cos(SKPV_OR_ALT(5, 0) * PI / 180.0)); /* This works because cos(0)==1 */
+ int yrel = SKPV(0) - SKPV_OR_ALT(2, 0);
return make_reg(0, (gint16)sqrt((float) xrel*xrel + yrel*yrel));
}
reg_t
-kTimesSin(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kTimesSin(state_t *s, int funct_nr, int argc, reg_t *argv) {
int angle = SKPV(0);
int factor = SKPV(1);
- return make_reg(0, (int) (factor * 1.0 * sin(angle * PI / 180.0)));
+ return make_reg(0, (int)(factor * 1.0 * sin(angle * PI / 180.0)));
}
reg_t
-kTimesCos(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kTimesCos(state_t *s, int funct_nr, int argc, reg_t *argv) {
int angle = SKPV(0);
int factor = SKPV(1);
- return make_reg(0, (int) (factor * 1.0 * cos(angle * PI / 180.0)));
+ return make_reg(0, (int)(factor * 1.0 * cos(angle * PI / 180.0)));
}
reg_t
-kCosDiv(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kCosDiv(state_t *s, int funct_nr, int argc, reg_t *argv) {
int angle = SKPV(0);
int value = SKPV(1);
double cosval = cos(angle * PI / 180.0);
if ((cosval < 0.0001) && (cosval > 0.0001)) {
- SCIkwarn(SCIkWARNING,"Attepted division by zero\n");
+ SCIkwarn(SCIkWARNING, "Attepted division by zero\n");
return make_reg(0, (gint16)0x8000);
} else
- return make_reg(0, (gint16) (value/cosval));
+ return make_reg(0, (gint16)(value / cosval));
}
reg_t
-kSinDiv(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kSinDiv(state_t *s, int funct_nr, int argc, reg_t *argv) {
int angle = SKPV(0);
int value = SKPV(1);
double sinval = sin(angle * PI / 180.0);
if ((sinval < 0.0001) && (sinval > 0.0001)) {
- SCIkwarn(SCIkWARNING,"Attepted division by zero\n");
+ SCIkwarn(SCIkWARNING, "Attepted division by zero\n");
return make_reg(0, (gint16)0x8000);
} else
- return make_reg(0, (gint16) (value/sinval));
+ return make_reg(0, (gint16)(value / sinval));
}
reg_t
-kTimesTan(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kTimesTan(state_t *s, int funct_nr, int argc, reg_t *argv) {
int param = SKPV(0);
int scale = SKPV_OR_ALT(1, 1);
@@ -184,12 +173,11 @@ kTimesTan(state_t *s, int funct_nr, int argc, reg_t *argv)
SCIkwarn(SCIkWARNING, "Attempted tan(pi/2)");
return make_reg(0, (gint16)0x8000);
} else
- return make_reg(0, (gint16) -(tan(param * PI / 180.0) * scale));
+ return make_reg(0, (gint16) - (tan(param * PI / 180.0) * scale));
}
reg_t
-kTimesCot(state_t *s, int funct_nr, int argc, reg_t *argv)
-{
+kTimesCot(state_t *s, int funct_nr, int argc, reg_t *argv) {
int param = SKPV(0);
int scale = SKPV_OR_ALT(1, 1);
@@ -197,5 +185,5 @@ kTimesCot(state_t *s, int funct_nr, int argc, reg_t *argv)
SCIkwarn(SCIkWARNING, "Attempted tan(pi/2)");
return make_reg(0, (gint16)0x8000);
} else
- return make_reg(0, (gint16) (tan(param * PI / 180.0) * scale));
+ return make_reg(0, (gint16)(tan(param * PI / 180.0) * scale));
}