1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-19 04:53:12 +01:00

Added rct_balloon and rct_duck structs

This commit is contained in:
Gericom
2015-02-28 11:47:09 +01:00
parent ff79e98819
commit 961a251dd0
4 changed files with 69 additions and 23 deletions

View File

@@ -409,10 +409,10 @@ void sub_6E7DE1(sint16 x, sint16 y, rct_window* w, rct_viewport* viewport){
memcpy(viewport, &view_copy, sizeof(rct_viewport));
}
//0x006E7A15
//rct2: 0x006E7A15
void viewport_set_underground_flag(int underground, rct_window* window, rct_viewport* viewport)
{
if (window->classification != 0)
if (window->classification != WC_MAIN_WINDOW)
{
if (!underground)
{

View File

@@ -385,6 +385,7 @@ int object_calculate_checksum(const rct_object_entry *entry, const char *data, i
}
/* ebp is made up of 3 pointers: no_elements, unknown, g1_source */
//rct2: 0x006A9ED1
int sub_6A9ED1(uint8_t** ebp)
{
int result;
@@ -409,6 +410,7 @@ int sub_6A9ED1(uint8_t** ebp)
return result;
}
//rct2: 0x006DE83E
int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dpi, int esi, int ebp)
{
if ((flags & 0xFF) != 3)
@@ -787,6 +789,7 @@ int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp
}
}
//rct2: 0x006A8621
int paint_path_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dpi, int esi, int ebp)
{
if ((flags & 0xFF) != 3)
@@ -845,6 +848,7 @@ int paint_path_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp
}
}
//rct2: 0x00666E42
int paint_park_entrance_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dpi, int esi, int ebp)
{
if ((flags & 0xFF) != 3)
@@ -888,6 +892,7 @@ int paint_park_entrance_entry(int flags, int ebx, int ecx, int edx, rct_drawpixe
}
}
//rct2: 0x006E6E2A
int paint_water_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dpi, int esi, int ebp)
{
if ((flags & 0xFF) != 3)
@@ -933,7 +938,7 @@ int paint_water_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* d
}
}
//0x0066B355
//rct2: 0x0066B355
int paint_stex_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dpi, int esi, int ebp)
{
if ((flags & 0xFF) != 3)

View File

@@ -31,19 +31,18 @@ rct_sprite* g_sprite_list = RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite);
*/
void create_balloon(int x, int y, int z, int colour)
{
//RCT2_CALLPROC_X(0x006736C7, x, colour << 8, y, z, 0, 0, 0);
rct_sprite* sprite = create_sprite(2);
if (sprite != NULL)
{
sprite->pad_00[0x14] = 13;
sprite->pad_00[9] = 22;
sprite->pad_00[0x15] = 11;
sprite->pad_00[0] = 2;
sprite->balloon.var_14 = 13;
sprite->balloon.var_09 = 22;
sprite->balloon.var_15 = 11;
sprite->balloon.sprite_identifier = 2;
sprite_move(x, y, z, sprite);
sprite->pad_00[1] = 7;
*((uint16_t*)&sprite->pad_00[0x26]) = 0;
sprite->pad_00[0x2C] = colour;
sprite->pad_00[0x24] = 0;
sprite->balloon.var_01 = 7;
sprite->balloon.var_26 = 0;
sprite->balloon.colour = colour;
sprite->balloon.var_24 = 0;
}
}
@@ -53,15 +52,14 @@ void create_balloon(int x, int y, int z, int colour)
*/
void create_duck(int targetX, int targetY)
{
//RCT2_CALLPROC_X(0x0067440F, targetX, 0, targetY, 0, 0, 0, 0);
rct_sprite* sprite = create_sprite(2);
if (sprite != NULL)
{
sprite->pad_00[0] = 2;
sprite->pad_00[1] = 8;
sprite->pad_00[0x14] = 9;
sprite->pad_00[9] = 0xC;
sprite->pad_00[0x15] = 9;
sprite->duck.sprite_identifier = 2;
sprite->duck.var_01 = 8;
sprite->duck.var_14 = 9;
sprite->duck.var_09 = 0xC;
sprite->duck.var_15 = 9;
int ebx = scenario_rand();
int ebp = ebx;
int edi = ebx;
@@ -71,8 +69,8 @@ void create_duck(int targetX, int targetY)
ebp &= 0x1E;
targetX += ebp;
targetY += ebp;
*((uint16_t*)&sprite->pad_00[0x30]) = targetX;
*((uint16_t*)&sprite->pad_00[0x32]) = targetY;
sprite->duck.x = targetX;
sprite->duck.y = targetY;
switch (ebx & 3)
{
case 0:
@@ -88,10 +86,10 @@ void create_duck(int targetX, int targetY)
targetY = 8191 - edi;
break;
}
sprite->pad_00[0x1E] = (ebx << 3) & 0xFF;
sprite->duck.var_1E = (ebx << 3) & 0xFF;
sprite_move(targetX, targetY, 496, sprite);
sprite->pad_00[0x48] = 0;
*((uint16_t*)&sprite->pad_00[0x26]) = 0;
sprite->duck.var_48 = 0;
sprite->duck.var_26 = 0;
}
}

View File

@@ -81,6 +81,47 @@ typedef struct {
uint32 var_24;
} rct_litter;
typedef struct {
uint8 sprite_identifier; // 0x00
uint8 var_01; // 0x01
uint16 var_02; // 0x02
uint16 next; // 0x04
uint16 previous; // 0x06
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
uint8 var_09; // 0x09
uint8 pad_0A[0xA];
uint8 var_14; // 0x14
uint8 var_15; // 0x15
uint8 pad_16[0xE];
uint8 var_24; // 0x24
uint8 pad_25;
uint16 var_26; // 0x26
uint8 pad_28[4];
uint8 colour; // 0x2C
} rct_balloon;
typedef struct {
uint8 sprite_identifier; // 0x00
uint8 var_01; // 0x01
uint16 var_02; // 0x02
uint16 next; // 0x04
uint16 previous; // 0x06
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
uint8 var_09; // 0x09
uint8 pad_0A[0xA];
uint8 var_14; // 0x14
uint8 var_15; // 0x15
uint8 pad_16[0x8];
uint8 var_1E; // 0x1E
uint8 pad_1F[0x7];
uint16 var_26;
uint8 pad_28[0x8];
sint16 x; // 0x30
sint16 y; // 0x32
uint8 pad_34[0x14];
uint8 var_48; // 0x48
} rct_duck;
/**
* Sprite structure.
* size: 0x0100
@@ -91,6 +132,8 @@ typedef union {
rct_peep peep;
rct_litter litter;
rct_vehicle vehicle;
rct_balloon balloon;
rct_duck duck;
} rct_sprite;
// rct2: 0x010E63BC