Advertisement
Guest User

roulette

a guest
May 14th, 2016
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.32 KB | None | 0 0
  1. ;====================;
  2. ;Goal Roulette
  3. ;=====================;
  4.  
  5. ; Extra bit: YES. If set, the secret exit is activated.
  6.  
  7. !YellowCoin = 5 ; How many coins the Yellow coin gives.
  8. !BlueCoin = 10 ; How many coins the Blue coin gives.
  9. !RedCoin = 20 ; How many coins the Red coin gives.
  10. !OneUp = 1 ; How many extra lives you get when you hit the 1-up.
  11.  
  12. !AnimationRate = 3 ; Animation speed. 1 is very fast, 5 is very slow.
  13.  
  14. Img:
  15. db $E8 ; PAGE 1 - 5 COIN PALETTE A
  16. db $24 ; PAGE 1 - MUSHROOM PALETTE C
  17. db $E8 ; PAGE 1 - 10 COIN PALETTE B
  18. db $26 ; PAGE 1 - FLOWER PALETTE D
  19. db $2E ; PAGE 1 - NOTHING PALETTE 9
  20. db $E8 ; PAGE 1 - 20 COIN PALETTE C
  21. db $24 ; PAGE 1 - 1-UP PALETTE D
  22. db $2E ; PAGE 1 - NOTHING PALETTE 9
  23.  
  24. Palette:
  25. db $04,$08,$06,$0A
  26. db $02,$08,$0A,$02
  27.  
  28. print "INIT ", pc
  29. LDA $7FAB10,x
  30. AND #$04
  31. STA $1504,x
  32. RTL
  33.  
  34. print "MAIN ", pc
  35. PHB
  36. PHK
  37. PLB
  38. JSR Run
  39. PLB
  40. RTL
  41.  
  42. Return:
  43. RTS
  44.  
  45. Run:
  46. JSR Graphics
  47. JSR SUB_OFF_SCREEN_X0
  48.  
  49. LDA $14C8,x
  50. CMP #$08
  51. BNE Return
  52. LDA $9D
  53. BNE Return
  54. LDA $C2,x
  55. BEQ NoTouch
  56. LDA $D8,x
  57. CMP #$E0
  58. BNE .Rise
  59. LDA #$04
  60. STA $14C8,x
  61. JSR DrawSmoke
  62. STZ $AA,x
  63. LDA #$10
  64. STA $1DF9
  65. BRA +
  66. .Rise
  67. LDA #$EE
  68. STA $AA,x
  69. +
  70. JSL $01802A
  71. End:
  72. RTS
  73. NoTouch:
  74. JSL $01A7DC
  75. BCC End
  76. LDA #$01
  77. STA $C2,x
  78. LDA $14
  79. LSR #2
  80. AND #$07
  81. STA $1510,x
  82. PHX
  83. ASL A
  84. TAX
  85. JSR (Ptr,x)
  86. PLX
  87. STZ $13F3
  88. STZ $1891
  89. STZ $18C0
  90. STZ $18B9
  91. STZ $18DD
  92. JSL $00FA80
  93. LDA #$FF
  94. STA $1493
  95. STA $0DDA
  96. LDA #$0C
  97. STA $1DFB
  98. LDA $1504,x
  99. BEQ +
  100. LDA #$01
  101. STA $141C
  102. RTS
  103.  
  104. DEC $13C6
  105. LDA #$FF
  106. STA $1493
  107. LDA #$0B
  108. STA $1DFB
  109. RTS
  110.  
  111.  
  112. Ptr:
  113. dw FIVE_COIN
  114. dw MUSHROOM
  115. dw TEN_COIN
  116. dw FLOWER
  117. dw NOTHING
  118. dw TWENTY_COIN
  119. dw ONE_UP
  120. dw NOTHING
  121.  
  122. FIVE_COIN:
  123. LDA #$01
  124. STA $1DFC
  125. LDA #!YellowCoin
  126. STA $13CC
  127. RTS
  128.  
  129. MUSHROOM:
  130. LDA #$01
  131. STA $19
  132. LDA #$2F
  133. STA $1496
  134. LDA #$0A
  135. STA $1DF9
  136. RTS
  137.  
  138. TEN_COIN:
  139. LDA #$01
  140. STA $1DFC
  141. LDA #!BlueCoin
  142. STA $13CC
  143. RTS
  144. FLOWER:
  145. LDA #$03
  146. STA $19
  147. RTS
  148.  
  149. NOTHING:
  150. LDA #$2A
  151. STA $1DFC
  152. RTS
  153.  
  154. TWENTY_COIN:
  155. LDA #$01
  156. STA $1DFC
  157. LDA #!RedCoin
  158. STA $13CC
  159. RTS
  160.  
  161. ONE_UP:
  162. LDA #!OneUp
  163. STA $18E4
  164. NO_TOUCH:
  165. RTS
  166.  
  167. DrawSmoke: LDY #$03 ; \ find a free slot to display effect
  168. FINDFREE: LDA $17C0,y ; |
  169. BEQ FOUNDONE ; |
  170. DEY ; |
  171. BPL FINDFREE ; |
  172. RTS ; / return if no slots open
  173.  
  174. FOUNDONE: LDA #$01 ; \ set effect graphic to smoke graphic
  175. STA $17C0,y ; /
  176. LDA #$1B ; \ set time to show smoke
  177. STA $17CC,y ; /
  178. LDA $D8,x ; \ smoke y position = generator y position
  179. STA $17C4,y ; /
  180. LDA $E4,x ; \ load generator x position and store it for later
  181. STA $17C8,y ; /
  182. RTS
  183.  
  184. Graphics:
  185. JSR GET_DRAW_INFO
  186.  
  187. LDA $00
  188. STA $0300,y
  189. LDA $01
  190. STA $0301,y
  191.  
  192. LDA $C2,x
  193. BNE CUSTOM
  194. LDA $14
  195. LSR #!AnimationRate
  196. AND #$07
  197. PHX
  198. TAX
  199. LDA Img,x ; Pick a random image.
  200. STA $0302,y
  201. LDA Palette,x ; Palette is also.. random based.
  202. ORA $64
  203. STA $0303,y
  204. PLX
  205. BRA SHARE
  206. CUSTOM:
  207. PHY
  208. LDY $1510,x
  209. LDA Img,y
  210. PLY
  211. STA $0302,y
  212. PHY
  213. LDY $1510,x
  214. LDA Palette,y
  215. PLY
  216. STA $0303,y
  217. SHARE:
  218. INY
  219. INY
  220. INY
  221. INY
  222. LDY #$02
  223. LDA #$00
  224. JSL $01B7B3
  225. RTS
  226.  
  227. SUB_HORZ_POS:
  228. LDY #$00
  229. LDA $D1
  230. SEC
  231. SBC $E4,x
  232. STA $0F
  233. LDA $D2
  234. SBC $14E0,x
  235. BPL SPR_L16
  236. INY
  237. SPR_L16:
  238. RTS
  239.  
  240.  
  241. SUB_VERT_POS:
  242. LDY #$00
  243. LDA $D3
  244. SEC
  245. SBC $D8,x
  246. STA $0F
  247. LDA $D4
  248. SBC $14D4,x
  249. BPL SPR_L11
  250. INY
  251. SPR_L11:
  252. RTS
  253.  
  254.  
  255. SPR_T12:
  256. db $40,$B0
  257. SPR_T13:
  258. db $01,$FF
  259. SPR_T14:
  260. db $30,$C0,$A0,$C0,$A0,$F0,$60,$90
  261. db $30,$C0,$A0,$80,$A0,$40,$60,$B0
  262. SPR_T15:
  263. db $01,$FF,$01,$FF,$01,$FF,$01,$FF
  264. db $01,$FF,$01,$FF,$01,$00,$01,$FF
  265.  
  266. SUB_OFF_SCREEN_X1:
  267. LDA #$02
  268. BRA STORE_03
  269. SUB_OFF_SCREEN_X2:
  270. LDA #$04
  271. BRA STORE_03
  272. SUB_OFF_SCREEN_X3:
  273. LDA #$06
  274. BRA STORE_03
  275. SUB_OFF_SCREEN_X4:
  276. LDA #$08
  277. BRA STORE_03
  278. SUB_OFF_SCREEN_X5:
  279. LDA #$0A
  280. BRA STORE_03
  281. SUB_OFF_SCREEN_X6:
  282. LDA #$0C
  283. BRA STORE_03
  284. SUB_OFF_SCREEN_X7:
  285. LDA #$0E
  286. STORE_03:
  287. STA $03
  288. BRA START_SUB
  289. SUB_OFF_SCREEN_X0:
  290. STZ $03
  291.  
  292. START_SUB:
  293. JSR SUB_IS_OFF_SCREEN
  294. BEQ RETURN_35
  295. LDA $5B
  296. AND #$01
  297. BNE VERTICAL_LEVEL
  298. LDA $D8,x
  299. CLC
  300. ADC #$50
  301. LDA $14D4,x
  302. ADC #$00
  303. CMP #$02
  304. BPL ERASE_SPRITE
  305. LDA $167A,x
  306. AND #$04
  307. BNE RETURN_35
  308. LDA $13
  309. AND #$01
  310. ORA $03
  311. STA $01
  312. TAY
  313. LDA $1A
  314. CLC
  315. ADC SPR_T14,y
  316. ROL $00
  317. CMP $E4,x
  318. PHP
  319. LDA $1B
  320. LSR $00
  321. ADC SPR_T15,y
  322. PLP
  323. SBC $14E0,x
  324. STA $00
  325. LSR $01
  326. BCC SPR_L31
  327. EOR #$80
  328. STA $00
  329. SPR_L31:
  330. LDA $00
  331. BPL RETURN_35
  332. ERASE_SPRITE:
  333. LDA $14C8,x
  334. CMP #$08
  335. BCC KILL_SPRITE
  336. LDY $161A,x
  337. CPY #$FF
  338. BEQ KILL_SPRITE
  339. LDA #$00
  340. STA $1938,y
  341. KILL_SPRITE:
  342. STZ $14C8,x
  343. RETURN_35:
  344. RTS
  345.  
  346. VERTICAL_LEVEL:
  347. LDA $167A,x
  348. AND #$04
  349. BNE RETURN_35
  350. LDA $13
  351. LSR A
  352. BCS RETURN_35
  353. LDA $E4,x
  354. CMP #$00
  355. LDA $14E0,x
  356. SBC #$00
  357. CMP #$02
  358. BCS ERASE_SPRITE
  359. LDA $13
  360. LSR A
  361. AND #$01
  362. STA $01
  363. TAY
  364. LDA $1C
  365. CLC
  366. ADC SPR_T12,y
  367. ROL $00
  368. CMP $D8,x
  369. PHP
  370. LDA $001D
  371. LSR $00
  372. ADC SPR_T13,y
  373. PLP
  374. SBC $14D4,x
  375. STA $00
  376. LDY $01
  377. BEQ SPR_L38
  378. EOR #$80
  379. STA $00
  380. SPR_L38:
  381. LDA $00
  382. BPL RETURN_35
  383. BMI ERASE_SPRITE
  384.  
  385. SUB_IS_OFF_SCREEN:
  386. LDA $15A0,x
  387. ORA $186C,x
  388. RTS
  389.  
  390.  
  391. SPR_T1:
  392. db $0C,$1C
  393. SPR_T2:
  394. db $01,$02
  395.  
  396. GET_DRAW_INFO:
  397. STZ $186C,x
  398. STZ $15A0,x
  399. LDA $E4,x
  400. CMP $1A
  401. LDA $14E0,x
  402. SBC $1B
  403. BEQ ON_SCREEN_X
  404. INC $15A0,x
  405.  
  406. ON_SCREEN_X:
  407. LDA $14E0,x
  408. XBA
  409. LDA $E4,x
  410. REP #$20
  411. SEC
  412. SBC $1A
  413. CLC
  414. ADC.w #$0040
  415. CMP.w #$0180
  416. SEP #$20
  417. ROL A
  418. AND #$01
  419. STA $15C4,x
  420. BNE INVALID
  421.  
  422. LDY #$00
  423. LDA $1662,x
  424. AND #$20
  425. BEQ ON_SCREEN_LOOP
  426. INY
  427. ON_SCREEN_LOOP:
  428. LDA $D8,x
  429. CLC
  430. ADC SPR_T1,y
  431. PHP
  432. CMP $1C
  433. ROL $00
  434. PLP
  435. LDA $14D4,x
  436. ADC #$00
  437. LSR $00
  438. SBC $1D
  439. BEQ ON_SCREEN_Y
  440. LDA $186C,x
  441. ORA SPR_T2,y
  442. STA $186C,x
  443. ON_SCREEN_Y:
  444. DEY
  445. BPL ON_SCREEN_LOOP
  446. LDY $15EA,x
  447. LDA $E4,x
  448. SEC
  449. SBC $1A
  450. STA $00
  451. LDA $D8,x
  452. SEC
  453. SBC $1C
  454. STA $01
  455. RTS
  456.  
  457. INVALID:
  458. PLA
  459. PLA
  460. RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement