Karoshi MSX Community
05 de Julio de 2021, 07:45:32 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] 3
  Imprimir  
Autor Tema: Un cable please  (Leído 14795 veces)
0 Usuarios y 1 Visitante están viendo este tema.
jjfranco
Visitante
« Respuesta #15 : 14 de Septiembre de 2006, 05:48:08 pm »

Estoy probando la ROM, y funciona perfectamente en el emulador RuMSX, pero no va en el BlueMSX.

¿ Alquien tiene idea de por que puede ser esto ?

Gracias
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #16 : 14 de Septiembre de 2006, 06:55:54 pm »

Bueno pues ya está hecha la ROM. En breve vereis mi gran M de juego inscrito en la dev.

El verdadero problema que me ha surgido para convertir el programa .bin en uno .rom. Aparte del ya conocido de los corchetes  Grin. Ha sido que el ensamblador no me dejaba compilar el codigo si colocaba la rutina de paso de datos de rom a ram detras de los db, dw y esas cosas (Me salía el mensaje "code size overflow") No sé si esto que estoy diciendo tiene lógica, pero el caso es que he cambiado la rutina de sitio y ha compilado la rom perfectamente. ¡¡ y funciona !!

Jos'b: esperamos tu juego como agua de mayo (o de septiembre, que no está faltando este año). Wink

En cuanto al problema que describes, es bien sencillo: las rutinas (esto es, el código del programa) tiene que estar en ROM, junto con los datos. Es decir, puedes tener el código después de los DBs y los DWs, pero ANTES de los DS. En una ROM, en principio, todo el código y los datos tienen que quedar en las páginas 0, 1 o 2, pero no en la página 3. La página 3 debe ser siempre RAM, es decir, variables.

No sé si me he expresado bien, pero espero que te hayas quedado con la copla.

En cuanto al tema de que no te funcione en BlueMSX, puede deberse a 2 temas:

- Que haya algún problemilla en el código que tolere el ruMSX pero no el blueMSX (improbable).
- Que blueMSX cargue "mal" la ROM - blueMSX parte de una base de datos de ROMs en la que de momento no está incluida la ROM que tú has preparado.

Por lo tanto, para salir de dudas tienes 2 opciones:

- Cargar la ROM en un MSX real Cheesy
- Incluir tu ROM en la base de datos interna del blueMSX y probar así. Smiley

Espero que te sirva de algo!
En línea
jjfranco
Visitante
« Respuesta #17 : 14 de Septiembre de 2006, 07:23:35 pm »

Pues la verdad es que no sé que problema hay en el blueMsx (o en mi codigo por supuesto), que si compilo una rom de 32 k y page 1, no se ejecuta en el bluemsx,y si compilo una rom de 32 k y page 2, funciona perfectamente Huh Huh.
(tal como lo cuento, cambio .page 2 por .page 1, lo compilo, y no va. Tendrá su logica pero yo no la veo)

Respecto a lo de cambiar el orden de la rutina, el error a sido que coloque el codigo en .page 3 por lo que tal y como comentas es un gran error mio y nada tiene que ver con el compilador.

Y por supuesto voy a ejecutarlo en un msx real, a ver si soy capaz de averiguar que pasa.

Otro saludo.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #18 : 14 de Septiembre de 2006, 08:06:14 pm »

Lo que comentas respecto al BlueMSX refuerza la idea de que el BlueMSX no carga bien tu ROM, al no tenerla dada de alta en su base de datos de juegos. Por lo tanto, tu ROM es correcta y funcional. A ver cuando se publica tu juego, que tenemos ya ganas de verlo!  Smiley
En línea
e_sedes
Karoshi Maniac
****
Mensajes: 442



Email
« Respuesta #19 : 14 de Septiembre de 2006, 08:16:21 pm »

En el BlueMSX en Opciones>archivo tienes una pestaña para seleccionar como abre las ROMs por defecto. Prueba cambiando por ahí.
Ya estoy calentando los dedos para darle caña a ese juego! Cheesy

un saludo
En línea

sempre fun un valente corredor
jjfranco
Visitante
« Respuesta #20 : 15 de Septiembre de 2006, 05:37:43 pm »

Lo que comentas respecto al BlueMSX refuerza la idea de que el BlueMSX no carga bien tu ROM, al no tenerla dada de alta en su base de datos de juegos. Por lo tanto, tu ROM es correcta y funcional. A ver cuando se publica tu juego, que tenemos ya ganas de verlo! Smiley

¿ Y como se hace para dar de alta la rom en la base de datos de BlueMSX ? Smiley

