Hola.
El problema no lo tengo a la hora de reproducir sonido. He sido capaz de reproducir un wav pequeño. El problema lo tengo a la hora de adjuntar datos grandes al programa. Yo tenía entendido que declarando las variables como const static e inicializándolas (vamos, lo que es una zona de datos de toda la vida), las almacena en la ROM, donde no hay límite de espacio. Pero el problema es que no lo debe estar haciendo así, el enlazador debe estar intentando colocar los datos en otra zona y me da error:
/c/devkitPro/devkitARM/bin/arm-elf-gcc -o snake.elf snake.o graficos.o irq_handler.o irq.o keyboard.o sprites.o mapper.o rooms.o sounds.o -mthumb -mthumb-interwork -specs=/c/devkitPro/devkitARM/arm-elf/lib/gba_mb.specs -L/c/devkitPro/devkitARM/arm-elf/lib/interwork -L/c/devkitPro/devkitARM/lib
/c/devkitPro/devkitARM/bin/../lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/ld: region ewram is full (snake.elf section .rodata)
/c/devkitPro/devkitARM/bin/../lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/ld: section .ctors [02000000 -> 02000007] overlaps section .init [02000000 -> 02000233]
/c/devkitPro/devkitARM/bin/../lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/ld: section .dtors [02000008 -> 0200000f] overlaps section .init [02000000 -> 02000233]
/c/devkitPro/devkitARM/bin/../lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/ld: section .jcr [02000010 -> 02000013] overlaps section .init [02000000 -> 02000233]
/c/devkitPro/devkitARM/bin/../lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/ld: section .eh_frame [02000014 -> 02000017] overlaps section .init [02000000 -> 02000233]
/c/devkitPro/devkitARM/bin/../lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/ld: section .iwram [02000018 -> 02000127] overlaps section .init [02000000 -> 02000233]
/c/devkitPro/devkitARM/bin/../lib/gcc/arm-elf/3.4.4/../../../../arm-elf/bin/ld: section .data [02000128 -> 02000b37] overlaps section .init [02000000 -> 02000233]
En cuanto a las librerías, Krawall es de pago, y AAS tiene buena pinta.
Gracias. Saludos.
--------------------------------------------
Me contesto a mi mismo, el problema está en este parámetro:
-specs=/c/devkitPro/devkitARM/arm-elf/lib/gba_mb.specs
que genera una rom para multiboot, intentando meter todo el código y datos en la EWRAM. Se cambia por gba.specs y a volar.