Commit graph

149 commits

Author SHA1 Message Date
Gwilym Inzani 48f7020f2c Should track previous retriggers for retrigger of 0 2024-08-28 17:00:19 +01:00
Gwilym Inzani 5f76fcc316 May as well support 0xE8 2024-08-28 16:48:28 +01:00
Gwilym Inzani 9fa171b712 E9 is the same as R0x 2024-08-28 16:46:08 +01:00
Gwilym Inzani 54a31934b2 Add support for retrigger command 2024-08-28 16:43:59 +01:00
Gwilym Inzani 559367f607 Add sample offset command support 2024-08-28 16:32:28 +01:00
Gwilym Inzani ea792f4768 Print the actual effect character 2024-08-28 16:10:26 +01:00
Gwilym Inzani 8cec568a5b Add a method to stop the tracker 2024-08-28 15:48:43 +01:00
Gwilym Inzani 53182d8122 It doesn't appear to be an error to have an invalid instrument index 2024-08-28 12:13:08 +01:00
wysiwys da92ec3b8b Update tracker to support PatternBreak and PositionJump 2024-08-02 21:23:36 -04:00
Gwilym Inzani c7482f54ab This feels more correct 2024-07-11 21:58:44 +01:00
Gwilym Inzani 8fa595f7f7 Handle RampDown 2024-07-11 21:58:44 +01:00
Gwilym Inzani 3bd8b9019d Handle vibrato in the instrument too 2024-07-11 21:58:44 +01:00
Gwilym Inzani d15063373d Implement vibrato correctly and add a small test case 2024-07-11 21:58:44 +01:00
Gwilym Inzani 431833b216 Correct vibrato code generation 2024-07-11 21:58:44 +01:00
Gwilym Inzani c1eaae64e1 Support fine portamentos 2024-07-11 21:58:44 +01:00
Gwilym Inzani 31ca8f631f Add vibrato 2024-07-11 21:58:44 +01:00
Gwilym Inzani f6e7625bb1 Start hooking in waves 2024-07-11 21:58:44 +01:00
Gwilym Inzani f3cc62db6f Massive refactor ahead of waveforms 2024-07-11 21:58:44 +01:00
Gwilym Inzani 0daeba1876 Generate lookup and add waveform to interop 2024-07-11 21:58:44 +01:00
Gwilym Inzani 45f8a52eb5 try_recv to remove unwrap 2024-07-11 21:58:44 +01:00
Gwilym Inzani afddd77ce8 Don't require leaking the track 2024-07-11 21:58:44 +01:00
Gwilym Inzani 71a7b6431c Don't force a pointless lifetime on the tracker 2024-07-11 21:58:44 +01:00
Gwilym Inzani a6fca49f7b Missing minus sign 2024-07-11 21:58:44 +01:00
Gwilym Inzani 2fa574684c Number of channel is configurable 2024-07-11 21:58:44 +01:00
Gwilym Inzani 8899a56f65 Allow the clippy lint 2024-07-11 21:58:44 +01:00
Gwilym Inzani 72598d0232 Enable midi and xm by default 2024-07-11 21:58:44 +01:00
Gwilym Inzani afa8a11b3f Ensure that the 'quote' feature is included 2024-07-11 21:58:44 +01:00
Gwilym Inzani f452070154 Do the same changes for midi 2024-07-11 21:58:44 +01:00
Gwilym Inzani 3a755107aa Get the desktop player actually playing music 2024-07-11 21:58:44 +01:00
Gwilym Inzani c863b94f49 Hello world for desktop player 2024-07-11 21:58:44 +01:00
Gwilym Inzani d0925f6787 Make agb optional for the tracker 2024-07-11 21:58:44 +01:00
Gwilym Inzani 3305ca0ff2 Make the tracker generic on the mixer 2024-07-11 21:58:44 +01:00
Gwilym Inzani d00de7b2a4 Make agb-xm-core return the interop rather than the tokens 2024-07-11 21:58:44 +01:00
Corwin a4d6ba5bc9
Release v0.20.5 2024-06-18 17:49:56 +01:00
Corwin 592e6dce09
fix xmrs minor version breakage 2024-06-17 20:37:32 +01:00
Corwin ac2e6b5046
Release v0.20.4 2024-06-13 23:13:02 +01:00
Corwin bc63776b9e
Exclude tests / examples / benches from the published packages (#589)
The package published to crates.io should not include tests / examples /
benches. Previously we ran into issues with having a too large package
from example data, but we avoided this by making the examples smaller. A
better way to avoid this is to not include them at all.

- [x] no changelog update needed
2024-06-13 22:48:00 +01:00
Corwin a6e4be0577
Release v0.20.3 2024-06-12 17:57:39 +01:00
Corwin 50f2ad6f52
exclude tests / examples / benches from the published packages 2024-06-12 01:19:18 +01:00
renovate[bot] dd15cb2ee0
Update Rust crate xmrs to 0.6 2024-05-29 16:36:06 +00:00
Corwin d05965b98f
Release v0.20.2 2024-05-25 13:20:03 +01:00
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