-
Notifications
You must be signed in to change notification settings - Fork 410
/
Copy pathLibOpera.cs
154 lines (135 loc) · 3.87 KB
/
LibOpera.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
using System.Runtime.InteropServices;
using BizHawk.BizInvoke;
using BizHawk.Emulation.Cores.Waterbox;
namespace BizHawk.Emulation.Consoles.ThreeDO
{
public abstract class LibOpera : LibWaterboxCore
{
// NTSC Specifications
public const int NTSC_WIDTH = 320;
public const int NTSC_HEIGHT = 240;
public const int NTSC_VIDEO_NUMERATOR = 60;
public const int NTSC_VIDEO_DENOMINATOR = 1;
// PAL1 Specifications
public const int PAL1_WIDTH = 320;
public const int PAL1_HEIGHT = 288;
public const int PAL1_VIDEO_NUMERATOR = 50;
public const int PAL1_VIDEO_DENOMINATOR = 1;
// PAL2 Specifications
public const int PAL2_WIDTH = 384;
public const int PAL2_HEIGHT = 288;
public const int PAL2_VIDEO_NUMERATOR = 50;
public const int PAL2_VIDEO_DENOMINATOR = 1;
[UnmanagedFunctionPointer(CC)]
public delegate void CDReadCallback(int lba, IntPtr dst);
[UnmanagedFunctionPointer(CC)]
public delegate int CDSectorCountCallback();
[BizImport(CC)]
public abstract void SetCdCallbacks(CDReadCallback cdrc, CDSectorCountCallback cdscc);
[BizImport(CC, Compatibility = true)]
public abstract bool Init(string gameFile, string biosFile, string fontFile, int port1Type, int port2Type, int videoStandard);
[BizImport(CC, Compatibility = true)]
public abstract bool sram_changed();
[BizImport(CC, Compatibility = true)]
public abstract int get_sram_size();
[BizImport(CC, Compatibility = true)]
public abstract void get_sram(IntPtr sramBuffer);
[BizImport(CC, Compatibility = true)]
public abstract void set_sram(IntPtr sramBuffer);
[StructLayout(LayoutKind.Sequential)]
public struct GamepadInputs
{
public int up;
public int down;
public int left;
public int right;
public int start;
public int select;
public int buttonA;
public int buttonB;
public int buttonX;
public int buttonY;
public int buttonL;
public int buttonR;
}
[StructLayout(LayoutKind.Sequential)]
public struct MouseInputs
{
public int dX;
public int dY;
public int leftButton;
public int middleButton;
public int rightButton;
public int fourthButton;
}
[StructLayout(LayoutKind.Sequential)]
public struct FlightStickInputs
{
public int up;
public int down;
public int left;
public int right;
public int fire;
public int buttonA;
public int buttonB;
public int buttonC;
public int buttonX;
public int buttonP;
public int leftTrigger;
public int rightTrigger;
public int horizontalAxis;
public int verticalAxis;
public int altitudeAxis;
}
[StructLayout(LayoutKind.Sequential)]
public struct LightGunInputs
{
public int trigger;
public int select;
public int reload;
public int isOffScreen;
public int screenX;
public int screenY;
}
[StructLayout(LayoutKind.Sequential)]
public struct ArcadeLightGunInputs
{
public int trigger;
public int select;
public int start;
public int reload;
public int auxA;
public int isOffScreen;
public int screenX;
public int screenY;
}
[StructLayout(LayoutKind.Sequential)]
public struct OrbatakTrackballInputs
{
public int dX;
public int dY;
public int startP1;
public int startP2;
public int coinP1;
public int coinP2;
public int service;
}
[StructLayout(LayoutKind.Sequential)]
public struct GameInput
{
public GamepadInputs gamepad;
public MouseInputs mouse;
public FlightStickInputs flightStick;
public LightGunInputs lightGun;
public ArcadeLightGunInputs arcadeLightGun;
public OrbatakTrackballInputs orbatakTrackball;
}
[StructLayout(LayoutKind.Sequential)]
public new class FrameInfo : LibWaterboxCore.FrameInfo
{
public GameInput port1;
public GameInput port2;
public int isReset = 0;
}
}
}