├── CMakeLists.txt ├── README.linux ├── README.md ├── roach000.xbm ├── roach015.xbm ├── roach030.xbm ├── roach045.xbm ├── roach060.xbm ├── roach075.xbm ├── roach090.xbm ├── roach105.xbm ├── roach120.xbm ├── roach135.xbm ├── roach150.xbm ├── roach165.xbm ├── roach180.xbm ├── roach195.xbm ├── roach210.xbm ├── roach225.xbm ├── roach240.xbm ├── roach255.xbm ├── roach270.xbm ├── roach285.xbm ├── roach300.xbm ├── roach315.xbm ├── roach330.xbm ├── roach345.xbm ├── roachmap.h ├── squish.xbm ├── xroach.c └── xroach.man /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(xroach) 3 | 4 | set(CMAKE_C_STANDARD 99) 5 | set(SOURCE_FILES xroach.c) 6 | 7 | add_executable(xroach ${SOURCE_FILES}) 8 | 9 | find_package(X11 REQUIRED) 10 | 11 | include_directories(${X11_INCLUDE_DIR}) 12 | target_link_libraries(xroach m ${X11_LIBRARIES}) 13 | -------------------------------------------------------------------------------- /README.linux: -------------------------------------------------------------------------------- 1 | compiles with one warning in line 373. No changes were made to the code. 2 | (That is what I call a 'port'). 3 | 4 | building: 5 | 6 | gcc -s -o xroach xroach.a -lX11 7 | 8 | Rob Hooft (hooft@hutruu54.bitnet, hooft@chem.ruu.nl) 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # xroach 2 | The classic `xroach` game for X11: displays disgusting cockroaches on your root 3 | window. These creepy crawlies scamper around until they find a window to 4 | hide under. Whenever you move or iconify a window, the exposed beetles again 5 | scamper for cover. 6 | 7 | Cleaned up for modern C compilers. Please be aware that this version still has 8 | some bugs and glitches. 9 | 10 | ## Build 11 | ``` 12 | $ mkdir build 13 | $ cd build/ 14 | $ cmake .. 15 | $ make 16 | ``` 17 | In case you do not have an C++ compiler installed, instead run: 18 | ``` 19 | $ CXX=gcc cmake .. 20 | ``` 21 | To compile without CMake: 22 | ``` 23 | $ cc -I/usr/local/include/ -L/usr/local/lib/ -o xroach xroach.c -lm -lX11 24 | ``` 25 | 26 | ## Run 27 | ``` 28 | $ ./xroach -speed 2 -squish -rc brown -rgc yellowgreen 29 | ``` 30 | 31 | ## Copyright 32 | Original copyright 1991 by J. T. Anderson. Squish option contributed by 33 | Rick Petkiewizc. Virtual root code adapted from patch sent by Colin 34 | Rafferty who borrowed it from Tom LaStrange. Several other folks sent 35 | similar fixes. Some glitches removed by patch from Guus Sliepen. 36 | -------------------------------------------------------------------------------- /roach000.xbm: -------------------------------------------------------------------------------- 1 | #define roach000_width 48 2 | #define roach000_height 48 3 | 4 | static char roach000_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 10 | 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x06, 0x80, 11 | 0x00, 0x00, 0x03, 0x00, 0x03, 0x60, 0x00, 0x00, 0x7e, 0x80, 0xc1, 0x3f, 12 | 0x00, 0x00, 0xc0, 0x83, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0xc6, 0x30, 0x00, 13 | 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xef, 0x01, 14 | 0x00, 0x00, 0xfe, 0xff, 0xe7, 0x11, 0x10, 0xc0, 0xff, 0xff, 0xf7, 0x03, 15 | 0x02, 0xf0, 0xff, 0xff, 0xf3, 0x3f, 0x00, 0xf0, 0xff, 0xff, 0xf3, 0x3b, 16 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xf3, 0x3f, 17 | 0x00, 0xe0, 0xff, 0xff, 0xf3, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xf3, 0x07, 18 | 0x01, 0xe0, 0xff, 0xff, 0xf7, 0x13, 0x08, 0xc0, 0xff, 0xff, 0xf7, 0x03, 19 | 0x00, 0x00, 0xfe, 0xff, 0xe7, 0x01, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 20 | 0x00, 0x00, 0x00, 0x88, 0x18, 0x00, 0x00, 0x00, 0xf8, 0xc7, 0xf0, 0x03, 21 | 0x00, 0x00, 0xfe, 0x81, 0xc1, 0x3f, 0x00, 0x00, 0x06, 0x00, 0x01, 0x30, 22 | 0x00, 0x00, 0x03, 0x00, 0x02, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach015.xbm: -------------------------------------------------------------------------------- 1 | #define roach015_width 48 2 | #define roach015_height 48 3 | 4 | static char roach015_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0c, 10 | 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x07, 11 | 0x00, 0x00, 0x00, 0x40, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x60, 0x3c, 0x00, 12 | 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x10, 0x00, 0x10, 0x06, 0x00, 13 | 0x00, 0x60, 0xfc, 0x30, 0x72, 0x04, 0x00, 0xc0, 0x9f, 0xe3, 0xf3, 0x1e, 14 | 0x00, 0x00, 0x00, 0xfe, 0xfb, 0x1d, 0x00, 0x00, 0xc0, 0xff, 0xfb, 0x3d, 15 | 0x00, 0x00, 0xf8, 0xff, 0xf9, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xfb, 0x3f, 16 | 0x3c, 0x00, 0xff, 0xff, 0xfb, 0x07, 0x00, 0xc0, 0xff, 0x1f, 0xf8, 0x17, 17 | 0x00, 0xe0, 0xff, 0xe1, 0xf7, 0x07, 0x00, 0xf0, 0x1f, 0xfe, 0xf7, 0x03, 18 | 0x00, 0xf0, 0xe1, 0xff, 0xe7, 0x03, 0x00, 0x00, 0xfe, 0xff, 0xcf, 0x01, 19 | 0x00, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xfc, 20 | 0x00, 0xc0, 0xff, 0x3f, 0xc3, 0x1f, 0x01, 0xc0, 0xff, 0x23, 0x03, 0x00, 21 | 0x00, 0x00, 0x00, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x00, 22 | 0x00, 0x00, 0x80, 0x07, 0x20, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x40, 0x00, 23 | 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 24 | 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach030.xbm: -------------------------------------------------------------------------------- 1 | #define roach030_width 48 2 | #define roach030_height 48 3 | 4 | static char roach030_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 10 | 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x00, 0x00, 0x10, 0x1e, 0x00, 11 | 0x00, 0x00, 0x00, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x98, 0x01, 0x09, 12 | 0x00, 0x00, 0x00, 0x8c, 0x01, 0x04, 0x00, 0x00, 0x00, 0x8c, 0xb8, 0x07, 13 | 0x00, 0x00, 0x00, 0x84, 0x7c, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x8e, 14 | 0x00, 0x00, 0x00, 0xf8, 0xfc, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xfc, 0x05, 15 | 0x00, 0x04, 0x1e, 0xff, 0xfd, 0x17, 0x00, 0xf8, 0x87, 0xff, 0xf9, 0x03, 16 | 0x00, 0xe0, 0xc0, 0xff, 0xf9, 0x07, 0x00, 0x00, 0xf0, 0x7f, 0xf0, 0x07, 17 | 0x00, 0x00, 0xf8, 0x1f, 0xe7, 0x03, 0x00, 0x00, 0xfe, 0xcf, 0xcf, 0xc1, 18 | 0x03, 0x00, 0xff, 0xf3, 0x1f, 0xe0, 0x00, 0x80, 0xff, 0xfc, 0xff, 0x3f, 19 | 0x00, 0x80, 0x3f, 0xfe, 0xbf, 0x07, 0x00, 0xc0, 0x9f, 0xff, 0x07, 0x00, 20 | 0x00, 0xc0, 0xe7, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xf9, 0xff, 0x3c, 0x00, 21 | 0x00, 0x00, 0xfe, 0xff, 0xf8, 0x01, 0x00, 0x00, 0xff, 0x8f, 0x00, 0x02, 22 | 0x00, 0x00, 0xff, 0x61, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x30, 0x00, 0x00, 23 | 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach045.xbm: -------------------------------------------------------------------------------- 1 | #define roach045_width 48 2 | #define roach045_height 48 3 | 4 | static char roach045_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 10 | 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x01, 11 | 0x00, 0x00, 0x00, 0xc0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x62, 0xc0, 0x43, 12 | 0x00, 0x00, 0x00, 0x62, 0xfe, 0x13, 0x00, 0x00, 0x00, 0x23, 0xff, 0x07, 13 | 0x00, 0x00, 0x00, 0x23, 0xff, 0x07, 0x00, 0x00, 0x00, 0x63, 0xff, 0x0b, 14 | 0x00, 0x00, 0x00, 0x73, 0xff, 0x01, 0x00, 0x00, 0x00, 0x7e, 0xfe, 0x01, 15 | 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x03, 0x00, 0x00, 0x40, 0xfe, 0xf9, 0x03, 16 | 0x07, 0x00, 0xf0, 0xff, 0xf1, 0xc3, 0x00, 0x00, 0x18, 0xff, 0xc0, 0xe3, 17 | 0x00, 0x00, 0x8e, 0x7f, 0x1e, 0x70, 0x00, 0x00, 0xc7, 0x3f, 0xff, 0x1f, 18 | 0x00, 0xfc, 0xe3, 0x9f, 0x7f, 0x07, 0x00, 0xe0, 0xe1, 0xcf, 0x3f, 0x00, 19 | 0x00, 0x00, 0xf0, 0xe7, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x1f, 0x00, 20 | 0x00, 0x00, 0xfc, 0xfc, 0xe7, 0x0f, 0x00, 0x00, 0x7e, 0xfe, 0x03, 0x00, 21 | 0x00, 0x00, 0x3e, 0xff, 0x03, 0x00, 0x00, 0x00, 0x9f, 0xff, 0x02, 0x00, 22 | 0x00, 0x00, 0xcf, 0x7f, 0x03, 0x00, 0x00, 0x00, 0xe7, 0x1f, 0x03, 0x00, 23 | 0x00, 0x00, 0xf2, 0x8f, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x83, 0x01, 0x00, 24 | 0x00, 0x00, 0xf8, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach060.xbm: -------------------------------------------------------------------------------- 1 | #define roach060_width 48 2 | #define roach060_height 48 3 | 4 | static char roach060_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 10 | 0x00, 0x00, 0x00, 0x60, 0x00, 0x08, 0x00, 0x00, 0x00, 0x30, 0x74, 0x04, 11 | 0x00, 0x00, 0x00, 0x30, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0x01, 12 | 0x00, 0x00, 0x00, 0x88, 0xff, 0x00, 0x00, 0x00, 0x40, 0xc8, 0xff, 0x02, 13 | 0x00, 0x00, 0xc0, 0xd8, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0xd8, 0xff, 0x80, 14 | 0x01, 0x00, 0x80, 0x90, 0xff, 0xe1, 0x00, 0x00, 0x80, 0x18, 0xff, 0x61, 15 | 0x00, 0x00, 0x80, 0x3f, 0xfe, 0x33, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x19, 16 | 0x00, 0x00, 0x00, 0xfe, 0xf1, 0x18, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x0f, 17 | 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0xe0, 0x7f, 0x7f, 0x00, 18 | 0x00, 0x00, 0x90, 0xbf, 0x7f, 0x00, 0x00, 0x00, 0x98, 0xbf, 0x3f, 0x38, 19 | 0x00, 0x00, 0xd8, 0xdf, 0x7f, 0x0f, 0x00, 0x00, 0xcc, 0xef, 0xdf, 0x01, 20 | 0x00, 0x00, 0xe6, 0xef, 0x0f, 0x00, 0x00, 0xc0, 0xe3, 0xf7, 0x0f, 0x00, 21 | 0x00, 0x00, 0xe0, 0xf7, 0x1f, 0x00, 0x00, 0x00, 0xf0, 0xfb, 0x1f, 0x00, 22 | 0x00, 0x00, 0xf0, 0xf9, 0x1b, 0x00, 0x00, 0x00, 0xf0, 0xfd, 0x19, 0x00, 23 | 0x00, 0x00, 0xf8, 0xfe, 0x08, 0x00, 0x00, 0x00, 0x78, 0x7e, 0x0c, 0x00, 24 | 0x00, 0x00, 0x70, 0x3f, 0x04, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x06, 0x00, 25 | 0x00, 0x00, 0x80, 0x1f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach075.xbm: -------------------------------------------------------------------------------- 1 | #define roach075_width 48 2 | #define roach075_height 48 3 | 4 | static char roach075_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 9 | 0x00, 0x00, 0x00, 0x06, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 10 | 0x00, 0x00, 0x00, 0x84, 0x06, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3e, 0x00, 11 | 0x00, 0x00, 0x00, 0x06, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1e, 0x60, 12 | 0x00, 0x00, 0x00, 0xc6, 0x3f, 0x20, 0x00, 0x00, 0x00, 0xe6, 0x3f, 0x18, 13 | 0x00, 0x00, 0x00, 0xf2, 0x7f, 0x18, 0x00, 0x00, 0x08, 0xf2, 0x7f, 0x18, 14 | 0x00, 0x00, 0x30, 0xf6, 0xff, 0x0c, 0x00, 0x00, 0x20, 0xe4, 0xff, 0x0c, 15 | 0x00, 0x00, 0x60, 0x98, 0xff, 0x0c, 0x00, 0x00, 0x40, 0x38, 0x38, 0x06, 16 | 0x00, 0x00, 0xc0, 0xff, 0xe0, 0x01, 0x00, 0x00, 0x80, 0xff, 0xfe, 0x00, 17 | 0x00, 0x00, 0x00, 0x7e, 0xfe, 0x78, 0x00, 0x00, 0x00, 0x7e, 0x7f, 0x1c, 18 | 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x0e, 0x00, 0x00, 0xc0, 0x7f, 0xff, 0x03, 19 | 0x00, 0x00, 0xc0, 0x3e, 0x7f, 0x00, 0x00, 0x00, 0x20, 0xbf, 0x3f, 0x00, 20 | 0x00, 0x00, 0x20, 0xbf, 0x3f, 0x00, 0x00, 0x00, 0x20, 0xbf, 0x7f, 0x00, 21 | 0x00, 0x00, 0x10, 0x9f, 0x5f, 0x00, 0x00, 0x00, 0x10, 0xdf, 0x5f, 0x00, 22 | 0x00, 0x00, 0x18, 0xdf, 0x4f, 0x00, 0x00, 0x00, 0x0c, 0xdf, 0x4f, 0x00, 23 | 0x00, 0x00, 0x86, 0xcf, 0x47, 0x00, 0x00, 0x00, 0x80, 0xef, 0x47, 0x00, 24 | 0x00, 0x00, 0x80, 0xef, 0x63, 0x00, 0x00, 0x00, 0x00, 0xef, 0x63, 0x00, 25 | 0x00, 0x00, 0x00, 0xe7, 0x41, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x81, 0x00, 26 | 0x00, 0x00, 0x00, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach090.xbm: -------------------------------------------------------------------------------- 1 | #define roach090_width 48 2 | #define roach090_height 48 3 | 4 | static char roach090_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 10 | 0x00, 0x00, 0xc0, 0xc0, 0x03, 0x0c, 0x00, 0x00, 0xc0, 0xd0, 0x07, 0x0c, 11 | 0x00, 0x00, 0xc0, 0xc0, 0x07, 0x04, 0x00, 0x00, 0xc0, 0x60, 0x07, 0x06, 12 | 0x00, 0x00, 0xc0, 0x80, 0x03, 0x06, 0x00, 0x00, 0xc0, 0xf0, 0x3f, 0x06, 13 | 0x00, 0x00, 0x80, 0xf8, 0x7f, 0x06, 0x00, 0x00, 0x80, 0xf9, 0x7f, 0x06, 14 | 0x00, 0x00, 0x80, 0xf9, 0x7f, 0x02, 0x00, 0x00, 0x00, 0xfb, 0x7f, 0x03, 15 | 0x00, 0x00, 0x00, 0xf3, 0x9f, 0x61, 0x00, 0x00, 0x18, 0x1c, 0x70, 0x30, 16 | 0x00, 0x00, 0x30, 0xfc, 0x7e, 0x18, 0x00, 0x00, 0x60, 0xfc, 0x7e, 0x0c, 17 | 0x00, 0x00, 0xc0, 0xfc, 0x7e, 0x06, 0x00, 0x00, 0xc0, 0xff, 0xfe, 0x03, 18 | 0x00, 0x00, 0x00, 0xfc, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7e, 0x00, 19 | 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x01, 20 | 0x00, 0x00, 0x00, 0xff, 0x7e, 0x01, 0x00, 0x00, 0x80, 0xfc, 0x7e, 0x03, 21 | 0x00, 0x00, 0x80, 0xfc, 0x7e, 0x02, 0x00, 0x00, 0x80, 0xfc, 0x7e, 0x02, 22 | 0x00, 0x00, 0x80, 0xf8, 0x3e, 0x06, 0x00, 0x00, 0xc0, 0xf8, 0x3e, 0x06, 23 | 0x00, 0x00, 0xc0, 0xf8, 0x3e, 0x06, 0x00, 0x00, 0xc0, 0xf8, 0x3e, 0x04, 24 | 0x00, 0x00, 0xc0, 0xf8, 0x3e, 0x0c, 0x00, 0x00, 0x60, 0xf8, 0x3e, 0x08, 25 | 0x00, 0x00, 0x20, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1e, 0x00, 26 | 0x00, 0x00, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach105.xbm: -------------------------------------------------------------------------------- 1 | #define roach105_width 48 2 | #define roach105_height 48 3 | 4 | static char roach105_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 9 | 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 10 | 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x00, 11 | 0x00, 0x00, 0x06, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x1c, 0xfa, 0xc1, 0x00, 12 | 0x00, 0x00, 0x18, 0x88, 0x83, 0x00, 0x00, 0x00, 0x10, 0xe0, 0x9f, 0x00, 13 | 0x00, 0x00, 0x30, 0xf8, 0x9f, 0x00, 0x00, 0x00, 0x20, 0xfc, 0x9f, 0x10, 14 | 0x00, 0x00, 0x60, 0xfe, 0x5f, 0x18, 0x00, 0x00, 0x60, 0xfe, 0x4f, 0x0c, 15 | 0x00, 0x00, 0x60, 0xfc, 0x27, 0x0c, 0x00, 0x00, 0xc0, 0x78, 0x3c, 0x0e, 16 | 0x00, 0x00, 0x80, 0x07, 0x7c, 0x06, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x03, 17 | 0x00, 0x00, 0x08, 0xfc, 0xfe, 0x00, 0x00, 0x00, 0x78, 0xfc, 0xfd, 0x00, 18 | 0x00, 0x00, 0xe0, 0xfc, 0xfd, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xfd, 0x07, 19 | 0x00, 0x00, 0x00, 0xf8, 0xfd, 0x05, 0x00, 0x00, 0x00, 0xf8, 0xfb, 0x05, 20 | 0x00, 0x00, 0x00, 0xf8, 0xfb, 0x09, 0x00, 0x00, 0x00, 0xfc, 0xfb, 0x19, 21 | 0x00, 0x00, 0x00, 0xfc, 0xf3, 0x19, 0x00, 0x00, 0x00, 0xe4, 0xf7, 0x31, 22 | 0x00, 0x00, 0x00, 0xe4, 0xf7, 0x31, 0x00, 0x00, 0x00, 0xe4, 0xf7, 0xc1, 23 | 0x00, 0x00, 0x00, 0xc4, 0xe7, 0x03, 0x01, 0x00, 0x00, 0xcc, 0xef, 0x03, 24 | 0x00, 0x00, 0x00, 0x8c, 0xef, 0x03, 0x00, 0x00, 0x00, 0x8c, 0xef, 0x01, 25 | 0x00, 0x00, 0x00, 0x0c, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x0c, 0xde, 0x01, 26 | 0x00, 0x00, 0x00, 0x06, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach120.xbm: -------------------------------------------------------------------------------- 1 | #define roach120_width 48 2 | #define roach120_height 48 3 | 4 | static char roach120_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 10 | 0x00, 0x00, 0x10, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x28, 0x18, 0x00, 11 | 0x00, 0x00, 0x00, 0x1e, 0x38, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x30, 0x00, 12 | 0x00, 0x00, 0x00, 0x9f, 0x63, 0x00, 0x00, 0x00, 0x80, 0xe6, 0x67, 0x04, 13 | 0x00, 0x80, 0x00, 0xfa, 0x27, 0x04, 0x00, 0x00, 0x07, 0xfc, 0x2f, 0x06, 14 | 0x00, 0x00, 0x0c, 0xfc, 0x07, 0x06, 0x00, 0x00, 0x18, 0xfe, 0x37, 0x02, 15 | 0x00, 0x00, 0x18, 0xff, 0x3b, 0x02, 0x00, 0x00, 0x30, 0xfe, 0xfc, 0x03, 16 | 0x00, 0x00, 0x60, 0x3e, 0xfc, 0x00, 0x00, 0x00, 0x60, 0xc0, 0xfe, 0x00, 17 | 0x00, 0x00, 0xc0, 0xff, 0xfd, 0x07, 0x00, 0x00, 0x00, 0xfc, 0xfd, 0x0f, 18 | 0x00, 0x00, 0x00, 0xfc, 0xfb, 0x1b, 0x00, 0x00, 0x20, 0xf8, 0xf3, 0x37, 19 | 0x00, 0x00, 0xf0, 0xf9, 0xf7, 0x67, 0x00, 0x00, 0xc0, 0xff, 0xef, 0xc7, 20 | 0x00, 0x00, 0x00, 0xe0, 0xef, 0x8f, 0x01, 0x00, 0x00, 0xe0, 0xdf, 0x0f, 21 | 0x0f, 0x00, 0x00, 0xe0, 0x9f, 0x0f, 0x00, 0x00, 0x00, 0xb0, 0xbf, 0x1f, 22 | 0x00, 0x00, 0x00, 0x20, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x7e, 0x1e, 23 | 0x00, 0x00, 0x00, 0x20, 0xfe, 0x3e, 0x00, 0x00, 0x00, 0x60, 0xfc, 0x3c, 24 | 0x00, 0x00, 0x00, 0x40, 0xf8, 0x3d, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x19, 25 | 0x00, 0x00, 0x00, 0x80, 0xf1, 0x03, 0x00, 0x00, 0x00, 0x80, 0xc1, 0x03, 26 | 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach135.xbm: -------------------------------------------------------------------------------- 1 | #define roach135_width 48 2 | #define roach135_height 48 3 | 4 | static char roach135_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x00, 0x00, 10 | 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 11 | 0x00, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0e, 0x00, 12 | 0x00, 0x00, 0x04, 0x03, 0x88, 0x01, 0x00, 0x00, 0xd8, 0xef, 0x88, 0x01, 13 | 0x00, 0x00, 0xc0, 0xff, 0x89, 0x01, 0x00, 0x00, 0x80, 0xfd, 0x8b, 0x01, 14 | 0x00, 0x00, 0xa0, 0xfc, 0x9f, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x01, 15 | 0x00, 0x00, 0x00, 0xfe, 0x7d, 0x00, 0x00, 0xc0, 0x01, 0xff, 0xfe, 0x00, 16 | 0x00, 0x00, 0x06, 0x7f, 0xfe, 0x07, 0x00, 0x00, 0x0e, 0x3f, 0xfe, 0x1f, 17 | 0x00, 0x00, 0x3c, 0xcf, 0xfd, 0x27, 0x00, 0x00, 0x70, 0xe0, 0xfb, 0xc7, 18 | 0x00, 0x00, 0xe0, 0xff, 0xf7, 0x8f, 0x7f, 0x00, 0x00, 0xf8, 0xef, 0x1f, 19 | 0x07, 0x00, 0x00, 0xf0, 0xdf, 0x3f, 0x00, 0x00, 0x00, 0xf0, 0xbf, 0x7f, 20 | 0x00, 0x00, 0x80, 0xf7, 0x7f, 0x7e, 0x00, 0x00, 0xe0, 0xdf, 0xff, 0xfc, 21 | 0x00, 0x00, 0x00, 0x80, 0xff, 0xf9, 0x01, 0x00, 0x00, 0x80, 0xfe, 0xf3, 22 | 0x01, 0x00, 0x00, 0x80, 0xfd, 0xe7, 0x01, 0x00, 0x00, 0x00, 0xf1, 0xcf, 23 | 0x01, 0x00, 0x00, 0x00, 0xe3, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3f, 24 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach150.xbm: -------------------------------------------------------------------------------- 1 | #define roach150_width 48 2 | #define roach150_height 48 3 | 4 | static char roach150_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 10 | 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x04, 0x70, 0x00, 0x00, 11 | 0x00, 0x00, 0x00, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x00, 12 | 0x00, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 13 | 0x00, 0x00, 0xc0, 0x7b, 0x42, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x42, 0x00, 14 | 0x00, 0x00, 0xe1, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0x3f, 0x04, 15 | 0x00, 0x00, 0x60, 0xfe, 0xfe, 0x3f, 0x00, 0x00, 0x50, 0xff, 0xfe, 0x61, 16 | 0x70, 0x00, 0x00, 0x7f, 0xfe, 0x87, 0x0f, 0x00, 0x00, 0x7f, 0xff, 0x0f, 17 | 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0x00, 0x00, 0x07, 0xdf, 0xf3, 0x7f, 18 | 0x00, 0x80, 0x1f, 0xee, 0xcf, 0xff, 0x00, 0x00, 0x38, 0xf0, 0x3f, 0xff, 19 | 0x01, 0x00, 0xe0, 0xff, 0xff, 0xfc, 0x03, 0x00, 0x00, 0xe0, 0xff, 0xf3, 20 | 0x07, 0x00, 0x00, 0xc0, 0xff, 0xcf, 0x07, 0x00, 0x00, 0xc0, 0xff, 0x3f, 21 | 0x07, 0x00, 0x00, 0x7c, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x3e, 0xfc, 0xff, 22 | 0x01, 0x00, 0x00, 0x00, 0xec, 0xff, 0x03, 0x00, 0x00, 0x00, 0x18, 0xff, 23 | 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach165.xbm: -------------------------------------------------------------------------------- 1 | #define roach165_width 48 2 | #define roach165_height 48 3 | 4 | static char roach165_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 10 | 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x06, 0x00, 11 | 0x00, 0x00, 0x80, 0x1f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x1c, 0x00, 12 | 0x00, 0x00, 0x00, 0x40, 0x18, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x10, 0x00, 13 | 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x44, 0xf8, 0x1f, 0x3e, 14 | 0x0e, 0x00, 0x30, 0x7c, 0xff, 0xe0, 0x07, 0x00, 0xe0, 0x7e, 0xff, 0x03, 15 | 0x00, 0x00, 0xf0, 0x7e, 0xff, 0x07, 0x00, 0x00, 0x70, 0xff, 0xff, 0x3f, 16 | 0x00, 0x00, 0x70, 0xff, 0xff, 0xff, 0x00, 0x00, 0x60, 0x7f, 0xff, 0xff, 17 | 0x01, 0x00, 0x50, 0x7f, 0x80, 0xff, 0x0f, 0x00, 0x00, 0x3f, 0x1f, 0xf8, 18 | 0x1f, 0x00, 0x00, 0xbf, 0xff, 0x01, 0x1f, 0x00, 0x00, 0xde, 0xff, 0x1f, 19 | 0x00, 0x00, 0x00, 0xec, 0xff, 0xff, 0x01, 0x00, 0x3e, 0xf0, 0xff, 0xff, 20 | 0x07, 0x00, 0xff, 0x8f, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x07, 0xf9, 0xff, 21 | 0x07, 0x00, 0x00, 0x80, 0x11, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x30, 0x00, 22 | 0x00, 0x00, 0x00, 0x70, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1f, 23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach180.xbm: -------------------------------------------------------------------------------- 1 | #define roach180_width 48 2 | #define roach180_height 48 3 | 4 | static char roach180_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 10 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 11 | 0x02, 0x00, 0x08, 0x80, 0x01, 0x00, 0x01, 0x00, 0xf8, 0x81, 0x03, 0x80, 12 | 0x01, 0x00, 0xe0, 0x0f, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x10, 0x84, 0x07, 13 | 0x00, 0x00, 0x00, 0x20, 0x84, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 14 | 0x00, 0x00, 0x00, 0x8c, 0xff, 0xff, 0x01, 0x00, 0x00, 0x9c, 0xff, 0xff, 15 | 0x07, 0x00, 0x20, 0xbe, 0xff, 0xff, 0x0f, 0x00, 0xe0, 0x7f, 0xff, 0xff, 16 | 0x1f, 0x00, 0xf0, 0x7f, 0xff, 0xff, 0x0f, 0x00, 0x70, 0x7f, 0x00, 0x00, 17 | 0x00, 0x00, 0x70, 0x7f, 0xff, 0xff, 0x0f, 0x00, 0x70, 0x7f, 0xff, 0xff, 18 | 0x1f, 0x00, 0x48, 0x7f, 0xff, 0xff, 0x1f, 0x80, 0x20, 0x7f, 0xff, 0xff, 19 | 0x0f, 0x00, 0x00, 0xbe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x9c, 0xff, 0x1f, 20 | 0x00, 0x00, 0x00, 0x48, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc4, 0x00, 21 | 0x00, 0x00, 0xf0, 0x1f, 0x8c, 0xff, 0x00, 0x00, 0xf8, 0x03, 0x07, 0x80, 22 | 0x01, 0x00, 0x18, 0x80, 0x03, 0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, 23 | 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach195.xbm: -------------------------------------------------------------------------------- 1 | #define roach195_width 48 2 | #define roach195_height 48 3 | 4 | static char roach195_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 10 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1c, 11 | 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x00, 12 | 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 13 | 0x01, 0x00, 0xe7, 0x07, 0xff, 0xff, 0x07, 0x00, 0xfc, 0x1c, 0xff, 0xff, 14 | 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff, 0x3f, 15 | 0x08, 0x00, 0x00, 0xde, 0xff, 0xc3, 0x1f, 0x00, 0x00, 0xbe, 0x3f, 0xfc, 16 | 0x1f, 0x00, 0x00, 0x7f, 0xc3, 0xff, 0x1f, 0x00, 0x20, 0x7f, 0xfc, 0xff, 17 | 0x0f, 0x00, 0x60, 0x7f, 0xff, 0xff, 0x01, 0x00, 0x70, 0x7f, 0xff, 0x7f, 18 | 0x00, 0x00, 0x70, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xf0, 0xfe, 0xff, 0x07, 19 | 0x00, 0x00, 0xe0, 0xfe, 0xff, 0xc1, 0x03, 0x00, 0x10, 0xfd, 0x7f, 0xff, 20 | 0x0f, 0x00, 0xc0, 0x78, 0x11, 0x00, 0x18, 0x00, 0x02, 0xb0, 0x20, 0x00, 21 | 0x00, 0x00, 0x01, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x38, 0x00, 22 | 0x00, 0x00, 0x00, 0x7c, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x0c, 0x00, 23 | 0x00, 0x00, 0xc0, 0x01, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach210.xbm: -------------------------------------------------------------------------------- 1 | #define roach210_width 48 2 | #define roach210_height 48 3 | 4 | static char roach210_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 10 | 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0, 11 | 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0x01, 0x00, 0x00, 0x03, 0x8c, 0xff, 12 | 0x01, 0x00, 0x00, 0x3e, 0xfc, 0x7f, 0x00, 0x00, 0x00, 0x60, 0xfc, 0x1f, 13 | 0x04, 0x00, 0x00, 0xc0, 0xff, 0x0f, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xc3, 14 | 0x0f, 0x00, 0x80, 0xe7, 0xff, 0xf0, 0x07, 0x00, 0xf0, 0xf8, 0x3f, 0xfc, 15 | 0x03, 0x00, 0x7f, 0xf0, 0x1f, 0xff, 0x01, 0x00, 0x0e, 0xcc, 0xc7, 0xff, 16 | 0x00, 0x00, 0x00, 0x9e, 0xf1, 0x7f, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 17 | 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x0f, 0x0f, 0x00, 0x00, 0xff, 0xfe, 0x87, 18 | 0x33, 0x00, 0xa0, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xfd, 0x1c, 19 | 0x00, 0x00, 0xf0, 0xff, 0x7d, 0x00, 0x00, 0x00, 0xe3, 0xfd, 0xfd, 0x00, 20 | 0x00, 0x00, 0xe0, 0xf9, 0x85, 0x00, 0x00, 0x00, 0xc0, 0xf1, 0xc7, 0x00, 21 | 0x00, 0x00, 0x40, 0xc2, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 22 | 0x00, 0x00, 0x20, 0x80, 0x63, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x20, 0x00, 23 | 0x00, 0x00, 0x08, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach225.xbm: -------------------------------------------------------------------------------- 1 | #define roach225_width 48 2 | #define roach225_height 48 3 | 4 | static char roach225_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x3f, 10 | 0x00, 0x00, 0x00, 0x00, 0xc6, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x9f, 11 | 0x01, 0x00, 0x00, 0x00, 0xf1, 0xcf, 0x01, 0x00, 0x00, 0x00, 0xf9, 0xe7, 12 | 0x01, 0x00, 0x00, 0x00, 0xff, 0xf3, 0x01, 0x00, 0x00, 0x0f, 0xff, 0xf9, 13 | 0x01, 0x00, 0xc0, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x7e, 14 | 0x00, 0x00, 0x00, 0xe0, 0x9f, 0x7f, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0x3f, 15 | 0x3e, 0x00, 0x80, 0xff, 0xe7, 0x1f, 0x07, 0x00, 0xc0, 0xf0, 0xf3, 0xdf, 16 | 0x03, 0x00, 0x70, 0xe0, 0xf9, 0xcf, 0x00, 0x00, 0x38, 0x3c, 0xfc, 0x67, 17 | 0x00, 0x00, 0x1e, 0x7e, 0xfe, 0x1f, 0x00, 0x80, 0x0f, 0xfe, 0xfc, 0x01, 18 | 0x00, 0x00, 0x00, 0xfe, 0xfd, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xfb, 0x01, 19 | 0x00, 0x00, 0x00, 0xff, 0x7b, 0x03, 0x00, 0x00, 0x00, 0xfd, 0x0f, 0x03, 20 | 0x00, 0x00, 0x80, 0xf9, 0x1f, 0x03, 0x00, 0x00, 0xc0, 0xe3, 0x1f, 0x03, 21 | 0x00, 0x00, 0x80, 0x9f, 0x1b, 0x01, 0x00, 0x00, 0x00, 0x07, 0x18, 0x01, 22 | 0x00, 0x00, 0x02, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 24 | 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 25 | 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach240.xbm: -------------------------------------------------------------------------------- 1 | #define roach240_width 48 2 | #define roach240_height 48 3 | 4 | static char roach240_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 8 | 0x00, 0x00, 0x00, 0x80, 0xc1, 0x03, 0x00, 0x00, 0x00, 0x80, 0xf1, 0x11, 9 | 0x00, 0x00, 0x00, 0x80, 0xf8, 0x18, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3c, 10 | 0x00, 0x00, 0x00, 0x40, 0x7c, 0x3c, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x3e, 11 | 0x00, 0x00, 0x00, 0x20, 0x3f, 0x1e, 0x00, 0x00, 0x00, 0xa0, 0x3f, 0x1f, 12 | 0x00, 0x00, 0x00, 0xe0, 0x9f, 0x1f, 0x3e, 0x00, 0x00, 0xc0, 0x9f, 0x0f, 13 | 0x07, 0x00, 0x00, 0xc0, 0xcf, 0x8f, 0x00, 0x00, 0x00, 0xe6, 0xe7, 0xcf, 14 | 0x00, 0x00, 0xc0, 0xf9, 0xe7, 0x47, 0x00, 0x00, 0x00, 0xf0, 0xf3, 0x67, 15 | 0x00, 0x00, 0x00, 0xf8, 0xf3, 0x37, 0x00, 0x00, 0x00, 0xf8, 0xf9, 0x1f, 16 | 0x00, 0x00, 0x00, 0xff, 0xfd, 0x07, 0x00, 0x00, 0xc0, 0x03, 0xfc, 0x01, 17 | 0x00, 0x00, 0x60, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x30, 0xfc, 0xfc, 0x03, 18 | 0x00, 0x00, 0x30, 0xfe, 0xfb, 0x06, 0x00, 0x00, 0x30, 0xfe, 0x77, 0x06, 19 | 0x00, 0x00, 0x1c, 0xfc, 0x37, 0x06, 0x00, 0x00, 0x02, 0xfc, 0x2f, 0x06, 20 | 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x04, 0x00, 0x00, 0x00, 0xe5, 0x6f, 0x0c, 21 | 0x00, 0x00, 0x00, 0x8e, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x60, 0x00, 22 | 0x00, 0x00, 0x00, 0x3e, 0x20, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x30, 0x00, 23 | 0x00, 0x00, 0x40, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x18, 0x00, 24 | 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 26 | 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach255.xbm: -------------------------------------------------------------------------------- 1 | #define roach255_width 48 2 | #define roach255_height 48 3 | 4 | static char roach255_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x02, 0x18, 0x00, 0x00, 0x00, 0x00, 0x06, 0x9c, 0x01, 8 | 0x00, 0x00, 0x00, 0x0c, 0x9e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x8f, 0x03, 9 | 0x00, 0x00, 0x00, 0x18, 0xcf, 0x03, 0x00, 0x00, 0x00, 0x98, 0xcf, 0x03, 10 | 0x00, 0x00, 0x00, 0x88, 0xcf, 0x83, 0x01, 0x00, 0x00, 0xc8, 0xc7, 0xe3, 11 | 0x00, 0x00, 0x00, 0xc8, 0xe7, 0x63, 0x00, 0x00, 0x00, 0xec, 0xe7, 0x33, 12 | 0x00, 0x00, 0x00, 0xec, 0xe7, 0x33, 0x00, 0x00, 0x00, 0xf8, 0xe3, 0x13, 13 | 0x00, 0x00, 0x00, 0xf8, 0xf3, 0x1b, 0x00, 0x00, 0x00, 0xf0, 0xf3, 0x1b, 14 | 0x00, 0x00, 0x00, 0xf0, 0xf3, 0x09, 0x00, 0x00, 0x80, 0xff, 0xf9, 0x07, 15 | 0x00, 0x00, 0xc0, 0xf8, 0xf9, 0x01, 0x00, 0x00, 0xe0, 0xf8, 0xf9, 0x01, 16 | 0x00, 0x00, 0x10, 0xfc, 0xf9, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x07, 17 | 0x00, 0x00, 0x00, 0x02, 0xfc, 0x0c, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x0c, 18 | 0x00, 0x00, 0x80, 0xf8, 0x63, 0x18, 0x00, 0x00, 0xc0, 0xfc, 0x6f, 0x18, 19 | 0x00, 0x00, 0x60, 0xfc, 0x9f, 0x30, 0x00, 0x00, 0x60, 0xfc, 0x3f, 0x01, 20 | 0x00, 0x00, 0x60, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x20, 0xe0, 0x3f, 0x01, 21 | 0x00, 0x00, 0x38, 0xb0, 0x8f, 0x01, 0x00, 0x00, 0x08, 0xf4, 0x83, 0x01, 22 | 0x00, 0x00, 0x00, 0xf0, 0x81, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x85, 0x00, 23 | 0x00, 0x00, 0x00, 0x08, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 25 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach270.xbm: -------------------------------------------------------------------------------- 1 | #define roach270_width 48 2 | #define roach270_height 48 3 | 4 | static char roach270_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 8 | 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x00, 0x20, 0xf0, 0x3c, 0x18, 9 | 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0c, 0x00, 0x00, 0x80, 0xf1, 0x3c, 0x06, 10 | 0x00, 0x00, 0x00, 0xf9, 0x7c, 0x06, 0x00, 0x00, 0x00, 0xf9, 0x7c, 0x06, 11 | 0x00, 0x00, 0x00, 0xf9, 0x7c, 0x06, 0x00, 0x00, 0x00, 0xf9, 0x7c, 0x06, 12 | 0x00, 0x00, 0x00, 0xf9, 0x7c, 0x06, 0x00, 0x00, 0x00, 0xfb, 0x7c, 0x02, 13 | 0x00, 0x00, 0x00, 0xff, 0xfc, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xfc, 0x01, 14 | 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc, 0x00, 15 | 0x00, 0x00, 0x00, 0xf8, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x07, 16 | 0x00, 0x00, 0x80, 0xfc, 0xfc, 0x0c, 0x00, 0x00, 0xc0, 0xfc, 0xfc, 0x18, 17 | 0x00, 0x00, 0x60, 0x78, 0xfc, 0x10, 0x00, 0x00, 0x30, 0x18, 0xc0, 0x20, 18 | 0x00, 0x00, 0x00, 0xc6, 0x1f, 0x01, 0x00, 0x00, 0x00, 0xe3, 0x7f, 0x02, 19 | 0x00, 0x00, 0x00, 0xf1, 0xff, 0x06, 0x00, 0x00, 0x80, 0xf1, 0xff, 0x06, 20 | 0x00, 0x00, 0x80, 0xf1, 0xff, 0x06, 0x00, 0x00, 0x80, 0xe1, 0x7f, 0x06, 21 | 0x00, 0x00, 0x80, 0x81, 0x1f, 0x06, 0x00, 0x00, 0x80, 0x81, 0x0f, 0x04, 22 | 0x00, 0x00, 0x80, 0x81, 0x2f, 0x04, 0x00, 0x00, 0xc0, 0x80, 0x0f, 0x0c, 23 | 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 24 | 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach285.xbm: -------------------------------------------------------------------------------- 1 | #define roach285_width 48 2 | #define roach285_height 48 3 | 4 | static char roach285_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe6, 0x80, 0x00, 8 | 0x00, 0x00, 0x00, 0xe6, 0xc1, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x63, 0x00, 9 | 0x00, 0x00, 0x00, 0xcf, 0x47, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x47, 0x00, 10 | 0x00, 0x00, 0x03, 0xdf, 0x4f, 0x00, 0x00, 0x00, 0x1c, 0x9f, 0xcf, 0x00, 11 | 0x00, 0x00, 0x30, 0x9f, 0x9f, 0x00, 0x00, 0x00, 0x30, 0xbf, 0x9f, 0x00, 12 | 0x00, 0x00, 0x20, 0xbf, 0xbf, 0x00, 0x00, 0x00, 0x40, 0x3e, 0xff, 0x00, 13 | 0x00, 0x00, 0x40, 0x3e, 0x7f, 0x00, 0x00, 0x00, 0xc0, 0x7e, 0x7f, 0x00, 14 | 0x00, 0x00, 0xc0, 0x7f, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x07, 15 | 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x1c, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x18, 16 | 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0x00, 17 | 0x00, 0x00, 0x00, 0xfd, 0x01, 0x07, 0x00, 0x00, 0x80, 0x7c, 0xf8, 0x0e, 18 | 0x00, 0x00, 0xc0, 0xb8, 0xff, 0x0d, 0x00, 0x00, 0x40, 0xd8, 0xff, 0x09, 19 | 0x00, 0x00, 0x00, 0xcc, 0xff, 0x19, 0x00, 0x00, 0x00, 0xee, 0xff, 0x19, 20 | 0x00, 0x00, 0x00, 0xe6, 0xff, 0x18, 0x00, 0x00, 0x00, 0xc6, 0x7f, 0x30, 21 | 0x00, 0x00, 0x00, 0x86, 0x7f, 0x60, 0x00, 0x00, 0x00, 0x06, 0x7e, 0xc1, 22 | 0x00, 0x00, 0x00, 0x04, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xbc, 0x00, 23 | 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 24 | 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach300.xbm: -------------------------------------------------------------------------------- 1 | #define roach300_width 48 2 | #define roach300_height 48 3 | 4 | static char roach300_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 8 | 0x00, 0x00, 0x00, 0x1f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x04, 0x00, 9 | 0x00, 0x00, 0x60, 0x7c, 0x0c, 0x00, 0x00, 0x00, 0xe0, 0x7c, 0x0c, 0x00, 10 | 0x00, 0x00, 0xf0, 0xf8, 0x08, 0x00, 0x00, 0x00, 0xe0, 0xf9, 0x11, 0x00, 11 | 0x00, 0x00, 0xe0, 0xf3, 0x13, 0x00, 0x00, 0x00, 0xe0, 0xf3, 0x17, 0x00, 12 | 0x00, 0x00, 0xc0, 0xe7, 0x1f, 0x00, 0x00, 0xc0, 0xc7, 0xc7, 0x1f, 0x00, 13 | 0x00, 0x00, 0xcc, 0xcf, 0x9f, 0x00, 0x00, 0x00, 0x88, 0x9f, 0xff, 0x07, 14 | 0x00, 0x00, 0x98, 0x9f, 0xff, 0x3c, 0x00, 0x00, 0xb0, 0x3f, 0x7f, 0x00, 15 | 0x00, 0x00, 0x60, 0x7f, 0xff, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0xfe, 0x00, 16 | 0x00, 0x00, 0x00, 0xfe, 0x7e, 0x0f, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x1c, 17 | 0x00, 0x00, 0x00, 0xfc, 0xf1, 0x19, 0x00, 0x00, 0x00, 0x7e, 0xf8, 0x33, 18 | 0x00, 0x00, 0x00, 0x79, 0xfc, 0x63, 0x00, 0x00, 0x80, 0x31, 0xfe, 0x63, 19 | 0x00, 0x00, 0x80, 0x31, 0xff, 0xc3, 0x01, 0x00, 0x80, 0x91, 0xff, 0x01, 20 | 0x03, 0x00, 0x80, 0x91, 0xff, 0x04, 0x00, 0x00, 0x80, 0x98, 0x7f, 0x01, 21 | 0x00, 0x00, 0x00, 0x18, 0xff, 0x03, 0x00, 0x00, 0x00, 0x10, 0xf0, 0x05, 22 | 0x00, 0x00, 0x00, 0x30, 0x60, 0x08, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 23 | 0x00, 0x00, 0x00, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach315.xbm: -------------------------------------------------------------------------------- 1 | #define roach315_width 48 2 | #define roach315_height 48 3 | 4 | static char roach315_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, 9 | 0x00, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc7, 0x01, 0x00, 10 | 0x00, 0x00, 0xe0, 0x9f, 0x01, 0x00, 0x00, 0x00, 0xc6, 0x3f, 0x02, 0x00, 11 | 0x00, 0x00, 0x8e, 0x7f, 0x06, 0x00, 0x00, 0x00, 0x1e, 0xff, 0x06, 0x00, 12 | 0x00, 0x00, 0x3e, 0xfe, 0xc3, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xe7, 0x1f, 13 | 0x00, 0x00, 0xfc, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0xf1, 0x1f, 0x00, 14 | 0x00, 0x00, 0xf8, 0xe7, 0x3f, 0x00, 0x00, 0x80, 0xf1, 0xcf, 0x3f, 0x02, 15 | 0x00, 0x00, 0xe6, 0x9f, 0xff, 0x07, 0x00, 0x00, 0xcc, 0x3f, 0x1f, 0x08, 16 | 0x00, 0x00, 0x9c, 0x7f, 0xce, 0x31, 0x00, 0x00, 0xf0, 0xff, 0xe0, 0x63, 17 | 0x00, 0x00, 0xc0, 0xfe, 0xf1, 0xe7, 0x03, 0x00, 0x00, 0xfc, 0xf9, 0xc7, 18 | 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xfc, 0x03, 19 | 0x00, 0x00, 0x00, 0x62, 0xfe, 0x05, 0x00, 0x00, 0x00, 0x42, 0xfe, 0x0e, 20 | 0x00, 0x00, 0x00, 0x42, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x46, 0xfe, 0x47, 21 | 0x00, 0x00, 0x00, 0x66, 0x84, 0x03, 0x00, 0x00, 0x00, 0xc2, 0x40, 0x00, 22 | 0x04, 0x00, 0x00, 0x80, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach330.xbm: -------------------------------------------------------------------------------- 1 | #define roach330_width 48 2 | #define roach330_height 48 3 | 4 | static char roach330_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 10 | 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x60, 0x00, 0x00, 11 | 0x00, 0x00, 0xfe, 0xc1, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x8f, 0xf0, 0x01, 12 | 0x00, 0x00, 0xf8, 0xff, 0x38, 0x00, 0x00, 0x80, 0xe0, 0xff, 0x0f, 0x00, 13 | 0x00, 0x80, 0xc3, 0xff, 0x07, 0x00, 0x00, 0x80, 0x0f, 0xff, 0x1f, 0x03, 14 | 0x00, 0x80, 0x3f, 0xfc, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xf0, 0x7f, 0x38, 15 | 0x00, 0x00, 0xfe, 0xe3, 0x8f, 0xe1, 0x07, 0x00, 0xf8, 0x8f, 0xc7, 0xc3, 16 | 0x00, 0x00, 0xf0, 0x3f, 0xe6, 0x07, 0x00, 0x00, 0xe1, 0xff, 0xf0, 0x07, 17 | 0x00, 0xc0, 0xc7, 0xff, 0xf9, 0x07, 0x00, 0x30, 0xbc, 0xff, 0xf9, 0x07, 18 | 0x00, 0x00, 0xf0, 0xfd, 0xfd, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0xfd, 0x7f, 19 | 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x1d, 0x08, 0x00, 0x00, 0xc8, 0xfd, 0x1e, 20 | 0x00, 0x00, 0x00, 0x0c, 0x7d, 0x06, 0x00, 0x00, 0x00, 0x08, 0x19, 0x02, 21 | 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 22 | 0x00, 0x00, 0x00, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roach345.xbm: -------------------------------------------------------------------------------- 1 | #define roach345_width 48 2 | #define roach345_height 48 3 | 4 | static char roach345_bits[] = { 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 10 | 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x40, 0x00, 11 | 0x00, 0x00, 0x00, 0x0e, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 12 | 0x00, 0x00, 0xff, 0x23, 0x03, 0x00, 0x00, 0x80, 0xff, 0xff, 0x83, 0x03, 13 | 0x00, 0xc0, 0xff, 0xff, 0xe3, 0xff, 0x03, 0x80, 0xff, 0xff, 0x3f, 0x70, 14 | 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x40, 0x00, 0xff, 0xcf, 0x03, 15 | 0x00, 0xe0, 0x0f, 0xf0, 0xef, 0x03, 0x00, 0xc0, 0x7f, 0x00, 0xf7, 0x07, 16 | 0x00, 0xc0, 0xff, 0x07, 0xf0, 0x07, 0x00, 0x00, 0xff, 0x7f, 0xf0, 0xff, 17 | 0x13, 0x00, 0xfe, 0xff, 0xf1, 0x3f, 0x00, 0x00, 0xf0, 0xff, 0xf9, 0x3b, 18 | 0x00, 0x00, 0xc0, 0xff, 0xf9, 0x1f, 0x00, 0x00, 0x82, 0xff, 0xfb, 0x1f, 19 | 0x00, 0x00, 0xff, 0xfb, 0xfb, 0x03, 0x00, 0x80, 0xe1, 0xe1, 0xf3, 0x81, 20 | 0x00, 0x40, 0x00, 0x30, 0x62, 0x00, 0x02, 0x00, 0x00, 0x30, 0x04, 0x00, 21 | 0x04, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x78, 0x00, 22 | 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00}; 30 | -------------------------------------------------------------------------------- /roachmap.h: -------------------------------------------------------------------------------- 1 | /* @(#)roachmap.h 1.3 4/2/91 11:55:35 */ 2 | 3 | #include "roach000.xbm" 4 | #include "roach015.xbm" 5 | #include "roach030.xbm" 6 | #include "roach045.xbm" 7 | #include "roach060.xbm" 8 | #include "roach075.xbm" 9 | #include "roach090.xbm" 10 | #include "roach105.xbm" 11 | #include "roach120.xbm" 12 | #include "roach135.xbm" 13 | #include "roach150.xbm" 14 | #include "roach165.xbm" 15 | #include "roach180.xbm" 16 | #include "roach195.xbm" 17 | #include "roach210.xbm" 18 | #include "roach225.xbm" 19 | #include "roach240.xbm" 20 | #include "roach255.xbm" 21 | #include "roach270.xbm" 22 | #include "roach285.xbm" 23 | #include "roach300.xbm" 24 | #include "roach315.xbm" 25 | #include "roach330.xbm" 26 | #include "roach345.xbm" 27 | 28 | #include "squish.xbm" 29 | 30 | #define ROACH_HEADINGS 24 /* number of orientations */ 31 | #define ROACH_ANGLE 15 /* angle between orientations */ 32 | 33 | typedef struct RoachMap { 34 | char *roachBits; 35 | Pixmap pixmap; 36 | int width; 37 | int height; 38 | float sine; 39 | float cosine; 40 | } RoachMap; 41 | 42 | RoachMap roachPix[] = { 43 | {roach000_bits, None, roach000_height, roach000_width, 0.0, 0.0}, 44 | {roach015_bits, None, roach015_height, roach015_width, 0.0, 0.0}, 45 | {roach030_bits, None, roach030_height, roach030_width, 0.0, 0.0}, 46 | {roach045_bits, None, roach045_height, roach045_width, 0.0, 0.0}, 47 | {roach060_bits, None, roach060_height, roach060_width, 0.0, 0.0}, 48 | {roach075_bits, None, roach075_height, roach075_width, 0.0, 0.0}, 49 | {roach090_bits, None, roach090_height, roach090_width, 0.0, 0.0}, 50 | {roach105_bits, None, roach105_height, roach105_width, 0.0, 0.0}, 51 | {roach120_bits, None, roach120_height, roach120_width, 0.0, 0.0}, 52 | {roach135_bits, None, roach135_height, roach135_width, 0.0, 0.0}, 53 | {roach150_bits, None, roach150_height, roach150_width, 0.0, 0.0}, 54 | {roach165_bits, None, roach165_height, roach165_width, 0.0, 0.0}, 55 | {roach180_bits, None, roach180_height, roach180_width, 0.0, 0.0}, 56 | {roach195_bits, None, roach195_height, roach195_width, 0.0, 0.0}, 57 | {roach210_bits, None, roach210_height, roach210_width, 0.0, 0.0}, 58 | {roach225_bits, None, roach225_height, roach225_width, 0.0, 0.0}, 59 | {roach240_bits, None, roach240_height, roach240_width, 0.0, 0.0}, 60 | {roach255_bits, None, roach255_height, roach255_width, 0.0, 0.0}, 61 | {roach270_bits, None, roach270_height, roach270_width, 0.0, 0.0}, 62 | {roach285_bits, None, roach285_height, roach285_width, 0.0, 0.0}, 63 | {roach300_bits, None, roach300_height, roach300_width, 0.0, 0.0}, 64 | {roach315_bits, None, roach315_height, roach315_width, 0.0, 0.0}, 65 | {roach330_bits, None, roach330_height, roach330_width, 0.0, 0.0}, 66 | {roach345_bits, None, roach345_height, roach345_width, 0.0, 0.0}, 67 | }; -------------------------------------------------------------------------------- /squish.xbm: -------------------------------------------------------------------------------- 1 | #define squish_width 48 2 | #define squish_height 48 3 | #define squish_x_hot -1 4 | #define squish_y_hot -1 5 | static char squish_bits[] = { 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x20, 0x00, 9 | 0x00, 0x00, 0x18, 0x08, 0x02, 0x00, 0x00, 0x40, 0x41, 0x52, 0x28, 0x00, 10 | 0x00, 0x80, 0x81, 0x1c, 0x13, 0x00, 0x00, 0x00, 0x12, 0x69, 0x00, 0x00, 11 | 0x00, 0x30, 0x88, 0x40, 0x09, 0x00, 0x00, 0x40, 0x40, 0x00, 0x04, 0x00, 12 | 0x00, 0x90, 0x06, 0x01, 0x30, 0x00, 0x00, 0x98, 0x80, 0x02, 0x10, 0x00, 13 | 0x80, 0x20, 0x00, 0x80, 0x44, 0x00, 0x00, 0x0c, 0x82, 0xb0, 0x00, 0x00, 14 | 0x80, 0x22, 0x20, 0x10, 0x44, 0x00, 0x00, 0x04, 0x1e, 0xa1, 0x00, 0x00, 15 | 0x00, 0x04, 0x02, 0xa6, 0x18, 0x06, 0x00, 0x80, 0x00, 0x80, 0x8b, 0x00, 16 | 0x00, 0x88, 0x0e, 0x02, 0x01, 0x00, 0x40, 0x04, 0x05, 0x62, 0x50, 0x04, 17 | 0x40, 0x00, 0x01, 0x50, 0x09, 0x00, 0x00, 0x28, 0x12, 0x13, 0x88, 0x04, 18 | 0x40, 0xc1, 0x30, 0x40, 0x02, 0x00, 0x60, 0x02, 0x03, 0x50, 0xc1, 0x01, 19 | 0x00, 0x42, 0x16, 0x94, 0x80, 0x06, 0x00, 0x00, 0x40, 0x10, 0x40, 0x00, 20 | 0x00, 0x94, 0x10, 0xe4, 0x34, 0x02, 0x00, 0x80, 0x1c, 0x84, 0x89, 0x00, 21 | 0x00, 0x11, 0x00, 0x00, 0x20, 0x02, 0x00, 0x30, 0x10, 0x80, 0x54, 0x00, 22 | 0x00, 0x20, 0x91, 0xa5, 0xc4, 0x00, 0x00, 0x22, 0x20, 0x28, 0x92, 0x00, 23 | 0x00, 0x52, 0x08, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x2c, 0x00, 24 | 0x00, 0x10, 0x01, 0x49, 0x00, 0x00, 0x00, 0x40, 0x04, 0x12, 0x0e, 0x00, 25 | 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x05, 0x40, 0x01, 0x00, 26 | 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 30 | -------------------------------------------------------------------------------- /xroach.c: -------------------------------------------------------------------------------- 1 | /* 2 | Xroach - A game of skill. Try to find the roaches under your windows. 3 | 4 | Copyright 1991 by J.T. Anderson 5 | 6 | jta@locus.com 7 | 8 | This program may be freely distributed provided that all 9 | copyright notices are retained. 10 | 11 | To build: 12 | cc -I/usr/local/include/ -L/usr/local/lib/ -o xroach xroach.c -lm -lX11 13 | 14 | To run: 15 | ./xroach -speed 2 -squish -rc brown -rgc yellowgreen 16 | 17 | Dedicated to Greg McFarlane (gregm@otc.otca.oz.au). 18 | 19 | Squish option contributed by Rick Petkiewizc (rick@locus.com). 20 | 21 | Virtual root code adapted from patch sent by Colin Rafferty who 22 | borrowed it from Tom LaStrange. Several other folks sent similar 23 | fixes. 24 | 25 | Some glitches removed by patch from Guus Sliepen (guus@sliepen.warande.net) 26 | in 2001 (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=102668#5). 27 | 28 | Last update: 2018-JUL-10 29 | */ 30 | 31 | /* @(#)xroach.c 1.5 4/2/91 11:53:31 */ 32 | 33 | #include 34 | #include 35 | #include 36 | #include 37 | 38 | #include 39 | #include 40 | #include 41 | #include 42 | 43 | char Copyright[] = "Xroach\nCopyright 1991 J.T. Anderson"; 44 | 45 | #include "roachmap.h" 46 | 47 | typedef unsigned long Pixel; 48 | typedef int ErrorHandler(); 49 | 50 | #define SCAMPER_EVENT (LASTEvent + 1) 51 | 52 | #if !defined(GRAB_SERVER) 53 | #define GRAB_SERVER 0 54 | #endif 55 | 56 | char *display_name = NULL; 57 | Display *display; 58 | GC gc; 59 | GC gutsGC; 60 | int screen; 61 | Pixel black; 62 | unsigned int display_height; 63 | unsigned int display_width; 64 | Window rootWin; 65 | 66 | Bool squishRoach = False; 67 | Bool squishWinUp = False; 68 | int done = 0; 69 | int errorVal = 0; 70 | int eventBlock = 0; 71 | Pixmap squishMap; 72 | 73 | typedef struct Roach 74 | { 75 | RoachMap *rp; 76 | int index; 77 | float x; 78 | float y; 79 | int intX; 80 | int intY; 81 | int hidden; 82 | int turnLeft; 83 | int steps; 84 | } Roach; 85 | 86 | Roach *roaches; 87 | int maxRoaches = 10; 88 | int curRoaches = 0; 89 | float roachSpeed = 20.0; 90 | float turnSpeed = 10.0; 91 | 92 | Region rootVisible = NULL; 93 | 94 | void Usage(); 95 | void SigHandler(); 96 | Window FindRootWindow(); 97 | int RandInt(int maxVal); 98 | int RoachInRect(Roach *roach, int rx, int ry, int x, int y, unsigned int width, unsigned int height); 99 | int RoachOverRect(Roach *roach, int rx, int ry, int x, int y, unsigned int width, unsigned int height); 100 | void AddRoach(); 101 | void TurnRoach(Roach *roach); 102 | void MoveRoach(int rx); 103 | void DrawRoaches(); 104 | void CoverRoot(); 105 | int RoachErrors(Display *display, XErrorEvent *err); 106 | int CalcRootVisible(); 107 | int MarkHiddenRoaches(); 108 | Pixel AllocNamedColor(char *colorName, Pixel dfltPix); 109 | void checkSquish(XButtonEvent *buttonEvent); 110 | 111 | int main(int ac, char *av[]) 112 | { 113 | char *arg; 114 | char *gutsColor = NULL; 115 | char *roachColor = "black"; 116 | float angle; 117 | int needCalc; 118 | int nVis; 119 | RoachMap *rp; 120 | Window squishWin; 121 | XEvent ev; 122 | XGCValues xgcv; 123 | XSetWindowAttributes xswa; 124 | 125 | /* 126 | Process command line options. 127 | */ 128 | for (int ax = 1; ax < ac; ax++) 129 | { 130 | arg = av[ax]; 131 | 132 | if (strcmp(arg, "-display") == 0) 133 | display_name = av[++ax]; 134 | else if (strcmp(arg, "-rc") == 0) 135 | roachColor = av[++ax]; 136 | else if (strcmp(arg, "-speed") == 0) 137 | roachSpeed = (float) strtod(av[++ax], (char **) NULL); 138 | else if (strcmp(arg, "-roaches") == 0) 139 | maxRoaches = (int) strtol(av[++ax], (char **) NULL, 0); 140 | else if (strcmp(arg, "-squish") == 0) 141 | squishRoach = True; 142 | else if (strcmp(arg, "-rgc") == 0) 143 | gutsColor = av[++ax]; 144 | else 145 | Usage(); 146 | } 147 | 148 | /* Compensate rate of turning for speed of movement. */ 149 | turnSpeed = 200 / roachSpeed; 150 | 151 | if (turnSpeed < 1) 152 | turnSpeed = 1; 153 | 154 | srand((unsigned int) time((time_t *) NULL)); 155 | 156 | /* 157 | Catch some signals so we can erase any visible roaches. 158 | */ 159 | signal(SIGKILL, SigHandler); 160 | signal(SIGINT, SigHandler); 161 | signal(SIGTERM, SigHandler); 162 | signal(SIGHUP, SigHandler); 163 | 164 | display = XOpenDisplay(display_name); 165 | 166 | if (display == NULL) 167 | { 168 | if (display_name == NULL) 169 | display_name = getenv("DISPLAY"); 170 | 171 | fprintf(stderr, 172 | "%s: cannot connect to X server %s\n", 173 | av[0], 174 | display_name ? display_name : "(default)"); 175 | exit(1); 176 | } 177 | 178 | screen = DefaultScreen(display); 179 | rootWin = FindRootWindow(); 180 | black = BlackPixel(display, screen); 181 | 182 | display_width = (unsigned int) DisplayWidth(display, screen); 183 | display_height = (unsigned int) DisplayHeight(display, screen); 184 | 185 | /* 186 | Create roach pixmaps at several orientations. 187 | */ 188 | for (int ax = 0; ax < 360; ax += ROACH_ANGLE) 189 | { 190 | int rx = ax / ROACH_ANGLE; 191 | angle = (float) (rx * 0.261799387799); 192 | rp = &roachPix[rx]; 193 | rp->pixmap = XCreateBitmapFromData(display, 194 | rootWin, 195 | rp->roachBits, 196 | (unsigned int) rp->width, 197 | (unsigned int) rp->height); 198 | rp->sine = (float) sin(angle); 199 | rp->cosine = (float) cos(angle); 200 | } 201 | 202 | /* 203 | Create the squished pixmap 204 | */ 205 | if (squishRoach) 206 | squishMap = XCreateBitmapFromData(display, 207 | rootWin, 208 | squish_bits, 209 | squish_width, 210 | squish_height); 211 | 212 | roaches = (Roach *) malloc(sizeof(Roach) * maxRoaches); 213 | 214 | gc = XCreateGC(display, rootWin, 0L, &xgcv); 215 | XSetForeground(display, gc, AllocNamedColor(roachColor, black)); 216 | XSetFillStyle(display, gc, FillStippled); 217 | 218 | if (squishRoach && gutsColor != NULL) 219 | { 220 | gutsGC = XCreateGC(display, rootWin, 0L, &xgcv); 221 | XSetForeground(display, gutsGC, AllocNamedColor(gutsColor, black)); 222 | XSetFillStyle(display, gutsGC, FillStippled); 223 | } 224 | else 225 | { 226 | gutsGC = gc; 227 | } 228 | 229 | while (curRoaches < maxRoaches) 230 | AddRoach(); 231 | 232 | XSelectInput(display, rootWin, ExposureMask | SubstructureNotifyMask); 233 | 234 | if (squishRoach) 235 | { 236 | xswa.event_mask = ButtonPressMask; 237 | xswa.override_redirect = True; 238 | squishWin = XCreateWindow(display, 239 | rootWin, 240 | 0, 0, 241 | display_width, display_height, 242 | 0, 243 | CopyFromParent, InputOnly, CopyFromParent, 244 | CWOverrideRedirect | CWEventMask, 245 | &xswa); 246 | XLowerWindow(display, squishWin); 247 | } 248 | 249 | needCalc = 1; 250 | 251 | while (!done) 252 | { 253 | if (XPending(display)) 254 | { 255 | XNextEvent(display, &ev); 256 | } 257 | else 258 | { 259 | if (needCalc) 260 | needCalc = CalcRootVisible(); 261 | 262 | if (needCalc) 263 | nVis = 0; 264 | else 265 | nVis = MarkHiddenRoaches(); 266 | 267 | ev.type = SCAMPER_EVENT; 268 | 269 | if (nVis) 270 | { 271 | if (!squishWinUp && squishRoach) 272 | { 273 | XMapWindow(display, squishWin); 274 | squishWinUp = True; 275 | } 276 | } 277 | else 278 | { 279 | if (squishWinUp && squishRoach) 280 | { 281 | XUnmapWindow(display, squishWin); 282 | squishWinUp = False; 283 | } 284 | 285 | /* 286 | if (needCalc == 0) 287 | DrawRoaches(); 288 | 289 | eventBlock = 1; 290 | XNextEvent(display, &ev); 291 | eventBlock = 0; 292 | */ 293 | } 294 | } 295 | 296 | switch (ev.type) 297 | { 298 | case SCAMPER_EVENT: 299 | for (int rx = 0; rx < curRoaches; rx++) 300 | if (!roaches[rx].hidden) 301 | MoveRoach(rx); 302 | 303 | DrawRoaches(); 304 | XFlush(display); 305 | usleep(20000); 306 | XSync(display, False); 307 | break; 308 | 309 | case UnmapNotify: 310 | if (ev.xunmap.window != squishWin) 311 | needCalc = 1; 312 | break; 313 | 314 | case MapNotify: 315 | case Expose: 316 | case ConfigureNotify: 317 | needCalc = 1; 318 | break; 319 | 320 | case ButtonPress: 321 | checkSquish((XButtonEvent *) &ev); 322 | done = !curRoaches; /* Stop program if there are no more roaches */ 323 | break; 324 | 325 | default: 326 | break; 327 | } 328 | } 329 | 330 | CoverRoot(); 331 | XCloseDisplay(display); 332 | free(roaches); 333 | return 0; 334 | } 335 | 336 | #define USEPRT(msg) fprintf(stderr, msg) 337 | 338 | void Usage() 339 | { 340 | USEPRT("Usage: xroach [options]\n\n"); 341 | USEPRT("Options:\n"); 342 | USEPRT(" -display displayname\n"); 343 | USEPRT(" -rc roachcolor\n"); 344 | USEPRT(" -roaches numroaches\n"); 345 | USEPRT(" -speed roachspeed\n"); 346 | USEPRT(" -squish\n"); 347 | USEPRT(" -rgc roachgutscolor\n"); 348 | 349 | exit(1); 350 | } 351 | 352 | void SigHandler() 353 | { 354 | /* 355 | If we are blocked, no roaches are visible and we can just bail 356 | out. If we are not blocked, then let the main procedure clean 357 | up the root window. 358 | */ 359 | if (eventBlock) 360 | { 361 | XCloseDisplay(display); 362 | exit(0); 363 | } 364 | else 365 | { 366 | done = 1; 367 | } 368 | } 369 | 370 | /* 371 | Find the root or virtual root window. 372 | */ 373 | Window FindRootWindow() 374 | { 375 | Atom actualType; 376 | Atom swmVroot; 377 | int actualFormat; 378 | unsigned char *newRoot; 379 | unsigned int numChildren; 380 | unsigned long bytesAfter; 381 | unsigned long nItems; 382 | Window *children; 383 | Window parentReturn; 384 | Window realRoot; 385 | Window rootReturn; 386 | Window rootWin; 387 | 388 | /* 389 | Get real root window. 390 | */ 391 | realRoot = rootWin = RootWindow(display, screen); 392 | 393 | /* 394 | Get atom for virtual root property. If the atom doesn't 395 | exist, we can assume the corresponding property does not 396 | exist. 397 | */ 398 | swmVroot = XInternAtom(display, "__SWM_VROOT", True); 399 | 400 | if (swmVroot == None) 401 | return rootWin; 402 | 403 | /* 404 | Run children of root, looking for a virtual root. 405 | */ 406 | XQueryTree(display, 407 | rootWin, 408 | &rootReturn, 409 | &parentReturn, 410 | &children, 411 | &numChildren); 412 | 413 | for (int cx = 0; cx < numChildren; cx++) 414 | { 415 | newRoot = NULL; 416 | nItems = 0; 417 | 418 | if (XGetWindowProperty(display, 419 | children[cx], 420 | swmVroot, 421 | 0, 422 | 1, 423 | False, 424 | XA_WINDOW, 425 | &actualType, 426 | &actualFormat, 427 | &nItems, 428 | &bytesAfter, 429 | &newRoot) == Success && actualFormat != None) 430 | { 431 | if (nItems >= 1) 432 | rootWin = *newRoot; 433 | 434 | if (newRoot) 435 | XFree(newRoot); 436 | } 437 | 438 | if (rootWin != realRoot) 439 | break; 440 | } 441 | 442 | XFree(children); 443 | 444 | return rootWin; 445 | } 446 | 447 | /* 448 | Generate random integer between 0 and maxVal-1. 449 | */ 450 | int RandInt(int maxVal) 451 | { 452 | return rand() % maxVal; 453 | } 454 | 455 | /* 456 | Check for roach completely in specified rectangle. 457 | */ 458 | int RoachInRect(Roach *roach, int rx, int ry, int x, int y, unsigned int width, unsigned int height) 459 | { 460 | if (rx < x) 461 | return 0; 462 | 463 | if ((rx + roach->rp->width) > (x + width)) 464 | return 0; 465 | 466 | if (ry < y) 467 | return 0; 468 | 469 | if ((ry + roach->rp->height) > (y + height)) 470 | return 0; 471 | 472 | return 1; 473 | } 474 | 475 | /* 476 | Check for roach overlapping specified rectangle. 477 | */ 478 | int RoachOverRect(Roach *roach, int rx, int ry, int x, int y, unsigned int width, unsigned int height) 479 | { 480 | if (rx >= (x + width)) 481 | return 0; 482 | 483 | if ((rx + roach->rp->width) <= x) 484 | return 0; 485 | 486 | if (ry >= (y + height)) 487 | return 0; 488 | 489 | if ((ry + roach->rp->height) <= y) 490 | return 0; 491 | 492 | return 1; 493 | } 494 | 495 | /* 496 | Give birth to a roach. 497 | */ 498 | void AddRoach() 499 | { 500 | Roach *r; 501 | 502 | if (curRoaches < maxRoaches) 503 | { 504 | r = &roaches[curRoaches++]; 505 | r->index = RandInt(ROACH_HEADINGS); 506 | r->rp = &roachPix[r->index]; 507 | r->x = RandInt(display_width - r->rp->width); 508 | r->y = RandInt(display_height - r->rp->height); 509 | r->intX = -1; 510 | r->intY = -1; 511 | r->hidden = 0; 512 | r->steps = RandInt((int) turnSpeed); 513 | r->turnLeft = RandInt(100) >= 50; 514 | } 515 | } 516 | 517 | /* 518 | Turn a roach. 519 | */ 520 | void TurnRoach(Roach *roach) 521 | { 522 | if (roach->index != (roach->rp - roachPix)) 523 | return; 524 | 525 | if (roach->turnLeft) 526 | { 527 | roach->index += (RandInt(30) / 10) + 1; 528 | 529 | if (roach->index >= ROACH_HEADINGS) 530 | roach->index -= ROACH_HEADINGS; 531 | } 532 | else 533 | { 534 | roach->index -= (RandInt(30) / 10) + 1; 535 | 536 | if (roach->index < 0) 537 | roach->index += ROACH_HEADINGS; 538 | } 539 | } 540 | 541 | /* 542 | Move a roach. 543 | */ 544 | void MoveRoach(int rx) 545 | { 546 | float newX; 547 | float newY; 548 | Roach *roach; 549 | 550 | roach = &roaches[rx]; 551 | newX = roach->x + (roachSpeed * roach->rp->cosine); 552 | newY = roach->y - (roachSpeed * roach->rp->sine); 553 | 554 | if (RoachInRect(roach, 555 | (int) newX, (int) newY, 556 | 0, 0, 557 | display_width, display_height)) 558 | { 559 | roach->x = newX; 560 | roach->y = newY; 561 | 562 | if (roach->steps-- <= 0) 563 | { 564 | TurnRoach(roach); 565 | roach->steps = RandInt((int) turnSpeed); 566 | 567 | /* 568 | Previously, roaches would just go around in circles. 569 | This makes their movement more interesting (and disgusting too!). 570 | */ 571 | if (RandInt(100) >= 80) 572 | roach->turnLeft ^= 1; 573 | } 574 | 575 | /* This is a kind of anti-collision algorithm which doesn't do what it is supposed to do, 576 | it eats CPU time and sometimes makes roaches spin around very crazy. Therefore it is 577 | commented out. 578 | 579 | for (int ii = rx + 2; ii < curRoaches; ii++) { 580 | r2 = &roaches[ii]; 581 | 582 | if (RoachOverRect(roach, 583 | (int) newX, (int) newY, 584 | r2->intX, r2->intY, 585 | (unsigned int) r2->rp->width, (unsigned int) r2->rp->height)) 586 | TurnRoach(roach); 587 | 588 | } */ 589 | } 590 | else 591 | { 592 | TurnRoach(roach); 593 | } 594 | } 595 | 596 | /* 597 | Draw all roaches. 598 | */ 599 | void DrawRoaches() 600 | { 601 | Roach *roach; 602 | 603 | for (int rx = 0; rx < curRoaches; rx++) 604 | { 605 | roach = &roaches[rx]; 606 | 607 | if (!roach->hidden) 608 | { 609 | XClearArea(display, 610 | rootWin, 611 | roach->intX, 612 | roach->intY, 613 | (unsigned int) roach->rp->width, 614 | (unsigned int) roach->rp->height, 615 | False); 616 | 617 | roach->intX = (int) roach->x; 618 | roach->intY = (int) roach->y; 619 | roach->rp = &roachPix[roach->index]; 620 | 621 | XSetStipple(display, gc, roach->rp->pixmap); 622 | XSetTSOrigin(display, gc, roach->intX, roach->intY); 623 | XFillRectangle(display, 624 | rootWin, 625 | gc, 626 | roach->intX, 627 | roach->intY, 628 | (unsigned int) roach->rp->width, 629 | (unsigned int) roach->rp->height); 630 | } 631 | else 632 | { 633 | roach->intX = -1; 634 | } 635 | } 636 | } 637 | 638 | /* 639 | Cover root window to erase roaches. 640 | */ 641 | void CoverRoot() 642 | { 643 | long wamask; 644 | Window roachWin; 645 | XSetWindowAttributes xswa; 646 | 647 | xswa.background_pixmap = ParentRelative; 648 | xswa.override_redirect = True; 649 | wamask = CWBackPixmap | CWOverrideRedirect; 650 | roachWin = XCreateWindow(display, rootWin, 651 | 0, 0, 652 | display_width, display_height, 653 | 0, 654 | CopyFromParent, InputOutput, CopyFromParent, 655 | (unsigned long) wamask, &xswa); 656 | XLowerWindow(display, roachWin); 657 | XMapWindow(display, roachWin); 658 | XFlush(display); 659 | } 660 | 661 | #if !GRAB_SERVER 662 | int RoachErrors(Display *display, XErrorEvent *err) 663 | { 664 | errorVal = err->error_code; 665 | 666 | return 0; 667 | } 668 | #endif /* GRAB_SERVER */ 669 | 670 | /* 671 | Calculate visible region of root window. 672 | */ 673 | int CalcRootVisible() 674 | { 675 | int winX, winY; 676 | Region covered; 677 | Region visible; 678 | unsigned int borderWidth; 679 | unsigned int depth; 680 | unsigned int nChildren; 681 | unsigned int winHeight, winWidth; 682 | Window *children; 683 | Window dummy; 684 | XRectangle rect; 685 | XWindowAttributes wa; 686 | 687 | /* 688 | If we don't grab the server, the XGetWindowAttribute or XGetGeometry 689 | calls can abort us. On the other hand, the server grabs can make for 690 | some annoying delays. 691 | */ 692 | #if GRAB_SERVER 693 | XGrabServer(display); 694 | #else 695 | XSetErrorHandler(RoachErrors); 696 | #endif 697 | 698 | /* 699 | Get children of root. 700 | */ 701 | XQueryTree(display, rootWin, &dummy, &dummy, &children, &nChildren); 702 | 703 | /* 704 | For each mapped child, add the window rectangle to the covered 705 | region. 706 | */ 707 | covered = XCreateRegion(); 708 | 709 | for (int wx = 0; wx < nChildren; wx++) 710 | { 711 | if (XEventsQueued(display, QueuedAlready)) 712 | { 713 | XDestroyRegion(covered); 714 | return 1; 715 | } 716 | 717 | errorVal = 0; 718 | XGetWindowAttributes(display, children[wx], &wa); 719 | 720 | if (errorVal) 721 | continue; 722 | 723 | if (wa.class == InputOutput && wa.map_state == IsViewable) 724 | { 725 | XGetGeometry(display, children[wx], &dummy, 726 | &winX, &winY, 727 | &winWidth, &winHeight, 728 | &borderWidth, &depth); 729 | 730 | if (errorVal) 731 | continue; 732 | 733 | rect.x = (short) winX; 734 | rect.y = (short) winY; 735 | 736 | rect.width = (unsigned short) (winWidth + (borderWidth * 2)); 737 | rect.height = (unsigned short) (winHeight + (borderWidth * 2)); 738 | 739 | XUnionRectWithRegion(&rect, covered, covered); 740 | } 741 | } 742 | 743 | XFree(children); 744 | 745 | #if GRAB_SERVER 746 | XUngrabServer(display); 747 | #else 748 | XSetErrorHandler((ErrorHandler *) NULL); 749 | #endif 750 | 751 | /* 752 | Subtract the covered region from the root window region. 753 | */ 754 | visible = XCreateRegion(); 755 | 756 | rect.x = 0; 757 | rect.y = 0; 758 | 759 | rect.width = (unsigned short) display_width; 760 | rect.height = (unsigned short) display_height; 761 | 762 | XUnionRectWithRegion(&rect, visible, visible); 763 | XSubtractRegion(visible, covered, visible); 764 | XDestroyRegion(covered); 765 | 766 | /* 767 | Save visible region globally. 768 | */ 769 | if (rootVisible) 770 | XDestroyRegion(rootVisible); 771 | 772 | rootVisible = visible; 773 | 774 | /* 775 | Mark all roaches visible. 776 | */ 777 | for (int wx = 0; wx < curRoaches; wx++) 778 | roaches[wx].hidden = 0; 779 | 780 | return 0; 781 | } 782 | 783 | /* 784 | Mark hidden roaches. 785 | */ 786 | int MarkHiddenRoaches() 787 | { 788 | int nVisible; 789 | Roach *r; 790 | 791 | nVisible = 0; 792 | 793 | for (int rx = 0; rx < curRoaches; rx++) 794 | { 795 | r = &roaches[rx]; 796 | 797 | if (!r->hidden) 798 | { 799 | if (r->intX > 0 && XRectInRegion(rootVisible, 800 | r->intX, 801 | r->intY, 802 | (unsigned int) r->rp->width, 803 | (unsigned int) r->rp->height) == RectangleOut) 804 | r->hidden = 1; 805 | else 806 | nVisible++; 807 | } 808 | } 809 | 810 | return nVisible; 811 | } 812 | 813 | /* 814 | Allocate a color by name. 815 | */ 816 | Pixel AllocNamedColor(char *colorName, Pixel dfltPix) 817 | { 818 | Pixel pix; 819 | XColor exactcolor; 820 | XColor scrncolor; 821 | 822 | if (XAllocNamedColor(display, 823 | DefaultColormap(display, screen), 824 | colorName, 825 | &scrncolor, 826 | &exactcolor)) 827 | pix = scrncolor.pixel; 828 | else 829 | pix = dfltPix; 830 | 831 | return pix; 832 | } 833 | 834 | /* 835 | * Check to see if we have to squish any roaches. 836 | */ 837 | void checkSquish(XButtonEvent *buttonEvent) 838 | { 839 | int x; 840 | int y; 841 | Roach *r; 842 | 843 | x = buttonEvent->x; 844 | y = buttonEvent->y; 845 | 846 | for (int rx = 0; rx < curRoaches; rx++) 847 | { 848 | r = &roaches[rx]; 849 | 850 | if (r->rp == NULL) 851 | continue; 852 | 853 | if (x > r->intX && x < (r->intX + r->rp->width) && y > r->intY && y < (r->intY + r->rp->height)) 854 | { 855 | XSetStipple(display, gutsGC, squishMap); 856 | XSetTSOrigin(display, gutsGC, r->intX, r->intY); 857 | XFillRectangle(display, 858 | rootWin, 859 | gutsGC, 860 | r->intX, 861 | r->intY, 862 | squish_width, 863 | squish_height); 864 | /* 865 | * Delete the roach 866 | */ 867 | for (int i = rx; i < curRoaches - 1; i++) 868 | roaches[i] = roaches[i + 1]; 869 | 870 | curRoaches--; 871 | rx--; 872 | } 873 | } 874 | } 875 | -------------------------------------------------------------------------------- /xroach.man: -------------------------------------------------------------------------------- 1 | .TH XROACH 1 "Release 4" "X Version 11" 2 | .SH NAME 3 | xroach \- cockroaches hide under your windows 4 | .SH SYNOPSIS 5 | .B xroach 6 | [-option .,..] 7 | .SH DESCRIPTION 8 | .I Xroach 9 | displays disgusting cockroaches on your root window. These creapy crawlies 10 | scamper 11 | around until they find a window to hide under. Whenever you move or iconify 12 | a window, the exposed orthopteras again scamper for cover. 13 | .SH OPTIONS 14 | .TP 8 15 | .B \-display \fIdisplay_name\fB 16 | Drop the roaches on the given display. Make sure the display is nearby, so you 17 | can hear the screams. 18 | .TP 8 19 | .B \-rc \fIroach_color\fB 20 | Use the given string as the color for the bugs instead of the default "black". 21 | .TP 8 22 | .B \-speed \fIroach_speed\fB 23 | Use the given speed for the insects instead of the default 20.0. For example, 24 | in winter the speed should be set to 5.0. In summer, 30.0 might be about 25 | right. 26 | .TP 8 27 | .B \-roaches \fInum_roaches\fB 28 | This is the number of the little critters. Default is 10. 29 | .TP 8 30 | .B \-squish 31 | Enables roach squishing. Point and shoot with any mouse button. 32 | .TP 8 33 | .B \-rgc \fIroach_gut_color\fB 34 | Sets color of the guts that spill out of squished roaches. We recommend 35 | yellowgreen. 36 | .SH BUGS 37 | As given by the -roaches option. Default is 10. 38 | .SH COPYRIGHT 39 | Copyright 1991 by J.T. Anderson 40 | .SH AUTHORS 41 | J.T. Anderson 42 | (jta@locus.com) 43 | .SH DEDICATION 44 | Greg McFarlane 45 | (gregm@otc.otca.oz.au) 46 | .SH "SEE ALSO" 47 | xroachmotel(1), xddt(1) 48 | 49 | --------------------------------------------------------------------------------