Título: Un cable please Publicado por: jjfranco en 04 de Septiembre de 2006, 07:25:09 pm Vamos a ver por favor.
Como no tengo ni idea de ingles se me ocurrió mandar un juego a la dev, sin averiguar lo que ponía en las condiciones para participar. ¿ Y que es lo que ha pasado ? pues que tenía la intencion de crear un juego en versión disco (por que así lo puedo cargar en un msx real sin muchas complicaciones), y evidentemente no me lo han aceptado hasta que no lo convierta en rom. Desde que lo envié hasta ahora (han pasado mas o menos 3 semanas) no he podido retocar nada del programa para pasarlo en rom, pero me gustaría que alguien me confirmara mis sospechas para transformar un fichero .bin a uno .rom. Aparte de incluir la directiva .ROM, me gustaria que alguien me dijese si las variables que inicializo directamente en RAM, debo volcarlas de la ROM a la RAM (page 3) mediante una pequeña rutina (no sé si he sido claro). Vamos lo que quiero decir es que tengo un monton de variables que inicializo mediante las instrucciones db (p.e. db "abcde" o dw FFFFh, 031Eh, etc, etc) y luego utilizo estas mismas direcciones de memoria para actualizar nuevos datos en ellas. Y por ultimo si hay algun detalle que se me pueda escapar para pasar un programa .bin a uno .rom. Un saludo a todos y en especial a los que me ayuden. (y que todo sea por mi MDA de programa) Título: Re: Un cable please Publicado por: e_sedes en 04 de Septiembre de 2006, 08:51:30 pm Holas.
Deduzco que usas el asMSX, no? Para situar las variables en la ram es suficiente con que las definas tras un .PAGE3, por ejemplo. Algo asín .PAGE2 (o .PAGE1) .ROM .START comienzo (creo que es conveniente poner esto) comienzo: (...juego y tal...) .PAGE3 (esto es ram) (...tus variables...) Eso si, define las variables con ds o con .byte o .word y dales valores desde el código, claro. Así por lo menos es como yo lo hago, si metí la gamba en algo ya habrá quien lo diga ;) un saludo. Título: Re: Un cable please Publicado por: e_sedes en 04 de Septiembre de 2006, 08:59:39 pm Ah! y que ya estoy impaciente por ver ese juego! :D
(jejeje..., mola..., juegos..., jejeje...) Título: Re: Un cable please Publicado por: jjfranco en 05 de Septiembre de 2006, 07:00:34 am Gracias e_sedes. :)
(Y sí, uso el asMSX) Ya me imaginaba que podría ser algo así. Ah! y que ya estoy impaciente por ver ese juego! :D (jejeje..., mola..., juegos..., jejeje...) No quiero defraudar a nadie, pero mi juego es una cutrez patatera total, es tan malo el programa que no supera en calidad al peor de los juegos para spectrum. Título: Re: Un cable please Publicado por: Jon_Cortazar en 05 de Septiembre de 2006, 11:33:39 am Que va, que va... yo he tenido la oportunidad de ver la preview en disco (sorry por no aceptarla, pero es que ya habíamos rechazado algunos .dsk -lease gasparrini), y el juego es un vicio!. Aunque no diré más... yo también estoy ansioso por recibir el .ROM
Por cierto, si sigues los consejos de e_sedes crearás el .ROM en un pispas ;) Título: Re: Un cable please Publicado por: jjfranco en 05 de Septiembre de 2006, 12:39:53 pm Que va, que va... yo he tenido la oportunidad de ver la preview en disco (sorry por no aceptarla, pero es que ya habíamos rechazado algunos .dsk -lease gasparrini), y el juego es un vicio!. Aunque no diré más... yo también estoy ansioso por recibir el .ROM Bueno, bueno, ... no es para tanto. Aunque gracias por el peloteo, así me animo a terminarlo. :D Título: Re: Un cable please Publicado por: e_sedes en 05 de Septiembre de 2006, 01:24:11 pm Juar juar juar!, pos espera a ver si yo doy acabado algo para presentar, eso si que va a ser patatero! ;D
Título: Re: Un cable please Publicado por: jjfranco en 13 de Septiembre de 2006, 07:34:59 pm Por favor necesito que alguien me diga si este codigo esta bien
ld bc,11 ; Nº de datos a copiar ld hl,[r_GameOver] ; Direccion origen ld de,[GameOver] ; Direccion destino ldir ;------------------------------------ ; VARIABLES en ROM ;------------------------------------ r_GameOver: db "GAME OVER$" ;------------------------------------ ; VARIABLES en RAM ;------------------------------------ .page 3 GameOver: ds 11 Cuando intento pasar las variables que tengo en la rom a la ram mediante este metodo el ensamblador me compila bien, pero al ejecutar la rom me sale syntax error in 0. Por favor ayuda urgente. Título: Re: Un cable please Publicado por: pitpan en 13 de Septiembre de 2006, 08:26:59 pm ld bc,11 ; Nº de datos a copiar ld hl,[r_GameOver] ; Direccion origen ld de,[GameOver] ; Direccion destino ldir [/color] Cuando intento pasar las variables que tengo en la rom a la ram mediante este metodo el ensamblador me compila bien, pero al ejecutar la rom me sale syntax error in 0. Por lo pronto, olvídate de corchetes cuando lo que quieres es leer direcciones. Los corchetes indican una indirección, es decir, estarías leyendo el contenido de la primera posición, no la dirección en que se almacena éste. ld bc,11 ; Nº de datos a copiar ld hl,r_GameOver ; Direccion origen ld de,GameOver ; Direccion destino ldir De todos modos, supongo que tienes más código ANTES, porque si no, no sé que pretende hacer el código. Necesitas directivas y otras cosillas. Es decir, con la corrección propuesta, el código es conceptualmente correcto, pero es posible que te siga dando el error. Si quieres un análisis más detallado, inclúyenos todo el código fuente. Ánimos! Título: Re: Un cable please Publicado por: Jon_Cortazar en 13 de Septiembre de 2006, 09:04:32 pm Jos'b, si tienes el programa en BASIC y quieres hacer con el un .ROM no necesitas hacer todo eso ;).
Hay programas que te permiten, más o menos, crear un .ROM en BASIC, ¿por que no les echas un ojo? · MSX-Basic ROM Creator, de jltursan (Link) (http://www.telefonica.net/web2/msxpage/) · Karoshi's MSX Basic to MSX ROM v 0.1, de Karoshi Corp. ;) (Link) (http://www.robsy.net/basicrom.htm) Ahora, si te lo quieres currar todo en ensamblador de cero... ;) Título: Re: Un cable please Publicado por: pitpan en 13 de Septiembre de 2006, 09:25:00 pm ...pero en ensamblador todo es mucho más divertido! :D
Título: Re: Un cable please Publicado por: jjfranco en 14 de Septiembre de 2006, 07:55:54 am Thanks a todos
de momento voy a seguir la recomendacion de Robsy, de quitar los corchetes, y ya comentaré sii todo va bien. Evidentemente hay más codigo. Y lo que pasa es que toco el ensamblador de 15 en 15 dias y me cuesta reconectar de nuevo, eso es todo.(por eso cometo errores tontos como el de los corchetes) Un saludo de nuevo, y por mis partes que termino el programa en rom. Título: Re: Un cable please Publicado por: Jon_Cortazar en 14 de Septiembre de 2006, 11:30:35 am Mucha suerte, Jos'B!!!. Ya sabes, cualquier dudilla, no te cortes en preguntar!!!
Y ten cuidado, que programad en ensamblador engancha! 8) Título: Re: Un cable please Publicado por: jltursan en 14 de Septiembre de 2006, 12:12:40 pm Yo sin embargo sigo pensando que una curva gradual de aprendizaje es lo mejor para evitar desengaños y abandonos. Si se tienen conocimientos previos de programación, pues adelante. En caso de no ser así lo mejor es empezar con BASIC y con mucha calma hacer chorraditas. Cuando de repente uno se de cuenta de que empieza a comprender todo lo que hay debajo de un programa (más alla del lenguaje con el que esté escrito) es cuando ya puede decidir porque que se decanta, sea C, Pascal o ensamblador.
De ahí lo interesante que todavía puede resultar un concurso de BASIC (http://www.msxgamesbox.com/karoshi/index.php?topic=74.0)... ;) (el enlace es para los que han llegado hace poco y no han curioseado lo suficiente por el foro). Título: Re: Un cable please Publicado por: jjfranco en 14 de Septiembre de 2006, 05:24:20 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 ;D. 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 !! Yo sin embargo sigo pensando que una curva gradual de aprendizaje es lo mejor para evitar desengaños y abandonos. Si se tienen conocimientos previos de programación, pues adelante. En caso de no ser así lo mejor es empezar con BASIC y con mucha calma hacer chorraditas. Cuando de repente uno se de cuenta de que empieza a comprender todo lo que hay debajo de un programa (más alla del lenguaje con el que esté escrito) es cuando ya puede decidir porque que se decanta, sea C, Pascal o ensamblador. De ahí lo interesante que todavía puede resultar un concurso de BASIC (http://www.msxgamesbox.com/karoshi/index.php?topic=74.0)... ;) (el enlace es para los que han llegado hace poco y no han curioseado lo suficiente por el foro). No sé que quieres decir con esto. Por mi parte tengo claro que no me voy a ganar la vida de programador, para mí esto es como el que se dedica a hacer barcos de madera, un hobby en el que pasar un buen rato, y ya esta. Un saludo a todos, y muchas gracias por el apoyo. Título: Re: Un cable please Publicado por: jjfranco en 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 Título: Re: Un cable please Publicado por: pitpan en 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 ;D. 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). ;) 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 :D - Incluir tu ROM en la base de datos interna del blueMSX y probar así. :) Espero que te sirva de algo! Título: Re: Un cable please Publicado por: jjfranco en 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 ??? ???.
(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. Título: Re: Un cable please Publicado por: pitpan en 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! :)
Título: Re: Un cable please Publicado por: e_sedes en 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! :D un saludo Título: Re: Un cable please Publicado por: jjfranco en 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! :) ¿ Y como se hace para dar de alta la rom en la base de datos de BlueMSX ? :) 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! :D 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 ??? - 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. Título: Re: Un cable please Publicado por: Jon_Cortazar en 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? ??? Título: Re: Un cable please Publicado por: jjfranco en 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. ??? 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. Título: Re: Un cable please Publicado por: Jon_Cortazar en 15 de Septiembre de 2006, 06:41:44 pm erm, no te importaría mandarme el código por mail?
Título: Re: Un cable please Publicado por: jjfranco en 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) :)
Título: Re: Un cable please Publicado por: Jon_Cortazar en 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 ;), 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 ;) Título: Re: Un cable please Publicado por: Jon_Cortazar en 16 de Septiembre de 2006, 09:24:35 am Uy, uy, uy, Jos'b, típico fallo chorra habemus :D. 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. :) 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!. :) Título: Re: Un cable please Publicado por: jjfranco en 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. Título: Re: Un cable please Publicado por: Jon_Cortazar en 16 de Septiembre de 2006, 10:26:25 am Nah, no te preocupes, para eso estamos ;). Y si necesitas ayuda con cualquier otra cosa de tu programa, no dudes en comentárnosla ;)
Título: Re: Un cable please Publicado por: pitpan en 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. :)
Título: Re: Un cable please Publicado por: SapphiRe en 17 de Septiembre de 2006, 02:53:08 am Estoy a tope con un proyecto MUY ANTIGUO (lo empecé en 2000). Pero pinta bien... Creo que llegaré al deadline. :) ¿Y eso es antiguo? Las primeras ideas del QBIQS datan de 1990... ::) ::)Título: Re: Un cable please Publicado por: pitpan en 17 de Septiembre de 2006, 10:46:13 pm Hmm. Debí explicarme mejor: se trata de un proyecto antiguo dentro de mis idas y venidas en ensamblador. Mis primeros intentos en BASIC los hice también en 1990, pero estaban muy lejos de lo que necesitaba. Estoy francamente contento de cómo está quedando el juego, pero seréis vosotros los que lo juzguéis. También es un proyecto antiguo porque se trata de una conversión de un juego muy antiguo. Espero estar a la altura ;)
Título: Re: Un cable please Publicado por: WYZ en 23 de Septiembre de 2006, 05:30:06 pm 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. si, me he animado ;D. ya tienes algo en el correo. Título: Re: Un cable please Publicado por: Jon_Cortazar en 23 de Septiembre de 2006, 09:27:07 pm Ese WYZ... monstruo, que eres un monstruo!! :D :D (en el buen sentido de la palabra, eh? ;) )
Título: Re: Un cable please Publicado por: WYZ en 24 de Septiembre de 2006, 02:16:24 am Jor Jon, que solo es que me solidarizo con los que empiezan con el asm. ;D
Seguro que a estas alturas del currele AsMSXero el Jos'b sabe arregrarselas solito pero una ayuda de lo poco que los demas podamos aportarle no le vendrá nada mal. Título: Re: Un cable please Publicado por: nerlaska en 24 de Septiembre de 2006, 07:50:08 am Madre mia .. el ASM!! vaya manera de padecer programando! :-) cuando publique el MSX-C SDK .. se os acabarán las tonterias :-D
Por cierto .. que es el QBIQS ese o como se llame? |