diff options
| author | Max Horn | 2002-12-27 01:50:46 +0000 | 
|---|---|---|
| committer | Max Horn | 2002-12-27 01:50:46 +0000 | 
| commit | cfa87ea12dda71d837bc420be6b03140f1fa64d3 (patch) | |
| tree | ded9d345498ba06ab2244a5e77b8880f95dedde0 /backends | |
| parent | 0e51efcc4c7a46aedfc439d9721fbad1fe093123 (diff) | |
| download | scummvm-rg350-cfa87ea12dda71d837bc420be6b03140f1fa64d3.tar.gz scummvm-rg350-cfa87ea12dda71d837bc420be6b03140f1fa64d3.tar.bz2 scummvm-rg350-cfa87ea12dda71d837bc420be6b03140f1fa64d3.zip | |
removing not working, obsolete mac port
svn-id: r6189
Diffstat (limited to 'backends')
| -rw-r--r-- | backends/mac/Carbon.r | 111 | ||||
| -rw-r--r-- | backends/mac/CarbonPort-ReadMe.txt | 34 | ||||
| -rw-r--r-- | backends/mac/mac.cpp | 1796 | ||||
| -rw-r--r-- | backends/mac/macos.h | 24 | ||||
| -rw-r--r-- | backends/mac/scummvm.icns | bin | 38332 -> 0 bytes | |||
| -rw-r--r-- | backends/mac/scummvm.mcp | bin | 158716 -> 0 bytes | 
6 files changed, 0 insertions, 1965 deletions
| diff --git a/backends/mac/Carbon.r b/backends/mac/Carbon.r deleted file mode 100644 index a296c97b26..0000000000 --- a/backends/mac/Carbon.r +++ /dev/null @@ -1,111 +0,0 @@ -/* - *  Permit this Carbon application to launch on OS X - * - *  © 1997-2000 Metrowerks Corp. - * - *  Questions and comments to: - *       <mailto:support@metrowerks.com> - *       <http://www.metrowerks.com/> - */ -  -#include "MacTypes.r" -#include "Dialogs.r" -#include "Balloons.r" -#include "Menus.r" -#include "Finder.r" -#include "Quickdraw.r" -#include "Icons.r" -#include "Processes.r" -#include "Controls.r" - -/*----------------------------carb ¥ Carbon on OS X launch information --------------------------*/ -type 'carb' { -}; - - -resource 'carb'(0) { -}; - -resource 'ALRT' (129) { -	{55, 39, 153, 407}, -	128, -	{	/* array: 4 elements */ -		/* [1] */ -		OK, visible, sound1, -		/* [2] */ -		OK, visible, sound1, -		/* [3] */ -		OK, visible, sound1, -		/* [4] */ -		OK, visible, sound1 -	}, -	alertPositionParentWindowScreen -}; - -resource 'DITL'(128) { -	{ -		{8, 74, 61, 356}, -		StaticText { -			disabled, -			"^0" -		}, -		 -		{70, 299, 90, 357}, -		Button { -			enabled, -			"OK" -		} -	} -}; - -resource 'MENU'(999) { -	999, 63, allEnabled, enabled, "Please Select a GameÉ", -	{ -		"Maniac Mansion (C64)", noIcon, noKey, noMark, plain, -		"Zak McKracken and the Alien Mindbenders (C64)", noIcon, noKey, noMark, plain, -		"Maniac Mansion", noIcon, noKey, noMark, plain, -		"Zak McKracken and the Alien Mindbenders", noIcon, noKey, noMark, plain, -		"Indiana Jones and the Last Crusade", noIcon, noKey, noMark, plain, -		"Indiana Jones and the Last Crusade (256)", noIcon, noKey, noMark, plain, -		"Zak McKracken and the Alien Mindbenders (256)", noIcon, noKey, noMark, plain, -		"Loom", noIcon, noKey, noMark, plain, -		"Monkey Island 1 (EGA)", noIcon, noKey, noMark, plain, -		"Monkey Island 1 (256 color Floppy version)", noIcon, noKey, noMark, plain, -		"Loom (256 color CD version)", noIcon, noKey, noMark, plain, -		"Monkey Island 1", noIcon, noKey, noMark, plain, -		"Monkey Island 1 (alt)", noIcon, noKey, noMark, plain, -		"Monkey Island 2: LeChuck's revenge", noIcon, noKey, noMark, plain, -		"Indiana Jones 4 and the Fate of Atlantis", noIcon, noKey, noMark, plain, -		"Indiana Jones 4 and the Fate of Atlantis (Demo)", noIcon, noKey, noMark, plain, -		"Day Of The Tentacle", noIcon, noKey, noMark, plain, -		"Day Of The Tentacle (Demo)", noIcon, noKey, noMark, plain, -		"Sam & Max", noIcon, noKey, noMark, plain, -		"Sam & Max (Demo)", noIcon, noKey, noMark, plain, -		"Full Throttle", noIcon, noKey, noMark, plain, -		"The Dig", noIcon, noKey, noMark, plain, -		"The Curse of Monkey Island", noIcon, noKey, noMark, plain, -		"-", noIcon, noKey, noMark, plain, -		"Simon the Sorcerer 1 (DOS)", noIcon, noKey, noMark, plain, -		"Simon the Sorcerer 1 (Windows)", noIcon, noKey, noMark, plain, -		"Simon the Sorcerer 2 (Windows)", noIcon, noKey, noMark, plain -	}		 -}; - -resource 'MENU'(1000) { -	1000, 63, allEnabled, enabled, apple, -	{ -		"About ScummVMÉ", noIcon, noKey, noMark, plain, -		"-", noIcon, noKey, noMark, plain -	} -}; - -resource 'MENU'(1001) { -	1001, 63, allEnabled, enabled, "File", -	{ -		"New Game", noIcon, "N", noMark, plain, -		"Open Game", noIcon, "O", noMark, plain, -		"Save Game", noIcon, "S", noMark, plain, -		"-", noIcon, noKey, noMark, plain, -		"Q", noIcon, "Q", noMark, plain -	} -};
\ No newline at end of file diff --git a/backends/mac/CarbonPort-ReadMe.txt b/backends/mac/CarbonPort-ReadMe.txt deleted file mode 100644 index 262b9a50f8..0000000000 --- a/backends/mac/CarbonPort-ReadMe.txt +++ /dev/null @@ -1,34 +0,0 @@ -README FOR THE MAC CARBON PORT - -Runs on Mac OS X 10.1 (could also run on 10.0.x, but not tested), and Mac OS 8.6 or later (with CarbonLib -installed). - -HOW TO COMPILE? -Launch the scummvm.mcp file in CodeWarrior and choose one of the Targets to compile. For just playing, -you should choose "ScummVM Final", the Debug one is just for Developing. -Binaries will come up to the Website with the release 0.2.0, which will be hopefully soon. - -NOTES: -Put the games in a folder in the same directory as ScummVM, which have the name of the Data Files, like this: - --- - ScummVM -  \- monkey2- -             \- monkey2.000 -              - monkey2.001 - - -Hope this will help you :) - -CHANGES: -- Thanks to Florent Boudet, QuickTime MIDI has been added, although it currently only works with DOTT -- Added SFX Sound Support -- Now draws the Games Cursors - -BUGS: -- On OS X it got some Problems with KeyDown-Events (seems to work now, most of the time) -- Bad behaviour of the Application towards other, will be fixed soon. -- Some minor bugs - -If you find any bugs, just make a Bug Report on our SourceForge Page. - --- Mutle
\ No newline at end of file diff --git a/backends/mac/mac.cpp b/backends/mac/mac.cpp deleted file mode 100644 index 2dc6dea1f5..0000000000 --- a/backends/mac/mac.cpp +++ /dev/null @@ -1,1796 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2001  Ludvig Strigeus - * Copyright (C) 2001/2002  Mutwin Kraus (Mac Port) and The ScummVM Project - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. - * - * $Header$ - * - */ - -#include <Carbon.h> -#include <sioux.h> - -#include "stdafx.h" -#include "scumm.h" -#include "mididrv.h" -#include "gameDetector.h" -//#include "mp3_cd.h" -#include "gui.h" -//#include "gameDetector.h" -#include "scaler.h" - -#define MAX(a,b) (((a)<(b)) ? (b) : (a)) -#define MIN(a,b) (((a)>(b)) ? (b) : (a)) - -class OSystem_MAC : public OSystem { -public: -	// Set colors of the palette -	void set_palette(const byte *colors, uint start, uint num); - -	// Set the size of the video bitmap. -	// Typically, 320x200 -	void init_size(uint w, uint h); - -	// Draw a bitmap to screen. -	// The screen will not be updated to reflect the new bitmap -	void copy_rect(const byte *buf, int pitch, int x, int y, int w, int h); - -	// Update the dirty areas of the screen -	void update_screen(); - -	// Either show or hide the mouse cursor -	bool show_mouse(bool visible); -	 -	// Set the position of the mouse cursor -	void set_mouse_pos(int x, int y); -	 -	// Set the bitmap that's used when drawing the cursor. -	void set_mouse_cursor(const byte *buf, uint w, uint h, int hotspot_x, int hotspot_y); -	 -	// Shaking is used in SCUMM. Set current shake position. -	void set_shake_pos(int shake_pos); -		 -	// Get the number of milliseconds since the program was started. -	uint32 get_msecs(); -	 -	// Delay for a specified amount of milliseconds -	void delay_msecs(uint msecs); -	 -	// Create a thread -	void *create_thread(ThreadProc *proc, void *param); -	 -	// Get the next event. -	// Returns true if an event was retrieved.	 -	bool poll_event(Event *event); -	 -	// Set function that generates samples  -	bool set_sound_proc(void *param, SoundProc *proc, byte sound); -		 -	// Poll cdrom status -	// Returns true if cd audio is playing -	bool poll_cdrom(); - -	// Play cdrom audio track -	void play_cdrom(int track, int num_loops, int start_frame, int end_frame); - -	// Stop cdrom audio track -	void stop_cdrom(); - -	// Update cdrom audio status -	void update_cdrom(); - -	// Add a new callback timer -	void set_timer(int timer, int (*callback)(int))		{ /* FIXME - TODO */ } - -	// Mutex handling -	void *create_mutex(void)			{ return NULL; /* FIXME - TODO */ } -	void lock_mutex(void *mutex)		{ /* FIXME - TODO */ } -	void unlock_mutex(void *mutex)		{ /* FIXME - TODO */ } -	void delete_mutex(void *mutex)		{ /* FIXME - TODO */ } - -	// Quit -	void quit(); - -	// Set a parameter -	uint32 property(int param, Property *value); - -	static OSystem *create(int gfx_mode, bool full_screen); -	 -	void sound_callback(SndChannel *chan, SndCommand *cmd_passed); -private: -	typedef void TwoXSaiProc(uint8 *srcPtr, uint32 srcPitch, uint8 *deltaPtr, -								uint8 *dstPtr, uint32 dstPitch, int width, int height); -	 -	GWorldPtr screenBuf; -	WindowRef wref; -	CTabHandle pal;	 -	Rect blit_rect; - -	enum { -		DF_WANT_RECT_OPTIM			= 1 << 0, -		DF_REAL_8BIT				= 1 << 1, -		DF_SEPARATE_TEMPSCREEN		= 1 << 2, -		DF_UPDATE_EXPAND_1_PIXEL	= 1 << 3 -	}; - -	int _mode; -	bool _full_screen; -	bool _mouse_visible; -	bool _mouse_drawn; -	uint32 _mode_flags; -	byte _internal_scaling; - -	bool force_full; //Force full redraw on next update_screen -	bool cksum_valid; - -	enum { -		NUM_DIRTY_RECT = 100, - -		MAX_MOUSE_W = 40, -		MAX_MOUSE_H = 40, -		MAX_SCALING = 3 -	}; -	 -	int SCREEN_WIDTH, SCREEN_HEIGHT, CKSUM_NUM; -	Rect *dirty_rect_list; -	int num_dirty_rects; -	uint32 *dirty_checksums; - -	int scaling; - -	/* CD Audio */ -	int cd_track, cd_num_loops, cd_start_frame, cd_end_frame; -	uint32 cd_end_time, cd_stop_time, cd_next_second; - -	struct MousePos { -		int16 x,y,w,h; -	}; - -	byte *_ms_buf; -	byte *_ms_backup; -	MousePos _ms_cur; -	MousePos _ms_old; -	int16 _ms_hotspot_x; -	int16 _ms_hotspot_y; -	int _current_shake_pos; - -	byte*	_gfx_buf;	/* Graphics memory */ -	int16 *_sai_buf, *_tmp_buf; -	uint _palette_changed_first, _palette_changed_last; -	 -	TwoXSaiProc *_sai_func; - -	void add_dirty_rgn_auto(const byte *buf); -	void mk_checksums(const byte *buf); - -	static void fill_sound(void *userdata, uint8 * stream, int len); -	 -	void add_dirty_rect(int x, int y, int w, int h); - -	void draw_mouse(); -	void undraw_mouse(); - -	void load_gfx_mode(); -	void unload_gfx_mode(); - -	void hotswap_gfx_mode(); - -	void get_320x200_image(byte *buf); -	 -	void init_mac_stuff(); -	void set_scaling(); -	void blit_to_screen(); -	void update_rects(); -	 -	static void autosave(Scumm * scumm); -	 -	UInt8 *buffer[2]; -	CmpSoundHeader header; -	SndChannelPtr channel; -	int size; -	SoundProc *sndProc; -	void * parameter; -}; - -KeyMap fKeyMap; - -Boolean CommandKeyDown() -{ -	GetKeys(fKeyMap);							// get info -	if (fKeyMap[1] & 0x8000) -		return true; -	else -		return false; -} - -static unsigned char *CToPascal(char *str) { -	register char *p,*q; -	register long len; - -	len = strlen(str); -	if (len > 255) len = 255; -	p = str + len; -	q = p-1; -	while (p != str)  -	 *p-- = *q--; -	*str = len; -	return((unsigned char *)str); -} - -static char *PascalToC(unsigned char *str) { -	register unsigned char *p,*q,*end; - -	end = str + *str; -	q = (p=str) + 1; - -	while (p < end)  -		*p++ = *q++; -	*p = '\0'; - -	return((char *)str); -} - -const EventTypeSpec kCmdEvents[] =  -{ -	{ kEventClassMouse, kEventMouseDown }, -	{ kEventClassMouse, kEventMouseUp }, -	{ kEventClassMouse, kEventMouseMoved }, -	{ kEventClassKeyboard, kEventRawKeyDown }, -	{ kEventClassCommand, kEventProcessCommand } -}; - -const EventTypeSpec kWindowEvents[] = -{ -	{ kEventClassWindow, kEventWindowDrawContent }, -	{ kEventClassWindow, kEventWindowHandleContentClick }, -	{ kEventClassWindow, kEventWindowClose } -}; - -pascal OSErr QuitEventHandler(const AppleEvent *theEvent, AppleEvent *theReply, SInt32 refCon) -{ -	//OSystem_MAC::quit(); -	return(noErr); -} - -enum -{ -	kNewGameCmd		= 'newG', -	kQuitCmd		= kHICommandQuit, -	kOpenGameCmd	= 'opnG', -	kSaveGameCmd	= 'savG', -	kPrefsCmd		= kHICommandPreferences, -	kAboutCmd		= 'abtG' -}; - -ControlRef radioGroupRef, musicVolumeSlider, masterVolumeSlider; -char *gameTitle; -ControlRef    popUpControlRef, checkBoxControlRef; - -OSStatus prefsEventHandler(EventHandlerCallRef eventHandlerCallRef,EventRef eventRef, -                             void *userData) -{ -  OSStatus   result = eventNotHandledErr; -  UInt32     eventClass; -  UInt32     eventKind; -  ControlRef controlRef; -  ControlID  controlID; - -  eventClass = GetEventClass(eventRef); -  eventKind  = GetEventKind(eventRef); - -  if(eventClass == kEventClassControl) -  { -    if(eventKind == kEventControlHit) -    { -      GetEventParameter(eventRef,kEventParamDirectObject,typeControlRef,NULL, -                        sizeof(ControlRef),NULL,&controlRef); - -      GetControlID(controlRef,&controlID); -      if(controlID.id == 'okay') -      { -        /*scumm->_noSubtitles = (Boolean)!GetControlValue(checkBoxControlRef); -        short scale = GetControlValue(radioGroupRef); -        if(scale != scumm->_scale) -        	wm->ChangeScaling(scale); -        short music_vol = GetControlValue(musicVolumeSlider); -        if(music_vol != sound.get_music_volume()) -        	sound.set_music_volume(music_vol); -        short master_vol = GetControlValue(masterVolumeSlider); -        if(master_vol != sound.get_master_volume()) -        	sound.set_master_volume(master_vol);*/ -        QuitAppModalLoopForWindow((WindowRef)userData); -        DisposeWindow((WindowRef)userData); -        result = noErr; -      } -    } -  } -} - -void Preferences() -{ -	WindowRef	prefsWin; -	OSStatus    osError = noErr; -	Rect        rect = { 0,0,210,300 }; -	Rect        okButtonRect; -	ControlID	controlID; -	ControlRef	controlRef; -	EventTypeSpec dialogEvents[] = { kEventClassControl, kEventControlHit }; -  	 -	osError = CreateNewWindow(kMovableModalWindowClass,kWindowStandardHandlerAttribute,&rect, &prefsWin); -	SetWTitle(prefsWin, "\pPreferences"); -	RepositionWindow(prefsWin,FrontWindow(),kWindowAlertPositionOnMainScreen); -	SetThemeWindowBackground(prefsWin,kThemeBrushDialogBackgroundActive,false); -	CreateRootControl(prefsWin,&controlRef); -	 -	SetRect(&rect, 5, 5, 150, 21); -	 -	CreateStaticTextControl(prefsWin, &rect, CFSTR("ScummVM Preferences"), NULL, &controlRef); -	AutoEmbedControl(controlRef, prefsWin); -	 -	SetRect(&okButtonRect, 225, 180, 295, 200); -	 -    CreatePushButtonControl(prefsWin,&okButtonRect,CFSTR("OK"),&controlRef); -    SetWindowDefaultButton(prefsWin,controlRef); -    controlID.id = 'okay'; -    SetControlID(controlRef,&controlID); -    AutoEmbedControl(controlRef,prefsWin); -     -    SetRect(&rect, 150, 35, 260, 51); -     -    CreateCheckBoxControl(prefsWin,&rect, CFSTR("Subtitles"), 1, true, &checkBoxControlRef); -    AutoEmbedControl(checkBoxControlRef, prefsWin); -     -    //if(scumm->_noSubtitles) -    	SetControlValue(checkBoxControlRef, false); -     -    OffsetRect(&rect, 0, 20); -     -    CreateCheckBoxControl(prefsWin,&rect, CFSTR("Fullscreen"), 0, true, &controlRef); -    AutoEmbedControl(controlRef, prefsWin); -    DeactivateControl(controlRef); -     -    Rect RadioGroupRect; -    SetRect(&RadioGroupRect, 5, 35, 120, 100); -    CreateRadioGroupControl(prefsWin, &RadioGroupRect, &radioGroupRef); -    AutoEmbedControl(radioGroupRef, prefsWin); -     -    ControlRef radioButton; -     -    Rect RadioButtonRect;	 -    SetRect(&RadioButtonRect, 5, 35, 120, 51); -    CreateRadioButtonControl(prefsWin, &RadioButtonRect, CFSTR("Scaling 1x"), 0, true, &radioButton); -    AutoEmbedControl(radioButton, prefsWin); -    	 -    OffsetRect(&RadioButtonRect, 0, 20); -    CreateRadioButtonControl(prefsWin, &RadioButtonRect, CFSTR("Scaling 2x"), 0, true, &radioButton); -    AutoEmbedControl(radioButton, prefsWin); -     -    OffsetRect(&RadioButtonRect, 0, 20); -    CreateRadioButtonControl(prefsWin, &RadioButtonRect, CFSTR("Scaling 3x"), 0, true, &radioButton); -    AutoEmbedControl(radioButton, prefsWin); -     -    //SetControlValue(radioGroupRef, scumm->_scale); -     -    SetRect(&rect, 5, 110, 175, 146); -     -    CreateSliderControl(prefsWin, &rect, 100, 1, 100, -    		kControlSliderPointsDownOrRight, 10, false, NULL, &musicVolumeSlider); -    AutoEmbedControl(musicVolumeSlider, prefsWin); -     -    OffsetRect(&rect, 0, 36); -     -    CreateSliderControl(prefsWin, &rect, 100, 1, 100, -    		kControlSliderPointsDownOrRight, 10, false, NULL, &masterVolumeSlider); -    AutoEmbedControl(masterVolumeSlider, prefsWin); -     -    OffsetRect(&rect, 180, -36); -     -    CreateStaticTextControl(prefsWin, &rect, CFSTR("Music Volume"), NULL, &controlRef); -	AutoEmbedControl(controlRef, prefsWin); -	 -	OffsetRect(&rect, 0, 36); -     -    CreateStaticTextControl(prefsWin, &rect, CFSTR("Master Volume"), NULL, &controlRef); -	AutoEmbedControl(controlRef, prefsWin); -     -    InstallWindowEventHandler(prefsWin, NewEventHandlerUPP((EventHandlerProcPtr) prefsEventHandler), -                              GetEventTypeCount(dialogEvents),dialogEvents,prefsWin,NULL); -    ShowWindow(prefsWin); -    osError = RunAppModalLoopForWindow(prefsWin); -} - -void LaunchGame(int id) -{ -	switch(id) -	{ -		case 6: -			gameTitle = "indy3"; -		break; -		 -		case 7: -			gameTitle = "zak256"; -		break; -	 -		case 8: -			gameTitle = "loom"; -		break; -		 -		case 9: -			gameTitle = "monkeyEGA"; -		break; -		 -		case 10: -			gameTitle = "monkeyVGA"; -		break; -		 -		case 11: -			gameTitle = "loomcd"; -		break; -		 -		case 12: -			gameTitle = "monkey"; -		break; -		 -		case 13: -			gameTitle = "monkey1"; -		break; -		 -		case 14: -			gameTitle = "monkey2"; -		break; -		 -		case 15: -			gameTitle = "atlantis"; -		break; -		 -		case 16: -			gameTitle = "playfate"; -		break; -		 -		case 17: -			gameTitle = "tentacle"; -		break; -		 -		case 18: -			gameTitle = "dottdemo"; -		break; -		 -		case 19: -			gameTitle = "samnmax"; -		break; -		 -		case 20: -			gameTitle = "snmdemo"; -		break; -		 -		case 21: -			gameTitle = "ft"; -		break; -		 -		case 22: -			gameTitle = "dig"; -		break; -		 -		case 25: -			gameTitle = "simon1dos"; -		break; -		 -		case 26: -			gameTitle = "simon1win"; -		break; -		 -		case 27: -			gameTitle = "simon2win"; -		break; -	} -} - -OSStatus dialogEventHandler(EventHandlerCallRef eventHandlerCallRef,EventRef eventRef, -                             void *userData) -{ -  OSStatus   result = eventNotHandledErr; -  UInt32     eventClass; -  UInt32     eventKind; -  ControlRef controlRef; -  ControlID  controlID; - -  eventClass = GetEventClass(eventRef); -  eventKind  = GetEventKind(eventRef); - -  if(eventClass == kEventClassControl) -  { -    if(eventKind == kEventControlHit) -    { - -      GetEventParameter(eventRef,kEventParamDirectObject,typeControlRef,NULL, -                        sizeof(ControlRef),NULL,&controlRef); - -      GetControlID(controlRef,&controlID); -      if(controlID.id == 'okay') -      { -        QuitAppModalLoopForWindow((WindowRef)userData); -        LaunchGame(GetControlValue(popUpControlRef)); -         -        DisposeWindow((WindowRef)userData); -        result = noErr; -      } -      else if(controlID.id == 'cncl') -      { -      	QuitAppModalLoopForWindow((WindowRef)userData); -      	DisposeWindow((WindowRef)userData); -      	ExitToShell(); -      } -    } -  } -  return result; -} - -char* SelectGame() -{ -	WindowRef 	aboutWin; -	OSStatus      osError = noErr; -	Rect          rect = { 0,0,120,350 }; -	Rect          pushButtonRect = { 75,250,96,330 }; -	Rect		popupRect = { 10, 10, 26, 330 }; -	ControlID	controlID; -	ControlRef	controlRef; -	Rect		checkboxRect = { 36, 10, 50, 80 }; -	EventTypeSpec dialogEvents[] = { kEventClassControl, kEventControlHit }; -  	 -  	InitCursor(); -  	 -  	SIOUXSettings.autocloseonquit    = true; -    SIOUXSettings.asktosaveonclose    = false; -    SIOUXSettings.showstatusline    = false; -    SIOUXSettings.fontsize            = 9; -    GetFNum("\pMonaco",&SIOUXSettings.fontid); -   	SIOUXSettings.standalone        = false; -   	SIOUXSettings.setupmenus		= false; -   	SIOUXSettings.toppixel			= 40; -   	SIOUXSettings.leftpixel			= 5; -  	 -	osError = CreateNewWindow(kMovableModalWindowClass,kWindowStandardHandlerAttribute,&rect, &aboutWin); -	SetWTitle(aboutWin, "\pPlease Select a GameÉ"); -	RepositionWindow(aboutWin,FrontWindow(),kWindowAlertPositionOnMainScreen); -	SetThemeWindowBackground(aboutWin,kThemeBrushDialogBackgroundActive,false); -	CreateRootControl(aboutWin,&controlRef); - -    CreatePushButtonControl(aboutWin,&pushButtonRect,CFSTR("OK"),&controlRef); -    SetWindowDefaultButton(aboutWin,controlRef); -    controlID.id = 'okay'; -    SetControlID(controlRef,&controlID); -    AutoEmbedControl(controlRef,aboutWin); -    -    OffsetRect(&pushButtonRect, -100, 0); -    CreatePushButtonControl(aboutWin,&pushButtonRect,CFSTR("Cancel"),&controlRef); -    SetWindowCancelButton(aboutWin,controlRef); -    controlID.id = 'cncl'; -    SetControlID(controlRef,&controlID); -    AutoEmbedControl(controlRef,aboutWin); -             -    CreatePopupButtonControl(aboutWin, &popupRect, CFSTR("Game: "), 999, false, -1, 0, NULL, &popUpControlRef); -    SetWindowDefaultButton(aboutWin,popUpControlRef); -    controlID.id = 'game'; - -    SetControlID(popUpControlRef,&controlID); -     -	AutoEmbedControl(controlRef,aboutWin); - -    InstallWindowEventHandler(aboutWin, NewEventHandlerUPP((EventHandlerProcPtr) dialogEventHandler), -                              GetEventTypeCount(dialogEvents),dialogEvents,aboutWin,NULL); -    ShowWindow(aboutWin); -    osError = RunAppModalLoopForWindow(aboutWin); -    return gameTitle; -} - -OSystem *OSystem_MAC::create(int gfx_mode, bool full_screen) { -	Rect rectWin; -	OSystem_MAC *syst = new OSystem_MAC(); -	syst->_mode = gfx_mode; -	syst->_full_screen = full_screen; - -	/* Macintosh init */ -	syst->init_mac_stuff(); -	 -	return syst; -} - -void OSystem_MAC::autosave(Scumm * scumm) -{ -	scumm->_doAutosave = true; - -	return interval; -} - -OSystem *OSystem_MAC_create(int gfx_mode, bool full_screen) { -	return OSystem_MAC::create(gfx_mode, full_screen); -} - -void OSystem_MAC::set_palette(const byte *colors, uint start, uint num) { -	const byte *b = colors; -	 -	(*pal)->ctSeed = TickCount(); -	for(int i = start; i < num; i++, b += 4) { -		(*pal)->ctTable[i].value = i; -		(*pal)->ctTable[i].rgb.red = b[0]<<8; -		(*pal)->ctTable[i].rgb.green = b[1]<<8; -		(*pal)->ctTable[i].rgb.blue = b[2]<<8; -	} -	 -	CTabChanged(pal); -	 -	if(_sai_func) -		UpdateGWorld(&screenBuf, 16, &blit_rect, NULL, NULL, 0); -	else -		UpdateGWorld(&screenBuf, 8, &blit_rect, pal, NULL, 0); -	 -	if(start < _palette_changed_first) -		_palette_changed_first = start; -	 -	if(start + num > _palette_changed_last) -		_palette_changed_last = start + num; -} - -void OSystem_MAC::load_gfx_mode() { -	force_full = true; -	scaling = 1; -	_internal_scaling = 1; -	_mode_flags = 0; -	_sai_func = NULL; -	 -	switch(_mode) { -		case GFX_2XSAI: -			_sai_func = _2xSaI; -		break; -		 -		case GFX_SUPER2XSAI: -			_sai_func = Super2xSaI; -		break; -		 -		case GFX_SUPEREAGLE: -			_sai_func = SuperEagle; -		break; -			 -		case GFX_ADVMAME2X: -			_sai_func = AdvMame2x; -		break; -		 -		case GFX_DOUBLESIZE: -			scaling = 2; -			_internal_scaling = 2; -			_mode_flags = DF_WANT_RECT_OPTIM; -		break; -	 -		case GFX_TRIPLESIZE: -			if (_full_screen) { -				warning("full screen in useless in triplesize mode, reverting to normal mode"); -				goto normal_mode; -			} -			scaling = 3; -			_internal_scaling = 3; -			_mode_flags = DF_WANT_RECT_OPTIM;		 -		break; -	 -		case GFX_NORMAL: -	normal_mode:; -			_mode_flags = DF_WANT_RECT_OPTIM;		 -		break; -	 -	} -	 -	if(_sai_func) -	{		 -		_mode_flags = DF_WANT_RECT_OPTIM | DF_SEPARATE_TEMPSCREEN | DF_UPDATE_EXPAND_1_PIXEL; - -		Init_2xSaI(565); -		_tmp_buf = (int16*)calloc((SCREEN_WIDTH+3)*(SCREEN_HEIGHT+3), sizeof(int16)); -		 -		scaling = 2; -	} -	else -	{ -		switch(scaling) { -		case 3: -			_sai_func = Normal3x; -			break; -		case 2: -			_sai_func = Normal2x; -			break; -		case 1: -			_sai_func = Normal1x; -			break; -		} - -		_mode_flags = DF_WANT_RECT_OPTIM | DF_REAL_8BIT; -	} -	 -	set_scaling(); -} - -void OSystem_MAC::unload_gfx_mode() { -	//warning("STUB: unload_gfx_mode()");		/* FIXME: Must free data here */ -	 -} - -void OSystem_MAC::init_size(uint w, uint h) { -	//if (w != SCREEN_WIDTH && h != SCREEN_HEIGHT) -	//	error("320x200 is the only game resolution supported"); -	 -	SCREEN_WIDTH = w; -	SCREEN_HEIGHT = h; -	CKSUM_NUM = (SCREEN_WIDTH * SCREEN_HEIGHT / (8*8)); -	dirty_rect_list = (Rect*)calloc(NUM_DIRTY_RECT, sizeof(Rect)); -	_ms_backup = (byte*)malloc(MAX_MOUSE_W * MAX_MOUSE_H * MAX_SCALING); -	dirty_checksums = (uint32*)calloc(CKSUM_NUM*2, sizeof(uint32)); - -	load_gfx_mode(); -} - -void OSystem_MAC::copy_rect(const byte *buf, int pitch, int x, int y, int w, int h) { -	if (pitch == SCREEN_WIDTH && x==0 && y==0 && w==SCREEN_WIDTH && h==SCREEN_HEIGHT && _mode_flags&DF_WANT_RECT_OPTIM) { -		/* Special, optimized case for full screen updates. -		 * It tries to determine what areas were actually changed, -		 * and just updates those, on the actual display. */ -		add_dirty_rgn_auto(buf); -	} else { -		/* Clip the coordinates */ -		if (x < 0) { w+=x; buf-=x; x = 0; } - -	if (y < 0) { h+=y; buf-=y*pitch; y = 0; } -		if (w >= SCREEN_WIDTH-x) { w = SCREEN_WIDTH - x; } -		if (h >= SCREEN_HEIGHT-y) { h = SCREEN_HEIGHT - y; } -			 -		if (w<=0 || h<=0) -			return; - -		cksum_valid = false; -		add_dirty_rect(x, y, w, h); -	} - -	/* FIXME: undraw mouse only if the draw rect intersects with the mouse rect */ -	if (_mouse_drawn) -		undraw_mouse(); -	 -	byte *dst = (byte*)buf + y * SCREEN_WIDTH + x; -	do { -		memcpy(dst, buf, w); -		dst += SCREEN_WIDTH; -		buf += pitch; -	} while(--h); -} - -void OSystem_MAC::move_screen(int dx, int dy) { - - -} - - -void OSystem_MAC::add_dirty_rect(int x, int y, int w, int h) { -	if (force_full) -		return; - -	if (num_dirty_rects == NUM_DIRTY_RECT) -		force_full = true; -	else { -		Rect *r = &dirty_rect_list[num_dirty_rects++]; -		 -		/* Update the dirty region by 1 pixel for graphics drivers -		 * that "smear" the screen */ -		if (_mode_flags & DF_UPDATE_EXPAND_1_PIXEL) { -			x--; -			y--; -			w+=2; -			h+=2; -		} - -		/* clip */ -		if (x<0) { w+=x; x=0; } -		if (y<0) { h+=y; y=0; } -		if (w>=SCREEN_WIDTH-x) { w=SCREEN_WIDTH-x; } -		if (h>=SCREEN_HEIGHT-y) { h=SCREEN_HEIGHT-y; } -	 -		if (_internal_scaling != 1) { -			x *= _internal_scaling; -			y *= _internal_scaling; -			w *= _internal_scaling; -			h *= _internal_scaling; -		} - -		r->left = x; -		r->top = y; -		r->right = x + w; -		r->bottom = y + h; -	} -} - -#define ROL(a,n) a = (a<<(n)) | (a>>(32-(n))) -#define DOLINE(x) a ^= ((uint32*)buf)[0+(x)*(SCREEN_WIDTH/4)]; b ^= ((uint32*)buf)[1+(x)*(SCREEN_WIDTH/4)] -void OSystem_MAC::mk_checksums(const byte *buf) { -	uint32 *sums = dirty_checksums; -	uint x,y; - -	/* the 8x8 blocks in buf are enumerated starting in the top left corner and -	 * reading each line at a time from left to right */ -	for(y=0; y!=SCREEN_HEIGHT/8; y++,buf+=SCREEN_WIDTH*(8-1)) -		for(x=0; x!=SCREEN_WIDTH/8; x++,buf+=8) { -			uint32 a = x; -			uint32 b = y; - -			DOLINE(0); ROL(a,13); ROL(b,11); -			DOLINE(2); ROL(a,13); ROL(b,11); -			DOLINE(4); ROL(a,13); ROL(b,11); -			DOLINE(6); ROL(a,13); ROL(b,11); - -			a*=0xDEADBEEF; -			b*=0xBAADF00D; - -			DOLINE(1); ROL(a,13); ROL(b,11); -			DOLINE(3); ROL(a,13); ROL(b,11); -			DOLINE(5); ROL(a,13); ROL(b,11); -			DOLINE(7); ROL(a,13); ROL(b,11); - -			/* output the checksum for this block */ -			*sums++=a+b; -		} -} -#undef DOLINE -#undef ROL - - -void OSystem_MAC::add_dirty_rgn_auto(const byte *buf) { -	assert( ((uint32)buf & 3) == 0); -	 -	/* generate a table of the checksums */ -	mk_checksums(buf); - -if (!cksum_valid) { -		force_full = true; -		cksum_valid = true; -	} - -	/* go through the checksum list, compare it with the previous checksums, -	 and add all dirty rectangles to a list. try to combine small rectangles -		 into bigger ones in a simple way */ -	if (!force_full) { -		uint x,y,w; -		uint32 *ck = dirty_checksums; - -		for(y=0; y!=SCREEN_HEIGHT/8; y++) { -			for(x=0; x!=SCREEN_WIDTH/8; x++,ck++) { -				if (ck[0] != ck[CKSUM_NUM]) { -					/* found a dirty 8x8 block, now go as far to the right as possible, -						 and at the same time, unmark the dirty status by setting old to new. */ -					w=0; -					do { -						ck[w+CKSUM_NUM] = ck[w]; -						w++; -					} while (x+w != SCREEN_WIDTH/8 && ck[w] != ck[w+CKSUM_NUM]); - -					add_dirty_rect(x*8, y*8, w*8, 8); - -					if (force_full) -						goto get_out; -				} -			} -		} -	} else { -		get_out:; -		/* Copy old checksums to new */ -		memcpy(dirty_checksums + CKSUM_NUM, dirty_checksums, CKSUM_NUM * sizeof(uint32)); -	} -} - -void OSystem_MAC::update_screen() { -#if 0 -	/* First make sure the mouse is drawn, if it should be drawn. */ -	draw_mouse(); - -	if (_palette_changed_last != 0) { -		//warning("MAC: Palette should be uploaded!");/* FIXME: Add Palette changing code */ -		 -		/*GDevice **odisplay; -		odisplay = GetGDevice(); -		SetGDevice(GetMainDevice()); -		SetEntries(0, (**pal).ctSize, (ColorSpec *)&(**pal).ctTable); -		SetGDevice(odisplay);*/ -		 -		/*_palette_changed_last = 0; -		if (_mode_flags & DF_FORCE_FULL_ON_PALETTE) -			*/force_full = true; -	} - -	/* force a full redraw, accomplish that by adding one big rect to the dirty -	 * rect list */ -	if (force_full) { -		num_dirty_rects = 1; -		 -		dirty_rect_list[0].left = 0; -		dirty_rect_list[0].top = 0; -		dirty_rect_list[0].right = SCREEN_WIDTH; -		dirty_rect_list[0].bottom = SCREEN_HEIGHT; -	} -	 -	if (num_dirty_rects > 0) -	{ -		Rect *r;  -		uint32 srcPitch, dstPitch; -		Rect *last_rect = dirty_rect_list + num_dirty_rects; -	 -		/* Convert appropriate parts of the image into 16bpp */ -		if ((_mode_flags & DF_REAL_8BIT) == 0) { -			Rect dst; -			for(r=dirty_rect_list; r!=last_rect; ++r) { -				dst = *r; -				dst.left++; -				dst.top++; -				dst.right++; -				dst.bottom++; -			} -		} -	 -		/*srcPitch = sdl_tmpscreen->pitch; -		dstPitch = sdl_hwscreen->pitch;*/ -	 -		if ((_mode_flags & DF_REAL_8BIT) == 0) { -			for(r=dirty_rect_list; r!=last_rect; ++r) { -				register int dst_y = r->y + _current_shake_pos; -				register int dst_h = 0; -				if (dst_y < SCREEN_HEIGHT) { -					dst_h = r->h; -					if (dst_h > SCREEN_HEIGHT - dst_y) -						dst_h = SCREEN_HEIGHT - dst_y; -					 -					r->x <<= 1; -					dst_y <<= 1; -					 -					_sai_func((byte*)sdl_tmpscreen->pixels + (r->x+2) + (r->y+1)*srcPitch, srcPitch, NULL,  -						(byte*)sdl_hwscreen->pixels + r->x*scaling + dst_y*dstPitch, dstPitch, r->w, dst_h); -				} -				 -				r->y = dst_y; -				r->w <<= 1; -				r->h = dst_h << 1; -			} -		} else { -			for(r=dirty_rect_list; r!=last_rect; ++r) { -				register int dst_y = r->y + _current_shake_pos; -				register int dst_h = 0; -				if (dst_y < SCREEN_HEIGHT) { -					dst_h = r->h; -					if (dst_h > SCREEN_HEIGHT - dst_y) -						dst_h = SCREEN_HEIGHT - dst_y; -					 -					dst_y *= scaling; -					 -					_sai_func((byte*)sdl_tmpscreen->pixels + r->x + r->y*srcPitch, srcPitch, NULL,  -						(byte*)sdl_hwscreen->pixels + r->x*scaling + dst_y*dstPitch, dstPitch, r->w, dst_h); -				} -				 -				r->x *= scaling; -				r->y = dst_y; -				r->w *= scaling; -				r->h = dst_h * scaling; -			} -		} -	 -		if (force_full) { -			dirty_rect_list[0].y = 0; -			dirty_rect_list[0].h = SCREEN_HEIGHT * scaling; -		} -	} -		 -	/*if(_mode_flags & DF_2xSAI) -	{ -		Rect *r; -		uint32 area = 0; -		 -		Rect *dr = dirty_rect_list + num_dirty_rects; -		 -		for(r = dirty_rect_list; r != dr; r++) -		{ -			GWorldPtr gw; -			Rect rec; -			SetRect(&rec, 0, 0, 320, 200); -			NewGWorldFromPtr(&gw, 16, &rec, NULL, NULL, 0, (char*)_tmp_buf, rec.right); -			CopyBits(GetPortBitMapForCopyBits(gw), GetPortBitMapForCopyBits(screenBuf), -						r, r, srcCopy, 0L); -		} -		 -		for(r = dirty_rect_list; r != dr; r++) -		{ -			_sai_func((byte*)_tmp_buf + r->left * 2 + r->top * 640, 640, NULL, -				(byte*)_sai_buf + r->left * 4 + r->top * 640 * 4, 640 * 2, -				r->right - r->left, r->bottom - r->top); -			 -			area += (r->right - r->left) * (r->bottom - r->top); -			 -			r->left <<= 1; -			r->right <<= 1; -			r->top <<= 1; -			r->bottom <<= 1; -		} -	}*/ -	 -	update_rects(); -	//blit_to_screen(); -	 -	num_dirty_rects = 0; - -#endif -} - -bool OSystem_MAC::show_mouse(bool visible) { -	if (_mouse_visible == visible) -		return visible; -	 -	bool last = _mouse_visible; -	_mouse_visible = visible; - -	if (visible) -		draw_mouse(); -	else -		undraw_mouse(); - -	return last; -} -	 -void OSystem_MAC::set_mouse_pos(int x, int y) { -	if (x != _ms_cur.x || y != _ms_cur.y) { -		_ms_cur.x = x; -		_ms_cur.y = y; -		undraw_mouse(); -	} -} -	 -void OSystem_MAC::set_mouse_cursor(const byte *buf, uint w, uint h, int hotspot_x, int hotspot_y) { -	_ms_cur.w = w; -	_ms_cur.h = h; - -	_ms_hotspot_x = hotspot_x; -	_ms_hotspot_y = hotspot_y; - -	_ms_buf = (byte*)buf; - -	undraw_mouse(); -} -	 -void OSystem_MAC::set_shake_pos(int shake_pos) { -	/*int old_shake_pos = _current_shake_pos; -	int dirty_height, dirty_blackheight; -	int dirty_top, dirty_blacktop; -	 -	if (shake_pos != old_shake_pos) { -		_current_shake_pos = shake_pos; -		force_full = true; - -		/* Old shake pos was current_shake_pos, new is shake_pos. -		 * Move the screen up or down to account for the change. -		 */ -		//SDL_Rect dstr = { 0, shake_pos*scaling, 320*scaling, 200*scaling }; -		//SDL_Rect srcr = { 0, old_shake_pos*scaling, 320*scaling, 200*scaling }; -		//SDL_BlitSurface(sdl_screen, &srcr, sdl_screen, &dstr); -	/*	Rect srcr, dstr; -		 -		SetRect(&srcr, 0, old_shake_pos * scaling, 320 * scaling, 200 * scaling); -		SetRect(&dstr, 0, shake_pos * scaling, 320 * scaling, 200 * scaling); -		 -		CopyBits(GetPortBitMapForCopyBits(screenBuf), GetPortBitMapForCopyBits(GetWindowPort(wref)), -			&srcr, &dstr, srcCopy, 0L); -		 -		/* Refresh either the upper part of the screen, -		 * or the lower part */ -	/*	if (shake_pos > old_shake_pos) { -			dirty_height = MIN(shake_pos, 0) - MIN(old_shake_pos, 0); -			dirty_top = -MIN(shake_pos, 0); -			dirty_blackheight = MAX(shake_pos, 0) - MAX(old_shake_pos, 0); -			dirty_blacktop = MAX(old_shake_pos, 0); -		} else { -			dirty_height = MAX(old_shake_pos, 0) - MAX(shake_pos, 0); -			dirty_top = 200 - MAX(old_shake_pos, 0); -			dirty_blackheight = MIN(old_shake_pos, 0) - MIN(shake_pos, 0); -			dirty_blacktop = 200 + MIN(shake_pos, 0); -		} - -		/* Fill the dirty area with blackness or the scumm image */ -		//SDL_Rect blackrect = {0, dirty_blacktop*scaling, 320*scaling, dirty_blackheight*scaling}; -		//SDL_FillRect(sdl_screen, &blackrect, 0); - -		/* FIXME: Um, screen seems to glitch since this -		          'not needed' function was removed */ -		//g_scumm->redrawLines(dirty_top, dirty_top + dirty_height); -/*	}*/ -} -		 -uint32 OSystem_MAC::get_msecs() { -	UnsignedWide ms; - -	Microseconds(&ms); -	return(ms.lo / 1000); -} -	 -void OSystem_MAC::delay_msecs(uint msecs) { -	uint32 start = get_msecs(); -	Event dummy; - -	do { -		poll_event(&dummy);	/* Do something to avoid CPU lock */ -		if(get_msecs() >= start + msecs) -			break; -	} while (1); -} -	 -void *OSystem_MAC::create_thread(ThreadProc *proc, void *param) { -	warning("MAC: Stub create_thread()"); -	//NewThread(kCooperativeThread, (void*)proc, param, 0L, kCreateIfNeeded, NULL, NULL); -} - -int mapKey(int key, byte code, byte mod) -{ -	switch(code) { -	case 0x35: -		key = 27; -	break; -	case 0x31: -		key = 32; -	break; -	case 0x60: -		key = 601; -	break; -	} -	 -	return key; -} -	 -bool OSystem_MAC::poll_event(Event *event) -{ -	EventRef theEvent; -	EventTargetRef theTarget; -	OSStatus theErr; -	 -	OSStatus		result = eventNotHandledErr; -	HICommand		command; -	Point			mouse; - -	theTarget = GetEventDispatcherTarget(); -	theErr = ReceiveNextEvent(GetEventTypeCount(kCmdEvents), kCmdEvents, kEventDurationNoWait,true, &theEvent); -	 -	GetEventParameter( theEvent, kEventParamDirectObject, typeHICommand, NULL, -		sizeof( HICommand ), NULL, &command ); -	 -	switch(GetEventClass(theEvent)) -	{ -		case kEventClassWindow: -			switch(GetEventKind(theEvent)) -			{ -				case kEventWindowDrawContent: -				break; -				 -				case kEventWindowHandleContentClick: -					EventMouseButton btn; -					 -					GetEventParameter(theEvent, kEventParamMouseButton, typeMouseButton, NULL, -						sizeof(EventMouseButton), NULL, &btn); -					 -					if(btn == kEventMouseButtonPrimary) -						event->event_code = EVENT_RBUTTONDOWN; -					else if(btn == kEventMouseButtonSecondary) -						event->event_code = EVENT_LBUTTONDOWN; -					 -					debug(1, "Mouse down!"); -					 -					if(wref != FrontWindow()) -					{ -// FIXME - seems some versions of the CarbonLib stub are missing ActivateWindow -//						ActivateWindow(wref, true); -						BringToFront(wref); -					} -					return true; -				break; -				 -				case kEventWindowClose: -					quit(); -				break; -			} -		break; -		 -		case kEventClassCommand: -			switch(command.commandID) -			{ -				case kNewGameCmd: -					 -				break; -				 -				case kOpenGameCmd: -					//scumm->_saveLoadSlot = 0; -					//scumm->_saveLoadFlag = 2; -				break; -				 -				case kSaveGameCmd: -					//scumm->_saveLoadSlot = 0; -					//sprintf(scumm->_saveLoadName, "Quicksave %d", scumm->_saveLoadSlot); -					//scumm->_saveLoadFlag = 1; -				break; -				 -				case kQuitCmd: -					quit(); -				break; -				 -				case kPrefsCmd: -					//Preferences(); -				break; -				 -				case kAboutCmd: -					//About(); -				break; -			} -		break; -		 -		case kEventClassKeyboard: -			if(GetEventKind(theEvent) == kEventRawKeyDown) -			{ -				char	key; -				UInt32	mod, code; -				 -				GetEventParameter(theEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &code); -				GetEventParameter(theEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &key); -				GetEventParameter(theEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &mod); -				 -				event->event_code = EVENT_KEYDOWN; -				event->kbd.keycode = code; -				event->kbd.ascii = mapKey(key, code, mod); -				debug(1, "Key down: %c", event->kbd.ascii); -				return true; -			} -		break; -		 -		case kEventClassMouse: -			EventMouseButton btn; -			Rect winRect; -			 -			switch(GetEventKind(theEvent)) -			{			 -				case kEventMouseDown: -					WindowRef theWin; -					 -					GetEventParameter(theEvent, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), -						NULL, &theWin); -					if(theWin != FrontWindow()) -					{ -// FIXME - seems some versions of the CarbonLib stub are missing ActivateWindow -//						ActivateWindow(theWin, true); -						BringToFront(theWin); -					} -					 -					GetEventParameter(theEvent, kEventParamMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &mouse); -					 -					GetWindowBounds(wref, kWindowContentRgn, &winRect); -					if(PtInRect(mouse, &winRect)) -					{ -						GetEventParameter(theEvent, kEventParamMouseButton, typeMouseButton, NULL, -							sizeof(EventMouseButton), NULL, &btn); -						 -						if(btn == kEventMouseButtonPrimary) -							event->event_code = EVENT_RBUTTONDOWN; -						else if(btn == kEventMouseButtonSecondary) -							event->event_code = EVENT_LBUTTONDOWN; -						 -						debug(1, "Mouse down!"); -					}				 -				break; -				 -				case kEventMouseUp: -					 -					GetEventParameter(theEvent, kEventParamMouseButton, typeMouseButton, NULL, -						sizeof(EventMouseButton), NULL, &btn); -					 -					if(btn == kEventMouseButtonPrimary) -						event->event_code = EVENT_RBUTTONUP; -					else if(btn == kEventMouseButtonSecondary) -						event->event_code = EVENT_LBUTTONUP; -					 -					debug(1, "Mouse up!"); -					 -					return true; -				break; -				 -				case kEventMouseMoved:				 -					GetEventParameter(theEvent, kEventParamMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &mouse); -					 -					GetWindowBounds(wref, kWindowContentRgn, &winRect); -					if(PtInRect(mouse, &winRect)) -					{ -						CGrafPtr oldPort; -					 -						GetPort(&oldPort); -						SetPortWindowPort(wref); -						GlobalToLocal(&mouse); -						 -						event->event_code = EVENT_MOUSEMOVE; -						event->mouse.x = mouse.h / scaling; -						event->mouse.y = mouse.v / scaling; -						 -						//scumm->mouse.x = mouse.h/wm->scale; -						//scumm->mouse.y = mouse.v/wm->scale; -					} -					Point offset = {0, 0}; -					ShieldCursor(&winRect, offset); -					return true; -				break; -			} -		break; -	} -	 -	if(theErr == noErr && theEvent != NULL) { -		SendEventToEventTarget (theEvent, theTarget); -		ReleaseEvent(theEvent); -	} -} - -pascal void sound_callback(SndChannel *chan, SndCommand *cmd_passed) -{ -	OSystem_MAC* syst = (OSystem_MAC*)chan->userInfo; -	syst->sound_callback(chan, cmd_passed); -} - -void OSystem_MAC::sound_callback(SndChannel *chan, SndCommand *cmd_passed) -{ -	UInt32 fill_me, play_me; -	SndCommand cmd; -	 -	fill_me = cmd_passed->param2; -	play_me = ! fill_me; -	 -	header.samplePtr = (Ptr)buffer[play_me]; -	 -	cmd.cmd = bufferCmd; -	cmd.param1 = 0; -	cmd.param2 = (long)&header; -	 -	SndDoCommand(chan, &cmd, 0); -	 -	memset(buffer[fill_me], 0, size); -	//sndProc(parameter, buffer[fill_me], size); -	//SoundMixer::on_generate_samples(parameter, buffer[fill_me], size); -	 -	cmd.cmd = callBackCmd; -	cmd.param1 = 0; -	cmd.param2 = play_me; -	 -	SndDoCommand(chan, &cmd, 0); -} - -bool OSystem_MAC::set_sound_proc(void *param, SoundProc *proc, byte format) -{ -	SndCallBackUPP callback; -	int sample_size; -		 -	memset(&header, 0, sizeof(header)); -	callback = NewSndCallBackUPP(::sound_callback); -	size = ((0x9010 & 0xFF) / 8) * 2048; -	sample_size = size / 2048 * 8; -	header.numChannels = 1; -	header.sampleSize = sample_size; -	header.sampleRate = SAMPLES_PER_SEC << 16; -	header.numFrames = 	2048; -	header.encode = cmpSH; -	 -	for(int i = 0; i < 2; i++) -	{ -		buffer[i] = (UInt8*)malloc(sizeof(UInt8) * size); -		memset(buffer[i], 0, size); -	} -	 -	channel = (SndChannelPtr)malloc(sizeof(*channel)); -	channel->qLength = 128; -	channel->userInfo = (long)this; -	SndNewChannel(&channel, sampledSynth, initMono, callback); -	 -	SndCommand cmd; -	cmd.cmd = callBackCmd; -	cmd.param2 = 0; -	SndDoCommand(channel, &cmd, 0); -	 -	sndProc = proc; -	parameter = param; - -	return true; -} - - -/* retrieve the 320x200 bitmap currently being displayed */ -void OSystem_MAC::get_320x200_image(byte *buf) -{ -	/* make sure the mouse is gone */ -	undraw_mouse(); -	 -	byte *src; -	int x,y; - -	switch(_internal_scaling) { -	case 1: -		memcpy(buf, _gfx_buf, 320*200); -		break; - -	case 2: -		src = (byte*)_gfx_buf; -		for(y=0; y!=200; y++) { -			for(x=0; x!=320; x++) -				buf[x] = src[x*2]; -			buf += 320; -			src += 320 * 2 * 2; -		} -		break; - -	case 3: -		src = (byte*)_gfx_buf; -		for(y=0; y!=200; y++) { -			for(x=0; x!=320; x++) -				buf[x] = src[x*3]; -			buf += 320; -			src += 320 * 3 * 3; -		} -		break; -	}	 -} - -void OSystem_MAC::hotswap_gfx_mode() -{ -	/* hmm, need to allocate a 320x200 bitmap -	 * which will contain the "backup" of the screen during the change. -	 * then draw that to the new screen right after it's setup. -	 */ -	 -	byte *bak_mem = (byte*)malloc(320*200); - -	get_320x200_image(bak_mem); - -	unload_gfx_mode(); -	load_gfx_mode(); - -	force_full = true; - -	/* reset palette ? */ -	pal = (CTabHandle)NewHandleClear(sizeof(ColorTable) + 255 * sizeof(ColorSpec)); -	(*pal)->ctFlags = 0; -	(*pal)->ctSize = 255; -	 -	/* blit image */ -	copy_rect(bak_mem, 320, 0, 0, 320, 200); -	free(bak_mem); - -	update_screen(); -} - -uint32 OSystem_MAC::property(int param, Property *value) { -	switch(param) { -	case PROP_TOGGLE_FULLSCREEN: -		_full_screen ^= true; -	return 1; - -	case PROP_SET_WINDOW_CAPTION: -		StringPtr gameText = CToPascal((char*)value->caption); -		SetWTitle(wref, gameText); -	return 1; - -	case PROP_OPEN_CD: -	break; - -	case PROP_SET_GFX_MODE: -		if(value->gfx_mode >= 7) -			return 0; -		_mode = value->gfx_mode; -		hotswap_gfx_mode(); -	return 1; - - -	case PROP_SHOW_DEFAULT_CURSOR: -	break; -	 -	case PROP_GET_SAMPLE_RATE: -	return SAMPLES_PER_SEC; -	break; -	} -	 -	return 0; -} -		 -void OSystem_MAC::quit() { -	unload_gfx_mode(); - -	QuitApplicationEventLoop(); -	ExitToShell(); -} - -void OSystem_MAC::draw_mouse() { -	if (_mouse_drawn || !_mouse_visible) -		return; -	_mouse_drawn = true; -	 -	const int ydraw = _ms_cur.y + _current_shake_pos - _ms_hotspot_y; -	const int xdraw = _ms_cur.x - _ms_hotspot_x; -	const int w = _ms_cur.w; -	const int h = _ms_cur.h; -	int x,y; -	byte color; -	byte *dst, *bak = _ms_backup; -	byte *buf = _ms_buf; - -	_ms_old.w = w; -	_ms_old.h = h; -	_ms_old.x = xdraw; -	_ms_old.y = ydraw; -	 -	byte *src; -	if(_sai_func) -		src = (byte*)_tmp_buf; -	else -		src = _gfx_buf; -	 -	switch(_internal_scaling) { -	case 1: -		dst = (byte *)src + ydraw * 320 + xdraw; - -		for (y = 0; y < h; y++, dst += 320, bak += MAX_MOUSE_W, buf += w) { -			if ((uint) (ydraw + y) < 200) { -				for (x = 0; x < w; x++) { -					if ((uint) (xdraw + x) < 320) { -						bak[x] = dst[x]; -						if ((color = buf[x]) != 0xFF) { -							dst[x] = color; -						} -					} -				} -			} -		} -		break; - -	case 2: -		dst = (byte *)src + ydraw * 640 * 2 + xdraw * 2; - -		for (y = 0; y < h; y++, dst += 640 * 2, bak += MAX_MOUSE_W * 2, buf += w) { -			if ((uint) (ydraw + y) < 200) { -				for (x = 0; x < w; x++) { -					if ((uint) (xdraw + x) < 320) { -						bak[x * 2] = dst[x * 2]; -						bak[x * 2 + 1] = dst[x * 2 + 1]; -						if ((color = buf[x]) != 0xFF) { -							dst[x * 2] = color; -							dst[x * 2 + 1] = color; -							dst[x * 2 + 640] = color; -							dst[x * 2 + 1 + 640] = color; -						} -					} -				} -			} -		} -		break; - -	case 3: -		dst = (byte *)src + ydraw * 960 * 3 + xdraw * 3; - -		for (y = 0; y < h; y++, dst += 960 * 3, bak += MAX_MOUSE_W * 3, buf += w) { -			if ((uint) (ydraw + y) < 200) { -				for (x = 0; x < w; x++) { -					if ((uint) (xdraw + x) < 320) { -						bak[x * 3] = dst[x * 3]; -						bak[x * 3 + 1] = dst[x * 3 + 1]; -						bak[x * 3 + 2] = dst[x * 3 + 2]; -						if ((color = buf[x]) != 0xFF) { -							dst[x * 3] = color; -							dst[x * 3 + 1] = color; -							dst[x * 3 + 2] = color; -							dst[x * 3 + 960] = color; -							dst[x * 3 + 1 + 960] = color; -							dst[x * 3 + 2 + 960] = color; -							dst[x * 3 + 960 + 960] = color; -							dst[x * 3 + 1 + 960 + 960] = color; -							dst[x * 3 + 2 + 960 + 960] = color; -						} -					} -				} -			} -		} -		break; -	} - -	add_dirty_rect(xdraw,ydraw,w,h); -} - -void OSystem_MAC::undraw_mouse() { -	if (!_mouse_drawn) -		return; -	_mouse_drawn = false; -	 -	byte *dst, *bak = _ms_backup; -	byte *src; -	const int old_mouse_x = _ms_old.x; -	const int old_mouse_y = _ms_old.y; -	const int old_mouse_w = _ms_old.w; -	const int old_mouse_h = _ms_old.h; -	int x,y; -	 -	if(_sai_func) -		src = (byte*)_tmp_buf; -	else -		src = _gfx_buf; -	 -	switch(_internal_scaling) { -	case 1: -		dst = (byte *)src + old_mouse_y * 320 + old_mouse_x; - -		for (y = 0; y < old_mouse_h; y++, bak += MAX_MOUSE_W, dst += 320) { -			if ((uint) (old_mouse_y + y) < 200) { -				for (x = 0; x < old_mouse_w; x++) { -					if ((uint) (old_mouse_x + x) < 320) { -						dst[x] = bak[x]; -					} -				} -			} -		} -		break; - -	case 2: -		dst = (byte *)src + old_mouse_y * 640 * 2 + old_mouse_x * 2; - -		for (y = 0; y < old_mouse_h; y++, bak += MAX_MOUSE_W * 2, dst += 640 * 2) { -			if ((uint) (old_mouse_y + y) < 200) { -				for (x = 0; x < old_mouse_w; x++) { -					if ((uint) (old_mouse_x + x) < 320) { -						dst[x * 2 + 640] = dst[x * 2] = bak[x * 2]; -						dst[x * 2 + 640 + 1] = dst[x * 2 + 1] = bak[x * 2 + 1]; -					} -				} -			} -		} -		break; - -	case 3: -		dst = (byte *)src + old_mouse_y * 960 * 3 + old_mouse_x * 3; - -		for (y = 0; y < old_mouse_h; y++, bak += MAX_MOUSE_W * 3, dst += 960 * 3) { -			if ((uint) (old_mouse_y + y) < 200) { -				for (x = 0; x < old_mouse_w; x++) { -					if ((uint) (old_mouse_x + x) < 320) { -						dst[x * 3 + 960] = dst[x * 3 + 960 + 960] = dst[x * 3] = -							bak[x * 3]; -						dst[x * 3 + 960 + 1] = dst[x * 3 + 960 + 960 + 1] = -							dst[x * 3 + 1] = bak[x * 3 + 1]; -						dst[x * 3 + 960 + 2] = dst[x * 3 + 960 + 960 + 2] = -							dst[x * 3 + 2] = bak[x * 3 + 2]; -					} -				} -			} -		} -		break; -	} - -	add_dirty_rect(old_mouse_x, old_mouse_y, old_mouse_w, old_mouse_h); -} - -void OSystem_MAC::stop_cdrom() { -} - -void OSystem_MAC::play_cdrom(int track, int num_loops, int start_frame, int end_frame) { -	/* Reset sync count */ -	g_scumm->_vars[g_scumm->VAR_MI1_TIMER] = 0; -} - -bool OSystem_MAC::poll_cdrom() { -} - -void OSystem_MAC::update_cdrom() { -} - - - -/*************************************************************/ -/** Mac specific code ****************************************/ -void OSystem_MAC::set_scaling() { -	Rect rectWin; -	SetRect(&rectWin, 0, 0, 320 * scaling, 200 * scaling); -	HideWindow(wref); -	SetWindowBounds(wref, kWindowContentRgn, &rectWin); -	RepositionWindow(wref, NULL, kWindowCenterOnMainScreen); -	ShowWindow(wref); -	blit_rect = rectWin; -	 -	if(_sai_func) -	{ -		Rect r; -		 -		//SetRect(&r, 0, 0, 320, 240); -		_sai_buf = (int16*)malloc((320 * 200) * 2 * sizeof(int16));		 -		 -		NewGWorldFromPtr(&screenBuf, 16, &blit_rect, NULL, nil, 0, (char *)_sai_buf, blit_rect.right); -	} -	else -	{ -		_gfx_buf = (byte*)malloc((320 * 200) * scaling * sizeof(byte)); -		NewGWorldFromPtr(&screenBuf, 8, &blit_rect, pal, nil, 0, (char *)_gfx_buf, blit_rect.right); -	}	 -	 -	//NewGWorldFromPtr(&screenBuf, 8, &blit_rect, pal, nil, 0, (char *)_gfx_buf, blit_rect.right); -	 -	//if(screenBuf != NULL) -	//	UpdateGWorld(&screenBuf, 8, &blit_rect, pal, NULL, NULL); -} - -void OSystem_MAC::blit_to_screen() -{ -	CopyBits(GetPortBitMapForCopyBits(screenBuf), -	GetPortBitMapForCopyBits(GetWindowPort(wref)), &blit_rect, &blit_rect, srcCopy, 0L); -} - -void OSystem_MAC::init_mac_stuff() -{ -	Rect			rectWin; - -	 -	MenuRef AppleMenu = GetMenu(1000); -	InsertMenu(AppleMenu, 0); -	SetMenuItemCommandID(AppleMenu, 1, kAboutCmd); -	MenuRef FileMenu = GetMenu(1001); -	SetMenuItemCommandID(FileMenu, 1, kNewGameCmd); -	SetMenuItemCommandID(FileMenu, 2, kOpenGameCmd); -	SetMenuItemCommandID(FileMenu, 3, kSaveGameCmd); -	SetMenuItemCommandID(FileMenu, 5, kQuitCmd); -	DeleteMenuItems(FileMenu, CountMenuItems(FileMenu)-1, 2); -	InsertMenu(FileMenu, 0); -	MenuRef windMenu; -	CreateStandardWindowMenu(0, &windMenu); -	InsertMenu(windMenu, 0); -	EnableMenuCommand(NULL, kPrefsCmd); -	DrawMenuBar(); -	 -	SetRect(&rectWin, 0, 0, 320, 200); -	UInt32 WinAttrib = (kWindowCloseBoxAttribute | kWindowCollapseBoxAttribute | -				kWindowInWindowMenuAttribute | kWindowStandardHandlerAttribute); -	 -	if(noErr != CreateNewWindow(kDocumentWindowClass, WinAttrib, &rectWin, &wref)) -	{ -		//Error("Couldn't create Window!"); -	} -	 -	RepositionWindow(wref, NULL, kWindowCenterOnMainScreen); -	 -	Str255 WindowTitle = "\pScummVM"; -	SetWTitle(wref, WindowTitle); -	 -	SetPortWindowPort(wref); -	//ShowWindow(wref); -	 -	InstallStandardEventHandler(GetWindowEventTarget(wref)); -	 -	//OSStatus err = AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP(QuitEventHandler), 0L, false); -	 -	blit_rect = rectWin; -	pal = (CTabHandle)NewHandleClear(sizeof(ColorTable) + 255 * sizeof(ColorSpec)); -	(*pal)->ctFlags = 0; -	(*pal)->ctSize = 255; -	//NewGWorld(&screenBuf, 8, &blit_rect, 0, 0, 0); -} - -void OSystem_MAC::update_rects() -{ -	for(int i = 0; i < num_dirty_rects; i++) -	{ -		Rect rec = dirty_rect_list[i]; -		 -		CopyBits(GetPortBitMapForCopyBits(screenBuf), -				GetPortBitMapForCopyBits(GetWindowPort(wref)), -				&rec, &rec, srcCopy, 0L); -	} -} diff --git a/backends/mac/macos.h b/backends/mac/macos.h deleted file mode 100644 index 09c40456e9..0000000000 --- a/backends/mac/macos.h +++ /dev/null @@ -1,24 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2001  Ludvig Strigeus - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. - * - * - * - */ -  - //#define MACOS_SDL - #define MACOS_CARBON - 
\ No newline at end of file diff --git a/backends/mac/scummvm.icns b/backends/mac/scummvm.icnsBinary files differ deleted file mode 100644 index 5f5e10d732..0000000000 --- a/backends/mac/scummvm.icns +++ /dev/null diff --git a/backends/mac/scummvm.mcp b/backends/mac/scummvm.mcpBinary files differ deleted file mode 100644 index 41a29050f4..0000000000 --- a/backends/mac/scummvm.mcp +++ /dev/null | 
