WYZ, necesito ayuda con el nuevo player.

Si tienes alguna duda y crees que alguien podría resolverla, ponla aquí. || If you have any doubt about programming, post it here.

Moderador: CEZ

Responder
Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

WYZ, necesito ayuda con el nuevo player.

Mensaje por na_th_an »

A ver si me puedes ayudar... No tengo ni idea de como incluir mis efectos de sonido.

Antes tenía un único wyzplayer.asm y tenía ahí mi TABLA_EFECTOS: DW EFECTO0, EFECTO1, EFECTO2, etc y luego mis efectos definidos tras las etiquetas EFECTO0, EFECT1, etc...

Ahora no veo eso por ningún lado. He visto que hay otro archivo SFX.asm, pero tiene direcciones fijas:

Código: Seleccionar todo

N_EFECTO	       	EQU	$E450   ;DB : NUMERO DE SONIDO
PUNTERO_EFECTO		EQU	$E451	;DW : PUNTERO DEL SONIDO QUE SE REPRODUCE;REPRODUCE EFECTOS
CANAL_EFECTOS		EQU	$E453	;DB : 1:CANAL A - 2:CANAL B - OTRO:CANAL C
Y no sé como integrarlo con lo otro. Además, no hay ni rastro de TABLA_EFECTOS ni de donde tengo que poner mis efectos.

¿Hay alguna documentación? Es que no he podido encontrar nada en la web y realmente no tengo ni idea de qué hacer.

Avatar de Usuario
WYZ
Site Admin
Site Admin
Mensajes: 2356
Registrado: 29 Dic 2004 21:17
Ubicación: Cartagena (CT)

Re: WYZ, necesito ayuda con el nuevo player.

Mensaje por WYZ »

Pues a ver si puedo.

Tienes razón. En el código SFX.ASM faltan los datos para alimentarlo. Vienen indicados en los comentarios al inicio pero es confuso... y tienes razón... no hay documentación! :-(

Los pasos serían los siguientes para añadir SFX con el código del site:

1.- Crea tus SFX .... obvio!
2.- Create un índice de etiquetas de los SFX y las ordenas en la tabla de SFX:
3.- Utiliza este código modificado

Código: Seleccionar todo

;FUNCIONES DEL PLAYER DE FX
;___________________________

;INICIA FX
;REPRODUCE_EFECTO
;FIN_SONIDO


;VARIBLES Y FUNCIONES EXTERNAS
;_____________________________

;TABLA_EFECTOS		DW TABLA DE DIRECCIONES DE LOS EFECTOS
;INTERR			DB 
;EXT_WORD		FUNCION DE EXTRACCION DE LA DIRECCION DEL FX POR Nº DE ORDEN


; *** AJUSTAR CANAL DE EFECTOS ANTES DE INICIAR EL REPRODUCTOR / CANAL C POR DEFECTO
; *** LLAMAR EN CADA INTERRUPCION

; VARIABLES
;___________

;INTERR:         DB     00              ;INTERRUPTORES 1=ON 0=OFF       
                                        ;BIT 0=CARGA CANCION ON/OFF
                                        ;BIT 1=PLAYER ON/OFF
                                        ;BIT 2=SONIDOS ON/OFF
                                        
					;BIT 3=EFECTOS ON/OFF 
;EFECTOS

N_EFECTO	       	EQU	$E650   ;DB : NUMERO DE SONIDO
PUNTERO_EFECTO		EQU	$E651	;DW : PUNTERO DEL SONIDO QUE SE REPRODUCE;REPRODUCE EFECTOS
CANAL_EFECTOS		EQU	$E653	;DB : 1:CANAL A - 2:CANAL B - OTRO:CANAL C



INICIA_EFECTO:	LD	A,B
		LD      HL,TABLA_EFECTOS
                CALL    EXT_WORD
                LD      [PUNTERO_EFECTO],HL
		LD      HL,INTERR
                SET     3,[HL]
                RET       

REPRODUCE_EFECTO:

                LD      HL,INTERR   
                BIT     3,[HL]          	;ESTA ACTIVADO EL EFECTO?
                RET     Z
                LD      HL,[PUNTERO_EFECTO]
                LD      A,[HL]
                CP      $FF
                JP      Z,FIN_EFECTO
                LD	B,A			;FRECUENCIA FINO
                INC     HL
                LD	A,[HL]
                RRCA
                RRCA
                RRCA
                RRCA
                AND     00001111B
                LD	C,A			;	FRECUENCIA GRAVE
		;LD      A,10111000B		;	ELIMINA RUIDO
       		;LD      [PSG_REG_SEC+7],A
                LD      A,[HL]
                DEC	A			;DEC A PARA BAJR VOLUMEN!!
                ;DEC	A
                AND     00001111B

                LD	D,A			;VOLUMEN
                INC     HL			;INCREMENTA Y GUARDA EL PUNTERO
                LD      [PUNTERO_EFECTO],HL     
           	LD	IX,PSG_REG_SEC
                LD	A,[CANAL_EFECTOS]		;SELECCION DE CANAL
                CP	1
                JR	Z,RS_CANALA
                CP	2
		JR	Z,RS_CANALB
		
RS_CANALC:  	LD      [IX+4],B
		LD      [IX+5],C
                LD      [IX+10],D
                RET		
		
RS_CANALA:	LD      [IX+0],B
		LD      [IX+1],C
                LD      [IX+8],D
                RET
                
RS_CANALB:	LD      [IX+2],B
		LD      [IX+3],C
                LD      [IX+9],D
                RET
                
FIN_EFECTO:     LD      HL,INTERR
                RES     3,[HL]			;DESACTIVA EFECTO
                RET         


TABLA_EFECTOS:	DW	

4.- Selecciona el canalde SFX introduciendo 1,2 o 3 en la variable CANAL_EFECTOS. El que menos te pise la música.
5.- Y lo mas importante de todo, hay que reproducirlo en cada interrupción. Asi que puedes integrarlo con el player de música de esta manera, en la rutina de inicio de player:




Código: Seleccionar todo

INICIO:		CALL    ROUT
		CALL    PLAY	
		LD	HL,PSG_REG
		LD	DE,PSG_REG_SEC
		LD	BC,14
		LDIR				
                CALL    REPRODUCE_SONIDO
                CALL	REPRODUCE_EFECTO ; <---- asegurate que estás llamando al SFX player.
....
Las variables fijas las puedes recolocar donde quieras. Buscate unos bytes libres detras de las variables del player y ponlas allí con su etiqueta correspondiente:

Código: Seleccionar todo

;EFECTOS DE SONIDO

N_SONIDO:       DB      0               ;DB : NUMERO DE SONIDO
PUNTERO_SONIDO: DW      0               ;DW : PUNTERO DEL SONIDO QUE SE REPRODUCE

;EFECTOS

N_EFECTO:       DB      0               ;DB : NUMERO DE SONIDO
PUNTERO_EFECTO: DW      0               ;DW : PUNTERO DEL SONIDO QUE SE REPRODUCE
CANAL_EFECTOS:  DB  0    ; CANAL DE SFX
La variable INTERR es común a los dos reproductores al igual que la rutina EXT_WORD.
Creo que no hay mas. De todas maneras informa si no te funciona por cualquier cosa.
WYZPlayer

DREAM OVER
INSERT COIN

Avatar de Usuario
na_th_an
256 bits
256 bits
Mensajes: 11874
Registrado: 22 Abr 2005 13:25
Contactar:

Re: WYZ, necesito ayuda con el nuevo player.

Mensaje por na_th_an »

Gracias, creo que con esto tengo más que suficiente :-) Ya te contaré.

Responder