MSX Village forum

La Place des Développeurs Mode 1 et Mode 2 Test de codage du MSX en C

bfg Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/08/2011 à 10h02

Messages: 58

Le 24/10/2012 à 17h46
Bonjour,

j'aurais besoin d'un renseignement, à savoir des infos sur les modes graphiques 1 et 2. Je suis en train de développer une librairie en C pour MSX, j'arrive à afficher des sprites par exemple et j'essaye de porter mes fonds graphiques Coleco sur MSX. Pour cela il faudrait que j'active le mode 2

Le mode graphique 2 est il dédié uniquement au MSX 2 ?

Quelqu'un ici à t'il déja compilé une ROM avec SDCC ? (En effet ma rom compilée fonctionne sous MSX1 mais pas sous MSX2 ....)

Bref je fais quelques expérimentation,et pour le moment c'est un peut compliqué ...
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10484

Le 24/10/2012 à 19h15
le mode 2 ou GR2 est le screen 2 sur MSX

16 couleurs 256 x 192 pixels + sprites 8x8 ou 16x16


:noel
Site web    
bfg Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/08/2011 à 10h02

Messages: 58

Le 24/10/2012 à 20h03
Jipe :
le mode 2 ou GR2 est le screen 2 sur MSX



16 couleurs 256 x 192 pixels + sprites 8x8 ou 16x16




Ok, j'ai donc bien un problème, j'arrive à charger la définition des caractères, ainsi que le "name", mais pas les couleurs des caractères ... Je ne comprends pas pourquoi ...



#define T32NAM 0xF3C7

#define T32COL 0xF3C9

#define T32CGP 0xF3CB

#define T32ATR 0xF3CD

#define T32PAT 0xF3CF



J'initialise le mode 2 :



void screen_mode_2()

{

__asm



ld a,#0x02

call 0x005F ; --- go to screen 2

call 0x00CC ; --- erase function keys



__endasm;

}



Je charge, le NAME = Les caractères dans l'écran

vpoke_block(peek_word(T32NAM),NAME,48*16);



Je charge la définition des caractères dans les 3 banks du mode 2

vpoke_block(peek_word(T32CGP),PATTERN,128*16);

vpoke_block(peek_word(T32CGP)+2048,PATTERN,128*16);

vpoke_block(peek_word(T32CGP)+4096,PATTERN,128*16);



Je charge la palette des caractères dans les 3 banks couleurs du mode 2 ... Et ça marche pas pour les couleurs ..

vpoke_block(peek_word(T32COL),COLOR,128*16);

vpoke_block(peek_word(T32COL)+2048,COLOR,128*16);

vpoke_block(peek_word(T32COL)+4096,COLOR,128*16);



Les fichiers viennent de mon Bomb Jack sur Coleco, on voit bien apparaitre le graphisme de mon niveau, mais en "monochrome".



Si jamais quelqu'un à une idée ...
bfg Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/08/2011 à 10h02

Messages: 58

Le 24/10/2012 à 20h19
Bon, j'ai trouvé, c'est ma routine d'initialisation des sprites que j'ai récupéré qui fait sauter le mode 2 et repasse en mode 1 à savoir :

spritesize permet de savoir si on fait des sprites de 8*8 ou 16*16 et le zoom si on double ou pas la taille du sprite ... Le problème c'est que pour le moment, je ne comprend pas ce que fait cette routine et pourquoi ça repasse en mode 1 :( :( Si quelqu'un saurait m'éclairer ...

void setup_sprites(char spritesize, char zoom){
__asm

ld b,#0x00
ld a,4(ix)
and #0x0f
cp #0x08
jr z,$1
set 1,b ; --- if 16x16 sprites => set bit 1
$1:
ld a,5(ix)
cp #0x00
jr z, $2
set 0,b ; --- if zoom sprites => set bit 0
$2:
ld hl,#0xf3e0 ; --- read vdp(1) from mem
ld a,(hl)
and #0xfc
or b
ld (hl),a
call 0x007b ; --- change vdp(1) bits

ld a,#0x01
ld hl,#0xfcaf
ld (hl),a
call 0x0069 ; --- reset sprite attributes

__endasm;
}

Edit : j'ai trouvé ... call 0x007b ; --- change vdp(1) bits doit être changé en call 0x007e ; --- change vdp(1) bits Edité par bfg Le 24/10/2012 à 20h21
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 553

Le 24/10/2012 à 20h22
il faut remplacer T32... par GRP...


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 553

Le 24/10/2012 à 20h35
pour "rester" en screen 2, il faut faire CALL #7E

Code :
SCREEN 1:DEFUSR=&H7E:X=USR(0)


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
bfg Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/08/2011 à 10h02

Messages: 58

Le 24/10/2012 à 20h41
Sector28 :
pour "rester" en screen 2, il faut faire CALL #7E



Code :
SCREEN 1:DEFUSR=&H7E:X=USR(0)




Yep, merci !! Ca marche bien !
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie