.endm
idle_bra:
- mov r5, #4
+ mov r5, #2
inc_counter
b Op6001
idle_bne:
- msr cpsr_flg, r10 ;@ ARM flags = 68000 flags
- movne r5, #4
+ msr cpsr_flg, r10
+ movne r5, #2 @ 2 is intentional due to strange timing issues
inc_counter ne
b Op6601
idle_beq:
msr cpsr_flg, r10 ;@ ARM flags = 68000 flags
- moveq r5, #4
+ moveq r5, #2
inc_counter eq
b Op6701
goto famec_Exec;\r
#endif\r
\r
+#define RET0() \\r
+ m68kcontext.io_cycle_counter = -6; \\r
+ goto famec_End;\r
+\r
#else\r
\r
#define NEXT \\r
m68kcontext.io_cycle_counter -= (A); \\r
return;\r
\r
+#define RET0() \\r
+ m68kcontext.io_cycle_counter = -6; \\r
+ return;\r
+\r
#endif\r
\r
#define M68K_PPL (m68kcontext.sr >> 8) & 7\r
ASP = res;
}
m68kcontext.execinfo |= FM68K_HALTED;
- m68kcontext.io_cycle_counter = 0;
-RET(4)
+RET0()
}
// RTE
PC += ((s8)(Opcode & 0xFE)) >> 1;
#endif
UPDATE_IDLE_COUNT
- m68kcontext.io_cycle_counter = 10;
-RET(10)
+RET0()
}
// BCC
{
UPDATE_IDLE_COUNT
PC += ((s8)(Opcode & 0xFE)) >> 1;
- m68kcontext.io_cycle_counter = 8;
+ //if (idle_hit)
+ RET0()
}
RET(8)
}
{
UPDATE_IDLE_COUNT
PC += ((s8)(Opcode & 0xFE)) >> 1;
- m68kcontext.io_cycle_counter = 8;
+ //if (idle_hit)
+ RET0()
}
RET(8)
}
extern const char * const keyNames[];
void emu_prepareDefaultConfig(void);
+void emu_platformDebugCat(char *str);
{\r
int inp, mode = 0;\r
int spr_offs = 0, dumped = 0;\r
+ char *tmp;\r
\r
while (1)\r
{\r
switch (mode)\r
{\r
case 0: menu_draw_begin();\r
- draw_text_debug(PDebugMain(), 0, 0);\r
+ tmp = PDebugMain();\r
+ emu_platformDebugCat(tmp);\r
+ draw_text_debug(tmp, 0, 0);\r
if (dumped) {\r
smalltext_out16(SCREEN_WIDTH-6*10, SCREEN_HEIGHT-8, "dumped", 0xffff);\r
dumped = 0;\r
currentConfig.EmuOpt = eo_old;\r
}\r
\r
+void emu_platformDebugCat(char *str)\r
+{\r
+ // nothing\r
+}\r
+\r
static void simpleWait(int thissec, int lim_time)\r
{\r
struct timeval tval;\r
-#define VERSION "1.51a"\r
+#define VERSION "1.51b"\r
\r
}
else if (allow_as && (rendstatus & PDRAW_ACC_SPRITES))
{
- memcpy32((int *)(void *)(localPal+0x80), (void *)localPal, 0x40/2);
+ memcpy32((int *)dpal+0x80/2, (void *)localPal, 0x40*2/4);
}
}
if (dynamic_palette > 0)
dynamic_palette--;
+
if (Pico.m.dirtyPal)
do_pal_update(1, 1);
if ((rendstatus & PDRAW_ACC_SPRITES) && !(Pico.video.reg[0xC]&8))
do_slowmode_lines(num);
dynamic_palette = 3; // last for 2 more frames
}
- do_pal_update(1, 0);
+ do_pal_update(1, 1);
}
if (dynamic_palette) {
sceGuSync(0,0);
}
+void emu_platformDebugCat(char *str)
+{
+ strcat(str, blit_16bit_mode ? "soft clut\n" : "hard clut\n");
+}
+
/* sound stuff */
#define SOUND_BLOCK_SIZE_NTSC (1470*2) // 1024 // 1152
{ "gzip savestates", MB_ONOFF, MA_OPT2_GZIP_STATES, ¤tConfig.EmuOpt, 0x00008, 0, 0, 1, 1 },
{ "Don't save last used ROM", MB_ONOFF, MA_OPT2_NO_LAST_ROM, ¤tConfig.EmuOpt, 0x00020, 0, 0, 1, 1 },
{ "Status line in main menu", MB_ONOFF, MA_OPT2_STATUS_LINE, ¤tConfig.EmuOpt, 0x20000, 0, 0, 1, 1 },
+ { "Disable idle loop patching",MB_ONOFF, MA_OPT2_NO_IDLE_LOOPS, &PicoOpt, 0x80000, 0, 0, 1, 1 },
{ "Disable frame limiter", MB_ONOFF, MA_OPT2_NO_FRAME_LIMIT, ¤tConfig.EmuOpt, 0x40000, 0, 0, 1, 1 },
{ "done", MB_NONE, MA_OPT2_DONE, NULL, 0, 0, 0, 1, 0 },
};
-#define VERSION "1.51a"\r
+#define VERSION "1.51b"\r
\r