Merge pull request #36 from gamemasterplc/main
Start Splitting Out Headers
This commit is contained in:
commit
000ed9eff3
34 changed files with 820 additions and 646 deletions
|
|
@ -199,7 +199,7 @@ HuSprDispInit = .text:0x8000F6A0; // type:function size:0x158
|
|||
HuSprDisp = .text:0x8000F7F8; // type:function size:0xECC
|
||||
HuSprTexLoad = .text:0x800106C4; // type:function size:0x29C
|
||||
HuSprExecLayerSet = .text:0x80010960; // type:function size:0x58
|
||||
HuSprLayerHook = .text:0x800109B8; // type:function size:0x178
|
||||
HuSprLayerHook = .text:0x800109B8; // type:function size:0x178 scope:local
|
||||
LoadHSF = .text:0x80010B30; // type:function size:0xB0
|
||||
ClusterAdjustObject = .text:0x80010BE0; // type:function size:0xA0
|
||||
FileLoad = .text:0x80010C80; // type:function size:0xC8 scope:local
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
#include "common.h"
|
||||
#include "dolphin.h"
|
||||
#include "REL/executor.h"
|
||||
#include "game/process.h"
|
||||
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
typedef struct unkw10Dll {
|
||||
Vec3f unk0;
|
||||
Vec3f unk0C;
|
||||
Vec3f unk18;
|
||||
Vec unk0;
|
||||
Vec unk0C;
|
||||
Vec unk18;
|
||||
s32 unk24;
|
||||
} unkw10Dll; //sizeof 0x28
|
||||
|
||||
|
|
@ -23,9 +25,6 @@ typedef struct m456DllUnk02 {
|
|||
w10DllUnk01* unk5C;
|
||||
} m456DllUnk02; //sizeof ?
|
||||
|
||||
//this belongs to m456Dll
|
||||
m456DllUnk02** fn_8002FAC0(Process*, s32);
|
||||
|
||||
typedef struct w10DllUnk03 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
|
|
@ -103,7 +102,7 @@ void fn_1_137C(void);
|
|||
|
||||
extern w10DllUnk04 lbl_1_data_108[42];
|
||||
extern w10DllUnk03 lbl_1_data_C6[];
|
||||
extern Vec3f lbl_1_data_80[];
|
||||
extern Vec lbl_1_data_80[];
|
||||
extern Process* lbl_1_bss_18;
|
||||
extern s16 lbl_1_bss_1C;
|
||||
extern s16 lbl_1_bss_1E;
|
||||
|
|
|
|||
|
|
@ -3,10 +3,7 @@
|
|||
|
||||
#include "types.h"
|
||||
#include "common_structs.h"
|
||||
#include "common_enums.h"
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "dolphin/mtx/GeoTypes.h"
|
||||
#include "dolphin/mtx.h"
|
||||
|
||||
#endif
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
#ifndef _COMMON_ENUMS_H
|
||||
#define _COMMON_ENUMS_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define OVL_DEFINE(name, path) name,
|
||||
|
||||
typedef enum {
|
||||
OVL_INVALID = -1,
|
||||
#include "ovl_table.h"
|
||||
OVL_COUNT
|
||||
} OverlayID;
|
||||
|
||||
#undef OVL_DEFINE
|
||||
|
||||
#define DATADIR_DEFINE(name, path) name,
|
||||
|
||||
typedef enum {
|
||||
#include "datadir_table.h"
|
||||
DATADIR_COUNT
|
||||
} DataDirID;
|
||||
|
||||
#undef DATADIR_DEFINE
|
||||
|
||||
|
||||
typedef enum {
|
||||
HEAP_SYSTEM,
|
||||
HEAP_MUSIC,
|
||||
HEAP_DATA,
|
||||
HEAP_DVD,
|
||||
HEAP_MISC,
|
||||
HEAP_MAX
|
||||
} HeapID;
|
||||
|
||||
#endif
|
||||
|
|
@ -2,55 +2,7 @@
|
|||
#define _COMMON_STRUCTS_H
|
||||
|
||||
#include "types.h"
|
||||
#include "common_enums.h"
|
||||
#include "dolphin/dvd.h"
|
||||
#include "dolphin/mtx/GeoTypes.h"
|
||||
#include "dolphin/gx/GXEnum.h"
|
||||
|
||||
typedef struct om_ovl_his_data {
|
||||
OverlayID overlay;
|
||||
int event;
|
||||
int stat;
|
||||
} omOvlHisData;
|
||||
|
||||
typedef struct Vec2f {
|
||||
f32 x;
|
||||
f32 y;
|
||||
} Vec2f;
|
||||
|
||||
typedef struct Vec3f {
|
||||
f32 x;
|
||||
f32 y;
|
||||
f32 z;
|
||||
} Vec3f;
|
||||
|
||||
typedef struct jump_buf {
|
||||
u32 lr;
|
||||
u32 cr;
|
||||
u32 sp;
|
||||
u32 r2;
|
||||
u32 pad;
|
||||
u32 regs[19];
|
||||
double flt_regs[19];
|
||||
} jmp_buf;
|
||||
|
||||
typedef struct process {
|
||||
struct process *next;
|
||||
struct process *prev;
|
||||
struct process *child;
|
||||
struct process *parent;
|
||||
struct process *next_child;
|
||||
struct process *first_child;
|
||||
void *heap;
|
||||
u16 exec;
|
||||
u16 stat;
|
||||
u16 prio;
|
||||
s32 sleep_time;
|
||||
u32 base_sp;
|
||||
jmp_buf jump;
|
||||
void (*dtor)(void);
|
||||
void *user_data;
|
||||
} Process;
|
||||
#include "dolphin.h"
|
||||
|
||||
typedef struct player_config {
|
||||
s16 character;
|
||||
|
|
@ -66,23 +18,6 @@ typedef struct wipe_state {
|
|||
u8 unk2[20];
|
||||
} WipeState;
|
||||
|
||||
typedef struct file_list_entry {
|
||||
char *name;
|
||||
s32 file_id;
|
||||
} FileListEntry;
|
||||
|
||||
typedef struct data_read_stat {
|
||||
s32 dir_id;
|
||||
void *dir;
|
||||
void *file;
|
||||
u32 raw_len;
|
||||
u32 comp_type;
|
||||
BOOL used;
|
||||
s32 num;
|
||||
u32 status;
|
||||
DVDFileInfo file_info;
|
||||
} DataReadStat;
|
||||
|
||||
typedef struct BoardStateSubStruct {
|
||||
/* 0x00 */ s32 unk0;
|
||||
/* 0x04 */ u16 unk4;
|
||||
|
|
@ -137,142 +72,4 @@ typedef struct player_state {
|
|||
/* 0x2C */ char unk_2C[4];
|
||||
} PlayerState; //size of 0x30
|
||||
|
||||
typedef struct om_obj_data {
|
||||
u16 stat;
|
||||
s16 next_idx_alloc;
|
||||
s16 prio;
|
||||
s16 prev;
|
||||
s16 next;
|
||||
s16 next_idx;
|
||||
s16 group;
|
||||
u16 group_idx;
|
||||
int unk10;
|
||||
void (*func)(struct om_obj_data *);
|
||||
Vec3f trans;
|
||||
Vec3f rot;
|
||||
Vec3f scale;
|
||||
u16 mdlcnt;
|
||||
s16 *model;
|
||||
u16 mtncnt;
|
||||
s16 *motion;
|
||||
int work[4];
|
||||
void *data;
|
||||
} omObjData;
|
||||
|
||||
typedef struct anim_frame_data {
|
||||
s16 pat;
|
||||
s16 time;
|
||||
s16 shiftX;
|
||||
s16 shiftY;
|
||||
s16 flip;
|
||||
s16 pad;
|
||||
} AnimFrameData;
|
||||
|
||||
typedef struct anim_bank_data {
|
||||
s16 timeNum;
|
||||
s16 unk;
|
||||
AnimFrameData *frame;
|
||||
} AnimBankData;
|
||||
|
||||
typedef struct anim_layer_data {
|
||||
u8 alpha;
|
||||
u8 flip;
|
||||
s16 bmpNo;
|
||||
s16 startX;
|
||||
s16 startY;
|
||||
s16 sizeX;
|
||||
s16 sizeY;
|
||||
s16 shiftX;
|
||||
s16 shiftY;
|
||||
s16 vtx[8];
|
||||
} AnimLayerData;
|
||||
|
||||
typedef struct anim_pat_data {
|
||||
s16 layerNum;
|
||||
s16 centerX;
|
||||
s16 centerY;
|
||||
s16 sizeX;
|
||||
s16 sizeY;
|
||||
AnimLayerData *layer;
|
||||
} AnimPatData;
|
||||
|
||||
typedef struct anim_bmp_data {
|
||||
u8 pixSize;
|
||||
u8 dataFmt;
|
||||
s16 palNum;
|
||||
s16 sizeX;
|
||||
s16 sizeY;
|
||||
u32 dataSize;
|
||||
void *palData;
|
||||
void *data;
|
||||
} AnimBmpData;
|
||||
|
||||
typedef struct anim_data {
|
||||
s16 bankNum;
|
||||
s16 patNum;
|
||||
s16 bmpNum;
|
||||
s16 useNum;
|
||||
AnimBankData *bank;
|
||||
AnimPatData *pat;
|
||||
AnimBmpData *bmp;
|
||||
} AnimData;
|
||||
|
||||
typedef struct sprite_data {
|
||||
u8 r;
|
||||
u8 g;
|
||||
u8 b;
|
||||
char draw_no;
|
||||
short frame;
|
||||
short bank;
|
||||
short attr;
|
||||
short dirty_flag;
|
||||
short prio;
|
||||
float time;
|
||||
float x;
|
||||
float y;
|
||||
float z_rot;
|
||||
float scale_x;
|
||||
float scale_y;
|
||||
float speed;
|
||||
float a;
|
||||
GXTexWrapMode wrap_s;
|
||||
GXTexWrapMode wrap_t;
|
||||
short tex_scale_x;
|
||||
short tex_scale_y;
|
||||
Mtx *group_mtx;
|
||||
union {
|
||||
AnimData *data;
|
||||
void (*func)(struct sprite_data *sprite);
|
||||
};
|
||||
AnimPatData *pat_data;
|
||||
AnimFrameData *frame_data;
|
||||
short work[4];
|
||||
AnimData *bg;
|
||||
unsigned short bg_bank;
|
||||
short scissor_x;
|
||||
short scissor_y;
|
||||
short scissor_w;
|
||||
short scissor_h;
|
||||
} SpriteData;
|
||||
|
||||
typedef struct sprite_group_data {
|
||||
short capacity;
|
||||
float x;
|
||||
float y;
|
||||
float z_rot;
|
||||
float scale_x;
|
||||
float scale_y;
|
||||
float center_x;
|
||||
float center_y;
|
||||
short *members;
|
||||
Mtx mtx;
|
||||
} SpriteGroupData;
|
||||
|
||||
typedef struct sprite_order_data {
|
||||
unsigned short group;
|
||||
unsigned short sprite;
|
||||
unsigned short prio;
|
||||
unsigned short next;
|
||||
} SpriteOrderData;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
19
include/dolphin.h
Normal file
19
include/dolphin.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef __DOLPHIN_H__
|
||||
#define __DOLPHIN_H__
|
||||
|
||||
#include <dolphin/types.h>
|
||||
#include <dolphin/PPCArch.h>
|
||||
#include <dolphin/db.h>
|
||||
#include <dolphin/os.h>
|
||||
#include <dolphin/dvd.h>
|
||||
#include <dolphin/pad.h>
|
||||
#include <dolphin/mtx.h>
|
||||
#include <dolphin/gx.h>
|
||||
#include <dolphin/vi.h>
|
||||
#include <dolphin/ai.h>
|
||||
#include <dolphin/ar.h>
|
||||
#include <dolphin/arq.h>
|
||||
#include <dolphin/dsp.h>
|
||||
#include <dolphin/card.h>
|
||||
|
||||
#endif
|
||||
|
|
@ -1,153 +1,21 @@
|
|||
#ifndef _FUNCTIONS_H_
|
||||
#define _FUNCTIONS_H_
|
||||
|
||||
#include "types.h"
|
||||
#include "dolphin.h"
|
||||
#include "common_structs.h"
|
||||
#include "common_enums.h"
|
||||
#include "dolphin/mtx.h"
|
||||
#include "dolphin/gx/GXStruct.h"
|
||||
|
||||
void Hu3DLayerHookSet(short layer, void (*func)(short layer));
|
||||
void Hu3D2Dto3D(Vec3f*, s32, Vec3f*);
|
||||
void Hu3D2Dto3D(Vec*, s32, Vec*);
|
||||
void Hu3DModelLightInfoSet(s32, s32);
|
||||
void Hu3DBGColorSet(u8, u8, u8);
|
||||
void Hu3DCameraCreate(s16);
|
||||
void Hu3DCameraPerspectiveSet(s16, f32, f32, f32, f32);
|
||||
void Hu3DCameraViewportSet(s16, f32, f32, f32, f32, f32, f32);
|
||||
void fn_80044920(s16);
|
||||
void fn_80045F74(s16, s32);
|
||||
s32 fn_800578E4(void);
|
||||
void HuAudFadeOut(int arg0);
|
||||
void fn_80035A0C(void);
|
||||
|
||||
void HuDecodeData(void *src, void *dst, u32 size, int decode_type);
|
||||
|
||||
void HuMemInitAll(void);
|
||||
void *HuMemInit(void *ptr, s32 size);
|
||||
void HuMemDCFlushAll();
|
||||
void HuMemDCFlush(HeapID heap);
|
||||
void *HuMemDirectMalloc(HeapID heap, s32 size);
|
||||
void *HuMemDirectMallocNum(HeapID heap, s32 size, u32 num);
|
||||
void HuMemDirectFree(void *ptr);
|
||||
void HuMemDirectFreeNum(HeapID heap, u32 num);
|
||||
s32 HuMemUsedMallocSizeGet(HeapID heap);
|
||||
s32 HuMemUsedMallocBlockGet(HeapID heap);
|
||||
u32 HuMemHeapSizeGet(HeapID heap);
|
||||
void *HuMemHeapPtrGet(HeapID heap);
|
||||
|
||||
void *HuMemHeapInit(void *ptr, s32 size);
|
||||
void *HuMemMemoryAlloc(void *heap_ptr, s32 size, u32 retaddr);
|
||||
void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, u32 retaddr);
|
||||
void HuMemMemoryFree(void *ptr, u32 retaddr);
|
||||
void HuMemMemoryFreeNum(void *heap_ptr, u32 num, u32 retaddr);
|
||||
s32 HuMemUsedMemorySizeGet(void *heap_ptr);
|
||||
s32 HuMemUsedMemoryBlockGet(void *heap_ptr);
|
||||
s32 HuMemMemoryAllocSizeGet(s32 size);
|
||||
void HuMemHeapDump(void *heap_ptr, s16 status);
|
||||
|
||||
void HuPrcInit(void);
|
||||
void HuPrcEnd(void);
|
||||
Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_size);
|
||||
void HuPrcChildLink(Process *parent, Process *child);
|
||||
void HuPrcChildUnlink(Process *process);
|
||||
Process *HuPrcChildCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_size, Process *parent);
|
||||
void HuPrcChildWatch();
|
||||
Process *HuPrcCurrentGet(void);
|
||||
int HuPrcKill(Process *process);
|
||||
void HuPrcChildKill(Process *process);
|
||||
void HuPrcSleep(s32 time);
|
||||
void HuPrcVSleep(void);
|
||||
void HuPrcWakeup(Process *process);
|
||||
void HuPrcDestructorSet2(Process *process, void (*func)(void));
|
||||
void HuPrcDestructorSet(void (*func)(void));
|
||||
void HuPrcCall(int tick);
|
||||
void *HuPrcMemAlloc(s32 size);
|
||||
void HuPrcMemFree(void *ptr);
|
||||
void HuPrcSetStat(Process *process, u16 value);
|
||||
void HuPrcResetStat(Process *process, u16 value);
|
||||
void HuPrcAllPause(int flag);
|
||||
void HuPrcAllUPause(int flag);
|
||||
|
||||
void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl);
|
||||
void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat);
|
||||
void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat);
|
||||
void omOvlReturnEx(s16 level, s16 arg2);
|
||||
void omOvlKill(s16 arg);
|
||||
void omOvlHisChg(s32 level, OverlayID overlay, int event, int stat);
|
||||
omOvlHisData *omOvlHisGet(s32 level);
|
||||
Process *omInitObjMan(s16 max_objs, int prio);
|
||||
void omDestroyObjMan(void);
|
||||
omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, void (*func)(omObjData *));
|
||||
void omAddMember(Process *objman_process, u16 group, omObjData *object);
|
||||
void omDelObjEx(Process *objman_process, omObjData *object);
|
||||
void omDelMember(Process *objman_process, omObjData *object);
|
||||
void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs);
|
||||
omObjData **omGetGroupMemberListEx(Process *objman_process, s16 group);
|
||||
void omSetStatBit(omObjData *obj, u16 stat);
|
||||
void omResetStatBit(omObjData *obj, u16 stat);
|
||||
void omSetTra(omObjData *obj, float x, float y, float z);
|
||||
void omSetRot(omObjData *obj, float x, float y, float z);
|
||||
void omSetSca(omObjData *obj, float x, float y, float z);
|
||||
void omMain(void);
|
||||
void omAllPause(BOOL pause);
|
||||
char omPauseChk(void);
|
||||
OverlayID omCurrentOvlGet(void);
|
||||
|
||||
|
||||
void omDLLDBGOut(void);
|
||||
void omDLLInit(FileListEntry *ovl_list);
|
||||
int omDLLStart(s16 ovl, s16 dll);
|
||||
void omDLLNumEnd(s16 ovl, s16 arg2);
|
||||
|
||||
void omSysPauseEnable(BOOL flag);
|
||||
|
||||
|
||||
void WipeCreate(char dir, char type, short duration);
|
||||
u8 WipeStatGet(void);
|
||||
|
||||
void pfInit(void);
|
||||
void pfClsScr(void);
|
||||
s16 print8(s16 x, s16 y, float scale, char *str, ...);
|
||||
s16 printWin(s16 x, s16 y, s16 w, s16 h, GXColor *color);
|
||||
void pfDrawFonts(void);
|
||||
|
||||
void *HuDvdDataRead(char *path);
|
||||
void **HuDvdDataReadMulti(char **paths);
|
||||
void *HuDvdDataReadDirect(char *path, HeapID heap);
|
||||
void *HuDvdDataFastRead(s32 entrynum);
|
||||
void *HuDvdDataFastReadNum(s32 entrynum, s32 num);
|
||||
void *HuDvdDataFastReadAsync(s32 entrynum, DataReadStat *stat);
|
||||
void HuDvdDataClose(void *ptr);
|
||||
void HuDvdErrorWatch();
|
||||
|
||||
void HuDataInit(void);
|
||||
int HuDataReadChk(s32 data_num);
|
||||
DataReadStat *HuDataGetStatus(void *dir_ptr);
|
||||
void *HuDataGetDirPtr(s32 data_num);
|
||||
DataReadStat *HuDataDirRead(s32 data_num);
|
||||
DataReadStat *HuDataDirReadNum(s32 data_num, s32 num);
|
||||
DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num);
|
||||
void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo);
|
||||
s32 HuDataDirReadAsync(s32 data_num);
|
||||
s32 HuDataDirReadNumAsync(s32 data_num, s32 num);
|
||||
BOOL HuDataGetAsyncStat(s32 status);
|
||||
void *HuDataRead(s32 data_num);
|
||||
void *HuDataReadNum(s32 data_num, s32 num);
|
||||
void *HuDataSelHeapRead(s32 data_num, HeapID heap);
|
||||
void *HuDataSelHeapReadNum(s32 data_num, s32 num, HeapID heap);
|
||||
void **HuDataReadMulti(s32 *data_ids);
|
||||
s32 HuDataGetSize(s32 data_num);
|
||||
void HuDataClose(void *ptr);
|
||||
void HuDataCloseMulti(void **ptrs);
|
||||
void HuDataDirClose(s32 data_id);
|
||||
void HuDataDirCloseNum(s32 num);
|
||||
void *HuDataReadNumHeapShortForce(s32 data_id, s32 num, HeapID heap);
|
||||
|
||||
void *HuARDirCheck(s32 dir);
|
||||
void HuAR_ARAMtoMRAM(void *dst);
|
||||
void HuAR_ARAMtoMRAMNum(void *dst, s32 num);
|
||||
BOOL HuARDMACheck();
|
||||
|
||||
void Hu3DModelPosSet(s16 index, float x, float y, float z);
|
||||
void Hu3DModelRotSet(s16 index, float x, float y, float z);
|
||||
void Hu3DModelScaleSet(s16 index, float x, float y, float z);
|
||||
|
|
@ -160,56 +28,13 @@ void espKill(s16);
|
|||
void espDispOn(s16);
|
||||
void espPosSet(s16, f32, f32);
|
||||
|
||||
void HuSprInit(void);
|
||||
void HuSprClose(void);
|
||||
void HuSprExec(short draw_no);
|
||||
void HuSprBegin(void);
|
||||
SpriteData *HuSprCall(void);
|
||||
void HuSprFinish(void);
|
||||
void HuSprPauseSet(BOOL value);
|
||||
AnimData *HuSprAnimRead(void *data);
|
||||
void HuSprAnimLock(AnimData *anim);
|
||||
short HuSprCreate(AnimData *anim, short prio, short bank);
|
||||
short HuSprFuncCreate(void (*func)(SpriteData *sprite), short prio);
|
||||
short HuSprGrpCreate(short capacity);
|
||||
short HuSprGrpCopy(short group);
|
||||
void HuSprGrpMemberSet(short group, short member, short sprite);
|
||||
void HuSprGrpMemberKill(short group, short member);
|
||||
void HuSprGrpKill(short group);
|
||||
void HuSprKill(short sprite);
|
||||
void HuSprAnimKill(AnimData *anim);
|
||||
void HuSprAttrSet(short group, short member, int attr);
|
||||
void HuSprAttrReset(short group, short member, int attr);
|
||||
void HuSprPosSet(short group, short member, float x, float y);
|
||||
void HuSprZRotSet(short group, short member, float z_rot);
|
||||
void HuSprScaleSet(short group, short member, float x, float y);
|
||||
void HuSprTPLvlSet(short group, short member, float tp_lvl);
|
||||
void HuSprColorSet(short group, short member, u8 r, u8 g, u8 b);
|
||||
void HuSprSpeedSet(short group, short member, float speed);
|
||||
void HuSprBankSet(short group, short member, short bank);
|
||||
void HuSprGrpPosSet(short group, float x, float y);
|
||||
void HuSprGrpCenterSet(short group, float x, float y);
|
||||
void HuSprGrpZRotSet(short group, float z_rot);
|
||||
void HuSprGrpScaleSet(short group, float x, float y);
|
||||
void HuSprGrpTPLvlSet(short group, float tp_lvl);
|
||||
void HuSprGrpDrawNoSet(short group, int draw_no);
|
||||
void HuSprDrawNoSet(short group, short member, int draw_no);
|
||||
void HuSprPriSet(short group, short member, short prio);
|
||||
void HuSprGrpScissorSet(short group, short x, short y, short w, short h);
|
||||
void HuSprScissorSet(short group, short member, short x, short y, short w, short h);
|
||||
AnimData *HuSprAnimMake(short sizeX, short sizeY, short dataFmt);
|
||||
void HuSprBGSet(short group, short member, AnimData *bg, short bg_bank);
|
||||
void HuSprSprBGSet(short sprite, AnimData *bg, short bg_bank);
|
||||
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 HuWinMesSet(s16, s32);
|
||||
void HuWinKill(s16);
|
||||
void HuWinPriSet(s16, s32);
|
||||
void HuWinHomeClear(s16);
|
||||
void HuWinMesPalSet(s16, s32, s32, s32, s32);
|
||||
void HuWinMesSet(s16, s32);
|
||||
void HuWinMesSpeedSet(s16, s32);
|
||||
void HuWinMesMaxSizeGet(s32, f32*, ...);
|
||||
s16 HuWinCreate(float x, float y, s16 w, s16 h, s16 frame);
|
||||
|
|
@ -232,12 +57,14 @@ void BoardMessCreate(s16, s32, s32);
|
|||
void BoardMessKill(void);
|
||||
void BoardMessWait(void);
|
||||
|
||||
s32 HuTHPFrameGet(void);
|
||||
|
||||
s32 rand8(void);
|
||||
|
||||
void fn_8005D8E8(void);
|
||||
void fn_8005DB6C(s16, Vec3f*, s32, f32, f32, s32);
|
||||
void fn_8005DB6C(s16, Vec*, s32, f32, f32, s32);
|
||||
void fn_8005E0C0(void);
|
||||
void fn_80074210(s32, s32, Vec3f*);
|
||||
void fn_80074210(s32, s32, Vec*);
|
||||
void fn_8007A360(s32);
|
||||
void fn_8007F894(void);
|
||||
void fn_80083F84(void);
|
||||
|
|
@ -256,7 +83,7 @@ void fn_8006F61C(s16, s32);
|
|||
void fn_800B42BC(s16);
|
||||
s32 fn_8006DBD4(s16);
|
||||
void fn_8005B150(void*, void*);
|
||||
void fn_8006F2E8(s32, Vec3f*);
|
||||
void fn_8006F2E8(s32, Vec*);
|
||||
void fn_8005D10C(void*, void*);
|
||||
s16 fn_8006D9A4(s32, void*, s32);
|
||||
void fn_8006DB90(s16);
|
||||
|
|
@ -265,7 +92,7 @@ void fn_8006E2B8(s16, s32, s32);
|
|||
void fn_8006E878(s16, f32);
|
||||
void fn_8006F158(s16, void*);
|
||||
void fn_8006F1A8(s16, f32, f32, f32);
|
||||
s32 fn_8006F220(s16 arg0, Vec3f* arg1);
|
||||
s32 fn_8006F220(s16 arg0, Vec* arg1);
|
||||
void fn_8006F50C(s16, s32);
|
||||
void fn_80073FF4(void*);
|
||||
void fn_80073FFC(void*);
|
||||
|
|
@ -279,7 +106,7 @@ void fn_80083EDC(s16);
|
|||
void fn_800A4F6C(s16);
|
||||
void fn_800B3FD8(void*);
|
||||
void fn_800B4274(s32, s32);
|
||||
void fn_8005D5C0(Vec3f*);
|
||||
void fn_8005D5C0(Vec*);
|
||||
void fn_8006F338(s16, f32, f32, f32);
|
||||
s32 fn_8005B6A8(void);
|
||||
void fn_8006EFBC(s16, Mtx);
|
||||
|
|
|
|||
72
include/game/data.h
Normal file
72
include/game/data.h
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
#ifndef _GAME_DATA_H
|
||||
#define _GAME_DATA_H
|
||||
|
||||
#include "game/dvd.h"
|
||||
|
||||
#define DATA_DECODE_NONE 0
|
||||
#define DATA_DECODE_LZ 1
|
||||
#define DATA_DECODE_SLIDE 2
|
||||
#define DATA_DECODE_FSLIDE_ALT 3
|
||||
#define DATA_DECODE_FSLIDE 4
|
||||
#define DATA_DECODE_RLE 5
|
||||
|
||||
#define MAKE_DATA_NUM(dir, file) (((dir) << 16)+(file))
|
||||
#define MAKE_DIR_NUM(dir) ((dir) << 16)
|
||||
|
||||
#define DATA_NUM_LISTEND -1
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#define DATADIR_DEFINE(name, path) name,
|
||||
|
||||
typedef enum {
|
||||
#include "datadir_table.h"
|
||||
DATADIR_COUNT
|
||||
} DataDirID;
|
||||
|
||||
#undef DATADIR_DEFINE
|
||||
|
||||
typedef struct data_read_stat {
|
||||
s32 dir_id;
|
||||
void *dir;
|
||||
void *file;
|
||||
u32 raw_len;
|
||||
u32 comp_type;
|
||||
BOOL used;
|
||||
s32 num;
|
||||
u32 status;
|
||||
DVDFileInfo file_info;
|
||||
} DataReadStat;
|
||||
|
||||
void HuDataInit(void);
|
||||
int HuDataReadChk(s32 data_num);
|
||||
DataReadStat *HuDataGetStatus(void *dir_ptr);
|
||||
void *HuDataGetDirPtr(s32 data_num);
|
||||
DataReadStat *HuDataDirRead(s32 data_num);
|
||||
DataReadStat *HuDataDirReadNum(s32 data_num, s32 num);
|
||||
DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num);
|
||||
void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo);
|
||||
s32 HuDataDirReadAsync(s32 data_num);
|
||||
s32 HuDataDirReadNumAsync(s32 data_num, s32 num);
|
||||
BOOL HuDataGetAsyncStat(s32 status);
|
||||
void *HuDataRead(s32 data_num);
|
||||
void *HuDataReadNum(s32 data_num, s32 num);
|
||||
void *HuDataSelHeapRead(s32 data_num, HeapID heap);
|
||||
void *HuDataSelHeapReadNum(s32 data_num, s32 num, HeapID heap);
|
||||
void **HuDataReadMulti(s32 *data_ids);
|
||||
s32 HuDataGetSize(s32 data_num);
|
||||
void HuDataClose(void *ptr);
|
||||
void HuDataCloseMulti(void **ptrs);
|
||||
void HuDataDirClose(s32 data_id);
|
||||
void HuDataDirCloseNum(s32 num);
|
||||
void *HuDataReadNumHeapShortForce(s32 data_id, s32 num, HeapID heap);
|
||||
|
||||
void HuDecodeData(void *src, void *dst, u32 size, int decode_type);
|
||||
|
||||
void *HuARDirCheck(s32 dir);
|
||||
void HuAR_ARAMtoMRAM(void *dst);
|
||||
void HuAR_ARAMtoMRAMNum(void *dst, s32 num);
|
||||
BOOL HuARDMACheck();
|
||||
|
||||
|
||||
#endif
|
||||
24
include/game/dvd.h
Normal file
24
include/game/dvd.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#ifndef _GAME_DVD_H
|
||||
#define _GAME_DVD_H
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "game/memory.h"
|
||||
|
||||
typedef struct data_read_stat DataReadStat;
|
||||
|
||||
typedef struct file_list_entry {
|
||||
char *name;
|
||||
s32 file_id;
|
||||
} FileListEntry;
|
||||
|
||||
void *HuDvdDataRead(char *path);
|
||||
void **HuDvdDataReadMulti(char **paths);
|
||||
void *HuDvdDataReadDirect(char *path, HeapID heap);
|
||||
void *HuDvdDataFastRead(s32 entrynum);
|
||||
void *HuDvdDataFastReadNum(s32 entrynum, s32 num);
|
||||
void *HuDvdDataFastReadAsync(s32 entrynum, DataReadStat *stat);
|
||||
void HuDvdDataClose(void *ptr);
|
||||
void HuDvdErrorWatch();
|
||||
|
||||
|
||||
#endif
|
||||
20
include/game/init.h
Normal file
20
include/game/init.h
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#ifndef _GAME_INIT_H
|
||||
#define _GAME_INIT_H
|
||||
|
||||
#include "dolphin.h"
|
||||
|
||||
extern GXRenderModeObj *RenderMode;
|
||||
extern OSHeapHandle currentHeapHandle;
|
||||
|
||||
extern void *DemoFrameBuffer1;
|
||||
extern void *DemoFrameBuffer2;
|
||||
extern void *DemoCurrentBuffer;
|
||||
extern u32 minimumVcount;
|
||||
extern float minimumVcountf;
|
||||
extern u32 worstVcount;
|
||||
|
||||
void HuSysInit(GXRenderModeObj *mode);
|
||||
void HuSysBeforeRender();
|
||||
void HuSysDoneRender(s32 retrace_count);
|
||||
|
||||
#endif
|
||||
40
include/game/memory.h
Normal file
40
include/game/memory.h
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#ifndef _GAME_MEMORY_H
|
||||
#define _GAME_MEMORY_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#define MEMORY_DEFAULT_NUM 0x10000000
|
||||
|
||||
typedef enum {
|
||||
HEAP_SYSTEM,
|
||||
HEAP_MUSIC,
|
||||
HEAP_DATA,
|
||||
HEAP_DVD,
|
||||
HEAP_MISC,
|
||||
HEAP_MAX
|
||||
} HeapID;
|
||||
|
||||
void HuMemInitAll(void);
|
||||
void *HuMemInit(void *ptr, s32 size);
|
||||
void HuMemDCFlushAll();
|
||||
void HuMemDCFlush(HeapID heap);
|
||||
void *HuMemDirectMalloc(HeapID heap, s32 size);
|
||||
void *HuMemDirectMallocNum(HeapID heap, s32 size, u32 num);
|
||||
void HuMemDirectFree(void *ptr);
|
||||
void HuMemDirectFreeNum(HeapID heap, u32 num);
|
||||
s32 HuMemUsedMallocSizeGet(HeapID heap);
|
||||
s32 HuMemUsedMallocBlockGet(HeapID heap);
|
||||
u32 HuMemHeapSizeGet(HeapID heap);
|
||||
void *HuMemHeapPtrGet(HeapID heap);
|
||||
|
||||
void *HuMemHeapInit(void *ptr, s32 size);
|
||||
void *HuMemMemoryAlloc(void *heap_ptr, s32 size, u32 retaddr);
|
||||
void *HuMemMemoryAllocNum(void *heap_ptr, s32 size, u32 num, u32 retaddr);
|
||||
void HuMemMemoryFree(void *ptr, u32 retaddr);
|
||||
void HuMemMemoryFreeNum(void *heap_ptr, u32 num, u32 retaddr);
|
||||
s32 HuMemUsedMemorySizeGet(void *heap_ptr);
|
||||
s32 HuMemUsedMemoryBlockGet(void *heap_ptr);
|
||||
s32 HuMemMemoryAllocSizeGet(s32 size);
|
||||
void HuMemHeapDump(void *heap_ptr, s16 status);
|
||||
|
||||
#endif
|
||||
103
include/game/object.h
Normal file
103
include/game/object.h
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
#ifndef _GAME_OBJECT_H
|
||||
#define _GAME_OBJECT_H
|
||||
|
||||
#include "dolphin.h"
|
||||
#include "game/process.h"
|
||||
#include "game/dvd.h"
|
||||
|
||||
#define OVL_DEFINE(name, path) name,
|
||||
|
||||
typedef enum {
|
||||
OVL_INVALID = -1,
|
||||
#include "ovl_table.h"
|
||||
OVL_COUNT
|
||||
} OverlayID;
|
||||
|
||||
#undef OVL_DEFINE
|
||||
|
||||
#define OM_STAT_DELETED 0x1
|
||||
#define OM_STAT_DISABLED 0x2
|
||||
#define OM_STAT_ACTIVE 0x4
|
||||
#define OM_STAT_PAUSED 0x10
|
||||
#define OM_STAT_NOPAUSE 0x20
|
||||
#define OM_STAT_MODEL_PAUSED 0x100
|
||||
|
||||
typedef void (*omObjFunc)(struct om_obj_data *);
|
||||
|
||||
typedef struct om_ovl_his_data {
|
||||
OverlayID overlay;
|
||||
int event;
|
||||
int stat;
|
||||
} omOvlHisData;
|
||||
|
||||
typedef struct om_obj_data {
|
||||
u16 stat;
|
||||
s16 next_idx_alloc;
|
||||
s16 prio;
|
||||
s16 prev;
|
||||
s16 next;
|
||||
s16 next_idx;
|
||||
s16 group;
|
||||
u16 group_idx;
|
||||
int unk10;
|
||||
omObjFunc func;
|
||||
Vec trans;
|
||||
Vec rot;
|
||||
Vec scale;
|
||||
u16 mdlcnt;
|
||||
s16 *model;
|
||||
u16 mtncnt;
|
||||
s16 *motion;
|
||||
int work[4];
|
||||
void *data;
|
||||
} omObjData;
|
||||
|
||||
void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl);
|
||||
void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat);
|
||||
void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat);
|
||||
void omOvlReturnEx(s16 level, s16 arg2);
|
||||
void omOvlKill(s16 arg);
|
||||
void omOvlHisChg(s32 level, OverlayID overlay, int event, int stat);
|
||||
omOvlHisData *omOvlHisGet(s32 level);
|
||||
Process *omInitObjMan(s16 max_objs, int prio);
|
||||
void omDestroyObjMan(void);
|
||||
omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, omObjFunc func);
|
||||
void omAddMember(Process *objman_process, u16 group, omObjData *object);
|
||||
void omDelObjEx(Process *objman_process, omObjData *object);
|
||||
void omDelMember(Process *objman_process, omObjData *object);
|
||||
void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs);
|
||||
omObjData **omGetGroupMemberListEx(Process *objman_process, s16 group);
|
||||
void omSetStatBit(omObjData *obj, u16 stat);
|
||||
void omResetStatBit(omObjData *obj, u16 stat);
|
||||
void omSetTra(omObjData *obj, float x, float y, float z);
|
||||
void omSetRot(omObjData *obj, float x, float y, float z);
|
||||
void omSetSca(omObjData *obj, float x, float y, float z);
|
||||
void omMain(void);
|
||||
void omAllPause(BOOL pause);
|
||||
char omPauseChk(void);
|
||||
OverlayID omCurrentOvlGet(void);
|
||||
|
||||
|
||||
void omDLLDBGOut(void);
|
||||
void omDLLInit(FileListEntry *ovl_list);
|
||||
int omDLLStart(s16 ovl, s16 dll);
|
||||
void omDLLNumEnd(s16 ovl, s16 arg2);
|
||||
|
||||
void omSysPauseEnable(BOOL flag);
|
||||
|
||||
extern omObjData *omDBGSysKeyObj;
|
||||
extern Process *omwatchproc;
|
||||
extern OverlayID omnextovl;
|
||||
extern OverlayID omcurovl;
|
||||
extern int omcurdll;
|
||||
extern int omovlhisidx;
|
||||
extern int omovlevtno;
|
||||
extern int omnextovlevtno;
|
||||
extern int omovlstat;
|
||||
extern char omUPauseFlag;
|
||||
extern s16 omSysExitReq;
|
||||
extern s16 omdispinfo;
|
||||
extern char omSysPauseEnableFlag;
|
||||
extern OverlayID omprevovl;
|
||||
|
||||
#endif
|
||||
35
include/game/printfunc.h
Normal file
35
include/game/printfunc.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef _GAME_PRINTFUNC_H
|
||||
#define _GAME_PRINTFUNC_H
|
||||
|
||||
#include "dolphin.h"
|
||||
|
||||
#define FONT_COLOR_BLACK 0
|
||||
#define FONT_COLOR_DARK_BLUE 1
|
||||
#define FONT_COLOR_DARK_RED 2
|
||||
#define FONT_COLOR_DARK_MAGENTA 3
|
||||
#define FONT_COLOR_DARK_GREEN 4
|
||||
#define FONT_COLOR_DARK_CYAN 5
|
||||
#define FONT_COLOR_DARK_YELLOW 6
|
||||
#define FONT_COLOR_GRAY 7
|
||||
#define FONT_COLOR_TRANSLUCENT_GRAY 8
|
||||
#define FONT_COLOR_BLUE 9
|
||||
#define FONT_COLOR_RED 10
|
||||
#define FONT_COLOR_MAGENTA 11
|
||||
#define FONT_COLOR_GREEN 12
|
||||
#define FONT_COLOR_CYAN 13
|
||||
#define FONT_COLOR_YELLOW 14
|
||||
#define FONT_COLOR_WHITE 15
|
||||
|
||||
void pfInit(void);
|
||||
void pfClsScr(void);
|
||||
s16 print8(s16 x, s16 y, float scale, char *str, ...);
|
||||
s16 printWin(s16 x, s16 y, s16 w, s16 h, GXColor *color);
|
||||
void pfDrawFonts(void);
|
||||
|
||||
extern BOOL saftyFrameF;
|
||||
extern u16 strlinecnt;
|
||||
extern u16 empstrline;
|
||||
extern int fontcolor;
|
||||
extern u32 procfunc;
|
||||
|
||||
#endif
|
||||
62
include/game/process.h
Normal file
62
include/game/process.h
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
#ifndef _GAME_PROCESS_H
|
||||
#define _GAME_PROCESS_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#define PROCESS_STAT_PAUSE 0x1
|
||||
#define PROCESS_STAT_UPAUSE 0x2
|
||||
#define PROCESS_STAT_PAUSE_EN 0x4
|
||||
#define PROCESS_STAT_UPAUSE_EN 0x8
|
||||
|
||||
typedef struct jump_buf {
|
||||
u32 lr;
|
||||
u32 cr;
|
||||
u32 sp;
|
||||
u32 r2;
|
||||
u32 pad;
|
||||
u32 regs[19];
|
||||
double flt_regs[19];
|
||||
} jmp_buf;
|
||||
|
||||
typedef struct process {
|
||||
struct process *next;
|
||||
struct process *prev;
|
||||
struct process *child;
|
||||
struct process *parent;
|
||||
struct process *next_child;
|
||||
struct process *first_child;
|
||||
void *heap;
|
||||
u16 exec;
|
||||
u16 stat;
|
||||
u16 prio;
|
||||
int sleep_time;
|
||||
u32 base_sp;
|
||||
jmp_buf jump;
|
||||
void (*dtor)(void);
|
||||
void *user_data;
|
||||
} Process;
|
||||
|
||||
void HuPrcInit(void);
|
||||
void HuPrcEnd(void);
|
||||
Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_size);
|
||||
void HuPrcChildLink(Process *parent, Process *child);
|
||||
void HuPrcChildUnlink(Process *process);
|
||||
Process *HuPrcChildCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_size, Process *parent);
|
||||
void HuPrcChildWatch(void);
|
||||
Process *HuPrcCurrentGet(void);
|
||||
int HuPrcKill(Process *process);
|
||||
void HuPrcChildKill(Process *process);
|
||||
void HuPrcSleep(int time);
|
||||
void HuPrcVSleep(void);
|
||||
void HuPrcWakeup(Process *process);
|
||||
void HuPrcDestructorSet2(Process *process, void (*func)(void));
|
||||
void HuPrcDestructorSet(void (*func)(void));
|
||||
void HuPrcCall(int tick);
|
||||
void *HuPrcMemAlloc(s32 size);
|
||||
void HuPrcMemFree(void *ptr);
|
||||
void HuPrcSetStat(Process *process, u16 value);
|
||||
void HuPrcResetStat(Process *process, u16 value);
|
||||
void HuPrcAllPause(int flag);
|
||||
void HuPrcAllUPause(int flag);
|
||||
|
||||
#endif
|
||||
203
include/game/sprite.h
Normal file
203
include/game/sprite.h
Normal file
|
|
@ -0,0 +1,203 @@
|
|||
#ifndef _GAME_SPRITE_H
|
||||
#define _GAME_SPRITE_H
|
||||
|
||||
#include "dolphin.h"
|
||||
|
||||
#define SPRITE_MAX 384
|
||||
#define SPRITE_GROUP_MAX 256
|
||||
|
||||
#define SPRITE_INVALID -1
|
||||
#define SPRITE_GROUP_INVALID -1
|
||||
|
||||
#define SPRITE_ATTR_PAUSED 0x1
|
||||
#define SPRITE_ATTR_LOOP 0x2
|
||||
#define SPRITE_ATTR_HIDDEN 0x4
|
||||
#define SPIRTE_ATTR_BILINEAR 0x8
|
||||
#define SPRITE_ATTR_FUNC 0x10
|
||||
#define SPRITE_ATTR_NOPAUSE 0x20
|
||||
#define SPRITE_ATTR_REVERSE 0x40
|
||||
#define SPRITE_ATTR_ADDITIVE 0x80
|
||||
#define SPRITE_ATTR_INVERT 0x100
|
||||
|
||||
#define SPRITE_BMP_RGBA8 0
|
||||
#define SPRITE_BMP_RGB5A3 1
|
||||
#define SPRITE_BMP_RGB5A3_DUPE 2
|
||||
#define SPRITE_BMP_C8 3
|
||||
#define SPRITE_BMP_C4 4
|
||||
#define SPRITE_BMP_IA8 5
|
||||
#define SPRITE_BMP_IA4 6
|
||||
#define SPRITE_BMP_I8 7
|
||||
#define SPRITE_BMP_I4 8
|
||||
#define SPRITE_BMP_A8 9
|
||||
#define SPRITE_BMP_CMPR 10
|
||||
|
||||
#define SPRITE_BMP_FMTMASK 0xF
|
||||
#define SPRITE_BMP_ALLOC 0x8000
|
||||
#define SPRITE_BMP_NUM_MASK 0x7FFF
|
||||
|
||||
#define SPRITE_LAYER_FLIPX 0x1
|
||||
#define SPRITE_LAYER_FLIPY 0x2
|
||||
|
||||
typedef void (*SpriteFunc)(struct sprite_data *);
|
||||
|
||||
typedef struct anim_frame_data {
|
||||
s16 pat;
|
||||
s16 time;
|
||||
s16 shiftX;
|
||||
s16 shiftY;
|
||||
s16 flip;
|
||||
s16 pad;
|
||||
} AnimFrameData;
|
||||
|
||||
typedef struct anim_bank_data {
|
||||
s16 timeNum;
|
||||
s16 unk;
|
||||
AnimFrameData *frame;
|
||||
} AnimBankData;
|
||||
|
||||
typedef struct anim_layer_data {
|
||||
u8 alpha;
|
||||
u8 flip;
|
||||
s16 bmpNo;
|
||||
s16 startX;
|
||||
s16 startY;
|
||||
s16 sizeX;
|
||||
s16 sizeY;
|
||||
s16 shiftX;
|
||||
s16 shiftY;
|
||||
s16 vtx[8];
|
||||
} AnimLayerData;
|
||||
|
||||
typedef struct anim_pat_data {
|
||||
s16 layerNum;
|
||||
s16 centerX;
|
||||
s16 centerY;
|
||||
s16 sizeX;
|
||||
s16 sizeY;
|
||||
AnimLayerData *layer;
|
||||
} AnimPatData;
|
||||
|
||||
typedef struct anim_bmp_data {
|
||||
u8 pixSize;
|
||||
u8 dataFmt;
|
||||
s16 palNum;
|
||||
s16 sizeX;
|
||||
s16 sizeY;
|
||||
u32 dataSize;
|
||||
void *palData;
|
||||
void *data;
|
||||
} AnimBmpData;
|
||||
|
||||
typedef struct anim_data {
|
||||
s16 bankNum;
|
||||
s16 patNum;
|
||||
s16 bmpNum;
|
||||
s16 useNum;
|
||||
AnimBankData *bank;
|
||||
AnimPatData *pat;
|
||||
AnimBmpData *bmp;
|
||||
} AnimData;
|
||||
|
||||
typedef struct sprite_data {
|
||||
u8 r;
|
||||
u8 g;
|
||||
u8 b;
|
||||
char draw_no;
|
||||
short frame;
|
||||
short bank;
|
||||
short attr;
|
||||
short dirty_flag;
|
||||
short prio;
|
||||
float time;
|
||||
float x;
|
||||
float y;
|
||||
float z_rot;
|
||||
float scale_x;
|
||||
float scale_y;
|
||||
float speed;
|
||||
float a;
|
||||
GXTexWrapMode wrap_s;
|
||||
GXTexWrapMode wrap_t;
|
||||
short tex_scale_x;
|
||||
short tex_scale_y;
|
||||
Mtx *group_mtx;
|
||||
union {
|
||||
AnimData *data;
|
||||
SpriteFunc func;
|
||||
};
|
||||
AnimPatData *pat_data;
|
||||
AnimFrameData *frame_data;
|
||||
short work[4];
|
||||
AnimData *bg;
|
||||
unsigned short bg_bank;
|
||||
short scissor_x;
|
||||
short scissor_y;
|
||||
short scissor_w;
|
||||
short scissor_h;
|
||||
} SpriteData;
|
||||
|
||||
typedef struct sprite_group_data {
|
||||
short capacity;
|
||||
float x;
|
||||
float y;
|
||||
float z_rot;
|
||||
float scale_x;
|
||||
float scale_y;
|
||||
float center_x;
|
||||
float center_y;
|
||||
short *members;
|
||||
Mtx mtx;
|
||||
} SpriteGroupData;
|
||||
|
||||
extern SpriteData HuSprData[SPRITE_MAX];
|
||||
extern SpriteGroupData HuSprGrpData[SPRITE_GROUP_MAX];
|
||||
|
||||
|
||||
void HuSprInit(void);
|
||||
void HuSprClose(void);
|
||||
void HuSprExec(short draw_no);
|
||||
void HuSprBegin(void);
|
||||
SpriteData *HuSprCall(void);
|
||||
void HuSprFinish(void);
|
||||
void HuSprPauseSet(BOOL value);
|
||||
AnimData *HuSprAnimRead(void *data);
|
||||
void HuSprAnimLock(AnimData *anim);
|
||||
short HuSprCreate(AnimData *anim, short prio, short bank);
|
||||
short HuSprFuncCreate(SpriteFunc func, short prio);
|
||||
short HuSprGrpCreate(short capacity);
|
||||
short HuSprGrpCopy(short group);
|
||||
void HuSprGrpMemberSet(short group, short member, short sprite);
|
||||
void HuSprGrpMemberKill(short group, short member);
|
||||
void HuSprGrpKill(short group);
|
||||
void HuSprKill(short sprite);
|
||||
void HuSprAnimKill(AnimData *anim);
|
||||
void HuSprAttrSet(short group, short member, int attr);
|
||||
void HuSprAttrReset(short group, short member, int attr);
|
||||
void HuSprPosSet(short group, short member, float x, float y);
|
||||
void HuSprZRotSet(short group, short member, float z_rot);
|
||||
void HuSprScaleSet(short group, short member, float x, float y);
|
||||
void HuSprTPLvlSet(short group, short member, float tp_lvl);
|
||||
void HuSprColorSet(short group, short member, u8 r, u8 g, u8 b);
|
||||
void HuSprSpeedSet(short group, short member, float speed);
|
||||
void HuSprBankSet(short group, short member, short bank);
|
||||
void HuSprGrpPosSet(short group, float x, float y);
|
||||
void HuSprGrpCenterSet(short group, float x, float y);
|
||||
void HuSprGrpZRotSet(short group, float z_rot);
|
||||
void HuSprGrpScaleSet(short group, float x, float y);
|
||||
void HuSprGrpTPLvlSet(short group, float tp_lvl);
|
||||
void HuSprGrpDrawNoSet(short group, int draw_no);
|
||||
void HuSprDrawNoSet(short group, short member, int draw_no);
|
||||
void HuSprPriSet(short group, short member, short prio);
|
||||
void HuSprGrpScissorSet(short group, short x, short y, short w, short h);
|
||||
void HuSprScissorSet(short group, short member, short x, short y, short w, short h);
|
||||
AnimData *HuSprAnimMake(short sizeX, short sizeY, short dataFmt);
|
||||
void HuSprBGSet(short group, short member, AnimData *bg, short bg_bank);
|
||||
void HuSprSprBGSet(short sprite, AnimData *bg, short bg_bank);
|
||||
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 HuSprExecLayerSet(short draw_no, short layer);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,53 +1,26 @@
|
|||
#ifndef _VARIABLES_H
|
||||
#define _VARIABLES_H
|
||||
|
||||
#include "types.h"
|
||||
#include "dolphin.h"
|
||||
#include "common_structs.h"
|
||||
#include "dolphin/os.h"
|
||||
#include "dolphin/gx/GXStruct.h"
|
||||
|
||||
#define M_PI 3.141592653589793
|
||||
|
||||
extern u16 HuPadBtnDown[4];
|
||||
extern u8 HuPadDStk[4];
|
||||
|
||||
extern OSHeapHandle currentHeapHandle;
|
||||
extern GXRenderModeObj *RenderMode;
|
||||
|
||||
extern BOOL saftyFrameF;
|
||||
extern u16 strlinecnt;
|
||||
extern u16 empstrline;
|
||||
extern int fontcolor;
|
||||
extern u32 procfunc;
|
||||
|
||||
extern WipeState wipeData;
|
||||
|
||||
extern PlayerConfig GWPlayerCfg[4];
|
||||
|
||||
extern FileListEntry _ovltbl[];
|
||||
|
||||
extern u32 DirDataSize;
|
||||
|
||||
extern u32 totalPolyCnted;
|
||||
extern char fadeStat;
|
||||
|
||||
extern omObjData *omDBGSysKeyObj;
|
||||
extern Process *omwatchproc;
|
||||
extern OverlayID omnextovl;
|
||||
extern OverlayID omcurovl;
|
||||
extern int omcurdll;
|
||||
extern int omovlhisidx;
|
||||
extern int omovlevtno;
|
||||
extern int omnextovlevtno;
|
||||
extern int omovlstat;
|
||||
extern char omUPauseFlag;
|
||||
extern s16 omSysExitReq;
|
||||
extern s16 omdispinfo;
|
||||
extern char omSysPauseEnableFlag;
|
||||
extern OverlayID omprevovl;
|
||||
extern PlayerState GWPlayer[4];
|
||||
extern SystemState GWSystem;
|
||||
|
||||
extern u32 minimumVcount;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "common.h"
|
||||
#include "game/data.h"
|
||||
|
||||
#include "logoNintendoData.inc"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
#include "common.h"
|
||||
#include "game/object.h"
|
||||
#include "game/printfunc.h"
|
||||
#include "dolphin/pad.h"
|
||||
|
||||
//HACK: Force 0.5 and 3.0 double constants to appear in REL
|
||||
const double _half = 0.5;
|
||||
|
|
@ -38,7 +41,7 @@ static char *ext_character_str[7] = {
|
|||
|
||||
void ModuleProlog(void)
|
||||
{
|
||||
void* sp8 = omInitObjMan(0x32, 0x2000);
|
||||
Process *sp8 = omInitObjMan(0x32, 0x2000);
|
||||
Hu3DBGColorSet(0, 0, 0);
|
||||
HuPrcChildCreate(SubchrMain, 4096, 12288, 0, HuPrcCurrentGet());
|
||||
WipeCreate(1, 0, -1);
|
||||
|
|
@ -69,17 +72,17 @@ static void SubchrMain()
|
|||
while(1) {
|
||||
int y, x;
|
||||
u16 btns;
|
||||
fontcolor = 14;
|
||||
fontcolor = FONT_COLOR_YELLOW;
|
||||
print8(150, 64, 2.0f, "Sub Character Select");
|
||||
x = 170;
|
||||
y = 120;
|
||||
for(i=0; i<4; i++, y += 16) {
|
||||
fontcolor = 12;
|
||||
fontcolor = FONT_COLOR_GREEN;
|
||||
print8(x, y, 2.0f, player_numstr[i]);
|
||||
if(i == cursor_pos) {
|
||||
fontcolor = 13;
|
||||
fontcolor = FONT_COLOR_CYAN;
|
||||
} else {
|
||||
fontcolor = 12;
|
||||
fontcolor = FONT_COLOR_GREEN;
|
||||
}
|
||||
if(ext_character[i] != 0) {
|
||||
print8(x+200, y, 2.0f, ext_character_str[ext_character[i]]);
|
||||
|
|
@ -87,7 +90,7 @@ static void SubchrMain()
|
|||
print8(x+200, y, 2.0f, character_str[character[i]]);
|
||||
}
|
||||
}
|
||||
if(GetBtns() & 0x1000) {
|
||||
if(GetBtns() & PAD_BUTTON_START) {
|
||||
for(i=0; i<4; i++) {
|
||||
if(ext_character[i] != 0) {
|
||||
GWPlayerCfg[i].character = ext_character[i]+7;
|
||||
|
|
@ -102,7 +105,7 @@ static void SubchrMain()
|
|||
HuPrcVSleep();
|
||||
} while(1);
|
||||
} else {
|
||||
if(GetBtns() & 0x1) {
|
||||
if(GetBtns() & PAD_BUTTON_LEFT) {
|
||||
do {
|
||||
ext_character[cursor_pos]--;
|
||||
if(ext_character[cursor_pos] < 0) {
|
||||
|
|
@ -117,7 +120,7 @@ static void SubchrMain()
|
|||
}
|
||||
} while(i < 4);
|
||||
}
|
||||
if(GetBtns() & 0x2) {
|
||||
if(GetBtns() & PAD_BUTTON_RIGHT) {
|
||||
do {
|
||||
ext_character[cursor_pos]++;
|
||||
if(ext_character[cursor_pos] > 6) {
|
||||
|
|
@ -132,10 +135,10 @@ static void SubchrMain()
|
|||
}
|
||||
} while(i < 4);
|
||||
}
|
||||
if(GetBtns() & 0x4) {
|
||||
if(GetBtns() & PAD_BUTTON_DOWN) {
|
||||
cursor_pos++;
|
||||
}
|
||||
if(GetBtns() & 0x8) {
|
||||
if(GetBtns() & PAD_BUTTON_UP) {
|
||||
cursor_pos--;
|
||||
}
|
||||
if(cursor_pos < 0) {
|
||||
|
|
@ -144,7 +147,7 @@ static void SubchrMain()
|
|||
if(cursor_pos > 3) {
|
||||
cursor_pos = 0;
|
||||
}
|
||||
if(GetBtns() & 0x200) {
|
||||
if(GetBtns() & PAD_BUTTON_B) {
|
||||
HuAudFadeOut(30);
|
||||
WipeCreate(2, 0, -1);
|
||||
HuPrcSleep(wipeData.duration+1.0f);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "include/REL/w10Dll.h"
|
||||
#include "game/data.h"
|
||||
|
||||
//BSS
|
||||
s16 lbl_1_bss_22[11];
|
||||
|
|
@ -18,7 +19,7 @@ unkw10Dll lbl_1_data_0[1] = {
|
|||
3300.0f, 100.0f, -900.0f,
|
||||
0.0f, 0.0f, 0.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
0x007B0003
|
||||
MAKE_DATA_NUM(DATADIR_W10, 3)
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -38,23 +39,23 @@ s32 lbl_1_data_34[] = {
|
|||
};
|
||||
|
||||
s32 lbl_1_data_54[2] = {
|
||||
0x007B0012,
|
||||
-1
|
||||
MAKE_DATA_NUM(DATADIR_W10, 18),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
s32 lbl_1_data_5C[2] = {
|
||||
0x00020009,
|
||||
-1
|
||||
MAKE_DATA_NUM(DATADIR_BGUEST, 9),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
s32 lbl_1_data_64[2] = {
|
||||
0x00020018,
|
||||
-1
|
||||
MAKE_DATA_NUM(DATADIR_BGUEST, 24),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
s32 lbl_1_data_6C[2] = {
|
||||
0x0002000E,
|
||||
-1,
|
||||
MAKE_DATA_NUM(DATADIR_BGUEST, 14),
|
||||
DATA_NUM_LISTEND
|
||||
};
|
||||
|
||||
//RODATA
|
||||
|
|
@ -86,26 +87,26 @@ void fn_1_E0(void) {
|
|||
fn_1_AEC();
|
||||
fn_1_1D68();
|
||||
lbl_1_bss_C = 0;
|
||||
fn_800772EC(0x7B0000);
|
||||
fn_800772EC(MAKE_DATA_NUM(DATADIR_W10, 0));
|
||||
temp = fn_800745F0(0, 1);
|
||||
fn_800B4274(temp, 1);
|
||||
lbl_1_data_28 = fn_8006D9A4(0x7B0001, NULL, 0);
|
||||
lbl_1_data_28 = fn_8006D9A4(MAKE_DATA_NUM(DATADIR_W10, 1), NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_28, -1.0f);
|
||||
fn_8006F1A8(lbl_1_data_28, 0.0f, 0.0f, 0.0f);
|
||||
fn_8006E2B8(lbl_1_data_28, 0, 0x40000001);
|
||||
fn_8006E878(lbl_1_data_28, 1.0f);
|
||||
lbl_1_data_2A = fn_8006D9A4(0x7B0002, NULL, 0);
|
||||
lbl_1_data_2A = fn_8006D9A4(MAKE_DATA_NUM(DATADIR_W10, 2), NULL, 0);
|
||||
fn_8006DDE8(lbl_1_data_2A, -1.0f);
|
||||
fn_8006F1A8(lbl_1_data_2A, 0.0f, 0.0f, 0.0f);
|
||||
fn_8006E2B8(lbl_1_data_2A, 0, 0x40000001);
|
||||
lbl_1_data_2C = fn_8006D9A4(0x7B0011, lbl_1_data_54, 0);
|
||||
lbl_1_data_2C = fn_8006D9A4(MAKE_DATA_NUM(DATADIR_W10, 17), lbl_1_data_54, 0);
|
||||
fn_8006F1A8(lbl_1_data_2C, 0.0f, 0.0f, 0.0f);
|
||||
fn_8006E2B8(lbl_1_data_2C, 1, 0x40000001);
|
||||
lbl_1_data_2E = fn_8006D9A4(0x20005, lbl_1_data_5C, 0);
|
||||
lbl_1_data_2E = fn_8006D9A4(MAKE_DATA_NUM(DATADIR_BGUEST, 5), lbl_1_data_5C, 0);
|
||||
fn_8006E2B8(lbl_1_data_2E, 1, 0x40000001);
|
||||
lbl_1_data_32 = fn_8006D9A4(0x20012, lbl_1_data_64, 0);
|
||||
lbl_1_data_32 = fn_8006D9A4(MAKE_DATA_NUM(DATADIR_BGUEST, 18), lbl_1_data_64, 0);
|
||||
fn_8006E2B8(lbl_1_data_32, 1, 0x40000001);
|
||||
lbl_1_data_30 = fn_8006D9A4(0x2000D, lbl_1_data_6C, 0);
|
||||
lbl_1_data_30 = fn_8006D9A4(MAKE_DATA_NUM(DATADIR_BGUEST, 13), lbl_1_data_6C, 0);
|
||||
fn_8006E2B8(lbl_1_data_30, 1, 0x40000001);
|
||||
fn_8005D10C(&fn_1_8C0, &fn_1_904);
|
||||
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
|
||||
|
|
|
|||
|
|
@ -1,18 +1,19 @@
|
|||
#include "REL/w10Dll.h"
|
||||
#include "game/data.h"
|
||||
|
||||
s32 lbl_1_data_78[2] = {
|
||||
0x007B0010,
|
||||
MAKE_DATA_NUM(DATADIR_W10, 16),
|
||||
-1
|
||||
};
|
||||
|
||||
Vec3f lbl_1_data_80[2] = {
|
||||
Vec lbl_1_data_80[2] = {
|
||||
{70.0f, 355.0f, 200.f},
|
||||
{70.0f, 175.0f, 200.f},
|
||||
};
|
||||
|
||||
void fn_1_AEC(void) {
|
||||
lbl_1_bss_1C = 0;
|
||||
lbl_1_bss_1E = fn_8006D9A4(0x7B000F, &lbl_1_data_78, 0);
|
||||
lbl_1_bss_1E = fn_8006D9A4(MAKE_DATA_NUM(DATADIR_W10, 15), &lbl_1_data_78, 0);
|
||||
fn_8006E2B8(lbl_1_bss_1E, 1, 0x40000001);
|
||||
fn_800B42BC(lbl_1_bss_1E);
|
||||
fn_8006F61C(lbl_1_bss_1E, 6);
|
||||
|
|
@ -41,8 +42,8 @@ void fn_1_C10(s16 arg0) {
|
|||
|
||||
void fn_1_C20(void) {
|
||||
Mtx sp20;
|
||||
Vec3f sp14;
|
||||
Vec3f sp8;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
|
||||
while (1) {
|
||||
if (fn_8005B6A8() != 0) {
|
||||
|
|
|
|||
|
|
@ -168,8 +168,8 @@ void fn_1_137C(void) {
|
|||
|
||||
void fn_1_13A4(void) {
|
||||
s32 i;
|
||||
Vec3f sp14;
|
||||
Vec3f sp8;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
s32 temp_r3_2;
|
||||
|
||||
fn_1_BA0(0x2E0023);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "REL/w10Dll.h"
|
||||
#include "game/data.h"
|
||||
|
||||
char lbl_1_data_98[] = "@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n\000";
|
||||
|
||||
|
|
@ -64,17 +65,17 @@ w10DllUnk04 lbl_1_data_108[42] = {
|
|||
char lbl_1_data_258[] = "Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n";
|
||||
|
||||
s32 lbl_1_data_2A8[11] = {
|
||||
0x007B0004,
|
||||
0x007B0005,
|
||||
0x007B0006,
|
||||
0x007B0007,
|
||||
0x007B0008,
|
||||
0x007B0009,
|
||||
0x007B000A,
|
||||
0x007B000B,
|
||||
0x007B000C,
|
||||
0x007B000D,
|
||||
0x007B000E
|
||||
MAKE_DATA_NUM(DATADIR_W10, 4),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 5),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 6),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 7),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 8),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 9),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 10),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 11),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 12),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 13),
|
||||
MAKE_DATA_NUM(DATADIR_W10, 14)
|
||||
};
|
||||
|
||||
void fn_1_176C(void) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "common.h"
|
||||
#include "game/data.h"
|
||||
#include "dolphin/dvd.h"
|
||||
|
||||
#define PTR_OFFSET(ptr, offset) (void *)(((u8 *)(ptr)+(u32)(offset)))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "common.h"
|
||||
#include "game/data.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
struct decode_data
|
||||
|
|
@ -181,27 +182,27 @@ void HuDecodeData(void *src, void *dst, u32 size, int decode_type)
|
|||
decode_ptr->dst = dst;
|
||||
decode_ptr->size = size;
|
||||
switch(decode_type) {
|
||||
case 0:
|
||||
case DATA_DECODE_NONE:
|
||||
HuDecodeNone(decode_ptr);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case DATA_DECODE_LZ:
|
||||
HuDecodeLz(decode_ptr);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case DATA_DECODE_SLIDE:
|
||||
HuDecodeSlide(decode_ptr);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case DATA_DECODE_FSLIDE_ALT:
|
||||
HuDecodeFslide(decode_ptr);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case DATA_DECODE_FSLIDE:
|
||||
HuDecodeFslide(decode_ptr);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case DATA_DECODE_RLE:
|
||||
HuDecodeRle(decode_ptr);
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
#include "common.h"
|
||||
#include "game/dvd.h"
|
||||
#include "game/data.h"
|
||||
|
||||
#include "dolphin/dvd.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "common.h"
|
||||
#include "game/init.h"
|
||||
#include "dolphin/os.h"
|
||||
#include "dolphin/gx.h"
|
||||
#include "dolphin/dvd.h"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#include "common.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/init.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
static u32 HeapSizeTbl[HEAP_MAX] = { 0x240000, 0x140000, 0xA80000, 0x580000, 0 };
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "common.h"
|
||||
#include "game/memory.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
#define DATA_GET_BLOCK(ptr) ((struct memory_block *)(((char *)(ptr))-32))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#include "common.h"
|
||||
#include "game/printfunc.h"
|
||||
#include "game/object.h"
|
||||
|
||||
#define OM_OVL_HIS_MAX 16
|
||||
#define OM_MAX_GROUPS 10
|
||||
|
|
@ -141,10 +143,10 @@ void omOvlKill(s16 arg)
|
|||
HuWinAllKill();
|
||||
HuSprClose();
|
||||
HuPrcChildKill(omwatchproc);
|
||||
HuMemDirectFreeNum(HEAP_SYSTEM, 0x10000000);
|
||||
HuDataDirCloseNum(0x10000000);
|
||||
HuMemDirectFreeNum(HEAP_DVD, 0x10000000);
|
||||
HuMemDirectFreeNum(HEAP_DATA, 0x10000000);
|
||||
HuMemDirectFreeNum(HEAP_SYSTEM, MEMORY_DEFAULT_NUM);
|
||||
HuDataDirCloseNum(MEMORY_DEFAULT_NUM);
|
||||
HuMemDirectFreeNum(HEAP_DVD, MEMORY_DEFAULT_NUM);
|
||||
HuMemDirectFreeNum(HEAP_DATA, MEMORY_DEFAULT_NUM);
|
||||
HuPadRumbleAllStop();
|
||||
HuAudFXListnerKill();
|
||||
OSReport("OvlKill %d\n", arg);
|
||||
|
|
@ -188,8 +190,8 @@ Process *omInitObjMan(s16 max_objs, int prio)
|
|||
max_objs += 2;
|
||||
omSysExitReq = FALSE;
|
||||
process = HuPrcChildCreate(omMain, prio, 16384, 0, omwatchproc);
|
||||
HuPrcSetStat(process, 12);
|
||||
objman = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(omObjMan), 0x10000000);
|
||||
HuPrcSetStat(process, PROCESS_STAT_PAUSE_EN|PROCESS_STAT_UPAUSE_EN);
|
||||
objman = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(omObjMan), MEMORY_DEFAULT_NUM);
|
||||
objman->max_objs = max_objs;
|
||||
process->user_data = objman;
|
||||
process->dtor = omDestroyObjMan;
|
||||
|
|
@ -197,9 +199,9 @@ Process *omInitObjMan(s16 max_objs, int prio)
|
|||
objman->next_idx = 0;
|
||||
objman->obj_last = -1;
|
||||
objman->obj_first = -1;
|
||||
obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData), 0x10000000);
|
||||
obj_all = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData), MEMORY_DEFAULT_NUM);
|
||||
objman->obj = obj_all;
|
||||
group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS*sizeof(omObjGroup), 0x10000000);
|
||||
group_all = HuMemDirectMallocNum(HEAP_SYSTEM, OM_MAX_GROUPS*sizeof(omObjGroup), MEMORY_DEFAULT_NUM);
|
||||
objman->group = group_all;
|
||||
for(i=0; i<max_objs;i++) {
|
||||
obj = &obj_all[i];
|
||||
|
|
@ -251,7 +253,7 @@ omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt,
|
|||
object->prio = prio;
|
||||
omInsertObj(objman_process, object);
|
||||
if(mdlcnt) {
|
||||
object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt*sizeof(s16), 0x10000000);
|
||||
object->model = HuMemDirectMallocNum(HEAP_SYSTEM, mdlcnt*sizeof(s16), MEMORY_DEFAULT_NUM);
|
||||
object->mdlcnt = mdlcnt;
|
||||
for(i=0; i<mdlcnt; i++) {
|
||||
object->model[i] = -1;
|
||||
|
|
@ -261,7 +263,7 @@ omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt,
|
|||
object->mdlcnt = 0;
|
||||
}
|
||||
if(mtncnt) {
|
||||
object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt*sizeof(s16), 0x10000000);
|
||||
object->motion = HuMemDirectMallocNum(HEAP_SYSTEM, mtncnt*sizeof(s16), MEMORY_DEFAULT_NUM);
|
||||
object->mtncnt = mtncnt;
|
||||
} else {
|
||||
object->motion = NULL;
|
||||
|
|
@ -273,7 +275,7 @@ omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt,
|
|||
object->group = group;
|
||||
object->group_idx = 0;
|
||||
}
|
||||
object->stat = 4;
|
||||
object->stat = OM_STAT_ACTIVE;
|
||||
object->unk10 = 0;
|
||||
object->func = func;
|
||||
object->work[0] = object->work[1] = object->work[2] = object->work[3] = 0;
|
||||
|
|
@ -363,7 +365,7 @@ void omDelObjEx(Process *objman_process, omObjData *object)
|
|||
HuMemDirectFree(object->data);
|
||||
object->data = NULL;
|
||||
}
|
||||
object->stat = 1;
|
||||
object->stat = OM_STAT_DELETED;
|
||||
if(object->next >= 0) {
|
||||
obj_all[object->next].prev = object->prev;
|
||||
}
|
||||
|
|
@ -412,8 +414,8 @@ void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs)
|
|||
group_ptr->next_idx = 0;
|
||||
group_ptr->max_objs = max_objs;
|
||||
group_ptr->num_objs = 0;
|
||||
group_ptr->obj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData *), 0x10000000);
|
||||
group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(u16), 0x10000000);
|
||||
group_ptr->obj = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(omObjData *), MEMORY_DEFAULT_NUM);
|
||||
group_ptr->next = HuMemDirectMallocNum(HEAP_SYSTEM, max_objs*sizeof(u16), MEMORY_DEFAULT_NUM);
|
||||
for(i=0; i<max_objs; i++) {
|
||||
group_ptr->obj[i] = NULL;
|
||||
group_ptr->next[i] = i+1;
|
||||
|
|
@ -474,7 +476,7 @@ void omMain(void)
|
|||
color.g = 0;
|
||||
color.b = 255;
|
||||
printWin(7, 23, 128*scale, 40*scale, &color);
|
||||
fontcolor = 14;
|
||||
fontcolor = FONT_COLOR_YELLOW;
|
||||
print8(8, 24, scale, "\xFD\x01H:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemUsedMallocBlockGet(HEAP_SYSTEM));
|
||||
print8(8, 24+(8*scale), scale, "\xFD\x01M:%08lX(%ld)", HuMemUsedMallocSizeGet(HEAP_DATA), HuMemUsedMallocBlockGet(HEAP_DATA));
|
||||
print8(8, 24+(16*scale), scale, "\xFD\x01OBJ:%d/%d", objman->num_objs, objman->max_objs);
|
||||
|
|
@ -485,18 +487,18 @@ void omMain(void)
|
|||
while(obj_index != -1) {
|
||||
object = &obj_all[obj_index];
|
||||
obj_index = object->prev;
|
||||
if((object->stat & 0x3) == 0) {
|
||||
if(object->func != NULL && (object->stat & 0x58) == 0) {
|
||||
if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) {
|
||||
if(object->func != NULL && (object->stat & (0x40|0x8|OM_STAT_PAUSED)) == 0) {
|
||||
object->func(object);
|
||||
}
|
||||
if(omcurovl == -1 || objman->obj_last == -1) {
|
||||
break;
|
||||
}
|
||||
if((object->stat & 0x3) == 0) {
|
||||
if((obj_all[obj_index].stat & 0x3) != 0) {
|
||||
if((object->stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) == 0) {
|
||||
if((obj_all[obj_index].stat & (OM_STAT_DELETED|OM_STAT_DISABLED)) != 0) {
|
||||
obj_index = object->prev;
|
||||
}
|
||||
if(object->model != NULL && object->model[0] != -1 && !(object->stat & 0x100)) {
|
||||
if(object->model != NULL && object->model[0] != -1 && !(object->stat & OM_STAT_MODEL_PAUSED)) {
|
||||
Hu3DModelPosSet(object->model[0], object->trans.x, object->trans.y, object->trans.z);
|
||||
Hu3DModelRotSet(object->model[0], object->rot.x, object->rot.y, object->rot.z);
|
||||
Hu3DModelScaleSet(object->model[0], object->scale.x, object->scale.y, object->scale.z);
|
||||
|
|
@ -535,14 +537,14 @@ void omAllPause(BOOL pause)
|
|||
int i;
|
||||
if(pause) {
|
||||
for(i=0; i<objman->max_objs; i++) {
|
||||
if((objman->obj[i].stat & 0x21) == 0) {
|
||||
omSetStatBit(&objman->obj[i], 0x10);
|
||||
if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) {
|
||||
omSetStatBit(&objman->obj[i], OM_STAT_PAUSED);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for(i=0; i<objman->max_objs; i++) {
|
||||
if((objman->obj[i].stat & 0x21) == 0) {
|
||||
omResetStatBit(&objman->obj[i], 0x10);
|
||||
if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) {
|
||||
omResetStatBit(&objman->obj[i], OM_STAT_PAUSED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "common.h"
|
||||
|
||||
#include "game/dvd.h"
|
||||
#include "game/object.h"
|
||||
|
||||
#define OVL_DEFINE(name, path) { path, 0 },
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include "common.h"
|
||||
#include "dolphin/mtx.h"
|
||||
#include "dolphin/gx.h"
|
||||
#include "dolphin/vi.h"
|
||||
#include "dolphin.h"
|
||||
#include "game/printfunc.h"
|
||||
#include "game/init.h"
|
||||
#include "stdio.h"
|
||||
#include "stdarg.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
#include "common.h"
|
||||
#include "game/process.h"
|
||||
#include "game/memory.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
#define PROCESS_MEMORY_RETADDR 0xA5A5A5A5
|
||||
|
||||
extern int gcsetjmp(jmp_buf *jump);
|
||||
extern void gclongjmp(jmp_buf *jump, int status);
|
||||
|
||||
|
|
@ -75,13 +79,13 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz
|
|||
return NULL;
|
||||
}
|
||||
HuMemHeapInit(heap, alloc_size);
|
||||
process = HuMemMemoryAlloc(heap, sizeof(Process), 0xA5A5A5A5);
|
||||
process = HuMemMemoryAlloc(heap, sizeof(Process), PROCESS_MEMORY_RETADDR);
|
||||
process->heap = heap;
|
||||
process->exec = EXEC_NORMAL;
|
||||
process->stat = 0;
|
||||
process->prio = prio;
|
||||
process->sleep_time = 0;
|
||||
process->base_sp = ((u32)HuMemMemoryAlloc(heap, stack_size, 0xA5A5A5A5))+stack_size-8;
|
||||
process->base_sp = ((u32)HuMemMemoryAlloc(heap, stack_size, PROCESS_MEMORY_RETADDR))+stack_size-8;
|
||||
gcsetjmp(&process->jump);
|
||||
process->jump.lr = (u32)func;
|
||||
process->jump.sp = process->base_sp;
|
||||
|
|
@ -196,7 +200,7 @@ void HuPrcEnd()
|
|||
gcTerminateProcess(process);
|
||||
}
|
||||
|
||||
void HuPrcSleep(s32 time)
|
||||
void HuPrcSleep(int time)
|
||||
{
|
||||
Process *process = HuPrcCurrentGet();
|
||||
if(time != 0 && process->exec != EXEC_KILLED) {
|
||||
|
|
@ -256,7 +260,7 @@ void HuPrcCall(int tick)
|
|||
return;
|
||||
}
|
||||
procfunc = process->jump.lr;
|
||||
if((process->stat & 0x3) && process->exec != EXEC_KILLED) {
|
||||
if((process->stat & (PROCESS_STAT_PAUSE|PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) {
|
||||
ret = 1;
|
||||
continue;
|
||||
}
|
||||
|
|
@ -293,12 +297,12 @@ void HuPrcCall(int tick)
|
|||
void *HuPrcMemAlloc(s32 size)
|
||||
{
|
||||
Process *process = HuPrcCurrentGet();
|
||||
return HuMemMemoryAlloc(process->heap, size, 0xA5A5A5A5);
|
||||
return HuMemMemoryAlloc(process->heap, size, PROCESS_MEMORY_RETADDR);
|
||||
}
|
||||
|
||||
void HuPrcMemFree(void *ptr)
|
||||
{
|
||||
HuMemMemoryFree(ptr, 0xA5A5A5A5);
|
||||
HuMemMemoryFree(ptr, PROCESS_MEMORY_RETADDR);
|
||||
}
|
||||
|
||||
void HuPrcSetStat(Process *process, u16 value)
|
||||
|
|
@ -316,16 +320,16 @@ void HuPrcAllPause(int flag)
|
|||
Process *process = processtop;
|
||||
if(flag) {
|
||||
while(process != NULL) {
|
||||
if(!(process->stat & 0x4)) {
|
||||
HuPrcSetStat(process, 0x1);
|
||||
if(!(process->stat & PROCESS_STAT_PAUSE_EN)) {
|
||||
HuPrcSetStat(process, PROCESS_STAT_PAUSE);
|
||||
}
|
||||
|
||||
process = process->next;
|
||||
}
|
||||
} else {
|
||||
while(process != NULL) {
|
||||
if(process->stat & 0x1) {
|
||||
HuPrcResetStat(process, 0x1);
|
||||
if(process->stat & PROCESS_STAT_PAUSE) {
|
||||
HuPrcResetStat(process, PROCESS_STAT_PAUSE);
|
||||
}
|
||||
|
||||
process = process->next;
|
||||
|
|
@ -338,16 +342,16 @@ void HuPrcAllUPause(int flag)
|
|||
Process *process = processtop;
|
||||
if(flag) {
|
||||
while(process != NULL) {
|
||||
if(!(process->stat & 0x8)) {
|
||||
HuPrcSetStat(process, 0x2);
|
||||
if(!(process->stat & PROCESS_STAT_UPAUSE_EN)) {
|
||||
HuPrcSetStat(process, PROCESS_STAT_UPAUSE);
|
||||
}
|
||||
|
||||
process = process->next;
|
||||
}
|
||||
} else {
|
||||
while(process != NULL) {
|
||||
if(process->stat & 0x2) {
|
||||
HuPrcResetStat(process, 0x2);
|
||||
if(process->stat & PROCESS_STAT_UPAUSE) {
|
||||
HuPrcResetStat(process, PROCESS_STAT_UPAUSE);
|
||||
}
|
||||
|
||||
process = process->next;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,29 @@
|
|||
#include "common.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/memory.h"
|
||||
#include "game/init.h"
|
||||
|
||||
#include "dolphin/mtx.h"
|
||||
|
||||
SpriteData HuSprData[384];
|
||||
SpriteGroupData HuSprGrpData[256];
|
||||
static SpriteOrderData HuSprOrder[384*2];
|
||||
#define SPRITE_DIRTY_ATTR 0x1
|
||||
#define SPRITE_DIRTY_XFORM 0x2
|
||||
#define SPRITE_DIRTY_COLOR 0x4
|
||||
|
||||
typedef struct sprite_order_data {
|
||||
unsigned short group;
|
||||
unsigned short sprite;
|
||||
unsigned short prio;
|
||||
unsigned short next;
|
||||
} SpriteOrderData;
|
||||
|
||||
SpriteData HuSprData[SPRITE_MAX];
|
||||
SpriteGroupData HuSprGrpData[SPRITE_GROUP_MAX];
|
||||
static SpriteOrderData HuSprOrder[SPRITE_MAX*2];
|
||||
|
||||
static short HuSprOrderNum;
|
||||
static short HuSprOrderNo;
|
||||
static BOOL HuSprPauseF;
|
||||
|
||||
|
||||
static void HuSprOrderEntry(short group, short sprite);
|
||||
|
||||
void mtxTransCat(Mtx matrix, float x, float y, int z); //Last argument should be a float
|
||||
|
|
@ -19,10 +33,10 @@ void HuSprInit(void)
|
|||
short i;
|
||||
SpriteData *sprite;
|
||||
SpriteGroupData *group;
|
||||
for(sprite = &HuSprData[1], i=1; i<384; i++, sprite++) {
|
||||
for(sprite = &HuSprData[1], i=1; i<SPRITE_MAX; i++, sprite++) {
|
||||
sprite->data = NULL;
|
||||
}
|
||||
for(group = HuSprGrpData, i=0; i<256; i++, group++) {
|
||||
for(group = HuSprGrpData, i=0; i<SPRITE_GROUP_MAX; i++, group++) {
|
||||
group->capacity = 0;
|
||||
}
|
||||
sprite = &HuSprData[0];
|
||||
|
|
@ -37,12 +51,12 @@ void HuSprClose(void)
|
|||
SpriteGroupData *group;
|
||||
SpriteData *sprite;
|
||||
|
||||
for(group = HuSprGrpData, i=0; i<256; i++, group++) {
|
||||
for(group = HuSprGrpData, i=0; i<SPRITE_GROUP_MAX; i++, group++) {
|
||||
if(group->capacity != 0) {
|
||||
HuSprGrpKill(i);
|
||||
}
|
||||
}
|
||||
for(sprite = &HuSprData[1], i=1; i<384; i++, sprite++) {
|
||||
for(sprite = &HuSprData[1], i=1; i<SPRITE_MAX; i++, sprite++) {
|
||||
if(sprite->data) {
|
||||
HuSprKill(i);
|
||||
}
|
||||
|
|
@ -54,7 +68,7 @@ void HuSprExec(short draw_no)
|
|||
{
|
||||
SpriteData *sprite;
|
||||
while(sprite = HuSprCall()) {
|
||||
if(!(sprite->attr & 0x4) && sprite->draw_no == draw_no) {
|
||||
if(!(sprite->attr & SPRITE_ATTR_HIDDEN) && sprite->draw_no == draw_no) {
|
||||
HuSprDisp(sprite);
|
||||
}
|
||||
}
|
||||
|
|
@ -70,7 +84,7 @@ void HuSprBegin(void)
|
|||
HuSprOrderNum = 1;
|
||||
HuSprOrder[0].next = 0;
|
||||
HuSprOrder[0].prio = -1;
|
||||
for(i=0; i<256; i++, group++) {
|
||||
for(i=0; i<SPRITE_GROUP_MAX; i++, group++) {
|
||||
if(group->capacity != 0) {
|
||||
MTXTrans(temp, group->center_x*group->scale_x, group->center_y*group->scale_y, 0.0f);
|
||||
MTXRotAxisDeg(rot, &axis, group->z_rot);
|
||||
|
|
@ -93,7 +107,7 @@ static void HuSprOrderEntry(short group, short sprite)
|
|||
SpriteOrderData *order = &HuSprOrder[HuSprOrderNum];
|
||||
short prio = HuSprData[sprite].prio;
|
||||
short prev, next;
|
||||
if(HuSprOrderNum >= 384*2) {
|
||||
if(HuSprOrderNum >= SPRITE_MAX*2) {
|
||||
OSReport("Order Max Over!\n");
|
||||
return;
|
||||
}
|
||||
|
|
@ -118,7 +132,7 @@ SpriteData *HuSprCall(void)
|
|||
SpriteOrderData *order = &HuSprOrder[HuSprOrderNo];
|
||||
SpriteData *sprite = &HuSprData[order->sprite];
|
||||
sprite->group_mtx = &HuSprGrpData[order->group].mtx;
|
||||
if(sprite->attr & 0x10) {
|
||||
if(sprite->attr & SPRITE_ATTR_FUNC) {
|
||||
return sprite;
|
||||
}
|
||||
sprite->frame_data = &sprite->data->bank[sprite->bank].frame[sprite->frame];
|
||||
|
|
@ -129,13 +143,13 @@ SpriteData *HuSprCall(void)
|
|||
}
|
||||
}
|
||||
|
||||
static inline void SpriteCalcFrame(SpriteData *sprite, AnimBankData *bank, AnimFrameData **frame, short wrap)
|
||||
static inline void SpriteCalcFrame(SpriteData *sprite, AnimBankData *bank, AnimFrameData **frame, short loop)
|
||||
{
|
||||
if(sprite->time >= (*frame)->time) {
|
||||
sprite->frame++;
|
||||
sprite->time -= (*frame)->time;
|
||||
if(sprite->frame >= bank->timeNum || (*frame)[1].time == -1) {
|
||||
if(wrap) {
|
||||
if(loop) {
|
||||
sprite->frame = 0;
|
||||
} else {
|
||||
sprite->frame = bank->timeNum-1;
|
||||
|
|
@ -145,7 +159,7 @@ static inline void SpriteCalcFrame(SpriteData *sprite, AnimBankData *bank, AnimF
|
|||
} else if(sprite->time < 0) {
|
||||
sprite->frame--;
|
||||
if(sprite->frame < 0) {
|
||||
if(wrap) {
|
||||
if(loop) {
|
||||
sprite->frame = bank->timeNum-1;
|
||||
} else {
|
||||
sprite->frame = 0;
|
||||
|
|
@ -164,25 +178,24 @@ void HuSprFinish(void)
|
|||
SpriteData *sprite;
|
||||
short i;
|
||||
short j;
|
||||
short wrap;
|
||||
short loop;
|
||||
short dir;
|
||||
|
||||
|
||||
for(sprite = &HuSprData[1], i=1; i<384; i++, sprite++) {
|
||||
if(sprite->data && !(sprite->attr & 0x10)) {
|
||||
if(!HuSprPauseF || (sprite->attr & 0x20)) {
|
||||
for(sprite = &HuSprData[1], i=1; i<SPRITE_MAX; i++, sprite++) {
|
||||
if(sprite->data && !(sprite->attr & SPRITE_ATTR_FUNC)) {
|
||||
if(!HuSprPauseF || (sprite->attr & SPRITE_ATTR_NOPAUSE)) {
|
||||
anim = sprite->data;
|
||||
bank = &anim->bank[sprite->bank];
|
||||
frame = &bank->frame[sprite->frame];
|
||||
wrap = (sprite->attr & 0x2) ? 0 : 1;
|
||||
if(!(sprite->attr & 0x1)) {
|
||||
dir = (sprite->attr & 0x40) ? -1 : 1;
|
||||
loop = (sprite->attr & SPRITE_ATTR_LOOP) ? 0 : 1;
|
||||
if(!(sprite->attr & SPRITE_ATTR_PAUSED)) {
|
||||
dir = (sprite->attr & SPRITE_ATTR_REVERSE) ? -1 : 1;
|
||||
for(j=0; j<(int)sprite->speed*minimumVcount; j++) {
|
||||
sprite->time += dir;
|
||||
SpriteCalcFrame(sprite, bank, &frame, wrap);
|
||||
SpriteCalcFrame(sprite, bank, &frame, loop);
|
||||
}
|
||||
sprite->time += (sprite->speed*(float)minimumVcount)-j;
|
||||
SpriteCalcFrame(sprite, bank, &frame, wrap);
|
||||
SpriteCalcFrame(sprite, bank, &frame, loop);
|
||||
}
|
||||
sprite->dirty_flag = 0;
|
||||
}
|
||||
|
|
@ -236,13 +249,13 @@ short HuSprCreate(AnimData *anim, short prio, short bank)
|
|||
{
|
||||
SpriteData *sprite;
|
||||
short i;
|
||||
for(sprite = &HuSprData[1], i=1; i<384; i++, sprite++) {
|
||||
for(sprite = &HuSprData[1], i=1; i<SPRITE_MAX; i++, sprite++) {
|
||||
if(!sprite->data) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i == 384) {
|
||||
return -1;
|
||||
if(i == SPRITE_MAX) {
|
||||
return SPRITE_INVALID;
|
||||
}
|
||||
sprite->data = anim;
|
||||
sprite->speed = 1.0f;
|
||||
|
|
@ -271,12 +284,12 @@ short HuSprFuncCreate(void (*func)(SpriteData *sprite), short prio)
|
|||
{
|
||||
SpriteData *sprite;
|
||||
short index = HuSprCreate(NULL, prio, 0);
|
||||
if(index == -1) {
|
||||
return -1;
|
||||
if(index == SPRITE_INVALID) {
|
||||
return SPRITE_INVALID;
|
||||
}
|
||||
sprite = &HuSprData[index];
|
||||
sprite->func = func;
|
||||
sprite->attr |= 0x10;
|
||||
sprite->attr |= SPRITE_ATTR_FUNC;
|
||||
return index;
|
||||
}
|
||||
|
||||
|
|
@ -284,17 +297,17 @@ short HuSprGrpCreate(short capacity)
|
|||
{
|
||||
SpriteGroupData *group;
|
||||
short i, j;
|
||||
for(group = HuSprGrpData, i=0; i<256; i++, group++) {
|
||||
for(group = HuSprGrpData, i=0; i<SPRITE_GROUP_MAX; i++, group++) {
|
||||
if(group->capacity == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i == 256) {
|
||||
return -1;
|
||||
if(i == SPRITE_GROUP_MAX) {
|
||||
return SPRITE_GROUP_INVALID;
|
||||
}
|
||||
group->members = HuMemDirectMalloc(HEAP_SYSTEM, sizeof(short)*capacity);
|
||||
for(j=0; j<capacity; j++) {
|
||||
group->members[j] = -1;
|
||||
group->members[j] = SPRITE_INVALID;
|
||||
}
|
||||
group->capacity = capacity;
|
||||
group->x = group->y = group->z_rot = group->center_x = group->center_y = 0.0f;
|
||||
|
|
@ -308,8 +321,8 @@ short HuSprGrpCopy(short group)
|
|||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
short new_group = HuSprGrpCreate(group_ptr->capacity);
|
||||
short i;
|
||||
if(new_group == -1) {
|
||||
return -1;
|
||||
if(new_group == SPRITE_GROUP_INVALID) {
|
||||
return SPRITE_GROUP_INVALID;
|
||||
}
|
||||
new_group_ptr = &HuSprGrpData[new_group];
|
||||
new_group_ptr->x = group_ptr->x;
|
||||
|
|
@ -320,7 +333,7 @@ short HuSprGrpCopy(short group)
|
|||
new_group_ptr->center_x = group_ptr->center_x;
|
||||
new_group_ptr->center_y = group_ptr->center_y;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
SpriteData *old_sprite = &HuSprData[group_ptr->members[i]];
|
||||
short new_sprite = HuSprCreate(old_sprite->data, old_sprite->prio, old_sprite->bank);
|
||||
HuSprData[new_sprite] = *old_sprite;
|
||||
|
|
@ -334,7 +347,7 @@ void HuSprGrpMemberSet(short group, short member, short sprite)
|
|||
{
|
||||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
SpriteData *sprite_ptr = &HuSprData[sprite];
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] != -1) {
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] != SPRITE_INVALID) {
|
||||
return;
|
||||
}
|
||||
group_ptr->members[member] = sprite;
|
||||
|
|
@ -343,11 +356,11 @@ void HuSprGrpMemberSet(short group, short member, short sprite)
|
|||
void HuSprGrpMemberKill(short group, short member)
|
||||
{
|
||||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] == -1) {
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] == SPRITE_INVALID) {
|
||||
return;
|
||||
}
|
||||
HuSprKill(group_ptr->members[member]);
|
||||
group_ptr->members[member] = -1;
|
||||
group_ptr->members[member] = SPRITE_INVALID;
|
||||
}
|
||||
|
||||
void HuSprGrpKill(short group)
|
||||
|
|
@ -355,11 +368,11 @@ void HuSprGrpKill(short group)
|
|||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
short i;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
HuSprKill(group_ptr->members[i]);
|
||||
}
|
||||
}
|
||||
group_ptr->capacity = 0;
|
||||
group_ptr->capacity = 0;
|
||||
HuMemDirectFree(group_ptr->members);
|
||||
}
|
||||
|
||||
|
|
@ -369,7 +382,7 @@ void HuSprKill(short sprite)
|
|||
if(!sprite_ptr->data) {
|
||||
return;
|
||||
}
|
||||
if(!(sprite_ptr->attr & 0x10)) {
|
||||
if(!(sprite_ptr->attr & SPRITE_ATTR_FUNC)) {
|
||||
HuSprAnimKill(sprite_ptr->data);
|
||||
if(sprite_ptr->bg) {
|
||||
HuSprAnimKill(sprite_ptr->bg);
|
||||
|
|
@ -382,7 +395,7 @@ void HuSprKill(short sprite)
|
|||
void HuSprAnimKill(AnimData *anim)
|
||||
{
|
||||
if(--anim->useNum <= 0) {
|
||||
if(anim->bmpNum & 0x8000) {
|
||||
if(anim->bmpNum & SPRITE_BMP_ALLOC) {
|
||||
if(anim->bmp->data) {
|
||||
HuMemDirectFree(anim->bmp->data);
|
||||
}
|
||||
|
|
@ -398,24 +411,24 @@ void HuSprAttrSet(short group, short member, int attr)
|
|||
{
|
||||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
SpriteData *sprite_ptr;
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] == -1) {
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] == SPRITE_INVALID) {
|
||||
return;
|
||||
}
|
||||
sprite_ptr = &HuSprData[group_ptr->members[member]];
|
||||
sprite_ptr->attr |= attr;
|
||||
sprite_ptr->dirty_flag |= 0x1;
|
||||
sprite_ptr->dirty_flag |= SPRITE_DIRTY_ATTR;
|
||||
}
|
||||
|
||||
void HuSprAttrReset(short group, short member, int attr)
|
||||
{
|
||||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
SpriteData *sprite_ptr;
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] == -1) {
|
||||
if(group_ptr->capacity == 0 || group_ptr->capacity <= member || group_ptr->members[member] == SPRITE_INVALID) {
|
||||
return;
|
||||
}
|
||||
sprite_ptr = &HuSprData[group_ptr->members[member]];
|
||||
sprite_ptr->attr &= ~attr;
|
||||
sprite_ptr->dirty_flag |= 0x1;
|
||||
sprite_ptr->dirty_flag |= SPRITE_DIRTY_ATTR;
|
||||
}
|
||||
|
||||
void HuSprPosSet(short group, short member, float x, float y)
|
||||
|
|
@ -423,14 +436,14 @@ void HuSprPosSet(short group, short member, float x, float y)
|
|||
SpriteData *sprite_ptr = &HuSprData[HuSprGrpData[group].members[member]];
|
||||
sprite_ptr->x = x;
|
||||
sprite_ptr->y = y;
|
||||
sprite_ptr->dirty_flag |= 0x2;
|
||||
sprite_ptr->dirty_flag |= SPRITE_DIRTY_XFORM;
|
||||
}
|
||||
|
||||
void HuSprZRotSet(short group, short member, float z_rot)
|
||||
{
|
||||
SpriteData *sprite_ptr = &HuSprData[HuSprGrpData[group].members[member]];
|
||||
sprite_ptr->z_rot = z_rot;
|
||||
sprite_ptr->dirty_flag |= 0x2;
|
||||
sprite_ptr->dirty_flag |= SPRITE_DIRTY_XFORM;
|
||||
}
|
||||
|
||||
void HuSprScaleSet(short group, short member, float x, float y)
|
||||
|
|
@ -438,14 +451,14 @@ void HuSprScaleSet(short group, short member, float x, float y)
|
|||
SpriteData *sprite_ptr = &HuSprData[HuSprGrpData[group].members[member]];
|
||||
sprite_ptr->scale_x = x;
|
||||
sprite_ptr->scale_y = y;
|
||||
sprite_ptr->dirty_flag |= 0x2;
|
||||
sprite_ptr->dirty_flag |= SPRITE_DIRTY_XFORM;
|
||||
}
|
||||
|
||||
void HuSprTPLvlSet(short group, short member, float tp_lvl)
|
||||
{
|
||||
SpriteData *sprite_ptr = &HuSprData[HuSprGrpData[group].members[member]];
|
||||
sprite_ptr->a = tp_lvl*255;
|
||||
sprite_ptr->dirty_flag |= 0x4;
|
||||
sprite_ptr->dirty_flag |= SPRITE_DIRTY_COLOR;
|
||||
}
|
||||
|
||||
void HuSprColorSet(short group, short member, u8 r, u8 g, u8 b)
|
||||
|
|
@ -454,7 +467,7 @@ void HuSprColorSet(short group, short member, u8 r, u8 g, u8 b)
|
|||
sprite_ptr->r = r;
|
||||
sprite_ptr->g = g;
|
||||
sprite_ptr->b = b;
|
||||
sprite_ptr->dirty_flag |= 0x4;
|
||||
sprite_ptr->dirty_flag |= SPRITE_DIRTY_COLOR;
|
||||
}
|
||||
|
||||
void HuSprSpeedSet(short group, short member, float speed)
|
||||
|
|
@ -470,7 +483,7 @@ void HuSprBankSet(short group, short member, short bank)
|
|||
AnimBankData *bank_ptr = &anim->bank[sprite_ptr->bank];
|
||||
AnimFrameData *frame_ptr = &bank_ptr->frame[sprite_ptr->frame];
|
||||
sprite_ptr->bank = bank;
|
||||
if(sprite_ptr->attr & 0x40) {
|
||||
if(sprite_ptr->attr & SPRITE_ATTR_REVERSE) {
|
||||
sprite_ptr->frame = bank_ptr->timeNum-1;
|
||||
frame_ptr = &bank_ptr->frame[sprite_ptr->frame];
|
||||
sprite_ptr->time = frame_ptr->time;
|
||||
|
|
@ -488,7 +501,7 @@ void HuSprGrpPosSet(short group, float x, float y)
|
|||
group_ptr->y = y;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= 0x2;
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= SPRITE_DIRTY_XFORM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -500,8 +513,8 @@ void HuSprGrpCenterSet(short group, float x, float y)
|
|||
group_ptr->center_x = x;
|
||||
group_ptr->center_y = y;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= 0x2;
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= SPRITE_DIRTY_XFORM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -512,8 +525,8 @@ void HuSprGrpZRotSet(short group, float z_rot)
|
|||
short i;
|
||||
group_ptr->z_rot = z_rot;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= 0x2;
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= SPRITE_DIRTY_XFORM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -525,8 +538,8 @@ void HuSprGrpScaleSet(short group, float x, float y)
|
|||
group_ptr->scale_x = x;
|
||||
group_ptr->scale_y = y;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= 0x2;
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= SPRITE_DIRTY_XFORM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -536,9 +549,9 @@ void HuSprGrpTPLvlSet(short group, float tp_lvl)
|
|||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
short i;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
HuSprData[group_ptr->members[i]].a = tp_lvl*255;
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= 0x4;
|
||||
HuSprData[group_ptr->members[i]].dirty_flag |= SPRITE_DIRTY_COLOR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -548,7 +561,7 @@ void HuSprGrpDrawNoSet(short group, int draw_no)
|
|||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
short i;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
HuSprData[group_ptr->members[i]].draw_no = draw_no;
|
||||
}
|
||||
}
|
||||
|
|
@ -571,7 +584,7 @@ void HuSprGrpScissorSet(short group, short x, short y, short w, short h)
|
|||
SpriteGroupData *group_ptr = &HuSprGrpData[group];
|
||||
short i;
|
||||
for(i=0; i<group_ptr->capacity; i++) {
|
||||
if(group_ptr->members[i] != -1) {
|
||||
if(group_ptr->members[i] != SPRITE_INVALID) {
|
||||
HuSprScissorSet(group, i, x, y, w, h);
|
||||
}
|
||||
}
|
||||
|
|
@ -615,7 +628,7 @@ AnimData *HuSprAnimMake(short sizeX, short sizeY, short dataFmt)
|
|||
anim->useNum = 0;
|
||||
anim->bankNum = 1;
|
||||
anim->patNum = 1;
|
||||
anim->bmpNum = (1|0x8000);
|
||||
anim->bmpNum = (1|SPRITE_BMP_ALLOC);
|
||||
bank->timeNum = 1;
|
||||
bank->unk = 10;
|
||||
frame->pat = 0;
|
||||
|
|
@ -663,7 +676,7 @@ void HuSprSprBGSet(short sprite, AnimData *bg, short bg_bank)
|
|||
sprite_ptr->bg = bg;
|
||||
sprite_ptr->bg_bank = bg_bank;
|
||||
sprite_ptr->wrap_t = sprite_ptr->wrap_s = GX_REPEAT;
|
||||
sprite_ptr->attr &= ~0x8;
|
||||
sprite_ptr->attr &= ~SPIRTE_ATTR_BILINEAR;
|
||||
}
|
||||
|
||||
void AnimDebug(AnimData *anim)
|
||||
|
|
@ -676,7 +689,7 @@ void AnimDebug(AnimData *anim)
|
|||
AnimBankData *bank;
|
||||
AnimBmpData *bmp;
|
||||
|
||||
OSReport("patNum %d,bankNum %d,bmpNum %d\n", anim->patNum, anim->bankNum, anim->bmpNum & 0x7FFF);
|
||||
OSReport("patNum %d,bankNum %d,bmpNum %d\n", anim->patNum, anim->bankNum, anim->bmpNum & SPRITE_BMP_NUM_MASK);
|
||||
pat = anim->pat;
|
||||
for(i=0; i<anim->patNum; i++) {
|
||||
OSReport("PATTERN%d:\n", i);
|
||||
|
|
@ -704,7 +717,7 @@ void AnimDebug(AnimData *anim)
|
|||
bank++;
|
||||
}
|
||||
bmp = anim->bmp;
|
||||
for(i=0; i<anim->bmpNum & 0x7FFF; i++) {
|
||||
for(i=0; i<anim->bmpNum & SPRITE_BMP_NUM_MASK; i++) {
|
||||
OSReport("BMP%d:\n", i);
|
||||
OSReport("\tpixSize %d,palNum %d,size (%d,%d)\n", bmp->pixSize, bmp->palNum, bmp->sizeX, bmp->sizeY);
|
||||
bmp++;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
#include "common.h"
|
||||
#include "game/sprite.h"
|
||||
#include "game/init.h"
|
||||
#include "dolphin/mtx.h"
|
||||
#include "dolphin/gx.h"
|
||||
#include "dolphin/vi.h"
|
||||
|
|
@ -8,7 +10,6 @@ static short HuSprLayerDrawNo[8];
|
|||
|
||||
static short bmpCCIdx;
|
||||
|
||||
|
||||
void mtxTransCat(Mtx matrix, float x, float y, float z);
|
||||
|
||||
static void HuSprLayerHook(short layer);
|
||||
|
|
@ -47,9 +48,10 @@ void HuSprDisp(SpriteData *sprite)
|
|||
Vec axis = {0, 0, 1};
|
||||
Mtx modelview, rot;
|
||||
short color_sum;
|
||||
void (*func)(SpriteData *);
|
||||
SpriteFunc func;
|
||||
|
||||
GXSetScissor(sprite->scissor_x, sprite->scissor_y, sprite->scissor_w, sprite->scissor_h);
|
||||
if(sprite->attr & 0x10) {
|
||||
if(sprite->attr & SPRITE_ATTR_FUNC) {
|
||||
if(sprite->func) {
|
||||
func = sprite->func;
|
||||
func(sprite);
|
||||
|
|
@ -78,9 +80,9 @@ void HuSprDisp(SpriteData *sprite)
|
|||
GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE);
|
||||
GXSetNumChans(1);
|
||||
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT0, GX_DF_CLAMP, GX_AF_SPOT);
|
||||
if(sprite->attr & 0x80) {
|
||||
if(sprite->attr & SPRITE_ATTR_ADDITIVE) {
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP);
|
||||
} else if(sprite->attr & 0x100) {
|
||||
} else if(sprite->attr & SPRITE_ATTR_INVERT) {
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP);
|
||||
} else {
|
||||
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
|
||||
|
|
@ -121,8 +123,8 @@ void HuSprDisp(SpriteData *sprite)
|
|||
continue;
|
||||
}
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
|
||||
HuSprTexLoad(anim, layer->bmpNo, 0, sprite->wrap_s, sprite->wrap_t, (sprite->attr & 0x8) ? 1 : 0);
|
||||
if(layer->alpha != 0xFF || color_sum != 1020) {
|
||||
HuSprTexLoad(anim, layer->bmpNo, 0, sprite->wrap_s, sprite->wrap_t, (sprite->attr & SPIRTE_ATTR_BILINEAR) ? GX_LINEAR : GX_NEAR);
|
||||
if(layer->alpha != 255 || color_sum != 255*4) {
|
||||
color.a = (u16)(sprite->a*layer->alpha) >> 8;
|
||||
GXSetTevColor(GX_TEVSTAGE1, color);
|
||||
GXSetNumTevStages(2);
|
||||
|
|
@ -138,14 +140,14 @@ void HuSprDisp(SpriteData *sprite)
|
|||
pos[2][1] = layer->vtx[5]-pat->centerY;
|
||||
pos[3][0] = layer->vtx[6]-pat->centerX;
|
||||
pos[3][1] = layer->vtx[7]-pat->centerY;
|
||||
if(layer->flip & 0x1) {
|
||||
if(layer->flip & SPRITE_LAYER_FLIPX) {
|
||||
texcoord_x2 = layer->startX/(float)bmp->sizeX;
|
||||
texcoord_x1 = (layer->startX+layer->sizeX)/(float)bmp->sizeX;
|
||||
} else {
|
||||
texcoord_x1 = layer->startX/(float)bmp->sizeX;
|
||||
texcoord_x2 = (layer->startX+layer->sizeX)/(float)bmp->sizeX;
|
||||
}
|
||||
if(layer->flip & 0x2) {
|
||||
if(layer->flip & SPRITE_LAYER_FLIPY) {
|
||||
texcoord_y2 = layer->startY/(float)bmp->sizeY;
|
||||
texcoord_y1 = (layer->startY+layer->sizeY)/(float)bmp->sizeY;
|
||||
} else {
|
||||
|
|
@ -186,49 +188,49 @@ void HuSprTexLoad(AnimData *anim, short bmp, short slot, GXTexWrapMode wrap_s, G
|
|||
AnimBmpData *bmp_ptr = &anim->bmp[bmp];
|
||||
short sizeX = bmp_ptr->sizeX;
|
||||
short sizeY = bmp_ptr->sizeY;
|
||||
switch(bmp_ptr->dataFmt & 0xF) {
|
||||
case 0:
|
||||
switch(bmp_ptr->dataFmt & SPRITE_BMP_FMTMASK) {
|
||||
case SPRITE_BMP_RGBA8:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_RGBA8, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case 2:
|
||||
case SPRITE_BMP_RGB5A3:
|
||||
case SPRITE_BMP_RGB5A3_DUPE:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_RGB5A3, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case SPRITE_BMP_C8:
|
||||
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:
|
||||
case SPRITE_BMP_C4:
|
||||
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:
|
||||
case SPRITE_BMP_IA8:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_IA8, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
case SPRITE_BMP_IA4:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_IA4, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
case SPRITE_BMP_I8:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_I8, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
case SPRITE_BMP_I4:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_I4, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
case SPRITE_BMP_A8:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_CTF_A8, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
case SPRITE_BMP_CMPR:
|
||||
GXInitTexObj(&tex_obj, bmp_ptr->data, sizeX, sizeY, GX_TF_CMPR, wrap_s, wrap_t, GX_FALSE);
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue