1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-31 18:55:23 +01:00

add config save

This commit is contained in:
IntelOrca
2014-04-24 21:29:57 +01:00
parent eaec44e896
commit 66e4898217
4 changed files with 34 additions and 10 deletions

View File

@@ -23,19 +23,25 @@
#include "config.h"
#include "rct2.h"
static const int MagicNumber = 0x0003113A;
/**
*
* rct2: 0x006752D5
*/
void config_load()
{
HANDLE hFile;
DWORD bytes_read;
DWORD bytesRead;
hFile = CreateFile(get_file_path(PATH_ID_GAMECFG), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_FLAG_RANDOM_ACCESS | FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
// Read and check magic number
ReadFile(hFile, RCT2_ADDRESS(0x013CE928, void), 4, &bytes_read, NULL);
if (RCT2_GLOBAL(0x013CE928, int) == 0x0003113A) {
ReadFile(hFile, RCT2_ADDRESS(0x013CE928, void), 4, &bytesRead, NULL);
if (RCT2_GLOBAL(0x013CE928, int) == MagicNumber) {
// Read options
ReadFile(hFile, (void*)0x009AAC5C, 2155, &bytes_read, NULL);
ReadFile(hFile, (void*)0x009AAC5C, 2155, &bytesRead, NULL);
CloseHandle(hFile);
if (RCT2_GLOBAL(0x009AB4C6, sint8) == 1)
return;
@@ -64,3 +70,20 @@ void config_load()
RCT2_GLOBAL(0x009AACBD, sint16) = (RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_METRIC, sint8) + 1) * 256;
RCT2_GLOBAL(0x009AA00D, sint8) = 1;
}
/**
*
* rct2: 0x00675487
*/
void config_save()
{
HANDLE hFile;
DWORD bytesWritten;
hFile = CreateFile(get_file_path(PATH_ID_GAMECFG), GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile != INVALID_HANDLE_VALUE) {
WriteFile(hFile, &MagicNumber, 4, &bytesWritten, NULL);
WriteFile(hFile, 0x009AAC5C, 2155, &bytesWritten, NULL);
CloseHandle(hFile);
}
}

View File

@@ -28,5 +28,6 @@ enum {
};
void config_load();
void config_save();
#endif

View File

@@ -20,6 +20,7 @@
#include "addresses.h"
#include "audio.h"
#include "config.h"
#include "rct2.h"
#include "game.h"
#include "news_item.h"
@@ -111,9 +112,8 @@ void game_update()
if (RCT2_GLOBAL(0x009AAC73, uint8) != 255) {
RCT2_GLOBAL(0x009AAC73, uint8)++;
if (RCT2_GLOBAL(0x009AAC73, uint8) == 255) {
RCT2_CALLPROC_EBPSAFE(0x00675487);
}
if (RCT2_GLOBAL(0x009AAC73, uint8) == 255)
config_save();
}
}

View File

@@ -21,6 +21,7 @@
#include <string.h>
#include <time.h>
#include "addresses.h"
#include "config.h"
#include "date.h"
#include "game.h"
#include "gfx.h"
@@ -267,9 +268,8 @@ void title_update()
if (RCT2_GLOBAL(0x009AAC73, uint8) != 255) {
RCT2_GLOBAL(0x009AAC73, uint8)++;
if (RCT2_GLOBAL(0x009AAC73, uint8) == 255) {
RCT2_CALLPROC_EBPSAFE(0x00675487);
}
if (RCT2_GLOBAL(0x009AAC73, uint8) == 255)
config_save();
}
}