X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame_sp%2FASM.c;h=ae2de3ee77544498b0d27e62d0c94a4cc50aaba7;hp=d31edfaed7f626ce516986d9f13a500b38b1fbc0;hb=d45b35552f4ca1ada1266fb7e8b6968d878019a6;hpb=949580a3bafe5c8abd1fac99202411b65900b883 diff --git a/src/game_sp/ASM.c b/src/game_sp/ASM.c index d31edfae..ae2de3ee 100644 --- a/src/game_sp/ASM.c +++ b/src/game_sp/ASM.c @@ -5,119 +5,32 @@ #include "ASM.h" -void Mov(int *Var, int Val) +void MovLowByte(int *p, int i) { - *Var = Val; + *p = (*p & 0xff00) | (i & 0xff); } -void MovLowByte(int *Var, int Val) +void MovHighByte(int *p, int i) { - *Var = (*Var & 0xFF00) | (Val & 0xFF); + *p = (*p & 0xff) | ((i << 8) & 0xff00); } -void MovHighByte(int *Var, int Val) +int LowByte(int i) { - int Tmp; - - Tmp = Val & 0x7F; - Tmp = 0x100 * Tmp; - - if ((Val & 0x80) != 0) - Tmp = Tmp | 0x8000; - - *Var = (*Var & 0xFF) | Tmp; + return (i & 0xff); } -int LowByte(int Var) +int HighByte(int i) { - int LowByte; - - LowByte = (Var & 0xFF); - - return LowByte; + return ((i >> 8) & 0xff); } -int HighByte(int Var) +int SgnHighByte(int i) { - int HighByte; - - if (Var & 0x8000) - HighByte = ((Var & 0x7FFF) / 0x100) | 0x80; - else - HighByte = Var / 0x100; - - return HighByte; + return (signed char)HighByte(i); } -int SgnHighByte(int Var) // extends the signum to 16 bit +int ByteToInt(byte b) { -#if 1 - short SgnHighByte; -#else - int SgnHighByte; -#endif - - if (Var & 0x8000) - SgnHighByte = ((Var & 0x7FFF) / 0x100) | 0xFF80; - else - SgnHighByte = Var / 0x100; - - return SgnHighByte; -} - -int SHL(int *Var, int Count) -{ - int SHL; - - int i; - - for (i = 1; i <= Count; i++) - { - *Var = *Var & 0x7FFF; - - if ((*Var & 0x4000) != 0) - *Var = (2 * (*Var & 0x3FFF)) | 0x8000; - else - *Var = 2 * *Var; - } - - return SHL; -} - -int SHR(int *Var, int Count) -{ - int SHR; - - int i; - - if (*Var & 0x8000) - *Var = ((*Var & 0x7FFF) / 2) | 0x4000; - else - *Var = *Var / 2; - - for (i = 2; i <= Count; i++) - *Var = *Var / 2; - - return SHR; -} - -int ByteToInt(byte B) -{ - int ByteToInt; - - if ((B & 0x80) == 0x80) - ByteToInt = -(0xFF - B + 1); - else - ByteToInt = B; - - return ByteToInt; -} - -byte IntToByte(int i) -{ - byte IntToByte; - - IntToByte = (byte)(i & 0xFF); - - return IntToByte; + return (signed char)b; }