<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sneslab.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Randomdude999</id>
	<title>SnesLab - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sneslab.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Randomdude999"/>
	<link rel="alternate" type="text/html" href="https://sneslab.net/wiki/Special:Contributions/Randomdude999"/>
	<updated>2026-06-19T05:10:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://sneslab.net/mw/index.php?title=Bithacks&amp;diff=1801</id>
		<title>Bithacks</title>
		<link rel="alternate" type="text/html" href="https://sneslab.net/mw/index.php?title=Bithacks&amp;diff=1801"/>
		<updated>2021-04-06T08:11:47Z</updated>

		<summary type="html">&lt;p&gt;Randomdude999: fix macro arg syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bithacks are optimization tricks that utilize information in bits and [https://en.wikipedia.org/wiki/Bit_manipulation bit manipulation]&lt;br /&gt;
to accomplish their tasks. Usually they work in a slightly non-obvious way, (the most famous being the [https://en.wikipedia.org/wiki/Fast_inverse_square_root fast inverse sqrt]), and bit manipulation in general is harder on the 65c816. To that end here is a collection of some useful tricks.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note: cycle counts are intended to be a worst case measure.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Math Bithacks ==&lt;br /&gt;
&#039;&#039;&#039;Signed Division By 2&#039;&#039;&#039; &#039;&#039;(5 bytes / 10 cycles)&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;inputs:&amp;lt;/u&amp;gt; A&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;outputs:&amp;lt;/u&amp;gt; A&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
STA $00&lt;br /&gt;
ASL $00&lt;br /&gt;
ROR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Signed Division By 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;&#039;&#039;&#039; &#039;&#039;(6+2n bytes / 5+2n cycles)&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;inputs:&amp;lt;/u&amp;gt; A, n&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;outputs:&amp;lt;/u&amp;gt; A&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; signed division by two, n times&lt;br /&gt;
macro SignedDiv_2N(n)&lt;br /&gt;
	BMI ?negative&lt;br /&gt;
	LSR #&amp;lt;n&amp;gt;&lt;br /&gt;
	BRA ?end&lt;br /&gt;
?negative:&lt;br /&gt;
	LSR #&amp;lt;n&amp;gt;&lt;br /&gt;
	ORA #($FF&amp;lt;&amp;lt;(8-&amp;lt;n&amp;gt;))	; sign extension&lt;br /&gt;
?end:&lt;br /&gt;
endmacro&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Misc. Tricks ==&lt;br /&gt;
&amp;lt;small&amp;gt;As this list grows tricks here will be consolidated into their own sections. Clever optimization tricks that aren&#039;t necessarily what someone might personally call a &amp;quot;bithack&amp;quot; are okay here as well!&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Randomdude999</name></author>
	</entry>
	<entry>
		<id>https://sneslab.net/mw/index.php?title=Useful_Code_Snippets&amp;diff=543</id>
		<title>Useful Code Snippets</title>
		<link rel="alternate" type="text/html" href="https://sneslab.net/mw/index.php?title=Useful_Code_Snippets&amp;diff=543"/>
		<updated>2019-08-09T02:01:47Z</updated>

		<summary type="html">&lt;p&gt;Randomdude999: make the long branch macros use macro-local labels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Useful code snippets for the 65c816 ASM and general SNES hardware.&lt;br /&gt;
&lt;br /&gt;
== 65c816 S-CPU ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
==== Wait for H-Blank ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&lt;br /&gt;
BIT $4212&lt;br /&gt;
BVS -&lt;br /&gt;
-&lt;br /&gt;
BIT $4212&lt;br /&gt;
BVC -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inverse the accumulator (8-bit) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EOR #$FF&lt;br /&gt;
INC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Inverse the accumulator (16-bit) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EOR #$FFFF&lt;br /&gt;
INC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Toggle Carry Flag Macro ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
macro XOC()&lt;br /&gt;
	BCC ?set&lt;br /&gt;
	CLC&lt;br /&gt;
	BRA ?done&lt;br /&gt;
?set:	SEC&lt;br /&gt;
?done:&lt;br /&gt;
endmacro&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Long Branch Macros ====&lt;br /&gt;
Useful if your want to branch more than 0x80 bytes forward/backwards.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
macro JEQ(branch)&lt;br /&gt;
	BNE ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&lt;br /&gt;
macro JNE(branch)&lt;br /&gt;
	BEQ ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&lt;br /&gt;
macro JCC(branch)&lt;br /&gt;
	BCS ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&lt;br /&gt;
macro JCS(branch)&lt;br /&gt;
	BCC ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&lt;br /&gt;
macro JPL(branch)&lt;br /&gt;
	BMI ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&lt;br /&gt;
macro JMI(branch)&lt;br /&gt;
	BPL ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&lt;br /&gt;
macro JVC(branch)&lt;br /&gt;
	BVS ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&lt;br /&gt;
macro JVS(branch)&lt;br /&gt;
	BVC ?branch&lt;br /&gt;
	JMP &amp;lt;branch&amp;gt;&lt;br /&gt;
?branch:&lt;br /&gt;
endmacro&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SMW Hacking ===&lt;br /&gt;
&lt;br /&gt;
==== Custom block template ====&lt;br /&gt;
by [[User:Alcaro|Alcaro]]&lt;br /&gt;
Works with SA-1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
db $42 ; or db $37&lt;br /&gt;
JMP MarioBelow : JMP MarioAbove : JMP MarioSide&lt;br /&gt;
JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireball&lt;br /&gt;
JMP TopCorner : JMP BodyInside : JMP HeadInside&lt;br /&gt;
; JMP WallFeet : JMP WallBody ; if using db $37&lt;br /&gt;
&lt;br /&gt;
MarioBelow:&lt;br /&gt;
MarioAbove:&lt;br /&gt;
MarioSide:&lt;br /&gt;
&lt;br /&gt;
TopCorner:&lt;br /&gt;
BodyInside:&lt;br /&gt;
HeadInside:&lt;br /&gt;
&lt;br /&gt;
WallFeet:&lt;br /&gt;
WallBody:&lt;br /&gt;
&lt;br /&gt;
SpriteV:&lt;br /&gt;
SpriteH:&lt;br /&gt;
&lt;br /&gt;
MarioCape:&lt;br /&gt;
MarioFireball:&lt;br /&gt;
RTL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Decompress GFX File ====&lt;br /&gt;
by [[User:Vitor Vilela|Vitor Vilela]]&lt;br /&gt;
Works with SA-1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Decompress input GFX file&lt;br /&gt;
; Must be called from SNES CPU.&lt;br /&gt;
; SA-1 is automatically invoked on SA-1 Pack ROMs.&lt;br /&gt;
&lt;br /&gt;
STZ $00&lt;br /&gt;
REP #$20&lt;br /&gt;
LDA #$7EAD	; destination buffer = $7EAD00&lt;br /&gt;
STA $01&lt;br /&gt;
LDA #$0080	; deoompress ExGFX80.bin ..&lt;br /&gt;
JSL $0FF900&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Get acts like from map16 number ====&lt;br /&gt;
by [[User:Vitor Vilela|Vitor Vilela]]&lt;br /&gt;
Works with SA-1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; $00 = map16 tile&lt;br /&gt;
get_act_like:&lt;br /&gt;
	LDA $06F624&lt;br /&gt;
	STA $02&lt;br /&gt;
	LDA $06F625&lt;br /&gt;
	STA $03&lt;br /&gt;
	LDA $06F626&lt;br /&gt;
	STA $04&lt;br /&gt;
	&lt;br /&gt;
	REP #$30&lt;br /&gt;
	LDA $00&lt;br /&gt;
	AND #$3FFF&lt;br /&gt;
	ASL&lt;br /&gt;
	TAY&lt;br /&gt;
	LDA [$02],y&lt;br /&gt;
	STA $00&lt;br /&gt;
	SEP #$30&lt;br /&gt;
	RTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Find free OAM slot ====&lt;br /&gt;
by [[User:Vitor Vilela|Vitor Vilela]]&lt;br /&gt;
SA-1 hybrid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Routine for finding a free OAM slot&lt;br /&gt;
; NMSTL compatible. Tested against Level ASM, Overworld ASM.&lt;br /&gt;
&lt;br /&gt;
find_oam:&lt;br /&gt;
	LDY #$FC&lt;br /&gt;
-	LDA $02FD|!addr,y&lt;br /&gt;
	CMP #$F0&lt;br /&gt;
	BNE +&lt;br /&gt;
	CPY #$3C&lt;br /&gt;
	BEQ +&lt;br /&gt;
	DEY&lt;br /&gt;
	DEY&lt;br /&gt;
	DEY&lt;br /&gt;
	DEY&lt;br /&gt;
	BRA -&lt;br /&gt;
+	RTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Erase current save file ====&lt;br /&gt;
by [[User:Sixtare|Sixtare]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Erase:&lt;br /&gt;
REP #$10&lt;br /&gt;
	LDA $010A&lt;br /&gt;
	CMP #$01&lt;br /&gt;
	BEQ .01&lt;br /&gt;
	BCS .02&lt;br /&gt;
.00&lt;br /&gt;
LDX #$008F&lt;br /&gt;
JMP .delete&lt;br /&gt;
&lt;br /&gt;
.01&lt;br /&gt;
LDX #$011E&lt;br /&gt;
JMP .delete&lt;br /&gt;
&lt;br /&gt;
.02&lt;br /&gt;
LDX #$01AD&lt;br /&gt;
	.delete&lt;br /&gt;
	LDY #$008F&lt;br /&gt;
	LDA #$00&lt;br /&gt;
-	STA $700000,x&lt;br /&gt;
	STA $7001AD,x&lt;br /&gt;
	DEX&lt;br /&gt;
	DEY&lt;br /&gt;
	BPL -&lt;br /&gt;
	SEP #$10&lt;br /&gt;
RTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 65c816 SA-1 CPU ==&lt;br /&gt;
Some snippets present on [[#65c816_S-CPU|S-CPU]] section works with SA-1 CPU as well.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
==== Unsigned 16 bit x 16 bit = 32 bit multiplication ====&lt;br /&gt;
by [[User:Akaginite|Akaginite]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
; 16bit * 16bit Multiplication SA-1 version&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
; Parameters&lt;br /&gt;
; $00-$01 : Multiplicand&lt;br /&gt;
; $02-$03 : Multiplier&lt;br /&gt;
; Return values&lt;br /&gt;
; $04-$07 : Product&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
MathMul16_16:	STZ $2250&lt;br /&gt;
		REP #$20&lt;br /&gt;
		LDA $00&lt;br /&gt;
		STA $2251&lt;br /&gt;
		ASL A&lt;br /&gt;
		LDA $02&lt;br /&gt;
		STA $2253&lt;br /&gt;
		BCS +&lt;br /&gt;
		LDA.w #$0000&lt;br /&gt;
+		BIT $02&lt;br /&gt;
		BPL +&lt;br /&gt;
		CLC&lt;br /&gt;
		ADC $00&lt;br /&gt;
+		CLC&lt;br /&gt;
		ADC $2308&lt;br /&gt;
		STA $06&lt;br /&gt;
		LDA $2306&lt;br /&gt;
		STA $04&lt;br /&gt;
		SEP #$20&lt;br /&gt;
		RTS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Randomdude999</name></author>
	</entry>
	<entry>
		<id>https://sneslab.net/mw/index.php?title=SNES_ROM_Header&amp;diff=536</id>
		<title>SNES ROM Header</title>
		<link rel="alternate" type="text/html" href="https://sneslab.net/mw/index.php?title=SNES_ROM_Header&amp;diff=536"/>
		<updated>2019-08-07T10:06:35Z</updated>

		<summary type="html">&lt;p&gt;Randomdude999: Checksum calculation info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All [[SNES]] gamepaks have an internal header that is used to identifying the game, producer, region and technical aspects of the ROM. It&#039;s often referred as &#039;&#039;&#039;Internal ROM Header&#039;&#039;&#039; or &#039;&#039;&#039;SNES Software Specification&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Although it&#039;s not required to run a game on real hardware, the SNES ROM Header was used during the Nintendo approval process for validation and it&#039;s also used by the SNES emulators to identify and determine the memory layout and ROM type.&lt;br /&gt;
&lt;br /&gt;
The data starts at SNES address $00:FFB0 and ends at $00:FFDF. $00:FFE0 though $00:FFFF contains the SNES vector information and &#039;&#039;&#039;it&#039;s actually used&#039;&#039;&#039; by the SNES CPU to determine where to execute when an interrupt occurs.&lt;br /&gt;
&lt;br /&gt;
== ROM Registration Data ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Address !! Length !! Data Name Type&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFB0 || 2 bytes || Maker Code&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFB2 || 4 bytes || Game Code&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFB6 || 7 bytes || Fixed Value&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFBD || 1 byte || Expansion RAM Size&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFBE || 1 byte || Special Version&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFBF || 1 byte || Cartridge Type (Sub-number)&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFC0 || 21 bytes || Game Title Registration&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFD5 || 1 byte || Map Mode&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFD6 || 1 byte || Cartridge Type&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFD7 || 1 byte || ROM Size&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFD8 || 1 byte || RAM Size&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFD9 || 1 byte || Destination Code&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFDA || 1 byte || Fixed Value&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFDB || 1 byte || Mask ROM Version&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFDC || 2 bytes || Complement Check&lt;br /&gt;
|-&lt;br /&gt;
| $00:FFDE || 2 bytes || Check Sum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Data Name Types ==&lt;br /&gt;
&lt;br /&gt;
=== Maker Code ===&lt;br /&gt;
=== Game Code ===&lt;br /&gt;
=== Fixed Value ===&lt;br /&gt;
=== Expansion RAM Size ===&lt;br /&gt;
=== Special Version ===&lt;br /&gt;
=== Game Title Specification ===&lt;br /&gt;
=== Cartridge Configuration ===&lt;br /&gt;
==== Map Mode ====&lt;br /&gt;
==== Cartridge Type ====&lt;br /&gt;
===== Sub-Number =====&lt;br /&gt;
==== ROM Size ====&lt;br /&gt;
==== RAM Size ====&lt;br /&gt;
&lt;br /&gt;
=== Destination Code ===&lt;br /&gt;
=== Mask ROM Version ===&lt;br /&gt;
=== ROM Verification ===&lt;br /&gt;
==== Complement Check ====&lt;br /&gt;
This is the 16-bit complement (bit-inverse) of the checksum. This is used so that the checksum value cancels itself out when calculating the real checksum.&lt;br /&gt;
==== Check Sum ====&lt;br /&gt;
This is simply the 16-bit sum of all bytes in the ROM. For power-of-2-sized ROMs, no mirroring is used, each byte of ROM is counted exactly once.&lt;br /&gt;
&lt;br /&gt;
For non-power-of-2-sized ROMs (e.g. 2.5MB or 6MB), first the checksum for the largest power-of-2 area smaller than the ROM size (so 4MB for 6MB ROMs, 2MB for 2.5MB ROMs) is computed normally. Then the remaining part is repeated until it&#039;s the same size as the first part (so the last 2MB of a 6MB ROM is repeated once so both halves are 4MB, and the last 512KB of a 2.5MB ROM is repeated 4 times so both halves are 2MB). Then its checksum is computed and the checksums of the 2 halves are added to get the final checksum.&lt;/div&gt;</summary>
		<author><name>Randomdude999</name></author>
	</entry>
	<entry>
		<id>https://sneslab.net/mw/index.php?title=List_of_SNES_ROM_hacking_tools&amp;diff=444</id>
		<title>List of SNES ROM hacking tools</title>
		<link rel="alternate" type="text/html" href="https://sneslab.net/mw/index.php?title=List_of_SNES_ROM_hacking_tools&amp;diff=444"/>
		<updated>2019-07-12T10:55:48Z</updated>

		<summary type="html">&lt;p&gt;Randomdude999: add a few more general tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
=== ASM patchers ===&lt;br /&gt;
* [https://github.com/RPGHacker/asar Asar]&lt;br /&gt;
* [https://byuu.org/tool/bass bass]&lt;br /&gt;
* [https://www.smwcentral.net/?p=section&amp;amp;a=details&amp;amp;id=4615 xkas] (old and slightly buggy, but used to be very popular)&lt;br /&gt;
&lt;br /&gt;
=== Binary patchers ===&lt;br /&gt;
* [https://github.com/Alcaro/Flips FLIPS] (.bps, .ips)&lt;br /&gt;
* [http://fusoya.eludevisibility.org/lips/index.html Lunar IPS] (.ips)&lt;br /&gt;
&lt;br /&gt;
=== Emulators ===&lt;br /&gt;
* [https://byuu.org/emulation/bsnes/ bsnes]&lt;br /&gt;
* [https://github.com/snes9xgit/snes9x Snes9x]&lt;br /&gt;
* [http://zsnes.com/ ZSNES] (inaccurate, but fast and used to be very popular)&lt;br /&gt;
&lt;br /&gt;
=== Emulators/Debuggers ===&lt;br /&gt;
* [https://github.com/devinacker/bsnes-plus bsnes-plus]&lt;br /&gt;
* [https://github.com/SourMesen/Mesen-S Mesen-S] (WIP, doesn&#039;t emulate enhancement chips yet)&lt;br /&gt;
&lt;br /&gt;
== SMW Hacking ==&lt;br /&gt;
=== Editors ===&lt;br /&gt;
* [https://fusoya.eludevisibility.org/lm/index.html Lunar Magic]&lt;br /&gt;
&lt;br /&gt;
=== Inserters ===&lt;br /&gt;
* [https://github.com/VitorVilela7/UberASMTool UberASM Tool]&lt;br /&gt;
* [https://github.com/JackTheSpades/SpriteToolSuperDelux PIXI]&lt;br /&gt;
* [https://smwc.me/1491239 GIEPY]&lt;br /&gt;
* [https://www.smwcentral.net/?p=section&amp;amp;a=details&amp;amp;id=17546 AddmusicK]&lt;br /&gt;
&lt;br /&gt;
=== Converters ===&lt;br /&gt;
* [https://github.com/VitorVilela7/SPCtoMML SPCtoMML]&lt;br /&gt;
* [https://github.com/VitorVilela7/SnesGFX SnesGFX]&lt;br /&gt;
&lt;br /&gt;
== YI Hacking ==&lt;br /&gt;
=== Editors ===&lt;br /&gt;
* [https://www.smwcentral.net/?p=section&amp;amp;a=details&amp;amp;id=4645 Golden Egg]&lt;br /&gt;
&lt;br /&gt;
=== Inserters ===&lt;br /&gt;
* [https://dl.dropbox.com/s/oqsnu42mg76runs/AddMusicY%20Beta.zip AddmusicY]&lt;/div&gt;</summary>
		<author><name>Randomdude999</name></author>
	</entry>
	<entry>
		<id>https://sneslab.net/mw/index.php?title=Template:Subpages&amp;diff=383</id>
		<title>Template:Subpages</title>
		<link rel="alternate" type="text/html" href="https://sneslab.net/mw/index.php?title=Template:Subpages&amp;diff=383"/>
		<updated>2019-05-24T14:37:38Z</updated>

		<summary type="html">&lt;p&gt;Randomdude999: Lists all subpages of the current page, or optionally any specified page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Special:PrefixIndex|prefix={{PAGENAME:{{{1|{{FULLPAGENAME}}}}}}}/|namespace={{NAMESPACENUMBER:{{{1|{{FULLPAGENAME}}}}}}}|stripprefix=1}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Lists all subpages of the current page, or optionally any specified page.&lt;br /&gt;
&lt;br /&gt;
To list subpages of the current page, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Subpages}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. To list subpages of a specific page, use &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Subpages|pagename}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;pagename&amp;lt;/code&amp;gt; may be in any namespace.&lt;/div&gt;</summary>
		<author><name>Randomdude999</name></author>
	</entry>
	<entry>
		<id>https://sneslab.net/mw/index.php?title=User:Randomdude999&amp;diff=142</id>
		<title>User:Randomdude999</title>
		<link rel="alternate" type="text/html" href="https://sneslab.net/mw/index.php?title=User:Randomdude999&amp;diff=142"/>
		<updated>2019-05-14T13:31:10Z</updated>

		<summary type="html">&lt;p&gt;Randomdude999: Initial commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- i like it lowercase --&amp;gt;{{DISPLAYTITLE:User: randomdude999}}&lt;br /&gt;
From Estonia.&lt;br /&gt;
&lt;br /&gt;
I like programming sometimes. Competent in Python, C, C++, HTML/CSS, JS, Lua, 65c816 assembly (+SNES register set), PHP, Bash, and (a long time ago) wiki markup and Java.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/randomdude999 GitHub profile], [https://www.smwcentral.net/?p=profile&amp;amp;id=32552 SMWC profile]&lt;/div&gt;</summary>
		<author><name>Randomdude999</name></author>
	</entry>
</feed>