├── .gitattributes ├── nu0.n64 ├── NOTES.c ├── main.h ├── gfxinit.c ├── spec ├── graphic.h ├── Makefile.irix ├── Makefile ├── Makefile.dos ├── main.c ├── graphic.c ├── stage00.c ├── testcube.h └── Celebi.h /.gitattributes: -------------------------------------------------------------------------------- 1 | *.c linguist-language=C 2 | *.h linguist-language=C -------------------------------------------------------------------------------- /nu0.n64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tffdev/N64_3DRenderingTest/HEAD/nu0.n64 -------------------------------------------------------------------------------- /NOTES.c: -------------------------------------------------------------------------------- 1 | /* All controller constants */ 2 | A_BUTTON; 3 | B_BUTTON; 4 | Z_TRIG; 5 | START_BUTTON; 6 | U_JPAD; 7 | D_JPAD; 8 | L_JPAD; 9 | R_JPAD; 10 | L_TRIG; 11 | R_TRIG; 12 | U_CBUTTONS; 13 | D_CBUTTONS; 14 | L_CBUTTONS; 15 | R_CBUTTONS; -------------------------------------------------------------------------------- /main.h: -------------------------------------------------------------------------------- 1 | #ifndef MAIN_H 2 | #define MAIN_H 3 | 4 | #ifdef _LANGUAGE_C 5 | 6 | /* Definition of the external variable */ 7 | extern NUContData contdata[1]; /* Read data of the controller */ 8 | extern u8 contPattern; /* The pattern of the connected controller */ 9 | #endif /* _LANGUAGE_C */ 10 | #endif /* MAIN_H */ -------------------------------------------------------------------------------- /gfxinit.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "graphic.h" 3 | 4 | /* 5 | The viewport structure 6 | The conversion from (-1,-1,-1)-(1,1,1). The decimal part is 2-bit. 7 | */ 8 | static Vp vp = { 9 | SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0, /* The scale factor */ 10 | SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0, /* Move */ 11 | }; 12 | 13 | /* 14 | The initialization of RDP 15 | */ 16 | Gfx setup_rdpstate[] = { 17 | gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2), 18 | gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), 19 | gsDPSetScissor(G_SC_NON_INTERLACE, 0,0, SCREEN_WD,SCREEN_HT), 20 | gsDPSetColorDither(G_CD_BAYER), 21 | gsSPEndDisplayList(), 22 | }; 23 | 24 | /* 25 | The initialization of RSP 26 | */ 27 | Gfx setup_rspstate[] = { 28 | gsSPViewport(&vp), 29 | gsSPClearGeometryMode(0xFFFFFFFF), 30 | gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK), 31 | gsSPTexture(0, 0, 0, 0, G_OFF), 32 | gsSPEndDisplayList(), 33 | }; 34 | -------------------------------------------------------------------------------- /spec: -------------------------------------------------------------------------------- 1 | /* 2 | ROM spec file 3 | 4 | Main memory map 5 | 6 | 0x80000000 exception vectors, ... 7 | 0x80000400 zbuffer (size 320*240*2) 8 | 0x80025c00 codesegment 9 | : 10 | 0x8038F800 cfb 16b 3buffer (size 320*240*2*3) 11 | 12 | Copyright (C) 1997-1999, NINTENDO Co,Ltd. 13 | */ 14 | 15 | #include 16 | 17 | /* Use all graphic microcodes */ 18 | beginseg 19 | name "code" 20 | flags BOOT OBJECT 21 | entry nuBoot 22 | address NU_SPEC_BOOT_ADDR 23 | stack NU_SPEC_BOOT_STACK 24 | include "codesegment.o" 25 | include "$(ROOT)/usr/lib/PR/rspboot.o" 26 | include "$(ROOT)/usr/lib/PR/gspF3DEX2.fifo.o" 27 | include "$(ROOT)/usr/lib/PR/gspL3DEX2.fifo.o" 28 | include "$(ROOT)/usr/lib/PR/gspF3DEX2.Rej.fifo.o" 29 | include "$(ROOT)/usr/lib/PR/gspF3DEX2.NoN.fifo.o" 30 | include "$(ROOT)/usr/lib/PR/gspF3DLX2.Rej.fifo.o" 31 | include "$(ROOT)/usr/lib/PR/gspS2DEX2.fifo.o" 32 | endseg 33 | 34 | beginwave 35 | name "nu0" 36 | include "code" 37 | endwave 38 | -------------------------------------------------------------------------------- /graphic.h: -------------------------------------------------------------------------------- 1 | #ifndef _GRAPHIC_H_ 2 | #define _GRAPHIC_H_ 3 | 4 | /* The screen size */ 5 | #define SCREEN_HT 240 6 | #define SCREEN_WD 320 7 | 8 | /* The maximum length of the display list of one task */ 9 | #define GFX_GLIST_LEN 2048 10 | 11 | /*-------------------------- define structure ------------------------------ */ 12 | /* The projection-matrix structure */ 13 | typedef struct { 14 | //Camera params 15 | Mtx projection; 16 | Mtx modeling; 17 | Mtx viewing; 18 | Mtx camRot; 19 | 20 | //Cube-specific params 21 | Mtx rotx; 22 | Mtx roty; 23 | 24 | Mtx pos; 25 | Mtx scale; 26 | } Dynamic; 27 | 28 | /*-------------------------------- parameter---------------------------------*/ 29 | extern Dynamic gfx_dynamic; 30 | extern Gfx* glistp; 31 | extern Gfx gfx_glist[GFX_GLIST_LEN]; 32 | /*-------------------------------- function ---------------------------------*/ 33 | extern void gfxRCPInit(void); 34 | extern void gfxClearCfb(void); 35 | /*------------------------------- other extern define -----------------------*/ 36 | extern Gfx setup_rdpstate[]; 37 | extern Gfx setup_rspstate[]; 38 | 39 | #endif /* _GRAPHIC_H_ */ 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Makefile.irix: -------------------------------------------------------------------------------- 1 | #!smake -k 2 | # NuSYSTEM samples nu0 Makefile 3 | # Copyright (C) 1997-1999, NINTENDO Co,Ltd. 4 | 5 | include $(ROOT)/usr/include/make/PRdefs 6 | 7 | # The directory which has the indclude file and library of NuSYSTEM 8 | # 9 | N64KITDIR = /usr/local/n64kit 10 | NUSYSINCDIR = $(N64KITDIR)/nusys/include 11 | NUSYSLIBDIR = $(N64KITDIR)/nusys/lib 12 | 13 | APP = nu0 14 | 15 | OPTIMIZER = -g 16 | 17 | TARGETS = all 18 | 19 | HFILES = graphic.h 20 | 21 | CODEFILES = main.c stage00.c graphic.c gfxinit.c view.c 22 | 23 | CODEOBJECTS = $(CODEFILES:.c=.o) $(NUSYSLIBDIR)/nusys.o 24 | 25 | DATAFILES = 26 | 27 | DATAOBJECTS = $(DATAFILES:.c=.o) 28 | 29 | CODESEGMENT = codesegment.o 30 | 31 | OBJECTS = $(CODESEGMENT) $(DATAOBJECTS) 32 | 33 | LCDEFS = -DF3DEX_GBI_2 34 | LCINCS = -I$(NUSYSINCDIR) 35 | LCOPTS = -Xcpluscomm -fullwarn -wlint,-f -woff 813,819,826,827,852 -non_shared -G 0 36 | LDFLAGS = $(MKDEPOPT) -nostdlib -L$(ROOT)/usr/lib -L$(NUSYSLIBDIR) -lnusys_d -lultra_d 37 | 38 | LDIRT = $(APP) 39 | 40 | default: $(TARGETS) 41 | 42 | 43 | include $(COMMONRULES) 44 | 45 | all: rom 46 | 47 | $(CODESEGMENT): $(CODEOBJECTS) Makefile 48 | $(LD) -o $(CODESEGMENT) -r $(CODEOBJECTS) $(LDFLAGS) 49 | 50 | rom $(APP): spec $(OBJECTS) $(MAKEROM) 51 | $(MAKEROM) -r rom -I$(NUSYSINCDIR) spec 52 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # NuSYSTEM samples nu0 Makefile 2 | # Copyright (C) 1997-1999, NINTENDO Co,Ltd. 3 | 4 | include $(ROOT)/usr/include/make/PRdefs 5 | 6 | # The directory which has the indclude file and library of NuSYSTEM 7 | # 8 | N64KITDIR = c:\nintendo\n64kit 9 | NUSYSINCDIR = $(N64KITDIR)/nusys/include 10 | NUSYSLIBDIR = $(N64KITDIR)/nusys/lib 11 | 12 | LIB = $(ROOT)/usr/lib 13 | LPR = $(LIB)/PR 14 | INC = $(ROOT)/usr/include 15 | CC = gcc 16 | LD = ld 17 | MAKEROM = mild 18 | 19 | LCDEFS = -DNU_DEBUG -DF3DEX_GBI_2 20 | LCINCS = -I. -I$(NUSYSINCDIR) -I$(ROOT)/usr/include/PR 21 | LCOPTS = -G 0 22 | LDFLAGS = $(MKDEPOPT) -L$(LIB) -L$(NUSYSLIBDIR) -lnusys_d -lgultra_d -L$(GCCDIR)/mipse/lib -lkmc 23 | 24 | OPTIMIZER = -g 25 | 26 | APP = nu0.out 27 | 28 | TARGETS = nu0.n64 29 | 30 | HFILES = #graphic.h testPlane.h 31 | 32 | CODEFILES = main.c stage00.c graphic.c gfxinit.c 33 | 34 | CODEOBJECTS = $(CODEFILES:.c=.o) $(NUSYSLIBDIR)/nusys.o 35 | 36 | DATAFILES = 37 | 38 | DATAOBJECTS = $(DATAFILES:.c=.o) 39 | 40 | CODESEGMENT = codesegment.o 41 | 42 | OBJECTS = $(CODESEGMENT) $(DATAOBJECTS) 43 | 44 | 45 | default: $(TARGETS) 46 | 47 | include $(COMMONRULES) 48 | 49 | $(CODESEGMENT): $(CODEOBJECTS) Makefile 50 | $(LD) -o $(CODESEGMENT) -r $(CODEOBJECTS) $(LDFLAGS) 51 | 52 | $(TARGETS): $(OBJECTS) 53 | $(MAKEROM) spec -I$(NUSYSINCDIR) -r $(TARGETS) -e $(APP) 54 | -------------------------------------------------------------------------------- /Makefile.dos: -------------------------------------------------------------------------------- 1 | # NuSYSTEM samples nu0 Makefile 2 | # Copyright (C) 1997-1999, NINTENDO Co,Ltd. 3 | 4 | include $(ROOT)/usr/include/make/PRdefs 5 | 6 | # The directory which has the indclude file and library of NuSYSTEM 7 | # 8 | N64KITDIR = c:\nintendo\n64kit 9 | NUSYSINCDIR = $(N64KITDIR)/nusys/include 10 | NUSYSLIBDIR = $(N64KITDIR)/nusys/lib 11 | 12 | LIB = $(ROOT)/usr/lib 13 | LPR = $(LIB)/PR 14 | INC = $(ROOT)/usr/include 15 | CC = gcc 16 | LD = ld 17 | MAKEROM = mild 18 | 19 | LCDEFS = -DNU_DEBUG -DF3DEX_GBI_2 20 | LCINCS = -I. -I$(NUSYSINCDIR) -I$(ROOT)/usr/include/PR 21 | LCOPTS = -G 0 22 | LDFLAGS = $(MKDEPOPT) -L$(LIB) -L$(NUSYSLIBDIR) -lnusys_d -lgultra_d -L$(GCCDIR)/mipse/lib -lkmc 23 | 24 | OPTIMIZER = -g 25 | 26 | APP = nu0.out 27 | 28 | TARGETS = nu0.n64 29 | 30 | HFILES = graphic.h testPlane.h 31 | 32 | CODEFILES = main.c stage00.c graphic.c gfxinit.c 33 | 34 | CODEOBJECTS = $(CODEFILES:.c=.o) $(NUSYSLIBDIR)/nusys.o 35 | 36 | DATAFILES = 37 | 38 | DATAOBJECTS = $(DATAFILES:.c=.o) 39 | 40 | CODESEGMENT = codesegment.o 41 | 42 | OBJECTS = $(CODESEGMENT) $(DATAOBJECTS) 43 | 44 | 45 | default: $(TARGETS) 46 | 47 | include $(COMMONRULES) 48 | 49 | $(CODESEGMENT): $(CODEOBJECTS) Makefile 50 | $(LD) -o $(CODESEGMENT) -r $(CODEOBJECTS) $(LDFLAGS) 51 | 52 | $(TARGETS): $(OBJECTS) 53 | $(MAKEROM) spec -I$(NUSYSINCDIR) -r $(TARGETS) -e $(APP) 54 | -------------------------------------------------------------------------------- /main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "main.h" 3 | 4 | /* Declaration of the prototype, STAGE 0 */ 5 | void stage00(int); 6 | /*extern prototypes*/ 7 | void makeDL00(void); 8 | void initStage00(void); 9 | void updateGame00(void); 10 | 11 | 12 | /* The global variable */ 13 | NUContData contdata[1]; /* Read data of 1 controller */ 14 | u8 contPattern; /* The pattern connected to the controller */ 15 | 16 | /*------------------------ 17 | Main 18 | --------------------------*/ 19 | void mainproc(void) 20 | { 21 | /* The initialization of graphic */ 22 | nuGfxInit(); 23 | 24 | contPattern = nuContInit(); 25 | 26 | /* Init scene */ 27 | initStage00(); 28 | 29 | /* Set call-back */ 30 | nuGfxFuncSet((NUGfxFunc)stage00); 31 | 32 | /* The screen display ON */ 33 | nuGfxDisplayOn(); 34 | 35 | while(1){} 36 | } 37 | 38 | /*----------------------------------------------------------------------------- 39 | The call-back function 40 | 41 | pendingGfx which is passed from Nusystem as the argument of the call-back 42 | function is the total number of RCP tasks that are currently processing 43 | and waiting for the process. 44 | -----------------------------------------------------------------------------*/ 45 | void stage00(int pendingGfx) 46 | { 47 | /* It provides the display process if there is no RCP task that is processing. */ 48 | if(pendingGfx < 2){ 49 | makeDL00(); 50 | } 51 | updateGame00(); 52 | } 53 | 54 | -------------------------------------------------------------------------------- /graphic.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "graphic.h" 3 | 4 | Gfx gfx_glist[GFX_GLIST_LEN]; 5 | Dynamic gfx_dynamic; 6 | Gfx* glistp; 7 | u32 gfx_gtask_no = 0; 8 | 9 | /*---------------------------------------------------------------------------- 10 | gfxRCPIinit 11 | 12 | The initialization of RSP/RDP 13 | ----------------------------------------------------------------------------*/ 14 | void gfxRCPInit(void) 15 | { 16 | /* Setting the RSP segment register */ 17 | gSPSegment(glistp++, 0, 0x0); /* For the CPU virtual address */ 18 | 19 | /* Setting RSP */ 20 | gSPDisplayList(glistp++, OS_K0_TO_PHYSICAL(setup_rspstate)); 21 | 22 | /* Setting RDP */ 23 | gSPDisplayList(glistp++, OS_K0_TO_PHYSICAL(setup_rdpstate)); 24 | } 25 | 26 | /*---------------------------------------------------------------------------- 27 | gfxClearCfb 28 | 29 | Setting addresses of the frame buffer/Z-buffer and clear them 30 | 31 | Using nuGfxZBuffer (the address of the Z-buffer) and nuGfxCfb_ptr (the 32 | address of the frame buffer) which are global variables of NuSYSTEM. 33 | ----------------------------------------------------------------------------*/ 34 | void gfxClearCfb(void) 35 | { 36 | /* Clear the Z-buffer */ 37 | gDPSetDepthImage(glistp++, OS_K0_TO_PHYSICAL(nuGfxZBuffer)); 38 | gDPPipeSync(glistp++); 39 | gDPSetCycleType(glistp++, G_CYC_FILL); 40 | gDPSetColorImage(glistp++, G_IM_FMT_RGBA, G_IM_SIZ_16b,SCREEN_WD, OS_K0_TO_PHYSICAL(nuGfxZBuffer)); 41 | gDPSetFillColor(glistp++,(GPACK_ZDZ(G_MAXFBZ,0) << 16 | GPACK_ZDZ(G_MAXFBZ,0))); 42 | gDPFillRectangle(glistp++, 0, 0, SCREEN_WD-1, SCREEN_HT-1); 43 | gDPPipeSync(glistp++); 44 | 45 | /* Clear the frame buffer */ 46 | gDPSetColorImage(glistp++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WD, osVirtualToPhysical(nuGfxCfb_ptr)); 47 | gDPSetFillColor(glistp++, (GPACK_RGBA5551(0, 0, 0, 1) << 16 | 48 | GPACK_RGBA5551(0, 0, 0, 1))); 49 | gDPFillRectangle(glistp++, 0, 0, SCREEN_WD-1, SCREEN_HT-1); 50 | gDPPipeSync(glistp++); 51 | } 52 | -------------------------------------------------------------------------------- /stage00.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "graphic.h" 4 | #include "Celebi.h" 5 | #include 6 | 7 | /* Prototype all funcs before calling*/ 8 | void draw_cube( Dynamic* dynamicp, float t); 9 | void SetViewMtx( Dynamic* ); 10 | void debug_console_int(char *name, int variable, int pos); 11 | void debug_console_float(char *name, float variable, int pos); 12 | int lim(u32 input); 13 | 14 | int t = 1; 15 | char conbuf[20]; 16 | 17 | // stuff about the cube 18 | static float cubescale; 19 | float cubepan; 20 | float cubeyaw; 21 | 22 | typedef struct { 23 | float x; 24 | float y; 25 | float z; 26 | } Vec3; 27 | 28 | static Vec3 campos; 29 | static Vec3 camrot; 30 | 31 | static Mtx squidmatrix; 32 | 33 | NUContData contdata[1]; /* Read data of 1 controller */ 34 | 35 | float View; 36 | 37 | Mtx cameraRotation; 38 | Mtx cameraPosition; 39 | 40 | void SetViewMtx( Dynamic* dp) 41 | { 42 | u16 perspNorm; 43 | 44 | /* The calculation and set-up of the projection-matrix */ 45 | guPerspective( 46 | &dp->projection, //Mtx *m 47 | &perspNorm, //u16 *perspNorm, 48 | 50, //FOV 49 | (float)SCREEN_WD/(float)SCREEN_HT, //ASPECT 50 | 10, //near plane clipping 51 | 10000, //far plane clipping 52 | 1.0F //matrix object scaling 53 | ); 54 | 55 | 56 | guLookAt( 57 | &dp->viewing, 58 | // xyz pos of camera 59 | campos.x, 60 | campos.y, 61 | campos.z, 62 | 63 | // XYZ of "looking at" 64 | sin(camrot.y) + campos.x, 65 | -sin(camrot.x)*cos(camrot.y) + campos.y, 66 | cos(camrot.x)*cos(camrot.y) + campos.z, 67 | 68 | // "up" direction, never change 69 | 0, 1, 0 70 | ); 71 | 72 | 73 | gSPPerspNormalize(glistp++, perspNorm); 74 | gSPLookAt(glistp++, &dp->viewing); 75 | 76 | gSPMatrix(glistp++, &(dp->projection), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH); 77 | gSPMatrix(glistp++, &(dp->viewing), G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH); 78 | 79 | } 80 | 81 | void initStage00() 82 | { 83 | nuDebConDisp(NU_SC_SWAPBUFFER); 84 | cubescale = 1; 85 | cubepan = 0; 86 | cubeyaw = 0; 87 | campos = (Vec3){.x = 0, .y = 0, .z = 0}; 88 | camrot = (Vec3){.x = 0, .y = 0, .z = 0}; 89 | View = 0; 90 | } 91 | 92 | void makeDL00(void) 93 | { 94 | /* Specify the display list buffer */ 95 | glistp = gfx_glist; 96 | 97 | /* The initialization of RCP */ 98 | gfxRCPInit(); 99 | 100 | /* Clear the frame buffer and the Z-buffer */ 101 | gfxClearCfb(); 102 | 103 | SetViewMtx(&gfx_dynamic); 104 | 105 | // guRotate(&gfx_dynamic.modeling, 0.0F, 0.0F, 0.0F, 0.0F); 106 | 107 | /* Draw a square */ 108 | draw_cube(&gfx_dynamic,t); 109 | 110 | /* End the construction of the display list */ 111 | gDPFullSync(glistp++); 112 | gSPEndDisplayList(glistp++); 113 | 114 | /* Check if all are put in the array */ 115 | assert(glistp - gfx_glist < GFX_GLIST_LEN); 116 | 117 | /* Activate the RSP task. Switch display buffers at the end of the task. */ 118 | nuGfxTaskStart(&gfx_glist[0],(s32)(glistp - gfx_glist) * sizeof (Gfx), NU_GFX_UCODE_F3DEX , NU_SC_SWAPBUFFER); 119 | 120 | 121 | /* DEBUG CONSOLE!!!!!!!!!!!! Display characters on the frame buffer, debug console only */ 122 | nuDebConDisp(NU_SC_SWAPBUFFER); 123 | debug_console_int("t ",t,1); 124 | debug_console_float("camx",camrot.x,2); 125 | debug_console_float("camy",camrot.y,3); 126 | debug_console_float("camz",camrot.z,4); 127 | debug_console_float("camx",campos.x,5); 128 | debug_console_float("camy",campos.y,6); 129 | debug_console_float("camz",campos.z,7); 130 | // debug_console_float("View",View,5); 131 | // debug_console_float("cScl",cubescale,6); 132 | 133 | gDPFullSync(glistp++); 134 | gSPEndDisplayList(glistp++); 135 | } 136 | 137 | /* Draw object */ 138 | void draw_cube(Dynamic* dynamicp, float t) 139 | { 140 | int i = 0; 141 | 142 | /* Create matrices for mult */ 143 | /* CUBE IS AT CENTER OF EARTH */ 144 | guTranslate(&dynamicp->pos,0,0,-100); 145 | guRotate(&dynamicp->rotx,cubepan,1,0,0); 146 | guRotate(&dynamicp->roty,cubeyaw,0,1,0); 147 | guScale(&dynamicp->scale,cubescale,cubescale,cubescale); 148 | 149 | /* apply transformation matrices, to stack */ 150 | gSPMatrix(glistp++,OS_K0_TO_PHYSICAL(&(dynamicp->pos)), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH ); 151 | gSPMatrix(glistp++,OS_K0_TO_PHYSICAL(&(dynamicp->scale)), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH ); 152 | gSPMatrix(glistp++,OS_K0_TO_PHYSICAL(&(dynamicp->rotx)), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH ); 153 | gSPMatrix(glistp++,OS_K0_TO_PHYSICAL(&(dynamicp->roty)), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH ); 154 | 155 | /* Rendering setup */ 156 | gDPSetRenderMode(glistp++,G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2); 157 | gSPTexture(glistp++,0x8000, 0x8000, 0, 0, G_ON); 158 | gDPSetCycleType(glistp++, G_CYC_1CYCLE); 159 | gDPSetCombineMode(glistp++,G_CC_DECALRGBA, G_CC_DECALRGBA); 160 | gSPClearGeometryMode(glistp++,0xFFFFFFFF); 161 | gSPSetGeometryMode(glistp++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH); 162 | 163 | /* DRAW OBJECT 164 | ==================================================== 165 | ====================================================*/ 166 | gSPDisplayList(glistp++, Wtx_Celebi); 167 | /*================================================= 168 | ====================================================*/ 169 | 170 | 171 | /* Finalise and exit drawing */ 172 | gSPTexture(glistp++,0, 0, 0, 0, G_OFF); 173 | gDPPipeSync(glistp++); 174 | } 175 | 176 | /* Just controls and changes vars for debugging */ 177 | void updateGame00() 178 | { 179 | /* Data reading of controller 1 */ 180 | nuContDataGetEx(contdata,0); 181 | 182 | cubeyaw += contdata->stick_x*0.05; 183 | cubepan -= contdata->stick_y*0.05; 184 | 185 | /* Really basic controls for debugging purposes */ 186 | if(contdata[0].button & START_BUTTON){ 187 | t += 1; 188 | } 189 | 190 | if(contdata[0].button & A_BUTTON){ 191 | cubescale += 0.001; 192 | } 193 | if(contdata[0].button & B_BUTTON){ 194 | cubescale -= 0.001; 195 | } 196 | 197 | // UP/DOWN CAM ROTATION CONTROLS 198 | camrot.y += 0.06 * ( lim(contdata[0].button & L_CBUTTONS) - lim(contdata[0].button & R_CBUTTONS) ); 199 | camrot.x += 0.06 * ( lim(contdata[0].button & U_CBUTTONS) - lim(contdata[0].button & D_CBUTTONS) ); 200 | campos.y += 0.06 * ( lim(contdata[0].button & L_JPAD) - lim(contdata[0].button & R_JPAD) ); 201 | campos.x += 0.06 * ( lim(contdata[0].button & U_JPAD) - lim(contdata[0].button & D_JPAD) ); 202 | } 203 | 204 | /* UTILITIES */ 205 | void debug_console_int(char *name, int variable, int pos) 206 | { 207 | nuDebConTextPos(0,1,1*pos); 208 | sprintf(conbuf,"%s=%i",name,variable); 209 | nuDebConCPuts(0, conbuf); 210 | } 211 | 212 | void debug_console_float(char *name, float variable, int pos) 213 | { 214 | nuDebConTextPos(0,1,1*pos); 215 | sprintf(conbuf,"%s=%f",name,variable); 216 | nuDebConCPuts(0, conbuf); 217 | } 218 | 219 | int lim(u32 input) { 220 | if(input == 0) { 221 | return 0; 222 | }else{ 223 | return 1; 224 | } 225 | } -------------------------------------------------------------------------------- /testcube.h: -------------------------------------------------------------------------------- 1 | unsigned short Text_testingCube_testCubeTex_diff[] = { 2 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0fed,0x3fc9,0x3fc9,0x3fc9,0x1fe7,0x3fc9,0x3fc9,0x0fef,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 3 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0fed,0x3fc9,0x0fef,0x0fed,0x7f93,0x3fc9,0x1fe7,0x0fed,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 4 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0fed,0x1fe7,0xffa5,0xff61,0xffff,0xfff5,0x0fef,0x0fed,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 5 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0fed,0x0fef,0xffff,0xff65,0xfffd,0xfff5,0x0fef,0x0fed,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 6 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0fed,0x0ff3,0x7f95,0xfff7,0xffaf,0x7fb7,0x1fe5,0x0fed,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 7 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0fed,0x3fc9,0x0fed,0xff63,0xffff,0x7fbd,0x1fe5,0x0fed,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 8 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0fed,0x3fc9,0x3fc9,0x0fed,0x7fb7,0x3fcd,0x1fe7,0x0fed,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 9 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0ffd,0x0fff,0x0fff,0x0fff,0x0ffd,0x0ffd,0x0fff,0x0ffd,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 10 | 0x06bf,0x06bf,0x06bf,0x06bf,0x06bf,0x06bf,0x07bd,0x0dbf,0x0bbf,0x0bbf,0x0bbf,0x0bbf,0x0bbf,0x0bbf,0x0dbf,0x01b7,0x015b,0x015b,0x0139,0x0159,0x015b,0x015b,0x0221,0x007d,0x007d,0x007d,0x007d,0x007d,0x007d,0x007d,0x0079, 11 | 0x26ff,0x1eff,0x473f,0x677f,0x16ff,0x26ff,0x0fff,0x0e37,0x0c37,0x73fb,0x6f3b,0x73bb,0x6f3b,0x0c37,0x0e3b,0x021d,0x0361,0x015b,0x752d,0x5ca9,0x015b,0x0361,0x06e5,0x027d,0x01fd,0x007d,0x27f3,0x2bf5,0x007d,0x01fd,0x01fb, 12 | 0x26ff,0x0eff,0xa77f,0xffff,0x06bf,0x26ff,0x0fff,0x0e37,0x0bb7,0xffbf,0xffff,0xe4bd,0xf5bd,0x0c37,0x0e3b,0x021d,0x013b,0xffff,0xbeb5,0xe7bd,0xb6b7,0x015b,0x06e5,0x027d,0x007d,0xb7ed,0xe7f9,0xdff7,0xcff1,0x007d,0x01fb, 13 | 0x26ff,0x06bf,0x8f7f,0xf7ff,0x06bf,0x26ff,0x0fff,0x0e37,0x0cb9,0x0bb5,0xff3f,0xf6bf,0x0b35,0x0cb9,0x0e3b,0x021d,0x01bf,0x039f,0x0117,0x85af,0xffff,0x0139,0x06e5,0x027d,0x007d,0xffff,0x2bf3,0x27f1,0xffff,0x007d,0x01fb, 14 | 0x06bf,0xffff,0xbfbf,0xefff,0x06bf,0x26ff,0x0fff,0x0e37,0x0cb7,0x35f9,0x0b35,0xedbd,0xff3f,0x0bb7,0x0e3b,0x021d,0x0139,0xffff,0xefbd,0xc6f9,0x1361,0x01bf,0x06e5,0x027d,0x007d,0xffff,0xcff3,0xf7fb,0x0bfb,0x017d,0x01fb, 15 | 0x1eff,0x1eff,0xffff,0xffff,0x06bf,0x26ff,0x0fff,0x0e37,0x0bb7,0xffff,0xffff,0xffbf,0xf63d,0x0bb7,0x0e3b,0x021d,0x015b,0xb6b7,0xefbd,0xae75,0x85f1,0x015b,0x06e5,0x027d,0x007d,0xdff5,0xbfef,0x97e3,0xa7e5,0x007d,0x01fb, 16 | 0x26ff,0x1eff,0x16ff,0x4f3f,0x1eff,0x26ff,0x0fff,0x0e37,0x0cb9,0x0c37,0x35f9,0x33b9,0x0c37,0x0cb7,0x0e3b,0x021d,0x019f,0x0fa3,0x5467,0x54a9,0x3425,0x019f,0x06e5,0x027d,0x01fd,0x007d,0x43ff,0x8fe1,0x007d,0x01fd,0x01fb, 17 | 0x06bf,0x06bf,0x06bf,0x06bf,0x06bf,0x06bf,0x07bd,0x0dbb,0x0bfb,0x0bfb,0x0bbb,0x0bbb,0x0bfb,0x0bfb,0x0dff,0x01b9,0x015b,0x015b,0x015b,0x015b,0x015b,0x017b,0x0221,0x00fd,0x007d,0x007d,0x007d,0x007d,0x007d,0x007d,0x0079, 18 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x07d3,0x07f9,0x07f9,0x07d5,0x07d7,0x07f9,0x07f9,0x07d3,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 19 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x07d7,0x07dd,0x07d7,0xfc2d,0x7f27,0x07d7,0x07dd,0x07d7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 20 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x07d7,0x07d7,0xffff,0xfd6f,0xff3d,0xfdb5,0x07d7,0x07d7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 21 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x07d7,0x07dd,0x07d7,0x07f9,0xfe37,0xfe79,0x07d5,0x07d7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 22 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x07d7,0x07dd,0x07d3,0x7e25,0xffff,0x0ffd,0x07dd,0x07d7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 23 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x07d7,0x07d5,0xffff,0xfd6f,0xffff,0xfc2f,0x07d9,0x07d7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 24 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x07d7,0x07dd,0x07d7,0x7f6b,0x7e63,0x07d7,0x07dd,0x07d7,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 25 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0793,0x07d7,0x07d7,0x07d5,0x07d7,0x07d7,0x07d7,0x0793,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 26 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 27 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 28 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 29 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 30 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 31 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 32 | 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff, 33 | }; 34 | 35 | Vtx_tn Vtx_testingCube_mesh01_0[8] = { 36 | { 30, -30, 30, 0, 480, 240, 130, 130, 130, 0}, 37 | { -30, -30, 30, 0, 240, 240, 130, 130, 130, 0}, 38 | { -30, -30, -30, 0, 240, 719, 130, 130, 130, 0}, 39 | { 30, 30, -30, 0, 240, 480, 130, 130, 130, 0}, 40 | { -30, 30, -30, 0, 480, 480, 130, 130, 130, 0}, 41 | { -30, 30, 30, 0, 959, 480, 130, 130, 130, 0}, 42 | { 29, 30, 30, 0, 719, 480, 130, 130, 130, 0}, 43 | { 30, -30, -30, 0, 480, 0, 130, 130, 130, 0}, 44 | }; 45 | 46 | Gfx Vtx_testingCube_mesh01_dl[] = { 47 | gsSPVertex(&Vtx_testingCube_mesh01_0[0], 8, 0), 48 | gsSP1Triangle(1,2,3,0), 49 | gsSP1Triangle(4,5,6,0), 50 | gsSP1Triangle(4,7,1,0), 51 | gsSP1Triangle(7,6,2,0), 52 | gsSP1Triangle(6,5,3,0), 53 | gsSP1Triangle(0,3,5,0), 54 | gsSP1Triangle(0,1,3,0), 55 | gsSP1Triangle(7,4,6,0), 56 | gsSP1Triangle(0,4,1,0), 57 | gsSP1Triangle(1,7,2,0), 58 | gsSP1Triangle(2,6,3,0), 59 | gsSP1Triangle(4,0,5,0) 60 | }; 61 | 62 | Gfx Wtx_testingCube[] = { 63 | gsDPLoadTextureBlock(Text_testingCube_testCubeTex_diff, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32,32, 0, G_TX_WRAP|G_TX_NOMIRROR, G_TX_WRAP|G_TX_NOMIRROR,5,5, G_TX_NOLOD, G_TX_NOLOD), 64 | gsSPDisplayList(Vtx_testingCube_mesh01_dl), 65 | gsSPEndDisplayList() 66 | }; -------------------------------------------------------------------------------- /Celebi.h: -------------------------------------------------------------------------------- 1 | /* 2 | Object Name: Celebi 3 | Object Scaling Factor: 30 4 | 5 | Texture preview: 6 | %%%%%%%%%%%%*#%%*#%%%***#%%%%%%= 7 | %%%%%%%%%% %*+%%%****%%%%%% 8 | %%%%%%%%% #**%%%#%%%%%%%%%% 9 | %%%%%%%%% - %**+%%%%%%%%%%%%% 10 | %%%%%%%%% :+: %***#%%%%%%%%%%%% 11 | %%%%%%%%% -%****%%%%%%%%%%%% 12 | %%%%%%%%%% -%%*+%%%%%%%%%%%%%% 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%#### 14 | %%%%%%%%%%%%*#%%%%%%%%%%%%###### 15 | %%%%%%%%%% %%%%%%%%%%####### 16 | %%%%%%%%% + #%%%%%%%%####*#** 17 | %%%%%%%%% - %%%%%%%####*#**** 18 | %%%%%%%%% %%%%%%%%#*##+*++* 19 | %%%%%%%%% -%%%%%%%%###+*+*** 20 | %%%%%%%%%% -%%%%%%%#####**++** 21 | %%%%%%%%%%%%%%%%%%%%%%####**++=* 22 | %%%%%%%%%%%%*#%%%%%%%%####*+**+* 23 | %%%%%%%%%% = %%%%%%#####***+** 24 | %%%%%%%%% +=+ #%%%%%%%###**+*** 25 | %%%%%%%%% =@. %%%%%%%%####***+* 26 | %%%%%%%%% =# %%%%%%%%%####**** 27 | %%%%%%%%% -%%%%%%%%%######*# 28 | %%%%%%%%%% -%%%%%%%%%%%####### 29 | %%%%%%%%%%%%%%%%%%%%%%%%%%%##### 30 | %%%%%%%%%%%%*#%%#%%%%%%%%%%%%### 31 | %%%%%%%%%% = %***%%%%%%%%%%%%% 32 | %%%%%%%%% +=+ #****%%%%%%%%%%%% 33 | %%%%%%%%% =@= %***%%%%%%%%%%%%% 34 | %%%%%%%%% =#= %**+%%%%%%%%%%%%% 35 | %%%%%%%%% # -%**%%%+*#%%%%%%%% 36 | %%%%%%%%%% -%%*+%%%****%%%%%% 37 | %%%%%%%%%%%%%%%%*%%%%***%%%%%%%= 38 | */ 39 | 40 | unsigned short Text_Celebi_Pii_SEREBHI_body_diff[] = { 41 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xa55f,0xd727,0xd769,0xd769,0xa699,0xd727,0xd769,0xd769,0xd769,0xa699,0xa699,0xa699,0xd727,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0573, 42 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x0001,0x0001,0xd769,0xa699,0x95d7,0xd769,0xd769,0xd769,0xa699,0xa699,0xa699,0xa699,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xffff, 43 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0xd727,0xa699,0xa699,0xd769,0xd769,0xd769,0xcee5,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 44 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x0001,0x5295,0x0001,0xd769,0xa699,0xa699,0x9e59,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 45 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x39cf,0x8421,0x39cf,0x0001,0x0001,0xd769,0xa699,0xa699,0xa699,0xcee7,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 46 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x0001,0x0001,0x5b11,0xd769,0xa699,0xa699,0xa699,0xa699,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 47 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x52d1,0xd769,0xd769,0xa699,0x95d7,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 48 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd767,0xd727,0xd727,0xd727, 49 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xa55f,0xd727,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd767,0xc6e5,0xcf25,0xcf25,0xcf25,0xcf25, 50 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x0001,0x0001,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd727,0xcf27,0xcf25,0xc723,0xc723,0xbee1,0xc723, 51 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x8421,0x0001,0x0001,0x0001,0xd727,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd727,0xc6e3,0xcf23,0xc723,0xae5d,0xbee1,0xae5d,0xbedf, 52 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x5ad7,0x0001,0x0001,0x0001,0x0001,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd729,0xd767,0xcf27,0xcf25,0xae1d,0xbee1,0xb6df,0xb6dd,0xa61b,0xb6dd, 53 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x0001,0x0001,0x0001,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd727,0xbea1,0xc723,0xbee1,0x9ddb,0xaedd,0x9e19,0x9e19,0xaedb, 54 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x0001,0x0001,0x5b11,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xcf27,0xc723,0xbf21,0x9ddb,0xaedd,0x95d9,0xaedb,0xa6db,0xa6db, 55 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x52d1,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd729,0xcee5,0xcf25,0xc723,0xbee1,0xb6df,0xaedd,0x8d97,0x9617,0x9e59,0xa69b, 56 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd767,0xcf25,0xc723,0xbee1,0xb6dd,0xaedb,0x8d97,0x9617,0x8515,0xa699, 57 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xa55f,0xd727,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd767,0xcf25,0xc723,0xbee1,0xa65b,0x8d97,0xa69b,0xa699,0x8d95,0xa699, 58 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x1085,0x4be3,0x0001,0x0001,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd729,0xd767,0xcf25,0xc723,0xbee1,0xb6df,0xaedd,0xaedb,0x95d7,0xa69b,0xa69b, 59 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0x25b5,0x0573,0x0d73,0x0001,0xd727,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd727,0xcf25,0xbee1,0xb6df,0xb6dd,0x9e19,0xaedb,0xa69b,0xa6db, 60 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0x04f1,0xdfbf,0x018f,0x0001,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd727,0xcf25,0xc723,0xbf21,0xae5d,0xb6dd,0xaedd,0x9e19,0xaedb, 61 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0x1cf1,0x7e79,0x0001,0x0001,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd727,0xcf25,0xbee1,0xbf21,0xb6df,0xb6df,0xa65b,0xb6dd, 62 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0xffff,0x0001,0x0001,0x5b11,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd767,0xcf27,0xcf25,0xc723,0xbee1,0xbee1,0xae9f,0xbee1, 63 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x52d1,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd767,0xd727,0xcf25,0xcf25,0xc723,0xc723,0xc723, 64 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd727,0xd727,0xcf25,0xcf25,0xcf25, 65 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xa55f,0xd727,0xd769,0xd769,0xd727,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd767,0xd767,0xd767, 66 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x1085,0x4be3,0x0001,0x0001,0xd769,0xa699,0xa699,0xae1f,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 67 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0x25b5,0x0573,0x0d73,0x0001,0xd727,0xa699,0xa699,0xa699,0xa699,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 68 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0x04f1,0xdfbf,0x0533,0x0001,0xd769,0xa699,0xa699,0xa699,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 69 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0x1cf1,0x7e79,0x0caf,0x0001,0xd769,0xa699,0xa699,0x9599,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 70 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0xffff,0xffff,0x8e35,0x0001,0x5b11,0xd769,0xa699,0xa699,0xd769,0xd769,0xd769,0x9617,0xa5df,0xd727,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769, 71 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0001,0x0001,0x0001,0x52d1,0xd769,0xd769,0xa699,0x9ddb,0xd769,0xd769,0xd769,0xa699,0xa699,0xa699,0xa699,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xffff, 72 | 0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xa699,0xd769,0xd769,0xd769,0xd769,0xa699,0xa699,0xa699,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0xd769,0x0573, 73 | }; 74 | 75 | Vtx_tn Vtx_Celebi_mesh01_0[32] = { 76 | { -35, 94, 46, 0, 777, 1241, 130, 130, 130, 0}, //id: 0, direct reference: [0][0] 77 | { -49, 85, 27, 0, 507, 1131, 130, 130, 130, 0}, //id: 1, direct reference: [0][1] 78 | { -34, 70, 33, 0, 704, 984, 130, 130, 130, 0}, //id: 2, direct reference: [0][2] 79 | { -48, 112, 27, 0, 505, 1382, 130, 130, 130, 0}, //id: 3, direct reference: [0][3] 80 | { -32, 118, 48, 0, 789, 1472, 130, 130, 130, 0}, //id: 4, direct reference: [0][4] 81 | { -16, 98, 55, 0, 1033, 1281, 130, 130, 130, 0}, //id: 5, direct reference: [0][5] 82 | { -15, 73, 48, 0, 1019, 1028, 130, 130, 130, 0}, //id: 6, direct reference: [0][6] 83 | { 34, 94, 46, 0, 777, 1241, 130, 130, 130, 0}, //id: 7, direct reference: [0][7] 84 | { 31, 118, 48, 0, 789, 1472, 130, 130, 130, 0}, //id: 8, direct reference: [0][8] 85 | { 15, 98, 55, 0, 1033, 1281, 130, 130, 130, 0}, //id: 9, direct reference: [0][9] 86 | { 47, 112, 27, 0, 510, 1377, 130, 130, 130, 0}, //id: 10, direct reference: [0][10] 87 | { 48, 85, 27, 0, 507, 1131, 130, 130, 130, 0}, //id: 11, direct reference: [0][11] 88 | { 14, 73, 48, 0, 1019, 1028, 130, 130, 130, 0}, //id: 12, direct reference: [0][12] 89 | { 33, 70, 33, 0, 704, 984, 130, 130, 130, 0}, //id: 13, direct reference: [0][13] 90 | { 32, 28, -1, 0, 1969, 956, 130, 130, 130, 0}, //id: 14, direct reference: [0][14] 91 | { 15, 17, -32, 0, 1969, 956, 130, 130, 130, 0}, //id: 15, direct reference: [0][15] 92 | { 16, 32, -29, 0, 1969, 956, 130, 130, 130, 0}, //id: 16, direct reference: [0][16] 93 | { 30, 13, -3, 0, 1969, 956, 130, 130, 130, 0}, //id: 17, direct reference: [0][17] 94 | { 16, 24, 27, 0, 1969, 956, 130, 130, 130, 0}, //id: 18, direct reference: [0][18] 95 | { 15, 10, 20, 0, 1969, 956, 130, 130, 130, 0}, //id: 19, direct reference: [0][19] 96 | { -17, 24, 27, 0, 1969, 956, 130, 130, 130, 0}, //id: 20, direct reference: [0][20] 97 | { -16, 10, 20, 0, 1969, 956, 130, 130, 130, 0}, //id: 21, direct reference: [0][21] 98 | { -33, 28, -1, 0, 1969, 956, 130, 130, 130, 0}, //id: 22, direct reference: [0][22] 99 | { -31, 13, -3, 0, 1969, 956, 130, 130, 130, 0}, //id: 23, direct reference: [0][23] 100 | { -17, 32, -29, 0, 1969, 956, 130, 130, 130, 0}, //id: 24, direct reference: [0][24] 101 | { -16, 17, -32, 0, 1969, 956, 130, 130, 130, 0}, //id: 25, direct reference: [0][25] 102 | { -16, 0, -5, 0, 1969, 956, 130, 130, 130, 0}, //id: 26, direct reference: [0][26] 103 | { 0, 9, -4, 0, 1969, 956, 130, 130, 130, 0}, //id: 27, direct reference: [0][27] 104 | { 15, 0, -5, 0, 1969, 956, 130, 130, 130, 0}, //id: 28, direct reference: [0][28] 105 | { 32, 28, -1, 0, 1038, 1556, 130, 130, 130, 0}, //id: 29, direct reference: [0][29] 106 | { 50, 38, 34, 0, 1274, 1271, 130, 130, 130, 0}, //id: 30, direct reference: [0][30] 107 | { 16, 24, 27, 0, 1038, 1556, 130, 130, 130, 0}, //id: 31, direct reference: [0][31] 108 | }; 109 | 110 | Vtx_tn Vtx_Celebi_mesh01_1[32] = { 111 | { 32, 28, -1, 0, 1038, 1556, 130, 130, 130, 0}, //id: 29, direct reference: [1][0] 112 | { 25, 58, 3, 0, 1311, 1661, 130, 130, 130, 0}, //id: 32, direct reference: [1][1] 113 | { 50, 38, 34, 0, 1274, 1271, 130, 130, 130, 0}, //id: 30, direct reference: [1][2] 114 | { 16, 32, -29, 0, 1017, 1875, 130, 130, 130, 0}, //id: 33, direct reference: [1][3] 115 | { 25, 58, 3, 0, 1264, 1754, 130, 130, 130, 0}, //id: 34, direct reference: [1][4] 116 | { 32, 28, -1, 0, 1077, 1682, 130, 130, 130, 0}, //id: 35, direct reference: [1][5] 117 | { 12, 60, -17, 0, 1221, 1897, 130, 130, 130, 0}, //id: 36, direct reference: [1][6] 118 | { -17, 32, -29, 0, 1021, 1975, 130, 130, 130, 0}, //id: 37, direct reference: [1][7] 119 | { -13, 60, -17, 0, 1225, 1952, 130, 130, 130, 0}, //id: 38, direct reference: [1][8] 120 | { 25, 58, 3, 0, 1067, 1393, 130, 130, 130, 0}, //id: 39, direct reference: [1][9] 121 | { 12, 55, 24, 0, 1067, 1393, 130, 130, 130, 0}, //id: 40, direct reference: [1][10] 122 | { 50, 38, 34, 0, 1067, 1393, 130, 130, 130, 0}, //id: 41, direct reference: [1][11] 123 | { 0, 61, 4, 0, 1067, 1393, 130, 130, 130, 0}, //id: 42, direct reference: [1][12] 124 | { 12, 60, -17, 0, 1067, 1393, 130, 130, 130, 0}, //id: 43, direct reference: [1][13] 125 | { -13, 60, -17, 0, 1067, 1393, 130, 130, 130, 0}, //id: 44, direct reference: [1][14] 126 | { -13, 55, 24, 0, 1067, 1393, 130, 130, 130, 0}, //id: 45, direct reference: [1][15] 127 | { -26, 58, 3, 0, 1067, 1393, 130, 130, 130, 0}, //id: 46, direct reference: [1][16] 128 | { -51, 38, 34, 0, 1067, 1393, 130, 130, 130, 0}, //id: 47, direct reference: [1][17] 129 | { -17, 24, 27, 0, 1472, 1878, 130, 130, 130, 0}, //id: 48, direct reference: [1][18] 130 | { -13, 55, 24, 0, 1768, 1911, 130, 130, 130, 0}, //id: 49, direct reference: [1][19] 131 | { -51, 38, 34, 0, 1600, 1568, 130, 130, 130, 0}, //id: 50, direct reference: [1][20] 132 | { -17, 24, 27, 0, 1360, 1836, 130, 130, 130, 0}, //id: 51, direct reference: [1][21] 133 | { 16, 24, 27, 0, 1360, 1959, 130, 130, 130, 0}, //id: 52, direct reference: [1][22] 134 | { -13, 55, 24, 0, 1656, 1869, 130, 130, 130, 0}, //id: 53, direct reference: [1][23] 135 | { -51, 38, 34, 0, 1274, 1271, 130, 130, 130, 0}, //id: 54, direct reference: [1][24] 136 | { -33, 28, -1, 0, 1038, 1556, 130, 130, 130, 0}, //id: 55, direct reference: [1][25] 137 | { -17, 24, 27, 0, 1038, 1556, 130, 130, 130, 0}, //id: 56, direct reference: [1][26] 138 | { -26, 58, 3, 0, 1311, 1661, 130, 130, 130, 0}, //id: 57, direct reference: [1][27] 139 | { -33, 28, -1, 0, 1077, 1682, 130, 130, 130, 0}, //id: 58, direct reference: [1][28] 140 | { -13, 60, -17, 0, 1221, 1897, 130, 130, 130, 0}, //id: 59, direct reference: [1][29] 141 | { -17, 32, -29, 0, 1017, 1875, 130, 130, 130, 0}, //id: 60, direct reference: [1][30] 142 | { -26, 58, 3, 0, 1264, 1754, 130, 130, 130, 0}, //id: 61, direct reference: [1][31] 143 | }; 144 | 145 | Vtx_tn Vtx_Celebi_mesh01_2[32] = { 146 | { 16, 24, 27, 0, 1472, 1878, 130, 130, 130, 0}, //id: 62, direct reference: [2][0] 147 | { 50, 38, 34, 0, 1600, 1568, 130, 130, 130, 0}, //id: 63, direct reference: [2][1] 148 | { 12, 55, 24, 0, 1768, 1911, 130, 130, 130, 0}, //id: 64, direct reference: [2][2] 149 | { 16, 24, 27, 0, 1360, 1959, 130, 130, 130, 0}, //id: 52, direct reference: [2][3] 150 | { 12, 55, 24, 0, 1656, 1926, 130, 130, 130, 0}, //id: 65, direct reference: [2][4] 151 | { -13, 55, 24, 0, 1656, 1869, 130, 130, 130, 0}, //id: 53, direct reference: [2][5] 152 | { 15, 118, 51, 0, 1842, 1949, 130, 130, 130, 0}, //id: 66, direct reference: [2][6] 153 | { 29, 155, 53, 0, 1931, 1955, 130, 130, 130, 0}, //id: 67, direct reference: [2][7] 154 | { 22, 158, 60, 0, 1926, 1955, 130, 130, 130, 0}, //id: 68, direct reference: [2][8] 155 | { 15, 158, 53, 0, 1938, 1955, 130, 130, 130, 0}, //id: 69, direct reference: [2][9] 156 | { 27, 189, 31, 0, 1971, 1949, 130, 130, 130, 0}, //id: 70, direct reference: [2][10] 157 | { -16, 118, 51, 0, 1842, 1949, 130, 130, 130, 0}, //id: 71, direct reference: [2][11] 158 | { -23, 158, 60, 0, 1926, 1955, 130, 130, 130, 0}, //id: 72, direct reference: [2][12] 159 | { -30, 155, 53, 0, 1931, 1955, 130, 130, 130, 0}, //id: 73, direct reference: [2][13] 160 | { -16, 158, 53, 0, 1938, 1955, 130, 130, 130, 0}, //id: 74, direct reference: [2][14] 161 | { -28, 189, 31, 0, 1971, 1949, 130, 130, 130, 0}, //id: 75, direct reference: [2][15] 162 | { 0, 136, -50, 0, 1995, 1479, 130, 130, 130, 0}, //id: 76, direct reference: [2][16] 163 | { 19, 109, -49, 0, 1843, 1719, 130, 130, 130, 0}, //id: 77, direct reference: [2][17] 164 | { -20, 109, -49, 0, 1843, 1719, 130, 130, 130, 0}, //id: 78, direct reference: [2][18] 165 | { 27, 147, -41, 0, 1786, 1385, 130, 130, 130, 0}, //id: 79, direct reference: [2][19] 166 | { 0, 163, -45, 0, 1985, 1233, 130, 130, 130, 0}, //id: 80, direct reference: [2][20] 167 | { 18, 173, -32, 0, 1837, 1124, 130, 130, 130, 0}, //id: 81, direct reference: [2][21] 168 | { 0, 192, -33, 0, 1984, 972, 130, 130, 130, 0}, //id: 82, direct reference: [2][22] 169 | { 0, 171, -12, 0, 1663, 972, 130, 130, 130, 0}, //id: 83, direct reference: [2][23] 170 | { -19, 173, -32, 0, 1837, 1124, 130, 130, 130, 0}, //id: 84, direct reference: [2][24] 171 | { -37, 155, -14, 0, 1587, 1258, 130, 130, 130, 0}, //id: 85, direct reference: [2][25] 172 | { -28, 147, -41, 0, 1786, 1385, 130, 130, 130, 0}, //id: 86, direct reference: [2][26] 173 | { -44, 134, -24, 0, 1568, 1476, 130, 130, 130, 0}, //id: 87, direct reference: [2][27] 174 | { -46, 104, -22, 0, 1532, 1703, 130, 130, 130, 0}, //id: 88, direct reference: [2][28] 175 | { 50, 121, 6, 0, 1228, 972, 130, 130, 130, 0}, //id: 89, direct reference: [2][29] 176 | { 50, 87, 4, 0, 1228, 972, 130, 130, 130, 0}, //id: 90, direct reference: [2][30] 177 | { 45, 104, -22, 0, 1228, 972, 130, 130, 130, 0}, //id: 91, direct reference: [2][31] 178 | }; 179 | 180 | Vtx_tn Vtx_Celebi_mesh01_3[32] = { 181 | { 50, 121, 6, 0, 1228, 972, 130, 130, 130, 0}, //id: 89, direct reference: [3][0] 182 | { 47, 112, 27, 0, 1228, 972, 130, 130, 130, 0}, //id: 92, direct reference: [3][1] 183 | { 50, 87, 4, 0, 1228, 972, 130, 130, 130, 0}, //id: 90, direct reference: [3][2] 184 | { 31, 132, 37, 0, 1228, 972, 130, 130, 130, 0}, //id: 93, direct reference: [3][3] 185 | { 31, 118, 48, 0, 1228, 972, 130, 130, 130, 0}, //id: 94, direct reference: [3][4] 186 | { 0, 129, 52, 0, 1228, 972, 130, 130, 130, 0}, //id: 95, direct reference: [3][5] 187 | { 15, 98, 55, 0, 1228, 972, 130, 130, 130, 0}, //id: 96, direct reference: [3][6] 188 | { 0, 98, 56, 0, 1228, 972, 130, 130, 130, 0}, //id: 97, direct reference: [3][7] 189 | { 34, 63, 6, 0, 1228, 972, 130, 130, 130, 0}, //id: 98, direct reference: [3][8] 190 | { 48, 85, 27, 0, 1228, 972, 130, 130, 130, 0}, //id: 99, direct reference: [3][9] 191 | { 33, 70, 33, 0, 1228, 972, 130, 130, 130, 0}, //id: 100, direct reference: [3][10] 192 | { 31, 76, -25, 0, 1228, 972, 130, 130, 130, 0}, //id: 101, direct reference: [3][11] 193 | { 45, 104, -22, 0, 1228, 972, 130, 130, 130, 0}, //id: 91, direct reference: [3][12] 194 | { 19, 109, -49, 0, 1228, 972, 130, 130, 130, 0}, //id: 102, direct reference: [3][13] 195 | { -35, 63, 6, 0, 1028, 1024, 130, 130, 130, 0}, //id: 103, direct reference: [3][14] 196 | { 0, 59, -13, 0, 1028, 1024, 130, 130, 130, 0}, //id: 104, direct reference: [3][15] 197 | { 0, 59, 25, 0, 1028, 1024, 130, 130, 130, 0}, //id: 105, direct reference: [3][16] 198 | { -32, 76, -25, 0, 1028, 1024, 130, 130, 130, 0}, //id: 106, direct reference: [3][17] 199 | { -51, 87, 4, 0, 1028, 1024, 130, 130, 130, 0}, //id: 107, direct reference: [3][18] 200 | { -46, 104, -22, 0, 1028, 1024, 130, 130, 130, 0}, //id: 108, direct reference: [3][19] 201 | { -51, 121, 6, 0, 1028, 1024, 130, 130, 130, 0}, //id: 109, direct reference: [3][20] 202 | { -51, 121, 6, 0, 1288, 1432, 130, 130, 130, 0}, //id: 110, direct reference: [3][21] 203 | { -44, 134, -24, 0, 1568, 1476, 130, 130, 130, 0}, //id: 87, direct reference: [3][22] 204 | { -46, 104, -22, 0, 1532, 1703, 130, 130, 130, 0}, //id: 88, direct reference: [3][23] 205 | { -37, 155, -14, 0, 1587, 1258, 130, 130, 130, 0}, //id: 85, direct reference: [3][24] 206 | { -36, 145, 9, 0, 1381, 1269, 130, 130, 130, 0}, //id: 111, direct reference: [3][25] 207 | { -17, 157, 3, 0, 1479, 1109, 130, 130, 130, 0}, //id: 112, direct reference: [3][26] 208 | { 0, 149, 25, 0, 1266, 972, 130, 130, 130, 0}, //id: 113, direct reference: [3][27] 209 | { 50, 121, 6, 0, 1288, 1432, 130, 130, 130, 0}, //id: 114, direct reference: [3][28] 210 | { 35, 145, 9, 0, 1381, 1269, 130, 130, 130, 0}, //id: 115, direct reference: [3][29] 211 | { 31, 132, 37, 0, 1140, 1230, 130, 130, 130, 0}, //id: 116, direct reference: [3][30] 212 | { 36, 155, -14, 0, 1587, 1258, 130, 130, 130, 0}, //id: 117, direct reference: [3][31] 213 | }; 214 | 215 | Vtx_tn Vtx_Celebi_mesh01_4[32] = { 216 | { 43, 134, -24, 0, 1568, 1476, 130, 130, 130, 0}, //id: 118, direct reference: [4][0] 217 | { 36, 155, -14, 0, 1587, 1258, 130, 130, 130, 0}, //id: 117, direct reference: [4][1] 218 | { 50, 121, 6, 0, 1288, 1432, 130, 130, 130, 0}, //id: 114, direct reference: [4][2] 219 | { 27, 147, -41, 0, 1786, 1385, 130, 130, 130, 0}, //id: 79, direct reference: [4][3] 220 | { 19, 109, -49, 0, 1843, 1719, 130, 130, 130, 0}, //id: 77, direct reference: [4][4] 221 | { 35, 145, 9, 0, 1381, 1269, 130, 130, 130, 0}, //id: 115, direct reference: [4][5] 222 | { 16, 157, 3, 0, 1479, 1109, 130, 130, 130, 0}, //id: 119, direct reference: [4][6] 223 | { 0, 149, 25, 0, 1266, 972, 130, 130, 130, 0}, //id: 113, direct reference: [4][7] 224 | { 0, 171, -12, 0, 1663, 972, 130, 130, 130, 0}, //id: 83, direct reference: [4][8] 225 | { 18, 173, -32, 0, 1837, 1124, 130, 130, 130, 0}, //id: 81, direct reference: [4][9] 226 | { 0, 73, 50, 0, 1028, 1024, 130, 130, 130, 0}, //id: 120, direct reference: [4][10] 227 | { 13, 64, 36, 0, 1028, 1024, 130, 130, 130, 0}, //id: 121, direct reference: [4][11] 228 | { 14, 73, 48, 0, 1028, 1024, 130, 130, 130, 0}, //id: 122, direct reference: [4][12] 229 | { -14, 64, 36, 0, 1028, 1024, 130, 130, 130, 0}, //id: 123, direct reference: [4][13] 230 | { -15, 73, 48, 0, 1028, 1024, 130, 130, 130, 0}, //id: 124, direct reference: [4][14] 231 | { -34, 70, 33, 0, 1028, 1024, 130, 130, 130, 0}, //id: 125, direct reference: [4][15] 232 | { 0, 59, 25, 0, 1028, 1024, 130, 130, 130, 0}, //id: 105, direct reference: [4][16] 233 | { -35, 63, 6, 0, 1028, 1024, 130, 130, 130, 0}, //id: 103, direct reference: [4][17] 234 | { -49, 85, 27, 0, 1028, 1024, 130, 130, 130, 0}, //id: 126, direct reference: [4][18] 235 | { -20, 109, -49, 0, 1028, 1024, 130, 130, 130, 0}, //id: 127, direct reference: [4][19] 236 | { -32, 76, -25, 0, 1028, 1024, 130, 130, 130, 0}, //id: 106, direct reference: [4][20] 237 | { -46, 104, -22, 0, 1028, 1024, 130, 130, 130, 0}, //id: 108, direct reference: [4][21] 238 | { 0, 78, -40, 0, 1028, 1024, 130, 130, 130, 0}, //id: 128, direct reference: [4][22] 239 | { 19, 109, -49, 0, 1028, 1024, 130, 130, 130, 0}, //id: 129, direct reference: [4][23] 240 | { 31, 76, -25, 0, 1028, 1024, 130, 130, 130, 0}, //id: 130, direct reference: [4][24] 241 | { 34, 63, 6, 0, 1228, 972, 130, 130, 130, 0}, //id: 98, direct reference: [4][25] 242 | { 0, 59, -13, 0, 1228, 972, 130, 130, 130, 0}, //id: 131, direct reference: [4][26] 243 | { 31, 76, -25, 0, 1228, 972, 130, 130, 130, 0}, //id: 101, direct reference: [4][27] 244 | { 0, 59, 25, 0, 1228, 972, 130, 130, 130, 0}, //id: 132, direct reference: [4][28] 245 | { -48, 112, 27, 0, 1028, 1024, 130, 130, 130, 0}, //id: 133, direct reference: [4][29] 246 | { -51, 121, 6, 0, 1028, 1024, 130, 130, 130, 0}, //id: 109, direct reference: [4][30] 247 | { -51, 87, 4, 0, 1028, 1024, 130, 130, 130, 0}, //id: 107, direct reference: [4][31] 248 | }; 249 | 250 | Vtx_tn Vtx_Celebi_mesh01_5[32] = { 251 | { -48, 112, 27, 0, 1028, 1024, 130, 130, 130, 0}, //id: 133, direct reference: [5][0] 252 | { -32, 132, 37, 0, 1028, 1024, 130, 130, 130, 0}, //id: 134, direct reference: [5][1] 253 | { -51, 121, 6, 0, 1028, 1024, 130, 130, 130, 0}, //id: 109, direct reference: [5][2] 254 | { -32, 118, 48, 0, 1028, 1024, 130, 130, 130, 0}, //id: 135, direct reference: [5][3] 255 | { 15, 98, 55, 0, 1342, 1443, 130, 130, 130, 0}, //id: 136, direct reference: [5][4] 256 | { 0, 73, 50, 0, 964, 1226, 130, 130, 130, 0}, //id: 137, direct reference: [5][5] 257 | { 14, 73, 48, 0, 959, 1426, 130, 130, 130, 0}, //id: 138, direct reference: [5][6] 258 | { 0, 98, 56, 0, 1337, 1226, 130, 130, 130, 0}, //id: 139, direct reference: [5][7] 259 | { -16, 98, 55, 0, 1342, 1009, 130, 130, 130, 0}, //id: 140, direct reference: [5][8] 260 | { -15, 73, 48, 0, 959, 1026, 130, 130, 130, 0}, //id: 141, direct reference: [5][9] 261 | { 33, 70, 33, 0, 1028, 1024, 130, 130, 130, 0}, //id: 142, direct reference: [5][10] 262 | { 13, 64, 36, 0, 1028, 1024, 130, 130, 130, 0}, //id: 121, direct reference: [5][11] 263 | { 34, 63, 6, 0, 1228, 972, 130, 130, 130, 0}, //id: 98, direct reference: [5][12] 264 | { 14, 73, 48, 0, 1028, 1024, 130, 130, 130, 0}, //id: 122, direct reference: [5][13] 265 | { 0, 149, 25, 0, 1228, 972, 130, 130, 130, 0}, //id: 143, direct reference: [5][14] 266 | { 0, 129, 52, 0, 1228, 972, 130, 130, 130, 0}, //id: 95, direct reference: [5][15] 267 | { 31, 132, 37, 0, 1228, 972, 130, 130, 130, 0}, //id: 93, direct reference: [5][16] 268 | { -32, 132, 37, 0, 1228, 972, 130, 130, 130, 0}, //id: 144, direct reference: [5][17] 269 | { 0, 78, -40, 0, 1028, 1024, 130, 130, 130, 0}, //id: 128, direct reference: [5][18] 270 | { 0, 59, -13, 0, 1028, 1024, 130, 130, 130, 0}, //id: 104, direct reference: [5][19] 271 | { -32, 76, -25, 0, 1028, 1024, 130, 130, 130, 0}, //id: 106, direct reference: [5][20] 272 | { 31, 76, -25, 0, 1028, 1024, 130, 130, 130, 0}, //id: 130, direct reference: [5][21] 273 | { -32, 118, 48, 0, 1228, 972, 130, 130, 130, 0}, //id: 145, direct reference: [5][22] 274 | { -16, 98, 55, 0, 1228, 972, 130, 130, 130, 0}, //id: 146, direct reference: [5][23] 275 | { -36, 145, 9, 0, 1381, 1269, 130, 130, 130, 0}, //id: 111, direct reference: [5][24] 276 | { -32, 132, 37, 0, 1140, 1230, 130, 130, 130, 0}, //id: 147, direct reference: [5][25] 277 | { 0, 149, 25, 0, 1266, 972, 130, 130, 130, 0}, //id: 113, direct reference: [5][26] 278 | { -51, 121, 6, 0, 1288, 1432, 130, 130, 130, 0}, //id: 110, direct reference: [5][27] 279 | { 45, 104, -22, 0, 1532, 1703, 130, 130, 130, 0}, //id: 148, direct reference: [5][28] 280 | { 43, 134, -24, 0, 1568, 1476, 130, 130, 130, 0}, //id: 118, direct reference: [5][29] 281 | { 50, 121, 6, 0, 1288, 1432, 130, 130, 130, 0}, //id: 114, direct reference: [5][30] 282 | { 19, 109, -49, 0, 1843, 1719, 130, 130, 130, 0}, //id: 77, direct reference: [5][31] 283 | }; 284 | 285 | Vtx_tn Vtx_Celebi_mesh01_6[17] = { 286 | { -17, 157, 3, 0, 1479, 834, 130, 130, 130, 0}, //id: 149, direct reference: [6][0] 287 | { 16, 157, 3, 0, 1479, 1109, 130, 130, 130, 0}, //id: 119, direct reference: [6][1] 288 | { 0, 171, -12, 0, 1663, 972, 130, 130, 130, 0}, //id: 83, direct reference: [6][2] 289 | { 0, 149, 25, 0, 1266, 972, 130, 130, 130, 0}, //id: 113, direct reference: [6][3] 290 | { 0, 129, 52, 0, 1228, 972, 130, 130, 130, 0}, //id: 95, direct reference: [6][4] 291 | { -16, 98, 55, 0, 1228, 972, 130, 130, 130, 0}, //id: 146, direct reference: [6][5] 292 | { 0, 98, 56, 0, 1228, 972, 130, 130, 130, 0}, //id: 97, direct reference: [6][6] 293 | { -17, 157, 3, 0, 1479, 1109, 130, 130, 130, 0}, //id: 112, direct reference: [6][7] 294 | { -37, 155, -14, 0, 1587, 1258, 130, 130, 130, 0}, //id: 85, direct reference: [6][8] 295 | { 7, 51, -25, 0, 1966, 1879, 130, 130, 130, 0}, //id: 150, direct reference: [6][9] 296 | { 29, 45, -63, 0, 1966, 1879, 130, 130, 130, 0}, //id: 151, direct reference: [6][10] 297 | { 16, 39, -44, 0, 1966, 1879, 130, 130, 130, 0}, //id: 152, direct reference: [6][11] 298 | { 20, 55, -45, 0, 1966, 1879, 130, 130, 130, 0}, //id: 153, direct reference: [6][12] 299 | { -30, 45, -63, 0, 1966, 1879, 130, 130, 130, 0}, //id: 154, direct reference: [6][13] 300 | { -8, 51, -25, 0, 1966, 1879, 130, 130, 130, 0}, //id: 155, direct reference: [6][14] 301 | { -17, 39, -44, 0, 1966, 1879, 130, 130, 130, 0}, //id: 156, direct reference: [6][15] 302 | { -21, 55, -45, 0, 1966, 1879, 130, 130, 130, 0}, //id: 157, direct reference: [6][16] 303 | }; 304 | 305 | Gfx Vtx_Celebi_mesh01_dl[] = { 306 | gsSPVertex(&Vtx_Celebi_mesh01_0[0], 32, 0), 307 | gsSP2Triangles(0,1,2,0,0,3,1,0), 308 | gsSP2Triangles(4,3,0,0,0,5,4,0), 309 | gsSP2Triangles(0,6,5,0,2,6,0,0), 310 | gsSP2Triangles(7,8,9,0,7,10,8,0), 311 | gsSP2Triangles(11,10,7,0,12,7,9,0), 312 | gsSP2Triangles(12,13,7,0,11,7,13,0), 313 | gsSP2Triangles(14,15,16,0,14,17,15,0), 314 | gsSP2Triangles(18,17,14,0,18,19,17,0), 315 | gsSP2Triangles(20,19,18,0,20,21,19,0), 316 | gsSP2Triangles(22,21,20,0,22,23,21,0), 317 | gsSP2Triangles(24,23,22,0,24,25,23,0), 318 | gsSP2Triangles(16,25,24,0,16,15,25,0), 319 | gsSP2Triangles(26,23,25,0,26,21,23,0), 320 | gsSP2Triangles(27,21,26,0,27,19,21,0), 321 | gsSP2Triangles(28,19,27,0,28,17,19,0), 322 | gsSP2Triangles(15,17,28,0,29,30,31,0), 323 | gsSP2Triangles(27,15,28,0,27,25,15,0), 324 | gsSP1Triangle(26,25,27,0), 325 | gsSPVertex(&Vtx_Celebi_mesh01_1[0], 32, 0), 326 | gsSP2Triangles(0,1,2,0,3,4,5,0), 327 | gsSP2Triangles(3,6,4,0,7,6,3,0), 328 | gsSP2Triangles(7,8,6,0,9,10,11,0), 329 | gsSP2Triangles(9,12,10,0,13,12,9,0), 330 | gsSP2Triangles(13,14,12,0,15,16,17,0), 331 | gsSP2Triangles(15,12,16,0,10,12,15,0), 332 | gsSP2Triangles(18,19,20,0,21,22,23,0), 333 | gsSP2Triangles(24,25,26,0,24,27,25,0), 334 | gsSP2Triangles(28,29,30,0,28,31,29,0), 335 | gsSP1Triangle(14,16,12,0), 336 | gsSPVertex(&Vtx_Celebi_mesh01_2[0], 32, 0), 337 | gsSP2Triangles(0,1,2,0,3,4,5,0), 338 | gsSP2Triangles(6,7,8,0,6,9,7,0), 339 | gsSP2Triangles(8,9,6,0,8,10,9,0), 340 | gsSP2Triangles(7,10,8,0,7,9,10,0), 341 | gsSP2Triangles(11,12,13,0,11,14,12,0), 342 | gsSP2Triangles(13,14,11,0,13,15,14,0), 343 | gsSP2Triangles(12,15,13,0,12,14,15,0), 344 | gsSP2Triangles(16,17,18,0,16,19,17,0), 345 | gsSP2Triangles(20,19,16,0,20,21,19,0), 346 | gsSP2Triangles(22,21,20,0,22,23,21,0), 347 | gsSP2Triangles(24,23,22,0,24,25,23,0), 348 | gsSP2Triangles(26,25,24,0,26,27,25,0), 349 | gsSP2Triangles(18,27,26,0,18,28,27,0), 350 | gsSP2Triangles(29,30,31,0,26,16,18,0), 351 | gsSP2Triangles(26,20,16,0,24,20,26,0), 352 | gsSP1Triangle(24,22,20,0), 353 | gsSPVertex(&Vtx_Celebi_mesh01_3[0], 32, 0), 354 | gsSP2Triangles(0,1,2,0,3,1,0,0), 355 | gsSP2Triangles(3,4,1,0,5,4,3,0), 356 | gsSP2Triangles(5,6,4,0,7,6,5,0), 357 | gsSP2Triangles(8,9,10,0,8,2,9,0), 358 | gsSP2Triangles(11,2,8,0,11,12,2,0), 359 | gsSP2Triangles(13,12,11,0,14,15,16,0), 360 | gsSP2Triangles(14,17,15,0,18,17,14,0), 361 | gsSP2Triangles(18,19,17,0,20,19,18,0), 362 | gsSP2Triangles(21,22,23,0,21,24,22,0), 363 | gsSP2Triangles(25,24,21,0,25,26,24,0), 364 | gsSP2Triangles(27,26,25,0,28,29,30,0), 365 | gsSP2Triangles(28,31,29,0,29,27,30,0), 366 | gsSP1Triangle(9,2,1,0), 367 | gsSPVertex(&Vtx_Celebi_mesh01_4[0], 32, 0), 368 | gsSP2Triangles(0,1,2,0,0,3,1,0), 369 | gsSP2Triangles(4,3,0,0,5,6,7,0), 370 | gsSP2Triangles(1,6,5,0,1,8,6,0), 371 | gsSP2Triangles(9,8,1,0,10,11,12,0), 372 | gsSP2Triangles(10,13,11,0,14,13,10,0), 373 | gsSP2Triangles(14,15,13,0,13,16,11,0), 374 | gsSP2Triangles(13,17,16,0,15,17,13,0), 375 | gsSP2Triangles(15,18,17,0,19,20,21,0), 376 | gsSP2Triangles(19,22,20,0,23,22,19,0), 377 | gsSP2Triangles(23,24,22,0,25,26,27,0), 378 | gsSP2Triangles(25,28,26,0,11,28,25,0), 379 | gsSP2Triangles(29,30,31,0,18,31,17,0), 380 | gsSP2Triangles(18,29,31,0,1,3,9,0), 381 | gsSPVertex(&Vtx_Celebi_mesh01_5[0], 32, 0), 382 | gsSP2Triangles(0,1,2,0,3,1,0,0), 383 | gsSP2Triangles(4,5,6,0,4,7,5,0), 384 | gsSP2Triangles(5,8,9,0,5,7,8,0), 385 | gsSP2Triangles(10,11,12,0,10,13,11,0), 386 | gsSP2Triangles(14,15,16,0,14,17,15,0), 387 | gsSP2Triangles(18,19,20,0,18,21,19,0), 388 | gsSP2Triangles(22,15,17,0,22,23,15,0), 389 | gsSP2Triangles(24,25,26,0,24,27,25,0), 390 | gsSP2Triangles(28,29,30,0,28,31,29,0), 391 | gsSPVertex(&Vtx_Celebi_mesh01_6[0], 17, 0), 392 | gsSP2Triangles(0,1,2,0,0,3,1,0), 393 | gsSP2Triangles(4,5,6,0,7,2,8,0), 394 | gsSP2Triangles(9,10,11,0,9,12,10,0), 395 | gsSP2Triangles(11,12,9,0,11,10,12,0), 396 | gsSP2Triangles(13,14,15,0,13,16,14,0), 397 | gsSP2Triangles(16,15,14,0,16,13,15,0), 398 | gsSPEndDisplayList(), 399 | }; 400 | 401 | Gfx Wtx_Celebi[] = { 402 | gsDPLoadTextureBlock(Text_Celebi_Pii_SEREBHI_body_diff, G_IM_FMT_RGBA, G_IM_SIZ_16b, 403 | 32,32, 0, G_TX_WRAP|G_TX_NOMIRROR, G_TX_WRAP|G_TX_NOMIRROR, 404 | 5,5, G_TX_NOLOD, G_TX_NOLOD), 405 | gsSPDisplayList(Vtx_Celebi_mesh01_dl), 406 | gsSPEndDisplayList() 407 | }; --------------------------------------------------------------------------------