polo_polo escribió:Que va, no lo es, te lo intento explicar detalladamente.
Te voy a poner un ejemplo para hacer un menú con una sola opción, que si lo entiendes serás capaz de hacerlo con varias...
Defines una variable (puede ser la que quieras, en este caso vamos a usar bool porque permite solo dos valores y consume muy poco).
La defines como false (o 0, que es lo mismo) "bool menu = false" y en la condición añades que para que se cumpla menu tiene que ser falso (o cero).
#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "mario.h"
u8 volumem = 250;
hikaru.raw
arm-eabi-g++ -g -mthumb-interwork -mno-fpu -L/c/devkitPro/PAlib/lib -specs=ds_arm9.specs dbz.o fma.o hikaru.o main.o -L/c/devkitPro/PAlib/lib -lpa9 -L/c/devkitPro/libnds/lib -lfat -lnds9 -ldswifi9 -o build.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: region ewram is full (build.elf section .rodata)
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .init [02000000 -> 02000237] overlaps section .init_array [02000000 -> 02000003]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .fini_array [02000004 -> 02000007] overlaps section .init [02000000 -> 02000237]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .text [02000240 -> 020075e7] overlaps section .itcm [02000234 -> 020003c3]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .bss [020003c4 -> 02033bb3] overlaps section .text [02000240 -> 020075e7]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .fini [020075e8 -> 020075ff] overlaps section .bss [020003c4 -> 02033bb3]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .init lma 0x2000000 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .fini_array lma 0x2000004 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .eh_frame lma 0x2000008 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .jcr lma 0x200000c overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .data lma 0x2000010 overlaps previous sections
collect2: ld returned 1 exit status
make[1]: *** [/d/homebrew/pruebas/pruebas.elf] Error 1
make: *** [build] Error 2
PiratePila escribió:
EDITO: Con la musica tengo un problema;#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "mario.h"
u8 volumem = 250;
Lo tengo así y la musica se escucha muy floja, se escucha igual de floja ponga el valor que ponga.
¿ Alguien sabe a que se puede deber esto ?
Plata escribió:NOTA: En los emuladores se escucha muy rapido, pero en la ds se escucha perfecto.
. Utilizo los 2 según lo que quiera probar.
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "sonido.h"
u8 a=0;
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
PA_InitSound();
PA_LoadSpritePal(0, 0, (void*)sprites_Pal);
PA_CreateSprite(0, 0, (void*)boton_Sprite, OBJ_SIZE_32X32, 1, 0, 0, 0);
while (1)
{
if((a==0) && (Stylus.Held) && PA_StylusInZone(0, 0, 32, 32))
{
PA_PlaySimpleSound(0, sonido);
PA_SetSpriteAnim(0, 0, 1);
a++;
}
if((a==1) && (Stylus.Held) && PA_StylusInZone(0, 0, 32, 32))
{
PA_StopSound(0);
PA_SetSpriteAnim(0, 0, 0);
a--;
}
PA_WaitForVBL();
}
return 0;
}
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "sonido.h"
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
PA_InitSound();
bool menu = false;
PA_LoadSpritePal(0, 0, (void*)sprites_Pal);
PA_CreateSprite(0, 0, (void*)boton_Sprite, OBJ_SIZE_32X32, 1, 0, 0, 0);
while (1)
{
if(menu == false && (Stylus.Newpress) && PA_StylusInZone(0, 0, 32, 32))
{
PA_PlaySimpleSound(0, sonido);
PA_SetSpriteAnim(0, 0, 1);
menu = true;
}
if(menu == true && (Stylus.Newpress) && PA_StylusInZone(0, 0, 32, 32))
{
PA_StopSound(0);
PA_SetSpriteAnim(0, 0, 0);
menu = false;
}
PA_WaitForVBL();
}
return 0;
}
Luiszu escribió:con algunos archivos me sale este errorhikaru.raw
arm-eabi-g++ -g -mthumb-interwork -mno-fpu -L/c/devkitPro/PAlib/lib -specs=ds_arm9.specs dbz.o fma.o hikaru.o main.o -L/c/devkitPro/PAlib/lib -lpa9 -L/c/devkitPro/libnds/lib -lfat -lnds9 -ldswifi9 -o build.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: region ewram is full (build.elf section .rodata)
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .init [02000000 -> 02000237] overlaps section .init_array [02000000 -> 02000003]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .fini_array [02000004 -> 02000007] overlaps section .init [02000000 -> 02000237]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .text [02000240 -> 020075e7] overlaps section .itcm [02000234 -> 020003c3]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .bss [020003c4 -> 02033bb3] overlaps section .text [02000240 -> 020075e7]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .fini [020075e8 -> 020075ff] overlaps section .bss [020003c4 -> 02033bb3]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .init lma 0x2000000 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .fini_array lma 0x2000004 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .eh_frame lma 0x2000008 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .jcr lma 0x200000c overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .data lma 0x2000010 overlaps previous sections
collect2: ld returned 1 exit status
make[1]: *** [/d/homebrew/pruebas/pruebas.elf] Error 1
make: *** [build] Error 2
tambien me sale al meter 3 songs en al carpeta data. Creo que hay alguna limitación en cuanto al tamaño o algo, pero prefiero que plata (o alguno) me lo aclare
judelco escribió:ARRGG!!!!!
[buuuaaaa]
Porque compila BIEN y no funcionaaaaaaaa
He usado variables y booleanos. Y NADA DE NADA. No funcionaa... :-?
Aqui los 2 códigos:
Con variables:
Con booleanos:
}:/
Luiszu escribió:con algunos archivos me sale este errorhikaru.raw
arm-eabi-g++ -g -mthumb-interwork -mno-fpu -L/c/devkitPro/PAlib/lib -specs=ds_arm9.specs dbz.o fma.o hikaru.o main.o -L/c/devkitPro/PAlib/lib -lpa9 -L/c/devkitPro/libnds/lib -lfat -lnds9 -ldswifi9 -o build.elf
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: region ewram is full (build.elf section .rodata)
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .init [02000000 -> 02000237] overlaps section .init_array [02000000 -> 02000003]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .fini_array [02000004 -> 02000007] overlaps section .init [02000000 -> 02000237]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .text [02000240 -> 020075e7] overlaps section .itcm [02000234 -> 020003c3]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .bss [020003c4 -> 02033bb3] overlaps section .text [02000240 -> 020075e7]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: section .fini [020075e8 -> 020075ff] overlaps section .bss [020003c4 -> 02033bb3]
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .init lma 0x2000000 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .fini_array lma 0x2000004 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .eh_frame lma 0x2000008 overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .jcr lma 0x200000c overlaps previous sections
c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/bin/ld.exe: build.elf: section .data lma 0x2000010 overlaps previous sections
collect2: ld returned 1 exit status
make[1]: *** [/d/homebrew/pruebas/pruebas.elf] Error 1
make: *** [build] Error 2
tambien me sale al meter 3 songs en al carpeta data. Creo que hay alguna limitación en cuanto al tamaño o algo, pero prefiero que plata (o alguno) me lo aclare
Plata escribió:ejemmmmmmmmm
termina el bucle, anda
buscando a while xD
ANTONIOND escribió:
Ese no es el fallo, los corchetes están bien.
judelco escribió:
Ya SE que los corchetes están bien.... que es???? T_T
ANTONIOND escribió:
Pon Stylus.Newpress en lugar de Stylus.Held. Si lo que quieres es que sea un botón deberías hacerlo así. Lo que hace tu código es:
a==0, pulsado -> a=1.
a==1,pulsado -> a=0.
Te quedas donde estabas. ¿Ves el problema? En el mismo paso del programa hace los 2 cambios.
judelco escribió:
Mmm... lo probaré. MUCHAS GRACIAS por la ayuda, compañero![]()
ANTONIOND escribió:
De nada, para eso estamos ^^.
Ya nos dirás si era eso. De todos modos a mi me ha pasado muchas veces lo que te he dicho, por eso me he fijado.
#include
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
#include "sonido.h"
u8 a=0;
int main(int argc, char ** argv)
{
PA_Init();
PA_InitVBL();
PA_InitSound();
PA_LoadSpritePal(0, 0, (void*)sprites_Pal);
PA_CreateSprite(0, 0, (void*)boton_Sprite, OBJ_SIZE_32X32, 1, 0, 0, 0);
while (1)
{
if((Stylus.Newpress) && PA_StylusInZone(0, 0, 32, 32) && a == 0)
{
PA_PlaySimpleSound(0, sonido);
PA_SetSpriteAnim(0, 0, 1);
a++;
}
if((Stylus.Newpress) && PA_StylusInZone(0, 0, 32, 32) && a == 1)
{
PA_StopSound(0);
PA_SetSpriteAnim(0, 0, 0);
a--;
}
PA_WaitForVBL();
}
return 0;
}
judelco escribió:
Pues nada...... sigue sin irse. Ya me estoy mosqueando con lo que dice Plata sobre el while.....
este es el codigo con el newpress y compila sin problemas, pero no cumple su función....
Nota: En negrita lo de while, para que se vea que SI está
judelco escribió:
Pues nada...... sigue sin irse. Ya me estoy mosqueando con lo que dice Plata sobre el while.....
este es el codigo con el newpress y compila sin problemas, pero no cumple su función....
Nota: En negrita lo de while, para que se vea que SI está
ANTONIOND escribió:¿Y por qué no lo simplificas así?
Lo del else if lo arreglaría, ya he dicho que pasa lo mismo de antes, hace los dos cambios en el mismo paso. Así solo hace uno de los 2.
while (1)
{
if((Stylus.Newpress) && PA_StylusInZone(0, 0, 32, 32))
{
if(a == 0)
{
PA_PlaySimpleSound(0, sonido);
PA_SetSpriteAnim(0, 0, 1);
a++;
}
else if(a == 1)
{
PA_StopSound(0);
PA_SetSpriteAnim(0, 0, 0);
a--;
}
}
PA_WaitForVBL();
}
Nota: Se puede cambiar (a == 0) por (!a) y (a == 1) por (a).
ANTONIOND escribió:De nada, hombre.![]()
judelco escribió:Estas siempre aqui.... posteo en donde sea y ya estas contestando![]()
.
)
ANTONIOND escribió:
Al final te ha salido, ¿eh? Enorabuena.