Advertisement
Guest User

Untitled

a guest
Apr 6th, 2017
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.44 KB | None | 0 0
  1. #include "ti83pce.inc"
  2. .assume ADL=1
  3. .db tExtTok,tAsm84CeCmp
  4. .org userMem
  5.  
  6. ;Paramétrage de l'écran
  7.  
  8. call _clrscrnfull ;reglage de l'ecran
  9.  
  10. ld hl,$FFFF \ ld (mpLCDPalette),hl
  11. ld hl,$7C00 \ ld (mpLCDPalette+2),hl
  12. ld hl,$001F \ ld (mpLCDPalette+4),hl
  13. ld hl,$0000 \ ld (mpLCDPalette+6),hl
  14.  
  15. call _RunIndicoff \ call _boot_ClearVRAM \ di
  16. ld a,$27
  17. ld ($E30018),a
  18.  
  19. ;.....................................................
  20. ;Affichage de l'écran de jeu
  21. ;Début donc n'affecte pas les registres :)
  22.  
  23. ld hl,$D40000
  24. ld bc,76799
  25. ld (hl),3d
  26. ex de,hl
  27. or a,a
  28. sbc hl,hl
  29. add hl,de
  30. inc de
  31. ldir
  32.  
  33. ld hl,$D403C8 ;y1 ;affichage de l'ecran
  34. ld a,221d
  35. call RoutineVerticale
  36. ld hl,$D4064A ;y2
  37. ld a,217d
  38. call RoutineVerticale
  39. ld hl,$D40776 ;y3
  40. ld a,217d
  41. call RoutineVerticale
  42. ld hl,$D404F8 ;y4
  43. ld a,221d
  44. call RoutineVerticale
  45.  
  46. ld hl,$D403C9 ;x1
  47. ld bc,302d
  48. call RoutineHorizontale
  49. ld hl,$D4064B ;x2
  50. ld bc,298d
  51. call RoutineHorizontale
  52. ld hl,$D5144B ;x3
  53. ld bc,298d
  54. call RoutineHorizontale
  55. ld hl,$D516C9 ;x4
  56. ld bc,302d
  57. call RoutineHorizontale
  58.  
  59. ld hl,$D4078B
  60. ld a,215
  61. RoutineC:
  62. ld bc,298d
  63. ld (hl),0d
  64. ex de,hl
  65. or a,a
  66. sbc hl,hl
  67. add hl,de
  68. inc de
  69. ldir
  70. ld bc,22d
  71. add hl,bc
  72. dec a
  73. jr nz,RoutineC
  74.  
  75. ;.....................................................
  76. ;reglage pour test
  77.  
  78. ld a,%00011000
  79. ld hl,$D034D5 ;hl2
  80. ld (hl),a
  81. ld de,$D4AD03 ;de2
  82. push hl ;hl2
  83. push de ;de2
  84. ld hl,$D034BC ;hl1
  85. ld (hl),a
  86. ld de,$D49E03 ;de1
  87.  
  88.  
  89.  
  90.  
  91.  
  92. ;.....................................................
  93. ;Modifie A (registre d'information, direction, pomme, position du serpent)
  94. ;Affecte hl ;getkey hl,de
  95.  
  96. Boucle:
  97. push hl
  98. push af
  99. push de
  100.  
  101. ld hl,$F50000
  102. ld (hl),2
  103. di
  104. xor a,a
  105. Scan_wait:
  106. cp a,(hl)
  107. jr nz,Scan_wait
  108.  
  109. call _getkey ;mettre une boucle à la place
  110.  
  111. ld hl,$D4078B
  112. ld a,215
  113. RoutineC2:
  114. ld bc,298d
  115. ld (hl),0d
  116. ex de,hl
  117. or a,a
  118. sbc hl,hl
  119. add hl,de
  120. inc de
  121. ldir
  122. ld bc,22d
  123. add hl,bc
  124. dec a
  125. jr nz,RoutineC2
  126.  
  127. pop de
  128. pop af
  129. Algo_de_modification_de_A:
  130. ld hl,$F5001E ;Adresses touches directionnelles
  131. bit 0,(hl)
  132. call nz,routineDown
  133. bit 3,(hl)
  134. call nz,routineUp
  135. bit 1,(hl)
  136. call nz,routineLeft
  137. bit 2,(hl)
  138. call nz,routineRight
  139.  
  140. ;.....................................................
  141. ;Ajuste hl1,de1,
  142. ;Modifie de,hl. Détruit bc.
  143.  
  144. Tete:
  145. pop hl
  146. Bit 0,a
  147. call nz,reglage_de_la_tete_Down
  148. Bit 3,a
  149. call nz,reglage_de_la_tete_Up
  150. Bit 1,a
  151. call nz,reglage_de_la_tete_Left
  152. Bit 2,a
  153. call nz,reglage_de_la_tete_Right
  154.  
  155. push af
  156. push de
  157. call Routine_Srite_Aff
  158. pop de
  159. pop af
  160. pop hl
  161.  
  162. pop bc ;de2
  163. pop ix ;hl2
  164.  
  165. push hl ;hl1
  166. push de ;de1
  167. push af ;direction
  168.  
  169. push bc ;de2
  170. pop de
  171. lea hl,ix ;hl2
  172. ;.....................................................
  173. ;Ajuste hl2,de2,
  174. ;Modifie de,hl. Détruit bc.
  175.  
  176. Apres_la_tete:
  177. ld c,(hl) ;hl2
  178. bit 0,C
  179. call nz,routine_reglage_apres_la_tete_Down
  180. bit 3,C
  181. call nz,routine_reglage_apres_la_tete_Up
  182. bit 1,C
  183. call nz,routine_reglage_apres_la_tete_Left
  184. bit 2,C
  185. call nz,routine_reglage_apres_la_tete_Right
  186.  
  187. Apres_la_tete_sprite:
  188. ;Détruit af,hl. Utilise (hl),bc (pour sauvegarder les directions avant modification de hl).
  189. push hl
  190. ld a,(hl) ;hl2
  191. push af
  192. cp a,c
  193. jp nz,routine_apres_la_tete_sprite_rotation
  194. pop af
  195. bit 0,c
  196. call nz,apres_la_tete_sprite_verticale
  197. bit 3,c
  198. call nz,apres_la_tete_sprite_verticale
  199. bit 1,c
  200. call nz,apres_la_tete_sprite_horizontale
  201. bit 2,c
  202. call nz,apres_la_tete_sprite_horizontale
  203. Affichage_apres_la_tete:
  204.  
  205. push de
  206. call Routine_Srite_Aff
  207. pop de
  208. pop hl
  209.  
  210. pop af ;direction
  211. pop bc ;de1
  212. pop ix ;hl1
  213.  
  214. push hl ;hl2
  215. push de ;de2
  216.  
  217. push bc ;de1
  218. pop de
  219. lea hl,ix ;hl1
  220.  
  221. jp Boucle
  222.  
  223.  
  224. ret
  225.  
  226. ;.....................................................
  227. ;Routine affichage de l'écran
  228.  
  229. RoutineVerticale:
  230. ld bc,320d
  231. ld (hl),2d
  232. add hl,bc
  233. dec a
  234. jr nz,RoutineVerticale
  235. ret
  236.  
  237. RoutineHorizontale:
  238. ld (hl),2d
  239. ex de,hl
  240. or a,a
  241. sbc hl,hl
  242. add hl,de
  243. inc de
  244. ldir
  245. ret
  246.  
  247. ;.....................................................
  248. ;Routine de A (direction)
  249.  
  250. routineDown:
  251. pop bc
  252. bit 3,a
  253. jp nz,Tete
  254. and a,%11110000
  255. or a, %00010001
  256. push bc
  257. ret
  258. routineUp:
  259. pop bc
  260. bit 0,a
  261. jp nz,Tete
  262. and a,%11110000
  263. or a, %00011000
  264. push bc
  265. ret
  266. routineLeft:
  267. pop bc
  268. bit 2,a
  269. jp nz,Tete
  270. and a,%11110000
  271. or a, %00010010
  272. push bc
  273. ret
  274. routineRight:
  275. pop bc
  276. bit 1,a
  277. jp nz,Tete
  278. and a,%11110000
  279. or a, %00010100
  280. push bc
  281. ret
  282.  
  283. ;.................................................................
  284. ;reglage de la tete
  285. ;detruit BC. ajuste HL,DE. n'affecte pas A
  286. reglage_de_la_tete_Down:
  287. pop ix
  288. ld (hl),a ;hl1 <- a
  289. ld bc,25d ;adjuste hl1
  290. add hl,bc
  291. ld bc,3840d ;adjuste de1
  292. ex de,hl
  293. add hl,bc
  294. ex de,hl
  295. push hl ;save hl1
  296. ld hl,sprite_aff_tete_Down
  297. push ix
  298. ret
  299. reglage_de_la_tete_Up:
  300. pop ix
  301. ld (hl),a ;hl1 <- a
  302. ld bc,25d ;adjuste hl1
  303. or a,a
  304. sbc hl,bc
  305. ld bc,3840d ;adjuste de1
  306. ex de,hl
  307. or a,a
  308. sbc hl,bc
  309. ex de,hl
  310. push hl ;save hl1
  311. ld hl,sprite_aff_tete_Up
  312. push ix
  313. ret
  314. reglage_de_la_tete_Left:
  315. pop ix
  316. ld (hl),a ;hl1 <- a
  317. dec hl ;adjuste hl1
  318. ld bc,12d ;adjuste de1
  319. ex de,hl
  320. or a,a
  321. sbc hl,bc
  322. ex de,hl
  323. push hl ;save hl1
  324. ld hl,sprite_aff_tete_Left
  325. push ix
  326. ret
  327. reglage_de_la_tete_Right:
  328. pop ix
  329. ld (hl),a ;hl1 <- a
  330. inc hl ;adjuste hl1
  331. ld bc,12d ;adjuste de1
  332. ex de,hl
  333. add hl,bc
  334. ex de,hl
  335. push hl ;save hl1
  336. ld hl,sprite_aff_tete_Right
  337. push ix
  338. ret
  339.  
  340. ;......................................................
  341. ;rotine de reglage apres la tete
  342. ;detruit bc, regle hl(hl2),de(de2)
  343. routine_reglage_apres_la_tete_Down:
  344. push bc
  345. ld bc,25d ;hl2
  346. add hl,bc
  347. ld bc,3840d ;de2
  348. ex de,hl
  349. add hl,bc
  350. ex de,hl
  351. pop bc
  352. ret
  353. routine_reglage_apres_la_tete_Up:
  354. push bc
  355. ld bc,25d ;hl2
  356. or a,a
  357. sbc hl,bc
  358. ld bc,3840d ;de2
  359. ex de,hl
  360. or a,a
  361. sbc hl,bc
  362. ex de,hl
  363. pop bc
  364. ret
  365. routine_reglage_apres_la_tete_Left:
  366. push bc
  367. dec hl ;hl2
  368. ld bc,12d ;de2
  369. ex de,hl
  370. or a,a
  371. sbc hl,bc
  372. ex de,hl
  373. pop bc
  374. ret
  375. routine_reglage_apres_la_tete_Right:
  376. push bc
  377. inc hl ;hl2
  378. ld bc,12d ;de2
  379. ex de,hl
  380. add hl,bc
  381. ex de,hl
  382. pop bc
  383. ret
  384. ;.................................................................
  385. routine_apres_la_tete_sprite_rotation:
  386. pop af
  387. BIT 0,C
  388. JR nz,ABit0R
  389. BIT 3,C
  390. JR nz,ABit3R
  391. BIT 1,C
  392. JR nz,ABit1R
  393. JR z,ABit2R
  394. ABit0R:
  395. BIT 1,A
  396. CALL nz,GetSpriteAAR1
  397. CALL z,GetSpriteAAR2
  398. JP Affichage_apres_la_tete
  399. ABit3R:
  400. BIT 1,A
  401. CALL nz,GetSpriteAAR3
  402. CALL z,GetSpriteAAR4
  403. JP Affichage_apres_la_tete
  404. ABit1R:
  405. BIT 0,A
  406. CALL nz,GetSpriteAAR4
  407. CALL z,GetSpriteAAR2
  408. JP Affichage_apres_la_tete
  409. ABit2R:
  410. BIT 0,A
  411. CALL nz,GetSpriteAAR3
  412. CALL z,GetSpriteAAR1
  413. JP Affichage_apres_la_tete
  414.  
  415. ;........................................................
  416. ;routine Apres la tete sprite
  417. apres_la_tete_sprite_verticale:
  418. LD HL,SpriteAAHorizontale
  419. RET
  420. apres_la_tete_sprite_horizontale:
  421. LD HL,SpriteAAVerticale
  422. RET
  423. GetSpriteAAR1:
  424. LD HL,SpriteAAR1
  425. RET
  426. GetSpriteAAR2:
  427. LD HL,SpriteAAR2
  428. RET
  429. GetSpriteAAR3:
  430. LD HL,SpriteAAR3
  431. RET
  432. GetSpriteAAR4:
  433. LD HL,SpriteAAR4
  434. RET
  435. ;.................................................................
  436. ;Affiche des sprite de 12*12
  437. ;détruit af,bc,hl,de.
  438. Routine_Srite_Aff:
  439. LD A,12d
  440. CopyLineA:
  441. LD BC,12d
  442. LDIR
  443. LD BC,308d
  444. EX DE,HL
  445. ADD HL,BC
  446. EX DE,HL
  447. DEC A
  448. JR nz,CopyLineA
  449. RET
  450.  
  451. ;........................................................
  452. ;Sprite de la tête
  453.  
  454. sprite_aff_tete_Down:
  455. .db 0,0,0,0,0,1,1,0,0,0,0,0
  456. .db 0,0,0,0,0,1,1,0,0,0,0,0
  457. .db 0,0,0,0,0,1,1,0,0,0,0,0
  458. .db 0,0,0,0,0,1,1,0,0,0,0,0
  459. .db 0,0,0,0,0,1,1,0,0,0,0,0
  460. .db 0,0,0,0,0,1,1,0,0,0,0,0
  461. .db 0,0,0,0,0,1,1,0,0,0,0,0
  462. .db 0,0,0,0,0,1,1,0,0,0,0,0
  463. .db 0,0,1,1,1,1,1,1,1,1,0,0
  464. .db 0,0,0,1,1,1,1,1,1,0,0,0
  465. .db 0,0,0,0,1,1,1,1,0,0,0,0
  466. .db 0,0,0,0,0,1,1,0,0,0,0,0,0
  467.  
  468.  
  469. sprite_aff_tete_Up:
  470. .db 0,0,0,0,0,1,1,0,0,0,0,0
  471. .db 0,0,0,0,1,1,1,1,0,0,0,0
  472. .db 0,0,0,1,1,1,1,1,1,0,0,0
  473. .db 0,0,1,1,1,1,1,1,1,1,0,0
  474. .db 0,0,0,0,0,1,1,0,0,0,0,0
  475. .db 0,0,0,0,0,1,1,0,0,0,0,0
  476. .db 0,0,0,0,0,1,1,0,0,0,0,0
  477. .db 0,0,0,0,0,1,1,0,0,0,0,0
  478. .db 0,0,0,0,0,1,1,0,0,0,0,0
  479. .db 0,0,0,0,0,1,1,0,0,0,0,0
  480. .db 0,0,0,0,0,1,1,0,0,0,0,0
  481. .db 0,0,0,0,0,1,1,0,0,0,0,0,0
  482.  
  483. sprite_aff_tete_Left:
  484. .db 0,0,0,0,0,0,0,0,0,0,0,0
  485. .db 0,0,0,0,0,0,0,0,0,0,0,0
  486. .db 0,0,0,1,0,0,0,0,0,0,0,0
  487. .db 0,0,1,1,0,0,0,0,0,0,0,0
  488. .db 0,1,1,1,0,0,0,0,0,0,0,0
  489. .db 1,1,1,1,1,1,1,1,1,1,1,1
  490. .db 1,1,1,1,1,1,1,1,1,1,1,1
  491. .db 0,1,1,1,0,0,0,0,0,0,0,0
  492. .db 0,0,1,1,0,0,0,0,0,0,0,0
  493. .db 0,0,0,1,0,0,0,0,0,0,0,0
  494. .db 0,0,0,0,0,0,0,0,0,0,0,0
  495. .db 0,0,0,0,0,0,0,0,0,0,0,0,0
  496.  
  497. sprite_aff_tete_Right:
  498. .db 0,0,0,0,0,0,0,0,0,0,0,0
  499. .db 0,0,0,0,0,0,0,0,0,0,0,0
  500. .db 0,0,0,0,0,0,0,0,1,0,0,0
  501. .db 0,0,0,0,0,0,0,0,1,1,0,0
  502. .db 0,0,0,0,0,0,0,0,1,1,1,0
  503. .db 1,1,1,1,1,1,1,1,1,1,1,1
  504. .db 1,1,1,1,1,1,1,1,1,1,1,1
  505. .db 0,0,0,0,0,0,0,0,1,1,1,0
  506. .db 0,0,0,0,0,0,0,0,1,1,0,0
  507. .db 0,0,0,0,0,0,0,0,1,0,0,0
  508. .db 0,0,0,0,0,0,0,0,0,0,0,0
  509. .db 0,0,0,0,0,0,0,0,0,0,0,0,0
  510. ;........................................................
  511. ;Sprites Après la tête
  512.  
  513. SpriteAAHorizontale:
  514. .db 0,0,0,0,0,1,1,0,0,0,0,0
  515. .db 0,0,0,0,0,1,1,0,0,0,0,0
  516. .db 0,0,0,0,0,1,1,0,0,0,0,0
  517. .db 0,0,0,0,0,1,1,0,0,0,0,0
  518. .db 0,0,0,0,0,1,1,0,0,0,0,0
  519. .db 0,0,0,0,0,1,1,0,0,0,0,0
  520. .db 0,0,0,0,0,1,1,0,0,0,0,0
  521. .db 0,0,0,0,0,1,1,0,0,0,0,0
  522. .db 0,0,0,0,0,1,1,0,0,0,0,0
  523. .db 0,0,0,0,0,1,1,0,0,0,0,0
  524. .db 0,0,0,0,0,1,1,0,0,0,0,0
  525. .db 0,0,0,0,0,1,1,0,0,0,0,0,0
  526.  
  527.  
  528.  
  529. SpriteAAVerticale:
  530. .db 0,0,0,0,0,0,0,0,0,0,0,0
  531. .db 0,0,0,0,0,0,0,0,0,0,0,0
  532. .db 0,0,0,0,0,0,0,0,0,0,0,0
  533. .db 0,0,0,0,0,0,0,0,0,0,0,0
  534. .db 0,0,0,0,0,0,0,0,0,0,0,0
  535. .db 1,1,1,1,1,1,1,1,1,1,1,1
  536. .db 1,1,1,1,1,1,1,1,1,1,1,1
  537. .db 0,0,0,0,0,0,0,0,0,0,0,0
  538. .db 0,0,0,0,0,0,0,0,0,0,0,0
  539. .db 0,0,0,0,0,0,0,0,0,0,0,0
  540. .db 0,0,0,0,0,0,0,0,0,0,0,0
  541. .db 0,0,0,0,0,0,0,0,0,0,0,0,0
  542.  
  543.  
  544.  
  545. ;........................................................
  546. ;Sprites Après la tête rotation
  547.  
  548. SpriteAAR1:
  549. .db 0,0,0,0,0,1,1,0,0,0,0,0
  550. .db 0,0,0,0,0,1,1,0,0,0,0,0
  551. .db 0,0,0,0,0,1,1,0,0,0,0,0
  552. .db 0,0,0,0,1,1,1,0,0,0,0,0
  553. .db 0,0,0,1,1,1,1,0,0,0,0,0
  554. .db 1,1,1,1,1,1,0,0,0,0,0,0
  555. .db 1,1,1,1,1,0,0,0,0,0,0,0
  556. .db 0,0,0,0,0,0,0,0,0,0,0,0
  557. .db 0,0,0,0,0,0,0,0,0,0,0,0
  558. .db 0,0,0,0,0,0,0,0,0,0,0,0
  559. .db 0,0,0,0,0,0,0,0,0,0,0,0
  560. .db 0,0,0,0,0,0,0,0,0,0,0,0,0
  561.  
  562.  
  563.  
  564. SpriteAAR2:
  565. .db 0,0,0,0,0,1,1,0,0,0,0,0
  566. .db 0,0,0,0,0,1,1,0,0,0,0,0
  567. .db 0,0,0,0,0,1,1,0,0,0,0,0
  568. .db 0,0,0,0,0,1,1,1,0,0,0,0
  569. .db 0,0,0,0,0,1,1,1,1,0,0,0
  570. .db 0,0,0,0,0,0,1,1,1,1,1,1
  571. .db 0,0,0,0,0,0,0,1,1,1,1,1
  572. .db 0,0,0,0,0,0,0,0,0,0,0,0
  573. .db 0,0,0,0,0,0,0,0,0,0,0,0
  574. .db 0,0,0,0,0,0,0,0,0,0,0,0
  575. .db 0,0,0,0,0,0,0,0,0,0,0,0
  576. .db 0,0,0,0,0,0,0,0,0,0,0,0,0
  577.  
  578.  
  579.  
  580. SpriteAAR3:
  581. .db 0,0,0,0,0,0,0,0,0,0,0,0
  582. .db 0,0,0,0,0,0,0,0,0,0,0,0
  583. .db 0,0,0,0,0,0,0,0,0,0,0,0
  584. .db 0,0,0,0,0,0,0,0,0,0,0,0
  585. .db 0,0,0,0,0,0,0,0,0,0,0,0
  586. .db 1,1,1,1,1,0,0,0,0,0,0,0
  587. .db 1,1,1,1,1,1,0,0,0,0,0,0
  588. .db 0,0,0,1,1,1,1,0,0,0,0,0
  589. .db 0,0,0,0,1,1,1,0,0,0,0,0
  590. .db 0,0,0,0,0,1,1,0,0,0,0,0
  591. .db 0,0,0,0,0,1,1,0,0,0,0,0
  592. .db 0,0,0,0,0,1,1,0,0,0,0,0,0
  593.  
  594.  
  595.  
  596. SpriteAAR4:
  597. .db 0,0,0,0,0,0,0,0,0,0,0,0
  598. .db 0,0,0,0,0,0,0,0,0,0,0,0
  599. .db 0,0,0,0,0,0,0,0,0,0,0,0
  600. .db 0,0,0,0,0,0,0,0,0,0,0,0
  601. .db 0,0,0,0,0,0,0,0,0,0,0,0
  602. .db 0,0,0,0,0,0,0,1,1,1,1,1
  603. .db 0,0,0,0,0,0,1,1,1,1,1,1
  604. .db 0,0,0,0,0,1,1,1,1,0,0,0
  605. .db 0,0,0,0,0,1,1,1,0,0,0,0
  606. .db 0,0,0,0,0,1,1,0,0,0,0,0
  607. .db 0,0,0,0,0,1,1,0,0,0,0,0
  608. .db 0,0,0,0,0,1,1,0,0,0,0,0,0
  609.  
  610.  
  611. .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement