diff --git a/src/cheats.c b/src/cheats.c index 7ea44d977b..980c8bbd54 100644 --- a/src/cheats.c +++ b/src/cheats.c @@ -211,7 +211,7 @@ static void cheat_increase_money(money32 amount) static void cheat_clear_loan() { // First give money - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_INCREASEMONEY, RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), GAME_COMMAND_CHEAT, 0, 0); + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_INCREASEMONEY, gBankLoan, GAME_COMMAND_CHEAT, 0, 0); // Then pay the loan money32 newLoan; diff --git a/src/editor.c b/src/editor.c index 613b9ba654..2f9f774803 100644 --- a/src/editor.c +++ b/src/editor.c @@ -460,9 +460,9 @@ static void editor_clear_map_for_editing() finance_reset_cash_to_initial(); finance_update_loan_hash(); - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = clamp( + gBankLoan = clamp( MONEY(0,00), - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), + gBankLoan, MONEY(5000000,00) ); diff --git a/src/interface/console.c b/src/interface/console.c index c7da106ba6..dd4977e0bd 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -474,7 +474,7 @@ static int cc_get(const utf8 **argv, int argc) console_printf("money %d.%d0", DECRYPT_MONEY(gCashEncrypted) / 10, DECRYPT_MONEY(gCashEncrypted) % 10); } else if (strcmp(argv[0], "current_loan") == 0) { - console_printf("current_loan %d", RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) / 10); + console_printf("current_loan %d", gBankLoan / 10); } else if (strcmp(argv[0], "max_loan") == 0) { console_printf("max_loan %d", RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) / 10); @@ -606,7 +606,7 @@ static int cc_set(const utf8 **argv, int argc) console_execute_silent("get money"); } else if (strcmp(argv[0], "current_loan") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); + gBankLoan = clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); console_execute_silent("get current_loan"); } else if (strcmp(argv[0], "max_loan") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { diff --git a/src/management/finance.c b/src/management/finance.c index 3068579d01..0a20038cbf 100644 --- a/src/management/finance.c +++ b/src/management/finance.c @@ -109,7 +109,7 @@ void finance_pay_research() */ void finance_pay_interest() { - money32 current_loan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, sint32); + money32 current_loan = gBankLoan; sint16 current_interest = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_INTEREST_RATE, sint16); money32 tempcost = (current_loan * 5 * current_interest) >> 14; // (5 * interest) / 2^14 is pretty close to @@ -178,7 +178,7 @@ void finance_init() { RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) = MONEY(10000,00); // Cheat detection gCashEncrypted = ENCRYPT_MONEY(MONEY(10000,00)); - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = MONEY(10000,00); + gBankLoan = MONEY(10000,00); RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = MONEY(20000,00); RCT2_GLOBAL(0x013587D0, uint32) = 0; @@ -222,7 +222,7 @@ void finance_update_daily_profit() current_profit -= research_cost_table[level]; // Loan costs - money32 current_loan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + money32 current_loan = gBankLoan; current_profit -= current_loan / 600; // Ride costs @@ -253,7 +253,7 @@ void finance_update_loan_hash() sint32 value = 0x70093A; value -= RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32); value = ror32(value, 5); - value -= RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + value -= gBankLoan; value = ror32(value, 7); value += RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32); value = ror32(value, 3); @@ -272,7 +272,7 @@ money32 finance_get_initial_cash() money32 finance_get_current_loan() { - return RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + return gBankLoan; } money32 finance_get_maximum_loan() @@ -294,7 +294,7 @@ void game_command_set_current_loan(int* eax, int* ebx, int* ecx, int* edx, int* money32 money, loanDifference, currentLoan; money32 newLoan = *edx; - currentLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + currentLoan = gBankLoan; money = DECRYPT_MONEY(gCashEncrypted); loanDifference = currentLoan - newLoan; @@ -315,7 +315,7 @@ void game_command_set_current_loan(int* eax, int* ebx, int* ecx, int* edx, int* if (*ebx & GAME_COMMAND_FLAG_APPLY) { money -= loanDifference; - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = newLoan; + gBankLoan = newLoan; RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) = money; gCashEncrypted = ENCRYPT_MONEY(money); finance_update_loan_hash(); diff --git a/src/management/finance.h b/src/management/finance.h index 013d58538f..55d3966df1 100644 --- a/src/management/finance.h +++ b/src/management/finance.h @@ -47,6 +47,7 @@ enum { #define EXPENDITURE_TABLE_TOTAL_COUNT (EXPENDITURE_TABLE_MONTH_COUNT * RCT_EXPENDITURE_TYPE_COUNT) #define gCashEncrypted RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, money32) +#define gBankLoan RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) extern const money32 research_cost_table[4]; diff --git a/src/rct1/S4Importer.cpp b/src/rct1/S4Importer.cpp index 32b5579173..962deb79f4 100644 --- a/src/rct1/S4Importer.cpp +++ b/src/rct1/S4Importer.cpp @@ -657,7 +657,7 @@ void S4Importer::ImportFinance() gConstructionRightsPrice = _s4.construction_rights_price; gCashEncrypted = ENCRYPT_MONEY(_s4.cash); - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = _s4.loan; + gBankLoan = _s4.loan; RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = _s4.max_loan; RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) = _s4.cash; diff --git a/src/scenario.c b/src/scenario.c index fdb1f933aa..d9a2b28709 100644 --- a/src/scenario.c +++ b/src/scenario.c @@ -280,7 +280,7 @@ void scenario_begin() gParkRating = calculate_park_rating(); gParkValue = calculate_park_value(); gCompanyValue = calculate_company_value(); - RCT2_GLOBAL(0x013587D0, money32) = RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + RCT2_GLOBAL(0x013587D0, money32) = RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, money32) - gBankLoan; gCashEncrypted = ENCRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_INITIAL_CASH, sint32)); finance_update_loan_hash(); @@ -1420,7 +1420,7 @@ static void scenario_objective_check_replay_loan_and_park_value() { money32 objectiveParkValue = RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_CURRENCY, money32); money32 parkValue = gParkValue; - money32 currentLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + money32 currentLoan = gBankLoan; if (currentLoan <= 0 && parkValue >= objectiveParkValue) scenario_success(); diff --git a/src/windows/editor_scenario_options.c b/src/windows/editor_scenario_options.c index 2fc622fc63..71d4700343 100644 --- a/src/windows/editor_scenario_options.c +++ b/src/windows/editor_scenario_options.c @@ -502,9 +502,9 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex, window_invalidate(w); break; case WIDX_INITIAL_LOAN_INCREASE: - if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) < MONEY(5000000,00)) { - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) += MONEY(1000,00); - RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); + if (gBankLoan < MONEY(5000000,00)) { + gBankLoan += MONEY(1000,00); + RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); finance_update_loan_hash(); } else { window_error_open(3250, STR_NONE); @@ -512,9 +512,9 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex, window_invalidate(w); break; case WIDX_INITIAL_LOAN_DECREASE: - if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) > MONEY(0,00)) { - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) -= MONEY(1000,00); - RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); + if (gBankLoan > MONEY(0,00)) { + gBankLoan -= MONEY(1000,00); + RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) = max(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); finance_update_loan_hash(); } else { window_error_open(3251, STR_NONE); @@ -524,7 +524,7 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex, case WIDX_MAXIMUM_LOAN_INCREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) < MONEY(5000000,00)) { RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) += MONEY(1000,00); - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = min(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); + gBankLoan = min(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); finance_update_loan_hash(); } else { window_error_open(3252, STR_NONE); @@ -534,7 +534,7 @@ static void window_editor_scenario_options_financial_mousedown(int widgetIndex, case WIDX_MAXIMUM_LOAN_DECREASE: if (RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) > MONEY(0,00)) { RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) -= MONEY(1000,00); - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) = min(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); + gBankLoan = min(gBankLoan, RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32)); finance_update_loan_hash(); } else { window_error_open(3253, STR_NONE); @@ -664,7 +664,7 @@ static void window_editor_scenario_options_financial_paint(rct_window *w, rct_dr x = w->x + w->widgets[WIDX_INITIAL_LOAN].left + 1; y = w->y + w->widgets[WIDX_INITIAL_LOAN].top; - gfx_draw_string_left(dpi, 3246, &RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32), 0, x, y); + gfx_draw_string_left(dpi, 3246, &gBankLoan, 0, x, y); } if (w->widgets[WIDX_MAXIMUM_LOAN].type != WWT_EMPTY) { diff --git a/src/windows/finances.c b/src/windows/finances.c index ad0eb81e9d..f553dbe74a 100644 --- a/src/windows/finances.c +++ b/src/windows/finances.c @@ -600,13 +600,13 @@ static void window_finances_summary_mousedown(int widgetIndex, rct_window*w, rct switch (widgetIndex) { case WIDX_LOAN_INCREASE: - newLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) + MONEY(1000, 00); + newLoan = gBankLoan + MONEY(1000, 00); gGameCommandErrorTitle = STR_CANT_BORROW_ANY_MORE_MONEY; finance_set_loan(newLoan); break; case WIDX_LOAN_DECREASE: - if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) > 0) { - newLoan = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) - MONEY(1000, 00); + if (gBankLoan > 0) { + newLoan = gBankLoan - MONEY(1000, 00); gGameCommandErrorTitle = STR_CANT_PAY_BACK_LOAN; finance_set_loan(newLoan); } @@ -640,7 +640,7 @@ static void window_finances_summary_invalidate(rct_window *w) } window_finances_set_pressed_tab(w); - RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 6, money32) = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 6, money32) = gBankLoan; } /** @@ -825,7 +825,7 @@ static void window_finances_financial_graph_paint(rct_window *w, rct_drawpixelin // Cash (less loan) money32 cashLessLoan = DECRYPT_MONEY(gCashEncrypted) - - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + gBankLoan; gfx_draw_string_left( dpi, diff --git a/src/world/park.c b/src/world/park.c index 780443af37..0bd65dc363 100644 --- a/src/world/park.c +++ b/src/world/park.c @@ -329,7 +329,7 @@ money32 calculate_company_value() return DECRYPT_MONEY(gCashEncrypted) + gParkValue - - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + gBankLoan; } /** @@ -612,7 +612,7 @@ void park_update_histories() // Update current cash history for (int i = 127; i > 0; i--) gCashHistory[i] = gCashHistory[i - 1]; - gCashHistory[0] = DECRYPT_MONEY(gCashEncrypted) - RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32); + gCashHistory[0] = DECRYPT_MONEY(gCashEncrypted) - gBankLoan; window_invalidate_by_class(WC_FINANCES); // Update weekly profit history