000008DC _ripples: .STACK _ripples=48 ; 599 ; 600 void ripples(int times, int repeat) 000008DC 6E6D PUSHM R6-R13 000008DE 60C0 SUB #0CH, R0 000008E0 A081 MOV.L R1, 08H[R0] 000008E2 EF21 MOV.L R2, R1 000008E4 A009 MOV.L R1, 04H[R0] ; 601 { ; 602 int i,j,k,z; ; 603 float distance,ztemp; ; 604 clearData(); 000008E6 39rrrr W BSR _clearData 000008E9 6601 MOV.L #00000000H, R1 000008EB E301 MOV.L R1, [R0] 000008ED FBD2rrrrrrrr MOV.L #_dispData, R13 000008F3 FBC200006040 MOV.L #40600000H, R12 000008F9 L237: ; bb97 ; 605 ; 606 for(k=0;k<=repeat;++k) { 000008F9 EC01 MOV.L [R0], R1 000008FB 06850101 CMP 04H[R0].L, R1 000008FF 2Brr * BGT L243 38rrrr 00000904 L238: ; bb81.thread.preheader 00000904 EC01 MOV.L [R0], R1 00000906 71DB07 ADD #07H, R13, R11 00000909 FC471A ITOF R1, R10 0000090C FD724AD00F4940 FDIV #40490FD0H, R10 00000913 6609 MOV.L #00000000H, R9 00000915 L239: ; bb81.thread ; 607 for(i=0;i<=3;++i) { ; 608 for(j=0;j<=3;++j) { 00000915 FC479E ITOF R9, R14 00000918 EFC8 MOV.L R12, R8 0000091A FC83E8 FSUB R14, R8 0000091D FC8F88 FMUL R8, R8 00000920 6607 MOV.L #00000000H, R7 00000922 6676 MOV.L #00000007H, R6 00000924 L240: ; bb2 ; 609 distance=sqrt((3.5-(float)i)*(3.5-(float)i)+(3.5-(float)j)*(3.5-(float)j)); 00000924 FC477E ITOF R7, R14 00000927 EFC1 MOV.L R12, R1 00000929 FC83E1 FSUB R14, R1 0000092C FC8F11 FMUL R1, R1 0000092F FC8B81 FADD R8, R1 00000932 05rrrrrr A BSR _sqrt ; 610 ztemp=3.5+sin(distance/1.3+(float)k/3.14159)*3.5; 00000936 FD72416666A63F FDIV #3FA66666H, R1 0000093D FC8BA1 FADD R10, R1 00000940 05rrrrrr A BSR _sin 00000944 FD723100006040 FMUL #40600000H, R1 0000094B FD722100006040 FADD #40600000H, R1 ; 611 z=(int)(ztemp+0.5); 00000952 FD72210000003F FADD #3F000000H, R1 00000959 FC971E FTOI R1, R14 ; 612 ; 613 // distance=sqrt((3.5-i)*(3.5-i)+(3.5-j)*(3.5-j)); ; 614 // ztemp=3.5+sin(distance/1.3+k/3.14159)*3.5; ; 615 // z=(int)(ztemp+0.5); ; 616 dispData[z][i] |= 1<