Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - spiffythedog

Pages: 1 [2]
16
SCI Development Tools / Re: SCI Companion V3 - alpha build notes/bugs/feature requests
« on: July 11, 2016, 12:47:30 AM »
Still hacking SQ1VGA whenever I get a spare minute, and only two scripts are still giving me trouble in your current build of SCI Companion v3: 700 ('Sarien.sc') and 703 ('RegionFeature.sc').

Compiling either one, while successful, always gives me the warnings "Ignoring public class for export: arcadaRegion" (for Sarien.sc) and "Ignoring public class for export: DeltaurRegion" (for RegionFeature.sc).
Playing with these compiled scripts crashes the game when it attempts to load up any screens on the interior of both the Arcada and the Deltaur. Obviously, neither area can properly function without these classes being properly defined/programmed.

Is there any way to fix this?

EDIT: Here are the script files btw

17
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: July 01, 2016, 09:25:08 PM »
Amazing work spiffythedog!

And kawa: HA!

Thanks!

Restored animation loops for triple-breasted alien girl and yellow slug guy in the Rocket Bar (caused by a faulty if statement, loops only play when 'Detail' in original game is set below 2)
I quoted this on IRC. Shenanigans ensued:

*KAWA SNIP*

Huh. I always assumed it was a Total Recall reference, myself.

18
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: July 01, 2016, 09:14:23 AM »
Now that I finally had some free time (as well as the new update for SCI Companion v3) to come back and tackle this, I think I'm almost done. Here is a list of changes:

GENERAL FIXES

