<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://f256wiki.wildbitscomputing.com/index.php?action=history&amp;feed=atom&amp;title=Use_the_SNES%2FNES_controller_in_Assembly</id>
	<title>Use the SNES/NES controller in Assembly - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://f256wiki.wildbitscomputing.com/index.php?action=history&amp;feed=atom&amp;title=Use_the_SNES%2FNES_controller_in_Assembly"/>
	<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;action=history"/>
	<updated>2026-06-01T10:21:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=38005&amp;oldid=prev</id>
		<title>1BitFeverDreams: Finally past the initial draft</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=38005&amp;oldid=prev"/>
		<updated>2025-03-12T13:20:59Z</updated>

		<summary type="html">&lt;p&gt;Finally past the initial draft&lt;/p&gt;
&lt;a href=&quot;https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;amp;diff=38005&amp;amp;oldid=240&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>1BitFeverDreams</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=240&amp;oldid=prev</id>
		<title>Grenouye: Added description</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=240&amp;oldid=prev"/>
		<updated>2024-01-31T22:26:41Z</updated>

		<summary type="html">&lt;p&gt;Added description&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:26, 31 January 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;; Code contributed by Stefany Allaire on Discord&#039;&#039;&#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== &lt;/ins&gt;&#039;&#039;&#039;; Code contributed by Stefany Allaire on Discord&#039;&#039;&#039; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== ; This is test code that goes through all the ports and mux the NES and SNES... ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;NES_CTRL = $D880&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;NES_CTRL = $D880&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key f256wikiDB:diff:1.41:old-239:rev-240:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
	<entry>
		<id>https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=239&amp;oldid=prev</id>
		<title>Grenouye: Copied the code from Discord</title>
		<link rel="alternate" type="text/html" href="https://f256wiki.wildbitscomputing.com/index.php?title=Use_the_SNES/NES_controller_in_Assembly&amp;diff=239&amp;oldid=prev"/>
		<updated>2024-01-31T22:24:36Z</updated>

		<summary type="html">&lt;p&gt;Copied the code from Discord&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;; Code contributed by Stefany Allaire on Discord&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
NES_CTRL = $D880&lt;br /&gt;
&lt;br /&gt;
NES_STAT = $D880 &lt;br /&gt;
&lt;br /&gt;
NES_EN   = $01&lt;br /&gt;
&lt;br /&gt;
NES_MODE = $04&lt;br /&gt;
&lt;br /&gt;
NES_TRIG = $80&lt;br /&gt;
&lt;br /&gt;
NES_DONE = $40&lt;br /&gt;
&lt;br /&gt;
NES_JOY0 = $D884 &lt;br /&gt;
&lt;br /&gt;
NES_JOY1 = $D886&lt;br /&gt;
&lt;br /&gt;
NES_JOY2 = $D888&lt;br /&gt;
&lt;br /&gt;
NES_JOY3 = $D88A&lt;br /&gt;
&lt;br /&gt;
SNES_JOY0_LO = $D884&lt;br /&gt;
&lt;br /&gt;
SNES_JOY0_HI = $D885&lt;br /&gt;
&lt;br /&gt;
SNES_JOY1_LO = $D886&lt;br /&gt;
&lt;br /&gt;
SNES_JOY1_HI = $D887&lt;br /&gt;
&lt;br /&gt;
SNES_JOY2_LO = $D888&lt;br /&gt;
&lt;br /&gt;
SNES_JOY2_HI = $D889&lt;br /&gt;
&lt;br /&gt;
SNES_JOY3_LO = $D88A&lt;br /&gt;
&lt;br /&gt;
SNES_JOY3_HI = $D88B&lt;br /&gt;
&lt;br /&gt;
Test_4N4S: &lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage0&lt;br /&gt;
&lt;br /&gt;
                &amp;#039;&amp;#039;&amp;#039;; Test NES First&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
                &amp;#039;&amp;#039;&amp;#039;; Enable and Begin a Sample&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
NES_Start_Again:                 &lt;br /&gt;
&lt;br /&gt;
                lda #NES_EN &lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                lda NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                ora #NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                and #~NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL                &lt;br /&gt;
&lt;br /&gt;
NESWait2beDone                &lt;br /&gt;
&lt;br /&gt;
                lda NES_STAT&lt;br /&gt;
