Commit Graph

34 Commits

Author SHA1 Message Date
kris 9129cdccfe Rename toggles to voltages; get working again 2022-07-22 14:32:01 +01:00
kris e79ed985bc Support 11 cycle cadence using STA $BFFF,Y(=31). This slightly improves quality 2022-07-08 23:28:35 +01:00
kris a356f6a3a7 It works! 2022-07-04 11:03:19 +01:00
kris cea66fe916 Generate stage 3 jump tables 2022-07-04 09:46:56 +01:00
kris a9e7a1bbff Implement (10,10) eof duty cycle as a special case 2022-07-02 21:59:08 +01:00
kris 535656aceb Working! 2022-07-02 14:15:41 +01:00
kris 2a20bebb37 Tidy 2022-07-02 11:43:35 +01:00
kris 3458d3a1de Assert combined EOF operations have the expected (a, b) cadence 2022-07-02 11:42:36 +01:00
kris 2016e4a5f1 Tidy 2022-07-02 10:58:38 +01:00
kris 622583696d Simplify player op generation 2022-07-02 10:52:23 +01:00
kris efb66e03d8 Begin to rework player operation generation 2022-07-02 10:05:21 +01:00
kris 695ddb2c10 Checkpoint 2022-07-02 00:27:27 +01:00
kris 445ec18f34 WIP - tidy and compute the minimum duty cycle for variants that have a STA $C030 in stage 2 trampoline 2022-07-01 23:17:25 +01:00
kris 47c7f441cf WIP - generate 3 stage EOF trampoline parametrized by (a, b) duty cycles 2022-07-01 22:22:38 +01:00
kris 11afaa152b - Only use the minimal player, quality is better and we don't often need more than 6 cycle gaps
- Generate 1-cycle EOF opcodes for now, but we'll need to tweak further.
- Generate both duty cycle orderings (a,b) and (b,a) since we anchor the EOF opcodes with a STA $C030 at the beginning
- Sort EOF by total length so it's clearer when looking at the usage profile which ones are needed
2022-06-28 22:06:38 +01:00
kris 804ce60434 Clean up some more and restore fake EOF opcodes 2022-06-25 15:26:14 +01:00
kris efa63a5ab2 Tidy 2022-06-25 15:15:40 +01:00
kris e0908a9ced WIP - refactor player generation to be a) deterministic b) use opcodes_6502 c) statically enumerate a minimal set of opcode sequences. Since we're giving up on using arbitrary opcode combinations this is much simpler, and maybe more correct. 2022-06-25 15:14:17 +01:00
kris a48e7b796c Oops, EOF opcodes weren't being padded 2022-06-11 21:13:36 +01:00
kris b1bd8f7b19 Don't need most EOF 2022-06-11 17:39:57 +01:00
kris 13fb60fed0 Add a lot of EOF variants - quality is good but they're mostly not used 2022-06-11 17:27:52 +01:00
kris 1552715b49 Optimized EOF sequence 2022-06-04 14:53:33 +01:00
kris fbd6b956d1 Checkpoint working player 2022-06-04 14:06:52 +01:00
kris 8ea4f150ad Checkpoint - trying to mitigate EOF clicking 2022-05-24 22:19:40 +01:00
kris daee564255 Rename slowpath opcode to end_of_frame to better describe what it does.
Add command-line flags for audio normalization params.
2020-12-28 22:42:34 +00:00
kris d4bc2d45e5 Parametrize options by command-line flags 2020-12-28 12:54:44 +00:00
kris a1a1f33c21 Add partial support for 4-cycle NOP; NOP opcode pairs
Count and report on the number of speaker toggles/sec during encoding
2020-12-28 12:29:05 +00:00
kris 0bb7871355 Allow padding out the full $300 page with opcodes, sorted by the
number of non-NOP opcodes to give the most opportunities for speaker
actuation.

Use float32 in opcode code.
2020-12-24 14:40:26 +00:00
kris c776b3cbe2 Refactor to allow passing in other opcode sequences 2020-12-07 21:06:00 +00:00
kris 1cf1ed25bb Don't start opcode sequences with NOPs, the encoder mostly avoids
these so they just waste space without improving quality.
2020-12-07 20:38:58 +00:00
kris ccc8594c45 Clean up more.
Switch back to longest opcodes first, it is both smaller and slightly
better quality (~3%).
2020-10-15 20:28:26 +01:00
kris 76d6bc8426 Integrate generated player code 2020-10-15 14:27:37 +01:00
kris f17db175a5 Simplify 2020-08-25 21:57:42 +01:00
kris 659d9906bd Generates player audio code and encoder representation, by enumerating
all combinations of 6502 opcodes and deduplicating.
2020-08-25 21:54:46 +01:00