Cold reset combination held <1sec -> quick load Menu core.

This commit is contained in:
sorgelig
2018-01-23 22:49:26 +08:00
parent 95bedd84c1
commit 6981185a7c

View File

@@ -960,6 +960,8 @@ void user_io_rtc_reset()
rtc_timer = 0;
}
static int coldreset_req = 0;
void user_io_poll()
{
if ((core_type != CORE_TYPE_MINIMIG2) &&
@@ -1500,6 +1502,24 @@ void user_io_poll()
}
DisableIO();
}
static int prev_coldreset_req = 0;
static uint32_t reset_timer = 0;
if (!prev_coldreset_req && coldreset_req)
{
reset_timer = GetTimer(1000);
}
if (!coldreset_req && prev_coldreset_req)
{
fpga_load_rbf("menu.rbf");
}
prev_coldreset_req = coldreset_req;
if (reset_timer && CheckTimer(reset_timer))
{
reboot(1);
}
}
char user_io_dip_switch1()
@@ -1727,11 +1747,11 @@ void user_io_check_reset(unsigned short modifiers, char useKeys)
if ((modifiers & ~2) == combo[useKeys])
{
if (modifiers & 2) // with lshift - MiST reset
if (modifiers & 2) // with lshift - cold reset
{
reboot(1);
coldreset_req = 1;
}
else
switch (core_type)
{
case CORE_TYPE_MINIMIG2:
@@ -1746,6 +1766,7 @@ void user_io_check_reset(unsigned short modifiers, char useKeys)
}
else
{
coldreset_req = 0;
kbd_reset = 0;
}
}
@@ -1881,8 +1902,8 @@ emu_mode_t user_io_get_kbdemu()
return emu_mode;
}
int getPLL(double Fout, uint32_t *M, uint32_t *K, uint32_t *C)
{
int getPLL(double Fout, uint32_t *M, uint32_t *K, uint32_t *C)
{
uint32_t c = 1;
while ((Fout*c) < 400) c++;
@@ -1924,20 +1945,20 @@ int getPLL(double Fout, uint32_t *M, uint32_t *K, uint32_t *C)
return 1;
}
}
}
uint32_t getPLLdiv(uint32_t div)
{
if (div & 1) return 0x20000 | (((div / 2)+1) << 8) | (div / 2);
return ((div / 2) << 8) | (div / 2);
}
struct
{
uint32_t vpar[8];
double Fpix;
} vmodes[8] =
{
}
uint32_t getPLLdiv(uint32_t div)
{
if (div & 1) return 0x20000 | (((div / 2)+1) << 8) | (div / 2);
return ((div / 2) << 8) | (div / 2);
}
struct
{
uint32_t vpar[8];
double Fpix;
} vmodes[8] =
{
{ {1280, 110, 40, 220, 720, 5, 5, 20}, 74.25 },
{ {1024, 24, 136, 160, 768, 3, 6, 29}, 65 },
{ {720, 16, 62, 60, 480, 9, 6, 30}, 27 },
@@ -1946,8 +1967,8 @@ struct
{ {800, 40, 128, 88, 600, 1, 4, 23}, 40 },
{ {640, 16, 96, 48, 480, 10, 2, 33}, 25.175 },
{ {1280, 440, 40, 220, 720, 5, 5, 20}, 74.25 }
};
};
uint32_t vitems[32];
static int parse_custom_video_mode()
@@ -1968,8 +1989,8 @@ static int parse_custom_video_mode()
}
uint32_t M, K, C;
if (!getPLL(Fout, &M, &K, &C)) return 0;
if (!getPLL(Fout, &M, &K, &C)) return 0;
vitems[9] = 4;
vitems[10] = getPLLdiv(M);
vitems[11] = 3;
@@ -2034,8 +2055,8 @@ void parse_video_mode()
}
uint32_t M, K, C;
getPLL(vmodes[mode].Fpix, &M, &K, &C);
getPLL(vmodes[mode].Fpix, &M, &K, &C);
vitems[9] = 4;
vitems[10] = getPLLdiv(M);
vitems[11] = 3;