Got into reverse engineering mode

Hi! Got the Operation Stealth versions’ opcode comparison done after all (It took an awful lot of time with all the procrastination and indecision thrown in and it wasn’t very inspiring work) and now I’ve been mostly reverse engineering Operation Stealth’s missing opcodes or fixing existing ones’ implementations. Feels a lot better now :-). Reverse engineering is fun!

IDA‘s graph view has proven extremely useful. It helps a lot in understanding what a function does and how it does it by giving a flow chart view of the function. It wouldn’t be easy to go back to using IDA without it, I’ll say! The graph view is one good reason for getting a license for IDA Pro as the freeware version 4.9 of IDA doesn’t have it.

Mid-term goals

Talked with Sev and he urged me onwards as I was still fiddling with the opcode comparison on Monday evening. So we set a new goal for the mid-term: All unimplemented opcodes that are used in Operation Stealth’s intro have to be implemented by mid-term (And fix an animation related regression). Here’s the goal in parts:

Implement unimplemented opcodes used in intro:

  • 40h: Undefined opcode (Was o1_closePart in Future Wars)
  • A1h: o2_removeGfxElementA0
  • A2h: o2_opA2
  • A3h: o2_opA3

And fix the animation regression in Operation Stealth’s very first room (The actor just slides around unanimated).

Recent achievements

So here’s what I’ve got done recently:

Fixed already existing opcodes:

  • 08h: o1_checkCollision in r32790
  • 83h: o2_isSeqRunning in r32804
  • 9Ah: o2_wasZoneChecked in r32790
  • A0h: o2_addGfxElementType20 (Renamed opcode) in r32769

Implemented missing opcodes:

  • 82h: o2_modifySeqListElement (Renamed opcode) in r32786
  • 8Dh: o2_op8D (No good name yet) in r32785
  • A1h: o2_removeGfxElementType20 (Renamed opcode) in r32769
  • A2h: o2_addGfxElementType21 (Renamed opcode) in r32769
  • A3h: o2_removeGfxElementType21 (Renamed opcode) in r32769

Added Operation Stealth support for:

  • zoneQuery in r32790 (Only used in Operation Stealth)
  • addOverlay in r32816 (Was previously Future Wars specific)

What’s still left of the mid-term goals:

As the opcode 40h turned out to be a no-operation in Operation Stealth’s PC version (It was o1_closePart in Future Wars) it only leaves me an actor animation regression to fix (Previously actor animation worked in the very first room in Operation Stealth, but now it bugs, the actor isn’t animated, he just slides around like on wheels). So that’s to go and then I’ve got my mid-term goals done.