Commit graph

2509 commits

Author SHA1 Message Date
Gwilym Inzani bddb77f5c9
XM tracker (#461)
Closes #446

One big problem with our games so far is that they are 95% music files.
If we want to add a game with more music, we can't at the moment.

This adds a tracker player which can play XM files easily in your games.
A lot of features from tracker files aren't supported yet, but enough to
make the examples sound at least half decent.

- [x] Changelog updated
2023-07-25 20:29:31 +01:00
Corwin b806fa8e66
fix names 2023-07-25 20:27:03 +01:00
Gwilym Inzani a4a7089251 Add changelog entry and update readme 2023-07-25 20:18:21 +01:00
Gwilym Inzani e8e5b31d42 No need to use a generic here any more 2023-07-25 00:50:47 +01:00
Gwilym Inzani f7b3aa8ecb Don't need lr to be saved since we're not using it 2023-07-25 00:27:20 +01:00
Gwilym Inzani 49b9a07a87 Give the same assembly treatment to mono sounds 2023-07-25 00:18:48 +01:00
Gwilym Inzani de666a54f9 Core loop for the tracker in assembly 2023-07-24 23:59:54 +01:00
Gwilym Inzani df75d1ce8c Fix build errors 2023-07-23 23:39:52 +01:00
Gwilym Inzani 25ee876932 Fix a bunch of bugs after playing with different tracks 2023-07-23 23:37:14 +01:00
Gwilym Inzani a4df095031 Improve accuracy of the panning and volume until the last second 2023-07-23 22:15:30 +01:00
Gwilym Inzani d233a2539c Improve accuracy of the volume 2023-07-23 22:10:25 +01:00
Gwilym Inzani 095723bbf8 FineVolumeSlide 2023-07-23 22:03:32 +01:00
Gwilym Inzani f6a05178db Fix slides and add the portamento one 2023-07-23 21:36:02 +01:00
Gwilym Inzani 0911ca44c5 Try a new song and add memory support 2023-07-23 20:54:24 +01:00
Gwilym Inzani 1a25268285 Do the correct type of building for the tracker 2023-07-23 20:36:54 +01:00
Gwilym Inzani 21d1d1385a Remove unused tracker files and add where I found db_toffe 2023-07-23 20:31:46 +01:00
Gwilym Inzani 70d34f1fc8 Rename to include_xm to match the rest of agb 2023-07-23 20:22:22 +01:00
Gwilym Inzani 6cb8f68104 Write some simple docs for agb_tracker 2023-07-23 20:21:04 +01:00
Gwilym Inzani e2f14094fc Update my name 2023-07-23 20:00:31 +01:00
Gwilym Inzani b593b90701 Get the docs building 2023-07-23 19:52:11 +01:00
Gwilym Inzani 352658f23f Fix clippy lints 2023-07-23 19:08:51 +01:00
Gwilym Inzani 85561de1ca Attempt to update the tools to the new folder 2023-07-23 18:35:50 +01:00
Gwilym Inzani 992ce37464 Update justfile to support the tracker crates 2023-07-23 00:31:12 +01:00
Gwilym Inzani 1aa8e5fd33 Reintroduce the first special casing 2023-07-22 23:40:09 +01:00
Gwilym Inzani d6384a6886 This improves mixing performance by about 20% 2023-07-22 23:27:21 +01:00
Corwin 2d53977c49
add energy to amplitude (#457)
- [x] no changelog update needed
2023-07-19 20:36:54 +01:00
Corwin 67435b31e0
update justfile 2023-07-19 17:54:41 +01:00
Corwin 41a0c773dd
clean up other examples 2023-07-19 17:54:41 +01:00
Corwin 0fac43746f
add the dungeon keeper's lament 2023-07-19 17:54:41 +01:00
Gwilym Inzani ff0e8f659e Better tracking of speed 2023-07-19 13:53:46 +01:00
Gwilym Inzani b6cccf3b5a Add Portamento 2023-07-19 13:38:32 +01:00
Gwilym Inzani 1b8f4bbdc9 NoteCut support 2023-07-19 13:22:26 +01:00
Gwilym Inzani a9236531c7 Simplify the basic example and make a timing example 2023-07-19 12:31:59 +01:00
Gwilym Inzani 6f8633861d Use 32-bit numbers more for more performance (and start tracking that) 2023-07-18 22:49:56 +01:00
Gwilym Inzani b8adf08382 Don't hold arpeggios 2023-07-18 22:17:17 +01:00
Gwilym Inzani 03b5f2fafd Remove unused methods 2023-07-18 21:51:38 +01:00
Gwilym Inzani c2e7a3b9b4 Update to 0.16 2023-07-18 21:51:31 +01:00
Gwilym Inzani a91069eac2 Consider the global volume 2023-07-18 21:37:01 +01:00
Gwilym Inzani de085fc1ff Use wrapping add and mul 2023-07-18 21:37:01 +01:00
Gwilym Inzani 8b296794fe Should only decrease the volume after the first tick 2023-07-18 21:37:01 +01:00
Gwilym Inzani 652173c08e Reduce size of pattern by 4 bytes per slot 2023-07-18 21:37:01 +01:00
Gwilym Inzani 515bcb13ca Reset the volume each time a new sound is played 2023-07-18 21:37:01 +01:00
Gwilym Inzani 07b00f11e1 Use relative notes to make it sound almost correct 2023-07-18 21:37:01 +01:00
Gwilym Inzani 4d699e9000 Volume slides - ish 2023-07-18 21:37:01 +01:00
Gwilym Inzani 203b1a4026 Actually make arpeggios work 2023-07-18 21:37:01 +01:00
Gwilym Inzani 9b94b2a2cb Remove commented code 2023-07-18 21:37:01 +01:00
Gwilym Inzani aa635e9aa6 Refactor to effects 2023-07-18 21:37:01 +01:00
Gwilym Inzani 7861571a96 Correctly track restart point 2023-07-18 21:37:01 +01:00
Gwilym Inzani 1dd4c9fb83 Add a concept of a restart point 2023-07-18 21:37:01 +01:00
Gwilym Inzani a0be2a333e Attempt to calculate the speed to play more correctly 2023-07-18 21:37:01 +01:00