Commit graph

850 commits

Author SHA1 Message Date
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
Corwin e2bb5cc5c9 add panicing and try variants of api 2022-03-12 17:36:30 +00:00
Gwilym Kuiper 87c5d6ca6a Use the new allocator 2022-03-11 21:49:23 +00:00
GBA bot 3482697a25 Update lockfiles 2022-03-08 00:28:19 +00:00
Renovate Bot ba0ce97e5a
Update Rust crate rustc-hash to 1.1 2022-03-08 00:27:15 +00:00
Gwilym Kuiper cdd77afe22 Merge remote-tracking branch 'origin/master' into better-backgrounds-gwilym 2022-03-07 22:41:11 +00:00
Corwin eb6b2ac5a8 initialise to correct values 2022-03-07 22:03:49 +00:00
Corwin 8c2931aca5 remove unused import 2022-03-07 20:40:53 +00:00
Corwin 40c4a26cb1 update example 2022-03-07 20:38:13 +00:00
Corwin 8f7e7748e2 Graphics 2022-03-07 20:38:06 +00:00
Corwin 6f064b0d99 update lock files 2022-03-06 13:45:16 +00:00
Corwin 4c57f85acd Inline the modulos 2022-03-06 13:37:09 +00:00
Corwin 900cd007df pull out constants 2022-03-06 13:37:07 +00:00
Corwin c55ff3f714 const fnify 2022-03-06 13:36:50 +00:00
Corwin 8a6f341421 update hat chooses wizard 2022-03-06 13:36:26 +00:00
Corwin 4780b8525d remove unused import 2022-03-06 13:31:56 +00:00
Corwin 592a0814f8 non optional feature alloc 2022-03-06 13:31:56 +00:00
Corwin 84e6af5d2f load aseprite files directly with asefile 2022-03-06 13:31:56 +00:00
Corwin 02e6194073 make fields private 2022-03-06 13:31:56 +00:00
Corwin 6bafa3ebab use public api 2022-03-06 13:31:56 +00:00
Corwin ecf31fa833 load multiple 2022-03-06 13:31:56 +00:00
Corwin b3db55330a sprites example 2022-03-06 13:31:56 +00:00
Corwin 25da2a2711 expose the inner proc macro in a macro rules 2022-03-06 13:31:56 +00:00
Corwin efe67423c1 use the types 2022-03-06 13:31:56 +00:00
Corwin 16ff9b8ec1 types for nice sprite import and usage 2022-03-06 13:31:54 +00:00
Corwin 80e53d4716 volatile writes 2022-03-06 13:31:36 +00:00
Corwin c1901819af unblank screen on object init 2022-03-06 13:31:36 +00:00
Corwin 45823273ac satisfy linter 2022-03-06 13:31:36 +00:00
Corwin da9a15402e use more efficient hash function 2022-03-06 13:31:36 +00:00
Corwin 8792146ddb use correct copys 2022-03-06 13:31:36 +00:00
Corwin ae681019bb set palette location on sprite change 2022-03-06 13:31:36 +00:00
Corwin 2a7b350f57 objects now exist and work 2022-03-06 13:31:36 +00:00
Corwin a1b67e107f object controller implementations 2022-03-06 13:31:36 +00:00
Corwin 836143e1f4 copy the sprite and palette data 2022-03-06 13:31:36 +00:00
Corwin d764ff9900 allocate palettes too 2022-03-06 13:31:36 +00:00
Corwin 6a2c9d8826 add some sprite allocation 2022-03-06 13:31:36 +00:00
Corwin 93d994360e make alloc and dealloc public 2022-03-06 13:31:36 +00:00
Corwin 1849571344 sprite allocator 2022-03-06 13:31:34 +00:00
Corwin beb9abbb7e allocator methods pulled out of global alloc trait 2022-03-06 13:30:47 +00:00
Corwin 475edadcb9 extend to also supporting the end 2022-03-06 13:30:47 +00:00
Corwin 3c6c7efc79 allocator that can have a custom start point 2022-03-06 13:30:47 +00:00
Gwilym Kuiper 39a8b5a64f Update lockfiles 2022-03-05 20:52:26 +00:00
Gwilym Kuiper 803527be23 Fix warning in release mode 2022-03-05 19:52:57 +00:00
Gwilym Kuiper ba1c2e3eaf Remove unused import 2022-03-05 19:45:01 +00:00
Gwilym Kuiper d97ceca647 Remove unused function 2022-03-05 19:44:21 +00:00
Gwilym Kuiper 09f6736497 Extract dma_copy to its own module 2022-03-05 19:43:48 +00:00
Gwilym Kuiper 068bc95fe7 Fix warning with non-constant string 2022-03-05 19:35:19 +00:00
Gwilym Kuiper a3e5187457 Use DMA to copy the entire internal map in one go 2022-03-05 19:35:07 +00:00
Gwilym Kuiper 7b43debd3e WIP: Try removing the hashmap 2022-03-05 19:25:55 +00:00
Gwilym Kuiper aa7823232b Try using a vec of vecs rather than a hashmap 2022-03-05 19:25:09 +00:00
Gwilym Kuiper ceb17a0186 Update hat chooses wizard and purple night 2022-03-05 19:25:09 +00:00
Gwilym Kuiper 22c6e37c88 Finally extract InfiniteScrolledMap 2022-03-05 19:25:09 +00:00
Gwilym Kuiper 6b492c5956 Extract more to new files 2022-03-05 19:25:09 +00:00
Gwilym Kuiper 78fb706c9a Extract map to its own file 2022-03-05 19:25:09 +00:00
Gwilym Kuiper e88602b570 Get my brackets correct 2022-03-05 19:25:09 +00:00
Gwilym Kuiper a35119fdbd Fix hat chooses the wizard 2022-03-05 19:25:09 +00:00
Gwilym Kuiper 742231fbc5 Try a different transparent tile then 0 2022-03-05 19:25:09 +00:00
Gwilym Kuiper ed2af0d57e Extract VRamManager to the tiled module 2022-03-05 19:25:09 +00:00
Gwilym Kuiper f1bc09d6cd Avoid crackle on load 2022-03-05 19:25:09 +00:00
Gwilym Kuiper d896adfad5 Clear the backgrounds once they aren't used any more 2022-03-05 19:25:09 +00:00
Gwilym Kuiper de594ad362 Make init take an impl Fn rather than a Box<dyn Fn()> 2022-03-05 19:25:09 +00:00
Gwilym Kuiper 3a913f142a Remove pop while loading a level 2022-03-05 19:25:09 +00:00
Gwilym Kuiper b0b8ec55c4 Remove unused TILE_BACKGROUND 2022-03-05 19:25:09 +00:00
Gwilym Kuiper 63dd837518 Tiny performance improvement with dma to copy the tile data 2022-03-05 19:25:09 +00:00
Gwilym Kuiper 08aeb56f1e Update background and foreground independentently 2022-03-05 19:25:06 +00:00
Gwilym Kuiper 3941117aa7 Switch to rustc-hash 2022-03-05 19:24:28 +00:00
Gwilym Kuiper 06901b3543 Move post-work to pre-work 2022-03-05 19:23:53 +00:00
Gwilym Kuiper 530b71e0df Copy slightly too much 2022-03-05 19:23:53 +00:00
Gwilym Kuiper a365c14917 Small fixes 2022-03-05 19:23:53 +00:00
Gwilym Kuiper 3a795fea8f Handle moving up to 10 tiles at once 2022-03-05 19:23:53 +00:00
Gwilym Kuiper 610be70b92 Correctly set the initial offset value in init() 2022-03-05 19:23:53 +00:00
Gwilym Kuiper a998ae31a4 Correctly use the map width and not the display width 2022-03-05 19:23:53 +00:00