Commit graph

606 commits

Author SHA1 Message Date
Corwin Kuiper 03e9517215 only use critical section once 2022-01-17 21:46:14 +00:00
Corwin Kuiper 17de9a42bd use bare_metal mutex 2022-01-17 21:44:25 +00:00
Gwilym Kuiper a9e728a037
Merge pull request #160 from gwilymk/make-agb-entry-create-gba-struct
Make agb entry create gba struct
2022-01-17 19:47:44 +00:00
Gwilym Kuiper 3366bfbfdf Remove siphasher by using DefaultHasher::new instead 2022-01-16 22:10:57 +00:00
Gwilym Kuiper 6d8d72077f Make it harder to call by accident 2022-01-16 21:50:18 +00:00
Gwilym Kuiper 040ff2eb0c Update the rust doc 2022-01-16 21:48:45 +00:00
Gwilym Kuiper cf9ea504f6 Update agb tests and all the examples 2022-01-16 21:38:30 +00:00
Gwilym Kuiper 17867da596
Merge pull request #155 from agbrs/renovate/syn-1.x
Update Rust crate syn to 1.0.85
2022-01-12 23:18:16 +00:00
Gwilym Kuiper d44e0fc796 Update lockfiles 2022-01-12 23:05:02 +00:00
Gwilym Kuiper 19f071fd5a Use agb::fixnum rather than agb::number 2022-01-12 22:09:57 +00:00
Corwin Kuiper 5b7e1a760d split to own crate 2022-01-07 16:59:19 +00:00
Corwin Kuiper 3bb3dcf1b6 allow the remaining warnings from clippy 2022-01-06 19:50:35 +00:00
Corwin Kuiper e5efdcd29c move use to inside function 2022-01-06 19:48:44 +00:00
Corwin Kuiper 222efe9122 move tests to conditionally compiled modules
also only enable custom test framework feature in test mode
2022-01-06 19:47:30 +00:00
Corwin 039bc0acb1
Merge pull request #153 from corwinkuiper/remove-step
remove the step feature
2022-01-04 00:42:33 +00:00
Corwin Kuiper 0e55916865 add test 2022-01-04 00:31:27 +00:00
GBA bot 60e78768a4 You don't need extern crate agb; any more 2022-01-04 00:16:25 +00:00
Corwin Kuiper 6d829bd741 remove the step by feature
should have test to make sure it does what I want it to do
2022-01-04 00:10:51 +00:00
Gwilym Kuiper e601cc53ca
Merge pull request #151 from gwilymk/remove-feature-asm-now-that-it-is-stable
Remove feature(asm) now that it is stable
2022-01-03 23:53:10 +00:00
GBA bot 234db0da96 Set waitstate to 0x4317 as is standard in most games 2022-01-03 23:27:31 +00:00
GBA bot 8afc57c158 Remove feature(asm) now that it is stable 2022-01-03 23:02:26 +00:00
Corwin 311c26caad
Merge pull request #149 from gwilymk/pong-book
First 3 chapters on writing a pong game
2022-01-03 23:01:34 +00:00
GBA bot f62501a748 Update the examples to correctly use the new API 2022-01-02 21:48:05 +00:00
GBA bot 6277eaeaee Split vblank() into frame() and after_vblank() 2022-01-02 21:47:08 +00:00
GBA bot 8d13ee3a39 Add some blank lines to make code folding work better 2022-01-02 18:28:31 +00:00
GBA bot 99146ac048 Add doc comments for top level modules 2022-01-02 18:27:23 +00:00
GBA bot 0b986df563 Doc hide test runner stuff 2022-01-02 18:25:44 +00:00
GBA bot d4daf8bf0a Add docs for entry macro 2022-01-02 18:22:13 +00:00
GBA bot 02939041b4 Use the entry macro for the test main 2022-01-02 18:14:37 +00:00
GBA bot af40d48360 Add section on loading graphics and document the include_gfx! macro 2022-01-02 18:11:36 +00:00
GBA bot a39d5cfd69 Add some more documentation 2022-01-02 11:27:26 +00:00
GBA bot b5ff4991fa Use builder style for ObjectStandard 2022-01-02 11:14:18 +00:00
GBA bot 618929939f Document the Gba struct 2022-01-01 23:15:14 +00:00
GBA bot 3a8ec51ce1 Make Cargo.lock consistent with Cargo.toml 2022-01-01 22:21:58 +00:00
Renovate Bot 2e042d87c9
Update Rust crate bitflags to 1.3 2022-01-01 21:08:27 +00:00
GBA bot fa88bc40c6 Add another missing must_use 2022-01-01 11:35:49 +00:00
GBA bot 5f13c69fcf Replace .map.flatten with .flat_map 2022-01-01 11:35:17 +00:00
GBA bot afe69b98b8 Add a bunch of must_use now requested by clippy 2022-01-01 11:34:43 +00:00
GBA bot 21c934623d Import the new asm macro required in newer versions of nightly 2022-01-01 11:20:30 +00:00
Corwin Kuiper 38703c7cb8 add different implementation of sqrt 2021-12-06 23:31:42 +00:00
Corwin Kuiper 3800be4dcb test for accuracy of magnitude function 2021-12-06 22:51:43 +00:00
Corwin Kuiper affa27c8e0 remove unused crate 2021-12-06 22:43:58 +00:00
Corwin Kuiper 9a25274bb0 switched the magnitude function to use the alpha max + beta min algorithm 2021-12-06 19:49:27 +00:00
Corwin Kuiper b347f9338e actually test base B in test base 2021-12-04 13:52:47 +00:00
Corwin 453e098703
Merge pull request #135 from corwinkuiper/number-macro
create a number macro that can use floating point numbes
2021-12-04 03:11:26 +00:00
Corwin Kuiper ecd04190fa remove unused stuff 2021-12-04 02:57:51 +00:00
Corwin Kuiper 6e0cbbe9eb create a number macro that can use floating point numbes 2021-12-04 02:44:57 +00:00
Gwilym Kuiper 69e3c299ca Fix clippy lint 2021-11-22 19:33:09 +00:00
Gwilym Kuiper a331909370 Assert that gba struct is zero sized 2021-11-22 19:28:58 +00:00
Gwilym Kuiper 75bd475f08 Split out to a timer controller to keep the GBA struct zero sized 2021-11-22 19:27:08 +00:00
Gwilym Kuiper f7a10677dd Allow use of timer again after mixer is done 2021-11-22 19:14:51 +00:00
Gwilym Kuiper bfc02e0aa8 Make sound now take the first class timer object 2021-11-18 22:28:26 +00:00
Gwilym Kuiper 8876c47aa9 Remove the generics (sorry that GBA is no longer zero sized...) 2021-11-18 22:28:26 +00:00
Gwilym Kuiper 8ef46279c8 set overflow amount should take a mut self 2021-11-18 22:28:26 +00:00
Gwilym Kuiper 20511843ca Move timers to be fields in the controller 2021-11-18 22:28:26 +00:00
Gwilym Kuiper fd610d8cc1 Add support for timers 2021-11-18 22:28:26 +00:00
Corwin b88cf39a67
Merge pull request #130 from gwilymk/fix-printing-of-negative-numbers
Fix printing of negative numbers
2021-11-18 22:16:34 +00:00
Corwin Kuiper 8143d43149 fix clippy lint 2021-11-18 21:30:35 +00:00
Gwilym Kuiper e1e4318c38 Add comment explaining how the fiddle works 2021-11-18 21:11:29 +00:00
Gwilym Kuiper 89f89803dd GREEN: Fudge fractional and integral bits to get negative numbers to work 2021-11-18 21:05:29 +00:00
Gwilym Kuiper 413a819e64 Fix compiler warning for tests 2021-11-18 20:57:18 +00:00
Gwilym Kuiper 2eec47f31a RED: Add failing tests for negative number printing 2021-11-18 20:57:18 +00:00
Corwin Kuiper 7ba84b7691 add registers to sqrt clobber list
will need to go through the other syscalls and find out whether we need
to add registers to the clobber list. We probably need to add all per
the call convention (r0, r1, r2, r3 are callee saved).
2021-10-31 20:14:41 +00:00
Gwilym Kuiper 5c10af2f72 Add methods for getting and setting a palette colour 2021-10-30 21:16:40 +01:00
Gwilym Kuiper a92a2f503c Reduce maximum number of sound channels to 8 2021-10-30 21:16:32 +01:00
Corwin Kuiper 301e2c115a fix tile ids 2021-10-30 20:33:54 +01:00
Corwin Kuiper d0808cb7f2 added helpful functions 2021-10-30 18:38:57 +01:00
Gwilym Kuiper 6ed9b06b22 Ensure that the buffer size isn't actually the first instruction in add 2021-10-30 16:02:40 +01:00
Gwilym Kuiper 6ac3789d11 Export ChannelId 2021-10-30 15:38:59 +01:00
Corwin Kuiper b492f3d43d fix rect issue with touching 2021-10-30 12:24:43 +01:00
Corwin Kuiper be44dbed3d add useful derives 2021-10-30 10:12:45 +01:00
Corwin Kuiper 2838ea5f32 add more maths 2021-10-29 18:34:42 +01:00
Gwilym Kuiper c6e7827e34 Add support for 18157Hz 2021-10-29 15:51:05 +01:00
Gwilym Kuiper 26620e850e Have the constants only in one place 2021-10-29 15:51:05 +01:00
Gwilym Kuiper 46b40c8e5b channel.data.len() = 2 * channel.pos 2021-10-29 14:29:22 +01:00
Gwilym Kuiper 5266e7a40c Release agb v0.8.0 2021-10-28 22:28:45 +01:00
Gwilym Kuiper c49952eff9 Reduce the length of the examples 2021-10-28 22:27:08 +01:00
Gwilym Kuiper 0a68eee3f9 Remove unused field 2021-10-28 21:48:22 +01:00
Gwilym Kuiper e3a35a2eda Release agb-sound-converter v0.1.0 2021-10-28 21:39:33 +01:00
Corwin 2391acb68d
Merge pull request #116 from corwinkuiper/nice-objects
Sane Objects!
2021-10-27 18:32:08 +01:00
Corwin b7734726a6
Merge pull request #123 from gwilymk/stereo-sound
Stereo sound
2021-10-27 18:30:37 +01:00
Corwin 3f310b70a2
Merge pull request #119 from corwinkuiper/partial-backgrounds
possible iter for backgrounds
2021-10-27 18:30:25 +01:00
Gwilym Kuiper 1d38b75289 Reduce stereo mixing by 1 instruction 2021-10-26 23:09:50 +01:00
Gwilym Kuiper 9524b4b3c3 Loads of comments to explain what all the steps are doing 2021-10-26 22:25:35 +01:00
Gwilym Kuiper 050ee184b0 Add stereo sound example 2021-10-26 22:14:46 +01:00
Gwilym Kuiper 5bd656d8cb Add support for stereo sound 2021-10-26 22:14:34 +01:00
Corwin Kuiper ec0d4431ad allow direct access to screen 2021-10-24 20:41:21 +01:00
Corwin Kuiper f2c4354c1b reduce to a byte array 2021-10-23 17:15:57 +01:00
Corwin Kuiper 713791b3fe satisfy linter 2021-10-23 17:15:57 +01:00
Corwin Kuiper 8d0c50b37a affines are referenced counted with the new RC arena(ish) implementation 2021-10-23 17:15:53 +01:00
Gwilym Kuiper 4f0b01b932 Add option to mark sound as stereo 2021-10-18 21:22:36 +01:00
Gwilym Kuiper e92383e29c
Merge pull request #121 from gwilymk/agb-sound-converter
Agb sound converter
2021-10-18 21:19:31 +01:00
Gwilym Kuiper eb26a21629 Attempt to make it so that the sound converter doesn't create too many tokens 2021-10-17 23:22:36 +01:00
Gwilym Kuiper 66e201ae39 Update example to use the new macro 2021-10-17 22:38:19 +01:00
Corwin Kuiper d22e46f7e3 resolve some clippy lints 2021-10-17 22:08:33 +01:00
Corwin Kuiper 1541d514c9 possible iter for backgrounds 2021-10-17 21:59:57 +01:00
Gwilym Kuiper 6f804d884b Release agb v0.7.0 2021-10-04 23:43:18 +01:00
Gwilym Kuiper cc62ef72a7 Release agb-macros v0.1.0 2021-10-04 21:02:52 +01:00
Corwin Kuiper df98f58c0e fix clippy lints 2021-10-04 20:56:28 +01:00
Gwilym Kuiper 94309a2518
Merge pull request #113 from gwilymk/add-test-for-rust-bug
Add test that data_end is in the correct place
2021-10-04 20:38:54 +01:00
Corwin 3e94bd27ee
Merge pull request #101 from corwinkuiper/sane-backgrounds
Sane backgrounds
2021-10-04 20:34:12 +01:00
Gwilym Kuiper a31efe7156 Add test that data_end is in the correct place 2021-10-04 20:15:34 +01:00
Gwilym Kuiper 25cca44b6b Cargo fmt 2021-10-03 23:26:02 +01:00
Gwilym Kuiper 871d90c889 Special case mixer without multiplication 2021-10-03 23:00:43 +01:00
Corwin Kuiper 9192722f5a fix build 2021-09-19 20:56:36 +01:00
Corwin Kuiper f7c2118a40 start work on separating out background sizes 2021-09-19 20:17:50 +01:00
Corwin Kuiper 1ae3c34877 begin work on affine regular compatability 2021-08-28 23:02:35 +01:00
Corwin Kuiper 3d269c98fd split blocks 2021-08-21 12:56:15 +01:00
Corwin Kuiper 63d880f083 no point checking if null and returning null 2021-08-21 12:03:30 +01:00
Corwin Kuiper 6523a3c6b8 free list allocator 2021-08-21 11:07:53 +01:00
Corwin e5f331587f
Merge pull request #108 from gwilymk/simple-alloc-implementation
Simple alloc implementation
2021-08-18 00:04:40 +01:00
Gwilym Kuiper 6d11302725 Fix clippy lint in the allocator 2021-08-16 23:40:16 +01:00
Gwilym Kuiper bec0cc6055 Make alloc an optional default feature 2021-08-16 23:32:31 +01:00
Gwilym Kuiper 469db77437 Add allocation example 2021-08-16 23:28:33 +01:00
Gwilym Kuiper 22189eb809 Add some more allocation tests 2021-08-16 23:20:51 +01:00
Gwilym Kuiper b30cc7715c Add really simple block reuse 2021-08-16 22:55:02 +01:00
Gwilym Kuiper e80ad601a3 Extract current alloc to a new_block function 2021-08-16 22:33:56 +01:00
Gwilym Kuiper d372ca74bf Use the block allocator by default now 2021-08-16 22:31:10 +01:00
Gwilym Kuiper 4b9e4ce42a Move tests to agb_alloc mod.rs 2021-08-16 22:28:41 +01:00
Gwilym Kuiper 7425e9973d Add a really basic block allocator 2021-08-16 22:25:08 +01:00
Gwilym Kuiper f2ce19c356 Switch to non-null 2021-08-16 22:24:32 +01:00
Gwilym Kuiper a7a1cb3ecd use super::*; 2021-08-16 21:20:52 +01:00
Gwilym Kuiper c8ac436b84 Use constants rather than hard coded stuff 2021-08-16 21:20:29 +01:00
Gwilym Kuiper 81e9789272 Correctly handle OOM 2021-08-16 21:19:51 +01:00
Gwilym Kuiper 94d5a71007 Split out bump_allocator 2021-08-16 21:14:28 +01:00
Gwilym Kuiper 8a0cb86eda Assert that it is actually in ewram 2021-08-16 21:11:40 +01:00
Gwilym Kuiper cd4718f8c5 Remove the need for this to be mut and write it in a more 'rusty' way 2021-08-16 21:08:39 +01:00
Gwilym Kuiper 22c6efa5fa Have a new() method 2021-08-16 21:07:25 +01:00
Gwilym Kuiper 2bacbf35dc Extern definition can be made smaller 2021-08-16 21:04:37 +01:00
Gwilym Kuiper 7062610aba Start a basic allocator with a super simple test 2021-08-16 21:02:55 +01:00
Gwilym Kuiper 1c07268f11 Include alloc 2021-08-16 21:02:36 +01:00
Gwilym Kuiper a500c9dbb1 Make mutex new constant and reduce unsafe block size 2021-08-16 21:02:03 +01:00
Corwin Kuiper 87705514a7 Merge branch 'master' of github.com:agbrs/agb into affine-double-warning 2021-08-16 19:31:07 +01:00
Corwin Kuiper 4d45ca4203 remove warning 2021-08-16 19:31:04 +01:00
Corwin Kuiper fe9461e5c5 redraw everything if there is no overlap 2021-08-15 23:40:57 +01:00
Corwin Kuiper 631bf2bae2 add collision function 2021-08-15 23:40:25 +01:00
Gwilym Kuiper 1b40fe2b03
Merge pull request #106 from gwilymk/half-multiplications-in-sound-mixing
Halve the number multiplications in sound mixing
2021-08-15 23:36:21 +01:00
Gwilym Kuiper 5d255fddea Add asm_include.s to the rerun-if-changed in build.rs 2021-08-15 23:27:39 +01:00
Gwilym Kuiper dffd57204c Remove trailing space 2021-08-15 23:04:02 +01:00
Gwilym Kuiper a2f0c43f26 Reduce the number of registers stored and used 2021-08-15 23:00:17 +01:00
Gwilym Kuiper 1be6dfbf36 Unwind loop 4 times 2021-08-15 22:36:32 +01:00
Gwilym Kuiper 0c48975fa0 Do 2 mulitplications at once 2021-08-15 22:18:02 +01:00
Gwilym Kuiper a2da434013 Rename the directory 2021-08-15 20:39:17 +01:00
Gwilym Kuiper 4a6ef023f5 Rename agb-entry to agb-macro in cargo.tomls 2021-08-15 20:37:36 +01:00
Corwin Kuiper 2974711a38 update more 2021-08-08 00:01:58 +01:00
Corwin Kuiper 7708ccc4e1 remove unused import 2021-08-07 23:51:07 +01:00
Corwin Kuiper 36c6ab1914 correct the commit routine 2021-08-07 23:50:28 +01:00
Corwin Kuiper 0ccde7d328 satisfy linter 2021-08-07 18:41:28 +01:00
Corwin Kuiper 724147ecfa commit step required now 2021-08-07 18:20:08 +01:00
Corwin Kuiper 7798f4c95f nicer way of using mutable backing storages 2021-08-07 18:15:46 +01:00
Corwin Kuiper d6b388e1d6 simplify the generics 2021-08-07 18:14:41 +01:00
Corwin Kuiper 6652bdbd70 make to generics 2021-08-07 18:14:05 +01:00
Corwin Kuiper e176e986ad part way implementation of background 2021-08-07 18:14:02 +01:00
Corwin Kuiper f9014a0bf9 started work on new background implementation 2021-08-07 18:12:49 +01:00
Gwilym Kuiper 503b7262ca May as well call this version 0.1 2021-08-07 16:45:08 +01:00
Gwilym Kuiper 739f81dd30 rename agb-entrypoint to agb-entry 2021-08-07 16:40:09 +01:00
Gwilym Kuiper 861ecc626a Use the new entrypoint macro in all the examples 2021-08-07 16:37:32 +01:00
Gwilym Kuiper d2a4d0d1c3 Export the new macro in agb 2021-08-07 16:33:17 +01:00
Gwilym Kuiper c59f063b2b Rename crate with an _ to be consistent with the image converter 2021-08-07 16:33:17 +01:00
Corwin Kuiper ff51341679 print in interrupt 2021-08-07 14:16:41 +01:00
Corwin Kuiper 477b0465fb add docs for vblank interrupt 2021-08-07 14:14:06 +01:00
Corwin Kuiper fa250cee60 remove allow warning 2021-08-07 14:14:06 +01:00
Corwin Kuiper b559b0eb54 add some docs 2021-08-07 14:14:06 +01:00
Corwin Kuiper c60eaaaff0 doesn't need to be public 2021-08-07 14:14:06 +01:00
Corwin Kuiper 5093884612 move enable and disable to impl 2021-08-07 14:14:06 +01:00
Corwin Kuiper 476b030b41 rename wait for vblank functions 2021-08-07 14:14:06 +01:00
Corwin Kuiper 99f992353a fix wave example 2021-08-07 14:14:06 +01:00
Corwin Kuiper da6ff40a32 add docs 2021-08-07 14:14:06 +01:00
Corwin Kuiper 1b971b8993 add lock with key 2021-08-07 14:14:06 +01:00
Corwin Kuiper 00a5b2487c change to using extern in linker 2021-08-07 14:14:06 +01:00
Corwin Kuiper 013522f642 setting lto to thin works? 2021-08-07 14:14:06 +01:00
Corwin Kuiper 4467d0cf18 fix incorrect label from rebase 2021-08-07 14:14:06 +01:00
Corwin Kuiper 3b26c0b262 acknowledge requests after handling them 2021-08-07 14:14:06 +01:00
Corwin Kuiper 7b46bc9703 change name to "get" 2021-08-07 14:14:04 +01:00
Corwin Kuiper 37c29b7ec3 should enable interrupts by writing a 1 2021-08-07 14:13:23 +01:00
Corwin Kuiper 47f8ee5b70 satisfy linter 2021-08-07 14:13:20 +01:00
Corwin Kuiper f8fb6ba7b4 change implementation of vblank to use new interrupt handler
also fixes all examples
2021-08-07 14:12:00 +01:00
Corwin Kuiper 7b05da4783 change name of interrupt handler
it is no longer simple
2021-08-07 14:12:00 +01:00
Corwin Kuiper 007d4d3ff8 handler does not need to be public to be exposed 2021-08-07 14:12:00 +01:00
Corwin Kuiper f1a2b76d28 arm is callee save 2021-08-07 14:12:00 +01:00
Corwin Kuiper e22564a29c disable interrupts during handler 2021-08-07 14:12:00 +01:00
Corwin Kuiper 9bab2a75d0 add macro for much easier interrupt handler adding 2021-08-07 14:12:00 +01:00
Corwin Kuiper 8b8b2b17a2 change to using iter 2021-08-07 14:12:00 +01:00
Corwin Kuiper 1ac33bfbc8 put interrupt handler in iwram, 32 bit bus 2021-08-07 14:12:00 +01:00
Corwin Kuiper bd1f5f6a5a store gbatek recommended registers 2021-08-07 14:12:00 +01:00
Corwin Kuiper ac5fd06106 add test for length of interrupt table 2021-08-07 14:12:00 +01:00
Corwin Kuiper d607f892e3 change to array for efficient lookup table 2021-08-07 14:12:00 +01:00
Corwin Kuiper a959e8e06b don't use register 4 2021-08-07 14:12:00 +01:00
Corwin Kuiper 47b02d29cf correct which way round locked and unlocked is 2021-08-07 14:12:00 +01:00
Corwin Kuiper 1318e7eca4 ensure mutex is unlocked before locking 2021-08-07 14:12:00 +01:00
Corwin Kuiper a9aad11dd7 make interrupt system interrupt safe(r)
FnMut is not something that can be used in a interrupt safe manner.
Instead use Fn with a Mutex that disables interrupts with a lock.
2021-08-07 14:12:00 +01:00
Corwin Kuiper a5488fab56 review of documentation suggests that this does nothing 2021-08-07 14:12:00 +01:00
Corwin Kuiper f54a539296 use better calling convention 2021-08-07 14:12:00 +01:00
Corwin Kuiper 086a4385be correct comments to accurately reflect what is going on 2021-08-07 14:12:00 +01:00
Corwin Kuiper 466d0844c5 push all registers, as rust may be using them 2021-08-07 14:12:00 +01:00
Corwin Kuiper 597b9370fc don't disable and reenable interrupts 2021-08-07 14:12:00 +01:00
Corwin Kuiper b98e6cbb02 add all other interrupts 2021-08-07 14:12:00 +01:00
Corwin Kuiper 30c5a0eea9 export interrupt module 2021-08-07 14:12:00 +01:00
Corwin Kuiper c2d4c99f66 correct exportation of functions 2021-08-07 14:12:00 +01:00
Corwin Kuiper 2ff9644310 disable interrupts during the interrupt handler 2021-08-07 14:12:00 +01:00