<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tools.nes/Cargo.toml, 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-08-17T21:06:23Z</updated>
<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>
<entry>
<title>Upgrade to the 2024 edition of Rust</title>
<updated>2026-07-08T19:09:42Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mssola@mssola.com</email>
</author>
<published>2026-07-08T18:45:05Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=6333dc7ee02332cd06e20b56cefd3210368e54f8'/>
<id>urn:sha1:6333dc7ee02332cd06e20b56cefd3210368e54f8</id>
<content type='text'>
And also adjust the code so the clippy from the 2024 edition is fine
with it.

Signed-off-by: Miquel Sabaté Solà &lt;mssola@mssola.com&gt;
</content>
</entry>
<entry>
<title>Dual license the source code under this repository</title>
<updated>2024-12-20T15:09:05Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2024-12-20T15:09:05Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=bdb7254a85b25a55f3cd4cb5252c3526699f4196'/>
<id>urn:sha1:bdb7254a85b25a55f3cd4cb5252c3526699f4196</id>
<content type='text'>
This means that the source code under `crates/` is under the GNU
GPLv3 (or any later version), and that source code under `lib/` is under
the GNU LGPLv3 (or any later version).

In practice this relaxes a bit the previous licensing because before it
was all GNU GPLv3 (or any later version). For people compiling a binary
with these libraries then this would've been spilling over the GPLv3 on
their binaries as well, which might not be desired. Instead, for the
libraries abide by the LGPLv3 (or any later version), which has the same
guarantees when it comes to free/lliure software for this specific case,
but at least we don't force the GPLv3 (or any later version) onto users.
That being said, users of these libraries still need to provide object
files so third parties could theoretically recompile those binaries
under a modified library.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Add the readrom binary</title>
<updated>2024-12-18T06:46:26Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2024-12-18T06:46:26Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=407048d0037c8d6d26c7e3fe2384e974212f124e'/>
<id>urn:sha1:407048d0037c8d6d26c7e3fe2384e974212f124e</id>
<content type='text'>
The readrom binary is similar to `readelf` from Linux and it will allow
to display information from an NES/Famicom ROM file. For now the
information being shown is just the header, but in the future we might
also include disassembling parts of the code, or retrieving the "CHARS"
section for a given ROM file, and similar.

In order to implement the header parsing part a new library has been
introduced, simply named "header" which abstracts everything away so you
just need to call `Header::try_from("my bytes")` to fetch the actual
information.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Don't rely on the identifier for control identity</title>
<updated>2024-12-12T06:54:51Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2024-10-29T13:49:44Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=d2d6d90acf2e9a8ccb4cbcec619d2a0d49cd462a'/>
<id>urn:sha1:d2d6d90acf2e9a8ccb4cbcec619d2a0d49cd462a</id>
<content type='text'>
Instead, use a new enum type to identify the control statements that we
actually support. This way the assembler is more easily aware on the
control that it's dealing with, and can be more sure on certain aspects
of the implementation on control support.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Adapt the assembler to the changes on the parser</title>
<updated>2024-12-12T06:46:17Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2024-10-09T13:41:30Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=16114b2ca358dbbef09cb5a8d3a843a0e11a3b88'/>
<id>urn:sha1:16114b2ca358dbbef09cb5a8d3a843a0e11a3b88</id>
<content type='text'>
As of 184c39579227 ("Re-work the parser from scratch") the parser has a
proper AST, and the assembler has to traverse it accordingly.

Moreover, the assembler has been stripped from a lot of unneeded memory
allocations and it's overall more keen on using mere references when
possible.

Signed-off-by: Miquel Sabaté Solà &lt;mikisabate@gmail.com&gt;
</content>
</entry>
<entry>
<title>Initial commit</title>
<updated>2024-12-12T06:30:15Z</updated>
<author>
<name>Miquel Sabaté Solà</name>
<email>mikisabate@gmail.com</email>
</author>
<published>2024-05-17T05:39:05Z</published>
<link rel='alternate' type='text/html' href='https://git.mssola.com/nes/tools.nes/commit/?id=587dd5bb80364688419bb43aba4afc044ac0ef48'/>
<id>urn:sha1:587dd5bb80364688419bb43aba4afc044ac0ef48</id>
<content type='text'>
A lot is missing and there is a long road ahead to make the assembler
even work.

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