📄 3dtesting.lis
字号:
0380 8A93 st -y,R24
0382 0E940000 xcall fpmule1x
0386 8101 movw R16,R2
0388 9201 movw R18,R4
038A 0E940000 xcall fpsub2
038E DE01 movw R26,R28
0390 A259 subi R26,146 ; addi 110
0392 BF4F sbci R27,255
0394 0D93 st x+,R16
0396 1D93 st x+,R17
0398 2D93 st x+,R18
039A 3C93 st x,R19
039C .dbline 73
039C ; zt = x * sinay + z * cosay; // using X and Z
039C 0A85 ldd R16,y+10
039E 1B85 ldd R17,y+11
03A0 2C85 ldd R18,y+12
03A2 3D85 ldd R19,y+13
03A4 CE01 movw R24,R28
03A6 8E57 subi R24,126 ; offset = 130
03A8 9F4F sbci R25,255
03AA 9A93 st -y,R25
03AC 8A93 st -y,R24
03AE 0E940000 xcall fpmule1
03B2 1801 movw R2,R16
03B4 2901 movw R4,R18
03B6 0E81 ldd R16,y+6
03B8 1F81 ldd R17,y+7
03BA 2885 ldd R18,y+8
03BC 3985 ldd R19,y+9
03BE CE01 movw R24,R28
03C0 8A57 subi R24,122 ; offset = 134
03C2 9F4F sbci R25,255
03C4 9A93 st -y,R25
03C6 8A93 st -y,R24
03C8 0E940000 xcall fpmule1x
03CC 8101 movw R16,R2
03CE 9201 movw R18,R4
03D0 0E940000 xcall fpadd2
03D4 DE01 movw R26,R28
03D6 AA58 subi R26,138 ; addi 118
03D8 BF4F sbci R27,255
03DA 0D93 st x+,R16
03DC 1D93 st x+,R17
03DE 2D93 st x+,R18
03E0 3C93 st x,R19
03E2 .dbline 74
03E2 ; x = xt;
03E2 DE01 movw R26,R28
03E4 A259 subi R26,146 ; addi 110
03E6 BF4F sbci R27,255
03E8 2D90 ld R2,x+
03EA 3D90 ld R3,x+
03EC 4D90 ld R4,x+
03EE 5C90 ld R5,x
03F0 2A86 std y+10,R2
03F2 3B86 std y+11,R3
03F4 4C86 std y+12,R4
03F6 5D86 std y+13,R5
03F8 .dbline 75
03F8 ; z = zt;
03F8 DE01 movw R26,R28
03FA AA58 subi R26,138 ; addi 118
03FC BF4F sbci R27,255
03FE 2D90 ld R2,x+
0400 3D90 ld R3,x+
0402 4D90 ld R4,x+
0404 5C90 ld R5,x
0406 2E82 std y+6,R2
0408 3F82 std y+7,R3
040A 4886 std y+8,R4
040C 5986 std y+9,R5
040E .dbline 77
040E ;
040E ; xt = x * cosaz - y * sinaz; // finaly rotate around the Z axis
040E 0A85 ldd R16,y+10
0410 1B85 ldd R17,y+11
0412 2C85 ldd R18,y+12
0414 3D85 ldd R19,y+13
0416 CE01 movw R24,R28
0418 8257 subi R24,114 ; offset = 142
041A 9F4F sbci R25,255
041C 9A93 st -y,R25
041E 8A93 st -y,R24
0420 0E940000 xcall fpmule1
0424 1801 movw R2,R16
0426 2901 movw R4,R18
0428 0E85 ldd R16,y+14
042A 1F85 ldd R17,y+15
042C 2889 ldd R18,y+16
042E 3989 ldd R19,y+17
0430 CE01 movw R24,R28
0432 8657 subi R24,118 ; offset = 138
0434 9F4F sbci R25,255
0436 9A93 st -y,R25
0438 8A93 st -y,R24
043A 0E940000 xcall fpmule1x
043E 8101 movw R16,R2
0440 9201 movw R18,R4
0442 0E940000 xcall fpsub2
0446 DE01 movw R26,R28
0448 A259 subi R26,146 ; addi 110
044A BF4F sbci R27,255
044C 0D93 st x+,R16
044E 1D93 st x+,R17
0450 2D93 st x+,R18
0452 3C93 st x,R19
0454 .dbline 78
0454 ; yt = x * sinaz + y * cosaz; // using X and Y
0454 0A85 ldd R16,y+10
0456 1B85 ldd R17,y+11
0458 2C85 ldd R18,y+12
045A 3D85 ldd R19,y+13
045C CE01 movw R24,R28
045E 8657 subi R24,118 ; offset = 138
0460 9F4F sbci R25,255
0462 9A93 st -y,R25
0464 8A93 st -y,R24
0466 0E940000 xcall fpmule1
046A 1801 movw R2,R16
046C 2901 movw R4,R18
046E 0E85 ldd R16,y+14
0470 1F85 ldd R17,y+15
0472 2889 ldd R18,y+16
0474 3989 ldd R19,y+17
0476 CE01 movw R24,R28
0478 8257 subi R24,114 ; offset = 142
047A 9F4F sbci R25,255
047C 9A93 st -y,R25
047E 8A93 st -y,R24
0480 0E940000 xcall fpmule1x
0484 8101 movw R16,R2
0486 9201 movw R18,R4
0488 0E940000 xcall fpadd2
048C DE01 movw R26,R28
048E AE58 subi R26,142 ; addi 114
0490 BF4F sbci R27,255
0492 0D93 st x+,R16
0494 1D93 st x+,R17
0496 2D93 st x+,R18
0498 3C93 st x,R19
049A .dbline 79
049A ; x = xt;
049A DE01 movw R26,R28
049C A259 subi R26,146 ; addi 110
049E BF4F sbci R27,255
04A0 2D90 ld R2,x+
04A2 3D90 ld R3,x+
04A4 4D90 ld R4,x+
04A6 5C90 ld R5,x
04A8 2A86 std y+10,R2
04AA 3B86 std y+11,R3
04AC 4C86 std y+12,R4
04AE 5D86 std y+13,R5
04B0 .dbline 80
04B0 ; y = yt;
04B0 DE01 movw R26,R28
04B2 AE58 subi R26,142 ; addi 114
04B4 BF4F sbci R27,255
04B6 2D90 ld R2,x+
04B8 3D90 ld R3,x+
04BA 4D90 ld R4,x+
04BC 5C90 ld R5,x
04BE 2E86 std y+14,R2
04C0 3F86 std y+15,R3
04C2 488A std y+16,R4
04C4 598A std y+17,R5
04C6 .dbline 82
04C6 ;
04C6 ; x=x+xpos; // add the object position offset
04C6 0A85 ldd R16,y+10
04C8 1B85 ldd R17,y+11
04CA 2C85 ldd R18,y+12
04CC 3D85 ldd R19,y+13
04CE CE01 movw R24,R28
04D0 8256 subi R24,98 ; offset = 158
04D2 9F4F sbci R25,255
04D4 9A93 st -y,R25
04D6 8A93 st -y,R24
04D8 0E940000 xcall fpadd1
04DC 0A87 std y+10,R16
04DE 1B87 std y+11,R17
04E0 2C87 std y+12,R18
04E2 3D87 std y+13,R19
04E4 .dbline 83
04E4 ; y=y+ypos; // for both x and y
04E4 0E85 ldd R16,y+14
04E6 1F85 ldd R17,y+15
04E8 2889 ldd R18,y+16
04EA 3989 ldd R19,y+17
04EC CE01 movw R24,R28
04EE 8E55 subi R24,94 ; offset = 162
04F0 9F4F sbci R25,255
04F2 9A93 st -y,R25
04F4 8A93 st -y,R24
04F6 0E940000 xcall fpadd1
04FA 0E87 std y+14,R16
04FC 1F87 std y+15,R17
04FE 288B std y+16,R18
0500 398B std y+17,R19
0502 .dbline 84
0502 ; z=z+OFFSETZ-zpos; // as well as Z
0502 2E80 ldd R2,y+6
0504 3F80 ldd R3,y+7
0506 4884 ldd R4,y+8
0508 5984 ldd R5,y+9
050A 00E0 ldi R16,<L10
050C 10E0 ldi R17,>L10
050E 0E940000 xcall elpm32
0512 3A93 st -y,R19
0514 2A93 st -y,R18
0516 1A93 st -y,R17
0518 0A93 st -y,R16
051A 8101 movw R16,R2
051C 9201 movw R18,R4
051E 0E940000 xcall fpadd2
0522 CE01 movw R24,R28
0524 8A55 subi R24,90 ; offset = 166
0526 9F4F sbci R25,255
0528 9A93 st -y,R25
052A 8A93 st -y,R24
052C 0E940000 xcall fpsub1
0530 0E83 std y+6,R16
0532 1F83 std y+7,R17
0534 2887 std y+8,R18
0536 3987 std y+9,R19
0538 .dbline 86
0538 ;
0538 ; newx[i]=(x*64/z)+OFFSETX; // translate 3d to 2d coordinates for screen
0538 00E0 ldi R16,<L11
053A 10E0 ldi R17,>L11
053C 0E940000 xcall elpm32
0540 CE01 movw R24,R28
0542 0A96 adiw R24,10
0544 9A93 st -y,R25
0546 8A93 st -y,R24
0548 0E940000 xcall fpmule1
054C CE01 movw R24,R28
054E 0696 adiw R24,6
0550 9A93 st -y,R25
0552 8A93 st -y,R24
0554 0E940000 xcall fpdiv1
0558 1801 movw R2,R16
055A 2901 movw R4,R18
055C 00E0 ldi R16,<L12
055E 10E0 ldi R17,>L12
0560 0E940000 xcall elpm32
0564 3A93 st -y,R19
0566 2A93 st -y,R18
0568 1A93 st -y,R17
056A 0A93 st -y,R16
056C 8101 movw R16,R2
056E 9201 movw R18,R4
0570 0E940000 xcall fpadd2
0574 0E940000 xcall fpint
0578 CE01 movw R24,R28
057A 4296 adiw R24,18
057C DE01 movw R26,R28
057E AE56 subi R26,110 ; addi 146
0580 BF4F sbci R27,255
0582 ED91 ld R30,x+
0584 FC91 ld R31,x
0586 EE0F lsl R30
0588 FF1F rol R31
058A E80F add R30,R24
058C F91F adc R31,R25
058E 1183 std z+1,R17
0590 0083 std z+0,R16
0592 .dbline 87
0592 ; newy[i]=(y*64/z)+OFFSETY; // drawing so we can see the cube
0592 00E0 ldi R16,<L11
0594 10E0 ldi R17,>L11
0596 0E940000 xcall elpm32
059A CE01 movw R24,R28
059C 0E96 adiw R24,14
059E 9A93 st -y,R25
05A0 8A93 st -y,R24
05A2 0E940000 xcall fpmule1
05A6 CE01 movw R24,R28
05A8 0696 adiw R24,6
05AA 9A93 st -y,R25
05AC 8A93 st -y,R24
05AE 0E940000 xcall fpdiv1
05B2 1801 movw R2,R16
05B4 2901 movw R4,R18
05B6 00E0 ldi R16,<L10
05B8 10E0 ldi R17,>L10
05BA 0E940000 xcall elpm32
05BE 3A93 st -y,R19
05C0 2A93 st -y,R18
05C2 1A93 st -y,R17
05C4 0A93 st -y,R16
05C6 8101 movw R16,R2
05C8 9201 movw R18,R4
05CA 0E940000 xcall fpadd2
05CE 0E940000 xcall fpint
05D2 CE01 movw R24,R28
05D4 805C subi R24,192 ; offset = 64
05D6 9F4F sbci R25,255
05D8 DE01 movw R26,R28
05DA AE56 subi R26,110 ; addi 146
05DC BF4F sbci R27,255
05DE ED91 ld R30,x+
05E0 FC91 ld R31,x
05E2 EE0F lsl R30
05E4 FF1F rol R31
05E6 E80F add R30,R24
05E8 F91F adc R31,R25
05EA 1183 std z+1,R17
05EC 0083 std z+0,R16
05EE .dbline 88
05EE ; }
05EE L7:
05EE .dbline 61
05EE FE01 movw R30,R28
05F0 EE56 subi R30,110 ; addi 146
05F2 FF4F sbci R31,255
05F4 8081 ldd R24,z+0
05F6 9181 ldd R25,z+1
05F8 0196 adiw R24,1
05FA FE01 movw R30,R28
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -