Create Xref-Html Frames Remove All Frames
file:/home/jivera/wd/pcsx/Dreamcast/Plugin.c (Tue Nov 25 22:46:14 2003
)
1: /* Pcsx - Pc Psx Emulator
2: * Copyright (C) 1999-2002 Pcsx Team
3: *
4: * This program is free software; you can redistribute it and/or modify
5: * it under the terms of the GNU General Public License as published by
6: * the Free Software Foundation; either version 2 of the License, or
7: * (at your option) any later version.
8: *
9: * This program is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU General Public License for more details.
13: *
14: * You should have received a copy of the GNU General Public License
15: * along with this program; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: */
18:
19: #include <stdio.h>
20: #include <stdlib.h>
21:
22: #include "plugins.h"
23: #include "Spu.h"
24:
25: void RunGui();
26: void OnFile_Exit();
27:
28: extern GPUopen GPU_open;
29:
30: unsigned long gpuDisp;
31:
32: extern CDRplay CDR_play;
33: extern CDRstop CDR_stop;
34:
35: // extern SPUopen SPU_open;
36:
37: extern PADopen PAD1_open;
38: extern PADreadPort1 PAD1_readPort1;
39: extern PADopen PAD2_open;
40: extern PADreadPort2 PAD2_readPort2;
41:
42: int StatesC = 0;
43: extern char CdromLabel[256];
44: extern int UseGui;
45: int cdOpenCase = 0;
46:
47: /*
48: void PADhandleKey(int key) {
49: char Text[255];
50: int ret;
51:
52: switch (key) {
53: case 0: break;
54: case XK_F1:
55: sprintf (Text, "sstates/%s.%3.3d", CdromLabel, StatesC);
56: GPU_freeze(2, (GPUFreeze_t *)&StatesC);
57: ret = SaveState(Text);
58: sprintf (Text, "*PCSX*: %s State %d", !ret ? "Saved" : "Error Saving", StatesC+1);
59: GPU_displayText(Text);
60: break;
61: case XK_F2:
62: if (StatesC < 4) StatesC++;
63: else StatesC = 0;
64: GPU_freeze(2, (GPUFreeze_t *)&StatesC);
65: break;
66: case XK_F3:
67: sprintf (Text, "sstates/%s.%3.3d", CdromLabel, StatesC);
68: ret = LoadState(Text);
69: sprintf (Text, "*PCSX*: %s State %d", !ret ? "Loaded" : "Error Loading", StatesC+1);
70: GPU_displayText(Text);
71: break;
72: case XK_F4:
73: {
74: gzFile f;
75: static int ShowPic;
76:
77: if (!ShowPic) {
78: unsigned char *pMem;
79:
80: sprintf (Text, "sstates/%s.%3.3d", CdromLabel, StatesC);
81: f = gzopen(Text, "rb");
82: if (f == NULL) break;
83:
84: gzseek(f, 32, SEEK_SET); // skip header
85:
86: pMem = (unsigned char *) malloc(128*96*3);
87: gzread(f, pMem, 128*96*3);
88: gzclose(f);
89: GPU_freeze(2, (GPUFreeze_t *)&StatesC);
90: GPU_showScreenPic(pMem);
91: free(pMem);
92: ShowPic = 1;
93: }
94: else { GPU_showScreenPic(NULL); ShowPic = 0; }
95: }
96: break;
97: case XK_F5:
98: Config.Sio ^= 0x1;
99: sprintf (Text, "*PCSX*: Sio Irq %sAlways Enabled", Config.Sio ? "" : "Not ");
100: GPU_displayText(Text);
101: break;
102: case XK_F6:
103: Config.Mdec ^= 0x1;
104: sprintf (Text, "*PCSX*: Black&White Mdecs Only %sabled", Config.Mdec ? "En" : "Dis");
105: GPU_displayText(Text);
106: break;
107: case XK_F7:
108: Config.Xa ^= 0x1;
109: sprintf (Text, "*PCSX*: Xa %sabled", !Config.Xa ? "En" : "Dis");
110: GPU_displayText(Text);
111: break;
112: case XK_F8:
113: GPU_makeSnapshot();
114: break;
115: case XK_F9:
116: cdOpenCase = 1;
117: break;
118: case XK_F10:
119: cdOpenCase = 0;
120: break;
121: case XK_Escape:
122: ClosePlugins();
123: if (!UseGui) OnFile_Exit();
124: RunGui();
125: break;
126: default: GPU_keypressed(key);
127: }
128: }
129: */
130:
131: long PAD1__open(void) {
132: return PAD1_open(&gpuDisp);
133: }
134:
135: long PAD2__open(void) {
136: return PAD2_open(&gpuDisp);
137: }
138:
139: void SignalExit(int sig) {
140: ClosePlugins();
141: // OnFile_Exit();
142: }
143:
144: void SPUirq(void);
145:
146: void OpenPlugins() {
147: int ret;
148:
149: SysPrintf("start OpenPlugins()\r\n");
150:
151: SysPrintf("CDR_open()\r\n");
152: ret = CDR_open();
153: if (ret != 0) { SysMessage ("Error Opening CDR Plugin\n"); exit(1); }
154: SysPrintf("SPU_open()\r\n");
155: ret = SPU_open();
156: if (ret != 0) { SysMessage ("Error Opening SPU Plugin\n"); exit(1); }
157: SPU_registerCallback(SPUirq);
158: SysPrintf("GPU_open()\r\n");
159: ret = GPU_open(&gpuDisp, "P©SX", NULL);
160: if (ret != 0) { SysMessage ("Error Opening GPU Plugin\n"); exit(1); }
161: SysPrintf("PAD1_open()\r\n");
162: ret = PAD1_open(&gpuDisp);
163: if (ret != 0) { SysMessage ("Error Opening PAD1 Plugin\n"); exit(1); }
164: SysPrintf("PAD2_open()\r\n");
165: ret = PAD2_open(&gpuDisp);
166: if (ret != 0) { SysMessage ("Error Opening PAD2 Plugin\n"); exit(1); }
167: SysPrintf("end OpenPlugins()\r\n");
168: }
169:
170: void ClosePlugins() {
171: int ret;
172:
173: ret = CDR_close();
174: if (ret != 0) { SysMessage ("Error Closing CDR Plugin\n"); exit(1); }
175: ret = SPU_close();
176: if (ret != 0) { SysMessage ("Error Closing SPU Plugin\n"); exit(1); }
177: ret = PAD1_close();
178: if (ret != 0) { SysMessage ("Error Closing PAD1 Plugin\n"); exit(1); }
179: ret = PAD2_close();
180: if (ret != 0) { SysMessage ("Error Closing PAD2 Plugin\n"); exit(1); }
181: ret = GPU_close();
182: if (ret != 0) { SysMessage ("Error Closing GPU Plugin\n"); exit(1); }
183: }
184:
185: void ResetPlugins() {
186: int ret;
187:
188: CDR_shutdown();
189: GPU_shutdown();
190: SPU_shutdown();
191: PAD1_shutdown();
192: PAD2_shutdown();
193:
194: ret = CDR_init();
195: if (ret != 0) { SysMessage ("CDRinit error : %d\n",ret); exit(1); }
196: ret = GPU_init();
197: if (ret != 0) { SysMessage ("GPUinit error : %d\n",ret); exit(1); }
198: ret = SPU_init();
199: if (ret != 0) { SysMessage ("SPUinit error : %d\n",ret); exit(1); }
200: ret = PAD1_init(1);
201: if (ret != 0) { SysMessage ("PAD1init error : %d\n",ret); exit(1); }
202: ret = PAD2_init(2);
203: if (ret != 0) { SysMessage ("PAD2init error : %d\n",ret); exit(1); }
204: }
205: /* arch-tag: Matthew Dempsky Wed Oct 15 10:34:21 CST 2003 (Dreamcast/Plugin.c)
206: */
207:
Html form generated by Xrefactory version 1.6.4 on Fri Dec 12 20:52:56 2003
Trial version.