Changed the sprite drawing functions to save sprite type & alpha.
I've figured out how to implement sprite blending, I'll do it soon.
This commit is contained in:
parent
4447955558
commit
45ee9f6bb5
|
@ -1529,8 +1529,8 @@ void extRotBG(GPU * gpu, u8 num, u8 * DST)
|
||||||
/* if i understand it correct, and it fixes some sprite problems in chameleon shot */
|
/* if i understand it correct, and it fixes some sprite problems in chameleon shot */
|
||||||
/* we have a 15 bit color, and should use the pal entry bits as alpha ?*/
|
/* we have a 15 bit color, and should use the pal entry bits as alpha ?*/
|
||||||
/* http://nocash.emubase.de/gbatek.htm#dsvideoobjs */
|
/* http://nocash.emubase.de/gbatek.htm#dsvideoobjs */
|
||||||
INLINE void render_sprite_BMP (GPU * gpu, u16 l, u8 * dst, u16 * src, u8 * prioTab,
|
INLINE void render_sprite_BMP (GPU * gpu, u16 l, u8 * dst, u16 * src, u8 * dst_alpha, u8 * typeTab, u8 * prioTab,
|
||||||
u8 prio, int lg, int sprX, int x, int xdir)
|
u8 prio, int lg, int sprX, int x, int xdir, u8 alpha)
|
||||||
{
|
{
|
||||||
int i; u16 color;
|
int i; u16 color;
|
||||||
for(i = 0; i < lg; i++, ++sprX, x+=xdir)
|
for(i = 0; i < lg; i++, ++sprX, x+=xdir)
|
||||||
|
@ -1542,13 +1542,17 @@ INLINE void render_sprite_BMP (GPU * gpu, u16 l, u8 * dst, u16 * src, u8 * prioT
|
||||||
{
|
{
|
||||||
/* if we don't draw, do not set prio, or else */
|
/* if we don't draw, do not set prio, or else */
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, color, sprX))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, color, sprX))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = alpha;
|
||||||
|
typeTab[sprX] = 3;
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE void render_sprite_256 ( GPU * gpu, u16 l, u8 * dst, u8 * src, u16 * pal,
|
INLINE void render_sprite_256 ( GPU * gpu, u16 l, u8 * dst, u8 * src, u16 * pal,
|
||||||
u8 * prioTab, u8 prio, int lg, int sprX, int x, int xdir, u8 alpha)
|
u8 * dst_alpha, u8 * typeTab, u8 * prioTab, u8 prio, int lg, int sprX, int x, int xdir, u8 alpha)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
u8 palette_entry;
|
u8 palette_entry;
|
||||||
|
@ -1564,13 +1568,17 @@ INLINE void render_sprite_256 ( GPU * gpu, u16 l, u8 * dst, u8 * src, u16 * pal,
|
||||||
{
|
{
|
||||||
/* if we don't draw, do not set prio, or else */
|
/* if we don't draw, do not set prio, or else */
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, color, sprX))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, color, sprX))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = 16;
|
||||||
|
typeTab[sprX] = (alpha ? 1 : 0);
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE void render_sprite_16 ( GPU * gpu, u16 l, u8 * dst, u8 * src, u16 * pal,
|
INLINE void render_sprite_16 ( GPU * gpu, u16 l, u8 * dst, u8 * src, u16 * pal,
|
||||||
u8 * prioTab, u8 prio, int lg, int sprX, int x, int xdir, u8 alpha)
|
u8 * dst_alpha, u8 * typeTab, u8 * prioTab, u8 prio, int lg, int sprX, int x, int xdir, u8 alpha)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
u8 palette, palette_entry;
|
u8 palette, palette_entry;
|
||||||
|
@ -1589,9 +1597,13 @@ INLINE void render_sprite_16 ( GPU * gpu, u16 l, u8 * dst, u8 * src, u16 * pal,
|
||||||
{
|
{
|
||||||
/* if we don't draw, do not set prio, or else */
|
/* if we don't draw, do not set prio, or else */
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, color, sprX ))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, color, sprX ))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = 16;
|
||||||
|
typeTab[sprX] = (alpha ? 1 : 0);
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INLINE void render_sprite_Win (GPU * gpu, u16 l, u8 * src,
|
INLINE void render_sprite_Win (GPU * gpu, u16 l, u8 * src,
|
||||||
|
@ -1670,7 +1682,7 @@ INLINE BOOL compute_sprite_vars(_OAM_ * spriteInfo, u16 l,
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// SPRITE RENDERING
|
// SPRITE RENDERING
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
void sprite1D(GPU * gpu, u16 l, u8 * dst, u8 * dst_alpha, u8 * typeTab, u8 * prioTab)
|
||||||
{
|
{
|
||||||
struct _DISPCNT * dispCnt = &(gpu->dispx_st)->dispx_DISPCNT.bits;
|
struct _DISPCNT * dispCnt = &(gpu->dispx_st)->dispx_DISPCNT.bits;
|
||||||
_OAM_ * spriteInfo = (_OAM_ *)(gpu->oam + (nbShow-1));// + 127;
|
_OAM_ * spriteInfo = (_OAM_ *)(gpu->oam + (nbShow-1));// + 127;
|
||||||
|
@ -1797,9 +1809,13 @@ void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
if (colour && (prioTab[sprX]>=prio))
|
if (colour && (prioTab[sprX]>=prio))
|
||||||
{
|
{
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, T1ReadWord(pal, colour<<1), sprX ))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, T1ReadWord(pal, colour<<1), sprX ))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = 16;
|
||||||
|
typeTab[sprX] = spriteInfo->Mode;
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add the rotation/scale coeficients, here the rotation/scaling
|
// Add the rotation/scale coeficients, here the rotation/scaling
|
||||||
// is performed
|
// is performed
|
||||||
|
@ -1832,9 +1848,13 @@ void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
if((colour&0x8000) && (prioTab[sprX]>=prio))
|
if((colour&0x8000) && (prioTab[sprX]>=prio))
|
||||||
{
|
{
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, colour, sprX))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, colour, sprX))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = spriteInfo->PaletteIndex;
|
||||||
|
typeTab[sprX] = spriteInfo->Mode;
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add the rotation/scale coeficients, here the rotation/scaling
|
// Add the rotation/scale coeficients, here the rotation/scaling
|
||||||
// is performed
|
// is performed
|
||||||
|
@ -1869,9 +1889,13 @@ void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
if(colour && (prioTab[sprX]>=prio))
|
if(colour && (prioTab[sprX]>=prio))
|
||||||
{
|
{
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, T1ReadWord(pal, colour<<1), sprX ))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, T1ReadWord(pal, colour<<1), sprX ))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = 16;
|
||||||
|
typeTab[sprX] = spriteInfo->Mode;
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add the rotation/scale coeficients, here the rotation/scaling
|
// Add the rotation/scale coeficients, here the rotation/scaling
|
||||||
// is performed
|
// is performed
|
||||||
|
@ -1918,7 +1942,7 @@ void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
}
|
}
|
||||||
CHECK_SPRITE(1);
|
CHECK_SPRITE(1);
|
||||||
|
|
||||||
render_sprite_BMP (gpu, l, dst, (u16*)src, prioTab, prio, lg, sprX, x, xdir);
|
render_sprite_BMP (gpu, l, dst, (u16*)src, dst_alpha, typeTab, prioTab, prio, lg, sprX, x, xdir, spriteInfo->PaletteIndex);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1933,7 +1957,7 @@ void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
pal = (u16*)(ARM9Mem.ARM9_VMEM + 0x200 + gpu->core *0x400);
|
pal = (u16*)(ARM9Mem.ARM9_VMEM + 0x200 + gpu->core *0x400);
|
||||||
|
|
||||||
//sprwin test hack - to enable, only draw win and not sprite
|
//sprwin test hack - to enable, only draw win and not sprite
|
||||||
render_sprite_256 (gpu, l, dst, src, pal, prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
render_sprite_256 (gpu, l, dst, src, pal, dst_alpha, typeTab, prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
||||||
//render_sprite_Win (gpu, l, src, spriteInfo->Depth, lg, sprX, x, xdir);
|
//render_sprite_Win (gpu, l, src, spriteInfo->Depth, lg, sprX, x, xdir);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
@ -1946,7 +1970,7 @@ void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
pal += (spriteInfo->PaletteIndex<<4);
|
pal += (spriteInfo->PaletteIndex<<4);
|
||||||
|
|
||||||
//sprwin test hack - to enable, only draw win and not sprite
|
//sprwin test hack - to enable, only draw win and not sprite
|
||||||
render_sprite_16 (gpu, l, dst, src, pal, prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
render_sprite_16 (gpu, l, dst, src, pal, dst_alpha, typeTab, prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
||||||
//render_sprite_Win (gpu, l, src, spriteInfo->Depth, lg, sprX, x, xdir);
|
//render_sprite_Win (gpu, l, src, spriteInfo->Depth, lg, sprX, x, xdir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1957,7 +1981,7 @@ void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
void sprite2D(GPU * gpu, u16 l, u8 * dst, u8 * dst_alpha, u8 * typeTab, u8 * prioTab)
|
||||||
{
|
{
|
||||||
struct _DISPCNT * dispCnt = &(gpu->dispx_st)->dispx_DISPCNT.bits;
|
struct _DISPCNT * dispCnt = &(gpu->dispx_st)->dispx_DISPCNT.bits;
|
||||||
_OAM_ * spriteInfo = (_OAM_*)(gpu->oam + (nbShow-1));// + 127;
|
_OAM_ * spriteInfo = (_OAM_*)(gpu->oam + (nbShow-1));// + 127;
|
||||||
|
@ -2083,9 +2107,13 @@ void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
if (colour && (prioTab[sprX]>=prio))
|
if (colour && (prioTab[sprX]>=prio))
|
||||||
{
|
{
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, T1ReadWord(pal, colour<<1), sprX ))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, T1ReadWord(pal, colour<<1), sprX ))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = 16;
|
||||||
|
typeTab[sprX] = spriteInfo->Mode;
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add the rotation/scale coeficients, here the rotation/scaling
|
// Add the rotation/scale coeficients, here the rotation/scaling
|
||||||
// is performed
|
// is performed
|
||||||
|
@ -2118,9 +2146,13 @@ void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
if((colour&0x8000) && (prioTab[sprX]>=prio))
|
if((colour&0x8000) && (prioTab[sprX]>=prio))
|
||||||
{
|
{
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, colour, sprX ))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1, 4, dst, colour, sprX ))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = spriteInfo->PaletteIndex;
|
||||||
|
typeTab[sprX] = spriteInfo->Mode;
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add the rotation/scale coeficients, here the rotation/scaling
|
// Add the rotation/scale coeficients, here the rotation/scaling
|
||||||
// is performed
|
// is performed
|
||||||
|
@ -2154,9 +2186,13 @@ void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
if(colour && (prioTab[sprX]>=prio))
|
if(colour && (prioTab[sprX]>=prio))
|
||||||
{
|
{
|
||||||
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, T1ReadWord (pal, colour<<1), sprX))
|
if (gpu->setFinalColorSpr(gpu, sprX << 1,4,dst, T1ReadWord (pal, colour<<1), sprX))
|
||||||
|
{
|
||||||
|
dst_alpha[sprX] = 16;
|
||||||
|
typeTab[sprX] = spriteInfo->Mode;
|
||||||
prioTab[sprX] = prio;
|
prioTab[sprX] = prio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add the rotation/scale coeficients, here the rotation/scaling
|
// Add the rotation/scale coeficients, here the rotation/scaling
|
||||||
// is performed
|
// is performed
|
||||||
|
@ -2202,7 +2238,7 @@ void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
}
|
}
|
||||||
CHECK_SPRITE(2);
|
CHECK_SPRITE(2);
|
||||||
|
|
||||||
render_sprite_BMP (gpu, l, dst, (u16*)src, prioTab, prio, lg, sprX, x, xdir);
|
render_sprite_BMP (gpu, l, dst, (u16*)src, dst_alpha, typeTab, prioTab, prio, lg, sprX, x, xdir, spriteInfo->PaletteIndex);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -2218,7 +2254,7 @@ void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
pal = (u16*)(ARM9Mem.ARM9_VMEM + 0x200 + gpu->core *0x400);
|
pal = (u16*)(ARM9Mem.ARM9_VMEM + 0x200 + gpu->core *0x400);
|
||||||
|
|
||||||
render_sprite_256 (gpu, l, dst, src, pal,
|
render_sprite_256 (gpu, l, dst, src, pal,
|
||||||
prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
dst_alpha, typeTab, prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -2230,7 +2266,7 @@ void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab)
|
||||||
|
|
||||||
pal += (spriteInfo->PaletteIndex<<4);
|
pal += (spriteInfo->PaletteIndex<<4);
|
||||||
render_sprite_16 (gpu, l, dst, src, pal,
|
render_sprite_16 (gpu, l, dst, src, pal,
|
||||||
prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
dst_alpha, typeTab, prioTab, prio, lg, sprX, x, xdir, spriteInfo->Mode == 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2412,6 +2448,8 @@ static void GPU_ligne_layer(NDS_Screen * screen, u16 l)
|
||||||
u8 * dst = (u8 *)(GPU_screen) + (screen->offset + l) * 512;
|
u8 * dst = (u8 *)(GPU_screen) + (screen->offset + l) * 512;
|
||||||
itemsForPriority_t * item;
|
itemsForPriority_t * item;
|
||||||
u8 spr[512];
|
u8 spr[512];
|
||||||
|
u8 sprAlpha[256];
|
||||||
|
u8 sprType[256];
|
||||||
u8 sprPrio[256];
|
u8 sprPrio[256];
|
||||||
u8 prio;
|
u8 prio;
|
||||||
u16 i16;
|
u16 i16;
|
||||||
|
@ -2445,6 +2483,8 @@ static void GPU_ligne_layer(NDS_Screen * screen, u16 l)
|
||||||
!gpu->LayersEnable[4]) return;
|
!gpu->LayersEnable[4]) return;
|
||||||
|
|
||||||
// init background color & priorities
|
// init background color & priorities
|
||||||
|
memset(sprAlpha, 0, 256);
|
||||||
|
memset(sprType, 0, 256);
|
||||||
memset(sprPrio,0xFF,256);
|
memset(sprPrio,0xFF,256);
|
||||||
memset(sprWin,0,256);
|
memset(sprWin,0,256);
|
||||||
|
|
||||||
|
@ -2457,7 +2497,7 @@ static void GPU_ligne_layer(NDS_Screen * screen, u16 l)
|
||||||
if (gpu->LayersEnable[4])
|
if (gpu->LayersEnable[4])
|
||||||
{
|
{
|
||||||
for(int i = 0; i< 256; ++i) T2WriteWord(spr, i << 1, c);
|
for(int i = 0; i< 256; ++i) T2WriteWord(spr, i << 1, c);
|
||||||
gpu->spriteRender(gpu, l, dst, spr, sprPrio);
|
gpu->spriteRender(gpu, l, spr, sprAlpha, sprType, sprPrio);
|
||||||
|
|
||||||
for(int i = 0; i<256; i++)
|
for(int i = 0; i<256; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -669,7 +669,7 @@ struct _GPU
|
||||||
BOOL (*setFinalColorSpr)(GPU *gpu, u32 passing, u8 bgnum, u8 *dst, u16 color, u16 x);
|
BOOL (*setFinalColorSpr)(GPU *gpu, u32 passing, u8 bgnum, u8 *dst, u16 color, u16 x);
|
||||||
BOOL (*setFinalColorBck)(GPU *gpu, u32 passing, u8 bgnum, u8 *dst, u16 color, u16 x);
|
BOOL (*setFinalColorBck)(GPU *gpu, u32 passing, u8 bgnum, u8 *dst, u16 color, u16 x);
|
||||||
BOOL (*setFinalColor3D) (GPU *gpu, u32 passing, u8 *dst, u16 color, u8 alpha, u16 x);
|
BOOL (*setFinalColor3D) (GPU *gpu, u32 passing, u8 *dst, u16 color, u8 alpha, u16 x);
|
||||||
void (*spriteRender) (GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab);
|
void (*spriteRender) (GPU * gpu, u16 l, u8 * dst, u8 * dst_alpha, u8 * typeTab, u8 * prioTab);
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
// normally should have same addresses
|
// normally should have same addresses
|
||||||
|
@ -701,8 +701,8 @@ void GPU_DeInit(GPU *);
|
||||||
void textBG(GPU * gpu, u8 num, u8 * DST); //Draw text based background
|
void textBG(GPU * gpu, u8 num, u8 * DST); //Draw text based background
|
||||||
void rotBG(GPU * gpu, u8 num, u8 * DST);
|
void rotBG(GPU * gpu, u8 num, u8 * DST);
|
||||||
void extRotBG(GPU * gpu, u8 num, u8 * DST);
|
void extRotBG(GPU * gpu, u8 num, u8 * DST);
|
||||||
void sprite1D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab);
|
void sprite1D(GPU * gpu, u16 l, u8 * dst, u8 * dst_alpha, u8 * typeTab, u8 * prioTab);
|
||||||
void sprite2D(GPU * gpu, u16 l, u8 * buf_under, u8 * dst, u8 * prioTab);
|
void sprite2D(GPU * gpu, u16 l, u8 * dst, u8 * dst_alpha, u8 * typeTab, u8 * prioTab);
|
||||||
|
|
||||||
extern const short sizeTab[4][4][2];
|
extern const short sizeTab[4][4][2];
|
||||||
extern const size sprSizeTab[4][4];
|
extern const size sprSizeTab[4][4];
|
||||||
|
|
|
@ -89,7 +89,8 @@ LRESULT OamView_OnPaint(HWND hwnd, oamview_struct *win, WPARAM wParam, LPARAM lP
|
||||||
OAM * oam = &win->oam[win->num];
|
OAM * oam = &win->oam[win->num];
|
||||||
char text[80];
|
char text[80];
|
||||||
u16 bitmap[256*192];
|
u16 bitmap[256*192];
|
||||||
u16 bitmap_under[256*192];
|
u8 bitmap_alpha[256*192];
|
||||||
|
u8 type[256*192];
|
||||||
u8 prio[256*192];
|
u8 prio[256*192];
|
||||||
BITMAPV4HEADER bmi;
|
BITMAPV4HEADER bmi;
|
||||||
u16 i;
|
u16 i;
|
||||||
|
@ -110,7 +111,8 @@ LRESULT OamView_OnPaint(HWND hwnd, oamview_struct *win, WPARAM wParam, LPARAM lP
|
||||||
for(i = 0; i < 256*192; ++i)
|
for(i = 0; i < 256*192; ++i)
|
||||||
{
|
{
|
||||||
bitmap[i] = 0x7F0F;
|
bitmap[i] = 0x7F0F;
|
||||||
bitmap_under[i] = 0x7F0F;
|
bitmap_alpha[i] = 0;
|
||||||
|
type[i] = 0;
|
||||||
prio[i] = 4;
|
prio[i] = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +179,7 @@ LRESULT OamView_OnPaint(HWND hwnd, oamview_struct *win, WPARAM wParam, LPARAM lP
|
||||||
|
|
||||||
for(i = 0; i < 192; ++i)
|
for(i = 0; i < 192; ++i)
|
||||||
{
|
{
|
||||||
win->gpu->spriteRender(win->gpu, i, (u8*)(bitmap_under + i*256), (u8*)(bitmap + i*256), prio + i*256);
|
win->gpu->spriteRender(win->gpu, i, (u8*)(bitmap + i*256), bitmap_alpha + i*256, type + i*256, prio + i*256);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetDIBitsToDevice(hdc, 180, 4, 256, 192, 0, 0, 0, 192, bitmap, (BITMAPINFO*)&bmi, DIB_RGB_COLORS);
|
SetDIBitsToDevice(hdc, 180, 4, 256, 192, 0, 0, 0, 192, bitmap, (BITMAPINFO*)&bmi, DIB_RGB_COLORS);
|
||||||
|
|
Loading…
Reference in New Issue