Document more addresses

Created defines for all the memory addresses I could find in peep/staff.c
and updated everywhere they're being used.
This commit is contained in:
medsouz 2015-08-16 18:25:17 -04:00
parent fb9f6be201
commit 7071bd9353
17 changed files with 141 additions and 142 deletions

View File

@ -228,6 +228,10 @@
#define RCT2_ADDRESS_MAP_ARROW_Z 0x009DEA4C
#define RCT2_ADDRESS_MAP_ARROW_DIRECTION 0x009DEA4E
#define RCT2_ADDRESS_COMMAND_MAP_X 0x009DEA5E
#define RCT2_ADDRESS_COMMAND_MAP_Y 0x009DEA60
#define RCT2_ADDRESS_COMMAND_MAP_Z 0x009DEA62
//Counts how many ticks the current screen has been open for
#define RCT2_ADDRESS_SCREEN_AGE 0x009DEA66
#define RCT2_ADDRESS_SCREEN_FLAGS 0x009DEA68
@ -467,6 +471,7 @@
#define RCT2_ADDRESS_RIDE_MEASUREMENTS 0x0138B60C
#define RCT2_ADDRESS_GRASS_SCENERY_TILEPOS 0x013B0E70
#define RCT2_ADDRESS_STAFF_PATROL_AREAS 0x013B0E72
#define RCT2_ADDRESS_CLIMATE 0x013CA746
#define RCT2_ADDRESS_CURRENT_WEATHER 0x013CA74A

View File

