Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: j4mk3 en 27 de Junio de 2010, 04:00:14 pm



Título: Hans' Adventure ... 48ks ROM
Publicado por: j4mk3 en 27 de Junio de 2010, 04:00:14 pm
Sí, sí, sííííí :)
He conseguido hacer una ROM de 48Ks para Hans' Adventure. Se compila con el asMSX perfectamente y rula bien en el BlueMSX. He utilizado las rutinas que aparecen en los tutoriales de aquí de la web (by Ramones) y un codigo prestado de Sapphire para iniciar la Page 2. A su vez las dos rutinas albergan en su interior code by Konamiman (amén ::))

Hans' Adventure se creo en un principio siendo un .COM, así que no utiliza para nada la BIOS en ninguna de sus rutinas. Va a los puertos de PSG y VDP standard y listo.

Creo que no he hecho los cambios de manera compatible o protocolaria. Diria que lo he hecho demasiado a saco. Os quiero dejar aquí un trozo de como he inicializado las páginas para que me digais si es correcto, si podria dar problemas de compatibilidad, ...etc.

Page 0:
Código:
.BIOS
.ROM
.PAGE 0
.START JOC
dw 0,0,0,0,0,0

.ORG 38h ; Inici de la rutina de interrupció
db 0C3h
dw TIMER_R

; DATOS GRAFICOS

Page 1:
Código:
.PAGE   1

; CABECERA MANUAL para una ROM
db 41h,42h
dw JOC
dw 0,0,0,0,0,0
db "HANS"

; PROGRAMA - Inicialitzacion
JOC:
jp JOC0
.INCLUDE "LIB/SET48K.GEN"
;Librerias de Saphire y Ramones para situar los 48Ks ROM seguidos.

JOC0:
di
ld SP,PILA

; Screen 2,Sprites de 16x16
call SCREEN22
; Posiciona la ROM de 48ks
call SET48K
; Desactivacion del CLICK CLICK
xor A
ld [0F3DBh],A

GAME:

Page 3:
Código:
.ORG 0E000h

PILA0:
ds 256
PILA: .byte
.INCLUDE "Variables"

Como lo veis ? :)

P.D: La rutina de interrupcion hace sus PUSH y sus POPs completos, su DI y EI, y sale con RETI. Tal como estaba en el .COM


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: kabish en 27 de Junio de 2010, 09:42:10 pm
Dos cosas ..

- En 'page 1' si haces directamente 'dw joco', te ahorras un jp y tres bytes.
- Luego a la hora de iniciar la rom, en la etiqueta 'joco', no se si  tienes que inicializar el modo de interrupciones 1, quedandote asi :

Código:
di
im 1
ld sp,PILA ;-> 0xf380

En mi caso lo tengo que hacer asi por que yo solo guardo datos en la pagina 0, nunca codigo.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: j4mk3 en 27 de Junio de 2010, 10:47:13 pm
Ok Kabish :) Gracias.
- Entendido lo del jp joc0 y arreglao...3 bytes pa otras cosas :)
- Lo del modo de interrupciones....no lo acabo de pillar pq hacer eso del im1.
En Page 0 solo tengo datos y ya he puesto en la 38h el jp a mi rutina. Funciona bien y retorna correctamente.

Lo que me pasan ahora dos cosas:
- En algunos emuladores como el meisei de Pc o el emulador de MSX de la GP2X Wiz portado por un tal ZX-81, no arranca la rom de 48ks. Va al Basic [enter date (M-d-A)] o reporta que no arranca.
- La ROM creada ahora es de 40960 bytes....que raro...es porque no lo lleno y el asMSX, lo corta ?

Es normal ? need help !  :'(


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: pitpan en 28 de Junio de 2010, 10:37:30 am
El asMSX tiene una granularidad de 8 KB para las ROMs, así que si no llenas más de 40 KB, se te quedará en ese tamaño. Para solucionarlo, prueba a usar lo siguiente:

Código:
size 48

A ver si así va mejor. En cuanto a los problemas con los emuladores, pueden tener que ver con cómo cargan en memoria las ROMs. Asegúrate de que soportan ROMs de 48 KB.

Ánimos.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: SapphiRe_MSX en 28 de Junio de 2010, 11:26:48 am
En cuanto a los problemas con los emuladores, pueden tener que ver con cómo cargan en memoria las ROMs. Asegúrate de que soportan ROMs de 48 KB.

El meisei las soporta, ya que el QBIQS funciona perfectamente en él.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: kabish en 28 de Junio de 2010, 11:31:01 am
Me tengo que ir a currar ahora, pero intentare responderte algo que recuerde de memoria ..

- 'im 1' es asi por definicion. Al arrancar la rom, inhabilita las interrupciones, pone el modo de interrupciones a 1 y coloca el puntero de la pila.
- Lo del relleno, a mi tambien me pasaba. Prueba a rellenarlo a mano, o  como dice pitpan y ya esta.
- Prueba el tutorial de Ramones al pie de la letra y una vez que veas que funciona pues ya metes mas cosas. Yo lo segui y me fue de perlas  ;)
- El meisei creo recordar que soporta roms de 48ks. De todas formas usa 'odo' y asi sales de dudas. El odo creo que lo programo un tal Armando.  :)

Si tienes mas problemas te puedo mandar un codigo funcional de una rom de 48ks.
Sigue buscando, hay miles de premios.  ;)


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: j4mk3 en 28 de Junio de 2010, 02:29:27 pm
Muchas gracias a todos por las aportaciones.
@pitpan
Probé lo del size, pero creo que me decia algo que no podia ponerse si se usaba la directiva .ROM. Lo intentaré de nuevo.

@Sapphire
Que el meisei las soporta es una gran noticia, gracias. Ara ya se que si no va es pq algo hago mal. :(

@Kabish
He seguido el tuto de Ramones (que tiene su miga tal como se explica :p ) Si, ODO lo conozco...jODO si lo conozco ! :p

A todo esto...
...algunod e vosotros puede decirme un "Sí tu codigo de inicialización es correcto" o un "toca aquí y allí para que lo sea"...que me teneis en ascuas y yo toy inseguro de si está bien. ;)

Además Ramones está "out of combat" y no puedo pasar su "sello de calidad" ;)


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: Jon_Cortazar en 28 de Junio de 2010, 03:31:57 pm
Muchas gracias a todos por las aportaciones.
@pitpan
Probé lo del size, pero creo que me decia algo que no podia ponerse si se usaba la directiva .ROM. Lo intentaré de nuevo.

Es que el asMSX, por lo menos hasta donde yo se, no tiene un soporte nativo de ROMs de tamaño 48KB. Si no llegas a rellenarlo todo de datos, creo que tienes que hacerlo a pelo y poner al final de tu código un byte suelto, antes de las variables de RAM. El típico...

.org $bfff
db $0

para que te ensamble el ROM al tamaño con tus 3 páginas.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: SapphiRe_MSX en 28 de Junio de 2010, 04:08:09 pm
Yo lo que hago es pasar directamente de la directiva .ROM y ensamblar tal cual. Posteriormente le añado un bloque de $FF (no de $00 como hace el asMSX) y recorto al tamaño deseado. Todo ello realizado cómodamente desde un batch...

...algunod e vosotros puede decirme un "Sí tu codigo de inicialización es correcto" o un "toca aquí y allí para que lo sea"...que me teneis en ascuas y yo toy inseguro de si está bien. ;)

Hasta que no termine con toda la vorágine de corrección de trabajos no tengo ni un minuto libre... sorry :-\


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: aorante en 28 de Junio de 2010, 07:16:17 pm
Puedes utilizar una aplicación que se llama FillFile.exe (MS-DOS), que acompaña el tutorial de Nerlaska para crear ROMs en SDCC ("MSX-ROMS de 32Kb con SDCC"). http://www.nerlaska.com/msx/

ejemplo de uso:
Código:
fillfile prueba.rom 32768

Lo que no se ahora es si utiliza FFh o 0h  ???

Supongo que habrá otras aplicaciones, pero esta es la única que conozco.
También puedo adaptar la aplicación que ya conoces (ROM tools), para que trabaje con ROMs de 48ks.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: kabish en 29 de Junio de 2010, 11:04:12 am
Para rellenar yo hago esto ..

Código:
DataPage0End: equ $
ds 0x4000h-$,0xffh

El label 'DataPage0End' me sirve para saber los datos utiles que tengo en la pagina 0, mientras que con la segunda linea relleno hasta el final de la pagina con 0xffh.

Lamento no poder ayudarte mas con este tema, pero yo no tengo codigo en la pagina 0 y solo puedo comentarte algo sobre la teoria, que no es mucha en mi caso tampoco. :P

Un saludo.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: j4mk3 en 29 de Junio de 2010, 12:52:01 pm
Hmm hmmm el relleno es la clave...mmm
Me gusta el modelo del "viejo"...a rellenar de ceros.

@Sapphire
No hay prisa, ya me espero.
El que tiene prisa es el Maki que me da por culo cada vez que me ve o me escribe "el juego que que que pa abril,no?" ;)

Doy un dato más que me da que pensar que algo no hago bien.
Ayer por la tarde pusimos la ROM (de 40ks) en el Pazos MegaFlash pinchao en un F700S de Sony....y que si quieres arroz catalina...se fue al Basic :(
Sudó de la ROM tanto si lo ponias en el Slot1 como en el 2 de Cartucho.  :'(


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: SapphiRe_MSX en 29 de Junio de 2010, 01:14:53 pm
Citar
Ayer por la tarde pusimos la ROM (de 40ks) en el Pazos MegaFlash pinchao en un F700S de Sony....y que si quieres arroz catalina...se fue al Basic :(

¿Pero cuál? ¿MegaFlash SCC? ¿MegaFlash de 1024? ¿O el MegaFlash nuevo con la FPGA? Si es el primero es normal, porque no soporta las ROMS de 48K. Los otros dos sí.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: aorante en 29 de Junio de 2010, 01:20:43 pm
En el megaflashROM SCC+ solo acepta los ficheros con los bytes exactos.


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: j4mk3 en 29 de Junio de 2010, 01:42:44 pm
Pues va a ser eso...lo probamos con el clasico de 1024.
Cachis.  8)

Hoy mientras me okupan el comedor con el "putofurgol de los coone", haré las pruebas pertinentes.  8)


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: SapphiRe_MSX en 29 de Junio de 2010, 03:56:46 pm
Pues va a ser eso...lo probamos con el clasico de 1024.
Cachis.  8)

En ese debería ir, por supuesto... Me ofrezco a hacer de betatester si me mandas la rom :P


Título: Re: Hans' Adventure ... 48ks ROM
Publicado por: j4mk3 en 30 de Junio de 2010, 09:27:55 am
Novedades !

- He conseguido que sean ya los 48ks
- Funciona en el Meisei :) (cosa que me ha hecho ver un error en la rutina de rotación de sprites. Imanok, estoy en ello ;) )

Para conseguirlo he tenido que quitar las directivas .ROM, meterle un .SIZE 48, ponerle unos ceros al principio de la PAGE 0 y hacer en la PAGE 1 la cabecera ROM (41,42,etiqueta,0,0,0,0,0,0) a manita.

Gracias a todos :)
Si hay algún consejo más que darme o algo que tenga que tener en cuenta, tell me please.