Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 29 Nov 2025, 16:00

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


[SCUMM] Code Z80 CPC conversion from SCUMMVM

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 6 sur 14
 [ 201 message(s) ]  Aller vers la page Précédent  1 ... 3, 4, 5, 6, 7, 8, 9 ... 14  Suivant
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
Megachur
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 29 Août 2010, 20:35 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
TotO a écrit :
Megachur a écrit :
je me suis trompé sur l'interprétation du 1 << décalage alors que c'est 1 la valeur du décalage en fait à gauche


La valeur du décalage est toujours après l'opérateur.
<< 1
>> 1


et donc comment on traduit ça alors ?

Code :
1 << (var & 7)
comme je l'avais fait au début ?


Haut
 Profil  
 
fano
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 29 Août 2010, 20:43 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
Par contre , toto me fait remarquer que sur l'opérateur << , le décalage est indiqué par l"opérande de droite , donc je corrige effectivement mon code :

ld A,L ; (1 << (var & 7)))
and 7

srl H ;var>>3
rr L
srl H
rr L
srl H
rr L

ld BC,_bitvars ;_bitVars[]
add HL,BC
ld C,(HL)

or A

ld B,A
ld A,1

jr z,mul_done

.loop_mul
add A
djnz loop_mul

.mul_done

and C ;&

or A ;? 1 : 0
jr z,null_val

ld HL,1
ret

.null_val
ld HL,0
ret

_________________
"NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)


Haut
 Profil  
 
Megachur
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 30 Août 2010, 19:27 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
merci fano !

Sinon, ca y est, les opcodes s'exécutent -> y'a plus qu'à les écrire tous ;-) ou presque et prévoir l'affichage (texte, costumes, etc.) ;-)

par contre, y'en a un qui est un peu particulier...o5_stringOps
il alloue des strings pour le futur affichage des textes...
Du coup, j'aurai besoin de deux fonctions :

à partir d'un morceau de mémoire donné
j'ai fait une fonction qui alloue la ressource (genre calloc())... par contre, ce qui est plus embattant c'est qu'il va falloir quelques fois désalloué des espaces de mémoire et donc prévoir une gestion intelligente pour reconnecter les morceaux qu'en on aura plus de place mémoire dispo !!! (et une fonction qui réordonne et concatène tout cela (avec move etc...) )

je vous mets les morceaux de code à traduire (plus le calloc() et free() ;-)) :

j'ai supprimé les trucs inutiles

Code :
;;byte *ResourceManager::createResource(int type, int idx, uint32 size) {
;;
;;   nukeResource(type, idx);
;;
;;   void *ptr = calloc(size + sizeof(MemBlkHeader) + SAFETY_AREA, 1);
;;   if (ptr == NULL) {
cela veut dire qu'on a plus de place mémoire dispo c'est là qu'il faudrait tenter le concat pour voir si on libère de la place !!!
;;   }
;;
;;   _allocatedSize += size;
;;
;;   address[type][idx] = (byte *)ptr;
;;   ((MemBlkHeader *)ptr)->size = size;
;;   return (byte *)ptr + sizeof(MemBlkHeader);   /* skip header */
;;}
;;


Code :
;;void ResourceManager::nukeResource(int type, int idx) {
;;   byte *ptr;
;;
;;   ptr = address[type][idx];
;;   if (ptr != NULL) {
;;      free(ptr);
;;   }
;;}


sinon pour l'utilitaire découpe fichier, ça intéresse quelqu'un (fano ?) également ?


Haut
 Profil  
 
fano
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 30 Août 2010, 19:40 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
Megachur a écrit :
sinon pour l'utilitaire découpe fichier, ça intéresse quelqu'un (fano ?) également ?
Pas de souci, comme je t'ai dit plus haut , si tu peux poster quelques .LEC histoire que je commence à regarder ça car avec un fichier cible sous les yeux, ça me semblera plus concret.

Au fait , pour tes allocs , c'est quoi la durée de vie des strings (si c'est la salle , pourquoi ne pas utliser un tas qu'on réinitialise à chaque salle ?)

_________________
"NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)


Haut
 Profil  
 
Megachur
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 30 Août 2010, 20:00 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
fano a écrit :
Megachur a écrit :
sinon pour l'utilitaire découpe fichier, ça intéresse quelqu'un (fano ?) également ?
Pas de souci, comme je t'ai dit plus haut , si tu peux poster quelques .LEC histoire que je commence à regarder ça car avec un fichier cible sous les yeux, ça me semblera plus concret.

Au fait , pour tes allocs , c'est quoi la durée de vie des strings (si c'est la salle , pourquoi ne pas utliser un tas qu'on réinitialise à chaque salle ?)

euh... je n'ai pas encore vu cela...mais c'est une idée... au moins pour la fonction de concat !

pour les sources de fichiers, je te fais un mp avec un lien !

merci de ton aide -> je me sens bcp moins seul d'un coup :biere: :pir8: :biere:


Haut
 Profil  
 
fano
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 30 Août 2010, 20:38 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
Pas de souci , ce projet m'interesse beaucoup alors si je peux apporter ma pierre à l'édifice :biere:

Megachur a écrit :
euh... je n'ai pas encore vu cela...mais c'est une idée... au moins pour la fonction de concat !
Je pensais que ça serait plus simple car avec le système d'alloc que tu semble vouloir , ça suppose de travailler avec des références et d'avoir un ramasse miette , ce qui est assez lourd à mettre en place et lent.

Sinon tu as la définition du type custom MemBlkHeader et le type de address[][] ?

_________________
"NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)


Haut
 Profil  
 
Megachur
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 31 Août 2010, 20:06 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
pour les defs fait sans car je change le code souvent sur ce type de truc -> je rajouterai ça dans le code !


Haut
 Profil  
 
Megachur
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 05 Sep 2010, 06:27 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
je cherche à optimiser l'accès au tableau
1) à simple entrée :

exemple : scummvars[max_scumm_var]

2) à double entrée.

Exemple : flags[type][idx]

déjà pour optimiser les accès, je pensais faire un tableau par type

flags_type_1 ds length_flags,0
flags_type_2 ds length_flags,0
flags_type_3 ds length_flags,0

dans le code ensuite
cp type1
jr nz,pas_type1
ld ix,flags_type_1
jr ok_type

pas_type1
etc..
ok_type ; ix = ptr on flag type tab


si y'a beaucoup de type :
flags_type_index
dw flags_type_1, flags_type_2, etc...

et un code équivalent à
add a,a ; si a <&80
ld h,0
ld l,a
ld bc,flags_type_index
add hl,bc
ld a,(hl)
inc hl
db &dd:ld h,(hl) ; je sais pas si c'est bon ça...pour initialiser ix
db &dd:ld l,a

puis sinon si on imagine qu'on a (a = idx)
; on commence à zero
ld bc,length_flags
find_flags_type_idx
cp (ix+idx)
jr z,find_idx
add ix,bc
jr z,find_flags_type_idx

find_idx

une autre idée plus optimisée pour gérer ces tableaux à simple ou double entrée de la façon la plus optimisée possible (soit en gain de place mémoire, soit en code, soit en durée d'exécution, soit ? ;-)) ???

Toute idée sera la bienvenue ;-) :biere: :pir8: :biere:


Haut
 Profil  
 
Xifos
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 07 Sep 2010, 10:55 
Salut,

