Mercurial > repos > blastem
diff gst.c @ 2500:d44fe974fb85
Get blastem compiling with new 68K core
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 30 Apr 2024 22:32:08 -0700 |
parents | 9ead0fe69d9b |
children | d1f689ed3956 |
line wrap: on
line diff
--- a/gst.c Tue Apr 30 00:02:14 2024 -0700 +++ b/gst.c Tue Apr 30 22:32:08 2024 -0700 @@ -86,10 +86,14 @@ uint32_t pc = read_le_32(buffer + GST_68K_PC_OFFSET); uint16_t sr = read_le_16(buffer + GST_68K_SR_OFFSET); context->status = sr >> 8; +#ifdef NEW_CORE + //TODO: implement me +#else for (int flag = 4; flag >= 0; flag--) { context->flags[flag] = sr & 1; sr >>= 1; } +#endif if (context->status & (1 << 5)) { context->aregs[8] = read_le_32(buffer + GST_68K_USP_OFFSET); } else { @@ -113,10 +117,14 @@ } write_le_32(buffer + GST_68K_PC_OFFSET, pc); uint16_t sr = context->status << 3; +#ifdef NEW_CORE + //TODO: implement me +#else for (int flag = 4; flag >= 0; flag--) { sr <<= 1; sr |= context->flags[flag]; } +#endif write_le_16(buffer + GST_68K_SR_OFFSET, sr); if (context->status & (1 << 5)) { write_le_32(buffer + GST_68K_USP_OFFSET, context->aregs[8]); @@ -412,7 +420,9 @@ return 1; } +#ifndef NEW_CORE #include "m68k_internal.h" //needed for get_native_address_trans, should be eliminated once handling of PC is cleaned up +#endif uint32_t load_gst(genesis_context * gen, char * fname) { char buffer[4096]; @@ -462,7 +472,11 @@ i++; } } +#ifdef NEW_CORE + gen->m68k->pc = pc; +#else gen->m68k->resume_pc = get_native_address_trans(gen->m68k, pc); +#endif fclose(gstfile); return pc;