// Path: core/src/main/java/net/panuska/tlappy/awt/BufferedImage.java
// public class BufferedImage {
//     private Bitmap b;
//     private Graphics g;
//     public static final int TYPE_INT_RGB = Bitmap.Config.ARGB_8888.ordinal();
// 
//     public BufferedImage(BitmapDrawable d) {
//         Bitmap immb = d.getBitmap();
//         b = immb.copy(Bitmap.Config.ARGB_8888, false);
//     }
// 
//     public BufferedImage(int width,
//                          int height,
//                          int imageType) {
//         b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//         g = new Graphics(b);
//     }
// 
//     private BufferedImage(Bitmap b) {
//         this.b = b;
//     }
// 
//     public Graphics getGraphics() {
//         return g;
//     }
// 
//     public Bitmap getBitmap() {
//         return b;
//     }
// 
//     public BufferedImage getSubimage (int x, int y, int w, int h) {
//         Bitmap b = Bitmap.createBitmap(this.b, x, y, w, h);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image rotated by 90 degrees.
//      * @return
//      */
//     public BufferedImage getRotatedImage() {
//         Matrix matrix = new Matrix();
//         matrix.postRotate(90);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image mirrored by vertical axis
//      * @return
//      */
//     public BufferedImage getMirroredImage() {
//         Matrix matrix = new Matrix();
//         matrix.preScale(-1, 1);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns 16x16 subimage starting at x, y
//      * @param x
//      * @param y
//      * @return
//      */
//     public BufferedImage getSubimage (int x, int y) {
//         return getSubimage(x, y, 16, 16);
//     }
// 
//     public int getWidth() {
//         return b.getWidth();
//     }
// 
//     public int getHeight() {
//         return b.getHeight();
//     }
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/Constants.java
// public class Constants {
// 
//     static final int SCREEN_WIDTH = 320;
//     static final int SCREEN_HEIGHT = 200;
//     static final int NUM_SCENES = 200;
//     static final int LIVES = 5;
//     public static final int SPRITE_SIZE = 16;
//     public static final int SPRITE_HALF = 8;
//     public static final int FONT_WIDTH = SPRITE_HALF;
// 
//     static final int UP = 1;
//     static final int DOWN = 2;
//     static final int LEFT = 3;
//     static final int RIGHT = 4;
//     static final int FIRE = 5;
//     static final int ESC = 255;
//     
//     static final int INTRO = -1;
//     static final int GAME = -2;
//     static final int SETUP = -3;
// 
//     static final byte SPACE = 0;
//     static final byte MUSHROOM = 0x10;
//     static final byte CHICKEN = 0x20;
//     static final byte BLUE_ENEMY = 0x30;
//     static final byte RED_ENEMY = 0x40;
//     static final byte RED_BALL = 0x50;
//     static final byte BLUE_BALL = 0x60;
//     static final byte WALL = 0x70;
//     static final byte BLUE_WALL = 0x71; // ORIGINAL: (byte) 0x80;
//     
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/Device.java
// public class Device {
//     private static final String TAG = Device.class.getSimpleName();
//     public static Keyboard keyboard;
//     public static VRAM vram;
//     public static Music music;
// 
//     public static int displayWidth;
//     public static int displayHeight;
// 
//     public static boolean initialized = false;
//     public static void init (SurfaceView view) {
//         if (initialized) {
//             Log.d(TAG, "Device already initialized");
//             return;
//         }
//         Log.d(TAG, "Init");
//         Images.load(view.getResources());
//         keyboard = Keyboard.getInstance();
//         vram = VRAM.getInstance();
//         vram.createWindow(view);
//         music = Music.getInstance(view.getContext());
//         WindowManager wm = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
//         Display display = wm.getDefaultDisplay();
//         displayWidth = display.getWidth();
//         displayHeight = display.getHeight();
//         if (displayHeight > displayWidth) {
//             Log.d(TAG, "Swapping display width and height "+displayWidth+", "+displayHeight);
//             displayWidth = displayWidth + displayHeight;
//             displayHeight = displayWidth - displayHeight;
//             displayWidth = displayWidth - displayHeight;
//         }
//         initialized = true;
//     }
// 
//     public static void destroy() {
//         music.destroy();
//         initialized = false;
//     }
// }


import net.panuska.tlappy.awt.BufferedImage;
import static net.panuska.tlappy.Constants.*;
import static net.panuska.tlappy.Device.*;
                    drawMe3x2(x, y, Images.redEnemyRightS2);
                    didMove = true;
                }
        }
    }

    // TODO: refactor this
    private boolean testMove(int m1, int m2) {
        boolean chick = false;
        boolean wall = false;
        if ((m1 & 0xF0) == CHICKEN || ((m2 & 0xF0) == CHICKEN)) chick = true;
        if ((m1 & 0xF0) > CHICKEN || ((m2 & 0xF0) > CHICKEN)) wall = true;
        if (wall) {
            return false;
        }
        if (!chick) {
            return true;
        }
        if (chicken.chickenEaten == 0) {
            chicken.setChickenEaten();
            return false;
        }
        return false;
    }

    private void setRandomMove() {
        int rnd = (int) (Math.random() * 1000);
        selectedMove = (rnd & 3) + 1;
    }

// Path: core/src/main/java/net/panuska/tlappy/awt/BufferedImage.java
// public class BufferedImage {
//     private Bitmap b;
//     private Graphics g;
//     public static final int TYPE_INT_RGB = Bitmap.Config.ARGB_8888.ordinal();
// 
//     public BufferedImage(BitmapDrawable d) {
//         Bitmap immb = d.getBitmap();
//         b = immb.copy(Bitmap.Config.ARGB_8888, false);
//     }
// 
//     public BufferedImage(int width,
//                          int height,
//                          int imageType) {
//         b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//         g = new Graphics(b);
//     }
// 
//     private BufferedImage(Bitmap b) {
//         this.b = b;
//     }
// 
//     public Graphics getGraphics() {
//         return g;
//     }
// 
//     public Bitmap getBitmap() {
//         return b;
//     }
// 
//     public BufferedImage getSubimage (int x, int y, int w, int h) {
//         Bitmap b = Bitmap.createBitmap(this.b, x, y, w, h);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image rotated by 90 degrees.
//      * @return
//      */
//     public BufferedImage getRotatedImage() {
//         Matrix matrix = new Matrix();
//         matrix.postRotate(90);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image mirrored by vertical axis
//      * @return
//      */
//     public BufferedImage getMirroredImage() {
//         Matrix matrix = new Matrix();
//         matrix.preScale(-1, 1);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns 16x16 subimage starting at x, y
//      * @param x
//      * @param y
//      * @return
//      */
//     public BufferedImage getSubimage (int x, int y) {
//         return getSubimage(x, y, 16, 16);
//     }
// 
//     public int getWidth() {
//         return b.getWidth();
//     }
// 
//     public int getHeight() {
//         return b.getHeight();
//     }
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/Constants.java
// public class Constants {
// 
//     static final int SCREEN_WIDTH = 320;
//     static final int SCREEN_HEIGHT = 200;
//     static final int NUM_SCENES = 200;
//     static final int LIVES = 5;
//     public static final int SPRITE_SIZE = 16;
//     public static final int SPRITE_HALF = 8;
//     public static final int FONT_WIDTH = SPRITE_HALF;
// 
//     static final int UP = 1;
//     static final int DOWN = 2;
//     static final int LEFT = 3;
//     static final int RIGHT = 4;
//     static final int FIRE = 5;
//     static final int ESC = 255;
//     
//     static final int INTRO = -1;
//     static final int GAME = -2;
//     static final int SETUP = -3;
// 
//     static final byte SPACE = 0;
//     static final byte MUSHROOM = 0x10;
//     static final byte CHICKEN = 0x20;
//     static final byte BLUE_ENEMY = 0x30;
//     static final byte RED_ENEMY = 0x40;
//     static final byte RED_BALL = 0x50;
//     static final byte BLUE_BALL = 0x60;
//     static final byte WALL = 0x70;
//     static final byte BLUE_WALL = 0x71; // ORIGINAL: (byte) 0x80;
//     
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/Device.java
// public class Device {
//     private static final String TAG = Device.class.getSimpleName();
//     public static Keyboard keyboard;
//     public static VRAM vram;
//     public static Music music;
// 
//     public static int displayWidth;
//     public static int displayHeight;
// 
//     public static boolean initialized = false;
//     public static void init (SurfaceView view) {
//         if (initialized) {
//             Log.d(TAG, "Device already initialized");
//             return;
//         }
//         Log.d(TAG, "Init");
//         Images.load(view.getResources());
//         keyboard = Keyboard.getInstance();
//         vram = VRAM.getInstance();
//         vram.createWindow(view);
//         music = Music.getInstance(view.getContext());
//         WindowManager wm = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
//         Display display = wm.getDefaultDisplay();
//         displayWidth = display.getWidth();
//         displayHeight = display.getHeight();
//         if (displayHeight > displayWidth) {
//             Log.d(TAG, "Swapping display width and height "+displayWidth+", "+displayHeight);
//             displayWidth = displayWidth + displayHeight;
//             displayHeight = displayWidth - displayHeight;
//             displayWidth = displayWidth - displayHeight;
//         }
//         initialized = true;
//     }
// 
//     public static void destroy() {
//         music.destroy();
//         initialized = false;
//     }
// }


// Path: core/src/main/java/net/panuska/tlappy/RedEnemy.java
import net.panuska.tlappy.awt.BufferedImage;
import static net.panuska.tlappy.Constants.*;
import static net.panuska.tlappy.Device.*;

                    drawMe3x2(x, y, Images.redEnemyRightS2);
                    didMove = true;
                }
        }
    }

    // TODO: refactor this
    private boolean testMove(int m1, int m2) {
        boolean chick = false;
        boolean wall = false;
        if ((m1 & 0xF0) == CHICKEN || ((m2 & 0xF0) == CHICKEN)) chick = true;
        if ((m1 & 0xF0) > CHICKEN || ((m2 & 0xF0) > CHICKEN)) wall = true;
        if (wall) {
            return false;
        }
        if (!chick) {
            return true;
        }
        if (chicken.chickenEaten == 0) {
            chicken.setChickenEaten();
            return false;
        }
        return false;
    }

    private void setRandomMove() {
        int rnd = (int) (Math.random() * 1000);
        selectedMove = (rnd & 3) + 1;
    }

    private void drawMe2x3(int x, int y, BufferedImage img) {