En el BlueMSX en Opciones>archivo tienes una pestaña para seleccionar como abre las ROMs por defecto. Prueba cambiando por ahí.
Ya estoy calentando los dedos para darle caña a ese juego! Cheesy

un saludo

Pues así tampoco me funciona he escogido como tipo de cartucho el normal 4000h, que sería el logico y nada de nada.

He compilado dos rom, una con la directiva ".page 1", y otra con la directiva ".page 2" y las he probado en el RuMSX, en el BlueMSX y en un msx real (mitshubisi ml-g3 usando execrom) y los resultados son curiosos sobre todo para el BlueMSX. La rom es de 32 k.

para la rom con page 1
          - No funciona en el BlueMSX Huh
          - Si funciona en el RuMSX y en el msx real

para la rom con page 2
          - Si funciona en el BlueMSX (que alguien me lo explique)
          - No funciona en el RuMSX ni tampoco en el msx real

No entiendo como para el Blue no funciona con page 1 que seria lo logico (page 1 y page 2 para las 32 k de rom y page 3 para las variables) y sin embargo si funciona con page 2, que en teoría deberían solaparse los ultimos 16 k de la rom con los 16 k de la ram.

Si alguien no se lo cree le paso las rom, y hasta el codigo fuente si hace falta.

Un saludo, y que alguien me lo explique.







En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #21 : 15 de Septiembre de 2006, 06:03:31 pm »

Jos'b: ¿haces un ROM de 32kb a pelo sin mirar donde está la segunda página de 16 KB?. Ten en cuenta que la organización de la memoria no es igual en todos los MSX, y que además cada emulador arranca por defecto con una configuración concreta de MSX.

Este snippet es del señor robsy, y sirve para que el programa ajuste el slot correctamente para la 2ª página del ROM:

Código:
DETECTA_RAM:

;------------------------------------------------
;------------------------------------------------
; Rutina que localiza la segunda pagina de 16 KB
; de una ROM de 32 KB ubicada en 4000h
; Compatible con carga en RAM
; Compatible con expansores de slots
;------------------------------------------------
; Comprobacion de RAM/ROM

        ld hl,4000h
        ld b,[hl]
        xor a
        ld [hl],a
        ld a,[hl]
        or a
        jr nz,@@ROM
; El programa esta en RAM - no buscar
        ld [hl],b
        ret
@@ROM:
        di
        ; Slot primario
        call RSLREG
        rrca
        rrca
        and 03h
        ; Slot secundario
        ld c,a
        ld hl,0FCC1h
        add a,l
        ld l,a
        ld a,[hl]
        and 80h
        or c
        ld c,a
        inc l
        inc l
        inc l
        inc l
        ld a,[hl]
; Definir el identificador de slot
        and 0ch
        or c
        ld h,80h
; Habilitar permanentemente
        call ENASLT
        ei
        ret
;------------------------------------------------
;------------------------------------------------

Con que llames una vez a esta rutina nada más empezar el programa, ya vale.

¿Podría ser eso?  Huh
« Última modificación: 15 de Septiembre de 2006, 06:05:30 pm por Viejo_archivero » En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
jjfranco
Visitante
« Respuesta #22 : 15 de Septiembre de 2006, 06:26:48 pm »

Jos'b: ¿haces un ROM de 32kb a pelo sin mirar donde está la segunda página de 16 KB?.

Pues sí, pensaba que ya se encargaba la bios, al arrancar el msx, de seleccionar los slot adecuados al introducir un cartucho rom.

De todas formas, he añadido el codigo de tu post, (por cierto muchas gracias, me lo he apropiado gratuitamente para futuros programas), y no da resultado, el BlueMSX sigue si ejecutar la rom con page 1. Huh

Reconozco que soy un chapuzas haciendo programas y a lo mejor he metido la gamba en alguna parte del codigo y me esta funcionando el programa  por pura casualidad, vete a saber.
En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #23 : 15 de Septiembre de 2006, 06:41:44 pm »

erm, no te importaría mandarme el código por mail?
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
jjfranco
Visitante
« Respuesta #24 : 15 de Septiembre de 2006, 06:57:43 pm »

Por supuesto que no me importa, de hecho ya te lo he mandado.(el codigo y las dos rom) Smiley



En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #25 : 15 de Septiembre de 2006, 07:53:25 pm »

Lo miro más tarde, fale?, que ahora tengo que salir...

