Mercurial > vba-clojure
view src/clojure/clojure.cpp @ 92:1ff2c546f5ad
added tick(), which allows one to step through each opcode of gameboy
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sun, 11 Mar 2012 19:07:31 -0500 |
parents | 95cb2152d7cd |
children | 4c60ebca1a9d |
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 }133 /*134 * Class: com_aurellem_gb_Gb135 * Method: getRAM136 * Signature: ([I)V137 */138 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRAM139 (JNIEnv *env, jclass clazz, jintArray arr){140 jint *ram_store = env->GetIntArrayElements(arr, 0);141 storeRam(ram_store);142 env->ReleaseIntArrayElements(arr, ram_store, 0);143 }146 /*147 * Class: com_aurellem_gb_Gb148 * Method: getROM149 * Signature: ([I)V150 */151 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getROM152 (JNIEnv *env, jclass clazz, jintArray arr){153 jint *ram_store = env->GetIntArrayElements(arr, 0);154 storeRom(ram_store);155 env->ReleaseIntArrayElements(arr, ram_store, 0);156 }159 /*160 * Class: com_aurellem_gb_Gb161 * Method: getWRAM162 * Signature: ([I)V163 */164 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getWRAM165 (JNIEnv *env, jclass clazz, jintArray arr){166 jint *ram_store = env->GetIntArrayElements(arr, 0);167 storeWRam(ram_store);168 env->ReleaseIntArrayElements(arr, ram_store, 0);169 }172 /*173 * Class: com_aurellem_gb_Gb174 * Method: getVRAM175 * Signature: ([I)V176 */177 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getVRAM178 (JNIEnv *env, jclass clazz, jintArray arr){179 jint *ram_store = env->GetIntArrayElements(arr, 0);180 storeVRam(ram_store);181 env->ReleaseIntArrayElements(arr, ram_store, 0);182 }185 /*186 * Class: com_aurellem_gb_Gb187 * Method: getRegisters188 * Signature: ([I)V189 */190 JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_getRegisters191 (JNIEnv *env, jclass clazz, jintArray arr){192 jint *registers_store = env->GetIntArrayElements(arr, 0);193 storeRegisters(registers_store);194 env->ReleaseIntArrayElements(arr, registers_store, 0);195 }