1

Bonjour, je suis très heureux de dire que j'ai appris l'asm hier soir ! OUAIS. Mais j'ai un problème : pour faire un jeu je sais pas par ou commencer... A part effacer l'écran et mettre que c'est moi qui l'est créé je sais pas trop comment faire. Alors quelqu'un pourrait-il m'aider pour les bases d'un jeu ? Même un jeu nul ou facile. Merci d'avance pour vos réponses voilà mon adresse MSN pour ceux que sa interresse : clad_77@hotmail.fr

2

Hmm

Alors deja la vaste majorité des jeux fonctionnent sur une boucle principale du type :

Effacer l'écran
Voir ce qu'il se passe au niveau des touches et agir en conséquence (chenger position du joueur etc)
Faire bouger les ennemis ou le décor, actualiser le score etc.
Tout dessiner
Mettre l'affichage à jour
Recommencer...


voila voila
-pacHa

3

"j'ai appris l'asm hier soir"
Impressionant... Il m'a fallu plus de temps...

4

Ouais mais moi j'ai lu le super tuto 'L'asm pour le nul" ! Sinon j'ai fait un truc avec gLre :
#define xsprite saferam1
#define ysprite xsprite+1
#define autre ysprite+1
.NOLIST
#define end .end
#define END .end
#define equ .equ
#define EQU .equ
#include "ti83asm.inc"
#include "tokens.inc"
.LIST
.org 9327h
ld a,10
ld (xsprite),a
ld (ysprite),a
start:
call _clrLCDfull
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
bit 0,a
call z,bas
bit 1,a
call z,droite
bit 2,a
call z,gauche
bit 3,a
call z,haut
ld b,16
ld a,(xsprite)
ld l,a
ld a,(ysprite)
ld c,16
ld ix,sprite
call ionputsprite
call ionfastcopy
jp start

haut:
push af
ld a,(Ysprite)
dec a
ld (ysprite),a
pop af
ret

bas:
push af
ld a,(Ysprite)
inc a
ld (ysprite),a
pop af
ret

droite:
push af
ld a,(xsprite)
inc a
ld (xsprite),a
pop af
ret

gauche:
push af
ld a,(xsprite)
dec a
ld (xsprite),a
pop af
ret
sprite:
.db %0001100000011000
.db %0010011111100100
.db %0010100000010100
.db %0010010000100100
.db %1110010000100111
.db %1010010000100101
.db %1010000110000101
.db %1001000110001001
.db %1010000000000101
.db %0100000000000010
.db %0010010000100100
.db %0011100000011100
.db %0001001111001000
.db %0001000110001000
.db %0001000110001000
.db %0000111111110000

.end END


Mais sa bug, quand je le compile il se passe rien et la calculette se bloque.
Vous savez pourquoi ? Merci de vos réponse

PS : j'ai mis des tabulations mais sa se vois pas ici.

5

Ton sprite doit etre séparé en "8", je veux dire par la que tu dois faire des sprite de largeur de multiple de 8
si ton sprite fais 16 de largeur par exemple, tu fera :
.db %00000000 %00000000
Ah ah ! Sacré Gödel, il avait l'idée de vouloir mettre au chômage tous les mathématiciens ce fourbe !

6

Et si c'est un sprite de plus de 8 de largeur, faut appeler ionlargesprite, pas ionputsprite
Et faut effacer ton graphbuffer en dehors de la boucle smile
Ah ah ! Sacré Gödel, il avait l'idée de vouloir mettre au chômage tous les mathématiciens ce fourbe !

7

Bon voilà, j'ai modifier tout ce qui me semblait bon de faire et j'ai obtenu ça :
.NOLIST
#define end .end
#define END .end
#define equ .equ
#define EQU .equ
#include "ti83asm.inc"
#include "tokens.inc"
#include "ion.inc"
#define xsprite saferam1
#define ysprite xsprite+1
#define autre ysprite+1
.LIST
#ifdef TI83P
.org progstart-2
.db $BB,$6D
#else
.org progstart
#endif
xor a
jr nc,prog_start
decription:
.db "MOG",0

