view src/clojure/clojure.cpp @ 100:2090bcb78f44

created functions to get and set register values
author Robert McIntyre <rlm@mit.edu>
date Mon, 12 Mar 2012 12:37:04 -0500
parents cb487c4ce5c0
children 893c753f8088
line wrap: on
line source
1 #include "com_aurellem_gb_Gb.h"
2 #include "../sdl/Drive.h"
3 #include "../gb/GB.h"
5 #include <string.h>
7 #define UNUSED(x) (void)(x)
10 /*
11 * Class: com_aurellem_gb_Gb
12 * Method: sayHello
13 * Signature: ()V
14 */
15 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_sayHello
16 (JNIEnv *env, jclass clazz){
17 UNUSED(env);UNUSED(clazz);
18 printf("Hello from GB\n");
19 }
21 /*
22 * Class: com_aurellem_gb_Gb
23 * Method: startEmulator
24 * Signature: (Ljava/lang/String;)V
25 */
26 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_startEmulator
27 (JNIEnv *env, jclass clazz, jstring str){
28 UNUSED(env);UNUSED(clazz);UNUSED(str);
30 const char *_romName = env->GetStringUTFChars(str, 0);
31 size_t len = strlen(_romName);
33 char romName[len + 1];
35 strcpy(romName, _romName);
37 char* arguments[] = {"vba-rlm", romName};
38 runVBA(2, arguments);
39 }
44 /*
45 * Class: com_aurellem_gb_Gb
46 * Method: step
47 * Signature: ()V
48 */
49 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_step
50 (JNIEnv *env, jclass clazz){
51 step();
52 }
54 /*
55 * Class: com_aurellem_gb_Gb
56 * Method: step
57 * Signature: (I)V
58 */
59 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_nstep
60 (JNIEnv *env, jclass clazz, jint keymask){
61 step(keymask);
62 }
64 /*
65 * Class: com_aurellem_gb_Gb
66 * Method: ntick
67 * Signature: ()I
68 */
69 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_ntick
70 (JNIEnv *env, jclass clazz){
71 return tick();
73 }
76 /*
77 * Class: com_aurellem_gb_Gb
78 * Method: shutdown
79 * Signature: ()V
80 */
81 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_shutdown
82 (JNIEnv *env, jclass clazz){
83 shutdown();
85 }
87 /*
88 * Class: com_aurellem_gb_Gb
89 * Method: saveState
90 * Signature: (Ljava/nio/ByteBuffer;I)J
91 */
92 JNIEXPORT jlong JNICALL Java_com_aurellem_gb_Gb_saveState
93 (JNIEnv *env, jclass clazz, jobject buffer, jint size){
94 char* buffer_address =
95 ((char*) env->GetDirectBufferAddress(buffer));
96 long limit = gbWriteMemSaveStatePos(buffer_address, size);
97 return limit;
98 }
100 /*
101 * Class: com_aurellem_gb_Gb
102 * Method: loadState
103 * Signature: (Ljava/nio/ByteBuffer;)V
104 */
105 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_loadState
106 (JNIEnv *env, jclass clazz, jobject buffer, jint size){
107 char* buffer_address =
108 ((char*) env->GetDirectBufferAddress(buffer));
109 gbReadMemSaveState(buffer_address, size);
110 }
113 /*
114 * Class: com_aurellem_gb_Gb
115 * Method: getROMSize
116 * Signature: ()I
117 */
118 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_getROMSize
119 (JNIEnv *env, jclass clazz){
120 return getRomSize();
121 }
123 /*
124 * Class: com_aurellem_gb_Gb
125 * Method: getRAMSize
126 * Signature: ()I
127 */
128 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_getRAMSize
129 (JNIEnv *env, jclass clazz){
130 return getRamSize();
131 }
134 /*
135 * Class: com_aurellem_gb_Gb
136 * Method: getMemory
137 * Signature: ([I)V
138 */
139 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getMemory
140 (JNIEnv *env, jclass clazz, jintArray arr){
141 jint *mem_store = env->GetIntArrayElements(arr, 0);
142 storeMemory(mem_store);
143 env->ReleaseIntArrayElements(arr, mem_store, 0);
144 }
146 /*
147 * Class: com_aurellem_gb_Gb
148 * Method: writeMemory
149 * Signature: ([I)V
150 */
151 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_writeMemory
152 (JNIEnv *env, jclass clazz, jintArray arr){
153 jint *new_memory = env->GetIntArrayElements(arr, 0);
154 writeMemory(new_memory);
155 env->ReleaseIntArrayElements(arr, new_memory, 0);
156 }
159 /*
160 * Class: com_aurellem_gb_Gb
161 * Method: getRAM
162 * Signature: ([I)V
163 */
164 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRAM
165 (JNIEnv *env, jclass clazz, jintArray arr){
166 jint *ram_store = env->GetIntArrayElements(arr, 0);
167 storeRam(ram_store);
168 env->ReleaseIntArrayElements(arr, ram_store, 0);
169 }
172 /*
173 * Class: com_aurellem_gb_Gb
174 * Method: getROM
175 * Signature: ([I)V
176 */
177 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getROM
178 (JNIEnv *env, jclass clazz, jintArray arr){
179 jint *rom_store = env->GetIntArrayElements(arr, 0);
180 storeRom(rom_store);
181 env->ReleaseIntArrayElements(arr, rom_store, 0);
182 }
185 /*
186 * Class: com_aurellem_gb_Gb
187 * Method: getWRAM
188 * Signature: ([I)V
189 */
190 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getWRAM
191 (JNIEnv *env, jclass clazz, jintArray arr){
192 jint *ram_store = env->GetIntArrayElements(arr, 0);
193 storeWRam(ram_store);
194 env->ReleaseIntArrayElements(arr, ram_store, 0);
195 }
198 /*
199 * Class: com_aurellem_gb_Gb
200 * Method: getVRAM
201 * Signature: ([I)V
202 */
203 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getVRAM
204 (JNIEnv *env, jclass clazz, jintArray arr){
205 jint *ram_store = env->GetIntArrayElements(arr, 0);
206 storeVRam(ram_store);
207 env->ReleaseIntArrayElements(arr, ram_store, 0);
208 }
211 /*
212 * Class: com_aurellem_gb_Gb
213 * Method: getRegisters
214 * Signature: ([I)V
215 */
216 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRegisters
217 (JNIEnv *env, jclass clazz, jintArray arr){
218 jint *registers_store = env->GetIntArrayElements(arr, 0);
219 storeRegisters(registers_store);
220 env->ReleaseIntArrayElements(arr, registers_store, 0);
221 }
224 /*
225 * Class: com_aurellem_gb_Gb
226 * Method: writeRegisters
227 * Signature: ([I)V
228 */
229 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_writeRegisters
230 (JNIEnv *env, jclass clazz, jintArray arr){
231 jint *new_registers = env->GetIntArrayElements(arr, 0);
232 setRegisters(new_registers);
233 env->ReleaseIntArrayElements(arr, new_registers, 0);
234 }