Commit graph

930 commits

Author SHA1 Message Date
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