0x006EC9CE

This commit is contained in:
zsilencer 2014-10-14 17:01:22 -06:00
parent 6628a4eace
commit bd128402f0
3 changed files with 84 additions and 6 deletions

View File

@ -152,6 +152,75 @@ void gfx_transpose_palette(int pal, unsigned char product)
osinterface_update_palette((char*)0x01424680, 10, 236);//Odd would have expected dest_pointer
}
/**
*
* rct2: 0x006EC9CE
* @param x (ax)
* @param y (cx)
* @param base_height (di)
* @param clearance_height (si)
*/
void gfx_invalidate_scrollingtext(int x, int y, int base_height, int clearance_height)
{
x += 16;
y += 16;
int left, top, right, bottom;
switch (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32)) {
case 0:
left = (-x + y) - 32;
right = (-x + y) + 32;
top = ((y + x) / 2) - 32 - clearance_height;
bottom = ((y + x) / 2) + 32 - base_height;
break;
case 1:
left = (-x - y) - 32;
right = (-x - y) + 32;
top = ((y - x) / 2) - 32 - clearance_height;
bottom = ((y - x) / 2) + 32 - base_height;
break;
case 2:
left = (x - y) - 32;
right = (x - y) + 32;
top = ((-y - x) / 2) - 32 - clearance_height;
bottom = ((-y - x) / 2) + 32 - base_height;
break;
case 3:
left = (x + y) - 32;
right = (x + y) + 32;
top = ((-y + x) / 2) - 32 - clearance_height;
bottom = ((-y + x) / 2) + 32 - base_height;
break;
}
rct_viewport** viewport_p = RCT2_ADDRESS(RCT2_ADDRESS_NEW_VIEWPORT_PTR, rct_viewport*);
while (*viewport_p) {
rct_viewport* viewport = *viewport_p;
if (viewport->zoom < 1) {
if (right > viewport->view_x && bottom > viewport->view_y && left < viewport->view_x + viewport->view_width) {
if (left < viewport->view_x) {
left = viewport->view_x;
}
if (right > viewport->view_x + viewport->view_width) {
right = viewport->view_x + viewport->view_width;
}
if (top < viewport->view_y + viewport->view_height) {
if (top < viewport->view_y) {
top = viewport->view_y;
}
if (bottom > viewport->view_y + viewport->view_height) {
bottom = viewport->view_y + viewport->view_height;
}
left = ((left - viewport->view_x) >> viewport->zoom) + viewport->x;
top = ((top - viewport->view_y) >> viewport->zoom) + viewport->y;
right = ((right - viewport->view_x) >> viewport->zoom) + viewport->x;
bottom = ((bottom - viewport->view_y) >> viewport->zoom) + viewport->y;
gfx_set_dirty_blocks(left, top, right, bottom);
}
}
}
viewport_p++;
}
}
/**
*
* rct2: 0x006ED7E5

View File

@ -70,6 +70,7 @@ rct_drawpixelinfo* clip_drawpixelinfo(rct_drawpixelinfo* dpi, int left, int widt
void gfx_set_dirty_blocks(int left, int top, int right, int bottom);
void gfx_draw_all_dirty_blocks();
void gfx_redraw_screen_rect(short left, short top, short right, short bottom);
void gfx_invalidate_scrollingtext(int x, int y, int base_height, int clearance_height);
void gfx_invalidate_screen();
// palette

View File

@ -141,7 +141,9 @@ typedef struct {
uint32 var_118;
uint8 pad_11C[0x02];
uint8 var_11E;
uint8 pad_11F[0x05];
uint8 var_11F;
sint16 var_120;
sint16 var_122;
sint16 var_124;
sint16 var_126;
sint16 var_128;
@ -153,7 +155,10 @@ typedef struct {
sint16 var_134;
sint16 var_136;
money16 price; // 0x138
uint8 pad_13A[0x06];
sint16 var_13A;
sint16 var_13C;
uint8 var_13E;
uint8 var_13F;
union {
rating_tuple ratings; // 0x140
struct {
@ -163,7 +168,7 @@ typedef struct {
};
};
uint16 reliability; // 0x146
uint16 pad_148;
uint16 var_148;
uint16 var_14A;
uint8 pad_14C;
uint8 var_14D;
@ -173,9 +178,12 @@ typedef struct {
uint16 var_158;
uint8 pad_15A;
uint8 num_riders; // 0x15B
uint8 pad_15C[2];
uint16 maze_tiles;
uint8 pad_160[0x20];
uint8 var_15C;
uint8 var_15D;
uint16 maze_tiles; // 0x15E
uint8 pad_160[0x16];
uint8 var_176;
uint8 pad_177[0x9];
sint16 build_date; // 0x180
money16 upkeep_cost; // 0x182
uint16 race_winner; // 0x184