EMU618社区

 找回密码
 立即注册
搜索
查看: 2140|回复: 50

[FC/FDS] [FC][精简合卡][魂斗罗3合1]

  [复制链接]

签到天数: 39 天

[LV.5]常住居民I

发表于 2020-2-23 22:22:17 | 显示全部楼层 |阅读模式

游客,如果您要查看本帖隐藏内容请回复


  1. ;[FC][精简合卡菜单]
  2. ;FlameCyclone
  3. ;2020.02.23
  4. ;==================================================
  5. RESET_PORT = $E000
  6. MENU_INDEX = 01
  7. MENU_RESET = $F80D
  8. ;==================================================
  9. Char_Arrow = $1F
  10. ARROW_X_OFFSET = $35 ;箭头横坐标
  11. ARROW_Y_OFFSET = $47 ;箭头纵坐标
  12. ITEM_COUNT = 03 ;节目总数
  13. ;==================================================
  14. BTN_DELAY = 30 ;按键重复触发时长
  15. BTN_SPEED = 10 ;按键重复触发速度
  16. ;==================================================
  17. Data_L = $00
  18. Data_H = Data_L + $01
  19. Data_Count = Data_H + $01
  20. ;==================================================
  21. Sel_Index = Data_Count + $01
  22. ;==================================================
  23. Button_Keep = Sel_Index + $01
  24. Button_Once = Button_Keep+$01
  25. Button_Temp = Button_Once+$01
  26. Button_Buf = Button_Temp+$01
  27. Button_Status = Button_Buf+$01
  28. ;==================================================
  29. Second_Time = Button_Status + $01
  30. Btn_Delay = Second_Time + $01

  31. ;==================================================
  32. .ORG RESET_PORT
  33. ;==================================================
  34. ProgramBegin:
  35. SEI
  36. CLD
  37. LDA #$00
  38. STA $2000
  39. STA $2001
  40. LDA #$C0
  41. STA $4017
  42. LDX #$FF
  43. TXS

  44. ;=================================================
  45. ;选择菜单rom
  46. LDX #MENU_INDEX
  47. LDA Rom_Select_Data,X
  48. AND #$7F
  49. STA $6000

  50. JSR PaletteClear
  51. JSR TimeWait

  52. ;==================================================
  53. RamClear:;RAM清空
  54. LDA #$00
  55. STA $00
  56. STA $01
  57. LDX #$08
  58. LDY #$00
  59. RamClearWrite:
  60. STA ($00),Y
  61. INY
  62. BNE RamClearWrite
  63. INC $01
  64. DEX
  65. BNE RamClearWrite

  66. JSR ChrSteup
  67. JSR SpriteClear
  68. JSR VramClear
  69. JSR TextWrite
  70. JSR TimeWait
  71. JSR PaletteSet
  72. JSR ResetScroll

  73. LDA #$10
  74. STA Button_Buf
  75. LDA #$1E
  76. STA $2001
  77. ;==================================================
  78. ;循环等待
  79. WaitLoop:
  80. JSR NmiDelay
  81. JSR SelectChange
  82. JMP WaitLoop
  83. RTS

  84. ;==================================================
  85. ;NMI延时
  86. NmiDelay:
  87. JSR TimeWait
  88. JSR SpriteSet
  89. LDA #$02
  90. STA $4014
  91. JSR Button_Process
  92. JSR ResetScroll
  93. RTS

  94. ;==================================================
  95. ;延时等待
  96. TimeWait:
  97. LDA $2002
  98. BPL TimeWait
  99. RTS

  100. ;==================================================
  101. ;重设滚动
  102. ResetScroll:
  103. LDA #$00
  104. LDA #$00
  105. STA $2006
  106. STA $2005
  107. STA $2005
  108. RTS

  109. ;==================================================
  110. ;按键处理
  111. Button_Process:
  112. JSR Button_Scan
  113. LDA Button_Keep
  114. STA Button_Temp
  115. JSR Button_Scan
  116. LDA Button_Keep
  117. CMP Button_Temp
  118. BEQ Button_Get_Once
  119. LDA Button_Buf
  120. STA Button_Keep
  121. Button_Get_Once:
  122. TAY
  123. EOR Button_Buf
  124. AND Button_Keep
  125. STA Button_Once
  126. STY Button_Buf
  127. JSR ButtonDelay
  128. RTS
  129. ;==================================================
  130. ;按键扫描
  131. Button_Scan:
  132. LDX #$01
  133. STX $4016
  134. DEX
  135. STX $4016
  136. LDY #$08
  137. Button_Value:
  138. LDA $4016
  139. STA Button_Status
  140. LSR
  141. ORA Button_Status
  142. LSR
  143. ROL Button_Keep
  144. DEY
  145. BNE Button_Value
  146. RTS

  147. ;==================================================
  148. ;按键延时重复
  149. ButtonDelay:
  150. LDA Button_Keep
  151. AND #$EF
  152. BNE ButtonDelaySet
  153. LDA #$00
  154. STA Btn_Delay
  155. ButtonDelaySet:
  156. INC Btn_Delay
  157. LDA Btn_Delay
  158. CMP #BTN_DELAY + BTN_SPEED
  159. BCC ButtonDelayEnd
  160. LDA #BTN_DELAY
  161. STA Btn_Delay
  162. LDA Button_Keep
  163. STA Button_Once
  164. ButtonDelayEnd:
  165. RTS

  166. ;========================================
  167. ChrSteup:                     ;图形块设置
  168. LDX #$00
  169. ChrSteupSet:
  170. STX $8000
  171. LDA ChrBankData,X
  172. STA $8001
  173. INX
  174. CPX #$06
  175. BCC ChrSteupSet
  176. RTS

  177. ;========================================
  178. ChrBankData:                  ;图形块号
  179. .DB $00,$02,$04,$05,$06,$07

  180. ;==================================================
  181. ;精灵清除
  182. SpriteClear:
  183. LDX #$00
  184. LDA #$F8
  185. SpriteClearWrite:
  186. STA $0200,X
  187. INX
  188. BNE SpriteClearWrite
  189. RTS

  190. ;==================================================
  191. ;精灵设置
  192. SpriteSet:
  193. LDA Sel_Index
  194. ASL
  195. ASL
  196. ASL
  197. ASL
  198. CLC
  199. ADC #ARROW_Y_OFFSET
  200. STA $0200
  201. LDA #Char_Arrow
  202. STA $0201
  203. LDA #$00
  204. STA $0202
  205. LDA #ARROW_X_OFFSET
  206. STA $0203
  207. RTS

  208. ;==================================================
  209. ;清空PPU内存
  210. VramClear:
  211. LDA #$20
  212. STA $2006
  213. LDA #$00
  214. STA $2006
  215. TAX
  216. LDY #$08
  217. LDA #$00
  218. NameTableClearBeg:
  219. STA $2007
  220. INX
  221. BNE NameTableClearBeg
  222. DEY
  223. BNE NameTableClearBeg
  224. RTS

  225. ;==================================================
  226. ;清空调色板
  227. PaletteClear:
  228. JSR PaletteAddrSet
  229. LDA #$0F
  230. LDX #$00
  231. PaletteClearWrite:
  232. STA $2007
  233. INX
  234. CPX #$20
  235. BCC PaletteClearWrite
  236. RTS

  237. ;==================================================
  238. ;设置调色板
  239. PaletteSet:
  240. JSR PaletteAddrSet
  241. LDX #$00
  242. PaletteSetWrite:
  243. LDA PaletteData,X
  244. STA $2007
  245. INX
  246. CPX #$20
  247. BCC PaletteSetWrite
  248. RTS

  249. ;==================================================
  250. ;调色板地址设置
  251. PaletteAddrSet:
  252. LDA #$3F
  253. STA $2006
  254. LDA #$00
  255. STA $2006
  256. RTS

  257. ;==================================================
  258. ;设置属性表
  259. AttributeSet:
  260. LDA #$23
  261. STA $2006
  262. LDA #$C0
  263. STA $2006
  264. LDX #$00
  265. AttributeSetWrite:
  266. LDA AttributeData,X
  267. STA $2007
  268. INX
  269. CPX #$40
  270. BCC AttributeSetWrite
  271. RTS

  272. ;==================================================
  273. ;写入文本
  274. TextWrite:
  275. LDA #<TextData
  276. STA Data_L
  277. LDA #>TextData
  278. STA Data_H
  279. LDY #$00
  280. TextWriteCheckMode:
  281. LDA (Data_L),Y
  282. BEQ TextWriteOver
  283. CMP #$FF
  284. BEQ TextWriteOver
  285. AND #$04
  286. STA $2000
  287. JSR CheckAddr
  288. LDA (Data_L),Y
  289. STA $2006
  290. JSR CheckAddr
  291. LDA (Data_L),Y
  292. STA $2006
  293. JSR CheckAddr
  294. LDA (Data_L),Y
  295. TAX
  296. JSR CheckAddr
  297. TextWriteData:
  298. STX Data_Count
  299. LDA (Data_L),Y
  300. TAX
  301. LDA Char_Rom,X
  302. STA $2007
  303. JSR CheckAddr
  304. LDX Data_Count
  305. DEX
  306. BNE TextWriteData
  307. JMP TextWriteCheckMode
  308. TextWriteOver:
  309. LDA #$00
  310. STA $2000
  311. RTS
  312. ;--------------------------------------------------
  313. CheckAddr:
  314. INY
  315. BNE CheckAddrOver
  316. INC Data_H
  317. CheckAddrOver:
  318. RTS

  319. ;==================================================
  320. ;选项切换
  321. SelectChange:
  322. LDA Button_Once
  323. AND #$FF
  324. BEQ SelectChangeEnd
  325. SelectChangeSound:
  326. JSR ButtonSound
  327. SelectInc:
  328. LDA Button_Once
  329. AND #$24
  330. BEQ SelectDec
  331. LDA Sel_Index
  332. CMP #ITEM_COUNT - 1
  333. BCC SelectIncSet
  334. LDA #$FF
  335. STA Sel_Index
  336. SelectIncSet:
  337. INC Sel_Index
  338. SelectDec:
  339. LDA Button_Once
  340. CMP #$08
  341. BNE SelectBeg
  342. LDA Sel_Index
  343. BNE SelectDecSet
  344. LDA #ITEM_COUNT
  345. STA Sel_Index
  346. SelectDecSet:
  347. DEC Sel_Index
  348. SelectBeg:
  349. LDA Button_Once
  350. AND #$42
  351. BEQ SelectEnd
  352. LDA #$00
  353. STA Sel_Index
  354. SelectEnd:
  355. LDA Button_Once
  356. AND #$81
  357. BEQ SelectOver
  358. LDA #ITEM_COUNT - 1
  359. STA Sel_Index
  360. SelectOver:
  361. LDA Button_Once
  362. CMP #$10
  363. BNE SelectChangeEnd
  364. JSR EnterSound
  365. JMP SelectProcess
  366. SelectChangeEnd:
  367. RTS

  368. ButtonSound:                    ;按键音效
  369. LDA #$03
  370. STA $4015
  371. LDX #$00
  372. ButtonSoundWrite:
  373. LDA ButtonSoundData,X
  374. STA $4000,X
  375. INX
  376. CPX #$04
  377. BCC ButtonSoundWrite
  378. RTS

  379. ButtonSoundData:
  380. .DB $87,$89,$F0,$00

  381. ;========================================
  382. ;进入音效
  383. EnterSound:
  384. LDA #$02
  385. STA $4015
  386. LDX #$00
  387. EnterSoundWrite:
  388. LDA EnterSoundData,X
  389. STA $4004,X
  390. INX
  391. CPX #$04
  392. BCC EnterSoundWrite
  393. LDA #$18
  394. JSR SecondDelay
  395. RTS

  396. EnterSoundData:
  397. .DB $3F,$9A,$FF,$00

  398. ;========================================
  399. ;等待延时
  400. SecondDelay:
  401. STA Second_Time
  402. BEQ SecondDelayEnd
  403. SecondDelayWait:
  404. JSR NmiDelay
  405. LDA Button_Once
  406. AND #$90
  407. BNE SecondDelayEnd
  408. DEC Second_Time
  409. BNE SecondDelayWait
  410. SecondDelayEnd:
  411. RTS

  412. ;=================================================
  413. ;音频清理
  414. SoundClean:
  415. LDA #$30
  416. STA $4000
  417. STA $4004
  418. STA $4008
  419. STA $400C
  420. STA $4010
  421. LDA #$00
  422. STA $4010
  423. TAX
  424. SoundCleanReg:
  425. STA $4001,X
  426. STA $4005,X
  427. STA $4009,X
  428. STA $400D,X
  429. STA $4011,X
  430. INX
  431. CPX #$03
  432. BCC SoundCleanReg
  433. LDA #$00
  434. STA $4015
  435. RTS

  436. ;==================================================
  437. SEL_PROCESS_SIZE = SelectGameLength - SelectGame
  438. Sel_Process_Addr = $0300
  439. ;==================================================
  440. SelectProcess:;选择节目处理
  441. JSR SoundClean
  442. LDX #$00
  443. SelectProcessWrite:
  444. LDA SelectGame,X
  445. STA Sel_Process_Addr,X
  446. INX
  447. CPX #SEL_PROCESS_SIZE
  448. BCC SelectProcessWrite
  449. JSR TimeWait
  450. JSR PaletteClear
  451. LDX Sel_Index
  452. SelectProcessCheckMenu:
  453. CPX #MENU_INDEX
  454. BCC SelectProcessCheckMenuOver
  455. INX
  456. SelectProcessCheckMenuOver:
  457. LDA Rom_Select_Data,X
  458. JMP Sel_Process_Addr
  459. ;==================================================
  460. SelectGame:;选择节目
  461. STA $6000
  462. SelectGameEnd:
  463. LDX #$06
  464. LDY #$00
  465. STX $8000
  466. STY $8001
  467. INX
  468. INY
  469. STX $8000
  470. STY $8001
  471. JMP ($FFFC)
  472. SelectGameLength:

  473. ;==================================================
  474. ;调色板数据
  475. PaletteData:
  476. .DB $0F,$2A,$2A,$2A,$0F,$25,$25,$25,$0F,$29,$26,$26,$0F,$21,$20,$20
  477. .DB $0F,$20,$20,$20,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F

  478. ;==================================================
  479. ;属性表数据
  480. AttributeData:
  481. .DB $55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55,$55
  482. .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  483. .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  484. .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00

  485. ;==================================================
  486. ;文本数据
  487. TextData:
  488. .DB $80,$20,$A9
  489. .STR "CONTRA 3 IN 1"
  490. .DB $80,$21,$28
  491. .STR "01.CONTRA"
  492. .DB $80,$21,$68
  493. .STR "02.SUPER CONTRA"
  494. .DB $80,$21,$A8
  495. .STR "03.CONTRA FORCE"
  496. .DB $FF

  497. Rom_Select_Data:             ;ROM选择数据
  498. ;;;;;WMCCSBPP
  499. .DB @11001000   ;001
  500. .DB @11011001   ;002
  501. .DB @11101010   ;003
  502. .DB @11111011   ;004
  503. .DB @11001100   ;005
  504. .DB @11011101   ;006
  505. .DB @11101110   ;007
  506. .DB @11111111   ;008

  507. ;==================================================
  508. Char_Rom:
  509. .DB $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  510. .DB $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
  511. .DB $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F
  512. .DB $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F
  513. .DB $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
  514. .DB $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

