Mercurial > vba-clojure
view src/clojure/clojure.cpp @ 94:612393a0d3a0
fixed memory retrieval function to use the simulated gameboy's mapped memory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sun, 11 Mar 2012 20:55:21 -0500 |
parents | 4c60ebca1a9d |
children | cb487c4ce5c0 |
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_Gb12 * Method: sayHello13 * Signature: ()V14 */15 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_sayHello16 (JNIEnv *env, jclass clazz){17 UNUSED(env);UNUSED(clazz);18 printf("Hello from GB\n");19 }21 /*22 * Class: com_aurellem_gb_Gb23 * Method: startEmulator24 * Signature: (Ljava/lang/String;)V25 */26 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_startEmulator27 (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_Gb46 * Method: step47 * Signature: ()V48 */49 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_step50 (JNIEnv *env, jclass clazz){51 step();52 }54 /*55 * Class: com_aurellem_gb_Gb56 * Method: step57 * Signature: (I)V58 */59 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_nstep60 (JNIEnv *env, jclass clazz, jint keymask){61 step(keymask);62 }64 /*65 * Class: com_aurellem_gb_Gb66 * Method: ntick67 * Signature: ()I68 */69 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_ntick70 (JNIEnv *env, jclass clazz){71 return tick();73 }76 /*77 * Class: com_aurellem_gb_Gb78 * Method: shutdown79 * Signature: ()V80 */81 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_shutdown82 (JNIEnv *env, jclass clazz){83 shutdown();85 }87 /*88 * Class: com_aurellem_gb_Gb89 * Method: saveState90 * Signature: (Ljava/nio/ByteBuffer;I)J91 */92 JNIEXPORT jlong JNICALL Java_com_aurellem_gb_Gb_saveState93 (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_Gb102 * Method: loadState103 * Signature: (Ljava/nio/ByteBuffer;)V104 */105 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_loadState106 (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_Gb115 * Method: getROMSize116 * Signature: ()I117 */118 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_getROMSize119 (JNIEnv *env, jclass clazz){120 return getRomSize();121 }123 /*124 * Class: com_aurellem_gb_Gb125 * Method: getRAMSize126 * Signature: ()I127 */128 JNIEXPORT jint JNICALL Java_com_aurellem_gb_Gb_getRAMSize129 (JNIEnv *env, jclass clazz){130 return getRamSize();131 }134 /*135 * Class: com_aurellem_gb_Gb136 * Method: getMemory137 * Signature: ([I)V138 */139 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getMemory140 (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 }147 /*148 * Class: com_aurellem_gb_Gb149 * Method: getRAM150 * Signature: ([I)V151 */152 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRAM153 (JNIEnv *env, jclass clazz, jintArray arr){154 jint *ram_store = env->GetIntArrayElements(arr, 0);155 storeRam(ram_store);156 env->ReleaseIntArrayElements(arr, ram_store, 0);157 }160 /*161 * Class: com_aurellem_gb_Gb162 * Method: getROM163 * Signature: ([I)V164 */165 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getROM166 (JNIEnv *env, jclass clazz, jintArray arr){167 jint *rom_store = env->GetIntArrayElements(arr, 0);168 storeRom(rom_store);169 env->ReleaseIntArrayElements(arr, rom_store, 0);170 }173 /*174 * Class: com_aurellem_gb_Gb175 * Method: getWRAM176 * Signature: ([I)V177 */178 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getWRAM179 (JNIEnv *env, jclass clazz, jintArray arr){180 jint *ram_store = env->GetIntArrayElements(arr, 0);181 storeWRam(ram_store);182 env->ReleaseIntArrayElements(arr, ram_store, 0);183 }186 /*187 * Class: com_aurellem_gb_Gb188 * Method: getVRAM189 * Signature: ([I)V190 */191 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getVRAM192 (JNIEnv *env, jclass clazz, jintArray arr){193 jint *ram_store = env->GetIntArrayElements(arr, 0);194 storeVRam(ram_store);195 env->ReleaseIntArrayElements(arr, ram_store, 0);196 }199 /*200 * Class: com_aurellem_gb_Gb201 * Method: getRegisters202 * Signature: ([I)V203 */204 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRegisters205 (JNIEnv *env, jclass clazz, jintArray arr){206 jint *registers_store = env->GetIntArrayElements(arr, 0);207 storeRegisters(registers_store);208 env->ReleaseIntArrayElements(arr, registers_store, 0);209 }