Tutorial muy básico de C para Master System

1, 2, 3, 4, 513
Voy a ponerme manos a la obra con un pequeño tutorial sobre como empezar a programar en C para la Master System.
Para que todos podamos conservar mejor el tutorial, voy a realizarlo en formato Wiki, que va a ser más cómodo para todos.

Manos a la obra!
Aunque no tenga tiempo para ponerme a fondo con tu post me gusta la idea y el aprender, animo y no lo dejes parado
Yo tampoco creo que me ponga con ello pero te animo a que completes el tutorial [beer]
Mucho ánimo con el tuto. Habrá que echarle un ojo. ;)
Animo con el tuto.

No soy programador y los pocos conocimientos que tengo son de a nivel teorico hace muchos años....si lo explicas para tontos quiza me anime XD
y empiezas hoy? bfff ya tengo ganas de verlo terminado :D
yo de programacion no tengo ni idea, pero con varios tutoriales y muchas ganas hice un pequeño 'homebrew' para Wii escrito tambien en C. era lo mas simple del mundo, una imagen estatica, un sonido de fondo y la posibilidad de apagar o encender el rumble con el boton A

será muy interesante ver como se desarrolla este hilo, animo y gracias! :)
Hola kusfo79, gracias por el curro

Justo el otro dia estaba programando una especie de "240p test" para master GG, system y sg-1000 para probar un poco mas el emulador de PSP q estoy programando

Me acabo de bajar el devkit, y compile una test muy basica, solo para probar la sdk, aunque mi problema es que mi conocimiento de C es un tanto ... malillo [snif]


Bueno, al ajo, te queria preguntar una cosa, veo que al compilar, agrega la libreria completa a la rom, o sea, que compiles lo que compiles, aunque sea un hello world, la rom ocupa 32kb minimos, lo q me parece un tanto exagerado para una rom de SMS no?

O estoy haciendo algo mal?

Claro, se podria compilar la libreria quitando funciones, aunque lo veo ya un poco extremo jeje



Nada, suerte con el resto del tutorial, y me alegro por tu aporte
Hola @theelf !

Creo que el hecho que ocupe 32kb es por que hace un padding de la ROM hacia los 32kb (que era el tamaño mínimo que se vio en los juegos de Master System). Eso si, como has dicho, toda la librería va incluida cuando compilas, y ocupa unos buenos 10 kB si no recuerdo mal.

Mas tarde subo la lección 1 del tutorial y de paso pruebo cuanto ocupa la ROM, @theelf !
kusfo79 escribió:Hola @theelf !

Creo que el hecho que ocupe 32kb es por que hace un padding de la ROM hacia los 32kb (que era el tamaño mínimo que se vio en los juegos de Master System). Eso si, como has dicho, toda la librería va incluida cuando compilas, y ocupa unos buenos 10 kB si no recuerdo mal.

Mas tarde subo la lección 1 del tutorial y de paso pruebo cuanto ocupa la ROM, @theelf !



Sobre el tamanio minimo, ahi tenes razon, aunque cuando estuve escribiendo el codigo para cargar roms en el emu de psp, comenze en 1kb, ya que me encontre algunas roms de sg que ocupaban 4kb creo, aunque claro, SMS no es la SG


Mi idea era hacer una suite tipo 240p, pero para probar algunos efectos graficos concretos, ya que tengo algunos fallos en la emulacion que quiero arreglar, y es un coniaso estar probando las roms oficiales para ver donde fallan, veo mas logico recrear esos efectos en una rom casera, y probarlos unos a unos de manera facil y encontrar los fallos en la emulacion


Lo q pasa q como dije, mi dominio de c es malillo, pero ahora q estas haciendo el tutorial, me lo seguire y aprendere un poco


Bueno, ya lo vamos viendo, gracias por el esfuerzo

Saludos
Ya he puesto la muy inicial "Lección 1"!
Creo que sería posible usar Qt Creator para eso, es una IDE de C y C++ donde puedes configurar todo el toolchain. También están otras opciones como el IDE CodeBlocks o editores de texto muy configurables como Visual Studio Code, Sublime Text, etc.
Sí, yo de hecho lo tengo configurado automaticamente con mi IDE, el CLion, pero no quería liar demasiado para la gente que esté empezando. Y hacer un Bat no es una mala opción para empezar.
@kusfo79 enhorabuena y ánimos por el curro que te estás metiendo. Al final me acabarás enganchando [+risas]
@kusfo79, cómo tienes configurado el asunto en Clion? Lo estoy intentando con Qt Creator pero no me estoy aclarando muy bien, me mete CMake y todo se me va al garete

