Commit graph

128 commits

Author SHA1 Message Date
4a1e35699a wip 2024-12-31 08:24:44 -08:00
0d086a179c wip 2024-12-31 08:23:04 -08:00
61eb1aaf21 notes 2024-12-31 05:11:26 -08:00
b56dc1e98b notes 2024-12-30 20:38:33 -08:00
0a7293d8bc do 4x4 2x2 1x1 only
in prep for bigger pixels
2024-12-30 19:52:35 -08:00
ec42f672d4 use an 8-item z buffer for slightly fasterness 2024-12-30 19:48:28 -08:00
67649d4743 annotations, tweak 2024-12-30 19:17:02 -08:00
ed79c80b16 update readme 2024-12-30 16:50:25 -08:00
e6cbe0bc6b notes 2024-12-30 16:43:18 -08:00
6db8cef82d 51-70 cycles for xe :D 2024-12-30 15:17:50 -08:00
9b7f6b8937 add a viewport in the front spike 2024-12-30 14:22:03 -08:00
3bd9b1ac31 micro-optimizations in imul8xe
53-72 cycles
overview in 10.896 ms/px
2024-12-30 14:09:02 -08:00
63e74d5152 tweak 2024-12-30 13:44:31 -08:00
14125a398a cycle 'in' not 'out' 2024-12-30 11:35:45 -08:00
71d8d93abc even better palette cycling 2024-12-30 11:33:55 -08:00
64a6cf50f3 awesome new palette cycler 2024-12-30 10:21:52 -08:00
100c0f3314 1/2/3 selectable viewports 2024-12-30 09:19:41 -08:00
e51aa91e4e notes 2024-12-30 06:48:04 -08:00
c4b98c7be2 optimize out a temporary
down to 11.076 ms/px on xe
2024-12-30 05:35:22 -08:00
70d2c91f03 fix bank switch on xl/xe
was accidentally enabling basic rom :D

5m46s - 11.759 ms/px - 800xl
5m30s - 11.215 ms/px - 130xe
2024-12-30 03:56:35 -08:00
acac5a8df4 moving the framebuffer into the basic space
fails on 130xe and 800xl for some reason

works on 800 as expected
2024-12-29 21:19:55 -08:00
883f926e57 split memory, wip
appears to work on 800 but xl/xe overlap basic lol
2024-12-29 21:06:48 -08:00
0c63430dd9 wip tables segment to be 2024-12-29 20:37:58 -08:00
3ab5006aa3 wip refacotring 2024-12-29 17:56:14 -08:00
f903272335 refactoring and start on squares 2024-12-29 17:37:06 -08:00
8ad996981a whoops 2024-12-29 13:19:58 -08:00
15fc5367f9 switck with the overview as default fo rnow 2024-12-29 13:18:54 -08:00
2118890977 add an alternate viewport (compile-time currently)
zoomed to max
2024-12-29 13:10:35 -08:00
0fc5ba914f fix pan/zoom bug
was missing an rts on update_palette

this happened to fall through to keycheck
which if timing was wrong would dutifully process the viewport
change and return to update_palette's caller

which in turn was -not- expecting to reset the outer loop

fixed
2024-12-29 12:29:36 -08:00
2b0167226e todos 2024-12-28 20:44:27 -08:00
504457595a correct zoom border checks 2024-12-28 18:11:35 -08:00
0fcf4d6676 comment tweak 2024-12-28 17:40:21 -08:00
d83b811444 remove stray copy of the expanded-ram imul
it's not finished or working, just keep the core one :D
2024-12-28 15:13:06 -08:00
f32cc5fa7c whoops 2024-12-27 19:15:19 -08:00
052a19b6aa Merge pull request 'xe' (#1) from xe into main
Reviewed-on: https://brooke.vibber.net/git/git/brooke/mandel-6502/pulls/1
2024-12-28 02:40:01 +00:00
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