Commit graph

1321 commits

Author SHA1 Message Date
Gwilym Kuiper 1e759dbeca Move the palettes to a single constant rather than being repeated 2022-10-08 23:02:54 +01:00
Gwilym Kuiper 9bddbdba1c Seal the TiledMap trait 2022-10-08 22:40:20 +01:00
Gwilym Kuiper 5c578df227 transparent colour definition isn't really needed here 2022-10-08 22:34:54 +01:00
Gwilym Kuiper 7d43903ee0
Merge pull request #323 from gwilymk/remove-frequency-features
Remove frequency features
2022-10-08 22:24:07 +01:00
Gwilym Kuiper cc66b65847 Update the docs 2022-10-08 21:39:48 +01:00
Gwilym Kuiper 870478353c Use the correct buffer sizes 2022-10-08 21:20:13 +01:00
Gwilym Kuiper c0821c9229 Ensure packed(4) 2022-10-08 17:14:58 +01:00
Gwilym Kuiper fe2e480f28 Remove pointless casts 2022-10-08 17:13:25 +01:00
Gwilym Kuiper faed7b456f Avoid double transforming 2022-10-08 17:12:50 +01:00
Gwilym Kuiper e63e830a9c Merge remote-tracking branch 'origin/master' into affine 2022-10-08 17:05:00 +01:00
Gwilym Kuiper c5f6e10889 Update all toml files to the new transparent requirement 2022-10-08 16:59:40 +01:00
Corwin c90e8de893 clippy autofix 2022-10-08 11:34:43 +01:00
Gwilym Kuiper c6d961cd8d Almost works 2022-10-02 21:18:29 +01:00
Gwilym Kuiper 2ffc68c5c1 Start making the frequency field dynamic rather than a feature flag 2022-10-02 21:14:01 +01:00
Corwin 5e0795ae14 add garbage collection using hashmap retain 2022-10-02 20:05:13 +01:00
Corwin 7143621407 use unsafe around creating new static sprites, no guarentee that it does it correctly though 2022-10-02 19:34:38 +01:00
Corwin b7448d714e remove unused arena 2022-10-02 19:34:38 +01:00
Corwin 5d541631ae add dynamic sprite support 2022-10-02 19:34:38 +01:00
Corwin 1acf7142da switch to using rust Rc 2022-10-02 19:34:38 +01:00
Corwin 5d21f720a5 add arena library 2022-10-02 19:34:38 +01:00
Corwin 88e1635fb1 unify types 2022-10-02 19:34:38 +01:00
Corwin 781e1efc6f satisfy linter 2022-10-02 19:34:38 +01:00
Corwin 758f9849c3 track the lifetime of the static object controller 2022-10-02 19:34:38 +01:00
Gwilym Kuiper 4bf3e0d597 Add tests for size_hint and ensure .iter() returns a better iterator 2022-10-02 19:10:50 +01:00
Gwilym Kuiper 78554862c8 Move the tests to a better location 2022-10-02 19:05:29 +01:00
Gwilym Kuiper a44b8a4013 Add comment explaining the continue statement 2022-10-02 19:00:59 +01:00
Gwilym Kuiper c658b6afe5 Add implementation of retain to HashMap 2022-10-02 18:55:21 +01:00
Gwilym Kuiper 2d23f0a36c Implement size_hint for the hashmap iterators 2022-10-02 18:44:48 +01:00
Gwilym Kuiper ae5d8818b6 Fix test in release mode (don't know why this works :/ but is more correct) 2022-10-01 17:09:48 +01:00
Gwilym Kuiper ffde16abd9 Remove crate::println! 2022-10-01 15:31:19 +01:00
Gwilym Kuiper ccc3823085 Remove unused import 2022-10-01 15:30:46 +01:00
Gwilym Kuiper cde3bca0ea Make the background rotate again 2022-10-01 15:30:37 +01:00
Gwilym Kuiper dd2030d354 Use the fact that tris turn into integers nicely 2022-10-01 15:29:42 +01:00
Gwilym Kuiper 63b0fa63c6 packed(4) to ensure alignment 2022-10-01 15:28:53 +01:00
Gwilym Kuiper 83c28254a1 Update to be closer to the API I actually want but currently only works in release mode 2022-09-22 23:29:58 +01:00
Gwilym Kuiper 59673206b3 Make the example work the way I expect it to 2022-09-22 21:34:03 +01:00
Gwilym Kuiper 496b4a4953 repr packed 2022-09-22 21:33:59 +01:00
Gwilym Kuiper 84c87a8088 Merge remote-tracking branch 'origin/master' into affine 2022-09-22 20:13:23 +01:00
Alissa Rao b920d94f83
Remove agb-tests in favor of putting the tests directly in agb. 2022-09-15 23:28:38 -07:00
Alissa Rao 8f3e438070
Final round of bugfixes, documentation fixes and clippy warning fixes. 2022-09-15 23:25:17 -07:00
Alissa Rao 821098dd26
Implement EEPROM save media.
Fix EEPROM implementation.
2022-09-15 23:25:16 -07:00
Alissa Rao 8dd0f4768a
Add support for flash save media. 2022-09-15 23:25:16 -07:00
Alissa Rao 4397bb0d66
Add tests for cartridge save access. 2022-09-15 23:25:16 -07:00
Alissa Rao 2be44c12e5
Improve codestyle in asm_routines.s, remove unsafe save implementation in hyperspace-roll. 2022-09-15 23:25:16 -07:00
Alissa Rao ec41db2fc9
Reintegrate SRAM save media reader. 2022-09-15 23:25:13 -07:00
Alissa Rao d50413a3cc
Update the code style of the save module to better match agb's philosophy. 2022-09-15 23:25:08 -07:00
Alissa Rao 217f42a635
Initial work on porting gba save code to agb codebase. 2022-09-15 23:20:07 -07:00
Alissa Rao 6d51d1bef3
Rework a simpler example to use agb::sync instead of bare_metal. 2022-09-15 23:14:30 -07:00
Alissa Rao 89c76616b6
Implement a new sync API allowing for mutexes that don't require disabling IRQs. 2022-09-15 23:14:27 -07:00
Gwilym Kuiper 654bff0cb7 Mark ignore on test runner docs 2022-09-15 22:47:08 +01:00
Gwilym Kuiper 68fb9c7e02 Remove reference to the testing feature 2022-09-15 22:39:44 +01:00
Gwilym Kuiper d6c5099209 Make testing a default feature 2022-09-15 22:37:36 +01:00
Gwilym Kuiper 45e9c860df Fix small issues from latest clippy version 2022-09-15 21:04:10 +01:00
Gwilym Kuiper fcde651821 Allow movement of the affine background 2022-08-12 00:02:10 +01:00
Gwilym Kuiper 97e3948f32 Fix warnings and remove debug logs 2022-08-11 23:49:51 +01:00
Gwilym Kuiper ff89f7f425 Get first example working 2022-08-11 23:49:51 +01:00
Gwilym Kuiper 9a5ecc5cda Assert replace tile is passed two tiles of the same size 2022-08-11 23:49:51 +01:00
Gwilym Kuiper d106b0a82b Simplify map.rs 2022-08-11 23:49:51 +01:00
Gwilym Kuiper affea47a32 Remove const and rustfmt::skip 2022-08-11 23:49:51 +01:00
Gwilym Kuiper 31f85cf6b9 Simplify tiled0-2 2022-08-11 23:49:51 +01:00
Gwilym Kuiper d59e2672c0 Remove features 2022-08-11 23:49:51 +01:00
lifning ee576597c2 Add rudimentary affine background layer support. 2022-08-11 23:49:51 +01:00
Corwin d5c9312dc4 add convenience functions for performing multiple actions on one layer 2022-08-09 19:16:12 +01:00
Corwin afa9ef9109 add docs for blend 2022-08-09 19:16:12 +01:00
Corwin 921c26f7c2 add blending to the window example 2022-08-09 19:16:12 +01:00
Corwin 7ad160e30f use struct newtypes 2022-08-09 19:16:12 +01:00
Corwin cae71ff249 add blend to distributor 2022-08-09 19:16:12 +01:00
Corwin 41ccd56919 new function for blend 2022-08-09 19:16:12 +01:00
Corwin d0b3d9e7b3 add blend abstraction 2022-08-09 19:16:12 +01:00
Corwin ca9c898c14 add general set bits 2022-08-09 19:16:12 +01:00
Corwin 4a5f77ddd6 fix doc comment to link correctly 2022-08-06 21:16:11 +01:00
Corwin 12d4a8cd81 add module level docs 2022-08-06 12:51:59 +01:00
Corwin e1448f7d81 write docs for windows 2022-08-06 12:36:28 +01:00
Corwin 78ff4011c7 merge imports 2022-08-06 12:36:28 +01:00
Corwin dbbd7a3d34 add some inlines to small functions 2022-08-06 12:36:28 +01:00
Corwin e318898197 add example for window 2022-08-06 12:36:28 +01:00
Corwin 2b4a95a4a9 clamp the position before converting to u8 2022-08-06 12:36:28 +01:00
Corwin 648ce375d5 enabling and disabling windows 2022-08-06 12:36:28 +01:00
Corwin f9d9220ead function to reset the window 2022-08-06 12:36:28 +01:00
Corwin 44fd7d0027 use a name matching rust conventions 2022-08-06 12:36:28 +01:00
Corwin 7735baecc9 use a more sensible ordering of numbers 2022-08-06 12:36:28 +01:00
Corwin a188e7ba66 add abstraction over windows 2022-08-06 12:36:28 +01:00
Corwin 10423d0752 background id exposed 2022-08-06 12:36:28 +01:00
Corwin 99af3e2b17
Merge pull request #281 from corwinkuiper/hashmap-allocator
Custom allocator support in HashMap
2022-08-04 21:55:51 +01:00
Gwilym Kuiper 73cec55e05 Move crt0.s and interrupt_handler.s to src 2022-08-04 20:08:18 +01:00
Corwin 5b3d288079 support custom allocators in hashmap 2022-08-04 19:27:08 +01:00
Corwin e3ac5de377 make the allocators clonable 2022-08-04 19:26:55 +01:00
Corwin 2e97fb2b24 Release v0.11.1 2022-08-02 23:52:43 +01:00
Corwin 43b256a9f3 Release v0.11.0 2022-08-02 23:45:44 +01:00
Gwilym Kuiper 14f42670d2
Merge pull request #277 from gwilymk/deny-missing-docs-in-hashmap
Deny missing docs in HashMap and document remaining two public structs
2022-08-02 22:59:53 +01:00
Gwilym Kuiper 460cf7db91 Deny missing docs in HashMap and document two public structs 2022-08-02 22:52:16 +01:00
Corwin 267fe80981 remove doc outside of agb_fixnum 2022-08-02 19:40:22 +01:00
Corwin 46c5dcd2de inline docs in agb crate 2022-08-02 18:49:00 +01:00
Corwin 940a92b021
Merge pull request #271 from lifning/master
Support armv4t-none-eabi target as well.
2022-08-01 20:38:39 +01:00
Corwin f7d6199ab2 add the config to be able to compile this 2022-08-01 17:36:02 +01:00
Corwin 9410f6ed1d update docs 2022-08-01 12:07:50 +01:00
lifning 22e9cbccc0 Support armv4t-none-eabi target as well. 2022-08-01 02:20:03 -07:00
Corwin 0409a20527 add examples demonstrating this 2022-08-01 01:38:26 +01:00
Corwin a7e038aa18 Release v0.10.0 2022-07-31 17:08:48 +01:00
Corwin 567244d7dc remove print from test 2022-07-31 14:45:26 +01:00
Corwin 473fc12cee document objects 2022-07-31 13:42:41 +01:00
Gwilym Kuiper 3903b10d15
Merge pull request #266 from gwilymk/update-include-gfx-docs
Update include_gfx! documentation
2022-07-31 11:38:01 +01:00
Corwin cd70a3ed22 update docs 2022-07-31 01:06:36 +01:00
Corwin e92e8d39a5 implement allocators as zsts 2022-07-31 01:06:36 +01:00
Gwilym Kuiper acf33a5058 Update include_gfx! documentation 2022-07-31 00:04:52 +01:00
Gwilym Kuiper 3ec95a0277
Merge pull request #265 from gwilymk/gc-vram-at-the-correct-time
Run the GC after copying the tiles rather than before
2022-07-30 23:22:07 +01:00
Corwin b39b6f43b3 correct end address of range 2022-07-30 22:49:26 +01:00
Gwilym Kuiper 14e371c911 Run the GC after copying the tiles rather than before 2022-07-30 22:42:01 +01:00
Corwin 0c25eb6bee fix doc examples 2022-07-30 19:47:34 +01:00
Corwin 7f760d4404 add some doc comments to explain the allocators 2022-07-30 19:34:40 +01:00
Corwin feea7d2af1 privatise agb_alloc crate 2022-07-30 19:34:30 +01:00
Corwin cd000ca767 use the end of all assigned iwram data 2022-07-30 17:21:46 +01:00
Corwin a3de583d40 fix 2022-07-30 17:07:18 +01:00
Corwin 433fad15a1 mark function as pub crate so it's not used outside agb 2022-07-30 16:52:41 +01:00
Corwin 002ccc64dd implement allocator api so we can allocate to (ew/iw)ram 2022-07-30 16:40:48 +01:00
Gwilym Kuiper 0111ec43bb agb_start_tests can now be doc(hidden) 2022-07-25 22:49:18 +01:00
Gwilym Kuiper 20aebd349a Provide an empty #[entry] in lib.rs 2022-07-25 22:49:17 +01:00
Gwilym Kuiper 2e505f9684 Remove the need for a special test implementation 2022-07-25 22:49:17 +01:00
Gwilym Kuiper 9231d16071 Add some documentation for the test runner 2022-07-25 22:49:17 +01:00
Gwilym Kuiper 553a625c91 Mkae it possible to run tests in target crates (and add a basic tests in hat-wizard) 2022-07-25 22:49:17 +01:00
Corwin 29c74f6286 move commit 2022-07-24 21:30:45 +01:00
Gwilym Kuiper 8df9f4b5c4 Go back to using DMA for sprites 2022-07-21 20:52:07 +01:00
Gwilym Kuiper c2a4845a2e Add a must_use to pos 2022-07-21 20:34:26 +01:00
Gwilym Kuiper 3de22df7a2 Add get and set position on sound channels 2022-07-17 10:32:01 +01:00
Gwilym Kuiper a5e0e145d2 Attempt to support changing the volume of stereo sound 2022-07-16 18:47:39 +01:00
Corwin 1be10ba450 align sprite data to 2 byte boundaries 2022-07-16 13:36:33 +01:00
Gwilym Kuiper 2026e49569 Start the tile ram one tile in to prevent overwriting the transparent tile 2022-07-16 09:12:15 +01:00
Corwin ebc4e15f3d constify sprite function 2022-07-15 21:59:36 +01:00
Gwilym Kuiper a9da4a65f9 Update agbabi's memcpy 2022-07-14 22:43:41 +01:00
Gwilym Kuiper 6d1d3d2b9d Add repository to Cargo.toml files
Fixes #253
2022-07-14 21:49:53 +01:00
Gwilym Kuiper 4a6b093f6d Update mixer doctests 2022-07-12 15:07:28 +01:00
Gwilym Kuiper 70b227d471 Get doctests working for mixer/mod.rs 2022-07-12 15:00:52 +01:00
Gwilym Kuiper 8929486387 Make doctest in interrupt.rs work 2022-07-12 14:45:45 +01:00
Gwilym Kuiper 5e317ef192 Get doctests working on lib.rs (will fix ignored later) 2022-07-12 14:39:50 +01:00
Gwilym Kuiper 643891a9de Make the doctests work for infinite_scrolled_map 2022-07-12 14:37:32 +01:00
Gwilym Kuiper eeefec6e27 Make the first infinite_scrolled_map test run 2022-07-12 14:21:13 +01:00
Gwilym Kuiper 4c63058ba0 Fix example 2022-07-12 13:42:30 +01:00
Gwilym Kuiper 86b9c2b3dd Deny missing docs in mixer 2022-07-12 13:33:32 +01:00
Gwilym Kuiper 2c7db427f8 Document sw_mixer 2022-07-12 13:32:35 +01:00
Gwilym Kuiper d78d9155bf Allow impl Into<Num<...>> to make it a bit simpler 2022-07-12 12:53:17 +01:00
Gwilym Kuiper ead344ca0b Document the whole of mixer/mod.rs 2022-07-12 12:50:40 +01:00
Gwilym Kuiper d3c8480ce0 Write some docs for the mixer 2022-07-12 12:29:35 +01:00
Gwilym Kuiper 3f1f290791 Bring memset.s in line with latest agbabi 2022-06-24 21:19:52 +01:00
Gwilym Kuiper fcbaacac1b Update to the latest agbabi memcpy 2022-06-24 21:12:14 +01:00
Gwilym Kuiper e08aaf6c7a Reduce input and output offsets to 0..8 to half run time 2022-06-22 23:40:41 +01:00
Gwilym Kuiper d053aa1707 Add a test for the non-word case 2022-06-22 23:38:36 +01:00
Gwilym Kuiper 6aa30462f9 Replace memcpy tests with a test which does all offsets for lots of sizes
Found a bug in agbabi with size 0, source offset 1, target offset 3
2022-06-22 23:31:23 +01:00
Gwilym Kuiper 16efca4b59 Add some tests for memset4 2022-06-22 22:33:56 +01:00
Gwilym Kuiper cb5763ed53 Check sizes 0..80 in size with 0..10 offset for memset 2022-06-22 22:00:26 +01:00
Corwin 10eeeaf9e7 a test for agbabi memset 2022-06-21 02:00:29 +01:00
Gwilym Kuiper 5ca8cb8bf7 Use agbabi's fix for small copies / sets 2022-06-19 17:38:34 +01:00
Gwilym Kuiper c9f1401ef3 Fix issue with small, misaligned copies 2022-06-19 13:03:44 +01:00
Gwilym Kuiper a7d52bbed0 Add offset tests and failing test for both offetted by 1 byte 2022-06-19 12:24:55 +01:00
Gwilym Kuiper 39bef8f866 Add some basic agbabi tests for memcpy 2022-06-19 12:17:34 +01:00
Gwilym Kuiper 578b1eefa4 Delete decompile accidentally committed 2022-06-17 22:40:31 +01:00
Gwilym Kuiper 64fbf13cc3 Update gba_mb with the new requried references 2022-06-17 00:48:32 +01:00
Gwilym Kuiper cb48325f21 Add README for agbabi 2022-06-17 00:40:17 +01:00
Gwilym Kuiper 4ac3939e9a Add agbabi licence 2022-06-17 00:38:12 +01:00
Gwilym Kuiper 7e46cf6a1d Remove the hack from the mixer 2022-06-17 00:32:07 +01:00
Gwilym Kuiper 8a8e8c011b Make sure to reference the agbabi files so they are included 2022-06-17 00:30:33 +01:00
Gwilym Kuiper 2d90755090 Put everything in different sections 2022-06-17 00:30:33 +01:00
Gwilym Kuiper 601360ca67 Compile agbabi into agb 2022-06-17 00:30:33 +01:00
Gwilym Kuiper 149d2ec76b Delete the archive file each time we run the build 2022-06-17 00:30:33 +01:00
Corwin c5af151d76
Merge pull request #237 from corwinkuiper/split-asm
Split asm
2022-06-17 00:24:44 +01:00
Corwin 13df836b91 update multiboot linker 2022-06-16 23:38:07 +01:00
Gwilym Kuiper 90b5e39b42 Switch to using a single archive 2022-06-16 23:32:28 +01:00
Corwin 05adfabca8 get it working 2022-06-16 23:22:27 +01:00
Corwin 0be9da755c split out assembly 2022-06-16 22:58:22 +01:00
Gwilym Kuiper fbff538d92
Merge pull request #236 from gwilymk/document-tiled-mode
Add some doc comments to tiled mode
2022-06-16 22:58:03 +01:00
Gwilym Kuiper efeaeeac4d Finish off the comments in InfiniteScrolledMap 2022-06-16 22:42:16 +01:00
Gwilym Kuiper de965e966f Write some doc comments for InfiniteScrolledMap 2022-06-16 22:30:52 +01:00
Gwilym Kuiper bc1bf3416c Add some doc comments around the video struct 2022-06-16 22:30:26 +01:00
Gwilym Kuiper 21b8f12c03 Make the 32768Hz example print the timing to the gba screen 2022-06-16 21:36:48 +01:00
Gwilym Kuiper 9eb087ad60 Print the CPU usage for the stereo sound example 2022-06-16 21:32:16 +01:00
Gwilym Kuiper 24749ac645 Do the zeroing of the buffer in assembly 2022-06-12 17:53:39 +01:00
Gwilym Kuiper 33c948208a Don't actually need to clear the buffer 2022-06-12 17:30:01 +01:00
Gwilym Kuiper 2ace226db8 Extract a function to do the clearing of the buffer 2022-06-12 17:26:16 +01:00
Gwilym Kuiper 4969672c73 Use hand written fast fill to save a few more cycles 2022-06-12 16:53:46 +01:00
Gwilym Kuiper bec1a17cfd This doesn't need the allow 2022-06-12 13:57:16 +01:00
Gwilym Kuiper bbad55af65 Deny the stricter lints 2022-06-11 20:57:40 +01:00
Gwilym Kuiper 9759555e42 Remove cast_lossless because it isn't supported by bitfield 2022-06-11 20:56:48 +01:00
Gwilym Kuiper ba35b85c81 Final clippy lint fixes 2022-06-11 20:56:05 +01:00
Gwilym Kuiper bf9f298972 Fix some sound related lints 2022-06-11 20:51:41 +01:00
Gwilym Kuiper 062e8c8881 Fix some more linter errors 2022-06-11 20:48:18 +01:00
Gwilym Kuiper 1b393cd612 Fix new clippy lints in tiled 2022-06-11 20:40:12 +01:00
Gwilym Kuiper f2e565f512 Take advantage of the fact that CriticalSection is Copy 2022-06-11 20:34:19 +01:00
Gwilym Kuiper 1edd7f4166 Add a bunch of new clippy lints 2022-06-11 20:27:08 +01:00
Gwilym Kuiper b8cf5090cb Make clippy warnings and let CI fail if there are issues 2022-06-11 20:17:37 +01:00
Gwilym Kuiper e6f5494242 Use the syscall to do the memset because the default implementation is really slow 2022-06-11 17:22:29 +01:00
Gwilym Kuiper 4633fe7e3c Set sound bias (which seems to make this work on hardware) 2022-06-11 16:53:39 +01:00
Gwilym Kuiper 3a419b05de Improve timer API and use it 2022-06-11 16:44:29 +01:00
Gwilym Kuiper d65fd5d740 Don't require the 32kHz frequency for interrupts 2022-06-11 16:22:28 +01:00
Gwilym Kuiper 3bd85c7d7c Get correct song name 2022-06-11 16:11:18 +01:00
Gwilym Kuiper 879a4f5270 Unroll the loop a bit 2022-06-11 16:10:58 +01:00
Gwilym Kuiper 5f7a1007a2 Triple buffer the sound to avoid skipping 2022-06-11 16:08:00 +01:00
Gwilym Kuiper 7d8890b03e 32768 example 2022-06-11 15:46:10 +01:00
Gwilym Kuiper a4c696ad33 Build a special version of 'frame' for freq32768 2022-06-11 13:23:39 +01:00
Gwilym Kuiper c709455e3d Add defines for freq32768 2022-06-11 13:19:56 +01:00
Gwilym Kuiper 42d3455abf Avoid duplicating the feature flag definition 2022-06-11 13:19:52 +01:00
Gwilym Kuiper 73d6dc448f Add new frequency option 2022-06-11 13:05:30 +01:00
Gwilym Kuiper 0a9a3fdf1d Remove timer field to mixer 2022-06-11 12:57:59 +01:00
Gwilym Kuiper b7bc27403e Remove pointless 'a 2022-05-12 20:28:10 +01:00
Gwilym Kuiper 93ed4b87e8
Merge pull request #226 from gwilymk/another-audio-performance-improvement
Another audio performance improvement
2022-05-04 21:05:55 +01:00
Gwilym Kuiper 4d2ad8859b Add a comment explaining the improvement 2022-05-04 20:56:39 +01:00
Gwilym Kuiper 4a06acba6b Allow volumes to be a lot higher and check that clipping is handled 2022-05-04 20:42:32 +01:00
Gwilym Kuiper abfbf6a454 Use the renamed register names 2022-05-04 20:36:06 +01:00
Gwilym Kuiper 0ec3c499cb Just use range push and pop 2022-05-04 20:27:41 +01:00
Gwilym Kuiper a0b28176c6 Use .rept rather than defining a macro 2022-05-04 20:25:55 +01:00
Gwilym Kuiper 863abe1d42 Only load SWAP_SIGN once 2022-05-04 18:08:15 +01:00
Gwilym Kuiper 8ec839f181 Be more consistent with instruction use 2022-05-04 18:07:01 +01:00
Gwilym Kuiper b02cdd9233 Calculate 127 + sample earlier 2022-05-04 18:06:11 +01:00
Gwilym Kuiper 3fea9aada0 Somehow reduce clamp_s8 by 1 instruction 2022-05-04 17:58:24 +01:00
Gwilym Kuiper 0229b95d7c Move macro definition 2022-05-04 16:59:17 +01:00
Gwilym Kuiper 73b8530240 Reduce register usage 2022-05-04 16:58:46 +01:00
Gwilym Kuiper 3b9909ad5b Add comment about how silly the implementation of gba_offset is 2022-05-03 23:43:08 +01:00
Gwilym Kuiper 2853d34b30 Correctly render different sized backgrounds and make HTTW have
pointlessly different sized backgrounds to test it properly
2022-05-03 23:42:11 +01:00
Gwilym Kuiper 5211781429 Rename rem_euclid functions 2022-05-03 23:23:55 +01:00
Gwilym Kuiper be650779e6 Correctly allocate screenblocks 2022-05-03 23:23:25 +01:00
Gwilym Kuiper ae65af4ca2 Make rem_euclid_* return a u16 2022-05-03 23:03:23 +01:00
Gwilym Kuiper 817e1e305e Add rem_euclid_*_px for pixel calculations 2022-05-03 23:00:31 +01:00
Gwilym Kuiper 4d3d2acd3b This should always be 32 2022-05-03 22:55:50 +01:00
Gwilym Kuiper 5513c8566f Replace calls to rem_euclid with unknown denominator with simple & 2022-05-03 22:46:01 +01:00
Gwilym Kuiper fae71bfbca Fix all the examples 2022-05-03 22:29:51 +01:00
Gwilym Kuiper 4f2eddb367 Actually set the correct flag 2022-05-03 21:51:00 +01:00
Gwilym Kuiper cc57dcf649 Fix compile errors 2022-05-03 21:48:08 +01:00
Gwilym Kuiper 384a5bc887 Remove a bunch of hard coded widths and heights 2022-05-03 21:46:32 +01:00
Gwilym Kuiper d514aafad4 Pass through the size 2022-05-03 21:34:41 +01:00
Gwilym Kuiper 5dd0c61808 Derive normal stuff on an enum 2022-05-03 21:30:32 +01:00
Gwilym Kuiper 288fa0c85e Add an enum for tracking background size of regular tiles 2022-05-03 21:28:32 +01:00
Gwilym Kuiper 06f701af75
Merge pull request #224 from gwilymk/print-warnings-for-assembler
Print warnings for assembler
2022-04-26 22:27:31 +01:00
Gwilym Kuiper 94f66f74b1 Fix warning in assembly 2022-04-26 22:16:56 +01:00
Gwilym Kuiper c3bfe83f6b Collect warnings to print them 2022-04-26 22:15:32 +01:00
Gwilym Kuiper 0761132779 Range of a signed byte is -128 - 127... 2022-04-26 21:22:50 +01:00
Gwilym Kuiper 921e2e9adf Calculate 32-bits at a time, since we're storing into IWRAM 2022-04-26 21:17:07 +01:00
Gwilym Kuiper 245cafa599 Calculate 2 samples per loop 2022-04-26 21:08:22 +01:00
Gwilym Kuiper 260f664c36 Extract to macro 2022-04-26 21:04:33 +01:00
Gwilym Kuiper 61ed2b905d Allow warnings when developing, but still fail CI 2022-04-24 17:07:43 +01:00
Gwilym Kuiper 563138937e Fix set_background_palette (not sure why dma wasn't working) 2022-04-23 23:26:47 +01:00
Gwilym Kuiper 178db91072 Add gc step for tiles 2022-04-23 23:03:02 +01:00
Gwilym Kuiper 7688316034 Add a gc step in commit 2022-04-23 22:58:25 +01:00
Gwilym Kuiper a562a4f600 Print frame which shows issue 2022-04-23 22:48:05 +01:00
Gwilym Kuiper 85c3287680 Run clippy on examples and tests 2022-04-23 21:03:37 +01:00
Gwilym Kuiper 1593c0e8b6 Move clippy deny to config.toml and fix warnings 2022-04-23 17:10:29 +01:00
Gwilym Kuiper a32bb2125b Remove deny clippy::all from lib.rs to ensure it always builds for users 2022-04-23 16:26:42 +01:00
Gwilym Kuiper fb197d3e79 Store font data more compressed 2022-04-23 15:42:08 +01:00
Gwilym Kuiper 1b71ef6473 Add test for font output 2022-04-23 15:33:57 +01:00
Gwilym Kuiper 6485cc895a Extract method 2022-04-23 14:34:34 +01:00
Gwilym Kuiper fec4015978 Remove hash map lookup for every pixel rendered 2022-04-23 14:30:46 +01:00
Gwilym Kuiper 6d0f95c21b
Merge pull request #214 from gwilymk/random-number-generator
Random number generator
2022-04-11 22:20:16 +01:00
Gwilym Kuiper dc62ba4467 Rename rng::next to rng::gen 2022-04-11 22:07:31 +01:00
Gwilym Kuiper f304412053 Use unsigned_abs to satisfy clippy 2022-04-11 21:15:17 +01:00
Gwilym Kuiper d56e4d5888 Correctly remove dynamic tiles if not committing a text renderer 2022-04-07 23:07:58 +01:00
Gwilym Kuiper dc4ccee451 Add a commit method for text_render 2022-04-07 23:01:01 +01:00
Gwilym Kuiper 5701667f53 Avoid overwriting text on the line above 2022-04-07 22:56:28 +01:00
Corwin f7ef25f3f0
Merge pull request #209 from corwinkuiper/z-ordered-sprites
Z ordered sprites
2022-04-07 22:46:26 +01:00
Corwin 859029a7a9 delete sprites during commit 2022-04-06 23:55:13 +01:00
Gwilym Kuiper 82c5ebf426 Use a core::fmt::Write instead 2022-04-06 21:13:57 +01:00
Gwilym Kuiper a0013096cc Remove argument 2022-04-05 23:43:35 +01:00
Gwilym Kuiper f3c467c2f1 set_background_palette seems inconsistent between release and debug mode :/ 2022-04-05 23:39:06 +01:00
Gwilym Kuiper 45e18d5cc7 Use a better example font which isn't monospace 2022-04-05 23:35:18 +01:00
Gwilym Kuiper 5c24e4089a Minimise generated dynamic tiles by using a hashmap 2022-04-05 23:11:32 +01:00
Gwilym Kuiper 22f89ed9e2 Return the bounding box 2022-04-05 23:03:56 +01:00
Gwilym Kuiper 1f65f94ee3 Support rendering multiple lines 2022-04-05 23:03:10 +01:00
Gwilym Kuiper 8a1a433f99 Replace returning number of lines printed to x width 2022-04-05 22:49:34 +01:00
Gwilym Kuiper 6bea61bb7a Update the dynamic tiles example 2022-04-05 22:48:03 +01:00
Gwilym Kuiper 2c2931fa97 Handle the height of letters correctly 2022-04-05 22:44:32 +01:00
Gwilym Kuiper e7e35f8ad8 Take xmin into account 2022-04-05 22:35:45 +01:00
Gwilym Kuiper a6f5cc9ec1 Render some text 2022-04-05 22:32:11 +01:00
Corwin 845076d0b4 add a test exploring some usage 2022-04-05 21:30:38 +01:00
Corwin 454bb872c9 resolve some unsoundness 2022-04-04 23:02:06 +01:00
Gwilym Kuiper c3a64690cd
Merge pull request #207 from gwilymk/dynamic-tileset
Add a slightly crappy dynamic tiles API
2022-04-04 20:41:16 +01:00
Corwin a4979ac847 better handling of sprites 2022-04-04 20:29:00 +01:00
Corwin 3e3039a7f6 update games 2022-04-03 21:20:20 +01:00
Corwin 2ef1dd0bf2 z ordering moving to a global controller state 2022-04-03 21:20:13 +01:00
Corwin a73e27dc7e pull out reference to a global static
this is very unsafe, but saves quite a bit of memory.
2022-04-03 18:15:31 +01:00
Gwilym Kuiper 3fd0b53350
Merge pull request #206 from corwinkuiper/send-sync
add send sync requirement
2022-04-01 00:01:09 +01:00
Gwilym Kuiper 441c839ba7 Add a slightly crappy dynamic tiles API 2022-03-31 23:58:28 +01:00
Corwin f05791b5dc add send sync requirement 2022-03-31 22:59:23 +01:00
Gwilym Kuiper f6ae4f731b Release agb v0.9.2 2022-03-28 22:50:36 +01:00
Gwilym Kuiper 394c02f704 Release agb v0.9.1 2022-03-28 22:44:33 +01:00
Gwilym Kuiper a97dcb2d2e Release agb v0.9.0 2022-03-28 22:33:22 +01:00
Gwilym Kuiper 8eb4b99045 Release agb-fixnum v0.2.1 2022-03-28 22:30:51 +01:00
Gwilym Kuiper 021fdda997 Release agb-fixnum v0.2.0 2022-03-28 22:27:19 +01:00
Gwilym Kuiper c1cfb9910a Release agb-sound-converter v0.2.0 2022-03-28 22:24:07 +01:00
Gwilym Kuiper 78dc3ac57f Release agb-image-converter v0.7.0 2022-03-28 22:21:45 +01:00
Gwilym Kuiper 942da6ebf7 Release agb-macros v0.2.0 2022-03-28 22:18:22 +01:00
Gwilym Kuiper 770ebe508b
Merge pull request #204 from gwilymk/remove-enable-sprites-in-background
Don't need to enable objects in tiled background any more
2022-03-28 22:06:07 +01:00
Gwilym Kuiper 14cd1e52c4 Make the screen visible when enabling a tiled mode 2022-03-28 21:53:54 +01:00
Gwilym Kuiper d055cbd59c Don't need to enable objects in tiled background any more 2022-03-28 21:43:53 +01:00
Gwilym Kuiper 93e14ec961 Extract out a struct for tile with reference count 2022-03-28 21:34:31 +01:00
Gwilym Kuiper d15f582aba Simplify type 2022-03-28 21:27:40 +01:00
Gwilym Kuiper 003c0d7e1a Update the games to use the new method 2022-03-28 21:21:06 +01:00
Gwilym Kuiper 16ea04d012 Remove tile set ref in agb 2022-03-28 20:53:05 +01:00
Gwilym Kuiper 9e8318cdf9 Rearrange methods to make a bit more sense 2022-03-27 21:38:12 +01:00
Gwilym Kuiper c1cbb442a1 Also use the new method in add_tile 2022-03-27 21:37:49 +01:00
Gwilym Kuiper 4b8f41140e Extract method for copying a tile to location 2022-03-27 21:37:14 +01:00
Gwilym Kuiper d2dceeb656 Add super simple animated tiles 2022-03-27 21:32:37 +01:00
Gwilym Kuiper 15e441b087 Remove the division on every insert operation 2022-03-24 18:31:18 +00:00
Gwilym Kuiper a57043604d Add some tests for the rng 2022-03-23 22:05:41 +00:00
Gwilym Kuiper 3c52f6940b Add new_with_seed method 2022-03-23 21:53:09 +00:00
Gwilym Kuiper 610722a1bf Extract the random number generator 2022-03-23 21:52:37 +00:00
Gwilym Kuiper 9752377a15 Move the random number generator to a crate level thing 2022-03-23 21:46:59 +00:00
Gwilym Kuiper ca57b61525 Remove fere_affine_matricies for now 2022-03-23 20:44:28 +00:00
Gwilym Kuiper 1f053c987a Fix warnings in chicken.rs 2022-03-23 20:43:38 +00:00
Gwilym Kuiper b44b42de1d Remove unused num_tiles method 2022-03-23 20:42:51 +00:00
Gwilym Kuiper 13de08dce7 cargo fix 2022-03-23 20:42:31 +00:00
Gwilym Kuiper 631bbed5c7 Rename get_data_end to data_end 2022-03-23 20:42:01 +00:00
Gwilym Kuiper 81853c6c99 Rename get_colour to colour 2022-03-23 20:41:24 +00:00
Gwilym Kuiper 123e8caaa4 Remove unused get_palette method 2022-03-23 20:40:15 +00:00
Gwilym Kuiper 77eba9b637 Remove get_ prefix in program_counter_before_interrupt 2022-03-23 20:39:41 +00:00
Gwilym Kuiper f1fd5859f3 Rename a few methods in object.rs to remove get_ prefix 2022-03-23 20:37:59 +00:00
Gwilym Kuiper 1f28499efb Rename get_as_bits to remove get_ prefix 2022-03-23 20:37:00 +00:00
Gwilym Kuiper 9ba455ca35 Remove the unused arena module 2022-03-23 20:35:58 +00:00
Gwilym Kuiper 3e34509049 Rename get_object to object 2022-03-23 20:34:55 +00:00
Gwilym Kuiper 5791d033ef Rename get_sprite and get_animation_sprite to remove get_ prefix 2022-03-23 20:32:29 +00:00
Gwilym Kuiper 35c7c48f73 Rename get_write_buffer -> write_buffer 2022-03-23 20:26:43 +00:00
Gwilym Kuiper b91f129636 Remove get_ methods for tiled 2022-03-23 20:26:18 +00:00
Gwilym Kuiper 8427bb5595 Remove get_ from timer functions 2022-03-23 20:24:22 +00:00
Gwilym Kuiper c698f858bb Rename get_distance to distance 2022-03-23 20:22:58 +00:00
Gwilym Kuiper 84b7317380 Rename get_location to location 2022-03-23 20:22:37 +00:00
Gwilym Kuiper 48ddda9ae9 Rename get_channel to channel 2022-03-23 20:21:54 +00:00
Corwin 518f73c01e
Merge pull request #189 from corwinkuiper/perfectly-poor-profiler
Problematic poor person's profiler
2022-03-22 22:26:29 +00:00
Corwin adffcc6773 add comment on profiler 2022-03-22 22:08:59 +00:00
Corwin ac9826c4d7 move profiler to be a function 2022-03-22 09:39:03 +00:00
Gwilym Kuiper 1c33c8544e Seems range inclusive doesn't optimise very well... 2022-03-21 23:16:02 +00:00
Gwilym Kuiper 451868723f Add dealloc_no_normalise 2022-03-21 23:01:38 +00:00
Gwilym Kuiper e6d47afa31 Use a hash map rather than an array in vram manager 2022-03-21 22:58:16 +00:00
Gwilym Kuiper 9170acb1a8 Update agb to handle the new agb-image-converter output 2022-03-21 22:57:17 +00:00
Corwin 4bec0d073f The poor profiler 2022-03-21 22:34:15 +00:00
Corwin 3c09a86f88
Merge pull request #198 from corwinkuiper/boxed-interrupts
Boxed interrupts
2022-03-21 22:33:06 +00:00
Corwin aa0337941a add docs 2022-03-21 22:19:07 +00:00
Corwin f312ff7df8 enable interrupts at initialisation 2022-03-21 21:57:46 +00:00
Corwin c74707b1a6 update examples 2022-03-21 21:52:46 +00:00
Corwin 1f3d3380f1 switch interrupts to be in boxes 2022-03-21 21:52:39 +00:00
Gwilym Kuiper e6fb67503b Add a comment explaining where the docs came from 2022-03-21 21:18:56 +00:00
Gwilym Kuiper 447554c295 Add loads of doc comments 2022-03-21 21:16:36 +00:00
Gwilym Kuiper c7db20c1df Implement insert correctly 2022-03-21 20:42:07 +00:00
Gwilym Kuiper 24b61f51fe Implement more of the standard rust API 2022-03-21 20:33:48 +00:00
Gwilym Kuiper 4a1d99f143 Implement Index and FromIterator and add some tests lifted from rust stdlib 2022-03-20 15:38:39 +00:00
Gwilym Kuiper 2b75ce6cbd Implement all of VacantEntry 2022-03-20 15:14:44 +00:00
Gwilym Kuiper 6bc3816b29 Fully implement OccupiedEntry 2022-03-20 15:13:22 +00:00
Gwilym Kuiper 631e1e9bc2 Start implementing the individual entry types 2022-03-20 15:07:25 +00:00
Gwilym Kuiper 921a338c59 Implement the entirity of the entry api 2022-03-20 14:54:53 +00:00
Gwilym Kuiper 2706b2494d Some wiggling 2022-03-20 14:22:43 +00:00
Gwilym Kuiper 86635752af Also implement or_insert_with_key 2022-03-20 14:21:45 +00:00
Gwilym Kuiper ab80f200e8 Encaspulate a bit better 2022-03-20 14:15:24 +00:00
Gwilym Kuiper 9bfb8de481 Wrap distance_to_initial_bucket a bit better 2022-03-20 14:14:22 +00:00
Gwilym Kuiper 3f624ee87d Fail test in extreme case test if we drop twice 2022-03-20 14:10:38 +00:00
Gwilym Kuiper 9df79a16bd Replace slightly dodgy replace code 2022-03-20 14:04:27 +00:00
Gwilym Kuiper bde36c7019 Invert the order of the HashMap, Node and NodeStorage 2022-03-20 13:59:01 +00:00
Gwilym Kuiper e0d829a4fc Rename get_value_ref and get_value_mut to remove get 2022-03-20 13:57:41 +00:00
Gwilym Kuiper 86760f76ac Move resize to a more sensible place 2022-03-20 13:50:04 +00:00
Gwilym Kuiper e9c56327b1 Avoid duplicating constant 2022-03-20 13:43:31 +00:00
Gwilym Kuiper 3ae0e30d3c Correctly drop key on override 2022-03-20 13:42:28 +00:00
Gwilym Kuiper 9c7d9520a7 Add test that we drop the key on override 2022-03-20 13:41:31 +00:00
Gwilym Kuiper d4ed1cd2fa Allow swapping out the hasher 2022-03-19 23:13:02 +00:00
Gwilym Kuiper e68a4d373f Replace .map().flatten() with .and_then() 2022-03-19 23:10:12 +00:00
Gwilym Kuiper 280e7f876d Add some drop tests 2022-03-19 23:09:21 +00:00
Gwilym Kuiper ee983ef7ec Use MaybeUninit to reduce memory usage by half 2022-03-19 23:09:21 +00:00
Gwilym Kuiper cd9798d01f Move the implementation of get_location to NodeStorage 2022-03-19 23:09:21 +00:00
Gwilym Kuiper 321702531b Move number_of_items to NodeStorage 2022-03-19 23:09:21 +00:00
Gwilym Kuiper 0e89f9190f Rename NodeStorage.len() to NodeStorage.capacity() 2022-03-19 23:09:21 +00:00
Gwilym Kuiper fdc2172b3d Move max_distance_to_initial_bucket to NodeStorage 2022-03-19 23:09:21 +00:00
Gwilym Kuiper cc53b0a911 Change distance_to_initial_bucket to be an i32 2022-03-19 23:09:21 +00:00
Gwilym Kuiper ff709d9d57 Use .drain(..).flatten() 2022-03-19 23:09:21 +00:00
Gwilym Kuiper e9d3c6e5c4 Fix clippy lint that we should define is_empty 2022-03-19 23:09:21 +00:00
Gwilym Kuiper eb00563b09 Add extreme test case and fix bug causing disappearing entries 2022-03-19 23:09:21 +00:00
Gwilym Kuiper 89cc00f8cf Sized is implied 2022-03-19 23:09:21 +00:00
Gwilym Kuiper a6c7eaec1a Correctly calculate new distance to initial bucket 2022-03-19 23:09:21 +00:00
Gwilym Kuiper 12dab0c3ba Fix issue where we weren't considering 0 distance correctly 2022-03-19 23:09:21 +00:00
Gwilym Kuiper f7eb1866c2 Remove hashbrown from object.rs 2022-03-19 23:09:20 +00:00
Gwilym Kuiper 5edd46e085 Add default implementation 2022-03-19 23:08:45 +00:00
Gwilym Kuiper 6ff4cbe4f1 Rename put to insert 2022-03-19 23:08:45 +00:00
Gwilym Kuiper a9115c23e8 Allow for resizing 2022-03-19 23:08:45 +00:00
Gwilym Kuiper 8d976b49bc Extract a node_storage 2022-03-19 23:08:45 +00:00
Gwilym Kuiper e999b44c67 Put nodes in a NodeStorage 2022-03-19 23:08:45 +00:00
Gwilym Kuiper 03f5cd0953 Add with_capacity method 2022-03-19 23:08:45 +00:00
Gwilym Kuiper c0d9f0ab41 Correctly initialise to 16 elements 2022-03-19 23:08:45 +00:00
Gwilym Kuiper bfdca7117d Make fast_mod constant 2022-03-19 23:08:45 +00:00
Gwilym Kuiper dd5aad0de5 Make HashMap struct public 2022-03-19 23:08:45 +00:00
Gwilym Kuiper 05b8accaec Make the hash_map mod public 2022-03-19 23:08:45 +00:00
Gwilym Kuiper a459a4811c Add test for iterating through all entries 2022-03-19 23:08:45 +00:00
Gwilym Kuiper bfebba1ec1 Implement remove 2022-03-19 23:08:45 +00:00
Gwilym Kuiper 019872b8cc Really basic hash map which you can only add stuff to 2022-03-19 23:08:45 +00:00
Corwin 82922abddb
Merge pull request #188 from corwinkuiper/crate-version-numbers
be less specific in version numbers
2022-03-19 15:19:28 +00:00
Gwilym Kuiper 60657126ad Add comment about the #[allow] 2022-03-18 22:02:07 +00:00
Gwilym Kuiper ccdb0e4921 Add an allow for the clippy bug 2022-03-18 22:01:02 +00:00
Gwilym Kuiper 7ae565b2c3 Remove unused import 2022-03-18 21:53:30 +00:00
Corwin 9d0fa2f40e even less specific 2022-03-18 21:35:32 +00:00
Gwilym Kuiper add3ccd5fb
Merge pull request #186 from gwilymk/fail-build-if-there-is-an-error
Fail build if there is an error
2022-03-13 20:22:45 +00:00
Gwilym Kuiper ec8d692029
Merge pull request #185 from gwilymk/use-dma-in-objects
Use dma in objects
2022-03-13 20:14:23 +00:00
Gwilym Kuiper b88ad5cba5 VRamManager should definitely not have a public new 2022-03-13 20:12:49 +00:00
Gwilym Kuiper 5bf78f6274 Also for raw copy 2022-03-13 19:53:55 +00:00
Gwilym Kuiper ef8b2edc63 Also dma the palette in backgrounds 2022-03-13 19:53:07 +00:00
Gwilym Kuiper 989fcea1d0 Fix typo in exception 2022-03-13 19:43:03 +00:00
Gwilym Kuiper ea3d3d4936 Rename dma_copy to dma_copy16 2022-03-13 19:37:27 +00:00
Gwilym Kuiper 056a38703d Use dma in objects 2022-03-13 19:37:08 +00:00
Gwilym Kuiper 50ce96ac82 Delete library cargo.locks 2022-03-12 23:39:58 +00:00
Gwilym Kuiper 3710d9ad1c
Merge pull request #182 from gwilymk/better-backgrounds-gwilym
Improve background management
2022-03-12 23:26:42 +00:00
Corwin 44c7a93fa3 use new api 2022-03-12 17:36:38 +00:00