[Scummvm-git-logs] scummvm master -> b63a135e798d17a8f7263c81eb07acdf87a25982

dreammaster noreply at scummvm.org
Mon Sep 29 11:30:31 UTC 2025


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
413bd4c757 BAGEL: Refactoring out m_cStartDate/m_cEndData usage
b63a135e79 BAGEL: Further m_cEndData conversion


Commit: 413bd4c757c33c353c7eaa3cf61522b7503ff47f
    https://github.com/scummvm/scummvm/commit/413bd4c757c33c353c7eaa3cf61522b7503ff47f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-09-29T04:14:39-07:00

Commit Message:
BAGEL: Refactoring out m_cStartDate/m_cEndData usage

Changed paths:
    engines/bagel/hodjnpodj/hnplibs/gamedll.h
    engines/bagel/hodjnpodj/mankala/bgenut.h
    engines/bagel/hodjnpodj/mankala/btimeut.h
    engines/bagel/hodjnpodj/mankala/mnk.cpp
    engines/bagel/hodjnpodj/mankala/mnk.h
    engines/bagel/hodjnpodj/metagame/bgen/bbt.h
    engines/bagel/hodjnpodj/metagame/bgen/bdbg.cpp
    engines/bagel/hodjnpodj/metagame/bgen/bdbg.h
    engines/bagel/hodjnpodj/metagame/bgen/bfc.h
    engines/bagel/hodjnpodj/metagame/bgen/bgb.cpp
    engines/bagel/hodjnpodj/metagame/bgen/bgb.h
    engines/bagel/hodjnpodj/metagame/bgen/bgenut.h
    engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
    engines/bagel/hodjnpodj/metagame/bgen/btimeut.h
    engines/bagel/hodjnpodj/metagame/gtl/gtl.cpp
    engines/bagel/hodjnpodj/metagame/gtl/gtl.h
    engines/bagel/hodjnpodj/metagame/gtl/gtlcmp.cpp
    engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
    engines/bagel/hodjnpodj/metagame/gtl/gtldoc.cpp
    engines/bagel/hodjnpodj/metagame/gtl/gtldoc.h
    engines/bagel/hodjnpodj/metagame/gtl/gtlview.cpp
    engines/bagel/hodjnpodj/metagame/gtl/gtlview.h


diff --git a/engines/bagel/hodjnpodj/hnplibs/gamedll.h b/engines/bagel/hodjnpodj/hnplibs/gamedll.h
index 41b1196d854..c96eeff2948 100644
--- a/engines/bagel/hodjnpodj/hnplibs/gamedll.h
+++ b/engines/bagel/hodjnpodj/hnplibs/gamedll.h
@@ -42,19 +42,13 @@ namespace HodjNPodj {
 
 
 struct GAMESTRUCT {
-	long            lCrowns;
-	long            lScore;
-	int             nSkillLevel;
-	bool            bSoundEffectsEnabled;
-	bool            bMusicEnabled;
-	bool            bPlayingMetagame;
-	bool            bPlayingHodj;
-	/*  For use later in Beta Test
-	        int             nInstallationCode;
-	        char            chHomePath[PATHSPECSIZE];
-	        char            chCDPath[PATHSPECSIZE];
-	        char            chMiniPath[PATHSPECSIZE];
-	*/
+	long            lCrowns = 0;
+	long            lScore = 0;
+	int             nSkillLevel = 0;
+	bool            bSoundEffectsEnabled = false;
+	bool            bMusicEnabled = false;
+	bool            bPlayingMetagame = false;
+	bool            bPlayingHodj = false;
 };
 
 typedef GAMESTRUCT FAR *LPGAMESTRUCT;
diff --git a/engines/bagel/hodjnpodj/mankala/bgenut.h b/engines/bagel/hodjnpodj/mankala/bgenut.h
index 6322d95920e..c3797fc78b6 100644
--- a/engines/bagel/hodjnpodj/mankala/bgenut.h
+++ b/engines/bagel/hodjnpodj/mankala/bgenut.h
@@ -31,15 +31,10 @@ namespace Mankala {
 
 // class CGenUtil -- general utilities
 class CGenUtil {
-	char m_cStartData ;
-	bool m_bRandomInit ;      // random number seed initialized
-	char m_cEndData ;
+	bool m_bRandomInit = 0;      // random number seed initialized
 
 public:
-	// constructor zeroes out all fields
-	CGenUtil() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
-	}
+	CGenUtil() {}
 
 // bgenut.cpp -- Boffo Games general utilities
 
diff --git a/engines/bagel/hodjnpodj/mankala/btimeut.h b/engines/bagel/hodjnpodj/mankala/btimeut.h
index a8cdda47915..1548a24f5ac 100644
--- a/engines/bagel/hodjnpodj/mankala/btimeut.h
+++ b/engines/bagel/hodjnpodj/mankala/btimeut.h
@@ -34,19 +34,6 @@ void DoPendingEvents() ;
 
 // class CTimeUtil -- general utilities
 class CTimeUtil {
-
-	char m_cStartData ;
-	//bool m_bTimeDelayPassed ;   // flag: DelayMs function time expired
-
-
-	char m_cEndData ;
-
-public:
-	// constructor zeroes out all fields
-	CTimeUtil() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
-	}
-
 private:
 	//- DelayMs -- delay for specified # of milliseconds
 	bool DelayMs(unsigned int uMs) ;
@@ -55,8 +42,6 @@ private:
 		unsigned int /* uMsg */, uintptr /* uTimerId */, uint32 /* dwTime */) ;
 };
 
-
-
 } // namespace Mankala
 } // namespace HodjNPodj
 } // namespace Bagel
diff --git a/engines/bagel/hodjnpodj/mankala/mnk.cpp b/engines/bagel/hodjnpodj/mankala/mnk.cpp
index 93975c4fb2e..39509d78372 100644
--- a/engines/bagel/hodjnpodj/mankala/mnk.cpp
+++ b/engines/bagel/hodjnpodj/mankala/mnk.cpp
@@ -104,9 +104,6 @@ CMnkWindow::CMnkWindow() {
 	CSize   cMySize ;
 	HCURSOR hOldCursor;
 
-	memset((char *)&m_cStartData2, 0, (size_t)((char *)&m_cEndData2 - (char *)&m_cStartData2)) ;
-	// zero out all my fields
-
 	m_bJustStarted = true;
 	m_bStartGame = true ;   // set flag - game just starting
 	m_bRulesActive = false; //flag to indicate the rules scroll is unfurled.
diff --git a/engines/bagel/hodjnpodj/mankala/mnk.h b/engines/bagel/hodjnpodj/mankala/mnk.h
index e2de1ebdbb5..14e71006682 100644
--- a/engines/bagel/hodjnpodj/mankala/mnk.h
+++ b/engines/bagel/hodjnpodj/mankala/mnk.h
@@ -151,70 +151,70 @@ public:
 class CBmpObject {
 	friend class CMnk ;
 	friend class CMnkWindow ;
-	char m_cStartData ;
-	CBmpObject *m_xpcNextFree ;  // pointer to next in chain to free
-	bool m_bChained, m_bHeap ;  // on NextFree chain / on heap
-	CBmpObject *m_xpcNext ;     // pointer to next in chain
-	bool m_bDummy ;     // dummy object -- no bitmap
-	bool m_bMasked ;        // mask white areas of bitmap
-	class CPitWnd *m_xpcPit ;   // ptr to pit, for pit/bin types
-	bool m_bInit ;      // flag: object is initialized
-	int m_iBmpType ;        // BMT_xxxx -- bitmap type
-	int m_iBmpArg ;
-	int m_iBmpNum ;
-	int m_iStoneNum ;       // for type BMT_STONE
-	bool m_bSprite ;        // flag: use sprite, not DIB
-	class CSprite *m_xpcSprite ;   // if this is a sprite, store path
-	// there rather than in DIB
-	CDibDoc *m_xpDibDoc ;   // DIB document
-	HDIB m_lpDib;           // pointer to bitmap memory
-	CPoint m_cPosition ;    // position to paint bitmap
-	CSize m_cSize ;     // size of bitmap
-	char m_cEndData ;
 
-public:
-	CBmpObject() {
-		memset(&m_cStartData, 0,
-		       &m_cEndData - &m_cStartData) ;
-	}
+	CBmpObject *m_xpcNextFree = nullptr;  // pointer to next in chain to free
+	bool m_bChained = false, m_bHeap = false;  // on NextFree chain / on heap
+	CBmpObject *m_xpcNext = nullptr;	// pointer to next in chain
+	bool m_bDummy = false;				// dummy object -- no bitmap
+	bool m_bMasked = false;				// mask white areas of bitmap
+	class CPitWnd *m_xpcPit = nullptr;	// ptr to pit, for pit/bin types
+	bool m_bInit = false;				// flag: object is initialized
+	int m_iBmpType = 0;					// BMT_xxxx -- bitmap type
+	int m_iBmpArg = 0;
+	int m_iBmpNum = 0;
+	int m_iStoneNum = 0;				// for type BMT_STONE
+	bool m_bSprite = false;				// flag: use sprite, not DIB
+	CSprite *m_xpcSprite = nullptr;		// if this is a sprite, store path
+										// there rather than in DIB
+	CDibDoc *m_xpDibDoc = nullptr;		// DIB document
+	HDIB m_lpDib = nullptr;				// pointer to bitmap memory
+	CPoint m_cPosition;					// position to paint bitmap
+	CSize m_cSize;						// size of bitmap
 } ;
 
 // CMove -- position/move class
 class CMove {
 	friend class CMnk ;
 	friend class CMnkWindow ;
-	char m_cStartData ;
-	bool m_bRealMove ;  // this is CMove object for real board position
-	int m_iNumStones[NUMPLAYERS][NUMPITS + 2] ; // number of stones
-	// in each pit, prior to sowing
-	int m_iPlayer ;     // player on the move
-	int m_iTotalStones ;    // total stones in pits (not home bins)
-	long m_lConfigIndex ;   // configuration index for position
-	int m_iValues[NUMPITS] ; // value of each move
-	int m_iBestWinValue ;   // best value found
-	int m_iBestMove ;       // best move
-	class CPit *m_xpcPit ;  // ptr to pit being sowed
-	bool m_bFreeTurn ;  // player got free turn
-	bool m_bCapture ;   // capture occurred
-	int m_iCapturePit ; // # of opponent's pit that got captured
-	bool m_bHasCapture ;    // has a capture from here
-	bool m_bHasFree ;       // has free move from here
-	int m_iNumMoves ;       // number of legal moves
-	char m_cEndData ;
+
+	bool m_bRealMove = false;  // this is CMove object for real board position
+	// number of stones in each pit, prior to sowing
+	int m_iNumStones[NUMPLAYERS][NUMPITS + 2] = {};
+	int m_iPlayer = 0;				// player on the move
+	int m_iTotalStones = 0;			// total stones in pits (not home bins)
+	long m_lConfigIndex = 0;		// configuration index for position
+	int m_iValues[NUMPITS] = {};	// value of each move
+	int m_iBestWinValue = 0;		// best value found
+	int m_iBestMove = 0;			// best move
+	class CPit *m_xpcPit = nullptr;	// ptr to pit being sowed
+	bool m_bFreeTurn = false;		// player got free turn
+	bool m_bCapture = false;		// capture occurred
+	int m_iCapturePit = 0;			// # of opponent's pit that got captured
+	bool m_bHasCapture = false;		// has a capture from here
+	bool m_bHasFree = false;		// has free move from here
+	int m_iNumMoves = 0;			// number of legal moves
 
 	// methods to zero or copy CMove objects
 	void Zero() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
+		m_bRealMove = false;
+		Common::fill(&m_iNumStones[0][0], &m_iNumStones[0][0] + NUMPLAYERS * (NUMPITS + 2), 0);
+		m_iPlayer = 0;
+		m_iTotalStones = 0;
+		m_lConfigIndex = 0;
+		Common::fill(m_iValues, m_iValues + NUMPITS, 0);
+		m_iBestWinValue = 0;
+		m_iBestMove = 0;
+		m_xpcPit = nullptr;
+		m_bFreeTurn = false;
+		m_bCapture = false;
+		m_iCapturePit = 0;
+		m_bHasCapture = false;
+		m_bHasFree = false;
+		m_iNumMoves = 0;
 	}
-	void Copy(CMove * xpcMove) {
-		memcpy(&m_cStartData,
-		       &xpcMove->m_cStartData, &m_cEndData - &m_cStartData) ;
-		m_bRealMove = false ;
-	}
-
-public:
-	CMove() {
-		Zero();    // constructor
+	void Copy(CMove *xpcMove) {
+		*this = *xpcMove;
+		m_bRealMove = false;
 	}
 } ;
 
@@ -222,61 +222,49 @@ public:
 class CPit {
 	friend class CMnk ;
 public:
-	char m_cStartData ;
-	int m_iNumStones, m_iDispStones, m_iDispMax ;
-	int m_iPlayer, m_iPit ; // player #, pit #
-
-	char m_cEndData ;
-
-	// constructor zeroes out all fields
-	CPit() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
-	}
-
-} ; // CPit
+	int m_iNumStones = 0, m_iDispStones = 0, m_iDispMax = 0;
+	int m_iPlayer = 0, m_iPit = 0; // player #, pit #
+}; // CPit
 
 // CMnk -- Mankala game class
 class CMnk {
 private:
 	friend class CMnkWindow ;
-	CGenUtil m_cGenUtil ;       // general utility object
-	CTimeUtil m_cTimeUtil ;     // time utility object
-	char m_cStartData ;
-	bool m_bStartGame ;     // just starting game
-	bool m_bGameOver ;      // game is over
-	bool m_bGameOverMusicPlayed ;       // music played when game is over
-	int m_iTableStones ;    // number of stones in data table
-	long m_lNumConfigs ;    // # configs in best win table
-	long m_lTableSize ;     // size of best win table
-	bool m_bInitData ;      // flag: initialize data tables
-	class CMnkData FAR *m_lpCMnkData ;  // pointer to data tables
-	CSound *m_pSound;
+	CGenUtil m_cGenUtil ;					// general utility object
+	CTimeUtil m_cTimeUtil ;					// time utility object
+
+	bool m_bStartGame = false;				// just starting game
+	bool m_bGameOver = false;				// game is over
+	bool m_bGameOverMusicPlayed = false;	// music played when game is over
+	int m_iTableStones = 0;					// number of stones in data table
+	long m_lNumConfigs = 0;					// # configs in best win table
+	long m_lTableSize = 0;					// size of best win table
+	bool m_bInitData = false;				// flag: initialize data tables
+	class CMnkData FAR *m_lpCMnkData = nullptr;	// pointer to data tables
+	CSound *m_pSound = nullptr;
 
 //    XPVOID m_cWnd ;   // mankala window
 //    int m_iPlayer ;   // Next player: 0=player 1, 1=player 2
-	int m_iStartStones ;    // #stones per pit at start
-	bool m_bComputer[NUMPLAYERS] ; // flag: player is
+	int m_iStartStones = 0;    // #stones per pit at start
+	bool m_bComputer[NUMPLAYERS] = {}; // flag: player is
 	// computer (vs human)
-	class CPit *m_xpcPits[NUMPLAYERS][NUMPITS + 2] ;
-	// pointers to pit classes for pits, home bins,
-	// and hands
-//    int m_iHomeStones[NUMPLAYERS] ;   // #stones in each home bin
-//    int m_iPitStones[NUMPLAYERS][NUMPITS] ;   // #stones in each pit
-	int m_iMaxDepth[NUMPLAYERS], m_iCurrentMaxDepth ;
+	class CPit *m_xpcPits[NUMPLAYERS][NUMPITS + 2] = {};
+
+	int m_iMaxDepth[NUMPLAYERS] = {}, m_iCurrentMaxDepth = 0;
 	// max minimax depth
-	int m_iCapDepth[NUMPLAYERS], m_iCurrentCapDepth ;
+	int m_iCapDepth[NUMPLAYERS] = {}, m_iCurrentCapDepth = 0;
 	// minimax capture depth
-	int m_iNumberMoves ;    // #moves played so far
-	class CMove m_cCurrentMove ;    // current position/move
-	class CMove m_cMoveList[MAXMOVES] ; // move list
+	int m_iNumberMoves = 0;						// #moves played so far
+	class CMove m_cCurrentMove;					// current position/move
+	class CMove m_cMoveList[MAXMOVES];			// move list
 	enum enum_Level {LEV_NONE, LEV_RANDOM,
 	                 LEV_LOWEST, LEV_HIGHEST, LEV_EVAL, LEV_MINIMAX
 	                }
-	m_eLevel[NUMPLAYERS]  ;     // level of computer play
+	m_eLevel[NUMPLAYERS] = {};					// level of computer play
 
-	bool m_bDumpPopulate, m_bDumpMoves, m_bDumpTree ; // dump options
-
-	char m_cEndData ;
+	bool m_bDumpPopulate = false,
+		m_bDumpMoves = false,
+		m_bDumpTree = false;					// dump options
 
 private:
 	/**
@@ -292,11 +280,6 @@ private:
 	bool WriteTableFile();
 
 public:
-	CMnk() {
-		memset((char *)&m_cStartData, 0,
-		       (size_t)((char *)&m_cEndData - (char *)&m_cStartData)) ;
-	}
-
 // mnklog.cpp -- Mankala game logic
 
 //- InitMankala -- initialize a new game of Mankala
@@ -362,11 +345,11 @@ struct FIVE {
 class CFileHeader {
 	friend class CMnk;
 
-	char m_szText[80];		// descriptive text
-	int m_iHeaderSize;		// size of header (# bytes)
-	int m_iVersion;			// version number
-	int m_iTableStones;		// # stones in stored best win table
-	long m_lTableSize ;		// length of stored best win table
+	char m_szText[80] = {};		// descriptive text
+	int m_iHeaderSize = 0;		// size of header (# bytes)
+	int m_iVersion = 0;			// version number
+	int m_iTableStones = 0;		// # stones in stored best win table
+	long m_lTableSize = 0;		// length of stored best win table
 
 	void sync(Common::Serializer &s);
 };
@@ -374,29 +357,22 @@ class CFileHeader {
 // class CMnkData -- mankala data - this class used for move analysis
 typedef class FAR CMnkData {
 	friend class CMnk ;
-//    friend class CMnkWindow ;
 
-	char m_cStartData ;
 	CFileHeader m_cFileHeader ; // file header for data file
-	long m_NX[MAXTABLESTONES + 1][TOTALPITS + 1],
-	     m_NA[MAXTABLESTONES + 1][TOTALPITS + 1] ;
-	// NX[s,p] contains the number of arrangements of
-	// exactly s stones into p pits.  NA[s,p] contains the
-	// number of arrangements of s or fewer stones into
-	// p pits.
-
-	HGLOBAL m_hBestWin; // Windows handle for best win table
-	byte *m_hpcBestWin; // pointer to array
-	// of 5 bit values.  The subscripts are integers
-	// 0 <= subscript <= NUMCONFIGS, and the array element
-	// specifies the number of stones (-15 to +15, with -16
-	// representing an unknown value) that can be won from
-	// this configuration with best play.
-
-	char m_cEndData ;
-	CMnkData() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
-	}
+	long m_NX[MAXTABLESTONES + 1][TOTALPITS + 1] = {},
+		m_NA[MAXTABLESTONES + 1][TOTALPITS + 1] = {};
+		// NX[s,p] contains the number of arrangements of
+		// exactly s stones into p pits.  NA[s,p] contains the
+		// number of arrangements of s or fewer stones into
+		// p pits.
+
+	HGLOBAL m_hBestWin = nullptr; // Windows handle for best win table
+	byte *m_hpcBestWin = nullptr; // pointer to array
+		// of 5 bit values.  The subscripts are integers
+		// 0 <= subscript <= NUMCONFIGS, and the array element
+		// specifies the number of stones (-15 to +15, with -16
+		// representing an unknown value) that can be won from
+		// this configuration with best play.
 } class_CMnkData, *HPCMNKDATA;
 
 #define SPRITE_COUNT    15  // maximum sprites to be displayed
@@ -424,17 +400,8 @@ typedef class FAR CMnkData {
 // CPitWnd -- display class for pit (as well as home bin and hand)
 class CPitWnd : public CPit {
 	friend class CMnkWindow ;
-	char m_cStartData2 ;
-	CBmpObject *m_xpcStoneChain ;   // chain header for stone displays
-//    CPoint m_cStonePosition ; // position of first stone
-//    int m_iNumStones ;        // number of stones in pit
-	char m_cEndData2 ;
+	CBmpObject *m_xpcStoneChain = nullptr;	// chain header for stone displays
 	CBmpObject m_cBmpObject ;   // current bitmap object for pit with stones
-
-	CPitWnd() {
-		memset((char *)&m_cStartData2, 0,
-		       (size_t)((char *)&m_cEndData2 - (char *)&m_cStartData2));
-	}
 };
 
 
@@ -444,40 +411,35 @@ class CPitWnd : public CPit {
 
 class CMnkWindow : public CFrameWnd, public CMnk {
 	bool bPlayedGameOnce = false;
-	char m_cStartData2 ;
-	bool m_bJustStarted;    // flag to indicate beginning of game.
-	bool m_bGameWon;       //flag to indicate game result.
-	bool m_bRulesActive;    //flag to indicate the unfurled status of the rules scroll.
-	// ...this flag is set only when rules are invoked via the F1 key.
-	bool m_bScoresDisplayed; // to indicate that the Score has been displayed at the end of game,
-	//... and should pop up again.
-	CText *m_pText;
+
+	bool m_bJustStarted = false;	// flag to indicate beginning of game.
+	bool m_bGameWon = false;		// flag to indicate game result.
+	bool m_bRulesActive = false;	// flag to indicate the unfurled status of the rules scroll.
+		// ...this flag is set only when rules are invoked via the F1 key.
+	bool m_bScoresDisplayed = false;	// to indicate that the Score has been displayed at the end of game,
+		// ... and should pop up again.
+	CText *m_pText = nullptr;
 
 	CBmpObject m_cBmpMain ; // bitmap object for main window
-	CPalette *m_xpGamePalette, *m_xpOldPalette ;  // game pallet
-	CBmpObject *m_xpFreeStoneChain ;     // chain of unused stone sprites
-	CBmpObject *m_xpcBmpFreeChain ;     // chain of objects to be freed
-//    CSprite * m_xpStoneSprite ;   // basic stone sprite (others dup'ed)
-	CBmpObject m_cBmpScroll ;       // options scroll bitmap object
-	bool m_bInMenu ;        // within options menu
-	bool    m_bPlaySound;
-	char m_szDataDirectory[100] ;   // directory for data files
+	CPalette *m_xpGamePalette = nullptr, *m_xpOldPalette = nullptr;  // game pallet
+	CBmpObject *m_xpFreeStoneChain = nullptr;	// chain of unused stone sprites
+	CBmpObject *m_xpcBmpFreeChain = nullptr;	// chain of objects to be freed
+
+	CBmpObject m_cBmpScroll;					// options scroll bitmap object
+	bool m_bInMenu = false;						// within options menu
+	bool m_bPlaySound = false;
+	char m_szDataDirectory[100] = {};			// directory for data files
 
 	CRect m_cMainRect,   // screen area spanned by the game window
 	      m_cQuitRect,   // window area spanned by the QUIT button
 	      m_cOkayRect ;  // window area spanned by the OKAY button
 
-//    // pointers to chain of stone sprites for each pit/home/hand
-//    CStone * m_xpcHomeStones[NUMPLAYERS] ;    // bin stones
-//    CStone * m_xpcPitStones[NUMPLAYERS][NUMPITS] ;    // pit stones
-//    CStone * m_xpcHandStones[NUMPLAYERS] ;    // stones in hand
-	class CPitWnd *m_xpcPits[NUMPLAYERS][NUMPITS + 2] ;
+	class CPitWnd *m_xpcPits[NUMPLAYERS][NUMPITS + 2] = {};
 	// pointers to pit classes for pits, home bins,
 	// and hands
 	CBmpObject m_cBmpCrab ; // bitmap object for crab with no sign
 	CBmpObject m_cBmpSign ; // bitmap object for crab sign
-	int m_iBmpSign ;        // SBT_xxxx -- which sign crab displays
-	char m_cEndData2 ;
+	int m_iBmpSign = 0;        // SBT_xxxx -- which sign crab displays
 
 
 // mnk.cpp -- Mankala game -- Windows interface
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bbt.h b/engines/bagel/hodjnpodj/metagame/bgen/bbt.h
index da2609e959a..49212de3adc 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bbt.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bbt.h
@@ -37,16 +37,12 @@ class CBbutton;
 // CBbtMgr -- boffo games button manager
 class CBbtMgr {
 public:
-	char m_cStartData;
-	CBgbMgr FAR *m_lpBgbMgr;
-	CBbutton FAR *m_lpBbtChain;  // chain of bbt objects
-	CBbutton FAR *m_lpDownBbt;
-	char m_cEndData;
+	CBgbMgr FAR *m_lpBgbMgr = nullptr;
+	CBbutton FAR *m_lpBbtChain = nullptr;  // chain of bbt objects
+	CBbutton FAR *m_lpDownBbt = nullptr;
 
 public:
 	CBbtMgr(CBgbMgr FAR *lpBgbMgr = nullptr) {
-		memset(&m_cStartData, 0,
-			&m_cEndData - &m_cStartData);
 		m_lpBgbMgr = lpBgbMgr;
 	}
 
@@ -68,21 +64,18 @@ public:
 class FAR CBbutton {
 	friend class CBbtMgr;
 public:
-	char m_cStartData;
-	int m_iBbtId;      // button id
-	CBbutton FAR *m_lpBbtNext;     // pointer to next in chain
+	int m_iBbtId = 0;						// button id
+	CBbutton FAR *m_lpBbtNext = nullptr;	// pointer to next in chain
 	bool m_bChained : 1;    // on m_xBbtChain
-	bool m_bNoDelete;      // not allocated with "new"
+	bool m_bNoDelete = false;      // not allocated with "new"
 	bool m_bDummy : 1;      // dummy object -- no bitmap
 	bool m_bInit : 1;       // flag: object is initialized
-	CBgbObject FAR *m_lpcBgbObject1, FAR *m_lpcBgbObject2;
+	CBgbObject *m_lpcBgbObject1 = nullptr, *m_lpcBgbObject2 = nullptr;
 	// graphics objects for on/off
-	char m_cEndData;
 
 public:
 	CBbutton(int iId = 0) {
-		memset(&m_cStartData, 0,
-			&m_cEndData - &m_cStartData);
+		m_bChained = m_bDummy = m_bInit = false;
 		m_iBbtId = iId;
 	}
 	bool PtInButton(const CRPoint &crPoint) const {
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bdbg.cpp b/engines/bagel/hodjnpodj/metagame/bgen/bdbg.cpp
index 2e2fa33cc45..a7f0f94cfa1 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bdbg.cpp
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bdbg.cpp
@@ -34,8 +34,6 @@ CBdbgMgr FAR *CBdbgMgr::lpBdbgMgr = nullptr ;
 CBdbgMgr::CBdbgMgr() {
 	JXENTER(CBdbgMgr::CBdbgMgr) ;
 
-	// zero out all data
-	memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
 	lpBdbgMgr = this ;
 
 // cleanup:
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bdbg.h b/engines/bagel/hodjnpodj/metagame/bgen/bdbg.h
index b0c1b4d6c12..a4f82bd84f5 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bdbg.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bdbg.h
@@ -38,25 +38,24 @@ namespace Metagame {
 // CBdbgMgr -- boffo games debugging manager
 class CBdbgMgr {
 public:
-	static CBdbgMgr FAR *lpBdbgMgr ;    // pointer to this block
-	char m_cStartData ;
-	char m_szIniFilename[100] ; // .INI file name
-	char m_szIniSectionname[15] ;   // .INI file section name
-	bool m_bDebug ;     // flag -- debugging mode
-	bool m_bDebugMessages ; // debugging messages
-	bool m_bTimeMessage ;   // time stamp message
-	bool m_bTrack, m_bTrace ;   // debugging -- track/trace flags
-	bool m_bTraceError ;    // debugging -- trace error exits
-	int  m_iConstructorMsgLevel ; // level of constructor messages
-	bool m_bVerifyDc ;      // verify device context is ok
-	int  m_iDebugValues[100] ;  // misc debugging values
-	int  m_iTraceObjectCount ;  // max # objects to trace
-	void **m_lpTraceObjects ;  // trace object array
-	int  m_iTraceObjectCurrent ;    // # of array elements in use
-	int  m_iErrorCount ;    // number of errors encountered
-	char m_cEndData ;
+	static CBdbgMgr FAR *lpBdbgMgr;			// pointer to this block
+	char m_cStartData = 0;
+	char m_szIniFilename[100] = {};			// .INI file name
+	char m_szIniSectionname[15] = {};		// .INI file section name
+	bool m_bDebug = false;					// flag -- debugging mode
+	bool m_bDebugMessages = false;			// debugging messages
+	bool m_bTimeMessage = false;			// time stamp message
+	bool m_bTrack = false, m_bTrace = false; // debugging -- track/trace flags
+	bool m_bTraceError = false;				// debugging -- trace error exits
+	int  m_iConstructorMsgLevel = 0;		// level of constructor messages
+	bool m_bVerifyDc = false;				// verify device context is ok
+	int  m_iDebugValues[100] = {};			// misc debugging values
+	int  m_iTraceObjectCount = 0;			// max # objects to trace
+	void **m_lpTraceObjects = nullptr;		// trace object array
+	int  m_iTraceObjectCurrent = 0;			// # of array elements in use
+	int  m_iErrorCount = 0;					// number of errors encountered
 
-// methods
+	// methods
 	static CBdbgMgr FAR *GetPointer() {
 		return lpBdbgMgr;
 	}
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bfc.h b/engines/bagel/hodjnpodj/metagame/bgen/bfc.h
index 905a8929657..1bbb31321ec 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bfc.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bfc.h
@@ -51,125 +51,107 @@ struct NOTE_LIST {
 // CHodjPodj class -- information about Hodj or Podj
 class CHodjPodj {
 public:
-	char m_cStartData ;
+	bool m_bMoving = false;					// flag: this player moving
+	bool m_bComputer = false;				// flag: played by computer
+	bool m_bHaveMishMosh = false;
 
-	bool m_bMoving ;        // flag: this player moving
-	bool m_bComputer ;      // flag: played by computer
-	bool m_bHaveMishMosh;
-
-	int m_iSectorCode ;     // MG_SECTOR_xxxx
-	int m_iNode ;           // node # location
-	int m_iSkillLevel;
-	int m_iTargetNode;      // current destinations node #
+	int m_iSectorCode = 0;					// MG_SECTOR_xxxx
+	int m_iNode = 0;						// node # location
+	int m_iSkillLevel = 0;
+	int m_iTargetNode = 0;					// current destinations node #
 
 	// list of clue numbers for clues given by winning mini-game
-	int m_iWinInfoWon ;
-	int m_iWinInfoNeed ;
-	int m_iWinInfoTable[MAX_GAME_TABLE] ;
+	int m_iWinInfoWon = 0;
+	int m_iWinInfoNeed = 0;
+	int m_iWinInfoTable[MAX_GAME_TABLE] = {};
 
 	// list of clue numbers for clues given by farmer, etc.
-	int m_iSecondaryInfoWon ;
-	int m_iSecondaryInfoNeed ;
-	int m_iSecondaryInfoTable[MAX_GAME_TABLE] ;
+	int m_iSecondaryInfoWon = 0;
+	int m_iSecondaryInfoNeed = 0;
+	int m_iSecondaryInfoTable[MAX_GAME_TABLE] = {};
 
 	// list of objects required to get Mish/Mosh
-	int m_iRequiredObjectsCount ;
-	int m_iRequiredObjectsTable[MAX_GAME_TABLE] ;
-	int m_iRequiredMoney ;      // money needed for Mish/Mosh
+	int m_iRequiredObjectsCount = 0;
+	int m_iRequiredObjectsTable[MAX_GAME_TABLE] = {};
+	int m_iRequiredMoney = 0;				// money needed for Mish/Mosh
 
 	// list of secondary information location we still have to visit
-	int m_iSecondaryLoc[MAX_GAME_TABLE] ;
+	int m_iSecondaryLoc[MAX_GAME_TABLE] = {};
 
-	int m_iGameHistory[20] ;    // last 20 mini-games played
-	int m_iTargetLocation ;     // target location for computer play
-	int m_iSpecialTravelCode;
-	int m_iNumberBoatTries;
-	int m_iFurlongs;            // number of furlongs left for players turn
-	int m_nTurns;               // number of turns (not furlongs)
+	int m_iGameHistory[20] = {};			// last 20 mini-games played
+	int m_iTargetLocation = 0;				// target location for computer play
+	int m_iSpecialTravelCode = 0;
+	int m_iNumberBoatTries = 0;
+	int m_iFurlongs = 0;					// number of furlongs left for players turn
+	int m_nTurns = 0;						// number of turns (not furlongs)
 
 	// inventory information
 	// these fields are valid if m_bInventories is true, even if
 	// m_bRestart is false
-	CInventory  *m_pInventory;  // inventory player owns
-	CInventory  *m_pGenStore;   // player's inventory in general store
-	CInventory  *m_pBlackMarket;   // player's inventory in pawn shop
-	CInventory  *m_pTradingPost;   // player's inventory in trading post
-
-	NOTE_LIST   m_aClueArray[NUMBER_OF_CLUES]; // array of clues for the notebook
-
-	char m_cEndData ;
+	CInventory  *m_pInventory = nullptr;	// inventory player owns
+	CInventory  *m_pGenStore = nullptr;		// player's inventory in general store
+	CInventory  *m_pBlackMarket = nullptr;	// player's inventory in pawn shop
+	CInventory  *m_pTradingPost = nullptr;	// player's inventory in trading post
 
-	// constructor
-	CHodjPodj() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
-	}
+	NOTE_LIST   m_aClueArray[NUMBER_OF_CLUES] = {};	// array of clues for the notebook
 } ;
 
 // CBfcMgr -- boffo games interface manager class
 class CBfcMgr {
 public:
-	char m_cStartData;
+	bool m_bTraps[240] = {};				// used booby-trap/narration flags
 
-	bool m_bTraps[240];     // used booby-trap/narration flags
+	bool m_bLowMemory = false;				// low memory environment flag
 
-	bool m_bLowMemory;      // low memory environment flag
+	bool m_bSlowCPU = false;				// 80386 processor flag
 
-	bool m_bSlowCPU;        // 80386 processor flag
-
-	bool m_bInventories;    // use the inventory pointers even
+	bool m_bInventories = false;			// use the inventory pointers even
 	// if m_bRestart is false to indicate that some
 	// fields are still value (as noted)
-	int m_iGameTime;        // SHORT_GAME, MEDIUM_GAME or LONG_GAME
+	int m_iGameTime = 0;					// SHORT_GAME, MEDIUM_GAME or LONG_GAME
 	// Note: This value is valid if
 	// m_bInventories is true
-	bool m_bRestart ;       // (set by EXE for DLL) restarting game
+	bool m_bRestart = false;				// (set by EXE for DLL) restarting game
 	// (otherwise, remaining data is invalid, unless
 	// otherwise noted)
-	bool m_bGameOver ;      // if set, the meta-game is over (someone
+	bool m_bGameOver  = false;				// if set, the meta-game is over (someone
 	// has won MishMosh and is in castle)
-	bool m_bScrolling;      // true if scrolling map while walking
+	bool m_bScrolling = false;				// true if scrolling map while walking
 
-	bool m_bAnimations;     // true if showing animations
+	bool m_bAnimations = false;				// true if showing animations
 
-	bool m_bRestoredGame;   // true if restoring a saved game
+	bool m_bRestoredGame = false;			// true if restoring a saved game
 
-	bool m_bVisitedStore;   // true if computer Hodj/Podj visited a store
+	bool m_bVisitedStore = false;			// true if computer Hodj/Podj visited a store
 
-	int m_iFunctionCode ;   // (set by DLL for EXE) MG_GAME_xxxx to
+	int m_iFunctionCode = 0;				// (set by DLL for EXE) MG_GAME_xxxx to
 	// indicate that a game is to be played,
 	// or MG_DLLX_xxxx to indicate other DLL
 	// exit action
 
-	bool m_bChanged;        // Save Game check to determine if we need to
+	bool m_bChanged = false;				// Save Game check to determine if we need to
 	// ask about saving users game.
 	// This field does NOT need to be save in the
 	// .SAV file.
 
-	uint32   m_dwFreeSpaceMargin;
-	uint32   m_dwFreePhysicalMargin;
+	uint32   m_dwFreeSpaceMargin = 0;
+	uint32   m_dwFreePhysicalMargin = 0;
 
-	int m_nInstallationCode;
-	char m_chHomePath[PATHSPECSIZE];
-	char m_chCDPath[PATHSPECSIZE];
-	char m_chMiniPath[PATHSPECSIZE];
+	int m_nInstallationCode = 0;
+	char m_chHomePath[PATHSPECSIZE] = {};
+	char m_chCDPath[PATHSPECSIZE] = {};
+	char m_chMiniPath[PATHSPECSIZE] = {};
 
 	struct GAMESTRUCT m_stGameStruct ;
-	int m_iMishMoshLoc ;    // MG_LOC_xxxx -- Mish/Mosh location
+	int m_iMishMoshLoc = 0;    // MG_LOC_xxxx -- Mish/Mosh location
 
 	// ... need color narration information from Barbara
 
 	class CHodjPodj m_cHodj, m_cPodj ;  // Hodj/Podj info
 
 	// these items must be created in the Frame EXE
-	CItem *m_pMishItem;
-	CItem *m_pMoshItem;
-
-	char m_cEndData ;
-
-	// constructor
-	CBfcMgr() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
-	}
+	CItem *m_pMishItem = nullptr;
+	CItem *m_pMoshItem = nullptr;
 };
 
 } // namespace Metagame
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bgb.cpp b/engines/bagel/hodjnpodj/metagame/bgen/bgb.cpp
index 6e374e9d528..bba38b5ab90 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bgb.cpp
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bgb.cpp
@@ -63,13 +63,8 @@ CBgbMgr *gpBgbMgr;
 *
 *****************************************************************************/
 CBgbMgr::CBgbMgr() {
-	// Initialize all member variables to 0
-	memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
-
 	gpBgbMgr = this;
 	m_bAnimationsPaused = true;
-
-	//ErrorLog("DEBUG.LOG", "Free Space: %ld", GetFreeSpace(0));
 }
 
 
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bgb.h b/engines/bagel/hodjnpodj/metagame/bgen/bgb.h
index b2eed3c93e4..abd8e3bf59b 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bgb.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bgb.h
@@ -47,32 +47,30 @@ public:
 
 	// Following should be in view-specific block
 	//
-	char        m_cStartData;
-	CView *m_xpcView;                 // current window, when non-null
-	CDC *m_xpDc;                    // current device context
-	COLORREF    m_cPenColor, m_cBrushColor;
-	int         m_iPenWidth, m_iBrushStyle;
-	CBrush *m_xpOldBrush;
-	CPen *m_xpOldPen;
-	bool        m_bCreatePen, m_bCreateBrush;
-	bool        m_bReleaseDc;               // flag: release DC when done
-	int         m_iLockCount;               // if positive, don't release DC
+	CView *m_xpcView = nullptr;				// current window, when non-null
+	CDC *m_xpDc = nullptr;					// current device context
+	COLORREF    m_cPenColor = 0, m_cBrushColor = 0;
+	int         m_iPenWidth = 0, m_iBrushStyle = 0;
+	CBrush *m_xpOldBrush = nullptr;
+	CPen *m_xpOldPen = nullptr;
+	bool        m_bCreatePen = false, m_bCreateBrush = false;
+	bool        m_bReleaseDc = false;		// flag: release DC when done
+	int         m_iLockCount = 0;			// if positive, don't release DC
 
-	CBsuSet *m_xpBsuSet;                 // scroll bar set, if any
+	CBsuSet *m_xpBsuSet = nullptr;			// scroll bar set, if any
 
-	CPalette *m_xpGamePalette;            // game pallet
-	CPalette *m_xpOldPalette;
+	CPalette *m_xpGamePalette = nullptr;	// game pallet
+	CPalette *m_xpOldPalette = nullptr;
 
-	CBgbObject *m_lpBgbChain;               // chain of bgb objects
+	CBgbObject *m_lpBgbChain = nullptr;		// chain of bgb objects
 
-	CLList *m_pFXList;                  // Special Effects list
+	CLList *m_pFXList = nullptr;			// Special Effects list
 
-	bool        m_bInMenu;                  // within options menu
-	char        m_szDataDirectory[100];     // directory for data files
-	char        m_cEndData;
+	bool        m_bInMenu = false;			// within options menu
+	char        m_szDataDirectory[100] = {};	// directory for data files
 
 private:
-	bool        m_bAnimationsPaused;        // Animations Paused/UnPaused
+	bool        m_bAnimationsPaused = false;	// Animations Paused/UnPaused
 
 	// methods
 public:
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bgenut.h b/engines/bagel/hodjnpodj/metagame/bgen/bgenut.h
index 8076605843d..4e5b539794c 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bgenut.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bgenut.h
@@ -31,18 +31,9 @@ namespace Metagame {
 
 // class CGenUtil -- general utilities
 class CGenUtil {
-
-	char m_cStartData ;
-	bool m_bRandomInit ;          // random number seed initialized
-	char m_cEndData ;
+	bool m_bRandomInit = false;		// random number seed initialized
 
 public:
-
-	// constructor zeroes out all fields
-	CGenUtil() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
-	}
-
 	// bgenut.cpp -- Boffo Games general utilities
 
 	int RandomInteger(int iLow, int iHigh) ;
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h b/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
index fac91c6a644..a097fc138fc 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
@@ -71,26 +71,18 @@ class CRRect;
 // CBsuSet -- boffo scroll utility set
 class CBsuSet {
 public:
-	char m_cStartData;
-	class CBsuBar *m_xpBarChain;   // chain of scroll bar objects
-	bool m_bInUpdateBars;  // prevent UpdateBars recursion
-	CDialog *m_xpDlg;      // dialog to be updated
-	CWnd *m_xpWnd;     // window to be scrolled
-
-	bool m_bDebugMessages;
-	bool m_bPrimary;   // primary in linked sets
-	bool m_bScrollView;    // window uses CScrollView
-	bool m_bScrollBars;    // window to have windows scroll bars
-	CBsuSet *m_xpSetLink;  // one alternate set of scroll bars
-	char m_cEndData;
+	class CBsuBar *m_xpBarChain = nullptr;	// chain of scroll bar objects
+	bool m_bInUpdateBars = false;			// prevent UpdateBars recursion
+	CDialog *m_xpDlg = nullptr;				// dialog to be updated
+	CWnd *m_xpWnd = nullptr;				// window to be scrolled
 
-public:
-	CBsuSet() {
-		TRACECONSTRUCTOR(CBsuSet);
-		memset(&m_cStartData, 0,
-			&m_cEndData - &m_cStartData);
-	}
+	bool m_bDebugMessages = false;
+	bool m_bPrimary = false;				// primary in linked sets
+	bool m_bScrollView = false;				// window uses CScrollView
+	bool m_bScrollBars = false;				// window to have windows scroll bars
+	CBsuSet *m_xpSetLink = nullptr;			// one alternate set of scroll bars
 
+public:
 	~CBsuSet();
 	//- InitWndBsuSet -- initialize bsu set for a window
 	bool InitWndBsuSet(CWnd *xpWnd,
@@ -241,17 +233,8 @@ public:
 //		to CView::OnUpdate
 class CGtlHint : public CObject {
 public:
-	char m_cStartData;
-	//    bool m_bFull ;    // full screen invalidate
-	bool m_bWmPaint;   // update with WM_PAINT message
+	bool m_bWmPaint = false;	// update with WM_PAINT message
 	CRect cHintRect;
-	char m_cEndData;
-
-	CGtlHint() {
-		memset(&m_cStartData,
-			0, &m_cEndData - &m_cStartData);
-	}
-	//    DECLARE_SERIAL(CGtlHint) ;
 };
 
 } // namespace Gtl
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/btimeut.h b/engines/bagel/hodjnpodj/metagame/bgen/btimeut.h
index 3ec16cba706..c25c38ca0fe 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/btimeut.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/btimeut.h
@@ -33,17 +33,9 @@ extern void DoPendingEvents();
 // class CTimeUtil -- general utilities
 class CTimeUtil {
 public:
-	char m_cStartData ;
-	bool m_bTimeDelayPassed ;   // flag: DelayMs function time expired
-
-	char m_cEndData ;
+	bool m_bTimeDelayPassed = false;   // flag: DelayMs function time expired
 
 public:
-	// constructor zeroes out all fields
-	CTimeUtil() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
-	}
-
 //- DelayMs -- delay for specified # of milliseconds
 	bool DelayMs(unsigned int uMs) ;
 
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtl.cpp b/engines/bagel/hodjnpodj/metagame/gtl/gtl.cpp
index 6ee6255eab3..68755610d7e 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtl.cpp
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtl.cpp
@@ -61,7 +61,6 @@ END_MESSAGE_MAP()
 
 CGtlApp::CGtlApp() {
 	// Place all significant initialization in InitInstance
-	memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
 	bExitMetaDLL = st_bExitDll = false;
 }
 
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtl.h b/engines/bagel/hodjnpodj/metagame/gtl/gtl.h
index 31687032a44..7a04c76441e 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtl.h
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtl.h
@@ -46,22 +46,20 @@ namespace Gtl {
 
 class CGtlApp : public CWinApp {
 public:
-	char m_cStartData ;
-	CBdbgMgr m_cBdbgMgr ;       // Boffo games debug manager object
-	bool m_bTitle ;             // flag -- use window with title bar
-	int  m_iNumOpens ;          // number of document opens (including "New")
-	char m_szFilename[60] ;     // input file name
-	int  m_iX, m_iY ;           // position of screen
-	int  m_iHeight, m_iWidth ;  // height/width of screen
-	bool m_bControlDialog ;     // display control dialog box
-	bool m_bMenuDialog ;        // display menu dialog box
-	bool m_bInfoDialog ;        // display info dialog box
-	bool m_bNodeDialog ;        // display node dialog box
-	bool m_bShowNodes ;         // show nodes on map
-	bool m_bPaintBackground ;   // paint background on map paint
-	bool m_bStartMetaGame ;     // start meta game automatically
-	bool m_bDumpGamePlay ;      // dump game play
-	char m_cEndData ;
+	CBdbgMgr m_cBdbgMgr;				// Boffo games debug manager object
+	bool m_bTitle = false;				// flag -- use window with title bar
+	int  m_iNumOpens = 0;				// number of document opens (including "New")
+	char m_szFilename[60] = {};			// input file name
+	int  m_iX = 0, m_iY = 0;			// position of screen
+	int  m_iHeight = 0, m_iWidth = 0;	// height/width of screen
+	bool m_bControlDialog = false;		// display control dialog box
+	bool m_bMenuDialog = false;			// display menu dialog box
+	bool m_bInfoDialog = false;			// display info dialog box
+	bool m_bNodeDialog = false;			// display node dialog box
+	bool m_bShowNodes = false;			// show nodes on map
+	bool m_bPaintBackground = false;	// paint background on map paint
+	bool m_bStartMetaGame = false;		// start meta game automatically
+	bool m_bDumpGamePlay = false;		// dump game play
 
 	virtual bool InitInstance() override;
 
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtlcmp.cpp b/engines/bagel/hodjnpodj/metagame/gtl/gtlcmp.cpp
index 5756a40cda9..6c15c5d953b 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtlcmp.cpp
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtlcmp.cpp
@@ -132,9 +132,8 @@ bool CGtlData::GatherInformation(CXodj * xpXodj)
 	// zeroed except for the location code
 	for (iK = 0 ; iK < MG_LOC_MAX + 1 ; ++iK) {
 		xpStratLocInfo = &xpStrategyInfo->m_cStratLocInfo[iK] ;
-		memset(&xpStratLocInfo->m_cStartData, 0,
-		       &xpStratLocInfo->m_cEndData
-		       - &xpStratLocInfo->m_cStartData) ;
+		xpStratLocInfo->clear();
+
 		if (iK < MG_LOC_MAX) {
 			xpStratLocInfo->m_iLocCode = MG_LOC_BASE + iK ;
 			xpStratLocInfo->m_lpNode = LocationToNode(
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h b/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
index 78bdb21824d..e3c324e83bc 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
@@ -158,22 +158,21 @@ class CLexElement {
 	int m_iVal ;          // integer or char or keyword code
 	int m_iStringListPos ;      // string position
 	int m_iLineNumber, m_iColumn ;      // for error messages
-} ;
+};
 
 // CKeyTab -- keyword table element
 class CKeyTab {
 public:
 	int m_iKeyValue ;   // keyword value
 	const char *m_xpszKeyString ;     // string
-} ;
+};
 
 // CMap -- bit map
 class CMap {
 	friend class CGtlData ;
 
-	char m_cStartData ;
-	char m_szLabel[MAX_LABEL_LENGTH] ;  // bitmap label
-	char m_szFilename[MAX_FILENAME_LENGTH] ;    // file name of BMP file
+	char m_szLabel[MAX_LABEL_LENGTH] = {};  // bitmap label
+	char m_szFilename[MAX_FILENAME_LENGTH] = {};    // file name of BMP file
 	bool m_bPositionDetermined: 1 ;
 	bool m_bSprite : 1 ;
 	bool m_bPalette : 1 ;               // game palette from this bitmap
@@ -183,18 +182,24 @@ class CMap {
 	bool m_bRelocatable : 1 ;           // relocatable
 	bool m_bPositionSpecified : 1 ;     // position specified on input
 	bool m_bSpecialPaint: 1 ;           // don't automatically paint
-	CBgbObject FAR *m_lpcBgbObject ;    // Boffo game object for bitmap file
+	CBgbObject FAR *m_lpcBgbObject = nullptr;    // Boffo game object for bitmap file
 
-	int m_iRelationType ;       // KT_ABOVE, KT_BELOW, KT_LEFT, KT_RIGHT,
+	int m_iRelationType = 0;       // KT_ABOVE, KT_BELOW, KT_LEFT, KT_RIGHT,
 	// KT_NODE
-	int m_iRelation ;           // index of relation bitmap or node
-	char m_cEndData ;
+	int m_iRelation = 0;           // index of relation bitmap or node
 
 	CMap() {
-		memset(&m_cStartData,
-		       0, &m_cEndData - &m_cStartData);
+		m_bPositionDetermined = false;
+		m_bSprite = false;
+		m_bPalette = false;
+		m_bOverlay = false;
+		m_bMasked = false;
+		m_bMetaGame = false;
+		m_bRelocatable = false;
+		m_bPositionSpecified = false;
+		m_bSpecialPaint = false;
 	}
-} ;
+};
 
 /**
  * Node on the map
@@ -230,47 +235,41 @@ class CStratLocInfo {
 	friend class CGtlData ;
 	friend class CStrategyInfo ;
 
-	char m_cStartData ;
-	int m_iLocCode ;            // MG_LOC_xxxx -- location code
-	CNode FAR *m_lpNode ;       // node pointer for location
-	int m_iValueCode ;          // MG_VISIT_xxxx or MG_WIN_xxxx
+	int m_iLocCode = 0;				// MG_LOC_xxxx -- location code
+	CNode FAR *m_lpNode = nullptr;	// node pointer for location
+	int m_iValueCode = 0;			// MG_VISIT_xxxx or MG_WIN_xxxx
 	// or 0 if not eligible
-	int m_iDistance ;           // distance to location
-	int m_iWeight ;             // weight of location
-	int m_iAdjustedWeight ;     // weight adjusted by distance
-
-	char m_cEndData ;
-	CStratLocInfo() {
-		memset(&m_cStartData,
-		       0, &m_cEndData - &m_cStartData) ;
+	int m_iDistance = 0;			// distance to location
+	int m_iWeight = 0;				// weight of location
+	int m_iAdjustedWeight = 0;		// weight adjusted by distance
+
+	void clear() {
+		m_iLocCode = 0;
+		m_lpNode = nullptr;
+		m_iValueCode = 0;
+		m_iDistance = 0;
+		m_iWeight = 0;
+		m_iAdjustedWeight = 0;
 	}
-} ;
+};
 
 
 // CStrategyInfo -- strategy information for determining best move
 class CStrategyInfo {
 	friend class CGtlData ;
 
-	char m_cStartData ;
-	CStratLocInfo *xpTargetLocInfo ;    // target location (best move)
-
-	int m_iRequiredObjectsCount ;   // total number of objects I need
-	int m_iRequiredObjectsTable[MAX_GAME_TABLE] ; // objects I need
+	CStratLocInfo *xpTargetLocInfo = nullptr;		// target location (best move)
 
-	int m_iMaximumDistance ;    // max distance to eligible location
-	int m_iMaxAdjustedWeight ;  // maximum adjusted weight
-	int m_iTopLocCount ;        // number of top locations
-	int m_iTopLocTable[MG_LOC_MAX] ;    // table of top locations
+	int m_iRequiredObjectsCount = 0;				// total number of objects I need
+	int m_iRequiredObjectsTable[MAX_GAME_TABLE] = {};	// objects I need
 
-	char m_cEndData ;
+	int m_iMaximumDistance = 0;						// max distance to eligible location
+	int m_iMaxAdjustedWeight = 0;					// maximum adjusted weight
+	int m_iTopLocCount = 0;							// number of top locations
+	int m_iTopLocTable[MG_LOC_MAX] = {};			// table of top locations
 
 	CStratLocInfo m_cStratLocInfo[MG_LOC_MAX + 1] ;
-
-	CStrategyInfo() {
-		memset(&m_cStartData,
-		       0, &m_cEndData - &m_cStartData) ;
-	}
-} ;
+};
 
 // CXodj -- structure for Hodj Podj
 class CXodj {
@@ -337,7 +336,7 @@ public:
 		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
 	}
 	~CXodj();
-} ;
+};
 
 // CGtlData -- data class for graphics utility
 class CGtlData {
@@ -728,7 +727,7 @@ private:
 
 	void CheckForTransport(CXodj *, int);
 	void SetFurlongs(CXodj *);
-} ;
+};
 
 } // namespace Gtl
 } // namespace Metagame
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.cpp b/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.cpp
index 2813152c104..129a10e35f6 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.cpp
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.cpp
@@ -45,9 +45,6 @@ END_MESSAGE_MAP()
 
 CGtlDoc::CGtlDoc() {
 	TRACECONSTRUCTOR(CGtlDoc) ;
-
-	// clear all data
-	memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
 }
 
 CGtlDoc::~CGtlDoc() {
@@ -80,7 +77,10 @@ void CGtlDoc::DeleteContents() {
 		delete m_xpGtlData ;
 
 	// clear all data
-	memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
+	m_xpGtlData = nullptr;
+	m_xpcLastFocusView = nullptr;
+	m_xpcLastMouseView = nullptr;
+	m_xpGtlFrame = nullptr;
 }
 
 //* CGtlDoc::InitDocument -- initialize document to specified file
@@ -89,9 +89,13 @@ void CGtlDoc::InitDocument(const char *xpszPathName)
 // returns: void
 {
 	CGtlApp * xpGtlApp = (CGtlApp *)AfxGetApp() ; // get application
-	memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
 
-//  dbgtrc = true ;
+	// clear all data
+	m_xpGtlData = nullptr;
+	m_xpcLastFocusView = nullptr;
+	m_xpcLastMouseView = nullptr;
+	m_xpGtlFrame = nullptr;
+
 	m_xpGtlData = new CGtlData ;
 	m_xpGtlData->m_xpcGtlDoc = this ;
 	m_xpGtlData->m_bShowNodes = xpGtlApp->m_bShowNodes ;
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.h b/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.h
index e9cae873b06..af705df0298 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.h
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtldoc.h
@@ -36,17 +36,11 @@ protected: // create from serialization only
 
 // Attributes
 public:
-	char m_cStartData ;
-	class CGtlData *m_xpGtlData ;   // data pointer
-	class CGtlView *m_xpcLastFocusView ;    // last view with focus
-	class CGtlView *m_xpcLastMouseView ;    // last view touched by mouse
-
-	class CGtlFrame *m_xpGtlFrame ;     // ptr to frame window
-	char m_cEndData ;
-
-
-// Operations
+	class CGtlData *m_xpGtlData = nullptr;			// data pointer
+	class CGtlView *m_xpcLastFocusView = nullptr;	// last view with focus
+	class CGtlView *m_xpcLastMouseView = nullptr;	// last view touched by mouse
 
+	class CGtlFrame *m_xpGtlFrame = nullptr;		// ptr to frame window
 
 // Implementation
 public:
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtlview.cpp b/engines/bagel/hodjnpodj/metagame/gtl/gtlview.cpp
index 20a9d8a631e..b4411f49c29 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtlview.cpp
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtlview.cpp
@@ -70,7 +70,6 @@ END_MESSAGE_MAP()
 
 CGtlView::CGtlView() {
 	TRACECONSTRUCTOR(CGtlView) ;
-	memset(&m_cStartData, 0, &m_cEndData - &m_cStartData) ;
 
 	if (GetDocument())
 		GetDocument()->FixChecks() ;
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtlview.h b/engines/bagel/hodjnpodj/metagame/gtl/gtlview.h
index 4b9111c9e92..439329961c8 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtlview.h
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtlview.h
@@ -51,13 +51,11 @@ protected: // create from serialization only
 	DECLARE_DYNCREATE(CGtlView)
 
 public:
-	CBsuSet m_cViewBsuSet ; // boffo scroll bar set for windows
+	CBsuSet m_cViewBsuSet;					// boffo scroll bar set for windows
 
-	char m_cStartData ;
-	CPoint m_cCurrentPosition ; // current mouse position
-	bool m_bBsuInit ;
-	class CGtlFrame *m_xpFrame ;    // pointer to frame window
-	char m_cEndData ;
+	CPoint m_cCurrentPosition;				// current mouse position
+	bool m_bBsuInit = false;
+	class CGtlFrame *m_xpFrame = nullptr;	// pointer to frame window
 
 	class CGtlDoc *GetDocument();
 	void UpdateDialogs() ;


Commit: b63a135e798d17a8f7263c81eb07acdf87a25982
    https://github.com/scummvm/scummvm/commit/b63a135e798d17a8f7263c81eb07acdf87a25982
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-09-29T04:30:16-07:00

Commit Message:
BAGEL: Further m_cEndData conversion

Changed paths:
    engines/bagel/hodjnpodj/metagame/bgen/bgb.h
    engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
    engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
    engines/bagel/hodjnpodj/metagame/gtl/gtlui.cpp


diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bgb.h b/engines/bagel/hodjnpodj/metagame/bgen/bgb.h
index abd8e3bf59b..c046704d164 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bgb.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bgb.h
@@ -111,41 +111,48 @@ public:
 
 // CBgbObject -- bitmap object
 class CBgbObject {
-
 public:
-	char        m_cStartData;
-	char        m_szFileName[MAX_FNAME_LENGTH]; // filename of object's bitmap
-
-	int         m_iBgbType;             // BGBT_xxxx -- object type
-	CBgbObject *m_xpcNext;              // pointer to next in chain
-	CBgbObject *m_xpcPrev;              // pointer to Previous in chain
-	bool        m_bChained : 1;          // on m_xBgbChain
-	bool        m_bNoDelete : 1;         // not allocated with "new"
-	bool        m_bMasked : 1;           // mask white areas of bitmap
-	bool        m_bInit : 1;             // true if object is initialized
-	bool        m_bCleared : 1;          // false if need a ClearBackground()
-	bool        m_bVisible : 1;          // bitmap is at least visible
-	bool        m_bEdge : 1;             // bitmap is on edge of phys wnd
-	bool        m_bLoaded : 1;           // true if currently in cache
-	bool        m_bAnimated : 1;         // true if this sprite is animated
-	bool        m_bSpecial : 1;          // true if Special Animation
-	bool        m_bLocked : 1;           // true if object is locked in cache
+	char        m_szFileName[MAX_FNAME_LENGTH] = {}; // filename of object's bitmap
+
+	int         m_iBgbType = 0;			// BGBT_xxxx -- object type
+	CBgbObject *m_xpcNext = nullptr;	// pointer to next in chain
+	CBgbObject *m_xpcPrev = nullptr;	// pointer to Previous in chain
+	bool        m_bChained : 1;			// on m_xBgbChain
+	bool        m_bNoDelete : 1;		// not allocated with "new"
+	bool        m_bMasked : 1;			// mask white areas of bitmap
+	bool        m_bInit : 1;			// true if object is initialized
+	bool        m_bCleared : 1;			// false if need a ClearBackground()
+	bool        m_bVisible : 1;			// bitmap is at least visible
+	bool        m_bEdge : 1;			// bitmap is on edge of phys wnd
+	bool        m_bLoaded : 1;			// true if currently in cache
+	bool        m_bAnimated : 1;		// true if this sprite is animated
+	bool        m_bSpecial : 1;			// true if Special Animation
+	bool        m_bLocked : 1;			// true if object is locked in cache
 	// (i.e. Cannot be released)
 
-	int         m_nCels;                // number of cels in this cel strip
-	int         m_nZOrder;              // Sprite Z-Order
-	unsigned int        m_nFreq;                // How often Animation should start
-	unsigned int        m_nRepeat;              // Number of Paint cycles to perform
-	unsigned int        m_nFreqCount;
+	int         m_nCels = 0;			// number of cels in this cel strip
+	int         m_nZOrder = 0;			// Sprite Z-Order
+	unsigned int        m_nFreq = 0;	// How often Animation should start
+	unsigned int        m_nRepeat = 0;	// Number of Paint cycles to perform
+	unsigned int        m_nFreqCount = 0;
 	CRPoint     m_crPosition;           // relocatable position to paint bitmap
 	CSize       m_cSize;                // size of bitmap
-	CObject *m_pObject;              // can be CSprite or CBitmap...
-	unsigned long       m_lAge;                 // age of this object
-	char        m_cEndData;
+	CObject *m_pObject = nullptr;		// can be CSprite or CBitmap...
+	unsigned long       m_lAge = 0;		// age of this object
 
 public:
 	CBgbObject() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
+		m_bChained = false;
+		m_bNoDelete = false;
+		m_bMasked = false;
+		m_bInit = false;
+		m_bCleared = false;
+		m_bVisible = false;
+		m_bEdge = false;
+		m_bLoaded = false;
+		m_bAnimated = false;
+		m_bSpecial = false;
+		m_bLocked = false;
 	}
 
 	CRRect GetRect() {
diff --git a/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h b/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
index a097fc138fc..37e525d4743 100644
--- a/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
+++ b/engines/bagel/hodjnpodj/metagame/bgen/bsutl.h
@@ -156,13 +156,10 @@ private:
 // CBsuInfo -- information returned by GetInfo
 class CBsuInfo {
 public:
-	char m_cStartData;
 	CSize m_cWndSize, m_cTotalSize;
 	CSize m_cDevWndSize, cDevTotalSize;
 	CRect m_cScrollRangeRect;
 	CPoint m_cScrollPosition;
-
-	char m_cEndData;
 };
 
 // CRPoint -- relocatable point
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h b/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
index e3c324e83bc..e665b4c233d 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtldat.h
@@ -277,163 +277,153 @@ class CXodj {
 
 public:
 
-	char m_cStartData ;
-	CXodj *m_xpXodjNext ;       // next in chain
-	char m_szName[MAX_LABEL_LENGTH] ;   // name of character
-	bool m_bHodj ;              // char is Hodj (not Podj)
-	int m_iFurlongs ;           // number of furlongs available
-	int m_iCharNode ;           // node where character is positioned
+	CXodj *m_xpXodjNext = nullptr;       // next in chain
+	char m_szName[MAX_LABEL_LENGTH] = {};   // name of character
+	bool m_bHodj = false;              // char is Hodj (not Podj)
+	int m_iFurlongs = 0;           // number of furlongs available
+	int m_iCharNode = 0;           // node where character is positioned
 
-	int m_nTurns;               // number of turns remaining (not furlongs)
+	int m_nTurns = 0;               // number of turns remaining (not furlongs)
 
-	bool m_bComputer ;          // played by computer
-	CMap FAR *m_lpMap ;         // bitmap object
-	CBgbObject FAR *m_lpcCharSprite ;   // character sprite bgb object
-	CBgbObject FAR *m_lpcIcon ;         // icon for character
+	bool m_bComputer = false;          // played by computer
+	CMap FAR *m_lpMap = nullptr;         // bitmap object
+	CBgbObject FAR *m_lpcCharSprite = nullptr;   // character sprite bgb object
+	CBgbObject FAR *m_lpcIcon = nullptr;         // icon for character
 
-	CSound *m_pThemeSound;              // this character's MIDI theme song info
-	const char *m_pszThemeFile;
-	unsigned int    m_nThemeStart;
-	unsigned int    m_nThemeEnd;
+	CSound *m_pThemeSound = nullptr;              // this character's MIDI theme song info
+	const char *m_pszThemeFile = nullptr;
+	unsigned int    m_nThemeStart = 0;
+	unsigned int    m_nThemeEnd = 0;
 
-	const char *m_pszStarsFile;             // cel strip for stars animation
+	const char *m_pszStarsFile = nullptr;             // cel strip for stars animation
 
 	// fields for computing computer play (also used for human player
 	// for debugging or giving hints)
-	class CStrategyInfo *m_xpStrategyInfo ;  // strategy information
+	class CStrategyInfo *m_xpStrategyInfo = nullptr;  // strategy information
 
 	// list of clue numbers for clues given by winning mini-game
-	int m_iWinInfoWon ;     // how many clues I've received
-	int m_iWinInfoNeed ;    // total number of clues I need
-	int m_iWinInfoTable[MAX_GAME_TABLE] ;
+	int m_iWinInfoWon = 0;     // how many clues I've received
+	int m_iWinInfoNeed = 0;    // total number of clues I need
+	int m_iWinInfoTable[MAX_GAME_TABLE] = {};
 
 	// list of clue numbers for clues given by farmer, etc.
-	int m_iSecondaryInfoWon ;   // how many clues I've received
-	int m_iSecondaryInfoNeed ;  // total number of clues I need
-	int m_iSecondaryInfoTable[MAX_GAME_TABLE] ;
+	int m_iSecondaryInfoWon = 0;   // how many clues I've received
+	int m_iSecondaryInfoNeed = 0;  // total number of clues I need
+	int m_iSecondaryInfoTable[MAX_GAME_TABLE] = {};
 
 	// list of objects required to get Mish/Mosh
-	int m_iRequiredObjectsCount ;   // total number of objects I need
-	int m_iRequiredObjectsTable[MAX_GAME_TABLE] ; // objects I need
-	int m_iRequiredMoney ;      // money needed for Mish/Mosh
+	int m_iRequiredObjectsCount = {};   // total number of objects I need
+	int m_iRequiredObjectsTable[MAX_GAME_TABLE] = {}; // objects I need
+	int m_iRequiredMoney = 0;      // money needed for Mish/Mosh
 
 	// list of secondary information location we still have to visit
-	int m_iSecondaryLoc[MAX_GAME_TABLE] ;
+	int m_iSecondaryLoc[MAX_GAME_TABLE] = {};
 
-	int m_iGameHistory[20] ;    // last 20 mini-games played
-	int m_iTargetLocation ;     // target location for computer play
-	bool m_bGatherInformation ; // if false, data from last
+	int m_iGameHistory[20] = {};    // last 20 mini-games played
+	int m_iTargetLocation = 0;     // target location for computer play
+	bool m_bGatherInformation = false; // if false, data from last
 	// GatherInformation is still valid
 
-	CInventory *m_pInventory ;   // items in personal inventory
-	CInventory *m_pGenStore ;    // items in general store
-	CInventory *m_pBlackMarket ;    // items in pawn shop
-	CInventory *m_pTradingPost ;    // items in pawn shop
+	CInventory *m_pInventory = nullptr;   // items in personal inventory
+	CInventory *m_pGenStore = nullptr;    // items in general store
+	CInventory *m_pBlackMarket = nullptr;    // items in pawn shop
+	CInventory *m_pTradingPost = nullptr;    // items in pawn shop
 
-	char m_cEndData ;
-
-	CXodj() {
-		memset(&m_cStartData, 0, &m_cEndData - &m_cStartData);
-	}
 	~CXodj();
 };
 
 // CGtlData -- data class for graphics utility
 class CGtlData {
 public:
-	class CGtlDoc *m_xpcGtlDoc; // document pointer
+	class CGtlDoc *m_xpcGtlDoc = nullptr; // document pointer
 
 private:
-	CGenUtil m_cGenUtil ;       // general utility object
-	CBgbMgr m_cBgbMgr ;         // Boffo Game Object manager
-	CBbtMgr m_cBbtMgr ;         // Boffo Games button manager
-	CBbutton m_cMiniButton ;    // minimap button
-	CBbutton m_cInvButton ;     // inventory button
-	CBbutton m_cScrollButton ;  // scroll button
-
-	CMap FAR *m_lpMaps /* [MAX_BITMAPS] */ ;  // bitmap array
-	CNode FAR *m_lpNodes /* [MAX_NODES] */ ;      // node array
-
-	char m_cStartData ;
-	bool m_bGtlDll ;            // equals GTLDLL define
-	char m_szBmpDirectory[MAX_FILENAME_LENGTH] ; // bitmap file director
-	char m_szGtlFile[MAX_FILENAME_LENGTH] ; // gtl file name
-	char m_szListFile[MAX_FILENAME_LENGTH] ; // List file name
+	CGenUtil m_cGenUtil;       // general utility object
+	CBgbMgr m_cBgbMgr;         // Boffo Game Object manager
+	CBbtMgr m_cBbtMgr;         // Boffo Games button manager
+	CBbutton m_cMiniButton;    // minimap button
+	CBbutton m_cInvButton;     // inventory button
+	CBbutton m_cScrollButton;  // scroll button
+
+	CMap FAR *m_lpMaps = nullptr;  // bitmap array
+	CNode FAR *m_lpNodes = nullptr;      // node array
+
+	bool m_bGtlDll = false;            // equals GTLDLL define
+	char m_szBmpDirectory[MAX_FILENAME_LENGTH] = {}; // bitmap file director
+	char m_szGtlFile[MAX_FILENAME_LENGTH] = {}; // gtl file name
+	char m_szListFile[MAX_FILENAME_LENGTH] = {}; // List file name
 	Common::SeekableReadStream *m_xpGtlFile = nullptr;         // ptr to file structure for .GTL file
 	Common::WriteStream *m_xpListFile = nullptr;        // ptr to file structure for .LST file
-	bool m_bListing ;           // listing file flag
-	int m_iIndent ;             // current indent (decompile only)
-	int m_iLineNumber ;         // line number in input file
-	int m_iMaps, m_iNodes ;     // # of bitmaps, nodes
-	bool m_bEof ;               // end of file on input (or END stmt)
-	CNode FAR *m_lpLastNode ;   // pointer to last node
-	int m_iNumGenLabels ;               // number of generated lables
-	CLexElement *m_xpLexLabel ;         // current label lexeme
-	CLexElement m_cLexElts[MAX_LEXELTS] ;       // lexical element blocks
-	char m_szStringList[MAX_STRINGLIST] ;     // compiler input string
-	bool m_bSelectedLink ;      // flag: a link is selected
-	int m_iSelLinkPt1, m_iSelLinkPt2 ;  // indexes of selected link pts
+	bool m_bListing = false;           // listing file flag
+	int m_iIndent = 0;             // current indent (decompile only)
+	int m_iLineNumber = 0;         // line number in input file
+	int m_iMaps = 0, m_iNodes = 0;     // # of bitmaps, nodes
+	bool m_bEof = false;               // end of file on input (or END stmt)
+	CNode FAR *m_lpLastNode = nullptr;   // pointer to last node
+	int m_iNumGenLabels = 0;               // number of generated lables
+	CLexElement *m_xpLexLabel = nullptr;         // current label lexeme
+	CLexElement m_cLexElts[MAX_LEXELTS] = {};       // lexical element blocks
+	char m_szStringList[MAX_STRINGLIST] = {};     // compiler input string
+	bool m_bSelectedLink = false;      // flag: a link is selected
+	int m_iSelLinkPt1 = 0, m_iSelLinkPt2 = 0;  // indexes of selected link pts
 	uint32 m_stAcceptClickActive = 0;       // prevent recursion
 	uint32 m_stLDownTime = 0;       // time of left button down
-	CNode FAR *m_lpFoundNode ;  // node clicked on
-	CNode FAR *m_lpLastSelectedNode ;   // selected on click down
+	CNode FAR *m_lpFoundNode = nullptr;  // node clicked on
+	CNode FAR *m_lpLastSelectedNode = nullptr;   // selected on click down
 
-	bool m_bJustPlayedMiniGame; // true for Mini-Games in ProcessGameResult
+	bool m_bJustPlayedMiniGame = false;	// true for Mini-Games in ProcessGameResult
 
 	// fields for Draw routine
 public:
-	bool m_bInhibitDraw ;       // inhibit any actual drawing
-	bool m_bDrawing ;           // in Draw routine (prevent recursion)
-	CGtlView *m_xpGtlView ;     // current view
-	bool m_bPaint ;             // WM_PAINT flag
-	bool m_bRelocatable ;       // device context is currently
+	bool m_bInhibitDraw = false;		// inhibit any actual drawing
+	bool m_bDrawing = false;			// in Draw routine (prevent recursion)
+	CGtlView *m_xpGtlView = nullptr;	// current view
+	bool m_bPaint = false;				// WM_PAINT flag
+	bool m_bRelocatable = false;		// device context is currently
 	// relocatable
-	CRect *m_xpClipRect ;       // relocatable clipping rectangle
-	CRect *m_xpDevClipRect ;    // device (non-relocatable)
+	CRect *m_xpClipRect = nullptr;		// relocatable clipping rectangle
+	CRect *m_xpDevClipRect = nullptr;	// device (non-relocatable)
 	// clipping rectangle
-	CMap FAR *m_lpFurlongMaps[25] ;  // 0-24 furlong bitmaps
+	CMap FAR *m_lpFurlongMaps[25] = {};	// 0-24 furlong bitmaps
 
 // ---
 public:
-	int m_iSizeX, m_iSizeY ;    // size of entire client area
+	int m_iSizeX = 0, m_iSizeY = 0;		// size of entire client area
 	// (entire bitmap)
-	int m_iMargin ;             // size of top margin of view window
-	bool m_bChangeSize ;        // size of window changed (because
+	int m_iMargin = 0;					// size of top margin of view window
+	bool m_bChangeSize = false;			// size of window changed (because
 	// gtl modified the bitmap template)
-	int m_iViewSizeX, m_iViewSizeY ;    // size of view
+	int m_iViewSizeX = 0, m_iViewSizeY = 0;	// size of view
 
-	bool m_bPaintBackground ;   // paint background
-	bool m_bShowNodes ;         // show nodes and links
-	bool m_bShowSensitivity ;           // show node sensitivities
-	bool m_bStartMetaGame ;     // start in meta game mode
-	bool _metaGame = false;		// meta game mode
-	bool m_bInitMetaGame ;      // init sprites at beginning of metagame
+	bool m_bPaintBackground = false;	// paint background
+	bool m_bShowNodes = false;			// show nodes and links
+	bool m_bShowSensitivity = false;	// show node sensitivities
+	bool m_bStartMetaGame = false;		// start in meta game mode
+	bool _metaGame = false;				// meta game mode
+	bool m_bInitMetaGame = false;		// init sprites at beginning of metagame
 
-	CXodj *m_xpXodjChain ;      // chain of characters
-	CXodj *m_xpCurXodj ;        // character currently on the move
-	bool m_bSamePlace ;         // both characters are in same place
-	bool m_bGameOver ;          // game is over
-
-	CBitmap  *m_pOffScreenBmp;
-	CPalette *m_pPalOld;
-	HBITMAP   m_hOldBitmap;
+	CXodj *m_xpXodjChain = nullptr;		// chain of characters
+	CXodj *m_xpCurXodj = nullptr;		// character currently on the move
+	bool m_bSamePlace = false;			// both characters are in same place
+	bool m_bGameOver = false;			// game is over
 
-	int m_iMishMoshLoc ;        // MG_LOC_xxxx -- Mish/Mosh location
+	CBitmap  *m_pOffScreenBmp = nullptr;
+	CPalette *m_pPalOld = nullptr;
+	HBITMAP   m_hOldBitmap = nullptr;
 
-	COLORREF m_cNodePenColor, m_cNodeBrushColor, m_cLinkPenColor ;
-	COLORREF m_cNodeSensitivityColor ;
-	COLORREF m_cNodePassThruColor, m_cNodeHeavyColor ;
-	COLORREF m_cSelNodePenColor, m_cSelNodeBrushColor ;
-	COLORREF m_cSelLinkPenColor ;
-	COLORREF m_cBackColor ;
+	int m_iMishMoshLoc = 0;				// MG_LOC_xxxx -- Mish/Mosh location
 
-	char m_cEndData ;
+	COLORREF m_cNodePenColor = 0, m_cNodeBrushColor = 0, m_cLinkPenColor = 0;
+	COLORREF m_cNodeSensitivityColor = 0;
+	COLORREF m_cNodePassThruColor = 0, m_cNodeHeavyColor = 0;
+	COLORREF m_cSelNodePenColor = 0, m_cSelNodeBrushColor = 0;
+	COLORREF m_cSelLinkPenColor = 0;
+	COLORREF m_cBackColor = 0;
 
 	// constructor zeroes out all fields and allocates far arrays
 public:
 	void ClearData() {
-		memset(&m_cStartData,
-		       0, &m_cEndData - &m_cStartData) ;
+		*this = CGtlData();
 	}
 
 	// gtldcp.cpp -- decompiler for meta game
diff --git a/engines/bagel/hodjnpodj/metagame/gtl/gtlui.cpp b/engines/bagel/hodjnpodj/metagame/gtl/gtlui.cpp
index d632977ea45..385c7cf618e 100644
--- a/engines/bagel/hodjnpodj/metagame/gtl/gtlui.cpp
+++ b/engines/bagel/hodjnpodj/metagame/gtl/gtlui.cpp
@@ -64,7 +64,7 @@ CGtlData::CGtlData() {
 	JXENTER(CGtlData::CGtlData) ;
 
 	TRACECONSTRUCTOR(CGtlData) ;
-	ClearData() ;
+
 	m_cBbtMgr.m_lpBgbMgr = &m_cBgbMgr ;
 	m_cMiniButton.m_iBbtId = BUTTON_MINIMAP ;
 	m_cInvButton.m_iBbtId = BUTTON_INVENTORY ;




More information about the Scummvm-git-logs mailing list