diff --git a/hll/SACT2.c b/hll/SACT2.c index 88fa7b4..835657b 100644 --- a/hll/SACT2.c +++ b/hll/SACT2.c @@ -74,7 +74,7 @@ hll_unimplemented(SACT2, SP_SaveCG); // int SP_Create(int nSP, int nWidth, int nHeight, int nR, int nG, int nB, int nBlendRate) hll_defun_inline(SP_Create, sact_SP_Create(a[0].i, a[1].i, a[2].i, a[3].i, a[4].i, a[5].i, a[6].i)); // int SP_CreatePixelOnly(int nSP, int nWidth, int nHeight) -hll_unimplemented(SACT2, SP_CreatePixelOnly); +hll_defun_inline(SP_CreatePixelOnly, sact_SP_CreatePixelOnly(a[0].i, a[1].i, a[2].i)); // int SP_CreateCustom(int nSP) hll_unimplemented(SACT2, SP_CreateCustom); // int SP_Delete(int nSP) @@ -430,7 +430,7 @@ hll_warn_unimplemented(SACT2, Music_Fade, 1); // int Music_StopFade(int nCh) hll_warn_unimplemented(SACT2, Music_StopFade, 1); // int Music_IsFade(int nCh) -hll_warn_unimplemented(SACT2, Music_IsFade, 1); +hll_warn_unimplemented(SACT2, Music_IsFade, 0); // int Music_Pause(int nCh) hll_warn_unimplemented(SACT2, Music_Pause, 1); // int Music_Restart(int nCh) diff --git a/sact.h b/sact.h index 3d58069..70b59f6 100644 --- a/sact.h +++ b/sact.h @@ -52,6 +52,7 @@ int sact_SP_GetUnuseNum(int min); int sact_SP_GetMaxZ(void); int sact_SP_SetCG(int sp, int cg); int sact_SP_Create(int sp, int width, int height, int r, int g, int b, int a); +int sact_SP_CreatePixelOnly(int sp, int width, int height); int sact_SP_Delete(int sp); int sact_SP_SetZ(int sp, int z); int sact_SP_ExistsAlpha(int sp_no); diff --git a/sact_graphics.c b/sact_graphics.c index 9f0b71b..76ebd79 100644 --- a/sact_graphics.c +++ b/sact_graphics.c @@ -123,15 +123,13 @@ int sact_SP_SetCG(int sp_no, int cg_no) } -int sact_SP_Create(int sp_no, int width, int height, int r, int g, int b, int a) +static struct sact_sprite *create_sprite(int sp_no, int width, int height, int r, int g, int b, int a) { struct sact_sprite *sp; - if (sp_no < 0) VM_ERROR("Invalid sprite number: %d", sp_no); if (!(sp = sact_get_sprite(sp_no))) sp = alloc_sprite(sp_no); - sp->color = (SDL_Color) { .r = r, .g = g, .b = b, .a = a }; sp->rect.w = width; sp->rect.h = height; @@ -141,6 +139,18 @@ int sact_SP_Create(int sp_no, int width, int height, int r, int g, int b, int a) sp->cg = cg_init(); sprite_register(sp); } + return sp; +} + +int sact_SP_Create(int sp_no, int width, int height, int r, int g, int b, int a) +{ + create_sprite(sp_no, width, height, r, g, b, a); + return 1; +} + +int sact_SP_CreatePixelOnly(int sp_no, int width, int height) +{ + create_sprite(sp_no, width, height, 0, 0, 0, 255); return 1; }