KQI: weird, weird, weird

jelleghys They sure did some weird things in King's Quest I...
I mean v88 = 0; and than v10=v88; why did they do that???

King's Quest I:

if ((said("fastest") ||
controller(menu_fastestspeed))) {
v88 = 0;
v10 = v88;
}
if ((said("fast") ||
controller(menu_fastspeed))) {
v88 = 1;
v10 = v88;
}
if ((said("normal") ||
controller(menu_normalspeed))) {
v88 = 2;
v10 = v88;
}
if ((said("slow") ||
controller(menu_slowspeed))) {
v88 = 4;
v10 = v88;
}



Seems like they noticed that in KQII. Still I don't get it.

King's Quest ][:
[code]
if ((said("fastest") ||
controller(menu_fastestspeed))) {
v10 = 0;
}
if ((said("fast") ||
controller(menu_fastspeed))) {
v10 = 1;
}
if ((said("normal") ||
controller(menu_normalspeed))) {
v10 = 2;
}
if ((said("slow") ||
controller(menu_slowspeed))) {
v10 = 4;
}
Robin_Gravel
Jelle wrote:

They sure did some weird things in King's Quest I...
I mean v88 = 0; and than v10=v88; why did they do that???

King's Quest I:

if ((said("fastest") ||
controller(menu_fastestspeed))) {
v88 = 0;
v10 = v88;
}
if ((said("fast") ||
controller(menu_fastspeed))) {
v88 = 1;
v10 = v88;
}
if ((said("normal") ||
controller(menu_normalspeed))) {
v88 = 2;
v10 = v88;
}
if ((said("slow") ||
controller(menu_slowspeed))) {
v88 = 4;
v10 = v88;
}



Seems like they noticed that in KQII. Still I don't get it.

King's Quest ][:
[code]
if ((said("fastest") ||
controller(menu_fastestspeed))) {
v10 = 0;
}
if ((said("fast") ||
controller(menu_fastspeed))) {
v10 = 1;
}
if ((said("normal") ||
controller(menu_normalspeed))) {
v10 = 2;
}
if ((said("slow") ||
controller(menu_slowspeed))) {
v10 = 4;
}



Everything's right in the codes.

v10 is used to set up the speed of the game.

v10 = 0 is set to the fastest the game
v10 = 4 is set to slow the game

You can set v10 to 14 but the game is so slow it may
make the game unplayable.

Don't forget King's Quest 1 is the very first agi game Sierra has made like me with Naturette 1.

Please don't bother with the olders games you'll may
find. it's normal to make mistakes when working an interpreter or a first game.

Robin Gravel
jelleghys
Everything's right in the codes.

v10 is used to set up the speed of the game.

v10 = 0 is set to the fastest the game
v10 = 4 is set to slow the game

You can set v10 to 14 but the game is so slow it may
make the game unplayable.


Yes, I know all that. But why first put a number into v88 and than in the next line put v88 into v10. Why not immediately put a number into v10 (like in KQ2 and others). Every programmer would know that, even if it's the first game...
HwM The first version of King's Quest (not the one you're currently talking about) was made in AGI0... So this version (in AGI2) had to be converted to work with AGI2... So maybe it happend in this process?

Another option is, that they preferred to not directly set the *system*variables... Or maybe it just had to be done that way in AGI0...

BTW: My copy of KQ only has 3 speed options, slow, normal & fast... (fast being the usual 'fastest' setting)... So the whole game is quite unusual in many ways...
sonneveld Well if I was a programmer and I knew I had to tweak numbers later on, I'd make it so I would have to change the least amount of numbers.

What if you had to set 5 variables to the same number?

v88 = 5;
v10 = v88;
v30 = v88;
v40 = v88;
v60 = v88;

If I decide that I actually wanted 6.. I only have to change one line. It would be even easier and more obvious with #define's but perhaps they didn't have them.

do you know v88 wasn't used somewhere else in the game? (perhaps it stood for the original speed.. so if they had to speed up the game for a section, they could move it back)

- Nick
jelleghys
BTW: My copy of KQ only has 3 speed options, slow, normal & fast... (fast being the usual 'fastest' setting)... So the whole game is quite unusual in many ways...


I forgot, I changed that myself, because normal was too slow, and the "original fast" was too fast! :)

do you know v88 wasn't used somewhere else in the game? (perhaps it stood for the original speed.. so if they had to speed up the game for a section, they could move it back)


You're right I guess... As usual :)
sonneveld
Jelle wrote:
You're right I guess... As usual :)


look closer.. I've said my share of dumb things, don't you worry. :)

