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 16 sur 19 |
Auteur: | adnz [ 28 Mai 2021, 02:19 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Bon, mon fichier BIN des datas est prêt. Pour bien faire, il faut que je charge le BIN dans une bank mais en assembleur, comme ça je pourrais coder une gestion de chargement d'autres niveaux ! Donc je dois faire ça en asm ! BANK7:LOADM"DATLEV1.BIN" Il me semble que j'ai vu passer quelque part dans ce forum (ou un autre je sais plus), le sujet de charger des fichiers en asm, je vais donc passer en mode recherche ... |
Auteur: | adnz [ 28 Mai 2021, 03:34 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
ouuuu super j'ai mis mes tableaux dans une bank et retirer les FCB ! Je suis passé de 500 octets de libres à 1642 octets de libres en mem non commutable J'vais pouvoir cracher du code |
Auteur: | Bentoc [ 28 Mai 2021, 05:37 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Auteur: | Samuel Devulder [ 28 Mai 2021, 08:01 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
adnz a écrit: Donc je dois faire ça en asm ! Le BANK est super facile en ASM dans les fichiers BIN standards: c'est un ORG + FCBBANK7:LOADM"DATLEV1.BIN" Code: ORG $E7E5 Ensuite pour charger un BIN, tout dépends de ce que tu veux utiliser: Track-loader ou fichier BIN standard ? L'extra-moniteur ou moniteur ?FCB <numéro de bank physique> ORG $A000 ... code/data ... Pour les binaires standard j'ai le code suivant que j'ai utilisé dans la démo ElvisLives: Code: *************************************** Il utilise 2 primitives: d7open (retour dans le flag C) qui ouvre en lecture le fichier dont le nom est pointé par le registre U, et getb (retour dans registre A) qui récupère les octets un à un de ce fichier. La façon de les implémenter dépend du choix de routines sous-jacente: EXTRA-MONITEUR / MONITEUR / Disk-virtuel en ROM / SDStream / etc...* boucle: * REPEAT * .... * WHILE condition *************************************** REPEAT macro loop set * endm WHILE macro b\0 loop endm *************************************** * charge le fichier 'AUTO.BIN" * en sortie X contient l'addresse * de lancement. Les autres registres * sont trashes. *************************************** load leau <AUTOBIN,pcr bsr d7open bcs error loadbk bsr getb ; typ bloc log bsr getw ; long bloc log coma beq exec ; fin fichier coma bne error ; bloc inconnu tfr x,y ; charg. donnees bsr getw ; addr charg. nop REPEAT bsr getb sta ,x+ leay -1,y WHILE ne bra loadbk exec bsr getw jmp ,x AUTOBIN fcc /0AUTO BIN/ *************************************** * lit un mot en gerant les erreurs. * x=mot lu *************************************** getw pshs d bsr getb tfr a,b bsr getb exg a,b tfr d,x puls d,pc PS: ce code est loin d'être une référence. J'y trouve plein de trucs à revoir. (exemple: getb devrait retourner l'octet dans B, getw devrait retourner dans Y, il pourrait utiliser la pile pour être plus compact et rapide, le code devrait utiliser des LEA plutôt que des TFR pour transférer des registres de données, etc.) Disons qu'il permet de voir que charger un fichier BIN classique est simple à partir du moment où l'on sait récupérer les octets un à uns. |
Auteur: | adnz [ 28 Mai 2021, 12:14 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
1 - pour le swap de bank j'ai fais comme ça : SELECT_BANK #14 (je garde A car j'ai toujours besoin de le garder après le swap pour continuer le prog...) Code: SELECT_BANK macro PSHS A LDA \0 ;* choix de la bank STA $E7E5 ;* commute la bank PULS A endm 2 - je construis mes fichiers data BIN comme cela, en faisant un fichier .tx(comme ci dessous) pour pas oublier ce que j'ai dedans, mon fichier détail pour aide mémoire Code: ---debut de fichier bin (5 octets) | 00_longueur(00_00)_debutAdresse(00_00) 00 04 88 a0 00 ---debut data * tableau_init | array2D 29x20 | 580 o 01010101010101010101010101010101010... * tableau_ghost_init | array2D 29x20 | 580 o 01010101010101010101010101010101010... ---fin de fichier bin FF 00 00 00 00 puis un fichier .tx mais avec seulement les valeurs tout collées à la suite, valeurs que je copie colle dans mon soft hexadecimal (Hex Fiend) pour sauver en vrai fichier .BIN que je transfert sur le .fd Code: 000488a0000101010101010...................FF00000000 ensuite juste à faire un Code: LOADM"MONFICHIER.BIN"
|
Auteur: | Samuel Devulder [ 28 Mai 2021, 15:07 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
A ton avis il se passe quoi si tu ajoutes les 5 octets suivants en début de fichier ? (donc juste avant ce que tu as ci-dessus) Code: FCB $00 Et bien cela ajoute un bloque logique qui mets 14 en $E7E5, et donc le BIN correspondant ca charger la suite du fichier avec la bank 14 mappée sur $A000
FDB 1 FDB $E7E5 FCB 14 |
Auteur: | adnz [ 28 Mai 2021, 15:19 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
j'ai pas triché , juré. ça swap en bank 14 automatiquement ? c'est ça ? enfin ça charge les données dans la bank 14 donc en gros le fichier BIN commence comme cela ! Code: 00 01 E7 E5 14 <--- selection de la bank 14 00 04 88 a0 00 <---- puis debut des datas en A000 de 1160 octets 01010101010101010101010101010101010... <---- les datas (1160 octets) FF 00 00 00 00 <---- fin de fichier j'ai bon ? |
Auteur: | Samuel Devulder [ 28 Mai 2021, 15:45 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Ouais, c'est presque ca. La longueur est sur 16 bits (FDB). J'ajoute donc un >>00<<. Mais aussi 14 decimal c'est $0E en hexa: Code: 00 >>00<< 01 E7 E5 >>0E<< <--- selection de la bank 14 Il est cool le format BIN thomson. Sans compter que le 1er octet permet de l'étendre avec autre chose que des $00 ou $FF pour interpréter la suite "à notre sauce" (par exemple $FE serait comme $FF sauf qu'on fait un JSR au lieu d'un JMP, ce qui permettrait d'executer des sous-routines durant le chargement). J'avais un projet d'utiliser ca à une époque pour une démo, mais je ne l'ai pas développé (les trackloaders de Prehisto sont plus rapides que les BIN de toute façon).
|
Auteur: | adnz [ 28 Mai 2021, 17:10 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
pff fbah oui pas 14 ! $0E bien sûr c'est ici que j'avais trouvé des infos sur le format de fichier bin, ça m'a bien aidé http://dcmoto.free.fr/forum/messages/591147_0.html ça "trackloaders de Prehisto" je connais pas, je regarderais à l'occaz... merci. |
Auteur: | Fool-DupleX [ 29 Mai 2021, 12:02 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Rappelons à toutes fins utiles que le format .BIN simple a déjà été étendu pour l'usage dans le Nanoréseau, notamment avec le chargement des pages commutables. Toutes les infos ici : http://www.nanoreseau.net/lib/exe/fetch.php?media=mt_nr_chap5.pdf, pp 231-235. |
Auteur: | adnz [ 29 Mai 2021, 17:00 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
voila - les tableaux datas du level sont en mémoire bank - plus de tiles .. 58x40 au lieu de 29*20 ce qui me permet d'incrémenter des sprites plus petits Bon du coup c'est moins saccader mais moins rapide ! car il me faudrait faire moins de truc pour executer plus vite ! c'est une autre histoire mais je vais pouvoir commencer au debut niveau plus facile vers plus dur en allant plus vite comme je faisait déjà ! version plus incrementé pour comparer |
Auteur: | Samuel Devulder [ 29 Mai 2021, 17:41 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
C'est bien plus fluide. C'est vachement mieux! Il faudrait regarder le code, mais je suis certain qu'il y a moyen de faire marcher cela plus vite. Quelque part il manque un "profiler", enfin plus précisément un échantillonneur du PC, dans les émulateurs pour savoir dans quelle zone mémoire, et donc dans quelle routine le CPU passe le plus de temps. En effet vu comme ca, je me demande pourquoi ca n'est pas plus rapide. |
Auteur: | adnz [ 29 Mai 2021, 18:31 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
mais je me doute que ça se passe au niveau de l'affichage des sprites et l'affichage des Digit score (comme on avais déja parlé un moment ) et aussi voir si ma technique de buffering des 2 screens est bon ou pas ! optimisation ou réécriture à voir dans : 1 - le display sprite se fait par colonne en swappant (A,B,A,B,A) au lieu de (A,A,B,B) en swapant 1 seul fois, donc plus le sprite est grand, plus y'a de swap ! 2 - l'affichage des scores qui ralenti vachement comme on à déjà vu 3 - verifier le process d'écriture dans les 2 ecrans et le swap car dans mon precess je "draw" 2 fois les sprites (dans chaqu'un des 2 écrans) ... |
Auteur: | Bentoc [ 29 Mai 2021, 18:48 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
Ah oui c'est pas optimum ... Maintenant que tu as de la place, si tu veux que je convertisse tes images en sprites compilés, dis moi. |
Auteur: | adnz [ 29 Mai 2021, 20:22 ] |
Sujet du message: | Re: Projet : 40ème anniversaire PAC-MAN |
J'ai un p'tit soucis avec les GHOST depuis que j'ai mon tableau de tile X2, soucis de la position de déclenchement du mode attack lors de la sortie du centre ! rrrrr Pour les histoires de sprites compilés , j'dois aller étape par étape ! car ça change toutes mes routines d'affichages de sprites, vu que j'ai rangé les pixels d'une certaines façon générés par mon outil script js bon y'a certaines contraintes genre les couleurs pixels [D A] et [C A] ne doivent pas se trouver dans le sprite sinon le display sprite va interpréter une fin de colonne ou fin de sprite, bon ouais c'est nul mais bon fallait bien que je commence si tu me compile les sprites, j'aurais rien pour les afficher actuellement ! merci, je reviendrais vers toi au moment où je serais sur cette partie à optimiser |
Page 16 sur 19 | Heures au format UTC + 1 heure |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |