Commit graph

2295 commits

Author SHA1 Message Date
GBA bot 28683e701f Update lockfiles 2023-06-30 22:03:31 +01:00
Gwilym Inzani 92e31aef35
Save useless zeroing of buffer (#451)
I realised we don't need to zero the buffer or read the current buffer
value for the first sound that we're writing per frame. Gets us from
17728 cycles per frame for 32768Hz down to 15291 cycles per frame.

From tests (and theory), this reduces the number of cycles per frame by
2,000 for 32768Hz.

- [x] No changelog update needed - already mentioned mixer improvements
there
2023-06-27 23:52:05 +01:00
Gwilym Inzani 13f5fe01d7 Actually use the new first methods 2023-06-27 22:34:45 +01:00
Gwilym Inzani 3b35061a3a Extract iterator to a variable 2023-06-27 21:51:59 +01:00
Gwilym Inzani 38868cb269 Extract even more from the loop body 2023-06-27 21:50:46 +01:00
Gwilym Inzani 57f0a8c889 Remove is_done check in for loop 2023-06-27 21:49:30 +01:00
Gwilym Inzani f4779208e3 Implement first cases for the non stereo 2023-06-27 21:48:01 +01:00
Gwilym Inzani e1d03929f9 Use local labels 2023-06-27 21:33:56 +01:00
Gwilym Inzani 306be59cde Add implementation for if this is the first 2023-06-27 21:31:06 +01:00
Gwilym Inzani 938b052997
Schedule nightly run to be at 6:10 rather than 5:10
Occasionally, miri was't available yet. So we go with a 6:10 run to give it a chance to be installed.
2023-06-25 16:07:59 +01:00
Gwilym Inzani c3268e3de2
Even faster mixer (#447)
If you do an ldmia for loading lots of samples at once, the mixer uses
significantly less CPU (10% compared to previous, 19800 cycles per frame
-> 17701 cycles per frame for 32768Hz).

I've also added a really simple unit test for the `collapse` function to
at least gain some confidence in it.

- [x] Changelog updated / no changelog update needed
2023-06-20 22:04:16 +01:00
Corwin dbf7715e67 use assert_eq and collect 2023-06-20 21:52:07 +01:00
Corwin 389e3ecadb make test not reliant on coincidence alignment 2023-06-20 21:52:07 +01:00
Gwilym Inzani 0e3fe2c49a add a changelog entry 2023-06-18 16:43:00 +01:00
Gwilym Inzani 5a374ba4f0 Add collapse test and fix bug uncovered by it 2023-06-18 16:29:02 +01:00
Gwilym Inzani b2dcd8c854 Pass buffer size as an argument 2023-06-18 16:02:14 +01:00
Gwilym Inzani ba18a0bf4a ldmia again 2023-06-16 23:43:37 +01:00
Gwilym Inzani e72de28961 Can I use movne here instead? 2023-06-16 23:41:15 +01:00
Gwilym Inzani ceb57eb002 r12 is a scratch register 2023-06-16 22:22:03 +01:00
Gwilym Inzani 334e70c664 Do multiple loads at once 2023-06-16 22:19:56 +01:00
Gwilym Inzani 9e08303e62 Extract a macro for this 2023-06-16 22:15:45 +01:00
Gwilym Inzani 6cf3ecaf36 Don't need to save r9 2023-06-16 22:11:44 +01:00
Corwin 20a7c262e9
add optimisation for 64 bit upcast multiply (#444)
This is really good now!


- [x] Changelog updated / no changelog update needed
2023-06-06 23:15:38 +01:00
Corwin 2a21c5fdab
add optimisation for 64 bit upcast multiply 2023-06-06 23:00:17 +01:00
Corwin 28e3a7faf4
Resolve stutter upon switching to dice customise screen (#442)
1. Dealloc now uses the normal dealloc procedure.
    * Better because normalisation is quick, O(1).
    * More normalisation means inserting into the list is faster.
2. Run sfx frame during the generation of upgrades (which can take an
unbounded amount of time).

* Both of these are required to remove the stuttering.
* It sounds really weird now that it works right :/

- [ ] Changelog updated / no changelog update needed
2023-06-05 21:01:12 +01:00
Corwin 80051a163a
Modify the enemy health rng by using a dice roll distribution (#438)
- [ ] Changelog updated / no changelog update needed
2023-06-05 21:01:04 +01:00
Corwin a7269ed65f
Add precision support for fixnums (#437)
- [ ] Changelog updated / no changelog update needed
2023-06-05 21:00:54 +01:00
Corwin 53937b4fa8
Upcast multiply (#436)
- [ ] Changelog updated / no changelog update needed
2023-06-05 21:00:46 +01:00
Corwin 6b84833c4f
remove dealloc_no_normalise 2023-06-05 00:12:36 +01:00
Corwin 95a8804094
reset the number of attempts 2023-06-05 00:12:36 +01:00
Corwin cbb0b7d2a0
resolve stutter 2023-06-05 00:12:36 +01:00
Corwin 083fd43ea3
just dealloc in gc 2023-06-05 00:12:36 +01:00
Corwin 80f5812039
make the letter "R" better (#441)
Hyperspace roll has a not great looking letter "R". Uses change made by
Gwilym.

- [x] no changelog update needed
2023-06-03 23:56:43 +01:00
Corwin 2b94ef0ac7
make the letter "R" better 2023-06-03 23:45:55 +01:00
Corwin 492643d0b5
Show health in hyperspace roll (#440)
Shows health in hyperspace roll

- [x] no changelog update needed
2023-06-03 23:39:04 +01:00
Corwin 95b28983ff
show health 2023-06-03 23:29:54 +01:00
Corwin 1c58a419ec
Hide objects by default (#439)
Fixes bug introduced in #430 
- [x] no changelog update needed
2023-06-03 23:25:28 +01:00
Corwin 77c4741ee7
hide objects by default 2023-06-03 16:06:23 +01:00
Corwin c011e58ec7
separate tests 2023-06-02 18:18:18 +01:00
Corwin ae23f6fdf4
round towards nearest 2023-06-02 11:57:35 +01:00
Corwin 1d7acfb070
modify the enemy health rng by using a distribution 2023-06-02 01:24:37 +01:00
Corwin 6e0d58a674
add precision support for fixnums 2023-06-02 00:03:27 +01:00
Corwin b5704afe5e
remove usize 2023-06-01 18:52:03 +01:00
Corwin 9fa8f75202
upcast multiply 2023-05-30 22:21:12 +01:00
Gwilym Inzani da5aed83e3
Use bilge rather than modular-bitfield (#430)
Thought I'd give bilge a go rather than modular bitfield after reading
this blog post:
https://hecatia-elegua.github.io/blog/no-more-bit-fiddling/

- [ ] Changelog updated / no changelog update needed
2023-05-30 20:41:46 +01:00
Corwin a178e28b77
Optimise Normalisation (#435)
This only optimises the relevant blocks during normalisation.

The benchmark in CI goes from 12023166 cycles to 9260517 cycles, a
decrease of 23%.

- [x] no changelog update needed
2023-05-26 18:23:33 +01:00
Corwin 7e111e0327
remove unused import 2023-05-25 19:30:38 +01:00
Corwin 9c15adf6c8
only normalise the relevant blocks 2023-05-25 19:25:26 +01:00
Corwin 1b687b787d
Inline always in new_from_parts (#433)
Mentioned here that we should probably do it:
https://github.com/agbrs/agb/discussions/370#discussioncomment-4650702

From decompiling, it seems that this normally happens, but lets at least
ensure it if you don't have lto enabled.

- [x] no changelog update needed
2023-05-24 01:47:03 +01:00
Gwilym Inzani 8c1c725dfa Inline always in new_from_parts 2023-05-23 21:46:25 +01:00