Match little fuzzy balls by sliding them across the screen. If you tap on them for a little bit with the mouse, they would sneeze if small or burp if big. Shaking them around rapidly would make them dizzy.
Uncompiled Source Code#
Like many Mac distributions of games from PopCap, this one left over a few source code files in the sounds directory. The date of the said source files is November 28, 2007.
buyhandler.h:
#pragma once
#include "stdafx.h"
#include "object.h"
#include "gadget.h"
#include "button.h"
#include "Hyperlink.h"
#include "Editbox.h"
#include "Oscillator.h"
namespace ECommerce
{
class Purchaser;
class BuyHandler_Timebox;
class BuyHandler_RegisterDialog;
class BuyHandler_CountdownBox;
class BuyHandler_ExpireBox;
class BuyHandler :
public Object
{
public:
BuyHandler(void);
virtual ~BuyHandler(void);
void Cleanup();
bool IsRegistered();
inline bool IsPurchased() {return IsRegistered();}
inline bool IsExpired() {if (IsRegistered()) return false;return GetTimeRemaining()<=0;}
int GetTimeRemaining();
String GetTimeRemainingString();
void Load();
void Save();
bool mFirstUpdate;
virtual void Update();
//
// User interface, to help out with making it all work.
//
void UseESellerate();
void StartFreePlayClock();
void StopFreePlayClock();
void ShowTimebox(float theYPos);
void ShowRegisterbox();
void ShowCountdownbox();
void CloseRegisterbox();
void ShowExpirebox();
inline void SetCountdownBoxPosition(Point thePos) {mCountdownBoxPos=thePos;}
public:
int mFreePlayTimer;
int mSaveCounter;
bool mTimerStarted;
bool mIsPurchased;
bool mReopenTimeBox;
float mTimeBoxPos;
float mTimeBoxFade;
bool mCanShowCountdownbox;
BuyHandler_Timebox *mTimeBox;
BuyHandler_RegisterDialog *mRegisterBox;
BuyHandler_CountdownBox *mCountdownBox;
BuyHandler_ExpireBox *mExpireBox;
Point mCountdownBoxPos;
Purchaser *mPurchaser;
};
class BuyHandler_Timebox : public Gadget
{
public:
BuyHandler_Timebox();
virtual ~BuyHandler_Timebox(void);
virtual void Initialize();
virtual void Update();
virtual void Draw();
virtual void Notify(void *theData);
public:
TextureSplatter mSplat;
Sprite mBackground[2];
Font mFont;
Button mBuyButton;
};
class BuyHandler_RegisterDialog : public Gadget
{
public:
BuyHandler_RegisterDialog();
virtual ~BuyHandler_RegisterDialog();
virtual void Initialize();
virtual void Update();
virtual void Draw();
virtual void Notify(void *theData);
TextureSplatter mSplat;
Sprite mBackground;
Font mFont;
Hyperlink mLink;
EditBox mNameBox;
EditBox mSerialBox;
SpriteStrip mUnlock;
SpriteStrip mCancel;
Button mUnlockButton;
Button mCancelButton;
};
class BuyHandler_MessageBox : public Gadget
{
public:
BuyHandler_MessageBox(String theCaption, String theText);
virtual ~BuyHandler_MessageBox();
virtual void Draw();
virtual void Go();
virtual void Notify(void *theData);
public:
TextureSplatter mSplat;
Sprite mBackground;
SpriteStrip mOkay;
Font mFont;
String mCaption;
String mText;
Button mOkayButton;
};
class BuyHandler_CountdownBox : public Gadget
{
public:
BuyHandler_CountdownBox(Point thePos);
virtual ~BuyHandler_CountdownBox();
virtual void Update();
virtual void Draw();
public:
TextureSplatter mSplat;
Sprite mBackground;
Font mFont;
Oscillator mBlink;
};
class BuyHandler_ExpireBox : public Gadget
{
public:
BuyHandler_ExpireBox();
virtual ~BuyHandler_ExpireBox();
virtual void Draw();
virtual void Go();
virtual void Update();
virtual void Notify(void *theData);
public:
TextureSplatter mSplat;
Sprite mBackground;
Tile mExpired;
SpriteStrip mBuyNowButton;
SpriteStrip mExitButton;
Font mFont;
Button mBuyNow;
Button mExit;
String mCaption;
float mFade;
BuyHandler_RegisterDialog *mRegisterBox;
};
}
extern ECommerce::BuyHandler gBuy;
CursorHandler.h
#include "stdafx.h"
#pragma once
namespace Sys
{
class CursorManager
{
//
// CursorManager is a lot simpler on Mac-- it doesn't run in another thread. It just draws
// at the end of the render loop.
//
public:
CursorManager(void);
virtual ~CursorManager(void);
void Initialize();
void Draw();
void Load(String theFilename);
public:
SpriteStrip mCursor;
//
// The current cursor in use (this gets set by App)
//
int mCurrentCursor;
};
}
OSX_Utils.h
/*
* OSX_Utils.h
* Chuzzle
*
* Created by John Raptis on 10/10/07.
* Copyright 2007 __MyCompanyName__. All rights reserved.
*
*/
void OSX_SetCursor(int theCursor);
void OSX_HideCursor();
void OSX_ShowCursor();
void OSX_GetMousePosition(int *theX, int *theY);
bool OSX_IsRightButtonDown();
//
// These functions help us know if a user switch has
// happened!
//
void OSX_SwitchEventsRegister();
bool OSX_ShouldResetVideo();
void OSX_SetShouldResetVideo(bool theState);
The only file with a different header.
Debugging Functions#
*** BEGIN RAPTISOFT SESSION ***
*** END RAPTISOFT SESSION ***
In the Japanese or older releases of the game there's a file called DEBUG.TXT that contains Raptisoft sessions likely used for debugging.
Development Strings#
SWAPS: %d
FPS: %s
Update: %d%%
Cheats Enabled
%s %s
RaptisoftAppWindow
MAINICON
EXTENDED_INFO
DDRAW
OS
RESOLUTION
%d x %d : %d
SAFEMODE
FULLSCREEN
false
RUNTIME
%.2d:%.2d:%.2d
VERSION
PRODUCT
%s_PLAYS
MillionDollars
%s\raptinfo.dat
PlaysRemaining
Raptisoft\%s
*** BEGIN RAPTISOFT SESSION ***
PNF
Raptisoft Utility
*** END RAPTISOFT SESSION ***
http://www.popcap.com/win32updatecheck2.php?prod=%s&ver=%s
Audio::MusicVolume
Audio::SoundVolume
HWTEST::FailReason
HWTEST::CardGUID
HWTEST::HWTesterVersion
SetRenderState(D3DRENDERSTATE_AMBIENTMATERIALSOURCE)
SetRenderState(D3DRENDERSTATE_DIFFUSEMATERIALSOURCE)
SetRenderState(D3DRENDERSTATE_COLORVERTEX
SetRenderState(D3DRENDERSTATE_DESTBLEND
SetRenderState(D3DRENDERSTATE_SRCBLEND)
SetRenderState(D3DRENDERSTATE_CLIPPING)
SetRenderState(D3DRENDERSTATE_SHADEMODE)
SetRenderState(D3DRENDERSTATE_DITHERENABLE)
SetTextureStageState(D3DDTSS_MINFILTER)
SetTextureStageState(D3DDTSS_MAGFILTER)
VertexBuffer->Unlock
VertexBuffer->Lock
CreateVertexBuffer
CreateSurface(TextureSurface)
DCreateDevice(IID_IDirect3DHALDevice)
CreateSurface(Primary)
SetCooperativeLevel
QueryInterface(IID_IDirect3D7)
GetAvailableVidMem returned %s
Errors#
Music Initialization Error: %s
Couldn't initialize 3D support.
Some other mystery problem!
BASS_Init has not been successfully called.
There is insufficent memory.
The file could not be opened.
The file's format is not recognised/supported.
Jukebox Load Error
Song file missing or corrupt from jukebox: %s
Music Interface Error
The BASS music interface could not initialize because:
[%s]
Music will not play during the game.
The device has no 3D support.
The device number specified is invalid.
BASS has already been initialized.
There is no available device driver... the device may already be in use.
The specified format is not supported by the device.
Could not create software render surface: %s
32-Bit (ARGB) texture format not supported
Large textures not supported
24-bit rendering not supported
Low video memory
Not enought video memory
"%s" is an unsupported card
File Names and Paths#
c:\GameSrc\cpp\Raptisoft\Chuzzle\Release\Chuzzle.pdb
cached\cacheinfo.cfg
HardwareTestResults\InitialPrimarySurface.bmp
HardwareTestResults\InitialTextureSurface.bmp
App.cpp
Audio.cpp
CursorManager.cpp
DEBUG.TXT
Font.cpp
Music.cpp
ProfileManager.cpp
Registry.cpp
ObjectManager.cpp
Debugging Material#
|
|
This needs some investigation. |
Swaps Display#
A simple display is present in the executable. Setting the byte at the memory offset to 1 will show it.
Version |
Offset |
|---|---|
1.0.10 (PopCap.com, Final) |
00470D82 |
Edit Mode#
Possibly a UI for editing a mindbender is present in the executable. Setting the byte at the memory offset to 1 will show it.
Version |
Offset |
|---|---|
1.0.10 (PopCap.com, Final) |
00436F37 |
Crash Debugger#
If the game crashes, a message will appear to alert the player of what happened. It will tell the player to send an error report to Raptisoft, which includes:
- The exact path to the game's executable, where the crash occurred in the first place.
- Where the game crashed
- The name of the game
- The version of the game
- The duration of the game's session
- Whether the game was in full screen or not
- Whether the game was in safe mode or not
- The resolution the game was playing at
- The operating system the player is using
- The version of DirectDraw the player is using
|
The Chuzzle series | |
|---|---|
|
Windows, Mac OS X |
|
|
Popcap Loader |
|