π
<-
Chat plein-écran
[^]

Un PONG en ASM z80 avec Mimas

Assembleur, Axe, C/C++, ICE...

Un PONG en ASM z80 avec Mimas

Message non lude Ti64CLi++ » 25 Jan 2017, 12:03

Bonjour,
Je me suis remis à l'ASM z80 depuis quelque temps, et ai décidé de créer un PONG, jeu plutôt connu de la communauté.
Je programme surtout oncalc, donc ce programme à été développé avec Mimas.
Seulement, après être compilé, le programme ne fait pas du tout ce que je voudrais.
Voici le code source en .8xv :
PONG.8xv
(1.1 Kio) Téléchargé 47 fois


Et le code source du fichier:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Tout sélectionner
;#SECTION "MAIN", CODE

   org   userMem - 2
   db   0BBh, 6Dh
Pal1_x equ   8265h
Pal1_y equ   8267h
Pal2_x equ   8269h
Pal2_y equ   8271h
B_x equ   8273h
B_y equ   8275h
V_x equ   8277h
V_y equ   8279h
Start:
   B_CALL   _ClrLCDFull
   ld   hl, 0
   ld   (Pal1_x), hl
   ld   hl, 92
   ld   (Pal2_x), hl
   ld   hl, 46
   ld   (B_x), hl
   ld   hl, 26
   ld   (Pal1_y), hl
   ld   (Pal2_y), hl
   ld   hl, 30
   ld   (B_y), hl
   ld   hl, 1
   ld   (V_x), hl
   ld   (V_y), hl
   ld   c, 1
Draw:
   ld   a, (Pal1_x)
   ld   l, a
   ld   b, 2
   add   a, b
   ld   e, a
   ld   a, (Pal1_y)
   ld   h, a
   ld   b, 10
   add   a, b
   ld   d, a
   B_CALL   _DrawRectBorder
   ld   a, (Pal2_x)
   ld   l, a
   ld   b, 2
   add   a, b
   ld   e, a
   ld   a, (Pal2_y)
   ld   h, a
   ld   b, 10
   add   a, b
   ld   d, a
   B_CALL   _DrawRectBorder
   ld   a, (B_x)
   ld   l, a
   ld   b, 1
   add   a, b
   ld   e, a
   ld   a, (B_y)
   ld   h, a
   ld   b, 1
   add   a, b
   ld   d, a
   ld   a, c
   cp   1
   push   bc
   call   z, DrawRECT
   pop   bc
   ld   a, c
   cp   1
   call   nz, ClearRECT
Loop:
   ld   c, 0
   call   Draw
   ld   a, (V_x)
   ld   b, a
   ld   a, (B_x)
   add   a, b
   ld   (B_x), a
   ld   a, (V_y)
   ld   b, a
   ld   a, (B_y)
   add   a, b
   ld   (B_y), a
   ld   a, (V_y)
   ld   b, a
   ld   a, (Pal2_y)
   add   a, b
   ld   (Pal2_y), a
   call   Draw
Test:
   B_CALL   _GetCSC
   cp   skUp
   jp   z, Up
   cp   skDown
   jp   z, Down
   cp   skClear
   jp   z, Quit
   cp   skEnter
   call   z, Pause
   ld   a, (B_x)
   cp   3
   jp   z, Pal1B_H
   cp   91
   jp   z, Pal2B_H
   ld   a, (B_y)
   cp   0
   jp   z, B_Hy
   cp   61
   jp   z, B_Hy
   jp   Loop

Up:
   ld   c, 0
   call   Draw
   ld   a, (Pal1_y)
   cp   0
   jp   z, Loop
   sub   1
   ld   (Pal1_y), a
   ld   c, 1
   call   Draw
   jp   Loop

Down:
   ld   c, 0
   call   Draw
   ld   a, (Pal1_y)
   cp   52
   jp   z, Loop
   add   a, 1
   ld   (Pal1_y), a
   ld   c, 1
   call   Draw
   jp   Loop

