π
<-

Un PONG en ASM z80 avec Mimas

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

Un PONG en ASM z80 avec Mimas

Unread postby 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


Et le code source du fichier:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
;#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


Voilà, si quelqu'un peut m'aider, je lui en serais reconnaissant,
Merci
You do not have the required permissions to view the files attached to this post.
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Unread postby 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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: Un PONG en ASM z80 avec Mimas

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Unread postby 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.
User avatar
TheMachine02Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 30%
 
Posts: 342
Images: 0
Joined: 16 Jan 2013, 18:27
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Médecine

Re: Un PONG en ASM z80 avec Mimas

Unread postby Ti64CLi++ » 25 Jan 2017, 18:18

Ah, donc il faudrait que je fasse des push/pop avant et après chaque bcall?
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Unread postby 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
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: Un PONG en ASM z80 avec Mimas

Unread postby Ti64CLi++ » 25 Jan 2017, 18:21

Ok, je vais regarder, et essayé, je vous redis demain
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Un PONG en ASM z80 avec Mimas

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi


Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 3 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
966 utilisateurs:
>932 invités
>28 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)