La Place des Développeurs Asmsx par un noob, aparté: Un scrolling paralaxe en screen2 réutilisation du timer ...
Je me suis amusé à créer une petite démo sur la base du « timer » de metalion.
Un scrolling parallaxe
C’est du vite fait graphiquement, mais ça permet de voir une application concrète du système.
Pour les graphismes, j’ai bien galéré pour trouver un convertisseur BMP vers données screen2 asm, j’ai utilisé MSX Tile Devtool, mais j’ai eu des bugs.
Pour la map, j’ai l’impression qu’il n’existe rien de concret pour MSX. J’ai utilisé Tile Studio, mais j’ai été obligé de mettre les tiles dans l’ordre sur la map pour qu’ils prennent le bon N° d’ordre ce qui le rend inutilisable pour des maps plus complexes.
Si quelqu’un a des infos sur ces logiciels ou connait des applications plus adaptées, je suis preneur.
En attendant le programme :
La petite vidéo :
Enfin les fichiers:
scroll.zip
Un scrolling parallaxe
C’est du vite fait graphiquement, mais ça permet de voir une application concrète du système.
Pour les graphismes, j’ai bien galéré pour trouver un convertisseur BMP vers données screen2 asm, j’ai utilisé MSX Tile Devtool, mais j’ai eu des bugs.
Pour la map, j’ai l’impression qu’il n’existe rien de concret pour MSX. J’ai utilisé Tile Studio, mais j’ai été obligé de mettre les tiles dans l’ordre sur la map pour qu’ils prennent le bon N° d’ordre ce qui le rend inutilisable pour des maps plus complexes.
Si quelqu’un a des infos sur ces logiciels ou connait des applications plus adaptées, je suis preneur.
En attendant le programme :
Code ASM :
;------------------------------------------------ ; ; TUTO - ASM ; ;------------------------------------------------ ; Essai de programmation d'un jeu en ASM ;------------------------------------------------ ; MSXosaure 2014... ;------------------------------------------------ ; ;------------------------------------------------ ; Initialisation ;------------------------------------------------ .bios .page 2 .rom .start DEBUT ; ;------------------------------------------------ ; Constantes VRAM ;------------------------------------------------ CHRTBL equ 0000h NAMTBL equ 1800h CLRTBL equ 2000h SPRTBL equ 3800h SPRATR equ 1b00h ;------------------------------------------------ DEBUT: ; sélection screen call DISSCR ; réglage COLOR 11,1,1 ld hl,0f3e9h ld [hl],15 inc hl ld [hl],12 inc hl ld [hl],1 ; SCREEN 2 call INIGRP ; SCREEN ,2 ld bc,06201h call WRTVDP ; Mise à zéro de la VRAM ld hl,0000h ld bc,4000h xor a call FILVRM ; Definition des formes patterns ldde,0 callGST_BANK ldde,256*8 callGST_BANK ldde,512*8 callGST_BANK ; Definition des formes sprites ld hl,SPR_PATRON ld de,SPRTBL; + 32 ld bc,20*32 call LDIRVM ; initialisation des attributs sprites ld hl,ATT_SPRITES; on prend les paramètres initiaux ld de,VAR_SPRITES; à envoyer vers les variables des sprites ld bc,2*4; nombre de sprites * nb d'attributs (ça va évoluer) ldir; on lance la "copie" ; Sauvegarde du hook original H.TIMI ld hl,$fd9f; ou HTIMI pour les intimes ld de,REFRESH_OLD ld bc,5 ldir ; Mise en place de la dérivation de l'interruption REFRESH di ld hl,REFRESH ld [$fd9f+1],hl; ou HTIMI+1 pour les intimes on y dépose l'adresse du saut ld a,0C3h ; opcode "JP" ld [$fd9f],a; ou HTIMI pour les intimes on y dépose le "jump" ei ; xor a ld[VAR_ANI_H],a callGST_CARTE ;-----------------------------------------------! ;! ;! ;! ; BOUCLE PRINCIPALE! ;! ;! ;! LOOP: call WAIT_REFRESH call GST_DEP_Heros call GST_SPRITES callGST_DEFILE_1; Scrolling premier plan plus rapide ld a,[VAR_TIMER] ; Chargement du timer and 1 ; toutes les 2 frames callz,GST_DEFILE_2 ; Scrolling second plan ld a,[VAR_TIMER] ; Chargement du timer and 3 ; toutes les 4 frames callz,GST_DEFILE_3 ; scrolling troisième plan jpLOOP ;-----------------------------------------------! ; ; ; ;- - - SOUS PROGRAMME BOUCLE- - - ; ;---------------------------------------------------------- GST_DEFILE_1:;---- Gestion Scrolling premier plan ----- ;---------------------------------------------------------- ldhl,CHRTBL+(512*8)+8+16;chargement caractères eau et quai ld b,16; longueur de ces caractères callSCROLL; Vers la mise en place du scrolling lda,-1; conséquence = recul... jpX_MOVE; du héros! ; ;---------------------------------------------------------- GST_DEFILE_2:;---- Gestion Scrolling second plan ----- ;---------------------------------------------------------- ldhl,CHRTBL+(512*8)+8;chargement caractères mur ld b,16; longueur de ces caractères jpSCROLL; Vers la mise en place du scrolling ; ;---------------------------------------------------------- GST_DEFILE_3:;---- Gestion Scrolling troisième plan ----- ;---------------------------------------------------------- ldhl,CHRTBL+(512*8)+8+32;chargement caractères verdure ld b,24; longueur de ces caractères JPSCROLL; Vers la mise en place du scrolling ; ;---------------------------------------------------------- SCROLL: ;---------------------------------------------------------- callRDVRM; ligne de caractère dans a rlca; rotation vers la gauche callWRTVRM; remise de la ligne dans la VRAM inc hl; au suivant! DJNZSCROLL; on boucle "b" fois ret ; ;---------------------------------------------------------- GST_DEP_Heros:;---- Gestion mouvement ----- ;---------------------------------------------------------- ; xor a; A=0 (test clavier) call GTSTCK; A= direction flèches clavier cp 0; Si A=0 jr nz,@@GST_MOVE; si non (a<>0) saut à la boucle inc a; si oui A=A+1 (A=1) call GTSTCK; A= direction manette 1 cp 0; Si A=0 jr nz,@@GST_MOVE; si non (a<>0) saut à la boucle ret ; ;Gestion mouvement @@GST_MOVE: push af; sauve a (valeur joystick) ; Orientation sprite dec a; on décale de -1 pour partir de 0 ldhl,VAL_ORI_H; HL = adr. orientation heros ldb,0; mise dans BC de a ldc,a; " addhl,bc; HL = On met HL à l'adresse correspondant à adresse d'orientation voulue. lda,[hl]; on met la valeur dans a ; Animation sprite ld b,a ; plus rapide que push af et permet de préparer l'addition ld a,[VAR_TIMER] ; Chargement du timer and 7 ; toutes les 8 frames ld a,[VAR_ANI_H] ; charger a ne modifie pas les flags (pour le 'jp nz') et permet d'anticiper l'opération jp nz,@@suite ; saut à "pas de modif" si NON xor 8; inversion (0 ou 8) ld[VAR_ANI_H],a; sauvegarde de la variable @@suite: add a,b ;l'ajouter à...l'orientation du héros sauvegardée ld [VAR_SPRITES+(0*4)+2],a ; N° 1er sprite heros (plan0) add 4 ; plus rapide que 4x 'inc a' ld [VAR_SPRITES+(1*4)+2],a ; N° 2nd sprite heros(plan1) ; Déplacement horizontaux pop af ; push af; sauve A (valeur joystick) ldhl,VAL_DEP_X; HL = adr. déplacement X ldb,0; mise dans BC de A ldc,a; " addhl,bc; HL = On met HL à l'adresse correspondant à adresse de déplacement en X + position manette. lda,[hl]; a = val. déplacement X X_MOVE: ldb,a; B = val. déplacement X lda,[VAR_SPRITES+1] ; a=X avant déplacement addb; a=a+val. déplacement X cp 6; si X=X mini -2 (< à X mini) jr nz,@@X_MAX; si non saut à X_MAX lda,8; si oui X=X mini jp@@X_MAJ; et saut à MAJ de X @@X_MAX: cp 234; si X=X maxi +2 (> à X maxi) jr nz,@@X_MAJ; si non saut à MAJ de X lda,232; si oui X=X maxi @@X_MAJ: ld [VAR_SPRITES+(0*4)+1],a; X 1er sprite heros (plan0) ld [VAR_SPRITES+(1*4)+1],a ; X 2nd sprite heros(plan1) ret; Retour à la boucle principale ; ;----------------------------------------------------------- ; Attente REFRESH ;----------------------------------------------------------- WAIT_REFRESH: ld hl,VAR_TIMER ld a,[VAR_TIMER] @@loop: cp [hl] jr z,@@loop ret ; ;------------------------------------------------------ ; ;- - - SOUS PROGRAMME- - - ; ;------------------------------------------------------ ; ;------------------------------------------------------ GST_BANK:; Definition des positions des patterns ;------------------------------------------------------ ; ; Definition des formes patterns pushde ld hl,CHRTBL+8 addhl,de ld de,TIL_PATRON exde,hl ld bc,22*8 call LDIRVM ; Definition des couleurs patterns popde ld hl,CLRTBL+8 addhl,de ld de,TIL_COULEUR exde,hl ld bc,22*8 call LDIRVM ret ;------------------------------------------------------ GST_CARTE:; Definition des positions des patterns ;------------------------------------------------------ ; ld hl,TIL_CARTE ld de,NAMTBL ld bc,32*24 call LDIRVM ret ; ;------------------------------------------------------ GST_SPRITES:;- envoi variables vers sprites ;------------------------------------------------------ ; ld hl,VAR_SPRITES; on prend les variables des sprites ld de,SPRATR; à envoyer vers les attributs de sprites en VRAM ld bc,2*4; nombre de sprites * nb d'attributs (ça va évoluer) call LDIRVM; c'est parti! ret ;----------------------------------------------------------- ; Interruption sur REFRESH ;----------------------------------------------------------- REFRESH: ; Incrémentation du compteur REFRESH ld a,[VAR_TIMER] inc a cp 128 jr nz,CYCLE xor a CYCLE: ld [VAR_TIMER],a ; Exécution du hook original HTIMI et fin de gestion des interruptions jp REFRESH_OLD ; ;---------------------------------------------------------- ; Données ;---------------------------------------------------------- ; ; Patron des sprites SPR_PATRON: .INCLUDE"data_sprites.asm" ; ; Attribut sprites ; ; X, Y, N°, Couleur ATT_SPRITES: db152,152,16,1 db152,152,20,11 ; Test déplacement VAL_DEP_X: ;------ 0,1,2,3,4,5,6, 7,8 db 0,0,2,2,2,0,-2,-2,-2 VAL_DEP_Y: ;------ 0, 1,2,3,4,5,6,7,8 db 0,-2,0,0,0,2,0,0,0 ; orientation du heros VAL_ORI_H: ;------ 1, 2, 3, 4, 5, 6, 7, 8 db 0,16,16,16,32,48,48,48 ; Patrons des patterns TIL_PATRON: db 0FFh,00Fh,0C3h,0F0h,0FFh,010h,010h,010h db 0FFh,001h,001h,001h,0FFh,010h,010h,010h db 0FFh,080h,080h,07Fh,000h,044h,0EDh,0FFh db 0FFh,0F7h,0FFh,0FFh,074h,024h,0DBh,07Fh db 0FFh,0FFh,0FFh,0FFh,0FFh,010h,0B8h,080h db 0FFh,0FFh,001h,000h,000h,010h,0B8h,080h db 000h,000h,08Ch,0C0h,000h,006h,00Ch,0C0h db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh db 080h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFh db 001h,003h,007h,00Fh,01Fh,03Fh,07Fh,0FFh db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh db 000h,000h,000h,001h,007h,01Fh,0C0h,000h db 0FFh,0FFh,078h,003h,000h,000h,000h,000h db 0FFh,0FFh,0FFh,0FFh,00Fh,003h,000h,000h db 000h,000h,000h,000h,000h,0F0h,007h,001h db 000h,000h,000h,0B0h,0FFh,0FFh,0FFh,0FFh db 000h,000h,000h,000h,083h,0FFh,0FFh,0FFh db 000h,000h,000h,000h,00Fh,07Fh,0FFh,0FFh db 000h,000h,001h,00Fh,0FFh,0FFh,0FFh,0FFh db 080h,0C0h,0C0h,0E0h,0F0h,0F8h,0FCh,0FFh db 001h,003h,007h,00Fh,01Fh,03Fh,07Fh,0FFh db 000h,000h,000h,000h,000h,000h,000h,000h db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh ; color data TIL_COULEUR: db 0E1h,096h,096h,096h,0EAh,0E6h,0E6h,0E6h db 0E6h,0E6h,0E6h,0E6h,0E6h,0E6h,0E6h,0E6h db 0E6h,0EFh,0EFh,0E1h,0E1h,0E1h,0E1h,0E1h db 0E1h,0E1h,0E1h,0E1h,0FEh,05Fh,05Fh,05Fh db 0E1h,0E1h,0E1h,0E1h,0E1h,03Eh,03Eh,023h db 071h,071h,037h,037h,037h,027h,027h,02Ch db 023h,023h,023h,023h,023h,023h,023h,023h db 051h,051h,051h,051h,051h,051h,051h,051h db 0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h db 0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h db 0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h db 0E7h,0E7h,0E7h,0E7h,0F7h,0F7h,0EFh,0EFh db 071h,071h,0F7h,0EFh,0EFh,0EFh,0EFh,0EFh db 071h,071h,071h,071h,07Fh,0EFh,0EFh,0EFh db 0E7h,0E7h,0E7h,0E7h,0F7h,0F7h,07Fh,0EFh db 0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh db 0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh db 0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh db 0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh,0EFh db 0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h db 0E7h,0F7h,0E7h,0E7h,0E7h,0E7h,0E7h,0E7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h,0F7h db 077h,077h,077h,077h,077h,077h,077h,077h db 0F1h,0F1h,0F1h,0F1h,0F1h,0F1h,0F1h,0F1h ; TIL_CARTE: db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 12, 13, 14, 15 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 16, 17, 18, 19 db 20, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11 db 11, 9, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11 db 11, 11, 9, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 9, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 9, 22, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 9, 22, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 9, 22, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 11, 9, 22, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 11, 11, 9, 22, 22, 22, 22, 22 db 22, 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 22, 22, 22, 22 db 22, 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 22, 22, 22 db 22, 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 22, 22 db 22, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 22 db 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 db 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9 db 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 db 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 db 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 db 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 db 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 db 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 db 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 db 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 db 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 db 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 db 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 db 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 db 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 ; ;---------------------------------------------------------- ; VARIABLES ;---------------------------------------------------------- .page 3 ; ; variables sprites VAR_SPRITES: ds 2*4 ; variable pour la tempo VAR_TIMER: ds1 ;hook original H.TIMI REFRESH_OLD: ds5 ; variable animation heros VAR_ANI_H: ds1
La petite vidéo :
Scrolling parallaxe Screen2 (MSXosaure-2014) MSX par MSXosaure
Enfin les fichiers:
scroll.zip
Le MSXien le plus à l'ouest ... ou presque
Tres sympa la demo !
Pour la conversion BMP en Screen 2, je te recommande BMP2MSX: http://www.msx.org/news/development/en/bmp2msx-v111008-english
Pour editer la map tu peux essayer Magellan. C'est sur un forum Ti99, mais pas mal de developpeurs MSX l'utilisent:
http://atariage.com/forums/topic/161356-magellan/
Pour la conversion BMP en Screen 2, je te recommande BMP2MSX: http://www.msx.org/news/development/en/bmp2msx-v111008-english
Pour editer la map tu peux essayer Magellan. C'est sur un forum Ti99, mais pas mal de developpeurs MSX l'utilisent:
http://atariage.com/forums/topic/161356-magellan/
MSXosaure :
Pour la map, j’ai l’impression qu’il n’existe rien de concret pour MSX. J’ai utilisé Tile Studio, mais j’ai été obligé de mettre les tiles dans l’ordre sur la map pour qu’ils prennent le bon N° d’ordre ce qui le rend inutilisable pour des maps plus complexes
J'ai pas encore eu le temps de regarder ta démo, ce sera pour tout à l'heure ...
Mais je ne comprends pas ton problème avec TileStudio ... Pour moi c'est un super outil qui justement permet la construction de maps dynamiques à partir d'un charset. Le seul problème est qu'il n'est pas vraiment fait pour gérer des tiles de 8x8, ce qui fait qu'elles sont minuscules.
La procédure :
1. Tu crées tes tiles, en prenant bien soin de les mettre dans le même ordre que dans ton jeu (et en tenant compte que la tile '0' n'existe pas dans TileStudio)
2. Tu crées tes maps.
3. Tu les sauvegardes par "Export Map" avec l'option "8-bits, 1-based"
Tu obtiens alors un fichier binaire qui contient ta map et directement utilisable par ton programme en faisant un ".include".
EDIT : Je viens de voir ta démo. Très joli !! Edité par Metalion Le 27/10/2014 à 08h45
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Metalion :
J'ai pas encore eu le temps de regarder ta démo, ce sera pour tout à l'heure ...
Mais je ne comprends pas ton problème avec TileStudio ... Pour moi c'est un super outil qui justement permet la construction de maps dynamiques à partir d'un charset. Le seul problème est qu'il n'est pas vraiment fait pour gérer des tiles de 8x8, ce qui fait qu'elles sont minuscules.
La procédure :
1. Tu crées tes tiles, en prenant bien soin de les mettre dans le même ordre que dans ton jeu (et en tenant compte que la tile '0' n'existe pas dans TileStudio)
2. Tu crées tes maps.
3. Tu les sauvegardes par "Export Map" avec l'option "8-bits, 1-based"
Tu obtiens alors un fichier binaire qui contient ta map et directement utilisable par ton programme en faisant un ".include".
EDIT : Je viens de voir ta démo. Très joli !!
MSXosaure :
Pour la map, j’ai l’impression qu’il n’existe rien de concret pour MSX. J’ai utilisé Tile Studio, mais j’ai été obligé de mettre les tiles dans l’ordre sur la map pour qu’ils prennent le bon N° d’ordre ce qui le rend inutilisable pour des maps plus complexes
J'ai pas encore eu le temps de regarder ta démo, ce sera pour tout à l'heure ...
Mais je ne comprends pas ton problème avec TileStudio ... Pour moi c'est un super outil qui justement permet la construction de maps dynamiques à partir d'un charset. Le seul problème est qu'il n'est pas vraiment fait pour gérer des tiles de 8x8, ce qui fait qu'elles sont minuscules.
La procédure :
1. Tu crées tes tiles, en prenant bien soin de les mettre dans le même ordre que dans ton jeu (et en tenant compte que la tile '0' n'existe pas dans TileStudio)
2. Tu crées tes maps.
3. Tu les sauvegardes par "Export Map" avec l'option "8-bits, 1-based"
Tu obtiens alors un fichier binaire qui contient ta map et directement utilisable par ton programme en faisant un ".include".
EDIT : Je viens de voir ta démo. Très joli !!
Merci, oui pour Tile studio je pense que c'est un problème de config.
Pour MSX Tile Devtool, je vais d'abord passer par BMPtoMSX pour créer un fichier SC2 (Devtool les prend en charge) et créer mon fichier ensuite.
Fabf :
Impressionnant et avec si peu de code !
Ca donne vraiment envie de s'y mettre
Edit :
Il y aurais pas une erreur dans les commentaires au niveau des frames
Ca donne vraiment envie de s'y mettre
Edit :
Il y aurais pas une erreur dans les commentaires au niveau des frames
Merci, c'est corrigé!
Ah le copier/coller
Le MSXien le plus à l'ouest ... ou presque
Maggoo :
Pour editer la map tu peux essayer Magellan. C'est sur un forum Ti99, mais pas mal de developpeurs MSX l'utilisent
Magellan est très intéressant, et très développé, beaucoup plus que les outils similaires sur MSX.
Mais sauf erreur de ma part, on ne peut pas le télécharger sans être membre du forum !
MSXosaure :
Pour MSX Tile Devtool, je vais d'abord passer par BMPtoMSX pour créer un fichier SC2 (Devtool les prend en charge) et créer mon fichier ensuite
Je ne connaissais pas cet outil récent ... Il a l'air sympa. Edité par Metalion Le 27/10/2014 à 11h50
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Dans l'archive de "Super Mafia Bros 3", il y a un éditeur de map sympa en dotNET. msxGLEditor.
Ca génère des fichiers *.CHR (table des patterns) et *.CLR (table des couleurs)
Et pour l'intégrer dans asMSX, ces deux lignes suffisent
.incbin "Data/LEVEL01.CHR" SKIP 7 SIZE 2048
.incbin "Data/LEVEL01.CLR" SKIP 7 SIZE 2048
Ca génère des fichiers *.CHR (table des patterns) et *.CLR (table des couleurs)
Et pour l'intégrer dans asMSX, ces deux lignes suffisent
.incbin "Data/LEVEL01.CHR" SKIP 7 SIZE 2048
.incbin "Data/LEVEL01.CLR" SKIP 7 SIZE 2048
MSXosaure :
J'ai fait comme tu m'as dit Metalion, mais asmsx plante systématiquement à l'inclusion du fichier binaire
Je me suis trompé
C'est pas ".include" que tu dois utiliser mais ".incbin"
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Metalion :
Je me suis trompé
C'est pas ".include" que tu dois utiliser mais ".incbin"
MSXosaure :
J'ai fait comme tu m'as dit Metalion, mais asmsx plante systématiquement à l'inclusion du fichier binaire
Je me suis trompé
C'est pas ".include" que tu dois utiliser mais ".incbin"
J'ai compris quand j'ai vu le post de RibbSayan
Il y a aussi le binDB.exe fourni avec asmsx qui convertit un fichier binaire en fichier asm... J'ai pas pris le temps de lire la notice hier soir...(à quoi ça sert que Granced se décarcasse )
Du coup ça fonctionne bien, mais je regrette de ne pas pouvoir couvrir toute une zone avec une tuile (ou groupe de tuiles en une fois )
@ericb59 , j'aimerai bien, mais je ne suis pour l'instant qu'un petit padawan
Le MSXien le plus à l'ouest ... ou presque
MSXosaure :
Du coup ça fonctionne bien, mais je regrette de ne pas pouvoir couvrir toute une zone avec une tuile (ou groupe de tuiles en une fois )
Je ne comprends pas très bien ce que tu veux dire.
Que tu ne peux pas peindre une map avec une tuile dans TileStudio, c'est ça ?
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Metalion :
Je ne comprends pas très bien ce que tu veux dire.
Que tu ne peux pas peindre une map avec une tuile dans TileStudio, c'est ça ?
MSXosaure :
Du coup ça fonctionne bien, mais je regrette de ne pas pouvoir couvrir toute une zone avec une tuile (ou groupe de tuiles en une fois )
Je ne comprends pas très bien ce que tu veux dire.
Que tu ne peux pas peindre une map avec une tuile dans TileStudio, c'est ça ?
En gros, je sélectionne une tuile (ou un groupe) je sélectionne un "point" dans ma map et un autre plus loin et cette zone se remplit de cette tuile...
Autre problème (par un noob, c'est dans le titre ) mes rappels de sauvegarde de map ne marchent pas, rien ne se charge
Le MSXien le plus à l'ouest ... ou presque
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie