Pack structs for when loading from files

This commit is contained in:
Michał Janiszewski 2016-06-17 22:48:42 +02:00
parent 613c7250f2
commit 58b4361e8d
4 changed files with 14 additions and 14 deletions

View File

@ -523,6 +523,7 @@ typedef struct object_type_vtable {
// Ride (rct2: 0x006E6E2A) // Ride (rct2: 0x006E6E2A)
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#pragma pack(push, 1)
/** /**
* Ride type vehicle structure. * Ride type vehicle structure.
* size: 0x65 * size: 0x65
@ -573,6 +574,7 @@ typedef struct rct_ride_entry_vehicle_32bit {
uint8 special_frames; // 0x60 , 0x7A uint8 special_frames; // 0x60 , 0x7A
uint32 peep_loading_positions; // 0x61 , 0x7B note: uint32 uint32 peep_loading_positions; // 0x61 , 0x7B note: uint32
} rct_ride_entry_vehicle_32bit; } rct_ride_entry_vehicle_32bit;
assert_struct_size(rct_ride_entry_vehicle_32bit, 0x65);
/** /**
* Ride type structure. * Ride type structure.
@ -617,6 +619,8 @@ typedef struct rct_ride_entry_32bit {
uint8 shop_item; // 0x1C0 uint8 shop_item; // 0x1C0
uint8 shop_item_secondary; // 0x1C1 uint8 shop_item_secondary; // 0x1C1
} rct_ride_entry_32bit; } rct_ride_entry_32bit;
assert_struct_size(rct_ride_entry_32bit, 0x1c2);
#pragma pack(pop)
static uint8* object_type_ride_load(void *objectEntry, uint32 entryIndex, int *chunkSize) static uint8* object_type_ride_load(void *objectEntry, uint32 entryIndex, int *chunkSize)
{ {
@ -1317,6 +1321,7 @@ static const object_type_vtable object_type_ride_vtable[] = {
// Small Scenery (rct2: 0x006E3466) // Small Scenery (rct2: 0x006E3466)
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
#pragma pack(push, 1)
typedef struct rct_large_scenery_entry_32bit { typedef struct rct_large_scenery_entry_32bit {
uint8 tool_id; // 0x06 uint8 tool_id; // 0x06
uint8 flags; // 0x07 uint8 flags; // 0x07
@ -1328,6 +1333,7 @@ typedef struct rct_large_scenery_entry_32bit {
uint32 text; uint32 text;
uint32 text_image; uint32 text_image;
} rct_large_scenery_entry_32bit; } rct_large_scenery_entry_32bit;
assert_struct_size(rct_large_scenery_entry_32bit, 20);
typedef struct rct_small_scenery_entry_32bit { typedef struct rct_small_scenery_entry_32bit {
uint32 flags; // 0x06 uint32 flags; // 0x06
@ -1339,6 +1345,7 @@ typedef struct rct_small_scenery_entry_32bit {
uint8 pad_14[0x06]; uint8 pad_14[0x06];
uint8 scenery_tab_id; // 0x1A uint8 scenery_tab_id; // 0x1A
} rct_small_scenery_entry_32bit; } rct_small_scenery_entry_32bit;
assert_struct_size(rct_small_scenery_entry_32bit, 21);
typedef struct rct_scenery_entry_32bit { typedef struct rct_scenery_entry_32bit {
rct_string_id name; // 0x00 rct_string_id name; // 0x00
@ -1351,6 +1358,8 @@ typedef struct rct_scenery_entry_32bit {
rct_banner_scenery_entry banner; rct_banner_scenery_entry banner;
}; };
} rct_scenery_entry_32bit; } rct_scenery_entry_32bit;
assert_struct_size(rct_scenery_entry_32bit, 6 + 21);
#pragma pack(pop)
static uint8* object_type_small_scenery_load(void *objectEntry, uint32 entryIndex, int *chunkSize) static uint8* object_type_small_scenery_load(void *objectEntry, uint32 entryIndex, int *chunkSize)
{ {

View File

@ -122,9 +122,7 @@ typedef struct rct_ride_entry {
uint8 shop_item; // 0x1C0 uint8 shop_item; // 0x1C0
uint8 shop_item_secondary; // 0x1C1 uint8 shop_item_secondary; // 0x1C1
} rct_ride_entry; } rct_ride_entry;
#ifdef PLATFORM_32BIT // FIXME: unpack
assert_struct_size(rct_ride_entry, 0x1c2);
#endif
/** /**
* Ride structure. * Ride structure.

View File

@ -77,9 +77,7 @@ typedef struct rct_ride_entry_vehicle {
uint8 special_frames; // 0x60 , 0x7A uint8 special_frames; // 0x60 , 0x7A
sint8* peep_loading_positions; // 0x61 , 0x7B sint8* peep_loading_positions; // 0x61 , 0x7B
} rct_ride_entry_vehicle; } rct_ride_entry_vehicle;
#ifdef PLATFORM_32BIT // FIXME: unpack
assert_struct_size(rct_ride_entry_vehicle, 0x65);
#endif
typedef struct rct_vehicle { typedef struct rct_vehicle {
uint8 sprite_identifier; // 0x00 uint8 sprite_identifier; // 0x00

View File

@ -21,7 +21,6 @@
#include "../object.h" #include "../object.h"
#include "../world/map.h" #include "../world/map.h"
#pragma pack(push, 1)
typedef struct rct_small_scenery_entry { typedef struct rct_small_scenery_entry {
uint32 flags; // 0x06 uint32 flags; // 0x06
uint8 height; // 0x0A uint8 height; // 0x0A
@ -34,7 +33,6 @@ typedef struct rct_small_scenery_entry {
uint16 var_18; uint16 var_18;
uint8 scenery_tab_id; // 0x1A uint8 scenery_tab_id; // 0x1A
} rct_small_scenery_entry; } rct_small_scenery_entry;
assert_struct_size(rct_small_scenery_entry, 21);
typedef enum { typedef enum {
SMALL_SCENERY_FLAG_FULL_TILE = (1 << 0), // 0x1 SMALL_SCENERY_FLAG_FULL_TILE = (1 << 0), // 0x1
@ -67,6 +65,7 @@ typedef enum {
SMALL_SCENERY_FLAG27 = (1 << 27), // 0x8000000 SMALL_SCENERY_FLAG27 = (1 << 27), // 0x8000000
} SMALL_SCENERY_FLAGS; } SMALL_SCENERY_FLAGS;
#pragma pack(push, 1)
typedef struct rct_large_scenery_tile { typedef struct rct_large_scenery_tile {
sint16 x_offset; sint16 x_offset;
sint16 y_offset; sint16 y_offset;
@ -104,9 +103,7 @@ typedef struct rct_large_scenery_entry {
rct_large_scenery_text* text; // 0x12 rct_large_scenery_text* text; // 0x12
uint32 text_image; // 0x16 uint32 text_image; // 0x16
} rct_large_scenery_entry; } rct_large_scenery_entry;
#ifdef PLATFORM_32BIT // FIXME: unpack
assert_struct_size(rct_large_scenery_entry, 20);
#endif
typedef struct rct_wall_scenery_entry { typedef struct rct_wall_scenery_entry {
uint8 tool_id; // 0x06 uint8 tool_id; // 0x06
@ -162,9 +159,7 @@ typedef struct rct_scenery_entry {
rct_banner_scenery_entry banner; rct_banner_scenery_entry banner;
}; };
} rct_scenery_entry; } rct_scenery_entry;
#ifdef PLATFORM_32BIT // FIXME: unpack?
assert_struct_size(rct_scenery_entry, 6 + 21);
#endif
typedef struct rct_scenery_set_entry { typedef struct rct_scenery_set_entry {
rct_string_id name; // 0x00 rct_string_id name; // 0x00