From 1195076373297f4d60a5705966f483b42cddf9ea Mon Sep 17 00:00:00 2001 From: peter1138 Date: Wed, 21 Sep 2005 19:07:58 +0000 Subject: [PATCH] (svn r2968) -Newgrf: Implement current set of action D (ParamSet) operations. --- newgrf.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/newgrf.c b/newgrf.c index 7956e85494..64235a4eba 100644 --- a/newgrf.c +++ b/newgrf.c @@ -2070,6 +2070,46 @@ static void ParamSet(byte *buf, int len) res = (int32)src1 << src2; break; + case 0x07: /* Bitwise AND */ + res = src1 & src2; + break; + + case 0x08: /* Bitwise OR */ + res = src1 | src2; + break; + + case 0x09: /* Unsigned division */ + if (src2 == 0) { + res = src1; + } else { + res = src1 / src2; + } + break; + + case 0x0A: /* Signed divison */ + if (src2 == 0) { + res = src1; + } else { + res = (int32)src1 / (int32)src2; + } + break; + + case 0x0B: /* Unsigned modulo */ + if (src2 == 0) { + res = src1; + } else { + res = src1 % src2; + } + break; + + case 0x0C: /* Signed modulo */ + if (src2 == 0) { + res = src1; + } else { + res = (int32)src1 % (int32)src2; + } + break; + default: grfmsg(GMS_ERROR, "ParamSet: Unknown operation %d, skipping.", oper); return;