You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

722 lines
74 KiB

<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>utterances</title><meta name="description" content="A lightweight commenting system using GitHub issues."><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="preconnect" href="https://api.github.com/"><link rel="preconnect" href="https://avatars3.githubusercontent.com/"><script type="module" src="utterances_data/utterances.6ec01640.js"></script><link rel="stylesheet" crossorigin="anonymous" href="utterances_data/utterances.css"></head><body><main class="timeline">
<h1 class="timeline-header">
<a class="text-link" target="_blank" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16">9 Comments</a>
<em>
- powered by
<a class="text-link" href="https://utteranc.es/" target="_blank">utteranc.es</a>
</em>
</h1><article class="timeline-comment">
<a class="avatar" href="https://github.com/cbreezier" target="_blank" tabindex="-1">
<img alt="@cbreezier" src="utterances_data/4517105.gif" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/cbreezier" target="_blank"><strong>cbreezier</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-826249951" target="_blank">on Apr 24, 2021</a>
</span>
<div class="comment-actions">
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto">This was a great write-up - I found that it
provided a good level of detail while leaving enough of the
implementation details for me to figure out.</p>
<p dir="auto">Two things that were a little unclear to me, both in the <code class="notranslate">DXYN</code> instruction:</p>
<ol dir="auto">
<li>While drawing the sprite, I wasn't sure whether I should be actually modifying <code class="notranslate">I</code> or just reading from successive memory locations. I ended up <em>not</em> modifying it, which seemed to work fine.</li>
<li>The written explanation didn't say anything about setting the <code class="notranslate">VF</code> flag - I had to find that out from the pseudocode section which I had initially tried to avoid.</li>
</ol>
<p dir="auto">My attempt (seems to be working, sans sound) is in Rust: <a href="https://github.com/cbreezier/rchip8" target="_top" rel="noopener noreferrer">https://github.com/cbreezier/rchip8</a></p>
</div>
<div class="comment-footer" reaction-count="0" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="0" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="0" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/826249951/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/tobiasvl" target="_blank" tabindex="-1">
<img alt="@tobiasvl" src="utterances_data/80824.jpeg" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/tobiasvl" target="_blank"><strong>tobiasvl</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-912114772" target="_blank">on Sep 2, 2021</a>
</span>
<div class="comment-actions">
<span class="author-association-badge">Owner</span>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cbreezier/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cbreezier" target="_top" rel="noopener noreferrer">@cbreezier</a> Hey, thanks for the feedback!</p>
<ol dir="auto">
<li>Thanks, I've attempted to clarify this. You're correct, <code class="notranslate">I</code> should not be modified (and neither should <code class="notranslate">VX</code> and <code class="notranslate">VY</code>, for that matter).</li>
<li>Hmm, the written explanation does have a bullet point about setting <code class="notranslate">VF</code>,
though? It says "If the current pixel in the sprite row is on and the
pixel at coordinates X,Y on the screen is also on, turn off the pixel
and set <code class="notranslate">VF</code> to 1". Let me know if anything is unclear about this, or if you were talking about some other part of the tutorial.</li>
</ol>
<p dir="auto">Again, thanks for the feedback, and I'm glad you found it useful!</p>
</div>
<div class="comment-footer" reaction-count="0" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="0" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="0" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/912114772/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/DasStone" target="_blank" tabindex="-1">
<img alt="@DasStone" src="utterances_data/58308367.png" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/DasStone" target="_blank"><strong>DasStone</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-1063939210" target="_blank">on Mar 10, 2022</a>
</span>
<div class="comment-actions">
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto">Thanks for writing this great article! I’m sure it helped many people get into the topic of emulators, as it did with me.</p>
<p dir="auto">But there is one thing I’m still not sure about (it has to do with <code class="notranslate">FX0A</code>
Instruction). It says that the instruction “blocks” execution. Does
this mean that the timers should stop decrementing as well or do they
continue at their normal rate of <code class="notranslate">60Hz</code>
(I’ve scanned the Internet for any mention of this, but I haven’t found a
clear, unambiguous answer. But it seems like that the timers should
continue)?</p>
<p dir="auto">Maybe this is something you find worth clarifying in your article.</p>
<p dir="auto">Thanks for your time!</p>
<p dir="auto">Here is my attempt in Rust for anyone interested: <a href="https://github.com/DasStone/chip8emu_rs" target="_top" rel="noopener noreferrer">https://github.com/DasStone/chip8emu_rs</a></p>
</div>
<div class="comment-footer" reaction-count="0" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="0" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="0" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1063939210/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/tobiasvl" target="_blank" tabindex="-1">
<img alt="@tobiasvl" src="utterances_data/80824.jpeg" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/tobiasvl" target="_blank"><strong>tobiasvl</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-1098475208" target="_blank">on Apr 13, 2022</a>
</span>
<div class="comment-actions">
<span class="author-association-badge">Owner</span>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DasStone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DasStone" target="_top" rel="noopener noreferrer">@DasStone</a>
Thanks for the kind words and the feedback! You're right, this is
definitely worth clarifying in the blog post. In the meantime, I can
confirm that yes, you're correct, the timers should continue while the <code class="notranslate">FX0A</code> instruction is blocking for input.</p>
<p dir="auto">In the CHIP-8 interpreter on the COSMAC VIP, <code class="notranslate">FX0A</code>
was simply an infinite loop that ran until a key was pressed. The
timers were decremented in the COSMAC VIP's built-in display interrupt
routine, which is why they're decremented 60 times per second – the
display interrupt occurs each frame drawn to the display, which
refreshes at 60 Hz. You can read more about it here: <a href="https://laurencescotford.com/chip-8-on-the-cosmac-vip-interrupts/" rel="noopener noreferrer" target="_top">https://laurencescotford.com/chip-8-on-the-cosmac-vip-interrupts/</a></p>
</div>
<div class="comment-footer" reaction-count="2" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="1" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="1" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1098475208/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/jakubito" target="_blank" tabindex="-1">
<img alt="@jakubito" src="utterances_data/8123702.png" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/jakubito" target="_blank"><strong>jakubito</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-1132356459" target="_blank">on May 19, 2022</a>
</span>
<div class="comment-actions">
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto">Hi <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tobiasvl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tobiasvl" target="_top" rel="noopener noreferrer">@tobiasvl</a>, thanks for posting this excellent guide. I referenced it many times while writing my own interpreter.</p>
<p dir="auto">I have a question regarding one of your statements:</p>
<blockquote>
<p dir="auto">However, the actual drawing of the sprite should not wrap.
If a sprite is drawn near the edge of the screen, it should be clipped,
and not wrap. The sprite should be partly drawn near the edge, and the
other part should not reappear on the opposite side of the screen.</p>
</blockquote>
<p dir="auto">But <a href="http://devernay.free.fr/hacks/chip8/C8TECH10.HTM#Dxyn" rel="noopener noreferrer" target="_top">this reference</a> says:</p>
<blockquote>
<p dir="auto">If the sprite is positioned so part of it is outside the
coordinates of the display, it wraps around to the opposite side of the
screen.</p>
</blockquote>
<p dir="auto">For example, paddles in Pong seem to wrap in other
interpreters I tried (e.g. Octo IDE), but based on your instructions,
they shouldn't. Am I missing something here?</p>
<p dir="auto">Edit: Just found out Octo IDE has an option for wrapping/clipping sprites. I think I'll make it configurable too.</p>
</div>
<div class="comment-footer" reaction-count="0" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="0" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="0" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1132356459/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/tobiasvl" target="_blank" tabindex="-1">
<img alt="@tobiasvl" src="utterances_data/80824.jpeg" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/tobiasvl" target="_blank"><strong>tobiasvl</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-1133746903" target="_blank">on May 21, 2022</a>
</span>
<div class="comment-actions">
<span class="author-association-badge">Owner</span>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jakubito/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jakubito" target="_top" rel="noopener noreferrer">@jakubito</a>
Thanks, interesting! I can confirm that my statement is correct –
sprites shouldn't partially wrap in either the original CHIP-8
interpreter (<a href="https://laurencescotford.com/chip-8-on-the-cosmac-vip-drawing-sprites/" rel="noopener noreferrer" target="_top">source</a>) or in CHIP-48/S-CHIP (<a href="https://github.com/Chromatophore/HP48-Superchip/blob/master/investigations/quirk_collide.md" target="_top" rel="noopener noreferrer">source</a>).</p>
<p dir="auto">However! By "Pong", I assume you're referring to David
Winter's Pong game. It was written for his own DOS interpreter, which
was based on the CHIP-48 specification. This specification seems to be
what Cowgod's reference is based on as well. It's possible David Winter
introduced sprite wrapping himself, and this is the reason for the
disparity.</p>
</div>
<div class="comment-footer" reaction-count="1" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="0" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="1" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1133746903/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/JamesWWalker" target="_blank" tabindex="-1">
<img alt="@JamesWWalker" src="utterances_data/10425858.jpeg" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/JamesWWalker" target="_blank"><strong>JamesWWalker</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-1193015003" target="_blank">on Jul 22, 2022</a>
</span>
<div class="comment-actions">
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto">Thanks for this helpful post on creating a
CHIP-8 emulator! I just developed an interest in emulator creation and,
after a little research, discovered that writing a CHIP-8 emulator
(/interpreter) is apparently a rite of passage. With the help of this
guide, I put together a working CHIP-8 emulator in Java that passes the
BonCoder test, and it only took around 8 hours. I'm planning to try to
make an NES emulator next. I expect that to be a big step up in
complexity!</p>
</div>
<div class="comment-footer" reaction-count="1" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="1" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="0" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1193015003/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/jasonnelson618" target="_blank" tabindex="-1">
<img alt="@jasonnelson618" src="utterances_data/116707867.png" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/jasonnelson618" target="_blank"><strong>jasonnelson618</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-1291568542" target="_blank">3 months ago</a>
</span>
<div class="comment-actions">
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<p dir="auto">Hello! Love the article and I've been working on
my own interpreter, however I noted you said for the IBM logo program
only the opcodes you mentioned were needed, but there are several
opcodes starting with "F" in the versions of the IBM logo I can find, so
I'm quite confused if more opcodes are needed or if I'm messing up
something. Any clarity would be appreciated! Thanks in advance.</p>
</div>
<div class="comment-footer" reaction-count="0" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="0" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="0" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291568542/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><article class="timeline-comment">
<a class="avatar" href="https://github.com/tobiasvl" target="_blank" tabindex="-1">
<img alt="@tobiasvl" src="utterances_data/80824.jpeg" width="44" height="44">
</a>
<div class="comment">
<header class="comment-header">
<span class="comment-meta">
<a class="text-link" href="https://github.com/tobiasvl" target="_blank"><strong>tobiasvl</strong></a>
commented
<a class="text-link" href="https://github.com/tobiasvl/tobiasvl.github.io/issues/16#issuecomment-1291863321" target="_blank">3 months ago</a>
</span>
<div class="comment-actions">
<span class="author-association-badge">Owner</span>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="right:6px">
<div class="Popover-message Popover-message--top-right box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</header>
<div class="markdown-body markdown-body-scrollable">
<blockquote>
<p dir="auto">Hello! Love the article and I've been working on my own
interpreter, however I noted you said for the IBM logo program only the
opcodes you mentioned were needed, but there are several opcodes
starting with "F" in the versions of the IBM logo I can find, so I'm
quite confused if more opcodes are needed or if I'm messing up
something. Any clarity would be appreciated! Thanks in advance.</p>
</blockquote>
<p dir="auto"><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonnelson618/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonnelson618" target="_top" rel="noopener noreferrer">@jasonnelson618</a>
Thanks for the kind words! There should be no FXXX opcodes in the IBM
program. How are you reaching those opcodes? My guess is that you're
reading the graphics data (for the IBM logo) as code somehow, ie. that
you have a bug that has caused your Program Counter to point into the
graphics, attempting to execute it.</p>
<p dir="auto">If you push your code to GitHub, I could have a look at it
and see if I spot the bug. Otherwise, good luck bug hunting! Might be a
good idea to write some debug stuff to the terminal, such as the
current PC and opcode at each step, so you see what's happening.</p>
</div>
<div class="comment-footer" reaction-count="0" reaction-url="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions">
<form class="reaction-list BtnGroup" action="javascript:">
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="+1" aria-label="Toggle Thumbs Up reaction" reaction-count="0" disabled="disabled">
👍
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="-1" aria-label="Toggle Thumbs Down reaction" reaction-count="0" disabled="disabled">
👎
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="laugh" aria-label="Toggle Laugh reaction" reaction-count="0" disabled="disabled">
😂
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="hooray" aria-label="Toggle Hooray reaction" reaction-count="0" disabled="disabled">
🎉
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="confused" aria-label="Toggle Confused reaction" reaction-count="0" disabled="disabled">
😕
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="heart" aria-label="Toggle Heart reaction" reaction-count="0" disabled="disabled">
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="rocket" aria-label="Toggle Rocket reaction" reaction-count="0" disabled="disabled">
🚀
</button>
<button reaction="" type="submit" action="javascript:" formaction="https://api.github.com/repos/tobiasvl/tobiasvl.github.io/issues/comments/1291863321/reactions" class="btn BtnGroup-item reaction-button" value="eyes" aria-label="Toggle Eyes reaction" reaction-count="0" disabled="disabled">
👀
</button>
</form>
<details class="details-overlay details-popover reactions-popover">
<summary aria-label="Reactions Menu"><svg class="octicon" style="margin-right:3px" viewBox="0 0 7 16" version="1.1" width="7" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 4H3v3H0v1h3v3h1V8h3V7H4V4z"></path></svg><svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm4.81 12.81a6.72 6.72 0 0 1-2.17 1.45c-.83.36-1.72.53-2.64.53-.92 0-1.81-.17-2.64-.53-.81-.34-1.55-.83-2.17-1.45a6.773 6.773 0 0 1-1.45-2.17A6.59 6.59 0 0 1 1.21 8c0-.92.17-1.81.53-2.64.34-.81.83-1.55 1.45-2.17.62-.62 1.36-1.11 2.17-1.45A6.59 6.59 0 0 1 8 1.21c.92 0 1.81.17 2.64.53.81.34 1.55.83 2.17 1.45.62.62 1.11 1.36 1.45 2.17.36.83.53 1.72.53 2.64 0 .92-.17 1.81-.53 2.64-.34.81-.83 1.55-1.45 2.17zM4 6.8v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2H5.2C4.53 8 4 7.47 4 6.8zm5 0v-.59c0-.66.53-1.19 1.2-1.19h.59c.66 0 1.19.53 1.19 1.19v.59c0 .67-.53 1.2-1.19 1.2h-.59C9.53 8 9 7.47 9 6.8zm4 3.2c-.72 1.88-2.91 3-5 3s-4.28-1.13-5-3c-.14-.39.23-1 .66-1h8.59c.41 0 .89.61.75 1z"></path></svg></summary>
<div class="Popover" style="left: 50%;transform: translateX(-50%)">
<div class="Popover-message box-shadow-large" style="padding: 16px">
<span><a href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">Sign in</a> to add your reaction.</span>
</div>
</div>
</details>
</div>
</div></article><!--marker--><article class="timeline-comment">
<a class="avatar" target="_blank" tabindex="-1">
<img alt="@anonymous" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIj48cGF0aCBmaWxsPSJyZ2IoMTc5LDE3OSwxNzkpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDEwLjVMOSAxNEg1bDEtMy41TDUuMjUgOWgzLjVMOCAxMC41ek0xMCA2SDRMMiA3aDEwbC0yLTF6TTkgMkw3IDMgNSAyIDQgNWg2TDkgMnptNC4wMyA3Ljc1TDEwIDlsMSAyLTIgM2gzLjIyYy40NSAwIC44Ni0uMzEuOTctLjc1bC41Ni0yLjI4Yy4xNC0uNTMtLjE5LTEuMDgtLjcyLTEuMjJ6TTQgOWwtMy4wMy43NWMtLjUzLjE0LS44Ni42OS0uNzIgMS4yMmwuNTYgMi4yOGMuMTEuNDQuNTIuNzUuOTcuNzVINWwtMi0zIDEtMnoiPjwvcGF0aD48L3N2Zz4=" width="44" height="44">
</a>
<form class="comment" accept-charset="UTF-8" action="javascript:">
<header class="new-comment-header tabnav">
<div class="tabnav-tabs" role="tablist">
<button type="button" class="tabnav-tab tab-write" role="tab" aria-selected="true">
Write
</button>
<button type="button" class="tabnav-tab tab-preview" role="tab">
Preview
</button>
</div>
</header>
<div class="comment-body">
<textarea class="form-control" placeholder="Sign in to comment" aria-label="comment" disabled="disabled"></textarea>
<div class="markdown-body" style="display: none">
Nothing to preview
</div>
</div>
<footer class="new-comment-footer">
<a class="text-link markdown-info" tabindex="-1" target="_blank" href="https://guides.github.com/features/mastering-markdown/">
<svg class="octicon v-align-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">
<path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15
13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4
8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z">
</path>
</svg>
Styling with Markdown is supported
</a>
<button class="btn btn-primary" type="submit" disabled="disabled" hidden="">Comment</button>
<a class="btn btn-primary" href="https://api.utteranc.es/authorize?redirect_uri=https%3A%2F%2Ftobiasvl.github.io%2Fblog%2Fwrite-a-chip-8-emulator%2F" target="_top">
<svg class="octicon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
Sign in with GitHub
</a>
</footer>
</form></article></main></body></html>