rlm@49
|
1 #include "com_aurellem_gb_Gb.h"
|
rlm@49
|
2 #include "../sdl/Drive.h"
|
rlm@56
|
3 #include "../gb/GB.h"
|
rlm@49
|
4
|
rlm@49
|
5 #include <string.h>
|
rlm@49
|
6
|
rlm@49
|
7 #define UNUSED(x) (void)(x)
|
rlm@49
|
8
|
rlm@49
|
9
|
rlm@49
|
10 /*
|
rlm@49
|
11 * Class: com_aurellem_gb_Gb
|
rlm@49
|
12 * Method: sayHello
|
rlm@49
|
13 * Signature: ()V
|
rlm@49
|
14 */
|
rlm@49
|
15 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_sayHello
|
rlm@49
|
16 (JNIEnv *env, jclass clazz){
|
rlm@49
|
17 UNUSED(env);UNUSED(clazz);
|
rlm@49
|
18 printf("Hello from GB\n");
|
rlm@49
|
19 }
|
rlm@49
|
20
|
rlm@49
|
21 /*
|
rlm@49
|
22 * Class: com_aurellem_gb_Gb
|
rlm@49
|
23 * Method: startEmulator
|
rlm@49
|
24 * Signature: (Ljava/lang/String;)V
|
rlm@49
|
25 */
|
rlm@49
|
26 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_startEmulator
|
rlm@49
|
27 (JNIEnv *env, jclass clazz, jstring str){
|
rlm@49
|
28 UNUSED(env);UNUSED(clazz);UNUSED(str);
|
rlm@49
|
29
|
rlm@49
|
30 const char *_romName = env->GetStringUTFChars(str, 0);
|
rlm@49
|
31 size_t len = strlen(_romName);
|
rlm@49
|
32
|
rlm@49
|
33 char romName[len + 1];
|
rlm@49
|
34
|
rlm@49
|
35 strcpy(romName, _romName);
|
rlm@49
|
36
|
rlm@49
|
37 char* arguments[] = {"vba-rlm", romName};
|
rlm@49
|
38 runVBA(2, arguments);
|
rlm@49
|
39 }
|
rlm@49
|
40
|
rlm@55
|
41
|
rlm@55
|
42
|
rlm@55
|
43
|
rlm@53
|
44 /*
|
rlm@53
|
45 * Class: com_aurellem_gb_Gb
|
rlm@53
|
46 * Method: step
|
rlm@53
|
47 * Signature: ()V
|
rlm@53
|
48 */
|
rlm@83
|
49 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_step
|
rlm@53
|
50 (JNIEnv *env, jclass clazz){
|
rlm@53
|
51 step();
|
rlm@53
|
52 }
|
rlm@53
|
53
|
rlm@53
|
54 /*
|
rlm@53
|
55 * Class: com_aurellem_gb_Gb
|
rlm@55
|
56 * Method: step
|
rlm@55
|
57 * Signature: (I)V
|
rlm@55
|
58 */
|
rlm@83
|
59 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_nstep
|
rlm@55
|
60 (JNIEnv *env, jclass clazz, jint keymask){
|
rlm@55
|
61 step(keymask);
|
rlm@55
|
62 }
|
rlm@55
|
63
|
rlm@92
|
64 /*
|
rlm@92
|
65 * Class: com_aurellem_gb_Gb
|
rlm@92
|
66 * Method: ntick
|
rlm@92
|
67 * Signature: ()I
|
rlm@92
|
68 */
|
rlm@92
|
69 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_ntick
|
rlm@92
|
70 (JNIEnv *env, jclass clazz){
|
rlm@92
|
71 return tick();
|
rlm@55
|
72
|
rlm@92
|
73 }
|
rlm@55
|
74
|
rlm@55
|
75
|
rlm@55
|
76 /*
|
rlm@55
|
77 * Class: com_aurellem_gb_Gb
|
rlm@53
|
78 * Method: shutdown
|
rlm@53
|
79 * Signature: ()V
|
rlm@53
|
80 */
|
rlm@53
|
81 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_shutdown
|
rlm@53
|
82 (JNIEnv *env, jclass clazz){
|
rlm@53
|
83 shutdown();
|
rlm@56
|
84
|
rlm@53
|
85 }
|
rlm@53
|
86
|
rlm@56
|
87 /*
|
rlm@56
|
88 * Class: com_aurellem_gb_Gb
|
rlm@56
|
89 * Method: saveState
|
rlm@76
|
90 * Signature: (Ljava/nio/ByteBuffer;I)J
|
rlm@56
|
91 */
|
rlm@76
|
92 JNIEXPORT jlong JNICALL Java_com_aurellem_gb_Gb_saveState
|
rlm@56
|
93 (JNIEnv *env, jclass clazz, jobject buffer, jint size){
|
rlm@56
|
94 char* buffer_address =
|
rlm@56
|
95 ((char*) env->GetDirectBufferAddress(buffer));
|
rlm@76
|
96 long limit = gbWriteMemSaveStatePos(buffer_address, size);
|
rlm@76
|
97 return limit;
|
rlm@56
|
98 }
|
rlm@53
|
99
|
rlm@56
|
100 /*
|
rlm@56
|
101 * Class: com_aurellem_gb_Gb
|
rlm@56
|
102 * Method: loadState
|
rlm@56
|
103 * Signature: (Ljava/nio/ByteBuffer;)V
|
rlm@56
|
104 */
|
rlm@56
|
105 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_loadState
|
rlm@56
|
106 (JNIEnv *env, jclass clazz, jobject buffer, jint size){
|
rlm@56
|
107 char* buffer_address =
|
rlm@56
|
108 ((char*) env->GetDirectBufferAddress(buffer));
|
rlm@56
|
109 gbReadMemSaveState(buffer_address, size);
|
rlm@56
|
110 }
|
rlm@55
|
111
|
rlm@55
|
112
|
rlm@59
|
113 /*
|
rlm@59
|
114 * Class: com_aurellem_gb_Gb
|
rlm@59
|
115 * Method: getROMSize
|
rlm@59
|
116 * Signature: ()I
|
rlm@59
|
117 */
|
rlm@59
|
118 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_getROMSize
|
rlm@59
|
119 (JNIEnv *env, jclass clazz){
|
rlm@59
|
120 return getRomSize();
|
rlm@59
|
121 }
|
rlm@55
|
122
|
rlm@59
|
123 /*
|
rlm@59
|
124 * Class: com_aurellem_gb_Gb
|
rlm@59
|
125 * Method: getRAMSize
|
rlm@59
|
126 * Signature: ()I
|
rlm@59
|
127 */
|
rlm@59
|
128 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_getRAMSize
|
rlm@59
|
129 (JNIEnv *env, jclass clazz){
|
rlm@59
|
130 return getRamSize();
|
rlm@59
|
131 }
|
rlm@56
|
132
|
rlm@93
|
133
|
rlm@93
|
134 /*
|
rlm@93
|
135 * Class: com_aurellem_gb_Gb
|
rlm@93
|
136 * Method: getMemory
|
rlm@93
|
137 * Signature: ([I)V
|
rlm@93
|
138 */
|
rlm@93
|
139 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getMemory
|
rlm@93
|
140 (JNIEnv *env, jclass clazz, jintArray arr){
|
rlm@93
|
141 jint *mem_store = env->GetIntArrayElements(arr, 0);
|
rlm@93
|
142 storeMemory(mem_store);
|
rlm@93
|
143 env->ReleaseIntArrayElements(arr, mem_store, 0);
|
rlm@93
|
144 }
|
rlm@93
|
145
|
rlm@93
|
146
|
rlm@60
|
147 /*
|
rlm@60
|
148 * Class: com_aurellem_gb_Gb
|
rlm@60
|
149 * Method: getRAM
|
rlm@60
|
150 * Signature: ([I)V
|
rlm@60
|
151 */
|
rlm@60
|
152 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRAM
|
rlm@60
|
153 (JNIEnv *env, jclass clazz, jintArray arr){
|
rlm@60
|
154 jint *ram_store = env->GetIntArrayElements(arr, 0);
|
rlm@60
|
155 storeRam(ram_store);
|
rlm@60
|
156 env->ReleaseIntArrayElements(arr, ram_store, 0);
|
rlm@60
|
157 }
|
rlm@56
|
158
|
rlm@59
|
159
|
rlm@61
|
160 /*
|
rlm@61
|
161 * Class: com_aurellem_gb_Gb
|
rlm@61
|
162 * Method: getROM
|
rlm@61
|
163 * Signature: ([I)V
|
rlm@61
|
164 */
|
rlm@61
|
165 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getROM
|
rlm@61
|
166 (JNIEnv *env, jclass clazz, jintArray arr){
|
rlm@93
|
167 jint *rom_store = env->GetIntArrayElements(arr, 0);
|
rlm@93
|
168 storeRom(rom_store);
|
rlm@93
|
169 env->ReleaseIntArrayElements(arr, rom_store, 0);
|
rlm@61
|
170 }
|
rlm@59
|
171
|
rlm@61
|
172
|
rlm@61
|
173 /*
|
rlm@61
|
174 * Class: com_aurellem_gb_Gb
|
rlm@61
|
175 * Method: getWRAM
|
rlm@61
|
176 * Signature: ([I)V
|
rlm@61
|
177 */
|
rlm@61
|
178 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getWRAM
|
rlm@61
|
179 (JNIEnv *env, jclass clazz, jintArray arr){
|
rlm@61
|
180 jint *ram_store = env->GetIntArrayElements(arr, 0);
|
rlm@61
|
181 storeWRam(ram_store);
|
rlm@61
|
182 env->ReleaseIntArrayElements(arr, ram_store, 0);
|
rlm@61
|
183 }
|
rlm@61
|
184
|
rlm@61
|
185
|
rlm@61
|
186 /*
|
rlm@61
|
187 * Class: com_aurellem_gb_Gb
|
rlm@61
|
188 * Method: getVRAM
|
rlm@61
|
189 * Signature: ([I)V
|
rlm@61
|
190 */
|
rlm@61
|
191 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getVRAM
|
rlm@61
|
192 (JNIEnv *env, jclass clazz, jintArray arr){
|
rlm@61
|
193 jint *ram_store = env->GetIntArrayElements(arr, 0);
|
rlm@61
|
194 storeVRam(ram_store);
|
rlm@61
|
195 env->ReleaseIntArrayElements(arr, ram_store, 0);
|
rlm@61
|
196 }
|
rlm@61
|
197
|
rlm@61
|
198
|
rlm@62
|
199 /*
|
rlm@62
|
200 * Class: com_aurellem_gb_Gb
|
rlm@62
|
201 * Method: getRegisters
|
rlm@62
|
202 * Signature: ([I)V
|
rlm@62
|
203 */
|
rlm@62
|
204 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRegisters
|
rlm@62
|
205 (JNIEnv *env, jclass clazz, jintArray arr){
|
rlm@62
|
206 jint *registers_store = env->GetIntArrayElements(arr, 0);
|
rlm@62
|
207 storeRegisters(registers_store);
|
rlm@62
|
208 env->ReleaseIntArrayElements(arr, registers_store, 0);
|
rlm@62
|
209 }
|
rlm@61
|
210
|
rlm@62
|
211
|