From: Christian H. <fir...@pi...> - 2002-06-09 10:27:26
|
heya; big news: Wire Puzzles: Their state IS stored within the switch info (I forgot to copy my savegame to the datadir shack uses ;) Both the IS and SHOULD states are stored within a 32 bit field each. (should: offset 0x0014, is: offset 0x0018) Each bitfield is made up by 2 three bit combos describing one connection (wire). This makes only two int16 fields remaining to be hacked. I tried to associate them with the wire colors, together with the class type (Wire puzzles appear to have 9 3 1, 9 3 2, 9 3 3) - but failed (always one exception turned up...). Perhaps the amount of wires is another parameter for the colors... Another info I'm missing is the power level one wire gives. a) The power level is hardcoded associated with the color b) (more likely) the power output is calculated on how 'near' the wire is to it's target connection... Power Puzzles: The second Map Object reference adresses a trigger object being an action 0x00 trigger without condition. The 'private' bytes of the trigger object appear to describe the state of the puzzle. Unfortunately, the state is coded in a weird way. The most simplest puzzle for example (lvl7, last antenna, first puzzle to get in) has only three nodes (init: X X X). The initial trigger state has three identical entries (using proper bit alignment so that the nodes are described with 3 bits each) -- but changing the puzzle to "X + +" made unrelated changes to the trigger state... Could it be compressed? I've updated the code (also added trigger.c which loads the raw data; plus another scratchpad ;) plus the ss-specs doc with the info we figured out already. 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 16:13:13
|
firefreak wrote: > Wire Puzzles: > Their state IS stored within the switch info (I forgot to > copy my savegame to the datadir shack uses ;) :) > Both the IS and SHOULD states are stored within a 32 bit > field each. (should: offset 0x0014, is: offset 0x0018) > Each bitfield is made up by 2 three bit combos describing one > connection (wire). Giving a maximum of 5 wires and 8 connectors each side, I make it. > This makes only two int16 fields remaining to be hacked. > I tried to associate them with the wire colors, together with > the class type (Wire puzzles appear to have 9 3 1, 9 3 2, 9 3 3) - > but failed (always one exception turned up...). > Perhaps the amount of wires is another parameter for the colors... How many different wire colours are there? I can't remember off hand. Are there any wire puzzles on higher Puzzle settings that have all wires the same colour? AIUI the various puzzle settings for wires are: level 0 instant solution; level 1 all wires same colours (presumably the OR of the different wire fields is checked); level 2 threshold as given; level 3 full power always needed. Is this right? > Another info I'm missing is the power level one wire gives. > a) The power level is hardcoded associated with the color > b) (more likely) the power output is calculated on how 'near' > the wire is to it's target connection... Likely B I'd have said ... try subtracting target from actual for all the 3-bit fields. > Power Puzzles: > The second Map Object reference adresses a trigger object > being an action 0x00 trigger without condition. > The 'private' bytes of the trigger object appear to describe > the state of the puzzle. A-ha! Another helper null trigger. > Unfortunately, the state is coded in a weird way. Plus =E7a change, eh? >=20 > The most simplest puzzle for example (lvl7, last antenna, > first puzzle to get in) has only three nodes (init: X X X). > The initial trigger state has three identical entries > (using proper bit alignment so that the nodes are described > with 3 bits each) -- but changing the puzzle to "X + +" made > unrelated changes to the trigger state... >=20 > Could it be compressed? Could be but I'm inclined to doubt it. There aren't any more cross-references anywhere, are there? > I've updated the code (also added trigger.c which loads the > raw data; plus another scratchpad ;) plus the ss-specs doc > with the info we figured out already. Great work, thanks. We can say that all triggers and switches have the same basic format (switches and panels have an extra 16-bit field which we don't know what it is yet). This is index, prev, next (as always), action (0 for default, which tends to be the case for switches), condition (4 bytes), then links and special. A trigger link field is 4 bytes; the first 16-bit word is the object index of the target trigger, I think the second is a delay. (A propagate trigger action 6 just has 4 link fields). Here's another little tidbit for you: the X-22 panel on level R has condition code 00 07 08 00. Isotope X-22 is object 8/7/0. Sometimes condition is the C/S/T of the object to stick into it. Is there a flag for condition type, or does it depend on panel type? jim --=20 http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all t= he loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarl= et" |
From: Christian H. <fir...@pi...> - 2002-06-10 20:50:25
|
jim wrote: > How many different wire colours are there? I can't remember off hand. A= re > there any wire puzzles on higher Puzzle settings that have all wires th= e > same colour? I've found: - all yellow, all blue, all violet - combination of red, violet, blue, yellow (always in this order) > level 0 instant solution; > level 1 all wires same colours=20 > level 2 threshold as given; > level 3 full power always needed. Is this right? ok, but I don't see any big difference between 2 and 3 as the power level per wire is relative to the solve level - it must be because the target state of the puzzle doesn't change... Or did I miss something? (just made a testgame: on level 3 always the 4 colour combo is used and full power is to be reached) > Likely B I'd have said ... try subtracting target from actual for all t= he > 3-bit fields. hmm... this could be an idea. >>Power Puzzles: >>Unfortunately, the state is coded in a weird way. > Plus =E7a change, eh? I've updated the scratchpad in trigger.c with all the possible states for the small puzzle on level 7. Ignoring the rightmost byte of the trigger info, you can line up the bits in triples, so that the 3 nodes are (mostly) determined by 001 =3D X 010 =3D + (000 could be empty, and 011 a full block...) for example: state + + X has state bytes ... 0xA4 0x00 bit triples: ... 001 010 010 000 000 000 per definition this puzzle has a size of 3x3, so it seems to be that the three zero nodes are the empty line on the top. BUT: state X X + has state bytes ... 0x12 0x01 bit triples: ... 000 001 001 000 000 001 huh?? Plus: in every state having the rightmost node on (+) the corresponding triple is zero and the first (rightmost) one is 001 (see scratchpad) -- It just doesn't make any sense... Furthermore the very first puzzle on Medical (my second I'm hacking on) has some states documented in the scratchpad. One state has all nodes off, another one with all nodes on. The difference between those two states should point out the alignment for the node triples, but it doesn't conclude to a period. And there are some bits (marked with ?) which pop up without any reason... Jim, do you have any suggestion on this? > There aren't any more cross-references anywhere, are there? Doesn't seem to be. The helper trigger ought to be the state, but I just don't get it's key... > Sometimes condition is the C/S/T of the object to stick into it.=20 > Is there a flag for condition type, or does it depend on panel type? I guess panels always need an object to attach to. Let's storm brain: Isotope, Relais 428, Retina Scan, Antennas, Chipset -- any more? d'oh -- just looked at the scratchpad; The antennas have a zero condition (btw: the Maintenance panel in the scratchpad is any random one -- didn't know the way to 428 by heart ;) ff1 --=20 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 12:26:38
|
firefreak wrote: > jim wrote: > > How many different wire colours are there? I can't remember off hand. A= re > > there any wire puzzles on higher Puzzle settings that have all wires th= e > > same colour? >=20 > I've found: > - all yellow, all blue, all violet > - combination of red, violet, blue, yellow (always in this order) This would suggest that there are 4 colours; red, violet, blue, yellow, which gives us a 2-bit colour field. If the multi-colour puzzles are always in the same order we don't need individual colour fields, so there's only one colour field for the whole puzzle. > > level 0 instant solution; > > level 1 all wires same colours=20 > > level 2 threshold as given; > > level 3 full power always needed. Is this right? Level 2 seems to have all wires same colours too, at least for some puzzles. > ok, but I don't see any big difference between 2 and 3 as the > power level per wire is relative to the solve level - it must > be because the target state of the puzzle doesn't change... > Or did I miss something? (just made a testgame: on level 3 > always the 4 colour combo is used and full power is to be > reached) Why should power per wire be relative to solve level? The target state of the puzzle has nothing to do with threshold power, it just determines the "correct" states of the wires. Not all of them necessarily have to be correct for the threshold to be reached. > > Likely B I'd have said ... try subtracting target from actual for all t= he > > 3-bit fields. >=20 > hmm... this could be an idea. I had a brief look last night and it seems that each wire has 4 states: both ends wrong, wire pointing in wrong direction; one end correct; both ends wrong, wire pointing in correct direction; wire in the right place. In that order as far as amount of power given goes. I didn't notice that how close an end is to its target connector makes a difference. > >>Power Puzzles: > >>Unfortunately, the state is coded in a weird way. > > Plus =E7a change, eh? >=20 > I've updated the scratchpad in trigger.c with all the possible > states for the small puzzle on level 7. Ignoring the rightmost > byte of the trigger info, you can line up the bits in > triples, so that the 3 nodes are (mostly) determined by > 001 =3D X > 010 =3D + > (000 could be empty, and 011 a full block...) >=20 > for example: state + + X has state bytes ... 0xA4 0x00 > bit triples: ... 001 010 010 000 000 000 >=20 > per definition this puzzle has a size of 3x3, so it seems to > be that the three zero nodes are the empty line on the top. >=20 > BUT: state X X + has state bytes ... 0x12 0x01 > bit triples: ... 000 001 001 000 000 001 >=20 > huh?? Wrong endianness. xxx -> 0092 -> (000000) 001 001 001 (0) xx+ -> 0112 -> (000000) 010 001 001 (0) x+x -> 00A2 -> (000000) 001 010 001 (0) and so on. I suggest the following algorithm. 9*3 =3D 27, round up to 32 so we have 4 bytes of data. Start from the 4th byte counting BACKWARDS, 00 92 00 00. When we need a bitfield take the bottom 3 bits. When we need a new byte rotate it in at the top. 00009200 -> 000 -> 00001240 [ ] 00001240 -> 000 -> 00000248 [ ] 00000248 -> 000 -> 00000049 [ ] 00000049 -> 001 -> 00000009 [x] 00000009 -> 001 -> 00000001 [x] 00000001 -> 001 -> 00000000 [x] =2E.. and the rest are blank, of course. > Furthermore the very first puzzle on Medical (my second I'm hacking > on) has some states documented in the scratchpad. > One state has all nodes off, another one with all nodes on. > The difference between those two states should point out the alignment > for the node triples, but it doesn't conclude to a period. > And there are some bits (marked with ?) which pop up without any > reason... Ooops, that doesn't work for the medical one. Hold on ... BINGO! Got it! Start with the last 32-bit word in the definition, rotating bits out 3 at a time from the bottom. When you run out, keep the bits you've got and start from the bottom bit of the next previous word (so the bottom bit of the word at offset 0x14 is the top bit of the 11th triple). Keep going until you've got them all. This takes up (potentially) all 16 "special" bytes of the trigger definition, giving a maximum of 127 bits for a 3x9 grid. Take for example a 4x3 grid: abcd efgh ijkl The bitfields in the last 2 words are 0x14: ---- ---- ---- ---- ---- ---- ---- lllk 0x18: kkjj jiii hhhg ggff feee dddc ccbb baaa You were right, they're coded in a weird way. > Doesn't seem to be. The helper trigger ought to be the state, > but I just don't get it's key... The helper trigger is indeed the state, and all of it is the state. The other fields in the panel, or some of them, presumably give extra switching nodes and/or blanks for higher difficulty levels. > > Sometimes condition is the C/S/T of the object to stick into it.=20 > > Is there a flag for condition type, or does it depend on panel type? >=20 >=20 > I guess panels always need an object to attach to. > Let's storm brain: Isotope, Relais 428, Retina Scan, Antennas, > Chipset -- any more? Not that I can think of, no. There are other quest items defined, but not used. > d'oh -- just looked at the scratchpad; The antennas have a zero > condition (btw: the Maintenance panel in the scratchpad is any > random one -- didn't know the way to 428 by heart ;) Well, perhaps antenna panels are a special case, then. You do have to open them first. What are the chances that the dev team kept the blast doors to Maintenance shut until the demodulator was needed because they didn't have any way for the panel to conditionally refuse to accept it? jim --=20 http://madeira.physiol.ucl.ac.uk/people/jim/ "... I naturally gravitated to London, that great cesspool into which all t= he loungers and idlers of the Empire are irresistibly drained." - Sir Arthur Conan Doyle, "A Study in Scarl= et" |
From: Christian H. <fir...@pi...> - 2002-06-11 15:56:13
|
jim wrote: > This would suggest that there are 4 colours; red, violet, blue, yellow, > which gives us a 2-bit colour field. If the multi-colour puzzles are > always in the same order we don't need individual colour fields, so > there's only one colour field for the whole puzzle. multi-colour: always in the same order 2-bit colour field: the two remaining 16bit fields don't seem to be related to colour. but perhaps... > Level 2 seems to have all wires same colours too, at least for some > puzzles. Yes - this is why I yet don't know what determines the colour. > Not all of them necessarily have to be correct for the threshold > to be reached. hmm - I thought about that too - possible. > I had a brief look last night and it seems that each wire has 4 states: > both ends wrong, wire pointing in wrong direction; one end correct; both > ends wrong, wire pointing in correct direction; wire in the right place. > In that order as far as amount of power given goes. I didn't notice that > how close an end is to its target connector makes a difference. That was just a thought from my side - I haven't done a field test like you did :) > Wrong endianness. D'OH A big Thank You there - and again, it was something small... > The helper trigger is indeed the state, and all of it is the state. The > other fields in the panel, or some of them, presumably give extra > switching nodes and/or blanks for higher difficulty levels. As far as I have seen, the difficulty level only affects the "side effects" of the puzzles. But I'll make field tests on this. 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:04:51
|
firefreak wrote: > multi-colour: always in the same order No specific data needed. > 2-bit colour field: the two remaining 16bit fields don't seem to be > related to colour. but perhaps... Well there are only 2 (well, one and a half) fields left with anything in them. Although they might use some of the fields in the map_object. > > Not all of them necessarily have to be correct for the threshold > > to be reached. > hmm - I thought about that too - possible. Well, they do if the threshold is 100% but not otherwise, or there'd be no point having a threshold. > D'OH > A big Thank You there - and again, it was something small... ;) > As far as I have seen, the difficulty level only affects the > "side effects" of the puzzles. But I'll make field tests on this. There does seem to be an extra switch box on difficulty 3 for most puzzles, but I can't find its coordinates specified anywhere. The unknown bits of the puzzle description field in the panel info are source and destination for the power flow and side effects. I've added some info to the specs about that, and also some code to read puzzle information. Looks as if the puzzle type is determined by bit 28 of the helper xref / wire description word. Definite progress! 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" |