Opened 13 years ago

Closed 11 years ago

Last modified 12 months ago

#7547 closed enhancement

INDY3: IQ Points request

Reported by: SF/thunderpeel2001 Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Indiana Jones 3

Description

I'm sure I've asked for this before, but it is no longer listed in the feature requests (even as a closed or deleted item). Apologies if this exists elsewhere, I've searched for it, but been unable to find it...?

Simple request: Full support for IQ Points in INDY3. At the moment I don't think it is possible to view your IQ Points within your game. Also, I'm not sure if the SERIES score is separate from your saves (as it should be). The SERIES score should be the grand total of all the times you've played INDY3, and it's the only way you can get 800 points to finish the game "100%".

It's an odd system, and I imagine it would require some creative thinking in order to get it fully functioning within ScummVM... but it would make me happy!

Thanks!

Ticket imported from: #1666521. Ticket imported from: feature-requests/363.

Attachments (2)

iqpoints.diff (4.8 KB ) - added by fingolfin 13 years ago.
iqpoints2.diff (5.1 KB ) - added by eriktorbjorn 13 years ago.
Completely untested patch

Download all attachments as: .zip

Change History (17)

comment:1 by SF/thunderpeel2001, 13 years ago

Additional: I've checked, and the SERIES score is, as I thought, entirely tied to the save game file. It needs to be added to an external file which is not dependent on the save files.

comment:2 by fingolfin, 13 years ago

It's the *third* time you are requesting this. Maybe you have not set a proper email address with your SF.net account? Else you should have recieved an email each time we closed one of your requests. And you can still go to them... the "search" feature is your friend (in the upper right corner of this page)! I recommend you try it right away. I'll even give you a hint as to what to search for "iq points"... :-).

The series points are indeed not being stored properly currently, this is a known issue.

I'll not close this for the time being, for obvious reasons *g*

comment:3 by fingolfin, 13 years ago

One way to implement the "series" IQ points, we could do the following: Apparently all Indy3 versions (or at least my copies of Indy3 EGA, Indy3 VGA, Indy3 FM-TOWNS, Indy3 Mac, all in english, as well as Indy3 VGA German) stored the IQ points in the string vars 7 and 9.

These variables contain "strings" (actually used as byte arrays) with 73 entries, each entry containing an IQ score for a specific task. The current IQ total (="episode") is stored in Var 244; the "series" score is stored in 245. The latter is recomputed whenever a game is loaded.

Whenever the player gains points, script-125 is called with an ID in the range 0-72, and a "score". It then adds this score to Var 244, and stores it in the appropriate entry in string 7.

Whenever performing a save, the original code would store string var 9 (script room-14-204 does that). However, the scripts load it back into string var 7 (done by room-14-205). The data is stored in the file "savegame.___" resp. "indy3e.___" (on FM-TOWNS).

Also of note is room-14-206, which kind of "merges" the two.

To implement this, my proposal would be to bypass the saveLoadVars opcode, and simply save/load string 7 resp. 9 "manually" in a suitable file.

comment:4 by fingolfin, 13 years ago

Owner: set to fingolfin

comment:5 by sev-, 13 years ago

Yep. game-id.iXX (IQ) in contrast to game-id.sXX (Save)

by fingolfin, 13 years ago

Attachment: iqpoints.diff added

comment:6 by fingolfin, 13 years ago

Owner: changed from fingolfin to eriktorbjorn

comment:7 by fingolfin, 13 years ago

I started working on a patch which stores the IQ points into "TARGETNAME.___", but don't have the time / interest to finish it at the moment. It duplicates some code, and it only works when loading/saving games via F5 -- but is not triggered when using Alt-F5, or when starting a game w/o using a previously made save state. And probably has other problems, too.

Mabye Torbjörn is interested in looking into this? :-) If not, just unassign it again :).
File Added: iqpoints.diff

by eriktorbjorn, 13 years ago

Attachment: iqpoints2.diff added

Completely untested patch

comment:8 by eriktorbjorn, 13 years ago

> or when starting a game w/o using a previously made save state

That sounds like the technically correct - but perhaps not the ideal - behaviour. My manual says:

"Your Series points are saved when you finish a game, save a game, or load a game. When you start a new game you will have no Series points until you load or save a game."

Is there any reason to trigger it on Alt-F5?

I don't have the time to look any further right now. I'm attaching a completely untested modified patch which puts the IQ save/load code in a separate function (in ScummEngine -- should it be in ScummEngine_v5 instead?) that's called on save/load and when ScummVM shuts down.
File Added: iqpoints2.diff

comment:9 by SF/thunderpeel2001, 13 years ago

It seems I have been posting about these bloody IQ points all over the place, but I've not been able to see the submissions afterwards, and so I've posted about them again! Sorry about that, everyone. (It's now fixed and won't happen again!)

I'd just like to add what I said about the IQ system in another submission (which should be deleted).

Basically, the original game made a file called "IQ-POINT" which was stored along side the save games, and stored the SERIES data separately from normal save games. There is only ever need for one "IQ-POINT" file (so "game-id.iXX" is incorrect as there would not be game-id.i01, game-id.i02 etc.).

It works in a similar way to the "Achievements" system on an XBox360; when a user has done something once, they are rewarded for it. If they do it again, they don't get the reward again, even if it's a different game. It's essentially a "check list" of all the different ways of solving the puzzles in the game, and allows the user to go back and play the game again, trying different things. As such, the maximum score (as I'm sure you all know) is 800 points.

In the original EGA/VGA/Amiga versions (not sure about FM Towns), the file was only accessed during SAVE or LOAD. It was NOT accessed at the completion of the game (hence the "Make sure to LOAD your game to save your IQ score" message at the end of the game). There doesn't seem to be any reason for this other than limitations of the time (Fate of Atlantis updates the IQ file more frequently, for example, and doesn't require a user to LOAD their game to save the points), so it wouldn't be bad if ScummVM was more user friendly and saved/loaded the IQ-POINT file more easily!

Sorry if this was already known, but I thought I should try and help as best I can! Thanks!

comment:10 by fingolfin, 13 years ago

No, the file was not named IQ-POINTS -- that's the name used by FOA. I already described below how the file was named in Indy3. The name is assigned by the game scripts anyway.

We know how the IQ points system works; it's implemented by the game scripts.

comment:11 by bluegr, 12 years ago

This feature request seems to be split into two parts:
1) showing the current IQ points and
2) properly saving the series IQ points

Just thought I should mention this, for the first part of the feature request: it is possible to view your IQ points within your game by using the alt-F5 key to view the original save/load dialog, or by pressing the "i" key

comment:12 by SF/thunderpeel2001, 12 years ago

TheBlueGr:

Yes, you're absolutely right. The first section appears to be fully implemented, it's the second part that's not been done. Just playtested in OXO and things are the same.

comment:13 by fingolfin, 11 years ago

This has now been completely implemented, mainly thanks to tobigun!

comment:14 by fingolfin, 11 years ago

Owner: changed from eriktorbjorn to fingolfin
Status: newclosed

comment:15 by digitall, 12 months ago

Component: Engine: SCUMM
Game: Indiana Jones 3
Note: See TracTickets for help on using tickets.