Comment afficher des sprites sur msx 1

Developper en assembleur sur msxpen

 
Un bout de code pour afficher 3 sprites et les faire bouger. Il faut taper Run 20 dans le cadre bleu pour voir le résultat. La ligne 11 sert à enregistrer en binaire pour injecter le code dans un vrai MSX à partir de la K7. Pour ce faire il faut l'application Msx2cas dans play store pour injecter le code dans un vrai msx ou convertir le fichier bin de clrhome.org en format "cas"

Coder avec clrhome/asm

go to  clrhome/asm

Petite différence malgrés tout car la il faut tout écrire pour que l'application msx2cas fonctionne !  copiez et coller dans le site clrhome/asm.

Attention ! Il faut tabuler la marge de gauche pour qu'il n'y est pas d'erreurs dans la conversion binaire !

.org $c000
_Header:
.db $FE
.dw start,end,start
start:
; the address of our program
ld a,$02; screen mode 2
call $005F
ld b,$c2; sprite 16x16
ld c,$01; register 1
call $0047
_debut:
ld hl,$1B00
ld (_tas),hl
ld hl,$3800
ld (_pixel),hl
ld bc,_message
_mainLoop:
ld a,(bc);stock
ld hl, (_pixel); 1 octet
call $004d
ld hl,(_pixel)
inc hl
ld (_pixel),hl; build sprite1ld a, (bc)
cp 2 ; repere pour fin de construction des sprites
jp z,_move
call $00a2
inc bc
jp _mainLoop;sprite 1
_message:
.db 255,255,128,128+64,128+64+32,128+64+32+16,128+64+32+16+8,128+64+32+16+8+4,128+64+32+16+8+4+2,128+64+32+16+8+4+2+1
.db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
.db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
.db $ff,$ff,$ff,$ff,$ff,$ff,$FF,$ff
;sprite 2
.db $ff,$81,$81,$81,$81,$81,$81,$ff
.db $ff,$81,$81,$81,$81,$81,$81,$ff
.db $ff,$81,$81,$81,$81,$81,$81,$ff
.db $ff,$81,$81,$81,$81,$81,$81,$ff
;sprite 3
.db 128,128+64,128+64+32,128+64+32+16,128+64+32+16+8,128+64+32+16+8+4,128+64+32+16+8+4+2,128+64+32+16+8+4+2+1
.db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
.db 0,0,0,0,0,0,0,0
.db 128,128+64,128+64+32,128+64+32+16,128+64+32+16+8,128+64+32+16+8+4,128+64+32+16+8+4+2,128+64+32+16+8+4+2+1
.db 1


db 2; fin de construction des sprites

_move:
ld hl,$1B00
ld (_tas),hl;-----------sprite 1----------
;1 er sprite
ld a,(_y)
ld hl,(_tas) ; locate y sprite 1
call $004d
inc hl
ld (_tas),hl
ld a,(_x)
inc a
ld (_x),a
ld hl,(_tas) ; locate x sprite 1
call $004d
inc hl
ld (_tas),hl
ld a,0; nuber of sprite 1
ld hl,(_tas) ; tgs sprite 1
call $004d
inc hl
ld (_tas),hl
ld a,$57
ld hl,(_tas) ; color sprite 1
call $004d
inc hl
ld (_tas),hl
;-----------sprite 2----------
;
ld a,(_y2)
ld hl,(_tas) ; locate y sprite 2
call $004d
inc hl
ld (_tas),hl
ld a,(_x2)
inc a
ld (_x2),a
ld hl,(_tas) ; locate x sprite 2
call $004d
inc hl
ld (_tas),hl
ld a,4; nuber of sprite 2
ld hl,(_tas) ; tgs sprite 2
call $004d
inc hl
ld (_tas),hl
ld a,$89
ld hl,(_tas) ; color sprite 2
call $004d
inc hl
ld (_tas),hl
;-----------sprite 3----------
;
ld a,(_y3)
ld hl,(_tas) ; locate y sprite 3
call $004d
inc hl
ld (_tas),hl
ld a,(_x3)
inc a
ld (_x3),a
ld hl,(_tas) ; locate x sprite 3
call $004d
inc hl
ld (_tas),hl
ld a,8; number of sprite 3
ld hl,(_tas) ; tgs
call $004d
inc hl
ld (_tas),hl
ld a,$AB
ld hl,(_tas) ; color sprite 3
call $004d
inc hl
ld (_tas),hl; timerld de,(_counter)
_boucle:
inc de
ld (_counter),de
ld a,d
or e
cp 255
jp z,_suite
jr _boucle
_suite:
ld de,0
ld (counter),de
ld de,(counter2)
continue2:
inc de
ld (counter2),de
ld a,d
or e
cp 25
jp z,_continue
jr boucle
_continue:
ld de,0
ld (_counter2),de
jp _move_counter:
.dw $0000

_counter2:
.dw $0000

.dw $0000
_tas:
.dw $0000
_pixel:
.dw $0000
_y:
.db 0
_x:
.db 255-15
_y2:
.db 16
_x2:
.db 16
_x3:
.db 16
_y3:
.db 32
end:
; use the label "start" as the entry point

Pratique du MSX1


Pratique du msx1

Vous aurais dans ce livre toutes les routines dont vous avez besoin ! Une vraie mine d'or !

lire

Clefs pour msx

 

Voici le livre indispensable pour savoir utiliser le msx.

download

The msx red book

 

Voici l'indispensable red book avec toutes les routines.

download red book

© sergio max rendomizer
Optimisé par Webnode
Créez votre site web gratuitement ! Ce site internet a été réalisé avec Webnode. Créez le votre gratuitement aujourd'hui ! Commencer