Code:
004D3BDD - mov edi,esi (not exactly sure why this is here)
004D3BEC - mov [esi],eax (esi is a pointer to the player, eax is player ID...)
if you're looking at our Player structure, should be
unsigned short m_ID
^
(when a player joins)
this code is called at...
004D3971 - CALL 004D3BD0
^called by
004DD3FF - call 004E1E60
all values are in hex (0x20, 0x40, etc)
when RUSSIA WINS hosts game | Dwood joins hosted game | USA JOIN
EAX = 007F0001
ECX = 0 (player index??) | 20 | 40
EDX = 0 (player index??mb team??) | 1 (player index) | 2
EBX = 1 (??, successful join mb [like banning?])
EBP = 007FC467 |7FC487 |7FC4A7
ESI = pointer to player name
EDI = 0080DD40 (??)
EBP points to a value
when i host,
00 00 00 00
when you join
00 01 01 00... could be (??) (player #) (team #) (??)
second test (this time, im on team 1)
00 00 00 00 (me)
00 00 01 00 (you)
third test (in order, no team switching, me, RUSSIA, USA)
00 00 00 00
00 01 01 00
00 00 02 00
registers up top remain the same
analysis for pointed structure by EBP:
00 (team) (player #) 00
EAX and EDI point to a bunch of 0s, maybe they are for bitwise operations?
more info on ESI register above
ESI points to this structure
seems to be 32 bytes
24 bytes = player name
last 8 bytes go for me as follows:
01 00 FF FF 00 00 00 00
for you, same structure, except last 8 bytes
02 00 FF FF 01 00 01 01
for me, with Dwood on blue
02 00 FF FF 01 00 00 01.... meaning that the second to last byte = team
for USA WINS joins as third player (joins to red)
02 00 FF FF 02 00 00 02
assuming first byte means 01 for host, 02 for client
(above) 00 FF FF (player index+1) 00 (destination team) (player index+1)
Thanks to IGM.Bitidork for help in finding these addresses.
Bookmarks