Logicielsmoto.com

Nous sommes le 28 Mar 2024, 10:41

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page Précédente  1 ... 11, 12, 13, 14, 15, 16, 17 ... 19  Suivante
Auteur Message
MessagePosté: 22 Mai 2021, 18:22 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
adnz a écrit:
Code:
       LDA #2               
       STA gamelevel
...
...
        LDX #GHOST_SCATTERTIME
        LDA gamelevel
        DECA
        LDB [A,X]         ou LDB A,X  je crois !!
        STB ghost_scatter_delay
...
...
...
GHOST_SCATTERTIME
    FCB 150,130,105,90,80,70,65,50,45,40,35,30,25,20,15,10
...
...
gamelevel RMB 1
ghost_scatter_delay RMB 1




Code:
       LDA #2               
       LDX #GHOST_SCATTERTIME-1
       LDB A,X

       STD gamelevel
Si l'adresse ghost_scatter_delay pointe sur gamelevel+1
Ce qui équivaut à
STA  gamelevel
STB  ghost_scatter_delay


Quelques octets de gagnés
;)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mai 2021, 18:32 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
j'ai fais comme ça :

Code:
        LDA #1 ou 2 ou 3 ou 4 etc....     ; pas important ces 2 lignes là
        STA gamelevel
...
...
        * executer 1 fois à chaque fois qu'on passe un niveau et que le jeu recommence
        LDX #GHOST_DATAS_SCATTERTIME-1
        LDA gamelevel
        LDB A,X
        STB ghost_scatter_delay

...
...

GHOST_DATAS_SCATTERTIME
    FCB 150,130,105,90,80,70,65,50,45,40,35,30,25,20,15,10


J'ai pas compris l'optimisation du coup là avec D !

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mai 2021, 18:44 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Quand tu passes au niveau suivant tu vas changer quelques paramètres

Dans notre cas .gamelevel et .ghost_scatter_delay entre autre
Le but c'est de faire l'opération en une fois
Tu charges A qui contient le niveau que tu incrémentes ensuite

LDA .gamelevel
INCA

Ensuite tu récupères le scatterTime

LDX .ghost_scatter_time -1
LDB A,X

Tu disposes donc d'une valeur A (.gamelevel) et une valeur B (.ghost_scatter_delay) qu'il faut sauvegarder pour les reprendre plus loin avec

STD .gamelevel
Si et seulement si l'adresse de .ghost_scatter_level (par exemple $9001) égale celle de .gamelevel ($9000) +1 comme indiqué ici

Code:
gamelevel RMB 1
ghost_scatter_delay RMB 1


Dernière édition par jasz le 22 Mai 2021, 19:15, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mai 2021, 19:05 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Ha ok merci, j'ai compris,
mais vu que j'utilise RMB pour gamelevel et ghost_scatter_time je suis pas sûr que ça reste cote/cote dans les adresses !
il faudrait que je les fixes pour appliquer cette technique du coup.

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mai 2021, 22:28 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Bon voilà le debut de la gestion des bonus ...

Image

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mai 2021, 23:21 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ca progresse, ca progresse :) Tu n'es pas trop court en ram j'espère!

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Mai 2021, 23:29 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
:D il me reste 556 octets

Mais à chaque fois j'essaye d'optimiser certaine chose pour ajouter la suite ... donc ça bouge tout le temps,
par exemple voila le dernier historique des octets restant sur les dernières modif

682,632,647,636,630,614,598,597,567,586,578,566,563 et actuellement 556 octets restants entre $9DD3 et $9FFF

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Mai 2021, 09:16 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
Citation:
mais vu que j'utilise RMB pour gamelevel et ghost_scatter_time je suis pas sûr que ça reste cote/cote dans les adresses !

Encore quelques vieux réflexes de la programmation haut niveau ? :)

RMB réserve un octet exactement à l'adresse où il est mis. Si tu as deux labels qui se suivent, ils se suivront toujours. Sauf si TU décides de mettre un truc entre les deux ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Mai 2021, 10:18 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Je vois que tu as ajouté également le clignotement des fantômes, ça rend bien :bien:
Pour la liste des fruits tu respectes l'original ou tu as fait quelques remplacements ?

