GS.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:16k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  * Special Notes: 
  21.  *
  22.  * Register definitions and most of the enums originate from sps2dev-0.4.0
  23.  * Copyright (C) 2002 Terratron Technologies Inc.  All Rights Reserved.
  24.  *
  25.  */
  26. #pragma once
  27. // 
  28. #pragma pack(push, 1)
  29. //
  30. // sps2registers.h
  31. //
  32. enum GS_REG
  33. {
  34. GS_PMODE = 0x12000000,
  35. GS_SMODE1 = 0x12000010,
  36. GS_SMODE2 = 0x12000020,
  37. GS_SRFSH = 0x12000030,
  38. GS_SYNCH1 = 0x12000040,
  39. GS_SYNCH2 = 0x12000050,
  40. GS_SYNCV = 0x12000060,
  41. GS_DISPFB1 = 0x12000070,
  42. GS_DISPLAY1 = 0x12000080,
  43. GS_DISPFB2 = 0x12000090,
  44. GS_DISPLAY2 = 0x120000a0,
  45. GS_EXTBUF = 0x120000b0,
  46. GS_EXTDATA = 0x120000c0,
  47. GS_EXTWRITE = 0x120000d0,
  48. GS_BGCOLOR = 0x120000e0,
  49. GS_UNKNOWN = 0x12000400,
  50. GS_CSR = 0x12001000,
  51. GS_IMR = 0x12001010,
  52. GS_BUSDIR = 0x12001040,
  53. GS_SIGLBLID = 0x12001080
  54. };
  55. enum GS_PRIM
  56. {
  57. GS_POINTLIST = 0,
  58. GS_LINELIST = 1,
  59. GS_LINESTRIP = 2,
  60. GS_TRIANGLELIST = 3,
  61. GS_TRIANGLESTRIP = 4,
  62. GS_TRIANGLEFAN = 5,
  63. GS_SPRITE = 6,
  64. GS_INVALID = 7,
  65. };
  66. enum GIF_REG
  67. {
  68. GIF_REG_PRIM = 0x00,
  69. GIF_REG_RGBA = 0x01,
  70. GIF_REG_STQ = 0x02,
  71. GIF_REG_UV = 0x03,
  72. GIF_REG_XYZF2 = 0x04,
  73. GIF_REG_XYZ2 = 0x05,
  74. GIF_REG_TEX0_1 = 0x06,
  75. GIF_REG_TEX0_2 = 0x07,
  76. GIF_REG_CLAMP_1 = 0x08,
  77. GIF_REG_CLAMP_2 = 0x09,
  78. GIF_REG_FOG = 0x0a,
  79. GIF_REG_XYZF3 = 0x0c,
  80. GIF_REG_XYZ3 = 0x0d,
  81. GIF_REG_A_D = 0x0e,
  82. GIF_REG_NOP = 0x0f,
  83. };
  84. enum GIF_A_D_REG
  85. {
  86. GIF_A_D_REG_PRIM = 0x00,
  87. GIF_A_D_REG_RGBAQ = 0x01,
  88. GIF_A_D_REG_ST = 0x02,
  89. GIF_A_D_REG_UV = 0x03,
  90. GIF_A_D_REG_XYZF2 = 0x04,
  91. GIF_A_D_REG_XYZ2 = 0x05,
  92. GIF_A_D_REG_TEX0_1 = 0x06,
  93. GIF_A_D_REG_TEX0_2 = 0x07,
  94. GIF_A_D_REG_CLAMP_1 = 0x08,
  95. GIF_A_D_REG_CLAMP_2 = 0x09,
  96. GIF_A_D_REG_FOG = 0x0a,
  97. GIF_A_D_REG_XYZF3 = 0x0c,
  98. GIF_A_D_REG_XYZ3 = 0x0d,
  99. GIF_A_D_REG_NOP = 0x0f,
  100. GIF_A_D_REG_TEX1_1 = 0x14,
  101. GIF_A_D_REG_TEX1_2 = 0x15,
  102. GIF_A_D_REG_TEX2_1 = 0x16,
  103. GIF_A_D_REG_TEX2_2 = 0x17,
  104. GIF_A_D_REG_XYOFFSET_1 = 0x18,
  105. GIF_A_D_REG_XYOFFSET_2 = 0x19,
  106. GIF_A_D_REG_PRMODECONT = 0x1a,
  107. GIF_A_D_REG_PRMODE = 0x1b,
  108. GIF_A_D_REG_TEXCLUT = 0x1c,
  109. GIF_A_D_REG_SCANMSK = 0x22,
  110. GIF_A_D_REG_MIPTBP1_1 = 0x34,
  111. GIF_A_D_REG_MIPTBP1_2 = 0x35,
  112. GIF_A_D_REG_MIPTBP2_1 = 0x36,
  113. GIF_A_D_REG_MIPTBP2_2 = 0x37,
  114. GIF_A_D_REG_TEXA = 0x3b,
  115. GIF_A_D_REG_FOGCOL = 0x3d,
  116. GIF_A_D_REG_TEXFLUSH = 0x3f,
  117. GIF_A_D_REG_SCISSOR_1 = 0x40,
  118. GIF_A_D_REG_SCISSOR_2 = 0x41,
  119. GIF_A_D_REG_ALPHA_1 = 0x42,
  120. GIF_A_D_REG_ALPHA_2 = 0x43,
  121. GIF_A_D_REG_DIMX = 0x44,
  122. GIF_A_D_REG_DTHE = 0x45,
  123. GIF_A_D_REG_COLCLAMP = 0x46,
  124. GIF_A_D_REG_TEST_1 = 0x47,
  125. GIF_A_D_REG_TEST_2 = 0x48,
  126. GIF_A_D_REG_PABE = 0x49,
  127. GIF_A_D_REG_FBA_1 = 0x4a,
  128. GIF_A_D_REG_FBA_2 = 0x4b,
  129. GIF_A_D_REG_FRAME_1 = 0x4c,
  130. GIF_A_D_REG_FRAME_2 = 0x4d,
  131. GIF_A_D_REG_ZBUF_1 = 0x4e,
  132. GIF_A_D_REG_ZBUF_2 = 0x4f,
  133. GIF_A_D_REG_BITBLTBUF = 0x50,
  134. GIF_A_D_REG_TRXPOS = 0x51,
  135. GIF_A_D_REG_TRXREG = 0x52,
  136. GIF_A_D_REG_TRXDIR = 0x53,
  137. GIF_A_D_REG_HWREG = 0x54,
  138. GIF_A_D_REG_SIGNAL = 0x60,
  139. GIF_A_D_REG_FINISH = 0x61,
  140. GIF_A_D_REG_LABEL = 0x62,
  141. };
  142. enum GIF_FLG
  143. {
  144. GIF_FLG_PACKED = 0,
  145. GIF_FLG_REGLIST = 1,
  146. GIF_FLG_IMAGE = 2,
  147. GIF_FLG_IMAGE2 = 3
  148. };
  149. enum PSM
  150. {
  151. PSM_PSMCT32 = 0,
  152. PSM_PSMCT24 = 1,
  153. PSM_PSMCT16 = 2,
  154. PSM_PSMCT16S = 10,
  155. PSM_PSMT8 = 19,
  156. PSM_PSMT4 = 20,
  157. PSM_PSMT8H = 27,
  158. PSM_PSMT4HL = 36,
  159. PSM_PSMT4HH = 44,
  160. PSM_PSMZ32 = 48,
  161. PSM_PSMZ24 = 49,
  162. PSM_PSMZ16 = 50,
  163. PSM_PSMZ16S = 58,
  164. };
  165. //
  166. // sps2regstructs.h
  167. //
  168. #define REG64(name) 
  169. union name
  170. {
  171. UINT64 i64;
  172. UINT32 ai32[2];
  173. struct {
  174. #define REG128(name)
  175. union name
  176. {
  177. UINT64 ai64[2];
  178. UINT32 ai32[4];
  179. struct {
  180. #define REG64_(prefix, name) REG64(prefix##name)
  181. #define REG128_(prefix, name) REG128(prefix##name)
  182. #define REG_END }; };
  183. #define REG_END2 };
  184. #define REG64_SET(name) 
  185. union name
  186. {
  187. UINT64 i64;
  188. UINT32 ai32[2];
  189. #define REG128_SET(name)
  190. union name
  191. {
  192. UINT64 ai64[2];
  193. UINT32 ai32[4];
  194. #define REG_SET_END };
  195. REG64_(GSReg, BGCOLOR)
  196. UINT32 R:8;
  197. UINT32 G:8;
  198. UINT32 B:8;
  199. UINT32 _PAD1:8;
  200. UINT32 _PAD2:32;
  201. REG_END
  202. REG64_(GSReg, BUSDIR)
  203. UINT32 DIR:1;
  204. UINT32 _PAD1:31;
  205. UINT32 _PAD2:32;
  206. REG_END
  207. REG64_(GSReg, CSR)
  208. UINT32 SIGNAL:1;
  209. UINT32 FINISH:1;
  210. UINT32 HSINT:1;
  211. UINT32 VSINT:1;
  212. UINT32 EDWINT:1;
  213. UINT32 ZERO1:1;
  214. UINT32 ZERO2:1;
  215. UINT32 _PAD1:1;
  216. UINT32 FLUSH:1;
  217. UINT32 RESET:1;
  218. UINT32 _PAD2:2;
  219. UINT32 NFIELD:1;
  220. UINT32 FIELD:1;
  221. UINT32 FIFO:2;
  222. UINT32 REV:8;
  223. UINT32 ID:8;
  224. UINT32 _PAD3:32;
  225. REG_END
  226. REG64_(GSReg, DISPFB) // (-1/2)
  227. UINT32 FBP:9;
  228. UINT32 FBW:6;
  229. UINT32 PSM:5;
  230. UINT32 _PAD:12;
  231. UINT32 DBX:11;
  232. UINT32 DBY:11;
  233. UINT32 _PAD2:10;
  234. REG_END
  235. REG64_(GSReg, DISPLAY) // (-1/2)
  236. UINT32 DX:12;
  237. UINT32 DY:11;
  238. UINT32 MAGH:4;
  239. UINT32 MAGV:2;
  240. UINT32 _PAD:3;
  241. UINT32 DW:12;
  242. UINT32 DH:11;
  243. UINT32 _PAD2:9;
  244. REG_END
  245. REG64_(GSReg, EXTBUF)
  246. UINT32 EXBP:14;
  247. UINT32 EXBW:6;
  248. UINT32 FBIN:2;
  249. UINT32 WFFMD:1;
  250. UINT32 EMODA:2;
  251. UINT32 EMODC:2;
  252. UINT32 _PAD1:5;
  253. UINT32 WDX:11;
  254. UINT32 WDY:11;
  255. UINT32 _PAD2:10;
  256. REG_END
  257. REG64_(GSReg, EXTDATA)
  258. UINT32 SX:12;
  259. UINT32 SY:11;
  260. UINT32 SMPH:4;
  261. UINT32 SMPV:2;
  262. UINT32 _PAD1:3;
  263. UINT32 WW:12;
  264. UINT32 WH:11;
  265. UINT32 _PAD2:9;
  266. REG_END
  267. REG64_(GSReg, EXTWRITE)
  268. UINT32 WRITE:1;
  269. UINT32 _PAD1:31;
  270. UINT32 _PAD2:32;
  271. REG_END
  272. REG64_(GSReg, IMR)
  273. UINT32 _PAD1:8;
  274. UINT32 SIGMSK:1;
  275. UINT32 FINISHMSK:1;
  276. UINT32 HSMSK:1;
  277. UINT32 VSMSK:1;
  278. UINT32 EDWMSK:1;
  279. UINT32 _PAD2:19;
  280. UINT32 _PAD3:32;
  281. REG_END
  282. REG64_(GSReg, PMODE)
  283. UINT32 EN1:1;
  284. UINT32 EN2:1;
  285. UINT32 CRTMD:3;
  286. UINT32 MMOD:1;
  287. UINT32 AMOD:1;
  288. UINT32 SLBG:1;
  289. UINT32 ALP:8;
  290. UINT32 _PAD:16;
  291. UINT32 _PAD1:32;
  292. REG_END
  293. REG64_(GSReg, SIGLBLID)
  294. UINT32 SIGID:32;
  295. UINT32 LBLID:32;
  296. REG_END
  297. REG64_(GSReg, SMODE1)
  298. UINT32 RC:3;
  299. UINT32 LC:7;
  300. UINT32 T1248:2;
  301. UINT32 SLCK:1;
  302. UINT32 CMOD:2;
  303. UINT32 EX:1;
  304. UINT32 PRST:1;
  305. UINT32 SINT:1;
  306. UINT32 XPCK:1;
  307. UINT32 PCK2:2;
  308. UINT32 SPML:4;
  309. UINT32 GCONT:1;
  310. UINT32 PHS:1;
  311. UINT32 PVS:1;
  312. UINT32 PEHS:1;
  313. UINT32 PEVS:1;
  314. UINT32 CLKSEL:2;
  315. UINT32 NVCK:1;
  316. UINT32 SLCK2:1;
  317. UINT32 VCKSEL:2;
  318. UINT32 VHP:1;
  319. UINT32 _PAD1:27;
  320. REG_END
  321. REG64_(GSReg, SMODE2)
  322. UINT32 INT:1;
  323. UINT32 FFMD:1;
  324. UINT32 DPMS:2;
  325. UINT32 _PAD2:28;
  326. UINT32 _PAD3:32;
  327. REG_END
  328. REG64_SET(GSReg)
  329. GSRegBGCOLOR BGCOLOR;
  330. GSRegBUSDIR BUSDIR;
  331. GSRegCSR CSR;
  332. GSRegDISPFB DISPFB;
  333. GSRegDISPLAY DISPLAY;
  334. GSRegEXTBUF EXTBUF;
  335. GSRegEXTDATA EXTDATA;
  336. GSRegEXTWRITE EXTWRITE;
  337. GSRegIMR IMR;
  338. GSRegPMODE PMODE;
  339. GSRegSIGLBLID SIGLBLID;
  340. GSRegSMODE1 SMODE1; 
  341. GSRegSMODE2 SMODE2; 
  342. REG_SET_END
  343. //
  344. // sps2tags.h
  345. //
  346. #define SET_GIF_REG(gifTag, iRegNo, uiValue) 
  347. {((GIFTag*)&gifTag)->ai64[1] |= (((uiValue) & 0xf) << ((iRegNo) << 2));}
  348. #ifdef _M_AMD64
  349. #define GET_GIF_REG(tag, reg) 
  350. (((tag).ai64[1] >> ((reg) << 2)) & 0xf)
  351. #else
  352. #define GET_GIF_REG(tag, reg) 
  353. (((tag).ai32[2 + ((reg) >> 3)] >> (((reg) & 7) << 2)) & 0xf)
  354. #endif
  355. //
  356. // GIFTag
  357. REG128(GIFTag)
  358. UINT32 NLOOP:15;
  359. UINT32 EOP:1;
  360. UINT32 _PAD1:16;
  361. UINT32 _PAD2:14;
  362. UINT32 PRE:1;
  363. UINT32 PRIM:11;
  364. UINT32 FLG:2; // enum GIF_FLG
  365. UINT32 NREG:4;
  366. UINT64 REGS:64;
  367. REG_END
  368. // GIFReg
  369. REG64_(GIFReg, ALPHA)
  370. UINT32 A:2;
  371. UINT32 B:2;
  372. UINT32 C:2;
  373. UINT32 D:2;
  374. UINT32 _PAD1:24;
  375. UINT32 FIX:8;
  376. UINT32 _PAD2:24;
  377. REG_END
  378. REG64_(GIFReg, BITBLTBUF)
  379. UINT32 SBP:14;
  380. UINT32 _PAD1:2;
  381. UINT32 SBW:6;
  382. UINT32 _PAD2:2;
  383. UINT32 SPSM:6;
  384. UINT32 _PAD3:2;
  385. UINT32 DBP:14;
  386. UINT32 _PAD4:2;
  387. UINT32 DBW:6;
  388. UINT32 _PAD5:2;
  389. UINT32 DPSM:6;
  390. UINT32 _PAD6:2;
  391. REG_END
  392. REG64_(GIFReg, CLAMP)
  393. UINT64 WMS:2;
  394. UINT64 WMT:2;
  395. UINT64 MINU:10;
  396. UINT64 MAXU:10;
  397. UINT64 MINV:10;
  398. UINT64 MAXV:10;
  399. UINT64 _PAD:20;
  400. REG_END
  401. REG64_(GIFReg, COLCLAMP)
  402. UINT32 CLAMP:1;
  403. UINT32 _PAD1:31;
  404. UINT32 _PAD2:32;
  405. REG_END
  406. REG64_(GIFReg, DIMX)
  407. UINT32 DM00:3;
  408. UINT32 _PAD00:1;
  409. UINT32 DM01:3;
  410. UINT32 _PAD01:1;
  411. UINT32 DM02:3;
  412. UINT32 _PAD02:1;
  413. UINT32 DM03:3;
  414. UINT32 _PAD03:1;
  415. UINT32 DM10:3;
  416. UINT32 _PAD10:1;
  417. UINT32 DM11:3;
  418. UINT32 _PAD11:1;
  419. UINT32 DM12:3;
  420. UINT32 _PAD12:1;
  421. UINT32 DM13:3;
  422. UINT32 _PAD13:1;
  423. UINT32 DM20:3;
  424. UINT32 _PAD20:1;
  425. UINT32 DM21:3;
  426. UINT32 _PAD21:1;
  427. UINT32 DM22:3;
  428. UINT32 _PAD22:1;
  429. UINT32 DM23:3;
  430. UINT32 _PAD23:1;
  431. UINT32 DM30:3;
  432. UINT32 _PAD30:1;
  433. UINT32 DM31:3;
  434. UINT32 _PAD31:1;
  435. UINT32 DM32:3;
  436. UINT32 _PAD32:1;
  437. UINT32 DM33:3;
  438. UINT32 _PAD33:1;
  439. REG_END
  440. REG64_(GIFReg, DTHE)
  441. UINT32 DTHE:1;
  442. UINT32 _PAD1:31;
  443. UINT32 _PAD2:32;
  444. REG_END
  445. REG64_(GIFReg, FBA)
  446. UINT32 FBA:1;
  447. UINT32 _PAD1:31;
  448. UINT32 _PAD2:32;
  449. REG_END
  450. REG64_(GIFReg, FINISH)
  451. UINT32 _PAD1:32;
  452. UINT32 _PAD2:32;
  453. REG_END
  454. REG64_(GIFReg, FOG)
  455. UINT32 _PAD1:32;
  456. UINT32 _PAD2:24;
  457. UINT32 F:8;
  458. REG_END
  459. REG64_(GIFReg, FOGCOL)
  460. UINT32 FCR:8;
  461. UINT32 FCG:8;
  462. UINT32 FCB:8;
  463. UINT32 _PAD1:8;
  464. UINT32 _PAD2:32;
  465. REG_END
  466. REG64_(GIFReg, FRAME)
  467. UINT32 FBP:9;
  468. UINT32 _PAD1:7;
  469. UINT32 FBW:6;
  470. UINT32 _PAD2:2;
  471. UINT32 PSM:6;
  472. UINT32 _PAD3:2;
  473. UINT32 FBMSK:32;
  474. REG_END2
  475. UINT32 Block() {return FBP<<5;}
  476. REG_END2
  477. REG64_(GIFReg, HWREG)
  478. UINT32 DATA_LOWER:32;
  479. UINT32 DATA_UPPER:32;
  480. REG_END
  481. REG64_(GIFReg, LABEL)
  482. UINT32 ID:32;
  483. UINT32 IDMSK:32;
  484. REG_END
  485. REG64_(GIFReg, MIPTBP1)
  486. UINT64 TBP1:14;
  487. UINT64 TBW1:6;
  488. UINT64 TBP2:14;
  489. UINT64 TBW2:6;
  490. UINT64 TBP3:14;
  491. UINT64 TBW3:6;
  492. UINT64 _PAD:4;
  493. REG_END
  494. REG64_(GIFReg, MIPTBP2)
  495. UINT64 TBP4:14;
  496. UINT64 TBW4:6;
  497. UINT64 TBP5:14;
  498. UINT64 TBW5:6;
  499. UINT64 TBP6:14;
  500. UINT64 TBW6:6;
  501. UINT64 _PAD:4;
  502. REG_END
  503. REG64_(GIFReg, NOP)
  504. UINT32 _PAD1:32;
  505. UINT32 _PAD2:32;
  506. REG_END
  507. REG64_(GIFReg, PABE)
  508. UINT32 PABE:1;
  509. UINT32 _PAD1:31;
  510. UINT32 _PAD2:32;
  511. REG_END
  512. REG64_(GIFReg, PRIM)
  513. UINT32 PRIM:3;
  514. UINT32 IIP:1;
  515. UINT32 TME:1;
  516. UINT32 FGE:1;
  517. UINT32 ABE:1;
  518. UINT32 AA1:1;
  519. UINT32 FST:1;
  520. UINT32 CTXT:1;
  521. UINT32 FIX:1;
  522. UINT32 _PAD1:21;
  523. UINT32 _PAD2:32;
  524. REG_END
  525. REG64_(GIFReg, PRMODE)
  526. UINT32 _PRIM:3;
  527. UINT32 IIP:1;
  528. UINT32 TME:1;
  529. UINT32 FGE:1;
  530. UINT32 ABE:1;
  531. UINT32 AA1:1;
  532. UINT32 FST:1;
  533. UINT32 CTXT:1;
  534. UINT32 FIX:1;
  535. UINT32 _PAD2:21;
  536. UINT32 _PAD3:32;
  537. REG_END
  538. REG64_(GIFReg, PRMODECONT)
  539. UINT32 AC:1;
  540. UINT32 _PAD1:31;
  541. UINT32 _PAD2:32;
  542. REG_END
  543. REG64_(GIFReg, RGBAQ)
  544. UINT32 R:8;
  545. UINT32 G:8;
  546. UINT32 B:8;
  547. UINT32 A:8;
  548. float Q;
  549. REG_END
  550. REG64_(GIFReg, SCANMSK)
  551. UINT32 MSK:2;
  552. UINT32 _PAD1:30;
  553. UINT32 _PAD2:32;
  554. REG_END
  555. REG64_(GIFReg, SCISSOR)
  556. UINT32 SCAX0:11;
  557. UINT32 _PAD1:5;
  558. UINT32 SCAX1:11;
  559. UINT32 _PAD2:5;
  560. UINT32 SCAY0:11;
  561. UINT32 _PAD3:5;
  562. UINT32 SCAY1:11;
  563. UINT32 _PAD4:5;
  564. REG_END
  565. REG64_(GIFReg, SIGNAL)
  566. UINT32 ID:32;
  567. UINT32 IDMSK:32;
  568. REG_END
  569. REG64_(GIFReg, ST)
  570. float S;
  571. float T;
  572. REG_END
  573. REG64_(GIFReg, TEST)
  574. UINT32 ATE:1;
  575. UINT32 ATST:3;
  576. UINT32 AREF:8;
  577. UINT32 AFAIL:2;
  578. UINT32 DATE:1;
  579. UINT32 DATM:1;
  580. UINT32 ZTE:1;
  581. UINT32 ZTST:2;
  582. UINT32 _PAD1:13;
  583. UINT32 _PAD2:32;
  584. REG_END
  585. REG64_(GIFReg, TEX0)
  586. UINT64 TBP0:14;
  587. UINT64 TBW:6;
  588. UINT64 PSM:6;
  589. UINT64 TW:4;
  590. UINT64 TH:4;
  591. UINT64 TCC:1;
  592. UINT64 TFX:2;
  593. UINT64 CBP:14;
  594. UINT64 CPSM:4;
  595. UINT64 CSM:1;
  596. UINT64 CSA:5;
  597. UINT64 CLD:3;
  598. REG_END
  599. REG64_(GIFReg, TEX1)
  600. UINT32 LCM:1;
  601. UINT32 _PAD1:1;
  602. UINT32 MXL:3;
  603. UINT32 MMAG:1;
  604. UINT32 MMIN:3;
  605. UINT32 MTBA:1;
  606. UINT32 _PAD2:9;
  607. UINT32 L:2;
  608. UINT32 _PAD3:11;
  609. UINT32 K:12;
  610. UINT32 _PAD4:20;
  611. REG_END
  612. REG64_(GIFReg, TEX2)
  613. UINT32 _PAD1:20;
  614. UINT32 PSM:6;
  615. UINT32 _PAD2:6;
  616. UINT32 _PAD3:5;
  617. UINT32 CBP:14;
  618. UINT32 CPSM:4;
  619. UINT32 CSM:1;
  620. UINT32 CSA:5;
  621. UINT32 CLD:3;
  622. REG_END
  623. REG64_(GIFReg, TEXA)
  624. UINT32 TA0:8;
  625. UINT32 _PAD1:7;
  626. UINT32 AEM:1;
  627. UINT32 _PAD2:16;
  628. UINT32 TA1:8;
  629. UINT32 _PAD3:24;
  630. REG_END
  631. REG64_(GIFReg, TEXCLUT)
  632. UINT32 CBW:6;
  633. UINT32 COU:6;
  634. UINT32 COV:10;
  635. UINT32 _PAD1:10;
  636. UINT32 _PAD2:32;
  637. REG_END
  638. REG64_(GIFReg, TEXFLUSH)
  639. UINT32 _PAD1:32;
  640. UINT32 _PAD2:32;
  641. REG_END
  642. REG64_(GIFReg, TRXDIR)
  643. UINT32 XDIR:2;
  644. UINT32 _PAD1:30;
  645. UINT32 _PAD2:32;
  646. REG_END
  647. REG64_(GIFReg, TRXPOS)
  648. UINT32 SSAX:11;
  649. UINT32 _PAD1:5;
  650. UINT32 SSAY:11;
  651. UINT32 _PAD2:5;
  652. UINT32 DSAX:11;
  653. UINT32 _PAD3:5;
  654. UINT32 DSAY:11;
  655. UINT32 DIR:2;
  656. UINT32 _PAD4:3;
  657. REG_END
  658. REG64_(GIFReg, TRXREG)
  659. UINT32 RRW:12;
  660. UINT32 _PAD1:20;
  661. UINT32 RRH:12;
  662. UINT32 _PAD2:20;
  663. REG_END
  664. REG64_(GIFReg, UV)
  665. UINT32 U:14;
  666. UINT32 _PAD1:2;
  667. UINT32 V:14;
  668. UINT32 _PAD2:2;
  669. UINT32 _PAD3:32;
  670. REG_END
  671. REG64_(GIFReg, XYOFFSET)
  672. UINT32 OFX:16;
  673. UINT32 _PAD1:16;
  674. UINT32 OFY:16;
  675. UINT32 _PAD2:16;
  676. REG_END
  677. REG64_(GIFReg, XYZ)
  678. UINT32 X:16;
  679. UINT32 Y:16;
  680. UINT32 Z:32;
  681. REG_END
  682. REG64_(GIFReg, XYZF)
  683. UINT32 X:16;
  684. UINT32 Y:16;
  685. UINT32 Z:24;
  686. UINT32 F:8;
  687. REG_END
  688. REG64_(GIFReg, ZBUF)
  689. UINT32 ZBP:9;
  690. UINT32 _PAD1:15;
  691. // UINT32 PSM:4;
  692. // UINT32 _PAD2:4;
  693. UINT32 PSM:6;
  694. UINT32 _PAD2:2;
  695. UINT32 ZMSK:1;
  696. UINT32 _PAD3:31;
  697. REG_END
  698. REG64_SET(GIFReg)
  699. GIFRegALPHA ALPHA;
  700. GIFRegBITBLTBUF BITBLTBUF;
  701. GIFRegCLAMP CLAMP;
  702. GIFRegCOLCLAMP COLCLAMP;
  703. GIFRegDIMX DIMX;
  704. GIFRegDTHE DTHE;
  705. GIFRegFBA FBA;
  706. GIFRegFINISH FINISH;
  707. GIFRegFOG FOG;
  708. GIFRegFOGCOL FOGCOL;
  709. GIFRegFRAME FRAME;
  710. GIFRegHWREG HWREG;
  711. GIFRegLABEL LABEL;
  712. GIFRegMIPTBP1 MIPTBP1;
  713. GIFRegMIPTBP2 MIPTBP2;
  714. GIFRegNOP NOP;
  715. GIFRegPABE PABE;
  716. GIFRegPRIM PRIM;
  717. GIFRegPRMODE PRMODE;
  718. GIFRegPRMODECONT PRMODECONT;
  719. GIFRegRGBAQ RGBAQ;
  720. GIFRegSCANMSK SCANMSK;
  721. GIFRegSCISSOR SCISSOR;
  722. GIFRegSIGNAL SIGNAL;
  723. GIFRegST ST;
  724. GIFRegTEST TEST;
  725. GIFRegTEX0 TEX0;
  726. GIFRegTEX1 TEX1;
  727. GIFRegTEX2 TEX2;
  728. GIFRegTEXA TEXA;
  729. GIFRegTEXCLUT TEXCLUT;
  730. GIFRegTEXFLUSH TEXFLUSH;
  731. GIFRegTRXDIR TRXDIR;
  732. GIFRegTRXPOS TRXPOS;
  733. GIFRegTRXREG TRXREG;
  734. GIFRegUV UV;
  735. GIFRegXYOFFSET XYOFFSET;
  736. GIFRegXYZ XYZ;
  737. GIFRegXYZF XYZF;
  738. GIFRegZBUF ZBUF;
  739. REG_SET_END
  740. // GIFPacked
  741. REG128_(GIFPacked, PRIM)
  742. UINT32 PRIM:11;
  743. UINT32 _PAD1:21;
  744. UINT32 _PAD2:32;
  745. UINT32 _PAD3:32;
  746. UINT32 _PAD4:32;
  747. REG_END
  748. REG128_(GIFPacked, RGBA)
  749. UINT32 R:8;
  750. UINT32 _PAD1:24;
  751. UINT32 G:8;
  752. UINT32 _PAD2:24;
  753. UINT32 B:8;
  754. UINT32 _PAD3:24;
  755. UINT32 A:8;
  756. UINT32 _PAD4:24;
  757. REG_END
  758. REG128_(GIFPacked, STQ)
  759. float S;
  760. float T;
  761. float Q;
  762. UINT32 _PAD1:32;
  763. REG_END
  764. REG128_(GIFPacked, UV)
  765. UINT32 U:14;
  766. UINT32 _PAD1:18;
  767. UINT32 V:14;
  768. UINT32 _PAD2:18;
  769. UINT32 _PAD3:32;
  770. UINT32 _PAD4:32;
  771. REG_END
  772. REG128_(GIFPacked, XYZF2)
  773. UINT32 X:16;
  774. UINT32 _PAD1:16;
  775. UINT32 Y:16;
  776. UINT32 _PAD2:16;
  777. UINT32 _PAD3:4;
  778. UINT32 Z:24;
  779. UINT32 _PAD4:4;
  780. UINT32 _PAD5:4;
  781. UINT32 F:8;
  782. UINT32 _PAD6:3;
  783. UINT32 ADC:1;
  784. UINT32 _PAD7:16;
  785. REG_END
  786. REG128_(GIFPacked, XYZ2)
  787. UINT32 X:16;
  788. UINT32 _PAD1:16;
  789. UINT32 Y:16;
  790. UINT32 _PAD2:16;
  791. UINT32 Z:32;
  792. UINT32 _PAD3:15;
  793. UINT32 ADC:1;
  794. UINT32 _PAD4:16;
  795. REG_END
  796. REG128_(GIFPacked, FOG)
  797. UINT32 _PAD1:32;
  798. UINT32 _PAD2:32;
  799. UINT32 _PAD3:32;
  800. UINT32 _PAD4:4;
  801. UINT32 F:8;
  802. UINT32 _PAD5:20;
  803. REG_END
  804. REG128_(GIFPacked, A_D)
  805. UINT64 DATA:64;
  806. UINT32 ADDR:8; // enum GIF_A_D_REG
  807. UINT32 _PAD1:24;
  808. UINT32 _PAD2:32;
  809. REG_END
  810. REG128_(GIFPacked, NOP)
  811. UINT32 _PAD1:32;
  812. UINT32 _PAD2:32;
  813. UINT32 _PAD3:32;
  814. UINT32 _PAD4:32;
  815. REG_END
  816. REG128_SET(GIFPackedReg)
  817. GIFReg r;
  818. GIFPackedPRIM PRIM;
  819. GIFPackedRGBA RGBA;
  820. GIFPackedSTQ STQ;
  821. GIFPackedUV UV;
  822. GIFPackedXYZF2 XYZF2;
  823. GIFPackedXYZ2 XYZ2;
  824. GIFPackedFOG FOG;
  825. GIFPackedA_D A_D;
  826. GIFPackedNOP NOP;
  827. REG_SET_END
  828. #pragma pack(pop)
  829. enum {KEYPRESS=1, KEYRELEASE=2};
  830. struct keyEvent {UINT32 key, event;};
  831. enum {FREEZE_LOAD=0, FREEZE_SAVE=1, FREEZE_SIZE=2};
  832. struct freezeData {int size; BYTE* data;};
  833. enum stateType {ST_WRITE, ST_TRANSFER, ST_VSYNC};