Skip to content

Commit

Permalink
TEENAGENT: Add symbols for remaining missing message strings.
Browse files Browse the repository at this point in the history
By doing this, have tracked down most of the remaining missing trivial
callbacks using these strings. Some strings are either unused or are
used in odd places, marked these with FIXME.

Also discovered another unimplemented non-trivial callback.
  • Loading branch information
digitall committed Jul 31, 2012
1 parent 8c37d72 commit b01fdfe
Show file tree
Hide file tree
Showing 3 changed files with 158 additions and 13 deletions.
94 changes: 93 additions & 1 deletion engines/teenagent/callbacks.cpp
Expand Up @@ -1273,6 +1273,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_wallTooSmoothMsg); // "The wall surface is too smooth to climb"
break;

case 0x5066:
loadScene(11, Common::Point(183, 109));
scene->setOrientation(3);
break;

case 0x5080:
loadScene(13, Common::Point(290, 181));
scene->setOrientation(4);
Expand Down Expand Up @@ -1432,12 +1437,15 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_hmmGrassMsg); // "Hmmm. Grass..."
break;


case 0x5674:
loadScene(18, Common::Point(94, 115));
scene->setOrientation(3);
break;

case 0x568e:
displayMessage(dsAddr_notHornyMsg); // "I'm not horny"
break;

case 0x5695:
displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it"
break;
Expand Down Expand Up @@ -1515,6 +1523,15 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_dontNeedItMsg); // "I don't need it"
break;

case 0x5801:
rejectMessage();
break;

case 0x583f:
case 0x5846:
displayMessage(dsAddr_dontNeedToOpenMsg);
break;

case 0x584d:
displayMessage(dsAddr_pullObjMsg2);
break;
Expand All @@ -1534,6 +1551,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
scene->setOrientation(2);
break;

case 0x5903:
displayMessage(dsAddr_keepItOpenMsg); // "I'd like to keep it open"
break;

case 0x590a:
loadScene(20, Common::Point(304, 190));
scene->setOrientation(4);
Expand All @@ -1548,6 +1569,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_notTakingSocksMsg); // "I really don't want to walk around with someone else's socks"
break;

case 0x597f:
case 0x5986:
case 0x598d:
displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it"
break;

case 0x5c72:
displayMessage(dsAddr_notTiredMsg); // "Thanks, I'm not tired"
break;
Expand Down Expand Up @@ -1698,6 +1725,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_rockWalkingGeeMsg); // "Yeah, great idea. Let's take this rock and walk around a bit. Gee..."
break;

case 0x63a0:
case 0x63a7:
displayMessage(dsAddr_butterflyMsg); // "I'd better leave them alone, they make this place beautiful"
break;

case 0x63ae:
displayMessage(dsAddr_notSureIfAliveMsg); // "I'm not sure if it's alive"
break;
Expand Down Expand Up @@ -1736,6 +1768,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
scene->setOrientation(3);
break;

case 0x6635:
displayMessage(dsAddr_uninterestingHaystackMsg); // "I don't see anything interesting about this haystack"
break;

case 0x666a:
displayMessage(dsAddr_moreComplicatedMsg); // "It's more complicated than that"
break;

case 0x65c3:
if (CHECK_FLAG(dsAddr_mouseHoleState, 1)) {
playActorAnimation(635);
Expand Down Expand Up @@ -1876,10 +1916,18 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_notMineMsg); // "I can't take it. It's not mine."
break;

case 0x7851:
displayMessage(dsAddr_lockedMsg); // "It's Locked!"
break;

case 0x7858:
displayMessage(dsAddr_lockedMsg); // "It's Locked!"
break;

case 0x785f:
displayMessage(dsAddr_pullObjMsg2); // "I can't reach it"
break;

case 0x7866:
if (CHECK_FLAG(0xdbdd, 3))
displayMessage(dsAddr_gotchaMsg); // "Gotcha"
Expand Down Expand Up @@ -1988,6 +2036,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_fenceBlocksMsg); // "The fence blocks the way"
break;

case 0x7bf6:
displayMessage(dsAddr_noDiggingKnifeMsg); // "Digging it out with the knife could take a hundred years"
break;

case 0x7bfd:
playSound(76, 18);
playSound(76, 22);
Expand Down Expand Up @@ -2022,6 +2074,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
break;

case 0x7cc9:
case 0x7cd0:
displayMessage(dsAddr_throwCrumbsToBirdQMsg); // "Should I throw the crumbs to the bird?"
break;

Expand Down Expand Up @@ -2174,6 +2227,26 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(dsAddr_trySomewhereElseMsg); // "I'd better try somewhere else - I suppose this side is heavily guarded"
break;

case 0x85dd:
displayMessage(dsAddr_branchNotPaddleMsg); // "This branch is not a paddle. It doesn't even look like one"
break;

case 0x85e4:
displayMessage(dsAddr_sharpenNotPulverizeMsg); // "I needed to sharpen it, not pulverize"
break;

case 0x8d42:
displayMessage(dsAddr_bluntSickleMsg); // "The sickle is too blunt"
break;

case 0x8d49:
displayMessage(dsAddr_noChainsawFuelMsg); // "There's no fuel in the chainsaw"
break;

case 0x8d50:
displayMessage(dsAddr_thornsTooThinMsg); // "Thorns are too thin, the chainsaw is useless here"
break;

// Shore

case 0x5348:
Expand Down Expand Up @@ -4133,6 +4206,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(8);
break;

case 0x7218:
rejectMessage();
break;

case 0x7291:
playSound(89, 3);
playActorAnimation(975);
Expand Down Expand Up @@ -4346,6 +4423,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
}
break;

case 0x9247:
displayMessage(dsAddr_sameBottleMsg); // "The bottle's the same, but I doubt if it's enough to fool anyone"
break;

case 0x924e:
setOns(2, 64);
playSound(5, 3);
Expand Down Expand Up @@ -4536,6 +4617,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
SET_FLAG(0xdbc8, 1);
break;

case 0x966c:
displayMessage(dsAddr_cantRecordNoBatteriesMsg); // "I can't record anything until I find some batteries"
break;

case 0x9673: // hit fatso - final scene
playSound(5, 3);
playSound(24, 10);
Expand Down Expand Up @@ -4616,6 +4701,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
break;

case 0x9921: // using diving eq
// FIXME - Some code is missing here as displayMessage(dsAddr_cantTalkUnderwaterMsg),
// displayMessage(dsAddr_notSwimmingThereMsg), displayMessage(dsAddr_tooLittleAirMsg)
// displayMessage(dsAddr_fishDontWorryMsg) are never called.
{
int id = scene->getId();
if (id != 15) {
Expand Down Expand Up @@ -4800,6 +4888,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
// This is the doorbell use callback on House #2 i.e.
// Granny and Anne's House. Need to analyse cseg data.

// FIXME - unknown non-trivial callback 0x4056 called!
// This is the bird use callback in the first act at
// the mudpool. Need to analyse cseg data.

// 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) {
Expand Down
2 changes: 1 addition & 1 deletion engines/teenagent/objects.cpp
Expand Up @@ -117,7 +117,7 @@ Common::String Object::parse_description(const char *name) {
if (!result.empty())
result.deleteLastChar();
else
result = "Cool.";
result = "Cool."; // FIXME - Use dsAddr_coolMsg ?
return result;
}

Expand Down
75 changes: 64 additions & 11 deletions engines/teenagent/resources.h
Expand Up @@ -117,7 +117,8 @@ const uint16 dsAddr_rejectMsg1 = 0x33ca; // "I can't imagine what I could do wit
const uint16 dsAddr_rejectMsg2 = 0x33f6; // "I can't figure out what I should do with this"
// Reject Message #3 : 0x3426 to 0x344f
const uint16 dsAddr_rejectMsg3 = 0x3426; // "I can't find any reason to mess with it"

// Cool Message : 0x3450 to 0x3456
const uint16 dsAddr_coolMsg = 0x3450; // "Cool."
// Object Usage Error Message : 0x3457 to 0x3467
const uint16 dsAddr_objErrorMsg = 0x3457; // "That's no good"
// Car Jack Message : 0x3468 to 0x348f
Expand Down Expand Up @@ -180,7 +181,12 @@ const uint16 dsAddr_needSunglassesMsg = 0x387c; // "Sorry buddy, but I need your
const uint16 dsAddr_notBestPlaceMsg = 0x38a7; // "It's not the best place for diving"
// Not Here Message : 0x38ce to 0x38da
const uint16 dsAddr_notHereMsg = 0x38ce; // "Not here"

// Can't Talk Underwater Message : 0x38db to 0x38fe
const uint16 dsAddr_cantTalkUnderwaterMsg = 0x38db; // "I really can't talk underwater!"
// Not Swimming There Message : 0x38ff to 0x3931
const uint16 dsAddr_notSwimmingThereMsg = 0x38ff; // "I don't think swimming there is worth the effort"
// Too Little Air Message : 0x3932 to 0x3988
const uint16 dsAddr_tooLittleAirMsg = 0x3932; // "If I want to get this anchor I have to swim there when I have more air in my lungs"
// Hooked Anchor Message : 0x3989 to 0x39ad
const uint16 dsAddr_hookedAnchorMsg = 0x3989; // "I was really hooked on this anchor!"
// Seaweed Message : 0x39ae to 0x39f5
Expand All @@ -189,7 +195,8 @@ const uint16 dsAddr_seaweedMsg = 0x39ae; // "This seaweed is just like the flowe
const uint16 dsAddr_fishBoatMsg = 0x39f6; // "I wonder what fish do inside this boat at night"
// Fish Something Message : 0x3a28 to 0x3a59
const uint16 dsAddr_fishSomethingMsg = 0x3a28; // "I think I have to fish out something down there"

// Fish Don't Worry Message : 0x3a5a to 0x3a84
const uint16 dsAddr_fishDontWorryMsg = 0x3a5a; // "At least fish don't worry about the rain"
// Not Red Herring Message : 0x3a85 to 0x3ab6
const uint16 dsAddr_notRedHerringMsg = 0x3a85; // "I hope all this fish stuff is not a red herring"
// Nice Down Message : 0x3ab7 to 0x3acd
Expand Down Expand Up @@ -312,7 +319,8 @@ const uint16 dsAddr_dontNeedToOpenMsg = 0x4164; // "I don't need to open it"
const uint16 dsAddr_hmmGrassMsg = 0x417e; // "Hmmm. Grass..."
// Find Nut Message : 0x41b1 to 0x41ee
const uint16 dsAddr_findNutMsg = 0x41b1; // "I won't find the nut just like that. The grass is too dense"

// Not Horny Message : 0x41ef to 0x41fe
const uint16 dsAddr_notHornyMsg = 0x41ef; // "I'm not horny"
// Can't Jump So High Message : 0x41ff to 0x423e
const uint16 dsAddr_CantJumpMsg = 0x41ff; // "No way I can jump so high, cause, err, white men can't jump"
// Don't Need It Message : 0x423f to 0x4250
Expand All @@ -323,7 +331,8 @@ const uint16 dsAddr_notSantaClausMsg = 0x4251; // "I'm not Santa Claus"
const uint16 dsAddr_noPlasticImitationsMsg = 0x4267; // "I don't need plastic imitations"
// Too Fragile Message : 0x4289 to 0x42ab
const uint16 dsAddr_tooFragileMsg = 0x4289; // "It's too fragile to carry around"

// Keep It Open Message : 0x42ac to 0x42c6
const uint16 dsAddr_keepItOpenMsg = 0x42ac; // "I'd like to keep it open"
// Not Taking Socks Message : 0x42c7 to 0x4305
const uint16 dsAddr_notTakingSocksMsg = 0x42c7; // "I really don't want to walk around with someone else's socks"
// Not Tired Message : 0x4306 to 0x431d
Expand Down Expand Up @@ -380,27 +389,45 @@ const uint16 dsAddr_yawnMsg = 0x464a; // "(yawn)"
const uint16 dsAddr_laughterMsg = 0x4652; // "(laughter)"
// No Hands Sharp Thorns Message : 0x465e to 0x46a0
const uint16 dsAddr_noHandsSharpThornsMsg = 0x465e; // "I can't remove it with my hands. these thorns look really sharp"

// No Chainsaw Fuel Message : 0x46a1 to 0x46c2
const uint16 dsAddr_noChainsawFuelMsg = 0x46a1; // "There's no fuel in the chainsaw"
// Thorns Too Thin Message : 0x46c3 to 0x46f6
const uint16 dsAddr_thornsTooThinMsg = 0x46c3; // "Thorns are too thin, the chainsaw is useless here"
// Rock Walking Gee Message : 0x46f7 to 0x473c
const uint16 dsAddr_rockWalkingGeeMsg = 0x46f7; // "Yeah, great idea. Let's take this rock and walk around a bit. Gee..."

// Butterfly Message : 0x473d to 0x477a
const uint16 dsAddr_butterflyMsg = 0x473d; // "I'd better leave them alone, they make this place beautiful"
// Not Sure If Alive Message : 0x477b to 0x4797
const uint16 dsAddr_notSureIfAliveMsg = 0x477b; // "I'm not sure if it's alive"

// FIXME - Unknown where this is used.. Talking to SOMETHING...
// Unknown Language Message : 0x4798 to 0x47be
const uint16 dsAddr_unknownLanguageMsg = 0x4798; // "I don't know what language it speaks"

// Hole Too Narrow Message : 0x47bf to 0x47e6
const uint16 dsAddr_holeTooNarrowMsg = 0x47bf; // "The hole is too narrow to fit my hand"
// Bird Attack Message : 0x47e7 to 0x4807
const uint16 dsAddr_birdAttackMsg = 0x47e7; // "Hey You! Wake up! Bird attack!"
// No Search Warrant Message : 0x4808 to 0x4827
const uint16 dsAddr_noSearchWarrantMsg = 0x4808; // "I don't have a search-warrant"

// Uninteresting Haystack Message : 0x4828 to 0x485f
const uint16 dsAddr_uninterestingHaystackMsg = 0x4828; // "I don't see anything interesting about this haystack"
// More Complicated Message : 0x4860 to 0x4881
const uint16 dsAddr_moreComplicatedMsg = 0x4860; // "It's more complicated than that"
// Nut Rake Message : 0x4882 to 0x48be
const uint16 dsAddr_nutRakeMsg = 0x4882; // "It's pointless, the nut will slip between the rake's teeth"
// Paddle Broken Message : 0x48bf to 0x48d5
const uint16 dsAddr_paddleBrokenMsg = 0x48bf; // "The paddle is BROKEN"

// Branch Not Paddle Message : 0x48d6 to 0x4912
const uint16 dsAddr_branchNotPaddleMsg = 0x48d6; // "This branch is not a paddle. It doesn't even look like one"
// Try Somewhere Else Message : 0x4913 to 0x495b
const uint16 dsAddr_trySomewhereElseMsg = 0x4913; // "I'd better try somewhere else - I suppose this side is heavily guarded"
// Sharpen Not Pulverize Message : 0x495c to 0x4983
const uint16 dsAddr_sharpenNotPulverizeMsg = 0x495c; // "I needed to sharpen it, not pulverize"

// FIXME - Can't find where this is used. Cellar?
// Can't Do Anything Too Dark Message : 0x4984 to 0x49ad
const uint16 dsAddr_cantDoTooDarkMsg = 0x4984; // "I can't do anything here, it's too dark"

// Bribe Message : 0x49ae to 0x49d0
const uint16 dsAddr_BribeMsg = 0x49ae; // "Here, let's make your pocket fat."
Expand Down Expand Up @@ -470,12 +497,19 @@ const uint16 dsAddr_enoughPhotosMsg = 0x4de6; // "I don't need any more photos"
const uint16 dsAddr_recordScareMsg = 0x4e05; // "Yeah, I can record this and scare the cats"
// Already Recorded Message : 0x4e32 to 0x4e57
const uint16 dsAddr_alreadyRecordedMsg = 0x4e32; // "I already recorded what I wanted to"
// Can't Record No Batteries Message : 0x4e58 to 0x4e8d
const uint16 dsAddr_cantRecordNoBatteriesMsg = 0x4e58; // "I can't record anything until I find some batteries"

// FIXME - Not sure how to get this message. Dictaphone with no batteries somewhere? Radio?
// No Batteries No Fun Message : 0x4e8e to 0x4ea4
const uint16 dsAddr_NoBatteriesNoFunMsg = 0x4e8e; // "No batteries, no fun"

// Not Right Moment Message : 0x4ea5 to 0x4ecd
const uint16 dsAddr_notRightMomentMsg = 0x4ea5; // "I don't think this is the right moment"
// Cook Around Message : 0x4ece to 0x4ef9
const uint16 dsAddr_cookAroundMsg = 0x4ece; // "I can't do anything with this cook around"

// Same Bottle Message : 0x4efa to 0x4f3c
const uint16 dsAddr_sameBottleMsg = 0x4efa; // "The bottle's the same, but I doubt if it's enough to fool anyone"
// Break Flatten Message : 0x4f3d to 0x4f68
const uint16 dsAddr_breakFlattenMsg = 0x4f3d; // "I wanted to break it, not to flatten it!"
// What Inside Message : 0x4f69 to 0x4f9a
Expand Down Expand Up @@ -720,17 +754,36 @@ const uint16 dsAddr_notMineMsg = 0x5d87; // "I can't take it. It's not mine."
// Hey What's The Matter Message : 0x5da8 to 0x5dc1
const uint16 dsAddr_HeyWtmQMsg = 0x5da8; // "Hey! What's the matter?!"

// FIXME - Where is this used?!
// Its Open Message : 0x5dc2 to 0x5dcd
const uint16 dsAddr_ItsOpenMsg = 0x5dc2; // "It's Open!"

// Out Of Order Message : 0x5dce to 0x5de1
const uint16 dsAddr_outOfOrderMsg = 0x5dce; // "It's out of order"
// Captain Watching Message : 0x5de2 to 0x5e0a
const uint16 dsAddr_captainWatchingMsg = 0x5de2; // "with captain watching? Better not"

// Blunt Sickle Message : 0x5e0b to 0x5e24
const uint16 dsAddr_bluntSickleMsg = 0x5e0b; // "The sickle is too blunt"
// First Business Message : 0x5e25 to 0x5e53
const uint16 dsAddr_firstBusinessMsg = 0x5e25; // "First I've got some business to take care of"
// No Digging Knife Message : 0x5e54 to 0x5e8e
const uint16 dsAddr_noDiggingKnifeMsg = 0x5e54; // "Digging it out with the knife could take a hundred years"

// FIXME - Where is this message used?!
// No Mess On Table Message : 0x5e8f to 0x5ebd
const uint16 dsAddr_noMessOnTableMsg = 0x5e8f; // "I don't want to make more mess on this table"

// Throw Crumbs To Bird Question Message : 0x5ebe to 0x5ee5
const uint16 dsAddr_throwCrumbsToBirdQMsg = 0x5ebe; // "Should I throw the crumbs to the bird?"

// FIXME - Where is this message used?!
// Don't Waste Crumbs Message : 0x5ee6 to 0x5f10
const uint16 dsAddr_dontWasteCrumbs = 0x5ee6; // "I don't want to waste these tasty crumbs"

// FIXME - Where is this message used?!
// Might Slip Fall In Message : 0x5f11 to 0x5f3b
const uint16 dsAddr_mightSlipFallInMsg = 0x5f11; // "Better not... I might slip and fall in..."

// Book Color Message Address Pointers : (6 * 2-byte) = 0x5f3c to 0x5f47
const uint16 dsAddr_bookColorMsgPtr = 0x5f3c;
// Book Color Message #0 : 0x5f48 to 0x5f60
Expand Down

0 comments on commit b01fdfe

Please sign in to comment.