Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.32 KB | None | 0 0
  1. #include "ti83pce.inc"
  2. .assume ADL=1
  3. .db tExtTok,tAsm84CeCmp
  4. .org userMem
  5. ;#macro safe_call(x) push iy \ ld iy,$D00080 \ call x \ pop iy #endmacro
  6. ;;........................................................
  7.  
  8.  
  9.  
  10.  
  11. ;;........................................................
  12. ;;Reglage
  13.  
  14. LD B ,%00001000 ;DE3
  15. LD HL,$D03342 ;HL4
  16. LD ($D031F6),HL ;Adresse de HL4
  17. LD (HL),B
  18. LD HL,$D4D290 ;DE4
  19. PUSH HL
  20. LD HL,$D0335B ;HL2
  21. LD (HL),B
  22. PUSH HL
  23. LD HL,$D4C390 ;DE2
  24. PUSH HL
  25. LD HL,$D0335B ;HL3
  26. LD (HL),B
  27. LD DE,$D4C390 ;DE3
  28. EXX
  29. LD HL,$D03374 ;HL1
  30. LD (HL),B
  31. LD DE,$D4B490 ;DE1
  32.  
  33. PUSH HL
  34.  
  35. ;;........................................................
  36. ;;Detection des touches
  37.  
  38. Boucle:
  39.  
  40. LD HL,$F50000
  41. LD (HL),2
  42. XOR A
  43. scan_wait:
  44. CP (HL)
  45. JR nz,scan_wait
  46. POP HL
  47. DGetKey:
  48. LD A,($F5001E)
  49. BIT 0,A
  50. CALL NZ,_Kdown
  51. BIT 1,A
  52. CALL nz,_Kleft
  53. BIT 2,A
  54. CALL nz,_Kright
  55. BIT 3,A
  56. CALL nz,_Kup
  57.  
  58. ;;........................................................
  59. ;;Detection des collisions
  60.  
  61. ;(DE)=Sprite regle
  62. ;(HL)=HL1
  63.  
  64. PUSH BC ;save BC
  65. LD B,$7
  66. EX DE,HL ; test coté droit
  67. ADD HL,BC ;Permet de mettre sur un pixel noir si attein les bords (ajoute 7)
  68. LD A,(HL)
  69. OR A,0
  70. JP z,EndTheGame ;Test si c'est un pixel noir
  71. SBC HL,BC ;remait DE à son ancienne valeure
  72.  
  73. EX DE,HL ; test coté gauche
  74. SBC HL,BC ;Permet de mettre sur un pixel noir si attein les bords (ajoute 7)
  75. LD A,(HL)
  76. OR A,0
  77. JP z,EndTheGame ;Test si c'est un pixel noir
  78. ADD HL,BC ;remait DE à son ancienne valeure
  79. EX DE,HL
  80. PUSH BC
  81.  
  82. LD A,(HL)
  83. BIT 4,A
  84. JP nz,EndTheGame
  85.  
  86. ;;........................................................
  87. ;;Affichage de la tête
  88.  
  89. AffichageTete:
  90. PUSH DE
  91. BIT 0,B
  92. CALL nz,_Adown
  93. BIT 3,B
  94. CALL nz,_Aup
  95. BIT 1,B
  96. CALL nz,_Aleft
  97. BIT 2,B
  98. CALL nz,_Aright
  99.  
  100. CALL _SpriteA ; stake: 1.BC 2.HL
  101.  
  102. POP BC
  103. POP HL
  104. POP IX
  105. POP IY
  106. PUSH HL
  107. PUSH DE
  108. LEA HL,IY
  109.  
  110. ;;........................................................
  111. ;;Affichage de la partie après la tête
  112.  
  113. GetMouveAfterA:
  114. LD C,(HL)
  115. BIT 0,C
  116. CALL nz,_AftermouveDown
  117. BIT 3,C
  118. CALL nz,_AftermouveUp
  119. BIT 1,C
  120. CALL nz,_AftermouveLeft
  121. BIT 2,C
  122. CALL nz,_AftermouveRight
  123. GetSpriteAfterA:
  124. POP BC
  125. POP HL
  126. LD A,(HL)
  127. PUSH HL
  128. PUSH BC
  129. CP A,C
  130. JP nz,GetSpriteAfterA_Rotation
  131. BIT 0,C
  132. CALL nz,_GetSpriteAADown
  133. BIT 3,C
  134. CALL nz,_GetSpriteAAUp
  135. BIT 1,C
  136. CALL nz,_GetSpriteAALeft
  137. BIT 2,C
  138. CALL nz,_GetSpriteAARight
  139. AffiSpriteAfterA:
  140.  
  141. Call _SpriteA
  142.  
  143. POP BC
  144. POP IX
  145. POP IY
  146. POP HL
  147. PUSH IX
  148. PUSH DE
  149. LEA DE,IY
  150.  
  151. ;;........................................................
  152. ;;Gestion de la pomme
  153. ;;Utilise HL1, et les registres HL, DE, BC.
  154.  
  155. ;Detection
  156. ;(DE)=Sprite DE1
  157. ;(HL)=HL1
  158.  
  159. LD A,(HL) ; test position, si 1, c'est fini ;) .
  160. BIT 5,A
  161. JP z,FinEtSuite
  162.  
  163. PUSH HL ;Sauvegarde
  164. PUSH DE
  165. PUSH BC
  166.  
  167. Alleatoire:
  168. ;routine aleatoire TheMachine02
  169. ;;Expects ADL mode.
  170. ;;Output: HL
  171. ;;50cc
  172. ;;33 bytes
  173. ;;cycle length: 281,474,959,933,440 (about 2.8 trillion)
  174. ld de,(seed1)
  175. or a
  176. sbc hl,hl
  177. add hl,de
  178. add hl,hl
  179. add hl,hl
  180. inc l
  181. add hl,de
  182. ld (seed1),hl
  183. ld hl,(seed2)
  184. add hl,hl
  185. sbc a,a
  186. and %00011011
  187. xor l
  188. ld l,a
  189. ld (seed2),hl
  190. add hl,de
  191. ;fin de la routine
  192. LD DE,0
  193. LD A,H
  194. LD E,L
  195. AND A,%00000001
  196. LD D,A
  197. OR A,A
  198. SBC HL,HL
  199. ;test si
  200. BIT 0,D
  201. JR z,Matrice
  202. LD A,R
  203. AND A,%01111111
  204. LD E,A ;empeche de dépassement de 450
  205. Matrice:
  206. LD HL,$D0300A ;debut matrice
  207. ADD HL,DE
  208. LD A,(HL)
  209. BIT 4,A
  210. JR z,Alleatoire
  211. AND A,%11011111
  212. LD (HL),A
  213. VRAMPomme:
  214. EX DE,HL
  215. LD DE,$D40645 ;debut VRAM
  216. LD C,$19
  217. PommeY:
  218. SBC HL,BC
  219. PUSH HL
  220. INC H
  221. LD L,$40
  222. EX DE,HL
  223. ADD HL,DE
  224. EX DE,HL
  225. JP m,PommeY
  226. INC H
  227. LD L,$40
  228. EX DE,HL
  229. SBC HL,DE
  230. EX DE,HL
  231. PUSH HL
  232. ADD HL,BC
  233.  
  234. LD C,$12
  235. EX DE,HL
  236. PommeX:
  237. DEC E
  238. ADD HL,BC
  239. JP m,PommeX
  240. SBC HL,BC
  241. EX DE,HL
  242. LD HL,SpritePomme
  243.  
  244. CALL _SpriteA
  245.  
  246. POP BC
  247. POP DE
  248. POP HL
  249. JP Boucle ;Detection des touches
  250.  
  251. FinEtSuite:
  252.  
  253. EXX
  254.  
  255. ;;........................................................
  256. ;;Affichage de la queue
  257.  
  258. AffQueue:
  259. PUSH DE
  260. LD C,(HL)
  261. BIT 0,C
  262. CALL nz,_AFFQDown
  263. BIT 3,C
  264. CALL nz,_AFFQUp
  265. BIT 1,C
  266. CALL nz,_AFFQLeft
  267. BIT 2,C
  268. CALL nz,_AFFQRight
  269.  
  270. CALL _SpriteA
  271.  
  272. POP HL
  273. POP BC
  274. POP IX
  275. POP IY
  276. PUSH HL
  277. PUSH DE
  278. PUSH IX
  279. PUSH BC
  280. LD HL,$D031F6 ;adresse de HL4
  281. LEA DE,IY
  282.  
  283. ;;........................................................
  284. ;;Effacement et remise à 0 de la partie des dirrections et du bit de d'information sur si le corps du serpent est bien là, du registre B
  285.  
  286. Effacement:
  287.  
  288. ld C,(HL)
  289. BIT 0,C
  290. CALL nz,_EffDown
  291. BIT 3,C
  292. CALL nz,_EffUp
  293. BIT 1,C
  294. CALL nz,_EffLeft
  295. BIT 2,C
  296. CALL nz,_EffRight
  297.  
  298. LD HL,$FFFF
  299. CALL _SpriteA
  300.  
  301. POP BC
  302. POP HL
  303. POP IX
  304. POP IY
  305. PUSH DE
  306. PUSH HL
  307. PUSH BC
  308. LEA HL,IY
  309. LEA DE,IX
  310. EXX
  311. JP Boucle
  312.  
  313. ;;........................................................
  314.  
  315. GetSpriteAfterA_Rotation:
  316. BIT 0,C
  317. CALL nz,_GetSpriteAARDown
  318. BIT 3,C
  319. CALL nz,_GetSpriteAARUp
  320. BIT 1,C
  321. CALL nz,_GetSpriteAARLeft
  322. BIT 2,C
  323. CALL nz,_GetSpriteAARRight
  324. JP AffiSpriteAfterA
  325.  
  326. ;;........................................................
  327. EndTheGame: ;end ;)
  328.  
  329. ;;........................................................
  330.  
  331. _Kdown:
  332. BIT 3,B
  333. JP nz,AffichageTete
  334. RES 1,B
  335. RES 2,B
  336. SET 0,B
  337. RET
  338. _Kup:
  339. BIT 0,B
  340. JP nz,AffichageTete
  341. RES 1,B
  342. RES 2,B
  343. SET 3,B
  344. RET
  345. _Kleft:
  346. BIT 2,B
  347. JP nz,AffichageTete
  348. RES 0,B
  349. RES 3,B
  350. SET 1,B
  351. RET
  352. _Kright:
  353. BIT 1,B
  354. JP nz,AffichageTete
  355. RES 0,B
  356. RES 3,B
  357. SET 2,B
  358. RET
  359. _Adown:
  360. POP IX
  361. LD (HL),B
  362. LD E,$11
  363. ADD HL,DE
  364. POP DE
  365. PUSH HL
  366. PUSH BC
  367. LD BC,$F00
  368. EX DE,HL
  369. ADD HL,BC
  370. EX DE,HL
  371. PUSH IX
  372. LD HL,SpriteDownA
  373. RET
  374. _Aup:
  375. POP IX
  376. LD (HL),B
  377. LD E,$11
  378. SBC HL,DE
  379. POP DE
  380. PUSH HL
  381. PUSH BC
  382. LD BC,$F00
  383. EX DE,HL
  384. SBC HL,BC
  385. EX DE,HL
  386. PUSH IX
  387. LD HL,SpriteUpA
  388. RET
  389. _Aleft:
  390. POP IX
  391. LD (HL),B
  392. DEC HL
  393. POP DE
  394. PUSH HL
  395. PUSH BC
  396. LD C,$B
  397. EX DE,HL
  398. SBC HL,BC
  399. EX DE,HL
  400. PUSH IX
  401. LD HL,SpriteLeftA
  402. RET
  403. _Aright:
  404. POP IX
  405. LD (HL),B
  406. INC HL
  407. POP DE
  408. PUSH HL
  409. PUSH BC
  410. LD C,$B
  411. EX DE,HL
  412. ADD HL,BC
  413. EX DE,HL
  414. PUSH IX
  415. LD HL,SpriteRightA
  416. RET
  417. _AftermouveDown:
  418. POP IY
  419. LD E,$11
  420. ADD HL,DE
  421. LEA DE,IX
  422. PUSH HL
  423. PUSH BC
  424. LD BC,$F00
  425. EX DE,HL
  426. ADD HL,BC
  427. EX DE,HL
  428. PUSH IY
  429. RET
  430. _AftermouveUp:
  431. POP IY
  432. LD E,$11
  433. SBC HL,DE
  434. LEA DE,IX
  435. PUSH HL
  436. PUSH BC
  437. LD BC,$F00
  438. EX DE,HL
  439. SBC HL,BC
  440. EX DE,HL
  441. PUSH IY
  442. RET
  443. _AftermouveLeft:
  444. POP IY
  445. DEC HL
  446. LEA DE,IX
  447. PUSH HL
  448. PUSH BC
  449. LD C,$B
  450. EX DE,HL
  451. SBC HL,BC
  452. EX DE,HL
  453. PUSH IY
  454. RET
  455. _AftermouveRight:
  456. POP IY
  457. INC HL
  458. LEA DE,IX
  459. PUSH HL
  460. PUSH BC
  461. LD C,$B
  462. EX DE,HL
  463. ADD HL,BC
  464. EX DE,HL
  465. PUSH IY
  466. RET
  467. _GetSpriteAADown:
  468. LD HL,SpriteAADown
  469. RET
  470. _GetSpriteAAUp:
  471. LD HL,SpriteAAUP
  472. RET
  473. _GetSpriteAALeft:
  474. LD HL,SpriteAALeft
  475. RET
  476. _GetSpriteAARight:
  477. LD HL,SpriteAARight
  478. RET
  479. _GetSpriteAARDown:
  480. LD HL,SpriteAARDown
  481. RET
  482. _GetSpriteAARUp:
  483. LD HL,SpriteAARUp
  484. RET
  485. _GetSpriteAARLeft:
  486. LD HL,SpriteAARLeft
  487. RET
  488. _GetSpriteAARRight:
  489. LD HL,SpriteAARRight
  490. RET
  491. _AFFQDown:
  492. POP IX
  493. LD E,$11
  494. ADD HL,DE
  495. POP DE
  496. PUSH HL
  497. LD BC,$F00
  498. EX DE,HL
  499. ADD HL,BC
  500. EX DE,HL
  501. LD HL,SpriteAGdown
  502. PUSH IX
  503. RET
  504. _AFFQUp:
  505. POP IX
  506. LD E,$11
  507. SBC HL,DE
  508. POP DE
  509. PUSH HL
  510. LD BC,$F00
  511. EX DE,HL
  512. SBC HL,BC
  513. EX DE,HL
  514. LD HL,SpriteAGup
  515. PUSH IX
  516. RET
  517. _AFFQLeft:
  518. POP IX
  519. DEC HL
  520. POP DE
  521. PUSH HL
  522. LD C,$B
  523. EX DE,HL
  524. SBC HL,BC
  525. EX DE,HL
  526. LD HL,SpriteAGleft
  527. PUSH IX
  528. RET
  529. _AFFQRight:
  530. POP IX
  531. INC HL
  532. POP DE
  533. PUSH HL
  534. LD C,$B
  535. EX DE,HL
  536. ADD HL,BC
  537. EX DE,HL
  538. LD HL,SpriteAGright
  539. PUSH IX
  540. RET
  541.  
  542. _EffDown:
  543. LD (HL),0
  544. LD C,$11
  545. ADD HL,BC
  546. LD ($D031F6),HL ;adresse de HL4
  547. LD BC,$F00
  548. EX DE,HL
  549. ADD HL,BC
  550. EX DE,HL
  551. RET
  552. _EffUp:
  553. LD (HL),0
  554. LD C,$11
  555. SBC HL,BC
  556. LD ($D031F6),HL ;adresse de HL4
  557. LD BC,$F00
  558. EX DE,HL
  559. SBC HL,BC
  560. EX DE,HL
  561. RET
  562. _EffLeft:
  563. LD (HL),0
  564. DEC HL
  565. LD ($D031F6),HL ;adresse de HL4
  566. LD C,B
  567. EX DE,HL
  568. SBC HL,BC
  569. EX DE,HL
  570. RET
  571. _EffRight:
  572. LD (HL),0
  573. INC HL
  574. LD ($D031F6),HL ;adresse de HL4
  575. LD C,$B
  576. EX DE,HL
  577. ADD HL,BC
  578. EX DE,HL
  579. RET
  580.  
  581. _SpriteA:
  582. LD A,12
  583. CopyLineA:
  584. INC B \ LD C,$40
  585. LDIR
  586. LD C,$B
  587. EX DE,HL
  588. ADD hl,BC
  589. EX DE,HL
  590. DEC A
  591. JR nz,CopyLineA
  592. LD BC,$F0C
  593. EX DE,HL
  594. SBC HL,BC
  595. EX DE,HL
  596. RET
  597. .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement