diff --git a/src/libsrc/sincos.pla b/src/libsrc/sincos.pla index 62a1173..5146599 100644 --- a/src/libsrc/sincos.pla +++ b/src/libsrc/sincos.pla @@ -1,13 +1,16 @@ include "inc/cmdsys.plh" include "inc/int32.plh" -byte sin90hi[] -byte = $00,$04,$09,$0D,$12,$16,$1B,$1F,$23,$28,$2C,$31,$35,$39,$3E,$42 -byte = $46,$4B,$4F,$53,$57,$5B,$60,$64,$68,$6C,$70,$74,$78,$7C,$7F,$83 -byte = $87,$8B,$8F,$92,$96,$99,$9D,$A0,$A4,$A7,$AB,$AE,$B1,$B4,$B7,$BA -byte = $BE,$C0,$C3,$C6,$C9,$CC,$CE,$D1,$D3,$D6,$D8,$DB,$DD,$DF,$E1,$E3 -byte = $E5,$E7,$E9,$EB,$EC,$EE,$F0,$F1,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$FA -byte = $FB,$FC,$FD,$FD,$FE,$FE,$FE,$FF,$FF,$FF +word sin90[] +word = $0000,$0478,$08EF,$0D66,$11DC,$1650,$1AC2,$1F33,$23A1,$280C +word = $2C74,$30D9,$353A,$3996,$3DEF,$4242,$4690,$4AD9,$4F1C,$5358 +word = $578F,$5BBE,$5FE6,$6407,$6820,$6C31,$7039,$7439,$782F,$7C1C +word = $8000,$83DA,$87A9,$8B6D,$8F27,$92D6,$9679,$9A11,$9D9C,$A11B +word = $A48E,$A7F3,$AB4C,$AE97,$B1D5,$B505,$B827,$BB3A,$BE3F,$C135 +word = $C41B,$C6F3,$C9BB,$CC73,$CF1C,$D1B4,$D43C,$D6B3,$D91A,$DB6F +word = $DDB4,$DFE7,$E209,$E419,$E617,$E804,$E9DE,$EBA6,$ED5C,$EEFF +word = $F090,$F20E,$F378,$F4D0,$F615,$F747,$F865,$F970,$FA68,$FB4C +word = $FC1C,$FCD9,$FD82,$FE18,$FE99,$FF07,$FF60,$FFA6,$FFD8,$FFF6 def sin32(deg)#0 word[2] i32 @@ -15,22 +18,22 @@ def sin32(deg)#0 while deg >= 360; deg = deg - 360; loop while deg < 0; deg = deg + 360; loop if deg < 90 - i32[0] = ((sin90hi[deg] << 8) | sin90hi[deg]) + i32[0] = (sin90[deg]) i32[1] = 0 elsif deg == 90 i32[0] = 0 i32[1] = 1 elsif deg <= 180 - i32[0] = ((sin90hi[180 - deg] << 8) | sin90hi[180 - deg]) + i32[0] = (sin90[180 - deg]) i32[1] = 0 elsif deg < 270 - i32[0] = -((sin90hi[deg - 180] << 8) | sin90hi[deg - 180]) + i32[0] = -(sin90[deg - 180]) i32[1] = -1 elsif deg == 270 i32[0] = 0 i32[1] = -1 else - i32[0] = -((sin90hi[360 - deg] << 8) | sin90hi[360 - deg]) + i32[0] = -(sin90[360 - deg]) i32[1] = -1 fin load32(@i32) @@ -40,6 +43,7 @@ export def mulsin(val, deg) word[2] i32 sin32(deg) muli16(val) + addi16($7FFF) // Round up store32(@i32) return i32[1] end @@ -48,6 +52,7 @@ export def mulcos(val, deg) word[2] i32 sin32(deg + 90) muli16(val) + addi16($7FFF) // Round up store32(@i32) return i32[1] end diff --git a/src/scripts/hrturtle.4th b/src/scripts/hrturtle.4th index 7803889..6faa20e 100644 --- a/src/scripts/hrturtle.4th +++ b/src/scripts/hrturtle.4th @@ -9,7 +9,7 @@ SRC" TURTLE.4TH" : SHOW 0 HGRMODE HGRDRAWBUF TILEDRAWBUF DROP 280 192 INITTURTLE - 1 HGRCOLOR + 3 HGRCOLOR ; : SQUARE @@ -20,7 +20,7 @@ SRC" TURTLE.4TH" ; : SPIN - 360 0 DO + 361 0 DO 50 SQUARE I TURNTO 10 +LOOP @@ -30,3 +30,5 @@ SRC" TURTLE.4TH" SHOW SPIN ; + +SHOW SPIN \ No newline at end of file