Code Game Engine Message Creation

From OPU Wiki

Outpost2.?sIssueOptPacket@TethysGame@@CIXHH@Z

Address Opcode Mnemonics Comment
00477E90 83EC 74 SUB ESP,74
00477E93 A1 1CEB5600 MOV EAX,DWORD PTR DS:[56EB1C] Get current game time (Tick)
00477E98 66:894C24 10 MOV WORD PTR SS:[ESP+10],CX (Store data to message buffer at data offset 2)
00477E9D 53 PUSH EBX
00477E9E 66:895424 16 MOV WORD PTR SS:[ESP+16],DX (Store data to message buffer at data offset 4)
00477EA3 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] Load address of message buffer
00477EA7 894424 0A MOV DWORD PTR SS:[ESP+A],EAX Store game time (Tick) to message buffer (header)
00477EAB 51 PUSH ECX Arg 1 - Address of message buffer
00477EAC A1 28EB5600 MOV EAX,DWORD PTR DS:[56EB28] Load local player number
00477EB1 8BC8 MOV ECX,EAX Begin calculating internal player object offset from index
00477EB3 C1E0 03 SHL EAX,3
00477EB6 66:C74424 0C 0600 MOV WORD PTR SS:[ESP+C],6 Store message length into message buffer (header)
00477EBD 8D1440 LEA EDX,DWORD PTR DS:[EAX+EAX*2]
00477EC0 C74424 08 2B000000 MOV DWORD PTR SS:[ESP+8],2B Store message type into message buffer (header)
00477EC8 8D1C91 LEA EBX,DWORD PTR DS:[ECX+EDX*4]
00477ECB 8D04D9 LEA EAX,DWORD PTR DS:[ECX+EBX*8]
00477ECE 8D0C85 1CEF5600 LEA ECX,DWORD PTR DS:[EAX*4+56EF1C] (Arg - "this" pointer) Pointer to internal player object
00477ED5 E8 2664F9FF CALL Outpost2.0040E300 Process game engine message
00477EDA 5B POP EBX
00477EDB 83C4 74 ADD ESP,74
00477EDE C3 RETN


Outpost2.?SetDaylightEverywhere@TethysGame@@SIXH@Z

Address Opcode Mnemonics Comment
00478210 83EC 74 SUB ESP,74
00478213 A1 1CEB5600 MOV EAX,DWORD PTR DS:[56EB1C] Get current game time (Tick)
00478218 66:894C24 12 MOV WORD PTR SS:[ESP+12],CX (Store data to message buffer at data offset 0)
0047821D 53 PUSH EBX
0047821E 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] Load address of message buffer
00478222 894424 0A MOV DWORD PTR SS:[ESP+A],EAX Store game time (Tick) to message buffer (header)
00478226 51 PUSH ECX Arg1 - Address of message buffer
00478227 A1 28EB5600 MOV EAX,DWORD PTR DS:[56EB28] Load local player number
0047822C 8BC8 MOV ECX,EAX Begin calculating internal player object offset from index
0047822E C1E0 03 SHL EAX,3
00478231 66:C74424 0C 0600 MOV WORD PTR SS:[ESP+C],6 Store message length into message buffer (header)
00478238 8D1440 LEA EDX,DWORD PTR DS:[EAX+EAX*2]
0047823B 66:C74424 18 1300 MOV WORD PTR SS:[ESP+18],13 (Store data to message buffer at data offset 2)
00478242 8D1C91 LEA EBX,DWORD PTR DS:[ECX+EDX*4]
00478245 C74424 08 2B000000 MOV DWORD PTR SS:[ESP+8],2B Store message type into message buffer (header)
0047824D 8D04D9 LEA EAX,DWORD PTR DS:[ECX+EBX*8]
00478250 8D0C85 1CEF5600 LEA ECX,DWORD PTR DS:[EAX*4+56EF1C] (Arg - "this" pointer) Pointer to internal player object
00478257 E8 A460F9FF CALL Outpost2.0040E300 Process game engine message
0047825C 5B POP EBX
0047825D 83C4 74 ADD ESP,74
00478260 C3 RETN


Outpost2.?SetDaylightMoves@TethysGame@@SIXH@Z

Address Opcode Mnemonics Comment
00478270 83EC 74 SUB ESP,74
00478273 A1 1CEB5600 MOV EAX,DWORD PTR DS:[56EB1C] Get current game time (Tick)
00478278 66:894C24 12 MOV WORD PTR SS:[ESP+12],CX (Store data to message buffer at data offset 0)
0047827D 53 PUSH EBX
0047827E 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4] Load address of message buffer
00478282 894424 0A MOV DWORD PTR SS:[ESP+A],EAX Store game time (Tick) to message buffer (header)
00478286 51 PUSH ECX Arg1 - Address of message buffer
00478287 A1 28EB5600 MOV EAX,DWORD PTR DS:[56EB28] Load local player number
0047828C 8BC8 MOV ECX,EAX Begin calculating internal player object offset from index
0047828E C1E0 03 SHL EAX,3
00478291 66:C74424 0C 0600 MOV WORD PTR SS:[ESP+C],6 Store message length into message buffer (header)
00478298 8D1440 LEA EDX,DWORD PTR DS:[EAX+EAX*2]
0047829B 66:C74424 18 1200 MOV WORD PTR SS:[ESP+18],12 (Store data to message buffer at data offset 2)
004782A2 8D1C91 LEA EBX,DWORD PTR DS:[ECX+EDX*4]
004782A5 C74424 08 2B000000 MOV DWORD PTR SS:[ESP+8],2B Store message type into message buffer (header)
004782AD 8D04D9 LEA EAX,DWORD PTR DS:[ECX+EBX*8]
004782B0 8D0C85 1CEF5600 LEA ECX,DWORD PTR DS:[EAX*4+56EF1C] (Arg - "this" pointer) Pointer to internal player object
004782B7 E8 4460F9FF CALL Outpost2.0040E300 Process game engine message
004782BC 5B POP EBX
004782BD 83C4 74 ADD ESP,74
004782C0 C3 RETN
Personal tools