&lt;br /&gt;
                and #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                cmp #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                bne NESWait2beDone&lt;br /&gt;
&lt;br /&gt;
                &amp;#039;&amp;#039;&amp;#039;; When here, the Joystick Sampling is done&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY0&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$00&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY1&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$03&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY2&lt;br /&gt;
&lt;br /&gt;
                eor #$FF           &lt;br /&gt;
&lt;br /&gt;
                ldx #$06&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY3  &lt;br /&gt;
&lt;br /&gt;
                eor #$FF                            &lt;br /&gt;
&lt;br /&gt;
                ldx #$09&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda NES_JOY3&lt;br /&gt;
&lt;br /&gt;
                eor #$FF                &lt;br /&gt;
&lt;br /&gt;
                and #$C0&lt;br /&gt;
&lt;br /&gt;
                cmp #$C0&lt;br /&gt;
&lt;br /&gt;
                beq NESDoneWithTest&lt;br /&gt;
&lt;br /&gt;
                &amp;#039;&amp;#039;&amp;#039;; Let&amp;#039;s do the SNES&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                lda #NES_EN | NES_MODE&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                lda NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                ora #NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                and #~NES_TRIG&lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL                &lt;br /&gt;
&lt;br /&gt;
SNESWait2beDone                &lt;br /&gt;
&lt;br /&gt;
                lda NES_STAT&lt;br /&gt;
&lt;br /&gt;
                and #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                cmp #NES_DONE&lt;br /&gt;
&lt;br /&gt;
                bne SNESWait2beDone&lt;br /&gt;
&lt;br /&gt;
                &amp;#039;&amp;#039;&amp;#039;; When here, the Joystick Sampling is done&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY0_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$50&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY0_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$52&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY1_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$55&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY1_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$57&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY2_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$5A&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY2_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$5C&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY3_HI&lt;br /&gt;
&lt;br /&gt;
                and #$0F&lt;br /&gt;
&lt;br /&gt;
                eor #$0F&lt;br /&gt;
&lt;br /&gt;
                ldx #$5F&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                lda SNES_JOY3_LO&lt;br /&gt;
&lt;br /&gt;
                eor #$FF&lt;br /&gt;
&lt;br /&gt;
                ldx #$61&lt;br /&gt;
&lt;br /&gt;
                jsr Byte2Hex&lt;br /&gt;
&lt;br /&gt;
                jmp NES_Start_Again&lt;br /&gt;
&lt;br /&gt;
NESDoneWithTest:&lt;br /&gt;
&lt;br /&gt;
                lda #$00 &lt;br /&gt;
&lt;br /&gt;
                sta NES_CTRL&lt;br /&gt;
&lt;br /&gt;
                rts &lt;br /&gt;
&lt;br /&gt;
Byte2Hex: &lt;br /&gt;
&lt;br /&gt;
                sta $50&lt;br /&gt;
&lt;br /&gt;
                stx $51&lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage2&lt;br /&gt;
&lt;br /&gt;
                &amp;#039;&amp;#039;&amp;#039;; Hi Part&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                lda $50                              &lt;br /&gt;
&lt;br /&gt;
                and #$F0 &lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                lsr a&lt;br /&gt;
&lt;br /&gt;
                tax &lt;br /&gt;
&lt;br /&gt;
                lda HEX, x  ;&lt;br /&gt;
&lt;br /&gt;
                ldx $51&lt;br /&gt;
&lt;br /&gt;
                sta $c320,x&lt;br /&gt;
&lt;br /&gt;
                &amp;#039;&amp;#039;&amp;#039;; Low Part&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
                lda $50                  &lt;br /&gt;
&lt;br /&gt;
                and #$0F &lt;br /&gt;
&lt;br /&gt;
                tax &lt;br /&gt;
&lt;br /&gt;
                lda HEX, x&lt;br /&gt;
&lt;br /&gt;
                ldx $51&lt;br /&gt;
&lt;br /&gt;
                sta $c321,x&lt;br /&gt;
&lt;br /&gt;
                jsr SetIOPage0 &lt;br /&gt;
&lt;br /&gt;
                rts&lt;/div&gt;</summary>
		<author><name>Grenouye</name></author>
	</entry>
</feed>