From: jim <ji...@ma...> - 2002-06-06 17:40:49
|
I'm moving this to hackers ... firefreak wrote: > As promised quite some days ago, I started to hack the > switch info. Although not much found out yet, I already got > some vital values (eg accessable decks for elevator panel, > size of puzzles, ...) Good going! Tiny tidbit for you: the fields at byte offsets 0x0c and 0x10 of cyberjacks are the start x and y coords on entry to c/space, and 0x14 is almost certainly z. The 4 "security" (condition for operation) bytes are the same as for doors, I think it's a game variable and value. > I've set up a small scratchpad on top of switch.c which I'll > remove again when (most of) the info is revealed. Looking at it now. > Funny, years ago I spent hours on solving the puzzles; Now > I'm spending hours on how they actually work ;) ;) Cheers, jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-06 21:53:21
|
heya jim wrote: > Good going! Tiny tidbit for you: the fields at byte offsets 0x0c and 0x10 > of cyberjacks are the start x and y coords on entry to c/space, and 0x14 > is almost certainly z. ah - thanks. > The 4 "security" (condition for operation) bytes > are the same as for doors, I think it's a game variable and value. It could also be the level of security to be (b)reached, as they are 4 bytes for 4 plot levels having the last one at 0xFF which could be in relation to 'no security' on plot 0... but it would also mean that this table and it's values are double-inverted... some additional info: I've played a bit, edited some of the puzzles & wires and then loaded the savegame: Unfortunately the state of them wasn't stored within the 30 Bytes. So these 30 Bytes only 'describe' the Switch, and it's state is stored somewhere else. That's just about 600k bytes to be searched... :/ ff1 -- We're the good guys. |
From: jim <ji...@ma...> - 2002-06-07 14:42:49
|
firefreak wrote: > > The 4 "security" (condition for operation) bytes > > are the same as for doors, I think it's a game variable and value. > > It could also be the level of security to be (b)reached, as they > are 4 bytes for 4 plot levels having the last one at 0xFF which > could be in relation to 'no security' on plot 0... but it would > also mean that this table and it's values are double-inverted... I never thought of that, but now you mention it you're probably right. How about minimum security for activation, out of 255? On second thoughts, no. Level 1 armoury: 5011 FFCD. Level 4 McLeod's office: 5014 FF60. Level 1 elevator: 5011 FF60. I submit that 501x == level x security, likely counting down from 0. Panel actions seem to be mostly the same format as triggers, check the specs. > I've played a bit, edited some of the puzzles & wires and then loaded > the savegame: Unfortunately the state of them wasn't stored within the > 30 Bytes. So these 30 Bytes only 'describe' the Switch, and it's state > is stored somewhere else. > That's just about 600k bytes to be searched... :/ Blerh. So the puzzle info only stores the default state. jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: jim <ji...@ma...> - 2002-06-07 15:07:13
|
Elevators: The other elevator parameters give the object ID of the panels on each level. Offset 0c = 2nd level, 0e = lowest level, 12 = highest level for a 3-level elevator. The condition for getting an elevator to go up to level 6 is 0008 1f01. What is this in-game? jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-07 15:13:54
|
jim wrote: > The condition for getting an elevator to go up to level 6 is 0008 1f01. > What is this in-game? That would be the elevator from 3 to 6, right? If you want to go up there but haven't destroyed the laser yet, the Message says something like "Power diverted to Reactor Level". I encountered this once a long time ago. ff1 -- We're the good guys. |
From: jim <ji...@ma...> - 2002-06-07 15:21:21
|
firefreak wrote: > jim wrote: > > > The condition for getting an elevator to go up to level 6 is 0008 1f01. > > What is this in-game? > > That would be the elevator from 3 to 6, right? > If you want to go up there but haven't destroyed the laser yet, the > Message says something like "Power diverted to Reactor Level". > I encountered this once a long time ago. "power diverted to level R" is string 31 in the trap messages chunk ... might that be the 1f then? Bingo! 0008 >= 01 else message 1f, or something to that effect. Presumably an ff in that field gives the SHODAN face and "blocked" message ... jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-07 15:31:19
|
jim wrote: > 0008 >= 01 else message 1f, or something to that effect. > Presumably an ff in that field gives the SHODAN face and "blocked" message ... and: > I submit that 501x == level x security, likely counting down from 0. I just had a thought: what if those Variable Values aren't the value itself, but an index into a levels (or 'Global Game') Variable Table? Also the Trigger Table adresses Variables throught 16bit values. So: assuming that is true, the game and each deck would need a table of the current state of the variables (or init state in archive.res) idea? ff1 -- We're the good guys. |
From: jim <ji...@ma...> - 2002-06-07 15:39:11
|
firefreak wrote: > I just had a thought: what if those Variable Values aren't the value > itself, but an index into a levels (or 'Global Game') Variable Table? > Also the Trigger Table adresses Variables throught 16bit values. Certainly there would be a set of game globals, yes. I'm beginning to be of the opinion that the low 12 bits of the first word is variable ID and the high 4 comparison type (0 equals, 5 less than?). Then byte 2 would be value and byte 3 fail message. jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-09 10:36:48
|
jim wrote: > I'm beginning to be of the opinion that the low 12 bits of the > first word is variable ID and the high 4 comparison type (0 equals, > 5 less than?). Then byte 2 would be value and byte 3 fail message. I guess there's more to that: Elevator 6->Beta has 0F 00 00 5E (0x000F, 0x00, 0x5E) Elevator 6->7 has 0F 00 01 20 (0x000F, 0x01, 0x20) 0x000F appears to be the check for the jettison. msg 0x5E is "Beta Grove already jettisoned." msg 0x20 is "Elevator disabled: BioHazard emergency." so the 0x01 seems to be a NOT operator (inverting the if/else for the msg)... ff1 -- It is a great thing when you realize that you still have the ability to surprise yourself. Makes you wonder what else you can do. |
From: jim <ji...@ma...> - 2002-06-10 15:21:16
|
firefreak wrote: > > I'm beginning to be of the opinion that the low 12 bits of the > > first word is variable ID and the high 4 comparison type (0 equals, > > 5 less than?). Then byte 2 would be value and byte 3 fail message. > > I guess there's more to that: > Elevator 6->Beta has 0F 00 00 5E (0x000F, 0x00, 0x5E) > Elevator 6->7 has 0F 00 01 20 (0x000F, 0x01, 0x20) > > 0x000F appears to be the check for the jettison. > msg 0x5E is "Beta Grove already jettisoned." > msg 0x20 is "Elevator disabled: BioHazard emergency." > > so the 0x01 seems to be a NOT operator (inverting the if/else for > the msg)... I think you misunderstood. I was suggesting that the second field is the VALUE and the top nybble of the first the condition type. The fail message has an implicit "else" attached. So in pseudo-code 6-Beta would be if (g15 == 0) { do stuff; } else message (0x5e); and 6-7 is if (g15 == 1) { do stuff; } else message (0x20); which makes perfect sense if variable 15 is the beta jettisoned flag. We should probably make a list of game global variables (what a spoilery document that would be). jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-10 20:04:16
|
jim wrote: > I think you misunderstood. I was suggesting that the second field is the > VALUE and the top nybble of the first the condition type. The fail message > has an implicit "else" attached. ahh - now I got you - ok. > We should probably make a list of game global variables (what a spoilery > document that would be). heh, it probably would. But also very helpful - within ss-specs ? (And also a good base for tech-speak: "Help, I'm stuck in the game!" "Have you set variable 15 already?" "What?" "err - jettisoned Beta..." ;) ff1 -- It is a great thing when you realize that you still have the ability to surprise yourself. Makes you wonder what else you can do. |
From: Christian H. <fir...@pi...> - 2002-06-07 15:37:13
|
I forgot: jim wrote: > Elevators: The other elevator parameters give the object ID of the panels > on each level. So this would be the reference where to drop off the character in the target level, right? ff1 -- We're the good guys. |
From: jim <ji...@ma...> - 2002-06-07 16:37:00
|
firefreak wrote: > jim wrote: > > > Elevators: The other elevator parameters give the object ID of the panels > > on each level. > > So this would be the reference where to drop off the character in the > target level, right? Yes, since elevator panels are always inside the elevator, its coordinates give the tile where the player ends up. Neat. jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-07 16:57:45
|
jim wrote: > Yes, since elevator panels are always inside the elevator, its coordinates > give the tile where the player ends up. Neat. d'oh - problem: on plotlevel 0, all the decks being specified in the second field are accessbible - what now? ff1 -- We're the good guys. |
From: jim <ji...@ma...> - 2002-06-10 16:31:11
|
firefreak wrote: > d'oh - problem: on plotlevel 0, all the decks being specified in the > second field are accessbible - what now? Eh? No they aren't. jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-10 20:01:08
|
jim wrote: >>d'oh - problem: on plotlevel 0, all the decks being specified in the >>second field are accessbible - what now? > > Eh? No they aren't. /me places hand on forehead I tried it out... I guess I just dreamed about that. Anyway - so at least we have a solid reference where to drop off the character. Another idea: is the startup position of the player hardcoded within the exe, or is the healing suite the current location of the player object within archive.res? ff1 -- It is a great thing when you realize that you still have the ability to surprise yourself. Makes you wonder what else you can do. |
From: jim <ji...@ma...> - 2002-06-11 10:38:50
|
firefreak wrote: > Anyway - so at least we have a solid reference where to drop > off the character. Yarh. That's a start ;) We ought to start thinking about level transitions, and to what extent the engine can survive without a level loaded, if you see what I mean. That's for the devlist tho. > Another idea: is the startup position of the player hardcoded > within the exe, or is the healing suite the current location of > the player object within archive.res? Hardcoded as far as I know (which isn't very far). I don't think there is such a thing as a player object. Course, it's only 4 bytes to look for amongst however many ... jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |
From: Christian H. <fir...@pi...> - 2002-06-11 15:44:30
|
jim wrote: >>Another idea: is the startup position of the player hardcoded >>within the exe, or is the healing suite the current location of >>the player object within archive.res? > > Hardcoded as far as I know (which isn't very far). I don't think there is > such a thing as a player object. Course, it's only 4 bytes to look for > amongst however many ... Well - I would guess it's stored somewhere (should be when it comes to savegames) -- As I understood, the archive.res is nothing more than a savegame used for startup... not? ff1 -- It is a great thing when you realize that you still have the ability to surprise yourself. Makes you wonder what else you can do. |
From: jim <ji...@ma...> - 2002-06-12 13:06:45
|
firefreak wrote: > Well - I would guess it's stored somewhere (should be when it comes to > savegames) -- As I understood, the archive.res is nothing more than > a savegame used for startup... not? Hadn't thought of it that way, but you're right, of course. The obvious place to look would be in chunks 4000 and 4001, but there doesn't seem to be a start position there. I suspect that 4001 is inventory, which is why it's practically empty in the initial archive. jim -- http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all the loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarlet" |