En cherchant les fruits je suis tombé sur le glitch du level 256 ... que je ne connaissais pas.
https://pacman.fandom.com/wiki/Map_256_Glitch
J'adore ! J'imagine la tête de celui qui est tombé le premier sur cet écran ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Mai 2021, 11:43 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
lol "programmation haut niveau" certainement pas, c'est mon premier code asm ! :p
j'ai encore plein d'astuce et de chose à apprendre encore.

ok merci pour l'infos du RMB j'étais pas sûr que 2 RMB se suivent donc, ok.
-----
Sinon pour les bonus avec toutes les différentes versions du premier pacman c'est pas evident de tomber pile poile sur le vrai vrai !
mais en rassemblant toutes les infos et en comparant tout ça voila les sprites que j'ai retenus !

Fichier(s) joint(s):
Commentaire: sprites bonus
bonus.png
bonus.png [ 16.28 Kio | Vu 5433 fois ]

pour infos, tous les sprites sont redessinés, c'est pas une conversion ou autre ...

_________________
Image


Dernière édition par adnz le 12 Aoû 2021, 11:23, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Mai 2021, 12:13 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Ils rendent super bien, et je vois que tu as conservé le sprite de galaxian ... cool !


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Mai 2021, 12:24 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Voila apparement l'original de 82 (source wiki)
( je crois que la boule verte c'est la grappe de raisin ! )
Fichier(s) joint(s):
original-1982-bonus.png
original-1982-bonus.png [ 8.21 Kio | Vu 5431 fois ]

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 24 Mai 2021, 02:59 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
zut je n'arrive pas a chopé le current_bonus_ID en faisant comme ça !

Code:
* adresses des graphisme sprites bonus
bonus_cerise    EQU $BF3F
bonus_fraise    EQU $BF84
bonus_orange    EQU $BFC9
...
* set bonus by level number
        LDX #BONUS_DATAS_ID-1
        LDA gamelevel                     ( gamelevel = 1,2 ou 3 etc...)
        LDY A,X
        STY current_bonus_ID
...
...
        LDY current_bonus_ID   <--- là ça foire, il faudrait que ça soit comme si "LDY #bonus_cerise" "LDY #bonus_fraise" etc... selon le level=1,2 ou 3 etc..
        JSR display_sprite
...
BONUS_DATAS_ID
      FDB bonus_cerise,bonus_fraise,bonus_orange,bonus_orange 


_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 24 Mai 2021, 08:44 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Tu fais un LDY sur bonus ID. J'en deduis que le bonus est une donnée 16bits, ce qui signifie que l'index doit être pair. Dans ce cas il manque un ASL juste avant l'accès A,X. Il faura aussi ne pas faire "-1" dans l'init de l'adresse, mais -2.

Note: utiliser Y est relativement coûteux (un cycle de plus à cause de l'octet de préfix pour les opérations load/store/compare). Mieux vaut préférer X ou D et n'utiliser Y que si on a pas d'autre choix. Or là il me semble que la valeur contenue dans X ne servira pas plus loin et donc que tu peux faire LDX A,X (ne pas oublier de faire A=A*2 avant) puis STX current_bonnus_ID. Tu gagnera en place et en cycles. Bref: c'est tout bénéf.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 24 Mai 2021, 10:47 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Merci, je me disais bien qui y'avais une histoire de "2" car les valeurs du FDB sont sur 16bit !
Puis je me suis rappelé de m'optimisation que tu m'a conseillé (en page 9) avec le JPM [A,X]...

donc ça donne ça :
Code:
*; set bonus by level number
        LDX #BONUS_DATAS_ID-2
        LDA gamelevel
        LSLA
        LDX A,X
        STX current_bonus_ID


et ça marche :bien:
Image

_________________
Image


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page Précédente  1 ... 11, 12, 13, 14, 15, 16, 17 ... 19  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 21 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com