Merge pull request #1924 from janisozaur/painter-fix

Incrementation of paint_struct pointer looks bogus
This commit is contained in:
Ted John 2015-09-11 22:13:05 +01:00
commit 967fccdac9
1 changed files with 26 additions and 26 deletions

View File

@ -288,12 +288,12 @@ void sub_6E7FF3(rct_window *w, rct_viewport *viewport, int x, int y)
// viewport->view_width = (w->x - viewport->x) * zoom; // viewport->view_width = (w->x - viewport->x) * zoom;
// //
// sub_6E7FF3(w, viewport, x, y); // sub_6E7FF3(w, viewport, x, y);
// //
// viewport->x += viewport->width; // viewport->x += viewport->width;
// viewport->view_x += viewport->width*zoom; // viewport->view_x += viewport->width*zoom;
// viewport->view_width = (viewport_bkup.width - viewport->width) * zoom; // viewport->view_width = (viewport_bkup.width - viewport->width) * zoom;
// viewport->width = viewport_bkup.width - viewport->width; // viewport->width = viewport_bkup.width - viewport->width;
// //
// sub_6E7FF3(w, viewport, x, y); // sub_6E7FF3(w, viewport, x, y);
// //
// memcpy(viewport, &viewport_bkup, sizeof(rct_viewport)); // memcpy(viewport, &viewport_bkup, sizeof(rct_viewport));
@ -707,7 +707,7 @@ void sub_688485(){
gfx_draw_sprite_raw_masked(dpi, x, y, image_id, ps->var_04); gfx_draw_sprite_raw_masked(dpi, x, y, image_id, ps->var_04);
else else
gfx_draw_sprite(dpi, image_id, x, y, ps->var_04); gfx_draw_sprite(dpi, image_id, x, y, ps->var_04);
if (ps->var_20 != 0){ if (ps->var_20 != 0){
ps = ps->var_20; ps = ps->var_20;
continue; continue;
@ -867,12 +867,12 @@ int sub_98197C(sint8 al, sint8 ah, int image_id, sint8 cl, int edx, sint16 si, s
RCT2_GLOBAL(0x00F1AD10, sint32) = di; RCT2_GLOBAL(0x00F1AD10, sint32) = di;
} }
RCT2_GLOBAL(0xEE7888, paint_struct*) += sizeof(paint_struct); RCT2_GLOBAL(0xEE7888, paint_struct*) += 1;
return 0; return 0;
} }
/** /**
* *
* rct2: 0x006D4244 * rct2: 0x006D4244
*/ */
void viewport_vehicle_paint_setup(rct_vehicle *vehicle, int imageDirection) void viewport_vehicle_paint_setup(rct_vehicle *vehicle, int imageDirection)
@ -932,7 +932,7 @@ void viewport_vehicle_paint_setup(rct_vehicle *vehicle, int imageDirection)
} }
/** /**
* *
* rct2: 0x0068F0FB * rct2: 0x0068F0FB
*/ */
void viewport_peep_paint_setup(rct_peep *peep, int imageDirection) void viewport_peep_paint_setup(rct_peep *peep, int imageDirection)
@ -941,7 +941,7 @@ void viewport_peep_paint_setup(rct_peep *peep, int imageDirection)
} }
/** /**
* *
* rct2: 0x00672AC9 * rct2: 0x00672AC9
*/ */
void viewport_misc_paint_setup(rct_sprite *misc, int imageDirection) void viewport_misc_paint_setup(rct_sprite *misc, int imageDirection)
@ -1000,7 +1000,7 @@ void sprite_paint_setup(uint16 eax, uint16 ecx){
eax = (eax & 0x1FE0) << 3 | (ecx >> 5); eax = (eax & 0x1FE0) << 3 | (ecx >> 5);
int sprite_idx = RCT2_ADDRESS(0xF1EF60, uint16)[eax]; int sprite_idx = RCT2_ADDRESS(0xF1EF60, uint16)[eax];
if (sprite_idx == SPRITE_INDEX_NULL) return; if (sprite_idx == SPRITE_INDEX_NULL) return;
for (rct_sprite* spr = &g_sprite_list[sprite_idx]; sprite_idx != SPRITE_INDEX_NULL; sprite_idx = spr->unknown.next_in_quadrant){ for (rct_sprite* spr = &g_sprite_list[sprite_idx]; sprite_idx != SPRITE_INDEX_NULL; sprite_idx = spr->unknown.next_in_quadrant){
spr = &g_sprite_list[sprite_idx]; spr = &g_sprite_list[sprite_idx];
dpi = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*); dpi = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*);
@ -1042,7 +1042,7 @@ void sprite_paint_setup(uint16 eax, uint16 ecx){
} }
} }
/* rct2: 0x006629BC /* rct2: 0x006629BC
* returns al * returns al
* ebp : image_id * ebp : image_id
* ax : unknown * ax : unknown
@ -1158,7 +1158,7 @@ void viewport_ride_entrance_exit_paint_setup(uint8 direction, int height, rct_ma
} }
if (!is_exit && if (!is_exit &&
!(map_element->flags & MAP_ELEMENT_FLAG_GHOST) && !(map_element->flags & MAP_ELEMENT_FLAG_GHOST) &&
map_element->properties.entrance.ride_index != 0xFF){ map_element->properties.entrance.ride_index != 0xFF){
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint32) = 0; RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint32) = 0;
@ -1189,7 +1189,7 @@ void viewport_ride_entrance_exit_paint_setup(uint8 direction, int height, rct_ma
RCT2_CALLPROC_X(RCT2_ADDRESS(0x98199C, uint32_t)[RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32_t)], RCT2_CALLPROC_X(RCT2_ADDRESS(0x98199C, uint32_t)[RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32_t)],
0x3300, scrolling_text_setup(string_id, scroll, style->scrolling_mode), 0, height + style->height, 0x1C, 0x1C, 0); 0x3300, scrolling_text_setup(string_id, scroll, style->scrolling_mode), 0, height + style->height, 0x1C, 0x1C, 0);
} }
image_id = RCT2_GLOBAL(0x009E32BC, uint32); image_id = RCT2_GLOBAL(0x009E32BC, uint32);
if (!image_id){ if (!image_id){
image_id = 0x20B80000; image_id = 0x20B80000;
@ -1358,7 +1358,7 @@ void viewport_track_paint_setup(uint8 direction, int height, rct_map_element *ma
trackType = mapElement->properties.track.type; trackType = mapElement->properties.track.type;
trackSequence = mapElement->properties.track.sequence & 0x0F; trackSequence = mapElement->properties.track.sequence & 0x0F;
trackColourScheme = mapElement->properties.track.colour & 3; trackColourScheme = mapElement->properties.track.colour & 3;
if ((RCT2_GLOBAL(0x0141E9E4, uint16) & 0x20) && dpi->zoom_level == 0) { if ((RCT2_GLOBAL(0x0141E9E4, uint16) & 0x20) && dpi->zoom_level == 0) {
RCT2_GLOBAL(0x009DE570, uint8) = 0; RCT2_GLOBAL(0x009DE570, uint8) = 0;
if (RCT2_ADDRESS(0x00999694, uint32)[trackType] & (1 << trackSequence)) { if (RCT2_ADDRESS(0x00999694, uint32)[trackType] & (1 << trackSequence)) {
@ -1431,14 +1431,14 @@ void viewport_entrance_paint_setup(uint8 direction, int height, rct_map_element*
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_PATH_HEIGHTS && if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_PATH_HEIGHTS &&
dpi->zoom_level == 0){ dpi->zoom_level == 0){
uint32 ebx = uint32 ebx =
(map_element->properties.entrance.type << 4) | (map_element->properties.entrance.type << 4) |
(map_element->properties.entrance.index & 0xF); (map_element->properties.entrance.index & 0xF);
if (RCT2_ADDRESS(0x0097B974, uint8)[ebx] & 0xF){ if (RCT2_ADDRESS(0x0097B974, uint8)[ebx] & 0xF){
int z = map_element->base_height * 8 + 3; int z = map_element->base_height * 8 + 3;
uint32 image_id = uint32 image_id =
z / 16 + z / 16 +
RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_HEIGHT_MARKERS,sint16) + RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_HEIGHT_MARKERS,sint16) +
0x20101689; 0x20101689;
@ -1577,12 +1577,12 @@ static void sub_68B3FB(int x, int y)
if ((RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) & 4) && if ((RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, uint16) & 4) &&
RCT2_GLOBAL(0x9DE56A, uint16) == RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_X, uint16) && RCT2_GLOBAL(0x9DE56A, uint16) == RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_X, uint16) &&
RCT2_GLOBAL(0x9DE56E, uint16) == RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Y, uint16)){ RCT2_GLOBAL(0x9DE56E, uint16) == RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Y, uint16)){
uint8 arrowRotation = uint8 arrowRotation =
(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32) (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32)
+ (RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) & 3)) & 3; + (RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) & 3)) & 3;
uint32 imageId = uint32 imageId =
arrowRotation + arrowRotation +
(RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) & 0xFC) + (RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) & 0xFC) +
0x20900C27; 0x20900C27;
@ -1601,7 +1601,7 @@ static void sub_68B3FB(int x, int y)
if (bx <= dpi->y) if (bx <= dpi->y)
return; return;
rct_map_element* element = map_element;//push map_element rct_map_element* element = map_element;//push map_element
sint16 max_height = 0; sint16 max_height = 0;
@ -1624,7 +1624,7 @@ static void sub_68B3FB(int x, int y)
dx -= dpi->height; dx -= dpi->height;
if (dx >= dpi->y) if (dx >= dpi->y)
return; return;
RCT2_GLOBAL(0x9DE568, sint16) = x; RCT2_GLOBAL(0x9DE568, sint16) = x;
RCT2_GLOBAL(0x9DE56C, sint16) = y; RCT2_GLOBAL(0x9DE56C, sint16) = y;
RCT2_GLOBAL(0x9DE57C, uint16) = 0; RCT2_GLOBAL(0x9DE57C, uint16) = 0;
@ -1777,7 +1777,7 @@ void map_element_paint_setup(int x, int y)
RCT2_GLOBAL(0x0141E9D4, uint32) = 0xFFFF; RCT2_GLOBAL(0x0141E9D4, uint32) = 0xFFFF;
RCT2_GLOBAL(0x0141E9D8, uint32) = 0xFFFF; RCT2_GLOBAL(0x0141E9D8, uint32) = 0xFFFF;
RCT2_GLOBAL(0x0141E9DC, uint32) = 0xFFFF; RCT2_GLOBAL(0x0141E9DC, uint32) = 0xFFFF;
sub_68B3FB(x, y); sub_68B3FB(x, y);
} else { } else {
viewport_blank_tiles_paint_setup(x, y); viewport_blank_tiles_paint_setup(x, y);
@ -1790,8 +1790,8 @@ void map_element_paint_setup(int x, int y)
*/ */
void viewport_paint_setup() void viewport_paint_setup()
{ {
rct_drawpixelinfo* dpi = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*); rct_drawpixelinfo* dpi = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*);
rct_xy16 mapTile = { rct_xy16 mapTile = {
.x = dpi->x & 0xFFE0, .x = dpi->x & 0xFFE0,
.y = (dpi->y - 16) & 0xFFE0 .y = (dpi->y - 16) & 0xFFE0
@ -1808,7 +1808,7 @@ void viewport_paint_setup()
mapTile.x &= 0xFFE0; mapTile.x &= 0xFFE0;
mapTile.y &= 0xFFE0; mapTile.y &= 0xFFE0;
for (; num_vertical_quadrants > 0; --num_vertical_quadrants){ for (; num_vertical_quadrants > 0; --num_vertical_quadrants){
map_element_paint_setup(mapTile.x, mapTile.y); map_element_paint_setup(mapTile.x, mapTile.y);
sprite_paint_setup(mapTile.x, mapTile.y); sprite_paint_setup(mapTile.x, mapTile.y);
@ -1866,7 +1866,7 @@ void viewport_paint_setup()
mapTile.x &= 0xFFE0; mapTile.x &= 0xFFE0;
mapTile.y &= 0xFFE0; mapTile.y &= 0xFFE0;
for (; num_vertical_quadrants > 0; --num_vertical_quadrants){ for (; num_vertical_quadrants > 0; --num_vertical_quadrants){
map_element_paint_setup(mapTile.x, mapTile.y); map_element_paint_setup(mapTile.x, mapTile.y);
sprite_paint_setup(mapTile.x, mapTile.y); sprite_paint_setup(mapTile.x, mapTile.y);
@ -2612,7 +2612,7 @@ rct_viewport *viewport_find_from_point(int screenX, int screenY)
{ {
rct_window *w; rct_window *w;
rct_viewport *viewport; rct_viewport *viewport;
w = window_find_from_point(screenX, screenY); w = window_find_from_point(screenX, screenY);
if (w == NULL) if (w == NULL)
return NULL; return NULL;