antes que nada... deberías usar el útlimo asmsx, el asmsx0.12, que corrige bastantes temillas de ensamblado (aunque ese no parece ser el problema)...
además, el comando .bios que pones al principio, lo que hace es crear ya las etiquetas para las rutinas de la bios, no hace falta que vuelvas a indicar todas esas constantes Wink, pero bueno, que luego lo miro con más profundidad, ok?.

Ciertamente, en blueMSX no tira, en NLMSX si. No he probado más. El asMSX0.12 no lo ensambla (da un error de sintaxis). Voy a darle una vuelta luego, fijo que es una chorrada Wink
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #26 : 16 de Septiembre de 2006, 09:24:35 am »

Uy, uy, uy, Jos'b, típico fallo chorra habemus Cheesy. Por supuesto, ya está solucionado, así que nonti preocupare. Te lo explico para que lo hagas tu, vale?.

Tu cabecera de directivas para ensamblar el ROM era la siguiente:

Código:
        .bios
        .page   1
        .rom   
        .size   32
        .start  MAIN 
MAIN:
[...]

Puede parecer que está bien a priori, pero no es así... verás, la cabecera de un ROM tiene 16 bytes (10 bytes de obligado uso y 6 reservados para un posible uso futuro).

Cabecera de un ROM:
DEFB "AB" ; expansion ROM header
DEFW initcode ; start of the init code, 0 if no initcode
DEFW callstat; pointer to CALL statement handler, 0 if no such handler
DEFW device; pointer to expansion device handler, 0 if no such handler
DEFW basic ; pointer to the start of a tokenized basicprogram, 0 if no basicprogram
DEFS 6,0 ; room reserved for future extensions


Como ves, los 10 primeros bytes son intocables, ya que significan diversas directivas para el ROM. Así que tu MAIN nunca debe ser menor a $400a (si empiezas en la pag1, claro), ya que solaparás los datos necesarios de cabecera del ROM.

En tu cabecera, al ensamblar, te resulta en lo siguiente:

Código:
db "AB"   <-2 bytes (esto es el indicador de ROM)
dw INIT   <-2 bytes (dirección de comienzo de ejecución del mismo)
INIT:
[...]

De este modo, tu código empezaba en $4004, cosa impensable en un ROM. Mira, es tan fácil como incluir unos cuantos bytes de sobra, como, por ejemplo, una referencia a tu juego o a ti mismo.

Código:
        .bios
        .page   1
        .rom   
        .size   32
        .start  MAIN 
        db "josb rules"  ;aquí he metido 10 bytes extra. Ahora MAIN será $400d.
MAIN:
[...]

Y aquí habremos ensamblado, señoras y señores, un ROM standard.  Smiley

Por cierto, una pequeña pista, vale?:

Código:
        xor     a
        ld      [$f3db],a             ; Desactiva sonido teclas (screen ,,0)

Ah, y se me olvidaba, felicidades por tu producción MSXera en ensamblador!. Es bastante viciante, jejeje. En cuanto la finiquites del todo te animo a que hagas otro juegecillo para MSXdev'06, que aún te quedan meses! (y así no dejas el ensamblador de pronto). De nuevo, felicidades!. Smiley
« Última modificación: 16 de Septiembre de 2006, 09:32:48 am por Viejo_archivero » En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
jjfranco
Visitante
« Respuesta #27 : 16 de Septiembre de 2006, 10:16:56 am »

Que pasada  :god: :god: :god: :god:

Ni en 100 años mesequiseros de vida se me hubiese ocurrido.

Muchas gracias por la ayuda, y cuenta con un credito en este fantastico juego original donde los haya.

De momento voy a retrasar la entrada, hasta que resuelva un par de problemillas que he encontrado y le busque una presentacion mas decente cmptr:), y de paso a ver si WYZ se ha animado a ponerle un par de melodias sencillitas.

Un saludo, y de nuevo muchas gracias, estoy eternamente agradecido.
En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #28 : 16 de Septiembre de 2006, 10:26:25 am »

Nah, no te preocupes, para eso estamos Wink. Y si necesitas ayuda con cualquier otra cosa de tu programa, no dudes en comentárnosla Wink
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #29 : 16 de Septiembre de 2006, 10:27:11 pm »

Estupendo! A ver cuándo podemos ver ese juego! Que ahora hace tiempo que no tenemos adiciones/sorpresas en MSXdev'06. Las últimas noticias han sido negativas, así que a ver si nos cae alguna buena para compensar. A programar... Estoy a tope con un proyecto MUY ANTIGUO (lo empecé en 2000). Pero pinta bien... Creo que llegaré al deadline.  Smiley
En línea
Páginas: 1 [2] 3
  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!