Rev 6060 | Rev 6509 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6060 | Rev 6081 | ||
---|---|---|---|
Line 46... | Line 46... | ||
46 | offs_obj_z_max equ 64 |
46 | offs_obj_z_max equ 64 |
47 | offs_obj_z_min equ 68 |
47 | offs_obj_z_min equ 68 |
48 | offs_obj_z_centr equ 72 |
48 | offs_obj_z_centr equ 72 |
49 | offs_obj_z_scale equ 76 |
49 | offs_obj_z_scale equ 76 |
Line -... | Line 50... | ||
- | 50 | ||
- | 51 | struct material |
|
- | 52 | name dd ? |
|
- | 53 | col_ambient dd ? ;梥⠬ â¥à¨ « |
|
- | 54 | col_diffuse dd ? |
|
- | 55 | col_specular dd ? |
|
- | 56 | ends |
|
- | 57 | ||
- | 58 | offs_mat_name equ 0 |
|
- | 59 | offs_mat_col_ambient equ 4 |
|
- | 60 | offs_mat_col_diffuse equ 8 |
|
Line 50... | Line 61... | ||
50 | 61 | offs_mat_col_specular equ 12 |
|
51 | 62 | ||
52 | bit_vertexes equ 0 |
63 | bit_vertexes equ 0 |
53 | bit_faces equ 1 |
64 | bit_faces equ 1 |
Line 69... | Line 80... | ||
69 | key_select db 'col_select',0 |
80 | key_select db 'col_select',0 |
Line 70... | Line 81... | ||
70 | 81 | ||
Line -... | Line 82... | ||
- | 82 | ||
- | 83 | rad_c dd 150 ;¤«ï ¢ëç¨á«¥¨ï à ¤¨ãá |
|
- | 84 | ||
- | 85 | align 4 |
|
- | 86 | proc hex_in_str, buf:dword,val:dword,zif:dword |
|
- | 87 | pushad |
|
- | 88 | mov edi,dword[buf] |
|
- | 89 | mov ecx,dword[zif] |
|
- | 90 | add edi,ecx |
|
- | 91 | dec edi |
|
- | 92 | mov ebx,dword[val] |
|
- | 93 | ||
- | 94 | .cycle: |
|
- | 95 | mov al,bl |
|
- | 96 | and al,0xf |
|
- | 97 | cmp al,10 |
|
- | 98 | jl @f |
|
- | 99 | add al,'a'-'0'-10 |
|
- | 100 | @@: |
|
- | 101 | add al,'0' |
|
- | 102 | mov byte[edi],al |
|
- | 103 | dec edi |
|
- | 104 | shr ebx,4 |
|
- | 105 | loop .cycle |
|
Line 71... | Line 106... | ||
71 | 106 | popad |
|
72 | rad_c dd 150 ;¤«ï ¢ëç¨á«¥¨ï à ¤¨ãá |
107 | ret |
73 | 108 | endp |
|
74 | 109 | ||
Line 501... | Line 536... | ||
501 | .no_points: |
536 | .no_points: |
502 | popad |
537 | popad |
503 | ret |
538 | ret |
504 | endp |
539 | endp |
Line -... | Line 540... | ||
- | 540 | ||
- | 541 | ; áâனª ¬ â¥à¨ « |
|
- | 542 | align 4 |
|
- | 543 | proc mat_init, m_data:dword |
|
- | 544 | pushad |
|
- | 545 | mov edi,[m_data] |
|
- | 546 | ||
- | 547 | ;... clear edi ... |
|
- | 548 | mov dword[edi+offs_mat_name],0 |
|
- | 549 | mov dword[edi+offs_mat_col_ambient],0 |
|
- | 550 | mov dword[edi+offs_mat_col_diffuse],0 |
|
- | 551 | mov dword[edi+offs_mat_col_specular],0 |
|
- | 552 | ||
- | 553 | stdcall [tl_node_get_data],tree1 |
|
- | 554 | xor edx,edx |
|
- | 555 | cmp eax,0 |
|
- | 556 | je .no_material |
|
- | 557 | mov ebx,[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª |
|
- | 558 | add ebx,[open_file_data] |
|
- | 559 | xor ecx,ecx |
|
- | 560 | cmp word[ebx],CHUNK_MATERIAL |
|
- | 561 | jne .no_material |
|
- | 562 | mov ecx,ebx |
|
- | 563 | add ecx,dword[ecx+2] ;£à ¨æ ¡«®ª |
|
- | 564 | add ebx,6 |
|
- | 565 | cmp word[ebx],CHUNK_MATNAME |
|
- | 566 | jne .no_material |
|
- | 567 | ;*** (0) *** |
|
- | 568 | mov esi,ebx |
|
- | 569 | add ebx,6 |
|
- | 570 | mov [edi+offs_mat_name],ebx |
|
- | 571 | sub ebx,6 |
|
- | 572 | ;*** (1) *** |
|
- | 573 | .cycle_0: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
|
- | 574 | add esi,dword[esi+2] |
|
- | 575 | cmp word[esi],0xa010 |
|
- | 576 | je @f |
|
- | 577 | cmp ecx,esi |
|
- | 578 | jg .cycle_0 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
|
- | 579 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
|
- | 580 | @@: |
|
- | 581 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
|
- | 582 | add esi,6 |
|
- | 583 | cmp word[esi],0x0011 |
|
- | 584 | jne .end_material |
|
- | 585 | add esi,6 |
|
- | 586 | mov dl,byte[esi] |
|
- | 587 | mov [edi+offs_mat_col_ambient+2],dl |
|
- | 588 | mov dx,word[esi+1] |
|
- | 589 | ror dx,8 |
|
- | 590 | mov [edi+offs_mat_col_ambient],dx |
|
- | 591 | ;*** (2) *** |
|
- | 592 | mov esi,ebx |
|
- | 593 | .cycle_1: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
|
- | 594 | add esi,dword[esi+2] |
|
- | 595 | cmp word[esi],0xa020 |
|
- | 596 | je @f |
|
- | 597 | cmp ecx,esi |
|
- | 598 | jg .cycle_1 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
|
- | 599 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
|
- | 600 | @@: |
|
- | 601 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
|
- | 602 | add esi,6 |
|
- | 603 | cmp word[esi],0x0011 |
|
- | 604 | jne .end_material |
|
- | 605 | add esi,6 |
|
- | 606 | mov dl,byte[esi] |
|
- | 607 | mov [edi+offs_mat_col_diffuse+2],dl |
|
- | 608 | mov dx,word[esi+1] |
|
- | 609 | ror dx,8 |
|
- | 610 | mov [edi+offs_mat_col_diffuse],dx |
|
- | 611 | ;*** (3) *** |
|
- | 612 | mov esi,ebx |
|
- | 613 | .cycle_2: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
|
- | 614 | add esi,dword[esi+2] |
|
- | 615 | cmp word[esi],0xa030 |
|
- | 616 | je @f |
|
- | 617 | cmp ecx,esi |
|
- | 618 | jg .cycle_2 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
|
- | 619 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
|
- | 620 | @@: |
|
- | 621 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
|
- | 622 | add esi,6 |
|
- | 623 | cmp word[esi],0x0011 |
|
- | 624 | jne .end_material |
|
- | 625 | add esi,6 |
|
- | 626 | mov dl,byte[esi] |
|
- | 627 | mov [edi+offs_mat_col_specular+2],dl |
|
- | 628 | mov dx,word[esi+1] |
|
- | 629 | ror dx,8 |
|
- | 630 | mov [edi+offs_mat_col_specular],dx |
|
- | 631 | ||
- | 632 | .end_material: |
|
- | 633 | .no_material: |
|
- | 634 | popad |
|
- | 635 | ret |
|
- | 636 | endp |
|
- | 637 | ||
- | 638 | align 4 |
|
- | 639 | proc buf_draw_beg uses eax, buf:dword |
|
- | 640 | mov eax,[buf] |
|
- | 641 | stdcall [buf2d_clear], eax, [eax+16] ;ç¨á⨬ ¡ãä¥à |
|
- | 642 | stdcall [buf2d_draw_text], eax, buf_1,txt_open_3ds,5,5,0xff |
|
- | 643 | stdcall [buf2d_draw_text], eax, buf_1,openfile_path,5,15,0xff |
|
- | 644 | cmp dword[level_stack],FILE_ERROR_CHUNK_SIZE ;¢®§¬®¦ ®è¨¡ª ä ©« |
|
- | 645 | jne @f |
|
- | 646 | stdcall [buf2d_draw_text], eax, buf_1,txt_3ds_err_sizes,5,25,0xff0000 |
|
- | 647 | @@: |
|
- | 648 | ret |
|
- | 649 | endp |
|
- | 650 | ||
- | 651 | ;à¨á®¢ ¨¥ ¬ â¥à¨ « |
|
- | 652 | align 4 |
|
- | 653 | proc draw_material uses edi, m_data:dword |
|
- | 654 | mov edi,[m_data] |
|
- | 655 | stdcall buf_draw_beg, buf_ogl |
|
- | 656 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_afff,5,35,0xff |
|
- | 657 | ||
- | 658 | stdcall [buf2d_draw_text], buf_ogl,buf_1,[edi+offs_mat_name],15,45,0 ;¨¬ï ¬ â¥à¨ « |
|
- | 659 | stdcall draw_color, [edi+offs_mat_col_ambient], txt_a010,2,55 ;®ªà㦠î騩 梥â |
|
- | 660 | stdcall draw_color, [edi+offs_mat_col_diffuse], txt_a020,2,75 ;¤¨äã§ë© 梥â |
|
- | 661 | stdcall draw_color, [edi+offs_mat_col_specular],txt_a030,2,95 ;§¥àª «ìë© æ¢¥â |
|
- | 662 | ||
- | 663 | stdcall [buf2d_draw], buf_ogl |
|
- | 664 | ret |
|
- | 665 | endp |
|
- | 666 | ||
- | 667 | align 4 |
|
- | 668 | proc draw_color uses eax ebx, color:dword, text:dword, c_x:dword, c_y:dword |
|
- | 669 | mov eax,[c_x] |
|
- | 670 | mov ebx,[c_y] |
|
- | 671 | ; ¯àאַ㣮«ì¨ª |
|
- | 672 | inc ebx |
|
- | 673 | stdcall [buf2d_filled_rect_by_size], buf_ogl,eax,ebx,30,17,[color] |
|
- | 674 | dec ebx |
|
- | 675 | stdcall [buf2d_rect_by_size], buf_ogl,eax,ebx,30,19, 0 |
|
- | 676 | ; ¯®¤¯¨á¨ |
|
- | 677 | add eax,33 |
|
- | 678 | stdcall [buf2d_draw_text], buf_ogl, buf_1,[text],eax,ebx,0 |
|
- | 679 | add ebx,10 |
|
- | 680 | stdcall hex_in_str, buffer,[color],6 |
|
- | 681 | mov byte[buffer+6],0 |
|
- | 682 | stdcall [buf2d_draw_text], buf_ogl, buf_1,buffer,eax,ebx,0 |
|
- | 683 | ret |
|
- | 684 | endp |
|
505 | 685 | ||
506 | ;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d |
686 | ;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d |
507 | align 4 |
687 | align 4 |
508 | proc draw_3d uses eax ebx ecx edi, o_data:dword |
688 | proc draw_3d uses eax ebx ecx edi, o_data:dword |
509 | mov edi,[o_data] |
689 | mov edi,[o_data] |
Line 728... | Line 908... | ||
728 | 908 | ||
Line 729... | Line 909... | ||
729 | else |
909 | else |
730 | 910 | ||
731 | align 4 |
911 | align 4 |
732 | update_obj: |
912 | update_obj: |
733 | push eax |
913 | push eax ebx |
734 | stdcall [tl_node_get_data],tree1 |
914 | stdcall [tl_node_get_data],tree1 |
- | 915 | cmp eax,0 |
|
- | 916 | je @f |
|
- | 917 | mov ebx,dword[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª ®â®á¨â¥«ì® ç « ä ©« |
|
- | 918 | add ebx,dword[open_file_data] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ ¯ ¬ï⨠|
|
735 | cmp eax,0 |
919 | cmp word[ebx],CHUNK_OBJBLOCK |
736 | je @f |
920 | jne @f |
737 | add eax,14 ;14=list_offs_obj3d |
921 | add eax,14 ;14=list_offs_obj3d |
738 | stdcall draw_3d, eax |
922 | stdcall draw_3d, eax |
739 | @@: |
923 | @@: |
Line 740... | Line 924... | ||
740 | pop eax |
924 | pop ebx eax |
Line 741... | Line 925... | ||
741 | ret |
925 | ret |