PA9.h

Aller à la documentation de ce fichier.
00001 #ifndef _PA_Main
00002 #define _PA_Main
00003 
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007 
00008 
00009 #include "../../PA_Config.h"
00010 
00011 
00012 #ifdef USE_8BITTEXT  
00013        #define TEXT_ALLSIZES   
00014 #endif
00015 
00016 
00017 #include <nds.h>
00018 #include <nds/memory.h>
00019 #include <nds/bios.h>
00020 #include <malloc.h>
00021 
00022 extern bool PA_Screen;
00023 
00024 typedef struct {
00025    u8 NoIdea; 
00026    u8 Year;
00027    u8 Month;
00028    u8 Day;
00029    u8 NoIdea2;
00030    u8 Hour;
00031    u8 Minutes;
00032    u8 Seconds;
00033 } RTC;
00034 extern RTC PA_RTC;
00035 
00036 extern inline void PA_WaitForVBL(void);
00037 
00038 extern s16 PA_ScreenSpace; // Espace entre les 2 écrans...+192
00039 
00040 #define BG_GFX1                    0x6000000
00041 #define BG_GFX2                    0x6200000
00042 #define SPRITE_GFX1         0x6400000
00043 #define SPRITE_GFX2         0x6600000
00044 
00045 
00046 //Pour le DMA Copy...
00047 #define REG_DMA3SRC *(volatile u32*)0x040000D4
00048 #define REG_DMA3DST *(volatile u32*)0x040000D8
00049 #define REG_DMA3CNT *(volatile u32*)0x040000DC
00050 #define DMA_ON 0x80000000
00051 #define DMA_NOW 0x00000000
00052 #define DMA_16 0x00000000
00053 #define DMA_32 0x04000000
00054 #define DMA_16NOW (DMA_ON | DMA_NOW | DMA_16)
00055 #define DMA_32NOW (DMA_ON | DMA_NOW | DMA_32)
00056 #define DMA_Copy(source, dest, count, mode) {REG_DMA3SRC = (u32)source; REG_DMA3DST = (u32)dest; REG_DMA3CNT = (count) | (mode);}
00057 
00058 #define DMA_Clear(dest, count, mode) {REG_DMA3SRC = (u32)Blank; REG_DMA3DST = (u32)dest; REG_DMA3CNT = (count) | (mode);}
00059 
00060 #define DMA_Force(ulVal,dest, count, mode) {REG_DMA3SRC=(u32)&ulVal; REG_DMA3DST = (u32)dest; REG_DMA3CNT = (count) |(mode) | DMA_SRC_FIX;}
00061 
00062 // Commandes pour la lumière des écrans
00063 #define BACKLIGHT(screen)   BIT(2+screen)
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 #include <stdarg.h> // Pour le système de text
00072 #include <string.h>
00073 
00074 #include "gbfs.h"
00075 #include "gba-jpeg-decode.h"
00076 #include "Sound9.h"
00077 
00078 
00079 #define _REG8 *(volatile u16 *)
00080 #define _REG16 *(volatile u16 *)
00081 #define _REG32 *(volatile u32 *)
00082 
00083 #include "arm9/vidfile.h"
00084 #include "arm9/PA_Sprite.h"
00085 #include "arm9/PA_SpriteDual.h"
00086 #include "arm9/PA_Sound.h"
00087 #include "arm9/PA_Micro.h"
00088 #include "arm9/PA_Draw.h"
00089 #include "arm9/PA_Interrupt.h"
00090 #include "arm9/PA_Keys.h"
00091 
00092 #include "arm9/PA_Timer.h"
00093 
00094 #ifdef TEXT_ALLSIZES
00095        #include "arm9/PA_API.h"  // API only if has text...
00096 #endif
00097 
00098 #include "arm9/PA_Math.h"
00099 #include "arm9/PA_Palette.h"
00100 #include "arm9/PA_PaletteDual.h"
00101 #include "arm9/PA_Save.h"
00102 #include "arm9/PA_FS.h"
00103 #include "arm9/PA_GBFS.h"
00104 #include "arm9/PA_SpecialFx.h"
00105 
00106 #include "arm9/PA_Tile.h"
00107 #include "arm9/PA_TileDual.h"
00108 
00109 #ifdef USE_KEYBOARD
00110        #include "arm9/PA_Keyboard.h"
00111 #endif
00112 
00113 #include "arm9/PA_Text.h"
00114 #include "arm9/PA_Window.h"
00115 
00116 #include "arm9/PA_Mode7.h"
00117 
00118 #ifdef USE_3D
00119        #include "arm9/PA_3D.h"
00120 #endif
00121 
00122 
00123 #include "arm9/PA_IA.h"
00124 
00125 
00126 #define SWITCH_SCREENS  (1<<15)
00127 
00128 
00129 
00130 #define N_HBLS 263
00131 
00132 
00133 
00142 extern u32 *Blank;
00143 
00144 
00145 
00146 
00147 
00148 
00149 
00151 // Général
00153 
00154 #define SIZEOF_8BIT(x)          (sizeof(x))
00155 #define SIZEOF_16BIT(x)         (sizeof(x)>>1)
00156 #define SIZEOF_32BIT(x)         (sizeof(x)>>2)
00157 
00158 
00159 
00160 
00161 #define CODE_IN_IWRAM __attribute__ ((section (".iwram"), long_call))
00162 #define IN_IWRAM __attribute__ ((section (".iwram")))
00163 #define CODE_IN_EWRAM __attribute__ ((section (".ewram"), long_call))
00164 #define IN_EWRAM __attribute__ ((section (".ewram")))
00165 #define PACKED __attribute__ ((packed))
00166 
00167 
00168 
00169 
00170 
00171 
00172 
00173 // Jpeg functions :
00174 void PA_jpeg_GetImageSize(char* name, int* width, int* height);
00175 void PA_jpeg_BltImage(char* name, u16* vram, int output_width, int output_height);
00176 
00177 extern const s16 PA_SIN[512];
00178 
00179 
00180 
00181 typedef struct {
00182    u8 Color;  // Favorite Color
00183    u8 BdayMonth; // Mois d'anniversaire
00184    u8 BdayDay;  // Jour de naissance
00185    u8 AlarmHour;
00186    u8 AlarmMinute;
00187    u8 Name[21];
00188    u8 NameLength;
00189    u8 Message[53];
00190    u8 MessageLength;
00191    u8 Language; // Langue... 0 pour Jap, 1 pour anglais, 2 pour francais...
00192 } infos;
00193 extern infos PA_UserInfo;
00194 
00195 #define INFO_COLOR *(u8*)0x027FFC82
00196 #define INFO_BDAY_MONTH *(u8*)0x027FFC83
00197 #define INFO_BDAY_DAY *(u8*)0x027FFC84
00198 #define INFO_ALARM_HOUR *(u8*)0x027FFCD2
00199 #define INFO_ALARM_MINUTE *(u8*)0x027FFCD3
00200 #define INFO_NAME *(u8*)0x027FFC86
00201 #define INFO_NAME_LENGTH *(u8*)0x027FFC9A
00202 #define INFO_MESSAGE *(u8*)0x027FFC9C
00203 #define INFO_MESSAGE_LENGTH *(u8*)0x027FFCD0
00204 #define INFO_LANGUAGE  *(u8*)(0x027FFCE4)
00205 
00206 
00218 void PA_Init(void);
00219 
00220 
00221 
00233 extern inline void PA_SetVideoMode(bool screen, u8 mode) {
00234        (*(vuint32*)(0x04000000 + (0x1000 * screen))) &= ~7;
00235        (*(vuint32*)(0x04000000 + (0x1000 * screen))) |= mode;
00236 }
00237 
00238 
00239 
00245 void PA_UpdateUserInfo(void);
00246 
00247 
00253 void PA_UpdateRTC(void);
00254 
00255 
00263 void PA_LoadSplash(void);
00264 
00265 
00271 void PA_NeoSplash(void);
00272 
00273 
00274 
00280 extern inline void PA_WaitForVBL(void){
00281 swiWaitForVBlank();
00282 }
00283 
00284 
00285 
00291 extern inline void PA_SwitchScreens(void) {
00292 POWER_CR ^= SWITCH_SCREENS; 
00293 PA_Screen = !PA_Screen;
00294 }
00295 
00296 
00302 extern inline void PA_InitCPUMeter() {
00303        PA_CPU = 0; 
00304        PA_MaxCPU = 0; 
00305        PA_lines = 0; 
00306        PA_VBLCount = 0;
00307        PA_nVBLs = 0;
00308 }
00309 
00310 
00311 
00312 
00313 
00319 #define PA_LidClosed() (IPC->buttons>>7)
00320 
00321 
00327 extern inline bool PA_CheckLid(void) {
00328 
00329 if (!PA_LidClosed()) return 0;
00330 else {
00331        u16 power_cr = POWER_CR; // backup the power...
00332        POWER_CR = 0; // Shutdown everything :p
00333        
00334        // Wait for the lid to be opened again...
00335        while(PA_LidClosed()) PA_WaitForVBL();
00336        
00337        // Return the power !
00338        POWER_CR = power_cr;
00339        return 1;
00340 }
00341 
00342 }
00343 
00344 
00345 
00346 
00347 
00375 void PA_Splash(void* tiles0, void* map0, void* tiles1, void* map1, s16 color0, s16 color1, s16 time);
00376 
00377 
00389 void PA_SetScreenLight(bool screen, bool light);
00390 
00391 
00392 
00393 
00394  // end of General
00396 
00397 
00398 void PA_Nothing(void);
00399 
00400 
00401 #ifdef __cplusplus
00402 }
00403 #endif
00404 #endif
00405 
00406 
00407 

Généré le Tue Jan 31 17:31:19 2006 pour PAlib par  doxygen 1.3.9.1