Logicielsmoto.com http://www.logicielsmoto.com/phpBB/ |
|
Projet : 40ème anniversaire PAC-MAN http://www.logicielsmoto.com/phpBB/viewtopic.php?f=1&t=609 |
Page 15 sur 19 |
Auteur: | jasz [ 24 Mai 2021, 17:22 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Et si ce bout de code est à la suite du précédent, tu n'as pas besoin de recharger A Hop 3 octets de plus |
Auteur: | adnz [ 24 Mai 2021, 17:51 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
donc j'ai juste besoin du premier là ... le code à la suite est comme ceci : Code: INC_gamelevel LDA gamelevel ;| INCA ;| inc level +1 STA gamelevel ;| setLevelsParams CMPA #16 ;| if gamelevel < 16 BLT setLevelParam ;| set params from FCB BGE setLevelMaxiParam ;| else params from last FCB for all gamelevel >= 16 setLevelParam *; set ghost scatter time for level LDX #GHOST_DATAS_SCATTERTIME-1 LDA gamelevel ;// A est deja connu ? pas besoin alors ! <-------- LDB A,X STB ghost_scatter_delay *; set ghost ia bypass move interval for level LDX #GHOST_DATAS_IA_INTERVAL-1 LDA gamelevel ;// A est deja connu ? pas besoin alors ! <-------- LDB A,X STB ghost_IA_interval *; set bonus by level number LDX #BONUS_DATAS_ID-2 LDA gamelevel ;// A est deja connu ? pas besoin alors ! <-------- LSLA LDX A,X STX current_bonus_ID JMP reset_after_win_next_level setLevelMaxiParam .. .. .. |
Auteur: | Samuel Devulder [ 24 Mai 2021, 18:18 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Quelques remarques en vrac: Code: INC_gamelevel Humm je me demande ici si un INC gamelevel + LDA gamelevel ne serait pas plus rapide. Il faudrait compter les cycles. En tout cas ce serait plus court d'au moins 1 octet (ca peut être plus utile que la vitesse en ce point du code.)LDA gamelevel ;| INCA ;| inc level +1 STA gamelevel ;| Code: setLevelsParams Ici BLT et BGE sont exclusifs l'un de l'autre. Tu peux donc virer le BLT setLevelParam car on y va forcément si on ne prend pas le BGE.CMPA #16 ;| if gamelevel < 16 BLT setLevelParam ;| set params from FCB BGE setLevelMaxiParam ;| else params from last FCB for all gamelevel >= 16 setLevelParam En outre ce code ressemble à une saturation à 16. Moi perso je le ferais ainsi ce qui a le mérite d'être plus court en fusionnant setLevelParam et setLevelMaxiParam: Code: LDA #16 Poursuivons...CMPA gamelevel BGE setLevelParam LDA gamelevel setLevelParam: .. Code: *; set ghost scatter time for level ouaip.LDX #GHOST_DATAS_SCATTERTIME-1 LDA gamelevel ;// A est deja connu ? pas besoin alors ! <-------- Code: LDB A,X ouaip. C'est l'optim #1: ne pas répéter les choses qu'on a déjà fait. STB ghost_scatter_delay *; set ghost ia bypass move interval for level LDX #GHOST_DATAS_IA_INTERVAL-1 LDA gamelevel ;// A est deja connu ? pas besoin alors ! <-------- Bon la suite c'est pareil. |
Auteur: | adnz [ 24 Mai 2021, 19:28 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
oui en effet on peut le virer le BLT setLevelParam vu que setLevelParam est juste dessous ! merci. [EDIT] bon bah ça marche nickel, donc reste plus que 529 octets |
Auteur: | jasz [ 24 Mai 2021, 22:03 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Code: INC_gamelevel LDA gamelevel ;| INCA ;| inc level +1 STA gamelevel ;| inutile si tu fait un STD dans .setLevelParam setLevelsParams CMPA #16 ;| if gamelevel < 16 *BLT setLevelParam ;| set params from FCB -- inutile BGE setLevelMaxiParam ;| else params from last FCB for all gamelevel >= 16 setLevelParam *; set ghost scatter time for level LDX #GHOST_DATAS_SCATTERTIME-1 * LDA gamelevel ;// A n'est pas modifié donc inutile LDB A,X STB ghost_scatter_delay ;// j'aurais mis STD .gamelevel pour gagner 3 octets en supprimant le STA .gameLevel dans #INC_gameLevel *; set ghost ia bypass move interval for level LDX #GHOST_DATAS_IA_INTERVAL-1 * LDA gamelevel ;// A n'est pas modifié donc inutile LDB A,X STB ghost_IA_interval *; set bonus by level number LDX #BONUS_DATAS_ID-2 * LDA gamelevel ;// A n'est pas modifié donc inutile LSLA LDX A,X STX current_bonus_ID JMP reset_after_win_next_level setLevelMaxiParam .. .. .. 11 octets de plus |
Auteur: | adnz [ 24 Mai 2021, 22:48 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Décidément y'a un truc qui rentre pas Code: STB ghost_scatter_delay ;// j'aurais mis STD .gamelevel pour gagner 3 octets en supprimant le STA .gameLevel dans #INC_gameLevel Donc je remplace le STB ghost_scatter_delay par STD gamelevel - en sachant que dans A y'a la valeur de gamelevel (par exemple 2) - dans B on à donc récupéré #GHOST_DATAS_SCATTERTIME-1 ( 105 ) GHOST_DATAS_SCATTERTIME FCB 150,130,105,90,80,70,65,50,45,40,35,30,25,20,15,10 comment tu mets donc la valeur 105 dans ghost_scatter_delay |
Auteur: | Samuel Devulder [ 24 Mai 2021, 22:59 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Hmm perso je trouve que le STD pour écrire 2 valeurs en même temps est un nid à bugs. Typiquement si un (futur) chemin d’exécution altère A, ca se mets à déconner sans qu'on sache trop pourquoi. Je ferais ce genre d'optim à ma toute fin si on a vraiment beaucoup à gagner. En cours de dev, c'est faire trop entrer Murphy dans la danse. |
Auteur: | jasz [ 25 Mai 2021, 05:38 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
adnz a écrit: Décidément y'a un truc qui rentre pas comment tu mets donc la valeur 105 dans ghost_scatter_delay D et l'union des deux accumulateurs A et B STD .gameLevel c'est la même chose que STA .gameLevel et STB .gameLevel+1 @__sam__ En effet D est sujet à controverse et rend apparemment le programme moins lisible. Mais dans la recherche aux octets il est un bon candidat. |
Auteur: | Bentoc [ 25 Mai 2021, 06:19 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Je suis d'accord sur l'aspect "nid à bug" De mon coté quand je fais ça j'ajoute une étiquette explicite : Code: gamelevel_and_ghost_scatter_delay ; (dependency) ghost_scatter_delay must follow gamelevel gamelevel RMB 1 ghost_scatter_delay RMB 1 En fonction de l'usage on sait donc ce qu'on fait : Code: std gamelevel_and_ghost_scatter_delay
... sta gamelevel ... ldb ghost_scatter_delay |
Auteur: | Samuel Devulder [ 25 Mai 2021, 09:28 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Ah c'est pas bête le label explicite. Il faut éviter l'implicite le plus possible pour éviter les bugs. |
Auteur: | adnz [ 25 Mai 2021, 12:08 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
ha ok , j'ai pigé là En effet je pensais pareil, du moment que dans les commentaires sur les lignes je fais comme une petite notice pour me rappeler que les 2 RMB doivent se suivent et A et B correspondent à quoi, et là plus de soucis de compréhension . Fallait juste que je comprennent la mécanique Merci. |
Auteur: | adnz [ 25 Mai 2021, 23:20 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Bon voilà, les variables par level sont OK pour : - graphismes bonus - moment où le bonus apparait - vitesse des fantômes - durée des fantômes en mode fuite lorsque pacman mange une super pac gomme. Sinon je peux gagner plein plein de place si je mets les 2 gros tableaux (array 2D) en mémoire plutôt que dans des FCB !!! et si je double la taille du tableau, je pourrais gérer les déplacements des sprites par 2 pixels !! il me reste plein de place dans les bank ! https://oxustudio.com/to8/forum/optimisation/array2D.png |
Auteur: | adnz [ 26 Mai 2021, 03:20 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
pff le bordel ! Car au depart il me fallait un sprite assez grand mais pas trop pour faire un level jouable, d'ou ces proportions... le déplacement actuel est 4 px en x et 10px en y - Je bosse à agrandir le tableau pour avoir une definition de "tiles" doublé pour faire les déplacements de sprite tout les 2 px au lieu de 4 en x et 5 px en y - puis mettre les valeurs en memoire dans une bank au lieu de mettre dans le code des FCB pour libérer de la place dans l'espace non commutable... https://oxustudio.com/to8/forum/2darray-level-01.png |
Auteur: | Bentoc [ 26 Mai 2021, 06:18 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Prendre le temps de bosser sur ton mécanisme de gestion de la mémoire paginée est une bonne idée. Une fois ce code "structurel" en place tu auras tout l'espace que tu souhaites pour implémenter de nouvelles choses. Allez courage ! |
Auteur: | adnz [ 26 Mai 2021, 12:11 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
oui et je pensais aussi que ça peut me permettre de charger d'autre labyrinthe, en sachant qu'un level est constitué de : - 1 tableau (29x20) de datas pour les Tiles ,pour le type d'élément (vide, mur, pacgum, super pacgum, tunnel L, tunnel R, bonus,...) - 1 tableau (29x20) pour les fantômes (désignant les intersections pour le choix du calcul de direction, car pas la peine de calculer si y'a pas d'intersection !) - 1 image (le graphisme complet mur+pacgums) affiché 1 seul fois au début de chaque nouvelle partie (nouvelle partie = après un gameover). Donc si je mets les 2 tableaux de datas dans un fichier BIN et l'image est déjà dans un fichier BIN ! bah je peux faire d'autres paire de BIN pour créer et charger d'autres labyrinthes |
Page 15 sur 19 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |