mirror of https://github.com/OpenRCT2/OpenRCT2.git
refactor g1Elements pointer and implement sub_68371D
This commit is contained in:
parent
6c89274bb1
commit
101fed0dd9
|
@ -434,7 +434,7 @@ int cmdline_for_sprite(const char **argv, int argc)
|
|||
|
||||
fprintf(stderr, "Building: %s\n", spriteFilePath);
|
||||
for (int i = 0; fileExists; i++) {
|
||||
itoa(i, number, 10);
|
||||
_itoa(i, number, 10);
|
||||
strcpy(imagePath, resourcePath);
|
||||
if (resourceLength == 0 || (resourcePath[resourceLength - 1] != '/' && resourcePath[resourceLength - 1] != '\\'))
|
||||
strcat(imagePath, "/");
|
||||
|
|
|
@ -135,7 +135,7 @@ void gfx_draw_pixel(rct_drawpixelinfo *dpi, int x, int y, int colour)
|
|||
*/
|
||||
void gfx_transpose_palette(int pal, unsigned char product)
|
||||
{
|
||||
rct_g1_element g1 = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[pal];
|
||||
rct_g1_element g1 = g1Elements[pal];
|
||||
int width = g1.width;
|
||||
int x = g1.x_offset;
|
||||
uint8* dest_pointer = (uint8*)&(RCT2_ADDRESS(0x01424680, uint8)[x * 4]);
|
||||
|
@ -161,7 +161,7 @@ void load_palette(){
|
|||
palette = water_type->image_id;
|
||||
}
|
||||
|
||||
rct_g1_element g1 = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[palette];
|
||||
rct_g1_element g1 = g1Elements[palette];
|
||||
int width = g1.width;
|
||||
int x = g1.x_offset;
|
||||
uint8* dest_pointer = (uint8*)&(RCT2_ADDRESS(0x01424680, uint8)[x * 4]);
|
||||
|
@ -514,7 +514,7 @@ void redraw_peep_and_rain()
|
|||
if (sprite != -1) {
|
||||
sprite = sprite & 0x7FFFF;
|
||||
|
||||
rct_g1_element *g1_elements = &RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[sprite];
|
||||
rct_g1_element *g1_elements = &g1Elements[sprite];
|
||||
int left = RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_X, sint16) + g1_elements->x_offset;
|
||||
int top = RCT2_GLOBAL(RCT2_ADDRESS_PICKEDUP_PEEP_Y, sint16) + g1_elements->y_offset;
|
||||
int right = left + g1_elements->width;
|
||||
|
@ -546,4 +546,4 @@ void redraw_peep_and_rain()
|
|||
}
|
||||
}
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_NO_RAIN_PIXELS, uint32) = 0;
|
||||
}
|
||||
}
|
|
@ -64,6 +64,8 @@ extern uint8 text_palette[];
|
|||
extern int gLastDrawStringX;
|
||||
extern int gLastDrawStringY;
|
||||
|
||||
extern rct_g1_element *g1Elements;
|
||||
|
||||
//
|
||||
rct_drawpixelinfo* clip_drawpixelinfo(rct_drawpixelinfo* dpi, int left, int width, int top, int height);
|
||||
void gfx_set_dirty_blocks(int left, int top, int right, int bottom);
|
||||
|
@ -91,6 +93,7 @@ void gfx_fill_rect_inset(rct_drawpixelinfo* dpi, short left, short top, short ri
|
|||
// sprite
|
||||
int gfx_load_g1();
|
||||
int gfx_load_g2();
|
||||
void sub_68371D();
|
||||
void gfx_bmp_sprite_to_buffer(uint8* palette_pointer, uint8* unknown_pointer, uint8* source_pointer, uint8* dest_pointer, rct_g1_element* source_image, rct_drawpixelinfo *dest_dpi, int height, int width, int image_type);
|
||||
void gfx_rle_sprite_to_buffer(uint8* source_bits_pointer, uint8* dest_bits_pointer, uint8* palette_pointer, rct_drawpixelinfo *dpi, int image_type, int source_y_start, int height, int source_x_start, int width);
|
||||
void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y, uint32 tertiary_colour);
|
||||
|
|
|
@ -109,7 +109,7 @@ void gfx_fill_rect(rct_drawpixelinfo *dpi, int left, int top, int right, int bot
|
|||
|
||||
// Find colour in colour table?
|
||||
uint16 eax = palette_to_g1_offset[(colour & 0xFF)];
|
||||
rct_g1_element g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[eax];
|
||||
rct_g1_element g1_element = g1Elements[eax];
|
||||
|
||||
// Fill the rectangle with the colours from the colour table
|
||||
for (int i = 0; i < height>>dpi->zoom_level; ++i) {
|
||||
|
@ -211,7 +211,7 @@ void gfx_fill_rect(rct_drawpixelinfo *dpi, int left, int top, int right, int bot
|
|||
esi = RCT2_GLOBAL(0xEDF828,sint32);
|
||||
esi *= 0x40;
|
||||
left = 0;
|
||||
esi += (uint32)(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS,rct_g1_element)[right]).offset;//???
|
||||
esi += (uint32)g1Elements[right].offset;//???
|
||||
//Not finished
|
||||
//Start of loop
|
||||
return;
|
||||
|
|
|
@ -38,6 +38,8 @@ typedef struct {
|
|||
|
||||
rct_gx g2;
|
||||
|
||||
rct_g1_element *g1Elements = (rct_g1_element*)RCT2_ADDRESS_G1_ELEMENTS;
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x00678998
|
||||
|
@ -50,8 +52,6 @@ int gfx_load_g1()
|
|||
rct_g1_header header;
|
||||
unsigned int i;
|
||||
|
||||
rct_g1_element *g1Elements = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element);
|
||||
|
||||
file = fopen(get_file_path(PATH_ID_G1), "rb");
|
||||
if (file != NULL) {
|
||||
if (fread(&header, 8, 1, file) == 1) {
|
||||
|
@ -118,6 +118,19 @@ int gfx_load_g2()
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function looks like it initialises the 0x009E3CE4 array which references sprites used for background / palette mixing or
|
||||
* something. Further investigation is needed.
|
||||
*/
|
||||
void sub_68371D()
|
||||
{
|
||||
uint8 **unk_9E3CE4 = (uint8**)0x009E3CE4;
|
||||
|
||||
unk_9E3CE4[0] = NULL;
|
||||
for (int i = 1; i < 8; i++)
|
||||
unk_9E3CE4[i] = g1Elements[23199 + i].offset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a sprite onto the buffer. There is no compression used on the sprite
|
||||
* image.
|
||||
|
@ -405,7 +418,7 @@ void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y, uint32
|
|||
}
|
||||
|
||||
uint16 palette_offset = palette_to_g1_offset[palette_ref];
|
||||
palette_pointer = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[palette_offset].offset;
|
||||
palette_pointer = g1Elements[palette_offset].offset;
|
||||
}
|
||||
else if (image_type && !(image_type & IMAGE_TYPE_USE_PALETTE)){
|
||||
RCT2_GLOBAL(0x9E3CDC, uint32) = 0;
|
||||
|
@ -416,9 +429,9 @@ void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y, uint32
|
|||
uint32 secondary_offset = palette_to_g1_offset[(image_id >> 24) & 0x1F];
|
||||
uint32 tertiary_offset = palette_to_g1_offset[tertiary_colour];
|
||||
|
||||
rct_g1_element* primary_colour = &RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[primary_offset];
|
||||
rct_g1_element* secondary_colour = &RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[secondary_offset];
|
||||
rct_g1_element* tertiary_colour = &RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[tertiary_offset];
|
||||
rct_g1_element* primary_colour = &g1Elements[primary_offset];
|
||||
rct_g1_element* secondary_colour = &g1Elements[secondary_offset];
|
||||
rct_g1_element* tertiary_colour = &g1Elements[tertiary_offset];
|
||||
|
||||
memcpy(palette_pointer + 0xF3, &primary_colour->offset[0xF3], 12);
|
||||
memcpy(palette_pointer + 0xCA, &secondary_colour->offset[0xF3], 12);
|
||||
|
@ -437,13 +450,13 @@ void gfx_draw_sprite(rct_drawpixelinfo *dpi, int image_id, int x, int y, uint32
|
|||
//Top
|
||||
int top_type = (image_id >> 19) & 0x1f;
|
||||
uint32 top_offset = palette_to_g1_offset[top_type]; //RCT2_ADDRESS(0x97FCBC, uint32)[top_type];
|
||||
rct_g1_element top_palette = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[top_offset];
|
||||
rct_g1_element top_palette = g1Elements[top_offset];
|
||||
memcpy(palette_pointer + 0xF3, top_palette.offset + 0xF3, 12);
|
||||
|
||||
//Trousers
|
||||
int trouser_type = (image_id >> 24) & 0x1f;
|
||||
uint32 trouser_offset = palette_to_g1_offset[trouser_type]; //RCT2_ADDRESS(0x97FCBC, uint32)[trouser_type];
|
||||
rct_g1_element trouser_palette = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[trouser_offset];
|
||||
rct_g1_element trouser_palette = g1Elements[trouser_offset];
|
||||
memcpy(palette_pointer + 0xCA, trouser_palette.offset + 0xF3, 12);
|
||||
}
|
||||
|
||||
|
@ -469,7 +482,7 @@ void gfx_draw_sprite_palette_set(rct_drawpixelinfo *dpi, int image_id, int x, in
|
|||
|
||||
rct_g1_element* g1_source;
|
||||
if (image_element < SPR_G2_BEGIN) {
|
||||
g1_source = &(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[image_element]);
|
||||
g1_source = &g1Elements[image_element];
|
||||
} else {
|
||||
g1_source = &g2.elements[image_element - SPR_G2_BEGIN];
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ void gfx_load_character_widths(){
|
|||
uint8* char_width_pointer = RCT2_ADDRESS(RCT2_ADDRESS_FONT_CHAR_WIDTH, uint8);
|
||||
for (int char_set_offset = 0; char_set_offset < 4*0xE0; char_set_offset+=0xE0){
|
||||
for (uint8 c = 0; c < 0xE0; c++, char_width_pointer++){
|
||||
rct_g1_element g1 = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[c + SPR_CHAR_START + char_set_offset];
|
||||
rct_g1_element g1 = g1Elements[c + SPR_CHAR_START + char_set_offset];
|
||||
int width;
|
||||
|
||||
if (char_set_offset == 0xE0*3) width = g1.width + 1;
|
||||
|
@ -75,7 +75,7 @@ void gfx_load_character_widths(){
|
|||
}
|
||||
|
||||
for (int i = 0; i < 0x20; ++i){
|
||||
rct_g1_element* g1 = &(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[0x606 + i]);
|
||||
rct_g1_element* g1 = &g1Elements[0x606 + i];
|
||||
uint8* unknown_pointer = RCT2_ADDRESS(0x9C3852, uint8) + 0xa12 * i;
|
||||
g1->offset = unknown_pointer;
|
||||
g1->width = 0x40;
|
||||
|
@ -138,7 +138,7 @@ int gfx_get_string_width_new_lined(char* buffer){
|
|||
case 0x10:
|
||||
continue;
|
||||
case FORMAT_INLINE_SPRITE:
|
||||
g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[*((uint32*)(curr_char + 1)) & 0x7FFFF];
|
||||
g1_element = g1Elements[*((uint32*)(curr_char + 1)) & 0x7FFFF];
|
||||
width += g1_element.width;
|
||||
curr_char += 4;
|
||||
break;
|
||||
|
@ -214,7 +214,7 @@ int gfx_get_string_width(char* buffer)
|
|||
case 0x10:
|
||||
continue;
|
||||
case FORMAT_INLINE_SPRITE:
|
||||
g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[*((uint32*)(curr_char+1))&0x7FFFF];
|
||||
g1_element = g1Elements[*((uint32*)(curr_char + 1)) & 0x7FFFF];
|
||||
width += g1_element.width;
|
||||
curr_char += 4;
|
||||
break;
|
||||
|
@ -297,7 +297,7 @@ int gfx_clip_string(char* buffer, int width)
|
|||
case 0x10:
|
||||
continue;
|
||||
case FORMAT_INLINE_SPRITE:
|
||||
g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[*((uint32*)(curr_char+1))&0x7FFFF];
|
||||
g1_element = g1Elements[*((uint32*)(curr_char + 1)) & 0x7FFFF];
|
||||
clipped_width += g1_element.width;
|
||||
curr_char += 4;
|
||||
continue;
|
||||
|
@ -396,7 +396,7 @@ int gfx_wrap_string(char* buffer, int width, int* num_lines, int* font_height)
|
|||
case 0x10:
|
||||
continue;
|
||||
case FORMAT_INLINE_SPRITE:
|
||||
g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[*((uint32*)(curr_char + 1)) & 0x7FFFF];
|
||||
g1_element = g1Elements[*((uint32*)(curr_char + 1)) & 0x7FFFF];
|
||||
line_width += g1_element.width;
|
||||
curr_char += 4;
|
||||
break;
|
||||
|
@ -718,7 +718,7 @@ void colour_char(uint8 colour, uint16* current_font_flags, uint8* palette_pointe
|
|||
|
||||
int eax;
|
||||
|
||||
rct_g1_element g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[0x1332];
|
||||
rct_g1_element g1_element = g1Elements[0x1332];
|
||||
eax = ((uint32*)g1_element.offset)[colour & 0xFF];
|
||||
|
||||
if (!(*current_font_flags & 2)) {
|
||||
|
@ -896,7 +896,7 @@ void gfx_draw_string(rct_drawpixelinfo *dpi, char *buffer, int colour, int x, in
|
|||
}
|
||||
|
||||
eax = palette_to_g1_offset[al]; //RCT2_ADDRESS(0x097FCBC, uint32)[al * 4];
|
||||
g1_element = &(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[eax]);
|
||||
g1_element = &g1Elements[eax];
|
||||
ebx = g1_element->offset[0xF9] + (1 << 8);
|
||||
if (!(*current_font_flags & 2)) {
|
||||
ebx = ebx & 0xFF;
|
||||
|
@ -1008,7 +1008,7 @@ void gfx_draw_string(rct_drawpixelinfo *dpi, char *buffer, int colour, int x, in
|
|||
}
|
||||
uint32 image_id = *((uint32*)(buffer - 3));
|
||||
uint32 image_offset = image_id & 0x7FFFF;
|
||||
g1_element = &(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[image_offset]);
|
||||
g1_element = &g1Elements[image_offset];
|
||||
|
||||
gfx_draw_sprite(dpi, image_id, max_x, max_y, 0);
|
||||
|
||||
|
|
10
src/game.c
10
src/game.c
|
@ -102,7 +102,7 @@ void update_palette_effects()
|
|||
if ((sint32)water_type != -1) {
|
||||
palette = water_type->image_id;
|
||||
}
|
||||
rct_g1_element g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[palette];
|
||||
rct_g1_element g1_element = g1Elements[palette];
|
||||
int xoffset = g1_element.x_offset;
|
||||
xoffset = xoffset * 4;
|
||||
for (int i = 0; i < g1_element.width; i++) {
|
||||
|
@ -123,7 +123,7 @@ void update_palette_effects()
|
|||
palette = water_type->image_id;
|
||||
}
|
||||
|
||||
rct_g1_element g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[palette];
|
||||
rct_g1_element g1_element = g1Elements[palette];
|
||||
int xoffset = g1_element.x_offset;
|
||||
xoffset = xoffset * 4;
|
||||
for (int i = 0; i < g1_element.width; i++) {
|
||||
|
@ -148,7 +148,7 @@ void update_palette_effects()
|
|||
if ((sint32)water_type != -1) {
|
||||
p = water_type->var_06;
|
||||
}
|
||||
rct_g1_element g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[q + p];
|
||||
rct_g1_element g1_element = g1Elements[q + p];
|
||||
uint8* vs = &g1_element.offset[j * 3];
|
||||
uint8* vd = RCT2_ADDRESS(0x01424A18, uint8);
|
||||
int n = 5;
|
||||
|
@ -167,7 +167,7 @@ void update_palette_effects()
|
|||
if ((sint32)water_type != -1) {
|
||||
p = water_type->var_0A;
|
||||
}
|
||||
g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[q + p];
|
||||
g1_element = g1Elements[q + p];
|
||||
vs = &g1_element.offset[j * 3];
|
||||
n = 5;
|
||||
for (int i = 0; i < n; i++) {
|
||||
|
@ -183,7 +183,7 @@ void update_palette_effects()
|
|||
|
||||
j = ((uint16)(RCT2_GLOBAL(RCT2_ADDRESS_PALETTE_EFFECT_FRAME_NO, uint32) * -960) * 3) >> 16;
|
||||
p = 1539;
|
||||
g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[q + p];
|
||||
g1_element = g1Elements[q + p];
|
||||
vs = &g1_element.offset[j * 3];
|
||||
vd += 12;
|
||||
n = 3;
|
||||
|
|
|
@ -88,7 +88,7 @@ void viewport_init_all()
|
|||
// Palette from sprites?
|
||||
d = 0;
|
||||
for (i = 4915; i < 4947; i++) {
|
||||
g1_element = &(RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[i]);
|
||||
g1_element = &g1Elements[i];
|
||||
*((int*)(0x0141FC44 + d)) = *((int*)(&g1_element->offset[0xF5]));
|
||||
*((int*)(0x0141FC48 + d)) = *((int*)(&g1_element->offset[0xF9]));
|
||||
*((int*)(0x0141FD44 + d)) = *((int*)(&g1_element->offset[0xFD]));
|
||||
|
@ -743,7 +743,7 @@ int sub_0x686806(rct_sprite* sprite, int eax, int image_id, int ecx, int edx){
|
|||
|
||||
ps->image_id = image_id;
|
||||
|
||||
rct_g1_element *g1Element = &RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[image_id & 0x7FFFF];
|
||||
rct_g1_element *g1Element = &g1Elements[image_id & 0x7FFFF];
|
||||
|
||||
eax = (eax & 0xFF) + RCT2_GLOBAL(0x9DE568, uint16);
|
||||
ecx = (ecx & 0xFF) + RCT2_GLOBAL(0x9DE56C, uint16);
|
||||
|
|
|
@ -396,7 +396,7 @@ int object_chunk_load_image_directory(uint8_t** chunk)
|
|||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOTAL_NO_IMAGES, uint32_t) = no_images + image_start_no;
|
||||
|
||||
rct_g1_element* g1_dest = &RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[image_start_no];
|
||||
rct_g1_element* g1_dest = &g1Elements[image_start_no];
|
||||
|
||||
// After length of data is the start of all g1 element structs
|
||||
rct_g1_element* g1_source = (rct_g1_element*)(*chunk);
|
||||
|
|
|
@ -525,7 +525,10 @@ static void platform_create_window()
|
|||
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, 0);
|
||||
|
||||
platform_load_cursors();
|
||||
RCT2_CALLPROC_EBPSAFE(0x0068371D);
|
||||
|
||||
// TODO This should probably be called somewhere else. It has nothing to do with window creation and can be done as soon as
|
||||
// g1.dat is loaded.
|
||||
sub_68371D();
|
||||
|
||||
// Get window size
|
||||
width = gConfigGeneral.window_width;
|
||||
|
|
|
@ -299,7 +299,7 @@ static void window_install_track_paint()
|
|||
uint16 holes, speed, drops, dropHeight, inversions;
|
||||
fixed32_2dp rating;
|
||||
int x, y, colour, gForces, airTime;
|
||||
rct_g1_element tmpElement, *subsituteElement, *g1Elements = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element);
|
||||
rct_g1_element tmpElement, *subsituteElement;
|
||||
|
||||
window_paint_get_registers(w, dpi);
|
||||
|
||||
|
|
|
@ -893,7 +893,7 @@ static void window_map_scrollpaint()
|
|||
|
||||
gfx_clear(dpi, 0x0A0A0A0A);
|
||||
|
||||
g1_element = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element);
|
||||
g1_element = &g1Elements[0];
|
||||
pushed_g1_element = *g1_element;
|
||||
|
||||
g1_element->offset = RCT2_GLOBAL(RCT2_ADDRESS_MAP_IMAGE_DATA, uint8*);
|
||||
|
|
|
@ -393,7 +393,7 @@ static void window_track_list_paint()
|
|||
uint16 holes, speed, drops, dropHeight, inversions;
|
||||
fixed32_2dp rating;
|
||||
int trackIndex, x, y, colour, gForces, airTime;
|
||||
rct_g1_element tmpElement, *subsituteElement, *g1Elements = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element);
|
||||
rct_g1_element tmpElement, *subsituteElement;
|
||||
|
||||
window_paint_get_registers(w, dpi);
|
||||
|
||||
|
|
|
@ -596,7 +596,7 @@ static void window_track_place_paint()
|
|||
{
|
||||
rct_window *w;
|
||||
rct_drawpixelinfo *dpi, *clippedDpi;
|
||||
rct_g1_element tmpElement, *subsituteElement, *g1Elements = RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element);
|
||||
rct_g1_element tmpElement, *subsituteElement;
|
||||
|
||||
window_paint_get_registers(w, dpi);
|
||||
|
||||
|
|
Loading…
Reference in New Issue