1 |
/* PCSX2 - PS2 Emulator for PCs |
2 |
* Copyright (C) 2002-2010 PCSX2 Dev Team |
3 |
* |
4 |
* PCSX2 is free software: you can redistribute it and/or modify it under the terms |
5 |
* of the GNU Lesser General Public License as published by the Free Software Found- |
6 |
* ation, either version 3 of the License, or (at your option) any later version. |
7 |
* |
8 |
* PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
9 |
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
10 |
* PURPOSE. See the GNU General Public License for more details. |
11 |
* |
12 |
* You should have received a copy of the GNU General Public License along with PCSX2. |
13 |
* If not, see <http://www.gnu.org/licenses/>. |
14 |
*/ |
15 |
|
16 |
#pragma once |
17 |
|
18 |
struct vifStruct; |
19 |
|
20 |
typedef void (__fastcall *UNPACKFUNCTYPE)(void* dest, const void* src); |
21 |
|
22 |
#define create_unpack_u_type(bits) typedef void (__fastcall *UNPACKFUNCTYPE_u##bits)(u32* dest, const u##bits* src); |
23 |
#define create_unpack_s_type(bits) typedef void (__fastcall *UNPACKFUNCTYPE_s##bits)(u32* dest, const s##bits* src); |
24 |
|
25 |
#define create_some_unpacks(bits) \ |
26 |
create_unpack_u_type(bits); \ |
27 |
create_unpack_s_type(bits); \ |
28 |
|
29 |
create_some_unpacks(32); |
30 |
create_some_unpacks(16); |
31 |
create_some_unpacks(8); |
32 |
|
33 |
extern __aligned16 const u8 nVifT[16]; |
34 |
|
35 |
// Array sub-dimension order: [vifidx] [mode] (VN * VL * USN * doMask) |
36 |
extern __aligned16 const UNPACKFUNCTYPE VIFfuncTable[2][3][(4 * 4 * 2 * 2)]; |
37 |
|
38 |
_vifT extern int nVifUnpack (const u8* data); |
39 |
extern void resetNewVif(int idx); |
40 |
|
41 |
template< int idx > |
42 |
extern void vifUnpackSetup(const u32* data); |