cocomonk22 Posted July 25, 2009 Share Posted July 25, 2009 OK, I'll leave it as is then. You have to modify the splitter's output if the print command has position parameters: Here's the original: (14) print(255,[Pos(240,8),Text("--LeChuck!^255^3GRRRRRRRRR!^255^3Arf, oo f-oof, Monkey Island^15!^255^3*sniff* *sniff*")]); (AE) WaitForMessage() After split: (14) print(255,[Pos(240,8),Text("--LeChuck!")]); (AE) WaitForMessage() (14) print(255,[Text("GRRRRRRRRR!")]); (AE) WaitForMessage() (14) print(255,[Text("Arf, oof-oof, Monkey Island^15!")]); (AE) WaitForMessage() (14) print(255,[Text("*sniff* *sniff*")]); (AE) WaitForMessage() EDIT: Regarding completely new music where there wasn't any before: For additional music, the SE added background sounds to certain scenes. We could add this to the CD version by creating new SOUN starting at 099_LFLF_icons\009_SOUN_130.dmp. SOUN works as follows: Values from offsets 0-23 (0x00-0x17) are all the same, so just copy data from an existing SOUN. At offset 24 (0x18) track number in hex format (for new music not in original start with track decimal 24 or hex 18). At offset 25 (0x19) seems to be loop, opening uses 01, scummbar uses ff. The six remaining values 26-31 (0x1a-0x1f) are all 00 if you want the music to start at the beginning of the track. An example of music not starting at the beginning: The scene at the lookout following the intro uses the same music as the opening, but starts at position 1 min 36 sec. Hex values are 01 23 30 00 00 00. 01 23 30 is equivalent to 1 35 48 in decimal. We would start the music by using startSound(130) or whatever number our SOUN is. To avoid problems we could use VAR_RESULT = isSoundRunning(130) if (!VAR_RESULT) { startSound(130) } in the ENCD of the room. Stopping the music is a bit more difficult, as you have to add a stopSound(130) for every script in the room that leaves the room. A possible problem I can see is on the dock with Guybrush and Elaine when their theme plays on the dock: it should be fine if we stop the dock ambient sound before the Guybrush and Elain theme plays. Link to comment Share on other sites More sharing options...
LogicDeLuxe Posted July 25, 2009 Share Posted July 25, 2009 You have to modify the splitter's output if the print command has position parametersI just noticed this. Now, splitlines copies everything between "print" and "Text" to each new line. I hope, this fixes it: (outdated version) And you should check the script 155 thing in your patch: http://www.lucasforums.com/showthread.php?p=2654771#post2654771 Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 25, 2009 Share Posted July 25, 2009 Fixed patch: http://www.mediafire.com/?yymeyajyzh1 What happened was I inserted a hex value when I should have overwritten. EDIT: I just tested the updated splitter, and the Spiffy lines are in the correct positions now. Link to comment Share on other sites More sharing options...
LogicDeLuxe Posted July 25, 2009 Share Posted July 25, 2009 Still, my linesplitter doesn't seem to give the expected results. When looking at the rubber chicken, Guybrush only says "Hmmm...". He should continue with "A rubber chicken with a pulley in the middle", but he doesn't. Any idea what causes the issue? The original script looks like this: Events: 7 - 00CE 8 - 0024 9 - 009B 5A - 0018 5B - 001E [0018] (1A) Var[182] = 8; [001D] (00) stopObjectCode() [001E] (1A) Var[376] = 961; [0023] (00) stopObjectCode() [0024] (D8) printEgo([Text("Hmmm...^255^3A rubber chicken with a pulley in the middle^^255^3What possible use could that have?")]); [0081] (AE) WaitForMessage() [0083] (54) setObjectName(377,"rubber chicken") [0095] (14) print(255,[Text(" ")]); [009A] (00) stopObjectCode() And my tool changes it to: Events: 7 - 00CE 8 - 0024 9 - 009B 5A - 0018 5B - 001E [0018] (1A) Var[182] = 8; [001D] (00) stopObjectCode() [001E] (1A) Var[376] = 961; [0023] (00) stopObjectCode() [0024] (D8) printEgo([Text("Hmmm...")]); WaitForMessage() printEgo([Text("A rubber chicken with a pulley in the middle^")]); WaitForMessage() printEgo([Text("What possible use could that have?")]); [0081] (AE) WaitForMessage() [0083] (54) setObjectName(377,"rubber chicken") [0095] (14) print(255,[Text(" ")]); [009A] (00) stopObjectCode() Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 25, 2009 Share Posted July 25, 2009 Strange... The first time you look at it, he says the whole message, but if you look at it again, he'll just say "Hmmm..." EDIT: And if you look at it and then immediately click to start walking around, he says the whole message again... This could have something to do with it being in a VERB. Or it could have something to do with the Event specification. I would test it without any WaitForMessage() between the lines and see if that works. Link to comment Share on other sites More sharing options...
TheJoe Posted July 25, 2009 Share Posted July 25, 2009 Here is a little tool that looks up strings from the speech.info and a mi1.txt (scummtr.exe -w -g monkeycdalt -of mi1.txt -H) in the same dir and outputs a "match.bat" with "ren sample.mp3 linennumber_sample.mp3". It splits up multiple lines (\0xff\0x03). It's a *very* dirty hack but should do the job. http://helicoid.de/scumm/mkspeech.zip This can be used as a starting point for generating a monster.sou - even with multiple lines like LogicDeLuxe proposes. Why did we not have this tool for MISP! Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 25, 2009 Share Posted July 25, 2009 We didn't have that tool for MISP because there was no speech.info since the SE hadn't come out or been released. Link to comment Share on other sites More sharing options...
LogicDeLuxe Posted July 25, 2009 Share Posted July 25, 2009 I would test it without any WaitForMessage() between the lines and see if that works.Unsurprisingly, it skips right to "What possible use could that have?" then. Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 26, 2009 Share Posted July 26, 2009 EDIT3: It now works perfectly! Cutscene 2 (Guybrush reading the re-elect Governor Marley poster) is used to keep verb menu visible and keep the camera in the same position. CursorShow() is used to keep the cursor visible during the cutscene. UserputOn() is used to enable user input (clicking, keys, etc.) during cutscene. The earliest the cutscene can end without messing up Guybrush's lines is after the first WaitForMessage(). Now the behavior to the user is exactly the same as normal, you can click on other objects during Guybrush's lines, you can walk around, you can use other verbs, etc. [0024] cutscene([2]) CursorShow() UserputOn() printEgo([Text("Hmmm...")]); WaitForMessage() endCutscene() [0030] (D8) printEgo([Text("A rubber chicken with a pulley in the middle^")]); WaitForMessage() [0062] (D8) printEgo([Text("What possible use could that have?")]); WaitForMessage() [0089] (54) setObjectName(377,"rubber chicken") [009B] (14) print(255,[Text(" ")]); [00A0] (00) stopObjectCode() The only problems with the dialog splitter are with verbs, right? If so, just use these modifications when splitting lines only in ???_VERB.dmp files. Link to comment Share on other sites More sharing options...
LogicDeLuxe Posted July 26, 2009 Share Posted July 26, 2009 EDIT3: It now works perfectly!Unfortunately not. Still "What possible use could that have?" is missing sometimes. Well, that can be solved by placing endCutscene() after that line, so not a big deal. But worse, you can easily get errors like "Object 377 stopped with active cutscene/override!" when clicking around without letting Guybrush finish his text first. I think, letting the controls disabled during his lines is a better idea. Just like with the election poster. Unless, you have a better idea. Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 26, 2009 Share Posted July 26, 2009 OK, I have a better idea: [0024] cutscene([2]) CursorShow() UserputOn() beginOverride goto end printEgo([Text("Hmmm...")]); WaitForMessage() [0030] (D8) printEgo([Text("A rubber chicken with a pulley in the middle^")]); WaitForMessage() [0062] (D8) printEgo([Text("What possible use could that have?")]); WaitForMessage() [end] endCutscene() [0089] (54) setObjectName(377,"rubber chicken") [009B] (14) print(255,[Text(" ")]); [00A0] (00) stopObjectCode() Cutscene ends after the last line, and I've added options to handle override so that error won't occur anymore. User can still click around, but can't use any verbs until Guybrush finishes talking. Link to comment Share on other sites More sharing options...
jestar_jokin Posted July 26, 2009 Share Posted July 26, 2009 Stopping the music is a bit more difficult, as you have to add a stopSound(130) for every script in the room that leaves the room. Each room contains an ENCD (room entry) and EXCD (room exit) script. I believe you could modify the single EXCD script to stop the music whenever the room is exited. Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 26, 2009 Share Posted July 26, 2009 Hopefully that's the case. I was just looking at the scummbar as an example, and it didn't have a stopSound in the EXCD, just in scripts leaving the room for whatever reason. Link to comment Share on other sites More sharing options...
jestar_jokin Posted July 26, 2009 Share Posted July 26, 2009 Hopefully that's the case. I was just looking at the scummbar as an example, and it didn't have a stopSound in the EXCD, just in scripts leaving the room for whatever reason. I'm only guessing, but maybe because whenever you enter a conversation with one of the patrons, it zooms to a close-up, which is actually a new room, and the music is supposed to continue playing in those cases. Link to comment Share on other sites More sharing options...
LogicDeLuxe Posted July 26, 2009 Share Posted July 26, 2009 Cutscene ends after the last line, and I've added options to handle override so that error won't occur anymore. User can still click around, but can't use any verbs until Guybrush finishes talking.Nice theory, but unfortunately not accurate. Just look at the chicken while Guybrush is still saying the chicken text: error. The way I implemented it now, you'll get controls back as soon as Guybrush starts the last line in a VERB script. I hope there are no tricky jumping, as my tool currently only detects cutscenes when they are in order. It does only set this cutscene stuff if the text isn't already in a cutscene, and if it is a VERB script. Let's hope, this works now as expected. dialogsplitter.zip - 0.01MB Link to comment Share on other sites More sharing options...
LogicDeLuxe Posted July 26, 2009 Share Posted July 26, 2009 Smirk's cigar can be easily fixed by replacing "[0000] (13) ActorOps(12,[Costume(0)]);" with "[0000] (13) ActorOps(12,[Costume(76)]);" in 000_LECF\076_LFLF_cu-traine\000_ROOM\022_ENCD.dmp Link to comment Share on other sites More sharing options...
jott Posted July 26, 2009 Share Posted July 26, 2009 I wonder if it would be easier to patch ScummVM instead of messing with nearly all scripts..... Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 26, 2009 Share Posted July 26, 2009 I'd rather apply patches to the game itself so it can be compatible with all ScummVM ports. Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 26, 2009 Share Posted July 26, 2009 The way I implemented it now, you'll get controls back as soon as Guybrush starts the last line in a VERB script. I hope there are no tricky jumping, as my tool currently only detects cutscenes when they are in order. It does only set this cutscene stuff if the text isn't already in a cutscene, and if it is a VERB script. Let's hope, this works now as expected. dialogsplitter.zip - 0.01MB Looks good, however, could you add in CursorShow() right after cutscene[2] and before beginOverride to make it less obvious that we're using a cutscene for this? EDIT: Here's an updated version of dialog splitter with the CursorShow() change added back in: dialogsplitter.zip - 0.01MB Link to comment Share on other sites More sharing options...
LogicDeLuxe Posted July 27, 2009 Share Posted July 27, 2009 So, since it is running fine now, we need to release an official script patch in order to build a mapping.txt which is compatible for everyone. Some bugfixes are still possible, as long as no text is changed. So is the stump joke wanted in? Someone at mixnmojo apparently did have contact with Dominic Amarto and he did some lines for the 2002's April fools joke back then. I can't find the news page of it anymore, so I don't know who it was. The stump joke lines are: "Hey!" "There's a hole at the base of this stump!" "Wow! It's a tunnel that opens onto a system of catacombs!" "I think I can squeeze through--" (after requesting disks 22, 36 and 114) "Oh, well. I guess I can't go down there." "I'll just have to skip that part of the game." Btw, the loading image of the SE has a floppy disk labeled "disk 23" which is probably a joke on this. Link to comment Share on other sites More sharing options...
Espiox Posted July 27, 2009 Author Share Posted July 27, 2009 So is the stump joke wanted in? Honestly, I'm not that bothered about putting that joke in (nor, really, "fixing" any other part of the CD version). I'm all for it if it's optional though. Link to comment Share on other sites More sharing options...
cocomonk22 Posted July 30, 2009 Share Posted July 30, 2009 I could compile a new patch with LogicDeLuxe's dialog splits. Link to comment Share on other sites More sharing options...
naveen123 Posted July 31, 2009 Share Posted July 31, 2009 When is the CD Talkie Edition being released ?Give us an approximate . Link to comment Share on other sites More sharing options...
jott Posted July 31, 2009 Share Posted July 31, 2009 First of all the modified SCUMM scripts have to be finished. There are still some minor things to do IMHO (removing some of the "Throopweed" variations, maybe add logic to the sword fighting scenes that the proper response sample is chosen, ...) If that is done, there is still some more work to be done, as the sword fighting scenes (and some other places) need a proper speech file assignment. Finally the installer has to be finished to reduce the need of technical skills. I'm not sure how Espiox is coming forward with that. For my very rough estimate, I guess it's about 5-8 man hours of work with some polish, maybe more. Translate that to the spare time everyone involved has for the project.... Of course anyone who wants to help out is welcome to do so. Alpha & beta testing is essential too.... Link to comment Share on other sites More sharing options...
naveen123 Posted July 31, 2009 Share Posted July 31, 2009 I don't mind testing the game and giving feedbacks. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.