Merci à vous deux ! Je crois qu'il ne serait pas trop simple, mais je serais très reconnaissant est très content de l'avoir !
Les cartes sont divisées en "brushes", chaque brush a ses propres propriétés. Les numéros dans les cartes ne pointent pas sur des sprites, ils pointent sur un brush qui contient des datas (comme le numéro de sprite, les actions, l'adresse d'un label de texte, etc.).
Un petit exemple:
weaponShop:
.db 11,7,33 ;11 = largeur, 7 = hauteur, 33 = tuile par défaut (certains sprites n'occupent pas toute la 16x16 tuile, la tuile par défaut est affiché dessous et le sprite est "masqué" par-dessus.)
.db 32,32,32,32,32,32,32,32,32,32,32
.db 33,33,33,33,33,33,33,33,33,33,33
.db 33,33,33,33,33,33,33,33,33,33,33
.db 33,33,37,33,33,33,33,33,33,33,33
.db 33,33,33,33,33,33,33,33,33,33,33
.db 33,33,33,33,33,33,33,33,33,33,33
.db 34,34,34,34,30,31,34,34,34,34,34
brushes:
;...
.dw brush030
.dw brush031
.dw brush032
.dw brush033
.dw brush034
;...
.dw brush037
;bit 0:animé
;bit 1:passable: armé si on peut pas passé (tuile solide)
;bit 2:hauteur de tuile
;bit 3:
;bit 4:
;bit 5:
;bit 6:interaction quand le joueur touche la tuile (pas besoin d'apuyer sur 2nd)
;bit 7:interaction (avec 2nd)
; 0 - texte
; 1 - changer carte
; 2 - changer carte en sortant
brushData:
;...
brush030:
.db %01000000 ;octet d'informations: bit 6
.db 30 ;numéro de sprite
.db 1 ;action id
.db 4,4,0 ;x/y coords, map#
brush031:
.db %01000000
.db 31
.db 1
.db 4,4,0 ;carte 0, x=4, y=4
brush032:
.db %00000000 ;pas d'action, on peut y marcher
.db 32
brush033:
.db %00000000
.db 33
brush034:
.db %00000110 ;solide, hauteur différente
.db 34 ;sprite id
.db 7 ;masque
.db 10 ;hauteur de sprite
;...
brush037:
.db %10000110 ;action avec 2nd, solide, hauteur différente
.db npc0 ;sprite id
.db npc0mask ;masque de sprite
.db 12 ;hauteur de sprite
.db 0 ;action (afficher texte)
.dw npc2txt ;label de texte à afficher
spriteData:
;...
tile30:
.db $FF,$FF,$B5,$5F,$E7,$F9,$E8,$04,$A5,$29,$D2,$D3,$99,$26,$D4,$CB
.db $94,$CB,$D9,$26,$92,$D3,$E5,$29,$E8,$04,$E7,$F9,$B5,$5F,$FF,$FF
;...
Le tilemapper cherche le brush dans la carte, puis il charge l'adresse du brush et en tire le numéro du sprite et en fin affiche le sprite.
C'est un peu complèxe et très ennuyeux avoir à changer tous les sprites chaque fois que j'en ajoute un. Je ne sais pas comment ont fait les autres pour faire leurs programmes (comme Dying Eyes, The Verdante Forest, Joltima, etc.).