From 9840a73cc16028fcc82cc20cea5e0207862fa8d6 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 20 Sep 2016 18:08:45 +0100 Subject: [PATCH 1/3] Refactor naming of paint global vars Removed EDF81C from none viewport files this previously was used to pass image flags to the sprite renderer. gUnkF1A4CC replaced with address reference to paint struct array to allow for non rct builds Renamed _paint_structs to _paint_struct_quadrants. This array is used for working out which paint struct is at which quadrant and is not the main paint struct array --- src/drawing/engines/SoftwareDrawingEngine.cpp | 1 - src/drawing/string.c | 1 - src/interface/viewport.c | 6 +- src/interface/viewport.h | 6 +- src/paint/paint.c | 61 +++++++++---------- src/paint/paint.h | 8 +-- src/windows/ride_construction.c | 2 +- 7 files changed, 40 insertions(+), 45 deletions(-) diff --git a/src/drawing/engines/SoftwareDrawingEngine.cpp b/src/drawing/engines/SoftwareDrawingEngine.cpp index bd26983af1..8f8e0eca70 100644 --- a/src/drawing/engines/SoftwareDrawingEngine.cpp +++ b/src/drawing/engines/SoftwareDrawingEngine.cpp @@ -1022,7 +1022,6 @@ void SoftwareDrawingContext::DrawSpriteSolid(uint32 image, sint32 x, sint32 y, u memset(palette, colour, 256); palette[0] = 0; - gUnkEDF81C = 0x20000000; image &= 0x7FFFF; gfx_draw_sprite_palette_set_software(_dpi, image | 0x20000000, x, y, palette, nullptr); } diff --git a/src/drawing/string.c b/src/drawing/string.c index a5d5df7556..77977ae4f4 100644 --- a/src/drawing/string.c +++ b/src/drawing/string.c @@ -914,7 +914,6 @@ static void ttf_draw_character_sprite(rct_drawpixelinfo *dpi, int codepoint, tex if (!(info->flags & TEXT_DRAW_FLAG_NO_DRAW)) { unk_9ABDA4 = &info->palette; - gUnkEDF81C = IMAGE_TYPE_REMAP; int x = info->x; int y = info->y; diff --git a/src/interface/viewport.c b/src/interface/viewport.c index eebdf41b59..37a0569f34 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -53,7 +53,7 @@ uint8 gSavedViewRotation; #ifdef NO_RCT2 paint_struct *unk_EE7884; -paint_struct *unk_EE7888; +paint_struct *gNextFreePaintStruct; uint8 gCurrentRotation; uint32 gCurrentViewportFlags = 0; #endif @@ -769,7 +769,7 @@ void viewport_paint(rct_viewport* viewport, rct_drawpixelinfo* dpi, int left, in } gfx_clear(dpi2, colour); } - g_ps_EE7880 = &gUnkF1A4CC; + gEndOfPaintStructArray = &gPaintStructs[4000 - 1]; unk_140E9A8 = dpi2; painter_setup(); viewport_paint_setup(); @@ -1398,7 +1398,7 @@ void get_map_coordinates_from_pos(int screenX, int screenY, int flags, sint16 *x dpi->zoom_level = _viewportDpi1.zoom_level; dpi->x = _viewportDpi1.x; dpi->width = 1; - g_ps_EE7880 = &gUnkF1A4CC; + gEndOfPaintStructArray = &gPaintStructs[4000 - 1]; unk_140E9A8 = dpi; painter_setup(); viewport_paint_setup(); diff --git a/src/interface/viewport.h b/src/interface/viewport.h index 470a343c34..c4fc44e6b3 100644 --- a/src/interface/viewport.h +++ b/src/interface/viewport.h @@ -106,18 +106,16 @@ extern uint8 gSavedViewRotation; #ifdef NO_RCT2 extern paint_struct *unk_EE7884; -extern paint_struct *unk_EE7888; +extern paint_struct *gNextFreePaintStruct; extern uint8 gCurrentRotation; extern uint32 gCurrentViewportFlags; #else #define unk_EE7884 RCT2_GLOBAL(0x00EE7884, paint_struct*) - #define unk_EE7888 RCT2_GLOBAL(0x00EE7888, paint_struct*) + #define gNextFreePaintStruct RCT2_GLOBAL(0x00EE7888, paint_struct*) #define gCurrentRotation RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint8) #define gCurrentViewportFlags RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint32) #endif -extern uint32 gUnkEDF81C; - void viewport_init_all(); void center_2d_coordinates(int x, int y, int z, int* out_x, int* out_y, rct_viewport* viewport); void viewport_create(rct_window *w, int x, int y, int width, int height, int zoom, int center_x, int center_y, int center_z, char flags, sint16 sprite); diff --git a/src/paint/paint.c b/src/paint/paint.c index a02c6d5965..165166a2d8 100644 --- a/src/paint/paint.c +++ b/src/paint/paint.c @@ -33,12 +33,12 @@ paint_string_struct *pss1; paint_string_struct *pss2; #ifdef NO_RCT2 -static paint_struct _unkEE788C[4000]; +paint_struct gPaintStructs[4000]; uint32 _F1AD0C; uint32 _F1AD10; -static paint_struct *_paint_structs[512]; +static paint_struct *_paint_struct_quadrants[512]; void *g_currently_drawn_item; -paint_struct * g_ps_EE7880; +paint_struct * gEndOfPaintStructArray; sint16 gUnk9DE568; sint16 gUnk9DE56C; paint_struct gUnkF1A4CC; @@ -47,8 +47,7 @@ support_height gSupportSegments[9] = { 0 }; support_height gSupport; #else -#define _unkEE788C RCT2_ADDRESS(0x00EE788C, paint_struct) -#define _paint_structs (RCT2_ADDRESS(0x00F1A50C, paint_struct*)) +#define _paint_struct_quadrants (RCT2_ADDRESS(0x00F1A50C, paint_struct*)) #define _F1AD0C RCT2_GLOBAL(0xF1AD0C, uint32) #define _F1AD10 RCT2_GLOBAL(0xF1AD10, uint32) #endif @@ -76,11 +75,11 @@ bool gPaintBoundingBoxes; * rct2: 0x0068615B */ void painter_setup() { - unk_EE7888 = _unkEE788C; + gNextFreePaintStruct = gPaintStructs; g_ps_F1AD28 = NULL; g_aps_F1AD2C = NULL; for (int i = 0; i < 512; i++) { - _paint_structs[i] = NULL; + _paint_struct_quadrants[i] = NULL; } _F1AD0C = -1; _F1AD10 = 0; @@ -93,9 +92,9 @@ void painter_setup() { */ static paint_struct * sub_9819_c(uint32 image_id, rct_xyz16 offset, rct_xyz16 boundBoxSize, rct_xyz16 boundBoxOffset, uint8 rotation) { - paint_struct * ps = unk_EE7888; + paint_struct * ps = gNextFreePaintStruct; - if (ps >= g_ps_EE7880) return NULL; + if (ps >= gEndOfPaintStructArray) return NULL; ps->image_id = image_id; @@ -207,9 +206,9 @@ paint_struct * sub_98196C( g_aps_F1AD2C = NULL; //Not a paint struct but something similar - paint_struct *ps = unk_EE7888; + paint_struct *ps = gNextFreePaintStruct; - if (ps >= g_ps_EE7880) { + if (ps >= gEndOfPaintStructArray) { return NULL; } @@ -328,8 +327,8 @@ paint_struct * sub_98196C( ps->var_18 = edi; - paint_struct *old_ps = _paint_structs[edi]; - _paint_structs[edi] = ps; + paint_struct *old_ps = _paint_struct_quadrants[edi]; + _paint_struct_quadrants[edi] = ps; ps->next_quadrant_ps = old_ps; if ((uint16)edi < _F1AD0C) { @@ -340,7 +339,7 @@ paint_struct * sub_98196C( _F1AD10 = edi; } - unk_EE7888 ++; + gNextFreePaintStruct++; return ps; } @@ -412,8 +411,8 @@ paint_struct * sub_98197C( di = 511; ps->var_18 = di; - paint_struct* old_ps = _paint_structs[di]; - _paint_structs[di] = ps; + paint_struct* old_ps = _paint_struct_quadrants[di]; + _paint_struct_quadrants[di] = ps; ps->next_quadrant_ps = old_ps; if ((uint16)di < _F1AD0C) { @@ -424,7 +423,7 @@ paint_struct * sub_98197C( _F1AD10 = di; } - unk_EE7888++; + gNextFreePaintStruct++; return ps; } @@ -469,7 +468,7 @@ paint_struct * sub_98198C( } g_ps_F1AD28 = ps; - unk_EE7888++; + gNextFreePaintStruct++; return ps; } @@ -525,7 +524,7 @@ paint_struct * sub_98199C( old_ps->var_20 = ps; g_ps_F1AD28 = ps; - unk_EE7888++; + gNextFreePaintStruct++; return ps; } @@ -543,9 +542,9 @@ bool paint_attach_to_previous_attach(uint32 image_id, uint16 x, uint16 y) return paint_attach_to_previous_ps(image_id, x, y); } - attached_paint_struct * ps = (attached_paint_struct *)unk_EE7888; + attached_paint_struct * ps = (attached_paint_struct *)gNextFreePaintStruct; - if ((paint_struct *)ps >= g_ps_EE7880) { + if ((paint_struct *)ps >= gEndOfPaintStructArray) { return false; } @@ -561,7 +560,7 @@ bool paint_attach_to_previous_attach(uint32 image_id, uint16 x, uint16 y) g_aps_F1AD2C = ps; - unk_EE7888++; + gNextFreePaintStruct++; return true; } @@ -576,9 +575,9 @@ bool paint_attach_to_previous_attach(uint32 image_id, uint16 x, uint16 y) */ bool paint_attach_to_previous_ps(uint32 image_id, uint16 x, uint16 y) { - attached_paint_struct * ps = (attached_paint_struct *)unk_EE7888; + attached_paint_struct * ps = (attached_paint_struct *)gNextFreePaintStruct; - if ((paint_struct *)ps >= g_ps_EE7880) { + if ((paint_struct *)ps >= gEndOfPaintStructArray) { return false; } @@ -592,7 +591,7 @@ bool paint_attach_to_previous_ps(uint32 image_id, uint16 x, uint16 y) return false; } - unk_EE7888++; + gNextFreePaintStruct++; attached_paint_struct * oldFirstAttached = masterPs->attached_ps; masterPs->attached_ps = ps; @@ -616,9 +615,9 @@ bool paint_attach_to_previous_ps(uint32 image_id, uint16 x, uint16 y) */ void sub_685EBC(money32 amount, rct_string_id string_id, sint16 y, sint16 z, sint8 y_offsets[], sint16 offset_x, uint32 rotation) { - paint_string_struct * ps = (paint_string_struct *)unk_EE7888; + paint_string_struct * ps = (paint_string_struct *)gNextFreePaintStruct; - if ((paint_struct *)ps >= g_ps_EE7880) { + if ((paint_struct *)ps >= gEndOfPaintStructArray) { return; } @@ -636,7 +635,7 @@ void sub_685EBC(money32 amount, rct_string_id string_id, sint16 y, sint16 z, sin ps->x = coord.x + offset_x; ps->y = coord.y; - unk_EE7888++; + gNextFreePaintStruct++; paint_string_struct * oldPs = pss2; @@ -872,9 +871,9 @@ static void sub_688217_helper(uint16 ax, uint8 flag) */ void sub_688217() { - paint_struct *ps = unk_EE7888; + paint_struct *ps = gNextFreePaintStruct; paint_struct *ps_next; - unk_EE7888++; + gNextFreePaintStruct++; unk_EE7884 = ps; ps->next_quadrant_ps = NULL; uint32 edi = _F1AD0C; @@ -882,7 +881,7 @@ void sub_688217() return; do { - ps_next = _paint_structs[edi]; + ps_next = _paint_struct_quadrants[edi]; if (ps_next != NULL) { ps->next_quadrant_ps = ps_next; do { diff --git a/src/paint/paint.h b/src/paint/paint.h index 518c523896..13001c58ee 100644 --- a/src/paint/paint.h +++ b/src/paint/paint.h @@ -29,16 +29,16 @@ typedef struct paint_struct paint_struct; #ifdef NO_RCT2 extern void *g_currently_drawn_item; - extern paint_struct * g_ps_EE7880; + extern paint_struct * gEndOfPaintStructArray; extern sint16 gUnk9DE568; extern sint16 gUnk9DE56C; - extern paint_struct gUnkF1A4CC; + extern paint_struct gPaintStructs[4000]; #else + #define gPaintStructs RCT2_ADDRESS(0x00EE788C, paint_struct) #define g_currently_drawn_item RCT2_GLOBAL(0x009DE578, void*) - #define g_ps_EE7880 RCT2_GLOBAL(0x00EE7880, paint_struct *) + #define gEndOfPaintStructArray RCT2_GLOBAL(0x00EE7880, paint_struct *) #define gUnk9DE568 RCT2_GLOBAL(0x009DE568, sint16) #define gUnk9DE56C RCT2_GLOBAL(0x009DE56C, sint16) - #define gUnkF1A4CC RCT2_GLOBAL(0x00F1A4CC, paint_struct); #endif #pragma pack(push, 1) diff --git a/src/windows/ride_construction.c b/src/windows/ride_construction.c index db9f361778..5981507f86 100644 --- a/src/windows/ride_construction.c +++ b/src/windows/ride_construction.c @@ -2310,7 +2310,7 @@ static void sub_6CBCE2( gCurrentViewportFlags = 0; trackDirection &= 3; - g_ps_EE7880 = &gUnkF1A4CC; + gEndOfPaintStructArray = &gPaintStructs[4000 - 1]; painter_setup(); ride = get_ride(rideIndex); From 7561921b9c33aff9df811d99e825acc616c83bb1 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Tue, 20 Sep 2016 18:27:50 +0100 Subject: [PATCH 2/3] Refactor to use paint_entry union --- src/interface/viewport.c | 2 +- src/interface/viewport.h | 4 ++-- src/paint/paint.c | 43 +++++++++++++++++----------------------- src/paint/paint.h | 15 ++++++++++---- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/interface/viewport.c b/src/interface/viewport.c index 37a0569f34..8d3370fd96 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -1330,7 +1330,7 @@ static bool sub_679023(rct_drawpixelinfo *dpi, int imageId, int x, int y) static void sub_68862C() { rct_drawpixelinfo *dpi = unk_140E9A8; - paint_struct *ps = unk_EE7884, *old_ps, *next_ps; + paint_struct *ps = &unk_EE7884->basic, *old_ps, *next_ps; while ((ps = ps->next_quadrant_ps) != NULL) { old_ps = ps; diff --git a/src/interface/viewport.h b/src/interface/viewport.h index c4fc44e6b3..c0a30e3130 100644 --- a/src/interface/viewport.h +++ b/src/interface/viewport.h @@ -110,8 +110,8 @@ extern paint_struct *gNextFreePaintStruct; extern uint8 gCurrentRotation; extern uint32 gCurrentViewportFlags; #else - #define unk_EE7884 RCT2_GLOBAL(0x00EE7884, paint_struct*) - #define gNextFreePaintStruct RCT2_GLOBAL(0x00EE7888, paint_struct*) + #define unk_EE7884 RCT2_GLOBAL(0x00EE7884, paint_entry*) + #define gNextFreePaintStruct RCT2_GLOBAL(0x00EE7888, paint_entry*) #define gCurrentRotation RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint8) #define gCurrentViewportFlags RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint32) #endif diff --git a/src/paint/paint.c b/src/paint/paint.c index 165166a2d8..2d166630d7 100644 --- a/src/paint/paint.c +++ b/src/paint/paint.c @@ -92,9 +92,8 @@ void painter_setup() { */ static paint_struct * sub_9819_c(uint32 image_id, rct_xyz16 offset, rct_xyz16 boundBoxSize, rct_xyz16 boundBoxOffset, uint8 rotation) { - paint_struct * ps = gNextFreePaintStruct; - - if (ps >= gEndOfPaintStructArray) return NULL; + if (gNextFreePaintStruct >= gEndOfPaintStructArray) return NULL; + paint_struct * ps = &gNextFreePaintStruct->basic; ps->image_id = image_id; @@ -205,13 +204,11 @@ paint_struct * sub_98196C( g_ps_F1AD28 = 0; g_aps_F1AD2C = NULL; - //Not a paint struct but something similar - paint_struct *ps = gNextFreePaintStruct; - - if (ps >= gEndOfPaintStructArray) { + if (gNextFreePaintStruct >= gEndOfPaintStructArray) { return NULL; } + paint_struct *ps = &gNextFreePaintStruct->basic; ps->image_id = image_id; uint32 image_element = image_id & 0x7FFFF; @@ -541,13 +538,11 @@ bool paint_attach_to_previous_attach(uint32 image_id, uint16 x, uint16 y) if (g_aps_F1AD2C == NULL) { return paint_attach_to_previous_ps(image_id, x, y); } - - attached_paint_struct * ps = (attached_paint_struct *)gNextFreePaintStruct; - - if ((paint_struct *)ps >= gEndOfPaintStructArray) { + + if (gNextFreePaintStruct >= gEndOfPaintStructArray) { return false; } - + attached_paint_struct * ps = &gNextFreePaintStruct->attached; ps->image_id = image_id; ps->x = x; ps->y = y; @@ -575,11 +570,10 @@ bool paint_attach_to_previous_attach(uint32 image_id, uint16 x, uint16 y) */ bool paint_attach_to_previous_ps(uint32 image_id, uint16 x, uint16 y) { - attached_paint_struct * ps = (attached_paint_struct *)gNextFreePaintStruct; - - if ((paint_struct *)ps >= gEndOfPaintStructArray) { + if (gNextFreePaintStruct >= gEndOfPaintStructArray) { return false; } + attached_paint_struct * ps = &gNextFreePaintStruct->attached; ps->image_id = image_id; ps->x = x; @@ -615,11 +609,10 @@ bool paint_attach_to_previous_ps(uint32 image_id, uint16 x, uint16 y) */ void sub_685EBC(money32 amount, rct_string_id string_id, sint16 y, sint16 z, sint8 y_offsets[], sint16 offset_x, uint32 rotation) { - paint_string_struct * ps = (paint_string_struct *)gNextFreePaintStruct; - - if ((paint_struct *)ps >= gEndOfPaintStructArray) { - return; - } + if (gNextFreePaintStruct >= gEndOfPaintStructArray) { + return; + } + paint_string_struct * ps = &gNextFreePaintStruct->string; ps->string_id = string_id; ps->next = 0; @@ -762,7 +755,7 @@ void viewport_paint_setup() static void sub_688217_helper(uint16 ax, uint8 flag) { paint_struct *ps, *ps_temp; - paint_struct *ps_next = unk_EE7884; + paint_struct *ps_next = &unk_EE7884->basic; do { ps = ps_next; @@ -871,10 +864,10 @@ static void sub_688217_helper(uint16 ax, uint8 flag) */ void sub_688217() { - paint_struct *ps = gNextFreePaintStruct; + paint_struct *ps_next; - gNextFreePaintStruct++; - unk_EE7884 = ps; + unk_EE7884 = gNextFreePaintStruct++; + paint_struct *ps = &unk_EE7884->basic; ps->next_quadrant_ps = NULL; uint32 edi = _F1AD0C; if (edi == -1) @@ -951,7 +944,7 @@ static void paint_attached_ps(paint_struct* ps, attached_paint_struct* attached_ /* rct2: 0x00688485 */ void paint_quadrant_ps() { rct_drawpixelinfo* dpi = unk_140E9A8; - paint_struct* ps = unk_EE7884; + paint_struct* ps = &unk_EE7884->basic; paint_struct* previous_ps = ps->next_quadrant_ps; for (ps = ps->next_quadrant_ps; ps;) { diff --git a/src/paint/paint.h b/src/paint/paint.h index 13001c58ee..562aa7c15f 100644 --- a/src/paint/paint.h +++ b/src/paint/paint.h @@ -26,17 +26,18 @@ typedef struct attached_paint_struct attached_paint_struct; struct paint_struct; typedef struct paint_struct paint_struct; +typedef union paint_entry paint_entry; #ifdef NO_RCT2 extern void *g_currently_drawn_item; - extern paint_struct * gEndOfPaintStructArray; + extern paint_entry * gEndOfPaintStructArray; extern sint16 gUnk9DE568; extern sint16 gUnk9DE56C; - extern paint_struct gPaintStructs[4000]; + extern paint_entry gPaintStructs[4000]; #else - #define gPaintStructs RCT2_ADDRESS(0x00EE788C, paint_struct) + #define gPaintStructs RCT2_ADDRESS(0x00EE788C, paint_entry) #define g_currently_drawn_item RCT2_GLOBAL(0x009DE578, void*) - #define gEndOfPaintStructArray RCT2_GLOBAL(0x00EE7880, paint_struct *) + #define gEndOfPaintStructArray RCT2_GLOBAL(0x00EE7880, paint_entry *) #define gUnk9DE568 RCT2_GLOBAL(0x009DE568, sint16) #define gUnk9DE56C RCT2_GLOBAL(0x009DE56C, sint16) #endif @@ -114,6 +115,12 @@ assert_struct_size(paint_string_struct, 0x1e); #endif #pragma pack(pop) +union paint_entry{ + paint_struct basic; + attached_paint_struct attached; + paint_string_struct string; +}; + typedef struct sprite_bb { uint32 sprite_id; rct_xyz16 offset; From 0cc33d7780c2ce46369e4a55f58377e696d4e122 Mon Sep 17 00:00:00 2001 From: LRFLEW Date: Tue, 20 Sep 2016 15:32:04 -0500 Subject: [PATCH 3/3] Fix usage of paint_entry in 64-bit builds (#12) --- src/interface/viewport.c | 4 ++-- src/interface/viewport.h | 4 ++-- src/paint/paint.c | 4 ++-- src/paint/paint.h | 29 ++++++++++++++--------------- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/interface/viewport.c b/src/interface/viewport.c index 8d3370fd96..689f8ed31b 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -52,8 +52,8 @@ uint8 gSavedViewZoom; uint8 gSavedViewRotation; #ifdef NO_RCT2 -paint_struct *unk_EE7884; -paint_struct *gNextFreePaintStruct; +paint_entry *unk_EE7884; +paint_entry *gNextFreePaintStruct; uint8 gCurrentRotation; uint32 gCurrentViewportFlags = 0; #endif diff --git a/src/interface/viewport.h b/src/interface/viewport.h index c0a30e3130..a1ab5692c0 100644 --- a/src/interface/viewport.h +++ b/src/interface/viewport.h @@ -105,8 +105,8 @@ extern uint8 gSavedViewZoom; extern uint8 gSavedViewRotation; #ifdef NO_RCT2 -extern paint_struct *unk_EE7884; -extern paint_struct *gNextFreePaintStruct; +extern paint_entry *unk_EE7884; +extern paint_entry *gNextFreePaintStruct; extern uint8 gCurrentRotation; extern uint32 gCurrentViewportFlags; #else diff --git a/src/paint/paint.c b/src/paint/paint.c index 2d166630d7..4a2635537b 100644 --- a/src/paint/paint.c +++ b/src/paint/paint.c @@ -33,12 +33,12 @@ paint_string_struct *pss1; paint_string_struct *pss2; #ifdef NO_RCT2 -paint_struct gPaintStructs[4000]; +paint_entry gPaintStructs[4000]; uint32 _F1AD0C; uint32 _F1AD10; static paint_struct *_paint_struct_quadrants[512]; void *g_currently_drawn_item; -paint_struct * gEndOfPaintStructArray; +paint_entry * gEndOfPaintStructArray; sint16 gUnk9DE568; sint16 gUnk9DE56C; paint_struct gUnkF1A4CC; diff --git a/src/paint/paint.h b/src/paint/paint.h index 562aa7c15f..3c21afe306 100644 --- a/src/paint/paint.h +++ b/src/paint/paint.h @@ -24,24 +24,9 @@ #include "../drawing/drawing.h" typedef struct attached_paint_struct attached_paint_struct; -struct paint_struct; typedef struct paint_struct paint_struct; typedef union paint_entry paint_entry; -#ifdef NO_RCT2 - extern void *g_currently_drawn_item; - extern paint_entry * gEndOfPaintStructArray; - extern sint16 gUnk9DE568; - extern sint16 gUnk9DE56C; - extern paint_entry gPaintStructs[4000]; -#else - #define gPaintStructs RCT2_ADDRESS(0x00EE788C, paint_entry) - #define g_currently_drawn_item RCT2_GLOBAL(0x009DE578, void*) - #define gEndOfPaintStructArray RCT2_GLOBAL(0x00EE7880, paint_entry *) - #define gUnk9DE568 RCT2_GLOBAL(0x009DE568, sint16) - #define gUnk9DE56C RCT2_GLOBAL(0x009DE56C, sint16) -#endif - #pragma pack(push, 1) /* size 0x12 */ struct attached_paint_struct { @@ -138,6 +123,20 @@ typedef struct support_height { uint8 pad; } support_height; +#ifdef NO_RCT2 +extern void *g_currently_drawn_item; +extern paint_entry * gEndOfPaintStructArray; +extern sint16 gUnk9DE568; +extern sint16 gUnk9DE56C; +extern paint_entry gPaintStructs[4000]; +#else +#define gPaintStructs RCT2_ADDRESS(0x00EE788C, paint_entry) +#define g_currently_drawn_item RCT2_GLOBAL(0x009DE578, void*) +#define gEndOfPaintStructArray RCT2_GLOBAL(0x00EE7880, paint_entry *) +#define gUnk9DE568 RCT2_GLOBAL(0x009DE568, sint16) +#define gUnk9DE56C RCT2_GLOBAL(0x009DE56C, sint16) +#endif + #ifndef NO_RCT2 #define gPaintInteractionType RCT2_GLOBAL(RCT2_ADDRESS_PAINT_SETUP_CURRENT_TYPE, uint8) #define gSupportSegments RCT2_ADDRESS(RCT2_ADDRESS_CURRENT_SUPPORT_SEGMENTS, support_height)