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 |
