git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

commit b48405ad477a3b870d6f8ae6a412385f99b4bc32
parent 0e76940bf97d7df301f1b67bbbd89fa8015de7a1
Author: Toxa <untoxa@mail.ru>
Date:   Sun, 31 Jan 2021 23:53:14 +0300

Merge branch 'develop' of https://github.com/Zal0/gbdk-2020 into develop

Diffstat:
Mgbdk-lib/examples/gb/metasprites/Makefile1+
Mgbdk-lib/examples/gb/metasprites/metasprites.c8++++----
Mgbdk-support/png2mtspr/png2mtspr.cpp34++++++++++++++++++++++++----------
Mgbdk-support/png2mtspr/png2mtspr.vcxproj1+
4 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/gbdk-lib/examples/gb/metasprites/Makefile b/gbdk-lib/examples/gb/metasprites/Makefile @@ -18,6 +18,7 @@ sprite.c: sprite.png $(BINS): $(CSOURCES) $(CC) $(CFLAGS) -o $(BINS) $(CSOURCES) + mv -f sprite.c sprice.pngc clean: rm -f *.o *.lst *.map *.gb *.ihx *.sym *.cdb *.adb *.asm $(PNGSOURCES:%.png=%.h) $(PNGSOURCES:%.png=%.c) diff --git a/gbdk-lib/examples/gb/metasprites/metasprites.c b/gbdk-lib/examples/gb/metasprites/metasprites.c @@ -93,10 +93,10 @@ void main(void) { hide_metasprite(sprite_metasprites[idx], 0); else switch (rot) { - case 0: hiwater = move_metasprite(sprite_metasprites[idx], 0, 0, PosX >> 4, PosY >> 4); break; - case 1: hiwater = move_metasprite_hflip(sprite_metasprites[idx], 0, 0, PosX >> 4, PosY >> 4); break; - case 2: hiwater = move_metasprite_hvflip(sprite_metasprites[idx], 0, 0, PosX >> 4, PosY >> 4); break; - case 3: hiwater = move_metasprite_vflip(sprite_metasprites[idx], 0, 0, PosX >> 4, PosY >> 4); break; + case 0: hiwater = move_metasprite (sprite_metasprites[idx], 0, 0, (PosX >> 4), (PosY >> 4)); break; + case 1: hiwater = move_metasprite_hflip (sprite_metasprites[idx], 0, 0, (PosX >> 4), (PosY >> 4)); break; + case 2: hiwater = move_metasprite_hvflip(sprite_metasprites[idx], 0, 0, (PosX >> 4), (PosY >> 4)); break; + case 3: hiwater = move_metasprite_vflip (sprite_metasprites[idx], 0, 0, (PosX >> 4), (PosY >> 4)); break; }; // hide rest of the hardware sprites, because amount of sprites differ between animation frames diff --git a/gbdk-support/png2mtspr/png2mtspr.cpp b/gbdk-support/png2mtspr/png2mtspr.cpp @@ -145,10 +145,10 @@ bool FindTile(const Tile& t, unsigned char& idx, unsigned char& props) return false; } -void GetMetaSprite(int _x, int _y, int _w, int _h) +void GetMetaSprite(int _x, int _y, int _w, int _h, int pivot_x, int pivot_y) { - unsigned char last_x = _x; - unsigned char last_y = _y; + unsigned char last_x = _x + pivot_x - 4; + unsigned char last_y = _y + pivot_y - (tile_h == 8 ? 4 : 8); sprites.push_back(MetaSprite()); MetaSprite& mt_sprite = sprites.back(); @@ -187,18 +187,22 @@ int main(int argc, char *argv[]) if(argc < 2) { printf("usage: png2mtspr <file>.png [options]\n"); - printf("-c ouput file (default: <png file>.c)\n"); - printf("-sw <width> metasprites width size (default: png width)\n"); - printf("-sh <height> metasprites height size (default: png height)\n"); - printf("-spr8x8 use SPRITES_8x8 (default: SPRITES_8x16)\n"); - printf("-spr8x16 use SPRITES_8x16 (default: SPRITES_8x16)\n"); - printf("-b <bank> bank (default 0)\n"); + printf("-c ouput file (default: <png file>.c)\n"); + printf("-sw <width> metasprites width size (default: png width)\n"); + printf("-sh <height> metasprites height size (default: png height)\n"); + printf("-px <x coord> metasprites pivot x coordinate (default: metasprites width / 2)\n"); + printf("-py <y coord> metasprites pivot y coordinate (default: metasprites height / 2)\n"); + printf("-spr8x8 use SPRITES_8x8 (default: SPRITES_8x16)\n"); + printf("-spr8x16 use SPRITES_8x16 (default: SPRITES_8x16)\n"); + printf("-b <bank> bank (default 0)\n"); return 0; } //default params int sprite_w = 0; int sprite_h = 0; + int pivot_x = 0xFFFFFF; + int pivot_y = 0xFFFFFF; tile_h = 16; string output_filename = argv[1]; output_filename = output_filename.substr(0, output_filename.size() - 4) + ".c"; @@ -215,6 +219,14 @@ int main(int argc, char *argv[]) { sprite_h = atoi(argv[++ i]); } + if(!strcmp(argv[i], "-px")) + { + pivot_x = atoi(argv[++ i]); + } + else if(!strcmp(argv[i], "-py")) + { + pivot_y = atoi(argv[++ i]); + } else if(!strcmp(argv[i], "-spr8x8")) { tile_h = 8; @@ -257,13 +269,15 @@ int main(int argc, char *argv[]) if(sprite_w == 0) sprite_w = image.w; if(sprite_h == 0) sprite_h = image.h; + if(pivot_x == 0xFFFFFF) pivot_x = sprite_w / 2; + if(pivot_y == 0xFFFFFF) pivot_y = sprite_h / 2; //Extract metasprites for(unsigned int y = 0; y < image.h; y += sprite_h) { for(unsigned int x = 0; x < image.w; x += sprite_w) { - GetMetaSprite(x, y, sprite_w, sprite_h); + GetMetaSprite(x, y, sprite_w, sprite_h, pivot_x, pivot_y); } } diff --git a/gbdk-support/png2mtspr/png2mtspr.vcxproj b/gbdk-support/png2mtspr/png2mtspr.vcxproj @@ -71,6 +71,7 @@ <PropertyGroup Label="UserMacros" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <LinkIncremental>true</LinkIncremental> + <OutDir>$(SolutionDir)..\..\build\gbdk\bin\</OutDir> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <LinkIncremental>true</LinkIncremental>

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.