[发帖际遇]: yandagui 乐于助人,奖励 6 个 柠檬. 幸运榜 / 衰神榜

签到天数: 3210 天

[LV.Master]伴坛终老

发表于 2020-2-24 00:27:53 | 显示全部楼层
エロかっこいい女。vol.2 後編 一ノ瀬アメリ
回复 支持 反对

使用道具 举报

签到天数: 1591 天

[LV.Master]伴坛终老

发表于 2020-2-24 05:29:52 | 显示全部楼层
永远怀念的魂斗罗。
[发帖际遇]: wsz7257 发帖时在路边捡到 1 个 柠檬,偷偷放进了口袋. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 3114 天

[LV.Master]伴坛终老

发表于 2020-2-24 11:14:26 | 显示全部楼层
这样玩起来可简单啦,谢谢分享
回复 支持 反对

使用道具 举报

签到天数: 116 天

[LV.6]常住居民II

发表于 2020-2-24 11:50:10 | 显示全部楼层
548行代码,是你自己编写的吗?还是改写的源代码?
[发帖际遇]: 努力de乌龟 乐于助人,奖励 9 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 2688 天

[LV.Master]伴坛终老

发表于 2020-2-24 18:21:19 | 显示全部楼层
魂斗罗都是精品,感谢发布合卡!
[发帖际遇]: afti整理箱子竟然翻出了 4 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 445 天

