comparison UI/Books/UIMapBook.cpp @ 2069:259df09dfb50

32bits almost there
author Nomad
date Tue, 03 Dec 2013 20:18:17 +0200
parents 7a9477135943
children a869b0376b48
comparison
equal deleted inserted replaced
2061:b2a434d65344 2069:259df09dfb50
309 unsigned __int16 *v67; // esi@96 309 unsigned __int16 *v67; // esi@96
310 int v68; // edi@98 310 int v68; // edi@98
311 unsigned __int16 v69; // cx@99 311 unsigned __int16 v69; // cx@99
312 signed int v73; // [sp-4h] [bp-48068h]@59 312 signed int v73; // [sp-4h] [bp-48068h]@59
313 unsigned __int16 v74; // [sp-4h] [bp-48068h]@79 313 unsigned __int16 v74; // [sp-4h] [bp-48068h]@79
314 unsigned short map_texture_16[147456]; // [sp+Ch] [bp-48058h]@23 314 //unsigned short map_texture_16[320 * 460 + 256]; // [sp+Ch] [bp-48058h]@23
315 int v76; // [sp+4800Ch] [bp-58h]@23 315 int v76; // [sp+4800Ch] [bp-58h]@23
316 unsigned __int16 *v77; // [sp+48010h] [bp-54h]@27 316 //unsigned __int16 *v77; // [sp+48010h] [bp-54h]@27
317 unsigned __int16 *pPalette_16; // [sp+48014h] [bp-50h]@23 317 unsigned __int16 *pPalette_16; // [sp+48014h] [bp-50h]@23
318 int map_tile_X; // [sp+48020h] [bp-44h]@23 318 int map_tile_X; // [sp+48020h] [bp-44h]@23
319 unsigned __int16* render16_data; 319 //unsigned __int16* render16_data;
320 unsigned char* texture8_data; 320 unsigned char* texture8_data;
321 unsigned char* curr_line; 321 unsigned char* curr_line;
322 int scale_increment; 322 int scale_increment;
323 int scaled_posX; 323 int scaled_posX;
324 int scaled_posY; 324 int scaled_posY;
337 signed int screenWidth; // [sp+48054h] [bp-10h]@8 337 signed int screenWidth; // [sp+48054h] [bp-10h]@8
338 unsigned int v95; // [sp+48058h] [bp-Ch]@16 338 unsigned int v95; // [sp+48058h] [bp-Ch]@16
339 int map_tile_Y; // [sp+4805Ch] [bp-8h]@10 339 int map_tile_Y; // [sp+4805Ch] [bp-8h]@10
340 const void *v97; // [sp+48060h] [bp-4h]@16 340 const void *v97; // [sp+48060h] [bp-4h]@16
341 unsigned short *a4a; // [sp+4806Ch] [bp+8h]@85 341 unsigned short *a4a; // [sp+4806Ch] [bp+8h]@85
342 int a5a; // [sp+48070h] [bp+Ch]@86 342 //int a5a; // [sp+48070h] [bp+Ch]@86
343 343
344 screenCenter_X = (signed int)(tl_x + br_x) / 2; 344 screenCenter_X = (signed int)(tl_x + br_x) / 2;
345 screenCenterY = (signed int)(tl_y + br_y) / 2; 345 screenCenterY = (signed int)(tl_y + br_y) / 2;
346 pRenderer->SetRasterClipRect(tl_x, tl_y, br_x, br_y); 346 pRenderer->SetRasterClipRect(tl_x, tl_y, br_x, br_y);
347 pCenterX = viewparams->sViewCenterX; 347 pCenterX = viewparams->sViewCenterX;
364 } 364 }
365 if ( uCurrentlyLoadedLevelType != LEVEL_Indoor) 365 if ( uCurrentlyLoadedLevelType != LEVEL_Indoor)
366 { 366 {
367 screenWidth = br_x - tl_x + 1; 367 screenWidth = br_x - tl_x + 1;
368 screenHeight = br_y - tl_y + 1; 368 screenHeight = br_y - tl_y + 1;
369 render16_data = &pRenderer->pTargetSurface[tl_x + tl_y * pRenderer->uTargetSurfacePitch]; 369 //render16_data = &pRenderer->pTargetSurface[tl_x + tl_y * pRenderer->uTargetSurfacePitch];
370 texture8_data = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].pLevelOfDetail0_prolly_alpha_mask; 370 texture8_data = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].pLevelOfDetail0_prolly_alpha_mask;
371 pPalette_16 = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].pPalette16; 371 pPalette_16 = pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].pPalette16;
372 scale_increment = (1 << (pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2 + 16)) / viewparams->uMapBookMapZoom; 372 scale_increment = (1 << (pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2 + 16)) / viewparams->uMapBookMapZoom;
373 373
374 v30 = (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2)); 374 v30 = (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2));
388 curr_line=&texture8_data[scaled_posY*textr_width]; 388 curr_line=&texture8_data[scaled_posY*textr_width];
389 stepX_r=teal; 389 stepX_r=teal;
390 for( uint j = 0; j < screenWidth; ++j ) 390 for( uint j = 0; j < screenWidth; ++j )
391 { 391 {
392 scaled_posX=stepX_r>>16; 392 scaled_posX=stepX_r>>16;
393 map_texture_16[i*screenWidth+j]=pPalette_16[*(curr_line+scaled_posX)]; 393 //map_texture_16[i*screenWidth+j]=pPalette_16[*(curr_line+scaled_posX)];
394 pRenderer->WritePixel16(tl_x + j, tl_y + i, pPalette_16[*(curr_line+scaled_posX)]);
394 stepX_r+=scale_increment; 395 stepX_r+=scale_increment;
395 } 396 }
396 stepY_r+=scale_increment; 397 stepY_r+=scale_increment;
397 scaled_posY=stepY_r>>16; 398 scaled_posY=stepY_r>>16;
398 } 399 }
399 } 400 }
400 //move visible square to render 401
402 /*//move visible square to render
401 for( uint i = 0; i < screenHeight; ++i ) 403 for( uint i = 0; i < screenHeight; ++i )
402 { 404 {
403 if ( screenWidth > 0 ) 405 if ( screenWidth > 0 )
404 memcpy((void*)&render16_data[pRenderer->uTargetSurfacePitch * i],(void*)&map_texture_16[i*screenWidth], screenWidth*2); 406 memcpy((void*)&render16_data[pRenderer->uTargetSurfacePitch * i],(void*)&map_texture_16[i*screenWidth], screenWidth*2);
405 } 407 }*/
406 } 408 }
407 else 409 else
408 { 410 {
409 black = TargetColor(0, 0, 0); 411 black = Color16(0, 0, 0);
410 teal = TargetColor(0, 0xFFu, 0xFFu); 412 teal = Color16(0, 0xFFu, 0xFFu);
411 uNumBlueFacesInBLVMinimap = 0; 413 uNumBlueFacesInBLVMinimap = 0;
412 if ( pIndoor->pMapOutlines->uNumOutlines ) 414 if ( pIndoor->pMapOutlines->uNumOutlines )
413 { 415 {
414 for ( uint i = 0; i < pIndoor->pMapOutlines->uNumOutlines; ++i ) 416 for ( uint i = 0; i < pIndoor->pMapOutlines->uNumOutlines; ++i )
415 { 417 {
533 if ( v54 >= pRenderer->raster_clip_x && v54 <= pRenderer->raster_clip_z 535 if ( v54 >= pRenderer->raster_clip_x && v54 <= pRenderer->raster_clip_z
534 && v55 >= pRenderer->raster_clip_y && v55 <= pRenderer->raster_clip_w ) 536 && v55 >= pRenderer->raster_clip_y && v55 <= pRenderer->raster_clip_w )
535 { 537 {
536 if ( viewparams->uMapBookMapZoom > 512 ) 538 if ( viewparams->uMapBookMapZoom > 512 )
537 { 539 {
538 pRenderer->RasterLine2D(v54 - 1, v55 - 1, v54 - 1, v55 + 1, TargetColor(0xFFu, 0xFFu, 0xFFu)); 540 pRenderer->RasterLine2D(v54 - 1, v55 - 1, v54 - 1, v55 + 1, Color16(0xFFu, 0xFFu, 0xFFu));
539 pRenderer->RasterLine2D(v54, v55 - 1, v54, v55 + 1, TargetColor(0xFFu, 0xFFu, 0xFFu)); 541 pRenderer->RasterLine2D(v54, v55 - 1, v54, v55 + 1, Color16(0xFFu, 0xFFu, 0xFFu));
540 pRenderer->RasterLine2D(v54 + 1, v55 - 1, v54 + 1, v55 + 1, TargetColor(0xFFu, 0xFFu, 0xFFu)); 542 pRenderer->RasterLine2D(v54 + 1, v55 - 1, v54 + 1, v55 + 1, Color16(0xFFu, 0xFFu, 0xFFu));
541 } 543 }
542 else 544 else
543 pRenderer->RasterLine2D(v54, screenCenterY - (int)v97, 545 pRenderer->RasterLine2D(v54, screenCenterY - (int)v97,
544 ((unsigned __int64)((signed int)v93 * (signed __int64)viewparams->uMapBookMapZoom) >> 16) + screenCenter_X, 546 ((unsigned __int64)((signed int)v93 * (signed __int64)viewparams->uMapBookMapZoom) >> 16) + screenCenter_X,
545 screenCenterY - (int)v97, TargetColor(0xFFu, 0xFFu, 0xFFu)); 547 screenCenterY - (int)v97, Color16(0xFFu, 0xFFu, 0xFFu));
546 } 548 }
547 } 549 }
548 } 550 }
549 } 551 }
550 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor) 552 if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor)
551 { 553 {
552 screenCenterY = br_x - tl_x + 1; 554 screenCenterY = br_x - tl_x + 1;
553 v95 = br_y - tl_y + 1; 555 v95 = br_y - tl_y + 1;
554 v77 = &pRenderer->pTargetSurface[tl_x + tl_y * pRenderer->uTargetSurfacePitch]; 556 //v77 = &pRenderer->pTargetSurface[tl_x + tl_y * pRenderer->uTargetSurfacePitch];
555 black = (1 << (pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2 + 16)) / viewparams->uMapBookMapZoom; 557 black = (1 << (pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2 + 16)) / viewparams->uMapBookMapZoom;
556 v57 = (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2)); 558 v57 = (double)(1 << (16 - pIcons_LOD->pTextures[viewparams->uTextureID_LocationMap].uWidthLn2));
557 v60 = (int)((signed __int64)((double)(viewparams->sViewCenterX - (22528 / (viewparams->uMapBookMapZoom / 384)) + 32768) / v57)) << 16; 559 v60 = (int)((signed __int64)((double)(viewparams->sViewCenterX - (22528 / (viewparams->uMapBookMapZoom / 384)) + 32768) / v57)) << 16;
558 teal = v60 >> 16; 560 teal = v60 >> 16;
559 pPalette_16 = (unsigned __int16 *)(v60 >> 16); 561 pPalette_16 = (unsigned __int16 *)(v60 >> 16);
560 v97 = (const void *)((int)((signed __int64)((double)(viewparams->sViewCenterX - (22528 / (viewparams->uMapBookMapZoom / 384)) + 32768) / v57)) << 16); 562 v97 = (const void *)((int)((signed __int64)((double)(viewparams->sViewCenterX - (22528 / (viewparams->uMapBookMapZoom / 384)) + 32768) / v57)) << 16);
561 v62 = (int)((signed __int64)((double)(32768 - (22528 / (viewparams->uMapBookMapZoom / 384)) - pCenterY) / v57)) << 16; 563 v62 = (int)((signed __int64)((double)(32768 - (22528 / (viewparams->uMapBookMapZoom / 384)) - pCenterY) / v57)) << 16;
562 v63 = (signed __int16)((signed __int64)((double)(32768 - (22528 / (viewparams->uMapBookMapZoom / 384)) - pCenterY) / v57)); 564 v63 = (signed __int16)((signed __int64)((double)(32768 - (22528 / (viewparams->uMapBookMapZoom / 384)) - pCenterY) / v57));
563 a4a = map_texture_16; 565
566
567 for (int y = 0; y < (signed int)v95; ++y)
568 {
569 map_tile_Y = (v63 - 80) / 4;
570 v64 = teal;
571 for (int x = 0; x < screenCenterY; ++x)
572 {
573 map_tile_X = (v64 - 80) / 4;
574 if ( !pOutdoor->_47F04C(map_tile_X, map_tile_Y) )
575 {
576 if ( pOutdoor->_47F097(map_tile_X, map_tile_Y) )
577 {
578 if ( !((x + screenCenter_X) % 2) )
579 //*a4a = Color16(12, 12, 12);
580 pRenderer->WritePixel16(tl_x + x, tl_y + y, Color16(12, 12, 12));
581 }
582 else
583 //*a4a = 0;
584 pRenderer->WritePixel16(tl_x + x, tl_y + y, Color16(0, 0, 0));
585 }
586 v97 = (char *)v97 + black;
587 v64 = (signed int)v97 >> 16;
588 }
589
590 v62 += black;
591 v97 = (const void *)v60;
592 v63 = v62 >> 16;
593 teal = (unsigned int)pPalette_16;
594 }
595 /*a4a = map_texture_16;
564 for ( screenCenter_X = 0; screenCenter_X < (signed int)v95; ++screenCenter_X ) 596 for ( screenCenter_X = 0; screenCenter_X < (signed int)v95; ++screenCenter_X )
565 { 597 {
566 if ( screenCenterY > 0 ) 598 if ( screenCenterY > 0 )
567 { 599 {
568 map_tile_Y = (v63 - 80) / 4; 600 map_tile_Y = (v63 - 80) / 4;
573 if ( !pOutdoor->_47F04C(map_tile_X, map_tile_Y) ) 605 if ( !pOutdoor->_47F04C(map_tile_X, map_tile_Y) )
574 { 606 {
575 if ( pOutdoor->_47F097(map_tile_X, map_tile_Y) ) 607 if ( pOutdoor->_47F097(map_tile_X, map_tile_Y) )
576 { 608 {
577 if ( !((a5a + screenCenter_X) % 2) ) 609 if ( !((a5a + screenCenter_X) % 2) )
578 *a4a = TargetColor(0xCu, 0xCu, 0xCu); 610 *a4a = Color16(0xCu, 0xCu, 0xCu);
579 } 611 }
580 else 612 else
581 *a4a = 0; 613 *a4a = 0;
582 } 614 }
583 ++a4a; 615 ++a4a;
589 v97 = (const void *)v60; 621 v97 = (const void *)v60;
590 a4a += screenCenterY - a5a; 622 a4a += screenCenterY - a5a;
591 v63 = v62 >> 16; 623 v63 = v62 >> 16;
592 teal = (unsigned int)pPalette_16; 624 teal = (unsigned int)pPalette_16;
593 } 625 }
626
594 v66 = map_texture_16; 627 v66 = map_texture_16;
595 if ( (signed int)v95 > 0 ) 628 if ( (signed int)v95 > 0 )
596 { 629 {
597 v67 = v77; 630 v67 = v77;
598 result = 2 * (pRenderer->uTargetSurfacePitch - screenCenterY); 631 result = 2 * (pRenderer->uTargetSurfacePitch - screenCenterY);
609 ++v67; 642 ++v67;
610 } 643 }
611 } 644 }
612 v67 = (unsigned __int16 *)((char *)v67 + result); 645 v67 = (unsigned __int16 *)((char *)v67 + result);
613 } 646 }
614 } 647 }*/
615 } 648 }
616 } 649 }
617 650
618 //----- (00444564) -------------------------------------------------------- 651 //----- (00444564) --------------------------------------------------------
619 const char * GetMapBookHintText() 652 const char * GetMapBookHintText()