Finish Matching sprput.c
This commit is contained in:
parent
2bb8df1740
commit
d21be86e45
3 changed files with 79 additions and 9 deletions
|
|
@ -7,6 +7,7 @@
|
||||||
#include "dolphin/mtx.h"
|
#include "dolphin/mtx.h"
|
||||||
#include "dolphin/gx/GXStruct.h"
|
#include "dolphin/gx/GXStruct.h"
|
||||||
|
|
||||||
|
void Hu3DLayerHookSet(short layer, void (*func)(short layer));
|
||||||
void Hu3D2Dto3D(Vec3f*, s32, Vec3f*);
|
void Hu3D2Dto3D(Vec3f*, s32, Vec3f*);
|
||||||
void Hu3DModelLightInfoSet(s32, s32);
|
void Hu3DModelLightInfoSet(s32, s32);
|
||||||
void Hu3DBGColorSet(u8, u8, u8);
|
void Hu3DBGColorSet(u8, u8, u8);
|
||||||
|
|
@ -200,6 +201,9 @@ AnimData *HuSprAnimMake(short sizeX, short sizeY, short dataFmt);
|
||||||
void HuSprBGSet(short group, short member, AnimData *bg, short bg_bank);
|
void HuSprBGSet(short group, short member, AnimData *bg, short bg_bank);
|
||||||
void HuSprSprBGSet(short sprite, AnimData *bg, short bg_bank);
|
void HuSprSprBGSet(short sprite, AnimData *bg, short bg_bank);
|
||||||
void AnimDebug(AnimData *anim);
|
void AnimDebug(AnimData *anim);
|
||||||
|
void HuSprDispInit(void);
|
||||||
|
void HuSprDisp(SpriteData *sprite);
|
||||||
|
void HuSprTexLoad(AnimData *anim, short bmp, short slot, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, GXTexFilter filter);
|
||||||
|
|
||||||
void HuWinAllKill(void);
|
void HuWinAllKill(void);
|
||||||
void HuWinMesSet(s16, s32);
|
void HuWinMesSet(s16, s32);
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,10 @@ SpriteData HuSprData[384];
|
||||||
SpriteGroupData HuSprGrpData[256];
|
SpriteGroupData HuSprGrpData[256];
|
||||||
static SpriteOrderData HuSprOrder[384*2];
|
static SpriteOrderData HuSprOrder[384*2];
|
||||||
|
|
||||||
|
|
||||||
static short HuSprOrderNum;
|
static short HuSprOrderNum;
|
||||||
static short HuSprOrderNo;
|
static short HuSprOrderNo;
|
||||||
static BOOL HuSprPauseF;
|
static BOOL HuSprPauseF;
|
||||||
|
|
||||||
void HuSprDisp(SpriteData *sprite);
|
|
||||||
|
|
||||||
static void HuSprOrderEntry(short group, short sprite);
|
static void HuSprOrderEntry(short group, short sprite);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,19 @@
|
||||||
#include "dolphin/vi.h"
|
#include "dolphin/vi.h"
|
||||||
|
|
||||||
static void *bmpNoCC[8];
|
static void *bmpNoCC[8];
|
||||||
static s16 HuSprLayerDrawNo[8];
|
static short HuSprLayerDrawNo[8];
|
||||||
|
|
||||||
static s16 bmpCCIdx;
|
static short bmpCCIdx;
|
||||||
|
|
||||||
void HuSprTexLoad(AnimData *anim, short bmp, short slot, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, GXTexFilter filter);
|
|
||||||
|
|
||||||
void mtxTransCat(Mtx matrix, float x, float y, float z);
|
void mtxTransCat(Mtx matrix, float x, float y, float z);
|
||||||
|
|
||||||
|
static void HuSprLayerHook(short layer);
|
||||||
|
|
||||||
void HuSprDispInit(void)
|
void HuSprDispInit(void)
|
||||||
{
|
{
|
||||||
Mtx44 proj;
|
Mtx44 proj;
|
||||||
s16 i;
|
short i;
|
||||||
for(i=0; i<8; i++) {
|
for(i=0; i<8; i++) {
|
||||||
bmpNoCC[i] = NULL;
|
bmpNoCC[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -40,12 +41,12 @@ void HuSprDispInit(void)
|
||||||
|
|
||||||
void HuSprDisp(SpriteData *sprite)
|
void HuSprDisp(SpriteData *sprite)
|
||||||
{
|
{
|
||||||
s16 i;
|
short i;
|
||||||
AnimData *anim = sprite->data;
|
AnimData *anim = sprite->data;
|
||||||
AnimPatData *pat = sprite->pat_data;
|
AnimPatData *pat = sprite->pat_data;
|
||||||
Vec axis = {0, 0, 1};
|
Vec axis = {0, 0, 1};
|
||||||
Mtx modelview, rot;
|
Mtx modelview, rot;
|
||||||
s16 color_sum;
|
short color_sum;
|
||||||
void (*func)(SpriteData *);
|
void (*func)(SpriteData *);
|
||||||
GXSetScissor(sprite->scissor_x, sprite->scissor_y, sprite->scissor_w, sprite->scissor_h);
|
GXSetScissor(sprite->scissor_x, sprite->scissor_y, sprite->scissor_w, sprite->scissor_h);
|
||||||
if(sprite->attr & 0x10) {
|
if(sprite->attr & 0x10) {
|
||||||
|
|
@ -180,5 +181,72 @@ void HuSprDisp(SpriteData *sprite)
|
||||||
|
|
||||||
void HuSprTexLoad(AnimData *anim, short bmp, short slot, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, GXTexFilter filter)
|
void HuSprTexLoad(AnimData *anim, short bmp, short slot, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, GXTexFilter filter)
|
||||||
{
|
{
|
||||||
|
GXTexObj tex_obj;
|
||||||
|
GXTlutObj tlut_obj;
|
||||||
|
AnimBmpData *bmp_ptr = &anim->bmp[bmp];
|
||||||
|
short sizeX = bmp_ptr->sizeX;
|
||||||
|
short sizeY = bmp_ptr->sizeY;
|
||||||
|
switch(bmp_ptr->dataFmt & 0xF) {
|
||||||
|
case 0:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_RGBA8, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_RGB5A3, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
GXInitTlutObj(&tlut_obj, bmp_ptr->palData, GX_TL_RGB5A3, bmp_ptr->palNum);
|
||||||
|
GXLoadTlut(&tlut_obj, slot);
|
||||||
|
GXInitTexObjCI(&tex_obj,bmp_ptr->data, sizeX, sizeY, GX_TF_C8, wrap_s, wrap_t, GX_FALSE, slot);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
GXInitTlutObj(&tlut_obj, bmp_ptr->palData, GX_TL_RGB5A3, bmp_ptr->palNum);
|
||||||
|
GXLoadTlut(&tlut_obj, slot);
|
||||||
|
GXInitTexObjCI(&tex_obj,bmp_ptr->data, sizeX, sizeY, GX_TF_C4, wrap_s, wrap_t, GX_FALSE, slot);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_IA8, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_IA4, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_I8, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_I4, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 9:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_CTF_A8, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 10:
|
||||||
|
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_CMPR, wrap_s, wrap_t, GX_FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
GXInitTexObjLOD(&tex_obj, filter, filter, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1);
|
||||||
|
GXLoadTexObj(&tex_obj, slot);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HuSprExecLayerSet(short draw_no, short layer)
|
||||||
|
{
|
||||||
|
HuSprLayerDrawNo[layer] = draw_no;
|
||||||
|
Hu3DLayerHookSet(layer, HuSprLayerHook);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void HuSprLayerHook(short layer)
|
||||||
|
{
|
||||||
|
HuSprDispInit();
|
||||||
|
HuSprExec(HuSprLayerDrawNo[layer]);
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue