summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/nds/libnds/source/arm7/userSettings.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/libnds/source/arm7/userSettings.c')
-rw-r--r--c/src/lib/libbsp/arm/nds/libnds/source/arm7/userSettings.c142
1 files changed, 71 insertions, 71 deletions
diff --git a/c/src/lib/libbsp/arm/nds/libnds/source/arm7/userSettings.c b/c/src/lib/libbsp/arm/nds/libnds/source/arm7/userSettings.c
index eb546c7ddc..8e92cb2b79 100644
--- a/c/src/lib/libbsp/arm/nds/libnds/source/arm7/userSettings.c
+++ b/c/src/lib/libbsp/arm/nds/libnds/source/arm7/userSettings.c
@@ -1,71 +1,71 @@
-/*---------------------------------------------------------------------------------
- $Id$
-
- Copyright (C) 2005
- Dave Murphy (WinterMute)
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any
- damages arising from the use of this software.
-
- Permission is granted to anyone to use this software for any
- purpose, including commercial applications, and to alter it and
- redistribute it freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you
- must not claim that you wrote the original software. If you use
- this software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and
- must not be misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source
- distribution.
-
----------------------------------------------------------------------------------*/
-
-#include <nds/arm7/serial.h>
-#include <nds/system.h>
-#include <string.h>
-
-//---------------------------------------------------------------------------------
-void readUserSettings() {
-//---------------------------------------------------------------------------------
-
- PERSONAL_DATA slot1;
- PERSONAL_DATA slot2;
-
- short slot1count, slot2count;
- short slot1CRC, slot2CRC;
-
- uint32 userSettingsBase;
- readFirmware( 0x20, &userSettingsBase,2);
-
- uint32 slot1Address = userSettingsBase * 8;
- uint32 slot2Address = userSettingsBase * 8 + 0x100;
-
- readFirmware( slot1Address , &slot1, sizeof(PERSONAL_DATA));
- readFirmware( slot2Address , &slot2, sizeof(PERSONAL_DATA));
- readFirmware( slot1Address + 0x70, &slot1count, 2);
- readFirmware( slot2Address + 0x70, &slot2count, 2);
- readFirmware( slot1Address + 0x72, &slot1CRC, 2);
- readFirmware( slot2Address + 0x72, &slot2CRC, 2);
-
- // default to slot 1 user Settings
- void *currentSettings = &slot1;
-
- short calc1CRC = swiCRC16( 0xffff, &slot1, sizeof(PERSONAL_DATA));
- short calc2CRC = swiCRC16( 0xffff, &slot2, sizeof(PERSONAL_DATA));
-
- // bail out if neither slot is valid
- if ( calc1CRC != slot1CRC && calc2CRC != slot2CRC) return;
-
- // if both slots are valid pick the most recent
- if ( calc1CRC == slot1CRC && calc2CRC == slot2CRC ) {
- currentSettings = (slot2count == (( slot2count + 1 ) & 0x7f) ? &slot2 : &slot1);
- } else {
- if ( calc2CRC == slot2CRC )
- currentSettings = &slot2;
- }
- memcpy ( PersonalData, currentSettings, sizeof(PERSONAL_DATA));
-
-}
+/*---------------------------------------------------------------------------------
+ $Id$
+
+ Copyright (C) 2005
+ Dave Murphy (WinterMute)
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you
+ must not claim that you wrote the original software. If you use
+ this software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and
+ must not be misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source
+ distribution.
+
+---------------------------------------------------------------------------------*/
+
+#include <nds/arm7/serial.h>
+#include <nds/system.h>
+#include <string.h>
+
+//---------------------------------------------------------------------------------
+void readUserSettings() {
+//---------------------------------------------------------------------------------
+
+ PERSONAL_DATA slot1;
+ PERSONAL_DATA slot2;
+
+ short slot1count, slot2count;
+ short slot1CRC, slot2CRC;
+
+ uint32 userSettingsBase;
+ readFirmware( 0x20, &userSettingsBase,2);
+
+ uint32 slot1Address = userSettingsBase * 8;
+ uint32 slot2Address = userSettingsBase * 8 + 0x100;
+
+ readFirmware( slot1Address , &slot1, sizeof(PERSONAL_DATA));
+ readFirmware( slot2Address , &slot2, sizeof(PERSONAL_DATA));
+ readFirmware( slot1Address + 0x70, &slot1count, 2);
+ readFirmware( slot2Address + 0x70, &slot2count, 2);
+ readFirmware( slot1Address + 0x72, &slot1CRC, 2);
+ readFirmware( slot2Address + 0x72, &slot2CRC, 2);
+
+ // default to slot 1 user Settings
+ void *currentSettings = &slot1;
+
+ short calc1CRC = swiCRC16( 0xffff, &slot1, sizeof(PERSONAL_DATA));
+ short calc2CRC = swiCRC16( 0xffff, &slot2, sizeof(PERSONAL_DATA));
+
+ // bail out if neither slot is valid
+ if ( calc1CRC != slot1CRC && calc2CRC != slot2CRC) return;
+
+ // if both slots are valid pick the most recent
+ if ( calc1CRC == slot1CRC && calc2CRC == slot2CRC ) {
+ currentSettings = (slot2count == (( slot2count + 1 ) & 0x7f) ? &slot2 : &slot1);
+ } else {
+ if ( calc2CRC == slot2CRC )
+ currentSettings = &slot2;
+ }
+ memcpy ( PersonalData, currentSettings, sizeof(PERSONAL_DATA));
+
+}