150

chickendude > je sais que tout comme moi tu n'as sans doute pas beaucoup de temps pour programmer (ou d'autres projets), mais est-ce que ce serait possible que tu m'explique rapidement comment marche le menu pokémon (est-ce qu'il faut modifier les ID des pokémons via du SMC dans la string du menu avec les tokens ?). Je n'y ai pas trop regardé enfaite, mais j'aimerai bien revenir au point où j'en étais avant toutes les optimisations pour pouvoir avancer smile

Si j'ai 5min je vais reprendre le développement des combats.

edit : j'ai commencé à y regarder, il y avait un problème dans le chargement du bon pokémon (l'ID des pokémons du joueur commence à 1 et non à 0 comme les ID du pokédex), mais pour le reste je ne sais pas trop ce qui cloche : je crois que les nouvelles coordonnées X qui suivent certains tokens (dont _NAME et _LVL) sont mal chargées ou du moins mal affichées (mais je ne vois pas trop où dans le code elles sont chargées justement).

151

Je vais y jeter un coup d'oeuil. J'ai tout le temps du monde pour ce projet si ça veut dire que l'on avance grin

Tu veux dire le menu qui affiche les pokémons de ton équipe ? Il est possible que je ne l'aie pas encore fini tout (l'affichage de tous les stats, par exemple). Je vais regarder.

EDIT : et c'est comme tu veux, mais personnellement je crois que c'est plus claire d'utiliser $0000 pour les numéros 16-bits, comme ça tu es sûr qu'il est 2 octets et pas 1 smile

EDIT : oui, j'avais pas encore mis à jour ce menu. Avant quand on affichait une stat, le prochain octet devait être la prochaine coordonnée X. Plus tard j'ai pensé que c'était trop compliqué, si on veux changer de coordonnée X il faut y mettre un NEWX. J'ai fait le commit.

152

Ah ok, je me disais aussi cheeky

J'aurais plus de temps pour programmer d'ici une semaine normalement donc je compte bien reprendre ce projet smile

Enfaite je suis en train de me demander s'il ne vaut pas mieux faire ce menu comme l'original : la première page liste les 6 pokémons de ton équipe, et pour voir les attaques il faut voir les stats puis valider pour accéder au 2nd menu (celui des attaques donc). Parce que là le système de sous-menu rajoute pas mal de code et n'est pas forcément très intuitif, non ?
chickendude (./151) :
EDIT : et c'est comme tu veux, mais personnellement je crois que c'est plus claire d'utiliser $0000 pour les numéros 16-bits, comme ça tu es sûr qu'il est 2 octets et pas 1

Bon ok, de toute façons ça ne change pas grand chose (pareil pour l'indentation, au départ ça me dérangeait un peu parce qu'on ne pouvait pas avec tasm, mais puisqu'on peut avec spasm autant l'utiliser smile).

153

Oui, c'est ce que je pensais aussi (pourquoi ne pas faire comme l'original), mais à vrai dire ça ne prend pas beaucoup d'espace, on se sert de pas mal d'autres routines. Mais oui, j'admets que c'est un peu compliqué mais l'effet est beau grin

154

Ok je vais refaire ce menu à peu près comme l'original dans ce cas smile

edit : j'ai commencé à le réorganiser, par contre ce serait bien que lorsque l'ID du pokémon listé = 0 ça n'affiche rien et qu'on ne puisse pas déplacer le curseur dans le vide (pour l'instant ça descend un cran de trop).

155

Le menu pokémon liste maintenant les pokémons qu'on porte réellement avec nous et on peut les ordonner (enfin "swaper" le pokémon sélectionné avec le premier), mais je n'arrive toujours pas à empêcher le curseur de descendre au premier emplacement vide :/

edit : début du menu stats smile

lSF8

J'ai un peu modifié quelques-unes de tes routines, notamment celle qui gère les menus avec retour : maintenant le carry flag n'est pas mis si on appuie sur alpha (annule), et inversement avec 2nd.

156

Je peut ajouter un compteur que comptera combien d'options on a, je vais voir ce que je peux faire cet après-midi. smile

157

Ah oui c'est vrai je n'ai pas pensé à modifier le nombre d'option (pourtant on peut le faire facilement après le listing des pokémons au début de la routine du menu) cheeky

158

J'ai pas pu accéder Google Code toute la journée (c'est bloqué), j'y verrai demain si tu ne l'a pas encore fait wink

159

Je viens de m'en occuper mais le code est un peu moche tongue

160

Je le regarderai dès que j'aurai quelques minutes smile

161

Donc si tu es d'accord on reprend ce projet ?

Ce qu'il y a à faire :