prog_start:
.org 9327h
ld a,1
ld (xsprite),a
ld (ysprite),a
call_clrLCDfull
directinput:
ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
bit 0,a
call z,gauche
bit 1,a
call z,bas
bit 2,a
call z,haut
bit 3,a
call z,droite
ld b,16
ld a,(xsprite)
ld l,a
ld a,(ysprite)
ld c,16
ld ix,sprite
call ionlargesprite
call ionfastcopy
jp directinput

haut:
push af
ld a,(ysprite)
dec a
ld (ysprite),a
pop af
ret

bas:
push af
ld a,(ysprite)
inc a
ld (ysprite),a
pop af
ret

droite:
push af
ld a,(xsprite)
inc a
ld (xsprite),a
pop af
ret

gauche:
push af
ld a,(xsprite)
dec a
ld (xsprite),a
pop af
ret
sprite:
.db %00011000 %00011000
.db %00100111 %11100100
.db %00101000 %00010100
.db %00100100 %00100100
.db %11100100 %00100111
.db %10100100 %00100101
.db %10100001 %10000101
.db %10010001 %10001001
.db %10100000 %00000101
.db %01000000 %00000010
.db %00100100 %00100100
.db %00111000 %00011100
.db %00010011 %11001000
.db %00010001 %10001000
.db %00010001 %10001000
.db %00001111 %11110000

.end END


