Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: fireforge en 26 de Noviembre de 2007, 07:26:25 pm



Título: Nuevo en el ausunto
Publicado por: fireforge en 26 de Noviembre de 2007, 07:26:25 pm
De tanto oir hablar de videojuegos msx a un "viejo" conocido me ha entrado el gusanillo a ver si puedo hacer alguna cosilla.
Que me recomendais para empezar a desarrollar? Yo vengo de programacion "intuitiva" como C y Visual Basic (y ahora le estoy dando al Java) asinque si me decis que tengo que empezar a hablarle a mi ordenador en 0 y 1 me vais a amargar la existencia.
Tambien me gustaria ver donde conseguir algunos manuales o algo asin. He visto por encima el tutorial de desarrollo para todos pero yo necesitaria un aprenda a programar videojuegos msx "for dummys"
Ya me comentareis algo... un pajarito me ha dicho que hay una ligera "peleilla" entre ensamblador y C... Si os digo la verdad y conociendo bastante el segundo me decanto por el 1º que tiene nombre de transformer ;)

SaludoTTTTTTTs

Fire


Título: Re: Nuevo en el ausunto
Publicado por: jltursan en 26 de Noviembre de 2007, 08:17:02 pm
Pues hombre, si ya eres programador, conoces C y te apetece experimentar con ensamblador como dices, ¡lo tienes a huevo!.
La programación del Z80 es muy sencilla, si no tienes ni idea te recomiendo leer alguna página como esta: Tutorial ensamblador Z80 para Spectrum (http://www.speccy.org/sromero/spectrum/prog/asm/z80asmtut/), que aunque es para otra máquina presenta conceptos muy similares, además te enlaza con tutoriales (en inglés) tan prácticos como este (http://www.geocities.com/SiliconValley/Peaks/3938/lesson1.htm).
Una vez que creas que entiendes el Z80, ya puedes probar a ensamblar algo, bien ajeno o bien que hayas hecho tu. Ensambladores los tienes a patadas, para no comerte mucho la cabeza puedes empezar con el asMSX (http://karoshi.msxgamesbox.com/index.php?topic=834.0), que ya te viene orientado al MSX y con sencillos ejemplos. La principal ventaja es que con el asMSX puedes generar archivos distribuibles ROM nativos del MSX y que podrás ejecutar con emuladores como el BlueMSX simplemente con un doble click. Para más detalles échale un vistazo rápido a la sintaxis del asMSX.
Yo te diría que empezaras con el clásico "Hola mundo", conseguir que funcione suele dar bastante confianza; así que una vez llegados al propio hardware de la máquina lo mejor es empezar por el VDP, en la Wikipedia tienes una lectura muy interesante aquí (http://en.wikipedia.org/wiki/Texas_Instruments_TMS9918). Los primeros experimentos gráficos te recomiendo que los hagas desde el BASIC, así te romperás menos la cabeza (Hint:VPOKE es tu amigo).
La BIOS (o la API ;)) para acceder al hardware la tienes detallada en el MSX Red Book, ese y otros documentos los puedes encontrar por ejemplo en esta página : JJC Software (http://www.dlcsistemas.com/msx/html/tech_docs.html). También es muy recomendable leerse los artículos del MSX Assembly page (http://map.tni.nl/), encontrarás información en cantidad.
Y ya sabes, ante cualquier duda pregunta; pero recuerda, antes de preguntar ¡RTFM! :)





Título: Re: Nuevo en el ausunto
Publicado por: Jon_Cortazar en 26 de Noviembre de 2007, 08:39:53 pm
Hombre, pero si es el fire! :D, bienvenido a estos foros del señor!, tenga usted a bien preguntar lo que quiera ;)

Además, queda pendiente esa sesión en persona para introducirte en los oscuros detalles del assembler!
(ahora es cuando viene el nerlaska y te intenta llevar a la secta del C)  ;D ;D ;D

Mi primera recomendacion: pillate un emulador y prueba juegos de MSX a manta! Ah, y de nuevo, bienvenido!


Título: Re: Nuevo en el ausunto
Publicado por: nerlaska en 27 de Noviembre de 2007, 05:52:56 am
MU HA HA HA HA ... el poder del C no tiene límites!! :)
Bueno, yo estoy especializado en la programación C para MSX, si necesitas saber o conocer algo pues comentamos. No problemo.
Esta claro que el Z80 esta chupao y que no tiene ningún problema .. salvo!! .. el de la comprensión y la comodidad de programación.
Donde una simple línea C te permite ver y hacer rapidamente: A = 5*(B+100) % 20 - C ...pues en Z80 y si encima hay castings pues igual te sale un churro.
Yo programo en C y Z80 (cuando digo Z80 me refiero al lenguaje ensamblador) y creo que la combinación es genial.
Pero no te pienso convencer de nada, estaría bien que te pasarás por la RU de Barna y te obsequiariamos entre todos con sabiduría a raudales :)

Sea como sea, bienvenido!


Título: Re: Nuevo en el ausunto
Publicado por: ARTRAG en 27 de Noviembre de 2007, 11:45:04 am
I do agree, C + ASM is the best solution for large projects.

The C is for the main, the data structures, the dynamic allocation of the RAM, the overall game logic.
The asm is for the VDP I/O, the control of the interrupts, some time critical tasks.

Actually you can start in C coding and debugging the function,
after the debug you can open the ASM generated by the compiler (the .LST file in Hithec C)
and start from that to code your ASM version (manual optimization sometimes can do miracles,
moreover in this way the parameter exchange is already solved by the compiler ;-)

One tricky more aspect is the mapper management.
Some cross-compilers (Hithec C) allows you to use up to 1Mbyte of ROM for storing your code and data.
The trick is that Hithec C supprots Z180 that includes a MMU, so compiling for that processor and changing
the functions used to access its MMU you can use almost any MSX ROM mapper.
Using "large" model the compiler implements long jumps across segments, the linker fits data and functions
in order to minimize the bank swap.
Naturally in ASM you have far more flexibility, but automated management of segments is nice plus.



Título: Re: Nuevo en el ausunto
Publicado por: fireforge en 27 de Noviembre de 2007, 03:30:22 pm
Que sepais que me dais mucho miedo pero a la vez mucha envidia  :D
Voy a hacer casin a Jon y de momento me voy a dedicar a jugar un poco, porque... (y esto me da mucha vergüenza) soy bastante novato con MSX. Asinque (siempre por favor) ya me estais diciendo emuladores buenos (de esos que se tragan todo) y donde encontrar buenas roms (aunque me da que en este foro voy a encontrar unas cuantas)

GRACIAXXXX y SALU2222222

Fire

Pd: Estoy viendo codigo de ensamblador y me duele la cabeza solo de pensarlo. Creo que me voy a decantar por el lado oscuro de C (eso de poner IF (A<(B+5)) y entenderlo me gusta)


Título: Re: Nuevo en el ausunto
Publicado por: SapphiRe_MSX en 27 de Noviembre de 2007, 03:47:30 pm
¡Bienvenido!

Voy a hacer casin a Jon y de momento me voy a dedicar a jugar un poco, porque... (y esto me da mucha vergüenza) soy bastante novato con MSX. Asinque (siempre por favor) ya me estais diciendo emuladores buenos (de esos que se tragan todo)

Te aconsejo el BlueMSX y el OpenMSX.

Citar
Estoy viendo codigo de ensamblador y me duele la cabeza solo de pensarlo. Creo que me voy a decantar por el lado oscuro de C (eso de poner IF (A<(B+5)) y entenderlo me gusta)

No hay nada como un buen código en ensamblador bien comentado para saber lo que es programar ;D ;D ;D

Saludos
--
Sph.


Título: Re: Nuevo en el ausunto
Publicado por: nerlaska en 27 de Noviembre de 2007, 04:03:04 pm
Ala Sapphi .. jajajajaaj .. el ensamblador es oscuridad :) .. tiene su morbo y tal pero ... es oscuridad :)
Ya hablaremos en la Ru .. voy a tener que hacer flexiones y abdominales y entrenar al saco .. seguro que acabáis linchandome jajajaj


