L'atelier [RESOLU] LEILA_K : Ecouter de la musique avec la SCC Comment changer la musique contenu dans la démo SCC LEYLA_K
Reprise du message précédent
Je viens tout juste d'envoyer un mail à Dvik
J'aime bien expérimenter, et pour le moment, j'peux pas trop me servir de mon bras....Donc je m'occupe à me torturer le cerveau
Faut croire que mon intrusion dans Leila à eu son petit effet 
Citation:
*********
Thanks for the contact info. I'll send you the sources tonight
-Daniel
********
@ Métalion: J'ai prévenu Dvik que je ne pouvais rien en faire tout seul et qu'un membre du village est volontaire pour travailler dessus.
Au moins, comme ça, c'est clean.
Edité par
igal
Le 05/09/2012 à 20h57

Citation:
*********
Thanks for the contact info. I'll send you the sources tonight
-Daniel
********
@ Métalion: J'ai prévenu Dvik que je ne pouvais rien en faire tout seul et qu'un membre du village est volontaire pour travailler dessus.
Au moins, comme ça, c'est clean.
Edité par
igal
Le 05/09/2012 à 20h57
Salut à tous:
Après la générosité de NYYRIKKI en ayant offert Convert.VBS permettant la création de vidéos pour [Dragon's Lair For Msx 2 Démo].
Aujourd’hui, c'est DVIK qui nous fait grâce de ses sources LEILA_K Démo.
Par respect pour l'auteur, pour le moment, je ne les posterai pas ses sources sans lui avoir demandé son consentement. (j'attends un peu avant de lui demander une rallonge
)
Cependant, Métalion s'étant proposé de reprendre son oeuvre, il y a fort à parier que de nouvelles évolutions verront le jour très bientôt.
Voici son petit mot très prometteur quant aux possibilités offertes par son travail.
Citation:
*********
Hi!
I believe that I found the latest code (it does however build another leilak song). The graphics is there too, but I couldn't find the originals, only compressed data. You probably want to rip that out anyways, but at least it builds a complete demo. The player is pretty straight forward and should be easy to modify.
Just some technical detail, the program synchronizes to the SCC to avoid updating the SCC at a time where a real SCC (no emulator) creates some bad noise because of a hardware bug. This is good for a demo like leila-k, but not for using it in a game.
to build the demo, run: tniasm.exe sccdemo.asm
I included tniasm as well in the zip.
Its been a while since I made the demo, but I believe the music sample is a raw 8 bit file @14466Hz. The code looks like it can handle other sample frequencies as well, but I haven't tested that now.
-Daniel
Fin de Citation:
****************
Histoire de faire languir, voici les sources:

@Métalion: Je te MP les Sources
Edité par
igal
Le 06/09/2012 à 13h24
Après la générosité de NYYRIKKI en ayant offert Convert.VBS permettant la création de vidéos pour [Dragon's Lair For Msx 2 Démo].
Aujourd’hui, c'est DVIK qui nous fait grâce de ses sources LEILA_K Démo.
Par respect pour l'auteur, pour le moment, je ne les posterai pas ses sources sans lui avoir demandé son consentement. (j'attends un peu avant de lui demander une rallonge
)Cependant, Métalion s'étant proposé de reprendre son oeuvre, il y a fort à parier que de nouvelles évolutions verront le jour très bientôt.

Voici son petit mot très prometteur quant aux possibilités offertes par son travail.
Citation:
*********
Hi!
I believe that I found the latest code (it does however build another leilak song). The graphics is there too, but I couldn't find the originals, only compressed data. You probably want to rip that out anyways, but at least it builds a complete demo. The player is pretty straight forward and should be easy to modify.
Just some technical detail, the program synchronizes to the SCC to avoid updating the SCC at a time where a real SCC (no emulator) creates some bad noise because of a hardware bug. This is good for a demo like leila-k, but not for using it in a game.
to build the demo, run: tniasm.exe sccdemo.asm
I included tniasm as well in the zip.
Its been a while since I made the demo, but I believe the music sample is a raw 8 bit file @14466Hz. The code looks like it can handle other sample frequencies as well, but I haven't tested that now.
-Daniel
Fin de Citation:
****************
Histoire de faire languir, voici les sources:

@Métalion: Je te MP les Sources
Edité par
igal
Le 06/09/2012 à 13h24
l avantage avec un editeur hexadecimal, c est que l on peut precisement couper le morceau choisi. a mon avis, tu peux tester de suite un echantillonage a 33kh ca fonctionnera. sache qu il n est pas necessaire de faire 33secondes tout rond. tu peux laisser 1mn, ton ed hexadecimal se charge de tronquer 
ps: je veux bien le code source si cela ne gene pas
Edité par
MSXlegend
Le 07/09/2012 à 12h17

ps: je veux bien le code source si cela ne gene pas
Edité par
MSXlegend
Le 07/09/2012 à 12h17
Mon Github -> github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Bon, j'ai analysé en vitesse les sources de LEILA K.
Les fichiers .pck sont des fichiers compressés par Bitbuster (compression LZ donc) qui ne contiennent que les éléments graphiques de la démo.
Le fichier .raw contient la source sonore à la fréquence d'échantillonnage 14466Hz, mais cette fréquence est modifiable dans les sources.
Le replayer fonctionne comme suit :
- il sélectionne une page de la ROM pour le bank 2 ($6000 - $7FFF)
- il envoie les données sur le premier canal de la SCC, par paquet de 32 octets
- quand il arrive à la fin de la page, il réinitialise le compteur et charge la page suivant dans le bank 2
- quand il arrive à la fin du morceau, il reboucle.
La difficulté en ce qui concerne la modification de la fréquence d'échantillonnage vient du fait qu'il faut synchroniser totalement le code avec la SCC. Autrement dit, il faut que lorsque la SCC a fini de jouer une première fois le sample (à la fréquence pré-définie), le code arrive juste à temps pour mettre à jour le sample avec les données suivantes avant que la SCC reboucle.
Il y a un peu de latitude (il y a une petite boucle d'attende djnz entre chaque mise à jour), mais je ne suis pas sur que l'on puisse aller très loin dans la fréquence d'échantillonnage (à vérifier).
En ce qui concerne la taille maximale du morceau, théoriquement, on peut avoir jusqu'à 254 pages de 8Kb (il faut en garder une pour le code et une pour la SCC). Donc 254x8=2032Kb, ce qui donne 144 secondes (2minutes 24 secondes) à la fréquence de 14466Hz. Edité par Metalion Le 07/09/2012 à 16h44
Les fichiers .pck sont des fichiers compressés par Bitbuster (compression LZ donc) qui ne contiennent que les éléments graphiques de la démo.
Le fichier .raw contient la source sonore à la fréquence d'échantillonnage 14466Hz, mais cette fréquence est modifiable dans les sources.
Le replayer fonctionne comme suit :
- il sélectionne une page de la ROM pour le bank 2 ($6000 - $7FFF)
- il envoie les données sur le premier canal de la SCC, par paquet de 32 octets
- quand il arrive à la fin de la page, il réinitialise le compteur et charge la page suivant dans le bank 2
- quand il arrive à la fin du morceau, il reboucle.
La difficulté en ce qui concerne la modification de la fréquence d'échantillonnage vient du fait qu'il faut synchroniser totalement le code avec la SCC. Autrement dit, il faut que lorsque la SCC a fini de jouer une première fois le sample (à la fréquence pré-définie), le code arrive juste à temps pour mettre à jour le sample avec les données suivantes avant que la SCC reboucle.
Il y a un peu de latitude (il y a une petite boucle d'attende djnz entre chaque mise à jour), mais je ne suis pas sur que l'on puisse aller très loin dans la fréquence d'échantillonnage (à vérifier).
En ce qui concerne la taille maximale du morceau, théoriquement, on peut avoir jusqu'à 254 pages de 8Kb (il faut en garder une pour le code et une pour la SCC). Donc 254x8=2032Kb, ce qui donne 144 secondes (2minutes 24 secondes) à la fréquence de 14466Hz. Edité par Metalion Le 07/09/2012 à 16h44
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)
On peut baisser encore la fréquence d'échantillonnage et garder une qualité acceptable ?
Metalion :
En ce qui concerne la taille maximale du morceau, théoriquement, on peut avoir jusqu'à 254 pages de 8Kb (il faut en garder une pour le code et une pour la SCC). Donc 254x8=2032Kb, ce qui donne 144 secondes (2minutes 24 secondes) à la fréquence de 14466Hz.
On sait que:
************
1) La durée de l’exécution complète du programme est de presque 33 Secondes.
2) La durée de lecture à 14466hz est "Celle" déterminée par le temps d’exécution du programme.
Je dit peut être des conneries mais:
*************************************
Pour recréer les mêmes conditions, il suffirait d'ajouter 3 fois le programme à la suite du premier.
Forcément, pour des raisons de place, il faudrait déplacer le début du premier SAMPLE après la fin du 4ième programme.
De la sorte, on aurait pas besoin de déterminer le temps d’exécution d'un nouveau programme, puisqu'en réalité, il s'agit du même (à quelques octets près) programme au détail près que:
A) Le premier programme va donc commencer à lire le premier SAMPLE à une adresse autre (celle qui se trouve après la fin du 4ième programme)
La fin de A contient une instruction disant d'aller exécuter B:
B) Le second programme va donc commencer à lire le second SAMPLE à une l'adresse qui se trouve juste après la fin du premier SAMPLE.
La fin de B contient une instruction disant d'aller exécuter C:
C) Le troisième programme va donc commencer à lire le troisième SAMPLE à une adresse qui se trouve juste après la fin du second SAMPLE.
La fin de C contient une instruction disant d'aller exécuter D:
D) Le quatrième programme va donc commencer à lire le quatrième SAMPLE à une adresse qui se trouve juste après la fin du troisième SAMPLE.
La fin de D contient une instruction disant d'aller exécuter A
Dans mon ignorance, je pense que cela devrait t'éviter de galérer comme l'a fait DVIK, puisque tu profite de son programme qu'il a déjà calibré dans sa durée d’exécution.
Et voila! Ca vient tout juste de tomber:
****************************************
Hi Igal,
Yes you can publish the source code on MsxVillage if you want.
I didn't spend time cleaning it up, but it is fairly readable as is.
If people have questions, feel free to ask. I'll keep an eye on
the forum to see if anything comes up and if people post any
improvements (bigger roms for example).
Thanks,
-Daniel
****************************************
Un grand merci à Daniel. Vraiment sympa de sa part.
Son site => http://www.dvik-joyrex.com/
C'est donc une exclusivité du MSXVILLAGE que voici:
Les Sources => leilak.zip
Lâchez vous les gars. C'est noël avant l'heure
Edité par
igal
Le 07/09/2012 à 20h40
****************************************
Hi Igal,
Yes you can publish the source code on MsxVillage if you want.
I didn't spend time cleaning it up, but it is fairly readable as is.
If people have questions, feel free to ask. I'll keep an eye on
the forum to see if anything comes up and if people post any
improvements (bigger roms for example).
Thanks,
-Daniel
****************************************
Un grand merci à Daniel. Vraiment sympa de sa part.
Son site => http://www.dvik-joyrex.com/
C'est donc une exclusivité du MSXVILLAGE que voici:
Les Sources => leilak.zip
Code TEXT :
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
fname "leila_k.rom"
org 4000h
dw 4241h,START,0,0,0,0,0,0
Bank1: equ 05000h
Bank2: equ 07000h
Bank3: equ 09000h
Bank4: equ 0B000h
;SampleFrequency: equ 22050
SampleFrequency: equ 14466
;SampleFrequency: equ 11025
Period: equ 3579545 / SampleFrequency
;-------------------------------------
; Entry point
;-------------------------------------
START:
call powerup
xor a
call 005Fh
di
call VdpTest
jp z,.sc2
call LoadIntro7
call IntroDelay
call LoadScreen7
jp .cont
.sc2:
call LoadIntro2
call IntroDelay
call LoadScreen2
.cont:
ld a,3Fh
LD (Bank3),A
call SccInit
call ReplayerInit
call PlaySynced ; Workaround for SCC defect
ret
IntroDelay:
ei
ld b,100
.loop:
halt
djnz .loop
di
ret
;-------------------------------------
;; Need to wait enough to not access SCC while
;; playing sample 15 and 16. This method takes
;; this into account
;-------------------------------------
PlaySynced:
.aloop:
IF 1
ld b,170
.busywait:
nop
nop
nop
nop
djnz .busywait
ELSE
ld b,140
.busywait2:
nop
nop
nop
nop
djnz .busywait2
ld b,38
ld hl,9800h+32*3
.busywait3:
cp (hl)
cp (hl)
djnz .busywait3
ENDIF
call ReplayerUpdate32
jp .aloop
ret
;-------------------------------------
; Initialize the scc
;-------------------------------------
SccInit:
ld a,15
ld (988Ah),a ; volume ch1
xor a
ld (988Bh),a ; volume ch2
ld (988Ch),a ; volume ch3
ld (988Dh),a ; volume ch4
ld (988Eh),a ; volume ch5
ld a,00011111b ; ALL channels active
ld (988Fh),a
ld hl,9800h+32*3 ; counter in channel 4
ld bc,2000h
.counter:
ld (hl),c
inc hl
inc c
djnz .counter
ld a,10100000b ; Rotate only CH4 & CH5 common waveform. Waveform will be rotated with CH4 freq.
ld (98E0h),a
ld hl,Period
ld (9880h),hl
ld (9886h),hl ; here CH4 restarts its play on emulators
ld (9888h),hl ; here CH4 restarts its play on the real thing
IF 1
ld a,$20
ld (98E0h),a
ENDIF
ret
;-------------------------------------
; Initialize replayer
;-------------------------------------
ReplayerInit:
ld hl,9800h
ld (WavePos),hl
ld hl,6000h
ld (SamplePos),hl
ld a,3
ld (SamplePage),a
ld (Bank2),a
ret
;-------------------------------------
; Moves sample pointer to next page
;-------------------------------------
ReplayerNextPage:
ld hl,6000h
push af
ld a,(SamplePage)
cp (SAMPLE_END - SAMPLE_START + 1FFFh)/2000h
jr nz,.norewind
ld a,2
.norewind:
inc a
ld (SamplePage),a
ld (Bank2),a
pop af
ret
ReplayerUpdate32:
ld hl,(SamplePos)
ld de,9800h
ld bc,16
ldir
push bc
ld b,80
.wait:
djnz .wait
pop bc
push hl
ld hl,Period
ld (9880h),hl
pop hl
ld bc,16
ldir
bit 7,h
call nz,ReplayerNextPage
ld (SamplePos),hl
ret
;-------------------------------------
; Updates the SCC wave table. This method updates
; the entire wave table
;-------------------------------------
ReplayerUpdate32_b:
ld bc,32
ld de,9800h
ld hl,9800h+32*3
ld a,28
.wait:
cp (hl)
jp nz,.wait
ld hl,(SamplePos)
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ld b,100
.loop:
djnz .loop
ldi
ldi
ldi
ldi
ldi
ldi
ldi
ldi
bit 7,h
call nz,ReplayerNextPage
ld (SamplePos),hl
ret
;-------------------------------------
; Powerup routine for non-Z180 code.
; set pages and subslot
;-------------------------------------
powerup:
call 0x138
rrca
rrca
and 0x03
ld c,a
ld b,0
ld hl,0xfcc1
add hl,bc
or (hl)
ld b,a
inc hl
inc hl
inc hl
inc hl
ld a,(hl)
and 0x0c
or b
ld h,0x80
call 0x24
ret
;-------------------------------------
; To make rom guesseres happy
;-------------------------------------
dummy:
xor a
ld (Bank1),a
ld (Bank3),a
ld (Bank1),a
ld (Bank3),a
ret
WrtVdp:
ld a,b
out (99h),a
ld a,c
or 80h
nop
out (99h),a
ret
VdpTest:
ei
ei
halt
di
in a,[99h]
nop
nop
in a,[99h]
push af
ld bc,$010f
call WrtVdp
nop
in a,[99h]
push af
ld bc,$000f
call WrtVdp
pop af
pop bc
sub b
ret
VdpRegs2:
db $02,$a0,$06,$ff,$03,$36,$07,$0f
LoadIntro2:
ld bc,$a001
call WrtVdp
; Load 1st quarter
ld a,0
out (99h),a
ld a,40h
nop
nop
out (99h),a
ld hl,LOGO2_A
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_a:
outi
jp nz,.loop_a
dec a
jp nz,.loop_a
; Load 2nd quarter
ld a,0
out (99h),a
ld a,60h
nop
nop
out (99h),a
ld hl,LOGO2_B
ld de,TempBase
call depack
ld bc,1800h
ld hl,TempBase
.cloop:
ld a,(hl)
and $f0
jp nz,.nofix1
set 4,(hl)
.nofix1:
ld a,(hl)
and $0f
jp nz,.nofix2
set 0,(hl)
.nofix2:
inc hl
dec bc
ld a,b
or c
jp nz,.cloop
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_b:
outi
jp nz,.loop_b
dec a
jp nz,.loop_b
; Vdp register
ld hl,VdpRegs2
ld bc,1899h
ld a,80h
.loop:
outi
nop
nop
out (c),a
inc a
cp 88h
jp nz,.loop
ld bc,$e001
call WrtVdp
ret
LoadScreen2:
ld bc,$a001
call WrtVdp
; Load 1st quarter
ld a,0
out (99h),a
ld a,40h
nop
nop
out (99h),a
ld hl,SC2_A
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_a:
outi
jp nz,.loop_a
dec a
jp nz,.loop_a
; Load 2nd quarter
ld a,0
out (99h),a
ld a,60h
nop
nop
out (99h),a
ld hl,SC2_B
ld de,TempBase
call depack
ld bc,1800h
ld hl,TempBase
.cloop:
ld a,(hl)
and $f0
jp nz,.nofix1
set 4,(hl)
.nofix1:
ld a,(hl)
and $0f
jp nz,.nofix2
set 0,(hl)
.nofix2:
ld a,c
dec a
cp 8
jp nc,.nofix3
ld a,$ff
ld (hl),a
.nofix3:
inc hl
dec bc
ld a,b
or c
jp nz,.cloop
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_b:
outi
jp nz,.loop_b
dec a
jp nz,.loop_b
; Vdp register
ld hl,VdpRegs2
ld bc,1899h
ld a,80h
.loop:
outi
nop
nop
out (c),a
inc a
cp 88h
jp nz,.loop
ld bc,$e001
call WrtVdp
ret
VdpRegsIntro7:
db $06,$62,$1f,$80,$00,$ef,$ff,$07
db $08,$80,$00,$00,$00,$01,$00,$00
db $00,$90,$00,$00,$3b,$05,$00,$00
IF 0
db $06,$60,$1f,$80,$01,$ef,$0f,$07
db $08,$82,$00,$00,$00,$01,$00,$00
db $00,$00,$00,$00,$3b,$05,$00,$00
ENDIF
PaletteIntro:
dw $000,$444,$222,$666,$111,$555,$333,$777
dw $000,$000,$000,$000,$000,$000,$000,$000
LoadIntro7:
ld bc,$a001
call WrtVdp
ld a,1
ld (Bank2),a
; Load 1st quarter
ld a,0
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,40h
out (99h),a
ld hl,LOGO7_A
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_a:
otir
dec a
jp nz,.loop_a
; Load 2nd quarter
ld a,0
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,60h
out (99h),a
ld hl,LOGO7_B
ld de,TempBase
call depack
ld bc,2000h
ld hl,TempBase
.cloop:
ld a,(hl)
and $f0
jp nz,.nofix1
set 7,(hl)
.nofix1:
ld a,(hl)
and $0f
jp nz,.nofix2
set 3,(hl)
.nofix2:
inc hl
dec bc
ld a,b
or c
jp nz,.cloop
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_b:
otir
dec a
jp nz,.loop_b
; Load 3rd quarter
ld a,1
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,40h
out (99h),a
ld hl,LOGO7_C
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_c:
otir
dec a
jp nz,.loop_c
; Load 4th quarter
ld a,1
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,60h
out (99h),a
ld hl,LOGO7_D
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_d:
otir
dec a
jp nz,.loop_d
; Vdp register
ld hl,VdpRegsIntro7
ld bc,1899h
ld a,80h
.loop:
outi
out (c),a
inc a
cp 98h
jp nz,.loop
ld bc,209Ah
ld hl,PaletteIntro
otir
ld bc,$e001
call WrtVdp
ret
VdpRegs7:
db $0a,$a0,$1f,$80,$00,$f7,$1e,$00
db $08,$80,$00,$01,$00,$00,$03,$00
db $00,$00,$00,$00,$3b,$05,$00,$00
Palette:
dw $777,$441,$463,$476,$271,$111,$551,$434
dw $352,$676,$471,$063,$122,$555,$333,$374
LoadScreen7:
ld bc,$a001
call WrtVdp
ld a,1
ld (Bank2),a
ld a,2
ld (Bank3),a
; Load 1st quarter
ld a,0
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,40h
out (99h),a
ld hl,SC7_A
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_a:
otir
dec a
jp nz,.loop_a
; Load 2nd quarter
ld a,0
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,60h
out (99h),a
ld hl,SC7_B
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_b:
otir
dec a
jp nz,.loop_b
; Load 3rd quarter
ld a,1
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,40h
out (99h),a
ld hl,SC7_C
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_c:
otir
dec a
jp nz,.loop_c
; Load 4th quarter
ld a,1
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,60h
out (99h),a
ld hl,SC7_D
ld de,TempBase
call depack
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_d:
otir
dec a
jp nz,.loop_d
ld a,2
ld (Bank2),a
; Load 5th quarter
ld a,4
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,40h
out (99h),a
ld hl,SC7_E
ld de,TempBase
call depack
ld bc,2000h
ld hl,TempBase
.cloop_d:
ld a,l
and $7f
cp $7f
jp nz,.nofix_d
ld a,$00
ld (hl),a
.nofix_d:
inc hl
dec bc
ld a,b
or c
jp nz,.cloop_d
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_e:
otir
dec a
jp nz,.loop_e
; Load 6th quarter
ld a,4
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,60h
out (99h),a
ld hl,SC7_F
ld de,TempBase
call depack
ld bc,2000h
ld hl,TempBase
.cloop_f:
ld a,l
and $7f
cp $7f
jp nz,.nofix_f
ld a,$00
ld (hl),a
.nofix_f:
inc hl
dec bc
ld a,b
or c
jp nz,.cloop_f
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_f:
otir
dec a
jp nz,.loop_f
; Load 7th quarter
ld a,5
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,40h
out (99h),a
ld hl,SC7_G
ld de,TempBase
call depack
ld bc,2000h
ld hl,TempBase
.cloop_g:
ld a,l
and $7f
cp $7f
jp nz,.nofix_g
ld a,$00
ld (hl),a
.nofix_g:
inc hl
dec bc
ld a,b
or c
jp nz,.cloop_g
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_g:
otir
dec a
jp nz,.loop_g
; Load 8th quarter
ld a,5
out (99h),a
ld a,8Eh
out (99h),a
ld a,0
out (99h),a
ld a,60h
out (99h),a
ld hl,SC7_H
ld de,TempBase
call depack
ld bc,2000h
ld hl,TempBase
.cloop_h:
ld a,l
and $7f
cp $7f
jp nz,.nofix_h
ld a,$00
ld (hl),a
.nofix_h:
inc hl
dec bc
ld a,b
or c
jp nz,.cloop_h
ld hl,TempBase
ld bc,0098h
ld a,20h
.loop_h:
otir
dec a
jp nz,.loop_h
; Vdp register
ld hl,VdpRegs7
ld bc,1899h
ld a,80h
.loop:
outi
out (c),a
inc a
cp 98h
jp nz,.loop
ld bc,209Ah
ld hl,Palette
otir
ld bc,$e001
call WrtVdp
ret
include "bitbuster.asm"
SC2_A:
incbin "sc2_a.bin.pck"
SC2_B:
incbin "sc2_b.bin.pck"
LOGO2_A:
incbin "logo2_a.bin.pck"
LOGO2_B:
incbin "logo2_b.bin.pck"
;-------------------------------------
; Padding for rom player
;-------------------------------------
DS (6000h - $)
LOGO7_A:
incbin "logo5_a.bin.pck"
LOGO7_B:
incbin "logo5_b.bin.pck"
LOGO7_C:
incbin "logo5_c.bin.pck"
LOGO7_D:
incbin "logo5_d.bin.pck"
SC7_A:
incbin "sc7_a.bin.pck"
SC7_B:
incbin "sc7_b.bin.pck"
SC7_C:
incbin "sc7_c.bin.pck"
SC7_D:
incbin "sc7_d.bin.pck"
SC7_E:
incbin "sc7_e.bin.pck"
SC7_F:
incbin "sc7_f.bin.pck"
SC7_G:
incbin "sc7_g.bin.pck"
SC7_H:
incbin "sc7_h.bin.pck"
DS (0A000h - $)
;-------------------------------------
; Sample data
;-------------------------------------
SAMPLE_START:
;incbin "ll2.raw",0,7A000h
incbin "ll2.raw"
SAMPLE_END:
;-------------------------------------
; Padding, align rom image to a power of two.
;-------------------------------------
SAMPLE_LENGTH: equ SAMPLE_END - SAMPLE_START
DS (7A000h - SAMPLE_LENGTH)
FINISH:
;---------------------------------------------------------
; Variables
;---------------------------------------------------------
TempBase: equ $c000
VariableBase: equ $e000
WavePos: equ VariableBase + 0
SamplePos: equ VariableBase + 2
SamplePage: equ VariableBase + 4
Lâchez vous les gars. C'est noël avant l'heure
Edité par
igal
Le 07/09/2012 à 20h40
igal :
On sait que:
************
1) La durée de l’exécution complète du programme est de presque 33 Secondes.
2) La durée de lecture à 14466hz est "Celle" déterminée par le temps d’exécution du programme.
Je dit peut être des conneries mais:
*************************************
************
1) La durée de l’exécution complète du programme est de presque 33 Secondes.
2) La durée de lecture à 14466hz est "Celle" déterminée par le temps d’exécution du programme.
Je dit peut être des conneries mais:
*************************************
Non, Igal, ce n'est pas nécessaire de faire comme ça, parce que le programme de dvik s'adapte à la longueur du sample.
A l'assemblage de la source, il calcule la longueur du sample en nombre de pages 8Kb, et adapte son exécution en fonction.
Il suffit donc de mettre le sample que l'on veut, et le programme s'adapte.
Tant qu'on reste à la même fréquence d'échantillonnage, il n'y a rien d'autre à changer.
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)
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie

)