Glups, il te faudrait un 80386 oui ! :(
Je suis une turne en asm, surtout sur un processeur 8/16 bits, mais je me rends bien compte de l'ampleur de la tâche.
Je crois savoir que l'utilisation des registres d'index est lente mais puissante sur le Z80.
Ce n'est pas un jeu d'arcade donc je suppose que c'est bon.
Argh, je m'en veux d'être si faible ! :-|

:pir8:


Haut
  
 
hERMOL
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 07 Sep 2010, 11:19 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
Xifos va faire un tour dans la section "coding" du site, et rattrape tes lacunes sur ce bon vieux Z80 !!


Haut
 Profil  
 
Xifos
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 07 Sep 2010, 17:27 
Un peu HS mais je te réponds quand même Hermol.
Impossible de rattraper ces lacunes.
Je sais faire une routine potable de sprite, de scroll sur le CPC en Z80, mais pas tout un jeu.
J'ai trop été habitué aux langages évolués et à des processeurs 16/32, même si je m'amusais à un moment avec la limite des segments 64 ko du mode réel sur PC.
Je mixais Pascal et ASM intel, ou C et ASM...
Donc je "pense" trop langages évolués et à leurs facilités (struct, fonctions, tableaux à n dimensions etc...) pour pouvoir revenir à de l'asm intégral.
Surtout pour un jeu comme Monkey. :pir8:

Pour te dire, quand Longshot m'a montré comment faire une rupture, j'ai failli mourir ! :sweatingbullets:

Et puis je suis trop vieux !

Sinon j'ai dit une connerie sur IX et IY ?
Ou c'était une façon de me dire de ne pas intervenir sur ce fil si je peux pas aider (chose que je peux comprendre) ?


Haut
  
 
Megachur
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 07 Sep 2010, 19:55 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Xifos a écrit :
Et puis je suis trop vieux !

Sinon j'ai dit une connerie sur IX et IY ?
Ou c'était une façon de me dire de ne pas intervenir sur ce fil si je peux pas aider (chose que je peux comprendre) ?


mais non !!! on est jamais trop vieux pour s'éclater !

sinon oui, ix peut être utile pour se balader facilement dans une structure...

exemple :

ScriptSlot_offs equ 0
ScriptSlot_delay equ ScriptSlot_offs+uint32
ScriptSlot_number equ ScriptSlot_delay+int32
ScriptSlot_delayFrameCount equ ScriptSlot_number+uint16
ScriptSlot_freezeResistant equ ScriptSlot_delayFrameCount+uint16
ScriptSlot_recursive equ ScriptSlot_freezeResistant+bool
ScriptSlot_didexec equ ScriptSlot_recursive+bool
ScriptSlot_status equ ScriptSlot_didexec+bool
ScriptSlot_where equ ScriptSlot_status+ubyte
ScriptSlot_freezeCount equ ScriptSlot_where+ubyte
ScriptSlot_cutsceneOverride equ ScriptSlot_freezeCount+ubyte
ScriptSlot_cycle equ ScriptSlot_cutsceneOverride+ubyte
ScriptSlot_length equ ScriptSlot_cycle+ubyte

vm_slot_length equ ScriptSlot_length*NUM_SCRIPT_SLOT
vm_slot ds vm_slot_length,0

tu peux coder ensuite pour traduire vm.slot[a]

ld iy,vm_slot
on se positionne au bonne endroit avec des add iy,bc ou bc = ScriptSlot_length par exemple
puis directement
ld a,(iy+ScriptSlot_didexec)
ou
ld (iy+ScriptSlot_cycle),&00

mais ce que je cherche à optimiser c'est les accès au tableau à double entrée pour éviter les boucles de positionnement au bon endroit...


Bon sinon le code avance...doucement mais surement
-> j'en suis au script 145 qui lance l'affichage de la montagne -> on arrive bientôt au premier texte ;-) !!!
va falloir que j'écrive quelques routines d'affichage des graphismes et textes maintenant ;-) !
:biere: :pir8: :biere:


Haut
 Profil  
 
TotO
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 08 Sep 2010, 12:00 
Hors-ligne
VIP
VIP

Inscription : 13 Jan 2010, 14:25
Message(s) : 2282
Merci pour les news sur l'avancement.
Le premier verdict est donc proche ! :pir8:

_________________
Cent Pour Cent


Haut
 Profil  
 
MacDeath26
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 08 Sep 2010, 14:00 
Hors-ligne
Rulezzzzz
Rulezzzzz
Avatar de l’utilisateur

Inscription : 06 Mars 2009, 15:15
Message(s) : 2104
Localisation : Valence
La montagne fut porté à l'arrache, si tu en veux une plus belle, demande...


Haut
 Profil  
 
Megachur
 Sujet du message : Re: [SCUMM] Code Z80 CPC conversion from SCUMMVM
Message Publié : 08 Sep 2010, 19:33 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
MacDeath26 a écrit :
La montagne fut porté à l'arrache, si tu en veux une plus belle, demande...

je vais déjà afficher celle là avec les textes... on verra ensuite pour la belle version ;-) !!! :winner:


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 6 sur 14
 [ 201 message(s) ]  Aller vers la page Précédent  1 ... 3, 4, 5, 6, 7, 8, 9 ... 14  Suivant

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 31 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.