• Grammar, spelling and formatting errors in the narrator text strings have been cleaned up (while hopefully preserving the writers' original intent)
• A number of item interactions no longer produce empty text boxes (e.g. use the bar coupon on the DBU coupon)
• Cursor no longer switches to 'Taste' instead of 'Wait' when walking through laser fence in Kerona underground
• Mugger sequence completely fixed
• Offering the jetpack to the DBU salesbug prompts his unique on-screen yellow text rather than a regular grey text box
• When offering the DBU salesbug common items as payment for a droid, his text response no longer spills off-screen (displayed with two text strings instead of one)
• Discounted ship prices at Tiny's are now displayed correctly (144 buckazoids for the scrambler and 115 buckazoids for the saucer)
• Tiny no longer negotiates the price of the ship after you've already bought it
• Description of 'Enter' button when inputting Droid Navigation Code in ship no longer reuses the one for the cartridge retrieval system on the Arcada
• Description of egg-like container of bottled-energy on top level of room 60 restored (no longer a cut-off fragment)

MISC. REVAMPS

• Reinstated 'Orat Chow death' message
• Restored animation loops for triple-breasted alien girl and yellow slug guy in the Rocket Bar (caused by a faulty if statement, loops only play when 'Detail' in original game is set below 2)
• Removed the SQ4 time pod animation when leaving Kerona
• The chimes produced by pressing the 'numpad' buttons when keying in the Navigation Coordinates now vary in pitch like they do when retrieving the cartridge on the Arcada
• Death message for fleeing from the sight of the Deltaur originally showed Roger in his red Sarien uniform with his back turned. Now it shows Roger in his blue space suit with his back turned.
• Added conditional to description of room 61 (now reflects which level you're standing on)
• The Two Guys from Andromeda now have talking animations for the Restart and Quit sub-menus (currently bugged, see below)

AUDIO

• Sound added for when mugger shoots you
• Restored missing mechanical/'talking' sound effect when offering the DBU loading bay droid the bar coupon
• Sound added when Roger collapses after getting shot in Deltaur airlock
• Laser/disintegration sounds added when shot in storage, laundry or outside armory (after missing with both gas grenades)
• Sound/animation added for getting fried by the Wally globes on the Deltaur (regardless of whether they're active or not)
• Sounds added for jumping into the waste disposal unit and getting crushed by the anvil on the Deltaur
• Restored some of the armory droid's footstep noises (only two loops remain silent, see below)
• Sounds added for death sequence when giant Sarien warrior kills you
• Sound added for getting fried by the force field surrounding the Star Generator

REMAINING BUGS

• After buying the security droid from DBU (the one you need to assemble yourself), clicking the Hand icon 3 times on the smallest box (or simply clicking on any box twice with the Hand icon and clicking the smallest box after the second message) causes Roger to walk right into the force field barrier
• Clicking any icon on the cleaning droid when on lower level of Deltaur 2F causes Roger to use the elevator and leave the screen
• Armory droid's 'talking' sound effect plays for only about a millisecond after shooting him twice
• No 'footstep' sound effects for when armory droid is just emerging from the back room
• When unmasked, Sarien officers on the upper levels initially don't produce a laser sound effect when they shoot you. The second and subsequent shots however do produce a laser sound (compiling 703.scr, which controls this behaviour, produces a warning message "Ignoring public class for export: DeltaurRegion. Line: 331, col: 6," and the game crashes when loading a save game after the Deltaur airlock or loading one from within the Deltaur itself)
• The death animation for the waste disposal only depicts Roger with a Sarien helmet (any good sprite artists willing to step up?)
• Bizarrely, the talking animations for the Two Guys during the two special death sequences in the Kerona underground (as well as the ones I added for the Restart and Quit submenus) will simply stop working when you have 10 inventory items. Arriving in the underground with more than 9 items or picking up a 10th while you're there causes the animations to stop. Sounds crazy and arbitrary, but I've tested it thoroughly, and it's the exact same result each time.

TRIVIAL NONSENSE

• Apparently, the screen was supposed to flash red when you encountered the Romulan Warbird, indicating that they destroyed you (that sequence always seemed awkward to me: they just appear and then leave!). Have no idea how to implement this

So yeah, that's all I've managed to fix so far. I probably went a little overboard on some of the text alterations, and the added sound effects might seem a little iffy (especially the digital ones). But for a first effort, I think I did a good enough job, though I'm still not quite finished. I've provided a beta for you guys to look over and give me any suggestions (is the edited 'resource.000' supposed to be this big? Just seems weird, is all). So far, this patch has only been tested in DOSBOX, so use ScummVM at your own risk.

Enjoy.

19
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 26, 2016, 12:31:44 AM »
Another problem: recompiling script 3 and then testing it in-game causes a minor bug during the dying scientist event. Directly after he collapses to the floor, Roger's right-facing walk cycle is briefly superimposed over the scientist's sprite and does a few rounds. Then it disappears and the scene continues as normal. I've tried looking through the decompiled script, but I can't seem to identify what's causing this behavior. Maybe it's somewhere else?

20
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 25, 2016, 09:45:37 PM »
Another problem: decompilation of script files isn't perfect, even if the program says it is. Important properties of instances seem to be almost randomly omitted for some reason, causing corrupted graphics and cursor hotspots (eg. the monitors and dials in room 8, the bartender's body and the little purple guys in the Rocket Bar, the radar in the loading bay of DBU, etc.). Simply looking through the disassembly of each script and manually re-adding these properties fixed this.

I'll take a look at why this is happening, thanks for the bug report!

[edit:] Looks like this is because the instance has more properties than the species from which it is derived declares. And we end up going down some failure path. I should be able to just have it ignore this problem I think.

Script #0 ('Main') will also be another tricky one to tackle, as that contains all the inventory descriptions and doesn't decompile cleanly in SCI Companion. Wish me luck, I guess.

What are the problems with script 0? I've attached my decompile of it (hopefully this is the same version of SQ1 VGA)

Decompiling my script 0 resulted in a 96% bytecount success rate with a warning ('WARNING:  ::proc0_10: Analyzing control flow: Expected node with two successors (then/else): 1 at 0384
Falling back to disassembly for proc0_10'). When I compile it and test in the game (usually from the start), the palette/colour scheme of the in-game menus and messages are completely wrong. I suspect that maybe there a few missing properties I need to reinstate.

21
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 25, 2016, 08:30:25 AM »
Additionally, while the script for the Deltaur armory room was successfully decompiled with no reported errors, a conditional statement involving the droid killing you if you show him the ID 3 times was corrupted somehow, as showing him the ID for the third time causes him to threaten your extermination and then just walk into the back room like he usually does. I'm currently wrangling with this one and still no dice.
I'm not surprised that that doesn't work. it is a script bug in the original game, and I implemented a script patch for it in ScummVM. It happens to work in SSCI, but even it might be sensitive to code generation differences. The trouble is with this compound if statement:
Code: [Select]
 (if (< (DeltaurRegion timesShownID: (+ (DeltaurRegion timesShownID?) 1) ) 3 ) ...etc...The programmer thought that the expression (DeltaurRegion timesShownID: foo) would return foo (which would subsequently be compared to 3 in the if statement), but this is not the case. In other words, those middle three lines must be moved out of the if statement. It should read:
Code: [Select]
(DeltaurRegion timesShownID: (+ (DeltaurRegion timesShownID?) 1))(if (< (DeltaurRegion timesShownID?) 3) ...etc...As noted, ScummVM instead fixes this with a script patch, which a) would not decompile cleanly and b) might or might not work with altered scripts.

Worked like a charm. Now it's just getting the droid's footsteps to play when he emerges from the back room (before he turns around to face you). I'm positive that its controlled by 'instant RobotWalksOut of Script', and that I need to add '(= loop 0) (= loop 5)  (proc999_5 cel 0 4))' and '(droidWalkSound number: 523 loop: -1 flags: 1 play:)' somewhere as part of a conditional statement, but I'm clueless as to how.

22
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 25, 2016, 03:18:47 AM »
Is there something I'm not taking into account, here?
You mean besides the fact that they're hard numbers and not the strings they should be? Nah, I think that's about it.

That actually really helped. Replacing the decimal addresses with the actual strings themselves has completely circumvented the problem.

Another problem: decompilation of script files isn't perfect, even if the program says it is. Important properties of instances seem to be almost randomly omitted for some reason, causing corrupted graphics and cursor hotspots (eg. the monitors and dials in room 8, the bartender's body and the little purple guys in the Rocket Bar, the radar in the loading bay of DBU, etc.). Simply looking through the disassembly of each script and manually re-adding these properties fixed this.

Additionally, while the script for the Deltaur armory room was successfully decompiled with no reported errors, a conditional statement involving the droid killing you if you show him the ID 3 times was corrupted somehow, as showing him the ID for the third time causes him to threaten your extermination and then just walk into the back room like he usually does. I'm currently wrangling with this one and still no dice.

Quote
Is there something I'm not taking into account, here?

How are you getting to room 45 when you test these changes? If this is from a save game that has script 45 loaded and is from an older version of the code, then there could be problems. This is more likely in SCI1.1 though, since you'll get the old heap resource (from the save game) mixed with the new script resource. But things can still go wrong in SCI1.0.

I've actually been avoiding that one (eheh) and am presently focusing on problems that are more within my current abilities (that is to say, not a lot), and I haven't exactly been going through the game room by room.

Speaking of current abilities, here are a few things I managed to fix so far:

• About 95% of all grammar, spelling and formatting errors in the remaining narrator text strings have been cleaned up (while hopefully preserving the writers' proper intent)
• Offering the jetpack to the salesbug produces a response via his on-screen yellow text instead of a grey narration box like usual
• The salesbug's response to offers of common items no longer runs off-screen (as it has been properly split into two separate strings)
• Showing 'Robbie' the bar coupon in the DBU loading bay produces a mechanical/'talking' sound effect like it should

Some other things I've noticed and plan to address:

• The triple-breasted alien girl and the yellow slug guy in the bar have several animation loops that go completely unused (at least in my copy)
• Some descriptions/text strings for certain environmental features in some rooms also go completely unused (eg. DBU loading bay, the Star Generator room, etc.). As a result, these rooms just feel really barren and lacking in interactivity

Script #0 ('Main') will also be another tricky one to tackle, as that contains all the inventory descriptions and doesn't decompile cleanly in SCI Companion. Wish me luck, I guess.

23
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 21, 2016, 02:34:20 AM »
It seems that altering ANY of the readily editable text strings in this game's script files with SCI Companion completely borks the integrity of the entire file. The locations of the 'look strings' for objects (and god knows what else) or possibly even the strings themselves don't appear to be shifted accordingly whenever I make a change in the editor and compile the script, resulting in garbled descriptions with the 'eye' icon or just plain corrupted text boxes.

Is there something I'm not taking into account, here?

24
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 19, 2016, 07:39:44 AM »
Well, I've cleaned up/revised all of the text strings outside those contained in the script files themselves. Altering the script files is going to be a challenge for me, as while I can alter the text strings just fine with a hex editor (with a built in copy/paste function), the definitions of the string locations themselves will remain unchanged. Can anyone help me out with this?

I've also made note of a number of other bugs/oddities that could probably be fixed:

• A number of item interactions produce empty text boxes (e.g. use the bar coupon on the DBU coupon)
• Offering the jetpack to the DBU salesbug prompts a regular grey text box instead of the salesbug's unique on-screen yellow text
• When offering the DBU salesbug common items as payment for a droid, his text response spills off-screen and cannot be read
• Tiny still negotiates the price of the ship after you've already bought it
• Missing mechanical/'talking' sound effect when offering the DBU loading bay droid the bar coupon
• No laser sound when shot in storage room (same for when shot by guard after missing big Sarien with gas grenade)
• Smelling or tasting the Wally globes while they are inactive produces no sound or animation for death scene
• Looking at certain objects on the same level as you gives the 'You can't see that from down here' message instead of the generic list of descriptions for Sarien doodads
• Looking at same objects from higher level gives generic list of descriptions, as above (need to reverse?)
• No sound for jumping into the waste disposal unit or when the armory droid crushes you with an anvil
• Clicking eye icon on waste disposal chute when on lower level causes Roger to use the elevator and leave the screen
• Sound of armory droid's footsteps briefly missing when he emerges from the back room
• Armory droid's 'talking' sound effect plays for only about a millisecond after shooting him twice
• Death sequence when giant Sarien warrior kills you is completely silent (got to be some way to remedy this, it just feels kind of cheap)

25
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 17, 2016, 11:30:45 AM »
That did it!

I wasn't even looking at the right offsets, bugger it all.

Thanks a million. I'll make sure you receive full credit for this.

Anyway, after taking a good look at most of the in-game text, I was startled by the amount of glaring typos, repeated phrases, uncompleted fragments and formatting errors there were. This game clearly didn't receive as much QA as other Sierra games at the time. It could definitely use a bit of proofreading and revision, which I've already started.

26
SCI Development Tools / Re: Hacking SQ1VGA with SCICompanion v3
« on: March 17, 2016, 02:28:31 AM »
Changed syntax shouldn't prevent compilation. What does prevent compilation is broken decompiles, like radar1::doVerb: CorruptFunction_CantDetermineCodeBounds. Putting a ; on that line will fix it, but kill any interactions with that prop. Another problem is that tiny::doVerb has odd cases, and  is somewhat more difficult to fix without making the game unbeatable. Both of these appear no matter which language you decompile to.

Quote from: Decompiler
Decompiling script 45
ERROR: Invalid branch target.
Generated [REDACTED]\space quest 1\src\rm45.sc
Decompiled 29 of 29 functions successfully (100%).
Overall bytecount success rate: 100%.

Edit: The EGA version does better, with only one of these problems. Unfortunately, it's tiny::doVerb.

Edit?: I felt like a challenge, so I did it manually. Extracted 45.scr, used a hex editor and disassembly to change the last two states from 9 and 10 to the opposite order, effectively skipping the timepod.
Code: [Select]
code_126e: dup ; 3C ldi 9 ; 35 09, change to 0A eq? ; 1A, if not 9... bnt code_12af ; 30 3A 00, ...jump ahead to code_12af, the next case....code_12af: dup ; 3C ldi 10 ; 35 0A, change to 09The missing 'p' would go at 0x26CC in the extracted file.

I altered the prescribed hex values in 45.scr like you said (09->0A, 0A->09) and fixed the typos. Now Tiny calls it a 'swell jetpack' like he should with no errors. However, altering the above values doesn't seem to do anything in my game, as the time pod animation still runs like usual. Also, the next couple of hex values after '3C 35 09' are '1A 30 0C 00' rather than '1A 30 3C 00' (I'll attach a copy of my 45.scr for reference).

If it helps, the interpreter version my copy of the game uses is apparently 'T.A00.081'.

27
SCI Development Tools / Hacking SQ1VGA with SCICompanion v3
« on: March 16, 2016, 05:53:55 AM »
Hello there,

I've been planning on making a small patch for Space Quest I VGA using SCICompanion v3 that fixes some typos ("That's a smell jet ack, all right, but for exploring space, you need a real ship.") and prevents the Time Pod from SQ4 from materializing on-screen after you take off in the mugger's spaceship. This latter change fixes a number of continuity issues with SQ4, as in that game the pod actually appears one screen to the right (just outside the loading bay for Droids B Us) and a considerable amount of time after Roger had left, enough time for Tiny to rebrand his business and for Droids B Us to file for Chapter XI. Simply removing the time pod animation from the scene ought to fix this.

I'm just having a bit of trouble trying to change/compile the script. I've isolated the room/script number (45) and I think I've identified the specific line(s) of script that needs to be modified. But the changed syntax makes it impossible for me to compile the script file and see whether it works or not in the actual game.

It's also quite apparent that I'm a complete noob at this, and am only interested in modifying existing games rather than building them from the ground up. Is there a specific tutorial that could help me out here?

Pages: 1 [2]

Page created in 0.429 seconds with 20 queries.