[LV.9]以坛为家II

发表于 2020-2-24 19:20:22 | 显示全部楼层
游戏123全懂,下面的代码 全部不懂,感谢分享,学习了!
回复 支持 反对

使用道具 举报

签到天数: 1972 天

[LV.Master]伴坛终老

发表于 2020-2-24 20:25:09 | 显示全部楼层
本帖最后由 woodexe 于 2020-2-24 20:26 编辑

精简的必然是经典的,适合学习
回复 支持 反对

使用道具 举报

签到天数: 884 天

[LV.10]以坛为家III

发表于 2020-2-24 23:55:31 | 显示全部楼层
感谢大佬的分享,非常感谢!!
回复 支持 反对

使用道具 举报

签到天数: 884 天

[LV.10]以坛为家III

发表于 2020-2-25 00:21:40 | 显示全部楼层
这里是教怎么制作合卡的吗?
[发帖际遇]: fragranse 捡了钱没交公 柠檬 降了 2 个 . 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 525 天

[LV.9]以坛为家II

发表于 2020-2-25 12:30:09 | 显示全部楼层
谢谢分享
[发帖际遇]: tonyowen123扶老大爷过马路,警察叔叔奖励tonyowen123 2 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 184 天

[LV.7]常住居民III

发表于 2020-2-25 14:19:39 | 显示全部楼层
这个有点意思,收藏了
[发帖际遇]: dabayu 在论坛发帖时没有注意,被小偷偷去了 5 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 1646 天