Edito: Usando el compile.bat como herramienta externa y toqueteando rutas y tal es posible tener el código en Qt Creator, simplemente abriendo el .c y lanzando el proceso como herramienta externa. Lo bueno es que aún sin fichero de proyecto Qt Creator es capaz de navegar perfectamente por los ficheros del mismo, así como ir a la definición de tal función etc [360º]
Con lo bien q se programa en el notepad... !
Adiós EOL, una pena en lo que os estáis convirtiendo.

Saludos.
theelf escribió:Con lo bien q se programa en el notepad... !


Hombre pero no tienes renombrar tal variable, ir a tal función, etc etc. Pero vamos, la configuración que he montado se parece mucho al notepad++ ;-)
Enhorabuena @kusfo79 , iniciativas así son para aplaudir. Con gente como tú la MS siempre tendrá vida.
Siempre he dicho que era una lástima que la MS no tuviese una comunidad detrás programando como la MD, ya que desde mi punto de vista tiene mucho potencial y pocos juegos.

Una pregunta, imagino que para hacer un juego, además de la parte de programación, estará la parte gráfica y sonora no?, es decir, que habrá que saber "dibujar" y componer, no?.

Un saludo, y gracias por el aporte.
aranya escribió:Enhorabuena @kusfo79 , iniciativas así son para aplaudir. Con gente como tú la MS siempre tendrá vida.
Siempre he dicho que era una lástima que la MS no tuviese una comunidad detrás programando como la MD, ya que desde mi punto de vista tiene mucho potencial y pocos juegos.

Una pregunta, imagino que para hacer un juego, además de la parte de programación, estará la parte gráfica y sonora no?, es decir, que habrá que saber "dibujar" y componer, no?.

Un saludo, y gracias por el aporte.


Desde luego, necesitas gráficos, músicas y efectos de sonido. Por eso hay muchos juegos con una pinta horrible en la escena homebrew, porque todo lo hace el programador y normalmente no suele dibujar bien
@Gammenon , gracias por la aclaración.
Esta claro pues que lo mejor es el trabajo en equipo. Dominar todo tiene q ser complicado.
Buena iniciativa @kusfo79 !!!

Yo nunca he hecho un juego de ms desde cero, solo algún código de prueba, pero desgraciadamente conozco poco o nada del DevKitSMS que comentas. A ver si me animo y hago algún proyecto desde cero con tu tuto [oki]

Lo poco que hecho son pequeños hackeos, hago el código puntual en asm y lo incrusto en la rom en un área "vacía". Si quieres aportar algo sobre esto intento hacer algún ejemplo, pero no tiene mucho misterio.
Hola chicos!!

A ver si hoy cuelgo la siguiente lección, que este finde la he estado preparando, peor con fin de año y todo no me he podido poner mucho!

Sobre el tema del CLION, yo lo que hago es lanzar el compile.bat directamente en el Run, pero si lo configurase para usar make y sdcc, debería funcionar.

Y @icecaap , podríamos poner una parte de assembler, si quieres, estaría bien!
kusfo79 escribió:Hola chicos!!

A ver si hoy cuelgo la siguiente lección, que este finde la he estado preparando, peor con fin de año y todo no me he podido poner mucho!

Sobre el tema del CLION, yo lo que hago es lanzar el compile.bat directamente en el Run, pero si lo configurase para usar make y sdcc, debería funcionar.

Y @icecaap , podríamos poner una parte de assembler, si quieres, estaría bien!


Yo también he hecho lo mismo con Qt Creator, claro que si le añado un fichero nuevo tengo que modificar el .bat a mano [+risas]

Crees que el tutorial en un futuro llegará a explicar el scroll multidireccional?
Of course! aunque eso ya tendrá un poco más de migaja.
@kusfo79

A ver si ya has pasado por esto, quiero compilar alguno de los ejemplos q vi por la red, pero me doy contra la pared con un script de python assets2banks

Siempre me devuelve este error al intentar compilar un ejemplo llamado split que vi en el foro de smspower

