projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20100303-1-src
[rocksndiamonds.git]
/
src
/
game_sp
/
ASM.c
diff --git
a/src/game_sp/ASM.c
b/src/game_sp/ASM.c
index 24d4c2f65d8c64d02a3e81be762ee76edea5b7b8..d31edfaed7f626ce516986d9f13a500b38b1fbc0 100644
(file)
--- a/
src/game_sp/ASM.c
+++ b/
src/game_sp/ASM.c
@@
-4,19
+4,6
@@
#include "ASM.h"
#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)
{
void Mov(int *Var, int Val)
{
@@
-34,6
+21,7
@@
void MovHighByte(int *Var, int Val)
Tmp = Val & 0x7F;
Tmp = 0x100 * Tmp;
Tmp = Val & 0x7F;
Tmp = 0x100 * Tmp;
+
if ((Val & 0x80) != 0)
Tmp = Tmp | 0x8000;
if ((Val & 0x80) != 0)
Tmp = Tmp | 0x8000;
@@
-44,9
+32,7
@@
int LowByte(int Var)
{
int LowByte;
{
int LowByte;
- // Dim Tmp As Byte
LowByte = (Var & 0xFF);
LowByte = (Var & 0xFF);
- // LowByte = ByteToInt(Tmp)
return LowByte;
}
return LowByte;
}
@@
-56,13
+42,9
@@
int HighByte(int Var)
int HighByte;
if (Var & 0x8000)
int HighByte;
if (Var & 0x8000)
- {
HighByte = ((Var & 0x7FFF) / 0x100) | 0x80;
HighByte = ((Var & 0x7FFF) / 0x100) | 0x80;
- }
else
else
- {
HighByte = Var / 0x100;
HighByte = Var / 0x100;
- }
return HighByte;
}
return HighByte;
}
@@
-76,116
+58,57
@@
int SgnHighByte(int Var) // extends the signum to 16 bit
#endif
if (Var & 0x8000)
#endif
if (Var & 0x8000)
- {
SgnHighByte = ((Var & 0x7FFF) / 0x100) | 0xFF80;
SgnHighByte = ((Var & 0x7FFF) / 0x100) | 0xFF80;
- }
else
else
- {
SgnHighByte = Var / 0x100;
SgnHighByte = Var / 0x100;
- }
return SgnHighByte;
}
return SgnHighByte;
}
-boolean Less()
-{
- boolean Less;
-
- Less = (cmpFlag < 0);
-
- return Less;
-}
-
-boolean GreaterOrEqual()
+int SHL(int *Var, int Count)
{
{
- boolean GreaterOrEqual;
-
- GreaterOrEqual = (0 <= cmpFlag);
-
- return GreaterOrEqual;
-}
-
-boolean Equal()
-{
- 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)
+int SHR(int
*
Var, int Count)
{
int SHR;
int i;
{
int SHR;
int i;
- if (Var & 0x8000)
- {
- Var = ((Var & 0x7FFF) / 2) | 0x4000;
- }
+ if (*Var & 0x8000)
+ *Var = ((*Var & 0x7FFF) / 2) | 0x4000;
else
else
- {
- Var = Var / 2;
- }
+ *Var = *Var / 2;
for (i = 2; i <= Count; i++)
for (i = 2; i <= Count; i++)
- {
- Var = Var / 2;
- }
+ *Var = *Var / 2;
return SHR;
}
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)
int ByteToInt(byte B)
{
int ByteToInt;
if ((B & 0x80) == 0x80)
- {
ByteToInt = -(0xFF - B + 1);
ByteToInt = -(0xFF - B + 1);
- }
else
else
- {
ByteToInt = B;
ByteToInt = B;
- }
return ByteToInt;
}
return ByteToInt;
}
@@
-194,17
+117,7
@@
byte IntToByte(int i)
{
byte IntToByte;
{
byte IntToByte;
- // IntToByte = CByte(i & 0xFF);
IntToByte = (byte)(i & 0xFF);
return IntToByte;
}
IntToByte = (byte)(i & 0xFF);
return IntToByte;
}
-
-void XCHG(int A, int B)
-{
- int Tmp;
-
- Tmp = B;
- B = A;
- A = Tmp;
-}