@ -29,9 +29,6 @@
#include "peep.h"
#include "staff.h"
uint32 *gStaffPatrolAreas = (uint32*)0x013B0E72;
uint8 *gStaffModes = (uint8*)0x013CA672;
/**
*
* rct2: 0x006BD3A4
@ -85,9 +82,9 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx,
uint16 _ax = *eax & 0xFFFF, _cx = *ecx & 0xFFFF, _dx = *edx & 0xFFFF;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_WAGES * 4;
RCT2_GLOBAL(0x009DEA5E, uint16) = _ax;
RCT2_GLOBAL(0x009DEA60, uint16) = _cx;
RCT2_GLOBAL(0x009DEA62, uint16) = _dx;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = _ax;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = _cx;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = _dx;
if (RCT2_GLOBAL(0x13573C8, uint16) < 0x190) {
*ebx = MONEY32_UNDEFINED;
@ -269,7 +266,7 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx,
RCT2_ADDRESS(RCT2_ADDRESS_STAFF_MODE_ARRAY, uint8)[newStaffId] = STAFF_MODE_WALK;
for (int edi = 0; edi < 0x80; edi++) {
int addr = 0x013B0E72 + (newStaffId << 9) + edi * 4;
int addr = RCT2_ADDRESS_STAFF_PATROL_AREAS + (newStaffId << 9) + edi * 4;
RCT2_GLOBAL(addr, uint32) = 0;
}
}
@ -327,12 +324,12 @@ void game_command_set_staff_patrol(int *eax, int *ebx, int *ecx, int *edx, int *
int mask = 1 << (patrolIndex & 0x1F);
int base = patrolIndex >> 5;
uint32 *patrolBits = (uint32*)(0x013B0E72 + patrolOffset + (base * 4));
uint32 *patrolBits = (uint32*)(RCT2_ADDRESS_STAFF_PATROL_AREAS + patrolOffset + (base * 4));
*patrolBits ^= mask;
int ispatrolling = 0;
for(int i = 0; i < 128; i++){
ispatrolling |= *(uint32*)(0x013B0E72 + patrolOffset + (i * 4));
ispatrolling |= *(uint32*)(RCT2_ADDRESS_STAFF_PATROL_AREAS + patrolOffset + (i * 4));
}
RCT2_ADDRESS(RCT2_ADDRESS_STAFF_MODE_ARRAY, uint8)[peep->staff_id] &= ~2;
@ -406,7 +403,7 @@ void staff_update_greyed_patrol_areas()
for (int staff_type = 0; staff_type < STAFF_TYPE_COUNT; ++staff_type)
{
for (int i = 0; i < 128; ++i)
RCT2_ADDRESS(0x13B0E72 + ((staff_type + STAFF_MAX_COUNT) * 512), uint32)[i] = 0;
RCT2_ADDRESS(RCT2_ADDRESS_STAFF_PATROL_AREAS + ((staff_type + STAFF_MAX_COUNT) * 512), uint32)[i] = 0;
for (uint16 sprite_index = RCT2_GLOBAL(RCT2_ADDRESS_SPRITES_START_PEEP, uint16); sprite_index != SPRITE_INDEX_NULL; sprite_index = peep->next)
{
@ -415,7 +412,7 @@ void staff_update_greyed_patrol_areas()
if (peep->type == PEEP_TYPE_STAFF && staff_type == peep->staff_type)
{
for (int i = 0; i < 128; ++i)
RCT2_ADDRESS(0x13B0E72 + ((staff_type + STAFF_MAX_COUNT) * 512), uint32)[i] |= RCT2_ADDRESS(0x13B0E72 + (peep->staff_id * 512), uint32)[i];
RCT2_ADDRESS(RCT2_ADDRESS_STAFF_PATROL_AREAS + ((staff_type + STAFF_MAX_COUNT) * 512), uint32)[i] |= RCT2_ADDRESS(RCT2_ADDRESS_STAFF_PATROL_AREAS + (peep->staff_id * 512), uint32)[i];
}
}
@ -432,7 +429,7 @@ int staff_is_location_in_patrol_area(rct_peep *peep, int x, int y)
int mask = 1 << (patrolIndex & 0x1F);
int base = patrolIndex >> 5;
uint32 *patrolBits = (uint32*)(0x013B0E72 + patrolOffset + (base * 4));
uint32 *patrolBits = (uint32*)(RCT2_ADDRESS_STAFF_PATROL_AREAS + patrolOffset + (base * 4));
return (*patrolBits & mask) != 0;
}
@ -481,5 +478,5 @@ bool staff_is_patrol_area_set(int staffIndex, int x, int y)
int peepOffset = staffIndex * 128;
int offset = (x | y) >> 5;
int bitIndex = (x | y) & 0x1F;
return gStaffPatrolAreas[peepOffset + offset] & (1 << bitIndex);
return RCT2_ADDRESS(RCT2_ADDRESS_STAFF_PATROL_AREAS, uint32)[peepOffset + offset] & (1 << bitIndex);
}

View File

@ -49,9 +49,6 @@ enum STAFF_ORDERS{
STAFF_ORDERS_FIX_RIDES = (1 << 1)
};
extern uint32 *gStaffPatrolAreas;
extern uint8 *gStaffModes;
void game_command_update_staff_colour(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);
void game_command_hire_new_staff_member(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);
void game_command_set_staff_order(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);

View File

@ -146,12 +146,12 @@ void rct1_import_s4(rct1_s4 *s4)
}
memcpy((void*)0x0135A8F4, &s4->string_table, 0x2F51C);
memset((void*)0x013CA672, 0, 204);
memset((void*)RCT2_ADDRESS_STAFF_MODE_ARRAY, 0, 204);
memcpy((void*)0x0138B580, &s4->map_animations, 0x258F2);
memcpy((void*)0x013C6A72, &s4->patrol_areas, sizeof(s4->patrol_areas));
char *esi = (char*)0x13C6A72;
char *edi = (char*)0x13B0E72;
char *edi = (char*)RCT2_ADDRESS_STAFF_PATROL_AREAS;
int ebx, edx = 116;
do {
ebx = 32;
@ -173,7 +173,7 @@ void rct1_import_s4(rct1_s4 *s4)
memset(edi, 0, 64); edi += 64;
} while (--edx);
memcpy((void*)0x013CA672, &s4->unk_1F42AA, 116);
memcpy((void*)RCT2_ADDRESS_STAFF_MODE_ARRAY, &s4->unk_1F42AA, 116);
memcpy((void*)0x013CA73A, &s4->unk_1F431E, 4);
memcpy((void*)0x013CA73E, &s4->unk_1F4322, 0x41EA);
}

View File

@ -4862,7 +4862,7 @@ foundRideEntry:
if (!(flags & GAME_COMMAND_FLAG_APPLY)) {
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION;
RCT2_GLOBAL(0x009DEA5E, uint16) = 0x8000;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = 0x8000;
return 0;
}
@ -5063,7 +5063,7 @@ foundRideEntry:
window_invalidate_by_class(WC_RIDE_LIST);
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION;
RCT2_GLOBAL(0x009DEA5E, uint16) = 0x8000;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = 0x8000;
return 0;
}
@ -5091,18 +5091,18 @@ void game_command_demolish_ride(int *eax, int *ebx, int *ecx, int *edx, int *esi
{
uint8 ride_id = *(uint8*)edx;
RCT2_GLOBAL(0x009DEA5E, uint16) = 0;
RCT2_GLOBAL(0x009DEA60, uint16) = 0;
RCT2_GLOBAL(0x009DEA62, uint16) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = 0;
rct_ride *ride = &g_ride_list[ride_id];
int x = 0, y = 0, z = 0;
if(ride->overall_view != (uint16)-1){
x = ((ride->overall_view & 0xFF) * 32) + 16;
y = ((ride->overall_view >> 8) * 32) + 16;
z = map_element_height(x, y);
RCT2_GLOBAL(0x009DEA5E, uint16) = x;
RCT2_GLOBAL(0x009DEA60, uint16) = y;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
}
if(!(*ebx & 0x40) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) && !gConfigCheat.build_in_pause_mode){
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
@ -5198,9 +5198,9 @@ void game_command_demolish_ride(int *eax, int *ebx, int *ecx, int *edx, int *esi
ride->type = RIDE_TYPE_NULL;
window_invalidate_by_class(WC_RIDE_LIST);
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PARK_VALUE, money32) = calculate_park_value();
RCT2_GLOBAL(0x009DEA5E, uint16) = x;
RCT2_GLOBAL(0x009DEA60, uint16) = y;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION * 4;
return;
}else{
@ -6307,8 +6307,8 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
// When in known station num mode rideIndex is known and z is unknown
RCT2_GLOBAL(0x009E32B8, uint32) = 0;
RCT2_GLOBAL(0x009DEA5E, sint16) = x;
RCT2_GLOBAL(0x009DEA60, sint16) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, sint16) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, sint16) = y;
if (!sub_68B044()) {
return MONEY32_UNDEFINED;
@ -6411,7 +6411,7 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
}
z = ride->station_heights[station_num] * 8;
RCT2_GLOBAL(0x009DEA62, sint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, sint16) = z;
if (flags & GAME_COMMAND_FLAG_APPLY && !(flags & 0x48)){
footpath_remove_litter(x, y, z);

View File

@ -3181,9 +3181,9 @@ void game_command_place_track_design(int* eax, int* ebx, int* ecx, int* edx, int
int z = *edi;
uint8 flags = *ebx;
RCT2_GLOBAL(0x009DEA5E, sint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, sint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, sint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, sint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, sint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, sint16) = z;
if (!(flags & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED)){
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){
@ -3483,9 +3483,9 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
rct_map_element *mapElement;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION * 4;
RCT2_GLOBAL(0x009DEA5E, uint16) = originX + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = originY + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = originZ;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = originX + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = originY + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = originZ;
direction &= 3;
RCT2_GLOBAL(0x00F441D5, uint32) = properties_1;
RCT2_GLOBAL(0x00F441D9, uint32) = properties_2;
@ -3965,9 +3965,9 @@ void game_command_place_track(int *eax, int *ebx, int *ecx, int *edx, int *esi,
money32 track_remove(uint8 type, uint8 sequence, sint16 originX, sint16 originY, sint16 originZ, uint8 rotation, uint8 flags){
RCT2_GLOBAL(0x00141F56C, uint8) = 0;
RCT2_GLOBAL(0x009DEA5E, sint16) = originX + 16;
RCT2_GLOBAL(0x009DEA60, sint16) = originY + 16;
RCT2_GLOBAL(0x009DEA62, sint16) = originZ;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, sint16) = originX + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, sint16) = originY + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, sint16) = originZ;
RCT2_GLOBAL(0x00F440E1, uint8) = sequence;
switch (type){
@ -4252,9 +4252,9 @@ void game_command_set_brakes_speed(int *eax, int *ebx, int *ecx, int *edx, int *
brakesSpeed = ((*ebx >> 8) & 0xFF);
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION * 4;
RCT2_GLOBAL(0x009DEA5E, uint8) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint8) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint8) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint8) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint8) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint8) = z;
if (*ebx & GAME_COMMAND_FLAG_APPLY) {
*ebx = 0;

View File

@ -759,10 +759,10 @@ static void window_footpath_place_path_at_point(int x, int y)
if (cost == MONEY32_UNDEFINED) {
RCT2_GLOBAL(RCT2_ADDRESS_PATH_ERROR_OCCURED, uint8) = 1;
} else if (RCT2_GLOBAL(0x00F3EFD9, uint32) != 0) {
// bp = 0x009DEA62
// dx = 0x009DEA60
// cx = 0x009DEA5E
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
// bp = RCT2_ADDRESS_COMMAND_MAP_Z
// dx = RCT2_ADDRESS_COMMAND_MAP_Y
// cx = RCT2_ADDRESS_COMMAND_MAP_X
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
}
}

View File

@ -1284,7 +1284,7 @@ static void window_map_place_park_entrance_tool_down(int x, int y)
sound_play_panned(
SOUND_PLACE_ITEM,
0x8001,
RCT2_GLOBAL(0x009DEA62, uint16),
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16),
RCT2_GLOBAL(0x009DEA64, uint16),
RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_AGE, uint16)
);

View File

@ -374,9 +374,9 @@ static void window_maze_construction_entrance_tooldown(int x, int y, rct_window*
sound_play_panned(
SOUND_PLACE_ITEM,
0x8001,
RCT2_GLOBAL(0x009DEA5E, sint16),
RCT2_GLOBAL(0x009DEA60, sint16),
RCT2_GLOBAL(0x009DEA62, uint16));
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, sint16),
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, sint16),
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
rct_ride* ride = GET_RIDE(rideIndex);
if (ride_are_all_possible_entrances_and_exits_built(ride)){

View File

@ -3629,9 +3629,9 @@ static void ride_construction_tooldown_entrance_exit(int screenX, int screenY)
sound_play_panned(
SOUND_PLACE_ITEM,
0x8001,
RCT2_GLOBAL(0x009DEA5E, uint16),
RCT2_GLOBAL(0x009DEA60, uint16),
RCT2_GLOBAL(0x009DEA62, uint16)
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16),
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16),
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16)
);
rct_ride *ride = GET_RIDE(RCT2_GLOBAL(0x00F44192, uint8));

View File

@ -557,7 +557,7 @@ void window_staff_overview_dropdown(rct_window *w, int widgetIndex, int dropdown
for (int i = 0; i < 128; i++)
{
RCT2_ADDRESS(0x13B0E72 + (peep->staff_id * 512), uint32)[i] = 0;
RCT2_ADDRESS(RCT2_ADDRESS_STAFF_PATROL_AREAS + (peep->staff_id * 512), uint32)[i] = 0;
}
RCT2_ADDRESS(RCT2_ADDRESS_STAFF_MODE_ARRAY, uint8)[peep->staff_id] &= ~2;

View File

@ -347,7 +347,7 @@ static void window_staff_list_tooldown(rct_window *w, int widgetIndex, int x, in
continue;
if (isPatrolAreaSet) {
if (!(gStaffModes[peep->staff_id] & 2)) {
if (!(RCT2_ADDRESS(RCT2_ADDRESS_STAFF_MODE_ARRAY, uint8)[peep->staff_id] & 2)) {
continue;
}
if (!mechanic_is_location_in_patrol(peep, x, y)) {

View File

@ -1467,7 +1467,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
if (cost != MONEY32_UNDEFINED){
window_close_by_class(WC_ERROR);
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
success = 1;
break;
}
@ -1481,7 +1481,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
}
if (!success && !window_scenery_is_build_cluster_tool_on){
sound_play_panned(SOUND_ERROR, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_ERROR, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
return;
}
@ -1504,7 +1504,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
return;
}
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
break;
}
case 2:
@ -1529,7 +1529,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
if (cost != MONEY32_UNDEFINED){
window_close_by_class(WC_ERROR);
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
return;
}
@ -1541,7 +1541,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_Z_COORDINATE, sint16) += 8;
}
sound_play_panned(SOUND_ERROR, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_ERROR, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
break;
}
case 3:
@ -1567,7 +1567,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
if (cost != MONEY32_UNDEFINED){
window_close_by_class(WC_ERROR);
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
return;
}
@ -1579,7 +1579,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_Z_COORDINATE, sint16) += 8;
}
sound_play_panned(SOUND_ERROR, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_ERROR, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
}
break;
case 4:
@ -1598,7 +1598,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
if (cost == MONEY32_UNDEFINED)return;
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(0x009DEA5E, uint16), RCT2_GLOBAL(0x009DEA60, uint16), RCT2_GLOBAL(0x009DEA62, uint16));
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16), RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
window_banner_open(banner_id);
break;

View File

@ -145,7 +145,7 @@ static money32 footpath_element_insert(int type, int x, int y, int z, int slope,
return MONEY32_UNDEFINED;
if ((flags & GAME_COMMAND_FLAG_APPLY) && !(flags & (GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED | GAME_COMMAND_FLAG_GHOST)))
footpath_remove_litter(x, y, RCT2_GLOBAL(0x009DEA62, uint16));
footpath_remove_litter(x, y, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16));
// loc_6A649D:
RCT2_GLOBAL(0x00F3EFD9, money32) += MONEY(12, 00);
@ -312,9 +312,9 @@ static money32 footpath_place_real(int type, int x, int y, int z, int slope, int
rct_map_element *mapElement;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z * 8;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z * 8;
if (!(flags & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
@ -376,9 +376,9 @@ money32 footpath_remove_real(int x, int y, int z, int flags)
rct_map_element *mapElement;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z * 8;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z * 8;
if (!(flags & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;

View File

@ -873,9 +873,9 @@ void game_command_remove_scenery(int* eax, int* ebx, int* ecx, int* edx, int* es
cost = entry->small_scenery.removal_price * 10;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
RCT2_GLOBAL(0x009DEA5E, uint32) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint32) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint32) = base_height * 8;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint32) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint32) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32) = base_height * 8;
if (!(*ebx & 0x40) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
@ -894,7 +894,7 @@ void game_command_remove_scenery(int* eax, int* ebx, int* ecx, int* edx, int* es
}
// Check if the land is owned
if (!map_is_location_owned(x, y, RCT2_GLOBAL(0x009DEA62, uint32))){
if (!map_is_location_owned(x, y, RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32))){
*ebx = MONEY32_UNDEFINED;
return;
}
@ -932,9 +932,9 @@ void game_command_remove_large_scenery(int* eax, int* ebx, int* ecx, int* edx, i
int x = *eax;
int y = *ecx;
int z = map_element_height(x, y);
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
if (!(*ebx & 0x40) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode) {
@ -1061,9 +1061,9 @@ void game_command_remove_banner(int* eax, int* ebx, int* ecx, int* edx, int* esi
uint8 banner_position = *edx >> 8;
int z = base_height * 8;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
if(!(*ebx & 0x40) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
*ebx = MONEY32_UNDEFINED;
@ -1111,9 +1111,9 @@ void game_command_set_scenery_colour(int* eax, int* ebx, int* ecx, int* edx, int
uint8 color1 = *ebp;
uint8 color2 = *ebp >> 8;
int z = base_height * 8;
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gCheatsSandboxMode){
if (!map_is_location_owned(x, y, z)){
*ebx = MONEY32_UNDEFINED;
@ -1162,9 +1162,9 @@ void game_command_set_fence_colour(int* eax, int* ebx, int* ecx, int* edx, int*
uint8 color2 = *ebp;
uint8 color3 = *ebp >> 8;
int z = base_height * 8;
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
if((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) || map_is_location_in_park(x, y) || gCheatsSandboxMode){
rct_map_element* map_element = map_get_first_element_at(x / 32, y / 32);
while(map_element_get_type(map_element) != MAP_ELEMENT_TYPE_FENCE ||
@ -1215,9 +1215,9 @@ void game_command_set_large_scenery_colour(int* eax, int* ebx, int* ecx, int* ed
uint8 color1 = *ebp;
uint8 color2 = *ebp >> 8;
int z = map_element_height(x, y);
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
rct_map_element* map_element = map_get_first_element_at(x / 32, y / 32);
@ -1330,9 +1330,9 @@ void game_command_set_banner_colour(int* eax, int* ebx, int* ecx, int* edx, int*
uint8 banner_position = *edx >> 8;
uint8 color = *ebp;
int z = (base_height * 8);
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gCheatsSandboxMode){
if (!map_is_location_owned(x, y, z - 16)){
@ -1468,9 +1468,9 @@ money32 map_clear_scenery(int x0, int y0, int x1, int y1, int clear, int flags)
x = (x0 + x1) / 2 + 16;
y = (y0 + y1) / 2 + 16;
z = map_element_height(x, y);
RCT2_GLOBAL(0x009DEA5E, uint16) = x;
RCT2_GLOBAL(0x009DEA60, uint16) = y;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
x0 = max(x0, 32);
y0 = max(y0, 32);
@ -1529,9 +1529,9 @@ money32 map_change_surface_style(int x0, int y0, int x1, int y1, uint8 surfaceSt
int heightMid = map_element_height(xMid, yMid);
RCT2_GLOBAL(0x009DEA5E, uint16) = xMid;
RCT2_GLOBAL(0x009DEA60, uint16) = yMid;
RCT2_GLOBAL(0x009DEA62, uint16) = heightMid;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = xMid;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = yMid;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = heightMid;
RCT2_GLOBAL(0x009E32B4, uint32) = 0;
money32 cost = 0;
@ -1759,9 +1759,9 @@ money32 raise_land(int flags, int x, int y, int z, int ax, int ay, int bx, int b
}
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
RCT2_GLOBAL(0x009DEA5E, uint32) = x;
RCT2_GLOBAL(0x009DEA60, uint32) = y;
RCT2_GLOBAL(0x009DEA62, uint32) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint32) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint32) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32) = z;
return cost;
}
@ -1823,9 +1823,9 @@ money32 lower_land(int flags, int x, int y, int z, int ax, int ay, int bx, int b
}
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
RCT2_GLOBAL(0x009DEA5E, uint32) = x;
RCT2_GLOBAL(0x009DEA60, uint32) = y;
RCT2_GLOBAL(0x009DEA62, uint32) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint32) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint32) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32) = z;
return cost;
}
@ -1887,9 +1887,9 @@ money32 raise_water(sint16 x0, sint16 y0, sint16 x1, sint16 y1, uint8 flags)
z = water_height_z;
if (z != 0)
z = base_height_z;
RCT2_GLOBAL(0x009DEA5E, uint32) = x;
RCT2_GLOBAL(0x009DEA60, uint32) = y;
RCT2_GLOBAL(0x009DEA62, uint32) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint32) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint32) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32) = z;
sound_play_panned(SOUND_LAYING_OUT_WATER, 0x8001, x, y, z);
}
@ -1949,9 +1949,9 @@ money32 lower_water(sint16 x0, sint16 y0, sint16 x1, sint16 y1, uint8 flags)
z = water_height_z;
if (z == 0)
z = base_height_z;
RCT2_GLOBAL(0x009DEA5E, uint32) = x;
RCT2_GLOBAL(0x009DEA60, uint32) = y;
RCT2_GLOBAL(0x009DEA62, uint32) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint32) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint32) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32) = z;
sound_play_panned(SOUND_LAYING_OUT_WATER, 0x8001, x, y, z);
}
@ -2036,9 +2036,9 @@ void game_command_set_water_height(int* eax, int* ebx, int* ecx, int* edx, int*
int y = *ecx;
uint8 base_height = *edx;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
RCT2_GLOBAL(0x009DEA5E, sint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, sint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint32) = base_height * 8;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, sint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, sint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32) = base_height * 8;
if(RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
*ebx = MONEY32_UNDEFINED;
@ -2170,9 +2170,9 @@ void game_command_place_banner(int* eax, int* ebx, int* ecx, int* edx, int* esi,
uint8 edge = *edx >> 8;
uint8 colour = *edi;
uint8 type = *ebx >> 8;
RCT2_GLOBAL(0x009DEA5E, uint32) = x + 16;
RCT2_GLOBAL(0x009DEA60, uint32) = y + 16;
RCT2_GLOBAL(0x009DEA62, uint32) = base_height * 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint32) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint32) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint32) = base_height * 16;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
if(RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) == 0 || gConfigCheat.build_in_pause_mode){
if(sub_68B044() && x < 8192 && y < 8192){
@ -2263,15 +2263,15 @@ void game_command_place_scenery(int* eax, int* ebx, int* ecx, int* edx, int* esi
if(base_height & 0xFFFF0000){
base_height >>= 16;
}
RCT2_GLOBAL(0x009DEA5E, uint16) = x;
RCT2_GLOBAL(0x009DEA60, uint16) = y;
RCT2_GLOBAL(0x009DEA62, uint16) = base_height;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = base_height;
if(F64EC8){
base_height = F64EC8;
RCT2_GLOBAL(0x009DEA62, uint16) = base_height;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = base_height;
}
RCT2_GLOBAL(0x009DEA5E, uint16) += 16;
RCT2_GLOBAL(0x009DEA60, uint16) += 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) += 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) += 16;
if(RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) == 0 || gConfigCheat.build_in_pause_mode){
if(sub_68B044()){
if(RCT2_GLOBAL(0x009D8150, uint8) & 1 || (x <= RCT2_GLOBAL(RCT2_ADDRESS_MAP_MAX_XY, uint16) && y <= RCT2_GLOBAL(RCT2_ADDRESS_MAP_MAX_XY, uint16))){
@ -2474,12 +2474,12 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
// Banner index *not used*
RCT2_GLOBAL(0x00141F728, uint8) = 0xFF;
RCT2_GLOBAL(0x009DEA5E, sint16) = position.x + 16;
RCT2_GLOBAL(0x009DEA60, sint16) = position.y + 16;
RCT2_GLOBAL(0x009DEA62, sint16) = position.z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, sint16) = position.x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, sint16) = position.y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, sint16) = position.z;
if (position.z == 0){
RCT2_GLOBAL(0x009DEA62, sint16) = map_element_height(position.x, position.y) & 0xFFFF;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, sint16) = map_element_height(position.x, position.y) & 0xFFFF;
}
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){
@ -2724,9 +2724,9 @@ void game_command_place_large_scenery(int* eax, int* ebx, int* ecx, int* edx, in
uint8 rotation = *ebx >> 8;
uint8 entry_index = *edi;
int base_height = map_element_height(x, y);
RCT2_GLOBAL(0x009DEA5E, sint16) = x + 16;
RCT2_GLOBAL(0x009DEA60, sint16) = y + 16;
RCT2_GLOBAL(0x009DEA62, sint16) = base_height;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, sint16) = x + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, sint16) = y + 16;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, sint16) = base_height;
RCT2_GLOBAL(0x00F64F14, uint8) = 0;
uint8 banner_id = 0xFF;
RCT2_GLOBAL(0x00F4389A, uint32) = 0;
@ -2803,7 +2803,7 @@ void game_command_place_large_scenery(int* eax, int* ebx, int* ecx, int* edx, in
if(z != 0){
F43884 = z;
}
RCT2_GLOBAL(0x009DEA62, sint16) = F43884;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, sint16) = F43884;
tile = scenery_entry->large_scenery.tiles;
uint8 tile_num = 0;
do{

View File

@ -812,9 +812,9 @@ void game_command_remove_park_entrance(int *eax, int *ebx, int *ecx, int *edx, i
z = *edx * 16;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LAND_PURCHASE * 4;
RCT2_GLOBAL(0x009DEA5E, uint16) = x;
RCT2_GLOBAL(0x009DEA60, uint16) = y;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
if (!(*ebx & GAME_COMMAND_FLAG_APPLY)) {
*ebx = 0;
@ -1103,9 +1103,9 @@ int map_buy_land_rights(int x0, int y0, int x1, int y1, int setting, int flags)
x = (x0 + x1) / 2 + 16;
y = (y0 + y1) / 2 + 16;
z = map_element_height(x, y);
RCT2_GLOBAL(0x009DEA5E, uint16) = x;
RCT2_GLOBAL(0x009DEA60, uint16) = y;
RCT2_GLOBAL(0x009DEA62, uint16) = z;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16) = y;
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16) = z;
// Game command modified to accept selection size
totalCost = 0;

View File

@ -467,9 +467,9 @@ void money_effect_create(money32 value)
rct_viewport *mainViewport;
rct_xyz16 mapPosition;
mapPosition.x = RCT2_GLOBAL(0x009DEA5E, uint16);
mapPosition.y = RCT2_GLOBAL(0x009DEA60, uint16);
mapPosition.z = RCT2_GLOBAL(0x009DEA62, uint16);
mapPosition.x = RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16);
mapPosition.y = RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Y, uint16);
mapPosition.z = RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_Z, uint16);
if (mapPosition.x == (sint16)0x8000) {
mainWindow = window_get_main();
if (mainWindow == NULL)