Build assets
*** sverx's assets2banks converter ***
Info: bank1 size set at 12000 bytes
Traceback (most recent call last):
  File "assets2banks.py", line 192, in <module>
    ar = array.array('B')
TypeError: must be char, not unicode



Me doy cuenta lo q intenta decir el error, pero antes de ponerme a resolver el porque, pregunto.... q no ando con mucho tiempo




Otra preguntita, el SDK en esos 10+ kb q mete a la rom, por casualidad mete un tileset de fuente? o hay q cargarlo a mano?


Gracias tio
Buenas @theelf!

Yo aún no he usado el assets2banks, ya que cuando sverx sacó el sdk, solo habái el folder2c, y pensaba empezar a usar el assets2bank mientras iba desarrollando este tutorial.

De todas formas, estas usando la versión compilada del assets2bank? si en cambio estas usando el script directamente, en que S.O lo estas haciendo? suena a mala codificaciñon del fichero .py
kusfo79 escribió:Buenas @theelf!

Yo aún no he usado el assets2banks, ya que cuando sverx sacó el sdk, solo habái el folder2c, y pensaba empezar a usar el assets2bank mientras iba desarrollando este tutorial.

De todas formas, estas usando la versión compilada del assets2bank? si en cambio estas usando el script directamente, en que S.O lo estas haciendo? suena a mala codificaciñon del fichero .py



La version compilada no funciona en XP. El creador la deve haber compilado con python 3.5 o 3.6 q sin modificar son solo vista+

Pero ya resolvi el problema, necesita de una version de python mas nueva, en mi windows tenia instaladas 2.7 y 3.2

Cambie algunos dll de la 3.2 por los de 3.6, y ahora todo bien


El autor deveria compilar con un python 3.4 o inferior para dar compatibilidad con XP e inferiores



En todo caso, ya pude compilar el ejemplo, y estuve echando un vistazo a como trabajar con graficos, lo que aun no encuentro es el tema de las fuentes


Gracias por responder, aunque ahora no tengo tiempo ya que estoy con mucho trabajo, quiero ponerme a hacer algunas cosas para master system, algunos ejemplos y eso para aprender un poco de esta plataforma
Perdon!, que no te había contestado a lo de las fuentes. No, no te sube ninguna fuente en la ROM, yo usaba una que tengo por ahi de Colecovision, que esta guai, y para debugar me gusta.

Sobre lo de XP y tal, yo hace milenios que no lo uso, pero recuerdo que tenía muchos problemas relacionados con Unicode, y esto debe dar mucho por culo con las versiones de Python modernas...
kusfo79 escribió:Perdon!, que no te había contestado a lo de las fuentes. No, no te sube ninguna fuente en la ROM, yo usaba una que tengo por ahi de Colecovision, que esta guai, y para debugar me gusta.

Sobre lo de XP y tal, yo hace milenios que no lo uso, pero recuerdo que tenía muchos problemas relacionados con Unicode, y esto debe dar mucho por culo con las versiones de Python modernas...


Una pena, teniendo en cuenta q el sdk se come mas de 10kb pense que la fuente estaria incluida :p

Sobre la fuente, buscare la de coleco, los tiles son estandar en cuanto a posicion? me refiero si el sdk tiene algun tipo de print, o hay que programarlo uno mismo?


XP tuvo algunos problemas de unicode en su version original, pero en la SP1 y superiores todo esta corregido. Lo mismo con windows 2000 o NT4

El problema de python es mas del tipo comercial, decidieron dejar de dar soporte a XP e inferiores, y usaron dos funciones de vista+ a proposito, nada mas. Ya hay versiones no oficiales q van bien en XP

Le dejare un mensaje en smspower al creador del sdk informandole un dia q pueda


Gracias
Estoy en el trabajo y no he podido comprobar, pero creo que la fuente era este archivo:

https://www.dropbox.com/s/hm2fb4bmdrbxa2v/ascii.chr?dl=0
kusfo79 escribió:Estoy en el trabajo y no he podido comprobar, pero creo que la fuente era este archivo:

https://www.dropbox.com/s/hm2fb4bmdrbxa2v/ascii.chr?dl=0


Gracias, la bajo y dejo para cuando me pueda poner nuevamente, que hoy aca en japon ya es tarde y me voy a dormir


Por cierto, compile assets para XP, dejo una copia por si a alguien le sirviera por un par de dias en mi servidor. Probe y en un principio va bien, o al menos, da mismo resultado que la del sdk oficial

