Author Topic: Op2 Innern Workings  (Read 1627 times)

Offline Eddy-B

  • Hero Member
  • *****
  • Posts: 1186
    • http://www.eddy-b.com
Op2 Innern Workings
« on: February 03, 2006, 09:04:32 AM »
I been working towards understanding the inner workings of Outpost, and more to the point: IWnd and IDlgWnd.

I did get some information from op2hacker, but i don't know what the others here know about it, so i just got started from blank. I already have some stuff written down, and as soon as i got it neatly organized i'll post it here for the others to view, comment, and add stuff to it.
Rule #1:  Eddy is always right
Rule #2: If you think he's wrong, see rule #1
--------------------

Outpost : Renegades - Eddy-B.com - Electronics Pit[/siz

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4954
Op2 Innern Workings
« Reply #1 on: February 03, 2006, 05:47:06 PM »
I have a bit I can add, but not much. I think mostly just heirarchy stuff. Such as what classes derive from what other classes. My notes on this are on my other computer though. I'll try to take a look in a few hours if I have time.


Also, I suspect that those classes aren't complete. I got the feeling that the classes for windowing in OP2Shell.dll just derived from these classes, and implemented the mission functions. I remember there was something to suggest that the classes used by OP2Shell were not quite the same. I think they had a different vtbl, and some of the original entries from the exported classes might have had blank entries in their vtbls. It's been a while since I looked at it, so I could be wrong.
 

Offline Hooman

  • Administrator
  • Hero Member
  • *****
  • Posts: 4954
Op2 Innern Workings
« Reply #2 on: February 04, 2006, 06:29:18 PM »
Ok, here's a dump of some of the info I had on those classes. It'll probably look terrible, but it should suggest certain class inheritance.




Code: [Select]
IWnd.vftable
---------------------
0  004D0120 >004314D0  Outpost2.?RegisterClassA@IWnd@@EAEPBDXZ
1  004D0124  00431E20  Outpost2.??_EIWnd@@UAEPAXI@Z
2  004D0128  004318A0  Outpost2.?Destroy@IWnd@@UAEXXZ
3  004D012C  004315D0  Outpost2.?CreateEx@IWnd@@UAEHKPBDKHHHHPAUHWND__@@PAUHMENU__@@PAXPAUHINSTANCE__@@@Z
4  004D0130  004316B0  Outpost2.?WndProc@IWnd@@UAEJIIJ@Z
5  004D0134  00431740  Outpost2.?CallFilters@IWnd@@UAEHIIJ@Z



IWnd::IDlgWnd.vftable
---------------------
0  004D0138 >004314D0  Outpost2.?RegisterClassA@IWnd@@EAEPBDXZ
1  004D013C  00431ED0  Outpost2.??_EIDlgWnd@@UAEPAXI@Z
2  004D0140  004318A0  Outpost2.?Destroy@IWnd@@UAEXXZ
3  004D0144  004315D0  Outpost2.?CreateEx@IWnd@@UAEHKPBDKHHHHPAUHWND__@@PAUHMENU__@@PAXPAUHINSTANCE__@@@Z
4  004D0148  004316B0  Outpost2.?WndProc@IWnd@@UAEJIIJ@Z
5  004D014C  00431740  Outpost2.?CallFilters@IWnd@@UAEHIIJ@Z
- - - - - - - - - - -
6  004D0150  00431A80  Outpost2.?DoModal@IDlgWnd@@UAEHPBDPAUHINSTANCE__@@@Z
7  004D0154  00431BF0  Outpost2.?DoModeless@IDlgWnd@@UAEHPBDPAUHINSTANCE__@@PAUHWND__@@@Z
8  004D0158  00431DB0  Outpost2.?DlgProc@IDlgWnd@@UAEHIIJ@Z



IWnd::TFrame.vftable
---------------------
0  004D6158 >004314D0  Outpost2.?RegisterClassA@IWnd@@EAEPBDXZ
1  004D615C  00484120  Outpost2.??_ETFrame@@UAEPAXI@Z
2  004D6160  004318A0  Outpost2.?Destroy@IWnd@@UAEXXZ
3  004D6164  004315D0  Outpost2.?CreateEx@IWnd@@UAEHKPBDKHHHHPAUHWND__@@PAUHMENU__@@PAXPAUHINSTANCE__@@@Z
4  004D6168  004889E0  Outpost2.?WndProc@TFrame@@MAEJIIJ@Z
5  004D616C  00431740  Outpost2.?CallFilters@IWnd@@UAEHIIJ@Z
- - - - - - - - - - -
6  004D6170  00488FC0  Outpost2.?ShutDown@TFrame@@MAEXXZ
7  004D6174  004C14B0  Outpost2.004C14B0
8  004D6178  004C14B0  Outpost2.004C14B0
9  004D617C  004C14B0  Outpost2.004C14B0
A  004D6180  004C14B0  Outpost2.004C14B0
B  004D6184  004C14B0  Outpost2.004C14B0
C  004D6188  00484020  Outpost2.?Activate@TFrame@@UAEXXZ
D  004D618C  00484030  Outpost2.?Deactivate@TFrame@@UAEXXZ
E  004D6190  00484040  Outpost2.?OnIdle@TFrame@@UAEXXZ
F  004D6194  00484050  Outpost2.?PreCreateDlg@TFrame@@UAEXXZ
10 004D6198  00484060  Outpost2.?PostCreateDlg@TFrame@@UAEXXZ


TFrame::Dans_RULE_UIFrame
-------------------------
004D6A08

TFrame::OP2ShellWnd
---------------------
0  130110F8  130092B0  Op2shell.130092B0   ; RegisterClassA
1  130110FC  13007A80  Op2shell.13007A80   ; operator destructor()
2  13011100  1300992E  <JMP.&Outpost2.?Destroy@IWnd@@UAEXXZ>
3  13011104  13009928  <JMP.&Outpost2.CreateEx@IWnd@@UAEHKPBDKHHHHPAUHWND__@@PAUHMENU__@@PAXPAUHINSTANCE__@@@Z>
4  13011108  13007F10  Op2shell.13007F10   ; WndProc
5  1301110C  1300991C  <JMP.&Outpost2.?CallFilters@IWnd@@UAEHIIJ@Z>
- - - - - - - - - - -
6  13011110  13009350  Entry address    ; ShutDown
7  13011114  13009430  Op2shell.13009430   ;
8  13011118  130093C0  Op2shell.130093C0   ;
9  1301111C  13007DB0  Op2shell.13007DB0   ;
A  13011120  13007B70  Entry address    ;
B  13011124  13007DC0  Entry address    ;
C  13011128  130099A6  <JMP.&Outpost2.?Activate@TFrame@@UAEXXZ>
D  1301112C  130099A0  <JMP.&Outpost2.?Deactivate@TFrame@@UAEXXZ>
E  13011130  1300999A  <JMP.&Outpost2.?OnIdle@TFrame@@UAEXXZ>
F  13011134  130093A0  Op2shell.130093A0   ; PreCreateDlg
10 13011138  130093B0  Op2shell.130093B0   ; PostCreateDlg