diff options
Diffstat (limited to 'src/Cbopcode.php')
-rw-r--r-- | src/Cbopcode.php | 4053 |
1 files changed, 2915 insertions, 1138 deletions
diff --git a/src/Cbopcode.php b/src/Cbopcode.php index 0b80c4d..37a6942 100644 --- a/src/Cbopcode.php +++ b/src/Cbopcode.php @@ -4,1143 +4,2920 @@ namespace GameBoy; class Cbopcode { - public $functionsArray = []; - - public function __construct() - { - //#0x00: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerB & 0x80) == 0x80); - $parentObj->registerB = (($parentObj->registerB << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerB == 0); - }; - - //#0x01: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerC & 0x80) == 0x80); - $parentObj->registerC = (($parentObj->registerC << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerC == 0); - }; - //#0x02: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerD & 0x80) == 0x80); - $parentObj->registerD = (($parentObj->registerD << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerD == 0); - }; - //#0x03: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerE & 0x80) == 0x80); - $parentObj->registerE = (($parentObj->registerE << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerE == 0); - }; - //#0x04: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x8000) == 0x8000); - $parentObj->registersHL = (($parentObj->registersHL << 1) & 0xFE00) + (($parentObj->FCarry) ? 0x100 : 0) + ($parentObj->registersHL & 0xFF); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - }; - //#0x05: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x80) == 0x80); - $parentObj->registersHL = ($parentObj->registersHL & 0xFF00) + (($parentObj->registersHL << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0x00); - }; - //#0x06: - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $parentObj->FCarry = (($temp_var & 0x80) == 0x80); - $temp_var = (($temp_var << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->memoryWrite($parentObj->registersHL, $temp_var); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($temp_var == 0x00); - }; - //#0x07: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerA & 0x80) == 0x80); - $parentObj->registerA = (($parentObj->registerA << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerA == 0x00); - }; - //#0x08: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerB & 0x01) == 0x01); - $parentObj->registerB = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerB >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerB == 0); - }; - //#0x09: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerC & 0x01) == 0x01); - $parentObj->registerC = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerC >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerC == 0); - }; - //#0x0A: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerD & 0x01) == 0x01); - $parentObj->registerD = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerD >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerD == 0); - }; - //#0x0B: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerE & 0x01) == 0x01); - $parentObj->registerE = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerE >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerE == 0); - }; - //#0x0C: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x0100) == 0x0100); - $parentObj->registersHL = (($parentObj->FCarry) ? 0x8000 : 0) + (($parentObj->registersHL >> 1) & 0xFF00) + ($parentObj->registersHL & 0xFF); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - }; - //#0x0D: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x01) == 0x01); - $parentObj->registersHL = ($parentObj->registersHL & 0xFF00) + (($parentObj->FCarry) ? 0x80 : 0) + (($parentObj->registersHL & 0xFF) >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0x00); - }; - //#0x0E: - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $parentObj->FCarry = (($temp_var & 0x01) == 0x01); - $temp_var = (($parentObj->FCarry) ? 0x80 : 0) + ($temp_var >> 1); - $parentObj->memoryWrite($parentObj->registersHL, $temp_var); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($temp_var == 0x00); - }; - //#0x0F: - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerA & 0x01) == 0x01); - $parentObj->registerA = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerA >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerA == 0x00); - }; - //#0x10: - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerB & 0x80) == 0x80); - $parentObj->registerB = (($parentObj->registerB << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerB == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerC & 0x80) == 0x80); - $parentObj->registerC = (($parentObj->registerC << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerC == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerD & 0x80) == 0x80); - $parentObj->registerD = (($parentObj->registerD << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerD == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerE & 0x80) == 0x80); - $parentObj->registerE = (($parentObj->registerE << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerE == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registersHL & 0x8000) == 0x8000); - $parentObj->registersHL = (($parentObj->registersHL << 1) & 0xFE00) + (($parentObj->FCarry) ? 0x100 : 0) + ($parentObj->registersHL & 0xFF); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registersHL & 0x80) == 0x80); - $parentObj->registersHL = ($parentObj->registersHL & 0xFF00) + (($parentObj->registersHL << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $newFCarry = (($temp_var & 0x80) == 0x80); - $temp_var = (($temp_var << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FCarry = $newFCarry; - $parentObj->memoryWrite($parentObj->registersHL, $temp_var); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($temp_var == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerA & 0x80) == 0x80); - $parentObj->registerA = (($parentObj->registerA << 1) & 0xFF) + (($parentObj->FCarry) ? 1 : 0); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerA == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerB & 0x01) == 0x01); - $parentObj->registerB = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerB >> 1); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerB == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerC & 0x01) == 0x01); - $parentObj->registerC = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerC >> 1); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerC == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerD & 0x01) == 0x01); - $parentObj->registerD = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerD >> 1); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerD == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerE & 0x01) == 0x01); - $parentObj->registerE = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerE >> 1); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerE == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registersHL & 0x0100) == 0x0100); - $parentObj->registersHL = (($parentObj->FCarry) ? 0x8000 : 0) + (($parentObj->registersHL >> 1) & 0xFF00) + ($parentObj->registersHL & 0xFF); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registersHL & 0x01) == 0x01); - $parentObj->registersHL = ($parentObj->registersHL & 0xFF00) + (($parentObj->FCarry) ? 0x80 : 0) + (($parentObj->registersHL & 0xFF) >> 1); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $newFCarry = (($temp_var & 0x01) == 0x01); - $temp_var = (($parentObj->FCarry) ? 0x80 : 0) + ($temp_var >> 1); - $parentObj->FCarry = $newFCarry; - $parentObj->memoryWrite($parentObj->registersHL, $temp_var); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($temp_var == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $newFCarry = (($parentObj->registerA & 0x01) == 0x01); - $parentObj->registerA = (($parentObj->FCarry) ? 0x80 : 0) + ($parentObj->registerA >> 1); - $parentObj->FCarry = $newFCarry; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerA == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerB & 0x80) == 0x80); - $parentObj->registerB = ($parentObj->registerB << 1) & 0xFF; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerB == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerC & 0x80) == 0x80); - $parentObj->registerC = ($parentObj->registerC << 1) & 0xFF; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerC == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerD & 0x80) == 0x80); - $parentObj->registerD = ($parentObj->registerD << 1) & 0xFF; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerD == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerE & 0x80) == 0x80); - $parentObj->registerE = ($parentObj->registerE << 1) & 0xFF; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerE == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x8000) == 0x8000); - $parentObj->registersHL = (($parentObj->registersHL << 1) & 0xFE00) + ($parentObj->registersHL & 0xFF); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x0080) == 0x0080); - $parentObj->registersHL = ($parentObj->registersHL & 0xFF00) + (($parentObj->registersHL << 1) & 0xFF); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $parentObj->FCarry = (($temp_var & 0x80) == 0x80); - $temp_var = ($temp_var << 1) & 0xFF; - $parentObj->memoryWrite($parentObj->registersHL, $temp_var); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($temp_var == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerA & 0x80) == 0x80); - $parentObj->registerA = ($parentObj->registerA << 1) & 0xFF; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerA == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerB & 0x01) == 0x01); - $parentObj->registerB = ($parentObj->registerB & 0x80) + ($parentObj->registerB >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerB == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerC & 0x01) == 0x01); - $parentObj->registerC = ($parentObj->registerC & 0x80) + ($parentObj->registerC >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerC == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerD & 0x01) == 0x01); - $parentObj->registerD = ($parentObj->registerD & 0x80) + ($parentObj->registerD >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerD == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerE & 0x01) == 0x01); - $parentObj->registerE = ($parentObj->registerE & 0x80) + ($parentObj->registerE >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerE == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x0100) == 0x0100); - $parentObj->registersHL = (($parentObj->registersHL >> 1) & 0xFF00) + ($parentObj->registersHL & 0x80FF); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x0001) == 0x0001); - $parentObj->registersHL = ($parentObj->registersHL & 0xFF80) + (($parentObj->registersHL & 0xFF) >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $parentObj->FCarry = (($temp_var & 0x01) == 0x01); - $temp_var = ($temp_var & 0x80) + ($temp_var >> 1); - $parentObj->memoryWrite($parentObj->registersHL, $temp_var); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($temp_var == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerA & 0x01) == 0x01); - $parentObj->registerA = ($parentObj->registerA & 0x80) + ($parentObj->registerA >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerA == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB = (($parentObj->registerB & 0xF) << 4) + ($parentObj->registerB >> 4); - $parentObj->FZero = ($parentObj->registerB == 0); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC = (($parentObj->registerC & 0xF) << 4) + ($parentObj->registerC >> 4); - $parentObj->FZero = ($parentObj->registerC == 0); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD = (($parentObj->registerD & 0xF) << 4) + ($parentObj->registerD >> 4); - $parentObj->FZero = ($parentObj->registerD == 0); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE = (($parentObj->registerE & 0xF) << 4) + ($parentObj->registerE >> 4); - $parentObj->FZero = ($parentObj->registerE == 0); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL = (($parentObj->registersHL & 0xF00) << 4) + (($parentObj->registersHL & 0xF000) >> 4) + ($parentObj->registersHL & 0xFF); - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL = ($parentObj->registersHL & 0xFF00) + (($parentObj->registersHL & 0xF) << 4) + (($parentObj->registersHL & 0xF0) >> 4); - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $temp_var = (($temp_var & 0xF) << 4) + ($temp_var >> 4); - $parentObj->memoryWrite($parentObj->registersHL, $temp_var); - $parentObj->FZero = ($temp_var == 0); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA = (($parentObj->registerA & 0xF) << 4) + ($parentObj->registerA >> 4); - $parentObj->FZero = ($parentObj->registerA == 0); - $parentObj->FCarry = $parentObj->FHalfCarry = $parentObj->FSubtract = false; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerB & 0x01) == 0x01); - $parentObj->registerB >>= 1; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerB == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerC & 0x01) == 0x01); - $parentObj->registerC >>= 1; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerC == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerD & 0x01) == 0x01); - $parentObj->registerD >>= 1; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerD == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerE & 0x01) == 0x01); - $parentObj->registerE >>= 1; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerE == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x0100) == 0x0100); - $parentObj->registersHL = (($parentObj->registersHL >> 1) & 0xFF00) + ($parentObj->registersHL & 0xFF); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registersHL <= 0xFF); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registersHL & 0x0001) == 0x0001); - $parentObj->registersHL = ($parentObj->registersHL & 0xFF00) + (($parentObj->registersHL & 0xFF) >> 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0xFF) == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $temp_var = $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL); - $parentObj->FCarry = (($temp_var & 0x01) == 0x01); - $parentObj->memoryWrite($parentObj->registersHL, $temp_var >>= 1); - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($temp_var == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FCarry = (($parentObj->registerA & 0x01) == 0x01); - $parentObj->registerA >>= 1; - $parentObj->FHalfCarry = $parentObj->FSubtract = false; - $parentObj->FZero = ($parentObj->registerA == 0x00); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x01) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x01) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x01) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x01) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0100) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0001) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x01) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x01) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x02) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x02) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x02) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x02) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0200) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0002) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x02) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x02) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x04) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x04) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x04) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x04) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0400) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0004) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x04) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x04) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x08) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x08) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x08) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x08) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0800) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0008) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x08) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x08) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x10) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x10) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x10) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x10) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x1000) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0010) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x10) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x10) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x20) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x20) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x20) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x20) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x2000) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0020) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x20) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x20) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x40) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x40) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x40) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x40) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x4000) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0040) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x40) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x40) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerB & 0x80) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerC & 0x80) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerD & 0x80) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerE & 0x80) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x8000) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registersHL & 0x0080) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x80) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->FHalfCarry = true; - $parentObj->FSubtract = false; - $parentObj->FZero = (($parentObj->registerA & 0x80) == 0); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0xFE; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0xFE; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0xFE; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0xFE; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFEFF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFFFE; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0xFE); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0xFE; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0xFD; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0xFD; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0xFD; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0xFD; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFDFF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFFFD; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0xFD); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0xFD; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0xFB; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0xFB; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0xFB; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0xFB; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFBFF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFFFB; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0xFB); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0xFB; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0xF7; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0xF7; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0xF7; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0xF7; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xF7FF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFFF7; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0xF7); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0xF7; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0xEF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0xEF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0xEF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0xEF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xEFFF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFFEF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0xEF); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0xEF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0xDF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0xDF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0xDF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0xDF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xDFFF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFFDF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0xDF); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0xDF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0xBF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0xBF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0xBF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0xBF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xBFFF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFFBF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0xBF); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0xBF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB &= 0x7F; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC &= 0x7F; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD &= 0x7F; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE &= 0x7F; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0x7FFF; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL &= 0xFF7F; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) & 0x7F); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA &= 0x7F; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x01; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x01; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x01; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x01; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x0100; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x01; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x01); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x01; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x02; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x02; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x02; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x02; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x0200; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x02; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x02); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x02; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x04; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x04; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x04; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x04; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x0400; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x04; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x04); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x04; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x08; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x08; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x08; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x08; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x0800; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x08; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x08); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x08; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x10; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x10; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x10; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x10; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x1000; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x10; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x10); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x10; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x20; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x20; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x20; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x20; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x2000; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x20; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x20); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x20; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x40; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x40; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x40; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x40; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x4000; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x40; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x40); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x40; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerB |= 0x80; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerC |= 0x80; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerD |= 0x80; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerE |= 0x80; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x8000; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registersHL |= 0x80; - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->memoryWrite($parentObj->registersHL, $parentObj->memoryReader[$parentObj->registersHL]($parentObj, $parentObj->registersHL) | 0x80); - }; - $this->functionsArray[] = function ($parentObj) { - $parentObj->registerA |= 0x80; - }; - } - - public function get() - { - return $this->functionsArray; + /** + * Run the given cbopcode. + * + * @param Core $core + * @param int $address + * @return mixed + */ + public static function run(Core $core, $address) + { + $function = 'cbopcode'.$address; + return Cbopcode::$function($core); + } + + /** + * Cbopcode #0x00. + * + * @param Core $core + */ + private static function cbopcode0(Core $core) + { + $core->FCarry = (($core->registerB & 0x80) == 0x80); + $core->registerB = (($core->registerB << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerB == 0); + } + + /** + * Cbopcode #0x01. + * + * @param Core $core + */ + private static function cbopcode1(Core $core) + { + $core->FCarry = (($core->registerC & 0x80) == 0x80); + $core->registerC = (($core->registerC << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerC == 0); + } + + /** + * Cbopcode #0x02. + * + * @param Core $core + */ + private static function cbopcode2(Core $core) + { + $core->FCarry = (($core->registerD & 0x80) == 0x80); + $core->registerD = (($core->registerD << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerD == 0); + } + + /** + * Cbopcode #0x03. + * + * @param Core $core + */ + private static function cbopcode3(Core $core) + { + $core->FCarry = (($core->registerE & 0x80) == 0x80); + $core->registerE = (($core->registerE << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerE == 0); + } + + /** + * Cbopcode #0x04. + * + * @param Core $core + */ + private static function cbopcode4(Core $core) + { + $core->FCarry = (($core->registersHL & 0x8000) == 0x8000); + $core->registersHL = (($core->registersHL << 1) & 0xFE00) + (($core->FCarry) ? 0x100 : 0) + ($core->registersHL & 0xFF); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registersHL <= 0xFF); + } + + /** + * Cbopcode #0x05. + * + * @param Core $core + */ + private static function cbopcode5(Core $core) + { + $core->FCarry = (($core->registersHL & 0x80) == 0x80); + $core->registersHL = ($core->registersHL & 0xFF00) + (($core->registersHL << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0xFF) == 0x00); + } + + /** + * Cbopcode #0x06. + * + * @param Core $core + */ + private static function cbopcode6(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $core->FCarry = (($temp_var & 0x80) == 0x80); + $temp_var = (($temp_var << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->memoryWrite($core->registersHL, $temp_var); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($temp_var == 0x00); + } + + /** + * Cbopcode #0x07. + * + * @param Core $core + */ + private static function cbopcode7(Core $core) + { + $core->FCarry = (($core->registerA & 0x80) == 0x80); + $core->registerA = (($core->registerA << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerA == 0x00); + } + + /** + * Cbopcode #0x08. + * + * @param Core $core + */ + private static function cbopcode8(Core $core) + { + $core->FCarry = (($core->registerB & 0x01) == 0x01); + $core->registerB = (($core->FCarry) ? 0x80 : 0) + ($core->registerB >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerB == 0); + } + + /** + * Cbopcode #0x09. + * + * @param Core $core + */ + private static function cbopcode9(Core $core) + { + $core->FCarry = (($core->registerC & 0x01) == 0x01); + $core->registerC = (($core->FCarry) ? 0x80 : 0) + ($core->registerC >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerC == 0); + } + + /** + * Cbopcode #0x0A. + * + * @param Core $core + */ + private static function cbopcode10(Core $core) + { + $core->FCarry = (($core->registerD & 0x01) == 0x01); + $core->registerD = (($core->FCarry) ? 0x80 : 0) + ($core->registerD >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerD == 0); + } + + /** + * Cbopcode #0x0B. + * + * @param Core $core + */ + private static function cbopcode11(Core $core) + { + $core->FCarry = (($core->registerE & 0x01) == 0x01); + $core->registerE = (($core->FCarry) ? 0x80 : 0) + ($core->registerE >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerE == 0); + } + + /** + * Cbopcode #0x0C. + * + * @param Core $core + */ + private static function cbopcode12(Core $core) + { + $core->FCarry = (($core->registersHL & 0x0100) == 0x0100); + $core->registersHL = (($core->FCarry) ? 0x8000 : 0) + (($core->registersHL >> 1) & 0xFF00) + ($core->registersHL & 0xFF); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registersHL <= 0xFF); + } + + /** + * Cbopcode #0x0D. + * + * @param Core $core + */ + private static function cbopcode13(Core $core) + { + $core->FCarry = (($core->registersHL & 0x01) == 0x01); + $core->registersHL = ($core->registersHL & 0xFF00) + (($core->FCarry) ? 0x80 : 0) + (($core->registersHL & 0xFF) >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0xFF) == 0x00); + } + + /** + * Cbopcode #0x0E. + * + * @param Core $core + */ + private static function cbopcode14(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $core->FCarry = (($temp_var & 0x01) == 0x01); + $temp_var = (($core->FCarry) ? 0x80 : 0) + ($temp_var >> 1); + $core->memoryWrite($core->registersHL, $temp_var); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($temp_var == 0x00); + } + + /** + * Cbopcode #0x0F. + * + * @param Core $core + */ + private static function cbopcode15(Core $core) + { + $core->FCarry = (($core->registerA & 0x01) == 0x01); + $core->registerA = (($core->FCarry) ? 0x80 : 0) + ($core->registerA >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerA == 0x00); + } + + /** + * Cbopcode #0x10. + * + * @param Core $core + */ + private static function cbopcode16(Core $core) + { + $newFCarry = (($core->registerB & 0x80) == 0x80); + $core->registerB = (($core->registerB << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerB == 0); + } + + /** + * Cbopcode #0x11. + * + * @param Core $core + */ + private static function cbopcode17(Core $core) + { + $newFCarry = (($core->registerC & 0x80) == 0x80); + $core->registerC = (($core->registerC << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerC == 0); + } + + /** + * Cbopcode #0x12. + * + * @param Core $core + */ + private static function cbopcode18(Core $core) + { + $newFCarry = (($core->registerD & 0x80) == 0x80); + $core->registerD = (($core->registerD << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerD == 0); + } + + /** + * Cbopcode #0x13. + * + * @param Core $core + */ + private static function cbopcode19(Core $core) + { + $newFCarry = (($core->registerE & 0x80) == 0x80); + $core->registerE = (($core->registerE << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerE == 0); + } + + /** + * Cbopcode #0x14. + * + * @param Core $core + */ + private static function cbopcode20(Core $core) + { + $newFCarry = (($core->registersHL & 0x8000) == 0x8000); + $core->registersHL = (($core->registersHL << 1) & 0xFE00) + (($core->FCarry) ? 0x100 : 0) + ($core->registersHL & 0xFF); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registersHL <= 0xFF); + } + + /** + * Cbopcode #0x15. + * + * @param Core $core + */ + private static function cbopcode21(Core $core) + { + $newFCarry = (($core->registersHL & 0x80) == 0x80); + $core->registersHL = ($core->registersHL & 0xFF00) + (($core->registersHL << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0xFF) == 0x00); + } + + /** + * Cbopcode #0x16. + * + * @param Core $core + */ + private static function cbopcode22(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $newFCarry = (($temp_var & 0x80) == 0x80); + $temp_var = (($temp_var << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FCarry = $newFCarry; + $core->memoryWrite($core->registersHL, $temp_var); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($temp_var == 0x00); + } + + /** + * Cbopcode #0x17. + * + * @param Core $core + */ + private static function cbopcode23(Core $core) + { + $newFCarry = (($core->registerA & 0x80) == 0x80); + $core->registerA = (($core->registerA << 1) & 0xFF) + (($core->FCarry) ? 1 : 0); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerA == 0x00); + } + + /** + * Cbopcode #0x18. + * + * @param Core $core + */ + private static function cbopcode24(Core $core) + { + $newFCarry = (($core->registerB & 0x01) == 0x01); + $core->registerB = (($core->FCarry) ? 0x80 : 0) + ($core->registerB >> 1); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerB == 0); + } + + /** + * Cbopcode #0x19. + * + * @param Core $core + */ + private static function cbopcode25(Core $core) + { + $newFCarry = (($core->registerC & 0x01) == 0x01); + $core->registerC = (($core->FCarry) ? 0x80 : 0) + ($core->registerC >> 1); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerC == 0); + } + + /** + * Cbopcode #0x1A. + * + * @param Core $core + */ + private static function cbopcode26(Core $core) + { + $newFCarry = (($core->registerD & 0x01) == 0x01); + $core->registerD = (($core->FCarry) ? 0x80 : 0) + ($core->registerD >> 1); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerD == 0); + } + + /** + * Cbopcode #0x1B. + * + * @param Core $core + */ + private static function cbopcode27(Core $core) + { + $newFCarry = (($core->registerE & 0x01) == 0x01); + $core->registerE = (($core->FCarry) ? 0x80 : 0) + ($core->registerE >> 1); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerE == 0); + } + + /** + * Cbopcode #0x1C. + * + * @param Core $core + */ + private static function cbopcode28(Core $core) + { + $newFCarry = (($core->registersHL & 0x0100) == 0x0100); + $core->registersHL = (($core->FCarry) ? 0x8000 : 0) + (($core->registersHL >> 1) & 0xFF00) + ($core->registersHL & 0xFF); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registersHL <= 0xFF); + } + + /** + * Cbopcode #0x1D. + * + * @param Core $core + */ + private static function cbopcode29(Core $core) + { + $newFCarry = (($core->registersHL & 0x01) == 0x01); + $core->registersHL = ($core->registersHL & 0xFF00) + (($core->FCarry) ? 0x80 : 0) + (($core->registersHL & 0xFF) >> 1); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0xFF) == 0x00); + } + + /** + * Cbopcode #0x1E. + * + * @param Core $core + */ + private static function cbopcode30(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $newFCarry = (($temp_var & 0x01) == 0x01); + $temp_var = (($core->FCarry) ? 0x80 : 0) + ($temp_var >> 1); + $core->FCarry = $newFCarry; + $core->memoryWrite($core->registersHL, $temp_var); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($temp_var == 0x00); + } + + /** + * Cbopcode #0x1F. + * + * @param Core $core + */ + private static function cbopcode31(Core $core) + { + $newFCarry = (($core->registerA & 0x01) == 0x01); + $core->registerA = (($core->FCarry) ? 0x80 : 0) + ($core->registerA >> 1); + $core->FCarry = $newFCarry; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerA == 0x00); + } + + /** + * Cbopcode #0x20. + * + * @param Core $core + */ + private static function cbopcode32(Core $core) + { + $core->FCarry = (($core->registerB & 0x80) == 0x80); + $core->registerB = ($core->registerB << 1) & 0xFF; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerB == 0); + } + + /** + * Cbopcode #0x21. + * + * @param Core $core + */ + private static function cbopcode33(Core $core) + { + $core->FCarry = (($core->registerC & 0x80) == 0x80); + $core->registerC = ($core->registerC << 1) & 0xFF; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerC == 0); + } + + /** + * Cbopcode #0x22. + * + * @param Core $core + */ + private static function cbopcode34(Core $core) + { + $core->FCarry = (($core->registerD & 0x80) == 0x80); + $core->registerD = ($core->registerD << 1) & 0xFF; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerD == 0); + } + + /** + * Cbopcode #0x23. + * + * @param Core $core + */ + private static function cbopcode35(Core $core) + { + $core->FCarry = (($core->registerE & 0x80) == 0x80); + $core->registerE = ($core->registerE << 1) & 0xFF; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerE == 0); + } + + /** + * Cbopcode #0x24. + * + * @param Core $core + */ + private static function cbopcode36(Core $core) + { + $core->FCarry = (($core->registersHL & 0x8000) == 0x8000); + $core->registersHL = (($core->registersHL << 1) & 0xFE00) + ($core->registersHL & 0xFF); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registersHL <= 0xFF); + } + + /** + * Cbopcode #0x25. + * + * @param Core $core + */ + private static function cbopcode37(Core $core) + { + $core->FCarry = (($core->registersHL & 0x0080) == 0x0080); + $core->registersHL = ($core->registersHL & 0xFF00) + (($core->registersHL << 1) & 0xFF); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0xFF) == 0x00); + } + + /** + * Cbopcode #0x26. + * + * @param Core $core + */ + private static function cbopcode38(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $core->FCarry = (($temp_var & 0x80) == 0x80); + $temp_var = ($temp_var << 1) & 0xFF; + $core->memoryWrite($core->registersHL, $temp_var); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($temp_var == 0x00); + } + + /** + * Cbopcode #0x27. + * + * @param Core $core + */ + private static function cbopcode39(Core $core) + { + $core->FCarry = (($core->registerA & 0x80) == 0x80); + $core->registerA = ($core->registerA << 1) & 0xFF; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerA == 0x00); + } + + /** + * Cbopcode #0x28. + * + * @param Core $core + */ + private static function cbopcode40(Core $core) + { + $core->FCarry = (($core->registerB & 0x01) == 0x01); + $core->registerB = ($core->registerB & 0x80) + ($core->registerB >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerB == 0); + } + + /** + * Cbopcode #0x29. + * + * @param Core $core + */ + private static function cbopcode41(Core $core) + { + $core->FCarry = (($core->registerC & 0x01) == 0x01); + $core->registerC = ($core->registerC & 0x80) + ($core->registerC >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerC == 0); + } + + /** + * Cbopcode #0x2A. + * + * @param Core $core + */ + private static function cbopcode42(Core $core) + { + $core->FCarry = (($core->registerD & 0x01) == 0x01); + $core->registerD = ($core->registerD & 0x80) + ($core->registerD >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerD == 0); + } + + /** + * Cbopcode #0x2B. + * + * @param Core $core + */ + private static function cbopcode43(Core $core) + { + $core->FCarry = (($core->registerE & 0x01) == 0x01); + $core->registerE = ($core->registerE & 0x80) + ($core->registerE >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerE == 0); + } + + /** + * + * Cbopcode #0x2C. + * + * @param Core $core + */ + private static function cbopcode44(Core $core) + { + $core->FCarry = (($core->registersHL & 0x0100) == 0x0100); + $core->registersHL = (($core->registersHL >> 1) & 0xFF00) + ($core->registersHL & 0x80FF); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registersHL <= 0xFF); + } + + /** + * Cbopcode #0x2D. + * + * @param Core $core + */ + private static function cbopcode45(Core $core) + { + $core->FCarry = (($core->registersHL & 0x0001) == 0x0001); + $core->registersHL = ($core->registersHL & 0xFF80) + (($core->registersHL & 0xFF) >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0xFF) == 0x00); + } + + /** + * Cbopcode #0x2E. + * + * @param Core $core + */ + private static function cbopcode46(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $core->FCarry = (($temp_var & 0x01) == 0x01); + $temp_var = ($temp_var & 0x80) + ($temp_var >> 1); + $core->memoryWrite($core->registersHL, $temp_var); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($temp_var == 0x00); + } + + /** + * Cbopcode #0x2F. + * + * @param Core $core + */ + private static function cbopcode47(Core $core) + { + $core->FCarry = (($core->registerA & 0x01) == 0x01); + $core->registerA = ($core->registerA & 0x80) + ($core->registerA >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerA == 0x00); + } + + /** + * Cbopcode #0x30. + * + * @param Core $core + */ + private static function cbopcode48(Core $core) + { + $core->registerB = (($core->registerB & 0xF) << 4) + ($core->registerB >> 4); + $core->FZero = ($core->registerB == 0); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x31. + * + * @param Core $core + */ + private static function cbopcode49(Core $core) + { + $core->registerC = (($core->registerC & 0xF) << 4) + ($core->registerC >> 4); + $core->FZero = ($core->registerC == 0); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x32. + * + * @param Core $core + */ + private static function cbopcode50(Core $core) + { + $core->registerD = (($core->registerD & 0xF) << 4) + ($core->registerD >> 4); + $core->FZero = ($core->registerD == 0); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x33. + * + * @param Core $core + */ + private static function cbopcode51(Core $core) + { + $core->registerE = (($core->registerE & 0xF) << 4) + ($core->registerE >> 4); + $core->FZero = ($core->registerE == 0); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x34. + * + * @param Core $core + */ + private static function cbopcode52(Core $core) + { + $core->registersHL = (($core->registersHL & 0xF00) << 4) + (($core->registersHL & 0xF000) >> 4) + ($core->registersHL & 0xFF); + $core->FZero = ($core->registersHL <= 0xFF); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x35. + * + * @param Core $core + */ + private static function cbopcode53(Core $core) + { + $core->registersHL = ($core->registersHL & 0xFF00) + (($core->registersHL & 0xF) << 4) + (($core->registersHL & 0xF0) >> 4); + $core->FZero = (($core->registersHL & 0xFF) == 0); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x36. + * + * @param Core $core + */ + private static function cbopcode54(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $temp_var = (($temp_var & 0xF) << 4) + ($temp_var >> 4); + $core->memoryWrite($core->registersHL, $temp_var); + $core->FZero = ($temp_var == 0); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x37. + * + * @param Core $core + */ + private static function cbopcode55(Core $core) + { + $core->registerA = (($core->registerA & 0xF) << 4) + ($core->registerA >> 4); + $core->FZero = ($core->registerA == 0); + $core->FCarry = $core->FHalfCarry = $core->FSubtract = false; + } + + /** + * Cbopcode #0x38. + * + * @param Core $core + */ + private static function cbopcode56(Core $core) + { + $core->FCarry = (($core->registerB & 0x01) == 0x01); + $core->registerB >>= 1; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerB == 0); + } + + /** + * Cbopcode #0x39. + * + * @param Core $core + */ + private static function cbopcode57(Core $core) + { + $core->FCarry = (($core->registerC & 0x01) == 0x01); + $core->registerC >>= 1; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerC == 0); + } + + /** + * Cbopcode #0x3A. + * + * @param Core $core + */ + private static function cbopcode58(Core $core) + { + $core->FCarry = (($core->registerD & 0x01) == 0x01); + $core->registerD >>= 1; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerD == 0); + } + + /** + * Cbopcode #0x3B. + * + * @param Core $core + */ + private static function cbopcode59(Core $core) + { + $core->FCarry = (($core->registerE & 0x01) == 0x01); + $core->registerE >>= 1; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerE == 0); + } + + /** + * Cbopcode #0x3C. + * + * @param Core $core + */ + private static function cbopcode60(Core $core) + { + $core->FCarry = (($core->registersHL & 0x0100) == 0x0100); + $core->registersHL = (($core->registersHL >> 1) & 0xFF00) + ($core->registersHL & 0xFF); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registersHL <= 0xFF); + } + + /** + * Cbopcode #0x3D. + * + * @param Core $core + */ + private static function cbopcode61(Core $core) + { + $core->FCarry = (($core->registersHL & 0x0001) == 0x0001); + $core->registersHL = ($core->registersHL & 0xFF00) + (($core->registersHL & 0xFF) >> 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0xFF) == 0x00); + } + + /** + * Cbopcode #0x3E. + * + * @param Core $core + */ + private static function cbopcode62(Core $core) + { + $temp_var = $core->memoryReader[$core->registersHL]($core, $core->registersHL); + $core->FCarry = (($temp_var & 0x01) == 0x01); + $core->memoryWrite($core->registersHL, $temp_var >>= 1); + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($temp_var == 0x00); + } + + /** + * Cbopcode #0x3F. + * + * @param Core $core + */ + private static function cbopcode63(Core $core) + { + $core->FCarry = (($core->registerA & 0x01) == 0x01); + $core->registerA >>= 1; + $core->FHalfCarry = $core->FSubtract = false; + $core->FZero = ($core->registerA == 0x00); + } + + /** + * Cbopcode #0x40. + * + * @param Core $core + */ + private static function cbopcode64(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x01) == 0); + } + + /** + * Cbopcode #0x41. + * + * @param Core $core + */ + private static function cbopcode65(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x01) == 0); + } + + /** + * Cbopcode #0x42. + * + * @param Core $core + */ + private static function cbopcode66(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x01) == 0); + } + + /** + * Cbopcode #0x43. + * + * @param Core $core + */ + private static function cbopcode67(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x01) == 0); + } + + /** + * Cbopcode #0x44. + * + * @param Core $core + */ + private static function cbopcode68(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0100) == 0); + } + + /** + * Cbopcode #0x45. + * + * @param Core $core + */ + private static function cbopcode69(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0001) == 0); + } + + /** + * Cbopcode #0x46. + * + * @param Core $core + */ + private static function cbopcode70(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x01) == 0); + } + + /** + * Cbopcode #0x47. + * + * @param Core $core + */ + private static function cbopcode71(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x01) == 0); + } + + /** + * Cbopcode #0x48. + * + * @param Core $core + */ + private static function cbopcode72(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x02) == 0); + } + + /** + * Cbopcode #0x49. + * + * @param Core $core + */ + private static function cbopcode73(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x02) == 0); + } + + /** + * Cbopcode #0x4A. + * + * @param Core $core + */ + private static function cbopcode74(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x02) == 0); + } + + /** + * Cbopcode #0x4B. + * + * @param Core $core + */ + private static function cbopcode75(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x02) == 0); + } + + /** + * Cbopcode #0x4C. + * + * @param Core $core + */ + private static function cbopcode76(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0200) == 0); + } + + /** + * Cbopcode #0x4D. + * + * @param Core $core + */ + private static function cbopcode77(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0002) == 0); + } + + /** + * Cbopcode #0x4E. + * + * @param Core $core + */ + private static function cbopcode78(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x02) == 0); + } + + /** + * Cbopcode #0x4F. + * + * @param Core $core + */ + private static function cbopcode79(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x02) == 0); + } + + /** + * Cbopcode #0x50. + * + * @param Core $core + */ + private static function cbopcode80(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x04) == 0); + } + + /** + * Cbopcode #0x51. + * + * @param Core $core + */ + private static function cbopcode81(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x04) == 0); + } + + /** + * Cbopcode #0x52. + * + * @param Core $core + */ + private static function cbopcode82(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x04) == 0); + } + + /** + * Cbopcode #0x53. + * + * @param Core $core + */ + private static function cbopcode83(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x04) == 0); + } + + /** + * Cbopcode #0x54. + * + * @param Core $core + */ + private static function cbopcode84(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0400) == 0); + } + + /** + * Cbopcode #0x55. + * + * @param Core $core + */ + private static function cbopcode85(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0004) == 0); + } + + /** + * Cbopcode #0x56. + * + * @param Core $core + */ + private static function cbopcode86(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x04) == 0); + } + + /** + * Cbopcode #0x57. + * + * @param Core $core + */ + private static function cbopcode87(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x04) == 0); + } + + /** + * Cbopcode #0x58. + * + * @param Core $core + */ + private static function cbopcode88(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x08) == 0); + } + + /** + * Cbopcode #0x59. + * + * @param Core $core + */ + private static function cbopcode89(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x08) == 0); + } + + /** + * Cbopcode #0x5A. + * + * @param Core $core + */ + private static function cbopcode90(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x08) == 0); + } + + /** + * Cbopcode #0x5B. + * + * @param Core $core + */ + private static function cbopcode91(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x08) == 0); + } + + /** + * Cbopcode #0x5C. + * + * @param Core $core + */ + private static function cbopcode92(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0800) == 0); + } + + /** + * Cbopcode #0x5D. + * + * @param Core $core + */ + private static function cbopcode93(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0008) == 0); + } + + /** + * Cbopcode #0x5E. + * + * @param Core $core + */ + private static function cbopcode94(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x08) == 0); + } + + /** + * Cbopcode #0x5F. + * + * @param Core $core + */ + private static function cbopcode95(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x08) == 0); + } + + /** + * Cbopcode #0x60. + * + * @param Core $core + */ + private static function cbopcode96(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x10) == 0); + } + + /** + * Cbopcode #0x61. + * + * @param Core $core + */ + private static function cbopcode97(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x10) == 0); + } + + /** + * Cbopcode #0x62. + * + * @param Core $core + */ + private static function cbopcode98(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x10) == 0); + } + + /** + * Cbopcode #0x63. + * + * @param Core $core + */ + private static function cbopcode99(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x10) == 0); + } + + /** + * Cbopcode #0x64. + * + * @param Core $core + */ + private static function cbopcode100(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x1000) == 0); + } + + /** + * Cbopcode #0x65. + * + * @param Core $core + */ + private static function cbopcode101(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0010) == 0); + } + + /** + * Cbopcode #0x66. + * + * @param Core $core + */ + private static function cbopcode102(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x10) == 0); + } + + /** + * Cbopcode #0x67. + * + * @param Core $core + */ + private static function cbopcode103(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x10) == 0); + } + + /** + * Cbopcode #0x68. + * + * @param Core $core + */ + private static function cbopcode104(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x20) == 0); + } + + /** + * Cbopcode #0x69. + * + * @param Core $core + */ + private static function cbopcode105(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x20) == 0); + } + + /** + * Cbopcode #0x6A. + * + * @param Core $core + */ + private static function cbopcode106(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x20) == 0); + } + + /** + * Cbopcode #0x6B. + * + * @param Core $core + */ + private static function cbopcode107(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x20) == 0); + } + + /** + * Cbopcode #0x6C. + * + * @param Core $core + */ + private static function cbopcode108(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x2000) == 0); + } + + /** + * Cbopcode #0x6D. + * + * @param Core $core + */ + private static function cbopcode109(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0020) == 0); + } + + /** + * Cbopcode #0x6E. + * + * @param Core $core + */ + private static function cbopcode110(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x20) == 0); + } + + /** + * Cbopcode #0x6F. + * + * @param Core $core + */ + private static function cbopcode111(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x20) == 0); + } + + /** + * Cbopcode #0x70. + * + * @param Core $core + */ + private static function cbopcode112(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x40) == 0); + } + + /** + * Cbopcode #0x71. + * + * @param Core $core + */ + private static function cbopcode113(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x40) == 0); + } + + /** + * Cbopcode #0x72. + * + * @param Core $core + */ + private static function cbopcode114(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x40) == 0); + } + + /** + * Cbopcode #0x73. + * + * @param Core $core + */ + private static function cbopcode115(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x40) == 0); + } + + /** + * Cbopcode #0x74. + * + * @param Core $core + */ + private static function cbopcode116(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x4000) == 0); + } + + /** + * Cbopcode #0x75. + * + * @param Core $core + */ + private static function cbopcode117(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0040) == 0); + } + + /** + * Cbopcode #0x76. + * + * @param Core $core + */ + private static function cbopcode118(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x40) == 0); + } + + /** + * Cbopcode #0x77. + * + * @param Core $core + */ + private static function cbopcode119(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x40) == 0); + } + + /** + * Cbopcode #0x78. + * + * @param Core $core + */ + private static function cbopcode120(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerB & 0x80) == 0); + } + + /** + * Cbopcode #0x79. + * + * @param Core $core + */ + private static function cbopcode121(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerC & 0x80) == 0); + } + + /** + * Cbopcode #0x7A. + * + * @param Core $core + */ + private static function cbopcode122(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerD & 0x80) == 0); + } + + /** + * Cbopcode #0x7B. + * + * @param Core $core + */ + private static function cbopcode123(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerE & 0x80) == 0); + } + + /** + * Cbopcode #0x7C. + * + * @param Core $core + */ + private static function cbopcode124(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x8000) == 0); + } + + /** + * Cbopcode #0x7D. + * + * @param Core $core + */ + private static function cbopcode125(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registersHL & 0x0080) == 0); + } + + /** + * Cbopcode #0x7E. + * + * @param Core $core + */ + private static function cbopcode126(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x80) == 0); + } + + /** + * Cbopcode #0x7F. + * + * @param Core $core + */ + private static function cbopcode127(Core $core) + { + $core->FHalfCarry = true; + $core->FSubtract = false; + $core->FZero = (($core->registerA & 0x80) == 0); + } + + /** + * Cbopcode #0x80. + * + * @param Core $core + */ + private static function cbopcode128(Core $core) + { + $core->registerB &= 0xFE; + } + + /** + * Cbopcode #0x81. + * + * @param Core $core + */ + private static function cbopcode129(Core $core) + { + $core->registerC &= 0xFE; + } + + /** + * Cbopcode #0x82. + * + * @param Core $core + */ + private static function cbopcode130(Core $core) + { + $core->registerD &= 0xFE; + } + + /** + * Cbopcode #0x83. + * + * @param Core $core + */ + private static function cbopcode131(Core $core) + { + $core->registerE &= 0xFE; + } + + /** + * Cbopcode #0x84. + * + * @param Core $core + */ + private static function cbopcode132(Core $core) + { + $core->registersHL &= 0xFEFF; + } + + /** + * Cbopcode #0x85. + * + * @param Core $core + */ + private static function cbopcode133(Core $core) + { + $core->registersHL &= 0xFFFE; + } + + /** + * Cbopcode #0x86. + * + * @param Core $core + */ + private static function cbopcode134(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0xFE); + } + + /** + * Cbopcode #0x87. + * + * @param Core $core + */ + private static function cbopcode135(Core $core) + { + $core->registerA &= 0xFE; + } + + /** + * Cbopcode #0x88. + * + * @param Core $core + */ + private static function cbopcode136(Core $core) + { + $core->registerB &= 0xFD; + } + + /** + * Cbopcode #0x89. + * + * @param Core $core + */ + private static function cbopcode137(Core $core) + { + $core->registerC &= 0xFD; + } + + /** + * Cbopcode #0x8A. + * + * @param Core $core + */ + private static function cbopcode138(Core $core) + { + $core->registerD &= 0xFD; + } + + /** + * Cbopcode #0x8B. + * + * @param Core $core + */ + private static function cbopcode139(Core $core) + { + $core->registerE &= 0xFD; + } + + /** + * Cbopcode #0x8C. + * + * @param Core $core + */ + private static function cbopcode140(Core $core) + { + $core->registersHL &= 0xFDFF; + } + + /** + * Cbopcode #0x8D. + * + * @param Core $core + */ + private static function cbopcode141(Core $core) + { + $core->registersHL &= 0xFFFD; + } + + /** + * Cbopcode #0x8E. + * + * @param Core $core + */ + private static function cbopcode142(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0xFD); + } + + /** + * Cbopcode #0x8F. + * + * @param Core $core + */ + private static function cbopcode143(Core $core) + { + $core->registerA &= 0xFD; + } + + /** + * Cbopcode #0x90. + * + * @param Core $core + */ + private static function cbopcode144(Core $core) + { + $core->registerB &= 0xFB; + } + + /** + * Cbopcode #0x91. + * + * @param Core $core + */ + private static function cbopcode145(Core $core) + { + $core->registerC &= 0xFB; + } + + /** + * Cbopcode #0x92. + * + * @param Core $core + */ + private static function cbopcode146(Core $core) + { + $core->registerD &= 0xFB; + } + + /** + * Cbopcode #0x93. + * + * @param Core $core + */ + private static function cbopcode147(Core $core) + { + $core->registerE &= 0xFB; + } + + /** + * Cbopcode #0x94. + * + * @param Core $core + */ + private static function cbopcode148(Core $core) + { + $core->registersHL &= 0xFBFF; + } + + /** + * Cbopcode #0x95. + * + * @param Core $core + */ + private static function cbopcode149(Core $core) + { + $core->registersHL &= 0xFFFB; + } + + /** + * Cbopcode #0x96. + * + * @param Core $core + */ + private static function cbopcode150(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0xFB); + } + + /** + * Cbopcode #0x97. + * + * @param Core $core + */ + private static function cbopcode151(Core $core) + { + $core->registerA &= 0xFB; + } + + /** + * Cbopcode #0x98. + * + * @param Core $core + */ + private static function cbopcode152(Core $core) + { + $core->registerB &= 0xF7; + } + + /** + * Cbopcode #0x99. + * + * @param Core $core + */ + private static function cbopcode153(Core $core) + { + $core->registerC &= 0xF7; + } + + /** + * Cbopcode #0x9A. + * + * @param Core $core + */ + private static function cbopcode154(Core $core) + { + $core->registerD &= 0xF7; + } + + /** + * Cbopcode #0x9B. + * + * @param Core $core + */ + private static function cbopcode155(Core $core) + { + $core->registerE &= 0xF7; + } + + /** + * Cbopcode #0x9C. + * + * @param Core $core + */ + private static function cbopcode156(Core $core) + { + $core->registersHL &= 0xF7FF; + } + + /** + * Cbopcode #0x9D. + * + * @param Core $core + */ + private static function cbopcode157(Core $core) + { + $core->registersHL &= 0xFFF7; + } + + /** + * Cbopcode #0x9E. + * + * @param Core $core + */ + private static function cbopcode158(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0xF7); + } + + /** + * Cbopcode #0x9F. + * + * @param Core $core + */ + private static function cbopcode159(Core $core) + { + $core->registerA &= 0xF7; + } + + /** + * Cbopcode #0xA0. + * + * @param Core $core + */ + private static function cbopcode160(Core $core) + { + $core->registerB &= 0xEF; + } + + /** + * Cbopcode #0xA1. + * + * @param Core $core + */ + private static function cbopcode161(Core $core) + { + $core->registerC &= 0xEF; + } + + /** + * Cbopcode #0xA2. + * + * @param Core $core + */ + private static function cbopcode162(Core $core) + { + $core->registerD &= 0xEF; + } + + /** + * Cbopcode #0xA3. + * + * @param Core $core + */ + private static function cbopcode163(Core $core) + { + $core->registerE &= 0xEF; + } + + /** + * Cbopcode #0xA4. + * + * @param Core $core + */ + private static function cbopcode164(Core $core) + { + $core->registersHL &= 0xEFFF; + } + + /** + * Cbopcode #0xA5. + * + * @param Core $core + */ + private static function cbopcode165(Core $core) + { + $core->registersHL &= 0xFFEF; + } + + /** + * Cbopcode #0xA6. + * + * @param Core $core + */ + private static function cbopcode166(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0xEF); + } + + /** + * Cbopcode #0xA7. + * + * @param Core $core + */ + private static function cbopcode167(Core $core) + { + $core->registerA &= 0xEF; + } + + /** + * Cbopcode #0xA8. + * + * @param Core $core + */ + private static function cbopcode168(Core $core) + { + $core->registerB &= 0xDF; + } + + /** + * Cbopcode #0xA9. + * + * @param Core $core + */ + private static function cbopcode169(Core $core) + { + $core->registerC &= 0xDF; + } + + /** + * Cbopcode #0xAA. + * + * @param Core $core + */ + private static function cbopcode170(Core $core) + { + $core->registerD &= 0xDF; + } + + /** + * Cbopcode #0xAB. + * + * @param Core $core + */ + private static function cbopcode171(Core $core) + { + $core->registerE &= 0xDF; + } + + /** + * Cbopcode #0xAC. + * + * @param Core $core + */ + private static function cbopcode172(Core $core) + { + $core->registersHL &= 0xDFFF; + } + + /** + * Cbopcode #0xAD. + * + * @param Core $core + */ + private static function cbopcode173(Core $core) + { + $core->registersHL &= 0xFFDF; + } + + /** + * Cbopcode #0xAE. + * + * @param Core $core + */ + private static function cbopcode174(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0xDF); + } + + /** + * Cbopcode #0xAF. + * + * @param Core $core + */ + private static function cbopcode175(Core $core) + { + $core->registerA &= 0xDF; + } + + /** + * Cbopcode #0xB0. + * + * @param Core $core + */ + private static function cbopcode176(Core $core) + { + $core->registerB &= 0xBF; + } + + /** + * Cbopcode #0xB1. + * + * @param Core $core + */ + private static function cbopcode177(Core $core) + { + $core->registerC &= 0xBF; + } + + /** + * Cbopcode #0xB2. + * + * @param Core $core + */ + private static function cbopcode178(Core $core) + { + $core->registerD &= 0xBF; + } + + /** + * Cbopcode #0xB3. + * + * @param Core $core + */ + private static function cbopcode179(Core $core) + { + $core->registerE &= 0xBF; + } + + /** + * Cbopcode #0xB4. + * + * @param Core $core + */ + private static function cbopcode180(Core $core) + { + $core->registersHL &= 0xBFFF; + } + + /** + * Cbopcode #0xB5. + * + * @param Core $core + */ + private static function cbopcode181(Core $core) + { + $core->registersHL &= 0xFFBF; + } + + /** + * Cbopcode #0xB6. + * + * @param Core $core + */ + private static function cbopcode182(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0xBF); + } + + /** + * Cbopcode #0xB7. + * + * @param Core $core + */ + private static function cbopcode183(Core $core) + { + $core->registerA &= 0xBF; + } + + /** + * Cbopcode #0xB8. + * + * @param Core $core + */ + private static function cbopcode184(Core $core) + { + $core->registerB &= 0x7F; + } + + /** + * Cbopcode #0xB9. + * + * @param Core $core + */ + private static function cbopcode185(Core $core) + { + $core->registerC &= 0x7F; + } + + /** + * Cbopcode #0xBA. + * + * @param Core $core + */ + private static function cbopcode186(Core $core) + { + $core->registerD &= 0x7F; + } + + /** + * Cbopcode #0xBB. + * + * @param Core $core + */ + private static function cbopcode187(Core $core) + { + $core->registerE &= 0x7F; + } + + /** + * Cbopcode #0xBC. + * + * @param Core $core + */ + private static function cbopcode188(Core $core) + { + $core->registersHL &= 0x7FFF; + } + + /** + * Cbopcode #0xBD. + * + * @param Core $core + */ + private static function cbopcode189(Core $core) + { + $core->registersHL &= 0xFF7F; + } + + /** + * Cbopcode #0xBE. + * + * @param Core $core + */ + private static function cbopcode190(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) & 0x7F); + } + + /** + * Cbopcode #0xBF. + * + * @param Core $core + */ + private static function cbopcode191(Core $core) + { + $core->registerA &= 0x7F; + } + + /** + * Cbopcode #0xC0. + * + * @param Core $core + */ + private static function cbopcode192(Core $core) + { + $core->registerB |= 0x01; + } + + /** + * Cbopcode #0xC1. + * + * @param Core $core + */ + private static function cbopcode193(Core $core) + { + $core->registerC |= 0x01; + } + + /** + * Cbopcode #0xC2. + * + * @param Core $core + */ + private static function cbopcode194(Core $core) + { + $core->registerD |= 0x01; + } + + /** + * Cbopcode #0xC3. + * + * @param Core $core + */ + private static function cbopcode195(Core $core) + { + $core->registerE |= 0x01; + } + + /** + * Cbopcode #0xC4. + * + * @param Core $core + */ + private static function cbopcode196(Core $core) + { + $core->registersHL |= 0x0100; + } + + /** + * Cbopcode #0xC5. + * + * @param Core $core + */ + private static function cbopcode197(Core $core) + { + $core->registersHL |= 0x01; + } + + /** + * Cbopcode #0xC6. + * + * @param Core $core + */ + private static function cbopcode198(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x01); + } + + /** + * Cbopcode #0xC7. + * + * @param Core $core + */ + private static function cbopcode199(Core $core) + { + $core->registerA |= 0x01; + } + + /** + * Cbopcode #0xC8. + * + * @param Core $core + */ + private static function cbopcode200(Core $core) + { + $core->registerB |= 0x02; + } + + /** + * Cbopcode #0xC9. + * + * @param Core $core + */ + private static function cbopcode201(Core $core) + { + $core->registerC |= 0x02; + } + + /** + * Cbopcode #0xCA. + * + * @param Core $core + */ + private static function cbopcode202(Core $core) + { + $core->registerD |= 0x02; + } + + /** + * Cbopcode #0xCB. + * + * @param Core $core + */ + private static function cbopcode203(Core $core) + { + $core->registerE |= 0x02; + } + + /** + * Cbopcode #0xCC. + * + * @param Core $core + */ + private static function cbopcode204(Core $core) + { + $core->registersHL |= 0x0200; + } + + /** + * Cbopcode #0xCD. + * + * @param Core $core + */ + private static function cbopcode205(Core $core) + { + $core->registersHL |= 0x02; + } + + /** + * Cbopcode #0xCE. + * + * @param Core $core + */ + private static function cbopcode206(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x02); + } + + /** + * Cbopcode #0xCF. + * + * @param Core $core + */ + private static function cbopcode207(Core $core) + { + $core->registerA |= 0x02; + } + + /** + * Cbopcode #0xD0. + * + * @param Core $core + */ + private static function cbopcode208(Core $core) + { + $core->registerB |= 0x04; + } + + /** + * Cbopcode #0xD1. + * + * @param Core $core + */ + private static function cbopcode209(Core $core) + { + $core->registerC |= 0x04; + } + + /** + * Cbopcode #0xD2. + * + * @param Core $core + */ + private static function cbopcode210(Core $core) + { + $core->registerD |= 0x04; + } + + /** + * Cbopcode #0xD3. + * + * @param Core $core + */ + private static function cbopcode211(Core $core) + { + $core->registerE |= 0x04; + } + + /** + * Cbopcode #0xD4. + * + * @param Core $core + */ + private static function cbopcode212(Core $core) + { + $core->registersHL |= 0x0400; + } + + /** + * Cbopcode #0xD5. + * + * @param Core $core + */ + private static function cbopcode213(Core $core) + { + $core->registersHL |= 0x04; + } + + /** + * Cbopcode #0xD6. + * + * @param Core $core + */ + private static function cbopcode214(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x04); + } + + /** + * Cbopcode #0xD7. + * + * @param Core $core + */ + private static function cbopcode215(Core $core) + { + $core->registerA |= 0x04; + } + + /** + * Cbopcode #0xD8. + * + * @param Core $core + */ + private static function cbopcode216(Core $core) + { + $core->registerB |= 0x08; + } + + /** + * Cbopcode #0xD9. + * + * @param Core $core + */ + private static function cbopcode217(Core $core) + { + $core->registerC |= 0x08; + } + + /** + * Cbopcode #0xDA. + * + * @param Core $core + */ + private static function cbopcode218(Core $core) + { + $core->registerD |= 0x08; + } + + /** + * Cbopcode #0xDB. + * + * @param Core $core + */ + private static function cbopcode219(Core $core) + { + $core->registerE |= 0x08; + } + + /** + * Cbopcode #0xDC. + * + * @param Core $core + */ + private static function cbopcode220(Core $core) + { + $core->registersHL |= 0x0800; + } + + /** + * Cbopcode #0xDD. + * + * @param Core $core + */ + private static function cbopcode221(Core $core) + { + $core->registersHL |= 0x08; + } + + /** + * Cbopcode #0xDE. + * + * @param Core $core + */ + private static function cbopcode222(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x08); + } + + /** + * Cbopcode #0xDF. + * + * @param Core $core + */ + private static function cbopcode223(Core $core) + { + $core->registerA |= 0x08; + } + + /** + * Cbopcode #0xE0. + * + * @param Core $core + */ + private static function cbopcode224(Core $core) + { + $core->registerB |= 0x10; + } + + /** + * Cbopcode #0xE1. + * + * @param Core $core + */ + private static function cbopcode225(Core $core) + { + $core->registerC |= 0x10; + } + + /** + * Cbopcode #0xE2. + * + * @param Core $core + */ + private static function cbopcode226(Core $core) + { + $core->registerD |= 0x10; + } + + /** + * Cbopcode #0xE3. + * + * @param Core $core + */ + private static function cbopcode227(Core $core) + { + $core->registerE |= 0x10; + } + + /** + * Cbopcode #0xE4. + * + * @param Core $core + */ + private static function cbopcode228(Core $core) + { + $core->registersHL |= 0x1000; + } + + /** + * Cbopcode #0xE5. + * + * @param Core $core + */ + private static function cbopcode229(Core $core) + { + $core->registersHL |= 0x10; + } + + /** + * Cbopcode #0xE6. + * + * @param Core $core + */ + private static function cbopcode230(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x10); + } + + /** + * Cbopcode #0xE7. + * + * @param Core $core + */ + private static function cbopcode231(Core $core) + { + $core->registerA |= 0x10; + } + + /** + * Cbopcode #0xE8. + * + * @param Core $core + */ + private static function cbopcode232(Core $core) + { + $core->registerB |= 0x20; + } + + /** + * Cbopcode #0xE9. + * + * @param Core $core + */ + private static function cbopcode233(Core $core) + { + $core->registerC |= 0x20; + } + + /** + * Cbopcode #0xEA. + * + * @param Core $core + */ + private static function cbopcode234(Core $core) + { + $core->registerD |= 0x20; + } + + /** + * Cbopcode #0xEB. + * + * @param Core $core + */ + private static function cbopcode235(Core $core) + { + $core->registerE |= 0x20; + } + + /** + * Cbopcode #0xEC. + * + * @param Core $core + */ + private static function cbopcode236(Core $core) + { + $core->registersHL |= 0x2000; + } + + /** + * Cbopcode #0xED. + * + * @param Core $core + */ + private static function cbopcode237(Core $core) + { + $core->registersHL |= 0x20; + } + + /** + * Cbopcode #0xEE. + * + * @param Core $core + */ + private static function cbopcode238(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x20); + } + + /** + * Cbopcode #0xEF. + * + * @param Core $core + */ + private static function cbopcode239(Core $core) + { + $core->registerA |= 0x20; + } + + /** + * Cbopcode #0xF0. + * + * @param Core $core + */ + private static function cbopcode240(Core $core) + { + $core->registerB |= 0x40; + } + + /** + * Cbopcode #0xF1. + * + * @param Core $core + */ + private static function cbopcode241(Core $core) + { + $core->registerC |= 0x40; + } + + /** + * Cbopcode #0xF2. + * + * @param Core $core + */ + private static function cbopcode242(Core $core) + { + $core->registerD |= 0x40; + } + + /** + * Cbopcode #0xF3. + * + * @param Core $core + */ + private static function cbopcode243(Core $core) + { + $core->registerE |= 0x40; + } + + /** + * Cbopcode #0xF4. + * + * @param Core $core + */ + private static function cbopcode244(Core $core) + { + $core->registersHL |= 0x4000; + } + + /** + * Cbopcode #0xF5. + * + * @param Core $core + */ + private static function cbopcode245(Core $core) + { + $core->registersHL |= 0x40; + } + + /** + * Cbopcode #0xF6. + * + * @param Core $core + */ + private static function cbopcode246(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x40); + } + + /** + * Cbopcode #0xF7. + * + * @param Core $core + */ + private static function cbopcode247(Core $core) + { + $core->registerA |= 0x40; + } + + /** + * Cbopcode #0xF8. + * + * @param Core $core + */ + private static function cbopcode248(Core $core) + { + $core->registerB |= 0x80; + } + + /** + * Cbopcode #0xF9. + * + * @param Core $core + */ + private static function cbopcode249(Core $core) + { + $core->registerC |= 0x80; + } + + /** + * Cbopcode #0xFA. + * + * @param Core $core + */ + private static function cbopcode250(Core $core) + { + $core->registerD |= 0x80; + } + + /** + * Cbopcode #0xFB. + * + * @param Core $core + */ + private static function cbopcode251(Core $core) + { + $core->registerE |= 0x80; + } + + /** + * Cbopcode #0xFC. + * + * @param Core $core + */ + private static function cbopcode252(Core $core) + { + $core->registersHL |= 0x8000; + } + + /** + * Cbopcode #0xFD. + * + * @param Core $core + */ + private static function cbopcode253(Core $core) + { + $core->registersHL |= 0x80; + } + + /** + * Cbopcode #0xFE. + * + * @param Core $core + */ + private static function cbopcode254(Core $core) + { + $core->memoryWrite($core->registersHL, $core->memoryReader[$core->registersHL]($core, $core->registersHL) | 0x80); + } + + /** + * Cbopcode #0xFF. + * + * @param Core $core + */ + private static function cbopcode255(Core $core) + { + $core->registerA |= 0x80; } } |