OBE or Optimised Bitmap Encoding is a new technology developed specifically for the Oric to reduce an images memory usage by only storing the bytes that are present in the graphic. This is similar to the analogy of looking at a graphic as a shape rather than a rectangle of memory expanded to encompass it.
OBE accomplishes this by embedding relative screen jumps into the graphic data. Graphics may be frames in a much larger animation and animations usually require a centre-point of which all frames should be alligned to. OBEUTIL facilitates this by having a centrepoint cursor. The start of every graphic will be based on this position and beginning bytes will embed movement steps away from this point to the first byte of the graphic (normally from the top left scanning right and down). It will be common to place a pixel marker on this centre-point, and the user is given the option to delete this byte before compiling the graphic.
OBEUTIL also features a Split-line mode that will scan the image based on each odd line holding a mask and even line a bitmap. In addition to this the user may specify if the first row is a mask or a bitmap. Always be careful to place any centrepoint marker on the bitmap row rather than the mask row when using interlace otherwise consecutive frames may invert the mask and bitmap.
OBEUTIL is written half in BASIC (Editor control, Menu, Encoder) and some ASM (Test Plot OBE, Editor Box Cursor). On bootup OBEUTIL will display a menu.
The process of compiling an image is fairly straight forward.
1) Load your HIRES image (The program will actually load it in the next step)
2) Capture a frame or graphic (Move and resize the box, move the centrepoint cursor and press return to capture the image) On returning to the Menu (ESC) you now have three options
1) Print the OBE object (print the OBE in xa compatible .byt rows with optional label)
2) Save the OBE to Disk
3) Display the OBE (Used for testing that the capture was successful)
After all of these the menu is presented again. This allows you to go back and capture more OBE images.
The embedded movement steps are held in the ranges 24-63 and 152-191 and code 8 to indicate end of data. 24-43 Move columns left (1-20) 44-63 Move columns right (1-20) 152-171 Move rows up (1-20) 172-191 Move rows down (1-20)
If the step size is greater than 20 the movement bytes are repeated. For each graphic byte displayed the cursor is moved right one byte. This prevents wasting movement bytes.