aboutsummaryrefslogtreecommitdiff
path: root/project/dclib/lib-mkw.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--project/dclib/lib-mkw.h108
1 files changed, 99 insertions, 9 deletions
diff --git a/project/dclib/lib-mkw.h b/project/dclib/lib-mkw.h
index 16f7f86..f0df9b5 100644
--- a/project/dclib/lib-mkw.h
+++ b/project/dclib/lib-mkw.h
@@ -15,7 +15,7 @@
* *
***************************************************************************
* *
- * Copyright (c) 2012-2021 by Dirk Clemens <wiimm@wiimm.de> *
+ * Copyright (c) 2012-2022 by Dirk Clemens <wiimm@wiimm.de> *
* *
***************************************************************************
* *
@@ -37,11 +37,11 @@
#define SZS_LIB_MKWII_H 1
#define _GNU_SOURCE 1
-#include "dclib-basics.h"
+#include "lib-mkw-def.h"
//
///////////////////////////////////////////////////////////////////////////////
-/////////////// CTW definitions / //////////////
+/////////////// CTW definitions ///////////////
///////////////////////////////////////////////////////////////////////////////
#define CTW_MAX_TRACK_ID 999999
@@ -51,6 +51,10 @@
/////////////// base definitions ///////////////
///////////////////////////////////////////////////////////////////////////////
+extern const sizeof_info_t sizeof_info_mkw[];
+
+///////////////////////////////////////////////////////////////////////////////
+
enum mkw_consts_t // some constants
{
//--- num of players
@@ -119,10 +123,10 @@ static inline bool IsMkwCustom ( uint tid )
#endif
// unsigned types, that can hold 1 or 2 bits for each player
-typedef u16 mkw_std_pbits1_t; // 12 bits needed
-typedef u32 mkw_std_pbits2_t; // 24 bits needed
-typedef u32 mkw_ex_pbits1_t; // 24 bits needed
-typedef u64 mkw_ex_pbits2_t; // 48 bits needed
+typedef u16 mkw_std_pbits1_t; // 12 bits needed
+typedef u32 mkw_std_pbits2_t; // 24 bits needed
+typedef u32 mkw_ex_pbits1_t; // 24 bits needed
+typedef u64 mkw_ex_pbits2_t; // 48 bits needed
#if SUPPORT_24P
typedef u32 mkw_pbits1_t;
@@ -138,6 +142,8 @@ typedef u64 mkw_ex_pbits2_t; // 48 bits needed
#define MKW_EX_MAX_PLAYER2 ( MKW_EX_MAX_PLAYER * MKW_EX_MAX_PLAYER )
#define MKW_MAX_PLAYER2 ( MKW_MAX_PLAYER * MKW_MAX_PLAYER )
+#define MAX_ROOM_MEMBERS MKW_MAX_PLAYER
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// assigned points for versus and rooms ///////////////
@@ -156,7 +162,7 @@ typedef u64 mkw_ex_pbits2_t; // 48 bits needed
typedef enum MkwPointID
{
//--- tables
- MPI_UNKNOWN, // no table assigend
+ MPI_UNKNOWN, // no table assigned
MPI_NINTENDO, // original table
MPI_LINEAR, // 4 linear tables
@@ -198,7 +204,7 @@ MkwPointInfo_t;
//-----------------------------------------------------------------------------
-const MkwPointInfo_t MkwPointInfo[MPI__N+1];
+extern const MkwPointInfo_t MkwPointInfo[MPI__N+1];
// [[24P--]] all tables
@@ -301,6 +307,90 @@ ccp GetMkwMusicName3 ( int mid );
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// engines ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+typedef enum mkw_engine_t
+{
+ MKW_ENGINE_50CC,
+ MKW_ENGINE_100CC,
+ MKW_ENGINE_150CC,
+ MKW_ENGINE_MIRROR,
+ MKW_ENGINE_200CC,
+ MKW_ENGINE__N
+}
+__attribute__ ((packed)) mkw_engine_t;
+
+extern const char mkw_engine_info[MKW_ENGINE__N+1][7];
+
+static inline ccp GetMkwEngineInfo ( mkw_engine_t engine )
+{
+ return (uint)engine < MKW_ENGINE__N ? mkw_engine_info[engine] : "?";
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// slots, drivers and vehicles ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[mkw_driver_t]]
+
+typedef struct mkw_driver_t
+{
+ u8 weight; // 0:small, 1:medium, 2:large
+ u8 is_mii; // 0:no Mii, 1:A, 2:B, 3:B
+ char id_en[5];
+ char id_de[5];
+ ccp name_en;
+ ccp name_de;
+}
+mkw_driver_t;
+
+#define MKW_N_DRIVER 42
+extern const mkw_driver_t mkw_driver_attrib[MKW_N_DRIVER+1];
+
+//-----------------------------------------------------------------------------
+// [[mkw_vehicle_t]]
+
+typedef struct mkw_vehicle_t
+{
+ u8 weight; // 0:small, 1:medium, 2:large
+ u8 is_bike; // 0:kart, 1:out-bike, 2:in-bike
+ u8 battle; // 0:not used in battle, 1:used in battle
+ char id_en[5];
+ char id_de[5];
+ ccp name_en;
+ ccp name_de;
+}
+mkw_vehicle_t;
+
+#define MKW_N_VEHICLE 36
+extern const mkw_vehicle_t mkw_vehicle_attrib[MKW_N_VEHICLE+1];
+
+//-----------------------------------------------------------------------------
+
+static inline bool IsMkwSlotValid ( uint slot )
+ { return slot < MAX_ROOM_MEMBERS; }
+
+static inline int GetDriverInt ( u8 driver )
+ { return driver >= 254 ? (int)driver - 256 : driver; }
+
+static inline int GetVehicleInt ( u8 vehicle )
+ { return vehicle >= 254 ? (int)vehicle - 256 : vehicle; }
+
+//-----------------------------------------------------------------------------
+
+// for optimization: `colsetī is always valid and never NULL!
+
+ccp GetSlotHex ( u8 slot );
+ccp GetSlotNum ( u8 slot );
+ccp GetDriverNum ( u8 driver );
+ccp GetVehicleNum ( u8 vehicle );
+
+ccp GetDriverName4 ( u8 driver );
+ccp GetVehicleName4 ( u8 vehicle );
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// END ///////////////
///////////////////////////////////////////////////////////////////////////////