http://www.akihabara-online.com/tmp/assets2banksXP.zip
Si me das permiso, lo subo al repositorio de sverx, te parece?
kusfo79 escribió:Si me das permiso, lo subo al repositorio de sverx, te parece?



Claro, si le viene bien a alguien, cojonudo. Pero subi esta segunda revision que hice, ya que la otra, me daba un error en windows 2000, esta va perfecta, tanto en 2000 como XP

http://www.akihabara-online.com/tmp/assets2banks_xp.zip

Hice unos pequenios cambios en el codigo del compilador de python, porque tiene un bug q aun no arreglaron
Le abriré una pull request a sverx, a ver que dice.

Por cierto, tengo justamente la tercera lección lista, y cuando me he puesto a probarla, en mi nuevo ordenador me está dando problemas el bmp2tile, no me pilla los formatos de exportación que no sean el fichero de texto plano, voy a ver si descubro qual es el problema....
Joder que envidia. Parece que habléis chino para mi. Encima sobre la MS que es la consola de mi vida.
Como me gustaría poder colaborar, y aunque nadie ha nacido sabiendo y está en mi mano exclusivamente, lo veo muy cuesta arriba sin tener noción alguna.
Si alguien quisiera aprender, los pasos cuales serian?
1- Lógica de programación.
2- Aprender C.
3- Entender como funciona la MS.
4- Tutorial de @kusfo79

?

Un saludo.
@aranya


si no sabes programar, sigue el tutorial paso a paso, crea alguna cosa basica, sientete contento, y una vez sientas q puedes "hacer mas".... prueba con otros tutoriales, tipo megadrive, y cuando puedas hacer algunas tonterias en megadrive y te sientas que "puedes hacer aun mas"...

Ahi si.. leete algunos tutos de logica de programacion


Si comienzas a saco con logica, en dos dias te aburriras tanto, q no querras hacer nada


kusfo79 escribió:Le abriré una pull request a sverx, a ver que dice.

Por cierto, tengo justamente la tercera lección lista, y cuando me he puesto a probarla, en mi nuevo ordenador me está dando problemas el bmp2tile, no me pilla los formatos de exportación que no sean el fichero de texto plano, voy a ver si descubro qual es el problema....


Estuve echandole un vistazo al programa, exporta en INC... pero claro, aun no me he puesto con ese tema, en realidad, antes de ponerme a investigar por mi cuenta mas, estaba pensando en seguir tu tutorial y robar tus conocimientos directamente

Eso si, en windows 2000, me dio por saco el bmp2tile, xq requiere las runtime 2013 del visual... ahhh... odio cuando requieren librerias inecesariamente... :-|
aranya escribió:Joder que envidia. Parece que habléis chino para mi. Encima sobre la MS que es la consola de mi vida.
Como me gustaría poder colaborar, y aunque nadie ha nacido sabiendo y está en mi mano exclusivamente, lo veo muy cuesta arriba sin tener noción alguna.
Si alguien quisiera aprender, los pasos cuales serian?
1- Lógica de programación.
2- Aprender C.
3- Entender como funciona la MS.
4- Tutorial de @kusfo79

?

Un saludo.


Quizás podrías empezar a aprender C, haciendo programillas de línea de comandos. Siempre y cuando quieras programar, no te tira más el tema gráfico o sonoro?
Gracias @theelf , es un buen sistema el de ir consiguiendo cosillas para no abandonar.

@Gammenon , la verdad que lo del sonido o los gráficos no me llama nada, además de que viendo como va el futuro laboral, creo que sería más importante ir sabiendo programar.

El otro día decían en El País, periódico de España por quien no sea de España, que el saber programar será el inglés del futuro.

Pero claro, luego está el tema de los cientos de lenguajes de programación.....

Un saludo.
aranya escribió:Gracias @theelf , es un buen sistema el de ir consiguiendo cosillas para no abandonar.

@Gammenon , la verdad que lo del sonido o los gráficos no me llama nada, además de que viendo como va el futuro laboral, creo que sería más importante ir sabiendo programar.

El otro día decían en El País, periódico de España por quien no sea de España, que el saber programar será el inglés del futuro.

Pero claro, luego está el tema de los cientos de lenguajes de programación.....

Un saludo.


Si quieres aprender a programar para el tema laboral yo te recomiendo que aprendas Java, o te apuntes a algún FP, cursos etc. Saber C no te hará daño pero quizás sea mejor optimizar tiempo y tirar por el camino de Java. Que por cierto puedes usarlo para Mega Drive, aunque supongo que con restricciones: http://www.mikekohn.net/micro/sega_genesis_java.php
@Gammenon , gracias por el consejo. Por lo que he podido leer, es de lo más recomendable sin duda.
@Gammenon @aranya para currar lo mejor es Python y C++. Hay por ahí encuestas y datos sobre los lenguajes más usados.
Manveru Ainu escribió:@Gammenon @aranya para currar lo mejor es Python y C++. Hay por ahí encuestas y datos sobre los lenguajes más usados.


Supongo que dependerá de la zona. En Mallorca por ejemplo sobre todo piden Java para pegarse con todo el entramado de turismeo que hay aquí. Yo estoy dándole a C++ pero es un caso rarísimo, no hay otro sitio igual en toda la isla. En Madrid, Barcelona y otras capitales no se qué pedirán, pero creo que Java es la apuesta más segura hoy por hoy de cara a conseguir un trabajo. Luego si es bueno o malo y que los de Python sean proyectos más interesantes o no no me meto [beer]
Llevo un tiempo leyendo y la verdad es que hay 3 o 4 lenguajes que salen en todos lados. Siempre te dicen que depende a lo que quieras enfocar, pero claro, si no tienes ni idea es complicado enfocar pero bueno.

De todas formas no deberíamos de seguir con el tema, por no ensuciar este hilo, que precisamente de este tipo no abundan en clásicas, y Kusfo se está pegando un buen curro.
Updateado con lección 2! ahora vemos un fondo!!
Después de exámenes me lo leo y si veo que entiendo algo pruebo suerte, pero imagino que no será un tutorial fácil para quien no haya programado nunca XD

Animo con el proyecto!
kusfo79 escribió:Updateado con lección 2! ahora vemos un fondo!!


Gracias por tu trabajo kusfo79! Por cierto, qué otros modos de resolución tiene la Master System? Se que tiene la compatible con la SG-1000 pero he leído por ahí otra resolución, la extendida o algo así. Sabes algo sobre este tema?
El fondo salio bien

Imagen


Intente avanzar un poco con el tema de sprites... esperare a tu tutorial [+risas]

Imagen


@kusfo79

Cuando puedas, seria util indicar en el tutorial, el maximo de tiles que se pueden usar, ya que un plano sin tiles repetidos se comeria la vram

Sobre la paleta, por lo que me fije, los colores serian algo asi

0, 85, 170, 255

Sabes que paleta usa bmp2tile? digo, puede ser 32, 117, 202, 255 por decir algo. Seria bueno saberlo exacto para poder trabajar mas comodamente en el editor grafico


Y como defines el color transparente? y el de fondo? disculpa te pregunte, se que puedo googlear, pero bueno, para darle algo de vida al hilo jaja


@Gammenon

Tenes 256x192, 256x224 y 256x240
theelf escribió:El fondo salio bien

Imagen


Intente avanzar un poco con el tema de sprites... esperare a tu tutorial [+risas]

Imagen


@kusfo79

Cuando puedas, seria util indicar en el tutorial, el maximo de tiles que se pueden usar, ya que un plano sin tiles repetidos se comeria la vram

Sobre la paleta, por lo que me fije, los colores serian algo asi

0, 85, 170, 255

Sabes que paleta usa bmp2tile? digo, puede ser 32, 117, 202, 255 por decir algo. Seria bueno saberlo exacto para poder trabajar mas comodamente en el editor grafico


Y como defines el color transparente? y el de fondo? disculpa te pregunte, se que puedo googlear, pero bueno, para darle algo de vida al hilo jaja


@Gammenon

Tenes 256x192, 256x224 y 256x240


Yo también tengo ganas de dar a los sprites, a ver si saco adelante un proyectilol. Ver esa captura del final fight de master system anima a cualquiera :Ð Gracias por el listado de las resoluciones, sabes si SMSLib está preparado para trabajar con ellas?

Si no voy mal creo que incluso a 256x192 no puedes llenar toda la capa del fondo con tiles únicos aunque no he hecho los cálculos, me suena de haberlo leído por ahí.
645 respuestas
1, 2, 3, 4, 513