# HG changeset patch # User Robert McIntyre # Date 1331151524 21600 # Node ID ba4fdfb722ed1c869b473580f6938809b9bb7e28 # Parent 719d910c90f87234648a9713470be5828b80b5f3 emabled loading and saving CPU state from clojure. diff -r 719d910c90f8 -r ba4fdfb722ed java/src/com/aurellem/gb/Gb.java --- a/java/src/com/aurellem/gb/Gb.java Wed Mar 07 13:24:32 2012 -0600 +++ b/java/src/com/aurellem/gb/Gb.java Wed Mar 07 14:18:44 2012 -0600 @@ -1,7 +1,7 @@ package com.aurellem.gb; import java.nio.ByteBuffer; - +import java.nio.ByteOrder; public class Gb { @@ -25,11 +25,30 @@ System.loadLibrary("vba"); } - public static native void step(); public static native void step(int keymask); public static native void shutdown(); + public static native void saveState(ByteBuffer buffer, int size); + + public static native void loadState(ByteBuffer buffer, int size); + + public static final int SAVE_SIZE = 9000; + + public static ByteBuffer saveState(){ + ByteBuffer buf = + ByteBuffer.allocateDirect(SAVE_SIZE) + .order(ByteOrder.nativeOrder()); + buf.clear(); + saveState(buf, SAVE_SIZE); + buf.flip(); + return buf; + } + + public static void loadState(ByteBuffer saveState){ + loadState(saveState, SAVE_SIZE); + } + } diff -r 719d910c90f8 -r ba4fdfb722ed src/clojure/clojure.cpp --- a/src/clojure/clojure.cpp Wed Mar 07 13:24:32 2012 -0600 +++ b/src/clojure/clojure.cpp Wed Mar 07 14:18:44 2012 -0600 @@ -1,5 +1,6 @@ #include "com_aurellem_gb_Gb.h" #include "../sdl/Drive.h" +#include "../gb/GB.h" #include @@ -72,9 +73,36 @@ JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_shutdown (JNIEnv *env, jclass clazz){ shutdown(); + } +/* + * Class: com_aurellem_gb_Gb + * Method: saveState + * Signature: (Ljava/nio/ByteBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_saveState +(JNIEnv *env, jclass clazz, jobject buffer, jint size){ + char* buffer_address = + ((char*) env->GetDirectBufferAddress(buffer)); + gbWriteMemSaveState(buffer_address, size); +} +/* + * Class: com_aurellem_gb_Gb + * Method: loadState + * Signature: (Ljava/nio/ByteBuffer;)V + */ +JNIEXPORT void JNICALL Java_com_aurellem_gb_Gb_loadState +(JNIEnv *env, jclass clazz, jobject buffer, jint size){ + char* buffer_address = + ((char*) env->GetDirectBufferAddress(buffer)); + gbReadMemSaveState(buffer_address, size); +} + + + +