aboutsummaryrefslogtreecommitdiff
path: root/arm9/source/devices/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/source/devices/system.c')
-rw-r--r--arm9/source/devices/system.c37
1 files changed, 28 insertions, 9 deletions
diff --git a/arm9/source/devices/system.c b/arm9/source/devices/system.c
index 3406eed..d2aeb7f 100644
--- a/arm9/source/devices/system.c
+++ b/arm9/source/devices/system.c
@@ -1,16 +1,35 @@
-#include "nds.h"
#include "file.h"
#include "system.h"
-u8 devices_high() {
- return 0b11111100;
+// Reset a system device.
+void system_reset(SystemDevice *system) {
+ readbuf_set_pointer(&system->name);
+ readbuf_set_pointer(&system->authors);
}
-u8 devices_low() {
- u8 devices = 0;
- if (filesystem_enabled()) {
- devices |= 0b00100000;
- }
- return devices;
+// Return a bitmask representing the connected state of each device.
+u16 connected_devices(void) {
+ bool devices[16] = {
+ /* SYSTEM */ true,
+ /* MEMORY */ true,
+ /* MATH */ true,
+ /* CLOCK */ true,
+ /* INPUT */ true,
+ /* SCREEN */ true,
+ /* TONE */ false,
+ /* SAMPLER */ false,
+ /* STREAM */ true,
+ /* FILE */ nds_filesystem_enabled(),
+ /* CLIPBOARD */ false,
+ /* REGISTRY */ false,
+ /* CUSTOM 1 */ false,
+ /* CUSTOM 2 */ false,
+ /* CUSTOM 3 */ false,
+ /* CUSTOM 4 */ false,
+ };
+ u16 mask = 0;
+ for (int i=0; i<16; i++) mask |= devices[i] << (15-i);
+ return mask;
}
+