summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-09-16 11:02:09 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-09-16 11:02:09 (GMT)
commit95bbd04d212a35d19af4f13375914971aeed758e (patch)
tree533be8ff914afb13f0a97303f9c76bc0ed3277e5
parent42ec654f3e38e8c037a948665d96789334f5b3d1 (diff)
parentec0dfa27e888461ec85012fa23d5a26e30f0e813 (diff)
downloadpowder-95bbd04d212a35d19af4f13375914971aeed758e.zip
powder-95bbd04d212a35d19af4f13375914971aeed758e.tar.gz
Merge branch 'master' of github.com:FacialTurd/PowderToypp
-rw-r--r--src/virtualmachine/Operations.cpp2
-rw-r--r--src/virtualmachine/Syscalls.cpp17
-rw-r--r--src/virtualmachine/Syscalls.inl23
-rw-r--r--src/virtualmachine/VirtualMachine.h2
-rw-r--r--tptlibrary/file.c10
-rw-r--r--tptlibrary/tpt_syscalls.asm23
-rw-r--r--tptlibrary/tpt_syscalls.h3
7 files changed, 56 insertions, 24 deletions
diff --git a/src/virtualmachine/Operations.cpp b/src/virtualmachine/Operations.cpp
index dcd2cb2..0c998a8 100644
--- a/src/virtualmachine/Operations.cpp
+++ b/src/virtualmachine/Operations.cpp
@@ -353,4 +353,4 @@ namespace vm
Push<int4_t>(Pop<float4_t>());
return 0;
}
-} \ No newline at end of file
+}
diff --git a/src/virtualmachine/Syscalls.cpp b/src/virtualmachine/Syscalls.cpp
index bc88fb2..876fe52 100644
--- a/src/virtualmachine/Syscalls.cpp
+++ b/src/virtualmachine/Syscalls.cpp
@@ -68,4 +68,19 @@ namespace vm
{
sim->part_change_type(ARG(0).int4, ARG(1).int4, ARG(2).int4, ARG(3).int4);
}
-} \ No newline at end of file
+
+ TRAPDEF(pmapData)
+ {
+ Push<int4_t>(sim->pmap[ARG(1).int4][ARG(0).int4]);
+ }
+
+ TRAPDEF(deletePart)
+ {
+ sim->delete_part(ARG(0).int4, ARG(1).int4, ARG(2).int4);
+ }
+
+ TRAPDEF(killPart)
+ {
+ sim->kill_part(ARG(0).int4);
+ }
+}
diff --git a/src/virtualmachine/Syscalls.inl b/src/virtualmachine/Syscalls.inl
index 6338d11..75455c1 100644
--- a/src/virtualmachine/Syscalls.inl
+++ b/src/virtualmachine/Syscalls.inl
@@ -1,11 +1,14 @@
-TRAPDEF(-104, sin)
-TRAPDEF(-105, cos)
-TRAPDEF(-106, atan2)
-TRAPDEF(-107, sqrt)
-TRAPDEF(-108, floor)
-TRAPDEF(-109, ceil)
+TRAPDEF(-1, sin)
+TRAPDEF(-2, cos)
+TRAPDEF(-3, atan2)
+TRAPDEF(-4, sqrt)
+TRAPDEF(-5, floor)
+TRAPDEF(-6, ceil)
-TRAPDEF(-110, error)
-TRAPDEF(-111, print)
-TRAPDEF(-112, partCreate)
-TRAPDEF(-113, partChangeType) \ No newline at end of file
+TRAPDEF(-7, error)
+TRAPDEF(-8, print)
+TRAPDEF(-9, partCreate)
+TRAPDEF(-10, partChangeType)
+TRAPDEF(-11, pmapData)
+TRAPDEF(-12, deletePart)
+TRAPDEF(-13, killPart)
diff --git a/src/virtualmachine/VirtualMachine.h b/src/virtualmachine/VirtualMachine.h
index 04dd400..b295d02 100644
--- a/src/virtualmachine/VirtualMachine.h
+++ b/src/virtualmachine/VirtualMachine.h
@@ -279,4 +279,4 @@ public:
};
};
-} \ No newline at end of file
+}
diff --git a/tptlibrary/file.c b/tptlibrary/file.c
index b3ad278..67f2ca1 100644
--- a/tptlibrary/file.c
+++ b/tptlibrary/file.c
@@ -2,6 +2,14 @@
int update_TEST(int i, int x, int y, int nt, int ss)
{
- partCreate(-1, x, y-1, 2);
+ int k, j, index;
+
+ for(k=-1; k<2; k++)
+ for(j=-1; j<2; j++)
+ {
+ index = pmapData(x+k, y+j);
+ if ((index&0xFF) == 2)
+ killPart(index>>8);
+ }
return 0;
}
diff --git a/tptlibrary/tpt_syscalls.asm b/tptlibrary/tpt_syscalls.asm
index 39d1f17..fd86585 100644
--- a/tptlibrary/tpt_syscalls.asm
+++ b/tptlibrary/tpt_syscalls.asm
@@ -1,13 +1,16 @@
code
-equ sin -104
-equ cos -105
-equ atan2 -106
-equ sqrt -107
-equ floor -108
-equ ceil -109
+equ sin -1
+equ cos -2
+equ atan2 -3
+equ sqrt -4
+equ floor -5
+equ ceil -6
-equ error -110
-equ print -111
-equ partCreate -112
-equ partChangeType -113 \ No newline at end of file
+equ error -7
+equ print -8
+equ partCreate -9
+equ partChangeType -10
+equ pmapData -11
+equ deletePart -12
+equ killPart -13
diff --git a/tptlibrary/tpt_syscalls.h b/tptlibrary/tpt_syscalls.h
index 6112306..f72aeb5 100644
--- a/tptlibrary/tpt_syscalls.h
+++ b/tptlibrary/tpt_syscalls.h
@@ -13,5 +13,8 @@ void error(char * message);
int partCreate(int i, int x, int y, int type);
void partChangeType(int i, int x, int y, int type);
+int pmapData(int x, int y);
+void deletePart(int x, int y, int flags);
+void killPart(int i);
#endif