2021-05-09 20:06:58 +00:00
/* *****************************************************************************
2022-02-23 00:47:00 +00:00
* FX drawBitmap test v1 .31 by Mr . Blinky Apr 2019 - Feb 2022 licenced under CC0
2021-05-09 20:06:58 +00:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* The map and whale images used in this example were made by 2 bitcrook and are
* licenced under CC - BY - NC - SA licence .
2022-02-23 00:47:00 +00:00
* Before this example sketch is uploaded and run on the Arduboy FX , make sure
* the fxdata this sketch has been build and uploaded to the Arduboy FX .
2021-05-09 20:06:58 +00:00
*
2022-02-23 00:47:00 +00:00
* If the Arduboy FX Arduino plugin has been installed you can simply choose the
* ' Build and upload Arduboy FX data ' from the Arduino IDE Tools menu .
*
* Alternatively the fxdata . txt script file can be build using the fxdata - build . py
* Phyton script and the fxdata . bin file can be uploaded using the uploader - gui . py ,
* fxdata - upload . py or flash - writer . py Python script using the - d switch .
2021-05-09 20:06:58 +00:00
*
* This example uses a 816 by 368 pixel image as background and a
* 107 x 69 image for masked sprite . Both can be moved around using the button combos
* below . This example also shows how you can make use of the different draw modes .
*
*
* A Invert the while sprite from black to white and vice versa
* B Show or hide the coordinates in the top left corner
* D - PAD move around the whale sprite
* D - PAD + A move around the whale sprite in single pixel steps
* D - PAD + B move around the background image
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2022-02-23 00:47:00 +00:00
# include <Arduboy2.h> // required to build for Arduboy
# include <ArduboyFX.h> // required to access the FX external flash
# include "fxdata/fxdata.h" // this file contains all references to FX data
2021-05-09 20:06:58 +00:00
# define FRAME_RATE 120
Arduboy2 arduboy ;
bool showposition = true ;
uint8_t select , color ;
int x [ 2 ] ;
int y [ 2 ] ;
void setup ( ) {
arduboy . begin ( ) ;
arduboy . setFrameRate ( FRAME_RATE ) ;
2022-02-23 00:47:00 +00:00
FX : : begin ( FX_DATA_PAGE ) ; // initialise FX chip
2021-05-09 20:06:58 +00:00
}
void loop ( ) {
if ( ! arduboy . nextFrame ( ) ) return ;
arduboy . pollButtons ( ) ;
if ( arduboy . justPressed ( B_BUTTON ) ) showposition = ! showposition ;
if ( arduboy . pressed ( B_BUTTON ) ) select = 0 ;
else select = 1 ;
if ( arduboy . justPressed ( A_BUTTON ) ) color ^ = dbmReverse ;
if ( arduboy . pressed ( A_BUTTON ) )
{
if ( arduboy . justPressed ( UP_BUTTON ) ) y [ select ] - - ;
if ( arduboy . justPressed ( DOWN_BUTTON ) ) y [ select ] + + ;
if ( arduboy . justPressed ( LEFT_BUTTON ) ) x [ select ] - - ;
if ( arduboy . justPressed ( RIGHT_BUTTON ) ) x [ select ] + + ;
}
else
{
if ( arduboy . pressed ( UP_BUTTON ) ) y [ select ] - - ;
if ( arduboy . pressed ( DOWN_BUTTON ) ) y [ select ] + + ;
if ( arduboy . pressed ( LEFT_BUTTON ) ) x [ select ] - - ;
if ( arduboy . pressed ( RIGHT_BUTTON ) ) x [ select ] + + ;
}
FX : : drawBitmap ( x [ 0 ] , y [ 0 ] , mapGfx , 0 , dbmNormal ) ;
FX : : drawBitmap ( x [ 1 ] , y [ 1 ] , whaleGfx , 0 , dbmMasked | color ) ; // comment this line and uncomment one below to test the drawing modes
//FX::drawBitmap(x[1],y[1],whaleGfx,0,dbmMasked | dbmBlack); // black pixels as drawn solid. White pixels are transparent. Mask is ignored.
//FX::drawBitmap(x[1],y[1],whaleGfx,0,dbmMasked | dbmWhite); // white pixels are drawn solid. Black pixels are transparent. Mask is ignored.
//FX::drawBitmap(x[1],y[1],whaleGfx,0,dbmMasked | dbmInvert); // white pixels are xored together with background pixels. Mask is ignored.
//FX::drawBitmap(x[1],y[1],whaleGfx,0,dbmMasked | dbmReverse); // Inverts the image: white pixels are drawn as black, black pixels are drawn as white pixels. Mask is applied.
if ( showposition )
{
arduboy . setCursor ( 0 , 0 ) ;
arduboy . print ( x [ select ] ) ;
arduboy . setCursor ( 0 , 8 ) ;
arduboy . print ( y [ select ] ) ;
}
2022-02-23 00:47:00 +00:00
FX : : display ( CLEAR_BUFFER ) ; // Using CLEAR_BUFFER will clear the display buffer after it is displayed
2021-05-09 20:06:58 +00:00
}