Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Figure out remaining fields of level chunk L08 (Level Object Table) #7

Open
dertseha opened this issue May 14, 2015 · 3 comments
Open

Comments

@dertseha
Copy link
Member

L08 is defined for the most part. Still, some fields are declared as "Unknown". Determine their meaning.

@dertseha
Copy link
Member Author

While working on the surveillance chunk and the screens I found some information on the last bytes of an entry: Offset 0018 specifies which frame is currently displayed for screens.

This also somehow worked for surveillance cams: When this value was not 0x00, the screen would skip through various images until landing on the live feed. The screen would even show the other available surveillance feed for a brief moment. When the screen reached the actual feed (the 0 frame), it stopped zapping.

@dertseha
Copy link
Member Author

dertseha commented Jul 10, 2017

Some progress while trying to crack ICE:
Offset 0018 would determine whether the ICE is actually present. Setting hitpoints on a software does not automatically make the ICE appear. Any value != 0x00 in 0018 makes it visible.

I suspect this value to be the strength of the ICE, but I am currently struggling with two other problems:

  1. ICE wouldn't attack in created levels. Only sometimes, after passing it several times it would attack. I somewhat put this into the seemingly related problem that touching items sometimes doesn't register (no picking up of software, exit portals not working)
  2. An ICE on aggro stores its state somewhere completely hidden. ICE would attack as soon as in range when on aggro - even after rejoining cyberspace or loading a savegame. So far I could not find any state information in any of the level-specific tables. And I went through every (un)likely table.

@dertseha
Copy link
Member Author

dertseha commented Jul 12, 2017

It seems that modifications regarding the object tables is not easily transferred between archive changes in one run of the engine. Restarting the game with a changed archive (changed object parameters) of cyberspace seems to cause these issues of objects not registering contact. As soon as the archive (or savegame) is started from a fresh engine start, everything is fine.

With this sorted out, the following things could be identified:
0018 appears to be an "ICE" flag, though the original archive has different values in it. As soon as this field is != 0x00, ICE is present. Changing the value of this field did not have any visible effect. Tested parameters: different drill level, health value, and ICE level
001A then is the ICE level from 0x00 to 0xFF. 0xFF is very tough and aggressive.

Higher ICE level also make the blue infestation look bigger, even with identical health values.
And, as a nice addition: the engine supports putting ICE also on items - so, cyber exits can be infested as well for instance! I'd suspect this to work on switches as well then.

dertseha added a commit that referenced this issue Jul 12, 2017
dertseha added a commit that referenced this issue Aug 17, 2017
dertseha added a commit that referenced this issue Jun 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant