[Thomson TO8] Projet Adaptation de Bubble Bobble
Modérateurs : Papy.G, fneck, Carl
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Je pense que tu devrais commencer à t'intéresser au moteur du jeu et la gestion de tout tes sprites avant le son
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Perso, une music de fond avec le CNA 6bits en même temps que le jeux (affichages sprites, collisions et autres mécanismes du jeux etc.. )
Moi j'dis c'est super chaud, perso j'ai mis de coté l'idée de faire une musique de fond sur mon Pacman en même temps que le jeu, jusqu'a nouvel ordre !
(en plus quant j'imagine le taf de ouf et le temps qu'il a fallu sur Mission : Liftoff réalisé par je pense les personnes qui connaissent hyper bien cette machine !) bref !
Pour ma part, je me concentre déjà à afficher un jeux jouable...
Si déjà tu fais :
>> affichage sprite, déplacement sprites, contrôle joystick, les routines de saut, et les collisions sur les platformes.
on va bien kiffer je pense de voir bubble bubble sur nos TO/MO.
PS : pour le son, mais comme à mon habitude je ne laisse jamais tombé, mais on verra plus tard
Moi j'dis c'est super chaud, perso j'ai mis de coté l'idée de faire une musique de fond sur mon Pacman en même temps que le jeu, jusqu'a nouvel ordre !
(en plus quant j'imagine le taf de ouf et le temps qu'il a fallu sur Mission : Liftoff réalisé par je pense les personnes qui connaissent hyper bien cette machine !) bref !
Pour ma part, je me concentre déjà à afficher un jeux jouable...
Si déjà tu fais :
>> affichage sprite, déplacement sprites, contrôle joystick, les routines de saut, et les collisions sur les platformes.
on va bien kiffer je pense de voir bubble bubble sur nos TO/MO.
PS : pour le son, mais comme à mon habitude je ne laisse jamais tombé, mais on verra plus tard
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
J'y travaille. Je voulais voir d'abord les aspect technique liés au mode bm16, le double buffer, les tableaux (j'ai vu toutes les autres version d'ordi 8 bits) et cet après midi j'ai enterriné comment afficher les niveaux suivant le nombre de cases horizontales et verticales sachant que ça sera du 20 (en hauteur) sur 28 (largeur) cases. Je suis obligé de supprimer 3 "cases" en vertical à la version arcade et Amstrad (qui lui a de l'overscan mais pas le ST/Amiga qui eux affichent 22 cases, une de moins donc, mais avec les scores sur le côté droite). C'est une partie sur laquelle j'ai passé du temps... Finalement ça va être du BBCMicro "like" (et C64, ZX Spectrum).
Il me semble important de voir l'aspect fluidité du jeu et pour le son j'ai vu qu'il était possible d'avoir ce que je voulais. Et Sam tu as répondu à mes attentes (t'es vraiment un chef!!)
Les sprites sont en 8x16 transparents, les plateformes seront en 4x8 (mais les tiles en 8x16 parce qu'il y a du relief). Il était important que je sache utiliser le double buffer parce que dans Bubble Bobble c'est quasi indispensable (pour les personnages ou bulles qui se croisent notamment)
La mécanique de jeu j'y ai réfléchi aussi. C'est pas si compliqué, je reprendrai ce que j'ai fait avec "Poppy Man" (qui est un clone de Pacman pour JavaScript). Pour le score je vais reprendre le fil de discussion d'ADNZ avec Sam (pour Pacman) même si je me demande s'il n'y a pas un moyen d'utiliser les chiffres du score pour les afficher directement et j'ai vu aussi la MEGADEMO d'HCL où il était possible de mélanger plusieurs modes vidéo en horizontal!! Si je savais comment faire ça, ça m'arrangerait pour les scores (sous réserve que ça puisse fonctionner pour les banques 2 et 3 ce qui n'est pas garanti au vu des mauvaises surprises que j'ai eu dernièrement avec l'utilisation de PUTC pour le mode vodéo bm16) ! La partie du haut en mode TO7 et tout le reste en BM16...
Dernière modification par Neotenien le 01 nov. 2020 11:44, modifié 1 fois.
-
- Messages : 7925
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Oui mais non. Oui dans le sens où un accord est un multiplexage de fréquence, mais non pas dans le cadre ici, quand on parle de musique. On parle d'accord tout court. Le terme multiplexage sert quand on veut transmettre des signaux. Des signaux, pas de la musique.L'audio est bien du multiplexage de fréquence!!
T'inquiètes, je connais très bien. J'en ai bavé des transformés en z, p, de Mélin et tout binz dans mon jeune temps. Je m'en sers encore très régulièrement du reste (regardes mes messages avec spectrogrammes sur system-cfg par le passé, tu vas halluciner: c'est Halloween, il ya des spectres partout là bas ).Essaie de voir un cours sur les signaux audio avec les différentes harmoniques...
Les spectre s'ajoutent oui. La 3e harmonique du signal à 100hz s'ajoute à la fondamentale de celle à 300hz. L'amplitude des deux spectres s'ajoute.Quand tu as 2 sons qui se mélangent (mettons un a 100 Hhz et l'autre à 300 Hz), les 2 signaux "fusionnent"
Non. Les amplitudes du domaine temporel et du domaine spectral s'ajoutent (la transformée de Fourier est linéaire).et on utilise donc le OR sur les échantillons numériques. ON NE LES ADDITIONNE PAS!
Le OR n'a pas sa place là dedans sauf à le considérer comme une sorte d'addition spéciale (idem avec MAX), très spéciale même puisque c'est une opération purement numérique qui n'existe pas en analogique.
Et donc deux flutes jouant un La440 ne donnent pas un son 2x plus fort. Nota: doubler un volume c'est ajouter 6dB au signal. Les dB c'est une échelle logarithmique, donc on ne double ni n'additionne les logs comme ca. En échelle linéaire le spectre d'une somme est la somme des spectres.l'amplitude d'un signal audio n'augmente pas avec la multiplicité des signaux!! 2 signaux de 45 dB ne vont pas faire 90 dB mais reste à 45 dB au total.
Non c'est pas ce qu'on fait ici. On fait de la synthèse PCM: on manipule des échantillons, pas des spectres. On a pas plusieurs oscillateurs dont on modifie les volumes pour recréer les harmoniques d'un instrument de musique particulier comme dans la synthèse FM des premiers synthétiseurs, et même où plus classiquement dans un jeu d'orgue d'église (qui n'est fondamentalement qu'un synthétiseur FM analogique, et même pneumatique en fait). C'est de l'échantillonné dont on parle ici.La FM signifie bien le Multoplexage de fréquence justement en multoplexant 2 fréquence (une harmonique et sa secondaire) pour déterminer les "bits" à un instant t "périodique" échantillonnage de fréquence x4 comparé à l'harmonique principale
Bon passons...
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 7925
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Ils font cela en comptant précisément tous les cycles du programme et en changeant $E7DC au bon moment dans la construction de la trame vidéo. On ne sait faire cela que sur les programme ayant des chemins d'execution simples de longueur identiques. Cela se implique qu'on a pas beaucoup de temps libre dans la boucle (64 cycles d'une ligne vidéo à l'autre). A mieux quand on est super bon on arrive à envoyer du son au CNA, changer le mode écran et changer une ou 2 entrées de la palette. C'est ce qui a été fait dans la démo BloodyRun de Préhisto (clicker sur l'image, le code source est dans l'archive -- groumph indisponible maintenant que logicielsmoto est down):il était possible de mélanger plusieurs modes vidéo en horizontal!!
[EDIT] la wayback machine nous sauve encore le coup >>bloodyrun.zip. Le source (à regarder avec la cartouche ASSEMBLER depuis là diskette ou plus bas) n'est pas facile à décoder car le binaire ne doit pas dépasser 1k (sans compression), mais il est hyper instructif en techniques de sioux (en particulier l'usage de swi pour réduire les appels à l'extramon, l'usage massif des registres au lieu des variables globales, etc).
Code : Tout sélectionner
NVOICE equ 3
* ExtraMon registers
VALTYP equ $6105
FACLO equ $6151
COULEUR equ $619f
TRATYP equ $61a0
XXXX equ $61a1
YYYY equ $61a3
XR equ $61a9
YT equ $61ab
FILFLG equ $61ef
AXEV equ $61f0
AXEH equ $61f1
* Extra registers
Zero equ $6101
cCount equ $6105
sValue equ $61d6
sFreq equ $61d7
sNote equ $61d8
cCom equ $61d9
blkPal equ $61dd
org $9e22
setdp $61
*--------------------------------------
* Start of program
*--------------------------------------
debut equ *
clr >$60ff Hard reset required
ldx #$60de Area set to $00
lbsr fixpal Palette to 0
lbsr PrintS
pulu cc,a,b,dp,x,y,s
stx $602f Set SWI interrupt
call 0+$80 Reset ExtraMon
sta <XR+1 X1 window
stb <YT+1 Y1 window
sty $627d Set gfx pattern
tfr s,y
tfr pc,s
com <FILFLG Full elipse
*--------------------------------------
* Create cosinus list
*--------------------------------------
* U already points to lCos
cosin equ *
leax ,u
lda #4 For REAL type
swi
fcb 50 FAC into REAL
fcb 62+$80 Startvalue->FAC
cos1 swi
fcb 47 FAC=COS(FAC)
fcb 64+$80 FAC->ARG
leax 9,u
swi
fcb 62 Mult->FAC
fcb 56 FAC=FAC*ARG
fcb 64+$80 FAC->ARG
leax 9,u
lda #2 For INT type
swi
fcb 62 Add->FAC
fcb 54 FAC=FAC+ARG
fcb 50+$80 FAC into INT
ldb <FACLO ! Record int
stb ,y+ ! value of FAC
leax ,u
lda #4 For REAL type
swi
fcb 50 FAC into REAL
fcb 62 StartValue->FAC
fcb 64+$80 FAC->ARG
leax 5,u
swi
fcb 62 Step->FAC
fcb 54+$80 FAC=FAC+ARG
leax ,u ! FAC->StartValue
call 63+$80 !
dec 4,u
bne cos1
leau 11,u
com <cCom
bne cosin
*--------------------------------------
* Create music sample
*--------------------------------------
* U points already to Score
bsr smp6 Init bank ptr
* Define frequency
smp0 ldb ,u+ Read note again
andb #$1f Frequency offset
leay <lFreq-1,pcr Freq list
ldb b,y Read frequency
andb #$7f Limit frequency
stb <sFreq Block size/Freq
* Define tempo
clr <sNote Note=0 for silence
lda -1,u Read note value
beq smp8 Next voice
bita #$e0 Test type of note
beq smp1 Silence if 0
ldb #$08 ! Tempo for
mul ! played note
com <sNote Activate note
smp1 anda #$1f !
asla ! Tempo silence
asla !
ldb #234 !
mul ! * block size
tfr d,y !
clr <sValue Value set to 0
* Manage frequency
smp2 lda <sFreq Init frequency
com <sValue Record start value
smp3 deca ! Skip if not time
bmi smp2 ! to change value
* Record value
ldb <sValue Read value
andb <sNote
andb #$3f/NVOICE ! current val
smp4 leax ,x Add value (addb ,x)
stb ,x+ Write value
* Next bank if necessary
cmpx #16380
blo smp5
ldb >$e7e6
incb
bsr smp7
* Next value
smp5 leay -1,y ! Next
bne smp3 ! value
* Next Note
bra smp0 Next note
smp6 ldd #$eb65 Start bank (5)
smp7 orb #$80 Code for bank
stb ,x Write next bank
stb >$e7e6 Update bank switch
ldx #$0000 Start pointer
rts
lFreq equ *
fcb 40
fcb 59
fcb 79
fcb 30
fcb 47
fcb 27
fcb 24
fcb 32
fcb 53
fcb 63
fcb 20
fcb 23
* Display a message
PrintS ldu #mScrol
prtf0 ldb ,u+
jsr $e803
bne prtf0
rts
* Next voice
smp8 bsr smp6 Bank start
sta >smp4 LEAX -> ADDB
tst ,u ! Next voice
bne smp0 !
Create equ *
dec <cCount
*--------------------------------------
* Create circles (colors 3-7)
*--------------------------------------
bsr PrintS
circle equ *
ldb <cCount Read screen number
ldx #Cosin+256 Cosinus ptr
abx
ldy #4
circ0 lda #7
circ1 ldb 4*5,x ! X center
addb #9
stb <XXXX+1 !
ldb ,x ! Y center
addb #22
stb <YYYY+1 !
sta <COULEUR Set colour
ldb #10
bsr circf
clr <COULEUR Set colour
ldb #8
bsr circf
leax 4,x
deca
cmpa #3
bhs circ1
leay -1,y Counter - 1
bne circ0
*--------------------------------------
* Create text map (color 1)
*--------------------------------------
ldb #$60
stb >$e7e6
inc <COULEUR
ldu #$0000+320-40-20
ldy #200
ptxt0 ldx #160
leay -1,y
ptxt1 leau -1,u
cmpu <Zero
beq ptxt4
lda #8
ptxt2 leax -1,x
beq ptxt0
lsr ,u
bcc ptxt3
swi
fcb 28 CHOIX
fcb 25+$80 PSETXY
ptxt3 deca
bne ptxt2
bra ptxt1
* Draw a full circle
circf stb <AXEV
lsrb
stb <AXEH
swi
fcb 28 CHOIX
fcb 24+$80 CIRCLE
rts
ptxt4 equ *
*--------------------------------------
* Draw runners (color 2)
*--------------------------------------
inc <COULEUR
run01 ldx #-96+12+4
leax -4,x
stx >run01+1
ldb <cCount
run0 ldy <Zero
subb #2
bpl run2
addb #6
run2 pshs b,x,y,u
lda #15
mul
ldu #rCoord
leau b,u
* A is set to 0 at that point
run3 bsr rgetxy
beq run5
swi
fcb 28 CHOIX
fcb 25+$80 PSETXY
run4 bsr rgetxy
beq run3
call 26+$80 LINE
bra run4
rpoint ldb ,u+
coma
beq rpt0
lsrb
lsrb
lsrb
lsrb
leau -1,u
rpt0 andb #$0f
rts
* Get 4 bits value
rgetxy bsr rpoint
beq rgetx0
ldx 3,s
abx
bsr rpoint
ldy 5,s
aslb
leay b,y
rgetx0 rts
run5 puls b,x,y,u
leax 8,x
leay 2,y
call 26+$80 LINE
leax 1,x
leay -2,y
call 27+$80 BOX
leax -8-1+8,x
leay 31,y
cmpy #31*6
blo run2
leax -8*6+16,x
cmpx #164
blt run0
*--------------------------------------
* Copy screens
*--------------------------------------
* A is already set to 0
ldb <cCount
decb
bmi cpysc1
bne cpysc0
ldb #$f-1
cpysc0 addb #$61
bsr copy
lbra Create
* Copy screen bank
copy std >$e7e5
ldu #$a000
ldx <Zero
copy0 lda $2000,u
ldb ,u+
stb $2000,x
sta ,x+
cmpx #8000
blo copy0
lda #$04
sta >$e7e5
rts
* Copy screen bank 1
cpysc1 leas <copy,pcr
ldd #$0f61
bsr copy
cpysc2 equ *
echo Must be $$a000 -> $*
*--------------------------------------
* Prepare loop
*--------------------------------------
setdp $e7
* Initialize direct page register
ldb #$e7 ! Initialize
tfr b,dp ! direct page
* Activate sound
clr <$e7cf
ldd #$3f04
sta <$e7cd
stb <$e7cf
* Calibrate raster verticaly
ldx #Palett
bsr fixpal
* Calibrate raster horizontaly
ldx #$0fff Color 0
ldd #$0865 Offset color 8
bsr colent
* Calibrate raster
RLINE equ 231+64
ldx #RLINE*8+1
calib leax -1,x
bne calib
leax ,x
* Initialize registers
bra loop0 Start loop
* Calibrate raster verticaly
fixpal lda #$ff
colent jmp $ec00
nop1 tfr a,a
bra loop1
nop2 mul
nop
nop3 bra loop5
*--------------------------------------
* Start of the loop
* 1 time
*--------------------------------------
* Manage sound
loop ldb ,s ! Skip if not
bpl nop1 ! bank number
loop0 lds #$0000 Start pointer
stb >$e7e6 Activate bank
* Manage tube color
loop1 ldu #Tubes
loop2 ldy #Tubes+156
stu >loop2+2
sty >loop1+1
* Prepare color cycling
loop3 ldu #PalCyc-2 Palette ptr
* Switch screen
loop4 ldb #$c0
addb #$40 Switch screen
stb <$e7dd Activate screen
stb >loop4+1 Switch code
* Prepare color cycling
bne nop2
leau 2,u
cmpu #PalCyc+10
blo nop3
ldu #PalCyc
loop5 equ *
ldd #(8<8)+146
std >nLoop
tfr a,a
* Apply tube color
loop6 ldb ,y Read color
clr <$e7db Color 0
stb <$e7da Activate color
sex ! Delete color
sta ,y+ ! in list
* Generate sound
ldb ,s+
stb <$e7cd
com >lCom
beq loop
* ----------------------
* Color cycling program
* 1 time
* ----------------------
ldb #3*2
stb <$e7db
ldd ,u
stb <$e7da
sta <$e7da
ldd 2,u
stb <$e7da
sta <$e7da
ldd 4,u
stb <$e7da
sta <$e7da
ldd 6,u
stb <$e7da
sta <$e7da
ldd 8,u
stb <$e7da
sta <$e7da
inc >tube4+1 Prepare tubes
nop
nop
colcyc equ *
* Apply tube color
ldb ,y Read color
clr <$e7db Color 0
stb <$e7da Activate color
sex ! Delete color
sta ,y+ ! in list
* Generate sound
ldb ,s+
stb <$e7cd
stu >loop3+1
nop
clra
* ----------------------
* Creation of the next tubes list
* 8 times
* ----------------------
* Tubes colors list
tube3 tfr a,b
tube4 addb #$00
ldx #Cosin+128 Sinus table
ldb b,x
addb #9
ldx >loop2+2 Color list
abx Color pointer
ldb #$ee
stb 3,x
stb 4,x
stb 5,x
decb
stb 2,x
stb 6,x
ldb #$cc
stb 1,x
stb 7,x
ldb #$aa
stb 0,x
stb 8,x
adda #8
tube5 leax ,x
* Apply tube color
ldb ,y Read color
clr <$e7db Color 0
stb <$e7da Activate color
ldb #$ff ! Delete color
stb ,y+ ! in list
* Generate sound
ldb ,s+
stb <$e7cd
dec >nLoop
bne tube3
* ----------------------
* Blank
* 146 times
blank equ *
ldb #8 2
blank0 decb 2
lbne blank0 6(5)
inc >nLoop
dec >nLoop+1 Loop counter
bne tube5
* ----------------------
* Loop
* ----------------------
jmp loop6
* Personnal SWI interrupt
mathsw ldu 10,s Read PC in stack
maths0 ldb ,u Read code
andb #$7f
jsr $ec0c Jump to ExtraMon
ldb ,u+
bpl maths0
stu 10,s Update PC in stack
rti
mScrol equ * Must end with 0
fcb $1b,$5e
fcb $0c
fcc "BLOODY RUN Puls 2014"
lCom equ *
fcb 0
Regs equ * Must be here
fcb $50 CC
fcb 159 A
fcb 199 B
fcb $61 DP
fdb mathsw X
fdb $e845+(96*8)-1 Y
fdb Free S
lCos equ * Must end with $0000
fcb $00,$00,$00,$00
fcb 0
fcb $7b,$c9,$0f,$da
fcb $86,$70
lCos2 equ * Must end with $0000
fcb $00,$00,$00,$00
fcb 4*5*4*2
fcb $7d,$a0,$d9,$7b
fcb $87,$0c
Score equ * Must end with 0
fcb $01,$61,$01,$61,$01,$41
fcb $44,$46,$47,$61,$01,$61
fcb $01,$24,$27,$46,$48,$41
fcb $61,$01,$61,$01,$41,$44
fcb $46,$47,$24,$27,$6b,$01
fcb $2b,$2c,$27,$26,$84,$24
fcb $00
fcb $02,$42,$02,$42,$02,$22
fcb $45,$81,$01,$42,$02,$42
fcb $03,$41,$49,$4a,$01,$42
fcb $02,$42,$02,$23,$45,$81
fcb $02,$88,$04,$81,$21
fcb $00
fcb $03,$23,$03,$23,$0b,$23
fcb $03,$23,$0b,$23,$03,$23
fcb $13,$45,$47,$25
fcb $00
fcb $00
PalCyc equ *
fdb $111 Black
fdb $11f Red
fdb $1ff Yellow
fdb $1f1 Green
fdb $f11 Blue
fdb $111 Black
fdb $11f Red
fdb $1ff Yellow
fdb $1f1 Green
rCoord equ *
fcb $4b,$59,$9a,$77,$8a,$6e
fcb $8f,$08,$75,$58,$27,$5a
fcb $60,$77,$00
fcb $4f,$3e,$6b,$77,$a9,$7b
fcb $8d,$07,$65,$48,$28,$5b
fcb $50,$77,$00
fcb $3f,$1d,$5b,$77,$b8,$9c
fcb $bd,$07,$55,$38,$29,$5a
fcb $30,$77,$00
fcb $2e,$2c,$5b,$78,$a8,$9d
fcb $bd,$07,$55,$28,$28,$6a
fcb $30,$78,$00
fcb $1c,$2a,$6b,$77,$aa,$ae
fcb $ce,$07,$55,$38,$27,$5a
fcb $40,$77,$00
fcb $2b,$39,$7b,$78,$9a,$9e
fcb $bf,$0a,$66,$48,$26,$4a
fcb $60,$78,$00
Palett equ *
fdb $fff
fdb $530
fdb $111
echo &*-debut
rmb 64
Free equ *
Cosin rmb 256+4*5*4*2
nLoop rmb 3
Tubes rmb 156*2
end debut
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
On parle d'échantillon oui mais on peut créer ces échantillons à partir de "spectre" de signaux, dont on connait les fréquences et amplitudes non ? C'est de ça dont je voulais parler en parlant de multiplexage de fréquences... On calcule les échantillons sur cette base et on les crée numériquement ? Je repars sur mon exemple de l'harmonique de la flûte (la principale et la 3ème), on va calculer les amplitudes tous les T secondes (en additionnant les 2 fréquences à cet instant) avant de le numériser. Je pense d'ailleurs que c'est ce que tu as fait pour' Bubble Bobble version 2. ? Tu es parti d'un signal que tu as calculé en amplitude tous les T non ?
On est bien d'accord que les PCM (CNA) indique l'amplitude d'un signal à un instant T ? Or si 2 "volumes" (c'est à dire puissances sonores) ne s'ajoutent pas, le volume sonore ne s'ajoute pas "en amplitude" ou alors j'ai rien compris aux cours que j'ai vus.
D'autre part, pour ce qui est des décibels, la formule est dB = 10x(Pentrée/Psortie). Si Pentrée est le double de Psortie, on a un écart de 3dB (fais le calcul et tu verras!) et pas 6! En revanche, quand tu doubles la distance d'avec un son (par exemple, quand tu passe de 50m d'un TGV à 100m) là, la puissance est divisé par 4 (puisque le flux est surfacique) donc tu ôtes 6 dB quand du double la distance de capture. Et d'ailleurs ça a été une de mes remarques à propos d'un dossier LGV qui passaient dans certaines communes de la Sarthe, les ingénieur s'étaient trompé sur ce calcul... C'et bien la peine d'avoir fait des études poussées...
On est bien d'accord que les PCM (CNA) indique l'amplitude d'un signal à un instant T ? Or si 2 "volumes" (c'est à dire puissances sonores) ne s'ajoutent pas, le volume sonore ne s'ajoute pas "en amplitude" ou alors j'ai rien compris aux cours que j'ai vus.
D'autre part, pour ce qui est des décibels, la formule est dB = 10x(Pentrée/Psortie). Si Pentrée est le double de Psortie, on a un écart de 3dB (fais le calcul et tu verras!) et pas 6! En revanche, quand tu doubles la distance d'avec un son (par exemple, quand tu passe de 50m d'un TGV à 100m) là, la puissance est divisé par 4 (puisque le flux est surfacique) donc tu ôtes 6 dB quand du double la distance de capture. Et d'ailleurs ça a été une de mes remarques à propos d'un dossier LGV qui passaient dans certaines communes de la Sarthe, les ingénieur s'étaient trompé sur ce calcul... C'et bien la peine d'avoir fait des études poussées...
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
C'est galère si on ne peut pas changer le mode vidéo en cour d'affichage écran, je crois que BBC Micro peut le faire (à moins que je dise une bêtise). Le seul truc valable dans les Thomson finalement, c'est le 6809E. pour le reste... Ils ne se sont vraiment pas foulé les ingé de Thomson... Pas comme en Angleterre (Accorn, et Amstrad notamment).
J'ai une idée, pourquoi ne pas voir comment la ROM des Thomson fait pour les "print" avec le mode TO7 il n'y aura juste qu'à appliquer ça au mode bm16 ? C'est quand même galère que ça soit le seulm mode où la fonction print" ne marche pas, tous ça à cause de la non utilisation de la RAMB pour l'écriture.
J'ai une idée, pourquoi ne pas voir comment la ROM des Thomson fait pour les "print" avec le mode TO7 il n'y aura juste qu'à appliquer ça au mode bm16 ? C'est quand même galère que ça soit le seulm mode où la fonction print" ne marche pas, tous ça à cause de la non utilisation de la RAMB pour l'écriture.
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Le PRINT du Basic est une fonction très complexe, la réécrire est compliqué. Je crois qu'il est beaucoup plus simple de programmer directement une petite routine assembleur pour afficher un caractère en bitmap16. On peut utiliser la table en ROM pour le graphisme des caractères.
Bon nombre de jeux en bitmap16 affichent des scores, on peut aussi s'en inspirer.
Bon nombre de jeux en bitmap16 affichent des scores, on peut aussi s'en inspirer.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7925
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Absolument Daniel.. Il existe un hook de la fonction PUTC que l'on peut utiliser pour intercepter tous les appels à la routine d'affichage de caractères et ainsi la changer par ce qu'on veut: affichage BM16, mais aussi police proportionnelle, pourquoi pas ? Attention toutefois aux caractères d'échappements (accents, et positionnement curseur, changement couleur, etc) qu'il faut correctement interpréter. C'est un boulot terrible à réaliser et qui prends beaucoup de code. C'est sans doute la raison de son absence dans la ROM: C'est complexe, prends plein de place, et n'est pas utilisé souvent tout compte fait.
@Neotenien "C'est galère si on ne peut pas changer le mode vidéo en cour d'affichage écran"
Je vois pas pourquoi tu dis "on peut pas". Bien sur qu'on peut. Ca déjà été fait dans la mégadémo HCL. C'est juste qu'il faut un comptage des cycles très précis dans le code. Sur thomson, de toute façon si on veut faire un truc qui pousse les limites, on en vient toujours à compter et optimiser au cycle près dans la bonne vieille tradition du démo-coding d'antant.
@Neotenien "C'est galère si on ne peut pas changer le mode vidéo en cour d'affichage écran"
Je vois pas pourquoi tu dis "on peut pas". Bien sur qu'on peut. Ca déjà été fait dans la mégadémo HCL. C'est juste qu'il faut un comptage des cycles très précis dans le code. Sur thomson, de toute façon si on veut faire un truc qui pousse les limites, on en vient toujours à compter et optimiser au cycle près dans la bonne vieille tradition du démo-coding d'antant.
Dernière modification par __sam__ le 01 nov. 2020 15:57, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Il y a déjà eu un échange là dessus entre Samuel et ADNZ, la conclusion était d'écrire une simple routine d'addition digit par digit... Ca peut effectivement être utilisé pour un score, mais il faut aussi, dans Bubble Bobble, connaitre le record à un instant T (ça suppose donc d'avoir les score au format chiffré et en plus de pouvoir afficher ce record quand il est dépassé et ya, ça me parait difficile dans faire une analyse des chiffres (c'est à dire pouvoir convertir du binaire en décimal... Hmm ça me rappelle un bouquin que j'ai "50 programmes assembleurs TO7-10" de B Geoffrion-R Weiss" dans lequel il y a un exemple (exo 18) de comment convertir un hexadécimal en décimal (16 bits). Je regarde ça, ça peut être très utile. D'ailleurs cet ouvrage n'est pas présent sur "DC Moto"! Idem pour "boîte à outils en Basic" (que j'ai en ma possession aussi mais dans un état pas terrible).Daniel a écrit : ↑01 nov. 2020 14:21 Le PRINT du Basic est une fonction très complexe, la réécrire est compliqué. Je crois qu'il est beaucoup plus simple de programmer directement une petite routine assembleur pour afficher un caractère en bitmap16. On peut utiliser la table en ROM pour le graphisme des caractères.
Bon nombre de jeux en bitmap16 affichent des scores, on peut aussi s'en inspirer.
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Qu'est ce que tu appelle un "hook" ? Un reroutage ? C'est à dire mettre à un certain emplacement l'adresse de la routine de PUTC ?__sam__ a écrit : ↑01 nov. 2020 15:19 Absolument Dianiel.. Il existe un hook de la fonction PUTC que l'on peut utiliser pour intercepter tous les appels à la routine d'affichage de caractères et ainsi la changer par ce qu'on veut: affichage BM16, mais aussi police proportionnelle, pourquoi pas ? Attention toutefois aux caractères d'échappements (accents, et positionnement curseur, changement couleur, etc) qu'il faut correctement interpréter. C'est un boulot terrible à réaliser et qui prends beaucoup de code. C'est sans doute la raison de son absence dans la ROM: C'est complexe, prends plein de place, et n'est pas utilisé souvent tout compte fait.
J'ai pas envie de passer des centaines d'heures à compter les cycles pour un truc qui, ici, vu le contexte, ça me parait impossible à utiliser. Je laisse tomber cette idée de changement de réso pour Bubble Bobble et je vais plutôt partir d'une routine de conversion hexa=>decimal puis affichage (comme c'est écrit dans mon bouquin "50 programmes assembleurs TO7-70", le code fait une cinquantaine de ligne assembleur, ça va!!). Bon heureusement que les chiffres bm16 sont des tiles et pas des objets transparents, un gros gain de temps à l'affichage donc, d'autant que les chiffres sont du 4x8 pxl (et pas 8x16 comme les Sprites), ça devrait être rapide cette partie là. Le "0" pointera sur le premier tile chiffre, le 1 sur le second etc.__sam__ a écrit : ↑01 nov. 2020 15:19 @Neotenien "C'est galère si on ne peut pas changer le mode vidéo en cour d'affichage écran"
Je vois pas pourquoi tu dis "on peut pas". Bien sur qu'on peut. Ca déjà été fait dans la mégadémo HCL. C'est juste qu'il faut un comptage des cycles très précis dans le code. Sur thomson, de toute façon si on veut faire un truc qui pousse les limites, on en vient toujours à compter et optimiser au cycle près dans la bonne vieille tradition du démo-coding d'antant.
-
- Messages : 7925
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Ce sont les indirections p229 du manuel technique TO8, TO9, TO9+ dont je parle avec les "hook".
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Bonsoir,
J'en reviens à la discussion sur les sons.
Transformées de Mellin peut-être ?
J'en reviens à la discussion sur les sons.
Transformées de Mellin peut-être ?
En pratique, comment mélange-t-on deux morceaux numériques (par exemple codés sur 6 bits comme pour le CNA du Thomson TO8) : on les moyenne ou il y a plus rusé ?
Asic512
-
- Messages : 7925
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson TO8] Projet Adaptation de Bubble Bobble
Ben c'est de l'addition comme dans tout signal (numérique ou pas). Il n'y a rien de sorcier. Les histoires de "multiplexages de fréquences" sont un mélange de pleins de trucs hétérogènes qui ne font que rendre les choses inutilement complexe et hors sujet (traitement du signal vs génération de son). La synthèse du son, en particulier échantillonné est simple. A chaque instant tu as tes échantillons pour chacune des voix, tu les additionne, puis tu divise par le nb de voix pour rester dans l'intervalle des valeurs min/max et tu envoie au CNA c'est tout.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos