Karoshi MSX Community
05 de Julio de 2021, 05:01:38 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1] 2
  Imprimir  
Autor Tema: BUG en PT3 PLAYER  (Leído 16186 veces)
0 Usuarios y 1 Visitante están viendo este tema.
xenon
Karoshi Hero
*****
Mensajes: 749



WWW Email
« : 27 de Diciembre de 2005, 03:06:06 pm »

Hablando ahora con QUIBUS en el canal #msx de rizon, me ha dicho que ha encontrado un BUG en el PT3 player...

http://sourceforge.net/tracker/?func=detail&atid=421861&aid=1390211&group_id=38274

Asi que musicos de PT3 de varios juegos de por aquí, miraoslo Wink

Un saludo,

Salva
En línea

MSX now!
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #1 : 27 de Diciembre de 2005, 03:14:11 pm »

"Would it be possible to make openMSX give a big flashy warning when a program writes these hazardous values to R#7? It's known to cause hardware crashes and possible permanent damage."

O.o

En línea

--

Cindy Lauper She Bops!
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #2 : 27 de Diciembre de 2005, 04:12:40 pm »

Bueno, históricamente es lo que se ha comentado siempre; pero me da la impresión de que no le ha pasado a mucha gente (a lo de cascar MSX, me refiero). De hecho a mi me funcionaban TODOS los puertos de joystick en TODOS mis MSX, uno de cada generación. Está claro que he estado jugando con la muerte... Tongue

En fin, es fácil de corregir. Posiblemente hoy o mañana prepararé una nueva versión del "Caverns" con ese fallo eliminado y de paso ¡con un nuevo sistema de sfx que sustituye al (inexistente) previo, gracias a la inestimable colaboración de Wyz!. ¡Yay!  Cheesy
En línea

Doom dee doom dee doom
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #3 : 28 de Diciembre de 2005, 08:57:46 pm »

No indica si con el Parachuteless ha tenido el mismo problema o no (tb usa PT3), aunque yo lo probe en MSX1 durante toda la ru (osea que tiene chip de sonido, no esta en el msx-engine) y no hacia na raro.
Tampoco en pruebas posteriores... Alguna forma de verificarlo seguro?  Huh

En cuanto a lo de corregirlo, seria modificar el replayer de PT3? Como y donde?  Undecided

Ains... esto pasa por no usar el Caruso! Smiley
En línea

--

Cindy Lauper She Bops!
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #4 : 28 de Diciembre de 2005, 09:55:20 pm »

Sustituyendo la rutina ROUT por esta otra :

Código:
;MSX version of ROUT (c)Dioniso
ROUT: LD HL,AYREGS+Mixer
LD A,[HL]
AND 00111111b
OR 10000000b
LD [HL],A
LD HL,AYREGS
XOR A
LD C,#A0
LOUT: OUT (C),A
INC C
OUTI
DEC C
INC A
CP 13
JR NZ,LOUT
OUT (C),A
LD A,(HL)
AND A
RET M
INC C
OUT (C),A
RET

...corriges el problema. No se si habrá algún otro método más práctico; pero a mi me vale...

Para probarlo, si se supone que con el OpenMSX podían dar problemas los joysticks 1 y 2 (si el Parachuteless sólo usa teclado pues nada...) tienes ejecutarlo con un joystick virtual pinchado. Modifica lo siguiente :

Al final del archivo C:\Documents and Settings\<usuario>\Mis Documentos\OpenMSX\share\settings.xml

Código:
  <KeyJoystick>
    <upkey>Q</upkey>
    <rightkey>P</rightkey>
    <downkey>A</downkey>
    <leftkey>O</leftkey>
    <buttonakey>X</buttonakey>
    <buttonbkey>C</buttonbkey>
  </KeyJoystick>

Puedes dejarlo como está; pero yo prefiero estas teclas para no confundirme con el stick 0, los cursores.

Una vez modificado, arranca el OpenMSX y en la consola (F10) teclea plug joyporta keyjoystick. Ahora se supone que has pinchado un joystick en el puerto 1, funciona con O,P,Q,A (si modificaste el settings.xml). Prueba el juego y si va bien, repite el proceso con el puerto 2, introduciendo en la consola unplug joyporta y plug joyportb keyjoystick. Si no te ha dado problemas durante un par de partidas y meterte por menús, pues eso es que está bien.

En línea

Doom dee doom dee doom
Dioniso
Visitante
« Respuesta #5 : 28 de Diciembre de 2005, 11:16:12 pm »

Sustituyendo la rutina ROUT por esta otra :

Lo único que hay que hacer es enmascarar los valores que se escriben al registro 7 puesto que estos valores no deberían pasar de 63 (%xx000000, no creo que haga falta explicar qué hacen estos bits). El "problema", a mí ya me han estallado 5 ordenadores (a veces la gente es increíble), es que el valor creado por el PT3 player para el registro 7 siempre escribirá el valor 0 en los dos bits más altos del registro 7. No es la forma correcta, pero tampoco supone un problema. A mí siempre me ha funcionado. Me ha bastado colocar 2 NOPs tras leer el joystick a pelo para que el valor sea el adecuado o ninguno si leo el joystick desde la BIOS. El Magical Stones 16k utiliza el PT3 player sin más, ha sido testeado en MSX1, MSX2, Turbo-R. No comprendo el alboroto.

JLTursan hace lo correcto, aunque no sé si el valor a escribir debería ser siempre %10xxxxxx. Lo totalmente correcto, en cualquier rutina de sonido que maneje el registro 7 (es decir, todas) sería:

1-leer el registro 7 directamente del PSG.
2-enmascarar los dos bits más altos del valor que vayamos a escribir (valor que SÓLO debe utilizar los 6 primeros bits) con los obtenidos de leer el registro 7.
3-enviar el valor ya enmascarado al registro 7.

La rutina del PT3 player, al igual que muchas otras, lo hacen de la forma más rápida posible, de eso se trata. Si fallara, obviamente, no habría que utilizarla. Pero el único fallo real viene en la teoría (no se debería hacer pero funciona perfectamente) y no sé si en algún emu. Para mí, un emu es algo muy práctico, muchísimo, pero NO es un MSX. Joder ... me estoy poniendo nervioso. Me acuerdo ahora de cuando MATRA puso el modo mixto en sus juegos y no iban en los emus. Fue aquello un fallo? Ellos se jactaban de que no funcionara el los emus y si en los MSX. Y el Seleniak? Esto sólo muestra las barreras entre los MSXs y los emus, que cada vez están más cerca. Un emu es un MSX pero sin magia.

Bueno, un saludo. Parece que el PT3 player es una cosa mala. Vaya mxxrda de primer mensaje que he publicado en el fórum.
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #6 : 28 de Diciembre de 2005, 11:46:01 pm »

Citar
Parece que el PT3 player es una cosa mala.

Nah, ni de coña. Tongue

Por lo que parece el jurado se ha propuesto destripar (y lo digo literalmente porque según parece han desensamblado código) todos los juegos y en cuanto encuentren el más mínimo problema lo van a sacar a la luz (lo cual no me parece mal).

En mi juego hago una lectura secuencial de los sticks 0,1 y 2. Cualquier joystick conectado debería funcionar; pero al escribir en PSG#7 valores del tipo 00xxxxxx lo que está pasando es que el joystick 2 se va al carajo...

Del Technical handbook :

Citar
The 2 high order bits of R7 do not affect sound output. These are used to
determine the direction of the data of two I/O ports which PSG has. When the
corresponding bit is 0, the input mode is selected and, when 1, the output
mode is selected. In MSX, port A is used for the input and port B for the
output, so it should always be set so that bit 6 = "0" and bit 7 = "1".

Ese bit 7 es el que se va al carajo.

Lo que no entiendo es como en los emuladores esto falla y en los MSX no pasaba nada de nada. EL joystick 2 funcionaba bien (o por lo menos en el NMS8245 y con un pad de la megadrive, que es el que recuerdo fijo).

Bueno, lo dicho, que no tiene importancia.  Smiley

Editado: Acabo de darme cuenta que en el TH está mal explicado; así que corrijo la cita del texto con los valores correctos para los bits 6 y 7... Sad
« Última modificación: 28 de Diciembre de 2005, 11:48:51 pm por jltursan » En línea

Doom dee doom dee doom
Dioniso
Visitante
« Respuesta #7 : 28 de Diciembre de 2005, 11:54:40 pm »

output, so it should always be set so that bit 6 = "0" and bit 7 = "1".


Ese bit 7 es el que se va al carajo.

Osea que valdría un simple:

Código:
;MSX version of ROUT (c)Dioniso
ROUT: LD HL,AYREGS+Mixer
LD A,[HL]
OR 10000000b
LD [HL],A
LD HL,AYREGS
...
;
Citar
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #8 : 29 de Diciembre de 2005, 12:29:54 pm »

Si suponemos que el bit 0 va a llegar siempre a 0, sí; pero en el reporte del bug aseguraron que al PSG#7 le había llegado un $56  Huh
Así pues, como más vale prevenir que curar, enmascaro los dos bits y fuera problemas.  Smiley
En línea

Doom dee doom dee doom
SapphiRe
Visitante
« Respuesta #9 : 29 de Diciembre de 2005, 12:57:42 pm »

Si suponemos que el bit 0 va a llegar siempre a 0, sí; pero en el reporte del bug aseguraron que al PSG#7 le había llegado un $56  Huh
Así pues, como más vale prevenir que curar, enmascaro los dos bits y fuera problemas.  Smiley

