<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bedrock-pc/src, branch v0.4.0</title>
<subtitle>Bedrock emulator and assembler for Windows and Linux
</subtitle>
<id>https://code.benbridle.com/bedrock-pc/atom?h=v0.4.0</id>
<link rel='self' href='https://code.benbridle.com/bedrock-pc/atom?h=v0.4.0'/>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/'/>
<updated>2024-08-10T02:37:02Z</updated>
<entry>
<title>Fix panic in ReadOnlyTextBuffer</title>
<updated>2024-08-10T02:37:02Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-10T02:34:00Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=59820850b2bd326a20306279bdcbe52982a74889'/>
<id>urn:sha1:59820850b2bd326a20306279bdcbe52982a74889</id>
<content type='text'>
Previously when reading from a ReadOnlyTextBuffer the pointer would
fall off the end and crash the emulator.

This commit also makes the ReadOnlyTextBuffer Unicode-compatible,
rather than the previous behaviour of clamping every character into
the ASCII range.
</content>
</entry>
<entry>
<title>Fix ascend-to-parent behaviour of file device</title>
<updated>2024-08-10T02:37:02Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-10T02:36:42Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=516f5cf5edfb7a2c4a4f3571aa6ce692a476d582'/>
<id>urn:sha1:516f5cf5edfb7a2c4a4f3571aa6ce692a476d582</id>
<content type='text'>
We were finding the parent of the relative path and then passing this
to the BedrockFilePath::from_path constructor, but this constructor
expects to be passed an absolute path and so was unconditionally
returning None.
</content>
</entry>
<entry>
<title>Refactor the file device</title>
<updated>2024-08-07T05:09:14Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-08-07T05:09:14Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=38d40a2c5d4b553f524d87755b8e2e0e47928b8a'/>
<id>urn:sha1:38d40a2c5d4b553f524d87755b8e2e0e47928b8a</id>
<content type='text'>
This is the Windows side of the refactoring job. The windows crate has
been added as a dependency in order to get a list of available drives
by drive letter, and a virtual top-level root directory has been
implemented in the Windows code to make it possible for programs to
hierarchically navigate between available drives.
</content>
</entry>
<entry>
<title>Refactor the file device</title>
<updated>2024-08-06T07:12:43Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-06T07:11:46Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=65b53003e8de9543ba25a3b3d3cace399b92dc1d'/>
<id>urn:sha1:65b53003e8de9543ba25a3b3d3cace399b92dc1d</id>
<content type='text'>
The major feature of this refactor is the creation of BedrockFilePath,
a type which can be losslessly converted into an operating-system
specific path or a Bedrock-style byte path. It also prevents file paths
which can't be represented as Bedrock-style byte paths from being
constructed, and allows the use of a base directory which acts as an
inescapable sandbox.

BedrockFilePath will support the creation of a virtual root directory
on Windows which will allow navigation between drive letters via the
standard hierarchical navigation ports.

This commit has been tested on Linux, but not yet Windows. Further work
is expected before the new code will work on Windows.
</content>
</entry>
<entry>
<title>Increase frame time to 8ms</title>
<updated>2024-08-05T01:42:53Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-05T01:42:53Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=406b4d3ea56a19c0389b4214a7d8d15bf3028eb8'/>
<id>urn:sha1:406b4d3ea56a19c0389b4214a7d8d15bf3028eb8</id>
<content type='text'>
This is slightly more efficient on the CPU, while not making any
visible difference to the user.
</content>
</entry>
<entry>
<title>Update cursor callback to latest version of Phosphor</title>
<updated>2024-08-04T04:44:51Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-04T04:44:51Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=f07c3d277406b4338bbe6a3371d58da0da33905f'/>
<id>urn:sha1:f07c3d277406b4338bbe6a3371d58da0da33905f</id>
<content type='text'>
The most recent Phosphor commit c141d8f unified the is_cursor_visible
and cursor_icon callbacks.
</content>
</entry>
<entry>
<title>Set error flag when file device cannot ascend to parent directory</title>
<updated>2024-08-04T01:09:48Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-04T01:09:48Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=67d5d2c434db7d6b85d438f263ca51c26715a583'/>
<id>urn:sha1:67d5d2c434db7d6b85d438f263ca51c26715a583</id>
<content type='text'>
This should have been happening previously, but was missed.
</content>
</entry>
<entry>
<title>Fix compilation on Linux</title>
<updated>2024-08-04T01:09:04Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-04T01:09:04Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=b82ffe72b3f72b8fc5e42464319bab69973c097f'/>
<id>urn:sha1:b82ffe72b3f72b8fc5e42464319bab69973c097f</id>
<content type='text'>
Some Windows-only library functions were added in during a previous
commit while I was developing on Windows.
</content>
</entry>
<entry>
<title>Implement fullscreen mode</title>
<updated>2024-07-31T08:17:37Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-07-31T04:07:10Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=8824a2fdc6f046006945deb8e5ef7a7d5173c139'/>
<id>urn:sha1:8824a2fdc6f046006945deb8e5ef7a7d5173c139</id>
<content type='text'>
Pressing F11 toggles emulator fullscreen mode.
</content>
</entry>
<entry>
<title>Improve frame-rate stability</title>
<updated>2024-07-31T03:30:20Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-07-31T03:30:20Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=3ab32debad4fcfc73df7c60ea46df619ca60a579'/>
<id>urn:sha1:3ab32debad4fcfc73df7c60ea46df619ca60a579</id>
<content type='text'>
Some frames would sporadically lag between on_process and on_render,
because on_process would bail once one frame had elapsed since the end
of the previous on_process, and the processor would not always reach a
sleep point in this time. This was really an issue to do with with the
time taken between the end of the previous on_process and the start of
the current on_process.

To fix this, the on_process invocation will run the processor for a full
frame, without subtracting the time elapsed between frames. This seems
to have no negative effects. It also allows us to remove end_of_process
from the emulator.

The sleep in the Signal::Sleep handler has also been removed, because
it serves no real purpose and will most likely cause issues in the
future.
</content>
</entry>
</feed>
