User Tag List

Página 3 de 61 PrimerPrimer 12345671353 ... ÚltimoÚltimo
Resultados 31 al 45 de 902

Tema: [HILO OFICIAL] GameBoy Advance & GameBoy Development

  1. #31

    Fecha de ingreso
    Apr 2010
    Ubicación
    JULY CITY
    Mensajes
    1,525
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    342
    Agradecer Thanks Received 
    99
    Thanked in
    Agradecido 63 veces en [ARG:2 UNDEFINED] posts
    actualiza, actualiza xDD

  2. #32

    Fecha de ingreso
    Jan 2006
    Ubicación
    Xixón, Asturies
    Mensajes
    2,741
    Mencionado
    20 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    14
    Thanked in
    Agradecido 6 veces en [ARG:2 UNDEFINED] posts
    El tuto está actualizandose sin parar eh xD
    Enseguida termino con los registros básicos de la gameboy, y empiezo con el ensablador y un hola mundo :-)

    LADECADENCE.NET GBCartflasher!!!

  3. #33

    Fecha de ingreso
    Sep 2008
    Ubicación
    WORLD 9 - WARP ZONE!
    Mensajes
    14,748
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    193
    Agradecer Thanks Received 
    1,620
    Thanked in
    Agradecido 651 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    284
    muy grande xzakox. Asi la gente puede visitar tu enlace y postear por aqui sus pequeñas obras. Estoy actualizando el post incial para incluir nueva información (tmb el enlace a tu página).

  4. #34

    Fecha de ingreso
    Apr 2010
    Ubicación
    JULY CITY
    Mensajes
    1,525
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    342
    Agradecer Thanks Received 
    99
    Thanked in
    Agradecido 63 veces en [ARG:2 UNDEFINED] posts
    espero con ganas ese tuto en ensamblador para GB. por cierto para poder usar los conocimientos adquiridos era necesario el RGBDK, no? hay algun enlace por ahi para poder acceder a el?

  5. #35

    Fecha de ingreso
    Jan 2007
    Ubicación
    Ciudad Catedral, Reino de Dick
    Mensajes
    3,638
    Mencionado
    7 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    151
    Agradecer Thanks Received 
    100
    Thanked in
    Agradecido 79 veces en [ARG:2 UNDEFINED] posts
    Justo ahora que tengo un carchuto recauchutable, me viene de perilla. Gracias.
    Proyectos actuales ----> MinGRo
    Entorno de desarrollo ----> FreePascal | Vim

  6. #36

    Fecha de ingreso
    Sep 2008
    Ubicación
    WORLD 9 - WARP ZONE!
    Mensajes
    14,748
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    193
    Agradecer Thanks Received 
    1,620
    Thanked in
    Agradecido 651 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    284
    Aqui ando de nuevo con otro ejemplo. En este caso se trata de una rom para GBA desarrollada con el devkitadv-r5-beta-3 que carga varias imagenes y permite al usuario ir navegando a través de ellas pulsando cualquiera de los diez botones de la consola.

    Esta vez ha sido necesario incluir el fichero keypad.h donde se encuentran recodigas las corrrespondencias con los botones de la GameBoy Advance. el fichero keypad.h de la distribución del devkitadv es el siguiente:

    //Key Definitions from Nokturn's key demo
    #define KEY_A 1
    #define KEY_B 2
    #define KEY_SELECT 4
    #define KEY_START 8
    #define KEY_RIGHT 16
    #define KEY_LEFT 32
    #define KEY_UP 64
    #define KEY_DOWN 128
    #define KEY_R 256
    #define KEY_L 512
    int* KEYS = (int*)0x04000130;
    una vez incluido este fichero en la carpeta de trabajo junto con el base.h que tmb usabamos en el ejmplo anterior y que recoge la definición del tipo USHORT empleado en las conversiones del PCX2GBA, solo nos queda mapear las imagenes con dicho programa a los correspondientes ficheros .h y generar el programa con el código principal que nos queda como sigue:

    /*
    author: jduranmaster
    */

    #include "keypad.h" //definiciones del keypad.
    #include "base.h" //definiciones de los tipos de datos que usa el devkitadv.
    #include "flcl.h" //bytes de la imagen 1 obtenidos con la herramienta PCX2GBA.
    #include "flcl1.h" //bytes de la imagen 2 obtenidos con la herramienta PCX2GBA.
    #include "flcl2.h" //bytes de la imagen 3 obtenidos con la herramienta PCX2GBA.
    #include "flcl3.h" //bytes de la imagen 4 obtenidos con la herramienta PCX2GBA.
    #include "flcl4.h" //bytes de la imagen 5 obtenidos con la herramienta PCX2GBA.
    #include "flcl5.h" //bytes de la imagen 6 obtenidos con la herramienta PCX2GBA.
    #include "flcl6.h" //bytes de la imagen 7 obtenidos con la herramienta PCX2GBA.
    #include "flcl7.h" //bytes de la imagen 8 obtenidos con la herramienta PCX2GBA.
    #include "flcl8.h" //bytes de la imagen 9 obtenidos con la herramienta PCX2GBA.
    #include "flcl9.h" //bytes de la imagen 10 obtenidos con la herramienta PCX2GBA.
    #include "flcl10.h" //bytes de la imagen 11 obtenidos con la herramienta PCX2GBA.

    USHORT* ScreenBuffer = (USHORT*)0x6000000;

    int main(){
    USHORT loop;

    SetMode(MODE3 | BG2_ENABLE);//seleccionamos el modo gráfico (MODO 3)

    //fijamos la imagen que aparecerá cuando se cargue la ROM por primera vez.
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample0data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.

    while (1) // bucle infinito
    {
    // process input
    if(!((*KEYS) & KEY_A)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample1data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_B)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample3data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_SELECT)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample5data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_START)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample2data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_R)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample4data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_L)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample6data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_UP)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample7data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_DOWN)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample9data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_LEFT)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample10data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    if(!((*KEYS) & KEY_RIGHT)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sample8data[loop];
    }//con el bucle cargamos en el buffer de pantalla los datos de la imagen.
    }
    }
    }//fin de main
    el resultado como siempre lo podeis comprobar vosotros mismos usando el VisualBoy Advance. Agradecría que alguien pudiese probar las roms que voy subiendo por aqui en un flashcart para GBA y me diga que tal van en la maquina original. SALUDOS.
    Imágenes adjuntadas Imágenes adjuntadas  
    Archivos adjuntados Archivos adjuntados

  7. #37

    Fecha de ingreso
    Oct 2003
    Mensajes
    17,905
    Mencionado
    42 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    214
    Agradecer Thanks Received 
    160
    Thanked in
    Agradecido 109 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por xzakox Ver mensaje
    Muy buena la imagen de ejemplo jduranmaster xDD

    Por mi parte he decidido empezar un tutorial de programación para la GameBoy en ensamblador en castellano, intentaré hacerlo lo más sencillo posible, usando las herramientas más modernas disponibles (rgbds, etc).

    De momento estoy haciendo una introducción técnica a la GameBoy, si lo podeis leer y decirme si os parece claro y bien explicado, me hariais un favor. (Tener en cuenta que es un curso de ensamblador, asumo conocimientos básicos de programación, arquitectura de computadores, sistemas de numeración, etc).

    http://wiki.ladecadence.net/doku.php...de_ensamblador
    La verdad es que me ha gustado mucho, y mira que no se muchisimo de ensamblador y de arquitectura de ordenadores, pero esta claro claro

    Porcierto, muy interesante las propiedades de los sprites ^^
    Última edición por otto_xd; 14/06/2010 a las 15:57

  8. #38

    Fecha de ingreso
    Jan 2006
    Ubicación
    Xixón, Asturies
    Mensajes
    2,741
    Mencionado
    20 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    14
    Thanked in
    Agradecido 6 veces en [ARG:2 UNDEFINED] posts
    http://wiki.ladecadence.net/doku.php...de_ensamblador

    Echadle un vistazo, he añadido las herramientas para descargar y ya hay un hola mundo que podeis ensamblar y ejecutar, explicado con comentarios, después lo iré explicando paso a paso con cada instrucción de ensamblador. Por hoy ya vale xD

    LADECADENCE.NET GBCartflasher!!!

  9. #39

    Fecha de ingreso
    Sep 2008
    Ubicación
    WORLD 9 - WARP ZONE!
    Mensajes
    14,748
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    193
    Agradecer Thanks Received 
    1,620
    Thanked in
    Agradecido 651 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    284
    Cita Iniciado por xzakox Ver mensaje
    http://wiki.ladecadence.net/doku.php...de_ensamblador

    Echadle un vistazo, he añadido las herramientas para descargar y ya hay un hola mundo que podeis ensamblar y ejecutar, explicado con comentarios, después lo iré explicando paso a paso con cada instrucción de ensamblador. Por hoy ya vale xD
    ok xzakox. gracias por el curro. En el primer post de este hilo tmb he añadido el enlace a tu página de GB. según vaya probadno seguiré subiendo más programas de ejemplo.

    saludos.

  10. #40

    Fecha de ingreso
    Sep 2008
    Ubicación
    WORLD 9 - WARP ZONE!
    Mensajes
    14,748
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    193
    Agradecer Thanks Received 
    1,620
    Thanked in
    Agradecido 651 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    284
    Continuamos con otro ejemplo que hace uso del modo 3 de GBA para pintar la pantalla de un color concreto. El ejemplo esta tmb realizado con el devkitadv-r5-beta-3.

    en este caso me he tenido que definir un fichero denominado screenmode.h donde he definido todas las ctes necesarias para el manejo de los fondos de pantalla:

    /*
    author: jduranmaster
    */

    #ifndef SCREENMODE_H
    #define SCREENMODE_H

    /////definicion del REG_DISPCNT

    #define MODE_0 0x0
    #define MODE_1 0x1
    #define MODE_2 0x2
    #define MODE_3 0x3
    #define MODE_4 0x4
    #define MODE_5 0x5

    #define BACKBUFFER 0x10
    #define H_BLANK_OAM 0x20

    #define OBJ_MAP_2D 0x0
    #define OBJ_MAP_1D 0x40

    #define FORCE_BLANK 0x80

    #define BG0_ENABLE 0x100
    #define BG1_ENABLE 0x200
    #define BG2_ENABLE 0x400
    #define BG3_ENABLE 0x800
    #define OBJ_ENABLE 0x1000
    #define WIN1_ENABLE 0x2000
    #define WIN2_ENABLE 0x4000
    #define WINOBJ_ENABLE 0x8000

    #define SetMode(mode) REG_DISPCNT = (mode)
    #endif
    también he utilizado otro fichero de cabecera llamado "gba.h" que contiene mas definicones de tipos auxiliares.

    // gba.h by eloist

    #ifndef GBA_HEADER
    #define GBA_HEADER

    typedef unsigned char u8;
    typedef unsigned short u16;
    typedef unsigned long u32;

    typedef signed char s8;
    typedef signed short s16;
    typedef signed long s32;

    typedef unsigned char byte;
    typedef unsigned short hword;
    typedef unsigned long word;

    typedef volatile unsigned char vu8;
    typedef volatile unsigned short vu16;
    typedef volatile unsigned long vu32;

    typedef volatile signed char vs8;
    typedef volatile signed short vs16;
    typedef volatile signed long vs32;

    typedef void (*fp)(void);

    #define RGB16(r,g,b) ((r)+(g<<5)+(b<<10))

    #define OAMMem ((u32*)0x7000000)
    #define VideoBuffer ((u16*)0x6000000)
    #define OAMData ((u16*)0x6010000)
    #define BGPaletteMem ((u16*)0x5000000)
    #define OBJPaletteMem ((u16*)0x5000200)

    #define REG_DISPCNT *(vu32*)0x4000000
    #define REG_VCOUNT *(vu16*)0x4000006

    #define MODE_0 0x0
    #define MODE_1 0x1
    #define MODE_2 0x2
    #define MODE_3 0x3
    #define MODE_4 0x4
    #define MODE_5 0x5

    #define BACKBUFFER 0x10
    #define H_BLANK_OAM 0x20

    #define OBJ_MAP_2D 0x0
    #define OBJ_MAP_1D 0x40

    #define FORCE_BLANK 0x80

    #define BG0_ENABLE 0x100
    #define BG1_ENABLE 0x200
    #define BG2_ENABLE 0x400
    #define BG3_ENABLE 0x800
    #define OBJ_ENABLE 0x1000

    #define WIN1_ENABLE 0x2000
    #define WIN2_ENABLE 0x4000
    #define WINOBJ_ENABLE 0x8000

    ///////SetMode Macro
    #define SetMode(mode) REG_DISPCNT = (mode)

    #endif
    y finalmente el código fuente del programa principal:

    /*
    author: jduranmaster
    */

    #include "gba.h"
    #include "screenmode.h"

    #define RGB(r,g,b) ((r)+(g<<5)+(b<<10))
    #define BGR(b,g,r) ((r)+(g<<5)+(b<<10))

    typedef u16 unsigned short int;

    u16* videoBuffer = (u16*)0x6000000; //dirección de comienzo de la memoria de video.

    void PlotPixel (int x, int y, unsigned short int c){videoBuffer[(y)*240 + (x)] = (c);}

    int main(void){

    int x,y;
    SetMode(MODE_3 | BG2_ENABLE);//inicializamos con el MODO 3 de GBA y permitimos el background 2
    for(x = 0; x < 240; x++){
    for(y = 0; y < 160; y++){
    PlotPixel(x,y,RGB(31,0,0));//pintamos el pixel por pantalla
    }
    }

    while(1){}//bucle infinito

    }//fin de main
    espero que os sirva para dar los primeros pasos en la programación de GBA. Este programa esta testeado con VisualBoy Advance.
    Imágenes adjuntadas Imágenes adjuntadas  
    Archivos adjuntados Archivos adjuntados

  11. #41

    Fecha de ingreso
    Jan 2006
    Ubicación
    Xixón, Asturies
    Mensajes
    2,741
    Mencionado
    20 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    14
    Thanked in
    Agradecido 6 veces en [ARG:2 UNDEFINED] posts
    Bueno, estoy añadiendo las primeras explicaciones al código del hola mundo, si podeis ir leyéndolo... más que nada para saber si se entiende bien, o tengo que mejorar las explicaciones, (o si creeis que me paso explicando) xD
    Gracias.
    http://wiki.ladecadence.net/doku.php...de_ensamblador

    LADECADENCE.NET GBCartflasher!!!

  12. #42

    Fecha de ingreso
    Sep 2008
    Ubicación
    WORLD 9 - WARP ZONE!
    Mensajes
    14,748
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    193
    Agradecer Thanks Received 
    1,620
    Thanked in
    Agradecido 651 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    284
    Cita Iniciado por xzakox Ver mensaje
    Bueno, estoy añadiendo las primeras explicaciones al código del hola mundo, si podeis ir leyéndolo... más que nada para saber si se entiende bien, o tengo que mejorar las explicaciones, (o si creeis que me paso explicando) xD
    Gracias.
    http://wiki.ladecadence.net/doku.php...de_ensamblador
    gracias por el aviso. ahora en un ratillo lo miro e intento probarlo.

  13. #43

    Fecha de ingreso
    Sep 2008
    Ubicación
    WORLD 9 - WARP ZONE!
    Mensajes
    14,748
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    193
    Agradecer Thanks Received 
    1,620
    Thanked in
    Agradecido 651 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    284
    Y termino con otro ejemplo desarrollado con el devkitadv-r5-beta-3 para GBA que nos permite conmutar entre colores de pantalla y una imagen predefinida e integrada mediante el PCX2GBA. La conmutación se realiza mediante el uso del keypad.h que como ocurria en uno de los ejemplos anteriores tiene las constantes precisas para mapear los botones (en este ejemplo los botones que reciben los eventos son A, B, R y L). El código fuente del programa principal es:

    /*
    author: jduranmaster
    */

    #include "gba.h"
    #include "screenmode.h"
    #include "keypad.h"
    #include "base.h"
    #include "flcl.h"

    #define RGB(r,g,b) ((r)+(g<<5)+(b<<10))
    #define BGR(b,g,r) ((r)+(g<<5)+(b<<10))

    typedef u16 unsigned short int;

    USHORT* ScreenBuffer = (USHORT*)0x6000000;
    u16* videoBuffer = (u16*)0x6000000; //dirección de comienzo de la memoria de video.

    void PlotPixel (int x, int y, unsigned short int c){videoBuffer[(y)*240 + (x)] = (c);}

    int main(void){

    int x,y;
    SetMode(MODE_3 | BG2_ENABLE);//inicializamos con el MODO 3 de GBA y permitimos el background 2

    USHORT loop;

    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sampledata[loop];
    }

    while(1){
    if(!((*KEYS) & KEY_A)){
    for(x = 0; x < 240; x++){
    for(y = 0; y < 160; y++){
    PlotPixel(x,y,RGB(31,0,0));//pintamos el pixel por pantalla
    }
    }
    }
    if(!((*KEYS) & KEY_B)){
    for(x = 0; x < 240; x++){
    for(y = 0; y < 160; y++){
    PlotPixel(x,y,RGB(0,31,0));//pintamos el pixel por pantalla
    }
    }
    }
    if(!((*KEYS) & KEY_L)){
    for(x = 0; x < 240; x++){
    for(y = 0; y < 160; y++){
    PlotPixel(x,y,RGB(0,0,31));//pintamos el pixel por pantalla
    }
    }
    }
    if(!((*KEYS) & KEY_R)){
    for(loop=0;loop<38400;loop++) {
    ScreenBuffer[loop] = sampledata[loop];
    }
    }
    }//bucle infinito

    }//fin de main
    bueno pues esto es todo por hoy. Ahora estoy trabajando en dos programillas mediante el devkitPRO para GBA: uno que usa los tiles de GBA y otro que usa el apartado de sonido. Según vaya avanzando con ellos, los subire por aqui.SALUDOS.
    Imágenes adjuntadas Imágenes adjuntadas  
    Archivos adjuntados Archivos adjuntados

  14. #44

    Fecha de ingreso
    Apr 2010
    Ubicación
    JULY CITY
    Mensajes
    1,525
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    342
    Agradecer Thanks Received 
    99
    Thanked in
    Agradecido 63 veces en [ARG:2 UNDEFINED] posts
    gracias jduran por los ejemplos para GBA, estan currados con el codigo fuente y todo. y tmb gracias xzakox por el tuto de ensamblador de GB, lo estoy leyendo y esta bastante bien explicado.

  15. #45

    Fecha de ingreso
    Sep 2008
    Ubicación
    WORLD 9 - WARP ZONE!
    Mensajes
    14,748
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    193
    Agradecer Thanks Received 
    1,620
    Thanked in
    Agradecido 651 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    284

Página 3 de 61 PrimerPrimer 12345671353 ... ÚltimoÚltimo

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •