Heroes' Rescue activa el modo Timex HiColor... o no
Heroes' Rescue activa el modo Timex HiColor... o no
Al juego Heroes REscue le salen los colores cambiados cuando lo arrancamos con la funcionalidad de modos Timex activada. He probado a activar Timex y desactivar ULAPlus y Radastan para estar seguro que es solo eso y es solo eso.
A priori uno podría pensar que le pasa como al Madmix Game, un out que activa sin querer el HiRes, pero el efecto en pantalla es muy diferente: no se produce ese lio de colores tremendo que viene de que se lean los atributos de un sitio donde en realidad hay código, sino que aparecen simplemente "raros", pero no se monta el pollo que se montaba en Madmix, el juego sigue siendo jugable.
http://www.mediafire.com/file/49d58zzid ... CUE_ZX.zip
El juego está hecho con AGD 4.6, que en teoría no soporta ni sabe nada de los modos Timex (aunque la versión nueva de AGD que se está gestando está hecha pensando en ellos, pero esta antigua no).
Lo dejo por aquí por si alguien quiere echarle un ojo a ver que puede estar pasando, no sea que haya algún tipo de cruce extraño y el desactivador de los modos Timex se deje algo fuera, o el hecho de tener activado el modo Timex implique algo más además de la estructura de la video RAM.
A priori uno podría pensar que le pasa como al Madmix Game, un out que activa sin querer el HiRes, pero el efecto en pantalla es muy diferente: no se produce ese lio de colores tremendo que viene de que se lean los atributos de un sitio donde en realidad hay código, sino que aparecen simplemente "raros", pero no se monta el pollo que se montaba en Madmix, el juego sigue siendo jugable.
http://www.mediafire.com/file/49d58zzid ... CUE_ZX.zip
El juego está hecho con AGD 4.6, que en teoría no soporta ni sabe nada de los modos Timex (aunque la versión nueva de AGD que se está gestando está hecha pensando en ellos, pero esta antigua no).
Lo dejo por aquí por si alguien quiere echarle un ojo a ver que puede estar pasando, no sea que haya algún tipo de cruce extraño y el desactivador de los modos Timex se deje algo fuera, o el hecho de tener activado el modo Timex implique algo más además de la estructura de la video RAM.
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Hola Uto, anoche estuve hablando este mismo tema con Javi y compañía. No es un problema de Timex HiColor, El problema es que en el AGD han dejado las opciones de Ula+, y por lo que sea la tabla que carga está modificada. Por eso ves unos colores decolorados... Si lo pruebas en un emulador que tenga Ula+ verás que pasa lo mismo.
La rutina de carga de colores en la Ula+ se puede desactivar (basta poner un RET en la entrada a la misma). Para ello puedes usar el siguiente cargador Basic que te corrige el problema. No intentes modificar el cargador que tiene el juego porque lleva una pequeña protección del Basic y te va a dar problemas de sintaxis.
Con eso evitas que al cargarse el juego se active el modo de Ula+
La rutina de carga de colores en la Ula+ se puede desactivar (basta poner un RET en la entrada a la misma). Para ello puedes usar el siguiente cargador Basic que te corrige el problema. No intentes modificar el cargador que tiene el juego porque lleva una pequeña protección del Basic y te va a dar problemas de sintaxis.
Código: Seleccionar todo
10 CLEAR 23999: LOAD "" SCREEN$: POKER 23739,111: LOAD "" CODE: POKE 32667,201: RANDOMIZE USR 32000
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Lo que dices cuadra mucho con lo que pasa en pantalla, es decir, tiene mucha más pinta de tener una paleta rara de ULAPlus que de que haya activado el modo HiColor de Timex.thEpOpE escribió:Hola Uto, anoche estuve hablando este mismo tema con Javi y compañía. No es un problema de Timex HiColor, El problema es que en el AGD han dejado las opciones de Ula+, y por lo que sea la tabla que carga está modificada. Por eso ves unos colores decolorados... Si lo pruebas en un emulador que tenga Ula+ verás que pasa lo mismo.
La rutina de carga de colores en la Ula+ se puede desactivar (basta poner un RET en la entrada a la misma). Para ello puedes usar el siguiente cargador Basic que te corrige el problema. No intentes modificar el cargador que tiene el juego porque lleva una pequeña protección del Basic y te va a dar problemas de sintaxis.
Con eso evitas que al cargarse el juego se active el modo de Ula+Código: Seleccionar todo
10 CLEAR 23999: LOAD "" SCREEN$: POKER 23739,111: LOAD "" CODE: POKE 32667,201: RANDOMIZE USR 32000
Sin embargo, si yo se lo achaco a los modos Timex es porque he probado a dejar activo solo Timex y desactivado ULAPLus en el ZX-Uno, y pasa, pero si dejo activo solo ULAPlus no pasa. Como para activar/desactivar uso ZXUC, pueden pasar dos cosas:
1) Que ZXUC esté mal y tenga cruzados el setting de ULAPLus y Timex
2) Que sea el core el que esté mal y los tenga cambiados
También podría pasar que de alguna manera estén internamente relacionados (por ejemplo que haga falta ULAPlus para activar modos Timex y que por tanto un setup con Timex sin UlaPlus no tenga sentido)
Acabo de probar a dejar el registro $0F de ZX-Uno con el valor 00000101 (que en teoría es solo Timex activo), tras eso he intentando OUT 255,6 para activar HiRes y no ha funcionado. Es decir, el setting de Timex está activo pero no se activan.
Después he probado a dejarlo 00000110 (solo ULAPlus activo), y el OUT 255, 6 me pasa a modo Timex HiRes, pese a estar los modos Timex desactivados
En definitiva, probablemente tengas razón, pero o bien he dejado de entender como van esos flags del registro del ZX-Uno, o están cambiados
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Mira, esta es la rutina que en AGD activa el Ula+:
Solamente usa el puerto $BF3B, por el que saca $40 (= 01000000), después pone $FF3B un 1 (con eso selecciona el registro 64, y lo pone a 1: ula+ activada), y a continuación va seleccionando de una tabla que está en $7FC0 lo valores que mete en los registros de la tabla de colores: usa E como indice de los registros de ula+. En 7FA8 inicia el contador de los 64 valores que mete (registro 0 a 63 de ula+). Va seleccionando el registro sacando al puerto $BF3B el numero de registro, y en $FF3B el valor que carga en el registro.
El motor de AGD no toca de los modos de video más puertos/registros que estos.
Código: Seleccionar todo
7F9B: LD BC, $BF3B
7F9E: LD A, $40
7FA0: OUT (C), A
7FA2: LD B, $FF
7FA4: LD A, $01
7FA6: OUT (C), A
7FA8: LD B, $40
7FAA: LD HL, $7FC0
7FAD: LD E, $00
7FAF: PUSH BC
7FB0: LD B, $BF
7FB2: LD A, E
7FB3: OUT (C), A
7FB5: LD B, $FF
7FB7: LD A, (HL)
7FB8: OUT (C), A
7FBA: INC E
7FBB: INC HL
7FBC: POP BC
7FBD: DJNZ $7FAF
7FBF: RET
El motor de AGD no toca de los modos de video más puertos/registros que estos.
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Sí, claramente está haciendo un "seteo" de la paleta de ULAPlus, la cuestión es por qué el ZX-Uno la aplica teniendo el ULAPlus desactivadothEpOpE escribió:Mira, esta es la rutina que en AGD activa el Ula+:Solamente usa el puerto $BF3B, por el que saca $40 (= 01000000), después pone $FF3B un 1 (con eso selecciona el registro 64, y lo pone a 1: ula+ activada), y a continuación va seleccionando de una tabla que está en $7FC0 lo valores que mete en los registros de la tabla de colores: usa E como indice de los registros de ula+. En 7FA8 inicia el contador de los 64 valores que mete (registro 0 a 63 de ula+). Va seleccionando el registro sacando al puerto $BF3B el numero de registro, y en $FF3B el valor que carga en el registro.Código: Seleccionar todo
7F9B: LD BC, $BF3B 7F9E: LD A, $40 7FA0: OUT (C), A 7FA2: LD B, $FF 7FA4: LD A, $01 7FA6: OUT (C), A 7FA8: LD B, $40 7FAA: LD HL, $7FC0 7FAD: LD E, $00 7FAF: PUSH BC 7FB0: LD B, $BF 7FB2: LD A, E 7FB3: OUT (C), A 7FB5: LD B, $FF 7FB7: LD A, (HL) 7FB8: OUT (C), A 7FBA: INC E 7FBB: INC HL 7FBC: POP BC 7FBD: DJNZ $7FAF 7FBF: RET
El motor de AGD no toca de los modos de video más puertos/registros que estos.
He vuelto a mirar el wiki y el bit más bajo del registro $0F es ULAPlus, y a 1 es disabled, no lo entiendo
Tengo que mirarlo con más detalle, pero hoy no voy a poder, lo mismo hay algo mal en ZXUC que me está engañando.
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Respecto al MadMixGame , es un problema de como gestionan la sincronización. Lo que hicieron es una espera controlada de la cpu, mediante un bucle de escritura en ROM :
y afinan la sincronización añadiendo 2 instrucciones al final :
No previeron que pudiera haber dispositivos conectados que hicieran uso del puerto 255 !!
En el caso de MadMixGame puedes eliminar la instrucción del OUT, con POKE 38385, 0 : POKE 38386, 0 ; y sin necesidad desactivar cosas en el ZxUno.
En el caso de Zona0, que usa la misma técnica puedes corregir el error con POKE 39567,0: POKE 39568,0
No obstante puedes leer más información sobre la contención de puertos in/out en: http://www.worldofspectrum.org/faq/refe ... erence.htm
Código: Seleccionar todo
LD HL,0
LD D, H
LD E, L
LD BC, $600C
LDIR
Código: Seleccionar todo
LD A,2
OUT (255),A
En el caso de MadMixGame puedes eliminar la instrucción del OUT, con POKE 38385, 0 : POKE 38386, 0 ; y sin necesidad desactivar cosas en el ZxUno.
En el caso de Zona0, que usa la misma técnica puedes corregir el error con POKE 39567,0: POKE 39568,0
No obstante puedes leer más información sobre la contención de puertos in/out en: http://www.worldofspectrum.org/faq/refe ... erence.htm
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Sí, el de MadMix game tengo claro la causa, por eso no me cuadraba este, porque no veía ninguna razón para ese OUT. Es la paleta está claro, lo que no está claro es por qué un ZX-Uno con el bit DIULAPLUS (Disable ULAPLus) activado en el regstro DEVCRTL2 se lo pasa por el arco de triunfo y accede a ULAPlus.
"DIULAPLUS: a 1 para deshabilitar la ULAplus. Cualquier escritura a los puertos de ULAplus se ignora. Las lecturas a dichos puertos devuelven el valor del bus flotante. No obstante tenga en cuenta que el mecanismo de contención para este puerto sigue funcionando aunque esté deshabilitado."
Quizá sea eso del mecanismo de contención, que no se qué es
"DIULAPLUS: a 1 para deshabilitar la ULAplus. Cualquier escritura a los puertos de ULAplus se ignora. Las lecturas a dichos puertos devuelven el valor del bus flotante. No obstante tenga en cuenta que el mecanismo de contención para este puerto sigue funcionando aunque esté deshabilitado."
Quizá sea eso del mecanismo de contención, que no se qué es
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Los cambios de desactivar ULAplus creo que se hicieron en el core T23. ¿Podría ser porque tengas el core T22? Aunque la BIOS esté actualizada y mande la info correcta al puerto, si no está implementado en el core no hace nada.
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Tengo el T24, así que eso no esantoniovillena escribió:Los cambios de desactivar ULAplus creo que se hicieron en el core T23. ¿Podría ser porque tengas el core T22? Aunque la BIOS esté actualizada y mande la info correcta al puerto, si no está implementado en el core no hace nada.
Además, si que parece hacer algo, pero en vez de deshabilitarse los timex con el bit del timex, parece hacerlo con ULAPlus. Quizá esté cambiado, a ver si esta noche o mañana pruebo a hacer un programa que cambie paleta de ULAPlus con ULAPLus deshabilitada y confirmo que es eso. También podría ser ZXUC que esté mal, pero tengo que mirarlo con más detalle.
Re: Heroes' Rescue activa el modo Timex HiColor... o no
Por cierto, Uto, en el faq, el registro SCANDBLCTRL ($0B) del zxuno lo tienes que actualizar. Falta de documentar el bit COPT, que es la forma en que se generan los sincronismos compuestos para RGB y video compuesto... y que creo que es el problema con mi tv Philips Creo recordar que en su momento cuando conecté el RGB del +3 a esa tv me hacía cosas muy muy raras también