先说一下SRAM这个概念,它应该是Static(静态)RAM的意思,通常是相对于DRAM(D是Dynamic的首字母,意为“动态”)来说的;这个词出现于VirtuaNES模拟器当中,对应的内存地址为$6000~7FFF,而一些其他模拟器(例如Mesen)当中,这个区域则被称为“工作RAM”,因此SRAM和工作RAM其实是一回事。
然后,在原版(NES版)SMB1当中,SRAM是未使用的内存,而移植到FDS之后,SRAM的区域就是正常用到的内存了,这是为了给那2KB的磁碟机操作系统(Disksys.rom)腾地方的,而且这个场合下,这个区域的内存就不应该称为SRAM了,实际上,对于FDS,$6000~DFFF这个范围全部都是RAM

(根据实际储存的内容,可以称为PRG RAM。)再然后,由于SMB2J只有FDS版本,因此有人设法把2J移植到了卡带上,但是移植之后的运行特性仍然与FDS的原版相同,保留了Disksys.rom的内容(嵌入到移植之后的ROM当中了),并且一部分程序放入了SRAM的区域,还有一部分会改写内容的程序区域(原版2J当中是$C000~DFFF里面的部分区域),则将这些不同的内容分成几个bank,通过切bank的方式实现改变内容。所以,SMB2J的卡带移植版比原版体积还要大(原版整张单面磁碟约为64KB,而最小的NES移植版也有72KB)。
再就是你说的这个改版了,我本来以为它应该也是用了类似的方式进行的修改(直接以某个NES移植版的2J为模板),但是看了你发的两张代码图(除去全是EA那个),发现应该是这样改的:把1代原版扩容之后,在新增的bank中添加了2J元素的程序(图中有一些FF,这应该就是把添加的程序按16字节对齐排列之后的结果),这些程序在运行时写入到了SRAM的区域。为什么这么说呢?比对你的第二张代码图(还是不算全是EA那个),跟SMB1原版相同地址的程序完全一致

最后再说说其他游戏对SRAM的使用情况……好吧,我也不是很清楚,只能说SRAM就是在原有的RAM基础上扩充的一块内存。(嗯,比原有的RAM大,一样可以当RAM用,不过还不够大——MMC5还提供了一块更大的扩展内存。)至于我知道的用到SRAM的游戏(其实也仅限于SMB的范畴了),除去FDS版本的游戏不算,VS版SMB1用SRAM储存关卡中用于生成地形和敌人的数据,以及其他大量我不知道是干啥的数据(

);SMB3用SRAM储存屏幕上的地形相关数据;其他我就不知道了。
最后的最后,关于汇编指令的问题。
BRK在不同的游戏中处理方式是不同的(正常情况下,是用于开发过程的调试指令),对于NES版SMB1是会导致崩溃的指令,对于FDS游戏则有内置的“处理并返回”措施,而对于用到IRQ的游戏,由于IRQ与BRK指令共享IRQ向量,因此通常来说BRK之后可以正常返回。不过注意BRK返回的位置,是BRK之后的第二个字节(相当于屏蔽了BRK之后的一个字节),因此在写指令时,可以写成BRK #$xx,把屏蔽的这个字节表示出来。
至于74这个指令码,它是一个未定义指令码,不同模拟器的调试器中对未定义指令码的表示方法也不同。VirtuaNES中,用DOP表示指令码74以及其他若干(但不是全部)2字节的未定义指令码,此外还有NOP表示1字节未定义指令码(与正常NOP重名警告),TOP表示3字节未定义指令码,还有一堆奇怪的名字(SLO、RLA、DCP、ISB等);Mesen也有类似的命名规则,而且会把指令码后面的操作数也一并写到指令名后面(VirtuaNES则没有);FCEUX则偷懒把未定义指令全部命名为UNDEFINED,而且全部假定为1字节指令。不过用NOP表示74……这似乎有点不太合理了。