1

Kikou les gens!

I'm back again!

Et cette fois ci, j'aimerais me mettre vraiment a l'asm, et abandonner tous les p'tits progs pour booster mon basic. comme projet pour m'y mettre, ben j'ai choisi un enieme Dance Dance Revolution. C'est pas tres original, mais pas excessivement complique pour m'y remettre.
Voila, c'est juste pour dire que je risque de solliciter votre aide plutot souvent dans les jours a venir.

PS: j'ai un peu commence, je programme avec Chasm parce que j'ai pas le temps sur mon PC. Allez atchao, j'vais bosser mes cours de mirage os ^^

2

Bon en fait Chasm c'est lourd, long, etc. Donc je sacrifie mon heure hebdomadaire de CSS pour programmer sur PC.
Donc la, je revise mes classiques, et je tente de compiler avec TASM. Pour pas compliquer les choses, je fais vite fait un prog meme pas pour ion ou mirage os, juste de l'asm normal.
Et la... Ben rien. Je compile le fichier suivant:

.nolist
#include "ti83plus.inc"
.list

.org 9D95h

b_call(_clrlcdfull)
b_call(_homeup)
ret

.end END



Et ca me donne un fichier .bin et un .lst
Et pas de .hex
Alors je regarde ce qu'il y a dans le .lst, et ca me dit qu'il y a deux erreurs:
0003 0000 .list
0004 0000
0005 9D95 .org 9D95h
0006 9D95
0007 9D95 b_call(_clrlcdfull)
testassembleur.z80 line 0007: unrecognized instruction. (B_CALL(_CLRLCDFULL))
0008 9D95 b_call(_homeup)
testassembleur.z80 line 0008: unrecognized instruction. (B_CALL(_HOMEUP))
0009 9D95 C9 ret
0010 9D96
0011 9D96 .end 0012 9D96 ENDtasm: Number of errors = 2



Voila. Quelqu'un pourrait il me dire ce qui cloche? Chui pas presse, parce que j'ai encore une vingtaine de chapitres d'un tuto a relire, mais si j'arrive meme pas a compiler un prog, je vais etre vite bloque...
Merci d'avance.

3

A mon avis ça viens du 'b_call', essaye plutot 'bcall' (enfin ça dépend du compilo). Au pire essaye ça avec 'bcall', ça devrait marcher.

4

Ok merci. Je viens d'essayer en enlevant le b_call et en mettant bcall, ca marche avec mon compilateur.
Je veux programmer pour ion, donc le tien m'est utile, mais comment definir que je veux qu'il compile pour 83+ et non pour 83 comme il le fait?

5

Là il compile pour TI 83 et TI 83+, les fichiers créés sont respectivement au format '.83p' et '.8xp'.

6

Ben il ne me donne qu'un fichier 83P. J'ai teste avec ton programme "test", pareil.

7

Pour compiler tu fait tape bien 'asm nomduprogramme' dans la fenetre DOS qui s'ouvre avec le fichier 'Compiler.bat' ?

8

heu. Non je cree un fichier dans lequel j'ecris 'asm nomduprogramme', que je nomme start.bat et que je lance. Je vais tenter comme tu dit.

edit: ok, le probleme venait pas de la, mais avec ta maniere, la fenetre dos ne se ferme pas automatiquement, j'ai donc pu lire que l'erreur venait du fait que mon nom de fichier etait plus long que 8 caracteres, ce qui faisait que la version 83 prenait les 8 premieres lettres, pareil pour le fichier .bin, et du coup en voulant compiler la version 83+, ca ne trouvait pas le bon fichier .bin.

Donc probleme resolu, merci a toi.

9

(Sinon pour quitter la fenetre t'as juste à taper 'exit', parce que j'ai rajouter un '@pause' à la fin du fichier ASM pour lire les erreurs, sans quoi ça sert à rien.)

10

Merci bcp, je garde ton compileur, il est mieux que tasm (faut compiler a la main sur la calc avec tasm sad )



Sinon, ben j'ai tout plein de question:
1) comment emuler ion ou mirage os? Parce que sur flash debugguer et sur Vti, ca reconnait ion mais ca ne donne rien a l'execution.
2) ou sauvegarder des donnees de maniere a les garder apres l'arret du programme?
3) Le fastcopy d'ion affiche le buffer a l'ecran en le XORant, ou en ecrasant ce qui est a l'ecran? S'il ecrase, comment mettre du texte dans le buffer?

J'ai d'autres questions, mais je ne me souviens jamais de tout quand je suis devant le PC. Faudrait que je les note.

Mon programme avance doucement, pour l'instant je fais un menu de base (de merde quoi), pas d'intro, juste le moteur du jeu. J'ameliorerais tout quand j'aurais le squelette complet du prog.

11

('Mon' compilo utilise tasm, j'ai juste modifier un peu le bat pour pouvoir le rendre plus pratique à utiliser.)

Alors... Pour émuler Ion ou MirageOS rien ne vaut le nouvel ému de RevSoft : Wabbitemu smile

Ensuite, pour sauvegarder des données, sauf si tu n'utilises pas de shell, il suffit de sauvegarder ça à l'interieur même du programme :

	xor h	; remet à zero h
	ld l,1
	ld (Score),hl

	ld hl,Score
	bcall(_homeUp)
	bcall(_dispHL)
	bcall(_getKey)
	ret

Score:
	.dw 0	; c'est ici que sera stocker une donnée (avec 'dw' pour définir un mot)


Et puis 'ionFastCopy' xor bien la sprite à l'écran (mais c'est modifiable).

Pour écrire dans la graph buffer on peux faire ça avec les petits caractère en activant ce flag :

set textwrite, (iy+sgrflags)

Une fois qu'il est activé t'as juste à écrire comme d'habitude (mais avec 'bcall(_vputs)') puis à le copier à l'écran avec 'ionFastCopy'.

Sinon si tu veux de l'aide pour ton code, demande toujours, je pourrai peut être t'aider.

12

Merci pour ces reponses, je te prends au mot pour ta proposition d'aide, meme si c'est pas pour tout de suite parce qu'il va falloir que je retape toutes les sources. J'vais tacher de les faire moins bordelique et avec plus de commentaires ce coup ci.

edit: j'ai besoin de ton aide plus vite que prevu.
J'essayais de voir ce que donnait le menu vite fait, apparemment y avait quelques problemes. Je les corrige (du moins en partie), et je tente de recompiler, et poum! beh ca veux plus.
Ca m'affiche: temp.z80 line 0001: No END directive before EOF.
Alors juste pour voir je tente de recompiler l'ancienne source et elle marche bien. Si tu vois l'erreur, ou ce que veux dire EOF, dis le moi.

Voici ici la source bugguee qui se compile normalement:
.NOLIST
#include "ion.inc"
#define tbas 04h
#define thaut 03h
#define tenter 05h
.LIST

.org progstart-2
.db $BB,$6D

start:



;headers etc.
;penser a definir les touches thaut / tbas / tenter dans un fichier inc




;affichage du menu

	bcall(_clrlcdfull)
	ld hl,1
	ld (currow),hl
	ld hl,1
	ld (curcol),hl
	ld hl,titre
	bcall(_puts)
	ld hl,3
	ld (currow),hl
	ld hl,5
	ld (curcol),hl
	ld hl,tmenu1
	bcall(_puts)
	ld hl,4
	ld (currow),hl
	ld hl,tmenu2
	bcall(_puts)
	ld hl,5
	ld (currow),hl
	ld hl,tmenu3
	bcall(_puts)
	ld hl,6
	ld (currow),hl
	ld hl,tmenu4
	bcall(_puts)


;deplacement de la fleche au sein du menu

bouclemenu
	bcall(_getkey)
	cp tbas
	jp z,basmenu
	cp thaut
	jp z,hautmenu
	cp tenter
	jp z,entermenu
	jp bouclemenu
basmenu
	ld hl,(currow)
	cp 6
	jp z,bouclemenu
	ld hl,tmenu6
	bcall(_puts)
	ld hl,(currow)
	inc hl
	ld (currow),hl
	ld hl,tmenu5
	bcall(_puts)
	jp bouclemenu
hautmenu
	ld hl,(currow)
	cp 3
	jp z,bouclemenu
	ld hl,tmenu6
	bcall(_puts)
	ld hl,(currow)
	dec hl
	ld (currow),hl
	ld hl,tmenu5
	bcall(_puts)
	jp bouclemenu
entermenu
	ld hl,(currow)
	cp 3
	jp z,oneplayer
	cp 4
	jp z,twoplayers
	cp 5
	jp z,about
	cp 6
	jp z,quit














oneplayer
	ret
twoplayers
	ret
about
	ret
quit
	ret
titre
.db "DANCE ACADEMIE",0
tmenu1
.db "1 player",0
tmenu2
.db "2 players",0
tmenu3
.db "about",0
tmenu4
.db "quit",0
tmenu5
.db ">",0
tmenu6
.db " ",0


.end
END




Et voici la corrigee qui veux pas se compiler la vilaine:
.NOLIST
#include "ion.inc"
#define tbas 04h
#define thaut 03h
#define tenter 05h
.LIST

.org progstart-2
.db $BB,$6D

start:



;headers etc.
;penser a definir les touches thaut / tbas / tenter dans un fichier inc




;affichage du menu

	bcall(_clrlcdfull)
	ld hl,1
	ld (currow),hl
	ld hl,1
	ld (curcol),hl
	ld hl,titre
	bcall(_puts)
	ld hl,3
	ld (currow),hl
	ld hl,5
	ld (curcol),hl
	ld hl,tmenu1
	bcall(_puts)
	ld hl,5
	ld (curcol),hl
	ld hl,4
	ld (currow),hl
	ld hl,tmenu2
	bcall(_puts)
	ld hl,5
	ld (curcol),hl
	ld hl,5
	ld (currow),hl
	ld hl,tmenu3
	bcall(_puts)
	ld hl,5
	ld (curcol),hl
	ld hl,6
	ld (currow),hl
	ld hl,tmenu4
	bcall(_puts)


;deplacement de la fleche au sein du menu

initialisationdonneesflechemenu
	ld de,3
 	push de
bouclemenu
	bcall(_getkey)
	cp tbas
	jp z,basmenu
	cp thaut
	jp z,hautmenu
	cp tenter
	jp z,entermenu
	jp bouclemenu
basmenu
	pop de
	ld hl,de
	cp 6
	jp z,bouclemenu
	ld (currow),hl
	ld hl,3
	ld (curcol),hl
	ld hl,tmenu6
	bcall(_puts)
	ld hl,de
	inc hl
	ld de,hl
	push de
	ld (currow),hl
	ld hl,tmenu5
	bcall(_puts)
	jp bouclemenu
hautmenu
	pop de
	ld hl,de
	cp 3
	jp z,bouclemenu
	ld (currow),hl
	ld hl,3
	ld (curcol),hl
	ld hl,tmenu6
	bcall(_puts)
	ld hl,de
	dec hl
	ld de,hl
	push de
	ld (currow),hl
	ld hl,3
	ld (curcol),hl
	ld hl,tmenu5
	bcall(_puts)
	jp bouclemenu
entermenu
	pop de
	ld hl,de
	cp 3
	jp z,oneplayer
	cp 4
	jp z,twoplayers
	cp 5
	jp z,about
	cp 6
	jp z,quit














oneplayer
	ret
twoplayers
	ret
about
	ret
quit
	ret
titre
.db "DANCE ACADEMIE",0
tmenu1
.db "1 player",0
tmenu2
.db "2 players",0
tmenu3
.db "about",0
tmenu4
.db "quit",0
tmenu5
.db ">",0
tmenu6
.db " ",0


.end
END