diff --git a/src/addresses.h b/src/addresses.h index 2238a58c3a..c94b2327ba 100644 --- a/src/addresses.h +++ b/src/addresses.h @@ -208,7 +208,6 @@ #define RCT2_ADDRESS_SPRITE_LISTS_HEAD 0x013573BC #define RCT2_ADDRESS_SPRITE_LISTS_COUNT 0x013573C8 #define RCT2_ADDRESS_LOAN_HASH 0x013587C4 -#define RCT2_ADDRESS_LAST_RESEARCHED_ITEM_SUBJECT 0x01357CF4 #define RCT2_ADDRESS_CURRENT_PARK_VALUE 0x0135853C #define RCT2_ADDRESS_AWARD_LIST 0x01358760 #define RCT2_ADDRESS_SAME_PRICE_THROUGHOUT 0x01358838 @@ -220,21 +219,9 @@ #define RCT2_ADDRESS_PEEP_SPAWNS 0x013573F2 -#define RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL 0x013573FF - #define RCT2_ADDRESS_HANDYMAN_COLOUR 0x01357BCD #define RCT2_ADDRESS_MECHANIC_COLOUR 0x01357BCE #define RCT2_ADDRESS_SECURITY_COLOUR 0x01357BCF -#define RCT2_ADDRESS_RESEARCHED_SCENERY_ITEMS 0x01357BD0 - -#define RCT2_ADDRESS_ACTIVE_RESEARCH_TYPES 0x01357CF2 -#define RCT2_ADDRESS_RESEARH_PROGRESS_STAGE 0x01357CF3 - -#define RCT2_ADDRESS_NEXT_RESEARCH_ITEM 0x013580E0 -#define RCT2_ADDRESS_RESEARH_PROGRESS 0x013580E4 -#define RCT2_ADDRESS_NEXT_RESEARCH_CATEGORY 0x013580E6 -#define RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_DAY 0x013580E7 -#define RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_MONTH 0x013580E8 #define RCT2_ADDRESS_MAP_SIZE_UNITS 0x01358830 #define RCT2_ADDRESS_MAP_SIZE_MINUS_2 0x01358832 @@ -245,7 +232,6 @@ #define RCT2_TOTAL_RIDE_VALUE 0x013580EE #define RCT2_ADDRESS_PARK_RATING_WARNING_DAYS 0x0135883E -#define RCT2_RESEARCH_ITEMS 0x01358844 #define RCT2_ADDRESS_SCENARIO_NAME 0x0135920A #define RCT2_ADDRESS_SCENARIO_DETAILS 0x0135924A @@ -257,10 +243,6 @@ #define RCT2_ADDRESS_CURRENT_TICKS 0x013628F4 #define RCT2_ADDRESS_RIDE_LIST 0x013628F8 -#define RCT2_ADDRESS_RESEARCHED_RIDE_TYPES 0x01357404 -#define RCT2_ADDRESS_RESEARCHED_RIDE_ENTRIES 0x01357424 -#define RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_A 0x01357444 -#define RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_B 0x01357644 #define RCT2_ADDRESS_RIDE_COUNT 0x013587C8 #define RCT2_ADDRESS_RIDE_FLAGS 0x0097CF40 @@ -590,6 +572,24 @@ #define RCT2_ADDRESS_GUEST_INITIAL_HUNGER 0x013580F6 #define RCT2_ADDRESS_GUEST_INITIAL_THIRST 0x013580F7 +#define RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL 0x013573FF +#define RCT2_ADDRESS_ACTIVE_RESEARCH_TYPES 0x01357CF2 +#define RCT2_ADDRESS_RESEARH_PROGRESS_STAGE 0x01357CF3 +#define RCT2_ADDRESS_LAST_RESEARCHED_ITEM_SUBJECT 0x01357CF4 + +#define RCT2_ADDRESS_NEXT_RESEARCH_ITEM 0x013580E0 +#define RCT2_ADDRESS_RESEARH_PROGRESS 0x013580E4 +#define RCT2_ADDRESS_NEXT_RESEARCH_CATEGORY 0x013580E6 +#define RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_DAY 0x013580E7 +#define RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_MONTH 0x013580E8 + +#define RCT2_RESEARCH_ITEMS 0x01358844 +#define RCT2_ADDRESS_RESEARCHED_RIDE_TYPES 0x01357404 +#define RCT2_ADDRESS_RESEARCHED_RIDE_ENTRIES 0x01357424 +#define RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_A 0x01357444 +#define RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_B 0x01357644 +#define RCT2_ADDRESS_RESEARCHED_SCENERY_ITEMS 0x01357BD0 + #define RCT2_ADDRESS_CLIMATE 0x013CA746 #define RCT2_ADDRESS_CURRENT_WEATHER 0x013CA74A #define RCT2_ADDRESS_NEXT_WEATHER 0x013CA74B diff --git a/src/management/research.c b/src/management/research.c index 7eb108b58f..5584f5d0c3 100644 --- a/src/management/research.c +++ b/src/management/research.c @@ -33,17 +33,27 @@ const int _researchRate[] = { 0, 160, 250, 400 }; +uint8 gResearchFundingLevel; +uint8 gResearchPriorities; +uint16 gResearchProgress; +uint8 gResearchProgressStage; +uint32 gResearchLastItemSubject; +uint8 gResearchExpectedMonth; +uint8 gResearchExpectedDay; +uint8 gResearchNextCategory; +uint32 gResearchNextItem; + // 0x01358844[500] -rct_research_item *gResearchItems = RCT2_ADDRESS(RCT2_RESEARCH_ITEMS, rct_research_item); +rct_research_item gResearchItems[500]; // 0x00EE787C uint8 gResearchUncompletedCategories; -uint32 *gResearchedRideTypes = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_RIDE_TYPES, uint32); -uint32 *gResearchedRideEntries = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_RIDE_ENTRIES, uint32); -uint32 *gResearchedTrackTypesA = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_A, uint32); -uint32 *gResearchedTrackTypesB = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_TRACK_TYPES_B, uint32); -uint32 *gResearchedSceneryItems = RCT2_ADDRESS(RCT2_ADDRESS_RESEARCHED_SCENERY_ITEMS, uint32); +uint32 gResearchedRideTypes[8]; +uint32 gResearchedRideEntries[8]; +uint32 gResearchedTrackTypesA[128]; +uint32 gResearchedTrackTypesB[128]; +uint32 gResearchedSceneryItems[56]; bool gSilentResearch = false; diff --git a/src/management/research.h b/src/management/research.h index bd46a59801..b15c97aa67 100644 --- a/src/management/research.h +++ b/src/management/research.h @@ -65,23 +65,23 @@ enum { RESEARCH_CATEGORY_SCENERYSET }; -#define gResearchFundingLevel RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RESEARCH_LEVEL, uint8) -#define gResearchPriorities RCT2_GLOBAL(RCT2_ADDRESS_ACTIVE_RESEARCH_TYPES, uint8) -#define gResearchProgress RCT2_GLOBAL(RCT2_ADDRESS_RESEARH_PROGRESS, uint16) -#define gResearchProgressStage RCT2_GLOBAL(RCT2_ADDRESS_RESEARH_PROGRESS_STAGE, uint8) -#define gResearchLastItemSubject RCT2_GLOBAL(RCT2_ADDRESS_LAST_RESEARCHED_ITEM_SUBJECT, uint32) -#define gResearchExpectedMonth RCT2_GLOBAL(RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_MONTH, uint8) -#define gResearchExpectedDay RCT2_GLOBAL(RCT2_ADDRESS_NEXT_RESEARCH_EXPECTED_DAY, uint8) -#define gResearchNextCategory RCT2_GLOBAL(RCT2_ADDRESS_NEXT_RESEARCH_CATEGORY, uint8) -#define gResearchNextItem RCT2_GLOBAL(RCT2_ADDRESS_NEXT_RESEARCH_ITEM, uint32) +extern uint8 gResearchFundingLevel; +extern uint8 gResearchPriorities; +extern uint16 gResearchProgress; +extern uint8 gResearchProgressStage; +extern uint32 gResearchLastItemSubject; +extern uint8 gResearchExpectedMonth; +extern uint8 gResearchExpectedDay; +extern uint8 gResearchNextCategory; +extern uint32 gResearchNextItem; -extern rct_research_item *gResearchItems; +extern rct_research_item gResearchItems[500]; extern uint8 gResearchUncompletedCategories; -extern uint32 *gResearchedRideTypes; -extern uint32 *gResearchedRideEntries; -extern uint32 *gResearchedTrackTypesA; -extern uint32 *gResearchedTrackTypesB; -extern uint32 *gResearchedSceneryItems; +extern uint32 gResearchedRideTypes[8]; +extern uint32 gResearchedRideEntries[8]; +extern uint32 gResearchedTrackTypesA[128]; +extern uint32 gResearchedTrackTypesB[128]; +extern uint32 gResearchedSceneryItems[56]; extern bool gSilentResearch; void research_reset_items();