<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tools.nes/tests/runrom, branch main</title>
<subtitle>Tools for NES/Famicom development.
</subtitle>
<id>https://git.mssola.com/nes/tools.nes/atom?h=main</id>
<link rel='self' href='https://git.mssola.com/nes/tools.nes/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/'/>
<updated>2026-10-09T19:45:05Z</updated>
<entry>
<title>vnf,runrom: detect bad data access</title>
<updated>2026-10-09T19:45:05Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-10-09T19:45:05Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=f6df4314945c1d37d314a7c88553b97b23c748e9'/>
<id>urn:sha1:f6df4314945c1d37d314a7c88553b97b23c748e9</id>
<content type='text'>
This includes detection for:

- Stack underflows (it was theoretically already there but it had never
  been properly tested).
- Load/store out of bounds for a given variable known via the .nasm/
  directory.
- Load out of bounds on a set of data referenced via a raw label (see
  commit aa5174fc055d ("xixanta: Add an hint for the ending of data
  labels")).

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>vnf: display also the break mark on report()</title>
<updated>2026-09-07T21:19:53Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-09-07T21:19:53Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=e2a20dedc354c0b8d2e5253ffd4ac22d2b2898aa'/>
<id>urn:sha1:e2a20dedc354c0b8d2e5253ffd4ac22d2b2898aa</id>
<content type='text'>
When reporting the final instruction, if that was actually a brk (and
hence we stopped because of it), show the breaking mark as that could be
relevant when debugging.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>tests: add a test on branching instructions</title>
<updated>2026-09-06T20:55:50Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-09-06T20:55:50Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=2d61e42fab657d61212a7aff1ecacbd674be8cda'/>
<id>urn:sha1:2d61e42fab657d61212a7aff1ecacbd674be8cda</id>
<content type='text'>
Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>vnf: also set the carry on a zero compare</title>
<updated>2026-09-06T19:42:34Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-09-06T19:42:34Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=9c685d5b6ca1686f944fb239ec89511f24801d44'/>
<id>urn:sha1:9c685d5b6ca1686f944fb239ec89511f24801d44</id>
<content type='text'>
Add also a test to further check corner cases on compare instructions.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>vnf: add support for standard joypads</title>
<updated>2026-09-06T13:47:50Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-29T22:06:39Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=ad77503d953302f22a621093ba359e24526892ec'/>
<id>urn:sha1:ad77503d953302f22a621093ba359e24526892ec</id>
<content type='text'>
This means adding constants so developers can actually trigger which key
presses are available at any given read, as well as a simple interface
that allows to add button presses and clear them.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>vnf: add support for all stack instructions</title>
<updated>2026-08-27T05:12:42Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-27T05:12:42Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=50ebac34fec99c853b2f010bfd100c11b5e0a603'/>
<id>urn:sha1:50ebac34fec99c853b2f010bfd100c11b5e0a603</id>
<content type='text'>
This also includes brk and rti, for which we are also storing and
exporting the break mark, just in case it can be useful to library users
in case they want to add error codes in break marks.

This commit also includes a fix for accounting the Z and N flags on
transfer instructions, which couldn't easily be split into a separate
commit, but it's a fairly simple change.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>runrom: add tests for --start and --until-address</title>
<updated>2026-08-26T06:09:16Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-26T06:09:16Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=7feba90e6bec87796a39e53bec81647c64bfd7dc'/>
<id>urn:sha1:7feba90e6bec87796a39e53bec81647c64bfd7dc</id>
<content type='text'>
Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Add the runrom crate and the vnf library</title>
<updated>2026-08-17T21:06:23Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-08-17T14:03:21Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=df1041d40431251e22e03ec5c4df7fc5767e1543'/>
<id>urn:sha1:df1041d40431251e22e03ec5c4df7fc5767e1543</id>
<content type='text'>
The vnf library supports the runrom crate and they both combined enable
users to "run" a ROM file. This is basically an emulator, but with two
key differences:

1. It is to be run programatically. That is, you are not expected to
   play games with this, but to run code by steps, start at a given
   address, run a function, etc.
2. It is headless: there are no graphics displayed on screen, nor sound
   being delivered.

Thus, the target for both these things are developers, not players. This
way developers can validate code paths without needing a full blown
emulator. You can write tests with this and be able to run some checks
as part of your testing infrastructure.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
</feed>
