22
33// include private sms headers
44extern " C" {
5- #include " emuapi.h"
5+ #include " sms.h"
6+ #include " wrapemu.h"
7+ #include " vdp.h"
68}
79
810#include < string>
@@ -37,17 +39,31 @@ void set_sms_video_fill() {
3739void reset_sms () {
3840}
3941
40- static uint8_t first_frame = 0 ;
41- void init_sms (const std::string& rom_filename, uint8_t *romdata, size_t rom_data_size) {
42- static bool initialized = false ;
43- if (!initialized) {
44- } else {
45- }
46- initialized = true ;
42+ void emu_DrawLinePal16 (unsigned char * VBuf, int width, int height, int line) {
43+ // TODO: implement
44+ }
45+
46+ void init_sms (uint8_t *romdata, size_t rom_data_size) {
47+ sms_Init ();
48+ sms.ram = (uint8_t *)get_vram0 ();
49+ sms.sram = (uint8_t *)get_vram1 ();
50+ sms.dummy = get_frame_buffer1 ();
51+ vdp.vram = get_frame_buffer0 ();
52+ sms_Start (romdata, rom_data_size);
53+ }
54+
55+ void init_gg (uint8_t *romdata, size_t rom_data_size) {
56+ sms_Init ();
57+ sms.ram = (uint8_t *)get_vram0 ();
58+ sms.sram = (uint8_t *)get_vram1 ();
59+ sms.dummy = get_frame_buffer1 ();
60+ vdp.vram = get_frame_buffer0 ();
61+ gg_Start (romdata, rom_data_size);
4762}
4863
4964void run_sms_rom () {
5065 auto start = std::chrono::high_resolution_clock::now ();
66+ sms_Step ();
5167 // frame rate should be 60 FPS, so 1/60th second is what we want to sleep for
5268 auto delay = std::chrono::duration<float >(1 .0f /60 .0f );
5369 std::this_thread::sleep_until (start + delay);
@@ -65,7 +81,7 @@ std::vector<uint8_t> get_sms_video_buffer() {
6581 std::vector<uint8_t > frame (SMS_SCREEN_WIDTH * SMS_VISIBLE_HEIGHT * 2 );
6682 // the frame data for the SMS is stored in frame_buffer0 as a 8 bit index into the palette
6783 // we need to convert this to a 16 bit RGB565 value
68- uint8_t *frame_buffer0 = get_frame_buffer0 ();
84+ // uint8_t *frame_buffer0 = get_frame_buffer0();
6985 // uint16_t *palette = nullptr; // get_sms_palette();
7086 // for (int i = 0; i < SMS_SCREEN_WIDTH * SMS_VISIBLE_HEIGHT; i++) {
7187 // uint8_t index = frame_buffer0[i];
@@ -83,4 +99,5 @@ void start_sms_tasks() {
8399}
84100
85101void deinit_sms () {
102+ sms_DeInit ();
86103}
0 commit comments