diff --git a/src/ride/ride.c b/src/ride/ride.c index ace0989439..f639bdb3c2 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -4508,3 +4508,76 @@ void ride_all_has_any_track_elements(bool *rideIndexArray) rideIndexArray[it.element->properties.track.ride_index] = true; } } + + +/* rct2: 0x006847BA */ +void sub_6847BA(int base_image_id, int ecx){ + char bitmap[200][200] = { 0 }; + + rct_drawpixelinfo dpi = { + .bits = (char*)bitmap, + .x = -100, + .y = -100, + .width = 200, + .height = 200, + .pitch = 0, + .zoom_level = 0 + }; + + for (int i = 0; i < ecx; ++i){ + gfx_draw_sprite(&dpi, base_image_id + i, 0, 0, 0); + } + int al = -1; + for (int i = 99; i != 0; --i){ + for (int j = 0; j < 200; j++){ + if (bitmap[j][100 - i] != 0){ + al = i; + break; + } + } + + if (al != -1) + break; + + for (int j = 0; j < 200; j++){ + if (bitmap[j][100 + i] != 0){ + al = i; + break; + } + } + + if (al != -1) + break; + } + + al++; + int bl = -1; + + for (int i = 99; i != 0; --i){ + for (int j = 0; j < 200; j++){ + if (bitmap[100 - i][j] != 0){ + bl = i; + break; + } + } + + if (bl != -1) + break; + } + bl++; + + int bh = -1; + + for (int i = 99; i != 0; --i){ + for (int j = 0; j < 200; j++){ + if (bitmap[100 + i][j] != 0){ + bh = i; + break; + } + } + + if (bh != -1) + break; + } + bh++; +} \ No newline at end of file