Commit graph

1414 commits

Author SHA1 Message Date
Gwilym Inzani ade1ba5718 Also include the docs in the agb lib itself 2024-02-03 20:22:06 +00:00
Constantin b03268f363 Added macro doc 2024-02-03 13:40:59 +01:00
Corwin 7c752b2e97
fix ewram name 2024-01-13 14:34:59 +00:00
Corwin e13d844f1f
use cloned rather than a map that clones 2024-01-13 10:31:00 +00:00
Corwin 1132bc2383
use addr_of_mut rather than mut reference 2024-01-13 10:30:44 +00:00
Corwin 7a6043839e
add docs for priority 2023-12-09 20:48:46 +00:00
Gwilym Inzani 35c601d4e9 Ensure that the affine background example looks consistent 2023-12-05 20:33:00 +00:00
Gwilym Inzani 7c6eaf324b Release v0.18.0 2023-10-31 20:35:14 +00:00
Gwilym Inzani fbd138a0cf Add a symlink for the readme to the agb directory
This is an attempt to make the readme show up on crates.io
2023-10-31 20:04:18 +00:00
Gwilym Inzani c47bef8983
Add clear and draw wide point functions to bitmap4 (#505)
- Adds a proper clear and draw wide point functions to bitmap4 for
consistency.
- I must save the bitmap modes from being removed
2023-10-24 21:57:02 +01:00
Gwilym Inzani 85a8540d44 Add missing #[cfg(test)] 2023-10-24 20:22:43 +01:00
xokz fdab4a3e6f
Update bitmap4.rs 2023-10-23 17:28:22 -04:00
xokz fe90d4d8d7
Update bitmap4.rs 2023-10-23 17:26:20 -04:00
Brandon Atkinson 2f1ad07e43 allow TileSetting palette to be set 2023-10-18 23:28:13 -06:00
Gwilym Inzani 4ed2ea3784 Move the linkers scripts to the src directory so agb itself can change its script 2023-10-18 12:26:50 +01:00
Gwilym Inzani eff075f50b Remove the need for a linker script and move multiboot to a feature 2023-10-18 12:08:12 +01:00
Corwin 41e192eff2
set interrupt handler to its own section 2023-10-18 00:17:24 +01:00
Gwilym Inzani ce233f7d62 Always check the address to make sure that things work as expected 2023-10-17 23:51:40 +01:00
Gwilym Inzani 5feb67285d Add a test that multiboot works 2023-10-17 23:49:57 +01:00
Gwilym Inzani aa33a46919 Remove trailing spaces 2023-10-17 23:45:08 +01:00
Gwilym Inzani 41bda0036f Make sure mgba recognises this as a GBA rom 2023-10-17 23:44:48 +01:00
Gwilym Inzani c9c8d9e879 Don't put the entrypoint in the .text section 2023-10-17 23:22:04 +01:00
Gwilym Inzani 1c0e9f9a2a Maybe get multiboot to work? 2023-10-17 23:15:51 +01:00
Gwilym Inzani ec6774ca6b Split into regular, multiboot and common 2023-10-17 23:14:18 +01:00
Gwilym Inzani 243e810150 Rename crt0 section to entrypoint 2023-10-17 22:22:48 +01:00
Gwilym Inzani 7afa19965c Rename to entrypoint.s 2023-10-17 22:12:50 +01:00
Corwin 8091e22b10
use macro for the grabbing linker variable 2023-10-17 22:09:15 +01:00
Corwin 0b747508a8
fixup the multiboot 2023-10-17 21:54:54 +01:00
Corwin 8e547c6783
derive the data ends 2023-10-17 21:53:50 +01:00
jmaargh 4a13d52faf Resolve TODOs about linker symbols 2023-10-16 22:50:53 +01:00
jmaargh 7a1f554b72 Fix symbols for RAM section locations
Using the ld functions is not only more readable, but more accurate.
Previous use of the `.` variable could occasionally have off-by-one
errors.
2023-10-16 22:46:27 +01:00
jmaargh 9040844854 Reserve IWRAM space for BIOS use 2023-10-16 22:45:59 +01:00
Gwilym Inzani 7454563325 Tests must come at the end 2023-10-07 20:28:09 +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 b6916d7e74 Release v0.17.0 2023-10-03 22:33:10 +01:00
Corwin fc721ea060
Bitmap4 fix (#487)
Expands on #486 by updating example and updating changelog.

- [x] Changelog updated
2023-09-28 21:35:21 +01:00
Corwin 74ccdfcd7f
update example to excersise the broken case 2023-09-28 21:19:07 +01:00
xokz 575976bf52
Update bitmap4.rs 2023-09-28 15:03:24 -04:00
xokz cf80e313b1
Update bitmap4.rs
colors of lower values can now overwrite colors of higher values.
2023-09-28 14:46:32 -04:00
Corwin 473181718b
remove outer loop 2023-09-14 13:28:00 +01:00
Corwin c12ae4b5d9
add safety comments to public unsafe functions 2023-09-14 12:44:34 +01:00
Gwilym Inzani 5b3248ec5a Massively improve the code generation around tile sizes 2023-09-06 08:51:47 +01:00
Gwilym Inzani ed2e7dec5c Let rust do the register allocation 2023-09-06 08:34:14 +01:00
Gwilym Inzani bb57298c54 This has better code generation 2023-09-06 00:37:23 +01:00
Gwilym Inzani 77445b304f Custom assembly as thumb 2023-09-06 00:23:01 +01:00
Gwilym Inzani e504b93fe3 Write a custom tile copy command 2023-09-05 23:52:35 +01:00
Gwilym Inzani 7431086b14 Try using memcpy4 for copying the tile data 2023-08-31 07:53:08 +01:00
Gwilym Inzani d3c32ce351 Minor optimisation for the show entire screen case 2023-08-31 07:53:01 +01:00
Gwilym Inzani 2c556f9ce8 Fix docs for real this time 2023-08-30 17:02:06 +01:00
Gwilym Inzani dc04785669 Fix doc examples 2023-08-30 16:46:05 +01:00
Gwilym Inzani 11fe4d92ac Delete the old toml file 2023-08-30 16:25:16 +01:00
Gwilym Inzani 3a1f8ed8ed Add a convienence fill_with method 2023-08-30 16:22:55 +01:00
Gwilym Inzani f0ddfc96b4 Reference the TRANSPARENT_TILE_INDEX in the definition of BLANK 2023-08-30 16:18:08 +01:00
Gwilym Inzani 6853d36a9c Dynamic tile can also return the setting directly 2023-08-30 16:14:51 +01:00
Gwilym Inzani 5cfa64030a Generate the tileset directly 2023-08-30 16:08:43 +01:00
Gwilym Inzani 9abfa7f8e1 Update documentation 2023-08-29 16:20:54 +01:00
Gwilym Inzani b5991d3ccc Copy all the tiles for a 256 colour map 2023-08-29 16:14:05 +01:00
Gwilym Inzani a865240308 Start fixing 256 colours 2023-08-29 16:07:50 +01:00
Gwilym Inzani 9db4230aee Better error if we run out of VRam 2023-08-29 15:34:07 +01:00
Gwilym Inzani c9bf56755a Also deduplicate for the dungeon puzzler 2023-08-29 15:17:50 +01:00
Gwilym Inzani 3d7d3f25a2 Update agb repo 2023-08-29 14:13:40 +01:00
Gwilym Inzani b5af3a3aff Generate tile settings instead of palette assignments 2023-08-29 14:07:19 +01:00
Gwilym Inzani dc46cfef45 If r2 < 4 don't overwrite all memory 2023-08-22 20:15:26 +01:00
Corwin 3430668bdd
change name of cycle measure function and remove from public api 2023-08-08 09:48:10 +01:00
Gwilym Inzani 11f71371e2 Be less happy with what we allow 2023-08-06 21:02:15 +01:00
Gwilym Inzani 46c9ebb855 Derive default to make bilge 2.0 happy (and may as well) 2023-08-06 21:02:15 +01:00
renovate[bot] 24070fdd18 Update Rust crate bilge to 0.2 2023-08-06 21:02:15 +01:00
Corwin ba62aca590
add example for saving 2023-08-05 11:53:14 +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 9445a57f48 Channel counts as finished if the channel position reaches the end of the effect 2023-07-25 23:24:40 +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 a4df095031 Improve accuracy of the panning and volume until the last second 2023-07-23 22:15:30 +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 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
Gwilym Inzani 03b5f2fafd Remove unused methods 2023-07-18 21:51:38 +01:00
Gwilym Inzani de085fc1ff Use wrapping add and mul 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 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