Advertisement
Guest User

Untitled

a guest
Jun 28th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 26.14 KB | None | 0 0
  1. /*
  2.  
  3.  
  4.     COPYRIGHT (C) SEGA ENTERPRISES,LTD.
  5. */
  6.  
  7. #ifndef _NINJA_CNK_H_
  8. #define _NINJA_CNK_H_
  9.  
  10. /*======================================*/
  11. /*                                      */
  12. /*      Chunk Table                     */
  13. /*                                      */
  14. /*======================================*/
  15. /* Chunk type offset */
  16. #define NJD_NULLOFF             0 /* null chunk (16 bits size)            */
  17. #define NJD_BITSOFF             1 /* chunk bits offset (16 bits size)     */
  18. #define NJD_TINYOFF             8 /* chunk tiny offset (32 bits size)     */
  19. #define NJD_MATOFF             16 /* chunk material offset (32 bits size) */
  20. #define NJD_VERTOFF            32 /* chunk vertex offset (32 bits size)   */
  21. #define NJD_VOLOFF             56 /* chunk volume offset (32 bits size)   */
  22. #define NJD_STRIPOFF           64 /* chunk strip offset                   */
  23. #define NJD_ENDOFF            255 /* end chunk offset (16 bits size)      */
  24.  
  25. /*------------*/
  26. /* Chunk Null */
  27. /*------------*/
  28. /* <Format>=[ChunkHead(16)](16 bits chunk) */
  29. #define NJD_CN     (NJD_NULLOFF+0)/* NULL chunk for boundary control      */
  30.  
  31. /*-----------*/
  32. /* Chunk End */
  33. /*-----------*/
  34. /* <Format>=[ChunkHead(16)](16 bits chunk) */
  35. #define NJD_CE      (NJD_ENDOFF+0)
  36.  
  37. /*------------*/
  38. /* Chunk Bits */
  39. /*------------*/
  40. /* <Format>=[bits(8)|ChunkHead(8)](16 bits chunk) */
  41. /* BA  : Blend Alpha                      */
  42. /*       13-11 = SRC Alpha Instruction(3) */
  43. /*       10- 8 = DST Alpha Instruction(3) */
  44. /* DA  : Mipmap 'D' adjust                */
  45. /*       11- 8 = Mipmap 'D' adjust(4)     */
  46. /* EXP : Specular Exponent                */
  47. /*       12- 8 = Exponent(5) range:0-16   */
  48. /* CP  : Cache Polygon List               */
  49. /*       15- 8 = Cache Number range:0-255 */
  50. /* DP  : Draw Polygon List                */
  51. /*       15- 8 = Cache Number range:0-255 */
  52. #define NJD_CB_BA   (NJD_BITSOFF+0)
  53. #define NJD_CB_DA   (NJD_BITSOFF+1)
  54. #define NJD_CB_EXP  (NJD_BITSOFF+2)
  55. #define NJD_CB_CP   (NJD_BITSOFF+3)
  56. #define NJD_CB_DP   (NJD_BITSOFF+4)
  57.  
  58.  
  59. /*------------*/
  60. /* Chunk Tiny */
  61. /*------------*/
  62. /* <Format>=[headbits(8)|ChunkHead(8)][texbits(3)|TexId(13)] (32 bits chunk) */
  63. /* TID : Set Texture                      */
  64. /*     <headbits>                         */
  65. /*       15-14 = FlipUV(2)                */
  66. /*       13-12 = ClampUV(2)               */
  67. /*       11- 8 = Mipmap 'D' adjust(4)     */
  68. /*     <texbits>                          */
  69. /*       15-14 = Filter Mode(2)           */
  70. /*       13    = Super Sample(1)          */
  71. /*     (TexId Max = 8191)                 */
  72. #define NJD_CT_TID  (NJD_TINYOFF+0)
  73.  
  74. /* 2para modifier */
  75. #define NJD_CT_TID2 (NJD_TINYOFF+1)
  76.  
  77. /*----------------*/
  78. /* Chunk Material */
  79. /*----------------*/
  80. /* <Format>=[ChunkHead][Size][Data]                        */
  81. /*       13-11 = SRC Alpha Instruction(3)                  */
  82. /*       10- 8 = DST Alpha Instruction(3)                  */
  83. /* D  : Diffuse (ARGB)                            bit 0    */
  84. /* A  : Ambient (RGB)                             bit 1    */
  85. /* S  : Specular(ERGB) E:exponent(5) range:0-16   bit 2    */
  86. #define NJD_CM_D    (NJD_MATOFF+1)  /* [CHead][4(Size)][ARGB]              */
  87. #define NJD_CM_A    (NJD_MATOFF+2)  /* [CHead][4(Size)][NRGB] N: NOOP(255) */
  88. #define NJD_CM_DA   (NJD_MATOFF+3)  /* [CHead][8(Size)][ARGB][NRGB]        */
  89. #define NJD_CM_S    (NJD_MATOFF+4)  /* [CHead][4(Size)][ERGB] E: Exponent  */
  90. #define NJD_CM_DS   (NJD_MATOFF+5)  /* [CHead][8(Size)][ARGB][ERGB]        */
  91. #define NJD_CM_AS   (NJD_MATOFF+6)  /* [CHead][8(Size)][NRGB][ERGB]        */
  92. #define NJD_CM_DAS  (NJD_MATOFF+7)  /* [CHead][12(Size)][ARGB][NRGB][ERGB] */
  93.  
  94. /* Bump */
  95. #define NJD_CM_BU   (NJD_MATOFF+8)  /* [CHead][12(Size)][dx(16)][dy(16)][dz(16)]
  96.                                        [ux(16)][uy(16)][uz(16)]            */
  97.  
  98. /* 2para modifier */
  99. #define NJD_CM_D2   (NJD_MATOFF+9)  /* [CHead][4(Size)][ARGB]              */
  100. #define NJD_CM_A2   (NJD_MATOFF+10) /* [CHead][4(Size)][NRGB] N: NOOP(255) */
  101. #define NJD_CM_DA2  (NJD_MATOFF+11) /* [CHead][8(Size)][ARGB][NRGB]        */
  102. #define NJD_CM_S2   (NJD_MATOFF+12) /* [CHead][4(Size)][ERGB] E: Exponent  */
  103. #define NJD_CM_DS2  (NJD_MATOFF+13) /* [CHead][8(Size)][ARGB][ERGB]        */
  104. #define NJD_CM_AS2  (NJD_MATOFF+14) /* [CHead][8(Size)][NRGB][ERGB]        */
  105. #define NJD_CM_DAS2 (NJD_MATOFF+15) /* [CHead][12(Size)][ARGB][NRGB][ERGB] */
  106.  
  107. /*--------------*/
  108. /* Chunk Vertex */
  109. /*--------------*/
  110. /* <Format>=[headbits(8)|ChunkHead(8)]                                    */
  111. /*          [Size(16)][IndexOffset(16)][nbIndices(16)]                    */
  112. /*     <headbits>(NF only)                                                */
  113. /*        9- 8 = WeightStatus(2) Start, Middle, End                       */
  114. /* VN  : use vertex normal                                                */
  115. /* VNX : 32bits vertex normal  reserved(2)|x(10)|y(10)|z(10)              */
  116. /* SH  : SH4 optimize                                                     */
  117. /* D8  : Diffuse ARGB8888 only                                            */
  118. /* S5  : Diffuse RGB565 and Specular RGB565                               */
  119. /* S4  : Diffuse RGB4444 and Specular RGB565                              */
  120. /* IN  : Diffuse(16)|Specular(16)                                         */
  121. /* NF  : NinjaFlags32 for extention                                       */
  122. /* UF  : UserFlags32                                                      */
  123.  
  124. /* optimize for SH4 */
  125. #define NJD_CV_SH     (NJD_VERTOFF+0)  /* x,y,z,1.0F, ...                 */
  126. #define NJD_CV_VN_SH  (NJD_VERTOFF+1)  /* x,y,z,1.0F,nx,ny,nz,0.0F,...    */
  127.  
  128. /* chunk vertex */
  129. #define NJD_CV        (NJD_VERTOFF+2)  /* x,y,z, ...                      */
  130. #define NJD_CV_D8     (NJD_VERTOFF+3)  /* x,y,z,D8888,...                 */  
  131. #define NJD_CV_UF     (NJD_VERTOFF+4)  /* x,y,z,UserFlags32, ...          */
  132. #define NJD_CV_NF     (NJD_VERTOFF+5)  /* x,y,z,NinjaFlags32,...          */
  133. #define NJD_CV_S5     (NJD_VERTOFF+6)  /* x,y,z,D565|S565,...             */
  134. #define NJD_CV_S4     (NJD_VERTOFF+7)  /* x,y,z,D4444|S565,...            */
  135. #define NJD_CV_IN     (NJD_VERTOFF+8)  /* x,y,z,D16|S16,...               */
  136.  
  137. #define NJD_CV_VN     (NJD_VERTOFF+9)  /* x,y,z,nx,ny,nz, ...             */
  138. #define NJD_CV_VN_D8  (NJD_VERTOFF+10) /* x,y,z,nx,ny,nz,D8888,...        */
  139. #define NJD_CV_VN_UF  (NJD_VERTOFF+11) /* x,y,z,nx,ny,nz,UserFlags32,...  */
  140. #define NJD_CV_VN_NF  (NJD_VERTOFF+12) /* x,y,z,nx,ny,nz,NinjaFlags32,... */
  141. #define NJD_CV_VN_S5  (NJD_VERTOFF+13) /* x,y,z,nx,ny,nz,D565|S565,...    */
  142. #define NJD_CV_VN_S4  (NJD_VERTOFF+14) /* x,y,z,nx,ny,nz,D4444|S565,...   */
  143. #define NJD_CV_VN_IN  (NJD_VERTOFF+15) /* x,y,z,nx,ny,nz,D16|S16,...      */
  144.  
  145. #define NJD_CV_VNX    (NJD_VERTOFF+16) /* x,y,z,nxyz32, ...               */
  146. #define NJD_CV_VNX_D8 (NJD_VERTOFF+17) /* x,y,z,nxyz32,D8888,...          */
  147. #define NJD_CV_VNX_UF (NJD_VERTOFF+18) /* x,y,z,nxyz32,UserFlags32,...    */
  148.  
  149.  
  150. /*--------------*/
  151. /* Chunk vOlume */
  152. /*--------------*/
  153. /* UserFlags N=0,1(16bit*1),2(16bit*2),3(16bit*3)                         */
  154. /* <Format P3>=[ChunkHead(16)][Size(16)][UserOffset(2)|nbPolygon(14)]     */
  155. /*            i0, i1, i2, UserflagPoly0(*N),                              */
  156. /*            i3, i4, i5, UserflagPoly1(*N), ...                          */
  157. /* <Format P4>=[ChunkHead(16)][Size(16)][UserOffset(2)|nbPolygon(14)]     */
  158. /*            i0, i1, i2, i3, UserflagPoly0(*N),                          */
  159. /*            i4, i5, i6, i7, UserflagPoly1(*N), ...                      */
  160. /* <Format ST>=[ChunkHead(16)][Size(16)][UserOffset(2)|nbStrip(14)]       */
  161. /*          [flag|len, i0, i1, i2, Userflag2(*N), i3, Userflag3(*N), ...  */
  162. /* P3  : Polygon3     (Modifier Volume)                                   */
  163. /* P4  : Polygon4                                                         */
  164. /* ST  : triangle STrip(Trimesh)                                          */
  165.  
  166. #define NJD_CO_P3       (NJD_VOLOFF+0)
  167. #define NJD_CO_P4       (NJD_VOLOFF+1)
  168. #define NJD_CO_ST       (NJD_VOLOFF+2)
  169.  
  170. /*-------------*/
  171. /* Chunk Strip */
  172. /*-------------*/
  173. /* UserFlags N=0,1(16bit*1),2(16bit*2),3(16bit*3)                         */
  174. /* <Format1>=[CFlags(8)|CHead(8)][Size(16)][UserOffset(2)|nbStrip(14)]    */
  175. /*           [flag(1)|len(15), index0(16), index1(16),                    */
  176. /*            index2, UserFlag2(*N), ...]                                 */
  177. /* <Format2>=[CFlags(8)|CHead(8)][Size(16)][UserOffset(2)|nbStrip(14)]    */
  178. /*           [flag(1)|len(15),                                            */
  179. /*            index0(16), U0(16), V0(16),                                 */
  180. /*            index1, U1, V1,                                             */
  181. /*            index2, U2, V2, UserFlag2(*N), ... ]                        */
  182. /* <Format3>=[CFlags(8)|CHead(8)][Size(16)][UserOffset(2)|nbStrip(14)]    */
  183. /*           [flag(1)|len(15),                                            */
  184. /*            index0(16), vnx0(16), vny0(16), vnz0(16),                   */
  185. /*            index1, vnx1, vny1, vny1,                                   */
  186. /*            index2, vnx2, vny2, vnz2, UserFlag2(*N),                    */
  187. /*            index3, vnx2, vny2, vnz2, UserFlag3(*N), ... ]              */
  188. /* <Format4>=[CFlags(8)|CHead(8)][Size(16)][UserOffset(2)|nbStrip(14)]    */
  189. /*           [flag(1)|len(15),                                            */
  190. /*            index0(16), U0(16), V0(16), vnx0(16), vny0(16), vnz0(16),   */
  191. /*            index1, U1, V1, vnx1, vny1, vny1,                           */
  192. /*            index2, U2, V2, vnx2, vny2, vnz2, UserFlag2(*N),            */
  193. /*            index3, U3, V3, vnx3, vny3, vnz3, UserFlag3(*N), ... ]      */
  194. /* <Format5>=[CFlags(8)|CHead(8)][Size(16)][UserOffset(2)|nbStrip(14)]    */
  195. /*           [flag(1)|len(15),                                            */
  196. /*            index0(16), AR0(16), GB0(16),                               */
  197. /*            index1, AR1, GB1,                                           */
  198. /*            index2, AR2, GB2, UserFlag2(*N),                            */
  199. /*            index3, AR3, GB3, UserFlag3(*N), ... ]                      */
  200. /* <Format6>=[CFlags(8)|CHead(8)][Size(16)][UserOffset(2)|nbStrip(14)]    */
  201. /*           [flag(1)|len(15),                                            */
  202. /*            index0(16), U0(16), V0(16), AR0(16), GB0(16),               */
  203. /*            index1, U1, V1, AR1, GB1,                                   */
  204. /*            index2, U2, V2, AR2, GB2, UserFlag2(*N), ... ]              */
  205. /*                                                                        */
  206. /* << 2para modifiler >>                                                  */
  207. /* <Format7>=[CFlags(8)|CHead(8)][Size(16)][UserOffset(2)|nbStrip(14)]    */
  208. /*           [flag(1)|len(15),                                            */
  209. /*            index0(16), U0a(16), V0a(16), U0b(16), V0b(16),             */
  210. /*            index1, U1a, V1a, U1b, V1b,                                 */
  211. /*            index2, U2a, V2a, U2b, V2b, UserFlag2(*N), ... ]            */
  212. /*                                                                        */
  213. /* UV  : Uv (0-255)                                                       */
  214. /* UVH : Uv (0-1023)                                                      */
  215. /* VN  : Vertex Normal                                                    */
  216. /* D8  : Strip Color ARGB8888                                             */
  217.  
  218. #define NJD_CS          (NJD_STRIPOFF+0)  /* <Format1>   */
  219. #define NJD_CS_UVN      (NJD_STRIPOFF+1)  /* <Format2>   */
  220. #define NJD_CS_UVH      (NJD_STRIPOFF+2)  /* <Format2>   */
  221.  
  222. #define NJD_CS_VN       (NJD_STRIPOFF+3)  /* <Format3>   */
  223. #define NJD_CS_UVN_VN   (NJD_STRIPOFF+4)  /* <Format4>   */
  224. #define NJD_CS_UVH_VN   (NJD_STRIPOFF+5)  /* <Format4>   */
  225.  
  226. #define NJD_CS_D8       (NJD_STRIPOFF+6)  /* <Format5>   */
  227. #define NJD_CS_UVN_D8   (NJD_STRIPOFF+7)  /* <Format6>   */
  228. #define NJD_CS_UVH_D8   (NJD_STRIPOFF+8)  /* <Format6>   */
  229.  
  230. /* 2para modifier */
  231. #define NJD_CS_2        (NJD_STRIPOFF+9)  /* <Format1>   */
  232. #define NJD_CS_UVN2     (NJD_STRIPOFF+10) /* <Format7>   */
  233. #define NJD_CS_UVH2     (NJD_STRIPOFF+11) /* <Format7>   */
  234.  
  235. /*======================================*/
  236. /*                                      */
  237. /*      Chunk Flags                     */
  238. /*                                      */
  239. /*======================================*/
  240. /*------------*/
  241. /* Chunk Bits */
  242. /*------------*/
  243.  
  244. /** Flags Blending SRC **/
  245.  
  246. /* ZER : Zero                                            */
  247. /* ONE : One                                             */
  248. /* OC  : `Other' Color                                   */
  249. /* IOC : Inverse `Other' Color                           */
  250. /* SA  : Src Alpha                                       */
  251. /* ISA : Inverse SRC Alpha                               */
  252. /* DA  : DST Alpha                                       */
  253. /* IDA : Inverse DST Alpha                               */
  254.  
  255. /* Flag Blending Src */
  256.  
  257. #define NJD_FBS_SHIFT     11
  258. #define NJD_FBS_ZER      (0<<NJD_FBS_SHIFT)
  259. #define NJD_FBS_ONE      (1<<NJD_FBS_SHIFT)
  260. #define NJD_FBS_OC       (2<<NJD_FBS_SHIFT)
  261. #define NJD_FBS_IOC      (3<<NJD_FBS_SHIFT)
  262. #define NJD_FBS_SA       (4<<NJD_FBS_SHIFT)
  263. #define NJD_FBS_ISA      (5<<NJD_FBS_SHIFT)
  264. #define NJD_FBS_DA       (6<<NJD_FBS_SHIFT)
  265. #define NJD_FBS_IDA      (7<<NJD_FBS_SHIFT)
  266.  
  267. #define NJD_FBS_MASK     (0x7<<NJD_FBS_SHIFT)
  268.  
  269. /* Flag Blending Dst */
  270.  
  271. #define NJD_FBD_SHIFT     8
  272. #define NJD_FBD_ZER      (0<<NJD_FBD_SHIFT)
  273. #define NJD_FBD_ONE      (1<<NJD_FBD_SHIFT)
  274. #define NJD_FBD_OC       (2<<NJD_FBD_SHIFT)
  275. #define NJD_FBD_IOC      (3<<NJD_FBD_SHIFT)
  276. #define NJD_FBD_SA       (4<<NJD_FBD_SHIFT)
  277. #define NJD_FBD_ISA      (5<<NJD_FBD_SHIFT)
  278. #define NJD_FBD_DA       (6<<NJD_FBD_SHIFT)
  279. #define NJD_FBD_IDA      (7<<NJD_FBD_SHIFT)
  280.  
  281. #define NJD_FBD_MASK     (0x7<<NJD_FBD_SHIFT)
  282.  
  283. /** Flag 'D' Adjust **/
  284.  
  285. #define NJD_FDA_SHIFT     8
  286. #define NJD_FDA_025      (1<<NJD_FDA_SHIFT)      /* 0.25 */
  287. #define NJD_FDA_050      (2<<NJD_FDA_SHIFT)      /* 0.50 */
  288. #define NJD_FDA_075      (3<<NJD_FDA_SHIFT)      /* 0.75 */
  289. #define NJD_FDA_100      (4<<NJD_FDA_SHIFT)      /* 1.00 */
  290. #define NJD_FDA_125      (5<<NJD_FDA_SHIFT)      /* 1.25 */
  291. #define NJD_FDA_150      (6<<NJD_FDA_SHIFT)      /* 1.50 */
  292. #define NJD_FDA_175      (7<<NJD_FDA_SHIFT)      /* 1.75 */
  293. #define NJD_FDA_200      (8<<NJD_FDA_SHIFT)      /* 2.00 */
  294. #define NJD_FDA_225      (9<<NJD_FDA_SHIFT)      /* 2.25 */
  295. #define NJD_FDA_250      (10<<NJD_FDA_SHIFT)     /* 2.25 */
  296. #define NJD_FDA_275      (11<<NJD_FDA_SHIFT)     /* 2.25 */
  297. #define NJD_FDA_300      (12<<NJD_FDA_SHIFT)     /* 3.00 */
  298. #define NJD_FDA_325      (13<<NJD_FDA_SHIFT)     /* 3.25 */
  299. #define NJD_FDA_350      (14<<NJD_FDA_SHIFT)     /* 3.50 */
  300. #define NJD_FDA_375      (15<<NJD_FDA_SHIFT)     /* 3.75 */
  301.  
  302. #define NJD_FDA_MASK     (0xf<<NJD_FDA_SHIFT)
  303.  
  304. /** Flag EXPonent range : 0-16 **/
  305.  
  306. #define NJD_FEXP_SHIFT    8
  307. #define NJD_FEXP_00      (0<<NJD_FEXP_SHIFT)     /*  0.0 */
  308. #define NJD_FEXP_01      (1<<NJD_FEXP_SHIFT)     /*  1.0 */
  309. #define NJD_FEXP_02      (2<<NJD_FEXP_SHIFT)     /*  2.0 */
  310. #define NJD_FEXP_03      (3<<NJD_FEXP_SHIFT)     /*  3.0 */
  311. #define NJD_FEXP_04      (4<<NJD_FEXP_SHIFT)     /*  4.0 */
  312. #define NJD_FEXP_05      (5<<NJD_FEXP_SHIFT)     /*  5.0 */
  313. #define NJD_FEXP_06      (6<<NJD_FEXP_SHIFT)     /*  6.0 */
  314. #define NJD_FEXP_07      (7<<NJD_FEXP_SHIFT)     /*  7.0 */
  315. #define NJD_FEXP_08      (8<<NJD_FEXP_SHIFT)     /*  8.0 */
  316. #define NJD_FEXP_09      (9<<NJD_FEXP_SHIFT)     /*  9.0 */
  317. #define NJD_FEXP_10      (10<<NJD_FEXP_SHIFT)    /* 10.0 */
  318. #define NJD_FEXP_11      (11<<NJD_FEXP_SHIFT)    /* 11.0 */
  319. #define NJD_FEXP_12      (12<<NJD_FEXP_SHIFT)    /* 12.0 */
  320. #define NJD_FEXP_13      (13<<NJD_FEXP_SHIFT)    /* 13.0 */
  321. #define NJD_FEXP_14      (14<<NJD_FEXP_SHIFT)    /* 14.0 */
  322. #define NJD_FEXP_15      (15<<NJD_FEXP_SHIFT)    /* 15.0 */
  323. #define NJD_FEXP_16      (16<<NJD_FEXP_SHIFT)    /* 16.0 */
  324.  
  325. #define NJD_FEXP_MASK    (0x1f<<NJD_FEXP_SHIFT)
  326.  
  327.  
  328. /*--------------------*/
  329. /* Chunk Multi Lights */
  330. /*--------------------*/
  331.  
  332. #define NJD_CNK_EASY_MULTILIGHT_1           1
  333. #define NJD_CNK_EASY_MULTILIGHT_2           2
  334. #define NJD_CNK_EASY_MULTILIGHT_3           3
  335. #define NJD_CNK_EASY_MULTILIGHT_4           4
  336. #define NJD_CNK_EASY_MULTILIGHT_5           5
  337. #define NJD_CNK_EASY_MULTILIGHT_6           6
  338.  
  339. #define NJD_CNK_EASY_MULTILIGHT_ALL         0
  340.  
  341. #define NJD_CNK_SIMPLE_MULTILIGHT_1         1
  342. #define NJD_CNK_SIMPLE_MULTILIGHT_2         2
  343. #define NJD_CNK_SIMPLE_MULTILIGHT_3         3
  344. #define NJD_CNK_SIMPLE_MULTILIGHT_4         4
  345. #define NJD_CNK_SIMPLE_MULTILIGHT_5         5
  346. #define NJD_CNK_SIMPLE_MULTILIGHT_6         6
  347.  
  348. #define NJD_CNK_SIMPLE_MULTILIGHT_ALL       0
  349.  
  350.  
  351. /*------------*/
  352. /* Chunk Tiny */
  353. /*------------*/
  354. /** TexId **/
  355. /* Flag FLip <headbits> */
  356. #define NJD_FFL_U         (BIT_15)
  357. #define NJD_FFL_V         (BIT_14)
  358. /* Flag CLamp <headbits> */
  359. #define NJD_FCL_U         (BIT_13)
  360. #define NJD_FCL_V         (BIT_12)
  361.  
  362.   /* Look at Chunk Bits about 'D' adust */
  363.  
  364. /* Flag Filter Mode<texbits> */
  365. /* PS   : Point Sampled                   */
  366. /* BF   : Bilinear Filter                 */
  367. /* TF_A : Tri-liner Filter A              */
  368. /* TF_B : Tri-liner Filter B              */
  369. #define NJD_FFM_SHIFT      14
  370. #define NJD_FFM_PS        (0<<NJD_FFM_SHIFT)
  371. #define NJD_FFM_BF        (1<<NJD_FFM_SHIFT)
  372. #define NJD_FFM_TF_A      (2<<NJD_FFM_SHIFT)
  373. #define NJD_FFM_TF_B      (3<<NJD_FFM_SHIFT)
  374.  
  375. #define NJD_FFM_MASK      (0x3<<NJD_FFM_SHIFT)
  376.  
  377. /* Flag Super Sample<texbits> */
  378. #define NJD_FSS           (BIT_13)
  379.  
  380. #define NJD_TID_MASK      (~(NJD_FSS|NJD_FFM_MASK))
  381.  
  382. /*--------------*/
  383. /* Chunk Vertex */
  384. /*--------------*/
  385. /* Flag Weight status (NF only) */
  386. #define NJD_FW_SHIFT     8
  387. #define NJD_FW_START    (0<<NJD_FW_SHIFT)      /* Start  */
  388. #define NJD_FW_MIDDLE   (1<<NJD_FW_SHIFT)      /* Middle */
  389. #define NJD_FW_END      (2<<NJD_FW_SHIFT)      /* End    */
  390.  
  391. #define NJD_FW_MASK     (0x2<<NJD_FW_SHIFT)
  392.  
  393. /* Flag Vertex */
  394. #define NJD_FV_SHIFT     8
  395. #define NJD_FV_CONT     (0x80<<NJD_FV_SHIFT)   /* vertex calculation continue */
  396.  
  397. /*-------------*/
  398. /* Chunk Strip */
  399. /*-------------*/
  400. /** Flag STrip **/
  401. /* <Format>=[ChunkFlags(8)|ChunkHead(8)](16 bits size)   */
  402. /* IL  : Ignore light                                    */
  403. /* IS  : Ignore specular                                 */
  404. /* IA  : Ignore ambient                                  */
  405. /* UA  : Use alpha                                       */
  406. /* DB  : Double side                                     */
  407. /* FL  : Flat shading                                    */
  408. /* ENV : Environment                                     */
  409. #define NJD_FST_SHIFT      8
  410. #define NJD_FST_IL        (0x01<<NJD_FST_SHIFT)
  411. #define NJD_FST_IS        (0x02<<NJD_FST_SHIFT)
  412. #define NJD_FST_IA        (0x04<<NJD_FST_SHIFT)
  413. #define NJD_FST_UA        (0x08<<NJD_FST_SHIFT)
  414. #define NJD_FST_DB        (0x10<<NJD_FST_SHIFT)
  415. #define NJD_FST_FL        (0x20<<NJD_FST_SHIFT)
  416. #define NJD_FST_ENV       (0x40<<NJD_FST_SHIFT)
  417. #define NJD_FST_MASK      (0xFF<<NJD_FST_SHIFT)
  418.  
  419. /** UserFlag Offset Mask **/
  420. #define NJD_UFO_SHIFT      14
  421. #define NJD_UFO_0         (0<<NJD_UFO_SHIFT)
  422. #define NJD_UFO_1         (1<<NJD_UFO_SHIFT)
  423. #define NJD_UFO_2         (2<<NJD_UFO_SHIFT)
  424. #define NJD_UFO_3         (3<<NJD_UFO_SHIFT)
  425. #define NJD_UFO_MASK      (0x3<<NJD_UFO_SHIFT) /* 0 - 3 */
  426.  
  427.  
  428. /*------------------*/
  429. /*  Structure       */
  430. /*------------------*/
  431. /*
  432.  * NJS_CNK_MODEL
  433.  */
  434. typedef struct {
  435.     Sint32            *vlist;   /* vertex list                  */
  436.     Sint16            *plist;   /* polygon list                 */
  437.     NJS_POINT3        center;   /* model center                 */
  438.     Float                  r;   /* radius                       */
  439. } NJS_CNK_MODEL;
  440.  
  441. /*
  442.  * NJS_CNK_OBJECT
  443.  */
  444. typedef struct cnkobj {
  445.     Uint32          evalflags;  /* evalation flags              */
  446.     NJS_CNK_MODEL   *model;     /* model data pointer           */
  447.     Float           pos[3];     /* translation                  */
  448.     Angle           ang[3];     /* rotation                     */
  449.     Float           scl[3];     /* scaling                      */
  450.     struct cnkobj   *child;     /* child object                 */
  451.     struct cnkobj   *sibling;   /* sibling object               */
  452. } NJS_CNK_OBJECT;
  453.  
  454.  
  455.  
  456. /** Vertex Buffer    **/
  457. typedef    struct    {
  458.     Sint32    clip;             /* clip flag        00:04*/
  459.     Float    sx;                /* Screen X         04:08*/
  460.     Float    sy;                /* Screen Y         08:12*/
  461.     Float    ooz;               /* One over Z       12:16*/
  462.     NJS_POINT3    p;            /* 3D Point         16:28*/
  463.     Uint32    dmy1;             /* dummy            28:32*/
  464.     Sint32    vtype;            /* vetex type       32:36*/
  465.     NJS_VECTOR    v;            /* Normal vector    36:48*/
  466.     union  {                    /*                  48:56*/
  467.         Uint32    argb[2];      /* Packed Color     48:56*/
  468.         Float    inten[2];      /* intensity        48:56*/
  469.     } col;                      /* color            48:56*/
  470.     Sint32    NinjaFlag;        /* Ninja Flag       56:60*/
  471.     Sint32    UserFlag;         /* User Flag        60:64*/
  472. } NJS_CNK_VERTEX_BUF;
  473.  
  474. typedef    struct    {
  475.     Float    x;                /* Screen X                */
  476.     Float    y;                /* Screen Y                */
  477.     Float    ooz;              /* One over Z              */
  478.     Float    inten;            /* intensity               */
  479. } NJS_CNK_EASY_BUF;
  480.  
  481. typedef    struct    {
  482.     Float    z;                /* 3D Z                    */
  483.     Float    x;                /* Screen X                */
  484.     Float    y;                /* Screen Y                */
  485.     Float    ooz;              /* One over Z              */
  486.     Float    inten;            /* Intensity               */
  487.     Float    spec;             /* Specular                */
  488.     Float    nx;               /* Normal X                */
  489.     Float    ny;               /* Normal Y                */
  490. } NJS_CNK_SIMPLE_BUF;
  491.  
  492. typedef    struct    {
  493.     Float    z;                /* 3D Z                    */
  494.     Float    x;                /* Screen X                */
  495.     Float    y;                /* Screen Y                */
  496.     Float    ooz;              /* One over Z              */
  497.     Float    a;                /* Alpha                   */
  498.     Float    r;                /* Red                     */
  499.     Float    g;                /* Green                   */
  500.     Float    b;                /* Blue                    */
  501. } NJS_CNK_EASYMULTI_BUF;
  502.  
  503.  
  504. /*
  505.     Easy Model
  506. */
  507. void    njCnkSetEasyLight( Float x,Float y,Float z );
  508. void    njCnkSetEasyLightIntensity( Float inten, Float ambient );
  509. void    njCnkSetEasyLightColor( Float r, Float g, Float b );
  510. void    njCnkEasyDrawModel( NJS_CNK_MODEL *model );
  511. void    njCnkEasyDrawObject( NJS_CNK_OBJECT *model );
  512.  
  513. #define njCnkSetEasyLightC(x, y, z)     njCnkSetEasyLight((x), -1.f*(y), -1.f*(z))
  514.  
  515. /*
  516.     Easy Multi Light
  517. */
  518. void    njCnkEasyMultiDrawModel( NJS_CNK_MODEL *model );
  519. void    njCnkEasyMultiDrawObject( NJS_CNK_OBJECT *model );
  520.  
  521. void    njCnkSetEasyMultiLight(Int num);
  522. void    njCnkSetEasyMultiLightSwitch(Int light, Int flag);
  523. void    njCnkSetEasyMultiAmbient(Float ar, Float ag, Float ab);
  524. void    njCnkSetEasyMultiLightColor(Int light, Float lr, Float lg, Float lb);
  525. void    njCnkSetEasyMultiLightVector(Float vx, Float vy, Float vz);
  526. void    njCnkSetEasyMultiLightVectorEx(Int light, Float vx, Float vy, Float vz);
  527. void    njCnkSetEasyMultiLightPoint(Int light, Float px, Float py, Float pz);
  528. void    njCnkSetEasyMultiLightRange(Int light, Float nrange, Float frange);
  529. void    njCnkSetEasyMultiLightMatrices(void);
  530.  
  531.  
  532. /*
  533.     Simple Model
  534. */
  535. void    njCnkSetSimpleLight( Float x,Float y,Float z );
  536. void    njCnkSetSimpleLightIntensity( Float inten, Float ambient );
  537. void    njCnkSetSimpleLightColor( Float r, Float g, Float b );
  538. void    njCnkSimpleDrawModel( NJS_CNK_MODEL *model );
  539. void    njCnkSimpleDrawObject( NJS_CNK_OBJECT *object );
  540.  
  541. #define njCnkSetSimpleLightC(x, y, z)     njCnkSetSimpleLight((x), -1.f*(y), -1.f*(z))
  542.  
  543. /*
  544.     Simple Multi Light
  545. */
  546. void    njCnkSimpleMultiDrawModel( NJS_CNK_MODEL *model );
  547. void    njCnkSimpleMultiDrawObject( NJS_CNK_OBJECT *model );
  548.  
  549. void    njCnkSetSimpleMultiLight(Int num);
  550. void    njCnkSetSimpleMultiLightSwitch(Int light, Int flag);
  551. void    njCnkSetSimpleMultiAmbient(Float ar, Float ag, Float ab);
  552. void    njCnkSetSimpleMultiLightColor(Int light, Float lr, Float lg, Float lb);
  553. void    njCnkSetSimpleMultiLightVector(Float vx, Float vy, Float vz);
  554. void    njCnkSetSimpleMultiLightVectorEx(Int light, Float vx, Float vy, Float vz);
  555. void    njCnkSetSimpleMultiLightPoint(Int light, Float px, Float py, Float pz);
  556. void    njCnkSetSimpleMultiLightRange(Int light, Float nrange, Float frange);
  557. void    njCnkSetSimpleMultiLightMatrices(void);
  558.  
  559. /*
  560.     Normal Model
  561. */
  562. void    njCnkDrawModel( NJS_CNK_MODEL *model );
  563. void    njCnkDrawObject( NJS_CNK_OBJECT *object );
  564.  
  565. /*
  566.     Modifier
  567. */
  568. void    njCnkModDrawModel( NJS_CNK_MODEL *model );
  569. void    njCnkModDrawObject( NJS_CNK_OBJECT *object );
  570.  
  571. /*
  572.     Pre Light
  573. */
  574. void    njCnkPreLightModel( NJS_CNK_MODEL *model );
  575. void    njCnkPreLightObject( NJS_CNK_OBJECT *object );
  576.  
  577.  
  578. /*
  579.     Easy Model With 2Parameter
  580. */
  581. void    njCnkEasyDrawModel2p( NJS_CNK_MODEL *model , Float *color);
  582. void    njCnkEasyDrawObject2p( NJS_CNK_OBJECT *model , Float *color);
  583.  
  584. /*
  585.     Easy Multi Light With 2Parameter
  586. */
  587. void    njCnkEasyMultiDrawModel2p( NJS_CNK_MODEL *model , Float *color);
  588. void    njCnkEasyMultiDrawObject2p( NJS_CNK_OBJECT *model , Float *color);
  589.  
  590. /*
  591.     Simple Model With 2Parameter
  592. */
  593. void    njCnkSimpleDrawModel2p( NJS_CNK_MODEL *model , Float *color);
  594. void    njCnkSimpleDrawObject2p( NJS_CNK_OBJECT *object , Float *color);
  595.  
  596. /*
  597.     Simple Multi Light With 2Parameter
  598. */
  599. void    njCnkSimpleMultiDrawModel2p( NJS_CNK_MODEL *model , Float *color );
  600. void    njCnkSimpleMultiDrawObject2p( NJS_CNK_OBJECT *model , Float *color );
  601.  
  602. /*
  603.     Blending mode
  604. */
  605. void njSetCnkBlendMode(Uint32 attr);
  606.  
  607. /*
  608.     Environment mapping uv scroll
  609. */
  610. void njCnkSetUvScroll( Float u, Float v);
  611.  
  612. #endif /* _NINJA_CNK_H_ */
  613.  
  614. /*
  615.  * End Of File
  616.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement