Bueno, tal y como dice JL .. pues si .. puedes meter los datos en un include en algo estilo:
unsigned char SPRITES_PERSONAJE[512] = { 50, 30, 10, 30, 50, ... }
Pero cuidado!! porque si lo metes así .. resulta que lo estás metiendo como RAM, o sea . .te creará el buffer en RAM además de tener los datos en ROM.
Si sólo quieres tenerlo en ROM lo unico que tienes que hacer es meter esto:
const unsigned char SPRITES_PERSONAJE[512] = { 50, 30, 10, 30, 50, ... }
Pero bueno .. ya te imaginas que pasará en cuanto empieces a meter muchos arrays de estos, verdad? :-)
Sobre lo de pasar los datos a funciones ASSEMBLER INLINE pues . .puedes hacerlo usando el estandard SDCC o sea por pila. O bien si queires puedes hacerlo por registro, pero para eso la llamada también tendrás que hacerla ASSEMBLER INLINE. La forma del SDCC está bastante bien y es muy cómoda.
Si tu has usado algo como:
void MiFuncion (char a, int b)
{
_asm
ld a, 4(ix)
ld l, 5(ix)
ld h,6(ix)
_endasm;
}
El SDCC ya te ha preparado las cosas como toca, o sea, que tienes el registro IX listo para leer los argumentos. A partir del 4(ix) los tienes todos.
Si quieres devolver algún valor, usa el registro HL, L si es de 8 bits y HL si es de 16 bits. El SDCC ya supone esto, por ejemplo:
char MiFuncion (char a, int b)
{
_asm
ld a, 4(ix)
ld l, 5(ix)
ld h,6(ix)
_endasm;
}
Si llamas a MiFuncion devolverá la parte baja del valor que hayas pasado como b.
Sobre lo de los MEGAROM, jejejee .. ese es mi pequeño secreto y mi gran currada por cierto
Para hacer esto tienes que tener la mente despejada y tener muy claras muchas cosas antes .. pero te adelanto de que va esto..
Tienes que saber separar código de datos dentro del ROM. Yo uso 32Kb para código y el resto para datos.
Eso como lo pongo? .. bueno .. pues obviamente despues de compilarlo todo. Incluyo con una herramienta toda la parte de código y de datos.
Generando el ROM de 128, 256 o 512.
Claro .. asi dicho suena fácil .. luego esta el tener código como datos y poder ejecutarlo
Al igual que todo el tejemaneje de mover datos de MEGAROM a la zona visible sin tocar tu código genérico ni tu RAM. Para eso has de organizar bién tu código y tener claras las limitaciones. Pero creo que antes .. deberias tener claro como hacer ROMS de 32Kb.