00001 #ifndef _PA_Save
00002 #define _PA_Save
00003
00004
00005
00006
00007 #define REG_SRAM 0x0A000000
00008
00026 #define PA_Save8bit(offset, value) SRAM[offset] = value
00027
00040 #define PA_Save16bit(offset, value) {PA_Save8bit(offset, value&255); PA_Save8bit(offset + 1, value >> 8);}
00041
00054 #define PA_Save32bit(offset, value) {PA_Save8bit(offset, value&255); PA_Save8bit(offset + 1, value >> 8); PA_Save8bit(offset + 2, value >> 16); PA_Save8bit(offset + 3, value >> 24);}
00055
00056
00069 extern inline s16 PA_SaveString(s32 offset, char *string) {
00070 u16 i = 0;
00071
00072 while(string[i]) {
00073 SRAM[i + offset] = string[i];
00074 i++;
00075 }
00076 SRAM[i + offset] = string[i];
00077 return (i+1);
00078 }
00079
00080
00095 extern inline void PA_SaveData(s32 offset, void* Data, u32 NBytes) {
00096 u16 i = 0;
00097 u8 *adress = (u8*)Data;
00098 for (i = 0; i < NBytes; i++) SRAM[i + offset] = adress[i];
00099 }
00100
00101
00102
00112 #define PA_Load8bit(offset) SRAM[offset]
00113
00122 #define PA_Load16bit(offset) (SRAM[offset] + (SRAM[offset+1] << 8))
00123
00132 #define PA_Load32bit(offset) (PA_Load8bit(offset) + (PA_Load8bit(offset + 1) << 8) + (PA_Load8bit(offset + 2) << 16) + (PA_Load8bit(offset + 3) << 24))
00133
00134
00146 extern inline s16 PA_LoadString(s32 offset, char *string) {
00147 s16 i = -1;
00148
00149 do {
00150 i++;
00151 string[i] = SRAM[i + offset];
00152 }
00153 while(string[i]);
00154 return i;
00155 }
00156
00157
00172 extern inline void PA_LoadData(s32 offset, void* Data, u16 NBytes) {
00173 u16 i = 0;
00174 u8 *adress = (u8*)Data;
00175 for (i = 0; i < NBytes; i++) adress[i] = SRAM[i + offset];
00176 }
00177
00179
00180
00181
00182
00183
00184 #endif
00185
00186