› Foros › Retro y descatalogado › Consolas clásicas
aranya escribió:Hola, me ha gustado mucho la pregunta, porque yo también me preguntaba lo mismo. En mi caso sobre la Master System, que es mi consola favorita.
Me imagino que programar en ensamblador será solo una parte, porque los gráficos y el sonido se harán de otro modo no?.
Otra pregunta, si hoy en día alguien quisiera programar un juego completo para la master, que necesitaría??.
Muchas gracias.
kusfo79 escribió:aranya escribió:Hola, me ha gustado mucho la pregunta, porque yo también me preguntaba lo mismo. En mi caso sobre la Master System, que es mi consola favorita.
Me imagino que programar en ensamblador será solo una parte, porque los gráficos y el sonido se harán de otro modo no?.
Otra pregunta, si hoy en día alguien quisiera programar un juego completo para la master, que necesitaría??.
Muchas gracias.
Tienes suerte, este enero han sacado esto:
http://www.smspower.org/forums/15228-DevkitSMSDevelopYourHomebrewInC
Con lo que se puede programar en C para master
Edito: Los gráficos se hacen con otro programa, y se exportan a formato binario para ser incluidos en el juego.
Red Ninja Wonder escribió:pero joder, si me está costando pillar la lógica y programar en C, en ensamblador supongo que salgo corriendo
Señor Ventura escribió:Yo empezaría por ensamblador, directamente. Así luego es mas fácil lanzarse con el C, a parte de que se comenta mucho que luego cuesta el doble lazarse a por el ASM cuando has establecido tus bases con un lenguaje de alto nivel.
Baek escribió:Red Ninja Wonder escribió:pero joder, si me está costando pillar la lógica y programar en C, en ensamblador supongo que salgo corriendo
Y sin mirar atrás.
Yo aprendí de niño a programar en C y desde entonces le dediqué infinidad de horas, al igual que a otros como java o el mismo C++, y sin embargo el ensamblador no me gusta, no por que no lo entienda, y de hecho, si controlas de como funcionan las CPU ves que tiene toda la lógica que sea como es, pero no me gusta, limité su uso a trabajos o prácticas obligatorias que tuve que hacer en su momento y ahí quedó, es muy posible que lo retome en algún momento para hacer algo para AES, pero todavía tengo que pensarlo.
Si te interesa el tema te recomiendo que vayas paso a paso, no es especialmente necesario que domines C o cualquier otro (aunque sí recomendable), ya que son conceptos muy diferentes, pero sí que te vendría muy bien estudiar la arquitectura de una CPU para entender como funciona y por qué el código en ensamblador funciona como funciona, el Z80 que lleva precisamente la MS es una muy buena opción para aprender ya que está documentadísimo, otra opción típica es el 68k, que lo lleva la MD entre otros muchos sistemas.
Baek escribió:Sí, empecé con 6-7 años y mi primer título oficial de programador lo conseguí con 13 mientras estaba en la ESO y sin hacer nada por que ya dominaba el lenguaje, antes no dejaban matricularse ya que era un título enfocado a universitarios
Pero esa y otras muchas cosas quedan bien para reírte contándolo de cañas con los colegas, en la vida real lo que importa es lo que sabes en el presente, por lo que si te pones ahora a programar, no mires atrás y dale duro pensando en el futuro, fácil no es, eso sí que tenlo claro, pero si de verdad te gusta, lo pasarás bien.
Por lo que comentas que buscas, aléjate del ensamblador, no te hace falta para nada, termina lo que quieras hacer y una vez que lo hayas conseguido y te veas con tiempo libre, ya saltarás a otras cosas.
El funcionamiento de una CPU no es algo que se aprenda en una ni en dos tardes, es algo bastante complejo y que hay que ir asimilando paso a paso, pero para programar en alto nivel no necesitas ese tipo de conocimientos.
Señor Ventura escribió:Esta es una buena oportunidad para que los que controlais del tema recomendeis la lectura de algún libro, algo de documentación, etc.
Ya que hablamos de la arquitectura de una cpu, algo relativo a los z80, 68000, o 6502/65c816, estaría de lujo, ya que además son lo que nos interesa por aquí.
Baek escribió:Yo al contrario que la mayoría de compañeros, defiendo fuertemente el aprendizaje autodidacta, pero en este caso, sin apoyos externos y una guía a seguir, es un objetivo complicado.
Red Ninja Wonder escribió:de hecho yo haré el módulo de desarrollo web o similar porque necesito titulación;.
Baek escribió:Red Ninja Wonder escribió:de hecho yo haré el módulo de desarrollo web o similar porque necesito titulación;.
Como recomendación personal, y me jode darla por que soy muy de C y C++, si te vas enfocar a la programación online y web, empieza a darle con ganas a Java y Java RMI.
No sé si te lo pedirán en el CS, imagino que sí, pero desde luego seguro que te lo exigirán en muchas empresas cuando busques trabajo de eso.
Señor Ventura escribió:Esta es una buena oportunidad para que los que controlais del tema recomendeis la lectura de algún libro, algo de documentación, etc.
Ya que hablamos de la arquitectura de una cpu, algo relativo a los z80, 68000, o 6502/65c816, estaría de lujo, ya que además son lo que nos interesa por aquí.
Red Ninja Wonder escribió:Señor Ventura escribió:Yo empezaría por ensamblador, directamente. Así luego es mas fácil lanzarse con el C, a parte de que se comenta mucho que luego cuesta el doble lazarse a por el ASM cuando has establecido tus bases con un lenguaje de alto nivel.
Con lo que me está costando aprender C (o mejor dicho, aplicar la Lógica que voy aprendiendo en C), y meterme directamente a ensamblador? No, gracias
Lo haría como hobby en un futuro lejano en el que domine bien la programación. Yo ahora quiero hacer desarrollo webBaek escribió:Red Ninja Wonder escribió:pero joder, si me está costando pillar la lógica y programar en C, en ensamblador supongo que salgo corriendo
Y sin mirar atrás.
Yo aprendí de niño a programar en C y desde entonces le dediqué infinidad de horas, al igual que a otros como java o el mismo C++, y sin embargo el ensamblador no me gusta, no por que no lo entienda, y de hecho, si controlas de como funcionan las CPU ves que tiene toda la lógica que sea como es, pero no me gusta, limité su uso a trabajos o prácticas obligatorias que tuve que hacer en su momento y ahí quedó, es muy posible que lo retome en algún momento para hacer algo para AES, pero todavía tengo que pensarlo.
Si te interesa el tema te recomiendo que vayas paso a paso, no es especialmente necesario que domines C o cualquier otro (aunque sí recomendable), ya que son conceptos muy diferentes, pero sí que te vendría muy bien estudiar la arquitectura de una CPU para entender como funciona y por qué el código en ensamblador funciona como funciona, el Z80 que lleva precisamente la MS es una muy buena opción para aprender ya que está documentadísimo, otra opción típica es el 68k, que lo lleva la MD entre otros muchos sistemas.
¿Aprendiste de niño? Joder, qué complejo me entra
Lo de aprender la arquitectura de la CPU supongo que algún día lo aprenderé porque la informática me gusta mucho, y me vendrá muy bien seguro en cualquier Lenguaje de Programación... pero yo voy con mucha precaución, que además, como dije en el hilo que abrí en Misce, soy de Letras y esto me cuesta!
Paspallas escribió:kusfo79 escribió:aranya escribió:Hola, me ha gustado mucho la pregunta, porque yo también me preguntaba lo mismo. En mi caso sobre la Master System, que es mi consola favorita.
Me imagino que programar en ensamblador será solo una parte, porque los gráficos y el sonido se harán de otro modo no?.
Otra pregunta, si hoy en día alguien quisiera programar un juego completo para la master, que necesitaría??.
Muchas gracias.
Tienes suerte, este enero han sacado esto:
http://www.smspower.org/forums/15228-DevkitSMSDevelopYourHomebrewInC
Con lo que se puede programar en C para master
Edito: Los gráficos se hacen con otro programa, y se exportan a formato binario para ser incluidos en el juego.
¿Han conseguido soporte para bank switching en SDCC o sigues limitado a roms de 32KB?
Paspallas escribió:Señor Ventura escribió:Esta es una buena oportunidad para que los que controlais del tema recomendeis la lectura de algún libro, algo de documentación, etc.
Ya que hablamos de la arquitectura de una cpu, algo relativo a los z80, 68000, o 6502/65c816, estaría de lujo, ya que además son lo que nos interesa por aquí.
Uno de los mejores libros que puedes leer es "Computer Organization and Design" de Paterson y Henessy.
En Español está "Conceptos básicos de arquitectura y sistemas operativos - curso de ordenadores" de Gregorio Fernández.
Ninguno de ellos te van a hablar de CPUs antiguas, pero son muy buenos para aprender. El segundo es el libro de cabecera de varias asignaturas en ingeniería de Teleco.
Sobre el M68000 hay gran cantidad de documentación pero mi recomendación es que el que quiera aprender primero lo haga estudiando una arquitectura moderna (el primer libro que cito trata la arquitectura MIPS, el segundo desarrolla una serie de arquitecturas ficticias empezando por una CPU extremadamente simple, para la cual existe incluso una implementación en VHDL por si se quiere trastear a nivel de electrónica digital).
zarkon escribió:Programar en ensamblador es sencillo, mucho más sencillo que aprender C.
Lo único que hay que perder un poco de tiempo en conocer la arquitectura del sistema (el mismo
tiempo que perderás intentando solucionar errores de apuntadores e indirecciones en C jaja)
Todos los juegos de 8-16 bits se programaban en ensamblador y ya se ve que los tiempos de desarrollo no eran demasiado largos, los juegos no tenían demasiados bugs y la cantidad de juegos es increíble.
Eso sí, programar en ensamblador para máquinas de 32bits ya es complicadísimo y en ese caso mucho mejor el C porque ya es muy difícil tener en mente todo lo que está en memoria y la cantidad de librerías que existen en C para 3D y sonido es bestial.
En ensamblador también existen librerías pero ya digo que es para máquinas donde puedas tener más o menos mapeada toda la memoria en un cuaderno de cuadros.
gadesx escribió:Lo suyo seria hacerse una especie de editor para el genero de juego que quieras en concreto,
como los editores de sonic, del mario como el lunar, megaman, etc
icecaap escribió:Buena pregunta y además me la he hecho muchas veces.
Para estar seguros de verdad deberíamos preguntar a algún programador japonés de la época ¿Alguien se anima a mandar un email a Yūji Naka o a Shigeru Miyamoto?
cupra4t escribió:C o derivados me parecen para nenas .
Pek escribió:cupra4t escribió:C o derivados me parecen para nenas .
Creo que está claro para todo el mundo que programar en C, java, c# y esas cosas modernas es para maricones y demás marujas de ofimática.
Un verdadero hombre se forja a si mismo con experiencias vitales, como desayunar a las cuatro de la tarde un paquete de bollicaos con un par de birras (para regular el pH y asi paliar un poco el resacón), mientras, con cara de no dar crédito a lo que ve, intenta descifrar un taco de paginas en asm, sin un cochino comentario y hecha por el mismo unos años atrás xD
Evidentemente, no conseguí nada, pero hay que ser todo un macho para intentarlo en esas condiciones xD
christian14 escribió:La de pseudo-programadores de los de "yo se programar en Java" que nos quitaríamos de enmedio...)
Baek escribió:christian14 escribió:La de pseudo-programadores de los de "yo se programar en Java" que nos quitaríamos de enmedio...)
La culpa de eso la tienen los empresaurios ignorantes que piden programadores de Java, así luego vemos como grandes empresas de nuestro país funcionan internamente con programas pésimos, pero eso sí, se pueden ejecutar en cualquier equipo, que es lo que les importa, ya que así se evitan contratar programadores si cambian hardware. En España o pone en el cirrículum bien en grande que dominas Java o te miran mal.
Por cierto, habría que dejar claro que en ASM también se puede hacer código muy ineficiente, depende totalmente del programador, entre hacer un programa genérico y otro totalmente optimizado hacia el resultado que quieres obtener puede haber más de un 100% de aumento de ciclos. Por poner un ejemplo simple, si antes de decidir un salto hay una comparación y sabes de antemano que el 90% de las veces vas a recibir un resultado concreto, lo eficiente es asumir que ese resultado se recibe siempre e ir adelantando instrucciones por que se pierde menos deshaciendo en caso de que aparezca un resultado del otro 10%, ese tipo de cosas mucha gente no las valora, y al final aparecen "programadores" de ASM con códigos ineficientes que rendirían mejor en C.
Para CPUs modernas, aparte de ser un suplicio el programar en ASM, es innecesario ya que salvo con programas muy exigentes del tipo CAD, multimedia o juegos, el resto se ejecutan sobradamente, antes había que buscar el aprovechamiento máximo, ahora se tiran recursos para hacer cualquier tontería.
christian14 escribió:Poner en el mismo grupo a C y a Java debería estar penado con cárcel
Baek escribió:Por cierto, habría que dejar claro que en ASM también se puede hacer código muy ineficiente,...
theelf escribió:Baek escribió:Por cierto, habría que dejar claro que en ASM también se puede hacer código muy ineficiente,...
Tambien esta en el hardware, puedes escribir buen codigo asm, pero si desconoces propiedades de la arquitectura, o registros del CPU, de seguro el codigo sera ineficiente, o al menos, menos eficiente de el potencial total, aunque sea impoluto en cuanto a calidad
Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.
Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado . Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.
Por horas que le echo no será.
Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.
Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado . Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.
Por horas que le echo no será.
christian14 escribió:Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.
Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado . Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.
Por horas que le echo no será.
No es que vayas a ser un programador de segunda si solo dominas un lenguaje. Es que si solo "dominas" un lenguaje simplemente NO eres un programador. Si quieres aprender a programar, empieza por C para entender como funciona esto, toca un poco de ensamblador, C++ para introducirte en la orientación a objetos, y luego sigue adelante con los lenguajes de alto nivel. He leído que te interesa el desarrollo web, entonces, tras esos pasos que te he dicho, yo tiraría por Python, Ruby, o PHP si te gustan las emociones fuertes . Ahora mismo, el 99% de los sistemas web utilizan en su back end alguno de esos 3 lenguajes.
Huye de Java y no mires atrás. Consejo de programador.
Baek escribió:Ojo, yo te he dicho que le des caña a Java ya que al decir que vas a necesitar el CS asumo que lo quieres para trabajar, y en ese caso ten claro que vas a encontrar en España muchas más ofertas laborales con Java que con cualquier otro lenguaje. En la misma frase te he dicho que me jodía tener que recomendarlo
Red Ninja Wonder escribió:christian14 escribió:Red Ninja Wonder escribió:No me importa si solo llego a ser un programador de segunda por desenvolverme nada más en Java o el Lenguaje que me toque (aunque mi idea es aprender más de un Lenguaje), o si no sé assembler; yo solo sé que me encanta programar ahora mismo y que lo voy a seguir haciendo, y que quiero llegar a ser bueno en ello y, como digo, dominar más de un Lenguaje. Y si un día me meto con ensamblador o similares y veo que no soy capaz, por lo que sea, pues no tendré problema en admitir que hay programadores de más level que yo. Con ser bueno en lo poco o mucho que sepa hacer, hoy por hoy me conformo.
Y si ni siquiera llego a aprender a programar bien en un lenguaje de alto nivel de esos que decís que acomodan demasiado, pues oye, se ha intentado . Con aprender eso, a programar BIEN en un lenguaje como C++, o Java, por mierdero que digan que es, me conformo hoy por hoy.
Por horas que le echo no será.
No es que vayas a ser un programador de segunda si solo dominas un lenguaje. Es que si solo "dominas" un lenguaje simplemente NO eres un programador. Si quieres aprender a programar, empieza por C para entender como funciona esto, toca un poco de ensamblador, C++ para introducirte en la orientación a objetos, y luego sigue adelante con los lenguajes de alto nivel. He leído que te interesa el desarrollo web, entonces, tras esos pasos que te he dicho, yo tiraría por Python, Ruby, o PHP si te gustan las emociones fuertes . Ahora mismo, el 99% de los sistemas web utilizan en su back end alguno de esos 3 lenguajes.
Huye de Java y no mires atrás. Consejo de programador.
Gracias. Como cada programador, ingeniero, etc. me dice una cosa ( @Baek mismo me ha dicho que le de caña a Java), yo lo que ahora estoy haciendo es aprender bien la Lógica de programación y luego lo del Lenguaje ya vendrá. Eso es en lo que ha estado de acuerdo la mayoría que me han asesorado.
Gracias a ti también, @1985a