180

Bon je pense pas que ce soit un compte que j'ai créé, j'ai essayé tous les mots de passe/emails que j'utilise et rien ne marche... Donc je me suis inscrit avec le pseudo "deeph-".

github a quand même l'air moins pratique que google code, non ? Ah et il faut que je réinstalle tortoisesvn maintenant.
chickendude (./179) :
Maintenant il faut l'assembler "case-sensitive" (-A avec spasm, je compile avec "spasm -DFR pokemon_app.z80 pokemon.8xk -A -T")

Justement j'ai commencé à nettoyer pas mal le code par rapport à ça (notamment ti83plus.inc).

181

Bon j'ai nettoyé tout le code pour être compatible avec ti83plus.inc (voir le dernier commit), j'espère que nous n'avons pas généré trop de conflits..

Et oui, SVN me semble plus simple, avec Git je crois qu'il faut faire un commit et puis "push"-er ton commit, je comprends pas vraiment comment ça marche ni pourquoi c'est comme ça, mais au moins GitHub n'est pas (encore) bloqué ici.

Je t'ai ajouté comme contributor smile

182

J'ai ajouté les animations du joueur, maintenant je vais aborder les menus.

Ah, et une autre chose qui m'a plu du code de Robot War c'est que chaque fois qu'il y a un appel à une routine dans un autre fichier, le nom du fichier est ajouté, comme ci : call load_map ; load map 0, coords 0,0 [engine.inc]
Je vais essayer de suivre ce style, c'est très util plus tard pour te retrouver dans ton code (ou pour d'autres personnes).

EDIT : Maintenant le menu principal fonctionne bien. Il reste encore quelques autres morceaux de SMC, mais bientôt la routine de menu fonctionnera comme avant smile

EDIT : Le menu de pokémon commence à prendre forme et les dialogues marchent sans problèmes ! J'avais oublié que l'on ne peut pas se servir de _vPutS si ton string est dans flash mur

183

Génial, merci ! top

Pour ma part hormis le nettoyage/réarrangement du code, je n'ai toujours pas eu le temps de faire grand chose. Ce week-end il faut que je trouve le temps, parce qu'en semaine avec le boulot c'est juste pas possible :/

184

Les submenus marchent bien, et en plus maintenant ils sont plus faciles d'utiliser smile
jVOJ

EDIT : J'ai fait l'écran de stats, mais je ne suis pas sûr comment tu gères les stats comme ATK, DEF, etc., est-ce que pour chaque niveau tous les pokémons (d'un même type) ont les mêmes stats ?

185

Comme d'hab', c'est parfait top

Pour les stats, oui elles sont identiques à tous les individus d'une même espèce de pokémon en fonction de leur niveau. Faire autrement serait trop compliqué pour un jeu TI je pense.

C'est pour ça qu'elles ne sont pas stockées, parce qu'on peut les calculer dès que nécessaire. Il me semble que la formule est déjà codée (avec les OPs notamment), il s'agit de celle-ci : http://www.pokepedia.fr/index.php/Calcul_des_statistiques .

186

Oui je l'avais vu, mais je m'y suis perdu fou Ne serait-il plus simple de donner chaque pokémon ses propres stats et les augmenter à chaque niveau (ou avec certains items) ? Bon si c'est déjà codé je suppose que je peux essayer de l'intégrer avec la routine de menus. Est-ce le même calcul pour chaque stat ? Quelle routine/avec quels paramètres dois-je appeler ? calculate_stats,hl = valeur base du stat ?

187

Je ne sais pas si ce serais plus simple, en tout cas ça prendrai plus de place.

D'ailleurs si je me souviens bien, les stats d'attaque et de défense n'ont pas besoin d'être calculées, elles n'évoluent pas en fonction du niveau, ce sont les dégâts qui en sont influencés : http://www.pokepedia.fr/index.php/Calcul_des_d%C3%A9g%C3%A2ts .

Les stats de chaque pokémon sont disponibles ici : http://www.pokepedia.fr/index.php/Liste_des_Pok%C3%A9mon_par_statistiques_de_base

edit : J'ai un peu réarrangé le code et rendu quelques noms de variables/routines plus explicites. Par contre je n'arrive pas à compiler, spasm reste bloqué à "pass one..." :/

Mon batch :

spasm -T -A -D FR pokemon.z80 pokemon.8xk
pause

188

Tu as quels erreurs ? Et quelques des noms sont extremement longs, tu ne crois pas que c'est plus compliqué comme ça ? Je crois que "drawPlayer" est plus facile de souvenir (et d'écrire) que "sprites_draw_player_on_map_unaligned_xor". Pour être plus explicite on peut se sert des comments wink

Il semble que tu as changé le ti83plus.inc ?

EDIT : Essaie avec le dernier commit

189

Je n'ai aucune erreur, ça reste juste sur le "pass one...".

Et oui il ne faut pas non plus des noms à rallonge, mis à part peut être pour des labels "internes" aux routines. Si tu en vois n'hésites pas à la changer. Par contre personnellement je préfère éviter les noms avec des majuscules au milieu, je trouve ça plus lisible d'utiliser un underscore ("draw_player").

Et oui j'ai un peu nettoyé le ti83plus.inc (les noms des romcalls sont en minuscules maintenant, je trouve ça plus simple à écrire et ça évite beaucoup d'erreurs avec l'option sensible à la casse).

Je vais essayer avec le nouveau commit.

edit : non ça ne marche toujours pas... Tu compiles ça comment sous linux ?

190

J'ai utilisé la même commande que toi, "spasm -T -A -D FR pokemon.z80 pokemon.8xk".

C'est bizarre, tu utilises spasm1 ou spasm2 ?

191

192

Je crois que c'est une erreur avec ti83plus.inc, essaie de commenter le '#include "ti83plus.inc"'.

EDIT : Peut-être le fichier est trop grand pour spasm ? Si tu enleves tout après la ligne 1918 dans ti83plus.inc, ça marche ?

193

Apparemment l'erreur vient bien de ti83plus.inc, parce que ça marche avec l'ancien (sans la casse) sad

Mais je ne vois pas où est le problème.

edit : Il y avait quelques erreurs mais ça ne fonctionne toujours pas : ti83plus.inc.

194

Je crois qu'il y avait trop de #DEFINEs, je les ai remplacé avec des ='s, voyons si ça marche pour toi.

195

J'essairai mais je pense pas que le compilo fasse la différence entre les différentes déclarations de constantes. Mais si c'est ça c'est dommage je trouve ça moins propre.

196

Il y a une différence, par exemple:

var1 = 1
var2 = var1+1
var3 = var2+1
var4 = var3+1
..etc.

L'assembleur traite ça comme :
var1 = 1
var2 = 1+1
var3 = 2+1
var4 = 3+1
C'est-à-dire, chaque fois que tu écris "var3", spasm le remplace avec un "3".

#define par contre est comme-ci :
#define var1 1
#define var2 var1+1
#define var3 var2+1
#define var4 var3+1
L'assembleur fait comme-ci :
var1 = 1
var2 = var1+1 = 1 + 1
var3 = var2+1 = var1+1+1 = 1+1+1
var4 = var3+1 = var2+1+1 = var1+1+1+1 = 1+1+1+1
C'est-à-dire, on insère le texte exact dans le code avec un #define pendant qu'avec la déclaration avec "=", on a un numéro. Si j'écris "ld a,var4", premièrement l'assembleur cherche la valeur de var4, qui est "var3+1". Puis il cherche la valeur de var3, puis celle de var2 et finalement celle de var1. Je crois qu'il y a peut-être un overflow quelque part quand Spasm essait de lire ti83plus.inc (à cause de tous les #defines).

Je sais pas si je m'ai bien expliqué, mais il existe une vraie différence entre les deux méthodes de déclarations. L'un insère une valeur absolue pendant que l'autre simplement insère ce que tu as écrit, exactement comme tu l'as écrit. Dans mon exemple, var3 insérera "var2+1" et pas "3".

197

Mince, ok c'est ça le bug, je modifierai ça ce soir. Merci smile

198

Hier soir j'ai modifié ti83plus.inc, essaie avec la dernière version sur GitHub, j'espère que ça marchera.

199

Bon ça ne marche toujours pas, même en ayant corrigé quelques petits trucs, mais je vais reprendre l'ancien include qui marche et simplement tout mettre en petits caractères.

200

J'ai pas encore trouvé le temps de bosser sur Pokémon, mais demain et ce weekend je devrais avoir pas mal de temps. Tu as pu régler tout pour pouvoir assembler ?

201

Oui ça marche maintenant smile

De mon côté c'est pareil, je n'ai vraiment pas beaucoup de temps libre hormis le week-end.

Apparemment la carte défile un peu trop sur le côté (elle n'est pas clippée comme avant), si j'ai le temps je pense regarder comment modifier ça.

202

Je ne sais pas ce que tu veux dire, tu peux me montrer un screenshot ?

203

ov90

Il y a une colonne de tiles en trop à droite de l'écran il me semble.

204

Ah, je ne m'avais pas rendu compte, j'avais oublié de vérifier si l'on est arrivé à la fin de la carte. Je crois que je l'ai réglé... mais je ne sais vraiment pas comment utiliser git wink SVN est beaucoup plus simple, à mon avis.

205

J'ai commencé à simplifier les calculs un peu, par exemple pour les PV :
	push af
		add a,a					; a * 2
		ld e,(hl)
		call mult_a_e			; hl=a*e -- (2*LVL)*BASE
		ld c,100
		call div_hl_c			; hl=hl/c -- (2*LVL*BASE)/100
	pop af
	add a,10
	ld c,a						; div_hl_c ends with a djnz, so b=0
	add hl,bc
...mais il y a un petit problème, tes calculs ne peuvent pas dépasser un octet (tu les mets dans a), mais je crois que les PV par exemple sont plus grands (la statistique de base des PV de Chansey (Leveinard ?) est 250). Je crois qu'il faudra utiliser deux octets.

Ah, et je ne trouve plus l'option "z80" dans les boîtes de code.

EDIT : Je crois que j'ai converti les PV à des valeurs de 2 octets avec succès, mais ta routine d'avant arrondit les numéros, donc maintenant bulbizarre a 11 PV au niveau 1, et pas 12.

206

Oui je crois que c'était un problème déjà évoqué, c'est cool que tu l'ais réglé top
chickendude (./205) :
Ah, et je ne trouve plus l'option "z80" dans les boîtes de code.

Comment ça ?
chickendude (./205) :
mais ta routine d'avant arrondit les numéros, donc maintenant bulbizarre a 11 PV au niveau 1, et pas 12.

Tant mieux si ça colle un peu mieux avec les stats officiels smile

207

deeph (./206) :
chickendude (./205) :
Ah, et je ne trouve plus l'option "z80" dans les boîtes de code.

Comment ça ?

Quand je veux ajouter un code source (le bouton "code" ici dans le forum) la dernière option que je vois c'est "SQL", je ne peux pas choisir "z80" parce que cette option n'existe plus.

Je vais avoir un peu de temps ce weekend, j'essayerai de finir les menus et les stats, ainsi nous pourrons continuer avec des choses plus intéressantes wink J'ai ajouté une routine pour convertir un numéro en décimal et maintenant que j'ai reécrit les routines pour calculer les stats je sais comment tout marche et ajouter les autres stats (atk, exp, def) ne devrait pas être trop difficile. Mais il faut aussi que nous ajoutions la stat "spéciale" et la vitesse. J'ai lu que les versions red/blue n'avaient qu'une stat spéciale (c'est-à-dire que Sp.Atk et Sp.Def sont toujours les mêmes).

Il y avait d'autres choses aussi, mais maintenant il est trop tard et je les ai oubliées wink

208

Ah ok il faut que je le signale aux admins de yN smile

Sinon c'est cool que tu sois motivé pour finir ce jeu, en ce qui me concerne il va falloir que je relise tout le code source parce que ça fait vraiment longtemps que je n'y ai pas touché. Et je pense qu'il va me falloir un peu de temps pour assimiler et comprendre toutes tes optimisations wink

Je vais essayer de trouver le temps ce week-end pour programmer.

209

Je crois qu'il faut pas relire tout, on peut avancer peu à peu (comme j'ai fait moi). Quand je finirai les menus, je veux me concentrer plus sur avancer que sur optimiser, comme ça je crois que nous pourrons trouver plus de motivation pour continuer. Mais tu avais déjà fait beaucoup de choses, les évolutions, les batailles, etc. Si l'on ajoute les shops et "l'attrapage" de pokémon, on pourra offrir un vrai jeu.

EDIT: Je viens de voir ceci :
http://bulbapedia.bulbagarden.net/wiki/Pok%C3%A9mon_base_stats_data_structure_in_Generation_I
Offset 		Contents 		Size
0x00 		Pokédex number 		byte
0x01 		Base HP 		byte
0x02 		Base Attack	 	byte
0x03 		Base Defense 		byte
0x04 		Base Speed 		byte
0x05 		Base Special 		byte
0x06 		Type 1 			byte
0x07 		Type 2 			byte
0x08 		Catch rate 		byte
0x09 		Base Exp. Yield 	byte
0x0A 		Dimensions of frontsprite 	byte
0x0B 		Pointer to frontsprite 	word
0x0D 		Pointer to backsprite 	word
0x0F-0x12 	Attacks known at lv. 1 	4 bytes
0x13 		Growth rate 		byte
0x14-0x1A 	TM and HM flags 	7 bytes
0x1B 		Padding 		byte 
On peut utiliser plus ou moins le même formate, qu'en penses-tu ? (mais je crois que nous n'avons pas besoin des choses liées aux sprites)

EDIT :
bulbasaur:
	.dw bulbasaur_txt
	.db 45				; HP
	.db 49				; Att
	.db 49				; Def
	.db 45				; Speed
	.db 65				; Special
	.db TYPE_GRASS		; Type 1
	.db TYPE_POISON		; Type 2
	.db 45				; Catch rate
	.db 64				; Base EXP yield
	.db LVL_MED_SLOW	; Growth rate
	.dw bulbasaur_attacks
	.db 0,0,0,0,0,0,0	; TM/HM flags
	.db 16				; evolution level

210

Oui ce format est bien, de souvenir je n'utilisai juste pas les stats spéciales (et pas encore le "catch rate"). Par contre il faudra coder les CT/CS (TM/HM) aussi du coup.