<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bedrock-nds/arm9/source/devices, branch main</title>
<subtitle>Bedrock emulator for the Nintendo DS
</subtitle>
<id>https://code.benbridle.com/bedrock-nds/atom?h=main</id>
<link rel='self' href='https://code.benbridle.com/bedrock-nds/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/'/>
<updated>2025-09-19T01:32:32Z</updated>
<entry>
<title>Massive rewrite</title>
<updated>2025-09-19T01:32:32Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2025-09-19T01:17:14Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=bb1aa5958d1b67707dcf0f6b08bfaf0b408bd46e'/>
<id>urn:sha1:bb1aa5958d1b67707dcf0f6b08bfaf0b408bd46e</id>
<content type='text'>
This commit rewrites the emulator halfway from scratch to make it
easier to change and maintain in the future. The emulator core was
rewritten to adhere to the released Bedrock specification (earlier
versions implemented an older prototype specification, which is no
longer relevant).

This commit also adds proper support for running multiple concurrent
Bedrock instances. This was previously supported in a limited manner
for the on-screen keyboard, but now works for any regular program as
well, with switching being performed by pressing the L or R bumper
buttons. This is disabled by default, as programs will still need to
be baked into the emulator and hand-loaded.
</content>
</entry>
<entry>
<title>Create intermediate parent directories when creating a new file</title>
<updated>2024-12-16T05:09:46Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-12-16T05:09:46Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=9612c307f00c4313d73fe0c3a86c05c8d8cd514e'/>
<id>urn:sha1:9612c307f00c4313d73fe0c3a86c05c8d8cd514e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Hide the . and .. directories in file device</title>
<updated>2024-12-16T03:30:06Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-12-16T03:30:06Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=3533aced8b3fc4d6c1ec22c35f805ae966d8a7cb'/>
<id>urn:sha1:3533aced8b3fc4d6c1ec22c35f805ae966d8a7cb</id>
<content type='text'>
The file device shows the special directories . and .. in every
directory but the root directory. To hide these, in non-root
directories, we reduce the reported number of child entries by 2, and
when selecting a child entry we increment the pointer by 2.
</content>
</entry>
<entry>
<title>Implement a toggleable keyboard on the lower screen</title>
<updated>2024-12-16T01:52:54Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-12-16T01:52:54Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=0d9978228b9226d16ba8272a03dd7e6c9ad83b3d'/>
<id>urn:sha1:0d9978228b9226d16ba8272a03dd7e6c9ad83b3d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix overflow error in line drawing function</title>
<updated>2024-12-16T01:51:10Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-12-16T01:51:00Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=dbe8171815ea3b51c3ac87dae1996ae0d8f6eb04'/>
<id>urn:sha1:dbe8171815ea3b51c3ac87dae1996ae0d8f6eb04</id>
<content type='text'>
Drawing a line with length of 0x4000 or greater was never terminating.
</content>
</entry>
<entry>
<title>Prevent null pointer errors</title>
<updated>2024-12-16T01:49:56Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-12-16T01:49:22Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=f98e8576cc844e7be676ac653266e21ef54873d5'/>
<id>urn:sha1:f98e8576cc844e7be676ac653266e21ef54873d5</id>
<content type='text'>
Many functions which used the scr-&gt;nds pointer were not first checking
that the pointer was not null.
</content>
</entry>
<entry>
<title>Update palette only when screen buffers flip</title>
<updated>2024-11-22T03:15:11Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-11-22T03:04:02Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=a05dc964313a3f1431b9d08d33afb4daf45c0819'/>
<id>urn:sha1:a05dc964313a3f1431b9d08d33afb4daf45c0819</id>
<content type='text'>
Previously, any palette updates would be immediately visible, but any
screen updates would draw to the back buffer and would only become
visible when the back buffer was copied to the front buffer. This could
result in a flash of a new palette before the new screen had a chance
to draw and become visible.

To prevent this, a second palette was created to receive palette
updates, with the updates only being copied to the visible palette when
the screen buffers flip.
</content>
</entry>
<entry>
<title>Implement file device</title>
<updated>2024-11-22T03:15:11Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-11-22T03:04:20Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=4f8805869c469cb1b3685e03c3ea34d7654b5cb7'/>
<id>urn:sha1:4f8805869c469cb1b3685e03c3ea34d7654b5cb7</id>
<content type='text'>
There is still a small amount of work to be done on the file device:
- Read file size only when requested
- Hide '.' and '..' directories
- Resize files
</content>
</entry>
<entry>
<title>Implement name and author ports in system device</title>
<updated>2024-11-22T03:07:48Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-11-22T03:04:33Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=fcbc3968bd95e4d19b37d9fa4bca51b1db8596ff'/>
<id>urn:sha1:fcbc3968bd95e4d19b37d9fa4bca51b1db8596ff</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Simplify clock device implementation</title>
<updated>2024-11-22T03:07:48Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-11-22T03:01:31Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-nds/commit/?id=e05888d141bc64e92d81859af0d87627e6fbc477'/>
<id>urn:sha1:e05888d141bc64e92d81859af0d87627e6fbc477</id>
<content type='text'>
Two pairs of generic get/set functions now do the role of the previous
pair of custom get/set functions for each timer.
</content>
</entry>
</feed>
