Commit graph

1280 commits

Author SHA1 Message Date
Gwilym Inzani 1dd4c9fb83 Add a concept of a restart point 2023-07-18 21:37:01 +01:00
Gwilym Inzani c66f495cc7 Don't need loop labels any more 2023-07-18 21:37:01 +01:00
Gwilym Inzani d929a1689a Extract methods 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 d4b2a2bc1a Fix crackly audio 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 a61069fb60 Handle non multiple of 4 buffer sizes for mono 2023-07-18 21:37:01 +01:00
Gwilym Inzani eb8cb667c1 Extract to macros 2023-07-18 21:37:01 +01:00
Gwilym Inzani fc4632ca8a Only need to load the buffer size once 2023-07-18 21:37:01 +01:00
Gwilym Inzani d38fea7f7a Pass the buffer size rather than using the global variable for it 2023-07-18 21:37:01 +01:00
Corwin a7f9fdf011
Release v0.16.0 2023-07-18 18:55:12 +01:00
Corwin 1db3a61ee3
allow new clippy lint 2023-07-18 18:34:56 +01:00
Corwin 636e31aa91
uncomment out code 2023-07-04 22:35:12 +01:00
Corwin 3687f9b1a5
Merge remote-tracking branch 'upstream/master' into font-renderer 2023-07-04 22:27:06 +01:00
Corwin 0cd469866c
font get optimisation 2023-07-04 21:35:00 +01:00
Corwin 991bb644f9
timers around area of interest 2023-07-04 21:34:51 +01:00
Gwilym Inzani 14c6542e7b Clippy fix didn't delete a space 2023-07-04 20:37:26 +01:00
Gwilym Inzani 6fb7b74b35 Fix clippy lints from 04/07/2023 2023-07-04 20:10:01 +01:00
Corwin c5a7e9a25b
Merge remote-tracking branch 'upstream/master' into font-renderer 2023-07-02 14:59:07 +01:00
Corwin 318ee03c12
fix doclinks 2023-07-02 14:57:01 +01:00
Corwin b82ed16cc2
update test image 2023-07-02 14:55:30 +01:00
Corwin 5c0f855e1b
use newer rustfmt 2023-07-02 14:32:09 +01:00
Corwin fa7a71e0d3
add docs and export 2023-07-02 13:08:54 +01:00
Corwin 66a212f29a
remove unused 2023-07-02 13:08:44 +01:00
Corwin 9388098318
JUSTIFY 2023-07-02 00:38:52 +01:00
Corwin 9edbca582e
magic colour changing 2023-07-02 00:24:54 +01:00
Corwin 5f12040752
the proper nice okay working text rendering 2023-07-01 23:36:58 +01:00
Corwin ec3003c81d
garbage renderer 2023-07-01 19:12:39 +01:00
Corwin 93024f6bab
remove some unused bits 2023-06-29 20:04:27 +01:00
Corwin cf400029f5
caching layout 2023-06-29 00:10:21 +01:00
Corwin f947d82049
text rendering that supports different alignments 2023-06-28 20:29:09 +01:00
Gwilym Inzani 13f5fe01d7 Actually use the new first methods 2023-06-27 22:34:45 +01:00
Corwin d5d3d1a658
strip to bare renderer 2023-06-27 22:00:34 +01:00
Corwin 22b3497bb3
fix 2023-06-27 21:56:26 +01:00
Corwin fd82b259cc
dynamic sprite allocate directly into sprite vram 2023-06-27 21:56:09 +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
Corwin ce7bcacb3c
somewhat mad left align renderer 2023-06-26 23:47:19 +01:00
Corwin b75303863d
buffered text render 2023-06-26 17:10:42 +01:00
Corwin 87ac2fe53c
reuse dynamic sprite 2023-06-26 17:10:42 +01:00
Corwin b99fff7c8e
some object based text rendering 2023-06-26 17:10:03 +01:00
Corwin aa38a03ac9
add read pixel method 2023-06-26 17:10:03 +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 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 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 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 083fd43ea3
just dealloc in gc 2023-06-05 00:12:36 +01:00
Corwin 77c4741ee7
hide objects by default 2023-06-03 16:06:23 +01:00
Corwin b5704afe5e
remove usize 2023-06-01 18:52:03 +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 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
Gwilym Inzani 903157325f Don't recalculate the hash 2023-05-23 21:20:49 +01:00
Corwin d638134d37
remove codegen-units
these were added as a workaround for rust bugs
2023-05-23 20:10:24 +01:00
Gwilym Inzani 1b27bf4613 Remove codegen-units = 1 since it won't be needed any more 2023-05-21 16:37:35 +01:00
Gwilym Inzani 958f32b177 Include macros.inc properly 2023-05-21 16:37:35 +01:00
Gwilym Inzani 78bad29f88 Add codegen-units=1 to prevent miscompiles 2023-05-21 16:37:35 +01:00
Gwilym Inzani fe23bee18b Prevent multiple include errors 2023-05-21 16:37:35 +01:00
Gwilym Inzani 5ab0176ddb Entirely remove the need for binutils 2023-05-21 16:37:34 +01:00
Corwin df696a1093
align after section 2023-05-18 12:06:30 +01:00
Corwin e1426d8ef7
correct non thumb-interwork return 2023-05-17 23:25:27 +01:00
Corwin 9f3259d770
fix alignment of thumb functions defined in assembly 2023-05-17 19:56:57 +01:00
Gwilym Inzani 644e94f8ed Use bilge rather than modular-bitfield 2023-05-17 15:01:22 +01:00
Corwin 1cbc371d3e
go through colours in order rather than randomly 2023-05-07 23:41:17 +01:00
Corwin 64308a993c
use mag squared 2023-05-07 00:47:38 +01:00
Corwin 83c511a186
neaten the letter M 2023-05-06 23:59:47 +01:00
Corwin 7ae3afab6c
add example for no_game 2023-05-06 22:54:22 +01:00
Corwin cb8b42d416
don't use the loader 2023-05-06 22:53:09 +01:00
Corwin d4314213da
use palette in no game to save on not useful aseprite file 2023-05-06 22:45:30 +01:00
Corwin f95d68187b
make dynamic sprite better 2023-05-06 22:45:05 +01:00
Corwin e8479c093b
add macro to import a palette from a sprite 2023-05-06 22:44:43 +01:00
Corwin 13f0eaf5b0
add more colours 2023-05-06 20:31:52 +01:00
Corwin 54340358bc
remove unused import 2023-05-06 19:44:08 +01:00
Corwin 1d7cc04cbf
more colours 2023-05-06 19:11:39 +01:00
Corwin 0271da6d43
add a no game 2023-05-06 18:50:35 +01:00
Corwin 400abe5b31
Release v0.15.0 2023-04-25 21:51:29 +01:00
Corwin 68e981f3c8
Objects, again, again (#402)
* A redesign of objects giving the option of a more managed and an
unmanaged system.
* Managed system features
    * Z ordering (should be efficient, based on a doubly linked list).
* More than 128 objects if some are disabled (not currently efficient).
* Unmanaged
    * Same sprite system as before.
    * You control how objects get put in to OAM with the unmanaged OAM.
    
TODO before this is mergable:
* [x] Docs pass, aim for everything to have docs as before.
* [x] Tests, some of these needs some run time testing.
* [x] Affine matrices, I'm not leaving this to die this time.
* [x] Some API redo, so the names make sense / are similar to before.

Future work:
* The Sprite loader should keep most recently used sprites around and
upon allocation of a new sprite try unloading the least recently used
sprite. (Performance wise this would be a disaster as it would be doing
dealloc and alloc in vblank, so really we want to "learn" how much
buffer we should maintain and try to get that during GC).

- [x] Changelog updated
2023-04-25 21:14:49 +01:00
Gwilym Inzani 9835f81b5f Maybe make the build faster by using the same settings for all crates 2023-04-25 20:22:44 +01:00
Gwilym Inzani 8e152f05c9 Ensure mod tests is at the end 2023-04-25 20:06:52 +01:00
Corwin 3ec9bd2610
Merge remote-tracking branch 'upstream/master' into new-objects 2023-04-23 20:44:46 +01:00
Corwin 94a8e2d4c3
add deprecation for old names 2023-04-23 20:41:42 +01:00
Gwilym Inzani 6355ac0df7
Extract agb hashmap (#418)
Pulls out the hashmap to its own crate. Allows us to use this in interop
code between agb and desktop code and also gives us the ability to run
miri on it to make sure we're not running into any crazy unsoundness
bugs.

- [x] Changelog updated / no changelog update needed
2023-04-23 19:25:33 +01:00
Corwin b75481b88e
Merge remote-tracking branch 'upstream/master' into new-objects 2023-04-23 18:56:07 +01:00
Corwin 14c7028aa0
reverse change of name 2023-04-23 18:55:23 +01:00
Gwilym Inzani d80e3f876e Extract agb hashmap to its own crate 2023-04-23 17:39:00 +01:00
Corwin da61ba78ae
remove alloc error handler 2023-04-23 12:50:15 +01:00
Corwin e26a9c2c24
Merge remote-tracking branch 'upstream/master' into new-objects 2023-04-22 00:46:41 +01:00