[LV.Master]伴坛终老

发表于 2020-2-25 19:51:56 | 显示全部楼层
感谢发布合卡!
[发帖际遇]: lelehehe 打扫环境卫生,被奖励 4 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 2146 天

[LV.Master]伴坛终老

发表于 2020-2-26 02:41:34 | 显示全部楼层
感谢大佬的分享,非常感谢
[发帖际遇]: adsl9646 乐于助人,奖励 5 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 1418 天

[LV.10]以坛为家III

发表于 2020-2-26 18:01:39 | 显示全部楼层
高能{:4_137:}
[发帖际遇]: 文子萝卜 发帖时在路边捡到 1 个 柠檬,偷偷放进了口袋. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 269 天

[LV.8]以坛为家I

发表于 2020-3-3 16:50:18 | 显示全部楼层
永恒的怀念。谢谢楼主分享。
[发帖际遇]: qhynlj 发帖时在路边捡到 2 个 柠檬,偷偷放进了口袋. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 100 天

[LV.6]常住居民II

发表于 2020-3-16 16:00:55 | 显示全部楼层
本帖最后由 goe333 于 2020-3-16 16:02 编辑

合卡好东西啊!{:4_97:} {:4_117:}
[发帖际遇]: goe333 在网吧通宵,花了 10 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 1245 天

[LV.10]以坛为家III

发表于 2020-4-6 22:32:24 | 显示全部楼层
收下了 谢谢
[发帖际遇]: she370192822摆地摊卖菜,占道经营被城管罚款 5 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-4-25 19:06:34 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

签到天数: 749 天

[LV.9]以坛为家II

发表于 2020-5-3 18:44:37 | 显示全部楼层
有没有HACK~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2024-4-20 08:27 , Processed in 1.078125 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表