- Nick

PS.. not that I'm suggesting what you said was dumb.. just that I'm not always right.
jelleghys
do you know v88 wasn't used somewhere else in the game? (perhaps it stood for the original speed.. so if they had to speed up the game for a section, they could move it back)


I checked it. v88 is used only in logic 0 and always with v10, like this:
v88 = blabla;
v10 = v88;

I don't get it... ???
sonneveld 1) they removed the logic later.. or it was for debugging purposes
2) poor compiler. It probably put the variables in a temporary before assigning. That's the best I can suggest.

- Nick
jelleghys I found this piece of code in logic.000 in KQI...

Label2:
*v45 = 0;
v45++;
if (v45 < 45) {
goto(Label2);
}
set.string(prompt_char,">");
set.cursor.char("_");
}


What does the * in *v45 do? Is it some kind of pointer?
AGI1122 Hmmm I am quite curious as well, I havn't seen that before.
Joel Yes, it is sort of a pointer. It's listed in the AGI Studio Help File. Look up lindirectn in the logic help section.
Joey what is AGI0?
HwM
Joey wrote:

what is AGI0?


It's the first version of the AGI interpreter, only game that used it is King's Quest 1... Prolly not the King's Quest 1 you know, but it's pretty much the same (visually) actually, apart from the fact it was a booter (and came in three seperate versions; IBM, PCjr and TANDY)... After that came AGI1, which didn't differ that much from AGI0, one change however was that it worked on all pc-compatibles (atleast, I guess)... Then came AGI2/AGI3, the interpreters most people know... BTW: AGI0 & AGI1 are so called booters, meaning they use their own file system and could only be played when booting from the disk (hence the name)...

But that whole AGI0 story I said in that previous posting was pretty far-fetched... I couldn't make up a more sensible reason, I guess...
Joey oh ok. thanks HMW.
CapTAmerik@ I know that one... I owned the King's Quest 1 Booter. I threw it out when Larry came along though. From what I recalled you could not even save your game, making up for lousy gameplay...

CaptAmerik@
SGreenslade I have the pcjr version...and the pcjr that it works on. :P
Anyways, a real good thing about that version which I wish they put in the other versions, is I believe to be a multiple channel soundtrack. You can hear birds and water flowing in the river rooms. The troll, the rat, the sorcerer, the ogre and some other characters are a lot noisier too. I wish they didn't remove that in the following agi versions of kq1. It would have been nice to have some sort of similar ambience in kq1's successors too. Note that they probably don't need it...it would add some flavors to some dull rooms(figures, kq1 is the only agi game of the series with more than three featureless rooms, not counting those that you would drown in if you failed to press the '=' key). Though this was probably due to the speed of the pcjr's processor or different drawing programming in the early agi interpreter, I did find it a neat effect to see the room being drawn prior of appearing in it.
Kon-Tiki Get AGISB from Brian's site (http://www.agisci.cjb.net) and run it. It'll make the sounds go soundblaster, resulting into 4 channels. I'm using it on every AGI-game I play now ;)

-Kon-Tiki-
rwfromxenon DON'T do it on SQ1 ;D
The notes are so high your brain will explode and drip out of your ears.

-Allyb-
SGreenslade Hold on a minute...are the rest of sierra agi games designed with these background sounds too?
Kon-Tiki Short, but efficient: yep.

-Kon-Tiki-
Andrew_Baker It's just that Sierra didn't update their sound support very well when they switched off of the PCjr. Ask anyone working on sound resource tools how much of a pain in the wazoo the AGI sound.resources are.
jelleghys obj.in.room("object",v0);

They don't use it in KQI, they just used a flag for each object, and set it when the player picked it up.
Was it not supported in AGI0?
Rono If I'm not mistaken, AGISB plays only 3 voices...
The noise voice is not played, I'm not sure why...
Could be because AGISB doesn't supports it, or because the sound resources don't use it.
Anyway, if you have a game with a sound that uses the noise voice, I would be very interested... since I wrote an AGI sound editor that does not support the noise because I couldn't figure out how to use it (or how it should sound)...
Robin_Gravel But Nagi supports noise. You could ask Nick to help you to make a good sound editor.

Robin Gravel
Andrew_Baker Yeah, a noise channel editor is the only thing still missing.
Rono Still, I don't recall seeing any sound resources which use the noise voice...
I'm not very familiar with NAGI, and I'm not sure how to contact this Nick you mentioned, but I'll give it a try...
sonneveld hi :)

my email's at the bottom of every page of NAGI's website and also as the signature on this board. :)

- Nick