Mercurial > audlegacy
annotate Plugins/Input/sexypsf/PsxHLE.c @ 1463:47c7695095d4 trunk
[svn] - ok, lets use real URIs here
author | nenolod |
---|---|
date | Wed, 02 Aug 2006 17:52:07 -0700 |
parents | 705d4c089fce |
children |
rev | line source |
---|---|
333
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
1 /* Pcsx - Pc Psx Emulator |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
2 * Copyright (C) 1999-2002 Pcsx Team |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
3 * |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
4 * This program is free software; you can redistribute it and/or modify |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
7 * (at your option) any later version. |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
8 * |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
9 * This program is distributed in the hope that it will be useful, |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
12 * GNU General Public License for more details. |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
13 * |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
14 * You should have received a copy of the GNU General Public License |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
15 * along with this program; if not, write to the Free Software |
1459 | 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
333
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
17 */ |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
18 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
19 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
20 #include "PsxCommon.h" |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
21 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
22 static void hleDummy() { |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
23 psxRegs.pc = psxRegs.GPR.n.ra; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
24 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
25 psxBranchTest(); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
26 } |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
27 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
28 static void hleA0() { |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
29 u32 call = psxRegs.GPR.n.t1 & 0xff; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
30 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
31 if (biosA0[call]) biosA0[call](); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
32 //else |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
33 // printf("Unknown A0: %08x\n",call); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
34 psxBranchTest(); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
35 } |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
36 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
37 static void hleB0() { |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
38 u32 call = psxRegs.GPR.n.t1 & 0xff; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
39 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
40 if (biosB0[call]) biosB0[call](); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
41 //else |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
42 // printf("Unknown B0: %08x\n",call); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
43 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
44 psxBranchTest(); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
45 } |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
46 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
47 static void hleC0() { |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
48 u32 call = psxRegs.GPR.n.t1 & 0xff; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
49 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
50 if (biosC0[call]) biosC0[call](); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
51 //else |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
52 // printf("Unknown C0: %08x\n",call); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
53 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
54 psxBranchTest(); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
55 } |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
56 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
57 static void hleBootstrap() { // 0xbfc00000 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
58 //SysPrintf("hleBootstrap\n"); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
59 } |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
60 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
61 typedef struct { |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
62 u32 _pc0; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
63 u32 gp0; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
64 u32 t_addr; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
65 u32 t_size; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
66 u32 d_addr; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
67 u32 d_size; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
68 u32 b_addr; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
69 u32 b_size; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
70 u32 S_addr; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
71 u32 s_size; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
72 u32 _sp,_fp,_gp,ret,base; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
73 } PACKSTRUCT EXEC; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
74 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
75 static void hleExecRet() { |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
76 EXEC *header = (EXEC*)PSXM(psxRegs.GPR.n.s0); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
77 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
78 //SysPrintf("ExecRet %x: %x\n", psxRegs.GPR.n.s0, header->ret); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
79 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
80 psxRegs.GPR.n.ra = BFLIP32(header->ret); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
81 psxRegs.GPR.n.sp = BFLIP32(header->_sp); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
82 psxRegs.GPR.n.s8 = BFLIP32(header->_fp); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
83 psxRegs.GPR.n.gp = BFLIP32(header->_gp); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
84 psxRegs.GPR.n.s0 = BFLIP32(header->base); |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
85 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
86 psxRegs.GPR.n.v0 = 1; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
87 psxRegs.pc = psxRegs.GPR.n.ra; |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
88 } |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
89 |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
90 void (*psxHLEt[256])() = { |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
91 hleDummy, hleA0, hleB0, hleC0, |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
92 hleBootstrap, hleExecRet |
42cdc99e395a
[svn] Now that the build system is ready, upload the plugin code.
chainsaw
parents:
diff
changeset
|
93 }; |