comparison SaveLoad.cpp @ 847:e398541aee60

fixed party save position
author Gloval
date Sat, 30 Mar 2013 19:36:05 +0400
parents bebc19f3d2af
children 08fd1436ef35
comparison
equal deleted inserted replaced
846:39503542470c 847:e398541aee60
228 228
229 229
230 //----- (0045F469) -------------------------------------------------------- 230 //----- (0045F469) --------------------------------------------------------
231 void SaveGame( bool IsAutoSAve, bool NotSaveWorld ) 231 void SaveGame( bool IsAutoSAve, bool NotSaveWorld )
232 { 232 {
233 int result; // eax@1
234 unsigned short *pScreenshot; // edi@5 233 unsigned short *pScreenshot; // edi@5
235 int text_pos; // eax@6 234 int text_pos; // eax@6
236 int v5; // eax@6 235 FILE *pLLoidFile; // edi@24
237 int v6; // eax@6
238 const char *v7; // edi@8
239 FILE *v8; // edi@24
240 char* compressed_buf; // edi@30 236 char* compressed_buf; // edi@30
241 void *v10; // esi@31
242 void *v11; // esi@31
243 void *v12; // esi@37
244 void *v13; // esi@37
245 void *v14; // esi@37
246 void *v15; // esi@37
247 void *v16; // esi@37
248 int v17; // esi@37
249 unsigned int v18; // ecx@38
250 unsigned int v19; // esi@39
251 BSPModel *v20; // edx@39
252 char *data_write_pos; // esi@41 237 char *data_write_pos; // esi@41
253 void *v22; // esi@41 238 CHAR Buffer[128]; // [sp+Ch] [bp-264h]@59
254 BSPModel *v23; // eax@42
255 signed int v24; // edi@42
256 unsigned __int8 v25; // zf@43
257 unsigned __int8 v26; // sf@43
258 signed int v27; // edi@47
259 void *v28; // esi@50
260 void *v29; // esi@50
261 void *v30; // esi@50
262 void *v31; // esi@50
263 int v32; // esi@51
264 int v33; // eax@51
265 DWORD v34; // eax@59
266 //std::string v35; // [sp-18h] [bp-288h]@8
267 const char *v36; // [sp-10h] [bp-280h]@6
268 const char *v37; // [sp-Ch] [bp-27Ch]@6
269 unsigned int *v38; // [sp-8h] [bp-278h]@8
270 CHAR Buffer; // [sp+Ch] [bp-264h]@59
271 char Dir[255]; // [sp+8Ch] [bp-1E4h]@51 239 char Dir[255]; // [sp+8Ch] [bp-1E4h]@51
272 char Drive[255]; // [sp+ACh] [bp-1C4h]@51 240 char Drive[255]; // [sp+ACh] [bp-1C4h]@51
273 SavegameHeader save_header; // [sp+CCh] [bp-1A4h]@10 241 SavegameHeader save_header; // [sp+CCh] [bp-1A4h]@10
274 //int v43; // [sp+CCh] [bp-1A4h]@10
275 //char Dest[20]; // [sp+E0h] [bp-190h]@10
276 //unsigned __int64 pTimePlayed; // [sp+F4h] [bp-17Ch]@10
277 char Filename[255]; // [sp+130h] [bp-140h]@51 242 char Filename[255]; // [sp+130h] [bp-140h]@51
278 char Ext[255]; // [sp+150h] [bp-120h]@51 243 char Ext[255]; // [sp+150h] [bp-120h]@51
279 char v48; // [sp+151h] [bp-11Fh]@51
280 char Source[32]; // [sp+170h] [bp-100h]@51 244 char Source[32]; // [sp+170h] [bp-100h]@51
281 char Str[120]; // [sp+190h] [bp-E0h]@8 245 char work_string[120]; // [sp+190h] [bp-E0h]@8
282 int v51; // [sp+208h] [bp-68h]@2 246 int pPositionY; // [sp+208h] [bp-68h]@2
283 int pPositionX; // [sp+20Ch] [bp-64h]@2 247 int pPositionX; // [sp+20Ch] [bp-64h]@2
284 int v53; // [sp+210h] [bp-60h]@2 248 int sPRotationY; // [sp+210h] [bp-60h]@2
285 int v54; // [sp+214h] [bp-5Ch]@2 249 int sPRotationX; // [sp+214h] [bp-5Ch]@2
286 ODMHeader odm_data; // [sp+218h] [bp-58h]@30 250 ODMHeader odm_data; // [sp+218h] [bp-58h]@30
287 char v56; // [sp+21Ch] [bp-54h]@30 251 int res; // [sp+224h] [bp-4Ch]@30
288 char v57; // [sp+21Dh] [bp-53h]@30 252 int pPositionZ; // [sp+228h] [bp-48h]@2
289 char v58; // [sp+21Eh] [bp-52h]@30
290 char v59; // [sp+21Fh] [bp-51h]@30
291 int v60; // [sp+220h] [bp-50h]@30
292 int v61; // [sp+224h] [bp-4Ch]@30
293 int v62; // [sp+228h] [bp-48h]@2
294 LOD::Directory pLodDirectory; // [sp+22Ch] [bp-44h]@2 253 LOD::Directory pLodDirectory; // [sp+22Ch] [bp-44h]@2
295 size_t Size; // [sp+250h] [bp-20h]@26 254 size_t Size; // [sp+250h] [bp-20h]@26
296 __int16 *v66; // [sp+254h] [bp-1Ch]@1
297 char *uncompressed_buff; // [sp+258h] [bp-18h]@2 255 char *uncompressed_buff; // [sp+258h] [bp-18h]@2
298 __int16 *v68; // [sp+25Ch] [bp-14h]@32
299 unsigned int compressed_block_size; // [sp+260h] [bp-10h]@23 256 unsigned int compressed_block_size; // [sp+260h] [bp-10h]@23
300 int v70; // [sp+264h] [bp-Ch]@22 257
301 std::string *v71; // [sp+268h] [bp-8h]@8
302 int a3; // [sp+26Fh] [bp-1h]@8
303
304 //v66 = a2; 258 //v66 = a2;
305 strcpy(byte_6BE3B0, pCurrentMapName); 259 strcpy(byte_6BE3B0, pCurrentMapName);
306 if (!_strcmpi(pCurrentMapName, "d05.blv")) // arena 260 if (!_strcmpi(pCurrentMapName, "d05.blv")) // arena
307 return; 261 return;
308 262
309 uncompressed_buff = (char*)malloc(1000000); 263 uncompressed_buff = (char*)malloc(1000000);
310 pLodDirectory.Reset(); 264 pLodDirectory.Reset();
311 pPositionX = pParty->vPosition.x; 265 pPositionX = pParty->vPosition.x;
312 v51 = pParty->vPosition.y; 266 pPositionY = pParty->vPosition.y;
313 v62 = pParty->vPosition.z; 267 pPositionZ = pParty->vPosition.z;
314 v53 = pParty->sRotationY; 268 sPRotationY = pParty->sRotationY;
315 v54 = pParty->sRotationX; 269 sPRotationX = pParty->sRotationX;
316 pParty->vPosition.x = pParty->vPrevPosition.x; 270 pParty->vPosition.x = pParty->vPrevPosition.x;
317 pParty->vPosition.y = pParty->vPrevPosition.z; 271 pParty->vPosition.z = pParty->vPrevPosition.z;
318 pParty->vPosition.z = pParty->vPrevPosition.y; 272 pParty->vPosition.y = pParty->vPrevPosition.y;
319 pParty->uFallStartY = pParty->vPrevPosition.y; 273
274 pParty->uFallStartY = pParty->vPrevPosition.z;
275
320 pParty->sRotationY = pParty->sPrevRotationY; 276 pParty->sRotationY = pParty->sPrevRotationY;
321 pParty->sRotationX = pParty->sPrevRotationX; 277 pParty->sRotationX = pParty->sPrevRotationX;
322 if (uCurrentlyLoadedLevelType == LEVEL_Indoor) 278 if (uCurrentlyLoadedLevelType == LEVEL_Indoor)
323 pIndoor->stru1.uLastVisitDay = pParty->uTimePlayed; 279 pIndoor->stru1.uLastVisitDay = pParty->uTimePlayed;
324 else 280 else
340 pRenderer->Present(); 296 pRenderer->Present();
341 } 297 }
342 298
343 if (pNew_LOD->Write(&pLodDirectory, uncompressed_buff, 0)) 299 if (pNew_LOD->Write(&pLodDirectory, uncompressed_buff, 0))
344 { 300 {
345 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 200); //Сохраненная игра повреждена! Code=%d 301 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 200); //Сохраненная игра повреждена! Code=%d
346 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:773", 0); 302 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:773", 0);
347 } 303 }
348 304
349 assert(sizeof(SavegameHeader) == 100); 305 assert(sizeof(SavegameHeader) == 100);
350 memset(save_header.pName, 0, 20); 306 memset(save_header.pName, 0, 20);
351 memset(save_header.pLocationName, 0, 20); 307 memset(save_header.pLocationName, 0, 20);
354 save_header.uWordTime = pParty->uTimePlayed; 310 save_header.uWordTime = pParty->uTimePlayed;
355 strcpy(pLodDirectory.pFilename, "header.bin"); 311 strcpy(pLodDirectory.pFilename, "header.bin");
356 pLodDirectory.uDataSize = sizeof(SavegameHeader); 312 pLodDirectory.uDataSize = sizeof(SavegameHeader);
357 if (pNew_LOD->Write(&pLodDirectory, &save_header, 0)) 313 if (pNew_LOD->Write(&pLodDirectory, &save_header, 0))
358 { 314 {
359 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 201); 315 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 201);
360 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:784", 0); 316 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:784", 0);
361 } 317 }
362 strcpy(pLodDirectory.pFilename, "party.bin"); 318 strcpy(pLodDirectory.pFilename, "party.bin");
363 pLodDirectory.uDataSize = sizeof(Party); //90680; 319 pLodDirectory.uDataSize = sizeof(Party); //90680;
364 if ( pNew_LOD->Write(&pLodDirectory, pParty, 0) ) 320 if ( pNew_LOD->Write(&pLodDirectory, pParty, 0) )
365 { 321 {
366 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 202); 322 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 202);
367 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:793", 0); 323 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:793", 0);
368 } 324 }
369 strcpy(pLodDirectory.pFilename, "clock.bin"); 325 strcpy(pLodDirectory.pFilename, "clock.bin");
370 pLodDirectory.uDataSize =sizeof(Timer);// 40; 326 pLodDirectory.uDataSize =sizeof(Timer);// 40;
371 if ( pNew_LOD->Write(&pLodDirectory, pEventTimer, 0) ) 327 if ( pNew_LOD->Write(&pLodDirectory, pEventTimer, 0) )
372 { 328 {
373 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 203); 329 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 203);
374 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:802", 0); 330 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:802", 0);
375 } 331 }
376 strcpy(pLodDirectory.pFilename, "overlay.bin"); 332 strcpy(pLodDirectory.pFilename, "overlay.bin");
377 pLodDirectory.uDataSize =sizeof(OtherOverlayList);// 1008; 333 pLodDirectory.uDataSize =sizeof(OtherOverlayList);// 1008;
378 if ( pNew_LOD->Write(&pLodDirectory, pOtherOverlayList, 0) ) 334 if ( pNew_LOD->Write(&pLodDirectory, pOtherOverlayList, 0) )
379 { 335 {
380 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 204); 336 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 204);
381 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:811", 0); 337 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:811", 0);
382 } 338 }
383 strcpy(pLodDirectory.pFilename, "npcdata.bin"); 339 strcpy(pLodDirectory.pFilename, "npcdata.bin");
384 pLodDirectory.uDataSize = 501 * sizeof(NPCData); 340 pLodDirectory.uDataSize = 501 * sizeof(NPCData);
385 assert(pLodDirectory.uDataSize == 38076); 341 assert(pLodDirectory.uDataSize == 38076);
386 if ( pNew_LOD->Write(&pLodDirectory, pNPCStats->pNewNPCData, 0) ) 342 if ( pNew_LOD->Write(&pLodDirectory, pNPCStats->pNewNPCData, 0) )
387 { 343 {
388 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 205); 344 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 205);
389 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:820", 0); 345 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:820", 0);
390 } 346 }
391 strcpy(pLodDirectory.pFilename, "npcgroup.bin"); 347 strcpy(pLodDirectory.pFilename, "npcgroup.bin");
392 pLodDirectory.uDataSize = 102; 348 pLodDirectory.uDataSize = 102;
393 if ( pNew_LOD->Write(&pLodDirectory, pNPCStats->pGroups_copy, 0) ) 349 if ( pNew_LOD->Write(&pLodDirectory, pNPCStats->pGroups_copy, 0) )
394 { 350 {
395 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 206); 351 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 206);
396 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:829", 0); 352 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:829", 0);
397 } 353 }
398 for (int i = 1; i <= 4; ++i) // 4 - players 354 for (int i = 1; i <= 4; ++i) // 4 - players
399 { 355 {
400 for (int j = 1; j <= 5; ++j) // 5 - images 356 for (int j = 1; j <= 5; ++j) // 5 - images
401 { 357 {
402 sprintf(Str, "data\\lloyd%d%d.pcx", i, j); 358 sprintf(work_string, "data\\lloyd%d%d.pcx", i, j);
403 v8 = fopen(Str, "rb"); 359 pLLoidFile = fopen(work_string, "rb");
404 if ( v8 ) 360 if ( pLLoidFile )
405 { 361 {
406 __debugbreak(); 362 __debugbreak();
407 sprintf(Str, "lloyd%d%d.pcx", i, j); 363 sprintf(work_string, "lloyd%d%d.pcx", i, j);
408 fseek(v8, 0, 2); 364 fseek(pLLoidFile, 0, SEEK_END);
409 pLodDirectory.uDataSize = ftell(v8); 365 pLodDirectory.uDataSize = ftell(pLLoidFile);
410 rewind(v8); 366 rewind(pLLoidFile);
411 fread(uncompressed_buff, pLodDirectory.uDataSize, 1, v8); 367 fread(uncompressed_buff, pLodDirectory.uDataSize, 1, pLLoidFile);
412 strcpy((char *)&pLodDirectory, Str); 368 strcpy(pLodDirectory.pFilename, work_string);
413 fclose(v8); 369 fclose(pLLoidFile);
414 remove(Str); 370 remove(work_string);
415 if ( pNew_LOD->Write(&pLodDirectory, uncompressed_buff, 0) ) 371 if ( pNew_LOD->Write(&pLodDirectory, uncompressed_buff, 0) )
416 { 372 {
417 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 207); 373 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 207);
418 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:857", 0); 374 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:857", 0);
419 Size = 5080748; 375 Size = 5080748;
420 } 376 }
421 } 377 }
422 } 378 }
423 } 379 }
465 data_write_pos += 4; 421 data_write_pos += 4;
466 memcpy(data_write_pos, pSpriteObjects, 112 * uNumSpriteObjects); 422 memcpy(data_write_pos, pSpriteObjects, 112 * uNumSpriteObjects);
467 data_write_pos += 112 * uNumSpriteObjects; 423 data_write_pos += 112 * uNumSpriteObjects;
468 memcpy(data_write_pos, &uNumChests, 4); 424 memcpy(data_write_pos, &uNumChests, 4);
469 data_write_pos += 4; 425 data_write_pos += 4;
470 memcpy(data_write_pos, pChests, 5324 * uNumChests); 426 memcpy(data_write_pos, pChests, sizeof(Chest)*uNumChests);//5324 *
471 data_write_pos += 5324 * uNumChests; 427 data_write_pos += sizeof(Chest)* uNumChests;
472 memcpy(data_write_pos, pIndoor->pDoors, 0x3E80); 428 memcpy(data_write_pos, pIndoor->pDoors, 0x3E80);
473 data_write_pos += 16000; 429 data_write_pos += 16000;
474 memcpy(data_write_pos, pIndoor->ptr_0002B4_doors_ddata, pIndoor->blv.uDoors_ddata_Size); 430 memcpy(data_write_pos, pIndoor->ptr_0002B4_doors_ddata, pIndoor->blv.uDoors_ddata_Size);
475 data_write_pos += pIndoor->blv.uDoors_ddata_Size; 431 data_write_pos += pIndoor->blv.uDoors_ddata_Size;
476 memcpy(data_write_pos, &stru_5E4C90, 0xC8); 432 memcpy(data_write_pos, &stru_5E4C90, 0xC8);
514 data_write_pos += 4; 470 data_write_pos += 4;
515 memcpy(data_write_pos, pSpriteObjects, 112 * uNumSpriteObjects); 471 memcpy(data_write_pos, pSpriteObjects, 112 * uNumSpriteObjects);
516 data_write_pos += 112 * uNumSpriteObjects; 472 data_write_pos += 112 * uNumSpriteObjects;
517 memcpy(data_write_pos, &uNumChests, 4); 473 memcpy(data_write_pos, &uNumChests, 4);
518 data_write_pos += 4; 474 data_write_pos += 4;
519 memcpy(data_write_pos, pChests, 5324 * uNumChests); 475 memcpy(data_write_pos, pChests, sizeof(Chest)* uNumChests);
520 data_write_pos += 5324 * uNumChests; 476 data_write_pos += sizeof(Chest)* uNumChests;
521 memcpy(data_write_pos, &stru_5E4C90, 0xC8); 477 memcpy(data_write_pos, &stru_5E4C90, 0xC8);
522 data_write_pos += 200; 478 data_write_pos += 200;
523 memcpy(data_write_pos, &pOutdoor->loc_time, 0x38); 479 memcpy(data_write_pos, &pOutdoor->loc_time, 0x38);
524 data_write_pos += 56; 480 data_write_pos += 56;
525 } 481 }
526 strcpy(Source, pCurrentMapName); 482 strcpy(Source, pCurrentMapName);
527 _splitpath(Source, Drive, Dir, Filename, Ext); 483 _splitpath(Source, Drive, Dir, Filename, Ext);
528 v48 = 100; 484
529 Size = (int)data_write_pos - (int)uncompressed_buff; 485 Size = (int)data_write_pos - (int)uncompressed_buff;
530 compressed_block_size = 999984; 486 compressed_block_size = 999984;
531 LOBYTE(v33) = zlib::MemZip((char *)compressed_buf + 16, (unsigned int *)&compressed_block_size, uncompressed_buff,Size); 487 res = zlib::MemZip((char *)compressed_buf + 16, (unsigned int *)&compressed_block_size, uncompressed_buff,Size);
532 if ( v33 || (signed int)compressed_block_size > (signed int)Size ) 488 if (res || (signed int)compressed_block_size > (signed int)Size )
533 { 489 {
534 memcpy((void *)(compressed_buf + 16), uncompressed_buff, Size); 490 memcpy((void *)(compressed_buf + 16), uncompressed_buff, Size);
535 compressed_block_size = Size; 491 compressed_block_size = Size;
536 } 492 }
537 compressed_block_size += 16; 493 compressed_block_size += 16;
538 memcpy(&((ODMHeader *)compressed_buf)->uCompressedSize, &compressed_block_size, 4); 494 memcpy(&((ODMHeader *)compressed_buf)->uCompressedSize, &compressed_block_size, 4);
539 memcpy(&((ODMHeader *)compressed_buf)->uDecompressedSize, &Size, 4); 495 memcpy(&((ODMHeader *)compressed_buf)->uDecompressedSize, &Size, 4);
540 sprintf(Source, "%s%s", &Filename, &Ext); 496 sprintf(Source, "%s%s", &Filename, &Ext);
541 strcpy((char *)&pLodDirectory, Source); 497 strcpy(pLodDirectory.pFilename, Source);
542 pLodDirectory.uDataSize = compressed_block_size; 498 pLodDirectory.uDataSize = compressed_block_size;
543 if ( pNew_LOD->Write(&pLodDirectory, (const void *)compressed_buf, 0) ) 499 if ( pNew_LOD->Write(&pLodDirectory, (const void *)compressed_buf, 0) )
544 { 500 {
545 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 208); 501 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 208);
546 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:1071", 0); 502 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:1071", 0);
547 } 503 }
548 free((void *)compressed_buf); 504 free((void *)compressed_buf);
549 } 505 }
550 free(uncompressed_buff); 506 free(uncompressed_buff);
551 if ( IsAutoSAve ) 507 if ( IsAutoSAve )
552 { 508 {
553 if ( !CopyFileA("data\\new.lod", "saves\\autosave.mm7", 0) ) 509 if ( !CopyFileA("data\\new.lod", "saves\\autosave.mm7", 0) )
554 { 510 {
555 v34 = GetLastError(); 511 FormatMessageA(0x1000, 0, GetLastError(), 0x400, Buffer, 0x80, 0);
556 FormatMessageA(0x1000, 0, v34, 0x400, &Buffer, 0x80, 0); 512 sprintf(work_string, pGlobalTXT_LocalizationStrings[612], 300);
557 sprintf(Str, pGlobalTXT_LocalizationStrings[612], 300); 513 MessageBoxA(nullptr, work_string, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:1097", 0);
558 MessageBoxA(nullptr, Str, "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\LoadSave.cpp:1097", 0);
559 } 514 }
560 } 515 }
561 pParty->vPosition.x = pPositionX; 516 pParty->vPosition.x = pPositionX;
562 pParty->vPosition.y = v51; 517 pParty->vPosition.y = pPositionY;
563 pParty->vPosition.z = v62; 518 pParty->vPosition.z = pPositionZ;
564 pParty->uFallStartY = v62; 519 pParty->uFallStartY = pPositionZ;
565 pParty->sRotationY = v53; 520 pParty->sRotationY = sPRotationY;
566 pParty->sRotationX = v54; 521 pParty->sRotationX = sPRotationX;
567 } 522 }
568 523
569 524
570 //----- (00460078) -------------------------------------------------------- 525 //----- (00460078) --------------------------------------------------------
571 void __fastcall DoSavegame(unsigned int uSlot) 526 void __fastcall DoSavegame(unsigned int uSlot)