comment programmer des sprites sur msx en assembleur ( resolu )
2 participants
Page 1 sur 1
comment programmer des sprites sur msx en assembleur ( resolu )
facebook msx page
Voir la demo en ligne sur l'éditeur/émulateur du msx si dessous.
https://msxpen.com/?code=-MEOWC47p49XBipJthNJ&fbclid=IwAR04p78y-aoBzLtWsbPIPoLnwijTuj5pN5_n8Arhaw9VYhj-iTMHewwQVaM
Pour le vrai msx aussi il y a le lien si dessous. Il faut les passer par msx2cas sur votre tablet ou telephone: lien si dessous.
application qui remplace le magnetophone
download programme + sources
org $c000
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
inc hl
ld (pixel),hl; build sprites
ld a, (bc)
cp 254
jp z,move
inc bc
jp mainLoop
message:;sprite 1
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %11111111
db %00000000
db %11111111
db %00000000
db %11111111
db %00000000
db %11111111
db %00000000
db %11111111
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %11111111
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
;sprite 2
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %01111110
db %01111110
db %01111110
db %01111110
db %01111110
db %01111110
db %00000000
db %11111111
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %11111111
;sprite 3
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
;sprite 4
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
move:
ld hl,$1B00
ld (tas),hl
;-----------sprite 1----------
;1 er sprite
ld a,(y)
ld b,a
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,$0f
ld hl,(tas) ; color sprite 1
call $004d
inc hl
ld (tas),hl
;-----------sprite 2----------
;
ld a,(y)
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,$08
ld hl,(tas) ; color sprite 2
call $004d
inc hl
ld (tas),hl
;-----------sprite 3----------
;
ld a,(y)
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,$0c
ld hl,(tas) ; color sprite 3
call $004d
inc hl
ld (tas),hl
;-----------sprite 4----------
;
ld a,(y4)
ld hl,(tas) ; locate y sprite 4
call $004d
inc hl
ld (tas),hl
ld a,(x4)
inc a
ld (x4),a
ld hl,(tas) ; locate x sprite 4
call $004d
inc hl
ld (tas),hl
ld a,12; number of sprite 4
ld hl,(tas) ; tgs
call $004d
inc hl
ld (tas),hl
ld a,$01
ld hl,(tas) ; color sprite 4
call $004d
inc hl
ld (tas),hl
; timer
ld 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 45
jp z,continue
jr boucle
continue:
ld de,0
ld (counter2),de
jp move
counter: dw $0000
counter2: dw $0000
tas: dw $0001
pixel: dw $0001
x: db 0
x2: db 0
x3: db 0
x4: db 0
y: db 16
y2: db 16
y3: db 16
y4: db 16
Voir la demo en ligne sur l'éditeur/émulateur du msx si dessous.
https://msxpen.com/?code=-MEOWC47p49XBipJthNJ&fbclid=IwAR04p78y-aoBzLtWsbPIPoLnwijTuj5pN5_n8Arhaw9VYhj-iTMHewwQVaM
Pour le vrai msx aussi il y a le lien si dessous. Il faut les passer par msx2cas sur votre tablet ou telephone: lien si dessous.
application qui remplace le magnetophone
download programme + sources
org $c000
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
inc hl
ld (pixel),hl; build sprites
ld a, (bc)
cp 254
jp z,move
inc bc
jp mainLoop
message:;sprite 1
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %10101010
db %11111111
db %00000000
db %11111111
db %00000000
db %11111111
db %00000000
db %11111111
db %00000000
db %11111111
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %11111111
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
;sprite 2
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %01010101
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %01111110
db %01111110
db %01111110
db %01111110
db %01111110
db %01111110
db %00000000
db %11111111
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %10000001
db %11111111
;sprite 3
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
;sprite 4
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %11111111
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
db %00000000
move:
ld hl,$1B00
ld (tas),hl
;-----------sprite 1----------
;1 er sprite
ld a,(y)
ld b,a
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,$0f
ld hl,(tas) ; color sprite 1
call $004d
inc hl
ld (tas),hl
;-----------sprite 2----------
;
ld a,(y)
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,$08
ld hl,(tas) ; color sprite 2
call $004d
inc hl
ld (tas),hl
;-----------sprite 3----------
;
ld a,(y)
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,$0c
ld hl,(tas) ; color sprite 3
call $004d
inc hl
ld (tas),hl
;-----------sprite 4----------
;
ld a,(y4)
ld hl,(tas) ; locate y sprite 4
call $004d
inc hl
ld (tas),hl
ld a,(x4)
inc a
ld (x4),a
ld hl,(tas) ; locate x sprite 4
call $004d
inc hl
ld (tas),hl
ld a,12; number of sprite 4
ld hl,(tas) ; tgs
call $004d
inc hl
ld (tas),hl
ld a,$01
ld hl,(tas) ; color sprite 4
call $004d
inc hl
ld (tas),hl
; timer
ld 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 45
jp z,continue
jr boucle
continue:
ld de,0
ld (counter2),de
jp move
counter: dw $0000
counter2: dw $0000
tas: dw $0001
pixel: dw $0001
x: db 0
x2: db 0
x3: db 0
x4: db 0
y: db 16
y2: db 16
y3: db 16
y4: db 16
Dernière édition par rendomizer le Ven 14 Aoû 2020 - 19:39, édité 8 fois
Re: comment programmer des sprites sur msx en assembleur ( resolu )
N'oublie pas qu'il y'a la balise code sur ce fofo
Sinon plus que le code , tu me fais découvrir qu'il y'a un émulateur en ligne du MSX , et qu'on peut écrire direct en ASM , belle découverte pour moi ^^
( on arrête pas le progrès )
Sinon plus que le code , tu me fais découvrir qu'il y'a un émulateur en ligne du MSX , et qu'on peut écrire direct en ASM , belle découverte pour moi ^^
( on arrête pas le progrès )
Dernière édition par Kannagi le Mar 11 Aoû 2020 - 3:57, édité 1 fois
Invité- Invité
Re: comment programmer des sprites sur msx en assembleur ( resolu )
le partage des connaissances Kannagi !
Re: comment programmer des sprites sur msx en assembleur ( resolu )
Très intéressant, faut vraiment que je me trouve un MSX.
legrand- Patient en incubation
- Nombre de messages : 10
Age : 43
Localisation : PARIS
Date d'inscription : 07/12/2020
Sujets similaires
» [VG5000] super sprites maker en assembleur et code basic
» Comment avez-vous appris à programmer ?
» Retro PROGRAMMER DUMPER v2.0N et cartouche NES vierge, comment faire
» IDE Assembleur pour PCE e C64
» Tuto assembleur sur MSX
» Comment avez-vous appris à programmer ?
» Retro PROGRAMMER DUMPER v2.0N et cartouche NES vierge, comment faire
» IDE Assembleur pour PCE e C64
» Tuto assembleur sur MSX
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum