aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent/callbacks.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/teenagent/callbacks.cpp')
-rw-r--r--engines/teenagent/callbacks.cpp125
1 files changed, 124 insertions, 1 deletions
diff --git a/engines/teenagent/callbacks.cpp b/engines/teenagent/callbacks.cpp
index 5843a6aba5..4b83448c2c 100644
--- a/engines/teenagent/callbacks.cpp
+++ b/engines/teenagent/callbacks.cpp
@@ -1359,16 +1359,23 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
}
break;
-
case 0x5320:
loadScene(11, Common::Point(30, 124));
scene->setOrientation(2);
break;
+ case 0x533a:
+ displayMessage(dsAddr_noLongHandsMsg); // "I really don't have such long hands"
+ break;
+
case 0x5341:
displayMessage(dsAddr_tooFarToSwimMsg); // "It's too far to swim there"
break;
+ case 0x5403:
+ displayMessage(dsAddr_noBucketMsg); // "It's not a barrel-organ. And there's no bucket."
+ break;
+
case 0x540a:
loadScene(20, Common::Point(10, 185));
scene->setOrientation(2);
@@ -1379,6 +1386,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
scene->setOrientation(2);
break;
+ case 0x543e:
+ loadScene(18, Common::Point(224, 199));
+ scene->setOrientation(4);
+ break;
+
+ case 0x5547:
+ loadScene(15, Common::Point(15, 172));
+ scene->setOrientation(2);
+ break;
+
case 0x55a8:
{
uint16 d = dialog->pop(scene, 0xdb08, 0, 0, 0xd1, 0xd1, 0, 0);
@@ -1411,6 +1428,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_hmmGrassMsg); // "Hmmm. Grass..."
break;
+
+ case 0x5674:
+ loadScene(18, Common::Point(94, 115));
+ scene->setOrientation(3);
+ break;
+
+ case 0x5695:
+ displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it"
+ break;
+
case 0x569c:
playSound(67, 5);
playActorAnimation(983);
@@ -1424,6 +1451,30 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_emptyMsg); // "It's Empty"
break;
+ case 0x56d6:
+ displayMessage(dsAddr_CantJumpMsg); // "No way I can jump so high, cause, err, white men can't jump"
+ break;
+
+ case 0x56dd:
+ displayMessage(dsAddr_dontNeedItMsg); // "I don't need it"
+ break;
+
+ case 0x56e4:
+ displayMessage(dsAddr_notSantaClausMsg); // "I'm not Santa Claus"
+ break;
+
+ case 0x56eb:
+ displayMessage(dsAddr_noPlasticImitationsMsg); // "I don't need plastic imitations"
+ break;
+
+ case 0x56f2:
+ rejectMessage();
+ break;
+
+ case 0x5721:
+ displayMessage(dsAddr_dontNeedItMsg); // "I don't need it"
+ break;
+
case 0x5728:
inventory->add(0x0d);
disableObject(14);
@@ -1432,6 +1483,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playActorAnimation(566);
break;
+ case 0x574f:
+ displayMessage(dsAddr_tooFragileMsg); // "It's too fragile to carry around"
+ break;
+
case 0x5793:
if (!CHECK_FLAG(0xdb94, 1)) {
displayMessage(dsAddr_shutTightMsg); // "It's shut tight"
@@ -1448,6 +1503,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
}
break;
+ case 0x57fa:
+ displayMessage(dsAddr_dontNeedItMsg); // "I don't need it"
+ break;
+
case 0x584d:
displayMessage(dsAddr_pullObjMsg2);
break;
@@ -1471,6 +1530,31 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_notTakingSocksMsg); // "I really don't want to walk around with someone else's socks"
break;
+ case 0x5c72:
+ displayMessage(dsAddr_notTiredMsg); // "Thanks, I'm not tired"
+ break;
+
+ case 0x5c79:
+ displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it"
+ break;
+
+ case 0x5c80:
+ rejectMessage();
+ break;
+
+ case 0x5cdb:
+ case 0x5ce2:
+ displayMessage(dsAddr_dontNeedItMsg); // "I don't need it"
+ break;
+
+ case 0x5ce9:
+ displayMessage(dsAddr_tooBigMsg); // "It's too big and I doubt if I'll ever need it"
+ break;
+
+ case 0x5d1d:
+ displayMessage(dsAddr_CantJumpMsg); // "No way I can jump so high, cause, err, white men can't jump"
+ break;
+
case 0x5d88:
if (CHECK_FLAG(0xdba5, 1)) { // dry laundry
SET_FLAG(0xdba5, 2);
@@ -1500,6 +1584,22 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
}
break;
+ case 0x5fa1:
+ displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it"
+ break;
+
+ case 0x5fa8:
+ displayMessage(dsAddr_CantJumpMsg); // "No way I can jump so high, cause, err, white men can't jump"
+ break;
+
+ case 0x5fe5:
+ displayMessage(dsAddr_jugMeMsg); // "They can jug me if I steal this"
+ break;
+
+ case 0x5fec:
+ displayMessage(dsAddr_leaveFlowersAloneMsg); // "I'd better leave it. Women are really oversensitive about flowers."
+ break;
+
case 0x5ff3: // get duster
if (CHECK_FLAG(0xdb9a, 0)) {
dialog->pop(scene, 0xdaf6, 0, 523, 0xd1, 0xe5, 0, 1);
@@ -1514,6 +1614,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
}
break;
+ case 0x603a:
+ rejectMessage();
+ break;
+
case 0x603e:
if (CHECK_FLAG(0xdbb3, 1)) {
displayMessage(dsAddr_busyThinkingMsg); // "I'd better not interrupt it's thought process"
@@ -1530,6 +1634,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
}
break;
+ case 0x6078:
+ displayMessage(dsAddr_tooBigMsg); // "It's too big and I doubt if I'll ever need it"
+ break;
+
case 0x6205:
if (CHECK_FLAG(dsAddr_lightOnFlag, 1))
displayMessage(dsAddr_tooHeavyMsg); // "It's too heavy. Not that I'm wimp"
@@ -1555,6 +1663,15 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_noHandsSharpThornsMsg); // "I can't remove it with my hands. these thorns look really sharp"
break;
+ case 0x637f:
+ loadScene(21, Common::Point(201, 199));
+ scene->setOrientation(1);
+ break;
+
+ case 0x6399:
+ displayMessage(dsAddr_rockWalkingGeeMsg); // "Yeah, great idea. Let's take this rock and walk around a bit. Gee..."
+ break;
+
case 0x63bc:
playMusic(6);
loadScene(25, 151, 156, 2);
@@ -3007,6 +3124,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->add(0x2e);
break;
+ case 0x85d6:
+ displayMessage(dsAddr_paddleBrokenMsg); // "The paddle is BROKEN"
+ break;
+
case 0x85eb:
if (CHECK_FLAG(0xdbb0, 1)) {
enableObject(6);
@@ -4511,6 +4632,8 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
default:
warning("unknown callback %04x called", addr);
+ // FIXME - unknown non-trivial callback 0x5b44 called! Need to analyse cseg data to work out what this is.
+
// try decoding trivial callbacks by cseg if not in switch
byte *code = res->cseg.ptr(addr);
if (code[0] == 0xbb && code[3] == 0xe8 && code[6] == 0xc3) {