From aa310f65443db6fd0899bb9a004a750cc194513a Mon Sep 17 00:00:00 2001 From: Ted John Date: Mon, 12 Sep 2016 18:56:52 +0100 Subject: [PATCH] Conditionally integrate sprite list so original drawing still works --- ' | 0 a | 0 src/addresses.h | 7 ++++--- src/world/sprite.c | 10 ++++++++-- src/world/sprite.h | 6 ++++++ 5 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 ' create mode 100644 a diff --git a/' b/' new file mode 100644 index 0000000000..e69de29bb2 diff --git a/a b/a new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/addresses.h b/src/addresses.h index abd96a9206..9232e21dac 100644 --- a/src/addresses.h +++ b/src/addresses.h @@ -212,6 +212,10 @@ #define RCT2_ADDRESS_RIDE_FLAGS 0x0097CF40 +#define RCT2_ADDRESS_SPRITE_LIST 0x010E63BC +#define RCT2_ADDRESS_SPRITE_LISTS_HEAD 0x013573BC +#define RCT2_ADDRESS_SPRITE_LISTS_COUNT 0x013573C8 + //How many ticks the scenario has existed for #define RCT2_ADDRESS_SAVED_VIEW_X 0x0138869A #define RCT2_ADDRESS_SAVED_VIEW_Y 0x0138869C @@ -514,9 +518,6 @@ #define RCT2_ADDRESS_PARK_NAME 0x013573D4 #define RCT2_ADDRESS_PARK_NAME_ARGS 0x013573D8 #define RCT2_ADDRESS_PEEP_WARNING_THROTTLE 0x01358750 -#define RCT2_ADDRESS_SPRITE_LIST 0x010E63BC -#define RCT2_ADDRESS_SPRITE_LISTS_HEAD 0x013573BC -#define RCT2_ADDRESS_SPRITE_LISTS_COUNT 0x013573C8 #define RCT2_ADDRESS_PARK_FLAGS 0x013573E4 #define RCT2_ADDRESS_PARK_ENTRANCE_FEE 0x013573E8 #define RCT2_ADDRESS_GUESTS_IN_PARK 0x01357844 diff --git a/src/world/sprite.c b/src/world/sprite.c index 886c607672..6b909bb046 100644 --- a/src/world/sprite.c +++ b/src/world/sprite.c @@ -26,11 +26,17 @@ #include "fountain.h" #include "sprite.h" +#if NO_RCT2 uint16 gSpriteListHead[6]; uint16 gSpriteListCount[6]; -uint16 gSpriteSpatialIndex[0x10001]; - static rct_sprite _spriteList[MAX_SPRITES]; +#else +uint16 *gSpriteListHead = RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LISTS_HEAD, uint16); +uint16 *gSpriteListCount = RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LISTS_COUNT, uint16); +static rct_sprite *_spriteList = RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite); +#endif + +uint16 gSpriteSpatialIndex[0x10001]; rct_sprite *get_sprite(size_t sprite_idx) { diff --git a/src/world/sprite.h b/src/world/sprite.h index eedf88362d..f29e566ae7 100644 --- a/src/world/sprite.h +++ b/src/world/sprite.h @@ -404,8 +404,14 @@ rct_sprite *get_sprite(size_t sprite_idx); // rct2: 0x00982708 extern rct_sprite_entry g_sprite_entries[48]; +#if NO_RCT2 extern uint16 gSpriteListHead[6]; extern uint16 gSpriteListCount[6]; +#else +extern uint16 *gSpriteListHead; +extern uint16 *gSpriteListCount; +#endif + extern uint16 gSpriteSpatialIndex[0x10001]; rct_sprite *create_sprite(uint8 bl);