Commit graph

158 commits

Author SHA1 Message Date
Corwin 6a5346026a
Release v0.20.1 2024-05-17 23:09:16 +01:00
Gwilym Inzani 93a3bc8e56 just fmt 2024-05-16 23:04:26 +01:00
Gwilym Inzani 352b352b27 Properly implement delay and envelopes 2024-05-16 00:27:20 +01:00
Gwilym Inzani 5494ae29e1 Get the envelopes correct 2024-05-15 23:47:37 +01:00
Gwilym Inzani 2e0f89978a Add note delay support (effect EDx) 2024-05-15 22:30:13 +01:00
Gwilym Inzani b5fc27d243 Spell amiga correctly 2024-05-15 21:54:31 +01:00
Gwilym Inzani 2ab3fa79e1 Notes are 1 indexed, not 0 indexed
Versions of xmrs below 0.4.1 (unreleased, 0.4.2 is on crates.io but
0.4.1 is in the repo) have a bug where they swap linear and amiga
frequencies. This caused all old versions of agb (which were using
version 0.3) to use the amiga frequency table rather than the linear
one. Technically it sounds slightly wrong but it is kinda hard to tell.

Since agb 0.20.0, we are now using xmrs 0.5, which correctly reports the
frequency type for the XM file. That pointed out an error in the
note_to_speed method for linear frequencies (since those are now being
used). It turns out that the formula for calculating the frequency
expects a 0 based index for the note, but we were passing a 1 based
index for the note. Moving this down a note fixes the issue where things
were being played at the wrong frequency.
2024-05-15 21:35:03 +01:00
Corwin 737b547343
Release v0.20.0 2024-05-14 22:57:40 +01:00
Gwilym Inzani e8aed8e376
Backtraces (#590)
Implements a very basic backtrace and the ability to format them

If you run the panic example and press A, you get:

```
[ERROR] GBA Debug: [failed]
[ERROR] GBA Debug: debug data: ce3-1ee7-1fb7-24d-1ad
[FATAL] GBA Debug: Error: panicked at src/memory_mapped.rs:101:24:
index out of bounds: the len is 240 but the index is 240
```

which you can then prettify with:

```
> agb-addr2line ../target/thumbv4t-none-eabi/debug/examples/panic 0ce3-1f57-2027-024d-01ad
0:	rust_begin_unwind <agb>/lib.rs:321
1:	core::panicking::panic_nounwind <core>/panicking.rs:151
2:	core::panicking::assert_failed_inner <core>/panicking.rs:321
3:	agb::memory_mapped::MemoryMapped2DArray<T,_,_>::set <agb>/memory_mapped.rs:101
	(inlined by) agb::display::bitmap3::Bitmap3::draw_point <agb>/display/bitmap3.rs:31
4:	main /home/gwilym/Projects/agb/agb/examples/panic.rs:15
```

- [ ] Changelog updated / no changelog update needed
2024-04-09 20:25:15 +01:00
renovate[bot] 0b7e3464ab
Update Rust crate xmrs to 0.5 2024-04-02 12:10:08 +00:00
Gwilym Inzani 71bdb085be Include the new option in all the config.tomls 2024-04-01 17:02:59 +01:00
Corwin 184b11ed81
use static rather than const 2024-03-29 14:41:08 +00:00
renovate[bot] 5093c94eac
Update Rust crate xmrs to 0.4 2024-03-09 15:27:29 +00:00
Corwin 9e63b2c46c
Release v0.19.1 2024-03-06 19:11:47 +00:00
Gwilym Inzani 66ec762855 Release v0.19.0 2024-03-06 09:33:58 +00:00
Gwilym Inzani 6a0f0a30c4 Should be 0.18.1 2024-02-20 22:27:29 +00:00
Gwilym Inzani ff9f336be3 Do pitch bend correctly 2024-02-20 22:27:29 +00:00
Gwilym Inzani a36b06b35c Correctly handle no sample set 2024-02-20 22:27:29 +00:00
Gwilym Inzani b583ba22a9 Use Default::default which is nicer 2024-02-20 22:27:29 +00:00
Gwilym Inzani 2e453e8e0f Envelopes for MIDI 2024-02-20 22:27:29 +00:00
Gwilym Inzani 0a13b54e12 Pitch bending 2024-02-20 22:27:29 +00:00
Gwilym Inzani bf79b09e6a Avoid double panning correction 2024-02-20 22:27:29 +00:00
Gwilym Inzani 817ba12ea7 Format the let-else 2024-02-20 22:27:29 +00:00
Gwilym Inzani 54ade5af2d Add a note about midi support being experimental 2024-02-20 22:27:29 +00:00
Gwilym Inzani cf50223dfc It seems to do better without the tune for some reason 2024-02-20 22:27:29 +00:00
Gwilym Inzani 0e685ce7e8 That's the longest out by one I've ever had to debug
Thanks Corwin for helping!
2024-02-20 22:27:29 +00:00
Gwilym Inzani 85e358874c HELP! 2024-02-20 22:27:29 +00:00
Gwilym Inzani 7f200a21ad This works better than before 2024-02-20 22:27:29 +00:00
Gwilym Inzani a55b106106 Better looping 2024-02-20 22:27:29 +00:00
Gwilym Inzani e103468b86 Vaguely get the correct beat and the patterns correct 2024-02-20 22:27:29 +00:00
Gwilym Inzani 64976deeb5 Export maybe something? 2024-02-20 22:27:29 +00:00
Gwilym Inzani 7868094f7e Maybe exporting something useful? 2024-02-20 22:27:29 +00:00
Gwilym Inzani 32aaaef4cd It actually builds now 2024-02-20 22:27:29 +00:00
Gwilym Inzani 5768b56028 Fix unused warning 2024-02-20 22:27:29 +00:00
Gwilym Inzani 797fc8394f Boilerplate for midi support 2024-02-20 22:27:29 +00:00
Gwilym Inzani 3f607b379a Release v0.18.1 2024-02-06 22:36:11 +00:00
Gwilym Inzani 7c6eaf324b Release v0.18.0 2023-10-31 20:35:14 +00:00
Gwilym Inzani 00631b2166 Delete all the gba.ld files 2023-10-18 12:08:25 +01:00
Gwilym Inzani 48b9eb3775 Update all the remaining linker scripts 2023-10-17 23:52:04 +01:00
Corwin 8e547c6783
derive the data ends 2023-10-17 21:53:50 +01:00
Corwin f7434a4bf3
run linker script update script 2023-10-17 20:29:12 +01:00
Gwilym Inzani 53685b0410 Release v0.17.1 2023-10-05 22:18:04 +01:00
Gwilym Inzani c280316fa2 Update Cargo.toml files so docs.rs is happy 2023-10-04 16:36:46 +01:00
Gwilym Inzani f3e3b6a244 Update agb-tracker to version 0.17 2023-10-03 22:47:30 +01:00
Gwilym Inzani b6916d7e74 Release v0.17.0 2023-10-03 22:33:10 +01:00
Gwilym Inzani 0900121273 Update docs 2023-09-06 09:41:13 +01:00
Gwilym Inzani 0c19988699 Use 32768Hz for the tracker 2023-09-05 23:22:50 +01:00
Gwilym Inzani 2d69a4682b Should let the fadeout take over once the envelope has finished 2023-08-06 20:25:31 +01:00
Gwilym Inzani eda11073ed Introduce fixnum::from_f(32|64) 2023-08-06 20:24:59 +01:00
Gwilym Inzani 4f7fb7125b Fix crash for some files 2023-08-05 23:51:26 +01:00
Gwilym Inzani 67de2d5833 Implement fadeout 2023-08-05 23:51:12 +01:00
Gwilym Inzani f6ed1c484b Implement global volume 2023-08-05 22:55:03 +01:00
Gwilym Inzani 3976fd93ea Correctly interpret F00 2023-08-05 22:29:31 +01:00
Gwilym Inzani db75d8b048 Minor fixes when trying other tracks 2023-08-05 01:33:48 +01:00
Gwilym Inzani ff5d324356 Reuse envelopes if they are the same 2023-08-05 00:58:39 +01:00
Gwilym Inzani aabfb1b083 This sounds pretty decent now 2023-08-05 00:24:11 +01:00
Gwilym Inzani 47455a0377 First pass at implementing envelope playing 2023-08-05 00:02:50 +01:00
Gwilym Inzani ca4cb55b39 Add boilerplate for exporting the envelopes 2023-08-04 23:25:48 +01:00
Gwilym Inzani d29a641a44 Specify that it is the volume envelope 2023-08-04 23:19:07 +01:00
Gwilym Inzani 826fdd881a Add data structure 2023-08-04 23:17:59 +01:00
Gwilym Inzani 9d299f3e66 Fix out by one error with instrument samples 2023-08-04 23:07:19 +01:00
Gwilym Inzani fa4b2ebd5d Implement F command 2023-08-04 22:30:49 +01:00
Gwilym Inzani 6731fa88a0 I prefer this a bit slower 2023-08-02 17:18:27 +01:00
Gwilym Inzani 8177366c6b Remove dbg 2023-08-02 16:49:30 +01:00
Gwilym Inzani 4b145d3194 Try composing my own theme (with some bug fixes) 2023-08-02 16:48:41 +01:00
Gwilym Inzani f4214b5da8 Use new music for dungeon puzzler's lament and fix tracker bugs 2023-08-01 21:41:33 +01:00
Gwilym Inzani 3da10f11be Use my new married name in all the places it appeared 2023-07-26 10:29:03 +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 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 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 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 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 a0be2a333e Attempt to calculate the speed to play more correctly 2023-07-18 21:37:01 +01:00
Gwilym Inzani 938f05f8d1 Compile in release and make actually safe 2023-07-18 21:37:01 +01:00
Gwilym Inzani 8191de3546 Try a pure rust implementation to allow for looping correctly 2023-07-18 21:37:01 +01:00
Gwilym Inzani 86db9d15bf Don't assume agb-tracker-interop dependency 2023-07-18 21:37:01 +01:00