Título: Re: Nuevo en el ausunto
Publicado por: SapphiRe_MSX en 27 de Noviembre de 2007, 04:13:07 pm
Ala Sapphi .. jajajajaaj .. el ensamblador es oscuridad :) .. tiene su morbo y tal pero ... es oscuridad :)

Ya sabes que yo el C lo odio visceralmente, así que para mí en MSX no hay nada como el ensamblador. Ojalá pudiera programar en Haskell, pero no creo que el pobre z80 pueda con tanto... ;D ;D ;D


Título: Re: Nuevo en el ausunto
Publicado por: pitpan en 28 de Noviembre de 2007, 08:33:59 am
Pues prueba a hacer un intérprete de Haskell para MSX. Bonito proyecto de desarrollo...

En cuanto al miedo que produce el ensamblador, creo que no es para tanto. Es menos legible que el C, estoy de acuerdo. Pero es mucho más legible que otros lenguajes habituales de desarrollo, como el propio BrainFuck. Por cierto, que existe un compilador de BrainFuck para MSX que genera un código bastante optimizado y ejecutables para MSX-DOS - CP/M.

Para mi, el C es bastante más legible que el BASIC. Y lo que es peor: aunque no lo haya usado nunca para MSX, me encanta el ensamblador, que es un lenguaje fuertemente tipado y permite hacer una programación estructurada y elegante (más que el C).


Título: Re: Nuevo en el ausunto
Publicado por: utopian en 28 de Noviembre de 2007, 08:35:53 am
Para reducir la "barrera de entrada", el C es buena idea, porque puedes ver resultados pronto sin tener que hacer maravillas para conseguir una operación matemática más o menos compleja. Luego es un buen momento para aprender ASM, y así ir optimizando... hasta que quieres optimizarlo todo y entonces te puedes pasar al ASM puro (yo aún no he llegado a esa fase ;)).


Título: Re: Nuevo en el ausunto
Publicado por: nerlaska en 29 de Noviembre de 2007, 10:04:42 am
lo de la elegancia del C .. depende de quien programe .. el C puede ser muy elegante o lo más cochino.


Título: Re: Nuevo en el ausunto
Publicado por: pitpan en 29 de Noviembre de 2007, 01:16:22 pm
A ver cómo consigues hacer un NOP en C sin incluir ensamblador embebido :)

Todo el mundo sabe que no se puede programar nada si no tienes una instrucción tan potente como NOP a tu disposición... ;D


Título: Re: Nuevo en el ausunto
Publicado por: kabish en 29 de Noviembre de 2007, 01:36:07 pm
A ver cómo consigues hacer un NOP en C sin incluir ensamblador embebido :)

Todo el mundo sabe que no se puede programar nada si no tienes una instrucción tan potente como NOP a tu disposición... ;D

.. pues el basic no la tiene. ;)


Título: Re: Nuevo en el ausunto
Publicado por: SapphiRe_MSX en 29 de Noviembre de 2007, 01:51:30 pm
A ver cómo consigues hacer un NOP en C sin incluir ensamblador embebido :)

Todo el mundo sabe que no se puede programar nada si no tienes una instrucción tan potente como NOP a tu disposición... ;D

.. pues el basic no la tiene. ;)

REM... que no hace nada, pero ocupa memoria y tiempo del intérprete de BASIC, igualito que NOP ;D


Título: Re: Nuevo en el ausunto
Publicado por: utopian en 29 de Noviembre de 2007, 04:58:34 pm
A ver cómo consigues hacer un NOP en C sin incluir ensamblador embebido :)

Todo el mundo sabe que no se puede programar nada si no tienes una instrucción tan potente como NOP a tu disposición... ;D

.. pues el basic no la tiene. ;)

REM... que no hace nada, pero ocupa memoria y tiempo del intérprete de BASIC, igualito que NOP ;D


for(int i=0;i<1;i++) {}

 ;D


Título: Re: Nuevo en el ausunto
Publicado por: nerlaska en 29 de Noviembre de 2007, 07:01:23 pm
_asm NOP _endasm;