public void plot(int x, int y, int val, boolean isMonochrome, boolean intensifyRed, boolean intensifyGreen, boolean intensifyBlue) {
        if (isMonochrome) {
            pix[y * SCREEN_WIDTH + x] = PPUConstants.NES_PALETTE[(val & 0x30)].getRGB();
        } else if (intensifyRed || intensifyGreen || intensifyBlue) {

            // http://wiki.nesdev.com/w/index.php/NTSC_video
            // relative = relative * 0.746
            // normalized = normalized * 0.746 - 0.0912

            float scaleRed = 0.7f;
            float scaleGreen = 0.7f;
            float scaleBlue = 0.7f;
            if (intensifyRed) {
                scaleRed = 1.3f;
            } else if (intensifyGreen) {
                scaleGreen = 1.3f;
            } else if (intensifyBlue) {
                scaleBlue = 1.3f;
            }
            pix[y * SCREEN_WIDTH + x] = intensifyColor(PPUConstants.NES_PALETTE[val], scaleRed, scaleGreen, scaleBlue);

        } else {
            pix[y * SCREEN_WIDTH + x] = PPUConstants.NES_PALETTE[val].getRGB();
        }
    }