Mais ça bug toujours, de plus lorsque j'essaye en enlevant le truc de ION, je fait :
send(9prgmMOG


Et sa marche toujours pas... Bref je vois pas ou est le problème.
Qui peu m'aider ?

8

La compilation se passe-t-elle bien ? (aucun message d'erreur ?, sinon, lesquels ?)

C'est quoi ça :
.org progstart-2
.db $BB,$6D
?

"call_clrLCDfull" pas bon
bcall(_clrLCDfull) bon (tu programmes, entre autres, sur 83+)

Même remarque pour IonFastCopy et IonLargeSprite

9

Non je programme sur 83, mais comme je l'ai fait avec gLre et qu'il programme sur 83+, on a un peu tout mélanger dans le programme... fou
Enfaite j'utilise pas le compileur qui bug souvent avec tout les fichier a rajouter, j'utilise zapp83, il est bien mieu et il y a jamais eu d'erreur a la compilation.
Est-ce que quelqu'un peux réecrire le prog comme il faut ? J'aimerai vraiment que cela marche, de plus les tuto que j'ai lu apprenait a programmer une TI 83+ alors que moi je veut programmer pour les 83... Mais bon a part l'adresse de démarage et le bcall(_clrLCDFull) qui devient call_clrLCDFUll je vois pas ce qui doit changer d'autre. Merci de m'aider a y voir plus clair...

10

Si la compilation fonctionne, le problème vient de la logique du programme (ou de l'exécution défaillante de la logique du programme). Là, c'est plus génant, parce que sans commentaires, il est difficile à quelqu'un de se mettre à chercher les erreurs, car ce quelqu'un doit comprendre la logique du programme à partir d'un code qui est défaillant... Pas facile sans commentaires...

11

Heu tu peux préciser ? Comme je viens juste de "commencer" à apprendre l'Assembleur, je vois pas trop ce qui ne va pas, et même pour moi c'est difficile de comprendre ce qui ne va pas dans mon prog... Ce serait bien qu'un bon programmeur vienne m'aider pour ce prog...

12

Ce que je veux dire, c'est que tu devrais indiquer, pour chaque partie du code, ce qu'il est censé faire pour que les programmeurs plus confirmés puissent te dire ce qui ne va pas. Parce que là, ça donne pas envie de se taper toute la compréhension de ce que tu veux faire, pour ensuite voir pourquoi ça le fait pas.

13

normalement ca doit marcher si tu le réécri ton code comme ceci. essai de comprendre, et pour les jeux tou est logiques, défini ce que tu veux faire et tu réfléchi et tu dois trouver pour les jeux simples.

.NOLIST
#define end .end
#define END .end
#define equ .equ
#define EQU .equ
#include "ti83asm.inc" ; me semble ici que seul ion.inc suiffit sinon il y aura des duplications doubles de variables
#include "tokens.inc"
#include "ion.inc"

#define xsprite saferam1
#define ysprite xsprite+1
#define autre ysprite+1

.LIST

#ifdef TI83P ; entete de ion, je suis plus trop sur , programme plus sur 83 depuis longtemps
.org progstart-2
.db $BB,$6D
#else
.org progstart
#endif
xor a
jr nc,prog_start
decription:
.db "MOG",0

prog_start:

;; déja on met pas deux entetes

ld a,1
ld (xsprite),a
ld (ysprite),a

directinput:

ld a,$FF
out (1),a
ld a,$FE
out (1),a
in a,(1)
bit 0,a
call z,gauche
bit 1,a
call z,bas
bit 2,a
call z,haut
bit 3,a
call z,droite

; ta oublier de mettre une condition de fin, tu ne pourra que quitter en enlevant les piles. donc teste d'autres touches

call_clrLCDfull
ld b,16
ld a,(xsprite)
ld l,a ; me semble aussi que x est dans a et y est dans l
ld a,(ysprite)
ld c,2 ; 2 car la largeur fait 2 octet ( 16 bit )
ld ix,sprite
call ionlargesprite
call ionfastcopy
jp directinput

haut:
push af ; inutile mais bon ces pas grave
ld a,(ysprite)
dec a
ld (ysprite),a
pop af
ret

bas:
push af
ld a,(ysprite)
inc a
ld (ysprite),a
pop af
ret

droite:
push af
ld a,(xsprite)
inc a
ld (xsprite),a
pop af
ret

gauche:
push af
ld a,(xsprite)
dec a
ld (xsprite),a
pop af
ret

sprite:

.db %00011000, %00011000 ; ta oublier les virgules
.db %00100111, %11100100
.db %00101000, %00010100
.db %00100100, %00100100
.db %11100100, %00100111
.db %10100100, %00100101
.db %10100001, %10000101
.db %10010001, %10001001
.db %10100000, %00000101
.db %01000000, %00000010
.db %00100100, %00100100
.db %00111000, %00011100
.db %00010011, %11001000
.db %00010001, %10001000
.db %00010001, %10001000
.db %00001111, %11110000

.end
END

14

Tu as bien du courage, Mcbeach

15

( ou alors il se fait chier cheeky )
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

16

Rha devinez quoi ? Sa bug encore. Bha je croit que je vais laisser tomber. C'est trop dur, je vais me mettre a un autre programme. Merci quand même.

17

Vas-y par étape... Je veux dire, par étapes encore plus petites que celle-ci et surtout, n'abandonne pas... smile

COURAGE

18

T'inquietes, en programmation a chaque fois qu'on abandonne on y revient toujours (a condition de pas supprimer le debut de prog evidemment).
<-- et à votre gauche une superbe peinture pointilliste du XVIe siècle #sisi# représentant - vous l'aurez deviné - une banane ...
http://www.ti83plus.online.fr/home.php...

19

qu'est-ce qui marche pas deephroat? c'est qu'oi les erreurs que t'obtient?

au fait je me suis trompé quelque part , remplace le call _clrlcdfull par call _grbufclr pour effacer plutot le buffer au lieu de l'écran. mais normalement devrais pas y avoir de bug

20

Enfait ION ne veut pas lancer le programme ça bloque Ion et pis y'a écrit "done" et je peux plus lancer ION. Bon je sais c'est dur mais presque tout le monde programme en 83+ et pour moi c'est difficile d'avoir de l'aide pour les 83. Ensuite pour les jeux il faudrait deja que les programme sans shell je croit rien qu'avec send(9prgmPRGM. Bon bha voilà @+

21

c'est peut-etre parcque c'est un ti 82 stat.., t'aurais pu preciser au lieu de dire que c'était une 83
Ah ah ! Sacré Gödel, il avait l'idée de vouloir mettre au chômage tous les mathématiciens ce fourbe !

22

Mais non j'utilise l'émulateur pour que ça ne prenne pas trop de temp. Mais bon j'utilise la ROM 83 puisque la 82 STATS est trop dur a avoir.

23

ok
Ah ah ! Sacré Gödel, il avait l'idée de vouloir mettre au chômage tous les mathématiciens ce fourbe !