diff options
| author | Simon 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) |
| commit | 95bbd04d212a35d19af4f13375914971aeed758e (patch) | |
| tree | 533be8ff914afb13f0a97303f9c76bc0ed3277e5 | |
| parent | 42ec654f3e38e8c037a948665d96789334f5b3d1 (diff) | |
| parent | ec0dfa27e888461ec85012fa23d5a26e30f0e813 (diff) | |
| download | powder-95bbd04d212a35d19af4f13375914971aeed758e.zip powder-95bbd04d212a35d19af4f13375914971aeed758e.tar.gz | |
Merge branch 'master' of github.com:FacialTurd/PowderToypp
| -rw-r--r-- | src/virtualmachine/Operations.cpp | 2 | ||||
| -rw-r--r-- | src/virtualmachine/Syscalls.cpp | 17 | ||||
| -rw-r--r-- | src/virtualmachine/Syscalls.inl | 23 | ||||
| -rw-r--r-- | src/virtualmachine/VirtualMachine.h | 2 | ||||
| -rw-r--r-- | tptlibrary/file.c | 10 | ||||
| -rw-r--r-- | tptlibrary/tpt_syscalls.asm | 23 | ||||
| -rw-r--r-- | tptlibrary/tpt_syscalls.h | 3 |
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 |
