diff --git a/sc2/src/sc2code/dummy.c b/sc2/src/sc2code/dummy.c index 8494cdb25..50a76c41d 100644 --- a/sc2/src/sc2code/dummy.c +++ b/sc2/src/sc2code/dummy.c @@ -25,9 +25,19 @@ #include "coderes.h" #include "races.h" + +#include "libs/compiler.h" + #include +typedef struct +{ + MEM_HANDLE handle _ALIGNED_ON(sizeof (MEM_HANDLE)); + RACE_DESC data _ALIGNED_ANY; +} CODERES_STRUCT; + + MEM_HANDLE LoadVidInstance (DWORD res) { @@ -82,7 +92,7 @@ enum MEM_HANDLE hData; which_res = GetResFileChar (fp); - hData = mem_request (sizeof (MEM_HANDLE) + sizeof (RACE_DESC)); + hData = mem_request (sizeof (CODERES_STRUCT)); if (hData) { RACE_DESCPTR RDPtr; @@ -298,10 +308,11 @@ enum } else { - MEM_HANDLE *lp; + CODERES_STRUCT *cs; - lp = (MEM_HANDLE *)mem_lock (hData); - *((RACE_DESCPTR)&lp[1]) = *RDPtr; + cs = (CODERES_STRUCT *) mem_lock (hData); + cs->data = *RDPtr; + // Structure assignment. mem_unlock (hData); } } @@ -341,20 +352,20 @@ DestroyCodeRes (MEM_HANDLE hCode) PVOID CaptureCodeRes (MEM_HANDLE hCode, PVOID pData, PVOID *ppLocData) { - MEM_HANDLE *p; + CODERES_STRUCT *cs; - if(hCode==0) + if (hCode == 0) { fprintf(stderr, "Ack! dummy.c::CaptureCodeRes() hCode==0! FATAL!\n"); return(0); } - p = (MEM_HANDLE *)mem_lock (hCode); - *p = hCode; - *ppLocData = &p[1]; + cs = (CODERES_STRUCT *) mem_lock (hCode); + cs->handle = hCode; + *ppLocData = (void *) &cs->data; (void) pData; /* Satisfying compiler (unused parameter) */ - return (p); + return (void *) cs; } diff --git a/sc2/src/sc2code/master.c b/sc2/src/sc2code/master.c index 8f7f16df9..7f5198b0c 100644 --- a/sc2/src/sc2code/master.c +++ b/sc2/src/sc2code/master.c @@ -54,6 +54,7 @@ if (master_q.head != 0) SHIP_INFOPTR ShipInfoPtr; TaskSwitch (); + // XXX: what is this doing here? BuiltShipPtr = LockStarShip (&master_q, hBuiltShip); load_ship (BuiltShipPtr, FALSE); @@ -92,6 +93,7 @@ if (master_q.head != 0) } TaskSwitch (); + // XXX: what is this doing here? } void diff --git a/sc2/src/sc2code/races.h b/sc2/src/sc2code/races.h index 3029a9279..156d6caab 100644 --- a/sc2/src/sc2code/races.h +++ b/sc2/src/sc2code/races.h @@ -21,6 +21,7 @@ #include "units.h" #include "element.h" +#include "libs/compiler.h" #include "libs/sndlib.h" @@ -62,7 +63,11 @@ typedef struct captain_stuff { - FRAME background, turn, thrust, weapon, special; + FRAME background; + FRAME turn; + FRAME thrust; + FRAME weapon; + FRAME special; } CAPTAIN_STUFF; typedef CAPTAIN_STUFF *PCAPTAIN_STUFF; #define CAPTAIN_STUFFPTR PCAPTAIN_STUFF @@ -189,19 +194,25 @@ typedef struct typedef DATA_STUFF *PDATA_STUFF; #define DATA_STUFFPTR PDATA_STUFF +typedef void (PREPROCESS_FUNC) (PELEMENT ElementPtr); +typedef void (POSTPROCESS_FUNC) (PELEMENT ElementPtr); +typedef COUNT (INIT_WEAPON_FUNC) (PELEMENT ElementPtr, HELEMENT Weapon[]); + typedef struct race_desc { - SHIP_INFO ship_info; - CHARACTERISTIC_STUFF characteristics; - DATA_STUFF ship_data; - INTEL_STUFF cyborg_control; + SHIP_INFO ship_info _ALIGNED_ANY; + CHARACTERISTIC_STUFF characteristics _ALIGNED_ANY; + DATA_STUFF ship_data _ALIGNED_ANY; + INTEL_STUFF cyborg_control _ALIGNED_ANY; - void (*preprocess_func) (PELEMENT ElementPtr); - void (*postprocess_func) (PELEMENT ElementPtr); - COUNT (*init_weapon_func) (PELEMENT ElementPtr, HELEMENT - Weapon[]); + PREPROCESS_FUNC *preprocess_func + _ALIGNED_ON(sizeof (PREPROCESS_FUNC *)); + POSTPROCESS_FUNC *postprocess_func + _ALIGNED_ON(sizeof (POSTPROCESS_FUNC *)); + INIT_WEAPON_FUNC *init_weapon_func + _ALIGNED_ON(sizeof (INIT_WEAPON_FUNC *)); - PVOID CodeRef; + PVOID CodeRef _ALIGNED_ON(sizeof (PVOID)); } RACE_DESC; typedef RACE_DESC *PRACE_DESC; #define RACE_DESCPTR PRACE_DESC @@ -210,29 +221,32 @@ typedef QUEUE_HANDLE HSTARSHIP; typedef struct { - HSTARSHIP pred, succ; + HSTARSHIP pred; + HSTARSHIP succ; DWORD RaceResIndex; RACE_DESCPTR RaceDescPtr; BYTE captains_name_index; - BYTE weapon_counter, - special_counter, - energy_counter; + BYTE weapon_counter; + BYTE special_counter; + BYTE energy_counter; BYTE ship_input_state; - UWORD cur_status_flags, old_status_flags; + UWORD cur_status_flags _ALIGNED_ON(sizeof (UWORD)); + UWORD old_status_flags _ALIGNED_ON(sizeof (UWORD)); - HELEMENT hShip; - COUNT ShipFacing; - FRAME silhouette; + FRAME silhouette _ALIGNED_ON(sizeof (FRAME)); + HELEMENT hShip _ALIGNED_ON(sizeof (HELEMENT)); + COUNT ShipFacing _ALIGNED_ON(sizeof (COUNT)); } STARSHIP; typedef STARSHIP *PSTARSHIP; #define STARSHIPPTR PSTARSHIP typedef struct { - HSTARSHIP pred, succ; + HSTARSHIP pred; + HSTARSHIP succ; DWORD RaceResIndex; RACE_DESCPTR RaceDescPtr; @@ -243,7 +257,8 @@ typedef SHIP_FRAGMENT *PSHIP_FRAGMENT; typedef struct { - HSTARSHIP pred, succ; + HSTARSHIP pred; + HSTARSHIP succ; DWORD RaceResIndex; RACE_DESCPTR RaceDescPtr;