Page 2 sur 6

Re: Snake en assembleur

Message non luPosté: 08 Mar 2017, 22:32
de Dark coco
Merci TheMachine02 et Epharius . Oui j'ai complètement oublié que le registre bc etais utilisés pour x . Donc sa aurais fonctionner que pour une ligne de pixel . :?

PT_ a écrit:
Code: Tout sélectionner
ld a, y
ld de, pointeur
ld hl, data

CopyLine:
ld bc, x
ldir
ex de, hl
(inc b)
ld c, 320-256-x
add hl, bc
ex de, hl
dec a
jr nz, CopyLine

:troll:


Why you inc b and you subtract to c 256 ? :p

Re: Snake en assembleur

Message non luPosté: 09 Mar 2017, 20:20
de Dark coco
Aujourd’hui décidément, :? . Je rencontre un petit problème et donc je manque de registre .
Voilà pour contrer ça j'utilise la pile :p , mais quand il faut récupérer le contenu d'un registre en particulier cela devient assé difficile .
Bon voilà le problème :

j'ai 5 instructions qui sont entré dans cette ordre "DE","BC",BC,HL,"AF" et je veux récupéré ceux qui son entre guillemet sachant que c'est dernier entrer premier sortie . Et je dispose de AF,BC,DE,HL

Donc pour illustrer:
PUSH DE
PUSH BC
PUSH BC ; ça peut paraitre bizard mais c'est bien cette ordre . :p
PUSH HL
PUSH AF

Je ne sais pas si c'est possible mais bon je veux bien votre avis :p .
Merci

Re: Snake en assembleur

Message non luPosté: 09 Mar 2017, 21:56
de Epharius
Eh bien oui, il n'y a aucune raison que ça ne marche pas. Pourquoi ? Pense aussi que tu peux utiliser IX.

Re: Snake en assembleur

Message non luPosté: 09 Mar 2017, 23:35
de Dark coco
Merci je viens de résoudre Le problème j'avais complètement oublier les registres IX et IY merci :p

Re: Snake en assembleur

Message non luPosté: 10 Mar 2017, 09:31
de Epharius
Fais attention cependant en utilisant IY car il est utilisé pour les flags (genre set 7, (IY+9) tas du voir ça quelque part), je ne sais pas si c'est nécessaire de le restaurer à la fin de ton programme (avec D00080) mais bref, si tu utilises IY fais gaffe :P

Re: Snake en assembleur

Message non luPosté: 10 Mar 2017, 10:16
de TheMachine02
Oui c'est nécessaire de le restaurer sinon ça crash au retour. Au moins tu peux l'utiliser même avec les interruptions systèmes maintenant.

Re: Snake en assembleur

Message non luPosté: 12 Mar 2017, 00:32
de Dark coco
Ok je vais faire attention quand j'utiliserai le registre IY :p sinon j'ai bientôt finit le coeur du programme ( la gestion des touches et l'affichage) :) . J'utilise une matrice pour l'effacement et les autres sprites qui suivent (corps, changement de direction, la queue) . Par contre j'aurait besoin de conseil pour les détections de collisions (pomme, les serpents qui touche les bords.
Merci de votre aide :) .

Re: Snake en assembleur

Message non luPosté: 12 Mar 2017, 11:06
de Epharius
Si c'est stocké dans une matrice tu peux simplement comparer la position du sprite avec ce qu'il y a dans la matrice.
Si tu veux faire simple (mais contraignant) tu peux juste récupérer la couleur qu'il y a devant le snake et voir si c'est la couleur de la pomme d'un mur etc.

Re: Snake en assembleur

Message non luPosté: 12 Mar 2017, 21:48
de Dark coco
Ok, merci, je vais faire ça :p . J'ai enfin fini la partie d'affichage des sprites avec le réglage de la matrice . Voici, le code B-) :D http://pastebin.com/qsZYyAPw, si vous pensez qu'il y a plus rapide, par exemple au lieu d'utiliser la pile à certain endroit je ne sais pas si utiliser la SafeRAM Areas serais mieux :) .
Bon je sais qu'il est imbuvable mais vous avez l’habitude avec ce que vous faîtes comme code :D .
Je n'ai pas encore réalisé les sprites, ni les adresses de la matrice, ni la position des pointeurs . >:]

Re: Snake en assembleur

Message non luPosté: 17 Mar 2017, 22:38
de Dark coco
Bonsoir,

Je rencontre un petit soucis :) . Je dois récupérer une valeur ne dépassant pas 450, pour cela je voulais utilisé AND pour sélectionner les bits . Et c'est là que vient le problème c'est que je ne peux pas avoir accès à Hyper bite :troll: . Je comptais passer par des push et des POP :
PUSH HL ; ->HLU, H, L
POP AF ; <- HLU, H
;Instruction
PUSH AF ; -> HLU, H
POP HL ; <- HLU, H, L


mais je ne sais pas si ça marche comme ça . :)
Merci de votre aide . :p