- Le passer en app (même si ça m'embête un peu pour les 83, je pourrais toujours leur faire une version light plus tard) : copier certaines routines ion, virer le smc etc...
- Régler les bugs de la routine de texte avec l'affichage de certains stats (ppmax entre autre il me semble) ;
- Reprendre le développement des combats ;
- etc...

Dernier screen en date :

08uN

162

Ah c'est vrai, j'avais oublié les 83, mais je crois que s'il faut que tout soit dans le RAM on ne pourrait y mettre que quelques pokémons, il va nous manquer de l'espace. Si tu veux, on peut mettre les datas dans un autre fichier, comme ça les 83+ pourront le tenir dans l'archive. Si on fait un app, nous n'aurons pas de complications quand le code surpassera $C000 (et nous aurons beaucoup de RAM par exemple pour décompresser les datas), mais c'est vrai que ne pas avoir du SMC va être genant... Cette semaine je vais me remettre à lire le code, j'espère pouvoir finir la routine de texte bientôt smile

Et alors, qu'est-ce que tu en dis ? On fait un app ou on conserve la compatibilité 83 ? Les deux options me semblent bien..

163

Pour le moment autant faire une app pour ne plus être trop embêtés avec le manque de place.

Par contre je n'en ai jamais vraiment trop fait, et je crois me souvenir que même le header est assez galère à mettre en place (d'ailleurs on peut même signer les apps maintenant que les clées ont été crackées, non ?).

J'aurais peut être le temps d'y regarder cette semaine dans le train.

164

Pour le header on peut utiliser app.inc. Juego est actuellement un app, donc je peux l'utiliser comme une base de reference. Je vais essayer de commencer la conversion ce soir.

EDIT : Bon, il semble que l'on a déjà dépasser la première page dans l'app :/

Il faut copier les routines d'Ion, j'ai commencé à changer le SMC, dès que j'aurai quelque chose qui assemble et qui marche je te l'enverrai.

165

Ok, j'ai presque fini d'écrire un nouveau tilemapper, il faut seulement que j'ajoute le mouvement X "smoothscrolling" du joueur (la déplacement de la carte marche bien). Mais je le finirai demain, maintenant je veux dormir zzz

166

Tu as carrément réécrit un tilemapper ? On ne pouvait pas simplement continuer avec GBA Lib 2 ? Enfin tant mieux, de toute façons je n'utilisai pas toutes ses fonctions.

Si j'ai le courage il faudra que je tente de comprendre comment tu l'as codé tongue

Merci !! smile

167

Je voulais écrire un tilemapper plus simple, puisque comme tu as dit on n'avais pas besoin de toutes ses fonctions (et d'ailleurs il me semblait plus simple d'en écrire un de nouveau :P). J'ai essayé d'ajouter beaucoup de comments, après voir le code source de Robot War ça m'a beaucoup inspiré, son code (ce de DigiTan) est très facile de lire et bien commenté.

Par exemple, voici le nouveau tilemapper (désolé, mes "tabs" sont quatre espaces, pas huit) :;########################### draw_map: ;# draws the map to the graph buffer ;# input: ;# -none ;########################### call get_map_offset ; load starting map tile into hl exx ld hl,gbuf ld de,12 ; no. of columns ld bc,$0C08 ; draw 12 (hex: $0C) columns and 8 rows draw_row: push hl ; save gbuf pointer exx push hl ; save map location ld l,(hl) ; sprite # call get_tile ; load tile into hl ld b,8 ; each sprite is 8 rows tall sprite_loop: ld a,(hl) ; byte to draw inc hl ; next byte exx ; switch to shadow registers ld (hl),a add hl,de ; next row in gbuf exx djnz sprite_loop pop hl ; map position inc hl exx pop hl ; previous gbuf inc hl djnz draw_row exx ld a,(mapWidth) ; we've drawn 12 rows, so we need to skip sub 12 ;.. mapWidth-12 bytes to get to the next row in the map ld e,a ; d already = 0 add hl,de ; move to the next row in map exx ld e,12*7 ; 12 colonnes, 7 rangs à baisser add hl,de ; next row in gbuf ld e,12 ; rendre les valeurs originales à e/b ld b,12 dec c ; c = # rows left to draw jr nz,draw_row ret ;########################### get_map_offset: ;# calculates the top left position of the map ;# input: ;# -none ;# output: ;# -hl = top left position in map ;########################### ld hl,(map_y-1) ; map's Y position into h ld de,(mapWidth) ; call mult_EH ; hl = mapY*mapWidth ld de,(mapAddr) ; de = map address add hl,de ; start of map + mapY*mapWidth ld de,(map_x) ; ld d,0 ; clear out MSB add hl,de ; add map x ret ;########################### get_tile: ;# loads a tile into hl ;# -l = tile id to load ;# output: ;# -hl = pointer to first byte of sprite data ;########################### ld h,0 ; add hl,hl add hl,hl add hl,hl ; hl * 8 ld bc,(tileAddr) add hl,bc ; start of sprite's data retAh, et comme j'ai dit, personnellement je préfère des tabs de 4 espaces (8 me semble trop), qu'est-ce que tu utilises ?

168

Génial, ça n'a pas l'air si compliqué, surtout si bien commenté. Par contre je pense qu'on devrait continuer à commenter uniquement en anglais.

Et comme j'ai pas mal d'heures de train j'en profiterai pour lire le code source de Robot War, s'il est aussi bien expliqué.

Pour les tabs, je pense que 4 espaces c'est bien, de toute façons je n'y ai jamais trop touché, j'utilise la valeur par défaut de Notepad++.

169

Le tilemapping marche !
zOwa

170

Génial top

Tu peux faire un commit ?

171

Ahh, c'est vrai. Maintenant tous les sites de Google sont bloqués en Chine, donc pour le moment je te laisse : http://www.mirari.fr/7AKV

Je crois que j'ai seulement changer engine.inc et (ajouté ?) variables.inc. Le nouveau fichier est "pokemon_app.z80".

Je vais chercher une meilleur méthode pour partager les changements mais aujourd'hui il est déjà tard wink

172

'tain c'est chiant qu'ils aient bloqué google code rage

Va falloir utiliser un autre gestionnaire de version, même si je trouvais google code parfait mourn

Je vais regarder tout ça, merci smile

173

Oui, et d'ailleurs chercher des choses en ligne est assez difficile, Bing censure ses résultats en Chine, DuckDuckGo IxQuick et StartPage.com sont bloqués aussi :/

Si l'on peut changer de gestionnaire ça serait idéal. Ce soir je bosserai un peu plus sur le moteur, peut-être ajouter les sauts et l'animation du joueur. Puis je veux aborder le moteur de texte.

A propos, j'ai vu que pour les collisions tu utilises une liste avec tous les tuiles "practicables", tu ne veux pas utiliser une autre méthode, quelque chose un peu plus flexible peut-être ? Pour le moment c'est bon, mais plus tard on aura pas mal de tuiles... (mais c'est vrai que chercher une liste de 20 tuiles une fois chaque huit frames n'occupe pas beaucoup d'espace). Pour le moment j'ai changé ta routine a une "cpir":check_tile: ; z if tile is practicable ld hl,practicable_tiles ld bc,practicable_tiles_end-practicable_tiles cpir ret

174

Pour le gestionnaire c'est comme tu veux, du moment que tu peux y accéder. Je chercherai ce soir ceux qui ne sont pas bloqués en Chine si tu veux.

Concernant les collisions c'était surtout fait de la sorte parce que les évènements devaient être statiques et propres à chaque map. Mais vu qu'on a plus de place avec l'app je me demande s'il ne faudrait pas repenser le système des évènements (npc, warps, etc...). On pourrait peut être faire un système de brushes comme dans juego, même s'il faudra que je modifie pratiquement entièrement l'éditeur de cartes...

Perso je vais nettoyer un peu le code avant de faire un commit. J'ai ajouté des sprites pour les pokémons aussi.

edit : bien vu pour le cpir, c'est super pratique comme instruction smile

Enfaite beaucoup de tuto ne présentent pas toutes les instructions du z80 j'ai l'impression.

175

Oui, il y a quelques petites instructions que l'on n'utilise que rarement mais qui sont parfois vraiment utiles smile

Et je crois que git est un peu compliqué, mais on peut essayer avec GitHub :
https://github.com/chickendude/Pok-mon-Monochrome

176

Quelqu'un a déjà pris mon pseudo >_>

Bon je m'inscrirai ce soir.

177

J'ai pas encore eu le temps de bosser dessus, désolé, mais je vais essayer de me concentrer un peu aujourd'hui et finir mon travail plus tôt.

Tu as pu t'inscrire ? Je peux t'ajouter au projet smile

178

Ouais moi aussi je suis très occupé ces temps-ci. Le soir je relis et nettoie un peu le code.

Je me suis pas encore inscrit parce que ça m'embête qu'un type ai pris le même pseudo que moi, et j'ai bon vérifier et essayer de me souvenir je ne me suis jamais inscrit sur ce site avant. Enfin bon sinon je m'inscrirais avec un autre pseudo :/

179

Haha je me demandais si tu ne t'y avais pas déjà inscrit et c'était pour ça que ton pseudo n'est plus disponible wink Je crois que "deeph" n'est pas un pseudo très courant. Il semble que le deeph là-bas n'as jamais ajouté rien, donc c'est bien possible que c'était toi et t'avais oublié.

En bref quand tu auras un compte je t'ajouterai au projet, c'est pas urgent.

EDIT : J'ai pu ajouter les sauts aujourd'hui. Maintenant il faut l'assembler "case-sensitive" (-A avec spasm, je compile avec "spasm -DFR pokemon_app.z80 pokemon.8xk -A -T")

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).