Pal1B_H:
   ld   a, (Pal1_y)
   ld   b, a
   ld   a, (B_y)
   cp   b
   jp   m, Loop
   ld   a, 10
   add   a, b
   ld   b, a
   ld   a, (B_y)
   cp   b
   jp   p, Loop
   ld   a, (V_x)
   cp   1
   call   z, Moins1
   ld   a, (V_x)
   cp   -1
   call   z, Plus1
   jp   Loop

Pal2B_H:
   ld   a, (Pal2_y)
   ld   b, a
   ld   a, (B_y)
   cp   b
   jp   m, Loop
   ld   a, 10
   add   a, b
   ld   b, a
   ld   a, (B_y)
   cp   b
   jp   p, Loop
   ld   a, (V_x)
   cp   1
   call   z, Moins1
   ld   a, (V_x)
   cp   -1
   call   z, Plus1
   ld   (V_x), a
   jp   Loop

Moins1:
   ld   a, -1
   ret

Plus1:
   ld   a, 1
   ret

B_Hy:
   ld   a, (V_y)
   cp   1
   call   z, Moins1
   ld   a, (V_y)
   cp   -1
   call   z, Plus1
   ld   (V_y), a
   jp   Loop

Pause:
   push   af
   push   bc
   push   de
   push   hl
L_Pause:
   B_CALL   _GetKey
   cp   kEnter
   jr   nz, L_Pause
   pop   hl
   pop   de
   pop   bc
   pop   af
   ret

Quit:
   ret

;#SECTION "DRAW", CODE

ClearRECT:
   B_CALL   _DrawRectBorderClear
   ret

DrawRECT:
   B_CALL   _DrawRectBorder
   ret



Et le programme compilé:
PONG.8xp
(476 Octets) Téléchargé 30 fois


Voilà, si quelqu'un peut m'aider, je lui en serais reconnaissant,
Merci
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Message non lude Epharius » 25 Jan 2017, 13:01

Si tu veux qu'on t'aide met des commentaires, là ton code fait trois kilomètres avec des noms de variables pas forcément évident à cerner (enfin surtout pal1/pal2 ?)

Et dis ce que ça fait en terme de bug aussi, RAM CLEARED ?...
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7.1%
 
Messages: 1110
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Un PONG en ASM z80 avec Mimas

Message non lude Ti64CLi++ » 25 Jan 2017, 14:31

Bah, en fait, c'est très difficile à expliquer, car ça fait défiler une longue barre au milieu de l'écran :(
Et je m'occupe des commentaires.
Les variable Pal1 sont pour la palette/raquette de gauche et Pal2 sont pour la palette/raquette de droite.
Les variables B_ sont pour la balle ;)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Message non lude TheMachine02 » 25 Jan 2017, 17:49

Même sans commentaire, (et sans regarder le code en précision), le truc qui me saute aux yeux, c'est que tu utilise les bcall de l'OS. Sauf que les bcall de l'os en général détruisent tout les registres, et là manifestement, tu les restaures pas.
Avatar de l’utilisateur
TheMachine02Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 29.4%
 
Messages: 341
Images: 0
Inscription: 16 Jan 2013, 18:27
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Médecine

Re: Un PONG en ASM z80 avec Mimas

Message non lude Ti64CLi++ » 25 Jan 2017, 18:18

Ah, donc il faudrait que je fasse des push/pop avant et après chaque bcall?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Message non lude Epharius » 25 Jan 2017, 18:20

Que pour ceux qui sont nécessaires mais oui. Tu peux t'aider de la doc qui t'indique quels sont les registres utilisés pour chaque romcall (CF wikiti)
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7.1%
 
Messages: 1110
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Un PONG en ASM z80 avec Mimas

Message non lude Ti64CLi++ » 25 Jan 2017, 18:21

Ok, je vais regarder, et essayé, je vous redis demain
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Message non lude Ti64CLi++ » 28 Jan 2017, 16:08

J'ai mis des push/pop devant et après chaque bcall, et j'ai toujours le bug, qui me fait une ligne BLEUE qui monte et qui descend au milieu de l'écran. Elle est bleue, je ne sais pas comment c'est possible :#fou#:
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi


Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 9 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1241 utilisateurs:
>1206 invités
>31 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)