diff --git a/LibMultiSpacc/Examples/Pong/Pong.c b/LibMultiSpacc/Examples/Pong/Pong.c index 849f9d6..2baf13e 100644 --- a/LibMultiSpacc/Examples/Pong/Pong.c +++ b/LibMultiSpacc/Examples/Pong/Pong.c @@ -1,5 +1,8 @@ #include "../../LibMultiSpacc/MultiSpacc.h" +#define iabs(x) (((x) >= 0) ? (x) : -(x)) +#define maxOf2(a, b) (((a + b) / 2) + (iabs(a - b) / 2)) + #define AppName "Pong" bool paused = false; @@ -28,12 +31,13 @@ MultiSpacc_Surface *background; MultiSpacc_Surface *tilesImg; MultiSpacc_SpritesMap paddleSxSpriteMap, paddleDxSpriteMap; -MultiSpacc_TilesMap divisorTileMap, borderTileMap; +MultiSpacc_TilesMap divisorTileMap, borderTileMap, tempTileMap; -#define BallSize 8 -#define PaddleWidth 8 +#define TileSize 8 +#define BallSize TileSize +#define PaddleWidth TileSize #define PaddleHeightTl 4 -#define PaddleHeightPx 8*PaddleHeightTl +#define PaddleHeightPx TileSize*PaddleHeightTl #define BallTile 128 #define PaddleTile 129 @@ -49,9 +53,19 @@ MultiSpacc_TilesMap divisorTileMap, borderTileMap; #define PaddleDxX windowConfig.width - 2*PaddleWidth #define PaddleAccel 4 -#define PaddleMarginXPx 8 -#define PaddleMarginYPx 8 -#define ScreenMarginYPx 8 +#define PaddleMarginXPx TileSize +#define PaddleMarginYPx TileSize +#define ScreenMarginYPx TileSize + +#define StaticScreenMaxSidePx maxOf2(MultiSpacc_StaticScreenWidth, MultiSpacc_StaticScreenHeight) +#define StaticScreenMaxSideTl (StaticScreenMaxSidePx/TileSize) + +#define RealScreenMaxSidePx maxOf2(windowConfig.width, windowConfig.height) +#define RealScreenMaxSideTl (RealScreenMaxSidePx/TileSize) + +int tempX[StaticScreenMaxSideTl + MultiSpacc_StaticScreenSizeNull]; +int tempY[StaticScreenMaxSideTl + MultiSpacc_StaticScreenSizeNull]; +int tempChr[StaticScreenMaxSideTl + MultiSpacc_StaticScreenSizeNull]; // TODO: more defines for frequently-used expressions @@ -187,22 +201,45 @@ bool FixedUpdate( void *args ) return true; } -// TODO: flip needed sprites, must implement flags in MultiSpacc API first -// TODO: set metatile without cycle here bool DisplayBorders(void) { int i; - for( i=1; i<(windowConfig.height/8 - 1); i++ ) + if( MultiSpacc_StaticScreenSizeNull ) { - MultiSpacc_SetTile( windowConfig.width/8/2 , i, DivisorTileDx, tilesImg, background ); - MultiSpacc_SetTile( windowConfig.width/8/2 - 1, i, DivisorTileSx, tilesImg, background ); + tempTileMap.chr = malloc(RealScreenMaxSideTl * sizeof(int)); + tempTileMap.x = malloc(RealScreenMaxSideTl * sizeof(int)); + tempTileMap.y = malloc(RealScreenMaxSideTl * sizeof(int)); } - for( i=0; iwidth = 256; - windowConfig->height = 240; + windowConfig->width = MultiSpacc_StaticScreenWidth; + windowConfig->height = MultiSpacc_StaticScreenHeight; oam_clear(); pal_all(windowConfig->palette); ppu_on_all(); diff --git a/Tools/InstallBuildEnvironment.sh b/Tools/InstallBuildEnvironment.sh index 39ffce7..44289d1 100644 --- a/Tools/InstallBuildEnvironment.sh +++ b/Tools/InstallBuildEnvironment.sh @@ -16,7 +16,7 @@ apt install -y \ ; curl -o /tmp/mingw32.7z https://hlb0.octt.eu.org/Drive/Misc/mingw32-9.2.0.7z.sfx.exe -7z x /tmp/mingw32.7z +7z x /tmp/mingw32.7z || true cp ./mingw32/bin/*.dll ./mingw32/libexec/gcc/mingw32/9.2.0/ mv ./mingw32 /opt/Sdk/mingw32