Logicielsmoto.com

Nous sommes le 19 Mar 2024, 04:20

Heures au format UTC + 1 heure




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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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 ...

_________________
Image


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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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 :W :bien:

J'vais pouvoir cracher du code :coolfuck:

_________________
Image


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

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
:good:


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

Inscription: 21 Aoû 2006, 09:06
Messages: 1800
Localisation: Brest
adnz a écrit:
Donc je dois faire ça en asm !
BANK7:LOADM"DATLEV1.BIN"
Le BANK est super facile en ASM dans les fichiers BIN standards: c'est un ORG + FCB
Code:
    ORG $E7E5
    FCB <numéro de bank physique>
    ORG $A000
... code/data ...
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 ?

Pour les binaires standard j'ai le code suivant que j'ai utilisé dans la démo ElvisLives:
Code:
***************************************
* 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
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...

PS: ce code est loin d'être une référence. J'y trouve plein de trucs à revoir. :L (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.

_________________
Good morning, that's a nice Tnetennba


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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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"

_________________
Image


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

Inscription: 21 Aoû 2006, 09:06
Messages: 1800
Localisation: Brest
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
  FDB 1
  FDB $E7E5
  FCB 14
:voyons: 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 :bien:

_________________
Good morning, that's a nice Tnetennba


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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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 ?

_________________
Image


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

Inscription: 21 Aoû 2006, 09:06
Messages: 1800
Localisation: Brest
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).

_________________
Good morning, that's a nice Tnetennba


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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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.

_________________
Image


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

Inscription: 06 Juin 2004, 08:23
Messages: 464
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.


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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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
Image

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
Image

_________________
Image


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

Inscription: 21 Aoû 2006, 09:06
Messages: 1800
Localisation: Brest
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.

_________________
Good morning, that's a nice Tnetennba


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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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)

...

_________________
Image


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

Inscription: 21 Avr 2019, 21:48
Messages: 432
Localisation: Var
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.


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

Inscription: 06 Avr 2010, 01:59
Messages: 477
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
Image

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 :D

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 :bien:

_________________
Image


Dernière édition par adnz le 12 Aoû 2021, 10:55, édité 1 fois.

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 ... 13, 14, 15, 16, 17, 18, 19  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


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