diff options
Diffstat (limited to 'csrc')
-rw-r--r-- | csrc/game_init.c | 10 | ||||
-rw-r--r-- | csrc/global.h | 1 | ||||
-rw-r--r-- | csrc/loadsave.c | 62 | ||||
-rw-r--r-- | csrc/main.c | 3 |
4 files changed, 28 insertions, 48 deletions
diff --git a/csrc/game_init.c b/csrc/game_init.c index 5c271d2..a160be7 100644 --- a/csrc/game_init.c +++ b/csrc/game_init.c @@ -45,7 +45,7 @@ int init_new_game(int a0) dw_48a354 = malloc(0x96000); dw_48a358 = malloc(0x96000); mkf_jump = load_mkf("JUMP.MKF"); - read_mkf(mkf_jump, game_stage*4+w_4991b8 /* sign ext */, dw_48a358, NULL); + read_mkf(mkf_jump, game_stage * 4 + game_map, dw_48a358, NULL); fcn_004552b7(dw_48a354, dw_48a358, 0x96000, -16); /* @ bit_functions.c */ dw_48a3a4 = allocate_some_struct(440, 155, 0, 0); dw_48a3a0 = allocate_some_struct(192, 461, 0, 0); @@ -54,7 +54,7 @@ int init_new_game(int a0) dw_48a3ac = ebp = 0; if (a0 == 0) { - w_4991b8 = 0; + game_map = 0; memset(0x4990f4, 0, 12); memset(0x46cb3c, 0, 28); dw_46cb3c = 2; @@ -92,7 +92,7 @@ int init_new_game(int a0) fcn_00404d0a(0, eax); } - dw_46cb54 = w_4991b8; /* sign ext */ + dw_46cb54 = game_map; /* sign ext */ edx = game_stage; /* sign ext */ eax = edx*20; @@ -187,7 +187,7 @@ int init_new_game(int a0) dw_499110 = dw_46cb48; dw_49911c = days[dw_46cb4c]; dw_499108 = winning_condition[dw_46cb50] * game_initial_fund; - w_4991b8 = w_46cb54; + game_map = w_46cb54; price_index = 1; dw_4990e4 = dw_499084 = dw_4990dc = dw_4990ec = dw_499100 = esi = 0; @@ -199,7 +199,7 @@ int init_new_game(int a0) dword [ecx + eax*4 + 0x497328] = 0; } } - int _m = game_stage * 4 + w_4991b8; // sign ext + int _m = game_stage * 4 + game_map; // sign ext memcpy(stocks, &game_stocks[_m * 12], sizeof(stock_info) * 12); float sum = 0; /* esp + 8 */ diff --git a/csrc/global.h b/csrc/global.h index 7fe28d9..c8de81a 100644 --- a/csrc/global.h +++ b/csrc/global.h @@ -29,6 +29,7 @@ extern HINSTANCE ghInstance; // 48a064 extern HWND gwindowHandle; // 48a0d4 extern RECT g_rect; /* struct tagRECT { left, top, right, bottom } @ 0x46cadc */ extern int16_t game_stage; +extern int16_t game_map; extern int price_index; /* card.c */ diff --git a/csrc/loadsave.c b/csrc/loadsave.c index cb07192..f2dc485 100644 --- a/csrc/loadsave.c +++ b/csrc/loadsave.c @@ -96,12 +96,10 @@ void fcn_00407ad2() { fcn_004080f5(); int mkf_map_ = load_mkf("MAP.MKF"); - eax = (game_stage*4+w_4991b8)*2; - dw_474945 = read_mkf(mkf_map_, eax, NULL, NULL); - eax = (game_stage*4+w_4991b8)+16; - dw_48badc = read_mkf(mkf_map_, eax, NULL, NULL); - eax = game_stage*4+w_4991b8+16; - dw_48bad0 = read_mkf(mkf_map_, eax, NULL, NULL); + int gmap = game_stage * 4 + game_map; + dw_474945 = read_mkf(mkf_map_, gmap * 2, NULL, NULL); + dw_48badc = read_mkf(mkf_map_, gmap + 16, NULL, NULL); + dw_48bad0 = read_mkf(mkf_map_, gmap + 16, NULL, NULL); memcpy(0x48b6b4, dw_474945 + 0x10, 512); dw_48bac4 = *(int*)dw_474945 + 0x210; dw_48bacc = *(int*)dw_474945 + 10896; /* 0x2a90 = 10896 */ @@ -111,12 +109,10 @@ void fcn_00407ad2() if (dw_47493c == 0) { int mkf_map_dat = load_mkf("MAPDAT.MKF"); if (eax != -1) { - eax = game_stage*4+w_4991b8; - dw_47493c = read_mkf(mkf_map_dat, eax, NULL, NULL); + dw_47493c = read_mkf(mkf_map_dat, gmap, NULL, NULL); unload_mkf(mkf_map_dat); } else { - eax = (game_stage*4+w_4991b8)*2+1; - dw_47493c = read_mkf(mkf_map_, eax, NULL, NULL); + dw_47493c = read_mkf(mkf_map_, gmap * 2 + 1, NULL, NULL); } /* 0x407c3f */ int *eax = dw_47493c; @@ -175,29 +171,18 @@ void fcn_00407ad2() dw_499088 = 0; } /* 0x407e0b */ - for (ebx = 0; ebx < 5; ebx++) { - eax = game_stage; /* sign ext */ - eax *= 4; - edx = *(int16_t*)0x4991b8; /* sign ext */ - esi = edx + eax; - eax = esi * 5 + ebx + 0x27; - *(int*)(0x48ae4c + ebx*4) = read_mkf(mkf_map_, eax, NULL, NULL); + for (int i = 0; i < 5; i++) { + *(int*)(0x48ae4c + i*4) = read_mkf(mkf_map_, gmap * 5 + 39 + i, NULL, NULL); } - edx = *(int16_t*)0x4991b8; /* sign ext */ - eax = game_stage; /* sign ext */ - edx += 0x4f; - eax = eax * 4 + edx; - dw_48ae60 = read_mkf(mkf_map_, eax, NULL, NULL); + dw_48ae60 = read_mkf(mkf_map_, gmap + 79, NULL, NULL); if (game_stage == 0) { - for (ebx = 0; ebx < 17; ebx++) { - dw_48ae64[ebx] = read_mkf(mkf_map_, ebx+0x57, NULL, NULL); + for (int i = 0; i < 17; i++) { + dw_48ae64[i] = read_mkf(mkf_map_, 87 + i, NULL, NULL); } } else { - edx = *(int16_t*)0x4991b8; - eax = edx*17; - esi = eax + 0x68; - for (ebx = 0; ebx < 17; ebx++) { - dw_48ae64[ebx] = read_mkf(mkf_map_, esi + ebx, NULL, NULL); + int b = game_map * 17 + 104; + for (int i = 0; i < 17; i++) { + dw_48ae64[i] = read_mkf(mkf_map_, b + i, NULL, NULL); } } for (ebx = 1; ebx <= dw_498e90; ebx++) { @@ -235,18 +220,12 @@ void fcn_00407ad2() fcn_0040b93b(ebx); continue; } -#if 0 - esi = ebx * 0x68; - eax = *(char*)(0x496b7b+esi) + 0x1b; -#endif + uint8_t eax = players[ebx].character + 0x1b; edx = read_mkf(mkf_map_, eax, NULL, NULL); eax = ebx * 0x34; *(int32_t*)(0x498eb0+eax) = edx; -#if 0 - if (*(char*)(0x496b7d+esi) == 0 - && *(char*)(0x496bcc+esi) == 0) { -#endif + if (players[ebx].who_plays == 0 && player[ebx].f100 == 0) { eax = *(int32_t*)(0x498eb0+eax); edx = *(int16_t*)(eax + 0xe); /* sign ext */ @@ -274,9 +253,8 @@ void fcn_00407ad2() fcn_00428caf(); dw_48bad8 = read_mkf(mkf_data, 0x205, NULL, NULL); dw_48bad4 = read_mkf(mkf_data, 0x207, NULL, NULL); - for (ebx = 0; ebx < 20; ebx++) { - eax = ebx + 0x18c; - dw_496930[ebx] = read_mkf(mkf_data, eax, NULL, NULL); + for (int i = 0; i < 20; i++) { + dw_496930[i] = read_mkf(mkf_data, 396 + i, NULL, NULL); } fcn_00454176(0x48234a); fcn_0040a4e1(0); @@ -301,7 +279,7 @@ int load_checkpoint(int n) fseek(fp, 4, SEEK_SET); fread(&global_rich4_cfg.day, 4, 1, fp); // read day,month,year - fread(0x4991b8, 2, 1, fp); + fread(&game_map, 2, 1, fp); fread(&game_stage, 2, 1, fp); fread(&nplayers, 4, 1, fp); fread(players, sizeof(player_info), 4, fp); @@ -325,7 +303,7 @@ int load_checkpoint(int n) /* 12 stocks */ fread(stocks, sizeof(stock_info), 12, fp); for (int i = 0; i < 12; i++) { - int m = game_stage * 4 + w_4991b8; + int m = game_stage * 4 + game_map; int idx = m * 12 + i; stocks[i].name_ptr = game_stocks[idx].name_ptr; } diff --git a/csrc/main.c b/csrc/main.c index 5cf1ba2..7132ed1 100644 --- a/csrc/main.c +++ b/csrc/main.c @@ -24,6 +24,7 @@ pos_t mpos[5] = { // 0x46cb28 }; int16_t game_stage; +int16_t game_map; int price_index; LRESULT CALLBACK windowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) @@ -266,7 +267,7 @@ int WINAPI WinMain(HINSTANCE hInstance, case_401de8_0: game_stage = 0; - w_4991b8 = 0; + game_map = 0; dw_4990f0 = 0; b_46cafc = 0; ret = fcn_004029fd(); |