Advertisement
NightFox

mind maze dual 3d on credits

Sep 15th, 2012
361
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.50 KB | None | 0 0
  1. // Funcion CreditsMain();
  2. void CreditsMain(void) {
  3.  
  4.     //////////////////////////
  5.     //                      //
  6.     //  Inicializaciones    //
  7.     //                      //
  8.     //////////////////////////
  9.  
  10.     // Reinicialo todo
  11.     ResetAll();
  12.  
  13.     // Variables
  14.     bool fade_in = true;        // Fade IN
  15.     bool fade_out = false;      // Fade OUT
  16.     s32 fade = (16 << 8);       // Valor del FADE
  17.  
  18.     bool loop = true;           // Control del bucle principal
  19.  
  20.  
  21.     //////////////////////
  22.     //                  //
  23.     //  Carga Archivos  //
  24.     //                  //
  25.     //////////////////////
  26.  
  27.     // Muestra la pantalla de carga
  28.     LoadingIn();
  29.     // Carga los archivos
  30.     CreditsLoadFiles();
  31.     // Carga la Musica
  32.     LoadBgm(MOD_CREDITS);
  33.     // Oculta la pantalla de carga
  34.     LoadingOut();
  35.  
  36.  
  37.     //////////////////////
  38.     //                  //
  39.     // Crea el entorno  //
  40.     //                  //
  41.     //////////////////////
  42.  
  43.     // Habilita el 3D en la pantalla tactil
  44.     N3_Set3D(1, 0);
  45.     N3_Init3dEngine();
  46.  
  47.     // Inicializa los fondos 2D en el main engine
  48.     NF_InitTiledBgSys(0);
  49.  
  50.     // Inicializa el modo 16 bits para el sub engine
  51.     NF_Set2D(1, 5);
  52.  
  53.     // Inicializa el fondo BITMAP de 16 bits, para poder recibir la captura
  54.     NF_InitBitmapBgSys(1, 1);
  55.  
  56.     // Prepara el Banco D para guardar las capturas 3D
  57.     vramSetBankD(VRAM_D_LCD);
  58.  
  59.     // Y habilita la capa de dibujado para el 3D en el main engine, poniendola al fondo
  60.     N3_3dLayer(3);
  61.     NF_ShowBg(0, 0);
  62.  
  63.     // Crea el mundo en 3D
  64.     CreditsCreateWorld();
  65.  
  66.     // Reproduce la Musica
  67.     PlayBgm();
  68.     BgmVolume(0);
  69.    
  70.     //////////////////////////
  71.     //                      //
  72.     // Nucleo de ejecucion  //
  73.     //                      //
  74.     //////////////////////////
  75.  
  76.     while (loop) {
  77.  
  78.         // Intercambio de pantalla para el dual 3D (false = main)
  79.         CREDITSWORLD.screen = !CREDITSWORLD.screen;
  80.         if (CREDITSWORLD.screen) {
  81.             lcdMainOnBottom();  // 3D en la inferior
  82.         } else {
  83.             lcdMainOnTop();     // 3D en la superior
  84.         }
  85.        
  86.         // Lee el teclado
  87.         ReadKeypad();
  88.  
  89.         // Effecto "fade in"
  90.         if (fade_in) {
  91.             fade -= 64;
  92.             if (fade <= 0) {
  93.                 fade = 0;
  94.                 fade_in = false;
  95.             }
  96.             // Ajusta el brillo
  97.             setBrightness(3, (0 - (fade >> 8)));
  98.             // Si es necesario, ajusta el volumen
  99.             BgmVolume(((4096 - fade) >> 2));
  100.         }
  101.  
  102.         // Effecto "fade out"
  103.         if (fade_out) {
  104.             fade += 64;
  105.             if (fade >= (16 << 8)) {
  106.                 fade = (16 << 8);
  107.                 fade_out = false;
  108.                 loop = false;
  109.                 StopBgm();
  110.             }
  111.             // Ajusta el brillo
  112.             setBrightness(3, (0 - (fade >> 8)));
  113.             // Si es necesario, ajusta el volumen
  114.             BgmVolume(((4096 - fade) >> 2));
  115.         }
  116.  
  117.         // Mueve el tunel
  118.         CreditsMoveTunnel();
  119.  
  120.         // Mueve el panel de creditos
  121.         if (!CREDITSWORLD.panel_update && !fade_in && !fade_out) {
  122.             fade_out = CreditsMovePanel();
  123.         }
  124.         if (fade_out && loop) CreditsMovePanel();
  125.  
  126.         // Renderiza el mundo en 3D
  127.         CreditsRender3dWorld();
  128.  
  129.         // Abortar? (Salir de los creditos)
  130.         if (!fade_in && !fade_out && AbortKeys()) {
  131.             fade_out = true;
  132.         }
  133.  
  134.         // Espera al sincronismo vertical
  135.         swiWaitForVBlank();
  136.  
  137.         // Manda la captura del banco D al banco C, teniendo asi una imagen en el subengine
  138.         NF_DmaMemCopy((void*)0x06200000, (void*)0x06860000, 98304); // (256 x 192 pixeles)
  139.  
  140.         // Muestra o oculta el logo (fondo 2D)
  141.         if (CREDITSWORLD.screen) {
  142.             NF_ShowBg(0, 1);
  143.         } else {
  144.             NF_HideBg(0, 1);
  145.         }
  146.  
  147.         // Espera a que el dispositivo de captura este listo
  148.         while (REG_DISPCAPCNT & DCAP_ENABLE);
  149.  
  150.         // Captura el frame actual al banco D de VRAM
  151.         REG_DISPCAPCNT = DCAP_BANK(3)| DCAP_ENABLE | DCAP_SIZE(3);
  152.  
  153.         // Actualiza las texturas del panel de creditos, si es necesario
  154.         if (CREDITSWORLD.panel_update) CreditsUpdateVramPanelTextures();
  155.  
  156.     }
  157.  
  158.  
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement