X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FASM.c;h=d31edfaed7f626ce516986d9f13a500b38b1fbc0;hb=9401cea7061b513534a3244edd8944e852a28c7b;hp=9cad09d548a65f105ce0c765b3d27142486c994c;hpb=148d0ad7e7ac1a97eb50de7ecbb642f36c877311;p=rocksndiamonds.git diff --git a/src/game_sp/ASM.c b/src/game_sp/ASM.c index 9cad09d5..d31edfae 100644 --- a/src/game_sp/ASM.c +++ b/src/game_sp/ASM.c @@ -4,19 +4,6 @@ #include "ASM.h" -// static char *VB_Name = "modASM"; - -// --- Option Explicit - -// PseudoRegisters: -// Public ax%, bx% -// --- const int ByteMask = 0xFF; -int cmpFlag; - -void Neg(int *Val) -{ - *Val = -*Val; -} void Mov(int *Var, int Val) { @@ -34,6 +21,7 @@ void MovHighByte(int *Var, int Val) Tmp = Val & 0x7F; Tmp = 0x100 * Tmp; + if ((Val & 0x80) != 0) Tmp = Tmp | 0x8000; @@ -44,9 +32,7 @@ int LowByte(int Var) { int LowByte; - // Dim Tmp As Byte LowByte = (Var & 0xFF); - // LowByte = ByteToInt(Tmp) return LowByte; } @@ -56,13 +42,9 @@ int HighByte(int Var) int HighByte; if (Var & 0x8000) - { HighByte = ((Var & 0x7FFF) / 0x100) | 0x80; - } else - { HighByte = Var / 0x100; - } return HighByte; } @@ -76,57 +58,30 @@ int SgnHighByte(int Var) // extends the signum to 16 bit #endif if (Var & 0x8000) - { SgnHighByte = ((Var & 0x7FFF) / 0x100) | 0xFF80; - } else - { SgnHighByte = Var / 0x100; - } return SgnHighByte; } -boolean Less() -{ - boolean Less; - - Less = (cmpFlag < 0); - - return Less; -} - -boolean GreaterOrEqual() -{ - boolean GreaterOrEqual; - - GreaterOrEqual = (0 <= cmpFlag); - - return GreaterOrEqual; -} - -boolean Equal() +int SHL(int *Var, int Count) { - boolean Equal; - - Equal = (0 == cmpFlag); + int SHL; - return Equal; -} + int i; -void CMP(int A, int B) -{ - cmpFlag = A - B; -} + for (i = 1; i <= Count; i++) + { + *Var = *Var & 0x7FFF; -void Add(int *A, int B) -{ - *A = *A + B; -} + if ((*Var & 0x4000) != 0) + *Var = (2 * (*Var & 0x3FFF)) | 0x8000; + else + *Var = 2 * *Var; + } -void MySub(int *A, int B) -{ - *A = *A - B; + return SHL; } int SHR(int *Var, int Count) @@ -136,56 +91,24 @@ int SHR(int *Var, int Count) 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 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 ByteToInt(byte B) { int ByteToInt; if ((B & 0x80) == 0x80) - { ByteToInt = -(0xFF - B + 1); - } else - { ByteToInt = B; - } return ByteToInt; } @@ -194,17 +117,7 @@ byte IntToByte(int i) { byte IntToByte; - // IntToByte = CByte(i & 0xFF); IntToByte = (byte)(i & 0xFF); return IntToByte; } - -void XCHG(int A, int B) -{ - int Tmp; - - Tmp = B; - B = A; - A = Tmp; -}