Realmente dicen 56, no $56 y estoy de acuerdo con que es muy extraño que funcione bien en los MSX reales y no en el emulador, a mí me ha funcionado bien en mi MSX1 y en la RU ambos juegos han estado funcionando en un 8235 con joystick, por lo que no entiendo el alboroto...

El finde tendreis una versión fixeada.

En fin...
--
SapphiRe
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #10 : 29 de Diciembre de 2005, 01:54:23 pm »

Pues mirare todo ello lueg en casa a ver, aunque a ver si encuentro ese cacho codigo en el que use yo, porque no podia compilar la version "normal" y me pasaron una rara con todo de etiquetas TC000algo, etc....
Y sip, Joe va con Joystick1 o Cursores indistintamente. 
Mirare de hacer las pruebas en el OpenMSX a ver que opina. Menos mal que es el open, pq si fuera el BlueMSX lo llevo claro, en mi carraca de pc va fatalmal de lento.

En general no creo q haya demasiado problema con el susodicho registro, pero sip, es mejor asegurarse y ya esta.
Gracias por toda la info!  Cheesy
En línea

--

Cindy Lauper She Bops!
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #11 : 29 de Diciembre de 2005, 02:11:51 pm »

Citar
Realmente dicen 56, no $56

Ah, pues es verdad  Roll Eyes
Bueno, pelillos a la mar, como ya he dicho más vale prevenir que curar (total por un mísero AND).
En línea

Doom dee doom dee doom
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #12 : 29 de Diciembre de 2005, 03:15:12 pm »

Sustituyendo la rutina ROUT por esta otra :

Yo en el lugar del ROUT tengo esto, que parece ser el equivalente:

Citar
;------ output sound data to psg registers
   ;;    DB      0,0,0,0      ; keep original location for code
   LD   C,$A0
   LD   HL,TC100Z
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
    DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   DB $DD,$7C ; LD A,IXZ
   LD   (TC4E9Z),A
   ADD   A,(HL)
   INC     C
   OUT   (C),A
   INC     L
   DEC     C
   OUT   (C),L
   DB $DD,$7D ; LD A,IXl
   INC     C
   OUT   (C),A
   INC     L
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   DEC     C
   OUT   (C),L
   INC     C
   OUTI
   LD   A,(HL)
   OR   A
   JR   Z,TC87CZ
   DEC     C
   OUT   (C),L
   INC     C
   OUT   (C),A
   LD   (HL),0
;------ output done

Digo yo que sera ahi. El codigo es diferente, pero es que el normal no me compilaba.


JLTursan hace lo correcto, aunque no sé si el valor a escribir debería ser siempre %10xxxxxx.

Bueno, un saludo. Parece que el PT3 player es una cosa mala. Vaya mxxrda de primer mensaje que he publicado en el fórum.

De cosa mala nada Smiley
Respecto al valor %10xxxxxx, segun el Handbook suele ser asi, aunque supongo que habria quien lo podria querer al reves. En todo caso, si al final resulta que es %00xxxxxx, eso significa que los dos puertos son de In, no? Si solo usas un puerto para entrada, da igual que el otro sea In o Out pq no vas a outputarle nada no? O confundo un tipo de puertos con otro? :S

Sea como sea, he probado el Parachuteless en el debugger del NO$MSX, que te indica los valores de todos los registros del PSG (entre otros) y efectivamente el bit7 se va al garete...

Mirare de corregirlo tb en el listado ASM de arriba, pero me iria mal que ocupara mas de 4 bytes de los que ya ocupaba antes... Cheesy
Citar
« Última modificación: 29 de Diciembre de 2005, 03:16:43 pm por MsxKun » En línea

--

Cindy Lauper She Bops!
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #13 : 29 de Diciembre de 2005, 09:37:04 pm »

Una ultima cosilla...

Aqui en el cacho del mute al registro 7 tb le llegara un cerapio, por lo tanto el bit 7 sera 0:

Citar
;------ mute all psg registers
TC07CZ:   LD   B,$0E
   XOR     A
TC07FZ:   LD      C,$A0
   OUT   (C),B
   INC     C
   OUT   (C),A
   DJNZ   TC07FZ
   RET
   DB  0,0,0      ; keep original location for code
;------ mute done

Nop?
En línea

--

Cindy Lauper She Bops!
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #14 : 29 de Diciembre de 2005, 10:25:38 pm »

Sip

¡Caray!, eso si que es hacerle un mute al PSG...todito a 0.

¿Por que no pruebas la rutina convertida por Dioniso?, no creo que te lleve más de unos minutos sustituirla y parece mucho más elegante que la que usas actualmente... Smiley
En línea

Doom dee doom dee doom
Páginas: [1] 2
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!