All pastes #396977 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-03-16 03:38 UTC
rendered paste body
// Button Handler
// WARNING: Direct C++ Translation Here
function button_handler($hwnd, $msg, $wparam, $lparam){
	global $function, $rom, $loaded; //Globals
	
	if ($loaded == 1){ //Only usuable when rom is loaded
		switch ($msg){
			case WM_LBUTTONDOWN:
				$x = $hwnd;
				$tempid = 0;
				while ($x >= 108){
					$tempid++;
					$x -= 8;
				}
					
				echo "WM_LBUTTONDOWN received (". LoWord($lparam) .", ". HiWord($lparam) .") from ". GetDlgCtrlID($hwnd) ."...\r\n";
				editlvl(16400+$tempid,GetDlgCtrlID($hwnd),1);
				displaylevel(16400,149520,24080); //Load level and objects
				displayobjs(24892,159760,24092);
				break;
			case WM_RBUTTONDOWN:
				$x = $hwnd;
				$tempid = 0;
				while ($x >= 108){
					$tempid++;
					$x -= 8;
				}
				
				echo "WM_RBUTTONDOWN received (". LoWord($lparam) .", ". HiWord($lparam) .") from ". GetDlgCtrlID($hwnd) ."...\r\n";
				editlvl(16400+$tempid,GetDlgCtrlID($hwnd),0);
				displaylevel(16400,149520,24080); //Load level and objects
				displayobjs(24892,159760,24092);
				break;
		}
	}
	
	return CallWindowProc($function[$hwnd], $hwnd, $msg, $wparam, $lparam);
}



	//Function - writebit - writebit($offset, $location)
	//$offset = Rom offset
	//$location = Position of the bit
	//$fill = 1 for Set Bit, 0 for Clear Bit
	//Writes a bit that changes a bit in the byte that is located at the offset
	//Returns: 1 if successful
	function writebit($offset, $location, $fill){
		global $rom;
			var_dump($offset);
			if ($fill == 1){
				$rom[$offset] = $rom[$offset] | (0x80 >> $location);
			}
			var_dump($offset);
		var_dump(ord($rom[$offset]));
		return 1;
	} 



	//Function - Edit Level - editlvl($lvloffset, $id, $click){
	//$lvloffset = Offset of level
	//$id = ID of frame
	//$click = Left click (solid,1) or Right click (non-solid,0)
	//Edits a block of the level to flip the opposite way
	//Returns: 1 if successful
	function editlvl($lvloffset, $id, $click){
		global $rom;
		$level = $rom[$lvloffset];
		
		if ($id <= 99){
			return 0;
		}
		
		$id -= 100;	
		while ($id >= 8){
			$id -= 8;
		}
			
		$location = $id;
		$bit = readbit($lvloffset, $location);
		writebit($lvloffset, $location, $click);
		return 1;
	}