Lección 01 – Hola Mundo (II) Clonación y Errores

CLICK HERE FOR ENGLISH VERSION

 

Aventuras en Megadrive: Clonación y Errores

 

CLONACIÓN

Antes de seguir un consejo muy útil. No es necesario partir de cero cada vez que iniciemos un nuevo proyecto. Existe una forma sencilla de saltarnos todo el proceso de configuración.

Simplemente haremos un copy+paste de la carpeta de otro proyecto anterior.

Si has seguido el post «03-Aventuras en Megadrive: Hola mundo», tendrás una carpeta con todos los archivos de codeblocks y el main.c

Así que, en vez de iniciar un nuevo proyecto, haremos un copy+paste de esa carpeta, abrimos en CB el proyecto de esa carpeta y ya podemos modificar lo que queramos. No olvidarse de comprobar la ruta al SGDK (lo vemos abajo).

Ahora mismo parece poca cosa, porque «Hola Mundo» no es precisamente un proyecto ambicioso, pero imaginemos un proyecto más complejo, con archivos de imágenes, sonido, otros archivos con código, etc. En un momento determinado podemos clonar el proyecto para hacer pruebas, cambiar algo en el código, etc.

 

ERRORES MÁS HABITUALES EN CB

Estos son los errores más habituales en Codeblocks.

 

Si abrimos proyecto de otro PC

Los archivos de proyecto de CB guardan la ruta al SGDK. Si abrimos un proyecto de otro PC y en ese PC el SGDK estaba en otra ubicación, fallará. La manera de solucionarlo es la siguiente:

En el archivo de proyecto, click derecho + Propiedades.
MUY IMPORTANTE: Marcamos «this is a custom makefile» y ponemos la ruta al SGDK y al archivo makefile.gen.

En mi caso  C:\sgdk\makefile.gen

Opcional: Click en Project’s Build Options, click en default, click en «Make» commands y ponemos las rutas como en la captura. 

tutorial-09

captura81

 

Si hacemos cambios pero al probar la ROM todo sigue como antes

  • Click en Build / Clean. Esto borrará los archivos de proyecto y los creará de nuevo.
  • Si lo preferimos Build / Rebuild hace un clean y a continuación compila el proyecto. Nos ahorramos un paso.
  • A las bravas, si todo falla: Entra en la carpeta OUT y bórralo todo. Se generará de nuevo al compilar el proyecto.

Como regla general, si cambiamos el código, basta con compilar.
Se actualiza la parte del código de la ROM pero no los archivos externos, como gráficos y sonidos, es muy rápido

Si hacemos cambio en los archivos externos, como gráficos o sonidos, hemos de hacer un Rebuild para re-generar estos archivos en la ROM. Este proceso es lento.

«fatal error: genesis.h : No such file or directory»

CB no encuentra el archivo «genesis.h». ¿Hemos dejado espacios?

#include < genesis.h >  --> MAL
#include <genesis.h>    --> BIEN

 

Error 127

CB es incapaz de encontrar el compilador.

Settings->Compiler->Toolchains executables->Compiler’s installation directory

captura82

 

Error: Cannot compile resource IMAGE ******

Este error suele suceder cuando intentamos utilizar una imagen con un formato incorrecto, ya sea porque el tamaño no es adecuado o porque la profundidad de color no es la adecuada (esto lo veremos más adelante).

No confundirse y pensar que es porque no encuentra la imagen. Nos solemos confundir porque CB colorea en rojo justo lo que no debe:

captura60

Pulsa en Build log para obtener información más precisa:

captura61

Como vemos (marcado en amarillo), el problema en este caso es que la imagen está en formato 32bpp, cuando debería ser 8 ó 4 bpp.

 


English Version

CLONE

A good advice before start. You don’t need start from scratch each new project. Just copy+paste old project folder (you can also have a clone-me-folder).

If you come from last lesson, you already have your project folder, with codeblocks files and main.c

So instead making a new project, and do all configuration steps, copy+paste and use this new folder as your new project first step.

You can even make this in another computer but check SGDK makefile path is the right one  (see later how to fix this problem).

Right now making copy+paste from «Hello world» is not a complex thing but when it grows, it will be a very nice «feature» doing this. Easy.

 

MOST COMMON MISTAKES CODE::BLOKS

 

Open project in diferent computer

CB project save SGDK path. If we open project in another computer and SGDK folder is different, results in an ERROR. To solve this:

Right click in Project Name and click in Properties.
DONT FORGET: Be sure «this is a custom makefile» has a mark and put correct SGDK path right there, CB needs makefile.gen path.

In my case  C:\sgdk\makefile.gen

Opcional: Click in Project’s Build Options, click in default, click en «Make» commands and follow screenshot: 

tutorial-09

captura81

 

We made some changes in our project but when testing ROM nothing have changed

  • Click in Build / Clean. This option wipe all files in OUT project folder and will crea.
  • Click in Build / Rebuild. This option wipe all files in OUT project folder and will create new ones, compiling project.
  • If everything fails: Using OS file browser, just delete every file inside OUT folder. Compile again and CB will create all.

General Rule: If we change only program code, just compile and we will obtain new ROM file. This will be very fast.

If we update graphics or sound/music files, click in Compile will NOT update them, only the code.

To update graphics or sound/music files, you need to REBUILD project, to re-compile everything. This will be slow.

 

«fatal error: genesis.h : No such file or directory»

CB can’t find «genesis.h» file. Check empty spaces:

#include < genesis.h >  --> MISTAKE
#include <genesis.h>    --> GOOD

 

Error 127

CB can’t find compiler.  

Settings->Compiler->Toolchains executables->Compiler’s installation directory

captura82

 

Error: Cannot compile resource IMAGE ******

We are using an image file with <<something>> wrong, usually size is not megadrive compatible but also image depth is not the right one (we’ll see later).

Don’t trust text in red in «Build Messages» :

captura60

To find out real problem, click in «Build log» to obtain additional information:

captura61

In this example (in yellow), real problem is imagen depth color, is 32bpp, and it has to be 8 or 4 bpp.