Commit graph

93 commits

Author SHA1 Message Date
83cba4afa3 Runtime detection of XE-style extended memory
Uses the "big multiplication table" in 64KB of extended memory if
bank switching appears to work, otherwise uses the table of squares
lookups.

Initial view clocks in at 13.133 ms/px for the XE version and still
14.211 ms/px for the 400/800/XL version.

Tested in emulator with 130XE and XL+Ultimate 1MB upgrade configs,
and base implementation on the 800XL emulator.
2024-12-27 18:37:03 -08:00
ee1c268705 it works 2024-12-26 21:49:13 -08:00
e84a990789 tweaks: 2024-12-26 21:41:03 -08:00
0cde31905e runs but doesn't work 2024-12-26 18:35:37 -08:00
45c5a4cb2d called, gets lost 2024-12-26 18:20:10 -08:00
34ce9da030 builds, not used yte 2024-12-26 18:17:01 -08:00
a9d551a98d first draft initializer 2024-12-26 17:50:59 -08:00
829d2860e8 :P 2024-12-26 12:04:01 -08:00
f996c3cbcd provisional maybe
old mode runs in 81-92 cycles

provisional code runs in 58-77 cycles

if it works ;)
2024-12-25 12:47:37 -08:00
405cec6d51 WIP imul8 via table experiments
planning to try a 64KB table of 8x7-bit multiplies in the high memory
on a 130XE or other high-memory-capable machine

not yet working or finished

too many cycles of overhead per invocation
2024-12-25 10:51:27 -08:00
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
7f2bc43cff squares 2024-12-14 18:56:26 -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
ee5b12dae8 mailmap 2024-08-18 20:15:47 -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