aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sky/logic.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/sky/logic.cpp b/sky/logic.cpp
index a0b4a82843..c27d54309f 100644
--- a/sky/logic.cpp
+++ b/sky/logic.cpp
@@ -1352,8 +1352,10 @@ uint32 SkyLogic::fnWeWait(uint32 a, uint32 b, uint32 c) {
error("Stub: fnWeWait");
}
-uint32 SkyLogic::fnSendSync(uint32 a, uint32 b, uint32 c) {
- error("Stub: fnSendSync");
+uint32 SkyLogic::fnSendSync(uint32 mega, uint32 sync, uint32 c) {
+ Compact *cpt = SkyState::fetchCompact(mega);
+ cpt->sync = (uint16)(sync & 0xffff);
+ return 0;
}
uint32 SkyLogic::fnSendFastSync(uint32 a, uint32 b, uint32 c) {
@@ -1467,8 +1469,14 @@ uint32 SkyLogic::fnSimpleMod(uint32 a, uint32 b, uint32 c) {
error("Stub: fnSimpleMod");
}
-uint32 SkyLogic::fnRunFrames(uint32 a, uint32 b, uint32 c) {
- error("Stub: fnRunFrames");
+uint32 SkyLogic::fnRunFrames(uint32 sequenceNo, uint32 b, uint32 c) {
+ uint16 *sequence = (uint16 *)SkyState::fetchCompact(sequenceNo);
+
+ _compact->logic = L_FRAMES;
+ _compact->offset = *sequence++;
+ _compact->grafixProg = sequence;
+ simpleAnim();
+ return 0;
}
uint32 SkyLogic::fnAwaitSync(uint32 a, uint32 b, uint32 c) {