Commit graph

62 commits

Author SHA1 Message Date
05133aabdd slightly faster handling of signed mul
previously we were flipping the inputs if negative, and then the
output if both inputs were negative

turns out you can just treat the whole thing as an unsigned mul
and then subtract each term from the high word if the other term
is negative.

https://stackoverflow.com/a/28827013

this saves a handful of cycles, reducing our runtime to a merge
14.211 ms/px \o/
2024-12-15 20:17:45 -08:00
5637783529 Faster imul16 routine
Improves runtime from 16.24 ms/px to 14.44 ms/px

This uses a routine found on Everything2:
https://everything2.com/title/Fast+6502+multiplication

which uses a lookup table of squares to do 8-bit imuls,
which are then composed into a 16-bit imul
2024-12-14 18:53:31 -08:00
29630c8887 update palette more smoothly 2024-08-19 13:21:44 -07:00
c559b6e76b palette adjustment 2024-08-18 21:07:53 -07:00
6f05a9bbd0 basic palette cycling 2024-08-18 21:06:30 -07:00
8be03993ab fix time of drawing of 'DONE' text 2024-08-18 20:29:39 -07:00
201d9bf15c clear screen after zoom/scroll 2024-02-25 15:15:23 -08:00
c152c4346b Progressive pixel layout 2024-02-04 14:25:15 -08:00
510457f97a add a note to fix stats when changing zoom 2023-03-11 21:15:08 -08:00
3d792603db keyboard nav sorta working 2023-03-11 20:45:32 -08:00
b1c26c1edd WIP fix keyboard check 2023-03-05 16:57:41 -08:00
53336f7af1 WIP quick hack to check keyboard
this for some reason only works ONCE
though I can replicate the logic in BASIC
and it works over multiple keys
not sure what's wrong
2023-03-05 15:45:44 -08:00
24abc21b01 move speed to the right 2023-03-05 13:56:50 -08:00
9926ec28e7 clean up speed display now uses ms/px msg 2023-03-05 13:48:39 -08:00
0501a364c7 Check for repeated zx/zy values
These will never escape, so saves
some time in the lake

trick is taken from fractint
2023-02-12 11:56:20 -08:00
839330edb3 fixes 2023-02-05 15:14:24 -08:00
e9f8aa1512 WIP status bar updates 2023-02-05 14:26:58 -08:00
702f7b3598 WIP frame counter for speed readout
not yet doing any of the calc/output or calls :D
2023-01-29 18:50:04 -08:00
ca5db83e8f rethought the rounding function
realized the top bits are not enough, that was a brainfart
doing comparisons now
2023-01-28 16:37:37 -08:00
b55015ff87 no this seems right
but it's still coming out different. wtf am i doing wrong
it's gotta be a brainfart
2023-01-28 14:34:52 -08:00
76715a6151 Adjust rounding, loop exits
Still slight differences between positive and negative Y halves
Not sure what's wrong
2023-01-28 13:34:50 -08:00
b6ddc0d50e update readme & doc comments & vars 2023-01-22 14:34:30 -08:00
7009e16235 fix range checks 2023-01-22 13:56:19 -08:00
0afed893a6 whoops
now produces correct fractal but iterations outside are
sometimes wrong
probably range errrs in intermediate calc
2023-01-22 12:57:52 -08:00
8af3721308 tweaks 2023-01-22 12:47:24 -08:00
57975b7158 not sure what's wrong have to hceck over 2023-01-22 12:02:15 -08:00
1bef004ccd precision cleanup
using 4.12 and 8.24 consistently
2023-01-22 11:17:51 -08:00
ae9dd0674d corrupt! but it produces pixels 2023-01-22 10:42:37 -08:00
b4721ae46b fix pixel shift 2023-01-22 09:37:37 -08:00
dbbec8ed6d ok two things wrong:
1) bit masks are backwards
2) iter always returning 0
2023-01-22 09:34:42 -08:00
d36667938d run it (fails) 2023-01-22 09:13:19 -08:00
efac8f4f62 now writes pixels sorta 2023-01-22 09:09:12 -08:00
a8872b4e66 hmm 2023-01-22 08:34:06 -08:00
2e5f91a0db wip gfx 2023-01-22 08:20:59 -08:00
335c4d2c96 and use display list copy in aligned memory 2023-01-22 07:36:08 -08:00
6fc07b9e65 hmm 2023-01-22 07:23:46 -08:00
9cbcf1cb5a strings fixed but .... something's corrupt in display 2023-01-22 06:35:41 -08:00
0c04e7ddc8 text but it fails cause not ascii lol 2023-01-22 06:12:40 -08:00
7cb879d110 fix graphics set
forgot that the OS copies shadow registers over lol
2023-01-22 05:54:50 -08:00
f22653bd87 wip loop 2023-01-21 19:17:30 -08:00
32bd5a540c flesh out the mandelbrot iteration loop
some bits i missed increased total to:
1939 - 3007 cycles per iteration

probably still buggy, will test later :D
2023-01-06 17:18:13 -08:00
3d94a9b5d4 show range 2023-01-05 11:58:32 -08:00
c7e7129eb2 whoops missed a few cycs 2023-01-05 11:55:41 -08:00
2340f8210e update round & sketch out the iter cycle count 2023-01-05 11:36:42 -08:00
7f70f14fc2 one last round sketch
combining copy and round
2023-01-05 11:17:13 -08:00
7ac0df0343 Added two version of 16-bit rounding
round16_incdec uses inc and dec
round16_addsub uses adc and sbc

the incdec version is the same when no rounding is needed
but saves about 8 cycles on the rounding cases, for an
average savings of 4.5 cycles for randomly distributed inputs

untested so far
2023-01-05 09:06:07 -08:00
373e1441d3 comment tweaks 2023-01-04 21:09:45 -08:00
efd722eeb2 update cycle count for imul16 2023-01-04 20:37:16 -08:00
41915cf122 save a few bytes by removing a dupe tail from two cases now 2023-01-04 20:33:42 -08:00
38091e535f hmm 2023-01-04 20:31:39 -08:00