8991Fermer
deephLe 21/04/2013 à 16:19
Super smile

J'ai terminé de coder les nouvelles formules, sauf qu'avec la rom call _convop1 j'ai un "ERR:DIM"... D'après le wikiti :
This routine is used to convert a floating-point number OP1 to a hex value in DE, but if the number in OP1 is greater than 9999, an error will occur.

Encore heureux que j'apprends ça ici, vu que le SDK n'en dit rien roll

Donc il faut que je trouve un autre moyen de copier le contenu entier d'un OP dans un registre 16-bit... Je vais voir s'il y a d'autres rom calls, parce que j'ai un peu du mal à comprendre comment sont organisés les OP en mémoire :/

edit : enfaite c'est parfaitement expliqué ici : http://z80-heaven.wikidot.com/floating-point-stuff , donc je peux faire :
; mes calculs bcall(_int) ld a,(op1+2) ld d,a ld a,(op1+3) ld e,a
Sauf que ça me donne le résultat en décimal... Y'a-t-il une façons rapide de le convertir en héxa ?

edit 2 : De toute façons ça buggera aussi au delà de 9999 cheeky

Pourquoi stocker ça sous forme décimale aussi ? :/

Mais il doit y avoir des rom calls, je vais chercher.

edit 3 : Bon je ne trouve rien, et faire une conversion décimal->hexadécimal à la main avec des divisions euclidiennes risque d'être très prise de tête...

Je pense que je vais faire les calculs avec des routines plutôt que les rom calls, quitte à perdre un peu de place.

edit 4 : Les nouvelles formules sont codées (et dispo sur le repo), à priori ça marche, mais je ne sais pas pourquoi l'animation avec la barre d'XP est super lente... confus

En plus ça a l'air de rebugger avec les changements de pokémons en cours de combats sick

Bref je verrais ça en semaine si j'ai 5min :/